funnel-gfx-wc 0.1.83 → 0.1.85
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/dist/cjs/funnel-app.cjs.entry.js +190 -45
- package/dist/collection/styles/shadow.css +1 -1
- package/dist/collection/tokens.css +1 -1
- package/dist/collection/utils/tw-version.js +1 -1
- package/dist/esm/funnel-app.entry.js +190 -45
- package/dist/funnel-gfx-wc/funnel-gfx-wc.esm.js +1 -1
- package/dist/funnel-gfx-wc/p-6f91ebbd.entry.js +1 -0
- package/dist/funnel-gfx-wc/tokens.css +1 -1
- package/dist/types/utils/tw-version.d.ts +1 -1
- package/package.json +3 -3
- package/dist/funnel-gfx-wc/p-bdbba176.entry.js +0 -1
|
@@ -335,7 +335,7 @@ const actions = {
|
|
|
335
335
|
};
|
|
336
336
|
|
|
337
337
|
// WARNING: generated file...
|
|
338
|
-
const TW_VERSION = '4.1.
|
|
338
|
+
const TW_VERSION = '4.1.12';
|
|
339
339
|
|
|
340
340
|
const ColorPicker = props => {
|
|
341
341
|
const { actions, state } = props;
|
|
@@ -428,14 +428,14 @@ const DataValues = props => {
|
|
|
428
428
|
|
|
429
429
|
/**
|
|
430
430
|
* anime.js - ESM
|
|
431
|
-
* @version v4.1.
|
|
431
|
+
* @version v4.1.3
|
|
432
432
|
* @author Julian Garnier
|
|
433
433
|
* @license MIT
|
|
434
434
|
* @copyright (c) 2025 Julian Garnier
|
|
435
435
|
* @see https://animejs.com
|
|
436
436
|
*/
|
|
437
437
|
|
|
438
|
-
// Global types
|
|
438
|
+
// Global types ////////////////////////////////////////////////////////////////
|
|
439
439
|
|
|
440
440
|
/**
|
|
441
441
|
* @typedef {Object} DefaultsParams
|
|
@@ -466,17 +466,18 @@ const DataValues = props => {
|
|
|
466
466
|
/** @typedef {JSAnimation|Timeline} Renderable */
|
|
467
467
|
/** @typedef {Timer|Renderable} Tickable */
|
|
468
468
|
/** @typedef {Timer&JSAnimation&Timeline} CallbackArgument */
|
|
469
|
-
/** @typedef {Animatable|Tickable|Draggable|ScrollObserver|TextSplitter|Scope} Revertible */
|
|
469
|
+
/** @typedef {Animatable|Tickable|WAAPIAnimation|Draggable|ScrollObserver|TextSplitter|Scope} Revertible */
|
|
470
470
|
|
|
471
|
-
// Stagger types
|
|
471
|
+
// Stagger types ///////////////////////////////////////////////////////////////
|
|
472
472
|
|
|
473
473
|
/**
|
|
474
|
+
* @template T
|
|
474
475
|
* @callback StaggerFunction
|
|
475
476
|
* @param {Target} [target]
|
|
476
477
|
* @param {Number} [index]
|
|
477
478
|
* @param {Number} [length]
|
|
478
479
|
* @param {Timeline} [tl]
|
|
479
|
-
* @return {
|
|
480
|
+
* @return {T}
|
|
480
481
|
*/
|
|
481
482
|
|
|
482
483
|
/**
|
|
@@ -486,13 +487,13 @@ const DataValues = props => {
|
|
|
486
487
|
* @property {Boolean} [reversed]
|
|
487
488
|
* @property {Array.<Number>} [grid]
|
|
488
489
|
* @property {('x'|'y')} [axis]
|
|
489
|
-
* @property {String|
|
|
490
|
+
* @property {String|((target: Target, i: Number, length: Number) => Number)} [use]
|
|
490
491
|
* @property {Number} [total]
|
|
491
492
|
* @property {EasingParam} [ease]
|
|
492
493
|
* @property {TweenModifier} [modifier]
|
|
493
494
|
*/
|
|
494
495
|
|
|
495
|
-
// Eases types
|
|
496
|
+
// Eases types /////////////////////////////////////////////////////////////////
|
|
496
497
|
|
|
497
498
|
/**
|
|
498
499
|
* @callback EasingFunction
|
|
@@ -520,7 +521,17 @@ const DataValues = props => {
|
|
|
520
521
|
/** @typedef {Array.<TargetSelector>|TargetSelector} TargetsParam */
|
|
521
522
|
/** @typedef {Array.<Target>} TargetsArray */
|
|
522
523
|
|
|
523
|
-
|
|
524
|
+
// Spring types ////////////////////////////////////////////////////////////////
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* @typedef {Object} SpringParams
|
|
528
|
+
* @property {Number} [mass=1] - Mass, default 1
|
|
529
|
+
* @property {Number} [stiffness=100] - Stiffness, default 100
|
|
530
|
+
* @property {Number} [damping=10] - Damping, default 10
|
|
531
|
+
* @property {Number} [velocity=0] - Initial velocity, default 0
|
|
532
|
+
*/
|
|
533
|
+
|
|
534
|
+
// Callback types //////////////////////////////////////////////////////////////
|
|
524
535
|
|
|
525
536
|
/**
|
|
526
537
|
* @template T
|
|
@@ -547,7 +558,7 @@ const DataValues = props => {
|
|
|
547
558
|
* @property {Callback<T>} [onRender]
|
|
548
559
|
*/
|
|
549
560
|
|
|
550
|
-
// Timer types
|
|
561
|
+
// Timer types /////////////////////////////////////////////////////////////////
|
|
551
562
|
|
|
552
563
|
/**
|
|
553
564
|
* @typedef {Object} TimerOptions
|
|
@@ -569,7 +580,7 @@ const DataValues = props => {
|
|
|
569
580
|
* @typedef {TimerOptions & TickableCallbacks<Timer>} TimerParams
|
|
570
581
|
*/
|
|
571
582
|
|
|
572
|
-
// Tween types
|
|
583
|
+
// Tween types /////////////////////////////////////////////////////////////////
|
|
573
584
|
|
|
574
585
|
/**
|
|
575
586
|
* @callback FunctionValue
|
|
@@ -640,7 +651,7 @@ const DataValues = props => {
|
|
|
640
651
|
/** @typedef {WeakMap.<Target, TweenLookups>} TweenReplaceLookups */
|
|
641
652
|
/** @typedef {Map.<Target, TweenLookups>} TweenAdditiveLookups */
|
|
642
653
|
|
|
643
|
-
//
|
|
654
|
+
// JSAnimation types ///////////////////////////////////////////////////////////
|
|
644
655
|
|
|
645
656
|
/**
|
|
646
657
|
* @typedef {Number|String|FunctionValue} TweenParamValue
|
|
@@ -714,7 +725,36 @@ const DataValues = props => {
|
|
|
714
725
|
* @typedef {Record<String, TweenOptions | Callback<JSAnimation> | TweenModifier | boolean | PercentageKeyframes | DurationKeyframes | ScrollObserver> & TimerOptions & AnimationOptions & TweenParamsOptions & TickableCallbacks<JSAnimation> & RenderableCallbacks<JSAnimation>} AnimationParams
|
|
715
726
|
*/
|
|
716
727
|
|
|
717
|
-
// Timeline types
|
|
728
|
+
// Timeline types //////////////////////////////////////////////////////////////
|
|
729
|
+
|
|
730
|
+
/**
|
|
731
|
+
* Accepts:<br>
|
|
732
|
+
* - `Number` - Absolute position in milliseconds (e.g., `500` places element at exactly 500ms)<br>
|
|
733
|
+
* - `'+=Number'` - Addition: Position element X ms after the last element (e.g., `'+=100'`)<br>
|
|
734
|
+
* - `'-=Number'` - Subtraction: Position element X ms before the last element's end (e.g., `'-=100'`)<br>
|
|
735
|
+
* - `'*=Number'` - Multiplier: Position element at a fraction of the total duration (e.g., `'*=.5'` for halfway)<br>
|
|
736
|
+
* - `'<'` - Previous end: Position element at the end position of the previous element<br>
|
|
737
|
+
* - `'<<'` - Previous start: Position element at the start position of the previous element<br>
|
|
738
|
+
* - `'<<+=Number'` - Combined: Position element relative to previous element's start (e.g., `'<<+=250'`)<br>
|
|
739
|
+
* - `'label'` - Label: Position element at a named label position (e.g., `'My Label'`)
|
|
740
|
+
*
|
|
741
|
+
* @typedef {Number|`+=${Number}`|`-=${Number}`|`*=${Number}`|'<'|'<<'|`<<+=${Number}`|`<<-=${Number}`|String} TimelinePosition
|
|
742
|
+
*/
|
|
743
|
+
|
|
744
|
+
/**
|
|
745
|
+
* Accepts:<br>
|
|
746
|
+
* - `Number` - Absolute position in milliseconds (e.g., `500` places animation at exactly 500ms)<br>
|
|
747
|
+
* - `'+=Number'` - Addition: Position animation X ms after the last animation (e.g., `'+=100'`)<br>
|
|
748
|
+
* - `'-=Number'` - Subtraction: Position animation X ms before the last animation's end (e.g., `'-=100'`)<br>
|
|
749
|
+
* - `'*=Number'` - Multiplier: Position animation at a fraction of the total duration (e.g., `'*=.5'` for halfway)<br>
|
|
750
|
+
* - `'<'` - Previous end: Position animation at the end position of the previous animation<br>
|
|
751
|
+
* - `'<<'` - Previous start: Position animation at the start position of the previous animation<br>
|
|
752
|
+
* - `'<<+=Number'` - Combined: Position animation relative to previous animation's start (e.g., `'<<+=250'`)<br>
|
|
753
|
+
* - `'label'` - Label: Position animation at a named label position (e.g., `'My Label'`)<br>
|
|
754
|
+
* - `stagger(String|Nummber)` - Stagger multi-elements animation positions (e.g., 10, 20, 30...)
|
|
755
|
+
*
|
|
756
|
+
* @typedef {TimelinePosition | StaggerFunction<Number|String>} TimelineAnimationPosition
|
|
757
|
+
*/
|
|
718
758
|
|
|
719
759
|
/**
|
|
720
760
|
* @typedef {Object} TimelineOptions
|
|
@@ -726,7 +766,57 @@ const DataValues = props => {
|
|
|
726
766
|
* @typedef {TimerOptions & TimelineOptions & TickableCallbacks<Timeline> & RenderableCallbacks<Timeline>} TimelineParams
|
|
727
767
|
*/
|
|
728
768
|
|
|
729
|
-
//
|
|
769
|
+
// WAAPIAnimation types ////////////////////////////////////////////////////////
|
|
770
|
+
|
|
771
|
+
/**
|
|
772
|
+
* @typedef {String|Number|Array<String>|Array<Number>} WAAPITweenValue
|
|
773
|
+
*/
|
|
774
|
+
|
|
775
|
+
/**
|
|
776
|
+
* @callback WAAPIFunctionValue
|
|
777
|
+
* @param {DOMTarget} target - The animated target
|
|
778
|
+
* @param {Number} index - The target index
|
|
779
|
+
* @param {Number} length - The total number of animated targets
|
|
780
|
+
* @return {WAAPITweenValue}
|
|
781
|
+
*/
|
|
782
|
+
|
|
783
|
+
/**
|
|
784
|
+
* @typedef {WAAPITweenValue|WAAPIFunctionValue|Array<String|Number|WAAPIFunctionValue>} WAAPIKeyframeValue
|
|
785
|
+
*/
|
|
786
|
+
|
|
787
|
+
/**
|
|
788
|
+
* @typedef {(animation: WAAPIAnimation) => void} WAAPICallback
|
|
789
|
+
*/
|
|
790
|
+
|
|
791
|
+
/**
|
|
792
|
+
* @typedef {Object} WAAPITweenOptions
|
|
793
|
+
* @property {WAAPIKeyframeValue} [to]
|
|
794
|
+
* @property {WAAPIKeyframeValue} [from]
|
|
795
|
+
* @property {Number|WAAPIFunctionValue} [duration]
|
|
796
|
+
* @property {Number|WAAPIFunctionValue} [delay]
|
|
797
|
+
* @property {EasingParam} [ease]
|
|
798
|
+
* @property {CompositeOperation} [composition]
|
|
799
|
+
*/
|
|
800
|
+
|
|
801
|
+
/**
|
|
802
|
+
* @typedef {Object} WAAPIAnimationOptions
|
|
803
|
+
* @property {Number|Boolean} [loop]
|
|
804
|
+
* @property {Boolean} [Reversed]
|
|
805
|
+
* @property {Boolean} [Alternate]
|
|
806
|
+
* @property {Boolean|ScrollObserver} [autoplay]
|
|
807
|
+
* @property {Number} [playbackRate]
|
|
808
|
+
* @property {Number|WAAPIFunctionValue} [duration]
|
|
809
|
+
* @property {Number|WAAPIFunctionValue} [delay]
|
|
810
|
+
* @property {EasingParam} [ease]
|
|
811
|
+
* @property {CompositeOperation} [composition]
|
|
812
|
+
* @property {WAAPICallback} [onComplete]
|
|
813
|
+
*/
|
|
814
|
+
|
|
815
|
+
/**
|
|
816
|
+
* @typedef {Record<String, WAAPIKeyframeValue | WAAPIAnimationOptions | Boolean | ScrollObserver | WAAPICallback | EasingParam | WAAPITweenOptions> & WAAPIAnimationOptions} WAAPIAnimationParams
|
|
817
|
+
*/
|
|
818
|
+
|
|
819
|
+
// Animatable types ////////////////////////////////////////////////////////////
|
|
730
820
|
|
|
731
821
|
/**
|
|
732
822
|
* @callback AnimatablePropertySetter
|
|
@@ -762,7 +852,7 @@ const DataValues = props => {
|
|
|
762
852
|
* @typedef {Record<String, TweenParamValue | EasingParam | TweenModifier | TweenComposition | AnimatablePropertyParamsOptions> & AnimatablePropertyParamsOptions} AnimatableParams
|
|
763
853
|
*/
|
|
764
854
|
|
|
765
|
-
// Scope types
|
|
855
|
+
// Scope types /////////////////////////////////////////////////////////////////
|
|
766
856
|
|
|
767
857
|
/**
|
|
768
858
|
* @typedef {Object} ReactRef
|
|
@@ -805,7 +895,52 @@ const DataValues = props => {
|
|
|
805
895
|
* @return {ScopeCleanupCallback|void}
|
|
806
896
|
*/
|
|
807
897
|
|
|
808
|
-
//
|
|
898
|
+
// Scroll types ////////////////////////////////////////////////////////////////
|
|
899
|
+
|
|
900
|
+
/**
|
|
901
|
+
* @typedef {String|Number} ScrollThresholdValue
|
|
902
|
+
*/
|
|
903
|
+
|
|
904
|
+
/**
|
|
905
|
+
* @typedef {Object} ScrollThresholdParam
|
|
906
|
+
* @property {ScrollThresholdValue} [target]
|
|
907
|
+
* @property {ScrollThresholdValue} [container]
|
|
908
|
+
*/
|
|
909
|
+
|
|
910
|
+
/**
|
|
911
|
+
* @callback ScrollObserverAxisCallback
|
|
912
|
+
* @param {ScrollObserver} self
|
|
913
|
+
* @return {'x'|'y'}
|
|
914
|
+
*/
|
|
915
|
+
|
|
916
|
+
/**
|
|
917
|
+
* @callback ScrollThresholdCallback
|
|
918
|
+
* @param {ScrollObserver} self
|
|
919
|
+
* @return {ScrollThresholdValue|ScrollThresholdParam}
|
|
920
|
+
*/
|
|
921
|
+
|
|
922
|
+
/**
|
|
923
|
+
* @typedef {Object} ScrollObserverParams
|
|
924
|
+
* @property {Number|String} [id]
|
|
925
|
+
* @property {Boolean|Number|String|EasingParam} [sync]
|
|
926
|
+
* @property {TargetsParam} [container]
|
|
927
|
+
* @property {TargetsParam} [target]
|
|
928
|
+
* @property {'x'|'y'|ScrollObserverAxisCallback|((observer: ScrollObserver) => 'x'|'y'|ScrollObserverAxisCallback)} [axis]
|
|
929
|
+
* @property {ScrollThresholdValue|ScrollThresholdParam|ScrollThresholdCallback|((observer: ScrollObserver) => ScrollThresholdValue|ScrollThresholdParam|ScrollThresholdCallback)} [enter]
|
|
930
|
+
* @property {ScrollThresholdValue|ScrollThresholdParam|ScrollThresholdCallback|((observer: ScrollObserver) => ScrollThresholdValue|ScrollThresholdParam|ScrollThresholdCallback)} [leave]
|
|
931
|
+
* @property {Boolean|((observer: ScrollObserver) => Boolean)} [repeat]
|
|
932
|
+
* @property {Boolean} [debug]
|
|
933
|
+
* @property {Callback<ScrollObserver>} [onEnter]
|
|
934
|
+
* @property {Callback<ScrollObserver>} [onLeave]
|
|
935
|
+
* @property {Callback<ScrollObserver>} [onEnterForward]
|
|
936
|
+
* @property {Callback<ScrollObserver>} [onLeaveForward]
|
|
937
|
+
* @property {Callback<ScrollObserver>} [onEnterBackward]
|
|
938
|
+
* @property {Callback<ScrollObserver>} [onLeaveBackward]
|
|
939
|
+
* @property {Callback<ScrollObserver>} [onUpdate]
|
|
940
|
+
* @property {Callback<ScrollObserver>} [onSyncComplete]
|
|
941
|
+
*/
|
|
942
|
+
|
|
943
|
+
// Draggable types /////////////////////////////////////////////////////////////
|
|
809
944
|
|
|
810
945
|
/**
|
|
811
946
|
* @typedef {Object} DraggableAxisParam
|
|
@@ -854,7 +989,7 @@ const DataValues = props => {
|
|
|
854
989
|
* @property {Callback<Draggable>} [onAfterResize]
|
|
855
990
|
*/
|
|
856
991
|
|
|
857
|
-
// Text types
|
|
992
|
+
// Text types //////////////////////////////////////////////////////////////////
|
|
858
993
|
|
|
859
994
|
/**
|
|
860
995
|
* @typedef {Object} splitTemplateParams
|
|
@@ -883,7 +1018,7 @@ const DataValues = props => {
|
|
|
883
1018
|
* @property {Boolean} [debug]
|
|
884
1019
|
*/
|
|
885
1020
|
|
|
886
|
-
// SVG types
|
|
1021
|
+
// SVG types ///////////////////////////////////////////////////////////////////
|
|
887
1022
|
|
|
888
1023
|
/**
|
|
889
1024
|
* @typedef {SVGGeometryElement & {
|
|
@@ -1043,13 +1178,13 @@ const globals = {
|
|
|
1043
1178
|
defaults,
|
|
1044
1179
|
/** @type {Number} */
|
|
1045
1180
|
precision: 4,
|
|
1046
|
-
/** @type {Number} */
|
|
1181
|
+
/** @type {Number} equals 1 in ms mode, 0.001 in s mode */
|
|
1047
1182
|
timeScale: 1,
|
|
1048
1183
|
/** @type {Number} */
|
|
1049
1184
|
tickThreshold: 200,
|
|
1050
1185
|
};
|
|
1051
1186
|
|
|
1052
|
-
const globalVersions = { version: '4.1.
|
|
1187
|
+
const globalVersions = { version: '4.1.3', engine: null };
|
|
1053
1188
|
|
|
1054
1189
|
if (isBrowser) {
|
|
1055
1190
|
if (!win.AnimeJS) win.AnimeJS = [];
|
|
@@ -1072,7 +1207,6 @@ const toLowerCase = str => str.replace(lowerCaseRgx, '$1-$2').toLowerCase();
|
|
|
1072
1207
|
*/
|
|
1073
1208
|
const stringStartsWith = (str, sub) => str.indexOf(sub) === 0;
|
|
1074
1209
|
|
|
1075
|
-
// Time
|
|
1076
1210
|
// Note: Date.now is used instead of performance.now since it is precise enough for timings calculations, performs slightly faster and works in Node.js environement.
|
|
1077
1211
|
const now = Date.now;
|
|
1078
1212
|
|
|
@@ -1774,9 +1908,10 @@ class Engine extends Clock {
|
|
|
1774
1908
|
this.pauseOnDocumentHidden = true;
|
|
1775
1909
|
/** @type {DefaultsParams} */
|
|
1776
1910
|
this.defaults = defaults;
|
|
1777
|
-
this.paused = isBrowser && doc.hidden ? true : false;
|
|
1911
|
+
// this.paused = isBrowser && doc.hidden ? true : false;
|
|
1912
|
+
this.paused = true;
|
|
1778
1913
|
/** @type {Number|NodeJS.Immediate} */
|
|
1779
|
-
this.reqId =
|
|
1914
|
+
this.reqId = 0;
|
|
1780
1915
|
}
|
|
1781
1916
|
|
|
1782
1917
|
update() {
|
|
@@ -1811,13 +1946,16 @@ class Engine extends Clock {
|
|
|
1811
1946
|
}
|
|
1812
1947
|
|
|
1813
1948
|
wake() {
|
|
1814
|
-
if (this.useDefaultMainLoop && !this.reqId
|
|
1949
|
+
if (this.useDefaultMainLoop && !this.reqId) {
|
|
1950
|
+
// Imediatly request a tick to update engine._elapsedTime and get accurate offsetPosition calculation in timer.js
|
|
1951
|
+
this.requestTick(now());
|
|
1815
1952
|
this.reqId = engineTickMethod(tickEngine);
|
|
1816
1953
|
}
|
|
1817
1954
|
return this;
|
|
1818
1955
|
}
|
|
1819
1956
|
|
|
1820
1957
|
pause() {
|
|
1958
|
+
if (!this.reqId) return;
|
|
1821
1959
|
this.paused = true;
|
|
1822
1960
|
return killEngine();
|
|
1823
1961
|
}
|
|
@@ -1958,6 +2096,7 @@ function getNodeList(v) {
|
|
|
1958
2096
|
*/
|
|
1959
2097
|
function parseTargets(targets) {
|
|
1960
2098
|
if (isNil(targets)) return /** @type {TargetsArray} */([]);
|
|
2099
|
+
if (!isBrowser) return /** @type {JSTargetsArray} */(isArr(targets) && targets.flat(Infinity) || [targets]);
|
|
1961
2100
|
if (isArr(targets)) {
|
|
1962
2101
|
const flattened = targets.flat(Infinity);
|
|
1963
2102
|
/** @type {TargetsArray} */
|
|
@@ -1998,7 +2137,6 @@ function parseTargets(targets) {
|
|
|
1998
2137
|
}
|
|
1999
2138
|
return parsed;
|
|
2000
2139
|
}
|
|
2001
|
-
if (!isBrowser) return /** @type {JSTargetsArray} */([targets]);
|
|
2002
2140
|
const nodeList = getNodeList(targets);
|
|
2003
2141
|
if (nodeList) return /** @type {DOMTargetsArray} */(Array.from(nodeList));
|
|
2004
2142
|
return /** @type {TargetsArray} */([targets]);
|
|
@@ -2437,12 +2575,16 @@ const composeTween = (tween, siblings) => {
|
|
|
2437
2575
|
|
|
2438
2576
|
const prevChangeStartTime = prevSibling._startTime;
|
|
2439
2577
|
const prevTLOffset = prevAbsEndTime - (prevChangeStartTime + prevSibling._updateDuration);
|
|
2578
|
+
// Rounding is necessary here to minimize floating point errors when working in seconds
|
|
2579
|
+
const updatedPrevChangeDuration = round(absoluteUpdateStartTime - prevTLOffset - prevChangeStartTime, 12);
|
|
2440
2580
|
|
|
2441
|
-
prevSibling._changeDuration =
|
|
2442
|
-
prevSibling._currentTime =
|
|
2581
|
+
prevSibling._changeDuration = updatedPrevChangeDuration;
|
|
2582
|
+
prevSibling._currentTime = updatedPrevChangeDuration;
|
|
2443
2583
|
prevSibling._isOverlapped = 1;
|
|
2444
2584
|
|
|
2445
|
-
if
|
|
2585
|
+
// Override the previous tween if its new _changeDuration is lower than minValue
|
|
2586
|
+
// TODO: See if it's even neceseeary to test against minValue, checking for 0 might be enough
|
|
2587
|
+
if (updatedPrevChangeDuration < minValue) {
|
|
2446
2588
|
overrideTween(prevSibling);
|
|
2447
2589
|
}
|
|
2448
2590
|
}
|
|
@@ -2473,7 +2615,7 @@ const composeTween = (tween, siblings) => {
|
|
|
2473
2615
|
prevParent.cancel();
|
|
2474
2616
|
// Previously, calling .cancel() on a timeline child would affect the render order of other children
|
|
2475
2617
|
// Worked around this by marking it as .completed and using .pause() for safe removal in the engine loop
|
|
2476
|
-
// This is no longer needed since timeline tween composition is now handled
|
|
2618
|
+
// This is no longer needed since timeline tween composition is now handled separately
|
|
2477
2619
|
// Keeping this here for reference
|
|
2478
2620
|
// prevParent.completed = true;
|
|
2479
2621
|
// prevParent.pause();
|
|
@@ -2670,18 +2812,17 @@ class Timer extends Clock {
|
|
|
2670
2812
|
/** @type {Number} */(timerLoop) < 0 ? Infinity :
|
|
2671
2813
|
/** @type {Number} */(timerLoop) + 1;
|
|
2672
2814
|
|
|
2815
|
+
|
|
2673
2816
|
let offsetPosition = 0;
|
|
2674
2817
|
|
|
2675
2818
|
if (parent) {
|
|
2676
2819
|
offsetPosition = parentPosition;
|
|
2677
2820
|
} else {
|
|
2678
|
-
|
|
2679
|
-
//
|
|
2680
|
-
if (engine.
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
}
|
|
2684
|
-
offsetPosition = startTime - engine._startTime;
|
|
2821
|
+
// Make sure to tick the engine once if not currently running to get up to date engine._elapsedTime
|
|
2822
|
+
// to avoid big gaps with the following offsetPosition calculation
|
|
2823
|
+
if (!engine.reqId) engine.requestTick(now());
|
|
2824
|
+
// Make sure to scale the offset position with globals.timeScale to properly handle seconds unit
|
|
2825
|
+
offsetPosition = (engine._elapsedTime - engine._startTime) * globals.timeScale;
|
|
2685
2826
|
}
|
|
2686
2827
|
|
|
2687
2828
|
// Timer's parameters
|
|
@@ -2882,6 +3023,9 @@ class Timer extends Clock {
|
|
|
2882
3023
|
/** @return {this} */
|
|
2883
3024
|
resetTime() {
|
|
2884
3025
|
const timeScale = 1 / (this._speed * engine._speed);
|
|
3026
|
+
// TODO: See if we can safely use engine._elapsedTime here
|
|
3027
|
+
// if (!engine.reqId) engine.requestTick(now())
|
|
3028
|
+
// this._startTime = engine._elapsedTime - (this._currentTime + this._delay) * timeScale;
|
|
2885
3029
|
this._startTime = now() - (this._currentTime + this._delay) * timeScale;
|
|
2886
3030
|
return this;
|
|
2887
3031
|
}
|
|
@@ -3080,10 +3224,10 @@ const binarySubdivide = (aX, mX1, mX2) => {
|
|
|
3080
3224
|
};
|
|
3081
3225
|
|
|
3082
3226
|
/**
|
|
3083
|
-
* @param {Number} [mX1]
|
|
3084
|
-
* @param {Number} [mY1]
|
|
3085
|
-
* @param {Number} [mX2]
|
|
3086
|
-
* @param {Number} [mY2]
|
|
3227
|
+
* @param {Number} [mX1] The x coordinate of the first point
|
|
3228
|
+
* @param {Number} [mY1] The y coordinate of the first point
|
|
3229
|
+
* @param {Number} [mX2] The x coordinate of the second point
|
|
3230
|
+
* @param {Number} [mY2] The y coordinate of the second point
|
|
3087
3231
|
* @return {EasingFunction}
|
|
3088
3232
|
*/
|
|
3089
3233
|
|
|
@@ -3106,7 +3250,7 @@ const steps = (steps = 10, fromStart) => {
|
|
|
3106
3250
|
/**
|
|
3107
3251
|
* Without parameters, the linear function creates a non-eased transition.
|
|
3108
3252
|
* Parameters, if used, creates a piecewise linear easing by interpolating linearly between the specified points.
|
|
3109
|
-
* @param {...String|Number}
|
|
3253
|
+
* @param {...(String|Number)} args - Points
|
|
3110
3254
|
* @return {EasingFunction}
|
|
3111
3255
|
*/
|
|
3112
3256
|
const linear = (...args) => {
|
|
@@ -3753,7 +3897,8 @@ class JSAnimation extends Timer {
|
|
|
3753
3897
|
const isFromToArray = isArr(tweenToValue);
|
|
3754
3898
|
const isFromToValue = isFromToArray || (hasFromvalue && hasToValue);
|
|
3755
3899
|
const tweenStartTime = prevTween ? lastTweenChangeEndTime + tweenDelay : tweenDelay;
|
|
3756
|
-
|
|
3900
|
+
// Rounding is necessary here to minimize floating point errors when working in seconds
|
|
3901
|
+
const absoluteStartTime = round(absoluteOffsetTime + tweenStartTime, 12);
|
|
3757
3902
|
|
|
3758
3903
|
// Force a onRender callback if the animation contains at least one from value and autoplay is set to false
|
|
3759
3904
|
if (!shouldTriggerRender && (hasFromvalue || isFromToArray)) shouldTriggerRender = 1;
|
|
@@ -3881,7 +4026,7 @@ class JSAnimation extends Timer {
|
|
|
3881
4026
|
|
|
3882
4027
|
// Tween factory
|
|
3883
4028
|
|
|
3884
|
-
// Rounding is necessary here to minimize floating point errors
|
|
4029
|
+
// Rounding is necessary here to minimize floating point errors when working in seconds
|
|
3885
4030
|
const tweenUpdateDuration = round(+tweenDuration || minValue, 12);
|
|
3886
4031
|
|
|
3887
4032
|
/** @type {Tween} */
|
|
@@ -3930,7 +4075,7 @@ class JSAnimation extends Timer {
|
|
|
3930
4075
|
if (isNaN(firstTweenChangeStartTime)) {
|
|
3931
4076
|
firstTweenChangeStartTime = tween._startTime;
|
|
3932
4077
|
}
|
|
3933
|
-
// Rounding is necessary here to minimize floating point errors
|
|
4078
|
+
// Rounding is necessary here to minimize floating point errors when working in seconds
|
|
3934
4079
|
lastTweenChangeEndTime = round(tweenStartTime + tweenUpdateDuration, 12);
|
|
3935
4080
|
prevTween = tween;
|
|
3936
4081
|
animationAnimationLength++;
|
|
@@ -4181,7 +4326,7 @@ const Eswat2Io = _props => {
|
|
|
4181
4326
|
index.h(Fingerprint, { label: "eswat2" })));
|
|
4182
4327
|
};
|
|
4183
4328
|
|
|
4184
|
-
const shadowCss = "/*! tailwindcss v4.1.
|
|
4329
|
+
const shadowCss = "/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root,\n :host {\n --font-sans:\n ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji',\n 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n --spacing: 0.25rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --font-weight-bold: 700;\n }\n}\n@layer utilities {\n .absolute {\n position: absolute;\n }\n .relative {\n position: relative;\n }\n .top-8 {\n top: calc(var(--spacing) * 8);\n }\n .right-8 {\n right: calc(var(--spacing) * 8);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mt-5px {\n margin-top: 5px;\n }\n .mr-0 {\n margin-right: calc(var(--spacing) * 0);\n }\n .mr-10px {\n margin-right: 10px;\n }\n .mb-10px {\n margin-bottom: 10px;\n }\n .ml-0 {\n margin-left: calc(var(--spacing) * 0);\n }\n .ml-auto {\n margin-left: auto;\n }\n .flex {\n display: flex;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,)\n var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-clrs-gray {\n border-color: var(--clrs-gray, #aaaaaa);\n }\n .border-clrs-slate {\n border-color: var(--clrs-slate, #708090);\n }\n .bg-clrs-blue {\n background-color: var(--clrs-blue, #0074d9);\n }\n .bg-clrs-red {\n background-color: var(--clrs-red, #ff4136);\n }\n .bg-clrs-silver {\n background-color: var(--clrs-silver, #dddddd);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .align-top {\n vertical-align: top;\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .text-clrs-gray {\n color: var(--clrs-gray, #aaaaaa);\n }\n .text-clrs-navy {\n color: var(--clrs-navy, #001f3f);\n }\n .text-clrs-slate4 {\n color: var(--clrs-slate4, #4e5964);\n }\n .text-clrs-white {\n color: var(--clrs-white, #ffffff);\n }\n .italic {\n font-style: italic;\n }\n .shadow {\n --tw-shadow:\n 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)),\n 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow), var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .hover\\:text-clrs-navy {\n &:hover {\n @media (hover: hover) {\n color: var(--clrs-navy, #001f3f);\n }\n }\n }\n .active\\:bg-clrs-gray {\n &:active {\n background-color: var(--clrs-gray, #aaaaaa);\n }\n }\n .active\\:text-clrs-navy {\n &:active {\n color: var(--clrs-navy, #001f3f);\n }\n }\n}\n@layer components {\n .ds1-main {\n display: flex;\n flex-direction: column;\n padding: calc(var(--spacing) * 4);\n font-family: var(--font-sans);\n color: var(--clrs-navy, #001f3f);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .ds1-button {\n display: flex;\n align-items: center;\n --tw-border-style: solid;\n border-style: solid;\n border-color: var(--clrs-slate, #708090);\n color: var(--clrs-white, #ffffff);\n &:active {\n background-color: var(--clrs-gray, #aaaaaa);\n }\n &:active {\n color: var(--clrs-navy, #001f3f);\n }\n }\n .funnel-gfx {\n --tw-border-style: solid;\n border-style: solid;\n border-color: var(--clrs-gray, #aaaaaa);\n background-color: var(--clrs-silver, #dddddd);\n stroke-width: 1;\n }\n}\n.data-button {\n border-radius: 5px;\n border-width: 1px;\n padding: 5px;\n margin: 0px;\n margin-right: 5px;\n cursor: pointer;\n}\n.funnel-gfx {\n width: calc(100% - 20px);\n height: 100%;\n padding: 10px;\n padding-bottom: 7px;\n border-radius: 10px;\n border-width: 1px;\n}\n";
|
|
4185
4330
|
|
|
4186
4331
|
const FunnelApp = class {
|
|
4187
4332
|
constructor(hostRef) {
|