chnobli 0.1.9 → 0.1.10

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 (153) hide show
  1. package/dist/animation/Animation.d.ts +36 -0
  2. package/dist/animation/Animation.d.ts.map +1 -0
  3. package/dist/animation/Animation.js +230 -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/chnobli.d.ts +15 -0
  10. package/dist/chnobli.d.ts.map +1 -0
  11. package/dist/chnobli.js +59 -0
  12. package/dist/chnobli.js.map +1 -0
  13. package/dist/property/BasicProperty.d.ts +38 -0
  14. package/dist/property/BasicProperty.d.ts.map +1 -0
  15. package/dist/property/BasicProperty.js +72 -0
  16. package/dist/property/BasicProperty.js.map +1 -0
  17. package/dist/property/ClassProperty.d.ts +32 -0
  18. package/dist/property/ClassProperty.d.ts.map +1 -0
  19. package/dist/property/ClassProperty.js +108 -0
  20. package/dist/property/ClassProperty.js.map +1 -0
  21. package/dist/property/Property.d.ts +13 -0
  22. package/dist/property/Property.d.ts.map +1 -0
  23. package/dist/property/Property.js +22 -0
  24. package/dist/property/Property.js.map +1 -0
  25. package/dist/property/StyleProperty.d.ts +25 -0
  26. package/dist/property/StyleProperty.d.ts.map +1 -0
  27. package/dist/property/StyleProperty.js +221 -0
  28. package/dist/property/StyleProperty.js.map +1 -0
  29. package/dist/property/TransformProperty.d.ts +15 -0
  30. package/dist/property/TransformProperty.d.ts.map +1 -0
  31. package/dist/property/TransformProperty.js +43 -0
  32. package/dist/property/TransformProperty.js.map +1 -0
  33. package/dist/property/TransformXYProperty.d.ts +28 -0
  34. package/dist/property/TransformXYProperty.d.ts.map +1 -0
  35. package/dist/property/TransformXYProperty.js +65 -0
  36. package/dist/property/TransformXYProperty.js.map +1 -0
  37. package/dist/responsive/ResponsiveEvent.d.ts +17 -0
  38. package/dist/responsive/ResponsiveEvent.d.ts.map +1 -0
  39. package/dist/responsive/ResponsiveEvent.js +45 -0
  40. package/dist/responsive/ResponsiveEvent.js.map +1 -0
  41. package/dist/responsive/TestEvent.d.ts +11 -0
  42. package/dist/responsive/TestEvent.d.ts.map +1 -0
  43. package/dist/responsive/TestEvent.js +26 -0
  44. package/dist/responsive/TestEvent.js.map +1 -0
  45. package/dist/scroll/Scroll.d.ts +40 -0
  46. package/dist/scroll/Scroll.d.ts.map +1 -0
  47. package/dist/scroll/Scroll.js +168 -0
  48. package/dist/scroll/Scroll.js.map +1 -0
  49. package/dist/scroll/ScrollEvent.d.ts +17 -0
  50. package/dist/scroll/ScrollEvent.d.ts.map +1 -0
  51. package/dist/scroll/ScrollEvent.js +39 -0
  52. package/dist/scroll/ScrollEvent.js.map +1 -0
  53. package/dist/scroll/index.d.ts +6 -0
  54. package/dist/scroll/index.d.ts.map +1 -0
  55. package/dist/scroll/index.js +8 -0
  56. package/dist/scroll/index.js.map +1 -0
  57. package/dist/scroll/public.d.ts +17 -0
  58. package/dist/scroll/public.d.ts.map +1 -0
  59. package/dist/scroll/public.js +25 -0
  60. package/dist/scroll/public.js.map +1 -0
  61. package/dist/stagger/stagger.d.ts +20 -0
  62. package/dist/stagger/stagger.d.ts.map +1 -0
  63. package/dist/stagger/stagger.js +43 -0
  64. package/dist/stagger/stagger.js.map +1 -0
  65. package/dist/target/BaseTarget.old.d.ts +33 -0
  66. package/dist/target/BaseTarget.old.d.ts.map +1 -0
  67. package/dist/target/BaseTarget.old.js +73 -0
  68. package/dist/target/BaseTarget.old.js.map +1 -0
  69. package/dist/target/DomTarget.d.ts +41 -0
  70. package/dist/target/DomTarget.d.ts.map +1 -0
  71. package/dist/target/DomTarget.js +230 -0
  72. package/dist/target/DomTarget.js.map +1 -0
  73. package/dist/target/ObjectTarget.d.ts +30 -0
  74. package/dist/target/ObjectTarget.d.ts.map +1 -0
  75. package/dist/target/ObjectTarget.js +101 -0
  76. package/dist/target/ObjectTarget.js.map +1 -0
  77. package/dist/target/Target.d.ts +25 -0
  78. package/dist/target/Target.d.ts.map +1 -0
  79. package/dist/target/Target.js +25 -0
  80. package/dist/target/Target.js.map +1 -0
  81. package/dist/target/TestDomNode.d.ts +14 -0
  82. package/dist/target/TestDomNode.d.ts.map +1 -0
  83. package/dist/target/TestDomNode.js +55 -0
  84. package/dist/target/TestDomNode.js.map +1 -0
  85. package/dist/timeline/Nested.d.ts +30 -0
  86. package/dist/timeline/Nested.d.ts.map +1 -0
  87. package/dist/timeline/Nested.js +51 -0
  88. package/dist/timeline/Nested.js.map +1 -0
  89. package/dist/timeline/Timeline.d.ts +41 -0
  90. package/dist/timeline/Timeline.d.ts.map +1 -0
  91. package/dist/timeline/Timeline.js +306 -0
  92. package/dist/timeline/Timeline.js.map +1 -0
  93. package/dist/timeline/public.d.ts +160 -0
  94. package/dist/timeline/public.d.ts.map +1 -0
  95. package/dist/timeline/public.js +388 -0
  96. package/dist/timeline/public.js.map +1 -0
  97. package/dist/timing/AnimationFrameTicker.d.ts +32 -0
  98. package/dist/timing/AnimationFrameTicker.d.ts.map +1 -0
  99. package/dist/timing/AnimationFrameTicker.js +134 -0
  100. package/dist/timing/AnimationFrameTicker.js.map +1 -0
  101. package/dist/timing/Ease.d.ts +6 -0
  102. package/dist/timing/Ease.d.ts.map +1 -0
  103. package/dist/timing/Ease.js +15 -0
  104. package/dist/timing/Ease.js.map +1 -0
  105. package/dist/timing/TestTicker.d.ts +19 -0
  106. package/dist/timing/TestTicker.d.ts.map +1 -0
  107. package/dist/timing/TestTicker.js +81 -0
  108. package/dist/timing/TestTicker.js.map +1 -0
  109. package/dist/timing/Ticker.d.ts +14 -0
  110. package/dist/timing/Ticker.d.ts.map +1 -0
  111. package/dist/timing/Ticker.js +2 -0
  112. package/dist/timing/Ticker.js.map +1 -0
  113. package/dist/timing/Timing.d.ts +71 -0
  114. package/dist/timing/Timing.d.ts.map +1 -0
  115. package/dist/timing/Timing.js +276 -0
  116. package/dist/timing/Timing.js.map +1 -0
  117. package/dist/timing/easing.d.ts +158 -0
  118. package/dist/timing/easing.d.ts.map +1 -0
  119. package/dist/timing/easing.js +273 -0
  120. package/dist/timing/easing.js.map +1 -0
  121. package/dist/utils/Events.d.ts +9 -0
  122. package/dist/utils/Events.d.ts.map +1 -0
  123. package/dist/utils/Events.js +35 -0
  124. package/dist/utils/Events.js.map +1 -0
  125. package/dist/utils/internal.d.ts +5 -0
  126. package/dist/utils/internal.d.ts.map +1 -0
  127. package/dist/utils/internal.js +9 -0
  128. package/dist/utils/internal.js.map +1 -0
  129. package/dist/utils/motionpath.d.ts +16 -0
  130. package/dist/utils/motionpath.d.ts.map +1 -0
  131. package/dist/utils/motionpath.js +41 -0
  132. package/dist/utils/motionpath.js.map +1 -0
  133. package/dist/utils/utils.d.ts +44 -0
  134. package/dist/utils/utils.d.ts.map +1 -0
  135. package/dist/utils/utils.js +96 -0
  136. package/dist/utils/utils.js.map +1 -0
  137. package/dist/values/ColorValue.d.ts +12 -0
  138. package/dist/values/ColorValue.d.ts.map +1 -0
  139. package/dist/values/ColorValue.js +133 -0
  140. package/dist/values/ColorValue.js.map +1 -0
  141. package/dist/values/StyleValue.d.ts +41 -0
  142. package/dist/values/StyleValue.d.ts.map +1 -0
  143. package/dist/values/StyleValue.js +159 -0
  144. package/dist/values/StyleValue.js.map +1 -0
  145. package/dist/values/Value.d.ts +13 -0
  146. package/dist/values/Value.d.ts.map +1 -0
  147. package/dist/values/Value.js +38 -0
  148. package/dist/values/Value.js.map +1 -0
  149. package/dist/values/defaultcolors.d.ts +2 -0
  150. package/dist/values/defaultcolors.d.ts.map +1 -0
  151. package/dist/values/defaultcolors.js +149 -0
  152. package/dist/values/defaultcolors.js.map +1 -0
  153. package/package.json +1 -1
