animejs 4.3.6 → 4.4.1
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.
- package/README.md +6 -9
- package/dist/bundles/anime.esm.js +973 -391
- package/dist/bundles/anime.esm.min.js +2 -2
- package/dist/bundles/anime.umd.js +977 -390
- package/dist/bundles/anime.umd.min.js +2 -2
- package/dist/modules/animatable/animatable.cjs +1 -1
- package/dist/modules/animatable/animatable.js +2 -2
- package/dist/modules/animatable/index.cjs +1 -1
- package/dist/modules/animatable/index.js +1 -1
- package/dist/modules/animation/additive.cjs +1 -1
- package/dist/modules/animation/additive.js +1 -1
- package/dist/modules/animation/animation.cjs +38 -16
- package/dist/modules/animation/animation.d.ts +2 -2
- package/dist/modules/animation/animation.js +42 -20
- package/dist/modules/animation/composition.cjs +1 -1
- package/dist/modules/animation/composition.js +3 -3
- package/dist/modules/animation/index.cjs +1 -1
- package/dist/modules/animation/index.js +1 -1
- package/dist/modules/core/clock.cjs +1 -1
- package/dist/modules/core/clock.js +1 -1
- package/dist/modules/core/colors.cjs +1 -1
- package/dist/modules/core/colors.js +1 -1
- package/dist/modules/core/consts.cjs +3 -9
- package/dist/modules/core/consts.d.ts +1 -5
- package/dist/modules/core/consts.js +4 -8
- package/dist/modules/core/globals.cjs +16 -5
- package/dist/modules/core/globals.d.ts +22 -1
- package/dist/modules/core/globals.js +18 -6
- package/dist/modules/core/helpers.cjs +7 -10
- package/dist/modules/core/helpers.js +8 -11
- package/dist/modules/core/render.cjs +7 -34
- package/dist/modules/core/render.js +8 -35
- package/dist/modules/core/styles.cjs +53 -32
- package/dist/modules/core/styles.d.ts +1 -0
- package/dist/modules/core/styles.js +55 -35
- package/dist/modules/core/targets.cjs +1 -1
- package/dist/modules/core/targets.js +1 -1
- package/dist/modules/core/transforms.cjs +129 -13
- package/dist/modules/core/transforms.d.ts +1 -0
- package/dist/modules/core/transforms.js +130 -15
- package/dist/modules/core/units.cjs +1 -1
- package/dist/modules/core/units.js +1 -1
- package/dist/modules/core/values.cjs +68 -8
- package/dist/modules/core/values.d.ts +5 -2
- package/dist/modules/core/values.js +69 -11
- package/dist/modules/draggable/draggable.cjs +1 -1
- package/dist/modules/draggable/draggable.js +1 -1
- package/dist/modules/draggable/index.cjs +1 -1
- package/dist/modules/draggable/index.js +1 -1
- package/dist/modules/easings/cubic-bezier/index.cjs +1 -1
- package/dist/modules/easings/cubic-bezier/index.js +1 -1
- package/dist/modules/easings/eases/index.cjs +1 -1
- package/dist/modules/easings/eases/index.js +1 -1
- package/dist/modules/easings/eases/parser.cjs +1 -1
- package/dist/modules/easings/eases/parser.js +1 -1
- package/dist/modules/easings/index.cjs +1 -1
- package/dist/modules/easings/index.js +1 -1
- package/dist/modules/easings/irregular/index.cjs +1 -1
- package/dist/modules/easings/irregular/index.js +1 -1
- package/dist/modules/easings/linear/index.cjs +1 -1
- package/dist/modules/easings/linear/index.js +1 -1
- package/dist/modules/easings/none.cjs +1 -1
- package/dist/modules/easings/none.js +1 -1
- package/dist/modules/easings/spring/index.cjs +1 -1
- package/dist/modules/easings/spring/index.js +1 -1
- package/dist/modules/easings/steps/index.cjs +1 -1
- package/dist/modules/easings/steps/index.js +1 -1
- package/dist/modules/engine/engine.cjs +1 -1
- package/dist/modules/engine/engine.js +1 -1
- package/dist/modules/engine/index.cjs +1 -1
- package/dist/modules/engine/index.js +1 -1
- package/dist/modules/events/index.cjs +1 -1
- package/dist/modules/events/index.js +1 -1
- package/dist/modules/events/scroll.cjs +1 -1
- package/dist/modules/events/scroll.js +1 -1
- package/dist/modules/index.cjs +9 -1
- package/dist/modules/index.d.ts +1 -0
- package/dist/modules/index.js +4 -1
- package/dist/modules/layout/index.cjs +1 -1
- package/dist/modules/layout/index.js +1 -1
- package/dist/modules/layout/layout.cjs +29 -25
- package/dist/modules/layout/layout.d.ts +4 -3
- package/dist/modules/layout/layout.js +30 -26
- package/dist/modules/scope/index.cjs +1 -1
- package/dist/modules/scope/index.js +1 -1
- package/dist/modules/scope/scope.cjs +1 -1
- package/dist/modules/scope/scope.js +1 -1
- package/dist/modules/svg/drawable.cjs +1 -1
- package/dist/modules/svg/drawable.js +1 -1
- package/dist/modules/svg/helpers.cjs +1 -1
- package/dist/modules/svg/helpers.js +1 -1
- package/dist/modules/svg/index.cjs +1 -1
- package/dist/modules/svg/index.js +1 -1
- package/dist/modules/svg/morphto.cjs +3 -6
- package/dist/modules/svg/morphto.js +3 -6
- package/dist/modules/svg/motionpath.cjs +1 -1
- package/dist/modules/svg/motionpath.js +1 -1
- package/dist/modules/text/index.cjs +3 -1
- package/dist/modules/text/index.d.ts +1 -0
- package/dist/modules/text/index.js +2 -1
- package/dist/modules/text/scramble.cjs +272 -0
- package/dist/modules/text/scramble.d.ts +3 -0
- package/dist/modules/text/scramble.js +270 -0
- package/dist/modules/text/split.cjs +5 -5
- package/dist/modules/text/split.d.ts +5 -5
- package/dist/modules/text/split.js +5 -5
- package/dist/modules/timeline/index.cjs +1 -1
- package/dist/modules/timeline/index.js +1 -1
- package/dist/modules/timeline/position.cjs +1 -1
- package/dist/modules/timeline/position.js +1 -1
- package/dist/modules/timeline/timeline.cjs +36 -18
- package/dist/modules/timeline/timeline.d.ts +6 -5
- package/dist/modules/timeline/timeline.js +37 -19
- package/dist/modules/timer/index.cjs +1 -1
- package/dist/modules/timer/index.js +1 -1
- package/dist/modules/timer/timer.cjs +8 -12
- package/dist/modules/timer/timer.d.ts +2 -0
- package/dist/modules/timer/timer.js +9 -13
- package/dist/modules/types/index.d.ts +76 -8
- package/dist/modules/utils/chainable.cjs +8 -5
- package/dist/modules/utils/chainable.js +8 -5
- package/dist/modules/utils/index.cjs +5 -1
- package/dist/modules/utils/index.d.ts +1 -0
- package/dist/modules/utils/index.js +2 -1
- package/dist/modules/utils/number.cjs +1 -1
- package/dist/modules/utils/number.js +1 -1
- package/dist/modules/utils/random.cjs +1 -1
- package/dist/modules/utils/random.js +1 -1
- package/dist/modules/utils/stagger.cjs +117 -20
- package/dist/modules/utils/stagger.js +118 -21
- package/dist/modules/utils/target.cjs +1 -1
- package/dist/modules/utils/target.js +1 -1
- package/dist/modules/utils/time.cjs +5 -3
- package/dist/modules/utils/time.d.ts +1 -1
- package/dist/modules/utils/time.js +5 -3
- package/dist/modules/waapi/composition.cjs +1 -1
- package/dist/modules/waapi/composition.js +1 -1
- package/dist/modules/waapi/index.cjs +1 -1
- package/dist/modules/waapi/index.js +1 -1
- package/dist/modules/waapi/waapi.cjs +19 -20
- package/dist/modules/waapi/waapi.js +20 -21
- package/package.json +2 -1
|
@@ -8,6 +8,17 @@
|
|
|
8
8
|
* Scope,
|
|
9
9
|
* } from '../scope/index.js'
|
|
10
10
|
*/
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {Object} EditorGlobals
|
|
13
|
+
* @property {boolean} showPanel
|
|
14
|
+
* @property {boolean} synced
|
|
15
|
+
* @property {Function} addAnimation
|
|
16
|
+
* @property {Function} addTimeline
|
|
17
|
+
* @property {Function} addTimelineChild
|
|
18
|
+
* @property {Function} resolveStagger
|
|
19
|
+
* @property {Object|null} _head
|
|
20
|
+
* @property {Object|null} _tail
|
|
21
|
+
*/
|
|
11
22
|
/** @type {DefaultsParams} */
|
|
12
23
|
export const defaults: DefaultsParams;
|
|
13
24
|
export namespace scope {
|
|
@@ -19,12 +30,22 @@ export namespace globals {
|
|
|
19
30
|
export let precision: number;
|
|
20
31
|
export let timeScale: number;
|
|
21
32
|
export let tickThreshold: number;
|
|
33
|
+
export let editor: EditorGlobals | null;
|
|
22
34
|
}
|
|
23
|
-
export const devTools: any;
|
|
24
35
|
export namespace globalVersions {
|
|
25
36
|
let version: string;
|
|
26
37
|
let engine: any;
|
|
27
38
|
}
|
|
39
|
+
export type EditorGlobals = {
|
|
40
|
+
showPanel: boolean;
|
|
41
|
+
synced: boolean;
|
|
42
|
+
addAnimation: Function;
|
|
43
|
+
addTimeline: Function;
|
|
44
|
+
addTimelineChild: Function;
|
|
45
|
+
resolveStagger: Function;
|
|
46
|
+
_head: any | null;
|
|
47
|
+
_tail: any | null;
|
|
48
|
+
};
|
|
28
49
|
import type { DefaultsParams } from '../types/index.js';
|
|
29
50
|
import type { Scope } from '../scope/index.js';
|
|
30
51
|
import { doc } from './consts.js';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - core - ESM
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.1
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { isBrowser, win, noop,
|
|
8
|
+
import { isBrowser, win, noop, compositionTypes, K, maxFps, doc } from './consts.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* @import {
|
|
@@ -18,6 +18,18 @@ import { isBrowser, win, noop, maxFps, K, compositionTypes, doc } from './consts
|
|
|
18
18
|
* } from '../scope/index.js'
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* @typedef {Object} EditorGlobals
|
|
23
|
+
* @property {boolean} showPanel
|
|
24
|
+
* @property {boolean} synced
|
|
25
|
+
* @property {Function} addAnimation
|
|
26
|
+
* @property {Function} addTimeline
|
|
27
|
+
* @property {Function} addTimelineChild
|
|
28
|
+
* @property {Function} resolveStagger
|
|
29
|
+
* @property {Object|null} _head
|
|
30
|
+
* @property {Object|null} _tail
|
|
31
|
+
*/
|
|
32
|
+
|
|
21
33
|
/** @type {DefaultsParams} */
|
|
22
34
|
const defaults = {
|
|
23
35
|
id: null,
|
|
@@ -61,15 +73,15 @@ const globals = {
|
|
|
61
73
|
timeScale: 1,
|
|
62
74
|
/** @type {Number} */
|
|
63
75
|
tickThreshold: 200,
|
|
76
|
+
/** @type {EditorGlobals|null} */
|
|
77
|
+
editor: null,
|
|
64
78
|
};
|
|
65
79
|
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
const globalVersions = { version: '4.3.6', engine: null };
|
|
80
|
+
const globalVersions = { version: '4.4.1', engine: null };
|
|
69
81
|
|
|
70
82
|
if (isBrowser) {
|
|
71
83
|
if (!win.AnimeJS) win.AnimeJS = [];
|
|
72
84
|
win.AnimeJS.push(globalVersions);
|
|
73
85
|
}
|
|
74
86
|
|
|
75
|
-
export { defaults,
|
|
87
|
+
export { defaults, globalVersions, globals, scope };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - core - CJS
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.1
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
@@ -124,8 +124,6 @@ const _round = Math.round;
|
|
|
124
124
|
*/
|
|
125
125
|
const clamp = (v, min, max) => v < min ? min : v > max ? max : v;
|
|
126
126
|
|
|
127
|
-
const powCache = {};
|
|
128
|
-
|
|
129
127
|
/**
|
|
130
128
|
* Rounds a number to specified decimal places
|
|
131
129
|
*
|
|
@@ -133,13 +131,12 @@ const powCache = {};
|
|
|
133
131
|
* @param {Number} decimalLength - Number of decimal places
|
|
134
132
|
* @return {Number}
|
|
135
133
|
*/
|
|
136
|
-
const round = (v, decimalLength) => {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
};
|
|
134
|
+
const round = (v, decimalLength) => {
|
|
135
|
+
if (decimalLength < 0) return v;
|
|
136
|
+
if (!decimalLength) return _round(v);
|
|
137
|
+
const p = 10 ** decimalLength;
|
|
138
|
+
return _round(v * p) / p;
|
|
139
|
+
};
|
|
143
140
|
|
|
144
141
|
/**
|
|
145
142
|
* Snaps a value to nearest increment or array value
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - core - ESM
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.1
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { isBrowser, maxValue, minValue,
|
|
8
|
+
import { isBrowser, maxValue, minValue, lowerCaseRgx, hexTestRgx, validRgbHslRgx } from './consts.js';
|
|
9
9
|
import { globals } from './globals.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -122,8 +122,6 @@ const _round = Math.round;
|
|
|
122
122
|
*/
|
|
123
123
|
const clamp = (v, min, max) => v < min ? min : v > max ? max : v;
|
|
124
124
|
|
|
125
|
-
const powCache = {};
|
|
126
|
-
|
|
127
125
|
/**
|
|
128
126
|
* Rounds a number to specified decimal places
|
|
129
127
|
*
|
|
@@ -131,13 +129,12 @@ const powCache = {};
|
|
|
131
129
|
* @param {Number} decimalLength - Number of decimal places
|
|
132
130
|
* @return {Number}
|
|
133
131
|
*/
|
|
134
|
-
const round = (v, decimalLength) => {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
};
|
|
132
|
+
const round = (v, decimalLength) => {
|
|
133
|
+
if (decimalLength < 0) return v;
|
|
134
|
+
if (!decimalLength) return _round(v);
|
|
135
|
+
const p = 10 ** decimalLength;
|
|
136
|
+
return _round(v * p) / p;
|
|
137
|
+
};
|
|
141
138
|
|
|
142
139
|
/**
|
|
143
140
|
* Snaps a value to nearest increment or array value
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - core - CJS
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.1
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
var globals = require('./globals.cjs');
|
|
11
11
|
var consts = require('./consts.cjs');
|
|
12
12
|
var helpers = require('./helpers.cjs');
|
|
13
|
+
var transforms = require('./transforms.cjs');
|
|
14
|
+
var values = require('./values.cjs');
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
|
-
*
|
|
17
|
+
* @import {
|
|
16
18
|
* Tickable,
|
|
17
19
|
* Renderable,
|
|
18
20
|
* CallbackArgument,
|
|
@@ -55,7 +57,6 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
|
|
|
55
57
|
const _hasChildren = tickable._hasChildren;
|
|
56
58
|
const tickableDelay = tickable._delay;
|
|
57
59
|
const tickablePrevAbsoluteTime = tickable._currentTime; // TODO: rename ._currentTime to ._absoluteCurrentTime
|
|
58
|
-
|
|
59
60
|
const tickableEndTime = tickableDelay + iterationDuration;
|
|
60
61
|
const tickableAbsoluteTime = time - tickableDelay;
|
|
61
62
|
const tickablePrevTime = helpers.clamp(tickablePrevAbsoluteTime, -tickableDelay, duration);
|
|
@@ -187,30 +188,9 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
|
|
|
187
188
|
number = /** @type {Number} */(tweenModifier(helpers.round(helpers.lerp(tween._fromNumber, tween._toNumber, tweenProgress), tweenPrecision)));
|
|
188
189
|
value = `${number}${tween._unit}`;
|
|
189
190
|
} else if (tweenValueType === consts.valueTypes.COLOR) {
|
|
190
|
-
|
|
191
|
-
const tn = tween._toNumbers;
|
|
192
|
-
const r = helpers.round(helpers.clamp(/** @type {Number} */(tweenModifier(helpers.lerp(fn[0], tn[0], tweenProgress))), 0, 255), 0);
|
|
193
|
-
const g = helpers.round(helpers.clamp(/** @type {Number} */(tweenModifier(helpers.lerp(fn[1], tn[1], tweenProgress))), 0, 255), 0);
|
|
194
|
-
const b = helpers.round(helpers.clamp(/** @type {Number} */(tweenModifier(helpers.lerp(fn[2], tn[2], tweenProgress))), 0, 255), 0);
|
|
195
|
-
const a = helpers.clamp(/** @type {Number} */(tweenModifier(helpers.round(helpers.lerp(fn[3], tn[3], tweenProgress), tweenPrecision))), 0, 1);
|
|
196
|
-
value = `rgba(${r},${g},${b},${a})`;
|
|
197
|
-
if (tweenHasComposition) {
|
|
198
|
-
const ns = tween._numbers;
|
|
199
|
-
ns[0] = r;
|
|
200
|
-
ns[1] = g;
|
|
201
|
-
ns[2] = b;
|
|
202
|
-
ns[3] = a;
|
|
203
|
-
}
|
|
191
|
+
value = values.composeColorValue(tween, tweenProgress, tweenPrecision);
|
|
204
192
|
} else if (tweenValueType === consts.valueTypes.COMPLEX) {
|
|
205
|
-
value = tween
|
|
206
|
-
for (let j = 0, l = tween._toNumbers.length; j < l; j++) {
|
|
207
|
-
const n = /** @type {Number} */(tweenModifier(helpers.round(helpers.lerp(tween._fromNumbers[j], tween._toNumbers[j], tweenProgress), tweenPrecision)));
|
|
208
|
-
const s = tween._strings[j + 1];
|
|
209
|
-
value += `${s ? n + s : n}`;
|
|
210
|
-
if (tweenHasComposition) {
|
|
211
|
-
tween._numbers[j] = n;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
193
|
+
value = values.composeComplexValue(tween, tweenProgress, tweenPrecision);
|
|
214
194
|
}
|
|
215
195
|
|
|
216
196
|
// For additive tweens and Animatables
|
|
@@ -253,14 +233,8 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
|
|
|
253
233
|
|
|
254
234
|
}
|
|
255
235
|
|
|
256
|
-
// NOTE: Possible improvement: Use translate(x,y) / translate3d(x,y,z) syntax
|
|
257
|
-
// to reduce memory usage on string composition
|
|
258
236
|
if (tweenTransformsNeedUpdate && tween._renderTransforms) {
|
|
259
|
-
|
|
260
|
-
for (let key in tweenTargetTransformsProperties) {
|
|
261
|
-
str += `${consts.transformsFragmentStrings[key]}${tweenTargetTransformsProperties[key]}) `;
|
|
262
|
-
}
|
|
263
|
-
tweenStyle.transform = str;
|
|
237
|
+
tweenStyle.transform = transforms.buildTransformString(tweenTargetTransformsProperties);
|
|
264
238
|
tweenTransformsNeedUpdate = 0;
|
|
265
239
|
}
|
|
266
240
|
|
|
@@ -371,7 +345,6 @@ const tick = (tickable, time, muteCallbacks, internalRender, tickMode) => {
|
|
|
371
345
|
|
|
372
346
|
// Renders on timeline are triggered by its children so it needs to be set after rendering the children
|
|
373
347
|
if (!muteCallbacks && tlChildrenHasRendered) tl.onRender(/** @type {CallbackArgument} */(tl));
|
|
374
|
-
|
|
375
348
|
// Triggers the timeline onComplete() once all chindren all completed and the current time has reached the end
|
|
376
349
|
if ((tlChildrenHaveCompleted || tlIsRunningBackwards) && tl._currentTime >= tl.duration) {
|
|
377
350
|
// Make sure the paused flag is false in case it has been skipped in the render function
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - core - ESM
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.1
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { globals } from './globals.js';
|
|
9
|
-
import { minValue, tickModes, valueTypes, compositionTypes, tweenTypes, transformsSymbol
|
|
9
|
+
import { minValue, tickModes, valueTypes, compositionTypes, tweenTypes, transformsSymbol } from './consts.js';
|
|
10
10
|
import { forEachChildren, round, now, clamp, lerp } from './helpers.js';
|
|
11
|
+
import { buildTransformString } from './transforms.js';
|
|
12
|
+
import { composeColorValue, composeComplexValue } from './values.js';
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
|
-
*
|
|
15
|
+
* @import {
|
|
14
16
|
* Tickable,
|
|
15
17
|
* Renderable,
|
|
16
18
|
* CallbackArgument,
|
|
@@ -53,7 +55,6 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
|
|
|
53
55
|
const _hasChildren = tickable._hasChildren;
|
|
54
56
|
const tickableDelay = tickable._delay;
|
|
55
57
|
const tickablePrevAbsoluteTime = tickable._currentTime; // TODO: rename ._currentTime to ._absoluteCurrentTime
|
|
56
|
-
|
|
57
58
|
const tickableEndTime = tickableDelay + iterationDuration;
|
|
58
59
|
const tickableAbsoluteTime = time - tickableDelay;
|
|
59
60
|
const tickablePrevTime = clamp(tickablePrevAbsoluteTime, -tickableDelay, duration);
|
|
@@ -185,30 +186,9 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
|
|
|
185
186
|
number = /** @type {Number} */(tweenModifier(round(lerp(tween._fromNumber, tween._toNumber, tweenProgress), tweenPrecision)));
|
|
186
187
|
value = `${number}${tween._unit}`;
|
|
187
188
|
} else if (tweenValueType === valueTypes.COLOR) {
|
|
188
|
-
|
|
189
|
-
const tn = tween._toNumbers;
|
|
190
|
-
const r = round(clamp(/** @type {Number} */(tweenModifier(lerp(fn[0], tn[0], tweenProgress))), 0, 255), 0);
|
|
191
|
-
const g = round(clamp(/** @type {Number} */(tweenModifier(lerp(fn[1], tn[1], tweenProgress))), 0, 255), 0);
|
|
192
|
-
const b = round(clamp(/** @type {Number} */(tweenModifier(lerp(fn[2], tn[2], tweenProgress))), 0, 255), 0);
|
|
193
|
-
const a = clamp(/** @type {Number} */(tweenModifier(round(lerp(fn[3], tn[3], tweenProgress), tweenPrecision))), 0, 1);
|
|
194
|
-
value = `rgba(${r},${g},${b},${a})`;
|
|
195
|
-
if (tweenHasComposition) {
|
|
196
|
-
const ns = tween._numbers;
|
|
197
|
-
ns[0] = r;
|
|
198
|
-
ns[1] = g;
|
|
199
|
-
ns[2] = b;
|
|
200
|
-
ns[3] = a;
|
|
201
|
-
}
|
|
189
|
+
value = composeColorValue(tween, tweenProgress, tweenPrecision);
|
|
202
190
|
} else if (tweenValueType === valueTypes.COMPLEX) {
|
|
203
|
-
value = tween
|
|
204
|
-
for (let j = 0, l = tween._toNumbers.length; j < l; j++) {
|
|
205
|
-
const n = /** @type {Number} */(tweenModifier(round(lerp(tween._fromNumbers[j], tween._toNumbers[j], tweenProgress), tweenPrecision)));
|
|
206
|
-
const s = tween._strings[j + 1];
|
|
207
|
-
value += `${s ? n + s : n}`;
|
|
208
|
-
if (tweenHasComposition) {
|
|
209
|
-
tween._numbers[j] = n;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
191
|
+
value = composeComplexValue(tween, tweenProgress, tweenPrecision);
|
|
212
192
|
}
|
|
213
193
|
|
|
214
194
|
// For additive tweens and Animatables
|
|
@@ -251,14 +231,8 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
|
|
|
251
231
|
|
|
252
232
|
}
|
|
253
233
|
|
|
254
|
-
// NOTE: Possible improvement: Use translate(x,y) / translate3d(x,y,z) syntax
|
|
255
|
-
// to reduce memory usage on string composition
|
|
256
234
|
if (tweenTransformsNeedUpdate && tween._renderTransforms) {
|
|
257
|
-
|
|
258
|
-
for (let key in tweenTargetTransformsProperties) {
|
|
259
|
-
str += `${transformsFragmentStrings[key]}${tweenTargetTransformsProperties[key]}) `;
|
|
260
|
-
}
|
|
261
|
-
tweenStyle.transform = str;
|
|
235
|
+
tweenStyle.transform = buildTransformString(tweenTargetTransformsProperties);
|
|
262
236
|
tweenTransformsNeedUpdate = 0;
|
|
263
237
|
}
|
|
264
238
|
|
|
@@ -369,7 +343,6 @@ const tick = (tickable, time, muteCallbacks, internalRender, tickMode) => {
|
|
|
369
343
|
|
|
370
344
|
// Renders on timeline are triggered by its children so it needs to be set after rendering the children
|
|
371
345
|
if (!muteCallbacks && tlChildrenHasRendered) tl.onRender(/** @type {CallbackArgument} */(tl));
|
|
372
|
-
|
|
373
346
|
// Triggers the timeline onComplete() once all chindren all completed and the current time has reached the end
|
|
374
347
|
if ((tlChildrenHaveCompleted || tlIsRunningBackwards) && tl._currentTime >= tl.duration) {
|
|
375
348
|
// Make sure the paused flag is false in case it has been skipped in the render function
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - core - CJS
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.1
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
var consts = require('./consts.cjs');
|
|
11
11
|
var helpers = require('./helpers.cjs');
|
|
12
|
+
var transforms = require('./transforms.cjs');
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* @import {
|
|
@@ -59,58 +60,78 @@ const sanitizePropertyName = (propertyName, target, tweenType) => {
|
|
|
59
60
|
/**
|
|
60
61
|
* @template {Renderable} T
|
|
61
62
|
* @param {T} renderable
|
|
63
|
+
* @param {Boolean} [inlineStylesOnly]
|
|
62
64
|
* @return {T}
|
|
63
65
|
*/
|
|
64
|
-
const
|
|
65
|
-
// Allow
|
|
66
|
+
const revertValues = (renderable, inlineStylesOnly = false) => {
|
|
67
|
+
// Allow revertValues() to be called on timelines
|
|
66
68
|
if (renderable._hasChildren) {
|
|
67
|
-
helpers.forEachChildren(renderable,
|
|
69
|
+
helpers.forEachChildren(renderable, (/** @type {Renderable} */child) => revertValues(child, inlineStylesOnly), true);
|
|
68
70
|
} else {
|
|
69
71
|
const animation = /** @type {JSAnimation} */(renderable);
|
|
70
72
|
animation.pause();
|
|
71
73
|
helpers.forEachChildren(animation, (/** @type {Tween} */tween) => {
|
|
72
74
|
const tweenProperty = tween.property;
|
|
73
75
|
const tweenTarget = tween.target;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (!Object.keys(cachedTransforms).length) {
|
|
87
|
-
targetStyle.removeProperty('transform');
|
|
76
|
+
const tweenType = tween._tweenType;
|
|
77
|
+
const originalInlinedValue = tween._inlineValue;
|
|
78
|
+
const tweenHadNoInlineValue = helpers.isNil(originalInlinedValue) || originalInlinedValue === consts.emptyString;
|
|
79
|
+
if (tweenType === consts.tweenTypes.OBJECT) {
|
|
80
|
+
if (!inlineStylesOnly && !tweenHadNoInlineValue) {
|
|
81
|
+
tweenTarget[tweenProperty] = originalInlinedValue;
|
|
82
|
+
}
|
|
83
|
+
} else if (tweenTarget[consts.isDomSymbol]) {
|
|
84
|
+
if (tweenType === consts.tweenTypes.ATTRIBUTE) {
|
|
85
|
+
if (!inlineStylesOnly) {
|
|
86
|
+
if (tweenHadNoInlineValue) {
|
|
87
|
+
/** @type {DOMTarget} */(tweenTarget).removeAttribute(tweenProperty);
|
|
88
88
|
} else {
|
|
89
|
-
|
|
90
|
-
for (let key in cachedTransforms) {
|
|
91
|
-
str += consts.transformsFragmentStrings[key] + cachedTransforms[key] + ') ';
|
|
92
|
-
}
|
|
93
|
-
targetStyle.transform = str;
|
|
89
|
+
/** @type {DOMTarget} */(tweenTarget).setAttribute(tweenProperty, /** @type {String} */(originalInlinedValue));
|
|
94
90
|
}
|
|
95
91
|
}
|
|
96
92
|
} else {
|
|
97
|
-
|
|
98
|
-
|
|
93
|
+
const targetStyle = /** @type {DOMTarget} */(tweenTarget).style;
|
|
94
|
+
if (tweenType === consts.tweenTypes.TRANSFORM) {
|
|
95
|
+
const cachedTransforms = tweenTarget[consts.transformsSymbol];
|
|
96
|
+
if (tweenHadNoInlineValue) {
|
|
97
|
+
delete cachedTransforms[tweenProperty];
|
|
98
|
+
} else {
|
|
99
|
+
cachedTransforms[tweenProperty] = originalInlinedValue;
|
|
100
|
+
}
|
|
101
|
+
if (tween._renderTransforms) {
|
|
102
|
+
if (!Object.keys(cachedTransforms).length) {
|
|
103
|
+
targetStyle.removeProperty('transform');
|
|
104
|
+
} else {
|
|
105
|
+
targetStyle.transform = transforms.buildTransformString(cachedTransforms);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
99
108
|
} else {
|
|
100
|
-
|
|
109
|
+
if (tweenHadNoInlineValue) {
|
|
110
|
+
targetStyle.removeProperty(helpers.toLowerCase(tweenProperty));
|
|
111
|
+
} else {
|
|
112
|
+
targetStyle[tweenProperty] = originalInlinedValue;
|
|
113
|
+
}
|
|
101
114
|
}
|
|
102
115
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
116
|
+
}
|
|
117
|
+
if (tweenTarget[consts.isDomSymbol] && animation._tail === tween) {
|
|
118
|
+
animation.targets.forEach(t => {
|
|
119
|
+
if (t.getAttribute && t.getAttribute('style') === consts.emptyString) {
|
|
120
|
+
t.removeAttribute('style');
|
|
121
|
+
} });
|
|
109
122
|
}
|
|
110
123
|
});
|
|
111
124
|
}
|
|
112
125
|
return renderable;
|
|
113
126
|
};
|
|
114
127
|
|
|
128
|
+
/**
|
|
129
|
+
* @template {Renderable} T
|
|
130
|
+
* @param {T} renderable
|
|
131
|
+
* @return {T}
|
|
132
|
+
*/
|
|
133
|
+
const cleanInlineStyles = renderable => revertValues(renderable, true);
|
|
134
|
+
|
|
115
135
|
exports.cleanInlineStyles = cleanInlineStyles;
|
|
136
|
+
exports.revertValues = revertValues;
|
|
116
137
|
exports.sanitizePropertyName = sanitizePropertyName;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export function sanitizePropertyName(propertyName: string, target: Target, tweenType: tweenTypes): string;
|
|
2
|
+
export function revertValues<T extends Renderable>(renderable: T, inlineStylesOnly?: boolean): T;
|
|
2
3
|
export function cleanInlineStyles<T extends Renderable>(renderable: T): T;
|
|
3
4
|
import type { Target } from '../types/index.js';
|
|
4
5
|
import { tweenTypes } from './consts.js';
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - core - ESM
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.1
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { tweenTypes,
|
|
9
|
-
import { forEachChildren,
|
|
8
|
+
import { tweenTypes, isDomSymbol, transformsSymbol, emptyString, shortTransforms } from './consts.js';
|
|
9
|
+
import { forEachChildren, toLowerCase, isNil, isSvg } from './helpers.js';
|
|
10
|
+
import { buildTransformString } from './transforms.js';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* @import {
|
|
@@ -57,57 +58,76 @@ const sanitizePropertyName = (propertyName, target, tweenType) => {
|
|
|
57
58
|
/**
|
|
58
59
|
* @template {Renderable} T
|
|
59
60
|
* @param {T} renderable
|
|
61
|
+
* @param {Boolean} [inlineStylesOnly]
|
|
60
62
|
* @return {T}
|
|
61
63
|
*/
|
|
62
|
-
const
|
|
63
|
-
// Allow
|
|
64
|
+
const revertValues = (renderable, inlineStylesOnly = false) => {
|
|
65
|
+
// Allow revertValues() to be called on timelines
|
|
64
66
|
if (renderable._hasChildren) {
|
|
65
|
-
forEachChildren(renderable,
|
|
67
|
+
forEachChildren(renderable, (/** @type {Renderable} */child) => revertValues(child, inlineStylesOnly), true);
|
|
66
68
|
} else {
|
|
67
69
|
const animation = /** @type {JSAnimation} */(renderable);
|
|
68
70
|
animation.pause();
|
|
69
71
|
forEachChildren(animation, (/** @type {Tween} */tween) => {
|
|
70
72
|
const tweenProperty = tween.property;
|
|
71
73
|
const tweenTarget = tween.target;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (!Object.keys(cachedTransforms).length) {
|
|
85
|
-
targetStyle.removeProperty('transform');
|
|
74
|
+
const tweenType = tween._tweenType;
|
|
75
|
+
const originalInlinedValue = tween._inlineValue;
|
|
76
|
+
const tweenHadNoInlineValue = isNil(originalInlinedValue) || originalInlinedValue === emptyString;
|
|
77
|
+
if (tweenType === tweenTypes.OBJECT) {
|
|
78
|
+
if (!inlineStylesOnly && !tweenHadNoInlineValue) {
|
|
79
|
+
tweenTarget[tweenProperty] = originalInlinedValue;
|
|
80
|
+
}
|
|
81
|
+
} else if (tweenTarget[isDomSymbol]) {
|
|
82
|
+
if (tweenType === tweenTypes.ATTRIBUTE) {
|
|
83
|
+
if (!inlineStylesOnly) {
|
|
84
|
+
if (tweenHadNoInlineValue) {
|
|
85
|
+
/** @type {DOMTarget} */(tweenTarget).removeAttribute(tweenProperty);
|
|
86
86
|
} else {
|
|
87
|
-
|
|
88
|
-
for (let key in cachedTransforms) {
|
|
89
|
-
str += transformsFragmentStrings[key] + cachedTransforms[key] + ') ';
|
|
90
|
-
}
|
|
91
|
-
targetStyle.transform = str;
|
|
87
|
+
/** @type {DOMTarget} */(tweenTarget).setAttribute(tweenProperty, /** @type {String} */(originalInlinedValue));
|
|
92
88
|
}
|
|
93
89
|
}
|
|
94
90
|
} else {
|
|
95
|
-
|
|
96
|
-
|
|
91
|
+
const targetStyle = /** @type {DOMTarget} */(tweenTarget).style;
|
|
92
|
+
if (tweenType === tweenTypes.TRANSFORM) {
|
|
93
|
+
const cachedTransforms = tweenTarget[transformsSymbol];
|
|
94
|
+
if (tweenHadNoInlineValue) {
|
|
95
|
+
delete cachedTransforms[tweenProperty];
|
|
96
|
+
} else {
|
|
97
|
+
cachedTransforms[tweenProperty] = originalInlinedValue;
|
|
98
|
+
}
|
|
99
|
+
if (tween._renderTransforms) {
|
|
100
|
+
if (!Object.keys(cachedTransforms).length) {
|
|
101
|
+
targetStyle.removeProperty('transform');
|
|
102
|
+
} else {
|
|
103
|
+
targetStyle.transform = buildTransformString(cachedTransforms);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
97
106
|
} else {
|
|
98
|
-
|
|
107
|
+
if (tweenHadNoInlineValue) {
|
|
108
|
+
targetStyle.removeProperty(toLowerCase(tweenProperty));
|
|
109
|
+
} else {
|
|
110
|
+
targetStyle[tweenProperty] = originalInlinedValue;
|
|
111
|
+
}
|
|
99
112
|
}
|
|
100
113
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
114
|
+
}
|
|
115
|
+
if (tweenTarget[isDomSymbol] && animation._tail === tween) {
|
|
116
|
+
animation.targets.forEach(t => {
|
|
117
|
+
if (t.getAttribute && t.getAttribute('style') === emptyString) {
|
|
118
|
+
t.removeAttribute('style');
|
|
119
|
+
} });
|
|
107
120
|
}
|
|
108
121
|
});
|
|
109
122
|
}
|
|
110
123
|
return renderable;
|
|
111
124
|
};
|
|
112
125
|
|
|
113
|
-
|
|
126
|
+
/**
|
|
127
|
+
* @template {Renderable} T
|
|
128
|
+
* @param {T} renderable
|
|
129
|
+
* @return {T}
|
|
130
|
+
*/
|
|
131
|
+
const cleanInlineStyles = renderable => revertValues(renderable, true);
|
|
132
|
+
|
|
133
|
+
export { cleanInlineStyles, revertValues, sanitizePropertyName };
|