animejs 4.1.3 → 4.2.0-beta.0

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 (191) hide show
  1. package/README.md +12 -8
  2. package/{lib → dist/bundles}/anime.esm.js +5237 -5049
  3. package/dist/bundles/anime.esm.min.js +7 -0
  4. package/dist/bundles/anime.umd.js +8621 -0
  5. package/dist/bundles/anime.umd.min.js +7 -0
  6. package/dist/modules/animatable/animatable.cjs +150 -0
  7. package/dist/modules/animatable/animatable.d.ts +28 -0
  8. package/dist/modules/animatable/animatable.js +147 -0
  9. package/dist/modules/animatable/index.cjs +15 -0
  10. package/dist/modules/animatable/index.d.ts +1 -0
  11. package/dist/modules/animatable/index.js +8 -0
  12. package/dist/modules/animation/additive.cjs +82 -0
  13. package/dist/modules/animation/additive.d.ts +15 -0
  14. package/dist/modules/animation/additive.js +79 -0
  15. package/dist/modules/animation/animation.cjs +660 -0
  16. package/dist/modules/animation/animation.d.ts +47 -0
  17. package/dist/modules/animation/animation.js +657 -0
  18. package/dist/modules/animation/composition.cjs +383 -0
  19. package/dist/modules/animation/composition.d.ts +10 -0
  20. package/dist/modules/animation/composition.js +377 -0
  21. package/dist/modules/animation/index.cjs +15 -0
  22. package/dist/modules/animation/index.d.ts +1 -0
  23. package/dist/modules/animation/index.js +8 -0
  24. package/dist/modules/core/clock.cjs +110 -0
  25. package/dist/modules/core/clock.d.ts +51 -0
  26. package/dist/modules/core/clock.js +108 -0
  27. package/dist/modules/core/colors.cjs +102 -0
  28. package/dist/modules/core/colors.d.ts +2 -0
  29. package/dist/modules/core/colors.js +100 -0
  30. package/dist/modules/core/consts.cjs +154 -0
  31. package/dist/modules/core/consts.d.ts +59 -0
  32. package/dist/modules/core/consts.js +121 -0
  33. package/dist/modules/core/globals.cjs +77 -0
  34. package/dist/modules/core/globals.d.ts +29 -0
  35. package/dist/modules/core/globals.js +72 -0
  36. package/dist/modules/core/helpers.cjs +304 -0
  37. package/dist/modules/core/helpers.d.ts +43 -0
  38. package/dist/modules/core/helpers.js +261 -0
  39. package/dist/modules/core/render.cjs +389 -0
  40. package/dist/modules/core/render.d.ts +4 -0
  41. package/dist/modules/core/render.js +386 -0
  42. package/dist/modules/core/styles.cjs +116 -0
  43. package/dist/modules/core/styles.d.ts +5 -0
  44. package/dist/modules/core/styles.js +113 -0
  45. package/dist/modules/core/targets.cjs +136 -0
  46. package/dist/modules/core/targets.d.ts +118 -0
  47. package/dist/modules/core/targets.js +132 -0
  48. package/dist/modules/core/transforms.cjs +49 -0
  49. package/dist/modules/core/transforms.d.ts +2 -0
  50. package/dist/modules/core/transforms.js +47 -0
  51. package/dist/modules/core/units.cjs +67 -0
  52. package/dist/modules/core/units.d.ts +3 -0
  53. package/dist/modules/core/units.js +65 -0
  54. package/dist/modules/core/values.cjs +215 -0
  55. package/dist/modules/core/values.d.ts +14 -0
  56. package/dist/modules/core/values.js +205 -0
  57. package/dist/modules/draggable/draggable.cjs +1226 -0
  58. package/dist/modules/draggable/draggable.d.ts +272 -0
  59. package/dist/modules/draggable/draggable.js +1223 -0
  60. package/dist/modules/draggable/index.cjs +15 -0
  61. package/dist/modules/draggable/index.d.ts +1 -0
  62. package/dist/modules/draggable/index.js +8 -0
  63. package/dist/modules/easings/cubic-bezier.cjs +64 -0
  64. package/dist/modules/easings/cubic-bezier.d.ts +2 -0
  65. package/dist/modules/easings/cubic-bezier.js +62 -0
  66. package/dist/modules/easings/eases.cjs +149 -0
  67. package/dist/modules/easings/eases.d.ts +111 -0
  68. package/dist/modules/easings/eases.js +146 -0
  69. package/dist/modules/easings/index.cjs +24 -0
  70. package/dist/modules/easings/index.d.ts +6 -0
  71. package/dist/modules/easings/index.js +13 -0
  72. package/dist/modules/easings/irregular.cjs +41 -0
  73. package/dist/modules/easings/irregular.d.ts +2 -0
  74. package/dist/modules/easings/irregular.js +39 -0
  75. package/dist/modules/easings/linear.cjs +59 -0
  76. package/dist/modules/easings/linear.d.ts +2 -0
  77. package/dist/modules/easings/linear.js +57 -0
  78. package/dist/modules/easings/none.cjs +19 -0
  79. package/dist/modules/easings/none.d.ts +8 -0
  80. package/dist/modules/easings/none.js +17 -0
  81. package/dist/modules/easings/parser.cjs +59 -0
  82. package/dist/modules/easings/parser.d.ts +21 -0
  83. package/dist/modules/easings/parser.js +55 -0
  84. package/dist/modules/easings/steps.cjs +30 -0
  85. package/dist/modules/easings/steps.d.ts +2 -0
  86. package/dist/modules/easings/steps.js +28 -0
  87. package/dist/modules/engine/engine.cjs +168 -0
  88. package/dist/modules/engine/engine.d.ts +21 -0
  89. package/dist/modules/engine/engine.js +166 -0
  90. package/dist/modules/engine/index.cjs +14 -0
  91. package/dist/modules/engine/index.d.ts +1 -0
  92. package/dist/modules/engine/index.js +8 -0
  93. package/dist/modules/events/index.cjs +16 -0
  94. package/dist/modules/events/index.d.ts +1 -0
  95. package/dist/modules/events/index.js +8 -0
  96. package/dist/modules/events/scroll.cjs +936 -0
  97. package/dist/modules/events/scroll.d.ts +189 -0
  98. package/dist/modules/events/scroll.js +932 -0
  99. package/dist/modules/index.cjs +103 -0
  100. package/dist/modules/index.d.ts +19 -0
  101. package/dist/modules/index.js +42 -0
  102. package/dist/modules/scope/index.cjs +15 -0
  103. package/dist/modules/scope/index.d.ts +1 -0
  104. package/dist/modules/scope/index.js +8 -0
  105. package/dist/modules/scope/scope.cjs +254 -0
  106. package/dist/modules/scope/scope.d.ts +115 -0
  107. package/dist/modules/scope/scope.js +251 -0
  108. package/dist/modules/spring/index.cjs +15 -0
  109. package/dist/modules/spring/index.d.ts +1 -0
  110. package/dist/modules/spring/index.js +8 -0
  111. package/dist/modules/spring/spring.cjs +133 -0
  112. package/dist/modules/spring/spring.d.ts +37 -0
  113. package/dist/modules/spring/spring.js +130 -0
  114. package/dist/modules/svg/drawable.cjs +119 -0
  115. package/dist/modules/svg/drawable.d.ts +3 -0
  116. package/dist/modules/svg/drawable.js +117 -0
  117. package/dist/modules/svg/helpers.cjs +30 -0
  118. package/dist/modules/svg/helpers.d.ts +2 -0
  119. package/dist/modules/svg/helpers.js +28 -0
  120. package/dist/modules/svg/index.cjs +18 -0
  121. package/dist/modules/svg/index.d.ts +3 -0
  122. package/dist/modules/svg/index.js +10 -0
  123. package/dist/modules/svg/morphto.cjs +58 -0
  124. package/dist/modules/svg/morphto.d.ts +3 -0
  125. package/dist/modules/svg/morphto.js +56 -0
  126. package/dist/modules/svg/motionpath.cjs +79 -0
  127. package/dist/modules/svg/motionpath.d.ts +7 -0
  128. package/dist/modules/svg/motionpath.js +77 -0
  129. package/dist/modules/text/index.cjs +16 -0
  130. package/dist/modules/text/index.d.ts +1 -0
  131. package/dist/modules/text/index.js +8 -0
  132. package/dist/modules/text/split.cjs +488 -0
  133. package/dist/modules/text/split.d.ts +62 -0
  134. package/dist/modules/text/split.js +484 -0
  135. package/dist/modules/timeline/index.cjs +15 -0
  136. package/dist/modules/timeline/index.d.ts +1 -0
  137. package/dist/modules/timeline/index.js +8 -0
  138. package/dist/modules/timeline/position.cjs +72 -0
  139. package/dist/modules/timeline/position.d.ts +3 -0
  140. package/dist/modules/timeline/position.js +70 -0
  141. package/dist/modules/timeline/timeline.cjs +312 -0
  142. package/dist/modules/timeline/timeline.d.ts +163 -0
  143. package/dist/modules/timeline/timeline.js +309 -0
  144. package/dist/modules/timer/index.cjs +15 -0
  145. package/dist/modules/timer/index.d.ts +1 -0
  146. package/dist/modules/timer/index.js +8 -0
  147. package/dist/modules/timer/timer.cjs +491 -0
  148. package/dist/modules/timer/timer.d.ts +141 -0
  149. package/dist/modules/timer/timer.js +488 -0
  150. package/dist/modules/types/index.d.ts +387 -0
  151. package/dist/modules/utils/chainable.cjs +190 -0
  152. package/dist/modules/utils/chainable.d.ts +135 -0
  153. package/dist/modules/utils/chainable.js +177 -0
  154. package/dist/modules/utils/index.cjs +43 -0
  155. package/dist/modules/utils/index.d.ts +5 -0
  156. package/dist/modules/utils/index.js +14 -0
  157. package/dist/modules/utils/number.cjs +97 -0
  158. package/dist/modules/utils/number.d.ts +9 -0
  159. package/dist/modules/utils/number.js +85 -0
  160. package/dist/modules/utils/random.cjs +77 -0
  161. package/dist/modules/utils/random.d.ts +22 -0
  162. package/dist/modules/utils/random.js +72 -0
  163. package/dist/modules/utils/stagger.cjs +122 -0
  164. package/dist/modules/utils/stagger.d.ts +30 -0
  165. package/dist/modules/utils/stagger.js +120 -0
  166. package/dist/modules/utils/target.cjs +130 -0
  167. package/dist/modules/utils/target.d.ts +126 -0
  168. package/dist/modules/utils/target.js +125 -0
  169. package/dist/modules/utils/time.cjs +57 -0
  170. package/dist/modules/utils/time.d.ts +5 -0
  171. package/dist/modules/utils/time.js +54 -0
  172. package/dist/modules/waapi/composition.cjs +89 -0
  173. package/dist/modules/waapi/composition.d.ts +4 -0
  174. package/dist/modules/waapi/composition.js +86 -0
  175. package/dist/modules/waapi/index.cjs +15 -0
  176. package/dist/modules/waapi/index.d.ts +1 -0
  177. package/dist/modules/waapi/index.js +8 -0
  178. package/dist/modules/waapi/waapi.cjs +473 -0
  179. package/dist/modules/waapi/waapi.d.ts +114 -0
  180. package/dist/modules/waapi/waapi.js +470 -0
  181. package/package.json +130 -33
  182. package/lib/anime.cjs +0 -9
  183. package/lib/anime.esm.min.js +0 -9
  184. package/lib/anime.iife.js +0 -9
  185. package/lib/anime.iife.min.js +0 -9
  186. package/lib/anime.min.cjs +0 -9
  187. package/lib/anime.umd.js +0 -9
  188. package/lib/anime.umd.min.js +0 -9
  189. package/lib/gui/index.js +0 -6341
  190. package/types/index.d.ts +0 -1126
  191. package/types/index.js +0 -7388
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Anime.js - CJS
3
+ * @version v4.2.0
4
+ * @license MIT
5
+ * @copyright 2025 - Julian Garnier
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ var timer = require('./timer/timer.cjs');
11
+ var animation = require('./animation/animation.cjs');
12
+ var timeline = require('./timeline/timeline.cjs');
13
+ var animatable = require('./animatable/animatable.cjs');
14
+ var draggable = require('./draggable/draggable.cjs');
15
+ var scope = require('./scope/scope.cjs');
16
+ var scroll = require('./events/scroll.cjs');
17
+ var spring = require('./spring/spring.cjs');
18
+ var engine = require('./engine/engine.cjs');
19
+ var index = require('./easings/index.cjs');
20
+ var index$1 = require('./utils/index.cjs');
21
+ var index$2 = require('./svg/index.cjs');
22
+ var index$3 = require('./text/index.cjs');
23
+ var waapi = require('./waapi/waapi.cjs');
24
+ var none = require('./easings/none.cjs');
25
+ var cubicBezier = require('./easings/cubic-bezier.cjs');
26
+ var steps = require('./easings/steps.cjs');
27
+ var linear = require('./easings/linear.cjs');
28
+ var irregular = require('./easings/irregular.cjs');
29
+ var eases = require('./easings/eases.cjs');
30
+ var chainable = require('./utils/chainable.cjs');
31
+ var random = require('./utils/random.cjs');
32
+ var time = require('./utils/time.cjs');
33
+ var styles = require('./core/styles.cjs');
34
+ var targets = require('./core/targets.cjs');
35
+ var target = require('./utils/target.cjs');
36
+ var stagger = require('./utils/stagger.cjs');
37
+ var motionpath = require('./svg/motionpath.cjs');
38
+ var drawable = require('./svg/drawable.cjs');
39
+ var morphto = require('./svg/morphto.cjs');
40
+ var split = require('./text/split.cjs');
41
+
42
+
43
+
44
+ exports.Timer = timer.Timer;
45
+ exports.createTimer = timer.createTimer;
46
+ exports.JSAnimation = animation.JSAnimation;
47
+ exports.animate = animation.animate;
48
+ exports.Timeline = timeline.Timeline;
49
+ exports.createTimeline = timeline.createTimeline;
50
+ exports.Animatable = animatable.Animatable;
51
+ exports.createAnimatable = animatable.createAnimatable;
52
+ exports.Draggable = draggable.Draggable;
53
+ exports.createDraggable = draggable.createDraggable;
54
+ exports.Scope = scope.Scope;
55
+ exports.createScope = scope.createScope;
56
+ exports.ScrollObserver = scroll.ScrollObserver;
57
+ exports.onScroll = scroll.onScroll;
58
+ exports.scrollContainers = scroll.scrollContainers;
59
+ exports.Spring = spring.Spring;
60
+ exports.createSpring = spring.createSpring;
61
+ exports.engine = engine.engine;
62
+ exports.easings = index;
63
+ exports.utils = index$1;
64
+ exports.svg = index$2;
65
+ exports.text = index$3;
66
+ exports.WAAPIAnimation = waapi.WAAPIAnimation;
67
+ exports.waapi = waapi.waapi;
68
+ exports.none = none.none;
69
+ exports.cubicBezier = cubicBezier.cubicBezier;
70
+ exports.steps = steps.steps;
71
+ exports.linear = linear.linear;
72
+ exports.irregular = irregular.irregular;
73
+ exports.eases = eases.eases;
74
+ exports.clamp = chainable.clamp;
75
+ exports.damp = chainable.damp;
76
+ exports.degToRad = chainable.degToRad;
77
+ exports.lerp = chainable.lerp;
78
+ exports.mapRange = chainable.mapRange;
79
+ exports.padEnd = chainable.padEnd;
80
+ exports.padStart = chainable.padStart;
81
+ exports.radToDeg = chainable.radToDeg;
82
+ exports.round = chainable.round;
83
+ exports.roundPad = chainable.roundPad;
84
+ exports.snap = chainable.snap;
85
+ exports.wrap = chainable.wrap;
86
+ exports.createSeededRandom = random.createSeededRandom;
87
+ exports.random = random.random;
88
+ exports.randomPick = random.randomPick;
89
+ exports.shuffle = random.shuffle;
90
+ exports.keepTime = time.keepTime;
91
+ exports.sync = time.sync;
92
+ exports.cleanInlineStyles = styles.cleanInlineStyles;
93
+ exports.$ = targets.registerTargets;
94
+ exports.get = target.get;
95
+ exports.remove = target.remove;
96
+ exports.set = target.set;
97
+ exports.stagger = stagger.stagger;
98
+ exports.createMotionPath = motionpath.createMotionPath;
99
+ exports.createDrawable = drawable.createDrawable;
100
+ exports.morphTo = morphto.morphTo;
101
+ exports.TextSplitter = split.TextSplitter;
102
+ exports.split = split.split;
103
+ exports.splitText = split.splitText;
@@ -0,0 +1,19 @@
1
+ export * from "./timer/index.js";
2
+ export * from "./animation/index.js";
3
+ export * from "./timeline/index.js";
4
+ export * from "./animatable/index.js";
5
+ export * from "./draggable/index.js";
6
+ export * from "./scope/index.js";
7
+ export * from "./events/index.js";
8
+ export * from "./spring/index.js";
9
+ export * from "./engine/index.js";
10
+ export * from "./easings/index.js";
11
+ export * from "./utils/index.js";
12
+ export * from "./svg/index.js";
13
+ export * from "./text/index.js";
14
+ export * from "./waapi/index.js";
15
+ export * from "./types/index.js";
16
+ export * as easings from "./easings/index.js";
17
+ export * as utils from "./utils/index.js";
18
+ export * as svg from "./svg/index.js";
19
+ export * as text from "./text/index.js";
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Anime.js - ESM
3
+ * @version v4.2.0
4
+ * @license MIT
5
+ * @copyright 2025 - Julian Garnier
6
+ */
7
+
8
+ export { Timer, createTimer } from './timer/timer.js';
9
+ export { JSAnimation, animate } from './animation/animation.js';
10
+ export { Timeline, createTimeline } from './timeline/timeline.js';
11
+ export { Animatable, createAnimatable } from './animatable/animatable.js';
12
+ export { Draggable, createDraggable } from './draggable/draggable.js';
13
+ export { Scope, createScope } from './scope/scope.js';
14
+ export { ScrollObserver, onScroll, scrollContainers } from './events/scroll.js';
15
+ export { Spring, createSpring } from './spring/spring.js';
16
+ export { engine } from './engine/engine.js';
17
+ import * as index from './easings/index.js';
18
+ export { index as easings };
19
+ import * as index$1 from './utils/index.js';
20
+ export { index$1 as utils };
21
+ import * as index$2 from './svg/index.js';
22
+ export { index$2 as svg };
23
+ import * as index$3 from './text/index.js';
24
+ export { index$3 as text };
25
+ export { WAAPIAnimation, waapi } from './waapi/waapi.js';
26
+ export { none } from './easings/none.js';
27
+ export { cubicBezier } from './easings/cubic-bezier.js';
28
+ export { steps } from './easings/steps.js';
29
+ export { linear } from './easings/linear.js';
30
+ export { irregular } from './easings/irregular.js';
31
+ export { eases } from './easings/eases.js';
32
+ export { clamp, damp, degToRad, lerp, mapRange, padEnd, padStart, radToDeg, round, roundPad, snap, wrap } from './utils/chainable.js';
33
+ export { createSeededRandom, random, randomPick, shuffle } from './utils/random.js';
34
+ export { keepTime, sync } from './utils/time.js';
35
+ export { cleanInlineStyles } from './core/styles.js';
36
+ export { registerTargets as $ } from './core/targets.js';
37
+ export { get, remove, set } from './utils/target.js';
38
+ export { stagger } from './utils/stagger.js';
39
+ export { createMotionPath } from './svg/motionpath.js';
40
+ export { createDrawable } from './svg/drawable.js';
41
+ export { morphTo } from './svg/morphto.js';
42
+ export { TextSplitter, split, splitText } from './text/split.js';
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Anime.js - scope - CJS
3
+ * @version v4.2.0
4
+ * @license MIT
5
+ * @copyright 2025 - Julian Garnier
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ var scope = require('./scope.cjs');
11
+
12
+
13
+
14
+ exports.Scope = scope.Scope;
15
+ exports.createScope = scope.createScope;
@@ -0,0 +1 @@
1
+ export * from "./scope.js";
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Anime.js - scope - ESM
3
+ * @version v4.2.0
4
+ * @license MIT
5
+ * @copyright 2025 - Julian Garnier
6
+ */
7
+
8
+ export { Scope, createScope } from './scope.js';
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Anime.js - scope - CJS
3
+ * @version v4.2.0
4
+ * @license MIT
5
+ * @copyright 2025 - Julian Garnier
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ var consts = require('../core/consts.cjs');
11
+ var globals = require('../core/globals.cjs');
12
+ var helpers = require('../core/helpers.cjs');
13
+ var targets = require('../core/targets.cjs');
14
+ var time = require('../utils/time.cjs');
15
+
16
+ /**
17
+ * @import {
18
+ * Tickable,
19
+ * ScopeParams,
20
+ * DOMTarget,
21
+ * ReactRef,
22
+ * AngularRef,
23
+ * DOMTargetSelector,
24
+ * DefaultsParams,
25
+ * ScopeConstructorCallback,
26
+ * ScopeCleanupCallback,
27
+ * Revertible,
28
+ * ScopeMethod,
29
+ * ScopedCallback,
30
+ * } from '../types/index.js'
31
+ */
32
+
33
+ class Scope {
34
+ /** @param {ScopeParams} [parameters] */
35
+ constructor(parameters = {}) {
36
+ if (globals.scope.current) globals.scope.current.register(this);
37
+ const rootParam = parameters.root;
38
+ /** @type {Document|DOMTarget} */
39
+ let root = consts.doc;
40
+ if (rootParam) {
41
+ root = /** @type {ReactRef} */(rootParam).current ||
42
+ /** @type {AngularRef} */(rootParam).nativeElement ||
43
+ targets.parseTargets(/** @type {DOMTargetSelector} */(rootParam))[0] ||
44
+ consts.doc;
45
+ }
46
+ const scopeDefaults = parameters.defaults;
47
+ const globalDefault = globals.globals.defaults;
48
+ const mediaQueries = parameters.mediaQueries;
49
+ /** @type {DefaultsParams} */
50
+ this.defaults = scopeDefaults ? helpers.mergeObjects(scopeDefaults, globalDefault) : globalDefault;
51
+ /** @type {Document|DOMTarget} */
52
+ this.root = root;
53
+ /** @type {Array<ScopeConstructorCallback>} */
54
+ this.constructors = [];
55
+ /** @type {Array<ScopeCleanupCallback>} */
56
+ this.revertConstructors = [];
57
+ /** @type {Array<Revertible>} */
58
+ this.revertibles = [];
59
+ /** @type {Array<ScopeConstructorCallback | ((scope: this) => Tickable)>} */
60
+ this.constructorsOnce = [];
61
+ /** @type {Array<ScopeCleanupCallback>} */
62
+ this.revertConstructorsOnce = [];
63
+ /** @type {Array<Revertible>} */
64
+ this.revertiblesOnce = [];
65
+ /** @type {Boolean} */
66
+ this.once = false;
67
+ /** @type {Number} */
68
+ this.onceIndex = 0;
69
+ /** @type {Record<String, ScopeMethod>} */
70
+ this.methods = {};
71
+ /** @type {Record<String, Boolean>} */
72
+ this.matches = {};
73
+ /** @type {Record<String, MediaQueryList>} */
74
+ this.mediaQueryLists = {};
75
+ /** @type {Record<String, any>} */
76
+ this.data = {};
77
+ if (mediaQueries) {
78
+ for (let mq in mediaQueries) {
79
+ const _mq = consts.win.matchMedia(mediaQueries[mq]);
80
+ this.mediaQueryLists[mq] = _mq;
81
+ _mq.addEventListener('change', this);
82
+ }
83
+ }
84
+ }
85
+
86
+ /**
87
+ * @param {Revertible} revertible
88
+ */
89
+ register(revertible) {
90
+ const store = this.once ? this.revertiblesOnce : this.revertibles;
91
+ store.push(revertible);
92
+ }
93
+
94
+ /**
95
+ * @template T
96
+ * @param {ScopedCallback<T>} cb
97
+ * @return {T}
98
+ */
99
+ execute(cb) {
100
+ let activeScope = globals.scope.current;
101
+ let activeRoot = globals.scope.root;
102
+ let activeDefaults = globals.globals.defaults;
103
+ globals.scope.current = this;
104
+ globals.scope.root = this.root;
105
+ globals.globals.defaults = this.defaults;
106
+ const mqs = this.mediaQueryLists;
107
+ for (let mq in mqs) this.matches[mq] = mqs[mq].matches;
108
+ const returned = cb(this);
109
+ globals.scope.current = activeScope;
110
+ globals.scope.root = activeRoot;
111
+ globals.globals.defaults = activeDefaults;
112
+ return returned;
113
+ }
114
+
115
+ /**
116
+ * @return {this}
117
+ */
118
+ refresh() {
119
+ this.onceIndex = 0;
120
+ this.execute(() => {
121
+ let i = this.revertibles.length;
122
+ let y = this.revertConstructors.length;
123
+ while (i--) this.revertibles[i].revert();
124
+ while (y--) this.revertConstructors[y](this);
125
+ this.revertibles.length = 0;
126
+ this.revertConstructors.length = 0;
127
+ this.constructors.forEach((/** @type {ScopeConstructorCallback} */constructor) => {
128
+ const revertConstructor = constructor(this);
129
+ if (helpers.isFnc(revertConstructor)) {
130
+ this.revertConstructors.push(revertConstructor);
131
+ }
132
+ });
133
+ });
134
+ return this;
135
+ }
136
+
137
+ /**
138
+ * @overload
139
+ * @param {String} a1
140
+ * @param {ScopeMethod} a2
141
+ * @return {this}
142
+ *
143
+ * @overload
144
+ * @param {ScopeConstructorCallback} a1
145
+ * @return {this}
146
+ *
147
+ * @param {String|ScopeConstructorCallback} a1
148
+ * @param {ScopeMethod} [a2]
149
+ */
150
+ add(a1, a2) {
151
+ this.once = false;
152
+ if (helpers.isFnc(a1)) {
153
+ const constructor = /** @type {ScopeConstructorCallback} */(a1);
154
+ this.constructors.push(constructor);
155
+ this.execute(() => {
156
+ const revertConstructor = constructor(this);
157
+ if (helpers.isFnc(revertConstructor)) {
158
+ this.revertConstructors.push(revertConstructor);
159
+ }
160
+ });
161
+ } else {
162
+ this.methods[/** @type {String} */(a1)] = (/** @type {any} */...args) => this.execute(() => a2(...args));
163
+ }
164
+ return this;
165
+ }
166
+
167
+ /**
168
+ * @param {ScopeConstructorCallback} scopeConstructorCallback
169
+ * @return {this}
170
+ */
171
+ addOnce(scopeConstructorCallback) {
172
+ this.once = true;
173
+ if (helpers.isFnc(scopeConstructorCallback)) {
174
+ const currentIndex = this.onceIndex++;
175
+ const tracked = this.constructorsOnce[currentIndex];
176
+ if (tracked) return this;
177
+ const constructor = /** @type {ScopeConstructorCallback} */(scopeConstructorCallback);
178
+ this.constructorsOnce[currentIndex] = constructor;
179
+ this.execute(() => {
180
+ const revertConstructor = constructor(this);
181
+ if (helpers.isFnc(revertConstructor)) {
182
+ this.revertConstructorsOnce.push(revertConstructor);
183
+ }
184
+ });
185
+ }
186
+ return this;
187
+ }
188
+
189
+ /**
190
+ * @param {(scope: this) => Tickable} cb
191
+ * @return {Tickable}
192
+ */
193
+ keepTime(cb) {
194
+ this.once = true;
195
+ const currentIndex = this.onceIndex++;
196
+ const tracked = /** @type {(scope: this) => Tickable} */(this.constructorsOnce[currentIndex]);
197
+ if (helpers.isFnc(tracked)) return tracked(this);
198
+ const constructor = /** @type {(scope: this) => Tickable} */(time.keepTime(cb));
199
+ this.constructorsOnce[currentIndex] = constructor;
200
+ let trackedTickable;
201
+ this.execute(() => {
202
+ trackedTickable = constructor(this);
203
+ });
204
+ return trackedTickable;
205
+ }
206
+
207
+ /**
208
+ * @param {Event} e
209
+ */
210
+ handleEvent(e) {
211
+ switch (e.type) {
212
+ case 'change':
213
+ this.refresh();
214
+ break;
215
+ }
216
+ }
217
+
218
+ revert() {
219
+ const revertibles = this.revertibles;
220
+ const revertConstructors = this.revertConstructors;
221
+ const revertiblesOnce = this.revertiblesOnce;
222
+ const revertConstructorsOnce = this.revertConstructorsOnce;
223
+ const mqs = this.mediaQueryLists;
224
+ let i = revertibles.length;
225
+ let j = revertConstructors.length;
226
+ let k = revertiblesOnce.length;
227
+ let l = revertConstructorsOnce.length;
228
+ while (i--) revertibles[i].revert();
229
+ while (j--) revertConstructors[j](this);
230
+ while (k--) revertiblesOnce[k].revert();
231
+ while (l--) revertConstructorsOnce[l](this);
232
+ for (let mq in mqs) mqs[mq].removeEventListener('change', this);
233
+ revertibles.length = 0;
234
+ revertConstructors.length = 0;
235
+ this.constructors.length = 0;
236
+ revertiblesOnce.length = 0;
237
+ revertConstructorsOnce.length = 0;
238
+ this.constructorsOnce.length = 0;
239
+ this.onceIndex = 0;
240
+ this.matches = {};
241
+ this.methods = {};
242
+ this.mediaQueryLists = {};
243
+ this.data = {};
244
+ }
245
+ }
246
+
247
+ /**
248
+ * @param {ScopeParams} [params]
249
+ * @return {Scope}
250
+ */
251
+ const createScope = params => new Scope(params);
252
+
253
+ exports.Scope = Scope;
254
+ exports.createScope = createScope;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @import {
3
+ * Tickable,
4
+ * ScopeParams,
5
+ * DOMTarget,
6
+ * ReactRef,
7
+ * AngularRef,
8
+ * DOMTargetSelector,
9
+ * DefaultsParams,
10
+ * ScopeConstructorCallback,
11
+ * ScopeCleanupCallback,
12
+ * Revertible,
13
+ * ScopeMethod,
14
+ * ScopedCallback,
15
+ * } from '../types/index.js'
16
+ */
17
+ export class Scope {
18
+ /** @param {ScopeParams} [parameters] */
19
+ constructor(parameters?: ScopeParams);
20
+ /** @type {DefaultsParams} */
21
+ defaults: DefaultsParams;
22
+ /** @type {Document|DOMTarget} */
23
+ root: Document | DOMTarget;
24
+ /** @type {Array<ScopeConstructorCallback>} */
25
+ constructors: Array<ScopeConstructorCallback>;
26
+ /** @type {Array<ScopeCleanupCallback>} */
27
+ revertConstructors: Array<ScopeCleanupCallback>;
28
+ /** @type {Array<Revertible>} */
29
+ revertibles: Array<Revertible>;
30
+ /** @type {Array<ScopeConstructorCallback | ((scope: this) => Tickable)>} */
31
+ constructorsOnce: Array<ScopeConstructorCallback | ((scope: this) => Tickable)>;
32
+ /** @type {Array<ScopeCleanupCallback>} */
33
+ revertConstructorsOnce: Array<ScopeCleanupCallback>;
34
+ /** @type {Array<Revertible>} */
35
+ revertiblesOnce: Array<Revertible>;
36
+ /** @type {Boolean} */
37
+ once: boolean;
38
+ /** @type {Number} */
39
+ onceIndex: number;
40
+ /** @type {Record<String, ScopeMethod>} */
41
+ methods: Record<string, ScopeMethod>;
42
+ /** @type {Record<String, Boolean>} */
43
+ matches: Record<string, boolean>;
44
+ /** @type {Record<String, MediaQueryList>} */
45
+ mediaQueryLists: Record<string, MediaQueryList>;
46
+ /** @type {Record<String, any>} */
47
+ data: Record<string, any>;
48
+ /**
49
+ * @param {Revertible} revertible
50
+ */
51
+ register(revertible: Revertible): void;
52
+ /**
53
+ * @template T
54
+ * @param {ScopedCallback<T>} cb
55
+ * @return {T}
56
+ */
57
+ execute<T>(cb: ScopedCallback<T>): T;
58
+ /**
59
+ * @return {this}
60
+ */
61
+ refresh(): this;
62
+ /**
63
+ * @overload
64
+ * @param {String} a1
65
+ * @param {ScopeMethod} a2
66
+ * @return {this}
67
+ *
68
+ * @overload
69
+ * @param {ScopeConstructorCallback} a1
70
+ * @return {this}
71
+ *
72
+ * @param {String|ScopeConstructorCallback} a1
73
+ * @param {ScopeMethod} [a2]
74
+ */
75
+ add(a1: string, a2: ScopeMethod): this;
76
+ /**
77
+ * @overload
78
+ * @param {String} a1
79
+ * @param {ScopeMethod} a2
80
+ * @return {this}
81
+ *
82
+ * @overload
83
+ * @param {ScopeConstructorCallback} a1
84
+ * @return {this}
85
+ *
86
+ * @param {String|ScopeConstructorCallback} a1
87
+ * @param {ScopeMethod} [a2]
88
+ */
89
+ add(a1: ScopeConstructorCallback): this;
90
+ /**
91
+ * @param {ScopeConstructorCallback} scopeConstructorCallback
92
+ * @return {this}
93
+ */
94
+ addOnce(scopeConstructorCallback: ScopeConstructorCallback): this;
95
+ /**
96
+ * @param {(scope: this) => Tickable} cb
97
+ * @return {Tickable}
98
+ */
99
+ keepTime(cb: (scope: this) => Tickable): Tickable;
100
+ /**
101
+ * @param {Event} e
102
+ */
103
+ handleEvent(e: Event): void;
104
+ revert(): void;
105
+ }
106
+ export function createScope(params?: ScopeParams): Scope;
107
+ import type { DefaultsParams } from '../types/index.js';
108
+ import type { DOMTarget } from '../types/index.js';
109
+ import type { ScopeConstructorCallback } from '../types/index.js';
110
+ import type { ScopeCleanupCallback } from '../types/index.js';
111
+ import type { Revertible } from '../types/index.js';
112
+ import type { Tickable } from '../types/index.js';
113
+ import type { ScopeMethod } from '../types/index.js';
114
+ import type { ScopedCallback } from '../types/index.js';
115
+ import type { ScopeParams } from '../types/index.js';