@@ -0,0 +1,388 @@
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
+ _renderedOnce;
26
+ _runningTicker;
27
+ _responsiveBlocks;
28
+ _responsiveEvent;
29
+ _smoothSeek;
30
+ _seekTo;
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._inner = new Timeline(props);
41
+ // 'start', 'end'
42
+ this._events = new Events();
43
+ this._triggeredStart = false;
44
+ this._state = STATE_PAUSED;
45
+ this._renderedOnce = false;
46
+ this._runningTicker = null;
47
+ this._responsiveBlocks = [];
48
+ if (this._responsive) {
49
+ this._responsiveEvent = ResponsiveEvent.global()?.add((a, b) => {
50
+ this._onResponsive(a, b);
51
+ });
52
+ // setup callback so we can notify our listeners
53
+ this._inner.setBeforeResponsiveFn(() => {
54
+ this._responsiveBlocks.forEach(block => {
55
+ block.responsive();
56
+ });
57
+ });
58
+ }
59
+ else {
60
+ this._responsiveEvent = null;
61
+ }
62
+ }
63
+ /**
64
+ * Set's properties
65
+ *
66
+ * offset can be staggered, a number, a label or a string `+=10`
67
+ */
68
+ set(targets, props, offset) {
69
+ // for the moment let's just add as usual but set the duration to 0
70
+ return this.add(targets, { ...props, duration: 0 }, offset);
71
+ }
72
+ /**
73
+ * Add an animation to the timeline
74
+ *
75
+ * offset can be staggered, a number, a label or a string `+=10`
76
+ */
77
+ add(targets, props, offset) {
78
+ timelineAdd(this, targets, props, offset);
79
+ return this;
80
+ }
81
+ /**
82
+ * Adds a label at to the current nOffset
83
+ *
84
+ * This label can then be used in offsets
85
+ */
86
+ label(label, offset = null) {
87
+ this._inner.label(label, offset);
88
+ return this;
89
+ }
90
+ /**
91
+ * Allows to nest timelines
92
+ *
93
+ * fn: (timeline)
94
+ */
95
+ // todo probably tl should be an interface
96
+ nest(fn, opts = {}, offset = null) {
97
+ const tl = new NestedTimeline(opts);
98
+ fn(tl);
99
+ this._inner.addTimeline(tl._inner, offset);
100
+ return this;
101
+ }
102
+ /**
103
+ * Adds a responsive function call which get's called before the responsive
104
+ * functions in properties
105
+ */
106
+ addResponsive(responsive) {
107
+ if (!this._responsiveEvent)
108
+ throw new Error('this timeline is not responsive');
109
+ if (Array.isArray(responsive)) {
110
+ responsive.forEach(resp => this.addResponsive(resp));
111
+ return this;
112
+ }
113
+ if (typeof responsive.responsive !== 'function')
114
+ throw new Error('expected a responsive() function');
115
+ this._responsiveBlocks.push(responsive);
116
+ return this;
117
+ }
118
+ /**
119
+ * Starts to play the timeline if it hasn't started
120
+ */
121
+ play() {
122
+ if (this._state === STATE_PLAYING)
123
+ return this;
124
+ this._state = STATE_PLAYING;
125
+ this._startTicker();
126
+ return this;
127
+ }
128
+ /**
129
+ * Pause the timeline at the current position
130
+ */
131
+ pause() {
132
+ if (this._state === STATE_PAUSED)
133
+ return;
134
+ this._state = STATE_PAUSED;
135
+ this._stopTicker();
136
+ }
137
+ /**
138
+ * Seeks to a position in the timeline
139
+ */
140
+ seekMs(ms) {
141
+ this._inner.init();
142
+ this.seek(this._inner.timing.normalizeMs(ms));
143
+ }
144
+ // todo maybe we should have two functions
145
+ // seek
146
+ // and setPosition
147
+ // seek would include reverse but setPosition would not
148
+ /**
149
+ * Seeks to a normalized position in the timeline
150
+ *
151
+ * @param pos = number between 0 and 1
152
+ */
153
+ seek(pos) {
154
+ this._inner.init();
155
+ if (this._smoothSeek) {
156
+ this._smoothSeek.update(this._inner.timing.positionLinear(), pos);
157
+ if (this._state !== STATE_PLAYING)
158
+ this._state = STATE_SEEK;
159
+ }
160
+ else {
161
+ // this._inner.seek(pos);
162
+ this._seekTo = pos;
163
+ if (this._state !== STATE_PLAYING)
164
+ this._state = STATE_RENDER_ONCE;
165
+ }
166
+ this._startTicker();
167
+ }
168
+ /**
169
+ * Returns the position of a label
170
+ */
171
+ labelPosition(label) {
172
+ this._inner.init();
173
+ return this._inner.labelPosition(label);
174
+ }
175
+ // seek in Range (useful for scroll timelines)
176
+ // seek(startOffset, endOffset, pos)
177
+ /**
178
+ * Resets the current timeline to the start
179
+ * without changing anything
180
+ *
181
+ * this operation is not smooth use seek 0 if you wan't that
182
+ */
183
+ reset() {
184
+ this._inner.seek(0);
185
+ }
186
+ /**
187
+ * Resets every used prop to it's previous value
188
+ */
189
+ resetProps() {
190
+ const reversed = this._inner.timing.reverse;
191
+ this._inner.timing.reversed = false;
192
+ this._inner.seek(-1);
193
+ this._inner.render();
194
+ this._inner.ticker.applyTargets();
195
+ this._inner.timing.reverse = reversed;
196
+ this._inner.seek(-1);
197
+ }
198
+ /**
199
+ * Recalculates all values this should be called for example after a resize
200
+ */
201
+ update() {
202
+ this._inner.update();
203
+ }
204
+ /**
205
+ * Returns wether the timeline is set to reversed
206
+ */
207
+ isReversed() {
208
+ return this._inner.timing.reversed;
209
+ }
210
+ /**
211
+ * Set's the timeline to a specific direction
212
+ */
213
+ setReversed(reversed) {
214
+ if (this.isReversed() == reversed)
215
+ return;
216
+ this.reverse();
217
+ }
218
+ /**
219
+ * Reverses the order of the current timeline
220
+ */
221
+ reverse() {
222
+ this._inner.timing.reverse();
223
+ // todo does this work with smooth seek?
224
+ }
225
+ /**
226
+ * Listen on events
227
+ *
228
+ * returns a function to remove the event listener
229
+ *
230
+ * ## Events
231
+ *
232
+ * ### end
233
+ * Get's executed once the timeline comes to the end
234
+ * Does not get executed during seeking
235
+ *
236
+ */
237
+ on(event, fn) {
238
+ return this._events.add(event, fn);
239
+ }
240
+ // not working
241
+ onPromise(event) {
242
+ return this._events.wait(event);
243
+ }
244
+ /**
245
+ * Destroys this timeline and resets all props
246
+ */
247
+ destroy() {
248
+ this._stopTicker();
249
+ this._inner.destroy();
250
+ this._events.destroy();
251
+ this._responsiveEvent?.remove();
252
+ this._responsiveBlocks = [];
253
+ // @ts-ignore
254
+ this._inner = null;
255
+ }
256
+ _maybeTriggerEndEvent() {
257
+ if (this._state !== STATE_PLAYING)
258
+ return;
259
+ this._events.trigger('end');
260
+ this._triggeredStart = false;
261
+ }
262
+ /**
263
+ * @ignore
264
+ */
265
+ _startTicker() {
266
+ if (this._runningTicker)
267
+ return;
268
+ this._inner.init();
269
+ const timingEnded = () => this._inner.timing.state >= STATE_ENDED;
270
+ const smoothSeekEnded = () => !this._smoothSeek || this._smoothSeek.state >= STATE_ENDED;
271
+ this._runningTicker = this._inner.ticker.add(change => {
272
+ if (!this._triggeredStart) {
273
+ // todo check that we are at the start
274
+ if (this._inner.timing.state <= STATE_BEFORE) {
275
+ this._events.trigger('start');
276
+ this._triggeredStart = true;
277
+ }
278
+ }
279
+ const allowSmoothSeek = this._state === STATE_PLAYING || this._state === STATE_SEEK;
280
+ if (allowSmoothSeek &&
281
+ this._smoothSeek &&
282
+ this._smoothSeek.state < STATE_ENDED) {
283
+ this._smoothSeek.advance(change);
284
+ this._inner.seek(this._smoothSeek.value);
285
+ }
286
+ else if (this._state === STATE_RENDER_ONCE) {
287
+ this._inner.seek(this._seekTo);
288
+ }
289
+ else if (this._state === STATE_PLAYING) {
290
+ this._inner.advance(change);
291
+ }
292
+ this._inner.render();
293
+ // we rendered once let's stop
294
+ const renderOnce = this._state === STATE_RENDER_ONCE;
295
+ if (renderOnce || (timingEnded() && smoothSeekEnded())) {
296
+ this._maybeTriggerEndEvent();
297
+ this._state = STATE_PAUSED;
298
+ this._stopTicker();
299
+ return;
300
+ }
301
+ });
302
+ }
303
+ /**
304
+ * @ignore
305
+ */
306
+ _stopTicker() {
307
+ if (!this._runningTicker)
308
+ return;
309
+ this._runningTicker.remove();
310
+ this._runningTicker = null;
311
+ }
312
+ /**
313
+ * @ignore
314
+ */
315
+ _onResponsive(a, b) {
316
+ // // make sure we don't render something if we never did
317
+ // if (!this._renderedOnce)
318
+ // return;
319
+ this._inner.update();
320
+ }
321
+ }
322
+ /**
323
+ * Add an animation to the timeline
324
+ * tl needs to have _defaults, and _inner
325
+ */
326
+ export function timelineAdd(tl, targets, props, offset = null) {
327
+ if (Array.from(targets).length === 0)
328
+ targets = [targets];
329
+ else
330
+ targets = Array.from(targets);
331
+ let i = -1;
332
+ for (const target of targets) {
333
+ i++;
334
+ const nProps = {
335
+ ...tl._defaults,
336
+ ...props,
337
+ };
338
+ for (const prop in nProps) {
339
+ nProps[prop] = callStagger(nProps[prop], i, targets.length);
340
+ }
341
+ const nOffset = callStagger(offset, i, targets.length);
342
+ tl._inner.add(target, nProps, nOffset, i);
343
+ }
344
+ }
345
+ /**
346
+ * Smooth seek
347
+ *
348
+ * can either just be a number (duration) or an object { duration, ease }
349
+ */
350
+ function parseSmoothSeek(smoothSeek) {
351
+ if (!smoothSeek)
352
+ return null;
353
+ if (typeof smoothSeek === 'number') {
354
+ return new SmoothSeek({
355
+ duration: smoothSeek,
356
+ });
357
+ }
358
+ return new SmoothSeek({
359
+ duration: smoothSeek.duration,
360
+ ease: smoothSeek?.ease,
361
+ });
362
+ }
363
+ class SmoothSeek {
364
+ timing;
365
+ from;
366
+ to;
367
+ constructor(timing) {
368
+ this.timing = new Timing(timing);
369
+ this.timing.seek(1);
370
+ this.from = 0;
371
+ this.to = 0;
372
+ }
373
+ update(from, to) {
374
+ this.from = from;
375
+ this.to = to;
376
+ this.timing.seek(0);
377
+ }
378
+ advance(change) {
379
+ this.timing.advance(change);
380
+ }
381
+ get value() {
382
+ return this.from + (this.to - this.from) * this.timing.position;
383
+ }
384
+ get state() {
385
+ return this.timing.state;
386
+ }
387
+ }
388
+ //# 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;CA8BrB;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,134 @@
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
+ for (const fn of this._listeners) {
75
+ fn(change, {
76
+ // changes,
77
+ remove: () => this.remove(fn),
78
+ });
79
+ }
80
+ this._targets.apply();
81
+ requestAnimationFrame(a => this._tick(a));
82
+ }
83
+ }
84
+ // class PropertyChanges {
85
+ // constructor() {
86
+ // this._targets = new Map;
87
+ // }
88
+ // // target is expected to be an html element
89
+ // get(target) {
90
+ // }
91
+ // }
92
+ // class TargetChanges {
93
+ // constructor() {
94
+ // // x, y, rotate, skew, scale
95
+ // this.transform = {};
96
+ // }
97
+ // }
98
+ export class GlobalTargets {
99
+ _targets;
100
+ constructor() {
101
+ // {target, ref}
102
+ this._targets = new Map();
103
+ }
104
+ register(target) {
105
+ let storedTarget = this._targets.get(target);
106
+ if (!storedTarget) {
107
+ storedTarget = {
108
+ target: newTarget(target),
109
+ ref: 0,
110
+ };
111
+ this._targets.set(target, storedTarget);
112
+ }
113
+ storedTarget.ref += 1;
114
+ return storedTarget.target;
115
+ }
116
+ unregister(target) {
117
+ const storedTarget = this._targets.get(target);
118
+ if (!storedTarget)
119
+ return;
120
+ storedTarget.ref -= 1;
121
+ }
122
+ apply() {
123
+ for (const storedTarget of this._targets.values()) {
124
+ const { target, ref } = storedTarget;
125
+ target.apply();
126
+ if (ref <= 0)
127
+ this._targets.delete(target.target);
128
+ }
129
+ }
130
+ size() {
131
+ return this._targets.size;
132
+ }
133
+ }
134
+ //# 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;CA8BpB"}