chnobli 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/dist/animation/Animation.d.ts +37 -0
  2. package/dist/animation/Animation.d.ts.map +1 -0
  3. package/dist/animation/Animation.js +232 -0
  4. package/dist/animation/Animation.js.map +1 -0
  5. package/dist/animation/public.d.ts +68 -0
  6. package/dist/animation/public.d.ts.map +1 -0
  7. package/dist/animation/public.js +115 -0
  8. package/dist/animation/public.js.map +1 -0
  9. package/dist/animator/Animator.d.ts +30 -0
  10. package/dist/animator/Animator.d.ts.map +1 -0
  11. package/dist/animator/Animator.js +97 -0
  12. package/dist/animator/Animator.js.map +1 -0
  13. package/dist/animator/index.d.ts +5 -0
  14. package/dist/animator/index.d.ts.map +1 -0
  15. package/dist/animator/index.js +53 -0
  16. package/dist/animator/index.js.map +1 -0
  17. package/dist/animator/public.d.ts +16 -0
  18. package/dist/animator/public.d.ts.map +1 -0
  19. package/dist/animator/public.js +50 -0
  20. package/dist/animator/public.js.map +1 -0
  21. package/dist/chnobli.d.ts +15 -0
  22. package/dist/chnobli.d.ts.map +1 -0
  23. package/dist/chnobli.js +59 -0
  24. package/dist/chnobli.js.map +1 -0
  25. package/dist/property/BasicProperty.d.ts +38 -0
  26. package/dist/property/BasicProperty.d.ts.map +1 -0
  27. package/dist/property/BasicProperty.js +72 -0
  28. package/dist/property/BasicProperty.js.map +1 -0
  29. package/dist/property/ClassProperty.d.ts +32 -0
  30. package/dist/property/ClassProperty.d.ts.map +1 -0
  31. package/dist/property/ClassProperty.js +108 -0
  32. package/dist/property/ClassProperty.js.map +1 -0
  33. package/dist/property/Property.d.ts +13 -0
  34. package/dist/property/Property.d.ts.map +1 -0
  35. package/dist/property/Property.js +22 -0
  36. package/dist/property/Property.js.map +1 -0
  37. package/dist/property/StyleProperty.d.ts +25 -0
  38. package/dist/property/StyleProperty.d.ts.map +1 -0
  39. package/dist/property/StyleProperty.js +221 -0
  40. package/dist/property/StyleProperty.js.map +1 -0
  41. package/dist/property/TransformProperty.d.ts +15 -0
  42. package/dist/property/TransformProperty.d.ts.map +1 -0
  43. package/dist/property/TransformProperty.js +43 -0
  44. package/dist/property/TransformProperty.js.map +1 -0
  45. package/dist/property/TransformXYProperty.d.ts +28 -0
  46. package/dist/property/TransformXYProperty.d.ts.map +1 -0
  47. package/dist/property/TransformXYProperty.js +65 -0
  48. package/dist/property/TransformXYProperty.js.map +1 -0
  49. package/dist/responsive/ResponsiveEvent.d.ts +17 -0
  50. package/dist/responsive/ResponsiveEvent.d.ts.map +1 -0
  51. package/dist/responsive/ResponsiveEvent.js +45 -0
  52. package/dist/responsive/ResponsiveEvent.js.map +1 -0
  53. package/dist/responsive/TestEvent.d.ts +11 -0
  54. package/dist/responsive/TestEvent.d.ts.map +1 -0
  55. package/dist/responsive/TestEvent.js +26 -0
  56. package/dist/responsive/TestEvent.js.map +1 -0
  57. package/dist/scroll/Scroll.d.ts +61 -0
  58. package/dist/scroll/Scroll.d.ts.map +1 -0
  59. package/dist/scroll/Scroll.js +280 -0
  60. package/dist/scroll/Scroll.js.map +1 -0
  61. package/dist/scroll/ScrollEvent.d.ts +17 -0
  62. package/dist/scroll/ScrollEvent.d.ts.map +1 -0
  63. package/dist/scroll/ScrollEvent.js +40 -0
  64. package/dist/scroll/ScrollEvent.js.map +1 -0
  65. package/dist/scroll/index.d.ts +8 -0
  66. package/dist/scroll/index.d.ts.map +1 -0
  67. package/dist/scroll/index.js +9 -0
  68. package/dist/scroll/index.js.map +1 -0
  69. package/dist/scroll/public.d.ts +35 -0
  70. package/dist/scroll/public.d.ts.map +1 -0
  71. package/dist/scroll/public.js +50 -0
  72. package/dist/scroll/public.js.map +1 -0
  73. package/dist/stagger/stagger.d.ts +20 -0
  74. package/dist/stagger/stagger.d.ts.map +1 -0
  75. package/dist/stagger/stagger.js +43 -0
  76. package/dist/stagger/stagger.js.map +1 -0
  77. package/dist/target/BaseTarget.old.d.ts +33 -0
  78. package/dist/target/BaseTarget.old.d.ts.map +1 -0
  79. package/dist/target/BaseTarget.old.js +73 -0
  80. package/dist/target/BaseTarget.old.js.map +1 -0
  81. package/dist/target/DomTarget.d.ts +41 -0
  82. package/dist/target/DomTarget.d.ts.map +1 -0
  83. package/dist/target/DomTarget.js +230 -0
  84. package/dist/target/DomTarget.js.map +1 -0
  85. package/dist/target/ObjectTarget.d.ts +31 -0
  86. package/dist/target/ObjectTarget.d.ts.map +1 -0
  87. package/dist/target/ObjectTarget.js +108 -0
  88. package/dist/target/ObjectTarget.js.map +1 -0
  89. package/dist/target/Target.d.ts +25 -0
  90. package/dist/target/Target.d.ts.map +1 -0
  91. package/dist/target/Target.js +25 -0
  92. package/dist/target/Target.js.map +1 -0
  93. package/dist/target/TestDomNode.d.ts +14 -0
  94. package/dist/target/TestDomNode.d.ts.map +1 -0
  95. package/dist/target/TestDomNode.js +55 -0
  96. package/dist/target/TestDomNode.js.map +1 -0
  97. package/dist/timeline/Nested.d.ts +30 -0
  98. package/dist/timeline/Nested.d.ts.map +1 -0
  99. package/dist/timeline/Nested.js +51 -0
  100. package/dist/timeline/Nested.js.map +1 -0
  101. package/dist/timeline/Timeline.d.ts +42 -0
  102. package/dist/timeline/Timeline.d.ts.map +1 -0
  103. package/dist/timeline/Timeline.js +306 -0
  104. package/dist/timeline/Timeline.js.map +1 -0
  105. package/dist/timeline/public.d.ts +167 -0
  106. package/dist/timeline/public.d.ts.map +1 -0
  107. package/dist/timeline/public.js +396 -0
  108. package/dist/timeline/public.js.map +1 -0
  109. package/dist/timing/AnimationFrameTicker.d.ts +32 -0
  110. package/dist/timing/AnimationFrameTicker.d.ts.map +1 -0
  111. package/dist/timing/AnimationFrameTicker.js +138 -0
  112. package/dist/timing/AnimationFrameTicker.js.map +1 -0
  113. package/dist/timing/Ease.d.ts +6 -0
  114. package/dist/timing/Ease.d.ts.map +1 -0
  115. package/dist/timing/Ease.js +15 -0
  116. package/dist/timing/Ease.js.map +1 -0
  117. package/dist/timing/TestTicker.d.ts +19 -0
  118. package/dist/timing/TestTicker.d.ts.map +1 -0
  119. package/dist/timing/TestTicker.js +85 -0
  120. package/dist/timing/TestTicker.js.map +1 -0
  121. package/dist/timing/Ticker.d.ts +16 -0
  122. package/dist/timing/Ticker.d.ts.map +1 -0
  123. package/dist/timing/Ticker.js +2 -0
  124. package/dist/timing/Ticker.js.map +1 -0
  125. package/dist/timing/Timing.d.ts +116 -0
  126. package/dist/timing/Timing.d.ts.map +1 -0
  127. package/dist/timing/Timing.js +310 -0
  128. package/dist/timing/Timing.js.map +1 -0
  129. package/dist/timing/easing.d.ts +158 -0
  130. package/dist/timing/easing.d.ts.map +1 -0
  131. package/dist/timing/easing.js +273 -0
  132. package/dist/timing/easing.js.map +1 -0
  133. package/dist/utils/Events.d.ts +9 -0
  134. package/dist/utils/Events.d.ts.map +1 -0
  135. package/dist/utils/Events.js +35 -0
  136. package/dist/utils/Events.js.map +1 -0
  137. package/dist/utils/internal.d.ts +5 -0
  138. package/dist/utils/internal.d.ts.map +1 -0
  139. package/dist/utils/internal.js +9 -0
  140. package/dist/utils/internal.js.map +1 -0
  141. package/dist/utils/motionpath.d.ts +16 -0
  142. package/dist/utils/motionpath.d.ts.map +1 -0
  143. package/dist/utils/motionpath.js +41 -0
  144. package/dist/utils/motionpath.js.map +1 -0
  145. package/dist/utils/utils.d.ts +44 -0
  146. package/dist/utils/utils.d.ts.map +1 -0
  147. package/dist/utils/utils.js +88 -0
  148. package/dist/utils/utils.js.map +1 -0
  149. package/dist/values/ColorValue.d.ts +12 -0
  150. package/dist/values/ColorValue.d.ts.map +1 -0
  151. package/dist/values/ColorValue.js +134 -0
  152. package/dist/values/ColorValue.js.map +1 -0
  153. package/dist/values/StyleValue.d.ts +41 -0
  154. package/dist/values/StyleValue.d.ts.map +1 -0
  155. package/dist/values/StyleValue.js +159 -0
  156. package/dist/values/StyleValue.js.map +1 -0
  157. package/dist/values/Value.d.ts +13 -0
  158. package/dist/values/Value.d.ts.map +1 -0
  159. package/dist/values/Value.js +38 -0
  160. package/dist/values/Value.js.map +1 -0
  161. package/dist/values/defaultcolors.d.ts +2 -0
  162. package/dist/values/defaultcolors.d.ts.map +1 -0
  163. package/dist/values/defaultcolors.js +149 -0
  164. package/dist/values/defaultcolors.js.map +1 -0
  165. package/eslint.config.js +23 -0
  166. package/package.json +10 -3
  167. package/src/animation/Animation.ts +6 -3
  168. package/src/animator/Animator.ts +130 -0
  169. package/src/animator/index.ts +56 -0
  170. package/src/animator/public.ts +66 -0
  171. package/src/chnobli.ts +3 -2
  172. package/src/property/ClassProperty.ts +1 -1
  173. package/src/property/TransformXYProperty.ts +1 -1
  174. package/src/scroll/Scroll.ts +202 -51
  175. package/src/scroll/ScrollEvent.ts +1 -0
  176. package/src/scroll/index.ts +3 -0
  177. package/src/scroll/public.ts +35 -2
  178. package/src/target/DomTarget.ts +1 -1
  179. package/src/target/ObjectTarget.ts +19 -13
  180. package/src/tests/properties.test.ts +44 -3
  181. package/src/tests/timeline.test.ts +1 -1
  182. package/src/tests/timing.test.ts +32 -0
  183. package/src/tests/usecases.test.ts +40 -2
  184. package/src/tests/values.test.ts +9 -9
  185. package/src/timeline/Timeline.ts +5 -4
  186. package/src/timeline/public.ts +34 -12
  187. package/src/timing/AnimationFrameTicker.ts +6 -1
  188. package/src/timing/TestTicker.ts +7 -1
  189. package/src/timing/Ticker.ts +5 -1
  190. package/src/timing/Timing.ts +127 -91
  191. package/src/utils/Events.ts +1 -1
  192. package/src/utils/motionpath.ts +5 -5
  193. package/src/utils/utils.ts +0 -10
  194. package/src/values/ColorValue.ts +1 -0
  195. package/src/values/Value.ts +1 -1
  196. package/.eslintrc.cjs +0 -39
  197. package/src/animator.js +0 -187
