@visactor/vrender-animate 0.22.4 → 0.22.12
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/cjs/animate-extension.d.ts +12 -5
- package/cjs/animate-extension.js +23 -12
- package/cjs/animate-extension.js.map +1 -1
- package/cjs/animate.d.ts +2 -5
- package/cjs/animate.js +23 -18
- package/cjs/animate.js.map +1 -1
- package/cjs/component/component-animate-extension.d.ts +1 -0
- package/cjs/component/component-animate-extension.js +1 -0
- package/cjs/component/component-animate-extension.js.map +1 -0
- package/cjs/component/component-animator.d.ts +22 -0
- package/cjs/component/component-animator.js +67 -0
- package/cjs/component/component-animator.js.map +1 -0
- package/cjs/component/index.d.ts +1 -0
- package/cjs/component/index.js +21 -0
- package/cjs/component/index.js.map +1 -0
- package/cjs/config/morphing.d.ts +2 -0
- package/cjs/config/morphing.js +9 -0
- package/cjs/config/morphing.js.map +1 -0
- package/cjs/custom/clip-graphic.d.ts +1 -1
- package/cjs/custom/clip-graphic.js +2 -2
- package/cjs/custom/clip-graphic.js.map +1 -1
- package/cjs/custom/clip.d.ts +2 -1
- package/cjs/custom/clip.js +9 -1
- package/cjs/custom/clip.js.map +1 -1
- package/cjs/custom/common.d.ts +1 -3
- package/cjs/custom/common.js +21 -17
- package/cjs/custom/common.js.map +1 -1
- package/cjs/custom/custom-animate.d.ts +7 -3
- package/cjs/custom/custom-animate.js +13 -2
- package/cjs/custom/custom-animate.js.map +1 -1
- package/cjs/custom/fade.d.ts +1 -1
- package/cjs/custom/fade.js +7 -2
- package/cjs/custom/fade.js.map +1 -1
- package/cjs/custom/fromTo.d.ts +10 -0
- package/cjs/custom/fromTo.js +42 -0
- package/cjs/custom/fromTo.js.map +1 -0
- package/cjs/custom/groupFade.d.ts +10 -0
- package/cjs/custom/groupFade.js +25 -0
- package/cjs/custom/groupFade.js.map +1 -0
- package/cjs/custom/growAngle.d.ts +10 -5
- package/cjs/custom/growAngle.js +38 -17
- package/cjs/custom/growAngle.js.map +1 -1
- package/cjs/custom/growCenter.d.ts +1 -2
- package/cjs/custom/growCenter.js +16 -10
- package/cjs/custom/growCenter.js.map +1 -1
- package/cjs/custom/growHeight.d.ts +1 -3
- package/cjs/custom/growHeight.js +19 -13
- package/cjs/custom/growHeight.js.map +1 -1
- package/cjs/custom/growPoints.d.ts +1 -2
- package/cjs/custom/growPoints.js +41 -36
- package/cjs/custom/growPoints.js.map +1 -1
- package/cjs/custom/growRadius.d.ts +4 -5
- package/cjs/custom/growRadius.js +22 -18
- package/cjs/custom/growRadius.js.map +1 -1
- package/cjs/custom/growWidth.d.ts +1 -3
- package/cjs/custom/growWidth.js +15 -9
- package/cjs/custom/growWidth.js.map +1 -1
- package/cjs/custom/input-text.d.ts +1 -2
- package/cjs/custom/input-text.js.map +1 -1
- package/cjs/custom/label-item-animate.d.ts +7 -0
- package/cjs/custom/label-item-animate.js +221 -0
- package/cjs/custom/label-item-animate.js.map +1 -0
- package/cjs/custom/morphing.d.ts +51 -0
- package/cjs/custom/morphing.js +298 -0
- package/cjs/custom/morphing.js.map +1 -0
- package/cjs/custom/motionPath.d.ts +21 -0
- package/cjs/custom/motionPath.js +31 -0
- package/cjs/custom/motionPath.js.map +1 -0
- package/cjs/custom/move.d.ts +96 -0
- package/cjs/custom/move.js +133 -0
- package/cjs/custom/move.js.map +1 -0
- package/cjs/custom/number.d.ts +1 -2
- package/cjs/custom/number.js.map +1 -1
- package/cjs/custom/poptip-animate.d.ts +7 -0
- package/cjs/custom/poptip-animate.js +109 -0
- package/cjs/custom/poptip-animate.js.map +1 -0
- package/cjs/custom/register.d.ts +27 -0
- package/cjs/custom/register.js +418 -3
- package/cjs/custom/register.js.map +1 -1
- package/cjs/custom/richtext/input-richtext.d.ts +35 -0
- package/cjs/custom/richtext/input-richtext.js +80 -0
- package/cjs/custom/richtext/input-richtext.js.map +1 -0
- package/cjs/custom/richtext/output-richtext.d.ts +37 -0
- package/cjs/custom/richtext/output-richtext.js +94 -0
- package/cjs/custom/richtext/output-richtext.js.map +1 -0
- package/cjs/custom/richtext/slide-out-richtext.d.ts +38 -0
- package/cjs/custom/richtext/slide-out-richtext.js +146 -0
- package/cjs/custom/richtext/slide-out-richtext.js.map +1 -0
- package/cjs/custom/richtext/slide-richtext.d.ts +36 -0
- package/cjs/custom/richtext/slide-richtext.js +144 -0
- package/cjs/custom/richtext/slide-richtext.js.map +1 -0
- package/cjs/custom/rotate.d.ts +33 -0
- package/cjs/custom/rotate.js +79 -0
- package/cjs/custom/rotate.js.map +1 -0
- package/cjs/custom/scale.d.ts +6 -2
- package/cjs/custom/scale.js +32 -17
- package/cjs/custom/scale.js.map +1 -1
- package/cjs/custom/sphere.d.ts +2 -1
- package/cjs/custom/sphere.js +14 -5
- package/cjs/custom/sphere.js.map +1 -1
- package/cjs/custom/state.d.ts +1 -1
- package/cjs/custom/state.js +1 -1
- package/cjs/custom/state.js.map +1 -1
- package/cjs/custom/story.d.ts +196 -0
- package/cjs/custom/story.js +497 -0
- package/cjs/custom/story.js.map +1 -0
- package/cjs/custom/streamLight.d.ts +27 -0
- package/cjs/custom/streamLight.js +161 -0
- package/cjs/custom/streamLight.js.map +1 -0
- package/cjs/custom/tag-points.d.ts +2 -3
- package/cjs/custom/tag-points.js +20 -4
- package/cjs/custom/tag-points.js.map +1 -1
- package/cjs/custom/update.d.ts +2 -2
- package/cjs/custom/update.js +10 -2
- package/cjs/custom/update.js.map +1 -1
- package/cjs/executor/animate-executor.d.ts +7 -6
- package/cjs/executor/animate-executor.js +118 -62
- package/cjs/executor/animate-executor.js.map +1 -1
- package/cjs/executor/executor.d.ts +9 -3
- package/cjs/executor/executor.js.map +1 -1
- package/cjs/index.d.ts +8 -8
- package/cjs/index.js +50 -18
- package/cjs/index.js.map +1 -1
- package/cjs/interpolate/store.d.ts +6 -2
- package/cjs/interpolate/store.js +13 -2
- package/cjs/interpolate/store.js.map +1 -1
- package/cjs/register.js +1 -5
- package/cjs/register.js.map +1 -1
- package/cjs/state/animation-state.d.ts +20 -2
- package/cjs/state/animation-state.js +48 -4
- package/cjs/state/animation-state.js.map +1 -1
- package/cjs/state/animation-states-registry.js +18 -0
- package/cjs/state/animation-states-registry.js.map +1 -1
- package/cjs/state/graphic-extension.d.ts +7 -1
- package/cjs/state/graphic-extension.js +20 -0
- package/cjs/state/graphic-extension.js.map +1 -1
- package/cjs/step.d.ts +7 -4
- package/cjs/step.js +33 -15
- package/cjs/step.js.map +1 -1
- package/cjs/ticker/default-ticker.d.ts +12 -7
- package/cjs/ticker/default-ticker.js +38 -33
- package/cjs/ticker/default-ticker.js.map +1 -1
- package/cjs/ticker/manual-ticker.d.ts +6 -1
- package/cjs/ticker/manual-ticker.js +26 -4
- package/cjs/ticker/manual-ticker.js.map +1 -1
- package/cjs/timeline.d.ts +14 -7
- package/cjs/timeline.js +31 -18
- package/cjs/timeline.js.map +1 -1
- package/cjs/utils/transform.d.ts +2 -0
- package/cjs/utils/transform.js +10 -0
- package/cjs/utils/transform.js.map +1 -0
- package/dist/index.es.js +3765 -527
- package/es/animate-extension.d.ts +12 -5
- package/es/animate-extension.js +24 -11
- package/es/animate-extension.js.map +1 -1
- package/es/animate.d.ts +2 -5
- package/es/animate.js +14 -11
- package/es/animate.js.map +1 -1
- package/es/component/component-animate-extension.d.ts +1 -0
- package/es/component/component-animate-extension.js +1 -0
- package/es/component/component-animate-extension.js.map +1 -0
- package/es/component/component-animator.d.ts +22 -0
- package/es/component/component-animator.js +59 -0
- package/es/component/component-animator.js.map +1 -0
- package/es/component/index.d.ts +1 -0
- package/es/component/index.js +2 -0
- package/es/component/index.js.map +1 -0
- package/es/config/morphing.d.ts +2 -0
- package/es/config/morphing.js +5 -0
- package/es/config/morphing.js.map +1 -0
- package/es/custom/clip-graphic.d.ts +1 -1
- package/es/custom/clip-graphic.js +2 -2
- package/es/custom/clip-graphic.js.map +1 -1
- package/es/custom/clip.d.ts +2 -1
- package/es/custom/clip.js +9 -1
- package/es/custom/clip.js.map +1 -1
- package/es/custom/common.d.ts +1 -3
- package/es/custom/common.js +21 -17
- package/es/custom/common.js.map +1 -1
- package/es/custom/custom-animate.d.ts +7 -3
- package/es/custom/custom-animate.js +10 -1
- package/es/custom/custom-animate.js.map +1 -1
- package/es/custom/fade.d.ts +1 -1
- package/es/custom/fade.js +7 -2
- package/es/custom/fade.js.map +1 -1
- package/es/custom/fromTo.d.ts +10 -0
- package/es/custom/fromTo.js +34 -0
- package/es/custom/fromTo.js.map +1 -0
- package/es/custom/groupFade.d.ts +10 -0
- package/es/custom/groupFade.js +15 -0
- package/es/custom/groupFade.js.map +1 -0
- package/es/custom/growAngle.d.ts +10 -5
- package/es/custom/growAngle.js +39 -15
- package/es/custom/growAngle.js.map +1 -1
- package/es/custom/growCenter.d.ts +1 -2
- package/es/custom/growCenter.js +16 -10
- package/es/custom/growCenter.js.map +1 -1
- package/es/custom/growHeight.d.ts +1 -3
- package/es/custom/growHeight.js +20 -14
- package/es/custom/growHeight.js.map +1 -1
- package/es/custom/growPoints.d.ts +1 -2
- package/es/custom/growPoints.js +40 -36
- package/es/custom/growPoints.js.map +1 -1
- package/es/custom/growRadius.d.ts +4 -5
- package/es/custom/growRadius.js +22 -16
- package/es/custom/growRadius.js.map +1 -1
- package/es/custom/growWidth.d.ts +1 -3
- package/es/custom/growWidth.js +16 -10
- package/es/custom/growWidth.js.map +1 -1
- package/es/custom/input-text.d.ts +1 -2
- package/es/custom/input-text.js.map +1 -1
- package/es/custom/label-item-animate.d.ts +7 -0
- package/es/custom/label-item-animate.js +215 -0
- package/es/custom/label-item-animate.js.map +1 -0
- package/es/custom/morphing.d.ts +51 -0
- package/es/custom/morphing.js +289 -0
- package/es/custom/morphing.js.map +1 -0
- package/es/custom/motionPath.d.ts +21 -0
- package/es/custom/motionPath.js +23 -0
- package/es/custom/motionPath.js.map +1 -0
- package/es/custom/move.d.ts +96 -0
- package/es/custom/move.js +118 -0
- package/es/custom/move.js.map +1 -0
- package/es/custom/number.d.ts +1 -2
- package/es/custom/number.js.map +1 -1
- package/es/custom/poptip-animate.d.ts +7 -0
- package/es/custom/poptip-animate.js +103 -0
- package/es/custom/poptip-animate.js.map +1 -0
- package/es/custom/register.d.ts +27 -0
- package/es/custom/register.js +48 -1
- package/es/custom/register.js.map +1 -1
- package/es/custom/richtext/input-richtext.d.ts +35 -0
- package/es/custom/richtext/input-richtext.js +74 -0
- package/es/custom/richtext/input-richtext.js.map +1 -0
- package/es/custom/richtext/output-richtext.d.ts +37 -0
- package/es/custom/richtext/output-richtext.js +88 -0
- package/es/custom/richtext/output-richtext.js.map +1 -0
- package/es/custom/richtext/slide-out-richtext.d.ts +38 -0
- package/es/custom/richtext/slide-out-richtext.js +140 -0
- package/es/custom/richtext/slide-out-richtext.js.map +1 -0
- package/es/custom/richtext/slide-richtext.d.ts +36 -0
- package/es/custom/richtext/slide-richtext.js +138 -0
- package/es/custom/richtext/slide-richtext.js.map +1 -0
- package/es/custom/rotate.d.ts +33 -0
- package/es/custom/rotate.js +65 -0
- package/es/custom/rotate.js.map +1 -0
- package/es/custom/scale.d.ts +6 -2
- package/es/custom/scale.js +32 -17
- package/es/custom/scale.js.map +1 -1
- package/es/custom/sphere.d.ts +2 -1
- package/es/custom/sphere.js +14 -5
- package/es/custom/sphere.js.map +1 -1
- package/es/custom/state.d.ts +1 -1
- package/es/custom/state.js +1 -1
- package/es/custom/state.js.map +1 -1
- package/es/custom/story.d.ts +196 -0
- package/es/custom/story.js +468 -0
- package/es/custom/story.js.map +1 -0
- package/es/custom/streamLight.d.ts +27 -0
- package/es/custom/streamLight.js +157 -0
- package/es/custom/streamLight.js.map +1 -0
- package/es/custom/tag-points.d.ts +2 -3
- package/es/custom/tag-points.js +21 -5
- package/es/custom/tag-points.js.map +1 -1
- package/es/custom/update.d.ts +2 -2
- package/es/custom/update.js +10 -2
- package/es/custom/update.js.map +1 -1
- package/es/executor/animate-executor.d.ts +7 -6
- package/es/executor/animate-executor.js +116 -61
- package/es/executor/animate-executor.js.map +1 -1
- package/es/executor/executor.d.ts +9 -3
- package/es/executor/executor.js.map +1 -1
- package/es/index.d.ts +8 -8
- package/es/index.js +10 -12
- package/es/index.js.map +1 -1
- package/es/interpolate/store.d.ts +6 -2
- package/es/interpolate/store.js +13 -3
- package/es/interpolate/store.js.map +1 -1
- package/es/register.js +0 -8
- package/es/register.js.map +1 -1
- package/es/state/animation-state.d.ts +20 -2
- package/es/state/animation-state.js +48 -2
- package/es/state/animation-state.js.map +1 -1
- package/es/state/animation-states-registry.js +18 -0
- package/es/state/animation-states-registry.js.map +1 -1
- package/es/state/graphic-extension.d.ts +7 -1
- package/es/state/graphic-extension.js +20 -0
- package/es/state/graphic-extension.js.map +1 -1
- package/es/step.d.ts +7 -4
- package/es/step.js +34 -16
- package/es/step.js.map +1 -1
- package/es/ticker/default-ticker.d.ts +12 -7
- package/es/ticker/default-ticker.js +30 -27
- package/es/ticker/default-ticker.js.map +1 -1
- package/es/ticker/manual-ticker.d.ts +6 -1
- package/es/ticker/manual-ticker.js +27 -3
- package/es/ticker/manual-ticker.js.map +1 -1
- package/es/timeline.d.ts +14 -7
- package/es/timeline.js +33 -18
- package/es/timeline.js.map +1 -1
- package/es/utils/transform.d.ts +2 -0
- package/es/utils/transform.js +4 -0
- package/es/utils/transform.js.map +1 -0
- package/package.json +16 -16
- package/cjs/custom/group-fade.d.ts +0 -16
- package/cjs/custom/group-fade.js +0 -66
- package/cjs/custom/group-fade.js.map +0 -1
- package/cjs/custom/scale-in.d.ts +0 -13
- package/cjs/custom/scale-in.js +0 -57
- package/cjs/custom/scale-in.js.map +0 -1
- package/cjs/interpolate/executor.d.ts +0 -66
- package/cjs/interpolate/executor.js +0 -6
- package/cjs/interpolate/executor.js.map +0 -1
- package/cjs/intreface/animate.d.ts +0 -91
- package/cjs/intreface/animate.js +0 -10
- package/cjs/intreface/animate.js.map +0 -1
- package/cjs/intreface/easing.d.ts +0 -3
- package/cjs/intreface/easing.js +0 -6
- package/cjs/intreface/easing.js.map +0 -1
- package/cjs/intreface/state.d.ts +0 -35
- package/cjs/intreface/state.js +0 -6
- package/cjs/intreface/state.js.map +0 -1
- package/cjs/intreface/ticker.d.ts +0 -37
- package/cjs/intreface/ticker.js +0 -10
- package/cjs/intreface/ticker.js.map +0 -1
- package/cjs/intreface/timeline.d.ts +0 -17
- package/cjs/intreface/timeline.js +0 -6
- package/cjs/intreface/timeline.js.map +0 -1
- package/cjs/intreface/type.d.ts +0 -13
- package/cjs/intreface/type.js +0 -15
- package/cjs/intreface/type.js.map +0 -1
- package/cjs/state/animation-state-machine.d.ts +0 -22
- package/cjs/state/animation-state-machine.js +0 -53
- package/cjs/state/animation-state-machine.js.map +0 -1
- package/cjs/state/animation-state-queue.d.ts +0 -24
- package/cjs/state/animation-state-queue.js +0 -66
- package/cjs/state/animation-state-queue.js.map +0 -1
- package/cjs/state/animation-state-registry.d.ts +0 -14
- package/cjs/state/animation-state-registry.js +0 -53
- package/cjs/state/animation-state-registry.js.map +0 -1
- package/es/custom/group-fade.d.ts +0 -16
- package/es/custom/group-fade.js +0 -56
- package/es/custom/group-fade.js.map +0 -1
- package/es/custom/scale-in.d.ts +0 -13
- package/es/custom/scale-in.js +0 -49
- package/es/custom/scale-in.js.map +0 -1
- package/es/interpolate/executor.d.ts +0 -66
- package/es/interpolate/executor.js +0 -2
- package/es/interpolate/executor.js.map +0 -1
- package/es/intreface/animate.d.ts +0 -91
- package/es/intreface/animate.js +0 -6
- package/es/intreface/animate.js.map +0 -1
- package/es/intreface/easing.d.ts +0 -3
- package/es/intreface/easing.js +0 -2
- package/es/intreface/easing.js.map +0 -1
- package/es/intreface/state.d.ts +0 -35
- package/es/intreface/state.js +0 -2
- package/es/intreface/state.js.map +0 -1
- package/es/intreface/ticker.d.ts +0 -37
- package/es/intreface/ticker.js +0 -6
- package/es/intreface/ticker.js.map +0 -1
- package/es/intreface/timeline.d.ts +0 -17
- package/es/intreface/timeline.js +0 -2
- package/es/intreface/timeline.js.map +0 -1
- package/es/intreface/type.d.ts +0 -13
- package/es/intreface/type.js +0 -14
- package/es/intreface/type.js.map +0 -1
- package/es/state/animation-state-machine.d.ts +0 -22
- package/es/state/animation-state-machine.js +0 -47
- package/es/state/animation-state-machine.js.map +0 -1
- package/es/state/animation-state-queue.d.ts +0 -24
- package/es/state/animation-state-queue.js +0 -58
- package/es/state/animation-state-queue.js.map +0 -1
- package/es/state/animation-state-registry.d.ts +0 -14
- package/es/state/animation-state-registry.js +0 -45
- package/es/state/animation-state-registry.js.map +0 -1
package/cjs/index.js
CHANGED
|
@@ -17,9 +17,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
|
|
|
17
17
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", {
|
|
19
19
|
value: !0
|
|
20
|
-
}), exports.AnimationStateStore = exports.AnimationStateManager = exports.transitionRegistry = exports.AnimationTransitionRegistry = exports.
|
|
21
|
-
__exportStar(require("./intreface/animate"), exports), __exportStar(require("./intreface/timeline"), exports),
|
|
22
|
-
__exportStar(require("./intreface/easing"), exports), __exportStar(require("./intreface/type"), exports);
|
|
20
|
+
}), exports.AnimationStateStore = exports.AnimationStateManager = exports.transitionRegistry = exports.AnimationTransitionRegistry = exports.AnimateExecutor = exports.RotateBySphereAnimate = exports.GroupFadeOut = exports.GroupFadeIn = exports.TagPointsUpdate = exports.ClipDirectionAnimate = exports.ClipRadiusAnimate = exports.ClipAngleAnimate = exports.ClipGraphicAnimate = exports.InputText = exports.morphPath = exports.multiToOneMorph = exports.oneToMultiMorph = exports.MultiToOneMorphingPath = exports.MorphingPath = exports.IncreaseCount = exports.ComponentAnimator = exports.AComponentAnimate = exports.ACustomAnimate = exports.registerAnimate = exports.AnimateStep = exports.DefaultTicker = exports.ManualTicker = exports.DefaultTimeline = exports.Animate = void 0;
|
|
23
21
|
|
|
24
22
|
var animate_1 = require("./animate");
|
|
25
23
|
|
|
@@ -59,7 +57,7 @@ Object.defineProperty(exports, "DefaultTicker", {
|
|
|
59
57
|
|
|
60
58
|
var step_1 = require("./step");
|
|
61
59
|
|
|
62
|
-
Object.defineProperty(exports, "
|
|
60
|
+
Object.defineProperty(exports, "AnimateStep", {
|
|
63
61
|
enumerable: !0,
|
|
64
62
|
get: function() {
|
|
65
63
|
return step_1.Step;
|
|
@@ -82,6 +80,20 @@ Object.defineProperty(exports, "ACustomAnimate", {
|
|
|
82
80
|
get: function() {
|
|
83
81
|
return custom_animate_1.ACustomAnimate;
|
|
84
82
|
}
|
|
83
|
+
}), Object.defineProperty(exports, "AComponentAnimate", {
|
|
84
|
+
enumerable: !0,
|
|
85
|
+
get: function() {
|
|
86
|
+
return custom_animate_1.AComponentAnimate;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
var component_animator_1 = require("./component/component-animator");
|
|
91
|
+
|
|
92
|
+
Object.defineProperty(exports, "ComponentAnimator", {
|
|
93
|
+
enumerable: !0,
|
|
94
|
+
get: function() {
|
|
95
|
+
return component_animator_1.ComponentAnimator;
|
|
96
|
+
}
|
|
85
97
|
});
|
|
86
98
|
|
|
87
99
|
var number_1 = require("./custom/number");
|
|
@@ -93,6 +105,35 @@ Object.defineProperty(exports, "IncreaseCount", {
|
|
|
93
105
|
}
|
|
94
106
|
});
|
|
95
107
|
|
|
108
|
+
var morphing_1 = require("./custom/morphing");
|
|
109
|
+
|
|
110
|
+
Object.defineProperty(exports, "MorphingPath", {
|
|
111
|
+
enumerable: !0,
|
|
112
|
+
get: function() {
|
|
113
|
+
return morphing_1.MorphingPath;
|
|
114
|
+
}
|
|
115
|
+
}), Object.defineProperty(exports, "MultiToOneMorphingPath", {
|
|
116
|
+
enumerable: !0,
|
|
117
|
+
get: function() {
|
|
118
|
+
return morphing_1.MultiToOneMorphingPath;
|
|
119
|
+
}
|
|
120
|
+
}), Object.defineProperty(exports, "oneToMultiMorph", {
|
|
121
|
+
enumerable: !0,
|
|
122
|
+
get: function() {
|
|
123
|
+
return morphing_1.oneToMultiMorph;
|
|
124
|
+
}
|
|
125
|
+
}), Object.defineProperty(exports, "multiToOneMorph", {
|
|
126
|
+
enumerable: !0,
|
|
127
|
+
get: function() {
|
|
128
|
+
return morphing_1.multiToOneMorph;
|
|
129
|
+
}
|
|
130
|
+
}), Object.defineProperty(exports, "morphPath", {
|
|
131
|
+
enumerable: !0,
|
|
132
|
+
get: function() {
|
|
133
|
+
return morphing_1.morphPath;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
96
137
|
var input_text_1 = require("./custom/input-text");
|
|
97
138
|
|
|
98
139
|
Object.defineProperty(exports, "InputText", {
|
|
@@ -135,17 +176,17 @@ Object.defineProperty(exports, "TagPointsUpdate", {
|
|
|
135
176
|
}
|
|
136
177
|
});
|
|
137
178
|
|
|
138
|
-
var
|
|
179
|
+
var groupFade_1 = require("./custom/groupFade");
|
|
139
180
|
|
|
140
181
|
Object.defineProperty(exports, "GroupFadeIn", {
|
|
141
182
|
enumerable: !0,
|
|
142
183
|
get: function() {
|
|
143
|
-
return
|
|
184
|
+
return groupFade_1.GroupFadeIn;
|
|
144
185
|
}
|
|
145
186
|
}), Object.defineProperty(exports, "GroupFadeOut", {
|
|
146
187
|
enumerable: !0,
|
|
147
188
|
get: function() {
|
|
148
|
-
return
|
|
189
|
+
return groupFade_1.GroupFadeOut;
|
|
149
190
|
}
|
|
150
191
|
});
|
|
151
192
|
|
|
@@ -165,16 +206,7 @@ Object.defineProperty(exports, "AnimateExecutor", {
|
|
|
165
206
|
get: function() {
|
|
166
207
|
return animate_executor_1.AnimateExecutor;
|
|
167
208
|
}
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
var register_2 = require("./custom/register");
|
|
171
|
-
|
|
172
|
-
Object.defineProperty(exports, "registerCustomAnimate", {
|
|
173
|
-
enumerable: !0,
|
|
174
|
-
get: function() {
|
|
175
|
-
return register_2.registerCustomAnimate;
|
|
176
|
-
}
|
|
177
|
-
}), __exportStar(require("./state"), exports);
|
|
209
|
+
}), __exportStar(require("./custom/register"), exports), __exportStar(require("./state"), exports);
|
|
178
210
|
|
|
179
211
|
var animation_states_registry_1 = require("./state/animation-states-registry");
|
|
180
212
|
|
|
@@ -210,5 +242,5 @@ Object.defineProperty(exports, "AnimationStateStore", {
|
|
|
210
242
|
get: function() {
|
|
211
243
|
return animation_state_2.AnimationStateStore;
|
|
212
244
|
}
|
|
213
|
-
});
|
|
245
|
+
}), __exportStar(require("./component"), exports);
|
|
214
246
|
//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AACxB,wDAAsD;AAA7C,6GAAA,YAAY,OAAA;AACrB,0DAAwD;AAA/C,+GAAA,aAAa,OAAA;AACtB,+BAA6C;AAApC,mGAAA,IAAI,OAAe;AAG5B,sDAAoC;AACpC,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AACxB,0DAA4E;AAAnE,gHAAA,cAAc,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC1C,qEAAmE;AAA1D,uHAAA,iBAAiB,OAAA;AAC1B,0CAAgD;AAAvC,uGAAA,aAAa,OAAA;AACtB,8CAAsH;AAA7G,wGAAA,YAAY,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,qGAAA,SAAS,OAAA;AAC1F,kDAAgD;AAAvC,uGAAA,SAAS,OAAA;AAClB,sDAAsH;AAA7G,kHAAA,kBAAkB,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AACtF,kDAAsD;AAA7C,6GAAA,eAAe,OAAA;AACxB,gDAA+D;AAAtD,wGAAA,WAAW,OAAA;AAAE,yGAAA,YAAY,OAAA;AAClC,0CAAwD;AAA/C,+GAAA,qBAAqB,OAAA;AAC9B,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AAExB,oDAAkC;AAElC,0CAAwB;AACxB,+EAAgF;AAAvE,wIAAA,2BAA2B,OAAA;AACpC,+EAAuE;AAA9D,+HAAA,kBAAkB,OAAA;AAC3B,2DAAgE;AAAvD,wHAAA,qBAAqB,OAAA;AAC9B,2DAA8D;AAArD,sHAAA,mBAAmB,OAAA;AAG5B,8CAA4B","file":"index.js","sourcesContent":["// 导出实现\nexport { Animate } from './animate';\nexport { DefaultTimeline } from './timeline';\nexport { ManualTicker } from './ticker/manual-ticker';\nexport { DefaultTicker } from './ticker/default-ticker';\nexport { Step as AnimateStep } from './step';\n\n// 导出工具函数\nexport * from './utils/easing-func';\nexport { registerAnimate } from './register';\nexport { ACustomAnimate, AComponentAnimate } from './custom/custom-animate';\nexport { ComponentAnimator } from './component/component-animator';\nexport { IncreaseCount } from './custom/number';\nexport { MorphingPath, MultiToOneMorphingPath, oneToMultiMorph, multiToOneMorph, morphPath } from './custom/morphing';\nexport { InputText } from './custom/input-text';\nexport { ClipGraphicAnimate, ClipAngleAnimate, ClipRadiusAnimate, ClipDirectionAnimate } from './custom/clip-graphic';\nexport { TagPointsUpdate } from './custom/tag-points';\nexport { GroupFadeIn, GroupFadeOut } from './custom/groupFade';\nexport { RotateBySphereAnimate } from './custom/sphere';\nexport { AnimateExecutor } from './executor/animate-executor';\nexport type { IAnimationConfig } from './executor/executor';\nexport * from './custom/register';\n// Export animation state modules\nexport * from './state';\nexport { AnimationTransitionRegistry } from './state/animation-states-registry';\nexport { transitionRegistry } from './state/animation-states-registry';\nexport { AnimationStateManager } from './state/animation-state';\nexport { AnimationStateStore } from './state/animation-state';\n\n// Export component animation modules\nexport * from './component';\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { IGraphic } from '@visactor/vrender-core';
|
|
2
|
-
import type {
|
|
1
|
+
import type { IGraphic, IStep } from '@visactor/vrender-core';
|
|
2
|
+
import type { IPointLike } from '@visactor/vutils';
|
|
3
3
|
export declare class InterpolateUpdateStore {
|
|
4
4
|
opacity: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
5
|
+
baseOpacity: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
5
6
|
fillOpacity: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
6
7
|
strokeOpacity: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
7
8
|
zIndex: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
@@ -17,6 +18,8 @@ export declare class InterpolateUpdateStore {
|
|
|
17
18
|
height: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
18
19
|
x: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
19
20
|
y: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
21
|
+
dx: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
22
|
+
dy: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
20
23
|
angle: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
21
24
|
scaleX: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
22
25
|
scaleY: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
@@ -27,6 +30,7 @@ export declare class InterpolateUpdateStore {
|
|
|
27
30
|
outerRadius: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
28
31
|
innerRadius: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
29
32
|
size: (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => void;
|
|
33
|
+
points: (key: string, from: IPointLike[], to: IPointLike[], ratio: number, step: IStep, target: IGraphic) => void;
|
|
30
34
|
}
|
|
31
35
|
export declare const interpolateUpdateStore: InterpolateUpdateStore;
|
|
32
36
|
export declare function commonInterpolateUpdate(key: string, from: any, to: any, ratio: number, step: IStep, target: IGraphic): boolean;
|
package/cjs/interpolate/store.js
CHANGED
|
@@ -10,6 +10,8 @@ class InterpolateUpdateStore {
|
|
|
10
10
|
constructor() {
|
|
11
11
|
this.opacity = (key, from, to, ratio, step, target) => {
|
|
12
12
|
target.attribute.opacity = (0, number_1.interpolateNumber)(from, to, ratio);
|
|
13
|
+
}, this.baseOpacity = (key, from, to, ratio, step, target) => {
|
|
14
|
+
target.attribute.baseOpacity = (0, number_1.interpolateNumber)(from, to, ratio);
|
|
13
15
|
}, this.fillOpacity = (key, from, to, ratio, step, target) => {
|
|
14
16
|
target.attribute.fillOpacity = (0, number_1.interpolateNumber)(from, to, ratio);
|
|
15
17
|
}, this.strokeOpacity = (key, from, to, ratio, step, target) => {
|
|
@@ -27,11 +29,11 @@ class InterpolateUpdateStore {
|
|
|
27
29
|
}, this.fill = (key, from, to, ratio, step, target) => {
|
|
28
30
|
target.attribute.fill = (0, vrender_core_1.interpolateColor)(from, to, ratio, !1);
|
|
29
31
|
}, this.fillPure = (key, from, to, ratio, step, target) => {
|
|
30
|
-
target.attribute.fill = (0, vrender_core_1.interpolatePureColorArrayToStr)(step.fromParsedProps.fill, step.toParsedProps.fill, ratio);
|
|
32
|
+
target.attribute.fill = step.fromParsedProps.fill ? (0, vrender_core_1.interpolatePureColorArrayToStr)(step.fromParsedProps.fill, step.toParsedProps.fill, ratio) : step.toParsedProps.fill;
|
|
31
33
|
}, this.stroke = (key, from, to, ratio, step, target) => {
|
|
32
34
|
target.attribute.stroke = (0, vrender_core_1.interpolateColor)(from, to, ratio, !1);
|
|
33
35
|
}, this.strokePure = (key, from, to, ratio, step, target) => {
|
|
34
|
-
target.attribute.stroke = (0, vrender_core_1.interpolatePureColorArrayToStr)(step.fromParsedProps.stroke, step.toParsedProps.stroke, ratio);
|
|
36
|
+
target.attribute.stroke = step.fromParsedProps.stroke ? (0, vrender_core_1.interpolatePureColorArrayToStr)(step.fromParsedProps.stroke, step.toParsedProps.stroke, ratio) : step.toParsedProps.stroke;
|
|
35
37
|
}, this.width = (key, from, to, ratio, step, target) => {
|
|
36
38
|
target.attribute.width = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag();
|
|
37
39
|
}, this.height = (key, from, to, ratio, step, target) => {
|
|
@@ -42,6 +44,12 @@ class InterpolateUpdateStore {
|
|
|
42
44
|
}, this.y = (key, from, to, ratio, step, target) => {
|
|
43
45
|
target.attribute.y = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
|
|
44
46
|
target.addUpdatePositionTag();
|
|
47
|
+
}, this.dx = (key, from, to, ratio, step, target) => {
|
|
48
|
+
target.attribute.dx = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
|
|
49
|
+
target.addUpdatePositionTag();
|
|
50
|
+
}, this.dy = (key, from, to, ratio, step, target) => {
|
|
51
|
+
target.attribute.dy = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
|
|
52
|
+
target.addUpdatePositionTag();
|
|
45
53
|
}, this.angle = (key, from, to, ratio, step, target) => {
|
|
46
54
|
target.attribute.angle = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
|
|
47
55
|
target.addUpdatePositionTag();
|
|
@@ -68,6 +76,9 @@ class InterpolateUpdateStore {
|
|
|
68
76
|
target.addUpdateBoundTag();
|
|
69
77
|
}, this.size = (key, from, to, ratio, step, target) => {
|
|
70
78
|
target.attribute.size = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag();
|
|
79
|
+
}, this.points = (key, from, to, ratio, step, target) => {
|
|
80
|
+
target.attribute.points = (0, vrender_core_1.pointsInterpolation)(from, to, ratio),
|
|
81
|
+
target.addUpdateBoundTag();
|
|
71
82
|
};
|
|
72
83
|
}
|
|
73
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interpolate/store.ts"],"names":[],"mappings":";;;AACA,yDAA0F;AAC1F,qCAA6C;AAuD7C,MAAa,sBAAsB;IAAnC;QACE,YAAO,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAChG,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC;QACF,gBAAW,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YACpG,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC,CAAC;QACF,kBAAa,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YACtG,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC/F,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC;QACF,sBAAiB,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC1G,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC;QACF,kBAAa,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YACtG,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC,CAAC;QACF,kBAAa,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YACtG,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC,CAAC;QACF,eAAU,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YACnG,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC;QACF,SAAI,GAAG,CACL,GAAW,EACX,IAAsC,EACtC,EAAoC,EACpC,KAAa,EACb,IAAW,EACX,MAAgB,EAChB,EAAE;YACF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAA,+BAAgB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAQ,CAAC;QAC1E,CAAC,CAAC;QACF,aAAQ,GAAG,CACT,GAAW,EACX,IAAsC,EACtC,EAAoC,EACpC,KAAa,EACb,IAAW,EACX,MAAgB,EAChB,EAAE;YACF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAA,6CAA8B,EACpD,IAAI,CAAC,eAAe,CAAC,IAAI,EACzB,IAAI,CAAC,aAAa,CAAC,IAAI,EACvB,KAAK,CACC,CAAC;QACX,CAAC,CAAC;QACF,WAAM,GAAG,CACP,GAAW,EACX,IAAsC,EACtC,EAAoC,EACpC,KAAa,EACb,IAAW,EACX,MAAgB,EAChB,EAAE;YACF,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,IAAA,+BAAgB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC;QACF,eAAU,GAAG,CACX,GAAW,EACX,IAAsC,EACtC,EAAoC,EACpC,KAAa,EACb,IAAW,EACX,MAAgB,EAChB,EAAE;YACF,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,IAAA,6CAA8B,EACtD,IAAI,CAAC,eAAe,CAAC,MAAM,EAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,EACzB,KAAK,CACC,CAAC;QACX,CAAC,CAAC;QAGF,UAAK,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC7F,MAAM,CAAC,SAAiB,CAAC,KAAK,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACrE,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC9F,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACtE,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;QACF,MAAC,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC1F,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC,CAAC;QACF,MAAC,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC1F,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC,CAAC;QACF,UAAK,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC9F,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC/F,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC/F,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC,CAAC;QACF,cAAS,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAClG,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAChE,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;QACF,eAAU,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAClG,MAAM,CAAC,SAAiB,CAAC,UAAU,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1E,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;QACF,aAAQ,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAChG,MAAM,CAAC,SAAiB,CAAC,QAAQ,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACxE,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC9F,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACtE,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;QACF,gBAAW,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YACnG,MAAM,CAAC,SAAiB,CAAC,WAAW,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3E,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;QACF,gBAAW,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YACnG,MAAM,CAAC,SAAiB,CAAC,WAAW,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3E,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;QACF,SAAI,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;YAC5F,MAAM,CAAC,SAAiB,CAAC,IAAI,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACpE,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;CAAA;AAxID,wDAwIC;AAEY,QAAA,sBAAsB,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAEnE,SAAgB,uBAAuB,CAAC,GAAW,EAAE,IAAS,EAAE,EAAO,EAAE,KAAa,EAAE,IAAW,EAAE,MAAgB;IACnH,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC/C,MAAM,CAAC,SAAiB,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;QAC5D,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;QAChF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACzB,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM;aACP;YACD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpB;QACD,IAAI,KAAK,EAAE;YACR,MAAM,CAAC,SAAiB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAtBD,0DAsBC","file":"store.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport { interpolateColor, interpolatePureColorArrayToStr } from '@visactor/vrender-core';\nimport { interpolateNumber } from './number';\nimport type { IStep } from '../intreface/animate';\n\n// 直接设置,触发 隐藏类(Hidden Class)优化:\n/**\n *\nconst a = { type: 1 };\nconst ITERATIONS = 1e7; // 测试次数\n\n// 动态生成 keys 数组(确保引擎无法静态推断 key)\nconst keys = [];\nfor (let i = 0; i < ITERATIONS; i++) {\n // 通过条件确保 key 动态变化(但实际始终为 'type',避免属性缺失的开销)\n keys.push(Math.random() < 0 ? 'other' : 'type');\n}\n\n// 测试字面量访问\nfunction testLiteral() {\n let sum = 0;\n for (let i = 0; i < ITERATIONS; i++) {\n const key = keys[i]; // 读取 key(与动态测试完全一致)\n sum += a.type; // 差异仅在此处:使用字面量访问\n }\n return sum;\n}\n\n// 测试变量动态访问\nfunction testDynamic() {\n let sum = 0;\n for (let i = 0; i < ITERATIONS; i++) {\n const key = keys[i]; // 读取 key(与字面量测试完全一致)\n sum += a[key]; // 差异仅在此处:使用变量访问\n }\n return sum;\n}\n\n// 预热(避免 JIT 编译影响)\ntestLiteral();\ntestDynamic();\n\n// 正式测试\nconsole.time('literal');\ntestLiteral();\nconsole.timeEnd('literal');\n\nconsole.time('dynamic');\ntestDynamic();\nconsole.timeEnd('dynamic');\n\n\n// out:\n// literal: 7.1259765625 ms\n// dynamic: 9.322998046875 ms\n */\n\nexport class InterpolateUpdateStore {\n opacity = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.opacity = interpolateNumber(from, to, ratio);\n };\n fillOpacity = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.fillOpacity = interpolateNumber(from, to, ratio);\n };\n strokeOpacity = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.strokeOpacity = interpolateNumber(from, to, ratio);\n };\n zIndex = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.zIndex = interpolateNumber(from, to, ratio);\n };\n backgroundOpacity = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.backgroundOpacity = interpolateNumber(from, to, ratio);\n };\n shadowOffsetX = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.shadowOffsetX = interpolateNumber(from, to, ratio);\n };\n shadowOffsetY = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.shadowOffsetY = interpolateNumber(from, to, ratio);\n };\n shadowBlur = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.shadowBlur = interpolateNumber(from, to, ratio);\n };\n fill = (\n key: string,\n from: [number, number, number, number],\n to: [number, number, number, number],\n ratio: number,\n step: IStep,\n target: IGraphic\n ) => {\n target.attribute.fill = interpolateColor(from, to, ratio, false) as any;\n };\n fillPure = (\n key: string,\n from: [number, number, number, number],\n to: [number, number, number, number],\n ratio: number,\n step: IStep,\n target: IGraphic\n ) => {\n target.attribute.fill = interpolatePureColorArrayToStr(\n step.fromParsedProps.fill,\n step.toParsedProps.fill,\n ratio\n ) as any;\n };\n stroke = (\n key: string,\n from: [number, number, number, number],\n to: [number, number, number, number],\n ratio: number,\n step: IStep,\n target: IGraphic\n ) => {\n target.attribute.stroke = interpolateColor(from, to, ratio, false);\n };\n strokePure = (\n key: string,\n from: [number, number, number, number],\n to: [number, number, number, number],\n ratio: number,\n step: IStep,\n target: IGraphic\n ) => {\n target.attribute.stroke = interpolatePureColorArrayToStr(\n step.fromParsedProps.stroke,\n step.toParsedProps.stroke,\n ratio\n ) as any;\n };\n\n // 需要更新Bounds\n width = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).width = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n height = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).height = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n x = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.x = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n y = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.y = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n angle = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.angle = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n scaleX = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.scaleX = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n scaleY = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.scaleY = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n lineWidth = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.lineWidth = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n startAngle = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).startAngle = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n endAngle = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).endAngle = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n radius = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).radius = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n outerRadius = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).outerRadius = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n innerRadius = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).innerRadius = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n size = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).size = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n}\n\nexport const interpolateUpdateStore = new InterpolateUpdateStore();\n\nexport function commonInterpolateUpdate(key: string, from: any, to: any, ratio: number, step: IStep, target: IGraphic) {\n if (Number.isFinite(to) && Number.isFinite(from)) {\n (target.attribute as any)[key] = from + (to - from) * ratio;\n return true;\n } else if (Array.isArray(to) && Array.isArray(from) && to.length === from.length) {\n const nextList = [];\n let valid = true;\n for (let i = 0; i < to.length; i++) {\n const v = from[i];\n const val = v + (to[i] - v) * ratio;\n if (!Number.isFinite(val)) {\n valid = false;\n break;\n }\n nextList.push(val);\n }\n if (valid) {\n (target.attribute as any)[key] = nextList;\n }\n return true;\n }\n return false;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interpolate/store.ts"],"names":[],"mappings":"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","file":"store.js","sourcesContent":["import type { IGraphic, IStep } from '@visactor/vrender-core';\nimport { interpolateColor, interpolatePureColorArrayToStr, pointsInterpolation } from '@visactor/vrender-core';\nimport { interpolateNumber } from './number';\nimport type { IPointLike } from '@visactor/vutils';\n\n// 直接设置,触发 隐藏类(Hidden Class)优化:\n/**\n *\nconst a = { type: 1 };\nconst ITERATIONS = 1e7; // 测试次数\n\n// 动态生成 keys 数组(确保引擎无法静态推断 key)\nconst keys = [];\nfor (let i = 0; i < ITERATIONS; i++) {\n // 通过条件确保 key 动态变化(但实际始终为 'type',避免属性缺失的开销)\n keys.push(Math.random() < 0 ? 'other' : 'type');\n}\n\n// 测试字面量访问\nfunction testLiteral() {\n let sum = 0;\n for (let i = 0; i < ITERATIONS; i++) {\n const key = keys[i]; // 读取 key(与动态测试完全一致)\n sum += a.type; // 差异仅在此处:使用字面量访问\n }\n return sum;\n}\n\n// 测试变量动态访问\nfunction testDynamic() {\n let sum = 0;\n for (let i = 0; i < ITERATIONS; i++) {\n const key = keys[i]; // 读取 key(与字面量测试完全一致)\n sum += a[key]; // 差异仅在此处:使用变量访问\n }\n return sum;\n}\n\n// 预热(避免 JIT 编译影响)\ntestLiteral();\ntestDynamic();\n\n// 正式测试\nconsole.time('literal');\ntestLiteral();\nconsole.timeEnd('literal');\n\nconsole.time('dynamic');\ntestDynamic();\nconsole.timeEnd('dynamic');\n\n\n// out:\n// literal: 7.1259765625 ms\n// dynamic: 9.322998046875 ms\n */\n\nexport class InterpolateUpdateStore {\n opacity = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.opacity = interpolateNumber(from, to, ratio);\n };\n baseOpacity = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).baseOpacity = interpolateNumber(from, to, ratio);\n };\n fillOpacity = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.fillOpacity = interpolateNumber(from, to, ratio);\n };\n strokeOpacity = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.strokeOpacity = interpolateNumber(from, to, ratio);\n };\n zIndex = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.zIndex = interpolateNumber(from, to, ratio);\n };\n backgroundOpacity = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.backgroundOpacity = interpolateNumber(from, to, ratio);\n };\n shadowOffsetX = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.shadowOffsetX = interpolateNumber(from, to, ratio);\n };\n shadowOffsetY = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.shadowOffsetY = interpolateNumber(from, to, ratio);\n };\n shadowBlur = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.shadowBlur = interpolateNumber(from, to, ratio);\n };\n fill = (\n key: string,\n from: [number, number, number, number],\n to: [number, number, number, number],\n ratio: number,\n step: IStep,\n target: IGraphic\n ) => {\n target.attribute.fill = interpolateColor(from, to, ratio, false) as any;\n };\n fillPure = (\n key: string,\n from: [number, number, number, number],\n to: [number, number, number, number],\n ratio: number,\n step: IStep,\n target: IGraphic\n ) => {\n target.attribute.fill = step.fromParsedProps.fill\n ? (interpolatePureColorArrayToStr(step.fromParsedProps.fill, step.toParsedProps.fill, ratio) as any)\n : step.toParsedProps.fill;\n };\n stroke = (\n key: string,\n from: [number, number, number, number],\n to: [number, number, number, number],\n ratio: number,\n step: IStep,\n target: IGraphic\n ) => {\n target.attribute.stroke = interpolateColor(from, to, ratio, false);\n };\n strokePure = (\n key: string,\n from: [number, number, number, number],\n to: [number, number, number, number],\n ratio: number,\n step: IStep,\n target: IGraphic\n ) => {\n target.attribute.stroke = step.fromParsedProps.stroke\n ? (interpolatePureColorArrayToStr(step.fromParsedProps.stroke, step.toParsedProps.stroke, ratio) as any)\n : step.toParsedProps.stroke;\n };\n\n // 需要更新Bounds\n width = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).width = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n height = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).height = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n x = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.x = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n y = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.y = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n dx = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.dx = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n dy = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.dy = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n angle = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.angle = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n scaleX = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.scaleX = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n scaleY = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.scaleY = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n target.addUpdatePositionTag();\n };\n lineWidth = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n target.attribute.lineWidth = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n startAngle = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).startAngle = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n endAngle = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).endAngle = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n radius = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).radius = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n outerRadius = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).outerRadius = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n innerRadius = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).innerRadius = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n size = (key: string, from: number, to: number, ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).size = interpolateNumber(from, to, ratio);\n target.addUpdateBoundTag();\n };\n points = (key: string, from: IPointLike[], to: IPointLike[], ratio: number, step: IStep, target: IGraphic) => {\n (target.attribute as any).points = pointsInterpolation(from, to, ratio);\n target.addUpdateBoundTag();\n };\n}\n\nexport const interpolateUpdateStore = new InterpolateUpdateStore();\n\nexport function commonInterpolateUpdate(key: string, from: any, to: any, ratio: number, step: IStep, target: IGraphic) {\n if (Number.isFinite(to) && Number.isFinite(from)) {\n (target.attribute as any)[key] = from + (to - from) * ratio;\n return true;\n } else if (Array.isArray(to) && Array.isArray(from) && to.length === from.length) {\n const nextList = [];\n let valid = true;\n for (let i = 0; i < to.length; i++) {\n const v = from[i];\n const val = v + (to[i] - v) * ratio;\n if (!Number.isFinite(val)) {\n valid = false;\n break;\n }\n nextList.push(val);\n }\n if (valid) {\n (target.attribute as any)[key] = nextList;\n }\n return true;\n }\n return false;\n}\n"]}
|
package/cjs/register.js
CHANGED
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.registerAnimate = void 0;
|
|
6
6
|
|
|
7
|
-
const vrender_core_1 = require("@visactor/vrender-core"),
|
|
7
|
+
const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), graphic_extension_1 = require("./state/graphic-extension"), animate_extension_1 = require("./animate-extension");
|
|
8
8
|
|
|
9
9
|
function registerAnimate() {
|
|
10
|
-
vrender_core_1.Graphic.Animate || (vrender_core_1.Graphic.Animate = animate_1.Animate),
|
|
11
|
-
vrender_core_1.Graphic.Timeline || (vrender_core_1.Graphic.Timeline = timeline_1.DefaultTimeline),
|
|
12
|
-
vrender_core_1.Graphic.defaultTimeline || (vrender_core_1.Graphic.defaultTimeline = timeline_1.defaultTimeline),
|
|
13
|
-
vrender_core_1.Graphic.Ticker || (vrender_core_1.Graphic.Ticker = default_ticker_1.DefaultTicker),
|
|
14
10
|
(0, vutils_1.mixin)(vrender_core_1.Graphic, graphic_extension_1.GraphicStateExtension),
|
|
15
11
|
(0, vutils_1.mixin)(vrender_core_1.Graphic, animate_extension_1.AnimateExtension);
|
|
16
12
|
}
|
package/cjs/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/register.ts"],"names":[],"mappings":";;;AAAA,yDAAiD;AACjD,
|
|
1
|
+
{"version":3,"sources":["../src/register.ts"],"names":[],"mappings":";;;AAAA,yDAAiD;AACjD,6CAAyC;AACzC,iEAAkE;AAClE,2DAAuD;AAEvD,SAAgB,eAAe;IAE7B,IAAA,cAAK,EAAC,sBAAO,EAAE,yCAAqB,CAAC,CAAC;IACtC,IAAA,cAAK,EAAC,sBAAO,EAAE,oCAAgB,CAAC,CAAC;AACnC,CAAC;AAJD,0CAIC","file":"register.js","sourcesContent":["import { Graphic } from '@visactor/vrender-core';\nimport { mixin } from '@visactor/vutils';\nimport { GraphicStateExtension } from './state/graphic-extension';\nimport { AnimateExtension } from './animate-extension';\n\nexport function registerAnimate() {\n // Mix in animation state methods to Graphic prototype\n mixin(Graphic, GraphicStateExtension);\n mixin(Graphic, AnimateExtension);\n}\n"]}
|
|
@@ -2,6 +2,19 @@ import type { IGraphic } from '@visactor/vrender-core';
|
|
|
2
2
|
import type { IAnimationState } from './types';
|
|
3
3
|
import type { IAnimationConfig } from '../executor/executor';
|
|
4
4
|
import { AnimateExecutor } from '../executor/animate-executor';
|
|
5
|
+
export declare const AnimationStates: {
|
|
6
|
+
APPEAR: string;
|
|
7
|
+
DISAPPEAR: string;
|
|
8
|
+
UPDATE: string;
|
|
9
|
+
HIGHLIGHT: string;
|
|
10
|
+
UNHIGHLIGHT: string;
|
|
11
|
+
SELECT: string;
|
|
12
|
+
UNSELECT: string;
|
|
13
|
+
HOVER: string;
|
|
14
|
+
UNHOVER: string;
|
|
15
|
+
ACTIVE: string;
|
|
16
|
+
INACTIVE: string;
|
|
17
|
+
};
|
|
5
18
|
export declare class AnimationStateStore {
|
|
6
19
|
graphic: IGraphic;
|
|
7
20
|
constructor(graphic: IGraphic);
|
|
@@ -11,14 +24,19 @@ export declare class AnimationStateStore {
|
|
|
11
24
|
}
|
|
12
25
|
interface IStateInfo {
|
|
13
26
|
state: string;
|
|
14
|
-
animationConfig: IAnimationConfig;
|
|
27
|
+
animationConfig: IAnimationConfig | IAnimationConfig[];
|
|
15
28
|
executor: AnimateExecutor;
|
|
16
29
|
}
|
|
17
30
|
export declare class AnimationStateManager {
|
|
18
31
|
protected graphic: IGraphic;
|
|
19
32
|
stateList: IStateInfo[] | null;
|
|
20
33
|
constructor(graphic: IGraphic);
|
|
21
|
-
applyState(nextState: string[], animationConfig: IAnimationState[], callback?: (empty?: boolean) => void): void;
|
|
34
|
+
applyState(nextState: string[], animationConfig: (IAnimationState | IAnimationState[])[], callback?: (empty?: boolean) => void): void;
|
|
35
|
+
applyAppearState(animationConfig: IAnimationConfig, callback?: () => void): void;
|
|
36
|
+
applyDisappearState(animationConfig: IAnimationConfig, callback?: () => void): void;
|
|
37
|
+
applyUpdateState(animationConfig: IAnimationConfig, callback?: () => void): void;
|
|
38
|
+
applyHighlightState(animationConfig: IAnimationConfig, callback?: () => void): void;
|
|
39
|
+
applyUnhighlightState(animationConfig: IAnimationConfig, callback?: () => void): void;
|
|
22
40
|
stopState(state: string, type?: 'start' | 'end' | Record<string, any>): void;
|
|
23
41
|
clearState(): void;
|
|
24
42
|
}
|
|
@@ -2,9 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.AnimationStateManager = exports.AnimationStateStore = void 0;
|
|
5
|
+
}), exports.AnimationStateManager = exports.AnimationStateStore = exports.AnimationStates = void 0;
|
|
6
6
|
|
|
7
|
-
const animation_states_registry_1 = require("./animation-states-registry"), animate_executor_1 = require("../executor/animate-executor");
|
|
7
|
+
const animation_states_registry_1 = require("./animation-states-registry"), animate_executor_1 = require("../executor/animate-executor"), vutils_1 = require("@visactor/vutils");
|
|
8
|
+
|
|
9
|
+
exports.AnimationStates = {
|
|
10
|
+
APPEAR: "appear",
|
|
11
|
+
DISAPPEAR: "disappear",
|
|
12
|
+
UPDATE: "update",
|
|
13
|
+
HIGHLIGHT: "highlight",
|
|
14
|
+
UNHIGHLIGHT: "unhighlight",
|
|
15
|
+
SELECT: "select",
|
|
16
|
+
UNSELECT: "unselect",
|
|
17
|
+
HOVER: "hover",
|
|
18
|
+
UNHOVER: "unhover",
|
|
19
|
+
ACTIVE: "active",
|
|
20
|
+
INACTIVE: "inactive"
|
|
21
|
+
};
|
|
8
22
|
|
|
9
23
|
class AnimationStateStore {
|
|
10
24
|
constructor(graphic) {
|
|
@@ -37,7 +51,7 @@ class AnimationStateManager {
|
|
|
37
51
|
result.allowTransition = result.allowTransition && _result.allowTransition;
|
|
38
52
|
})), result.allowTransition && (shouldApplyState.push({
|
|
39
53
|
state: state,
|
|
40
|
-
animationConfig: animationConfig[index].animation,
|
|
54
|
+
animationConfig: (0, vutils_1.isArray)(animationConfig[index]) ? animationConfig[index].map((item => item.animation)) : animationConfig[index].animation,
|
|
41
55
|
executor: new animate_executor_1.AnimateExecutor(this.graphic)
|
|
42
56
|
}), this.stateList.forEach((currState => {
|
|
43
57
|
registry.isTransitionAllowed(currState.state, state, this.graphic).stopOriginalTransition && shouldStopState.push(currState);
|
|
@@ -45,7 +59,7 @@ class AnimationStateManager {
|
|
|
45
59
|
})) : nextState.forEach(((state, index) => {
|
|
46
60
|
shouldApplyState.push({
|
|
47
61
|
state: state,
|
|
48
|
-
animationConfig: animationConfig[index].animation,
|
|
62
|
+
animationConfig: (0, vutils_1.isArray)(animationConfig[index]) ? animationConfig[index].map((item => item.animation)) : animationConfig[index].animation,
|
|
49
63
|
executor: new animate_executor_1.AnimateExecutor(this.graphic)
|
|
50
64
|
});
|
|
51
65
|
})), shouldStopState.forEach((state => {
|
|
@@ -63,6 +77,36 @@ class AnimationStateManager {
|
|
|
63
77
|
this.stateList ? this.stateList = this.stateList.filter((state => !shouldStopState.includes(state))) : this.stateList = [],
|
|
64
78
|
this.stateList.push(...shouldApplyState);
|
|
65
79
|
}
|
|
80
|
+
applyAppearState(animationConfig, callback) {
|
|
81
|
+
this.applyState([ exports.AnimationStates.APPEAR ], [ {
|
|
82
|
+
name: exports.AnimationStates.APPEAR,
|
|
83
|
+
animation: animationConfig
|
|
84
|
+
} ], callback);
|
|
85
|
+
}
|
|
86
|
+
applyDisappearState(animationConfig, callback) {
|
|
87
|
+
this.applyState([ exports.AnimationStates.DISAPPEAR ], [ {
|
|
88
|
+
name: exports.AnimationStates.DISAPPEAR,
|
|
89
|
+
animation: animationConfig
|
|
90
|
+
} ], callback);
|
|
91
|
+
}
|
|
92
|
+
applyUpdateState(animationConfig, callback) {
|
|
93
|
+
this.applyState([ exports.AnimationStates.UPDATE ], [ {
|
|
94
|
+
name: exports.AnimationStates.UPDATE,
|
|
95
|
+
animation: animationConfig
|
|
96
|
+
} ], callback);
|
|
97
|
+
}
|
|
98
|
+
applyHighlightState(animationConfig, callback) {
|
|
99
|
+
this.applyState([ exports.AnimationStates.HIGHLIGHT ], [ {
|
|
100
|
+
name: exports.AnimationStates.HIGHLIGHT,
|
|
101
|
+
animation: animationConfig
|
|
102
|
+
} ], callback);
|
|
103
|
+
}
|
|
104
|
+
applyUnhighlightState(animationConfig, callback) {
|
|
105
|
+
this.applyState([ exports.AnimationStates.UNHIGHLIGHT ], [ {
|
|
106
|
+
name: exports.AnimationStates.UNHIGHLIGHT,
|
|
107
|
+
animation: animationConfig
|
|
108
|
+
} ], callback);
|
|
109
|
+
}
|
|
66
110
|
stopState(state, type) {
|
|
67
111
|
var _a;
|
|
68
112
|
const stateInfo = null === (_a = this.stateList) || void 0 === _a ? void 0 : _a.find((stateInfo => stateInfo.state === state));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/animation-state.ts"],"names":[],"mappings":"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","file":"animation-state.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport type { IAnimationState } from './types';\nimport { AnimationTransitionRegistry } from './animation-states-registry';\nimport type { IAnimationConfig } from '../executor/executor';\nimport { AnimateExecutor } from '../executor/animate-executor';\n\nexport class AnimationStateStore {\n graphic: IGraphic;\n\n constructor(graphic: IGraphic) {\n this.graphic = graphic;\n }\n\n // 动画状态配置\n // 并不是所有图元都有(只有mark才有),所以在应用状态的时候,需要额外传入\n states?: Map<string, IAnimationState>;\n\n registerState(state: IAnimationState): void {\n if (!this.states) {\n this.states = new Map();\n }\n this.states.set(state.name, state);\n }\n\n clearStates(): void {\n this.states?.clear();\n }\n}\n\n// 一个状态对应一个执行器,每个图元都有一一对应\ninterface IStateInfo {\n state: string;\n animationConfig: IAnimationConfig;\n executor: AnimateExecutor;\n}\n\nexport class AnimationStateManager {\n protected graphic: IGraphic;\n\n // 当前状态\n // TODO(注意,这里无法了解动画的顺序,既有串行也有并行,具体在执行的时候确定,执行之后就无法获取串行或并行配置了)\n stateList: IStateInfo[] | null = null;\n\n constructor(graphic: IGraphic) {\n this.graphic = graphic;\n }\n\n // TODO 这里因为只有状态变更才会调用,所以代码写的比较宽松,如果有性能问题需要优化\n /**\n * 应用状态\n * @param nextState 下一个状态数组,如果传入数组,那么状态是串行的。但是每次applyState都会立即执行动画,也就是applyState和applyState之间是并行\n * @param animationConfig 动画配置\n * @param callback 动画结束后的回调函数,参数empty为true表示没有动画需要执行直接调的回调\n */\n applyState(nextState: string[], animationConfig: IAnimationState[], callback?: (empty?: boolean) => void): void {\n const registry = AnimationTransitionRegistry.getInstance();\n\n // TODO 这里指判断第一个状态,后续如果需要的话要循环判断\n // 检查是否需要停止当前状态,以及下一个状态是否需要应用\n const shouldStopState: IStateInfo[] = [];\n const shouldApplyState: IStateInfo[] = [];\n if (!(this.stateList && this.stateList.length)) {\n nextState.forEach((state, index) => {\n shouldApplyState.push({\n state,\n animationConfig: animationConfig[index].animation,\n executor: new AnimateExecutor(this.graphic)\n });\n });\n } else {\n // const _stateList = this.stateList[0];\n nextState.forEach((state, index) => {\n // 遍历this.stateList,获取result,只要有一个是false,那这个result就是false\n const result: { allowTransition: boolean; stopOriginalTransition: boolean } = {\n allowTransition: true,\n stopOriginalTransition: true\n };\n this.stateList.forEach(currState => {\n const _result = registry.isTransitionAllowed(currState.state, state, this.graphic);\n result.allowTransition = result.allowTransition && _result.allowTransition;\n });\n // 所有状态都允许过渡,则添加到shouldApplyState\n if (result.allowTransition) {\n shouldApplyState.push({\n state,\n animationConfig: animationConfig[index].animation,\n executor: new AnimateExecutor(this.graphic)\n });\n // 允许过渡的话,需要重新遍历this.stateList,获取stopOriginalTransition\n this.stateList.forEach(currState => {\n const _result = registry.isTransitionAllowed(currState.state, state, this.graphic);\n if (_result.stopOriginalTransition) {\n shouldStopState.push(currState);\n }\n });\n }\n });\n }\n\n // 停止动画\n shouldStopState.forEach(state => {\n state.executor.stop();\n });\n\n // 立即应用动画,串行的应用\n if (shouldApplyState.length) {\n shouldApplyState[0].executor.execute(shouldApplyState[0].animationConfig);\n // 如果下一个状态存在,那么下一个状态的动画在当前状态动画结束后立即执行\n for (let i = 0; i < shouldApplyState.length; i++) {\n const nextState = shouldApplyState[i + 1];\n const currentState = shouldApplyState[i];\n currentState.executor.onEnd(() => {\n if (nextState) {\n nextState.executor.execute(nextState.animationConfig);\n }\n // 删除这个状态\n this.stateList = this.stateList.filter(state => state !== currentState);\n\n // 如果是最后一个状态且有回调,则调用回调\n if (i === shouldApplyState.length - 1 && callback) {\n callback(false);\n }\n });\n }\n } else if (callback) {\n // 如果没有需要应用的动画状态,直接调用回调\n callback(true);\n }\n\n if (this.stateList) {\n this.stateList = this.stateList.filter(state => !shouldStopState.includes(state));\n } else {\n this.stateList = [];\n }\n this.stateList.push(...shouldApplyState);\n }\n\n stopState(state: string, type?: 'start' | 'end' | Record<string, any>): void {\n const stateInfo = this.stateList?.find(stateInfo => stateInfo.state === state);\n if (stateInfo) {\n stateInfo.executor.stop(type);\n }\n }\n\n clearState(): void {\n // 清空状态\n this.stateList?.forEach(state => {\n state.executor.stop();\n });\n this.stateList = null;\n }\n\n // getstateList(): string[] | null {\n // return this.stateList;\n // }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/state/animation-state.ts"],"names":[],"mappings":"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","file":"animation-state.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport type { IAnimationState } from './types';\nimport { AnimationTransitionRegistry } from './animation-states-registry';\nimport type { IAnimationConfig } from '../executor/executor';\nimport { AnimateExecutor } from '../executor/animate-executor';\nimport { isArray } from '@visactor/vutils';\n\n// Standard animation state names\nexport const AnimationStates = {\n APPEAR: 'appear',\n DISAPPEAR: 'disappear',\n UPDATE: 'update',\n HIGHLIGHT: 'highlight',\n UNHIGHLIGHT: 'unhighlight',\n SELECT: 'select',\n UNSELECT: 'unselect',\n HOVER: 'hover',\n UNHOVER: 'unhover',\n ACTIVE: 'active',\n INACTIVE: 'inactive'\n};\n\nexport class AnimationStateStore {\n graphic: IGraphic;\n\n constructor(graphic: IGraphic) {\n this.graphic = graphic;\n }\n\n // 动画状态配置\n // 并不是所有图元都有(只有mark才有),所以在应用状态的时候,需要额外传入\n states?: Map<string, IAnimationState>;\n\n registerState(state: IAnimationState): void {\n if (!this.states) {\n this.states = new Map();\n }\n this.states.set(state.name, state);\n }\n\n clearStates(): void {\n this.states?.clear();\n }\n}\n\n// 一个状态对应一个执行器,每个图元都有一一对应\ninterface IStateInfo {\n state: string;\n animationConfig: IAnimationConfig | IAnimationConfig[];\n executor: AnimateExecutor;\n}\n\nexport class AnimationStateManager {\n protected graphic: IGraphic;\n\n // 当前状态\n // TODO(注意,这里无法了解动画的顺序,既有串行也有并行,具体在执行的时候确定,执行之后就无法获取串行或并行配置了)\n stateList: IStateInfo[] | null = null;\n\n constructor(graphic: IGraphic) {\n this.graphic = graphic;\n }\n\n // TODO 这里因为只有状态变更才会调用,所以代码写的比较宽松,如果有性能问题需要优化\n /**\n * 应用状态\n * @param nextState 下一个状态数组,如果传入数组,那么状态是串行的。但是每次applyState都会立即执行动画,也就是applyState和applyState之间是并行\n * @param animationConfig 动画配置\n * @param callback 动画结束后的回调函数,参数empty为true表示没有动画需要执行直接调的回调\n */\n applyState(\n nextState: string[],\n animationConfig: (IAnimationState | IAnimationState[])[],\n callback?: (empty?: boolean) => void\n ): void {\n const registry = AnimationTransitionRegistry.getInstance();\n\n // TODO 这里指判断第一个状态,后续如果需要的话要循环判断\n // 检查是否需要停止当前状态,以及下一个状态是否需要应用\n const shouldStopState: IStateInfo[] = [];\n const shouldApplyState: IStateInfo[] = [];\n if (!(this.stateList && this.stateList.length)) {\n nextState.forEach((state, index) => {\n shouldApplyState.push({\n state,\n animationConfig: isArray(animationConfig[index])\n ? (animationConfig[index] as IAnimationState[]).map(item => item.animation)\n : (animationConfig[index] as IAnimationState).animation,\n executor: new AnimateExecutor(this.graphic)\n });\n });\n } else {\n // const _stateList = this.stateList[0];\n nextState.forEach((state, index) => {\n // 遍历this.stateList,获取result,只要有一个是false,那这个result就是false\n const result: { allowTransition: boolean; stopOriginalTransition: boolean } = {\n allowTransition: true,\n stopOriginalTransition: true\n };\n this.stateList.forEach(currState => {\n const _result = registry.isTransitionAllowed(currState.state, state, this.graphic);\n result.allowTransition = result.allowTransition && _result.allowTransition;\n });\n // 所有状态都允许过渡,则添加到shouldApplyState\n if (result.allowTransition) {\n shouldApplyState.push({\n state,\n animationConfig: isArray(animationConfig[index])\n ? (animationConfig[index] as IAnimationState[]).map(item => item.animation)\n : (animationConfig[index] as IAnimationState).animation,\n executor: new AnimateExecutor(this.graphic)\n });\n // 允许过渡的话,需要重新遍历this.stateList,获取stopOriginalTransition\n this.stateList.forEach(currState => {\n const _result = registry.isTransitionAllowed(currState.state, state, this.graphic);\n if (_result.stopOriginalTransition) {\n shouldStopState.push(currState);\n }\n });\n }\n });\n }\n\n // 停止动画\n shouldStopState.forEach(state => {\n state.executor.stop();\n });\n\n // 立即应用动画,串行的应用\n if (shouldApplyState.length) {\n shouldApplyState[0].executor.execute(shouldApplyState[0].animationConfig);\n // 如果下一个状态存在,那么下一个状态的动画在当前状态动画结束后立即执行\n for (let i = 0; i < shouldApplyState.length; i++) {\n const nextState = shouldApplyState[i + 1];\n const currentState = shouldApplyState[i];\n currentState.executor.onEnd(() => {\n if (nextState) {\n nextState.executor.execute(nextState.animationConfig);\n }\n // 删除这个状态\n this.stateList = this.stateList.filter(state => state !== currentState);\n\n // 如果是最后一个状态且有回调,则调用回调\n if (i === shouldApplyState.length - 1 && callback) {\n callback(false);\n }\n });\n }\n } else if (callback) {\n // 如果没有需要应用的动画状态,直接调用回调\n callback(true);\n }\n\n if (this.stateList) {\n this.stateList = this.stateList.filter(state => !shouldStopState.includes(state));\n } else {\n this.stateList = [];\n }\n this.stateList.push(...shouldApplyState);\n }\n\n /**\n * Apply a standard appear animation to the graphic\n * @param animationConfig Animation configuration\n * @param callback Callback to be called when animation ends\n */\n applyAppearState(animationConfig: IAnimationConfig, callback?: () => void): void {\n this.applyState([AnimationStates.APPEAR], [{ name: AnimationStates.APPEAR, animation: animationConfig }], callback);\n }\n\n /**\n * Apply a standard disappear animation to the graphic\n * @param animationConfig Animation configuration\n * @param callback Callback to be called when animation ends\n */\n applyDisappearState(animationConfig: IAnimationConfig, callback?: () => void): void {\n this.applyState(\n [AnimationStates.DISAPPEAR],\n [{ name: AnimationStates.DISAPPEAR, animation: animationConfig }],\n callback\n );\n }\n\n /**\n * Apply a standard update animation to the graphic\n * @param animationConfig Animation configuration\n * @param callback Callback to be called when animation ends\n */\n applyUpdateState(animationConfig: IAnimationConfig, callback?: () => void): void {\n this.applyState([AnimationStates.UPDATE], [{ name: AnimationStates.UPDATE, animation: animationConfig }], callback);\n }\n\n /**\n * Apply a standard highlight animation to the graphic\n * @param animationConfig Animation configuration\n * @param callback Callback to be called when animation ends\n */\n applyHighlightState(animationConfig: IAnimationConfig, callback?: () => void): void {\n this.applyState(\n [AnimationStates.HIGHLIGHT],\n [{ name: AnimationStates.HIGHLIGHT, animation: animationConfig }],\n callback\n );\n }\n\n /**\n * Apply a standard unhighlight animation to the graphic\n * @param animationConfig Animation configuration\n * @param callback Callback to be called when animation ends\n */\n applyUnhighlightState(animationConfig: IAnimationConfig, callback?: () => void): void {\n this.applyState(\n [AnimationStates.UNHIGHLIGHT],\n [{ name: AnimationStates.UNHIGHLIGHT, animation: animationConfig }],\n callback\n );\n }\n\n stopState(state: string, type?: 'start' | 'end' | Record<string, any>): void {\n const stateInfo = this.stateList?.find(stateInfo => stateInfo.state === state);\n if (stateInfo) {\n stateInfo.executor.stop(type);\n }\n }\n\n clearState(): void {\n // 清空状态\n this.stateList?.forEach(state => {\n state.executor.stop();\n });\n this.stateList = null;\n }\n\n // getstateList(): string[] | null {\n // return this.stateList;\n // }\n}\n"]}
|
|
@@ -67,6 +67,24 @@ class AnimationTransitionRegistry {
|
|
|
67
67
|
}))), this.registerTransition("disappear", "appear", (() => ({
|
|
68
68
|
allowTransition: !0,
|
|
69
69
|
stopOriginalTransition: !0
|
|
70
|
+
}))), this.registerTransition("update", "*", (() => ({
|
|
71
|
+
allowTransition: !0,
|
|
72
|
+
stopOriginalTransition: !1
|
|
73
|
+
}))), this.registerTransition("update", "disappear", (() => ({
|
|
74
|
+
allowTransition: !0,
|
|
75
|
+
stopOriginalTransition: !0
|
|
76
|
+
}))), this.registerTransition("update", "exit", (() => ({
|
|
77
|
+
allowTransition: !0,
|
|
78
|
+
stopOriginalTransition: !0
|
|
79
|
+
}))), this.registerTransition("state", "*", (() => ({
|
|
80
|
+
allowTransition: !0,
|
|
81
|
+
stopOriginalTransition: !1
|
|
82
|
+
}))), this.registerTransition("state", "disappear", (() => ({
|
|
83
|
+
allowTransition: !0,
|
|
84
|
+
stopOriginalTransition: !0
|
|
85
|
+
}))), this.registerTransition("state", "exit", (() => ({
|
|
86
|
+
allowTransition: !0,
|
|
87
|
+
stopOriginalTransition: !0
|
|
70
88
|
})));
|
|
71
89
|
}
|
|
72
90
|
isTransitionAllowed(fromState, toState, graphic) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/animation-states-registry.ts"],"names":[],"mappings":";;;AAgBA,MAAa,2BAA2B;IAMtC;QAFQ,gBAAW,GAAiD,IAAI,GAAG,EAAE,CAAC;QAG5E,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;IAKD,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE;YACzC,2BAA2B,CAAC,QAAQ,GAAG,IAAI,2BAA2B,EAAE,CAAC;SAC1E;QACD,OAAO,2BAA2B,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAKO,0BAA0B;QAEhC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACjD,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACjD,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1C,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7C,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACnD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;IAKD,mBAAmB,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAiB;;QAEvE,IAAI,IAAI,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,0CAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACjC;QAGD,IAAI,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,0CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACjC;QAGD,IAAI,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACjC;QAGD,IAAI,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACjC;QAGD,OAAO;YACL,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC;IACJ,CAAC;IAKD,kBAAkB,CAAC,SAAiB,EAAE,OAAe,EAAE,UAA8B;QACnF,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEnD,IAAI,CAAC,YAAY,EAAE;YACjB,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;SAC/C;QAED,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;CACF;AAlKD,kEAkKC;AAGD,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAE5D,gDAAkB","file":"animation-states-registry.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\n\ninterface ITransitionResult {\n allowTransition: boolean;\n stopOriginalTransition: boolean;\n}\n\n/**\n * 注册动画状态切换的转换函数\n */\nexport type TransitionFunction = (graphic: IGraphic, fromState: string) => ITransitionResult;\n\n/**\n * 动画状态切换的注册表\n * 管理所有图形的动画状态切换逻辑\n */\nexport class AnimationTransitionRegistry {\n private static instance: AnimationTransitionRegistry;\n\n // 源状态到目标状态的映射,每个目标状态都有一个转换函数\n private transitions: Map<string, Map<string, TransitionFunction>> = new Map();\n\n constructor() {\n this.registerDefaultTransitions();\n }\n\n /**\n * 获取注册表的单例实例\n */\n static getInstance(): AnimationTransitionRegistry {\n if (!AnimationTransitionRegistry.instance) {\n AnimationTransitionRegistry.instance = new AnimationTransitionRegistry();\n }\n return AnimationTransitionRegistry.instance;\n }\n\n /**\n * 注册默认的转换规则\n */\n private registerDefaultTransitions(): void {\n // appear动画,可以被任何动画覆盖,但不会停止(disappear、exit除外)\n this.registerTransition('appear', '*', () => ({\n allowTransition: true,\n stopOriginalTransition: false\n }));\n // appear 动画碰到appear动画,什么都不会发生\n this.registerTransition('appear', 'appear', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n this.registerTransition('appear', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n this.registerTransition('appear', 'exit', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n\n // 循环动画(normal),可以被任何动画覆盖,但不会停止(disappear、exit除外)\n this.registerTransition('normal', '*', () => ({\n allowTransition: true,\n stopOriginalTransition: false\n }));\n // 循环动画碰到循环动画,什么都不会发生\n this.registerTransition('normal', 'normal', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n this.registerTransition('normal', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n this.registerTransition('normal', 'exit', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n\n // 退出动画不能被覆盖或停止(disappear除外)\n this.registerTransition('exit', '*', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n this.registerTransition('exit', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n // 退出动画碰到enter动画,会立即停止\n this.registerTransition('exit', 'enter', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n // 退出动画碰到退出,什么都不会发生\n this.registerTransition('exit', 'exit', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n\n // enter 动画可以被任何动画覆盖,但不会停止(exit、disappear除外)\n this.registerTransition('enter', '*', () => ({\n allowTransition: true,\n stopOriginalTransition: false\n }));\n // enter 动画碰到enter动画,什么都不会发生\n this.registerTransition('enter', 'enter', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n this.registerTransition('enter', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n this.registerTransition('enter', 'exit', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n\n // disappear 动画碰到任何动画,什么都不会发生(appear除外)\n this.registerTransition('disappear', '*', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n\n // disappear 动画碰到appear动画,会立即停止\n this.registerTransition('disappear', 'appear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n }\n\n /**\n * 检查两个状态之间是否允许转换\n */\n isTransitionAllowed(fromState: string, toState: string, graphic: IGraphic): ITransitionResult {\n // 直接转换规则\n let func = this.transitions.get(fromState)?.get(toState);\n if (func) {\n return func(graphic, fromState);\n }\n\n // 状态到通配符\n func = this.transitions.get(fromState)?.get('*');\n if (func) {\n return func(graphic, fromState);\n }\n\n // 通配符到状态\n func = this.transitions.get('*')?.get(toState);\n if (func) {\n return func(graphic, fromState);\n }\n\n // 通配符到通配符\n func = this.transitions.get('*')?.get('*');\n if (func) {\n return func(graphic, fromState);\n }\n\n // 默认允许转换\n return {\n allowTransition: true,\n stopOriginalTransition: true\n };\n }\n\n /**\n * 注册两个状态之间的转换\n */\n registerTransition(fromState: string, toState: string, transition: TransitionFunction): void {\n let fromStateMap = this.transitions.get(fromState);\n\n if (!fromStateMap) {\n fromStateMap = new Map();\n this.transitions.set(fromState, fromStateMap);\n }\n\n fromStateMap.set(toState, transition);\n }\n}\n\n// 初始化单例转换注册表\nconst transitionRegistry = AnimationTransitionRegistry.getInstance();\n\nexport { transitionRegistry };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/state/animation-states-registry.ts"],"names":[],"mappings":";;;AAgBA,MAAa,2BAA2B;IAMtC;QAFQ,gBAAW,GAAiD,IAAI,GAAG,EAAE,CAAC;QAG5E,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;IAKD,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE;YACzC,2BAA2B,CAAC,QAAQ,GAAG,IAAI,2BAA2B,EAAE,CAAC;SAC1E;QACD,OAAO,2BAA2B,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAKO,0BAA0B;QAEhC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACjD,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACjD,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1C,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7C,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACnD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,KAAK;YACtB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACnD,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9C,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;IAKD,mBAAmB,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAiB;;QAEvE,IAAI,IAAI,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,0CAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACjC;QAGD,IAAI,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,0CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACjC;QAGD,IAAI,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACjC;QAGD,IAAI,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACjC;QAGD,OAAO;YACL,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,CAAC;IACJ,CAAC;IAKD,kBAAkB,CAAC,SAAiB,EAAE,OAAe,EAAE,UAA8B;QACnF,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEnD,IAAI,CAAC,YAAY,EAAE;YACjB,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;SAC/C;QAED,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;CACF;AAjMD,kEAiMC;AAGD,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAE5D,gDAAkB","file":"animation-states-registry.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\n\ninterface ITransitionResult {\n allowTransition: boolean;\n stopOriginalTransition: boolean;\n}\n\n/**\n * 注册动画状态切换的转换函数\n */\nexport type TransitionFunction = (graphic: IGraphic, fromState: string) => ITransitionResult;\n\n/**\n * 动画状态切换的注册表\n * 管理所有图形的动画状态切换逻辑\n */\nexport class AnimationTransitionRegistry {\n private static instance: AnimationTransitionRegistry;\n\n // 源状态到目标状态的映射,每个目标状态都有一个转换函数\n private transitions: Map<string, Map<string, TransitionFunction>> = new Map();\n\n constructor() {\n this.registerDefaultTransitions();\n }\n\n /**\n * 获取注册表的单例实例\n */\n static getInstance(): AnimationTransitionRegistry {\n if (!AnimationTransitionRegistry.instance) {\n AnimationTransitionRegistry.instance = new AnimationTransitionRegistry();\n }\n return AnimationTransitionRegistry.instance;\n }\n\n /**\n * 注册默认的转换规则\n */\n private registerDefaultTransitions(): void {\n // appear动画,可以被任何动画覆盖,但不会停止(disappear、exit除外)\n this.registerTransition('appear', '*', () => ({\n allowTransition: true,\n stopOriginalTransition: false\n }));\n // appear 动画碰到appear动画,什么都不会发生\n this.registerTransition('appear', 'appear', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n this.registerTransition('appear', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n this.registerTransition('appear', 'exit', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n\n // 循环动画(normal),可以被任何动画覆盖,但不会停止(disappear、exit除外)\n this.registerTransition('normal', '*', () => ({\n allowTransition: true,\n stopOriginalTransition: false\n }));\n // 循环动画碰到循环动画,什么都不会发生\n this.registerTransition('normal', 'normal', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n this.registerTransition('normal', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n this.registerTransition('normal', 'exit', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n\n // 退出动画不能被覆盖或停止(disappear除外)\n this.registerTransition('exit', '*', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n this.registerTransition('exit', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n // 退出动画碰到enter动画,会立即停止\n this.registerTransition('exit', 'enter', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n // 退出动画碰到退出,什么都不会发生\n this.registerTransition('exit', 'exit', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n\n // enter 动画可以被任何动画覆盖,但不会停止(exit、disappear除外)\n this.registerTransition('enter', '*', () => ({\n allowTransition: true,\n stopOriginalTransition: false\n }));\n // enter 动画碰到enter动画,什么都不会发生\n this.registerTransition('enter', 'enter', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n this.registerTransition('enter', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n this.registerTransition('enter', 'exit', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n\n // disappear 动画碰到任何动画,什么都不会发生(appear除外)\n this.registerTransition('disappear', '*', () => ({\n allowTransition: false,\n stopOriginalTransition: false\n }));\n\n // disappear 动画碰到appear动画,会立即停止\n this.registerTransition('disappear', 'appear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n\n this.registerTransition('update', '*', () => ({\n allowTransition: true,\n stopOriginalTransition: false\n }));\n // update动画碰到disappear动画,会停止,也会被覆盖\n this.registerTransition('update', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n // update动画碰到exit动画,会停止,也会被覆盖\n this.registerTransition('update', 'exit', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n\n // state动画,可以被任何动画覆盖,但不会停止(disappear、exit除外)\n this.registerTransition('state', '*', () => ({\n allowTransition: true,\n stopOriginalTransition: false\n }));\n // state动画碰到disappear动画,会停止,也会被覆盖\n this.registerTransition('state', 'disappear', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n // state动画碰到exit动画,会停止,也会被覆盖\n this.registerTransition('state', 'exit', () => ({\n allowTransition: true,\n stopOriginalTransition: true\n }));\n }\n\n /**\n * 检查两个状态之间是否允许转换\n */\n isTransitionAllowed(fromState: string, toState: string, graphic: IGraphic): ITransitionResult {\n // 直接转换规则\n let func = this.transitions.get(fromState)?.get(toState);\n if (func) {\n return func(graphic, fromState);\n }\n\n // 状态到通配符\n func = this.transitions.get(fromState)?.get('*');\n if (func) {\n return func(graphic, fromState);\n }\n\n // 通配符到状态\n func = this.transitions.get('*')?.get(toState);\n if (func) {\n return func(graphic, fromState);\n }\n\n // 通配符到通配符\n func = this.transitions.get('*')?.get('*');\n if (func) {\n return func(graphic, fromState);\n }\n\n // 默认允许转换\n return {\n allowTransition: true,\n stopOriginalTransition: true\n };\n }\n\n /**\n * 注册两个状态之间的转换\n */\n registerTransition(fromState: string, toState: string, transition: TransitionFunction): void {\n let fromStateMap = this.transitions.get(fromState);\n\n if (!fromStateMap) {\n fromStateMap = new Map();\n this.transitions.set(fromState, fromStateMap);\n }\n\n fromStateMap.set(toState, transition);\n }\n}\n\n// 初始化单例转换注册表\nconst transitionRegistry = AnimationTransitionRegistry.getInstance();\n\nexport { transitionRegistry };\n"]}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type { IGraphic } from '@visactor/vrender-core';
|
|
2
2
|
import type { IAnimationState } from './types';
|
|
3
3
|
import { AnimationStateManager, AnimationStateStore } from './animation-state';
|
|
4
|
+
import type { IAnimationConfig } from '../executor/executor';
|
|
4
5
|
export declare class GraphicStateExtension {
|
|
5
6
|
_getAnimationStateManager(graphic: IGraphic): AnimationStateManager;
|
|
6
7
|
_getAnimationStateStore(graphic: IGraphic): AnimationStateStore;
|
|
7
8
|
registerAnimationState(state: IAnimationState): this;
|
|
8
|
-
applyAnimationState(state: string[], animationConfig: IAnimationState[], callback?: (empty?: boolean) => void): this;
|
|
9
|
+
applyAnimationState(state: string[], animationConfig: (IAnimationState | IAnimationState[])[], callback?: (empty?: boolean) => void): this;
|
|
10
|
+
applyAppearState(animationConfig: IAnimationConfig, callback?: () => void): this;
|
|
11
|
+
applyDisappearState(animationConfig: IAnimationConfig, callback?: () => void): this;
|
|
12
|
+
applyUpdateState(animationConfig: IAnimationConfig, callback?: () => void): this;
|
|
13
|
+
applyHighlightState(animationConfig: IAnimationConfig, callback?: () => void): this;
|
|
14
|
+
applyUnhighlightState(animationConfig: IAnimationConfig, callback?: () => void): this;
|
|
9
15
|
stopAnimationState(state: string, type?: 'start' | 'end' | Record<string, any>): this;
|
|
10
16
|
clearAnimationStates(): this;
|
|
11
17
|
static extend(graphic: IGraphic): IGraphic;
|