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 @@
1
+ {"version":3,"file":"ResponsiveEvent.d.ts","sourceRoot":"","sources":["../../src/responsive/ResponsiveEvent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,CACtB,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACpC,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,KACrB,IAAI,CAAC;AAEV,MAAM,CAAC,OAAO,OAAO,eAAe;IACnC,OAAO,CAAC,UAAU,CAAgB;;IAQlC,MAAM,CAAC,MAAM,IAAI,eAAe,GAAG,IAAI;IAkBvC,GAAG,CAAC,EAAE,EAAE,QAAQ;;;IAUhB,MAAM,CAAC,EAAE,EAAE,QAAQ;IAInB,SAAS,CAAC,EAAE,EAAE,KAAK;CAanB"}
@@ -0,0 +1,45 @@
1
+ export default class ResponsiveEvent {
2
+ _listeners;
3
+ constructor() {
4
+ this._listeners = new Set();
5
+ window.addEventListener('resize', e => this._onResize(e));
6
+ }
7
+ static global() {
8
+ // allow to define a test ticker
9
+ // @ts-ignore
10
+ if (typeof globalThis !== 'undefined' && globalThis.chnobliResponsive)
11
+ // @ts-ignore
12
+ return globalThis.chnobliResponsive;
13
+ if (typeof window === 'undefined')
14
+ return null;
15
+ // @ts-ignore
16
+ if (typeof window.chnobliResponsive === 'undefined')
17
+ // @ts-ignore
18
+ window.chnobliResponsive = new ResponsiveEvent();
19
+ // @ts-ignore
20
+ return window.chnobliResponsive;
21
+ }
22
+ // fn({ width, height }, { remove() })
23
+ add(fn) {
24
+ this._listeners.add(fn);
25
+ return {
26
+ remove: () => {
27
+ this.remove(fn);
28
+ },
29
+ };
30
+ }
31
+ remove(fn) {
32
+ this._listeners.delete(fn);
33
+ }
34
+ _onResize(_e) {
35
+ for (const fn of this._listeners) {
36
+ fn({
37
+ width: window.innerWidth,
38
+ height: window.innerHeight,
39
+ }, {
40
+ remove: () => this.remove(fn),
41
+ });
42
+ }
43
+ }
44
+ }
45
+ //# sourceMappingURL=ResponsiveEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponsiveEvent.js","sourceRoot":"","sources":["../../src/responsive/ResponsiveEvent.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,OAAO,eAAe;IAC3B,UAAU,CAAgB;IAElC;QACC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAE5B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,MAAM;QACZ,gCAAgC;QAChC,aAAa;QACb,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC,iBAAiB;YACpE,aAAa;YACb,OAAO,UAAU,CAAC,iBAAiB,CAAC;QAErC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE/C,aAAa;QACb,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,WAAW;YAClD,aAAa;YACb,MAAM,CAAC,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;QAClD,aAAa;QACb,OAAO,MAAM,CAAC,iBAAiB,CAAC;IACjC,CAAC;IAED,sCAAsC;IACtC,GAAG,CAAC,EAAY;QACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO;YACN,MAAM,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;SACD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,EAAY;QAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,EAAS;QAClB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,EAAE,CACD;gBACC,KAAK,EAAE,MAAM,CAAC,UAAU;gBACxB,MAAM,EAAE,MAAM,CAAC,WAAW;aAC1B,EACD;gBACC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;aAC7B,CACD,CAAC;QACH,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,11 @@
1
+ import { Callback } from './ResponsiveEvent.js';
2
+ export default class TestResponsiveEvent {
3
+ private _listeners;
4
+ constructor();
5
+ add(fn: Callback): {
6
+ remove: () => void;
7
+ };
8
+ remove(fn: Callback): void;
9
+ resize(width: number, height: number): void;
10
+ }
11
+ //# sourceMappingURL=TestEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestEvent.d.ts","sourceRoot":"","sources":["../../src/responsive/TestEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACvC,OAAO,CAAC,UAAU,CAAgB;;IAUlC,GAAG,CAAC,EAAE,EAAE,QAAQ;;;IAUhB,MAAM,CAAC,EAAE,EAAE,QAAQ;IAInB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKpC"}
@@ -0,0 +1,26 @@
1
+ export default class TestResponsiveEvent {
2
+ _listeners;
3
+ constructor() {
4
+ this._listeners = new Set();
5
+ // @ts-ignore
6
+ globalThis.chnobliResponsive = this;
7
+ }
8
+ // fn({ width, height }, { remove() })
9
+ add(fn) {
10
+ this._listeners.add(fn);
11
+ return {
12
+ remove: () => {
13
+ this.remove(fn);
14
+ },
15
+ };
16
+ }
17
+ remove(fn) {
18
+ this._listeners.delete(fn);
19
+ }
20
+ resize(width, height) {
21
+ for (const fn of this._listeners) {
22
+ fn({ width, height }, { remove: () => this.remove(fn) });
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=TestEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestEvent.js","sourceRoot":"","sources":["../../src/responsive/TestEvent.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC/B,UAAU,CAAgB;IAElC;QACC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAE5B,aAAa;QACb,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,sCAAsC;IACtC,GAAG,CAAC,EAAY;QACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO;YACN,MAAM,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;SACD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,EAAY;QAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QACnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,40 @@
1
+ import PublicTimeline from '../timeline/public.js';
2
+ export type ScrollTrigger = {
3
+ target: HTMLElement;
4
+ offset?: OffsetValue;
5
+ view?: OffsetValue;
6
+ } | HTMLElement;
7
+ export type OffsetValue = 'top' | 'center' | 'bottom' | number;
8
+ export type ParsedScrollTrigger = {
9
+ target: HTMLElement;
10
+ offset: number;
11
+ view: number;
12
+ position: Position;
13
+ };
14
+ export type ScrollOffset = {
15
+ y: number;
16
+ view: number;
17
+ position: number;
18
+ };
19
+ export type Position = number | string;
20
+ export default class ScrollTimeline {
21
+ private _initialized;
22
+ private _globalEvent;
23
+ private _rmEvent;
24
+ private _triggers;
25
+ private timelines;
26
+ offsets: ScrollOffset[];
27
+ constructor();
28
+ /**
29
+ * Add a trigger to the timeline
30
+ *
31
+ * Providing an offset at which point the trigger should end
32
+ *
33
+ * If it is the first trigger it is not allowed to be set?
34
+ */
35
+ add(trigger: ScrollTrigger, position?: Position): void;
36
+ addTimeline(timeline: PublicTimeline): void;
37
+ init(): void;
38
+ private _onScroll;
39
+ }
40
+ //# sourceMappingURL=Scroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scroll.d.ts","sourceRoot":"","sources":["../../src/scroll/Scroll.ts"],"names":[],"mappings":"AAAA,OAAO,cAA0B,MAAM,uBAAuB,CAAC;AA8C/D,MAAM,MAAM,aAAa,GACtB;IACA,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;CAClB,GACD,WAAW,CAAC;AAEf,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAE1B,CAAC,EAAE,MAAM,CAAC;IAEV,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,MAAM,CAAC,OAAO,OAAO,cAAc;IAClC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAa;IAE7B,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,EAAE,YAAY,EAAE,CAAC;;IAwBxB;;;;;;OAMG;IACH,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAM/C,WAAW,CAAC,QAAQ,EAAE,cAAc;IAIpC,IAAI;IAkDJ,OAAO,CAAC,SAAS;CA2BjB"}
@@ -0,0 +1,168 @@
1
+ import { pageOffset } from '../utils/utils.js';
2
+ import ScrollEvent from './ScrollEvent.js';
3
+ export default class ScrollTimeline {
4
+ _initialized;
5
+ _globalEvent;
6
+ _rmEvent;
7
+ _triggers;
8
+ timelines;
9
+ offsets;
10
+ constructor() {
11
+ this._initialized = false;
12
+ this._globalEvent = ScrollEvent.global();
13
+ this._rmEvent = this._globalEvent.add(y => this._onScroll(y)).remove;
14
+ this._triggers = [];
15
+ this.timelines = [];
16
+ this.offsets = [];
17
+ // this.timeline = timeline;
18
+ // this._triggers = triggers.map(parseTrigger);
19
+ // this.offsets = this._triggers.map(t => {
20
+ // return {
21
+ // y: 0,
22
+ // view: t.view,
23
+ // };
24
+ // });
25
+ // if (this.offsets.length < 2)
26
+ // throw new Error('scroll timeline needs at least two triggers');
27
+ }
28
+ /**
29
+ * Add a trigger to the timeline
30
+ *
31
+ * Providing an offset at which point the trigger should end
32
+ *
33
+ * If it is the first trigger it is not allowed to be set?
34
+ */
35
+ add(trigger, position) {
36
+ this._triggers.push(parseTrigger(trigger, position, this._triggers.length));
37
+ }
38
+ addTimeline(timeline) {
39
+ this.timelines.push(timeline);
40
+ }
41
+ init() {
42
+ // todo we need to calculate the position for each timeline
43
+ //
44
+ // calculate the positions and offsets
45
+ // if we are missing one extend them
46
+ let previousY = -1;
47
+ this.offsets = this._triggers.map(t => {
48
+ const offset = pageOffset(t.target);
49
+ const y = offset.top + offset.height * t.offset;
50
+ if (y < previousY)
51
+ throw new Error('offsets are not in order');
52
+ let position;
53
+ if (typeof t.position === 'string') {
54
+ if (this.timelines.length !== 1)
55
+ throw new Error('labels can only be used with one timeline');
56
+ position = this.timelines[0].labelPosition(t.position);
57
+ }
58
+ else if (t.position >= 0 || t.position <= 1) {
59
+ position = t.position;
60
+ }
61
+ else {
62
+ throw new Error('position should be between 0 and 1');
63
+ }
64
+ return {
65
+ y,
66
+ view: t.view,
67
+ position,
68
+ };
69
+ });
70
+ if (this.offsets.length < 1)
71
+ throw new Error('scroll timeline needs at least one trigger');
72
+ if (this.offsets.length === 1) {
73
+ this.offsets.push({
74
+ y: this.offsets[0].y +
75
+ pageOffset(this._triggers[0].target).height,
76
+ view: 1,
77
+ position: 1,
78
+ });
79
+ }
80
+ }
81
+ _onScroll({ y, height }) {
82
+ if (!this._initialized) {
83
+ this.init();
84
+ this._initialized = true;
85
+ }
86
+ // find the matching offset
87
+ // rolling window
88
+ for (let i = 1; i < this.offsets.length; i++) {
89
+ const start = this.offsets[i - 1];
90
+ const end = this.offsets[i];
91
+ const startY = start.y + height * start.view;
92
+ const endY = end.y + height * end.view;
93
+ const dif = endY - startY;
94
+ const x = 1 - (endY - y) / dif;
95
+ for (const timeline of this.timelines) {
96
+ // calc pos range
97
+ const pos = start.position + (end.position - start.position) * x;
98
+ timeline.seek(pos);
99
+ }
100
+ }
101
+ }
102
+ }
103
+ /**
104
+ * Parse the start property
105
+ *
106
+ * can be an HTMLElement or an object { target, offset }
107
+ *
108
+ * the default offset is top
109
+ * the default view is top
110
+ */
111
+ function parseTrigger(val, position, i) {
112
+ // might be an object { target, offset }
113
+ if (!val) {
114
+ throw new Error('unknown property use an html element or an object');
115
+ }
116
+ let element = null;
117
+ let offset = 'top';
118
+ let view = i == 0 ? 'top' : 'bottom';
119
+ if (typeof val === 'object') {
120
+ if (val instanceof HTMLElement) {
121
+ element = val;
122
+ }
123
+ else if ('target' in val) {
124
+ element = val.target;
125
+ if (typeof val.offset !== 'undefined')
126
+ offset = val.offset;
127
+ if (typeof val.view !== 'undefined')
128
+ view = val.view;
129
+ }
130
+ else {
131
+ throw new Error('start unknown ' + val);
132
+ }
133
+ }
134
+ else {
135
+ throw new Error('unknown start val');
136
+ }
137
+ return {
138
+ target: element,
139
+ offset: parseOffset(offset),
140
+ view: parseOffset(view),
141
+ position: position ?? (i == 0 ? 0 : 1),
142
+ };
143
+ }
144
+ /**
145
+ * Parse the offset value
146
+ *
147
+ * can be a string (top, center, bottom) or a number (0-1)
148
+ *
149
+ * 0 = top
150
+ * 0.5 = center
151
+ * 1 = bottom
152
+ */
153
+ function parseOffset(val) {
154
+ if (typeof val === 'string') {
155
+ if (val === 'top')
156
+ return 0;
157
+ if (val === 'center')
158
+ return 0.5;
159
+ if (val === 'bottom')
160
+ return 1;
161
+ throw new Error('unknown view value ' + val);
162
+ }
163
+ if (typeof val !== 'number' || val < 0 || val > 1) {
164
+ throw new Error('view expecting to be a top/center/bottom or a percent value');
165
+ }
166
+ return val;
167
+ }
168
+ //# sourceMappingURL=Scroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scroll.js","sourceRoot":"","sources":["../../src/scroll/Scroll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export type Callback = (a: {
2
+ y: number;
3
+ height: number;
4
+ }, opts: {
5
+ remove: () => void;
6
+ }) => void;
7
+ export default class ScrollEvent {
8
+ _listeners: Set<Callback>;
9
+ constructor();
10
+ static global(): any;
11
+ add(fn: Callback): {
12
+ remove: () => void;
13
+ };
14
+ remove(fn: Callback): void;
15
+ private _onScroll;
16
+ }
17
+ //# sourceMappingURL=ScrollEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollEvent.d.ts","sourceRoot":"","sources":["../../src/scroll/ScrollEvent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,CACtB,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAChC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,KACxB,IAAI,CAAC;AAEV,MAAM,CAAC,OAAO,OAAO,WAAW;IAC/B,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;;IAQ1B,MAAM,CAAC,MAAM;IAWb,GAAG,CAAC,EAAE,EAAE,QAAQ;;;IAUhB,MAAM,CAAC,EAAE,EAAE,QAAQ;IAInB,OAAO,CAAC,SAAS;CAajB"}
@@ -0,0 +1,39 @@
1
+ export default class ScrollEvent {
2
+ _listeners;
3
+ constructor() {
4
+ this._listeners = new Set();
5
+ window.addEventListener('scroll', e => this._onScroll(e));
6
+ }
7
+ static global() {
8
+ if (typeof window === 'undefined')
9
+ return null;
10
+ // @ts-ignore
11
+ if (typeof window.chnobliScroll === 'undefined')
12
+ // @ts-ignore
13
+ window.chnobliScroll = new ScrollEvent();
14
+ // @ts-ignore
15
+ return window.chnobliScroll;
16
+ }
17
+ add(fn) {
18
+ this._listeners.add(fn);
19
+ return {
20
+ remove: () => {
21
+ this.remove(fn);
22
+ },
23
+ };
24
+ }
25
+ remove(fn) {
26
+ this._listeners.delete(fn);
27
+ }
28
+ _onScroll(_e) {
29
+ for (const fn of this._listeners) {
30
+ fn({
31
+ y: window.scrollY,
32
+ height: window.innerHeight,
33
+ }, {
34
+ remove: () => this.remove(fn),
35
+ });
36
+ }
37
+ }
38
+ }
39
+ //# sourceMappingURL=ScrollEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollEvent.js","sourceRoot":"","sources":["../../src/scroll/ScrollEvent.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC/B,UAAU,CAAgB;IAE1B;QACC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAE5B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,MAAM;QACZ,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE/C,aAAa;QACb,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,WAAW;YAC9C,aAAa;YACb,MAAM,CAAC,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC;QAC1C,aAAa;QACb,OAAO,MAAM,CAAC,aAAa,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,EAAY;QACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO;YACN,MAAM,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;SACD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,EAAY;QAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAEO,SAAS,CAAC,EAAS;QAC1B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,EAAE,CACD;gBACC,CAAC,EAAE,MAAM,CAAC,OAAO;gBACjB,MAAM,EAAE,MAAM,CAAC,WAAW;aAC1B,EACD;gBACC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;aAC7B,CACD,CAAC;QACH,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,6 @@
1
+ import Scroll from './public.js';
2
+ /**
3
+ * Create a scroll animation
4
+ */
5
+ export declare function scroll(): Scroll;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scroll/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC;;GAEG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B"}
@@ -0,0 +1,8 @@
1
+ import Scroll from './public.js';
2
+ /**
3
+ * Create a scroll animation
4
+ */
5
+ export function scroll() {
6
+ return new Scroll();
7
+ }
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scroll/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC;;GAEG;AACH,MAAM,UAAU,MAAM;IACrB,OAAO,IAAI,MAAM,EAAE,CAAC;AACrB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Timeline } from '../chnobli.js';
2
+ import { Position, ScrollTrigger } from './Scroll.js';
3
+ export default class Scroll {
4
+ private _inner;
5
+ constructor();
6
+ /**
7
+ * Add a trigger to the timeline
8
+ *
9
+ * Providing an offset at which point the trigger should end
10
+ */
11
+ add(trigger: ScrollTrigger, position?: Position): this;
12
+ /**
13
+ * Add a timeline to the scroll
14
+ */
15
+ addTimeline(timeline: Timeline): this;
16
+ }
17
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/scroll/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAuB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B,OAAO,CAAC,MAAM,CAAiB;;IAM/B;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;IAMtD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAKrC"}
@@ -0,0 +1,25 @@
1
+ // import Scroll from './Scroll.js';
2
+ import ScrollTimeline from './Scroll.js';
3
+ export default class Scroll {
4
+ _inner;
5
+ constructor() {
6
+ this._inner = new ScrollTimeline();
7
+ }
8
+ /**
9
+ * Add a trigger to the timeline
10
+ *
11
+ * Providing an offset at which point the trigger should end
12
+ */
13
+ add(trigger, position) {
14
+ this._inner.add(trigger, position);
15
+ return this;
16
+ }
17
+ /**
18
+ * Add a timeline to the scroll
19
+ */
20
+ addTimeline(timeline) {
21
+ this._inner.addTimeline(timeline);
22
+ return this;
23
+ }
24
+ }
25
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/scroll/public.ts"],"names":[],"mappings":"AACA,oCAAoC;AACpC,OAAO,cAA2C,MAAM,aAAa,CAAC;AAEtE,MAAM,CAAC,OAAO,OAAO,MAAM;IAClB,MAAM,CAAiB;IAE/B;QACC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,OAAsB,EAAE,QAAmB;QAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAkB;QAC7B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Staggering allows to have a different value for every target
3
+ * allowing to easely offset each target by a few pixels
4
+ */
5
+ export declare function callStagger<O>(value: O | Stagger<O>, i: number, length?: number): O;
6
+ export declare function staggerMap<O, NO>(value: O | Stagger<O>, fn: (val: O) => NO): NO | Stagger<NO>;
7
+ export type StaggerValue<O> = (i: number, length?: number) => O;
8
+ export default class Stagger<O> {
9
+ private fn;
10
+ /**
11
+ * @ignore
12
+ */
13
+ constructor(value: StaggerValue<O>);
14
+ call(i: number, length?: number): O;
15
+ /**
16
+ * @ignore
17
+ */
18
+ __isStagger__(): void;
19
+ }
20
+ //# sourceMappingURL=stagger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stagger.d.ts","sourceRoot":"","sources":["../../src/stagger/stagger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,wBAAgB,WAAW,CAAC,CAAC,EAC5B,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACrB,CAAC,EAAE,MAAM,EACT,MAAM,CAAC,EAAE,MAAM,GACb,CAAC,CAIH;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,EAAE,EAC/B,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACrB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAChB,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAQlB;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;AAEhE,MAAM,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAkB;IAE5B;;OAEG;gBACS,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAUlC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC;IAInC;;OAEG;IACH,aAAa;CACb"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Staggering allows to have a different value for every target
3
+ * allowing to easely offset each target by a few pixels
4
+ */
5
+ function isStagger(value) {
6
+ const v = value;
7
+ return (typeof v === 'object' &&
8
+ v !== null &&
9
+ typeof v.__isStagger__ === 'function');
10
+ }
11
+ export function callStagger(value, i, length) {
12
+ if (isStagger(value))
13
+ return value.call(i, length);
14
+ return value;
15
+ }
16
+ export function staggerMap(value, fn) {
17
+ if (isStagger(value)) {
18
+ return new Stagger((i, length) => fn(value.call(i, length)));
19
+ }
20
+ return fn(value);
21
+ }
22
+ export default class Stagger {
23
+ fn;
24
+ /**
25
+ * @ignore
26
+ */
27
+ constructor(value) {
28
+ if (typeof value === 'function') {
29
+ this.fn = value;
30
+ return;
31
+ }
32
+ // if (value === )
33
+ throw new Error('unknown stagger value ' + value);
34
+ }
35
+ call(i, length) {
36
+ return this.fn(i, length);
37
+ }
38
+ /**
39
+ * @ignore
40
+ */
41
+ __isStagger__() { }
42
+ }
43
+ //# sourceMappingURL=stagger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stagger.js","sourceRoot":"","sources":["../../src/stagger/stagger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,SAAS,SAAS,CAAI,KAAU;IAC/B,MAAM,CAAC,GAAG,KAAY,CAAC;IAEvB,OAAO,CACN,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACV,OAAO,CAAC,CAAC,aAAa,KAAK,UAAU,CACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAC1B,KAAqB,EACrB,CAAS,EACT,MAAe;IAEf,IAAI,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAEnD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CACzB,KAAqB,EACrB,EAAkB;IAElB,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAS,EAAE,MAAe,EAAE,EAAE,CACjD,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CACzB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AAClB,CAAC;AAID,MAAM,CAAC,OAAO,OAAO,OAAO;IACnB,EAAE,CAAkB;IAE5B;;OAEG;IACH,YAAY,KAAsB;QACjC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;YAChB,OAAO;QACR,CAAC;QAED,kBAAkB;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,CAAS,EAAE,MAAe;QAC9B,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,aAAa,KAAI,CAAC;CAClB"}
@@ -0,0 +1,33 @@
1
+ import Value from '../values/Value.js';
2
+ import StyleValue from '../values/StyleValue.js';
3
+ export default class BaseTarget<T> {
4
+ target: T;
5
+ constructor(target: T);
6
+ type(): string;
7
+ getValue(name: string): Value | null;
8
+ setValue(name: string, _value: Value): void;
9
+ removeValue(name: string): void;
10
+ getTransformValue(name: string): Value | null;
11
+ setTransformValue(name: string, value: Value): void;
12
+ removeTransformValue(name: string): void;
13
+ /**
14
+ * returns nothing or a style value
15
+ */
16
+ getStyleValue(name: string): StyleValue | null;
17
+ /**
18
+ * Expects a style value
19
+ */
20
+ setStyleValue(name: string, value: StyleValue): void;
21
+ removeStyleValue(name: string): void;
22
+ hasClass(name: string): boolean;
23
+ addClass(name: string): void;
24
+ removeClass(name: string): void;
25
+ /**
26
+ * Tries to unify both values so their units match
27
+ *
28
+ * a and b need to be a Value
29
+ */
30
+ unifyValues(name: string, a: Value, b: Value): [Value, Value];
31
+ apply(): void;
32
+ }
33
+ //# sourceMappingURL=BaseTarget.old.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTarget.old.d.ts","sourceRoot":"","sources":["../../src/target/BaseTarget.old.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,UAAU,MAAM,yBAAyB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC;gBAEE,MAAM,EAAE,CAAC;IAOrB,IAAI;IAIJ,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAIpC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;IAIpC,WAAW,CAAC,IAAI,EAAE,MAAM;IAIxB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAI7C,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAI5C,oBAAoB,CAAC,IAAI,EAAE,MAAM;IAIjC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAM9C;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;IAI7C,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAI7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,QAAQ,CAAC,IAAI,EAAE,MAAM;IAIrB,WAAW,CAAC,IAAI,EAAE,MAAM;IAIxB;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;IAW7D,KAAK;CACL"}
@@ -0,0 +1,73 @@
1
+ import StyleValue from '../values/StyleValue.js';
2
+ export default class BaseTarget {
3
+ target;
4
+ constructor(target) {
5
+ this.target = target;
6
+ // this might be an object, a dom node
7
+ // what about arrays?
8
+ }
9
+ type() {
10
+ return 'unknown';
11
+ }
12
+ getValue(name) {
13
+ throw new Error('cannot get value of ' + name);
14
+ }
15
+ setValue(name, _value) {
16
+ throw new Error('cannot set value of ' + name);
17
+ }
18
+ removeValue(name) {
19
+ throw new Error('cannot remove value of ' + name);
20
+ }
21
+ getTransformValue(name) {
22
+ return this.getValue(name);
23
+ }
24
+ setTransformValue(name, value) {
25
+ return this.setValue(name, value);
26
+ }
27
+ removeTransformValue(name) {
28
+ return this.removeValue(name);
29
+ }
30
+ /**
31
+ * returns nothing or a style value
32
+ */
33
+ getStyleValue(name) {
34
+ const val = this.getValue(name);
35
+ if (!val)
36
+ return val;
37
+ return new StyleValue([val]);
38
+ }
39
+ /**
40
+ * Expects a style value
41
+ */
42
+ setStyleValue(name, value) {
43
+ return this.setValue(name, value.intoValue());
44
+ }
45
+ removeStyleValue(name) {
46
+ return this.removeValue(name);
47
+ }
48
+ hasClass(name) {
49
+ throw new Error('cannot know if class exists ' + name);
50
+ }
51
+ addClass(name) {
52
+ throw new Error('cannot add class ' + name);
53
+ }
54
+ removeClass(name) {
55
+ throw new Error('cannot remove class ' + name);
56
+ }
57
+ /**
58
+ * Tries to unify both values so their units match
59
+ *
60
+ * a and b need to be a Value
61
+ */
62
+ unifyValues(name, a, b) {
63
+ if (!a.unit && b.unit)
64
+ a.unit = b.unit;
65
+ if (!b.unit && a.unit)
66
+ b.unit = a.unit;
67
+ if (a.unit !== b.unit)
68
+ throw new Error(`${name} cannot unify ${a.unit} and ${b.unit}`);
69
+ return [a, b];
70
+ }
71
+ apply() { }
72
+ }
73
+ //# sourceMappingURL=BaseTarget.old.js.map