forked from enyo/opentip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadapter.native.html
182 lines (151 loc) · 40.6 KB
/
adapter.native.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!DOCTYPE html> <html> <head> <title>adapter.native.coffee</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <div id="jump_to"> Jump To … <div id="jump_wrapper"> <div id="jump_page"> <a class="source" href="adapter.ender.html"> adapter.ender.coffee </a> <a class="source" href="adapter.jquery.html"> adapter.jquery.coffee </a> <a class="source" href="adapter.native.html"> adapter.native.coffee </a> <a class="source" href="adapter.prototype.html"> adapter.prototype.coffee </a> <a class="source" href="opentip.html"> opentip.coffee </a> </div> </div> </div> <table cellpadding="0" cellspacing="0"> <thead> <tr> <th class="docs"> <h1> adapter.native.coffee </h1> </th> <th class="code"> </th> </tr> </thead> <tbody> <tr id="section-1"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-1">¶</a> </div> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-2"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2">¶</a> </div> <h1>Native Opentip Adapter</h1>
<p>Use this adapter if you don't use a framework like jQuery and you don't
really care about oldschool browser compatibility.</p> </td> <td class="code"> <div class="highlight"><pre><span class="k">class</span> <span class="nx">Adapter</span>
<span class="nv">name: </span><span class="s">"native"</span></pre></div> </td> </tr> <tr id="section-3"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-3">¶</a> </div> <p>Invoke callback as soon as dom is ready
Source: https://github.com/dperini/ContentLoaded/blob/master/src/contentloaded.js</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">domReady: </span><span class="nf">(callback) -></span>
<span class="nv">done = </span><span class="kc">no</span>
<span class="nv">top = </span><span class="kc">true</span>
<span class="nv">win = </span><span class="nb">window</span>
<span class="nv">doc = </span><span class="nb">document</span>
<span class="k">return</span> <span class="nx">callback</span><span class="p">()</span> <span class="k">if</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">readyState</span> <span class="k">in</span> <span class="p">[</span> <span class="s">"complete"</span><span class="p">,</span> <span class="s">"loaded"</span> <span class="p">]</span>
<span class="nv">root = </span><span class="nx">doc</span><span class="p">.</span><span class="nx">documentElement</span>
<span class="nv">add = </span><span class="p">(</span><span class="k">if</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">addEventListener</span> <span class="k">then</span> <span class="s">"addEventListener"</span> <span class="k">else</span> <span class="s">"attachEvent"</span><span class="p">)</span>
<span class="nv">rem = </span><span class="p">(</span><span class="k">if</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">addEventListener</span> <span class="k">then</span> <span class="s">"removeEventListener"</span> <span class="k">else</span> <span class="s">"detachEvent"</span><span class="p">)</span>
<span class="nv">pre = </span><span class="p">(</span><span class="k">if</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">addEventListener</span> <span class="k">then</span> <span class="s">""</span> <span class="k">else</span> <span class="s">"on"</span><span class="p">)</span>
<span class="nv">init = </span><span class="nf">(e) -></span>
<span class="k">return</span> <span class="k">if</span> <span class="nx">e</span><span class="p">.</span><span class="nx">type</span> <span class="o">is</span> <span class="s">"readystatechange"</span> <span class="o">and</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">isnt</span> <span class="s">"complete"</span>
<span class="p">(</span><span class="k">if</span> <span class="nx">e</span><span class="p">.</span><span class="nx">type</span> <span class="o">is</span> <span class="s">"load"</span> <span class="k">then</span> <span class="nx">win</span> <span class="k">else</span> <span class="nx">doc</span><span class="p">)[</span><span class="nx">rem</span><span class="p">]</span> <span class="nx">pre</span> <span class="o">+</span> <span class="nx">e</span><span class="p">.</span><span class="nx">type</span><span class="p">,</span> <span class="nx">init</span><span class="p">,</span> <span class="kc">false</span>
<span class="nx">unless</span> <span class="nx">done</span>
<span class="nv">done = </span><span class="kc">yes</span>
<span class="nx">callback</span><span class="p">()</span>
<span class="nv">poll = </span><span class="o">-></span>
<span class="k">try</span>
<span class="nx">root</span><span class="p">.</span><span class="nx">doScroll</span> <span class="s">"left"</span>
<span class="k">catch</span> <span class="nx">e</span>
<span class="nx">setTimeout</span> <span class="nx">poll</span><span class="p">,</span> <span class="mi">50</span>
<span class="k">return</span>
<span class="nx">init</span> <span class="s">"poll"</span>
<span class="nx">unless</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">is</span> <span class="s">"complete"</span>
<span class="k">if</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">createEventObject</span> <span class="o">and</span> <span class="nx">root</span><span class="p">.</span><span class="nx">doScroll</span>
<span class="k">try</span>
<span class="nv">top = </span><span class="o">not</span> <span class="nx">win</span><span class="p">.</span><span class="nx">frameElement</span>
<span class="nx">poll</span><span class="p">()</span> <span class="k">if</span> <span class="nx">top</span>
<span class="nx">doc</span><span class="p">[</span><span class="nx">add</span><span class="p">]</span> <span class="nx">pre</span> <span class="o">+</span> <span class="s">"DOMContentLoaded"</span><span class="p">,</span> <span class="nx">init</span><span class="p">,</span> <span class="kc">false</span>
<span class="nx">doc</span><span class="p">[</span><span class="nx">add</span><span class="p">]</span> <span class="nx">pre</span> <span class="o">+</span> <span class="s">"readystatechange"</span><span class="p">,</span> <span class="nx">init</span><span class="p">,</span> <span class="kc">false</span>
<span class="nx">win</span><span class="p">[</span><span class="nx">add</span><span class="p">]</span> <span class="nx">pre</span> <span class="o">+</span> <span class="s">"load"</span><span class="p">,</span> <span class="nx">init</span><span class="p">,</span> <span class="kc">false</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">¶</a> </div> <h1>DOM</h1> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">¶</a> </div> <p>Create the HTML passed as string</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">create: </span><span class="nf">(htmlString) -></span>
<span class="nv">div = </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span> <span class="s">"div"</span>
<span class="nv">div.innerHTML = </span><span class="nx">htmlString</span>
<span class="nx">@wrap</span> <span class="nx">div</span><span class="p">.</span><span class="nx">childNodes</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">¶</a> </div> <h2>Element handling</h2> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">¶</a> </div> <p>Wrap the element in the framework</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">wrap: </span><span class="nf">(element) -></span>
<span class="k">if</span> <span class="nx">element</span> <span class="k">instanceof</span> <span class="nx">NodeList</span>
<span class="nv">element = </span><span class="p">(</span><span class="nx">el</span> <span class="k">for</span> <span class="nx">el</span> <span class="k">in</span> <span class="nx">element</span><span class="p">)</span>
<span class="k">else</span> <span class="k">if</span> <span class="nx">element</span> <span class="o">not</span> <span class="k">instanceof</span> <span class="nb">Array</span>
<span class="nv">element = </span><span class="p">[</span> <span class="nx">element</span> <span class="p">]</span>
<span class="nx">element</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">¶</a> </div> <p>Returns the unwrapped element</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">unwrap: </span><span class="nf">(element) -></span> <span class="nx">@wrap</span><span class="p">(</span><span class="nx">element</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">¶</a> </div> <p>Returns the tag name of the element</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">tagName: </span><span class="nf">(element) -></span> <span class="nx">@unwrap</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">tagName</span></pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">¶</a> </div> <p>Returns or sets the given attribute of element</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">attr: </span><span class="nf">(element, attr, value) -></span>
<span class="k">if</span> <span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">3</span>
<span class="nx">@unwrap</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">setAttribute</span> <span class="nx">attr</span><span class="p">,</span> <span class="nx">value</span>
<span class="k">else</span>
<span class="nx">@unwrap</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">getAttribute</span><span class="o">?</span> <span class="nx">attr</span>
<span class="nv">lastDataId = </span><span class="mi">0</span>
<span class="nv">dataValues = </span><span class="p">{</span> <span class="p">}</span></pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">¶</a> </div> <p>Returns or sets the given data of element</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">data: </span><span class="nf">(element, name, value) -></span>
<span class="nv">dataId = </span><span class="nx">@attr</span> <span class="nx">element</span><span class="p">,</span> <span class="s">"data-id"</span>
<span class="nx">unless</span> <span class="nx">dataId</span>
<span class="nv">dataId = </span><span class="o">++</span><span class="nx">lastDataId</span>
<span class="nx">@attr</span> <span class="nx">element</span><span class="p">,</span> <span class="s">"data-id"</span><span class="p">,</span> <span class="nx">dataId</span>
<span class="nx">dataValues</span><span class="p">[</span><span class="nx">dataId</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="p">}</span>
<span class="k">if</span> <span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">3</span></pre></div> </td> </tr> <tr id="section-12"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12">¶</a> </div> <p>Setter</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">dataValues</span><span class="p">[</span><span class="nx">dataId</span><span class="p">][</span><span class="nx">name</span><span class="p">]</span> <span class="o">=</span> <span class="nx">value</span>
<span class="k">else</span>
<span class="nv">value = </span><span class="nx">dataValues</span><span class="p">[</span><span class="nx">dataId</span><span class="p">][</span><span class="nx">name</span><span class="p">]</span>
<span class="k">return</span> <span class="nx">value</span> <span class="k">if</span> <span class="nx">value</span><span class="o">?</span>
<span class="nv">value = </span><span class="nx">@attr</span> <span class="nx">element</span><span class="p">,</span> <span class="s">"data-</span><span class="si">#{</span><span class="nx">Opentip</span><span class="o">::</span><span class="nx">dasherize</span> <span class="nx">name</span><span class="si">}</span><span class="s">"</span>
<span class="k">if</span> <span class="nx">value</span>
<span class="nx">dataValues</span><span class="p">[</span><span class="nx">dataId</span><span class="p">][</span><span class="nx">name</span><span class="p">]</span> <span class="o">=</span> <span class="nx">value</span>
<span class="k">return</span> <span class="nx">value</span></pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">¶</a> </div> <p>Finds elements by selector</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">find: </span><span class="nf">(element, selector) -></span> <span class="nx">@unwrap</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">querySelector</span> <span class="nx">selector</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">¶</a> </div> <p>Finds all elements by selector</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">findAll: </span><span class="nf">(element, selector) -></span> <span class="nx">@unwrap</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">querySelectorAll</span> <span class="nx">selector</span></pre></div> </td> </tr> <tr id="section-15"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-15">¶</a> </div> <p>Updates the content of the element</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">update: </span><span class="nf">(element, content, escape) -></span>
<span class="nv">element = </span><span class="nx">@unwrap</span> <span class="nx">element</span>
<span class="k">if</span> <span class="nx">escape</span>
<span class="nv">element.innerHTML = </span><span class="s">""</span> <span class="c1"># Clearing the content</span>
<span class="nx">element</span><span class="p">.</span><span class="nx">appendChild</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createTextNode</span> <span class="nx">content</span>
<span class="k">else</span>
<span class="nv">element.innerHTML = </span><span class="nx">content</span></pre></div> </td> </tr> <tr id="section-16"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-16">¶</a> </div> <p>Appends given child to element</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">append: </span><span class="nf">(element, child) -></span>
<span class="nv">unwrappedChild = </span><span class="nx">@unwrap</span> <span class="nx">child</span>
<span class="nv">unwrappedElement = </span><span class="nx">@unwrap</span> <span class="nx">element</span>
<span class="nx">unwrappedElement</span><span class="p">.</span><span class="nx">appendChild</span> <span class="nx">unwrappedChild</span></pre></div> </td> </tr> <tr id="section-17"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-17">¶</a> </div> <p>Add a class</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">addClass: </span><span class="nf">(element, className) -></span> <span class="nx">@unwrap</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span> <span class="nx">className</span></pre></div> </td> </tr> <tr id="section-18"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-18">¶</a> </div> <p>Remove a class</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">removeClass: </span><span class="nf">(element, className) -></span> <span class="nx">@unwrap</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">classList</span><span class="p">.</span><span class="nx">remove</span> <span class="nx">className</span></pre></div> </td> </tr> <tr id="section-19"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-19">¶</a> </div> <p>Set given css properties</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">css: </span><span class="nf">(element, properties) -></span>
<span class="nv">element = </span><span class="nx">@unwrap</span> <span class="nx">@wrap</span> <span class="nx">element</span>
<span class="k">for</span> <span class="nx">own</span> <span class="nx">key</span><span class="p">,</span> <span class="nx">value</span> <span class="k">of</span> <span class="nx">properties</span>
<span class="nx">element</span><span class="p">.</span><span class="nx">style</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">value</span></pre></div> </td> </tr> <tr id="section-20"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-20">¶</a> </div> <p>Returns an object with given dimensions</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">dimensions: </span><span class="nf">(element) -></span>
<span class="nv">element = </span><span class="nx">@unwrap</span> <span class="nx">@wrap</span> <span class="nx">element</span>
<span class="nv">dimensions =</span>
<span class="nv">width: </span><span class="nx">element</span><span class="p">.</span><span class="nx">offsetWidth</span>
<span class="nv">height: </span><span class="nx">element</span><span class="p">.</span><span class="nx">offsetHeight</span>
<span class="nx">unless</span> <span class="nx">dimensions</span><span class="p">.</span><span class="nx">width</span> <span class="o">and</span> <span class="nx">dimensions</span><span class="p">.</span><span class="nx">height</span></pre></div> </td> </tr> <tr id="section-21"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-21">¶</a> </div> <p>The element is probably invisible. So make it visible</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">revert =</span>
<span class="nv">position: </span><span class="nx">element</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">position</span> <span class="o">||</span> <span class="s">''</span>
<span class="nv">visibility: </span><span class="nx">element</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">visibility</span> <span class="o">||</span> <span class="s">''</span>
<span class="nv">display: </span><span class="nx">element</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">display</span> <span class="o">||</span> <span class="s">''</span>
<span class="nx">@css</span> <span class="nx">element</span><span class="p">,</span>
<span class="nv">position: </span><span class="s">"absolute"</span>
<span class="nv">visibility: </span><span class="s">"hidden"</span>
<span class="nv">display: </span><span class="s">"block"</span>
<span class="nv">dimensions =</span>
<span class="nv">width: </span><span class="nx">element</span><span class="p">.</span><span class="nx">offsetWidth</span>
<span class="nv">height: </span><span class="nx">element</span><span class="p">.</span><span class="nx">offsetHeight</span>
<span class="nx">@css</span> <span class="nx">element</span><span class="p">,</span> <span class="nx">revert</span>
<span class="nx">dimensions</span></pre></div> </td> </tr> <tr id="section-22"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-22">¶</a> </div> <p>Returns the scroll offsets of current document</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">scrollOffset: </span><span class="o">-></span>
<span class="p">[</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageXOffset</span> <span class="o">or</span> <span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">scrollLeft</span> <span class="o">or</span> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">scrollLeft</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageYOffset</span> <span class="o">or</span> <span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">or</span> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">scrollTop</span>
<span class="p">]</span></pre></div> </td> </tr> <tr id="section-23"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-23">¶</a> </div> <p>Returns the dimensions of the viewport (currently visible browser area)</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">viewportDimensions: </span><span class="o">-></span>
<span class="p">{</span>
<span class="nv">width: </span><span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">clientWidth</span>
<span class="nv">height: </span><span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">clientHeight</span>
<span class="p">}</span></pre></div> </td> </tr> <tr id="section-24"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-24">¶</a> </div> <p>Returns an object with x and y </p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">mousePosition: </span><span class="nf">(e) -></span>
<span class="nv">pos = x: </span><span class="mi">0</span><span class="p">,</span> <span class="nv">y: </span><span class="mi">0</span>
<span class="nx">e</span> <span class="o">?=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">event</span>
<span class="k">return</span> <span class="nx">unless</span> <span class="nx">e</span><span class="o">?</span>
<span class="k">if</span> <span class="nx">e</span><span class="p">.</span><span class="nx">pageX</span> <span class="o">or</span> <span class="nx">e</span><span class="p">.</span><span class="nx">pageY</span>
<span class="nv">pos.x = </span><span class="nx">e</span><span class="p">.</span><span class="nx">pageX</span>
<span class="nv">pos.y = </span><span class="nx">e</span><span class="p">.</span><span class="nx">pageY</span>
<span class="k">else</span> <span class="k">if</span> <span class="nx">e</span><span class="p">.</span><span class="nx">clientX</span> <span class="o">or</span> <span class="nx">e</span><span class="p">.</span><span class="nx">clientY</span>
<span class="nv">pos.x = </span><span class="nx">e</span><span class="p">.</span><span class="nx">clientX</span> <span class="o">+</span> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">scrollLeft</span> <span class="o">+</span> <span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">scrollLeft</span>
<span class="nv">pos.y = </span><span class="nx">e</span><span class="p">.</span><span class="nx">clientY</span> <span class="o">+</span> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">+</span> <span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">scrollTop</span>
<span class="nx">pos</span></pre></div> </td> </tr> <tr id="section-25"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-25">¶</a> </div> <p>Returns the offset of the element</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">offset: </span><span class="nf">(element) -></span>
<span class="nv">element = </span><span class="nx">@unwrap</span> <span class="nx">element</span>
<span class="nv">offset = </span><span class="p">{</span>
<span class="nv">top: </span><span class="nx">element</span><span class="p">.</span><span class="nx">offsetTop</span>
<span class="nv">left: </span><span class="nx">element</span><span class="p">.</span><span class="nx">offsetLeft</span>
<span class="p">}</span>
<span class="k">while</span> <span class="nv">element = </span><span class="nx">element</span><span class="p">.</span><span class="nx">offsetParent</span>
<span class="nx">offset</span><span class="p">.</span><span class="nx">top</span> <span class="o">+=</span> <span class="nx">element</span><span class="p">.</span><span class="nx">offsetTop</span>
<span class="nx">offset</span><span class="p">.</span><span class="nx">left</span> <span class="o">+=</span> <span class="nx">element</span><span class="p">.</span><span class="nx">offsetLeft</span>
<span class="k">if</span> <span class="nx">element</span> <span class="o">!=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span>
<span class="nx">offset</span><span class="p">.</span><span class="nx">top</span> <span class="o">-=</span> <span class="nx">element</span><span class="p">.</span><span class="nx">scrollTop</span>
<span class="nx">offset</span><span class="p">.</span><span class="nx">left</span> <span class="o">-=</span> <span class="nx">element</span><span class="p">.</span><span class="nx">scrollLeft</span>
<span class="nx">offset</span></pre></div> </td> </tr> <tr id="section-26"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-26">¶</a> </div> <p>Observe given eventName</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">observe: </span><span class="nf">(element, eventName, observer) -></span> <span class="nx">@unwrap</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">addEventListener</span> <span class="nx">eventName</span><span class="p">,</span> <span class="nx">observer</span></pre></div> </td> </tr> <tr id="section-27"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-27">¶</a> </div> <p>Stop observing event</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">stopObserving: </span><span class="nf">(element, eventName, observer) -></span> <span class="nx">@unwrap</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">removeEventListener</span> <span class="nx">eventName</span><span class="p">,</span> <span class="nx">observer</span></pre></div> </td> </tr> <tr id="section-28"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-28">¶</a> </div> <p>Perform an AJAX request and call the appropriate callbacks.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">ajax: </span><span class="nf">(options) -></span>
<span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span> <span class="s">"No url provided"</span> <span class="nx">unless</span> <span class="nx">options</span><span class="p">.</span><span class="nx">url</span><span class="o">?</span>
<span class="k">if</span> <span class="nb">window</span><span class="p">.</span><span class="nx">XMLHttpRequest</span></pre></div> </td> </tr> <tr id="section-29"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-29">¶</a> </div> <p>Mozilla, Safari, ...</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">request = </span><span class="k">new</span> <span class="nx">XMLHttpRequest</span>
<span class="k">else</span> <span class="k">if</span> <span class="nb">window</span><span class="p">.</span><span class="nx">ActiveXObject</span></pre></div> </td> </tr> <tr id="section-30"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-30">¶</a> </div> <p>IE</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">try</span>
<span class="nv">request = </span><span class="k">new</span> <span class="nx">ActiveXObject</span> <span class="s">"Msxml2.XMLHTTP"</span>
<span class="k">catch</span> <span class="nx">e</span>
<span class="k">try</span>
<span class="nv">request = </span><span class="k">new</span> <span class="nx">ActiveXObject</span> <span class="s">"Microsoft.XMLHTTP"</span>
<span class="k">catch</span> <span class="nx">e</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span> <span class="s">"Can't create XMLHttpRequest"</span> <span class="nx">unless</span> <span class="nx">request</span>
<span class="nv">request.onreadystatechange = </span><span class="o">-></span>
<span class="k">if</span> <span class="nx">request</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">==</span> <span class="mi">4</span>
<span class="k">try</span>
<span class="k">if</span> <span class="nx">request</span><span class="p">.</span><span class="nx">status</span> <span class="o">==</span> <span class="mi">200</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">onSuccess</span><span class="o">?</span> <span class="nx">request</span><span class="p">.</span><span class="nx">responseText</span>
<span class="k">else</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">onError</span><span class="o">?</span> <span class="s">"Server responded with status </span><span class="si">#{</span><span class="nx">request</span><span class="p">.</span><span class="nx">status</span><span class="si">}</span><span class="s">"</span>
<span class="k">catch</span> <span class="nx">e</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">onError</span><span class="o">?</span> <span class="nx">e</span><span class="p">.</span><span class="nx">message</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">onComplete</span><span class="o">?</span><span class="p">()</span>
<span class="nx">request</span><span class="p">.</span><span class="nx">open</span> <span class="nx">options</span><span class="p">.</span><span class="nx">method</span><span class="o">?</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">?</span> <span class="s">"GET"</span><span class="p">,</span> <span class="nx">options</span><span class="p">.</span><span class="nx">url</span>
<span class="nx">request</span><span class="p">.</span><span class="nx">send</span><span class="p">()</span></pre></div> </td> </tr> <tr id="section-31"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-31">¶</a> </div> <h1>Utility functions</h1> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-32"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-32">¶</a> </div> <p>Creates a shallow copy of the object</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">clone: </span><span class="nf">(object) -></span>
<span class="nv">newObject = </span><span class="p">{</span> <span class="p">}</span>
<span class="k">for</span> <span class="nx">own</span> <span class="nx">key</span><span class="p">,</span> <span class="nx">val</span> <span class="k">of</span> <span class="nx">object</span>
<span class="nx">newObject</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">val</span>
<span class="nx">newObject</span></pre></div> </td> </tr> <tr id="section-33"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-33">¶</a> </div> <p>Copies all properties from sources to target</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">extend: </span><span class="nf">(target, sources...) -></span>
<span class="k">for</span> <span class="nx">source</span> <span class="k">in</span> <span class="nx">sources</span>
<span class="k">for</span> <span class="nx">own</span> <span class="nx">key</span><span class="p">,</span> <span class="nx">val</span> <span class="k">of</span> <span class="nx">source</span>
<span class="nx">target</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">val</span>
<span class="nx">target</span></pre></div> </td> </tr> <tr id="section-34"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-34">¶</a> </div> <p>Add the adapter to the list</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">Opentip</span><span class="p">.</span><span class="nx">addAdapter</span> <span class="k">new</span> <span class="nx">Adapter</span>
</pre></div> </td> </tr> </tbody> </table> </div> </body> </html>