diff options
Diffstat (limited to 'node_modules/ninja-components/flow-offset.js')
-rw-r--r-- | node_modules/ninja-components/flow-offset.js | 389 |
1 files changed, 389 insertions, 0 deletions
diff --git a/node_modules/ninja-components/flow-offset.js b/node_modules/ninja-components/flow-offset.js new file mode 100644 index 00000000..e45a14f3 --- /dev/null +++ b/node_modules/ninja-components/flow-offset.js | |||
@@ -0,0 +1,389 @@ | |||
1 | /* <copyright> | ||
2 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | ||
3 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | ||
4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | ||
5 | </copyright> */ | ||
6 | |||
7 | var Montage = require("montage").Montage; | ||
8 | |||
9 | var FlowOffset = exports.FlowOffset = Montage.create(Montage, { | ||
10 | |||
11 | hasTemplate: { | ||
12 | value: false | ||
13 | }, | ||
14 | |||
15 | isAnimating: { | ||
16 | enumerable: false, | ||
17 | value: false | ||
18 | }, | ||
19 | |||
20 | component: { | ||
21 | value: null | ||
22 | }, | ||
23 | |||
24 | draw: { | ||
25 | value: function () { | ||
26 | if (this.isAnimating) { | ||
27 | this._interval(); | ||
28 | } | ||
29 | } | ||
30 | }, | ||
31 | |||
32 | deserializedFromTemplate: { | ||
33 | value: function () { | ||
34 | var oldComponentDraw = this.component.draw, | ||
35 | self = this; | ||
36 | |||
37 | this.component.draw = function () { | ||
38 | self.draw(); | ||
39 | oldComponentDraw.call(self.component); | ||
40 | }; | ||
41 | } | ||
42 | }, | ||
43 | |||
44 | _hasElasticScrolling: { | ||
45 | enumerable: false, | ||
46 | value: true | ||
47 | }, | ||
48 | |||
49 | hasElasticScrolling: { | ||
50 | get: function () { | ||
51 | return this._hasElasticScrolling; | ||
52 | }, | ||
53 | set: function (value) { | ||
54 | this._hasElasticScrolling=(value===true)?true:false; | ||
55 | } | ||
56 | }, | ||
57 | |||
58 | _selectedSlideIndex: { | ||
59 | enumerable: false, | ||
60 | value: null | ||
61 | }, | ||
62 | |||
63 | selectedSlideIndex: { | ||
64 | get: function () { | ||
65 | return this._selectedSlideIndex; | ||
66 | }, | ||
67 | set: function (value) { | ||
68 | this._selectedSlideIndex=value; | ||
69 | if (typeof this.animatingHash[this._selectedSlideIndex] !== "undefined") { | ||
70 | var tmp=this.slide[this._selectedSlideIndex].x; | ||
71 | this.origin+=(this._selectedSlideIndex*this._scale)-tmp; | ||
72 | } | ||
73 | } | ||
74 | }, | ||
75 | |||
76 | _selectedComponent: { | ||
77 | enumerable: false, | ||
78 | value: null | ||
79 | }, | ||
80 | |||
81 | selectedComponent: { | ||
82 | get: function () { | ||
83 | return this._selectedComponent; | ||
84 | }, | ||
85 | set: function (value) { | ||
86 | this._selectedComponent=value; | ||
87 | this.selectedSlideIndex=value; | ||
88 | } | ||
89 | }, | ||
90 | |||
91 | _animating: { | ||
92 | enumerable: false, | ||
93 | value: null | ||
94 | }, | ||
95 | |||
96 | animating: { | ||
97 | enumerable: false, | ||
98 | get: function () { | ||
99 | if (!this._animating) { | ||
100 | this._animating=[]; | ||
101 | } | ||
102 | return this._animating; | ||
103 | }, | ||
104 | set: function () { | ||
105 | } | ||
106 | }, | ||
107 | |||
108 | _animatingHash: { | ||
109 | enumerable: false, | ||
110 | value: null | ||
111 | }, | ||
112 | |||
113 | animatingHash: { | ||
114 | enumerable: false, | ||
115 | get: function () { | ||
116 | if (!this._animatingHash) { | ||
117 | this._animatingHash={}; | ||
118 | } | ||
119 | return this._animatingHash; | ||
120 | }, | ||
121 | set: function () { | ||
122 | } | ||
123 | }, | ||
124 | |||
125 | _slide: { | ||
126 | enumerable: false, | ||
127 | value: null | ||
128 | }, | ||
129 | |||
130 | slide: { | ||
131 | enumerable: false, | ||
132 | get: function () { | ||
133 | if (!this._slide) { | ||
134 | this._slide={}; | ||
135 | } | ||
136 | return this._slide; | ||
137 | }, | ||
138 | set: function () { | ||
139 | } | ||
140 | }, | ||
141 | |||
142 | startAnimating: { | ||
143 | enumerable: false, | ||
144 | value: function (index, pos) { | ||
145 | if (typeof this.animatingHash[index] === "undefined") { | ||
146 | var length=this.animating.length; | ||
147 | |||
148 | this.animating[length]=index; | ||
149 | this.animatingHash[index]=length; | ||
150 | this.slide[index]={ | ||
151 | speed: 0, | ||
152 | x: pos | ||
153 | }; | ||
154 | } else { | ||
155 | this.slide[index].x=pos; | ||
156 | } | ||
157 | } | ||
158 | }, | ||
159 | |||
160 | stopAnimating: { | ||
161 | enumerable: false, | ||
162 | value: function (index) { | ||
163 | if (typeof this.animatingHash[index] !== "undefined") { | ||
164 | this.animating[this.animatingHash[index]]=this.animating[this.animating.length-1]; | ||
165 | this.animatingHash[this.animating[this.animating.length-1]]=this.animatingHash[index]; | ||
166 | this.animating.pop(); | ||
167 | delete this.animatingHash[index]; | ||
168 | delete this.slide[index]; | ||
169 | } | ||
170 | } | ||
171 | }, | ||
172 | |||
173 | _range: { | ||
174 | value: 15 | ||
175 | }, | ||
176 | |||
177 | lastDrawTime: { | ||
178 | value: null | ||
179 | }, | ||
180 | |||
181 | _origin: { | ||
182 | enumerable: false, | ||
183 | value: 0 | ||
184 | }, | ||
185 | |||
186 | origin: { | ||
187 | get: function () { | ||
188 | return this._origin; | ||
189 | }, | ||
190 | set: function (value) { | ||
191 | if (this._hasElasticScrolling) { | ||
192 | var i, | ||
193 | n, | ||
194 | min=this._selectedSlideIndex-this._range, | ||
195 | max=this._selectedSlideIndex+this._range+1, | ||
196 | tmp, | ||
197 | j, | ||
198 | x, | ||
199 | self=this; | ||
200 | |||
201 | tmp=value-this._origin; | ||
202 | if (min<0) { | ||
203 | min=0; | ||
204 | } | ||
205 | |||
206 | if (!this.isAnimating) { | ||
207 | this.lastDrawTime=Date.now(); | ||
208 | } | ||
209 | for (i=min; i<max; i++) { | ||
210 | if (i!=this._selectedSlideIndex) { | ||
211 | if (typeof this.animatingHash[i] === "undefined") { | ||
212 | x=i*this._scale; | ||
213 | } else { | ||
214 | x=this.slide[i].x; | ||
215 | } | ||
216 | x+=tmp; | ||
217 | if (i<this._selectedSlideIndex) { | ||
218 | if (x<i*this._scale) { | ||
219 | this.startAnimating(i, x); | ||
220 | } | ||
221 | } else { | ||
222 | if (x>i*this._scale) { | ||
223 | this.startAnimating(i, x); | ||
224 | } | ||
225 | } | ||
226 | } | ||
227 | } | ||
228 | this.stopAnimating(this._selectedSlideIndex); | ||
229 | |||
230 | if (!this.isAnimating) { | ||
231 | this._interval=function () { | ||