animejs 4.3.6 → 4.4.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.
- package/README.md +8 -11
- package/dist/bundles/anime.esm.js +1033 -421
- package/dist/bundles/anime.esm.min.js +2 -2
- package/dist/bundles/anime.umd.js +1038 -421
- 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 +66 -63
- package/dist/modules/core/render.js +68 -65
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - layout - CJS
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.0
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
@@ -79,6 +79,7 @@ var globals = require('../core/globals.cjs');
|
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
* @typedef {Object} LayoutSpecificAnimationParams
|
|
82
|
+
* @property {Number|String} [id]
|
|
82
83
|
* @property {Number|FunctionValue} [delay]
|
|
83
84
|
* @property {Number|FunctionValue} [duration]
|
|
84
85
|
* @property {EasingParam|FunctionValue} [ease]
|
|
@@ -121,7 +122,7 @@ var globals = require('../core/globals.cjs');
|
|
|
121
122
|
* @property {String} id
|
|
122
123
|
* @property {DOMTarget} $el
|
|
123
124
|
* @property {Number} index
|
|
124
|
-
* @property {
|
|
125
|
+
* @property {Array<DOMTarget>} targets
|
|
125
126
|
* @property {Number} delay
|
|
126
127
|
* @property {Number} duration
|
|
127
128
|
* @property {EasingParam} ease
|
|
@@ -265,7 +266,7 @@ const createNode = ($el, parentNode, state, recycledNode) => {
|
|
|
265
266
|
node.$measure = $el;
|
|
266
267
|
node.id = dataId;
|
|
267
268
|
node.index = 0;
|
|
268
|
-
node.
|
|
269
|
+
node.targets = null;
|
|
269
270
|
node.delay = 0;
|
|
270
271
|
node.duration = 0;
|
|
271
272
|
node.ease = null;
|
|
@@ -451,12 +452,12 @@ const updateNodeProperties = (node, props) => {
|
|
|
451
452
|
* @param {LayoutAnimationTimingsParams} params
|
|
452
453
|
*/
|
|
453
454
|
const updateNodeTimingParams = (node, params) => {
|
|
454
|
-
const easeFunctionResult = values.getFunctionValue(params.ease, node.$el, node.index, node.
|
|
455
|
+
const easeFunctionResult = values.getFunctionValue(params.ease, node.$el, node.index, node.targets, null, null);
|
|
455
456
|
const keyEasing = helpers.isFnc(easeFunctionResult) ? easeFunctionResult : params.ease;
|
|
456
457
|
const hasSpring = !helpers.isUnd(keyEasing) && !helpers.isUnd(/** @type {Spring} */(keyEasing).ease);
|
|
457
458
|
node.ease = hasSpring ? /** @type {Spring} */(keyEasing).ease : keyEasing;
|
|
458
|
-
node.duration = hasSpring ? /** @type {Spring} */(keyEasing).settlingDuration : values.getFunctionValue(params.duration, node.$el, node.index, node.
|
|
459
|
-
node.delay = values.getFunctionValue(params.delay, node.$el, node.index, node.
|
|
459
|
+
node.duration = hasSpring ? /** @type {Spring} */(keyEasing).settlingDuration : values.getFunctionValue(params.duration, node.$el, node.index, node.targets, null, null);
|
|
460
|
+
node.delay = values.getFunctionValue(params.delay, node.$el, node.index, node.targets, null, null);
|
|
460
461
|
};
|
|
461
462
|
|
|
462
463
|
/**
|
|
@@ -829,10 +830,12 @@ class LayoutSnapshot {
|
|
|
829
830
|
|
|
830
831
|
const inRootNodeIds = new Set();
|
|
831
832
|
// Update index and total for inital timing calculation
|
|
832
|
-
let index = 0
|
|
833
|
+
let index = 0;
|
|
834
|
+
const allNodeTargets = [];
|
|
835
|
+
this.nodes.forEach((node) => { allNodeTargets.push(node.$el); });
|
|
833
836
|
this.nodes.forEach((node, id) => {
|
|
834
837
|
node.index = index++;
|
|
835
|
-
node.
|
|
838
|
+
node.targets = allNodeTargets;
|
|
836
839
|
// Track ids of nodes that belong to the current root to filter detached matches
|
|
837
840
|
if (node && node.measuredIsInsideRoot) {
|
|
838
841
|
inRootNodeIds.add(id);
|
|
@@ -944,8 +947,8 @@ class AutoLayout {
|
|
|
944
947
|
this.params = params;
|
|
945
948
|
/** @type {DOMTarget} */
|
|
946
949
|
this.root = /** @type {DOMTarget} */(targets.registerTargets(root)[0]);
|
|
947
|
-
/** @type {Number} */
|
|
948
|
-
this.id = layoutId++;
|
|
950
|
+
/** @type {Number|String} */
|
|
951
|
+
this.id = params.id || layoutId++;
|
|
949
952
|
/** @type {LayoutChildrenParam} */
|
|
950
953
|
this.children = params.children || '*';
|
|
951
954
|
/** @type {Boolean} */
|
|
@@ -1068,7 +1071,9 @@ class AutoLayout {
|
|
|
1068
1071
|
duration: values.setValue(params.duration, this.params.duration),
|
|
1069
1072
|
};
|
|
1070
1073
|
/** @type {TimelineParams} */
|
|
1071
|
-
const tlParams = {
|
|
1074
|
+
const tlParams = {
|
|
1075
|
+
id: this.id
|
|
1076
|
+
};
|
|
1072
1077
|
const onComplete = values.setValue(params.onComplete, this.params.onComplete);
|
|
1073
1078
|
const onPause = values.setValue(params.onPause, this.params.onPause);
|
|
1074
1079
|
for (let name in globals.defaults) {
|
|
@@ -1082,7 +1087,8 @@ class AutoLayout {
|
|
|
1082
1087
|
}
|
|
1083
1088
|
tlParams.onComplete = () => {
|
|
1084
1089
|
const ap = /** @type {ScrollObserver} */(params.autoplay);
|
|
1085
|
-
const
|
|
1090
|
+
const ed = globals.globals.editor;
|
|
1091
|
+
const isScrollControled = (ap && ap.linked) || (ed && ed.showPanel);
|
|
1086
1092
|
if (isScrollControled) {
|
|
1087
1093
|
if (onComplete) onComplete(this.timeline);
|
|
1088
1094
|
return;
|
|
@@ -1281,41 +1287,39 @@ class AutoLayout {
|
|
|
1281
1287
|
animatedParent = animatedParent.parentNode;
|
|
1282
1288
|
}
|
|
1283
1289
|
|
|
1284
|
-
const animatingTotal = animating.length;
|
|
1285
|
-
|
|
1286
1290
|
// Root is always animated first in sync with the first child (animating.length is the total of children)
|
|
1287
1291
|
if (node === rootNode) {
|
|
1288
1292
|
node.index = 0;
|
|
1289
|
-
node.
|
|
1293
|
+
node.targets = animating;
|
|
1290
1294
|
updateNodeTimingParams(node, animationTimings);
|
|
1291
1295
|
} else if (node.isEntering) {
|
|
1292
1296
|
node.index = animatedParent ? animatedParent.index : enteringIndex;
|
|
1293
|
-
node.
|
|
1297
|
+
node.targets = animatedParent ? animating : entering;
|
|
1294
1298
|
updateNodeTimingParams(node, enterFromTimings);
|
|
1295
1299
|
enteringIndex++;
|
|
1296
1300
|
} else if (node.isLeaving) {
|
|
1297
1301
|
node.index = animatedParent ? animatedParent.index : leavingIndex;
|
|
1298
|
-
node.
|
|
1302
|
+
node.targets = animatedParent ? animating : leaving;
|
|
1299
1303
|
leavingIndex++;
|
|
1300
1304
|
updateNodeTimingParams(node, leaveToTimings);
|
|
1301
1305
|
} else if (node.isTarget) {
|
|
1302
1306
|
node.index = animatingIndex++;
|
|
1303
|
-
node.
|
|
1307
|
+
node.targets = animating;
|
|
1304
1308
|
updateNodeTimingParams(node, animationTimings);
|
|
1305
1309
|
} else {
|
|
1306
1310
|
node.index = animatedParent ? animatedParent.index : 0;
|
|
1307
|
-
node.
|
|
1311
|
+
node.targets = animating;
|
|
1308
1312
|
updateNodeTimingParams(node, swapAtTimings);
|
|
1309
1313
|
}
|
|
1310
1314
|
|
|
1311
1315
|
// Make sure the old state node has its inex and total values up to date for valid "from" function values calculation
|
|
1312
1316
|
oldStateNode.index = node.index;
|
|
1313
|
-
oldStateNode.
|
|
1317
|
+
oldStateNode.targets = node.targets;
|
|
1314
1318
|
|
|
1315
1319
|
// Computes all values up front so we can check for changes and we don't have to re-compute them inside the animation props
|
|
1316
1320
|
for (let prop in nodeProperties) {
|
|
1317
|
-
nodeProperties[prop] = values.getFunctionValue(nodeProperties[prop], $el, node.index, node.
|
|
1318
|
-
oldStateNodeProperties[prop] = values.getFunctionValue(oldStateNodeProperties[prop], $el, oldStateNode.index, oldStateNode.
|
|
1321
|
+
nodeProperties[prop] = values.getFunctionValue(nodeProperties[prop], $el, node.index, node.targets, null, null);
|
|
1322
|
+
oldStateNodeProperties[prop] = values.getFunctionValue(oldStateNodeProperties[prop], $el, oldStateNode.index, oldStateNode.targets, null, null);
|
|
1319
1323
|
}
|
|
1320
1324
|
|
|
1321
1325
|
// Use a 1px tolerance to detect dimensions changes to prevent width / height animations on barelly visible elements
|
|
@@ -1541,8 +1545,8 @@ class AutoLayout {
|
|
|
1541
1545
|
}
|
|
1542
1546
|
$el.style.transform = oldState.getComputedValue($el, 'transform');
|
|
1543
1547
|
if (animatedSwap.includes($el)) {
|
|
1544
|
-
node.ease = values.getFunctionValue(swapAtParams.ease, $el, node.index, node.
|
|
1545
|
-
node.duration = values.getFunctionValue(swapAtParams.duration, $el, node.index, node.
|
|
1548
|
+
node.ease = values.getFunctionValue(swapAtParams.ease, $el, node.index, node.targets, null, null);
|
|
1549
|
+
node.duration = values.getFunctionValue(swapAtParams.duration, $el, node.index, node.targets, null, null);
|
|
1546
1550
|
}
|
|
1547
1551
|
}
|
|
1548
1552
|
this.transformAnimation = waapi.waapi.animate(transformed, {
|
|
@@ -1557,7 +1561,7 @@ class AutoLayout {
|
|
|
1557
1561
|
if (!animatedSwap.includes($el)) return newValue;
|
|
1558
1562
|
const oldValue = oldState.getComputedValue($el, 'transform');
|
|
1559
1563
|
const node = newState.getNode($el);
|
|
1560
|
-
return [oldValue, values.getFunctionValue(swapAtProps.transform, $el, node.index, node.
|
|
1564
|
+
return [oldValue, values.getFunctionValue(swapAtProps.transform, $el, node.index, node.targets, null, null), newValue]
|
|
1561
1565
|
},
|
|
1562
1566
|
autoplay: false,
|
|
1563
1567
|
// persist: true,
|
|
@@ -8,8 +8,8 @@ export class AutoLayout {
|
|
|
8
8
|
params: AutoLayoutParams;
|
|
9
9
|
/** @type {DOMTarget} */
|
|
10
10
|
root: DOMTarget;
|
|
11
|
-
/** @type {Number} */
|
|
12
|
-
id: number;
|
|
11
|
+
/** @type {Number|String} */
|
|
12
|
+
id: number | string;
|
|
13
13
|
/** @type {LayoutChildrenParam} */
|
|
14
14
|
children: LayoutChildrenParam;
|
|
15
15
|
/** @type {Boolean} */
|
|
@@ -74,6 +74,7 @@ export type LayoutAnimationTimingsParams = {
|
|
|
74
74
|
export type LayoutStateAnimationProperties = Record<string, number | string | FunctionValue>;
|
|
75
75
|
export type LayoutStateParams = LayoutStateAnimationProperties & LayoutAnimationTimingsParams;
|
|
76
76
|
export type LayoutSpecificAnimationParams = {
|
|
77
|
+
id?: number | string;
|
|
77
78
|
delay?: number | FunctionValue;
|
|
78
79
|
duration?: number | FunctionValue;
|
|
79
80
|
ease?: EasingParam | FunctionValue;
|
|
@@ -103,7 +104,7 @@ export type LayoutNode = {
|
|
|
103
104
|
id: string;
|
|
104
105
|
$el: DOMTarget;
|
|
105
106
|
index: number;
|
|
106
|
-
|
|
107
|
+
targets: Array<DOMTarget>;
|
|
107
108
|
delay: number;
|
|
108
109
|
duration: number;
|
|
109
110
|
ease: EasingParam;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - layout - ESM
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.0
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
@@ -11,7 +11,7 @@ import { parseEase } from '../easings/eases/parser.js';
|
|
|
11
11
|
import { setValue, getFunctionValue } from '../core/values.js';
|
|
12
12
|
import { createTimeline } from '../timeline/timeline.js';
|
|
13
13
|
import { waapi } from '../waapi/waapi.js';
|
|
14
|
-
import { scope, defaults } from '../core/globals.js';
|
|
14
|
+
import { scope, defaults, globals } from '../core/globals.js';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* @import {
|
|
@@ -77,6 +77,7 @@ import { scope, defaults } from '../core/globals.js';
|
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
79
|
* @typedef {Object} LayoutSpecificAnimationParams
|
|
80
|
+
* @property {Number|String} [id]
|
|
80
81
|
* @property {Number|FunctionValue} [delay]
|
|
81
82
|
* @property {Number|FunctionValue} [duration]
|
|
82
83
|
* @property {EasingParam|FunctionValue} [ease]
|
|
@@ -119,7 +120,7 @@ import { scope, defaults } from '../core/globals.js';
|
|
|
119
120
|
* @property {String} id
|
|
120
121
|
* @property {DOMTarget} $el
|
|
121
122
|
* @property {Number} index
|
|
122
|
-
* @property {
|
|
123
|
+
* @property {Array<DOMTarget>} targets
|
|
123
124
|
* @property {Number} delay
|
|
124
125
|
* @property {Number} duration
|
|
125
126
|
* @property {EasingParam} ease
|
|
@@ -263,7 +264,7 @@ const createNode = ($el, parentNode, state, recycledNode) => {
|
|
|
263
264
|
node.$measure = $el;
|
|
264
265
|
node.id = dataId;
|
|
265
266
|
node.index = 0;
|
|
266
|
-
node.
|
|
267
|
+
node.targets = null;
|
|
267
268
|
node.delay = 0;
|
|
268
269
|
node.duration = 0;
|
|
269
270
|
node.ease = null;
|
|
@@ -449,12 +450,12 @@ const updateNodeProperties = (node, props) => {
|
|
|
449
450
|
* @param {LayoutAnimationTimingsParams} params
|
|
450
451
|
*/
|
|
451
452
|
const updateNodeTimingParams = (node, params) => {
|
|
452
|
-
const easeFunctionResult = getFunctionValue(params.ease, node.$el, node.index, node.
|
|
453
|
+
const easeFunctionResult = getFunctionValue(params.ease, node.$el, node.index, node.targets, null, null);
|
|
453
454
|
const keyEasing = isFnc(easeFunctionResult) ? easeFunctionResult : params.ease;
|
|
454
455
|
const hasSpring = !isUnd(keyEasing) && !isUnd(/** @type {Spring} */(keyEasing).ease);
|
|
455
456
|
node.ease = hasSpring ? /** @type {Spring} */(keyEasing).ease : keyEasing;
|
|
456
|
-
node.duration = hasSpring ? /** @type {Spring} */(keyEasing).settlingDuration : getFunctionValue(params.duration, node.$el, node.index, node.
|
|
457
|
-
node.delay = getFunctionValue(params.delay, node.$el, node.index, node.
|
|
457
|
+
node.duration = hasSpring ? /** @type {Spring} */(keyEasing).settlingDuration : getFunctionValue(params.duration, node.$el, node.index, node.targets, null, null);
|
|
458
|
+
node.delay = getFunctionValue(params.delay, node.$el, node.index, node.targets, null, null);
|
|
458
459
|
};
|
|
459
460
|
|
|
460
461
|
/**
|
|
@@ -827,10 +828,12 @@ class LayoutSnapshot {
|
|
|
827
828
|
|
|
828
829
|
const inRootNodeIds = new Set();
|
|
829
830
|
// Update index and total for inital timing calculation
|
|
830
|
-
let index = 0
|
|
831
|
+
let index = 0;
|
|
832
|
+
const allNodeTargets = [];
|
|
833
|
+
this.nodes.forEach((node) => { allNodeTargets.push(node.$el); });
|
|
831
834
|
this.nodes.forEach((node, id) => {
|
|
832
835
|
node.index = index++;
|
|
833
|
-
node.
|
|
836
|
+
node.targets = allNodeTargets;
|
|
834
837
|
// Track ids of nodes that belong to the current root to filter detached matches
|
|
835
838
|
if (node && node.measuredIsInsideRoot) {
|
|
836
839
|
inRootNodeIds.add(id);
|
|
@@ -942,8 +945,8 @@ class AutoLayout {
|
|
|
942
945
|
this.params = params;
|
|
943
946
|
/** @type {DOMTarget} */
|
|
944
947
|
this.root = /** @type {DOMTarget} */(registerTargets(root)[0]);
|
|
945
|
-
/** @type {Number} */
|
|
946
|
-
this.id = layoutId++;
|
|
948
|
+
/** @type {Number|String} */
|
|
949
|
+
this.id = params.id || layoutId++;
|
|
947
950
|
/** @type {LayoutChildrenParam} */
|
|
948
951
|
this.children = params.children || '*';
|
|
949
952
|
/** @type {Boolean} */
|
|
@@ -1066,7 +1069,9 @@ class AutoLayout {
|
|
|
1066
1069
|
duration: setValue(params.duration, this.params.duration),
|
|
1067
1070
|
};
|
|
1068
1071
|
/** @type {TimelineParams} */
|
|
1069
|
-
const tlParams = {
|
|
1072
|
+
const tlParams = {
|
|
1073
|
+
id: this.id
|
|
1074
|
+
};
|
|
1070
1075
|
const onComplete = setValue(params.onComplete, this.params.onComplete);
|
|
1071
1076
|
const onPause = setValue(params.onPause, this.params.onPause);
|
|
1072
1077
|
for (let name in defaults) {
|
|
@@ -1080,7 +1085,8 @@ class AutoLayout {
|
|
|
1080
1085
|
}
|
|
1081
1086
|
tlParams.onComplete = () => {
|
|
1082
1087
|
const ap = /** @type {ScrollObserver} */(params.autoplay);
|
|
1083
|
-
const
|
|
1088
|
+
const ed = globals.editor;
|
|
1089
|
+
const isScrollControled = (ap && ap.linked) || (ed && ed.showPanel);
|
|
1084
1090
|
if (isScrollControled) {
|
|
1085
1091
|
if (onComplete) onComplete(this.timeline);
|
|
1086
1092
|
return;
|
|
@@ -1279,41 +1285,39 @@ class AutoLayout {
|
|
|
1279
1285
|
animatedParent = animatedParent.parentNode;
|
|
1280
1286
|
}
|
|
1281
1287
|
|
|
1282
|
-
const animatingTotal = animating.length;
|
|
1283
|
-
|
|
1284
1288
|
// Root is always animated first in sync with the first child (animating.length is the total of children)
|
|
1285
1289
|
if (node === rootNode) {
|
|
1286
1290
|
node.index = 0;
|
|
1287
|
-
node.
|
|
1291
|
+
node.targets = animating;
|
|
1288
1292
|
updateNodeTimingParams(node, animationTimings);
|
|
1289
1293
|
} else if (node.isEntering) {
|
|
1290
1294
|
node.index = animatedParent ? animatedParent.index : enteringIndex;
|
|
1291
|
-
node.
|
|
1295
|
+
node.targets = animatedParent ? animating : entering;
|
|
1292
1296
|
updateNodeTimingParams(node, enterFromTimings);
|
|
1293
1297
|
enteringIndex++;
|
|
1294
1298
|
} else if (node.isLeaving) {
|
|
1295
1299
|
node.index = animatedParent ? animatedParent.index : leavingIndex;
|
|
1296
|
-
node.
|
|
1300
|
+
node.targets = animatedParent ? animating : leaving;
|
|
1297
1301
|
leavingIndex++;
|
|
1298
1302
|
updateNodeTimingParams(node, leaveToTimings);
|
|
1299
1303
|
} else if (node.isTarget) {
|
|
1300
1304
|
node.index = animatingIndex++;
|
|
1301
|
-
node.
|
|
1305
|
+
node.targets = animating;
|
|
1302
1306
|
updateNodeTimingParams(node, animationTimings);
|
|
1303
1307
|
} else {
|
|
1304
1308
|
node.index = animatedParent ? animatedParent.index : 0;
|
|
1305
|
-
node.
|
|
1309
|
+
node.targets = animating;
|
|
1306
1310
|
updateNodeTimingParams(node, swapAtTimings);
|
|
1307
1311
|
}
|
|
1308
1312
|
|
|
1309
1313
|
// Make sure the old state node has its inex and total values up to date for valid "from" function values calculation
|
|
1310
1314
|
oldStateNode.index = node.index;
|
|
1311
|
-
oldStateNode.
|
|
1315
|
+
oldStateNode.targets = node.targets;
|
|
1312
1316
|
|
|
1313
1317
|
// Computes all values up front so we can check for changes and we don't have to re-compute them inside the animation props
|
|
1314
1318
|
for (let prop in nodeProperties) {
|
|
1315
|
-
nodeProperties[prop] = getFunctionValue(nodeProperties[prop], $el, node.index, node.
|
|
1316
|
-
oldStateNodeProperties[prop] = getFunctionValue(oldStateNodeProperties[prop], $el, oldStateNode.index, oldStateNode.
|
|
1319
|
+
nodeProperties[prop] = getFunctionValue(nodeProperties[prop], $el, node.index, node.targets, null, null);
|
|
1320
|
+
oldStateNodeProperties[prop] = getFunctionValue(oldStateNodeProperties[prop], $el, oldStateNode.index, oldStateNode.targets, null, null);
|
|
1317
1321
|
}
|
|
1318
1322
|
|
|
1319
1323
|
// Use a 1px tolerance to detect dimensions changes to prevent width / height animations on barelly visible elements
|
|
@@ -1539,8 +1543,8 @@ class AutoLayout {
|
|
|
1539
1543
|
}
|
|
1540
1544
|
$el.style.transform = oldState.getComputedValue($el, 'transform');
|
|
1541
1545
|
if (animatedSwap.includes($el)) {
|
|
1542
|
-
node.ease = getFunctionValue(swapAtParams.ease, $el, node.index, node.
|
|
1543
|
-
node.duration = getFunctionValue(swapAtParams.duration, $el, node.index, node.
|
|
1546
|
+
node.ease = getFunctionValue(swapAtParams.ease, $el, node.index, node.targets, null, null);
|
|
1547
|
+
node.duration = getFunctionValue(swapAtParams.duration, $el, node.index, node.targets, null, null);
|
|
1544
1548
|
}
|
|
1545
1549
|
}
|
|
1546
1550
|
this.transformAnimation = waapi.animate(transformed, {
|
|
@@ -1555,7 +1559,7 @@ class AutoLayout {
|
|
|
1555
1559
|
if (!animatedSwap.includes($el)) return newValue;
|
|
1556
1560
|
const oldValue = oldState.getComputedValue($el, 'transform');
|
|
1557
1561
|
const node = newState.getNode($el);
|
|
1558
|
-
return [oldValue, getFunctionValue(swapAtProps.transform, $el, node.index, node.
|
|
1562
|
+
return [oldValue, getFunctionValue(swapAtProps.transform, $el, node.index, node.targets, null, null), newValue]
|
|
1559
1563
|
},
|
|
1560
1564
|
autoplay: false,
|
|
1561
1565
|
// persist: true,
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - svg - CJS
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.0
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
|
-
var consts = require('../core/consts.cjs');
|
|
11
10
|
var helpers$1 = require('../core/helpers.cjs');
|
|
12
11
|
var helpers = require('./helpers.cjs');
|
|
13
12
|
|
|
@@ -23,7 +22,7 @@ var helpers = require('./helpers.cjs');
|
|
|
23
22
|
* @param {Number} [precision]
|
|
24
23
|
* @return {FunctionValue}
|
|
25
24
|
*/
|
|
26
|
-
const morphTo = (path2, precision = .33) => ($path1) => {
|
|
25
|
+
const morphTo = (path2, precision = .33) => ($path1, index, total, prevTween) => {
|
|
27
26
|
const tagName1 = ($path1.tagName || '').toLowerCase();
|
|
28
27
|
if (!tagName1.match(/^(path|polygon|polyline)$/)) {
|
|
29
28
|
throw new Error(`Can't morph a <${$path1.tagName}> SVG element. Use <path>, <polygon> or <polyline>.`);
|
|
@@ -38,7 +37,7 @@ const morphTo = (path2, precision = .33) => ($path1) => {
|
|
|
38
37
|
}
|
|
39
38
|
const isPath = $path1.tagName === 'path';
|
|
40
39
|
const separator = isPath ? ' ' : ',';
|
|
41
|
-
const previousPoints =
|
|
40
|
+
const previousPoints = prevTween ? prevTween._value : null;
|
|
42
41
|
if (previousPoints) $path1.setAttribute(isPath ? 'd' : 'points', previousPoints);
|
|
43
42
|
|
|
44
43
|
let v1 = '', v2 = '';
|
|
@@ -60,8 +59,6 @@ const morphTo = (path2, precision = .33) => ($path1) => {
|
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
|
|
63
|
-
$path1[consts.morphPointsSymbol] = v2;
|
|
64
|
-
|
|
65
62
|
return [v1, v2];
|
|
66
63
|
};
|
|
67
64
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - svg - ESM
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.0
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { morphPointsSymbol } from '../core/consts.js';
|
|
9
8
|
import { round } from '../core/helpers.js';
|
|
10
9
|
import { getPath } from './helpers.js';
|
|
11
10
|
|
|
@@ -21,7 +20,7 @@ import { getPath } from './helpers.js';
|
|
|
21
20
|
* @param {Number} [precision]
|
|
22
21
|
* @return {FunctionValue}
|
|
23
22
|
*/
|
|
24
|
-
const morphTo = (path2, precision = .33) => ($path1) => {
|
|
23
|
+
const morphTo = (path2, precision = .33) => ($path1, index, total, prevTween) => {
|
|
25
24
|
const tagName1 = ($path1.tagName || '').toLowerCase();
|
|
26
25
|
if (!tagName1.match(/^(path|polygon|polyline)$/)) {
|
|
27
26
|
throw new Error(`Can't morph a <${$path1.tagName}> SVG element. Use <path>, <polygon> or <polyline>.`);
|
|
@@ -36,7 +35,7 @@ const morphTo = (path2, precision = .33) => ($path1) => {
|
|
|
36
35
|
}
|
|
37
36
|
const isPath = $path1.tagName === 'path';
|
|
38
37
|
const separator = isPath ? ' ' : ',';
|
|
39
|
-
const previousPoints =
|
|
38
|
+
const previousPoints = prevTween ? prevTween._value : null;
|
|
40
39
|
if (previousPoints) $path1.setAttribute(isPath ? 'd' : 'points', previousPoints);
|
|
41
40
|
|
|
42
41
|
let v1 = '', v2 = '';
|
|
@@ -58,8 +57,6 @@ const morphTo = (path2, precision = .33) => ($path1) => {
|
|
|
58
57
|
}
|
|
59
58
|
}
|
|
60
59
|
|
|
61
|
-
$path1[morphPointsSymbol] = v2;
|
|
62
|
-
|
|
63
60
|
return [v1, v2];
|
|
64
61
|
};
|
|
65
62
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Anime.js - text - CJS
|
|
3
|
-
* @version v4.
|
|
3
|
+
* @version v4.4.0
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 - Julian Garnier
|
|
6
6
|
*/
|
|
@@ -8,9 +8,11 @@
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
10
|
var split = require('./split.cjs');
|
|
11
|
+
var scramble = require('./scramble.cjs');
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
exports.TextSplitter = split.TextSplitter;
|
|
15
16
|
exports.split = split.split;
|
|
16
17
|
exports.splitText = split.splitText;
|
|
18
|
+
exports.scrambleText = scramble.scrambleText;
|