@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/es/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,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG7C,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,cAAc,mBAAmB,CAAC;AAElC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,cAAc,aAAa,CAAC","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/es/interpolate/store.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { interpolateColor, interpolatePureColorArrayToStr } from "@visactor/vrender-core";
|
|
1
|
+
import { interpolateColor, interpolatePureColorArrayToStr, pointsInterpolation } from "@visactor/vrender-core";
|
|
2
2
|
|
|
3
3
|
import { interpolateNumber } from "./number";
|
|
4
4
|
|
|
@@ -6,6 +6,8 @@ export class InterpolateUpdateStore {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
this.opacity = (key, from, to, ratio, step, target) => {
|
|
8
8
|
target.attribute.opacity = interpolateNumber(from, to, ratio);
|
|
9
|
+
}, this.baseOpacity = (key, from, to, ratio, step, target) => {
|
|
10
|
+
target.attribute.baseOpacity = interpolateNumber(from, to, ratio);
|
|
9
11
|
}, this.fillOpacity = (key, from, to, ratio, step, target) => {
|
|
10
12
|
target.attribute.fillOpacity = interpolateNumber(from, to, ratio);
|
|
11
13
|
}, this.strokeOpacity = (key, from, to, ratio, step, target) => {
|
|
@@ -23,11 +25,11 @@ export class InterpolateUpdateStore {
|
|
|
23
25
|
}, this.fill = (key, from, to, ratio, step, target) => {
|
|
24
26
|
target.attribute.fill = interpolateColor(from, to, ratio, !1);
|
|
25
27
|
}, this.fillPure = (key, from, to, ratio, step, target) => {
|
|
26
|
-
target.attribute.fill = interpolatePureColorArrayToStr(step.fromParsedProps.fill, step.toParsedProps.fill, ratio);
|
|
28
|
+
target.attribute.fill = step.fromParsedProps.fill ? interpolatePureColorArrayToStr(step.fromParsedProps.fill, step.toParsedProps.fill, ratio) : step.toParsedProps.fill;
|
|
27
29
|
}, this.stroke = (key, from, to, ratio, step, target) => {
|
|
28
30
|
target.attribute.stroke = interpolateColor(from, to, ratio, !1);
|
|
29
31
|
}, this.strokePure = (key, from, to, ratio, step, target) => {
|
|
30
|
-
target.attribute.stroke = interpolatePureColorArrayToStr(step.fromParsedProps.stroke, step.toParsedProps.stroke, ratio);
|
|
32
|
+
target.attribute.stroke = step.fromParsedProps.stroke ? interpolatePureColorArrayToStr(step.fromParsedProps.stroke, step.toParsedProps.stroke, ratio) : step.toParsedProps.stroke;
|
|
31
33
|
}, this.width = (key, from, to, ratio, step, target) => {
|
|
32
34
|
target.attribute.width = interpolateNumber(from, to, ratio), target.addUpdateBoundTag();
|
|
33
35
|
}, this.height = (key, from, to, ratio, step, target) => {
|
|
@@ -38,6 +40,12 @@ export class InterpolateUpdateStore {
|
|
|
38
40
|
}, this.y = (key, from, to, ratio, step, target) => {
|
|
39
41
|
target.attribute.y = interpolateNumber(from, to, ratio), target.addUpdateBoundTag(),
|
|
40
42
|
target.addUpdatePositionTag();
|
|
43
|
+
}, this.dx = (key, from, to, ratio, step, target) => {
|
|
44
|
+
target.attribute.dx = interpolateNumber(from, to, ratio), target.addUpdateBoundTag(),
|
|
45
|
+
target.addUpdatePositionTag();
|
|
46
|
+
}, this.dy = (key, from, to, ratio, step, target) => {
|
|
47
|
+
target.attribute.dy = interpolateNumber(from, to, ratio), target.addUpdateBoundTag(),
|
|
48
|
+
target.addUpdatePositionTag();
|
|
41
49
|
}, this.angle = (key, from, to, ratio, step, target) => {
|
|
42
50
|
target.attribute.angle = interpolateNumber(from, to, ratio), target.addUpdateBoundTag(),
|
|
43
51
|
target.addUpdatePositionTag();
|
|
@@ -61,6 +69,8 @@ export class InterpolateUpdateStore {
|
|
|
61
69
|
target.attribute.innerRadius = interpolateNumber(from, to, ratio), target.addUpdateBoundTag();
|
|
62
70
|
}, this.size = (key, from, to, ratio, step, target) => {
|
|
63
71
|
target.attribute.size = interpolateNumber(from, to, ratio), target.addUpdateBoundTag();
|
|
72
|
+
}, this.points = (key, from, to, ratio, step, target) => {
|
|
73
|
+
target.attribute.points = pointsInterpolation(from, to, ratio), target.addUpdateBoundTag();
|
|
64
74
|
};
|
|
65
75
|
}
|
|
66
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interpolate/store.ts"],"names":[],"mappings":"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","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/es/register.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { Graphic } from "@visactor/vrender-core";
|
|
2
2
|
|
|
3
|
-
import { Animate } from "./animate";
|
|
4
|
-
|
|
5
|
-
import { defaultTimeline, DefaultTimeline } from "./timeline";
|
|
6
|
-
|
|
7
|
-
import { DefaultTicker } from "./ticker/default-ticker";
|
|
8
|
-
|
|
9
3
|
import { mixin } from "@visactor/vutils";
|
|
10
4
|
|
|
11
5
|
import { GraphicStateExtension } from "./state/graphic-extension";
|
|
@@ -13,8 +7,6 @@ import { GraphicStateExtension } from "./state/graphic-extension";
|
|
|
13
7
|
import { AnimateExtension } from "./animate-extension";
|
|
14
8
|
|
|
15
9
|
export function registerAnimate() {
|
|
16
|
-
Graphic.Animate || (Graphic.Animate = Animate), Graphic.Timeline || (Graphic.Timeline = DefaultTimeline),
|
|
17
|
-
Graphic.defaultTimeline || (Graphic.defaultTimeline = defaultTimeline), Graphic.Ticker || (Graphic.Ticker = DefaultTicker),
|
|
18
10
|
mixin(Graphic, GraphicStateExtension), mixin(Graphic, AnimateExtension);
|
|
19
11
|
}
|
|
20
12
|
//# sourceMappingURL=register.js.map
|
package/es/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,UAAU,eAAe;IAE7B,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IACtC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACnC,CAAC","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,6 +2,22 @@ import { AnimationTransitionRegistry } from "./animation-states-registry";
|
|
|
2
2
|
|
|
3
3
|
import { AnimateExecutor } from "../executor/animate-executor";
|
|
4
4
|
|
|
5
|
+
import { isArray } from "@visactor/vutils";
|
|
6
|
+
|
|
7
|
+
export const AnimationStates = {
|
|
8
|
+
APPEAR: "appear",
|
|
9
|
+
DISAPPEAR: "disappear",
|
|
10
|
+
UPDATE: "update",
|
|
11
|
+
HIGHLIGHT: "highlight",
|
|
12
|
+
UNHIGHLIGHT: "unhighlight",
|
|
13
|
+
SELECT: "select",
|
|
14
|
+
UNSELECT: "unselect",
|
|
15
|
+
HOVER: "hover",
|
|
16
|
+
UNHOVER: "unhover",
|
|
17
|
+
ACTIVE: "active",
|
|
18
|
+
INACTIVE: "inactive"
|
|
19
|
+
};
|
|
20
|
+
|
|
5
21
|
export class AnimationStateStore {
|
|
6
22
|
constructor(graphic) {
|
|
7
23
|
this.graphic = graphic;
|
|
@@ -31,7 +47,7 @@ export class AnimationStateManager {
|
|
|
31
47
|
result.allowTransition = result.allowTransition && _result.allowTransition;
|
|
32
48
|
})), result.allowTransition && (shouldApplyState.push({
|
|
33
49
|
state: state,
|
|
34
|
-
animationConfig: animationConfig[index].animation,
|
|
50
|
+
animationConfig: isArray(animationConfig[index]) ? animationConfig[index].map((item => item.animation)) : animationConfig[index].animation,
|
|
35
51
|
executor: new AnimateExecutor(this.graphic)
|
|
36
52
|
}), this.stateList.forEach((currState => {
|
|
37
53
|
registry.isTransitionAllowed(currState.state, state, this.graphic).stopOriginalTransition && shouldStopState.push(currState);
|
|
@@ -39,7 +55,7 @@ export class AnimationStateManager {
|
|
|
39
55
|
})) : nextState.forEach(((state, index) => {
|
|
40
56
|
shouldApplyState.push({
|
|
41
57
|
state: state,
|
|
42
|
-
animationConfig: animationConfig[index].animation,
|
|
58
|
+
animationConfig: isArray(animationConfig[index]) ? animationConfig[index].map((item => item.animation)) : animationConfig[index].animation,
|
|
43
59
|
executor: new AnimateExecutor(this.graphic)
|
|
44
60
|
});
|
|
45
61
|
})), shouldStopState.forEach((state => {
|
|
@@ -57,6 +73,36 @@ export class AnimationStateManager {
|
|
|
57
73
|
this.stateList ? this.stateList = this.stateList.filter((state => !shouldStopState.includes(state))) : this.stateList = [],
|
|
58
74
|
this.stateList.push(...shouldApplyState);
|
|
59
75
|
}
|
|
76
|
+
applyAppearState(animationConfig, callback) {
|
|
77
|
+
this.applyState([ AnimationStates.APPEAR ], [ {
|
|
78
|
+
name: AnimationStates.APPEAR,
|
|
79
|
+
animation: animationConfig
|
|
80
|
+
} ], callback);
|
|
81
|
+
}
|
|
82
|
+
applyDisappearState(animationConfig, callback) {
|
|
83
|
+
this.applyState([ AnimationStates.DISAPPEAR ], [ {
|
|
84
|
+
name: AnimationStates.DISAPPEAR,
|
|
85
|
+
animation: animationConfig
|
|
86
|
+
} ], callback);
|
|
87
|
+
}
|
|
88
|
+
applyUpdateState(animationConfig, callback) {
|
|
89
|
+
this.applyState([ AnimationStates.UPDATE ], [ {
|
|
90
|
+
name: AnimationStates.UPDATE,
|
|
91
|
+
animation: animationConfig
|
|
92
|
+
} ], callback);
|
|
93
|
+
}
|
|
94
|
+
applyHighlightState(animationConfig, callback) {
|
|
95
|
+
this.applyState([ AnimationStates.HIGHLIGHT ], [ {
|
|
96
|
+
name: AnimationStates.HIGHLIGHT,
|
|
97
|
+
animation: animationConfig
|
|
98
|
+
} ], callback);
|
|
99
|
+
}
|
|
100
|
+
applyUnhighlightState(animationConfig, callback) {
|
|
101
|
+
this.applyState([ AnimationStates.UNHIGHLIGHT ], [ {
|
|
102
|
+
name: AnimationStates.UNHIGHLIGHT,
|
|
103
|
+
animation: animationConfig
|
|
104
|
+
} ], callback);
|
|
105
|
+
}
|
|
60
106
|
stopState(state, type) {
|
|
61
107
|
var _a;
|
|
62
108
|
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"]}
|
|
@@ -61,6 +61,24 @@ export class AnimationTransitionRegistry {
|
|
|
61
61
|
}))), this.registerTransition("disappear", "appear", (() => ({
|
|
62
62
|
allowTransition: !0,
|
|
63
63
|
stopOriginalTransition: !0
|
|
64
|
+
}))), this.registerTransition("update", "*", (() => ({
|
|
65
|
+
allowTransition: !0,
|
|
66
|
+
stopOriginalTransition: !1
|
|
67
|
+
}))), this.registerTransition("update", "disappear", (() => ({
|
|
68
|
+
allowTransition: !0,
|
|
69
|
+
stopOriginalTransition: !0
|
|
70
|
+
}))), this.registerTransition("update", "exit", (() => ({
|
|
71
|
+
allowTransition: !0,
|
|
72
|
+
stopOriginalTransition: !0
|
|
73
|
+
}))), this.registerTransition("state", "*", (() => ({
|
|
74
|
+
allowTransition: !0,
|
|
75
|
+
stopOriginalTransition: !1
|
|
76
|
+
}))), this.registerTransition("state", "disappear", (() => ({
|
|
77
|
+
allowTransition: !0,
|
|
78
|
+
stopOriginalTransition: !0
|
|
79
|
+
}))), this.registerTransition("state", "exit", (() => ({
|
|
80
|
+
allowTransition: !0,
|
|
81
|
+
stopOriginalTransition: !0
|
|
64
82
|
})));
|
|
65
83
|
}
|
|
66
84
|
isTransitionAllowed(fromState, toState, graphic) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/animation-states-registry.ts"],"names":[],"mappings":"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","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":"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","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;
|
|
@@ -16,6 +16,26 @@ export class GraphicStateExtension {
|
|
|
16
16
|
return this._getAnimationStateManager(this).applyState(state, animationConfig, callback),
|
|
17
17
|
this;
|
|
18
18
|
}
|
|
19
|
+
applyAppearState(animationConfig, callback) {
|
|
20
|
+
return this._getAnimationStateManager(this).applyAppearState(animationConfig, callback),
|
|
21
|
+
this;
|
|
22
|
+
}
|
|
23
|
+
applyDisappearState(animationConfig, callback) {
|
|
24
|
+
return this._getAnimationStateManager(this).applyDisappearState(animationConfig, callback),
|
|
25
|
+
this;
|
|
26
|
+
}
|
|
27
|
+
applyUpdateState(animationConfig, callback) {
|
|
28
|
+
return this._getAnimationStateManager(this).applyUpdateState(animationConfig, callback),
|
|
29
|
+
this;
|
|
30
|
+
}
|
|
31
|
+
applyHighlightState(animationConfig, callback) {
|
|
32
|
+
return this._getAnimationStateManager(this).applyHighlightState(animationConfig, callback),
|
|
33
|
+
this;
|
|
34
|
+
}
|
|
35
|
+
applyUnhighlightState(animationConfig, callback) {
|
|
36
|
+
return this._getAnimationStateManager(this).applyUnhighlightState(animationConfig, callback),
|
|
37
|
+
this;
|
|
38
|
+
}
|
|
19
39
|
stopAnimationState(state, type) {
|
|
20
40
|
return this._getAnimationStateManager(this).stopState(state, type), this;
|
|
21
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/graphic-extension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/state/graphic-extension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAM/E,MAAM,OAAO,qBAAqB;IAChC,yBAAyB,CAAC,OAAiB;QACzC,IAAI,CAAE,OAAe,CAAC,sBAAsB,EAAE;YAE3C,OAAe,CAAC,sBAAsB,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;SAC9E;QACD,OAAQ,OAAe,CAAC,sBAAsB,CAAC;IACjD,CAAC;IACD,uBAAuB,CAAC,OAAiB;QACvC,IAAI,CAAE,OAAe,CAAC,oBAAoB,EAAE;YAEzC,OAAe,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;SAC1E;QACD,OAAQ,OAAe,CAAC,oBAAoB,CAAC;IAC/C,CAAC;IAKD,sBAAsB,CAAC,KAAsB;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAA2B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,mBAAmB,CACjB,KAAe,EACf,eAAwD,EACxD,QAAoC;QAEpC,IAAI,CAAC,yBAAyB,CAAC,IAA2B,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QACzG,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,gBAAgB,CAAC,eAAiC,EAAE,QAAqB;QACvE,IAAI,CAAC,yBAAyB,CAAC,IAA2B,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACxG,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,mBAAmB,CAAC,eAAiC,EAAE,QAAqB;QAC1E,IAAI,CAAC,yBAAyB,CAAC,IAA2B,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC3G,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,gBAAgB,CAAC,eAAiC,EAAE,QAAqB;QACvE,IAAI,CAAC,yBAAyB,CAAC,IAA2B,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACxG,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,mBAAmB,CAAC,eAAiC,EAAE,QAAqB;QAC1E,IAAI,CAAC,yBAAyB,CAAC,IAA2B,CAAC,CAAC,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC3G,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,qBAAqB,CAAC,eAAiC,EAAE,QAAqB;QAC5E,IAAI,CAAC,yBAAyB,CAAC,IAA2B,CAAC,CAAC,qBAAqB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC7G,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,kBAAkB,CAAC,KAAa,EAAE,IAA4C;QAC5E,IAAI,CAAC,yBAAyB,CAAC,IAA2B,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,oBAAoB;QAClB,IAAI,CAAC,yBAAyB,CAAC,IAA2B,CAAC,CAAC,UAAU,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAYD,MAAM,CAAC,MAAM,CAAC,OAAiB;QAC7B,MAAM,SAAS,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC9C,SAAS,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","file":"graphic-extension.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender-core';\nimport type { IAnimationState } from './types';\nimport { AnimationStateManager, AnimationStateStore } from './animation-state';\nimport type { IAnimationConfig } from '../executor/executor';\n\n/**\n * 将动画状态方法作为混入扩展 Graphic 的类\n */\nexport class GraphicStateExtension {\n _getAnimationStateManager(graphic: IGraphic): AnimationStateManager {\n if (!(graphic as any)._animationStateManager) {\n // Create the appropriate manager type based on whether this is a group\n (graphic as any)._animationStateManager = new AnimationStateManager(graphic);\n }\n return (graphic as any)._animationStateManager;\n }\n _getAnimationStateStore(graphic: IGraphic): AnimationStateStore {\n if (!(graphic as any)._animationStateStore) {\n // Create the appropriate manager type based on whether this is a group\n (graphic as any)._animationStateStore = new AnimationStateStore(graphic);\n }\n return (graphic as any)._animationStateStore;\n }\n\n /**\n * 注册一个动画状态\n */\n registerAnimationState(state: IAnimationState): this {\n this._getAnimationStateStore(this as unknown as IGraphic).registerState(state);\n return this;\n }\n\n /**\n * 应用一个动画状态到图形\n */\n applyAnimationState(\n state: string[],\n animationConfig: (IAnimationState | IAnimationState[])[],\n callback?: (empty?: boolean) => void\n ): this {\n this._getAnimationStateManager(this as unknown as IGraphic).applyState(state, animationConfig, callback);\n return this;\n }\n\n /**\n * 应用出现动画状态\n * @param animationConfig 动画配置\n * @param callback 动画结束回调\n */\n applyAppearState(animationConfig: IAnimationConfig, callback?: () => void): this {\n this._getAnimationStateManager(this as unknown as IGraphic).applyAppearState(animationConfig, callback);\n return this;\n }\n\n /**\n * 应用消失动画状态\n * @param animationConfig 动画配置\n * @param callback 动画结束回调\n */\n applyDisappearState(animationConfig: IAnimationConfig, callback?: () => void): this {\n this._getAnimationStateManager(this as unknown as IGraphic).applyDisappearState(animationConfig, callback);\n return this;\n }\n\n /**\n * 应用更新动画状态\n * @param animationConfig 动画配置\n * @param callback 动画结束回调\n */\n applyUpdateState(animationConfig: IAnimationConfig, callback?: () => void): this {\n this._getAnimationStateManager(this as unknown as IGraphic).applyUpdateState(animationConfig, callback);\n return this;\n }\n\n /**\n * 应用高亮动画状态\n * @param animationConfig 动画配置\n * @param callback 动画结束回调\n */\n applyHighlightState(animationConfig: IAnimationConfig, callback?: () => void): this {\n this._getAnimationStateManager(this as unknown as IGraphic).applyHighlightState(animationConfig, callback);\n return this;\n }\n\n /**\n * 应用取消高亮动画状态\n * @param animationConfig 动画配置\n * @param callback 动画结束回调\n */\n applyUnhighlightState(animationConfig: IAnimationConfig, callback?: () => void): this {\n this._getAnimationStateManager(this as unknown as IGraphic).applyUnhighlightState(animationConfig, callback);\n return this;\n }\n\n /**\n * 停止一个动画状态\n */\n stopAnimationState(state: string, type?: 'start' | 'end' | Record<string, any>): this {\n this._getAnimationStateManager(this as unknown as IGraphic).stopState(state, type);\n return this;\n }\n\n /**\n * 清除图形上的所有动画状态\n */\n clearAnimationStates(): this {\n this._getAnimationStateManager(this as unknown as IGraphic).clearState();\n return this;\n }\n\n // /**\n // * 获取图形当前的动画状态\n // */\n // getCurrentAnimationState(): string[] | null {\n // return this._getAnimationStateManager(this as unknown as IGraphic).getCurrentState();\n // }\n\n /**\n * 继承\n */\n static extend(graphic: IGraphic): IGraphic {\n const extension = new GraphicStateExtension();\n extension._getAnimationStateManager(graphic);\n return graphic;\n }\n}\n"]}
|
package/es/step.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { type IGraphic } from '@visactor/vrender-core';
|
|
2
|
-
import type { IAnimate, IStep } from './intreface/animate';
|
|
3
|
-
import type { EasingType, EasingTypeFunc } from './intreface/easing';
|
|
4
|
-
import type { IAnimateStepType } from './intreface/type';
|
|
1
|
+
import { type IGraphic, type IAnimate, type IStep, type EasingType, type EasingTypeFunc, type IAnimateStepType } from '@visactor/vrender-core';
|
|
5
2
|
export declare class Step implements IStep {
|
|
3
|
+
id: number;
|
|
6
4
|
type: IAnimateStepType;
|
|
7
5
|
prev?: IStep;
|
|
8
6
|
duration: number;
|
|
@@ -19,6 +17,7 @@ export declare class Step implements IStep {
|
|
|
19
17
|
protected _startTime: number;
|
|
20
18
|
_hasFirstRun: boolean;
|
|
21
19
|
protected _endCb?: (animate: IAnimate, step: IStep) => void;
|
|
20
|
+
syncAttributeUpdate: () => void;
|
|
22
21
|
constructor(type: IAnimateStepType, props: Record<string, any>, duration: number, easing: EasingType);
|
|
23
22
|
bind(target: IGraphic, animate: IAnimate): void;
|
|
24
23
|
append(step: IStep): void;
|
|
@@ -30,6 +29,7 @@ export declare class Step implements IStep {
|
|
|
30
29
|
setStartTime(time: number, updateDownstream?: boolean): void;
|
|
31
30
|
getStartTime(): number;
|
|
32
31
|
onBind(): void;
|
|
32
|
+
_syncAttributeUpdate: () => void;
|
|
33
33
|
onFirstRun(): void;
|
|
34
34
|
onStart(): void;
|
|
35
35
|
protected tryPreventConflict(): void;
|
|
@@ -41,9 +41,12 @@ export declare class Step implements IStep {
|
|
|
41
41
|
getEndProps(): Record<string, any>;
|
|
42
42
|
getFromProps(): Record<string, any>;
|
|
43
43
|
getMergedEndProps(): Record<string, any> | void;
|
|
44
|
+
stop(): void;
|
|
44
45
|
}
|
|
45
46
|
export declare class WaitStep extends Step {
|
|
46
47
|
constructor(type: IAnimateStepType, props: Record<string, any>, duration: number, easing: EasingType);
|
|
48
|
+
onStart(): void;
|
|
49
|
+
onFirstRun(): void;
|
|
47
50
|
update(end: boolean, ratio: number, out: Record<string, any>): void;
|
|
48
51
|
determineInterpolateUpdateFunction(): void;
|
|
49
52
|
}
|