@@ -0,0 +1,396 @@
1
+ import { takeProp } from '../utils/internal.js';
2
+ import Timeline from './Timeline.js';
3
+ import Timing, { STATE_BEFORE, STATE_ENDED, } from '../timing/Timing.js';
4
+ import { callStagger } from '../stagger/stagger.js';
5
+ import Events from '../utils/Events.js';
6
+ import ResponsiveEvent from '../responsive/ResponsiveEvent.js';
7
+ import NestedTimeline from './Nested.js';
8
+ const STATE_PAUSED = 0;
9
+ const STATE_RENDER_ONCE = 1;
10
+ const STATE_SEEK = 2;
11
+ const STATE_PLAYING = 3;
12
+ export default class PublicTimeline {
13
+ /**
14
+ * @ignore
15
+ */
16
+ _defaults;
17
+ _responsive;
18
+ /**
19
+ * @ignore
20
+ */
21
+ _inner;
22
+ _events;
23
+ _triggeredStart;
24
+ _state;
25
+ _runningTicker;
26
+ _responsiveBlocks;
27
+ _responsiveEvent;
28
+ _smoothSeek;
29
+ _seekTo;
30
+ _destroyOpts;
31
+ constructor(props = {}) {
32
+ this._defaults = takeProp(props, 'defaults', {});
33
+ this._responsive = takeProp(props, 'responsive', true);
34
+ if (typeof this._responsive !== 'boolean')
35
+ throw new Error('responsive can only be a boolean');
36
+ if ('duration' in props)
37
+ throw new Error('a timeline does not accept a duration');
38
+ this._smoothSeek = parseSmoothSeek(takeProp(props, 'smoothSeek', undefined));
39
+ this._seekTo = 0;
40
+ this._destroyOpts = {
41
+ // we set this to undefined so we can have other default values
42
+ // for example in chnobli-svelte
43
+ keepValues: takeProp(props, 'keepValues', undefined),
44
+ };
45
+ this._inner = new Timeline(props);
46
+ // 'start', 'end'
47
+ this._events = new Events();
48
+ this._triggeredStart = false;
49
+ this._state = STATE_PAUSED;
50
+ this._runningTicker = null;
51
+ this._responsiveBlocks = [];
52
+ if (this._responsive) {
53
+ this._responsiveEvent = ResponsiveEvent.global()?.add((a, b) => {
54
+ this._onResponsive(a, b);
55
+ });
56
+ // setup callback so we can notify our listeners
57
+ this._inner.setBeforeResponsiveFn(() => {
58
+ this._responsiveBlocks.forEach(block => {
59
+ block.responsive();
60
+ });
61
+ });
62
+ }
63
+ else {
64
+ this._responsiveEvent = null;
65
+ }
66
+ }
67
+ /**
68
+ * Set's properties
69
+ *
70
+ * offset can be staggered, a number, a label or a string `+=10`
71
+ */
72
+ set(targets, props, offset) {
73
+ // for the moment let's just add as usual but set the duration to 0
74
+ return this.add(targets, { ...props, duration: 0 }, offset);
75
+ }
76
+ /**
77
+ * Add an animation to the timeline
78
+ *
79
+ * offset can be staggered, a number, a label or a string `+=10`
80
+ */
81
+ add(targets, props, offset) {
82
+ timelineAdd(this, targets, props, offset);
83
+ return this;
84
+ }
85
+ /**
86
+ * Adds a label at to the current nOffset
87
+ *
88
+ * This label can then be used in offsets
89
+ */
90
+ label(label, offset = null) {
91
+ this._inner.label(label, offset);
92
+ return this;
93
+ }
94
+ /**
95
+ * Allows to nest timelines
96
+ *
97
+ * fn: (timeline)
98
+ */
99
+ // todo probably tl should be an interface
100
+ nest(fn, opts = {}, offset = null) {
101
+ const tl = new NestedTimeline(opts);
102
+ fn(tl);
103
+ this._inner.addTimeline(tl._inner, offset);
104
+ return this;
105
+ }
106
+ /**
107
+ * Adds a responsive function call which get's called before the responsive
108
+ * functions in properties
109
+ */
110
+ addResponsive(responsive) {
111
+ if (!this._responsiveEvent)
112
+ throw new Error('this timeline is not responsive');
113
+ if (Array.isArray(responsive)) {
114
+ responsive.forEach(resp => this.addResponsive(resp));
115
+ return this;
116
+ }
117
+ if (typeof responsive.responsive !== 'function')
118
+ throw new Error('expected a responsive() function');
119
+ this._responsiveBlocks.push(responsive);
120
+ return this;
121
+ }
122
+ /**
123
+ * Starts to play the timeline if it hasn't started
124
+ */
125
+ play() {
126
+ if (this._state === STATE_PLAYING)
127
+ return this;
128
+ this._state = STATE_PLAYING;
129
+ this._startTicker();
130
+ return this;
131
+ }
132
+ /**
133
+ * Pause the timeline at the current position
134
+ */
135
+ pause() {
136
+ if (this._state === STATE_PAUSED)
137
+ return;
138
+ this._state = STATE_PAUSED;
139
+ this._stopTicker();
140
+ }
141
+ /**
142
+ * Seeks to a position in the timeline
143
+ */
144
+ seekMs(ms) {
145
+ this._inner.init();
146
+ this.seek(this._inner.timing.normalizeMs(ms));
147
+ }
148
+ // todo maybe we should have two functions
149
+ // seek
150
+ // and setPosition
151
+ // seek would include reverse but setPosition would not
152
+ /**
153
+ * Seeks to a normalized position in the timeline
154
+ *
155
+ * @param pos = number between 0 and 1
156
+ */
157
+ seek(pos) {
158
+ this._inner.init();
159
+ if (this._smoothSeek) {
160
+ this._smoothSeek.update(this._inner.timing.positionAbsolute(), pos);
161
+ if (this._state !== STATE_PLAYING)
162
+ this._state = STATE_SEEK;
163
+ }
164
+ else {
165
+ // this._inner.seek(pos);
166
+ this._seekTo = pos;
167
+ if (this._state !== STATE_PLAYING)
168
+ this._state = STATE_RENDER_ONCE;
169
+ }
170
+ this._startTicker();
171
+ }
172
+ /**
173
+ * Returns the position of a label
174
+ */
175
+ labelPosition(label) {
176
+ this._inner.init();
177
+ return this._inner.labelPosition(label);
178
+ }
179
+ // seek in Range (useful for scroll timelines)
180
+ // seek(startOffset, endOffset, pos)
181
+ /**
182
+ * Resets the current timeline to the start
183
+ * without changing anything
184
+ *
185
+ * this operation is not smooth use seek 0 if you wan't that
186
+ */
187
+ reset() {
188
+ this._inner.seek(0);
189
+ }
190
+ /**
191
+ * Resets every used prop to it's previous value
192
+ */
193
+ resetProps() {
194
+ const reversed = this._inner.timing.reverse;
195
+ this._inner.timing.reversed = false;
196
+ this._inner.seek(-1);
197
+ this._inner.render();
198
+ this._inner.ticker.applyTargets();
199
+ this._inner.timing.reverse = reversed;
200
+ this._inner.seek(-1);
201
+ }
202
+ /**
203
+ * Recalculates all values this should be called for example after a resize
204
+ */
205
+ update() {
206
+ this._inner.update();
207
+ }
208
+ /**
209
+ * Returns wether the timeline is set to reversed
210
+ */
211
+ isReversed() {
212
+ return this._inner.timing.reversed;
213
+ }
214
+ /**
215
+ * Set's the timeline to a specific direction
216
+ */
217
+ setReversed(reversed) {
218
+ if (this.isReversed() == reversed)
219
+ return;
220
+ this.reverse();
221
+ }
222
+ /**
223
+ * Reverses the order of the current timeline
224
+ */
225
+ reverse() {
226
+ this._inner.timing.reverse();
227
+ // todo does this work with smooth seek?
228
+ }
229
+ /**
230
+ * Listen on events
231
+ *
232
+ * returns a function to remove the event listener
233
+ *
234
+ * ## Events
235
+ *
236
+ * ### end
237
+ * Get's executed once the timeline comes to the end
238
+ * Does not get executed during seeking
239
+ *
240
+ */
241
+ on(event, fn) {
242
+ return this._events.add(event, fn);
243
+ }
244
+ // not working
245
+ onPromise(event) {
246
+ return this._events.wait(event);
247
+ }
248
+ /**
249
+ * Destroys this timeline and resets all props
250
+ */
251
+ destroy(opts = {}) {
252
+ opts.keepValues = opts.keepValues ?? this._destroyOpts.keepValues;
253
+ this._stopTicker();
254
+ this._inner.destroy(opts);
255
+ this._events.destroy();
256
+ this._responsiveEvent?.remove();
257
+ this._responsiveBlocks = [];
258
+ // @ts-ignore
259
+ this._inner = null;
260
+ }
261
+ _maybeTriggerEndEvent() {
262
+ if (this._state !== STATE_PLAYING)
263
+ return;
264
+ this._events.trigger('end');
265
+ this._triggeredStart = false;
266
+ }
267
+ /**
268
+ * @ignore
269
+ */
270
+ _startTicker() {
271
+ if (this._runningTicker)
272
+ return;
273
+ this._inner.init();
274
+ const timingEnded = () => this._inner.timing.state >= STATE_ENDED;
275
+ const smoothSeekEnded = () => !this._smoothSeek || this._smoothSeek.state >= STATE_ENDED;
276
+ this._runningTicker = this._inner.ticker.add((change, api) => {
277
+ if (!this._triggeredStart) {
278
+ // todo check that we are at the start
279
+ if (this._inner.timing.state <= STATE_BEFORE) {
280
+ this._events.trigger('start');
281
+ this._triggeredStart = true;
282
+ }
283
+ }
284
+ const allowSmoothSeek = this._state === STATE_PLAYING || this._state === STATE_SEEK;
285
+ if (allowSmoothSeek &&
286
+ this._smoothSeek &&
287
+ this._smoothSeek.state < STATE_ENDED) {
288
+ this._smoothSeek.advance(change);
289
+ this._inner.seek(this._smoothSeek.value);
290
+ }
291
+ else if (this._state === STATE_RENDER_ONCE) {
292
+ this._inner.seek(this._seekTo);
293
+ }
294
+ else if (this._state === STATE_PLAYING) {
295
+ this._inner.advance(change);
296
+ }
297
+ this._inner.render();
298
+ const pos = this._inner.timing.position;
299
+ api.onApplied(() => {
300
+ this._events.trigger('update', pos);
301
+ });
302
+ // we rendered once let's stop
303
+ const renderOnce = this._state === STATE_RENDER_ONCE;
304
+ if (renderOnce ||
305
+ (smoothSeekEnded() &&
306
+ (this._state === STATE_SEEK || timingEnded()))) {
307
+ this._maybeTriggerEndEvent();
308
+ this._state = STATE_PAUSED;
309
+ this._stopTicker();
310
+ return;
311
+ }
312
+ });
313
+ }
314
+ /**
315
+ * @ignore
316
+ */
317
+ _stopTicker() {
318
+ if (!this._runningTicker)
319
+ return;
320
+ this._runningTicker.remove();
321
+ this._runningTicker = null;
322
+ }
323
+ /**
324
+ * @ignore
325
+ */
326
+ _onResponsive(_a, _b) {
327
+ this._inner.update();
328
+ }
329
+ }
330
+ /**
331
+ * Add an animation to the timeline
332
+ * tl needs to have _defaults, and _inner
333
+ */
334
+ export function timelineAdd(tl, targets, props, offset = null) {
335
+ if (Array.from(targets).length === 0)
336
+ targets = [targets];
337
+ else
338
+ targets = Array.from(targets);
339
+ let i = -1;
340
+ for (const target of targets) {
341
+ i++;
342
+ const nProps = {
343
+ ...tl._defaults,
344
+ ...props,
345
+ };
346
+ for (const prop in nProps) {
347
+ nProps[prop] = callStagger(nProps[prop], i, targets.length);
348
+ }
349
+ const nOffset = callStagger(offset, i, targets.length);
350
+ tl._inner.add(target, nProps, nOffset, i);
351
+ }
352
+ }
353
+ /**
354
+ * Smooth seek
355
+ *
356
+ * can either just be a number (duration) or an object { duration, ease }
357
+ */
358
+ function parseSmoothSeek(smoothSeek) {
359
+ if (!smoothSeek)
360
+ return null;
361
+ if (typeof smoothSeek === 'number') {
362
+ return new SmoothSeek({
363
+ duration: smoothSeek,
364
+ });
365
+ }
366
+ return new SmoothSeek({
367
+ duration: smoothSeek.duration,
368
+ ease: smoothSeek?.ease,
369
+ });
370
+ }
371
+ class SmoothSeek {
372
+ timing;
373
+ from;
374
+ to;
375
+ constructor(timing) {
376
+ this.timing = new Timing(timing);
377
+ this.timing.seek(1);
378
+ this.from = 0;
379
+ this.to = 0;
380
+ }
381
+ update(from, to) {
382
+ this.from = from;
383
+ this.to = to;
384
+ this.timing.seek(0);
385
+ }
386
+ advance(change) {
387
+ this.timing.advance(change);
388
+ }
389
+ get value() {
390
+ return this.from + (this.to - this.from) * this.timing.position;
391
+ }
392
+ get state() {
393
+ return this.timing.state;
394
+ }
395
+ }
396
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/timeline/public.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import Ticker, { Callback } from './Ticker.js';
2
+ /**
3
+ * The ticker is the main driver for all animations
4
+ *
5
+ * it also manages all targets allowing to only call the dom api
6
+ * at the end of every frame
7
+ */
8
+ export default class AnimationFrameTicker implements Ticker {
9
+ private _listeners;
10
+ private _targets;
11
+ running: boolean;
12
+ private _previousTick;
13
+ constructor();
14
+ static global(): any;
15
+ registerTarget(target: any): any;
16
+ unregisterTarget(target: any): void;
17
+ applyTargets(): void;
18
+ add(fn: Callback): {
19
+ remove: () => void;
20
+ };
21
+ remove(fn: Callback): void;
22
+ _tick(elapsed: number): void;
23
+ }
24
+ export declare class GlobalTargets {
25
+ private _targets;
26
+ constructor();
27
+ register(target: any): any;
28
+ unregister(target: any): void;
29
+ apply(): void;
30
+ size(): number;
31
+ }
32
+ //# sourceMappingURL=AnimationFrameTicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationFrameTicker.d.ts","sourceRoot":"","sources":["../../src/timing/AnimationFrameTicker.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,MAAM;IAC1D,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,QAAQ,CAAgB;IAEhC,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,aAAa,CAAgB;;IAWrC,MAAM,CAAC,MAAM;IAkBb,cAAc,CAAC,MAAM,EAAE,GAAG;IAI1B,gBAAgB,CAAC,MAAM,EAAE,GAAG;IAI5B,YAAY;IAIZ,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE;IAezC,MAAM,CAAC,EAAE,EAAE,QAAQ;IAInB,KAAK,CAAC,OAAO,EAAE,MAAM;CAmCrB;AAoBD,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAyC;;IAOzD,QAAQ,CAAC,MAAM,EAAE,GAAG;IAcpB,UAAU,CAAC,MAAM,EAAE,GAAG;IAOtB,KAAK;IASL,IAAI;CAKJ"}
@@ -0,0 +1,138 @@
1
+ import { newTarget } from '../target/Target.js';
2
+ /**
3
+ * The ticker is the main driver for all animations
4
+ *
5
+ * it also manages all targets allowing to only call the dom api
6
+ * at the end of every frame
7
+ */
8
+ export default class AnimationFrameTicker {
9
+ _listeners;
10
+ _targets;
11
+ running;
12
+ _previousTick;
13
+ constructor() {
14
+ this._listeners = new Set();
15
+ this._targets = new GlobalTargets();
16
+ this.running = false;
17
+ this._previousTick = null;
18
+ }
19
+ static global() {
20
+ // allow to define a test ticker
21
+ // @ts-ignore
22
+ if (typeof globalThis !== 'undefined' && globalThis.chnobliTicker)
23
+ // @ts-ignore
24
+ return globalThis.chnobliTicker;
25
+ if (typeof window === 'undefined')
26
+ throw new Error('can only be executed in a browser context');
27
+ // @ts-ignore
28
+ if (typeof window.chnobliTicker === 'undefined')
29
+ // @ts-ignore
30
+ window.chnobliTicker = new AnimationFrameTicker();
31
+ // @ts-ignore
32
+ return window.chnobliTicker;
33
+ }
34
+ registerTarget(target) {
35
+ return this._targets.register(target);
36
+ }
37
+ unregisterTarget(target) {
38
+ return this._targets.unregister(target);
39
+ }
40
+ applyTargets() {
41
+ return this._targets.apply();
42
+ }
43
+ add(fn) {
44
+ this._listeners.add(fn);
45
+ if (!this.running) {
46
+ this.running = true;
47
+ requestAnimationFrame(a => this._tick(a));
48
+ }
49
+ return {
50
+ remove: () => {
51
+ this.remove(fn);
52
+ },
53
+ };
54
+ }
55
+ remove(fn) {
56
+ this._listeners.delete(fn);
57
+ }
58
+ _tick(elapsed) {
59
+ if (this._listeners.size === 0) {
60
+ this.running = false;
61
+ this._previousTick = null;
62
+ return;
63
+ }
64
+ if (this._previousTick === null)
65
+ this._previousTick = elapsed;
66
+ let change = elapsed - this._previousTick;
67
+ // lagSmoothing
68
+ if (change > 500) {
69
+ console.log('ticker lagged');
70
+ change = 33;
71
+ }
72
+ this._previousTick = elapsed;
73
+ // const changes = new PropertyChanges;
74
+ const onApplied = [];
75
+ for (const fn of this._listeners) {
76
+ fn(change, {
77
+ remove: () => this.remove(fn),
78
+ onApplied: fnOnApplied => onApplied.push(fnOnApplied),
79
+ });
80
+ }
81
+ this._targets.apply();
82
+ for (const fn of onApplied) {
83
+ fn();
84
+ }
85
+ requestAnimationFrame(a => this._tick(a));
86
+ }
87
+ }
88
+ // class PropertyChanges {
89
+ // constructor() {
90
+ // this._targets = new Map;
91
+ // }
92
+ // // target is expected to be an html element
93
+ // get(target) {
94
+ // }
95
+ // }
96
+ // class TargetChanges {
97
+ // constructor() {
98
+ // // x, y, rotate, skew, scale
99
+ // this.transform = {};
100
+ // }
101
+ // }
102
+ export class GlobalTargets {
103
+ _targets;
104
+ constructor() {
105
+ // {target, ref}
106
+ this._targets = new Map();
107
+ }
108
+ register(target) {
109
+ let storedTarget = this._targets.get(target);
110
+ if (!storedTarget) {
111
+ storedTarget = {
112
+ target: newTarget(target),
113
+ ref: 0,
114
+ };
115
+ this._targets.set(target, storedTarget);
116
+ }
117
+ storedTarget.ref += 1;
118
+ return storedTarget.target;
119
+ }
120
+ unregister(target) {
121
+ const storedTarget = this._targets.get(target);
122
+ if (!storedTarget)
123
+ return;
124
+ storedTarget.ref -= 1;
125
+ }
126
+ apply() {
127
+ for (const storedTarget of this._targets.values()) {
128
+ const { target, ref } = storedTarget;
129
+ target.apply();
130
+ if (ref <= 0)
131
+ this._targets.delete(target.target);
132
+ }
133
+ }
134
+ size() {
135
+ return this._targets.size;
136
+ }
137
+ }
138
+ //# sourceMappingURL=AnimationFrameTicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationFrameTicker.js","sourceRoot":"","sources":["../../src/timing/AnimationFrameTicker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export default class Ease {
2
+ fn: ((t: number) => number) | null;
3
+ constructor(prop: any);
4
+ apply(t: number): number;
5
+ }
6
+ //# sourceMappingURL=Ease.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ease.d.ts","sourceRoot":"","sources":["../../src/timing/Ease.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,IAAI;IACxB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC;gBAEvB,IAAI,EAAE,GAAG;IAQrB,KAAK,CAAC,CAAC,EAAE,MAAM;CAKf"}
@@ -0,0 +1,15 @@
1
+ export default class Ease {
2
+ fn;
3
+ constructor(prop) {
4
+ // parse prop
5
+ if (prop !== null && typeof prop !== 'function')
6
+ throw new Error('ease needs to be a function');
7
+ this.fn = prop;
8
+ }
9
+ apply(t) {
10
+ if (this.fn === null)
11
+ return t;
12
+ return this.fn(t);
13
+ }
14
+ }
15
+ //# sourceMappingURL=Ease.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ease.js","sourceRoot":"","sources":["../../src/timing/Ease.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,IAAI;IACxB,EAAE,CAAiC;IAEnC,YAAY,IAAS;QACpB,aAAa;QACb,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,UAAU;YAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAEhD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,CAAS;QACd,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;CACD"}
@@ -0,0 +1,19 @@
1
+ import { GlobalTargets } from './AnimationFrameTicker.js';
2
+ import Ticker, { Callback } from './Ticker.js';
3
+ export default class TestTicker implements Ticker {
4
+ private _listeners;
5
+ targets: GlobalTargets;
6
+ running: boolean;
7
+ private _previousTick;
8
+ constructor();
9
+ registerTarget(target: any): any;
10
+ unregisterTarget(target: any): void;
11
+ applyTargets(): void;
12
+ add(fn: Callback): {
13
+ remove: () => void;
14
+ };
15
+ remove(fn: Callback): void;
16
+ run(max?: number, step?: number): boolean;
17
+ tick(elapsed: number): boolean;
18
+ }
19
+ //# sourceMappingURL=TestTicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestTicker.d.ts","sourceRoot":"","sources":["../../src/timing/TestTicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,UAAW,YAAW,MAAM;IAChD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,EAAE,aAAa,CAAC;IAEvB,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,aAAa,CAAgB;;IAcrC,cAAc,CAAC,MAAM,EAAE,GAAG;IAI1B,gBAAgB,CAAC,MAAM,EAAE,GAAG;IAI5B,YAAY;IAIZ,GAAG,CAAC,EAAE,EAAE,QAAQ;;;IAYhB,MAAM,CAAC,EAAE,EAAE,QAAQ;IAOnB,GAAG,CAAC,GAAG,SAAO,EAAE,IAAI,SAAI;IAgBxB,IAAI,CAAC,OAAO,EAAE,MAAM;CAoCpB"}