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,51 @@
1
+ import { takeProp } from '../utils/internal.js';
2
+ import Timeline from './Timeline.js';
3
+ import { timelineAdd } from './public.js';
4
+ export default class NestedTimeline {
5
+ _defaults;
6
+ _inner;
7
+ constructor(props = {}) {
8
+ this._defaults = takeProp(props, 'defaults', {});
9
+ if ('duration' in props)
10
+ throw new Error('a timeline does not accept a duration');
11
+ this._inner = new Timeline(props);
12
+ }
13
+ /**
14
+ * Set's properties
15
+ * offset can be staggered, a number, a label or a string `+=10`
16
+ */
17
+ set(targets, props, offset = null) {
18
+ // for the moment let's just add as usual but set the duration to 0
19
+ return this.add(targets, { ...props, duration: 0 }, offset);
20
+ }
21
+ /**
22
+ * Add an animation to the timeline
23
+ *
24
+ * offset can be staggered, a number, a label or a string `+=10`
25
+ */
26
+ add(targets, props, offset = null) {
27
+ timelineAdd(this, targets, props, offset);
28
+ return this;
29
+ }
30
+ /**
31
+ * Adds a label at to the current nOffse
32
+ *
33
+ * This label can then be used in offsets
34
+ */
35
+ label(label, offset = null) {
36
+ this._inner.label(label, offset);
37
+ return this;
38
+ }
39
+ /**
40
+ * Allows to nest timelines
41
+ *
42
+ * fn: (timeline)
43
+ */
44
+ nest(fn, opts = {}, offset = null) {
45
+ const tl = new NestedTimeline(opts);
46
+ fn(tl);
47
+ this._inner.addTimeline(tl._inner, offset);
48
+ return this;
49
+ }
50
+ }
51
+ //# sourceMappingURL=Nested.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Nested.js","sourceRoot":"","sources":["../../src/timeline/Nested.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,cAAc;IAClC,SAAS,CAAsB;IAC/B,MAAM,CAAW;IAEjB,YAAY,QAA6B,EAAE;QAC1C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QAEjD,IAAI,UAAU,IAAI,KAAK;YACtB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAE1D,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,OAAY,EAAE,KAA0B,EAAE,SAAc,IAAI;QAC/D,mEAAmE;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,OAAY,EAAE,KAA0B,EAAE,SAAc,IAAI;QAC/D,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAa,EAAE,SAAc,IAAI;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,IAAI,CACH,EAAgC,EAChC,OAA4B,EAAE,EAC9B,SAAc,IAAI;QAElB,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QAEpC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
@@ -0,0 +1,42 @@
1
+ import Timing from '../timing/Timing.js';
2
+ import Ticker from '../timing/Ticker.js';
3
+ import { DestroyOptions } from './public.js';
4
+ /**
5
+ * Timeline is the most versatile class
6
+ *
7
+ * A timeline can contain multiple animation, ordered one after the other or
8
+ * by an offset.
9
+ */
10
+ export default class Timeline {
11
+ timing: Timing;
12
+ ticker: Ticker;
13
+ private entries;
14
+ private _beforeResponsiveFn;
15
+ private _initialized;
16
+ private _renderQueue;
17
+ constructor(props?: Record<string, any>);
18
+ isFinite(): boolean;
19
+ add(target: any, props: Record<string, any>, offset?: any, relative?: number): this;
20
+ addTimeline(tl: Timeline, offset?: any): void;
21
+ label(label: string, offset?: any): this;
22
+ setBeforeResponsiveFn(fn: () => void): void;
23
+ advance(change: number): void;
24
+ seekMs(ms: number): void;
25
+ seek(pos: number): void;
26
+ /**
27
+ * Returns the position of a label
28
+ *
29
+ * needs to be initialized
30
+ */
31
+ labelPosition(label: string): number;
32
+ init(): void;
33
+ _initAnimations(reset?: boolean): void;
34
+ render(): void;
35
+ /**
36
+ * Updates the timings of all animations
37
+ */
38
+ _updateTimings(): void;
39
+ update(): void;
40
+ destroy(opts: DestroyOptions): void;
41
+ }
42
+ //# sourceMappingURL=Timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../src/timeline/Timeline.ts"],"names":[],"mappings":"AACA,OAAO,MAON,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,qBAAqB,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAW7C;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,YAAY,CAIlB;gBASU,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IA0B3C,QAAQ,IAAI,OAAO;IAQnB,GAAG,CACF,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,MAAM,GAAE,GAAU,EAClB,QAAQ,SAAI,GACV,IAAI;IAgBP,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAE,GAAU;IAW5C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAU,GAAG,IAAI;IAY9C,qBAAqB,CAAC,EAAE,EAAE,MAAM,IAAI;IAIpC,OAAO,CAAC,MAAM,EAAE,MAAM;IAMtB,MAAM,CAAC,EAAE,EAAE,MAAM;IAMjB,IAAI,CAAC,GAAG,EAAE,MAAM;IAMhB;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUpC,IAAI;IAiDJ,eAAe,CAAC,KAAK,UAAQ;IAyC7B,MAAM;IAmBN;;OAEG;IACH,cAAc;IA0Bd,MAAM;IAyBN,OAAO,CAAC,IAAI,EAAE,cAAc;CAiB5B"}
@@ -0,0 +1,306 @@
1
+ import { takeProp } from '../utils/internal.js';
2
+ import Timing, { parseEase, parseRepeat, parseAlternate, parseReversed, STATE_BEFORE, STATE_ENDED, } from '../timing/Timing.js';
3
+ import Animation from '../animation/Animation.js';
4
+ import AnimationFrameTicker from '../timing/AnimationFrameTicker.js';
5
+ /**
6
+ * Timeline is the most versatile class
7
+ *
8
+ * A timeline can contain multiple animation, ordered one after the other or
9
+ * by an offset.
10
+ */
11
+ export default class Timeline {
12
+ timing;
13
+ ticker;
14
+ entries;
15
+ _beforeResponsiveFn;
16
+ _initialized;
17
+ _renderQueue;
18
+ /*
19
+ {
20
+ ease,
21
+ repeat: -1 - x,
22
+ alternate
23
+ }
24
+ */
25
+ constructor(props = {}) {
26
+ const nProps = {
27
+ // duration here is not important since it will be calculated
28
+ // based on the animations that get added
29
+ duration: 1000,
30
+ ease: parseEase(takeProp(props, 'ease', null)),
31
+ repeat: parseRepeat(takeProp(props, 'repeat', false)),
32
+ alternate: parseAlternate(takeProp(props, 'alternate', true)),
33
+ reversed: parseReversed(takeProp(props, 'reversed', false)),
34
+ };
35
+ this.timing = new Timing(nProps);
36
+ this.ticker = AnimationFrameTicker.global();
37
+ // { type: label|animation, value: {}, offset, start: x, end: y, render }
38
+ this.entries = [];
39
+ this._beforeResponsiveFn = () => { };
40
+ this._initialized = false;
41
+ this._renderQueue = {
42
+ upcoming: [],
43
+ passed: [],
44
+ active: [],
45
+ };
46
+ }
47
+ isFinite() {
48
+ return !this.entries.some(e => {
49
+ return e.type === 'animation' && !e.value.isFinite();
50
+ });
51
+ }
52
+ // relative represents the point which the offset should be taken
53
+ // if relative 1 is done the offset will be taken from the previous - 1
54
+ add(target, props, offset = null, relative = 0) {
55
+ const animation = new Animation(target, this.ticker, props);
56
+ if (!animation.isFinite())
57
+ throw new Error('the animation needs to be finite');
58
+ this.entries.push({
59
+ type: 'animation',
60
+ value: animation,
61
+ offset: new Offset(offset),
62
+ relativeOffset: relative,
63
+ });
64
+ return this;
65
+ }
66
+ addTimeline(tl, offset = null) {
67
+ if (!tl.isFinite())
68
+ throw new Error('the animation needs to be finite');
69
+ this.entries.push({
70
+ type: 'timeline',
71
+ value: tl,
72
+ offset: new Offset(offset),
73
+ relativeOffset: 0,
74
+ });
75
+ }
76
+ label(label, offset = null) {
77
+ this.entries.push({
78
+ type: 'label',
79
+ value: label,
80
+ offset: new Offset(offset),
81
+ relativeOffset: 0,
82
+ });
83
+ return this;
84
+ }
85
+ // set's a function which get's called before any responsive call
86
+ setBeforeResponsiveFn(fn) {
87
+ this._beforeResponsiveFn = fn;
88
+ }
89
+ advance(change) {
90
+ this.timing.advance(change);
91
+ this._updateTimings();
92
+ }
93
+ seekMs(ms) {
94
+ this.timing.seekMs(ms);
95
+ this._updateTimings();
96
+ }
97
+ seek(pos) {
98
+ this.timing.seek(pos);
99
+ this._updateTimings();
100
+ }
101
+ /**
102
+ * Returns the position of a label
103
+ *
104
+ * needs to be initialized
105
+ */
106
+ labelPosition(label) {
107
+ const entry = this.entries.find(e => {
108
+ return e.type === 'label' && e.value === label;
109
+ });
110
+ if (!entry)
111
+ throw new Error('could not find label ' + label);
112
+ return entry.start / this.timing.duration;
113
+ }
114
+ init() {
115
+ if (this._initialized)
116
+ return;
117
+ this._initialized = true;
118
+ let duration = 0;
119
+ const labels = {};
120
+ let i = -1;
121
+ for (const entry of this.entries) {
122
+ i++;
123
+ let offset = entry.offset;
124
+ const label = offset.label();
125
+ if (label) {
126
+ if (!(label in labels))
127
+ throw new Error('could not find label ' + label);
128
+ offset = new Offset(labels[label]);
129
+ }
130
+ const pos = this.entries[i - 1 - entry.relativeOffset]?.end ?? 0;
131
+ const start = offset.calculate(pos);
132
+ if (start < 0)
133
+ throw new Error('cannot go in the past start < 0');
134
+ let end = start;
135
+ if (entry.type === 'animation')
136
+ end += entry.value.duration;
137
+ if (entry.type === 'timeline') {
138
+ entry.value.init();
139
+ end += entry.value.timing.duration;
140
+ }
141
+ if (entry.type === 'label')
142
+ labels[entry.value] = start;
143
+ entry.start = start;
144
+ entry.end = end;
145
+ duration = Math.max(end, duration);
146
+ }
147
+ this.timing.setDuration(duration);
148
+ this._beforeResponsiveFn();
149
+ this._initAnimations();
150
+ }
151
+ _initAnimations(reset = false) {
152
+ // we don't wan't to have a reversed timing
153
+ const reversed = this.timing.reversed;
154
+ this.timing.reversed = false;
155
+ // now initialize all animations
156
+ // initialization means
157
+ // we need to define which value should be used as the from and the to
158
+ // value
159
+ const startOrdered = this.entries.filter(e => {
160
+ return e.type === 'animation' || e.type === 'timeline';
161
+ });
162
+ startOrdered.sort((a, b) => a.start - b.start);
163
+ for (let i = 0; i < startOrdered.length; i++) {
164
+ const entry = startOrdered[i];
165
+ this.timing.seekMs(entry.start);
166
+ const pos = this.timing.positionMs();
167
+ // seek all previous and render
168
+ for (let y = 0; y < i; y++) {
169
+ const prevEntry = startOrdered[y];
170
+ const prevAnimation = prevEntry.value;
171
+ prevAnimation.seekMs(pos - prevEntry.start);
172
+ prevAnimation.render();
173
+ }
174
+ entry.value.init(reset);
175
+ }
176
+ this.timing.reversed = reversed;
177
+ this.timing.seek(-1);
178
+ startOrdered.forEach(e => {
179
+ e.value.seek(-1);
180
+ e.value.render();
181
+ });
182
+ }
183
+ render() {
184
+ // the rendering order needs to be as follows
185
+ // upcoming
186
+ // passed
187
+ // active
188
+ for (const animation of this._renderQueue.upcoming) {
189
+ animation.render();
190
+ }
191
+ for (const animation of this._renderQueue.passed) {
192
+ animation.render();
193
+ }
194
+ for (const animation of this._renderQueue.active) {
195
+ animation.render();
196
+ }
197
+ }
198
+ /**
199
+ * Updates the timings of all animations
200
+ */
201
+ _updateTimings() {
202
+ this._renderQueue = {
203
+ upcoming: [],
204
+ passed: [],
205
+ active: [],
206
+ };
207
+ const pos = this.timing.positionMsUnbounded();
208
+ for (const entry of this.entries) {
209
+ if (entry.type !== 'animation' && entry.type !== 'timeline')
210
+ continue;
211
+ const animation = entry.value;
212
+ animation.seekMs(pos - entry.start);
213
+ if (animation.timing.state >= STATE_ENDED) {
214
+ this._renderQueue.passed.push(animation);
215
+ }
216
+ else if (animation.timing.state <= STATE_BEFORE) {
217
+ this._renderQueue.upcoming.push(animation);
218
+ }
219
+ else {
220
+ this._renderQueue.active.push(animation);
221
+ }
222
+ }
223
+ }
224
+ update() {
225
+ if (!this._initialized)
226
+ return;
227
+ const pos = this.timing.savePosition();
228
+ const reversed = this.timing.reversed;
229
+ this.timing.reversed = false;
230
+ this.timing.seek(-1);
231
+ this._updateTimings();
232
+ this.render();
233
+ this.ticker.applyTargets();
234
+ this._beforeResponsiveFn();
235
+ // we now have removed every style we set
236
+ // we should be able to recalculate everything now
237
+ this._initAnimations(true);
238
+ this.timing.reversed = reversed;
239
+ this.timing.restorePosition(pos);
240
+ this._updateTimings();
241
+ this.render();
242
+ this.ticker.applyTargets();
243
+ }
244
+ destroy(opts) {
245
+ for (const entry of this.entries) {
246
+ if (entry.type === 'timeline') {
247
+ entry.value.destroy(opts);
248
+ continue;
249
+ }
250
+ if (entry.type !== 'animation')
251
+ continue;
252
+ const animation = entry.value;
253
+ animation.destroy(opts);
254
+ }
255
+ this.entries = [];
256
+ this._beforeResponsiveFn = () => { };
257
+ this.ticker.applyTargets();
258
+ }
259
+ }
260
+ class Offset {
261
+ type;
262
+ value;
263
+ constructor(offset = null) {
264
+ this.type = 'none';
265
+ this.value = null;
266
+ if (typeof offset === 'number') {
267
+ this.type = 'absolute';
268
+ this.value = offset;
269
+ }
270
+ else if (typeof offset === 'string') {
271
+ if (offset.startsWith('-=')) {
272
+ this.type = 'sub';
273
+ this.value = parseFloat(offset.substring(2));
274
+ }
275
+ else if (offset.startsWith('+=')) {
276
+ this.type = 'add';
277
+ this.value = parseFloat(offset.substring(2));
278
+ }
279
+ else {
280
+ this.type = 'label';
281
+ this.value = offset;
282
+ }
283
+ }
284
+ }
285
+ label() {
286
+ if (this.type !== 'label')
287
+ return null;
288
+ return this.value;
289
+ }
290
+ // this is bullshit
291
+ /* isAbsolute(this: Offset): this is { type: 'absolute'; value: number } {
292
+ return this.type === 'absolute';
293
+ } */
294
+ calculate(pos) {
295
+ if (this.type === 'none')
296
+ return pos;
297
+ if (this.type === 'absolute')
298
+ return this.value;
299
+ if (this.type === 'sub')
300
+ return pos - this.value;
301
+ if (this.type === 'add')
302
+ return pos + this.value;
303
+ throw new Error('cannot calculate for type ' + this.type);
304
+ }
305
+ }
306
+ //# sourceMappingURL=Timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Timeline.js","sourceRoot":"","sources":["../../src/timeline/Timeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ import Timeline from './Timeline.js';
2
+ import Stagger from '../stagger/stagger.js';
3
+ import NestedTimeline from './Nested.js';
4
+ import { Targets } from '../chnobli.js';
5
+ export type Responsive = {
6
+ responsive: () => void;
7
+ };
8
+ export type TimelineProps = {
9
+ defaults?: Record<string, any>;
10
+ responsive?: boolean;
11
+ ease?: (t: number) => number;
12
+ smoothSeek?: SmoothSeekValue;
13
+ /**
14
+ * When set will keep all values when destroy is called
15
+ */
16
+ keepValues?: boolean;
17
+ [key: string]: any;
18
+ };
19
+ export type Offset = number | string | Stagger<number | string>;
20
+ export type DestroyOptions = {
21
+ keepValues?: boolean;
22
+ };
23
+ export default class PublicTimeline {
24
+ /**
25
+ * @ignore
26
+ */
27
+ _defaults: Record<string, any>;
28
+ private _responsive;
29
+ /**
30
+ * @ignore
31
+ */
32
+ _inner: Timeline;
33
+ private _events;
34
+ private _triggeredStart;
35
+ private _state;
36
+ private _runningTicker;
37
+ private _responsiveBlocks;
38
+ private _responsiveEvent;
39
+ private _smoothSeek;
40
+ private _seekTo;
41
+ private _destroyOpts;
42
+ constructor(props?: TimelineProps);
43
+ /**
44
+ * Set's properties
45
+ *
46
+ * offset can be staggered, a number, a label or a string `+=10`
47
+ */
48
+ set(targets: Targets, props: Record<string, any>, offset?: Offset): this;
49
+ /**
50
+ * Add an animation to the timeline
51
+ *
52
+ * offset can be staggered, a number, a label or a string `+=10`
53
+ */
54
+ add(targets: Targets, props: Record<string, any>, offset?: Offset): this;
55
+ /**
56
+ * Adds a label at to the current nOffset
57
+ *
58
+ * This label can then be used in offsets
59
+ */
60
+ label(label: string, offset?: any): this;
61
+ /**
62
+ * Allows to nest timelines
63
+ *
64
+ * fn: (timeline)
65
+ */
66
+ nest(fn: (tl: NestedTimeline) => void, opts?: {}, offset?: any): this;
67
+ /**
68
+ * Adds a responsive function call which get's called before the responsive
69
+ * functions in properties
70
+ */
71
+ addResponsive(responsive: Responsive | Responsive[]): this;
72
+ /**
73
+ * Starts to play the timeline if it hasn't started
74
+ */
75
+ play(): this;
76
+ /**
77
+ * Pause the timeline at the current position
78
+ */
79
+ pause(): void;
80
+ /**
81
+ * Seeks to a position in the timeline
82
+ */
83
+ seekMs(ms: number): void;
84
+ /**
85
+ * Seeks to a normalized position in the timeline
86
+ *
87
+ * @param pos = number between 0 and 1
88
+ */
89
+ seek(pos: number): void;
90
+ /**
91
+ * Returns the position of a label
92
+ */
93
+ labelPosition(label: string): number;
94
+ /**
95
+ * Resets the current timeline to the start
96
+ * without changing anything
97
+ *
98
+ * this operation is not smooth use seek 0 if you wan't that
99
+ */
100
+ reset(): void;
101
+ /**
102
+ * Resets every used prop to it's previous value
103
+ */
104
+ resetProps(): void;
105
+ /**
106
+ * Recalculates all values this should be called for example after a resize
107
+ */
108
+ update(): void;
109
+ /**
110
+ * Returns wether the timeline is set to reversed
111
+ */
112
+ isReversed(): boolean;
113
+ /**
114
+ * Set's the timeline to a specific direction
115
+ */
116
+ setReversed(reversed: boolean): void;
117
+ /**
118
+ * Reverses the order of the current timeline
119
+ */
120
+ reverse(): void;
121
+ /**
122
+ * Listen on events
123
+ *
124
+ * returns a function to remove the event listener
125
+ *
126
+ * ## Events
127
+ *
128
+ * ### end
129
+ * Get's executed once the timeline comes to the end
130
+ * Does not get executed during seeking
131
+ *
132
+ */
133
+ on(event: string, fn: (...args: any[]) => void): () => void;
134
+ onPromise(event: string): Promise<any>;
135
+ /**
136
+ * Destroys this timeline and resets all props
137
+ */
138
+ destroy(opts?: DestroyOptions): void;
139
+ _maybeTriggerEndEvent(): void;
140
+ /**
141
+ * @ignore
142
+ */
143
+ _startTicker(): void;
144
+ /**
145
+ * @ignore
146
+ */
147
+ _stopTicker(): void;
148
+ /**
149
+ * @ignore
150
+ */
151
+ _onResponsive(_a: {
152
+ width: number;
153
+ height: number;
154
+ }, _b: {
155
+ remove: () => void;
156
+ }): void;
157
+ }
158
+ /**
159
+ * Add an animation to the timeline
160
+ * tl needs to have _defaults, and _inner
161
+ */
162
+ export declare function timelineAdd(tl: PublicTimeline | NestedTimeline, targets: any, props: Record<string, any>, offset?: any): void;
163
+ export type SmoothSeekValue = number | undefined | {
164
+ duration: number;
165
+ ease?: (t: number) => number;
166
+ };
167
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/timeline/public.ts"],"names":[],"mappings":"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"}