funnel-gfx-wc 0.1.108 → 0.1.109

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.
@@ -396,7 +396,7 @@ var consts = {};
396
396
 
397
397
  /**
398
398
  * Anime.js - core - CJS
399
- * @version v4.2.0
399
+ * @version v4.2.1
400
400
  * @license MIT
401
401
  * @copyright 2025 - Julian Garnier
402
402
  */
@@ -566,7 +566,7 @@ var globals = {};
566
566
 
567
567
  /**
568
568
  * Anime.js - core - CJS
569
- * @version v4.2.0
569
+ * @version v4.2.1
570
570
  * @license MIT
571
571
  * @copyright 2025 - Julian Garnier
572
572
  */
@@ -635,7 +635,7 @@ function requireGlobals () {
635
635
  tickThreshold: 200,
636
636
  };
637
637
 
638
- const globalVersions = { version: '4.2.0', engine: null };
638
+ const globalVersions = { version: '4.2.1', engine: null };
639
639
 
640
640
  if (consts.isBrowser) {
641
641
  if (!consts.win.AnimeJS) consts.win.AnimeJS = [];
@@ -651,7 +651,7 @@ function requireGlobals () {
651
651
 
652
652
  /**
653
653
  * Anime.js - core - CJS
654
- * @version v4.2.0
654
+ * @version v4.2.1
655
655
  * @license MIT
656
656
  * @copyright 2025 - Julian Garnier
657
657
  */
@@ -966,7 +966,7 @@ var transforms = {};
966
966
 
967
967
  /**
968
968
  * Anime.js - core - CJS
969
- * @version v4.2.0
969
+ * @version v4.2.1
970
970
  * @license MIT
971
971
  * @copyright 2025 - Julian Garnier
972
972
  */
@@ -1024,7 +1024,7 @@ var colors = {};
1024
1024
 
1025
1025
  /**
1026
1026
  * Anime.js - core - CJS
1027
- * @version v4.2.0
1027
+ * @version v4.2.1
1028
1028
  * @license MIT
1029
1029
  * @copyright 2025 - Julian Garnier
1030
1030
  */
@@ -1133,7 +1133,7 @@ function requireColors () {
1133
1133
 
1134
1134
  /**
1135
1135
  * Anime.js - core - CJS
1136
- * @version v4.2.0
1136
+ * @version v4.2.1
1137
1137
  * @license MIT
1138
1138
  * @copyright 2025 - Julian Garnier
1139
1139
  */
@@ -1368,7 +1368,7 @@ var render = {};
1368
1368
 
1369
1369
  /**
1370
1370
  * Anime.js - core - CJS
1371
- * @version v4.2.0
1371
+ * @version v4.2.1
1372
1372
  * @license MIT
1373
1373
  * @copyright 2025 - Julian Garnier
1374
1374
  */
@@ -1770,7 +1770,7 @@ var styles = {};
1770
1770
 
1771
1771
  /**
1772
1772
  * Anime.js - core - CJS
1773
- * @version v4.2.0
1773
+ * @version v4.2.1
1774
1774
  * @license MIT
1775
1775
  * @copyright 2025 - Julian Garnier
1776
1776
  */
@@ -1897,7 +1897,7 @@ var clock = {};
1897
1897
 
1898
1898
  /**
1899
1899
  * Anime.js - core - CJS
1900
- * @version v4.2.0
1900
+ * @version v4.2.1
1901
1901
  * @license MIT
1902
1902
  * @copyright 2025 - Julian Garnier
1903
1903
  */
@@ -2016,7 +2016,7 @@ var additive = {};
2016
2016
 
2017
2017
  /**
2018
2018
  * Anime.js - animation - CJS
2019
- * @version v4.2.0
2019
+ * @version v4.2.1
2020
2020
  * @license MIT
2021
2021
  * @copyright 2025 - Julian Garnier
2022
2022
  */
@@ -2105,7 +2105,7 @@ function requireAdditive () {
2105
2105
 
2106
2106
  /**
2107
2107
  * Anime.js - engine - CJS
2108
- * @version v4.2.0
2108
+ * @version v4.2.1
2109
2109
  * @license MIT
2110
2110
  * @copyright 2025 - Julian Garnier
2111
2111
  */
@@ -2280,7 +2280,7 @@ function requireEngine () {
2280
2280
 
2281
2281
  /**
2282
2282
  * Anime.js - animation - CJS
2283
- * @version v4.2.0
2283
+ * @version v4.2.1
2284
2284
  * @license MIT
2285
2285
  * @copyright 2025 - Julian Garnier
2286
2286
  */
@@ -2670,7 +2670,7 @@ function requireComposition$1 () {
2670
2670
 
2671
2671
  /**
2672
2672
  * Anime.js - timer - CJS
2673
- * @version v4.2.0
2673
+ * @version v4.2.1
2674
2674
  * @license MIT
2675
2675
  * @copyright 2025 - Julian Garnier
2676
2676
  */
@@ -2731,7 +2731,7 @@ function requireTimer () {
2731
2731
  if (timer._hasChildren) {
2732
2732
  helpers.forEachChildren(timer, reviveTimer);
2733
2733
  } else {
2734
- helpers.forEachChildren(timer, (/** @type {Tween} tween*/tween) => {
2734
+ helpers.forEachChildren(timer, (/** @type {Tween} tween */tween) => {
2735
2735
  if (tween._composition !== consts.compositionTypes.none) {
2736
2736
  composition.composeTween(tween, composition.getTweenSiblings(tween.target, tween.property));
2737
2737
  }
@@ -2788,7 +2788,6 @@ function requireTimer () {
2788
2788
  /** @type {Number} */(timerLoop) < 0 ? Infinity :
2789
2789
  /** @type {Number} */(timerLoop) + 1;
2790
2790
 
2791
-
2792
2791
  let offsetPosition = 0;
2793
2792
 
2794
2793
  if (parent) {
@@ -2878,7 +2877,7 @@ function requireTimer () {
2878
2877
  }
2879
2878
 
2880
2879
  set cancelled(cancelled) {
2881
- cancelled ? this.cancel() : this.reset(1).play();
2880
+ cancelled ? this.cancel() : this.reset(true).play();
2882
2881
  }
2883
2882
 
2884
2883
  get currentTime() {
@@ -2943,10 +2942,10 @@ function requireTimer () {
2943
2942
  }
2944
2943
 
2945
2944
  /**
2946
- * @param {Number} internalRender
2945
+ * @param {Boolean} [softReset]
2947
2946
  * @return {this}
2948
2947
  */
2949
- reset(internalRender = 0) {
2948
+ reset(softReset = false) {
2950
2949
  // If cancelled, revive the timer before rendering in order to have propertly composed tweens siblings
2951
2950
  reviveTimer(this);
2952
2951
  if (this._reversed && !this._reverse) this.reversed = false;
@@ -2955,7 +2954,7 @@ function requireTimer () {
2955
2954
  // NOTE: This is only required for Timelines and might be better to move to the Timeline class?
2956
2955
  this._iterationTime = this.iterationDuration;
2957
2956
  // Set tickMode to tickModes.FORCE to force rendering
2958
- render.tick(this, 0, 1, internalRender, consts.tickModes.FORCE);
2957
+ render.tick(this, 0, 1, ~~softReset, consts.tickModes.FORCE);
2959
2958
  // Reset timer properties after revive / render to make sure the props are not updated again
2960
2959
  resetTimerProperties(this);
2961
2960
  // Also reset children properties
@@ -2966,16 +2965,16 @@ function requireTimer () {
2966
2965
  }
2967
2966
 
2968
2967
  /**
2969
- * @param {Number} internalRender
2968
+ * @param {Boolean} internalRender
2970
2969
  * @return {this}
2971
2970
  */
2972
- init(internalRender = 0) {
2971
+ init(internalRender = false) {
2973
2972
  this.fps = this._fps;
2974
2973
  this.speed = this._speed;
2975
2974
  // Manually calling .init() on timelines should render all children intial state
2976
2975
  // Forces all children to render once then render to 0 when reseted
2977
2976
  if (!internalRender && this._hasChildren) {
2978
- render.tick(this, this.duration, 1, internalRender, consts.tickModes.FORCE);
2977
+ render.tick(this, this.duration, 1, ~~internalRender, consts.tickModes.FORCE);
2979
2978
  }
2980
2979
  this.reset(internalRender);
2981
2980
  // Make sure to set autoplay to false to child timers so it doesn't attempt to autoplay / link
@@ -3029,7 +3028,7 @@ function requireTimer () {
3029
3028
 
3030
3029
  /** @return {this} */
3031
3030
  restart() {
3032
- return this.reset(0).resume();
3031
+ return this.reset().resume();
3033
3032
  }
3034
3033
 
3035
3034
  /**
@@ -3132,8 +3131,12 @@ function requireTimer () {
3132
3131
  }
3133
3132
 
3134
3133
  /**
3135
- * @param {Callback<this>} [callback]
3136
- * @return {Promise}
3134
+ * @typedef {this & {then: null}} ResolvedTimer
3135
+ */
3136
+
3137
+ /**
3138
+ * @param {Callback<ResolvedTimer>} [callback]
3139
+ * @return Promise<this>
3137
3140
  */
3138
3141
  then(callback = consts.noop) {
3139
3142
  const then = this.then;
@@ -3141,7 +3144,7 @@ function requireTimer () {
3141
3144
  // this.then = null prevents infinite recursion if returned by an async function
3142
3145
  // https://github.com/juliangarnierorg/anime-beta/issues/26
3143
3146
  this.then = null;
3144
- callback(this);
3147
+ callback(/** @type {ResolvedTimer} */(this));
3145
3148
  this.then = then;
3146
3149
  this._resolve = consts.noop;
3147
3150
  };
@@ -3172,7 +3175,7 @@ var targets = {};
3172
3175
 
3173
3176
  /**
3174
3177
  * Anime.js - core - CJS
3175
- * @version v4.2.0
3178
+ * @version v4.2.1
3176
3179
  * @license MIT
3177
3180
  * @copyright 2025 - Julian Garnier
3178
3181
  */
@@ -3317,7 +3320,7 @@ var units = {};
3317
3320
 
3318
3321
  /**
3319
3322
  * Anime.js - core - CJS
3320
- * @version v4.2.0
3323
+ * @version v4.2.1
3321
3324
  * @license MIT
3322
3325
  * @copyright 2025 - Julian Garnier
3323
3326
  */
@@ -3394,7 +3397,7 @@ var none = {};
3394
3397
 
3395
3398
  /**
3396
3399
  * Anime.js - easings - CJS
3397
- * @version v4.2.0
3400
+ * @version v4.2.1
3398
3401
  * @license MIT
3399
3402
  * @copyright 2025 - Julian Garnier
3400
3403
  */
@@ -3420,7 +3423,7 @@ function requireNone () {
3420
3423
 
3421
3424
  /**
3422
3425
  * Anime.js - easings - CJS
3423
- * @version v4.2.0
3426
+ * @version v4.2.1
3424
3427
  * @license MIT
3425
3428
  * @copyright 2025 - Julian Garnier
3426
3429
  */
@@ -3618,7 +3621,7 @@ function requireParser () {
3618
3621
 
3619
3622
  /**
3620
3623
  * Anime.js - animation - CJS
3621
- * @version v4.2.0
3624
+ * @version v4.2.1
3622
3625
  * @license MIT
3623
3626
  * @copyright 2025 - Julian Garnier
3624
3627
  */
@@ -4269,8 +4272,12 @@ function requireAnimation () {
4269
4272
  }
4270
4273
 
4271
4274
  /**
4272
- * @param {Callback<this>} [callback]
4273
- * @return {Promise}
4275
+ * @typedef {this & {then: null}} ResolvedJSAnimation
4276
+ */
4277
+
4278
+ /**
4279
+ * @param {Callback<ResolvedJSAnimation>} [callback]
4280
+ * @return Promise<this>
4274
4281
  */
4275
4282
  then(callback) {
4276
4283
  return super.then(callback);
@@ -4296,7 +4303,7 @@ var position = {};
4296
4303
 
4297
4304
  /**
4298
4305
  * Anime.js - timeline - CJS
4299
- * @version v4.2.0
4306
+ * @version v4.2.1
4300
4307
  * @license MIT
4301
4308
  * @copyright 2025 - Julian Garnier
4302
4309
  */
@@ -4375,7 +4382,7 @@ function requirePosition () {
4375
4382
 
4376
4383
  /**
4377
4384
  * Anime.js - timeline - CJS
4378
- * @version v4.2.0
4385
+ * @version v4.2.1
4379
4386
  * @license MIT
4380
4387
  * @copyright 2025 - Julian Garnier
4381
4388
  */
@@ -4460,7 +4467,7 @@ function requireTimeline () {
4460
4467
  const tlChild = targets ?
4461
4468
  new animation.JSAnimation(targets,/** @type {AnimationParams} */(childParams), tl, adjustedPosition, false, index, length) :
4462
4469
  new timer.Timer(/** @type {TimerParams} */(childParams), tl, adjustedPosition);
4463
- tlChild.init(1);
4470
+ tlChild.init(true);
4464
4471
  // TODO: Might be better to insert at a position relative to startTime?
4465
4472
  helpers.addChild(tl, tlChild);
4466
4473
  helpers.forEachChildren(tl, (/** @type {Renderable} */child) => {
@@ -4564,7 +4571,7 @@ function requireTimeline () {
4564
4571
  position.parseTimelinePosition(this,a2),
4565
4572
  );
4566
4573
  }
4567
- return this.init(1); // 1 = internalRender
4574
+ return this.init(true);
4568
4575
  }
4569
4576
  }
4570
4577
 
@@ -4673,8 +4680,12 @@ function requireTimeline () {
4673
4680
  }
4674
4681
 
4675
4682
  /**
4676
- * @param {Callback<this>} [callback]
4677
- * @return {Promise}
4683
+ * @typedef {this & {then: null}} ResolvedTimeline
4684
+ */
4685
+
4686
+ /**
4687
+ * @param {Callback<ResolvedTimeline>} [callback]
4688
+ * @return Promise<this>
4678
4689
  */
4679
4690
  then(callback) {
4680
4691
  return super.then(callback);
@@ -4696,7 +4707,7 @@ var animatable = {};
4696
4707
 
4697
4708
  /**
4698
4709
  * Anime.js - animatable - CJS
4699
- * @version v4.2.0
4710
+ * @version v4.2.1
4700
4711
  * @license MIT
4701
4712
  * @copyright 2025 - Julian Garnier
4702
4713
  */
@@ -4820,7 +4831,7 @@ function requireAnimatable () {
4820
4831
  tween._currentTime = 0;
4821
4832
  });
4822
4833
  if (!helpers.isUnd(duration)) animation$1.stretch(duration);
4823
- animation$1.reset(1).resume();
4834
+ animation$1.reset(true).resume();
4824
4835
  return this;
4825
4836
  }
4826
4837
  };
@@ -4857,7 +4868,7 @@ var number = {};
4857
4868
 
4858
4869
  /**
4859
4870
  * Anime.js - utils - CJS
4860
- * @version v4.2.0
4871
+ * @version v4.2.1
4861
4872
  * @license MIT
4862
4873
  * @copyright 2025 - Julian Garnier
4863
4874
  */
@@ -4963,7 +4974,7 @@ var spring = {};
4963
4974
 
4964
4975
  /**
4965
4976
  * Anime.js - easings - CJS
4966
- * @version v4.2.0
4977
+ * @version v4.2.1
4967
4978
  * @license MIT
4968
4979
  * @copyright 2025 - Julian Garnier
4969
4980
  */
@@ -5229,7 +5240,7 @@ var composition = {};
5229
5240
 
5230
5241
  /**
5231
5242
  * Anime.js - waapi - CJS
5232
- * @version v4.2.0
5243
+ * @version v4.2.1
5233
5244
  * @license MIT
5234
5245
  * @copyright 2025 - Julian Garnier
5235
5246
  */
@@ -5331,7 +5342,7 @@ function requireComposition () {
5331
5342
 
5332
5343
  /**
5333
5344
  * Anime.js - utils - CJS
5334
- * @version v4.2.0
5345
+ * @version v4.2.1
5335
5346
  * @license MIT
5336
5347
  * @copyright 2025 - Julian Garnier
5337
5348
  */
@@ -5468,7 +5479,7 @@ function requireTarget () {
5468
5479
 
5469
5480
  /**
5470
5481
  * Anime.js - draggable - CJS
5471
- * @version v4.2.0
5482
+ * @version v4.2.1
5472
5483
  * @license MIT
5473
5484
  * @copyright 2025 - Julian Garnier
5474
5485
  */
@@ -5498,6 +5509,7 @@ function requireDraggable () {
5498
5509
  * DOMTarget,
5499
5510
  * DOMTargetSelector,
5500
5511
  * DraggableCursorParams,
5512
+ * DraggableDragThresholdParams,
5501
5513
  * TargetsParam,
5502
5514
  * DraggableParams,
5503
5515
  * EasingFunction,
@@ -5628,7 +5640,7 @@ function requireDraggable () {
5628
5640
  }
5629
5641
 
5630
5642
  /**
5631
- * @template {Array<Number>|DOMTargetSelector|String|Number|Boolean|Function|DraggableCursorParams} T
5643
+ * @template {Array<Number>|DOMTargetSelector|String|Number|Boolean|Function|DraggableCursorParams|DraggableDragThresholdParams} T
5632
5644
  * @param {T | ((draggable: Draggable) => T)} value
5633
5645
  * @param {Draggable} draggable
5634
5646
  * @return {T}
@@ -5682,6 +5694,8 @@ function requireDraggable () {
5682
5694
  /** @type {Number} */
5683
5695
  this.dragSpeed = 0;
5684
5696
  /** @type {Number} */
5697
+ this.dragThreshold = 3;
5698
+ /** @type {Number} */
5685
5699
  this.maxVelocity = 0;
5686
5700
  /** @type {Number} */
5687
5701
  this.minVelocity = 0;
@@ -6099,6 +6113,16 @@ function requireDraggable () {
6099
6113
  if (onHover) cursorStyles.onHover = onHover;
6100
6114
  if (onGrab) cursorStyles.onGrab = onGrab;
6101
6115
  }
6116
+ const parsedDragThreshold = parseDraggableFunctionParameter(params.dragThreshold, this);
6117
+ const dragThreshold = { mouse: 3, touch: 7 };
6118
+ if (helpers.isNum(parsedDragThreshold)) {
6119
+ dragThreshold.mouse = parsedDragThreshold;
6120
+ dragThreshold.touch = parsedDragThreshold;
6121
+ } else if (parsedDragThreshold) {
6122
+ const { mouse, touch } = parsedDragThreshold;
6123
+ if (!helpers.isUnd(mouse)) dragThreshold.mouse = mouse;
6124
+ if (!helpers.isUnd(touch)) dragThreshold.touch = touch;
6125
+ }
6102
6126
  this.containerArray = helpers.isArr(container) ? container : null;
6103
6127
  this.$container = /** @type {HTMLElement} */(container && !this.containerArray ? targets.parseTargets(/** @type {DOMTarget} */(container))[0] : consts.doc.body);
6104
6128
  this.useWin = this.$container === consts.doc.body;
@@ -6113,6 +6137,7 @@ function requireDraggable () {
6113
6137
  this.scrollSpeed = values.setValue(parseDraggableFunctionParameter(params.scrollSpeed, this), 1.5);
6114
6138
  this.scrollThreshold = values.setValue(parseDraggableFunctionParameter(params.scrollThreshold, this), 20);
6115
6139
  this.dragSpeed = values.setValue(parseDraggableFunctionParameter(params.dragSpeed, this), 1);
6140
+ this.dragThreshold = this.isFinePointer ? dragThreshold.mouse : dragThreshold.touch;
6116
6141
  this.minVelocity = values.setValue(parseDraggableFunctionParameter(params.minVelocity, this), 0);
6117
6142
  this.maxVelocity = values.setValue(parseDraggableFunctionParameter(params.maxVelocity, this), 50);
6118
6143
  this.velocityMultiplier = values.setValue(parseDraggableFunctionParameter(params.velocityMultiplier, this), 1);
@@ -6414,8 +6439,7 @@ function requireDraggable () {
6414
6439
  this.$trigger.addEventListener('touchend', preventDefault);
6415
6440
 
6416
6441
  // Don't check for a miminim distance move if already dragging
6417
- if (this.dragged || (!this.disabled[0] && helpers.abs(movedX) > 3) || (!this.disabled[1] && helpers.abs(movedY) > 3)) {
6418
-
6442
+ if (this.dragged || (!this.disabled[0] && helpers.abs(movedX) > this.dragThreshold) || (!this.disabled[1] && helpers.abs(movedY) > this.dragThreshold)) {
6419
6443
  this.updateTicker.resume();
6420
6444
  this.pointer[2] = this.pointer[0];
6421
6445
  this.pointer[3] = this.pointer[1];
@@ -6705,7 +6729,7 @@ var time = {};
6705
6729
 
6706
6730
  /**
6707
6731
  * Anime.js - utils - CJS
6708
- * @version v4.2.0
6732
+ * @version v4.2.1
6709
6733
  * @license MIT
6710
6734
  * @copyright 2025 - Julian Garnier
6711
6735
  */
@@ -6769,7 +6793,7 @@ function requireTime () {
6769
6793
 
6770
6794
  /**
6771
6795
  * Anime.js - scope - CJS
6772
- * @version v4.2.0
6796
+ * @version v4.2.1
6773
6797
  * @license MIT
6774
6798
  * @copyright 2025 - Julian Garnier
6775
6799
  */
@@ -7032,7 +7056,7 @@ var scroll = {};
7032
7056
 
7033
7057
  /**
7034
7058
  * Anime.js - events - CJS
7035
- * @version v4.2.0
7059
+ * @version v4.2.1
7036
7060
  * @license MIT
7037
7061
  * @copyright 2025 - Julian Garnier
7038
7062
  */
@@ -7131,6 +7155,8 @@ function requireScroll () {
7131
7155
  /** @type {Number} */
7132
7156
  this.top = 0;
7133
7157
  /** @type {Number} */
7158
+ this.scale = 1;
7159
+ /** @type {Number} */
7134
7160
  this.zIndex = 0;
7135
7161
  /** @type {Number} */
7136
7162
  this.scrollX = 0;
@@ -7242,6 +7268,7 @@ function requireScroll () {
7242
7268
  height = $el.clientHeight;
7243
7269
  this.top = elRect.top;
7244
7270
  this.left = elRect.left;
7271
+ this.scale = elRect.width ? width / elRect.width : (elRect.height ? height / elRect.height : 1);
7245
7272
  }
7246
7273
  this.width = width;
7247
7274
  this.height = height;
@@ -7755,8 +7782,9 @@ function requireScroll () {
7755
7782
  }
7756
7783
  }
7757
7784
  const rect = $target.getBoundingClientRect();
7758
- const offset = isHori ? rect.left + container.scrollX - container.left : rect.top + container.scrollY - container.top;
7759
- const targetSize = isHori ? rect.width : rect.height;
7785
+ const scale = container.scale;
7786
+ const offset = (isHori ? rect.left + container.scrollX - container.left : rect.top + container.scrollY - container.top) * scale;
7787
+ const targetSize = (isHori ? rect.width : rect.height) * scale;
7760
7788
  const containerSize = isHori ? container.width : container.height;
7761
7789
  const scrollSize = isHori ? container.scrollWidth : container.scrollHeight;
7762
7790
  const maxScroll = scrollSize - containerSize;
@@ -7971,7 +7999,7 @@ var cubicBezier = {};
7971
7999
 
7972
8000
  /**
7973
8001
  * Anime.js - easings - CJS
7974
- * @version v4.2.0
8002
+ * @version v4.2.1
7975
8003
  * @license MIT
7976
8004
  * @copyright 2025 - Julian Garnier
7977
8005
  */
@@ -8044,7 +8072,7 @@ var steps = {};
8044
8072
 
8045
8073
  /**
8046
8074
  * Anime.js - easings - CJS
8047
- * @version v4.2.0
8075
+ * @version v4.2.1
8048
8076
  * @license MIT
8049
8077
  * @copyright 2025 - Julian Garnier
8050
8078
  */
@@ -8083,7 +8111,7 @@ var linear = {};
8083
8111
 
8084
8112
  /**
8085
8113
  * Anime.js - easings - CJS
8086
- * @version v4.2.0
8114
+ * @version v4.2.1
8087
8115
  * @license MIT
8088
8116
  * @copyright 2025 - Julian Garnier
8089
8117
  */
@@ -8151,7 +8179,7 @@ var irregular = {};
8151
8179
 
8152
8180
  /**
8153
8181
  * Anime.js - easings - CJS
8154
- * @version v4.2.0
8182
+ * @version v4.2.1
8155
8183
  * @license MIT
8156
8184
  * @copyright 2025 - Julian Garnier
8157
8185
  */
@@ -8199,7 +8227,7 @@ function requireIrregular () {
8199
8227
 
8200
8228
  /**
8201
8229
  * Anime.js - easings - CJS
8202
- * @version v4.2.0
8230
+ * @version v4.2.1
8203
8231
  * @license MIT
8204
8232
  * @copyright 2025 - Julian Garnier
8205
8233
  */
@@ -8236,7 +8264,7 @@ var chainable = {};
8236
8264
 
8237
8265
  /**
8238
8266
  * Anime.js - utils - CJS
8239
- * @version v4.2.0
8267
+ * @version v4.2.1
8240
8268
  * @license MIT
8241
8269
  * @copyright 2025 - Julian Garnier
8242
8270
  */
@@ -8435,7 +8463,7 @@ var random = {};
8435
8463
 
8436
8464
  /**
8437
8465
  * Anime.js - utils - CJS
8438
- * @version v4.2.0
8466
+ * @version v4.2.1
8439
8467
  * @license MIT
8440
8468
  * @copyright 2025 - Julian Garnier
8441
8469
  */
@@ -8521,7 +8549,7 @@ var stagger = {};
8521
8549
 
8522
8550
  /**
8523
8551
  * Anime.js - utils - CJS
8524
- * @version v4.2.0
8552
+ * @version v4.2.1
8525
8553
  * @license MIT
8526
8554
  * @copyright 2025 - Julian Garnier
8527
8555
  */
@@ -8650,7 +8678,7 @@ function requireStagger () {
8650
8678
 
8651
8679
  /**
8652
8680
  * Anime.js - utils - CJS
8653
- * @version v4.2.0
8681
+ * @version v4.2.1
8654
8682
  * @license MIT
8655
8683
  * @copyright 2025 - Julian Garnier
8656
8684
  */
@@ -8706,7 +8734,7 @@ var helpers = {};
8706
8734
 
8707
8735
  /**
8708
8736
  * Anime.js - svg - CJS
8709
- * @version v4.2.0
8737
+ * @version v4.2.1
8710
8738
  * @license MIT
8711
8739
  * @copyright 2025 - Julian Garnier
8712
8740
  */
@@ -8743,7 +8771,7 @@ function requireHelpers () {
8743
8771
 
8744
8772
  /**
8745
8773
  * Anime.js - svg - CJS
8746
- * @version v4.2.0
8774
+ * @version v4.2.1
8747
8775
  * @license MIT
8748
8776
  * @copyright 2025 - Julian Garnier
8749
8777
  */
@@ -8771,20 +8799,24 @@ function requireMotionpath () {
8771
8799
 
8772
8800
  /**
8773
8801
  * @param {SVGGeometryElement} $path
8802
+ * @param {Number} totalLength
8774
8803
  * @param {Number} progress
8775
8804
  * @param {Number}lookup
8776
8805
  * @return {DOMPoint}
8777
8806
  */
8778
- const getPathPoint = ($path, progress, lookup = 0) => {
8779
- return $path.getPointAtLength(progress + lookup >= 1 ? progress + lookup : 0);
8807
+ const getPathPoint = ($path, totalLength, progress, lookup = 0) => {
8808
+ const point = progress + lookup;
8809
+ const pointOnPath = (point % totalLength + totalLength) % totalLength;
8810
+ return $path.getPointAtLength(pointOnPath);
8780
8811
  };
8781
8812
 
8782
8813
  /**
8783
8814
  * @param {SVGGeometryElement} $path
8784
8815
  * @param {String} pathProperty
8816
+ * @param {Number} [offset=0]
8785
8817
  * @return {FunctionValue}
8786
8818
  */
8787
- const getPathProgess = ($path, pathProperty) => {
8819
+ const getPathProgess = ($path, pathProperty, offset = 0) => {
8788
8820
  return $el => {
8789
8821
  const totalLength = +($path.getTotalLength());
8790
8822
  const inSvg = $el[consts.isSvgSymbol];
@@ -8795,12 +8827,14 @@ function requireMotionpath () {
8795
8827
  to: totalLength,
8796
8828
  /** @type {TweenModifier} */
8797
8829
  modifier: progress => {
8830
+ const offsetLength = offset * totalLength;
8831
+ const newProgress = progress + offsetLength;
8798
8832
  if (pathProperty === 'a') {
8799
- const p0 = getPathPoint($path, progress, -1);
8800
- const p1 = getPathPoint($path, progress, 1);
8833
+ const p0 = getPathPoint($path, totalLength, newProgress, -1);
8834
+ const p1 = getPathPoint($path, totalLength, newProgress, 1);
8801
8835
  return helpers$1.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / helpers$1.PI;
8802
8836
  } else {
8803
- const p = getPathPoint($path, progress, 0);
8837
+ const p = getPathPoint($path, totalLength, newProgress, 0);
8804
8838
  return pathProperty === 'x' ?
8805
8839
  inSvg || !ctm ? p.x : p.x * ctm.a + p.y * ctm.c + ctm.e :
8806
8840
  inSvg || !ctm ? p.y : p.x * ctm.b + p.y * ctm.d + ctm.f
@@ -8812,14 +8846,15 @@ function requireMotionpath () {
8812
8846
 
8813
8847
  /**
8814
8848
  * @param {TargetsParam} path
8849
+ * @param {Number} [offset=0]
8815
8850
  */
8816
- const createMotionPath = path => {
8851
+ const createMotionPath = (path, offset = 0) => {
8817
8852
  const $path = helpers.getPath(path);
8818
8853
  if (!$path) return;
8819
8854
  return {
8820
- translateX: getPathProgess($path, 'x'),
8821
- translateY: getPathProgess($path, 'y'),
8822
- rotate: getPathProgess($path, 'a'),
8855
+ translateX: getPathProgess($path, 'x', offset),
8856
+ translateY: getPathProgess($path, 'y', offset),
8857
+ rotate: getPathProgess($path, 'a', offset),
8823
8858
  }
8824
8859
  };
8825
8860
 
@@ -8831,7 +8866,7 @@ var drawable = {};
8831
8866
 
8832
8867
  /**
8833
8868
  * Anime.js - svg - CJS
8834
- * @version v4.2.0
8869
+ * @version v4.2.1
8835
8870
  * @license MIT
8836
8871
  * @copyright 2025 - Julian Garnier
8837
8872
  */
@@ -8959,7 +8994,7 @@ var morphto = {};
8959
8994
 
8960
8995
  /**
8961
8996
  * Anime.js - svg - CJS
8962
- * @version v4.2.0
8997
+ * @version v4.2.1
8963
8998
  * @license MIT
8964
8999
  * @copyright 2025 - Julian Garnier
8965
9000
  */
@@ -8987,8 +9022,18 @@ function requireMorphto () {
8987
9022
  * @return {FunctionValue}
8988
9023
  */
8989
9024
  const morphTo = (path2, precision = .33) => ($path1) => {
9025
+ const tagName1 = ($path1.tagName || '').toLowerCase();
9026
+ if (!tagName1.match(/^(path|polygon|polyline)$/)) {
9027
+ throw new Error(`Can't morph a <${$path1.tagName}> SVG element. Use <path>, <polygon> or <polyline>.`);
9028
+ }
8990
9029
  const $path2 = /** @type {SVGGeometryElement} */(helpers.getPath(path2));
8991
- if (!$path2) return;
9030
+ if (!$path2) {
9031
+ throw new Error("Can't morph to an invalid target. 'path2' must resolve to an existing <path>, <polygon> or <polyline> SVG element.");
9032
+ }
9033
+ const tagName2 = ($path2.tagName || '').toLowerCase();
9034
+ if (!tagName2.match(/^(path|polygon|polyline)$/)) {
9035
+ throw new Error(`Can't morph a <${$path2.tagName}> SVG element. Use <path>, <polygon> or <polyline>.`);
9036
+ }
8992
9037
  const isPath = $path1.tagName === 'path';
8993
9038
  const separator = isPath ? ' ' : ',';
8994
9039
  const previousPoints = $path1[consts.morphPointsSymbol];
@@ -9024,7 +9069,7 @@ function requireMorphto () {
9024
9069
 
9025
9070
  /**
9026
9071
  * Anime.js - svg - CJS
9027
- * @version v4.2.0
9072
+ * @version v4.2.1
9028
9073
  * @license MIT
9029
9074
  * @copyright 2025 - Julian Garnier
9030
9075
  */
@@ -9053,7 +9098,7 @@ var split = {};
9053
9098
 
9054
9099
  /**
9055
9100
  * Anime.js - text - CJS
9056
- * @version v4.2.0
9101
+ * @version v4.2.1
9057
9102
  * @license MIT
9058
9103
  * @copyright 2025 - Julian Garnier
9059
9104
  */
@@ -9548,7 +9593,7 @@ function requireSplit () {
9548
9593
 
9549
9594
  /**
9550
9595
  * Anime.js - text - CJS
9551
- * @version v4.2.0
9596
+ * @version v4.2.1
9552
9597
  * @license MIT
9553
9598
  * @copyright 2025 - Julian Garnier
9554
9599
  */
@@ -9573,7 +9618,7 @@ var waapi = {};
9573
9618
 
9574
9619
  /**
9575
9620
  * Anime.js - waapi - CJS
9576
- * @version v4.2.0
9621
+ * @version v4.2.1
9577
9622
  * @license MIT
9578
9623
  * @copyright 2025 - Julian Garnier
9579
9624
  */
@@ -9604,7 +9649,6 @@ function requireWaapi () {
9604
9649
  * WAAPIAnimationParams,
9605
9650
  * WAAPITweenOptions,
9606
9651
  * WAAPIKeyframeValue,
9607
- * WAAPICallback,
9608
9652
  * WAAPITweenValue
9609
9653
  * } from '../types/index.js'
9610
9654
  */
@@ -10036,14 +10080,18 @@ function requireWaapi () {
10036
10080
  }
10037
10081
 
10038
10082
  /**
10039
- * @param {WAAPICallback} [callback]
10040
- * @return {Promise}
10083
+ * @typedef {this & {then: null}} ResolvedWAAPIAnimation
10084
+ */
10085
+
10086
+ /**
10087
+ * @param {Callback<ResolvedWAAPIAnimation>} [callback]
10088
+ * @return Promise<this>
10041
10089
  */
10042
10090
  then(callback = consts.noop) {
10043
10091
  const then = this.then;
10044
10092
  const onResolve = () => {
10045
10093
  this.then = null;
10046
- callback(this);
10094
+ callback(/** @type {ResolvedWAAPIAnimation} */(this));
10047
10095
  this.then = then;
10048
10096
  this._resolve = consts.noop;
10049
10097
  };
@@ -10072,7 +10120,7 @@ function requireWaapi () {
10072
10120
 
10073
10121
  /**
10074
10122
  * Anime.js - CJS
10075
- * @version v4.2.0
10123
+ * @version v4.2.1
10076
10124
  * @license MIT
10077
10125
  * @copyright 2025 - Julian Garnier
10078
10126
  */