@visactor/vrender-animate 1.0.8-alpha.1 → 1.0.8-alpha.2

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.
Files changed (80) hide show
  1. package/cjs/animate-extension.d.ts +0 -3
  2. package/cjs/animate-extension.js +4 -16
  3. package/cjs/animate-extension.js.map +1 -1
  4. package/cjs/animate.d.ts +0 -1
  5. package/cjs/animate.js +2 -11
  6. package/cjs/animate.js.map +1 -1
  7. package/cjs/custom/custom-animate.d.ts +1 -14
  8. package/cjs/custom/custom-animate.js +2 -42
  9. package/cjs/custom/custom-animate.js.map +1 -1
  10. package/cjs/custom/fromTo.d.ts +0 -1
  11. package/cjs/custom/fromTo.js +0 -3
  12. package/cjs/custom/fromTo.js.map +1 -1
  13. package/cjs/custom/growCenter.js +2 -2
  14. package/cjs/custom/growCenter.js.map +1 -1
  15. package/cjs/custom/growHeight.js +2 -2
  16. package/cjs/custom/growHeight.js.map +1 -1
  17. package/cjs/custom/move.d.ts +4 -4
  18. package/cjs/custom/move.js +10 -11
  19. package/cjs/custom/move.js.map +1 -1
  20. package/cjs/executor/animate-executor.js +3 -4
  21. package/cjs/executor/animate-executor.js.map +1 -1
  22. package/cjs/index.d.ts +1 -2
  23. package/cjs/index.js +2 -7
  24. package/cjs/index.js.map +1 -1
  25. package/cjs/state/animation-state.d.ts +0 -1
  26. package/cjs/state/animation-state.js +0 -5
  27. package/cjs/state/animation-state.js.map +1 -1
  28. package/cjs/state/graphic-extension.d.ts +1 -2
  29. package/cjs/state/graphic-extension.js +2 -9
  30. package/cjs/state/graphic-extension.js.map +1 -1
  31. package/cjs/step.d.ts +0 -1
  32. package/cjs/step.js +0 -1
  33. package/cjs/step.js.map +1 -1
  34. package/cjs/ticker/default-ticker.d.ts +2 -2
  35. package/cjs/ticker/default-ticker.js +7 -9
  36. package/cjs/ticker/default-ticker.js.map +1 -1
  37. package/cjs/timeline.d.ts +0 -1
  38. package/cjs/timeline.js +2 -4
  39. package/cjs/timeline.js.map +1 -1
  40. package/dist/index.es.js +39 -178
  41. package/es/animate-extension.d.ts +0 -3
  42. package/es/animate-extension.js +4 -16
  43. package/es/animate-extension.js.map +1 -1
  44. package/es/animate.d.ts +0 -1
  45. package/es/animate.js +2 -11
  46. package/es/animate.js.map +1 -1
  47. package/es/custom/custom-animate.d.ts +1 -14
  48. package/es/custom/custom-animate.js +1 -39
  49. package/es/custom/custom-animate.js.map +1 -1
  50. package/es/custom/fromTo.d.ts +0 -1
  51. package/es/custom/fromTo.js +0 -3
  52. package/es/custom/fromTo.js.map +1 -1
  53. package/es/custom/growCenter.js +2 -2
  54. package/es/custom/growCenter.js.map +1 -1
  55. package/es/custom/growHeight.js +2 -2
  56. package/es/custom/growHeight.js.map +1 -1
  57. package/es/custom/move.d.ts +4 -4
  58. package/es/custom/move.js +8 -8
  59. package/es/custom/move.js.map +1 -1
  60. package/es/executor/animate-executor.js +3 -4
  61. package/es/executor/animate-executor.js.map +1 -1
  62. package/es/index.d.ts +1 -2
  63. package/es/index.js +1 -3
  64. package/es/index.js.map +1 -1
  65. package/es/state/animation-state.d.ts +0 -1
  66. package/es/state/animation-state.js +0 -5
  67. package/es/state/animation-state.js.map +1 -1
  68. package/es/state/graphic-extension.d.ts +1 -2
  69. package/es/state/graphic-extension.js +2 -9
  70. package/es/state/graphic-extension.js.map +1 -1
  71. package/es/step.d.ts +0 -1
  72. package/es/step.js +0 -1
  73. package/es/step.js.map +1 -1
  74. package/es/ticker/default-ticker.d.ts +2 -2
  75. package/es/ticker/default-ticker.js +7 -9
  76. package/es/ticker/default-ticker.js.map +1 -1
  77. package/es/timeline.d.ts +0 -1
  78. package/es/timeline.js +2 -3
  79. package/es/timeline.js.map +1 -1
  80. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/custom/growHeight.ts"],"names":[],"mappings":";;;AACA,6CAA4D;AAC5D,qDAAkD;AAwBlD,SAAS,sBAAsB,CAC7B,OAAiB,EACjB,OAAuC,EACvC,mBAAyC;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;QAC5C,MAAM,UAAU,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,OAAO;YACL,IAAI,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACtG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SACrC,CAAC;KACH;IAED,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO;QACL,IAAI,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACpG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAiB,EACjB,OAAuC,EACvC,mBAAyC;;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,YAAoB,CAAC;IACzB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;QAC5C,IAAI,IAAA,iBAAQ,EAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC7B,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;SAChC;aAAM,IAAI,mBAAmB,CAAC,KAAK,EAAE;YACpC,YAAY;gBACV,MAAA,MAAC,mBAA2B,CAAC,WAAW,mCACxC,MAAA,OAAO,CAAC,UAAU,0CAAE,MAAM,mCAC1B,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC;YAEhD,mBAA2B,CAAC,WAAW,GAAG,YAAY,CAAC;SACzD;aAAM;YACL,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC;SAC3C;KACF;SAAM;QACL,YAAY,GAAG,IAAA,iBAAQ,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE;IACD,OAAO;QACL,IAAI,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1G,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAA4B,CAC5C,OAAiB,EACjB,OAAuC,EACvC,mBAAyC,EACzC,EAAE;;IACF,OAAO,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,KAAK,CAAC,KAAK,KAAK;QAC1C,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC;QAC5D,CAAC,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;AACpE,CAAC,CAAC;AAKF,MAAa,YAAa,SAAQ,+BAAsC;IAGtE,YAAY,IAAU,EAAE,EAAQ,EAAE,QAAgB,EAAE,MAAkB,EAAE,MAAY;QAClF,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM;;QACJ,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,SAAS,GAAG,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,OAAO,0CAAE,SAAS,mCAAI,IAAI,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAGb,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACvD,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;SAC3C;QAED,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,cAAc,0CAAE,gBAAgB,MAAK,KAAK,EAAE;YAC1D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SACtC;IACH,CAAC;IAED,KAAK,CAAC,EAA6C;QACjD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,GAAY,EAAE,KAAa,EAAE,GAAwB;QAC5D,MAAM,SAAS,GAAwB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC1B,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IAC3C,CAAC;CACF;AAvCD,oCAuCC;AAED,SAAS,uBAAuB,CAC9B,OAAiB,EACjB,OAAuC,EACvC,mBAAyC;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;QAC5C,MAAM,UAAU,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/E,OAAO;YACL,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;SACrG,CAAC;KACH;IAED,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;KACnG,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAiB,EACjB,OAAuC,EACvC,mBAAyC;;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,YAAoB,CAAC;IACzB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;QAC5C,IAAI,IAAA,iBAAQ,EAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC7B,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;SAChC;aAAM,IAAI,mBAAmB,CAAC,KAAK,EAAE;YACpC,YAAY;gBACV,MAAA,MAAC,mBAA2B,CAAC,WAAW,mCACxC,MAAA,OAAO,CAAC,UAAU,0CAAE,MAAM,mCAC1B,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC;YAEhD,mBAA2B,CAAC,WAAW,GAAG,YAAY,CAAC;SACzD;aAAM;YACL,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC;SAC3C;KACF;SAAM;QACL,YAAY,GAAG,IAAA,iBAAQ,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE;IACD,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;KACzG,CAAC;AACJ,CAAC;AAKM,MAAM,aAAa,GAA4B,CACpD,OAAiB,EACjB,OAAuC,EACvC,mBAAyC,EACzC,EAAE;;IACF,OAAO,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,KAAK,CAAC,KAAK,KAAK;QAC1C,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC;QAC7D,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;AACrE,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB;AAEF,MAAa,aAAc,SAAQ,+BAAsC;IAGvE,YAAY,IAAU,EAAE,EAAQ,EAAE,QAAgB,EAAE,MAAkB,EAAE,MAAY;QAClF,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAK,IAAI,CAAC,MAAM,CAAC,SAAiB,CAAC;QACnD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAEf,CAAC;IAED,KAAK,CAAC,EAA6C;QACjD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,GAAY,EAAE,KAAa,EAAE,GAAwB;QAC5D,MAAM,SAAS,GAAwB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC1B,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IAC3C,CAAC;CACF;AA7BD,sCA6BC","file":"growHeight.js","sourcesContent":["import type { IGraphic, IGroup, IAnimate, IStep, EasingType } from '@visactor/vrender-core';\nimport { isNil, isNumber, isValid } from '@visactor/vutils';\nimport { ACustomAnimate } from './custom-animate';\n\ninterface IGrowCartesianAnimationOptions {\n orient?: 'positive' | 'negative';\n overall?: boolean | number;\n direction?: 'x' | 'y' | 'xy';\n layoutRect?: { width: number; height: number };\n}\n\ninterface IAnimationParameters {\n width: number;\n height: number;\n group: IGroup;\n elementIndex: number;\n elementCount: number;\n view: any;\n}\n\ntype TypeAnimation<T extends IGraphic> = (\n graphic: T,\n options: any,\n animationParameters: IAnimationParameters\n) => { from?: { [channel: string]: any }; to?: { [channel: string]: any } };\n\nfunction growHeightInIndividual(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const y = attrs.y;\n const y1 = attrs.y1;\n const height = attrs.height;\n\n if (options && options.orient === 'negative') {\n const computedY1 = isValid(height) ? Math.max(y, y + height) : Math.max(y, y1);\n return {\n from: { y: computedY1, y1: isNil(y1) ? undefined : computedY1, height: isNil(height) ? undefined : 0 },\n to: { y: y, y1: y1, height: height }\n };\n }\n\n const computedY = isValid(height) ? Math.min(y, y + height) : Math.min(y, y1);\n return {\n from: { y: computedY, y1: isNil(y1) ? undefined : computedY, height: isNil(height) ? undefined : 0 },\n to: { y: y, y1: y1, height: height }\n };\n}\n\nfunction growHeightInOverall(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const y = attrs.y;\n const y1 = attrs.y1;\n const height = attrs.height;\n\n let overallValue: number;\n if (options && options.orient === 'negative') {\n if (isNumber(options.overall)) {\n overallValue = options.overall;\n } else if (animationParameters.group) {\n overallValue =\n (animationParameters as any).groupHeight ??\n options.layoutRect?.height ??\n animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupHeight = overallValue;\n } else {\n overallValue = animationParameters.height;\n }\n } else {\n overallValue = isNumber(options?.overall) ? options.overall : 0;\n }\n return {\n from: { y: overallValue, y1: isNil(y1) ? undefined : overallValue, height: isNil(height) ? undefined : 0 },\n to: { y: y, y1: y1, height: height }\n };\n}\n\nconst growHeightIn: TypeAnimation<IGraphic> = (\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return (options?.overall ?? false) !== false\n ? growHeightInOverall(graphic, options, animationParameters)\n : growHeightInIndividual(graphic, options, animationParameters);\n};\n\n/**\n * 增长渐入\n */\nexport class GrowHeightIn extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: any) {\n super(from, to, duration, easing, params);\n }\n\n onBind(): void {\n super.onBind();\n const { from, to } = growHeightIn(this.target, this.params.options, this.params);\n const fromAttrs = this.target.context?.lastAttrs ?? from;\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => to[key] != null);\n this.from = fromAttrs;\n this.to = to;\n\n // 用于入场的时候设置属性(因为有动画的时候VChart不会再设置属性了)\n const finalAttribute = this.target.getFinalAttribute();\n if (finalAttribute) {\n this.target.setAttributes(finalAttribute);\n }\n\n if (this.params.controlOptions?.immediatelyApply !== false) {\n this.target.setAttributes(fromAttrs);\n }\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n const attribute: Record<string, any> = this.target.attribute;\n this.propKeys.forEach(key => {\n attribute[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.addUpdatePositionTag();\n this.target.addUpdateShapeAndBoundsTag();\n }\n}\n\nfunction growHeightOutIndividual(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const y = attrs.y;\n const y1 = attrs.y1;\n const height = attrs.height;\n\n if (options && options.orient === 'negative') {\n const computedY1 = isValid(height) ? Math.max(y, y + height) : Math.max(y, y1);\n\n return {\n to: { y: computedY1, y1: isNil(y1) ? undefined : computedY1, height: isNil(height) ? undefined : 0 }\n };\n }\n\n const computedY = isValid(height) ? Math.min(y, y + height) : Math.min(y, y1);\n return {\n to: { y: computedY, y1: isNil(y1) ? undefined : computedY, height: isNil(height) ? undefined : 0 }\n };\n}\n\nfunction growHeightOutOverall(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const y1 = attrs.y1;\n const height = attrs.height;\n\n let overallValue: number;\n if (options && options.orient === 'negative') {\n if (isNumber(options.overall)) {\n overallValue = options.overall;\n } else if (animationParameters.group) {\n overallValue =\n (animationParameters as any).groupHeight ??\n options.layoutRect?.height ??\n animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupHeight = overallValue;\n } else {\n overallValue = animationParameters.height;\n }\n } else {\n overallValue = isNumber(options?.overall) ? options.overall : 0;\n }\n return {\n to: { y: overallValue, y1: isNil(y1) ? undefined : overallValue, height: isNil(height) ? undefined : 0 }\n };\n}\n\n/**\n * 增长渐出\n */\nexport const growHeightOut: TypeAnimation<IGraphic> = (\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return (options?.overall ?? false) !== false\n ? growHeightOutOverall(graphic, options, animationParameters)\n : growHeightOutIndividual(graphic, options, animationParameters);\n};\n\nexport class GrowHeightOut extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: any) {\n super(from, to, duration, easing, params);\n }\n\n onBind(): void {\n super.onBind();\n const { from, to } = growHeightOut(this.target, this.params.options, this.params);\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => to[key] != null);\n this.from = from ?? (this.target.attribute as any);\n this.to = to;\n // this.target.setAttributes(from);\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n const attribute: Record<string, any> = this.target.attribute;\n this.propKeys.forEach(key => {\n attribute[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.addUpdatePositionTag();\n this.target.addUpdateShapeAndBoundsTag();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/custom/growHeight.ts"],"names":[],"mappings":";;;AACA,6CAA4D;AAC5D,qDAAkD;AAwBlD,SAAS,sBAAsB,CAC7B,OAAiB,EACjB,OAAuC,EACvC,mBAAyC;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;QAC5C,MAAM,UAAU,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,OAAO;YACL,IAAI,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACtG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SACrC,CAAC;KACH;IAED,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO;QACL,IAAI,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACpG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAiB,EACjB,OAAuC,EACvC,mBAAyC;;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,YAAoB,CAAC;IACzB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;QAC5C,IAAI,IAAA,iBAAQ,EAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC7B,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;SAChC;aAAM,IAAI,mBAAmB,CAAC,KAAK,EAAE;YACpC,YAAY;gBACV,MAAA,MAAC,mBAA2B,CAAC,WAAW,mCACxC,MAAA,OAAO,CAAC,UAAU,0CAAE,MAAM,mCAC1B,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC;YAEhD,mBAA2B,CAAC,WAAW,GAAG,YAAY,CAAC;SACzD;aAAM;YACL,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC;SAC3C;KACF;SAAM;QACL,YAAY,GAAG,IAAA,iBAAQ,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE;IACD,OAAO;QACL,IAAI,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1G,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAA4B,CAC5C,OAAiB,EACjB,OAAuC,EACvC,mBAAyC,EACzC,EAAE;;IACF,OAAO,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,KAAK,CAAC,KAAK,KAAK;QAC1C,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC;QAC5D,CAAC,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;AACpE,CAAC,CAAC;AAKF,MAAa,YAAa,SAAQ,+BAAsC;IAGtE,YAAY,IAAU,EAAE,EAAQ,EAAE,QAAgB,EAAE,MAAkB,EAAE,MAAY;QAClF,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM;;QACJ,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,SAAS,GAAG,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,OAAO,0CAAE,SAAS,mCAAI,IAAI,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAGb,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACvD,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,EAA6C;QACjD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,GAAY,EAAE,KAAa,EAAE,GAAwB;QAC5D,MAAM,SAAS,GAAwB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC1B,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IAC3C,CAAC;CACF;AArCD,oCAqCC;AAED,SAAS,uBAAuB,CAC9B,OAAiB,EACjB,OAAuC,EACvC,mBAAyC;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;QAC5C,MAAM,UAAU,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/E,OAAO;YACL,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;SACrG,CAAC;KACH;IAED,MAAM,SAAS,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;KACnG,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAiB,EACjB,OAAuC,EACvC,mBAAyC;;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,YAAoB,CAAC;IACzB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;QAC5C,IAAI,IAAA,iBAAQ,EAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC7B,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;SAChC;aAAM,IAAI,mBAAmB,CAAC,KAAK,EAAE;YACpC,YAAY;gBACV,MAAA,MAAC,mBAA2B,CAAC,WAAW,mCACxC,MAAA,OAAO,CAAC,UAAU,0CAAE,MAAM,mCAC1B,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC;YAEhD,mBAA2B,CAAC,WAAW,GAAG,YAAY,CAAC;SACzD;aAAM;YACL,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC;SAC3C;KACF;SAAM;QACL,YAAY,GAAG,IAAA,iBAAQ,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE;IACD,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;KACzG,CAAC;AACJ,CAAC;AAKM,MAAM,aAAa,GAA4B,CACpD,OAAiB,EACjB,OAAuC,EACvC,mBAAyC,EACzC,EAAE;;IACF,OAAO,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,KAAK,CAAC,KAAK,KAAK;QAC1C,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC;QAC7D,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;AACrE,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB;AAEF,MAAa,aAAc,SAAQ,+BAAsC;IAGvE,YAAY,IAAU,EAAE,EAAQ,EAAE,QAAgB,EAAE,MAAkB,EAAE,MAAY;QAClF,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAK,IAAI,CAAC,MAAM,CAAC,SAAiB,CAAC;QACnD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IAEf,CAAC;IAED,KAAK,CAAC,EAA6C;QACjD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,GAAY,EAAE,KAAa,EAAE,GAAwB;QAC5D,MAAM,SAAS,GAAwB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC1B,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IAC3C,CAAC;CACF;AA7BD,sCA6BC","file":"growHeight.js","sourcesContent":["import type { IGraphic, IGroup, IAnimate, IStep, EasingType } from '@visactor/vrender-core';\nimport { isNil, isNumber, isValid } from '@visactor/vutils';\nimport { ACustomAnimate } from './custom-animate';\n\ninterface IGrowCartesianAnimationOptions {\n orient?: 'positive' | 'negative';\n overall?: boolean | number;\n direction?: 'x' | 'y' | 'xy';\n layoutRect?: { width: number; height: number };\n}\n\ninterface IAnimationParameters {\n width: number;\n height: number;\n group: IGroup;\n elementIndex: number;\n elementCount: number;\n view: any;\n}\n\ntype TypeAnimation<T extends IGraphic> = (\n graphic: T,\n options: any,\n animationParameters: IAnimationParameters\n) => { from?: { [channel: string]: any }; to?: { [channel: string]: any } };\n\nfunction growHeightInIndividual(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const y = attrs.y;\n const y1 = attrs.y1;\n const height = attrs.height;\n\n if (options && options.orient === 'negative') {\n const computedY1 = isValid(height) ? Math.max(y, y + height) : Math.max(y, y1);\n return {\n from: { y: computedY1, y1: isNil(y1) ? undefined : computedY1, height: isNil(height) ? undefined : 0 },\n to: { y: y, y1: y1, height: height }\n };\n }\n\n const computedY = isValid(height) ? Math.min(y, y + height) : Math.min(y, y1);\n return {\n from: { y: computedY, y1: isNil(y1) ? undefined : computedY, height: isNil(height) ? undefined : 0 },\n to: { y: y, y1: y1, height: height }\n };\n}\n\nfunction growHeightInOverall(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const y = attrs.y;\n const y1 = attrs.y1;\n const height = attrs.height;\n\n let overallValue: number;\n if (options && options.orient === 'negative') {\n if (isNumber(options.overall)) {\n overallValue = options.overall;\n } else if (animationParameters.group) {\n overallValue =\n (animationParameters as any).groupHeight ??\n options.layoutRect?.height ??\n animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupHeight = overallValue;\n } else {\n overallValue = animationParameters.height;\n }\n } else {\n overallValue = isNumber(options?.overall) ? options.overall : 0;\n }\n return {\n from: { y: overallValue, y1: isNil(y1) ? undefined : overallValue, height: isNil(height) ? undefined : 0 },\n to: { y: y, y1: y1, height: height }\n };\n}\n\nconst growHeightIn: TypeAnimation<IGraphic> = (\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return (options?.overall ?? false) !== false\n ? growHeightInOverall(graphic, options, animationParameters)\n : growHeightInIndividual(graphic, options, animationParameters);\n};\n\n/**\n * 增长渐入\n */\nexport class GrowHeightIn extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: any) {\n super(from, to, duration, easing, params);\n }\n\n onBind(): void {\n super.onBind();\n const { from, to } = growHeightIn(this.target, this.params.options, this.params);\n const fromAttrs = this.target.context?.lastAttrs ?? from;\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => to[key] != null);\n this.from = fromAttrs;\n this.to = to;\n\n // 用于入场的时候设置属性(因为有动画的时候VChart不会再设置属性了)\n const finalAttribute = this.target.getFinalAttribute();\n if (finalAttribute) {\n this.target.setAttributes(finalAttribute);\n }\n\n this.target.setAttributes(fromAttrs);\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n const attribute: Record<string, any> = this.target.attribute;\n this.propKeys.forEach(key => {\n attribute[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.addUpdatePositionTag();\n this.target.addUpdateShapeAndBoundsTag();\n }\n}\n\nfunction growHeightOutIndividual(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const y = attrs.y;\n const y1 = attrs.y1;\n const height = attrs.height;\n\n if (options && options.orient === 'negative') {\n const computedY1 = isValid(height) ? Math.max(y, y + height) : Math.max(y, y1);\n\n return {\n to: { y: computedY1, y1: isNil(y1) ? undefined : computedY1, height: isNil(height) ? undefined : 0 }\n };\n }\n\n const computedY = isValid(height) ? Math.min(y, y + height) : Math.min(y, y1);\n return {\n to: { y: computedY, y1: isNil(y1) ? undefined : computedY, height: isNil(height) ? undefined : 0 }\n };\n}\n\nfunction growHeightOutOverall(\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) {\n const attrs = graphic.getFinalAttribute();\n const y1 = attrs.y1;\n const height = attrs.height;\n\n let overallValue: number;\n if (options && options.orient === 'negative') {\n if (isNumber(options.overall)) {\n overallValue = options.overall;\n } else if (animationParameters.group) {\n overallValue =\n (animationParameters as any).groupHeight ??\n options.layoutRect?.height ??\n animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupHeight = overallValue;\n } else {\n overallValue = animationParameters.height;\n }\n } else {\n overallValue = isNumber(options?.overall) ? options.overall : 0;\n }\n return {\n to: { y: overallValue, y1: isNil(y1) ? undefined : overallValue, height: isNil(height) ? undefined : 0 }\n };\n}\n\n/**\n * 增长渐出\n */\nexport const growHeightOut: TypeAnimation<IGraphic> = (\n graphic: IGraphic,\n options: IGrowCartesianAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return (options?.overall ?? false) !== false\n ? growHeightOutOverall(graphic, options, animationParameters)\n : growHeightOutIndividual(graphic, options, animationParameters);\n};\n\nexport class GrowHeightOut extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: any) {\n super(from, to, duration, easing, params);\n }\n\n onBind(): void {\n super.onBind();\n const { from, to } = growHeightOut(this.target, this.params.options, this.params);\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => to[key] != null);\n this.from = from ?? (this.target.attribute as any);\n this.to = to;\n // this.target.setAttributes(from);\n }\n\n onEnd(cb?: (animate: IAnimate, step: IStep) => void): void {\n super.onEnd(cb);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n const attribute: Record<string, any> = this.target.attribute;\n this.propKeys.forEach(key => {\n attribute[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.addUpdatePositionTag();\n this.target.addUpdateShapeAndBoundsTag();\n }\n}\n"]}
@@ -56,7 +56,7 @@ export declare const moveIn: (graphic: IGraphic, options: IMoveAnimationOptions,
56
56
  };
57
57
  export declare const moveOut: (graphic: IGraphic, options: IMoveAnimationOptions, animationParameters: IAnimationParameters) => {
58
58
  from: {
59
- x: any;
59
+ x: number;
60
60
  y?: undefined;
61
61
  };
62
62
  to: {
@@ -65,7 +65,7 @@ export declare const moveOut: (graphic: IGraphic, options: IMoveAnimationOptions
65
65
  };
66
66
  } | {
67
67
  from: {
68
- y: any;
68
+ y: number;
69
69
  x?: undefined;
70
70
  };
71
71
  to: {
@@ -74,8 +74,8 @@ export declare const moveOut: (graphic: IGraphic, options: IMoveAnimationOptions
74
74
  };
75
75
  } | {
76
76
  from: {
77
- x: any;
78
- y: any;
77
+ x: number;
78
+ y: number;
79
79
  };
80
80
  to: {
81
81
  x: any;
@@ -11,14 +11,13 @@ const vutils_1 = require("@visactor/vutils"), custom_animate_1 = require("./cust
11
11
  "negative" === orient && (changedX = null !== (_a = layoutRect.width) && void 0 !== _a ? _a : graphic.stage.viewWidth,
12
12
  changedY = null !== (_b = layoutRect.height) && void 0 !== _b ? _b : graphic.stage.viewHeight),
13
13
  changedX += offset, changedY += offset;
14
- const point = (0, vutils_1.isFunction)(pointOpt) ? pointOpt.call(null, null === (_d = null === (_c = graphic.context) || void 0 === _c ? void 0 : _c.data) || void 0 === _d ? void 0 : _d[0], graphic, animationParameters) : pointOpt, finalAttrsX = graphic.getGraphicAttribute("x"), finalAttrsY = graphic.getGraphicAttribute("y"), fromX = excludeChannels.includes("x") ? finalAttrsX : point && (0,
15
- vutils_1.isValidNumber)(point.x) ? point.x : changedX, fromY = excludeChannels.includes("y") ? finalAttrsY : point && (0,
16
- vutils_1.isValidNumber)(point.y) ? point.y : changedY;
14
+ const point = (0, vutils_1.isFunction)(pointOpt) ? pointOpt.call(null, null === (_d = null === (_c = graphic.context) || void 0 === _c ? void 0 : _c.data) || void 0 === _d ? void 0 : _d[0], graphic, animationParameters) : pointOpt, fromX = point && (0,
15
+ vutils_1.isValidNumber)(point.x) ? point.x : changedX, fromY = point && (0, vutils_1.isValidNumber)(point.y) ? point.y : changedY, finalAttrs = graphic.getFinalAttribute(), finalAttrsX = excludeChannels.includes("x") ? graphic.attribute.x : finalAttrs.x, finalAttrsY = excludeChannels.includes("y") ? graphic.attribute.y : finalAttrs.y;
17
16
  switch (direction) {
18
17
  case "x":
19
18
  return {
20
19
  from: {
21
- x: excludeChannels.includes("x") ? finalAttrsX : fromX
20
+ x: fromX
22
21
  },
23
22
  to: {
24
23
  x: finalAttrsX
@@ -52,15 +51,15 @@ const vutils_1 = require("@visactor/vutils"), custom_animate_1 = require("./cust
52
51
  exports.moveIn = moveIn;
53
52
 
54
53
  const moveOut = (graphic, options, animationParameters) => {
55
- var _a, _b, _c, _d;
56
- const {offset: offset = 0, orient: orient, direction: direction, point: pointOpt} = null != options ? options : {}, groupBounds = animationParameters.group ? animationParameters.group.AABBBounds : null, groupWidth = null !== (_a = groupBounds.width()) && void 0 !== _a ? _a : animationParameters.width, groupHeight = null !== (_b = groupBounds.height()) && void 0 !== _b ? _b : animationParameters.height, changedX = ("negative" === orient ? groupWidth : 0) + offset, changedY = ("negative" === orient ? groupHeight : 0) + offset, point = (0,
57
- vutils_1.isFunction)(pointOpt) ? pointOpt.call(null, null === (_d = null === (_c = graphic.context) || void 0 === _c ? void 0 : _c.data) || void 0 === _d ? void 0 : _d[0], graphic, animationParameters) : pointOpt, fromX = point && (0,
54
+ var _a, _b, _c, _d, _e, _f;
55
+ const {offset: offset = 0, orient: orient, direction: direction, point: pointOpt} = null != options ? options : {}, groupWidth = null !== (_b = null === (_a = options.layoutRect) || void 0 === _a ? void 0 : _a.width) && void 0 !== _b ? _b : graphic.stage.viewWidth, groupHeight = null !== (_d = null === (_c = options.layoutRect) || void 0 === _c ? void 0 : _c.height) && void 0 !== _d ? _d : graphic.stage.viewHeight, changedX = ("negative" === orient ? groupWidth : 0) + offset, changedY = ("negative" === orient ? groupHeight : 0) + offset, point = (0,
56
+ vutils_1.isFunction)(pointOpt) ? pointOpt.call(null, null === (_f = null === (_e = graphic.context) || void 0 === _e ? void 0 : _e.data) || void 0 === _f ? void 0 : _f[0], graphic, animationParameters) : pointOpt, fromX = point && (0,
58
57
  vutils_1.isValidNumber)(point.x) ? point.x : changedX, fromY = point && (0, vutils_1.isValidNumber)(point.y) ? point.y : changedY;
59
58
  switch (direction) {
60
59
  case "x":
61
60
  return {
62
61
  from: {
63
- x: graphic.getGraphicAttribute("x")
62
+ x: graphic.attribute.x
64
63
  },
65
64
  to: {
66
65
  x: fromX
@@ -70,7 +69,7 @@ const moveOut = (graphic, options, animationParameters) => {
70
69
  case "y":
71
70
  return {
72
71
  from: {
73
- y: graphic.getGraphicAttribute("y")
72
+ y: graphic.attribute.y
74
73
  },
75
74
  to: {
76
75
  y: fromY
@@ -80,8 +79,8 @@ const moveOut = (graphic, options, animationParameters) => {
80
79
  default:
81
80
  return {
82
81
  from: {
83
- x: graphic.getGraphicAttribute("x"),
84
- y: graphic.getGraphicAttribute("y")
82
+ x: graphic.attribute.x,
83
+ y: graphic.attribute.y
85
84
  },
86
85
  to: {
87
86
  x: fromX,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/custom/move.ts"],"names":[],"mappings":"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","file":"move.js","sourcesContent":["import type { EasingType, IGraphic, IGroup } from '@visactor/vrender-core';\nimport { isFunction, isValidNumber } from '@visactor/vutils';\nimport { ACustomAnimate } from './custom-animate';\n\nexport type FunctionCallback<T> = (...args: any[]) => T;\n\nexport interface IMoveAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n orient?: 'positive' | 'negative';\n offset?: number;\n point?: { x?: number; y?: number } | FunctionCallback<{ x?: number; y?: number }>;\n excludeChannels?: string[];\n layoutRect?: { width: number; height: number };\n}\n\ninterface IAnimationParameters {\n width: number;\n height: number;\n group: IGroup;\n elementIndex: number;\n elementCount: number;\n view: any;\n}\n\n// When user did not provide proper x/y value, move animation will never work properly,\n// due to that, default x/y value won't be set.\n\nexport const moveIn = (\n graphic: IGraphic,\n options: IMoveAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const { offset = 0, orient, direction, point: pointOpt, excludeChannels = [], layoutRect = {} } = options ?? {};\n let changedX = 0;\n let changedY = 0;\n\n if (orient === 'negative') {\n changedX = (layoutRect as any).width ?? graphic.stage.viewWidth;\n changedY = (layoutRect as any).height ?? graphic.stage.viewHeight;\n }\n\n changedX += offset;\n changedY += offset;\n const point = isFunction(pointOpt)\n ? pointOpt.call(null, graphic.context?.data?.[0], graphic, animationParameters)\n : pointOpt;\n const finalAttrsX = graphic.getGraphicAttribute('x');\n const finalAttrsY = graphic.getGraphicAttribute('y');\n const fromX = excludeChannels.includes('x') ? finalAttrsX : point && isValidNumber(point.x) ? point.x : changedX;\n const fromY = excludeChannels.includes('y') ? finalAttrsY : point && isValidNumber(point.y) ? point.y : changedY;\n\n switch (direction) {\n case 'x':\n return {\n from: { x: excludeChannels.includes('x') ? finalAttrsX : fromX },\n to: { x: finalAttrsX }\n };\n case 'y':\n return {\n from: { y: fromY },\n to: { y: finalAttrsY }\n };\n case 'xy':\n default:\n return {\n from: { x: fromX, y: fromY },\n to: {\n x: finalAttrsX,\n y: finalAttrsY\n }\n };\n }\n};\n\nexport const moveOut = (\n graphic: IGraphic,\n options: IMoveAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const { offset = 0, orient, direction, point: pointOpt } = options ?? {};\n\n const groupBounds = animationParameters.group ? animationParameters.group.AABBBounds : null;\n const groupWidth = groupBounds.width() ?? animationParameters.width;\n const groupHeight = groupBounds.height() ?? animationParameters.height;\n const changedX = (orient === 'negative' ? groupWidth : 0) + offset;\n const changedY = (orient === 'negative' ? groupHeight : 0) + offset;\n const point = isFunction(pointOpt)\n ? pointOpt.call(null, graphic.context?.data?.[0], graphic, animationParameters)\n : pointOpt;\n const fromX = point && isValidNumber(point.x) ? point.x : changedX;\n const fromY = point && isValidNumber(point.y) ? point.y : changedY;\n\n switch (direction) {\n case 'x':\n return {\n from: { x: graphic.getGraphicAttribute('x') },\n to: { x: fromX }\n };\n case 'y':\n return {\n from: { y: graphic.getGraphicAttribute('y') },\n to: { y: fromY }\n };\n case 'xy':\n default:\n return {\n from: {\n x: graphic.getGraphicAttribute('x'),\n y: graphic.getGraphicAttribute('y')\n },\n to: { x: fromX, y: fromY }\n };\n }\n};\n\nexport class MoveBase extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: any) {\n super(from, to, duration, easing, params);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n const attribute: Record<string, any> = this.target.attribute;\n this.propKeys.forEach(key => {\n attribute[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.addUpdatePositionTag();\n this.target.addUpdateShapeAndBoundsTag();\n }\n}\n\n/**\n * 增长渐入\n */\nexport class MoveIn extends MoveBase {\n onBind(): void {\n super.onBind();\n const { from, to } = moveIn(this.target, this.params.options, this.params);\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => (to as any)[key] != null);\n this.from = from;\n this.to = to;\n\n // 用于入场的时候设置属性(因为有动画的时候VChart不会再设置属性了)\n const finalAttribute = this.target.getFinalAttribute();\n if (finalAttribute) {\n this.target.setAttributes(finalAttribute);\n }\n\n if (this.params.controlOptions?.immediatelyApply !== false) {\n this.target.setAttributes(from);\n }\n }\n}\n\nexport class MoveOut extends MoveBase {\n onBind(): void {\n super.onBind();\n const { from, to } = moveOut(this.target, this.params.options, this.params);\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => (to as any)[key] != null);\n this.from = from;\n this.to = to;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/custom/move.ts"],"names":[],"mappings":"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","file":"move.js","sourcesContent":["import type { EasingType, IGraphic, IGroup } from '@visactor/vrender-core';\nimport { isFunction, isValidNumber } from '@visactor/vutils';\nimport { ACustomAnimate } from './custom-animate';\n\nexport type FunctionCallback<T> = (...args: any[]) => T;\n\nexport interface IMoveAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n orient?: 'positive' | 'negative';\n offset?: number;\n point?: { x?: number; y?: number } | FunctionCallback<{ x?: number; y?: number }>;\n excludeChannels?: string[];\n layoutRect?: { width: number; height: number };\n}\n\ninterface IAnimationParameters {\n width: number;\n height: number;\n group: IGroup;\n elementIndex: number;\n elementCount: number;\n view: any;\n}\n\n// When user did not provide proper x/y value, move animation will never work properly,\n// due to that, default x/y value won't be set.\n\nexport const moveIn = (\n graphic: IGraphic,\n options: IMoveAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const { offset = 0, orient, direction, point: pointOpt, excludeChannels = [], layoutRect = {} } = options ?? {};\n let changedX = 0;\n let changedY = 0;\n\n if (orient === 'negative') {\n changedX = (layoutRect as any).width ?? graphic.stage.viewWidth;\n changedY = (layoutRect as any).height ?? graphic.stage.viewHeight;\n }\n\n changedX += offset;\n changedY += offset;\n const point = isFunction(pointOpt)\n ? pointOpt.call(null, graphic.context?.data?.[0], graphic, animationParameters)\n : pointOpt;\n const fromX = point && isValidNumber(point.x) ? point.x : changedX;\n const fromY = point && isValidNumber(point.y) ? point.y : changedY;\n const finalAttrs = graphic.getFinalAttribute();\n const finalAttrsX = excludeChannels.includes('x') ? graphic.attribute.x : finalAttrs.x;\n const finalAttrsY = excludeChannels.includes('y') ? graphic.attribute.y : finalAttrs.y;\n\n switch (direction) {\n case 'x':\n return {\n from: { x: fromX },\n to: { x: finalAttrsX }\n };\n case 'y':\n return {\n from: { y: fromY },\n to: { y: finalAttrsY }\n };\n case 'xy':\n default:\n return {\n from: { x: fromX, y: fromY },\n to: {\n x: finalAttrsX,\n y: finalAttrsY\n }\n };\n }\n};\n\nexport const moveOut = (\n graphic: IGraphic,\n options: IMoveAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const { offset = 0, orient, direction, point: pointOpt } = options ?? {};\n\n // consider the offset of group\n // const groupBounds = graphic.parent ? graphic.parent.getBounds() : null;\n const groupWidth = options.layoutRect?.width ?? graphic.stage.viewWidth;\n const groupHeight = options.layoutRect?.height ?? graphic.stage.viewHeight;\n const changedX = (orient === 'negative' ? groupWidth : 0) + offset;\n const changedY = (orient === 'negative' ? groupHeight : 0) + offset;\n const point = isFunction(pointOpt)\n ? pointOpt.call(null, graphic.context?.data?.[0], graphic, animationParameters)\n : pointOpt;\n const fromX = point && isValidNumber(point.x) ? point.x : changedX;\n const fromY = point && isValidNumber(point.y) ? point.y : changedY;\n\n switch (direction) {\n case 'x':\n return {\n from: { x: graphic.attribute.x },\n to: { x: fromX }\n };\n case 'y':\n return {\n from: { y: graphic.attribute.y },\n to: { y: fromY }\n };\n case 'xy':\n default:\n return {\n from: {\n x: graphic.attribute.x,\n y: graphic.attribute.y\n },\n to: { x: fromX, y: fromY }\n };\n }\n};\n\nexport class MoveBase extends ACustomAnimate<Record<string, number>> {\n declare valid: boolean;\n\n constructor(from: null, to: null, duration: number, easing: EasingType, params?: any) {\n super(from, to, duration, easing, params);\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n const attribute: Record<string, any> = this.target.attribute;\n this.propKeys.forEach(key => {\n attribute[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;\n });\n this.target.addUpdatePositionTag();\n this.target.addUpdateShapeAndBoundsTag();\n }\n}\n\n/**\n * 增长渐入\n */\nexport class MoveIn extends MoveBase {\n onBind(): void {\n super.onBind();\n const { from, to } = moveIn(this.target, this.params.options, this.params);\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => (to as any)[key] != null);\n this.from = from;\n this.to = to;\n\n // 用于入场的时候设置属性(因为有动画的时候VChart不会再设置属性了)\n const finalAttribute = this.target.getFinalAttribute();\n if (finalAttribute) {\n this.target.setAttributes(finalAttribute);\n }\n\n if (this.params.controlOptions?.immediatelyApply !== false) {\n this.target.setAttributes(from);\n }\n }\n}\n\nexport class MoveOut extends MoveBase {\n onBind(): void {\n super.onBind();\n const { from, to } = moveOut(this.target, this.params.options, this.params);\n this.props = to;\n this.propKeys = Object.keys(to).filter(key => (to as any)[key] != null);\n this.from = from;\n this.to = to;\n }\n}\n"]}
@@ -136,11 +136,10 @@ class AnimateExecutor {
136
136
  _handleRunAnimate(animate, custom, customType, from, props, duration, easing, customParameters, controlOptions, options, type, graphic) {
137
137
  var _a, _b, _c, _d;
138
138
  if (custom && customType) {
139
- const customParams = Object.assign({
139
+ const customParams = this.resolveValue(customParameters, graphic, {
140
140
  width: graphic.stage.width,
141
- height: graphic.stage.height,
142
- group: this._target.parent
143
- }, this.resolveValue(customParameters, graphic)), objOptions = (0, vutils_1.isFunction)(options) ? options.call(null, null !== (_b = customParams && (null === (_a = customParams.data) || void 0 === _a ? void 0 : _a[0])) && void 0 !== _b ? _b : null === (_d = null === (_c = graphic.context) || void 0 === _c ? void 0 : _c.data) || void 0 === _d ? void 0 : _d[0], graphic, customParams) : options;
141
+ height: graphic.stage.height
142
+ }), objOptions = (0, vutils_1.isFunction)(options) ? options.call(null, null !== (_b = customParams && (null === (_a = customParams.data) || void 0 === _a ? void 0 : _a[0])) && void 0 !== _b ? _b : null === (_d = null === (_c = graphic.context) || void 0 === _c ? void 0 : _c.data) || void 0 === _d ? void 0 : _d[0], graphic, customParams) : options;
144
143
  customParams.options = objOptions, customParams.controlOptions = controlOptions,
145
144
  1 === customType ? this.createCustomAnimation(animate, custom, from, props, duration, easing, customParams) : 2 === customType && this.createCustomInterpolatorAnimation(animate, custom, props, duration, easing, customParams);
146
145
  } else "to" === type ? animate.to(props, duration, easing) : "from" === type && animate.from(props, duration, easing);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/executor/animate-executor.ts"],"names":[],"mappings":"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","file":"animate-executor.js","sourcesContent":["import type { IGraphic, EasingType, IAnimate } from '@visactor/vrender-core';\nimport type {\n IAnimationConfig,\n IAnimationTimeline,\n IAnimationTypeConfig,\n MarkFunctionCallback,\n MarkFunctionValueType,\n IAnimationTimeSlice,\n IAnimationChannelAttrs,\n IAnimationChannelAttributes,\n IAnimationCustomConstructor,\n IAnimationChannelInterpolator\n} from './executor';\nimport { cloneDeep, isArray, isFunction } from '@visactor/vutils';\n\ninterface IAnimateExecutor {\n execute: (params: IAnimationConfig) => void;\n executeItem: (params: IAnimationConfig, graphic: IGraphic, index?: number) => IAnimate[];\n onStart: (cb?: () => void) => void;\n onEnd: (cb?: () => void) => void;\n}\n\nexport class AnimateExecutor implements IAnimateExecutor {\n static builtInAnimateMap: Record<string, IAnimationCustomConstructor> = {};\n\n static registerBuiltInAnimate(name: string, animate: IAnimationCustomConstructor) {\n AnimateExecutor.builtInAnimateMap[name] = animate;\n }\n\n declare _target: IGraphic;\n\n // 所有动画实例\n private _animates: IAnimate[] = [];\n\n // 动画开始回调\n private _startCallbacks: (() => void)[] = [];\n // 动画结束回调\n private _endCallbacks: (() => void)[] = [];\n\n // 是否已经开始动画\n private _started: boolean = false;\n\n // 当前正在运行的动画数量\n private _activeCount: number = 0;\n\n constructor(target: IGraphic) {\n this._target = target;\n }\n\n /**\n * 注册一个回调,当动画开始时调用\n */\n onStart(cb?: () => void): void {\n if (cb) {\n this._startCallbacks.push(cb);\n\n // 如果动画已经开始,立即调用回调\n if (this._started && this._activeCount > 0) {\n cb();\n }\n } else {\n this._startCallbacks.forEach(cb => {\n cb();\n });\n }\n }\n\n /**\n * 注册一个回调,当所有动画结束时调用\n */\n onEnd(cb?: () => void): void {\n if (cb) {\n this._endCallbacks.push(cb);\n } else {\n this._endCallbacks.forEach(cb => {\n cb();\n });\n }\n }\n\n /**\n * 跟踪动画并附加生命周期钩子\n */\n private _trackAnimation(animate: IAnimate): void {\n this._animates.push(animate);\n this._activeCount++;\n\n // 如果这是第一个正在运行的动画,触发onStart回调\n if (this._activeCount === 1 && !this._started) {\n this._started = true;\n this.onStart();\n }\n\n // 处理动画完成\n animate.onEnd(() => {\n this._activeCount--;\n\n // 从跟踪的动画中移除\n const index = this._animates.indexOf(animate);\n if (index >= 0) {\n this._animates.splice(index, 1);\n }\n\n // 如果所有动画都已完成,触发onEnd回调\n if (this._activeCount === 0 && this._started) {\n this._started = false;\n this.onEnd();\n }\n });\n }\n\n parseParams(params: IAnimationConfig, isTimeline: boolean, child?: IGraphic): IAnimationConfig {\n const totalTime = this.resolveValue(params.totalTime, undefined, undefined);\n const startTime = this.resolveValue(params.startTime, undefined, 0);\n\n // execute只在mark层面调用,所以性能影响可以忽略\n // TODO 存在性能问题,如果后续调用频繁,需要重新修改\n const parsedParams: Record<string, any> = { ...params };\n parsedParams.oneByOneDelay = 0;\n parsedParams.startTime = startTime;\n parsedParams.totalTime = totalTime;\n\n const oneByOne = this.resolveValue(params.oneByOne, child, false);\n\n if (isTimeline) {\n const timeSlices = (parsedParams as IAnimationTimeline).timeSlices;\n if (!isArray(timeSlices)) {\n (parsedParams as IAnimationTimeline).timeSlices = [timeSlices];\n }\n let sliceTime = 0;\n ((parsedParams as IAnimationTimeline).timeSlices as IAnimationTimeSlice[]) = (\n (parsedParams as IAnimationTimeline).timeSlices as IAnimationTimeSlice[]\n ).map(slice => {\n const delay = this.resolveValue(slice.delay, child, 0);\n const delayAfter = this.resolveValue(slice.delayAfter, child, 0);\n const duration = this.resolveValue(slice.duration, child, 300);\n sliceTime += delay + duration + delayAfter;\n return {\n ...slice,\n delay,\n delayAfter,\n duration\n };\n });\n let oneByOneDelay = 0;\n if (oneByOne) {\n oneByOneDelay = typeof oneByOne === 'number' ? (oneByOne as number) : oneByOne ? sliceTime : 0;\n }\n parsedParams.oneByOneDelay = oneByOneDelay;\n\n let scale = 1;\n if (totalTime) {\n const _totalTime = sliceTime + oneByOneDelay * (this._target.count - 2);\n scale = totalTime ? totalTime / _totalTime : 1;\n }\n ((parsedParams as IAnimationTimeline).timeSlices as IAnimationTimeSlice[]) = (\n (parsedParams as IAnimationTimeline).timeSlices as IAnimationTimeSlice[]\n ).map(slice => {\n let effects = slice.effects;\n if (!Array.isArray(effects)) {\n effects = [effects];\n }\n return {\n ...slice,\n delay: (slice.delay as number) * scale,\n delayAfter: (slice.delayAfter as number) * scale,\n duration: (slice.duration as number) * scale,\n effects: effects.map(effect => {\n const custom = effect.custom ?? AnimateExecutor.builtInAnimateMap[(effect.type as any) ?? 'fromTo'];\n const customType =\n custom && isFunction(custom) ? (/^class\\s/.test(Function.prototype.toString.call(custom)) ? 1 : 2) : 0;\n return {\n ...effect,\n custom,\n customType\n };\n })\n };\n });\n parsedParams.oneByOneDelay = oneByOneDelay * scale;\n (parsedParams as IAnimationTimeline).startTime = startTime * scale;\n } else {\n const delay = this.resolveValue((params as IAnimationTypeConfig).delay, child, 0);\n const delayAfter = this.resolveValue((params as IAnimationTypeConfig).delayAfter, child, 0);\n const duration = this.resolveValue((params as IAnimationTypeConfig).duration, child, 300);\n const loopTime = delay + delayAfter + duration;\n\n let oneByOneDelay = 0;\n if (oneByOne) {\n oneByOneDelay = typeof oneByOne === 'number' ? (oneByOne as number) : oneByOne ? loopTime : 0;\n }\n parsedParams.oneByOneDelay = oneByOneDelay;\n parsedParams.custom =\n (params as IAnimationTypeConfig).custom ??\n AnimateExecutor.builtInAnimateMap[(params as IAnimationTypeConfig).type ?? 'fromTo'];\n\n const customType =\n parsedParams.custom && isFunction(parsedParams.custom)\n ? /^class\\s/.test(Function.prototype.toString.call(parsedParams.custom))\n ? 1\n : 2\n : 0;\n parsedParams.customType = customType;\n\n if (totalTime) {\n const _totalTime = delay + delayAfter + duration + oneByOneDelay * (this._target.count - 2);\n const scale = totalTime ? totalTime / _totalTime : 1;\n parsedParams.delay = delay * scale;\n parsedParams.delayAfter = delayAfter * scale;\n parsedParams.duration = duration * scale;\n parsedParams.oneByOneDelay = oneByOneDelay * scale;\n (parsedParams as IAnimationTypeConfig).startTime = startTime;\n }\n }\n\n return parsedParams;\n }\n\n execute(params: IAnimationConfig | IAnimationConfig[]) {\n if (Array.isArray(params)) {\n params.forEach(param => this._execute(param));\n } else {\n this._execute(params);\n }\n }\n\n /**\n * 执行动画,针对一组元素\n */\n _execute(params: IAnimationConfig) {\n if (params.selfOnly) {\n return this._executeItem(params, this._target, 0, 1);\n }\n\n // 判断是否为timeline配置\n const isTimeline = 'timeSlices' in params;\n\n // 筛选符合条件的子图元\n let filteredChildren: IGraphic[];\n\n // 如果设置了partitioner,则进行筛选\n if (isTimeline && params.partitioner) {\n filteredChildren = (filteredChildren ?? (this._target.getChildren() as IGraphic[])).filter(child => {\n return (params as IAnimationTimeline).partitioner((child.context as any)?.data?.[0], child, {});\n });\n }\n\n // 如果需要排序,则进行排序\n if (isTimeline && (params as IAnimationTimeline).sort) {\n filteredChildren = filteredChildren ?? (this._target.getChildren() as IGraphic[]);\n filteredChildren.sort((a, b) => {\n return (params as IAnimationTimeline).sort(\n (a.context as any)?.data?.[0],\n (b.context as any)?.data?.[0],\n a,\n b,\n {}\n );\n });\n }\n\n //\n\n const cb = isTimeline\n ? (child: IGraphic, index: number, count: number) => {\n const parsedParams = this.parseParams(params, isTimeline, child);\n // 执行单个图元的timeline动画\n const animate = this.executeTimelineItem(parsedParams as IAnimationTimeline, child, index, count);\n if (animate) {\n this._trackAnimation(animate);\n }\n }\n : (child: IGraphic, index: number, count: number) => {\n const parsedParams = this.parseParams(params, isTimeline, child);\n // 执行单个图元的config动画\n const animate = this.executeTypeConfigItem(parsedParams as IAnimationTypeConfig, child, index, count);\n if (animate) {\n this._trackAnimation(animate);\n }\n };\n\n // 执行每个图元的动画\n if (filteredChildren) {\n filteredChildren.forEach((child, index) => cb(child, index, filteredChildren.length));\n } else if (this._target.count <= 1) {\n cb(this._target, 0, 1);\n } else {\n this._target.forEachChildren((child, index) => cb(child as IGraphic, index, this._target.count - 1));\n }\n\n return;\n }\n\n /**\n * 执行 TypeConfig 类型的动画\n */\n private executeTypeConfigItem(\n params: IAnimationTypeConfig,\n graphic: IGraphic,\n index: number,\n count: number\n ): IAnimate {\n const {\n type = 'fromTo',\n channel,\n customParameters,\n easing = 'linear',\n delay = 0,\n delayAfter = 0,\n duration = 300,\n startTime = 0,\n oneByOneDelay = 0,\n loop,\n bounce,\n priority = 0,\n options,\n custom,\n customType, // 0: undefined, 1: class, 2: function\n controlOptions\n } = params as any;\n\n // 创建动画实例\n const animate = graphic.animate() as unknown as IAnimate;\n animate.priority = priority;\n\n const delayValue = isFunction(delay) ? delay(graphic.context?.data?.[0], graphic, {}) : delay;\n\n // 如果设置了indexKey,则使用indexKey作为index\n const datum = graphic.context?.data?.[0];\n const indexKey = graphic.context?.indexKey;\n if (datum && indexKey) {\n index = datum[indexKey] ?? index;\n }\n\n // 设置开始时间\n animate.startAt(startTime as number);\n const wait = index * oneByOneDelay + delayValue;\n wait > 0 && animate.wait(wait);\n\n // 放到startAt中,否则label无法确定主图元何时开始\n // // 添加延迟\n // if (delayValue > 0) {\n // animate.wait(delayValue);\n // }\n\n // 根据 channel 配置创建属性对象\n // 根据 channel 配置创建属性对象\n let parsedFromProps = null;\n let props = params.to;\n let from = params.from;\n if (!props) {\n if (!parsedFromProps) {\n parsedFromProps = this.createPropsFromChannel(channel, graphic);\n }\n props = parsedFromProps.props;\n }\n if (!from) {\n if (!parsedFromProps) {\n parsedFromProps = this.createPropsFromChannel(channel, graphic);\n }\n from = parsedFromProps.from;\n }\n\n this._handleRunAnimate(\n animate,\n custom,\n customType,\n from,\n props,\n duration as number,\n easing,\n customParameters,\n controlOptions,\n options,\n type,\n graphic\n );\n\n let totalDelay = 0;\n if (oneByOneDelay) {\n totalDelay = oneByOneDelay * (count - index - 1);\n }\n\n // 添加后延迟\n const delayAfterValue = isFunction(delayAfter) ? delayAfter(graphic.context?.data?.[0], graphic, {}) : delayAfter;\n if (delayAfterValue > 0) {\n totalDelay += delayAfterValue as number;\n }\n\n if (totalDelay > 0) {\n animate.wait(totalDelay);\n }\n\n // 设置循环\n if (loop && (loop as number) > 0) {\n animate.loop(loop as number);\n }\n\n // 设置反弹\n if (bounce) {\n animate.bounce(true);\n }\n\n return animate;\n }\n\n private _handleRunAnimate(\n animate: IAnimate,\n custom: IAnimationCustomConstructor | IAnimationChannelInterpolator,\n customType: number, // 0: undefined, 1: class, 2: function\n from: Record<string, any> | null,\n props: Record<string, any>,\n duration: number,\n easing: EasingType,\n customParameters: any,\n controlOptions: any,\n options: any,\n type: string,\n graphic: IGraphic\n ) {\n // 处理自定义动画\n if (custom && customType) {\n const customParams = {\n width: graphic.stage.width,\n height: graphic.stage.height,\n group: this._target.parent,\n ...this.resolveValue(customParameters, graphic)\n };\n const objOptions = isFunction(options)\n ? options.call(\n null,\n (customParams && customParams.data?.[0]) ?? graphic.context?.data?.[0],\n graphic,\n customParams\n )\n : options;\n customParams.options = objOptions;\n customParams.controlOptions = controlOptions;\n if (customType === 1) {\n // 自定义动画构造器 - 创建自定义动画类\n this.createCustomAnimation(\n animate,\n custom as IAnimationCustomConstructor,\n from,\n props,\n duration as number,\n easing,\n customParams\n );\n } else if (customType === 2) {\n // 自定义插值器 - 创建自定义插值动画\n this.createCustomInterpolatorAnimation(\n animate,\n custom as IAnimationChannelInterpolator,\n props,\n duration as number,\n easing,\n customParams\n );\n }\n } else if (type === 'to') {\n animate.to(props, duration as number, easing);\n } else if (type === 'from') {\n animate.from(props, duration as number, easing);\n }\n }\n\n /**\n * 执行 Timeline 类型的动画\n */\n private executeTimelineItem(params: IAnimationTimeline, graphic: IGraphic, index: number, count: number): IAnimate {\n const { timeSlices, startTime = 0, loop, bounce, oneByOneDelay, priority, controlOptions } = params as any;\n\n // 如果设置了indexKey,则使用indexKey作为index\n const datum = graphic.context?.data?.[0];\n const indexKey = graphic.context?.indexKey;\n if (datum && indexKey) {\n index = datum[indexKey] ?? index;\n }\n\n // 创建动画实例\n const animate = graphic.animate() as unknown as IAnimate;\n animate.priority = priority;\n\n // 设置开始时间\n animate.startAt(startTime as number);\n animate.wait(index * oneByOneDelay);\n\n // 设置循环\n if (loop && (loop as number) > 0) {\n animate.loop(loop as number);\n }\n\n // 设置反弹\n if (bounce) {\n animate.bounce(true);\n }\n\n // 处理时间切片\n const slices = Array.isArray(timeSlices) ? timeSlices : [timeSlices];\n\n slices.forEach(slice => {\n this.applyTimeSliceToAnimate(slice, animate, graphic, controlOptions);\n });\n\n // 后等待\n if (oneByOneDelay) {\n animate.wait(oneByOneDelay * (count - index - 1));\n }\n\n return animate;\n }\n\n /**\n * 将时间切片应用到动画实例\n */\n private applyTimeSliceToAnimate(\n slice: IAnimationTimeSlice,\n animate: IAnimate,\n graphic: IGraphic,\n controlOptions: any\n ) {\n const { effects, duration = 300, delay = 0, delayAfter = 0 } = slice;\n\n // 解析时间参数\n // const durationValue = duration as number;\n const delayValue = isFunction(delay) ? delay(graphic.context?.data?.[0], graphic, {}) : delay;\n const delayAfterValue = isFunction(delayAfter) ? delayAfter(graphic.context?.data?.[0], graphic, {}) : delayAfter;\n\n // 添加延迟\n if (delayValue > 0) {\n animate.wait(delayValue);\n }\n\n // 处理动画效果\n const effectsArray = Array.isArray(effects) ? effects : [effects];\n\n effectsArray.forEach(effect => {\n const { type = 'fromTo', channel, customParameters, easing = 'linear', options } = effect;\n\n // 根据 channel 配置创建属性对象\n let parsedFromProps = null;\n let props = effect.to;\n let from = effect.from;\n if (!props) {\n if (!parsedFromProps) {\n parsedFromProps = this.createPropsFromChannel(channel, graphic);\n }\n props = parsedFromProps.props;\n }\n if (!from) {\n if (!parsedFromProps) {\n parsedFromProps = this.createPropsFromChannel(channel, graphic);\n }\n from = parsedFromProps.from;\n }\n const custom = effect.custom ?? AnimateExecutor.builtInAnimateMap[type];\n const customType = (effect as any).customType;\n this._handleRunAnimate(\n animate,\n custom,\n customType,\n from,\n props,\n duration as number,\n easing,\n customParameters,\n controlOptions,\n options,\n type,\n graphic\n );\n });\n\n // 添加后延迟\n if (delayAfterValue > 0) {\n animate.wait(delayAfterValue);\n }\n }\n\n /**\n * 创建自定义插值器动画\n */\n private createCustomInterpolatorAnimation(\n animate: IAnimate,\n interpolator: IAnimationChannelInterpolator,\n props: Record<string, any>,\n duration: number,\n easing: EasingType,\n customParams: any\n ) {\n // 获取动画目标的当前属性作为起始值\n const from: Record<string, any> = {};\n const to = props;\n\n // 为每个属性填充起始值\n Object.keys(to).forEach(key => {\n from[key] = animate.target.getComputedAttribute(key);\n });\n\n animate.interpolateUpdateFunction = (from, to, ratio, step, target) => {\n interpolator(ratio, from, to, step, target, animate.target, customParams);\n };\n\n animate.to(props, duration, easing);\n }\n\n /**\n * 创建自定义动画类\n */\n private createCustomAnimation(\n animate: IAnimate,\n CustomAnimateConstructor: IAnimationCustomConstructor,\n from: Record<string, any> | null,\n props: Record<string, any>,\n duration: number,\n easing: EasingType,\n customParams: any\n ) {\n // 获取动画目标的当前属性作为起始值\n // const from: Record<string, any> = {};\n const to = props;\n\n // // 为每个属性填充起始值\n // Object.keys(to).forEach(key => {\n // from[key] = animate.target.getComputedAttribute(key);\n // });\n\n // 实例化自定义动画类\n // 自定义动画自己去计算from\n const customAnimate = new CustomAnimateConstructor(from, to, duration, easing, customParams);\n\n // 播放自定义动画\n animate.play(customAnimate);\n }\n\n /**\n * 从 channel 配置创建属性对象\n */\n private createPropsFromChannel(\n channel: IAnimationChannelAttrs | IAnimationChannelAttributes | undefined,\n graphic: IGraphic\n ): { from: Record<string, any> | null; props: Record<string, any> } {\n const props: Record<string, any> = {};\n let from: Record<string, any> | null = null;\n\n if (!channel) {\n return {\n from,\n props\n };\n }\n\n if (!Array.isArray(channel)) {\n // 如果是对象,解析 from/to 配置\n Object.keys(channel).forEach(key => {\n const config = channel[key];\n if (config.to !== undefined) {\n if (typeof config.to === 'function') {\n props[key] = config.to((graphic.context as any)?.data?.[0], graphic, {});\n } else {\n props[key] = config.to;\n }\n }\n if (config.from !== undefined) {\n if (!from) {\n from = {};\n }\n if (typeof config.from === 'function') {\n from[key] = config.from((graphic.context as any)?.data?.[0], graphic, {});\n } else {\n from[key] = config.from;\n }\n }\n });\n } else {\n channel.forEach(key => {\n const value = graphic.context?.diffAttrs?.[key];\n if (value !== undefined) {\n props[key] = value;\n }\n });\n }\n\n return {\n from,\n props\n };\n }\n\n /**\n * 解析函数或值类型的配置项\n */\n private resolveValue<T>(value: MarkFunctionValueType<T> | undefined, graphic?: IGraphic, defaultValue?: T): T {\n if (value === undefined) {\n return defaultValue as T;\n }\n\n if (typeof value === 'function' && graphic) {\n return (value as MarkFunctionCallback<T>)((graphic.context as any)?.data?.[0], graphic, {});\n }\n\n return value as T;\n }\n\n executeItem(params: IAnimationConfig | IAnimationConfig[], graphic: IGraphic, index: number = 0, count: number = 1) {\n if (Array.isArray(params)) {\n return params.map(param => this._executeItem(param, graphic, index, count)).filter(Boolean);\n }\n return [this._executeItem(params, graphic, index, count)].filter(Boolean);\n }\n\n /**\n * 执行动画(具体执行到内部的单个图元)\n */\n _executeItem(params: IAnimationConfig, graphic: IGraphic, index: number = 0, count: number = 1): IAnimate | null {\n if (!graphic) {\n return null;\n }\n\n const isTimeline = 'timeSlices' in params;\n let animate: IAnimate | null = null;\n\n const parsedParams = this.parseParams(params, isTimeline);\n\n if (isTimeline) {\n // 处理 Timeline 类型的动画配置\n animate = this.executeTimelineItem(parsedParams as IAnimationTimeline, graphic, index, count);\n } else {\n // 处理 TypeConfig 类型的动画配置\n animate = this.executeTypeConfigItem(parsedParams as IAnimationTypeConfig, graphic, index, count);\n }\n\n // 跟踪动画以进行生命周期管理\n if (animate) {\n this._trackAnimation(animate);\n }\n\n return animate;\n }\n\n /**\n * 停止所有由该执行器管理的动画\n */\n stop(type?: 'start' | 'end' | Record<string, any>): void {\n // animate.stop会从数组里删除,所以需要while循环,不能forEach\n while (this._animates.length > 0) {\n const animate = this._animates.pop();\n animate?.stop(type);\n }\n\n // 清空动画实例数组\n this._animates = [];\n this._activeCount = 0;\n\n // 如果动画正在运行,触发结束回调\n if (this._started) {\n this._started = false;\n this.onEnd();\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/executor/animate-executor.ts"],"names":[],"mappings":"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","file":"animate-executor.js","sourcesContent":["import type { IGraphic, EasingType, IAnimate } from '@visactor/vrender-core';\nimport type {\n IAnimationConfig,\n IAnimationTimeline,\n IAnimationTypeConfig,\n MarkFunctionCallback,\n MarkFunctionValueType,\n IAnimationTimeSlice,\n IAnimationChannelAttrs,\n IAnimationChannelAttributes,\n IAnimationCustomConstructor,\n IAnimationChannelInterpolator\n} from './executor';\nimport { cloneDeep, isArray, isFunction } from '@visactor/vutils';\n\ninterface IAnimateExecutor {\n execute: (params: IAnimationConfig) => void;\n executeItem: (params: IAnimationConfig, graphic: IGraphic, index?: number) => IAnimate[];\n onStart: (cb?: () => void) => void;\n onEnd: (cb?: () => void) => void;\n}\n\nexport class AnimateExecutor implements IAnimateExecutor {\n static builtInAnimateMap: Record<string, IAnimationCustomConstructor> = {};\n\n static registerBuiltInAnimate(name: string, animate: IAnimationCustomConstructor) {\n AnimateExecutor.builtInAnimateMap[name] = animate;\n }\n\n declare _target: IGraphic;\n\n // 所有动画实例\n private _animates: IAnimate[] = [];\n\n // 动画开始回调\n private _startCallbacks: (() => void)[] = [];\n // 动画结束回调\n private _endCallbacks: (() => void)[] = [];\n\n // 是否已经开始动画\n private _started: boolean = false;\n\n // 当前正在运行的动画数量\n private _activeCount: number = 0;\n\n constructor(target: IGraphic) {\n this._target = target;\n }\n\n /**\n * 注册一个回调,当动画开始时调用\n */\n onStart(cb?: () => void): void {\n if (cb) {\n this._startCallbacks.push(cb);\n\n // 如果动画已经开始,立即调用回调\n if (this._started && this._activeCount > 0) {\n cb();\n }\n } else {\n this._startCallbacks.forEach(cb => {\n cb();\n });\n }\n }\n\n /**\n * 注册一个回调,当所有动画结束时调用\n */\n onEnd(cb?: () => void): void {\n if (cb) {\n this._endCallbacks.push(cb);\n } else {\n this._endCallbacks.forEach(cb => {\n cb();\n });\n }\n }\n\n /**\n * 跟踪动画并附加生命周期钩子\n */\n private _trackAnimation(animate: IAnimate): void {\n this._animates.push(animate);\n this._activeCount++;\n\n // 如果这是第一个正在运行的动画,触发onStart回调\n if (this._activeCount === 1 && !this._started) {\n this._started = true;\n this.onStart();\n }\n\n // 处理动画完成\n animate.onEnd(() => {\n this._activeCount--;\n\n // 从跟踪的动画中移除\n const index = this._animates.indexOf(animate);\n if (index >= 0) {\n this._animates.splice(index, 1);\n }\n\n // 如果所有动画都已完成,触发onEnd回调\n if (this._activeCount === 0 && this._started) {\n this._started = false;\n this.onEnd();\n }\n });\n }\n\n parseParams(params: IAnimationConfig, isTimeline: boolean, child?: IGraphic): IAnimationConfig {\n const totalTime = this.resolveValue(params.totalTime, undefined, undefined);\n const startTime = this.resolveValue(params.startTime, undefined, 0);\n\n // execute只在mark层面调用,所以性能影响可以忽略\n // TODO 存在性能问题,如果后续调用频繁,需要重新修改\n const parsedParams: Record<string, any> = { ...params };\n parsedParams.oneByOneDelay = 0;\n parsedParams.startTime = startTime;\n parsedParams.totalTime = totalTime;\n\n const oneByOne = this.resolveValue(params.oneByOne, child, false);\n\n if (isTimeline) {\n const timeSlices = (parsedParams as IAnimationTimeline).timeSlices;\n if (!isArray(timeSlices)) {\n (parsedParams as IAnimationTimeline).timeSlices = [timeSlices];\n }\n let sliceTime = 0;\n ((parsedParams as IAnimationTimeline).timeSlices as IAnimationTimeSlice[]) = (\n (parsedParams as IAnimationTimeline).timeSlices as IAnimationTimeSlice[]\n ).map(slice => {\n const delay = this.resolveValue(slice.delay, child, 0);\n const delayAfter = this.resolveValue(slice.delayAfter, child, 0);\n const duration = this.resolveValue(slice.duration, child, 300);\n sliceTime += delay + duration + delayAfter;\n return {\n ...slice,\n delay,\n delayAfter,\n duration\n };\n });\n let oneByOneDelay = 0;\n if (oneByOne) {\n oneByOneDelay = typeof oneByOne === 'number' ? (oneByOne as number) : oneByOne ? sliceTime : 0;\n }\n parsedParams.oneByOneDelay = oneByOneDelay;\n\n let scale = 1;\n if (totalTime) {\n const _totalTime = sliceTime + oneByOneDelay * (this._target.count - 2);\n scale = totalTime ? totalTime / _totalTime : 1;\n }\n ((parsedParams as IAnimationTimeline).timeSlices as IAnimationTimeSlice[]) = (\n (parsedParams as IAnimationTimeline).timeSlices as IAnimationTimeSlice[]\n ).map(slice => {\n let effects = slice.effects;\n if (!Array.isArray(effects)) {\n effects = [effects];\n }\n return {\n ...slice,\n delay: (slice.delay as number) * scale,\n delayAfter: (slice.delayAfter as number) * scale,\n duration: (slice.duration as number) * scale,\n effects: effects.map(effect => {\n const custom = effect.custom ?? AnimateExecutor.builtInAnimateMap[(effect.type as any) ?? 'fromTo'];\n const customType =\n custom && isFunction(custom) ? (/^class\\s/.test(Function.prototype.toString.call(custom)) ? 1 : 2) : 0;\n return {\n ...effect,\n custom,\n customType\n };\n })\n };\n });\n parsedParams.oneByOneDelay = oneByOneDelay * scale;\n (parsedParams as IAnimationTimeline).startTime = startTime * scale;\n } else {\n const delay = this.resolveValue((params as IAnimationTypeConfig).delay, child, 0);\n const delayAfter = this.resolveValue((params as IAnimationTypeConfig).delayAfter, child, 0);\n const duration = this.resolveValue((params as IAnimationTypeConfig).duration, child, 300);\n const loopTime = delay + delayAfter + duration;\n\n let oneByOneDelay = 0;\n if (oneByOne) {\n oneByOneDelay = typeof oneByOne === 'number' ? (oneByOne as number) : oneByOne ? loopTime : 0;\n }\n parsedParams.oneByOneDelay = oneByOneDelay;\n parsedParams.custom =\n (params as IAnimationTypeConfig).custom ??\n AnimateExecutor.builtInAnimateMap[(params as IAnimationTypeConfig).type ?? 'fromTo'];\n\n const customType =\n parsedParams.custom && isFunction(parsedParams.custom)\n ? /^class\\s/.test(Function.prototype.toString.call(parsedParams.custom))\n ? 1\n : 2\n : 0;\n parsedParams.customType = customType;\n\n if (totalTime) {\n const _totalTime = delay + delayAfter + duration + oneByOneDelay * (this._target.count - 2);\n const scale = totalTime ? totalTime / _totalTime : 1;\n parsedParams.delay = delay * scale;\n parsedParams.delayAfter = delayAfter * scale;\n parsedParams.duration = duration * scale;\n parsedParams.oneByOneDelay = oneByOneDelay * scale;\n (parsedParams as IAnimationTypeConfig).startTime = startTime;\n }\n }\n\n return parsedParams;\n }\n\n execute(params: IAnimationConfig | IAnimationConfig[]) {\n if (Array.isArray(params)) {\n params.forEach(param => this._execute(param));\n } else {\n this._execute(params);\n }\n }\n\n /**\n * 执行动画,针对一组元素\n */\n _execute(params: IAnimationConfig) {\n if (params.selfOnly) {\n return this._executeItem(params, this._target, 0, 1);\n }\n\n // 判断是否为timeline配置\n const isTimeline = 'timeSlices' in params;\n\n // 筛选符合条件的子图元\n let filteredChildren: IGraphic[];\n\n // 如果设置了partitioner,则进行筛选\n if (isTimeline && params.partitioner) {\n filteredChildren = (filteredChildren ?? (this._target.getChildren() as IGraphic[])).filter(child => {\n return (params as IAnimationTimeline).partitioner((child.context as any)?.data?.[0], child, {});\n });\n }\n\n // 如果需要排序,则进行排序\n if (isTimeline && (params as IAnimationTimeline).sort) {\n filteredChildren = filteredChildren ?? (this._target.getChildren() as IGraphic[]);\n filteredChildren.sort((a, b) => {\n return (params as IAnimationTimeline).sort(\n (a.context as any)?.data?.[0],\n (b.context as any)?.data?.[0],\n a,\n b,\n {}\n );\n });\n }\n\n //\n\n const cb = isTimeline\n ? (child: IGraphic, index: number, count: number) => {\n const parsedParams = this.parseParams(params, isTimeline, child);\n // 执行单个图元的timeline动画\n const animate = this.executeTimelineItem(parsedParams as IAnimationTimeline, child, index, count);\n if (animate) {\n this._trackAnimation(animate);\n }\n }\n : (child: IGraphic, index: number, count: number) => {\n const parsedParams = this.parseParams(params, isTimeline, child);\n // 执行单个图元的config动画\n const animate = this.executeTypeConfigItem(parsedParams as IAnimationTypeConfig, child, index, count);\n if (animate) {\n this._trackAnimation(animate);\n }\n };\n\n // 执行每个图元的动画\n if (filteredChildren) {\n filteredChildren.forEach((child, index) => cb(child, index, filteredChildren.length));\n } else if (this._target.count <= 1) {\n cb(this._target, 0, 1);\n } else {\n this._target.forEachChildren((child, index) => cb(child as IGraphic, index, this._target.count - 1));\n }\n\n return;\n }\n\n /**\n * 执行 TypeConfig 类型的动画\n */\n private executeTypeConfigItem(\n params: IAnimationTypeConfig,\n graphic: IGraphic,\n index: number,\n count: number\n ): IAnimate {\n const {\n type = 'fromTo',\n channel,\n customParameters,\n easing = 'linear',\n delay = 0,\n delayAfter = 0,\n duration = 300,\n startTime = 0,\n oneByOneDelay = 0,\n loop,\n bounce,\n priority = 0,\n options,\n custom,\n customType, // 0: undefined, 1: class, 2: function\n controlOptions\n } = params as any;\n\n // 创建动画实例\n const animate = graphic.animate() as unknown as IAnimate;\n animate.priority = priority;\n\n const delayValue = isFunction(delay) ? delay(graphic.context?.data?.[0], graphic, {}) : delay;\n\n // 如果设置了indexKey,则使用indexKey作为index\n const datum = graphic.context?.data?.[0];\n const indexKey = graphic.context?.indexKey;\n if (datum && indexKey) {\n index = datum[indexKey] ?? index;\n }\n\n // 设置开始时间\n animate.startAt(startTime as number);\n const wait = index * oneByOneDelay + delayValue;\n wait > 0 && animate.wait(wait);\n\n // 放到startAt中,否则label无法确定主图元何时开始\n // // 添加延迟\n // if (delayValue > 0) {\n // animate.wait(delayValue);\n // }\n\n // 根据 channel 配置创建属性对象\n // 根据 channel 配置创建属性对象\n let parsedFromProps = null;\n let props = params.to;\n let from = params.from;\n if (!props) {\n if (!parsedFromProps) {\n parsedFromProps = this.createPropsFromChannel(channel, graphic);\n }\n props = parsedFromProps.props;\n }\n if (!from) {\n if (!parsedFromProps) {\n parsedFromProps = this.createPropsFromChannel(channel, graphic);\n }\n from = parsedFromProps.from;\n }\n\n this._handleRunAnimate(\n animate,\n custom,\n customType,\n from,\n props,\n duration as number,\n easing,\n customParameters,\n controlOptions,\n options,\n type,\n graphic\n );\n\n let totalDelay = 0;\n if (oneByOneDelay) {\n totalDelay = oneByOneDelay * (count - index - 1);\n }\n\n // 添加后延迟\n const delayAfterValue = isFunction(delayAfter) ? delayAfter(graphic.context?.data?.[0], graphic, {}) : delayAfter;\n if (delayAfterValue > 0) {\n totalDelay += delayAfterValue as number;\n }\n\n if (totalDelay > 0) {\n animate.wait(totalDelay);\n }\n\n // 设置循环\n if (loop && (loop as number) > 0) {\n animate.loop(loop as number);\n }\n\n // 设置反弹\n if (bounce) {\n animate.bounce(true);\n }\n\n return animate;\n }\n\n private _handleRunAnimate(\n animate: IAnimate,\n custom: IAnimationCustomConstructor | IAnimationChannelInterpolator,\n customType: number, // 0: undefined, 1: class, 2: function\n from: Record<string, any> | null,\n props: Record<string, any>,\n duration: number,\n easing: EasingType,\n customParameters: any,\n controlOptions: any,\n options: any,\n type: string,\n graphic: IGraphic\n ) {\n // 处理自定义动画\n if (custom && customType) {\n const customParams = this.resolveValue(customParameters, graphic, {\n width: graphic.stage.width,\n height: graphic.stage.height\n });\n const objOptions = isFunction(options)\n ? options.call(\n null,\n (customParams && customParams.data?.[0]) ?? graphic.context?.data?.[0],\n graphic,\n customParams\n )\n : options;\n customParams.options = objOptions;\n customParams.controlOptions = controlOptions;\n if (customType === 1) {\n // 自定义动画构造器 - 创建自定义动画类\n this.createCustomAnimation(\n animate,\n custom as IAnimationCustomConstructor,\n from,\n props,\n duration as number,\n easing,\n customParams\n );\n } else if (customType === 2) {\n // 自定义插值器 - 创建自定义插值动画\n this.createCustomInterpolatorAnimation(\n animate,\n custom as IAnimationChannelInterpolator,\n props,\n duration as number,\n easing,\n customParams\n );\n }\n } else if (type === 'to') {\n animate.to(props, duration as number, easing);\n } else if (type === 'from') {\n animate.from(props, duration as number, easing);\n }\n }\n\n /**\n * 执行 Timeline 类型的动画\n */\n private executeTimelineItem(params: IAnimationTimeline, graphic: IGraphic, index: number, count: number): IAnimate {\n const { timeSlices, startTime = 0, loop, bounce, oneByOneDelay, priority, controlOptions } = params as any;\n\n // 如果设置了indexKey,则使用indexKey作为index\n const datum = graphic.context?.data?.[0];\n const indexKey = graphic.context?.indexKey;\n if (datum && indexKey) {\n index = datum[indexKey] ?? index;\n }\n\n // 创建动画实例\n const animate = graphic.animate() as unknown as IAnimate;\n animate.priority = priority;\n\n // 设置开始时间\n animate.startAt(startTime as number);\n animate.wait(index * oneByOneDelay);\n\n // 设置循环\n if (loop && (loop as number) > 0) {\n animate.loop(loop as number);\n }\n\n // 设置反弹\n if (bounce) {\n animate.bounce(true);\n }\n\n // 处理时间切片\n const slices = Array.isArray(timeSlices) ? timeSlices : [timeSlices];\n\n slices.forEach(slice => {\n this.applyTimeSliceToAnimate(slice, animate, graphic, controlOptions);\n });\n\n // 后等待\n if (oneByOneDelay) {\n animate.wait(oneByOneDelay * (count - index - 1));\n }\n\n return animate;\n }\n\n /**\n * 将时间切片应用到动画实例\n */\n private applyTimeSliceToAnimate(\n slice: IAnimationTimeSlice,\n animate: IAnimate,\n graphic: IGraphic,\n controlOptions: any\n ) {\n const { effects, duration = 300, delay = 0, delayAfter = 0 } = slice;\n\n // 解析时间参数\n // const durationValue = duration as number;\n const delayValue = isFunction(delay) ? delay(graphic.context?.data?.[0], graphic, {}) : delay;\n const delayAfterValue = isFunction(delayAfter) ? delayAfter(graphic.context?.data?.[0], graphic, {}) : delayAfter;\n\n // 添加延迟\n if (delayValue > 0) {\n animate.wait(delayValue);\n }\n\n // 处理动画效果\n const effectsArray = Array.isArray(effects) ? effects : [effects];\n\n effectsArray.forEach(effect => {\n const { type = 'fromTo', channel, customParameters, easing = 'linear', options } = effect;\n\n // 根据 channel 配置创建属性对象\n let parsedFromProps = null;\n let props = effect.to;\n let from = effect.from;\n if (!props) {\n if (!parsedFromProps) {\n parsedFromProps = this.createPropsFromChannel(channel, graphic);\n }\n props = parsedFromProps.props;\n }\n if (!from) {\n if (!parsedFromProps) {\n parsedFromProps = this.createPropsFromChannel(channel, graphic);\n }\n from = parsedFromProps.from;\n }\n const custom = effect.custom ?? AnimateExecutor.builtInAnimateMap[type];\n const customType = (effect as any).customType;\n this._handleRunAnimate(\n animate,\n custom,\n customType,\n from,\n props,\n duration as number,\n easing,\n customParameters,\n controlOptions,\n options,\n type,\n graphic\n );\n });\n\n // 添加后延迟\n if (delayAfterValue > 0) {\n animate.wait(delayAfterValue);\n }\n }\n\n /**\n * 创建自定义插值器动画\n */\n private createCustomInterpolatorAnimation(\n animate: IAnimate,\n interpolator: IAnimationChannelInterpolator,\n props: Record<string, any>,\n duration: number,\n easing: EasingType,\n customParams: any\n ) {\n // 获取动画目标的当前属性作为起始值\n const from: Record<string, any> = {};\n const to = props;\n\n // 为每个属性填充起始值\n Object.keys(to).forEach(key => {\n from[key] = animate.target.getComputedAttribute(key);\n });\n\n animate.interpolateUpdateFunction = (from, to, ratio, step, target) => {\n interpolator(ratio, from, to, step, target, animate.target, customParams);\n };\n\n animate.to(props, duration, easing);\n }\n\n /**\n * 创建自定义动画类\n */\n private createCustomAnimation(\n animate: IAnimate,\n CustomAnimateConstructor: IAnimationCustomConstructor,\n from: Record<string, any> | null,\n props: Record<string, any>,\n duration: number,\n easing: EasingType,\n customParams: any\n ) {\n // 获取动画目标的当前属性作为起始值\n // const from: Record<string, any> = {};\n const to = props;\n\n // // 为每个属性填充起始值\n // Object.keys(to).forEach(key => {\n // from[key] = animate.target.getComputedAttribute(key);\n // });\n\n // 实例化自定义动画类\n // 自定义动画自己去计算from\n const customAnimate = new CustomAnimateConstructor(from, to, duration, easing, customParams);\n\n // 播放自定义动画\n animate.play(customAnimate);\n }\n\n /**\n * 从 channel 配置创建属性对象\n */\n private createPropsFromChannel(\n channel: IAnimationChannelAttrs | IAnimationChannelAttributes | undefined,\n graphic: IGraphic\n ): { from: Record<string, any> | null; props: Record<string, any> } {\n const props: Record<string, any> = {};\n let from: Record<string, any> | null = null;\n\n if (!channel) {\n return {\n from,\n props\n };\n }\n\n if (!Array.isArray(channel)) {\n // 如果是对象,解析 from/to 配置\n Object.keys(channel).forEach(key => {\n const config = channel[key];\n if (config.to !== undefined) {\n if (typeof config.to === 'function') {\n props[key] = config.to((graphic.context as any)?.data?.[0], graphic, {});\n } else {\n props[key] = config.to;\n }\n }\n if (config.from !== undefined) {\n if (!from) {\n from = {};\n }\n if (typeof config.from === 'function') {\n from[key] = config.from((graphic.context as any)?.data?.[0], graphic, {});\n } else {\n from[key] = config.from;\n }\n }\n });\n } else {\n channel.forEach(key => {\n const value = graphic.context?.diffAttrs?.[key];\n if (value !== undefined) {\n props[key] = value;\n }\n });\n }\n\n return {\n from,\n props\n };\n }\n\n /**\n * 解析函数或值类型的配置项\n */\n private resolveValue<T>(value: MarkFunctionValueType<T> | undefined, graphic?: IGraphic, defaultValue?: T): T {\n if (value === undefined) {\n return defaultValue as T;\n }\n\n if (typeof value === 'function' && graphic) {\n return (value as MarkFunctionCallback<T>)((graphic.context as any)?.data?.[0], graphic, {});\n }\n\n return value as T;\n }\n\n executeItem(params: IAnimationConfig | IAnimationConfig[], graphic: IGraphic, index: number = 0, count: number = 1) {\n if (Array.isArray(params)) {\n return params.map(param => this._executeItem(param, graphic, index, count)).filter(Boolean);\n }\n return [this._executeItem(params, graphic, index, count)].filter(Boolean);\n }\n\n /**\n * 执行动画(具体执行到内部的单个图元)\n */\n _executeItem(params: IAnimationConfig, graphic: IGraphic, index: number = 0, count: number = 1): IAnimate | null {\n if (!graphic) {\n return null;\n }\n\n const isTimeline = 'timeSlices' in params;\n let animate: IAnimate | null = null;\n\n const parsedParams = this.parseParams(params, isTimeline);\n\n if (isTimeline) {\n // 处理 Timeline 类型的动画配置\n animate = this.executeTimelineItem(parsedParams as IAnimationTimeline, graphic, index, count);\n } else {\n // 处理 TypeConfig 类型的动画配置\n animate = this.executeTypeConfigItem(parsedParams as IAnimationTypeConfig, graphic, index, count);\n }\n\n // 跟踪动画以进行生命周期管理\n if (animate) {\n this._trackAnimation(animate);\n }\n\n return animate;\n }\n\n /**\n * 停止所有由该执行器管理的动画\n */\n stop(type?: 'start' | 'end' | Record<string, any>): void {\n // animate.stop会从数组里删除,所以需要while循环,不能forEach\n while (this._animates.length > 0) {\n const animate = this._animates.pop();\n animate?.stop(type);\n }\n\n // 清空动画实例数组\n this._animates = [];\n this._activeCount = 0;\n\n // 如果动画正在运行,触发结束回调\n if (this._started) {\n this._started = false;\n this.onEnd();\n }\n }\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -4,9 +4,8 @@ export { ManualTicker } from './ticker/manual-ticker';
4
4
  export { DefaultTicker } from './ticker/default-ticker';
5
5
  export { Step as AnimateStep } from './step';
6
6
  export * from './utils/easing-func';
7
- export * from './utils/easing';
8
7
  export { registerAnimate } from './register';
9
- export { ACustomAnimate, AComponentAnimate, AStageAnimate } from './custom/custom-animate';
8
+ export { ACustomAnimate, AComponentAnimate } from './custom/custom-animate';
10
9
  export { ComponentAnimator } from './component/component-animator';
11
10
  export { IncreaseCount } from './custom/number';
12
11
  export { MorphingPath, MultiToOneMorphingPath, oneToMultiMorph, multiToOneMorph, morphPath } from './custom/morphing';
package/cjs/index.js CHANGED
@@ -17,7 +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.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.AStageAnimate = exports.AComponentAnimate = exports.ACustomAnimate = exports.registerAnimate = exports.AnimateStep = exports.DefaultTicker = exports.ManualTicker = exports.DefaultTimeline = exports.Animate = void 0;
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;
21
21
 
22
22
  var animate_1 = require("./animate");
23
23
 
@@ -62,7 +62,7 @@ Object.defineProperty(exports, "AnimateStep", {
62
62
  get: function() {
63
63
  return step_1.Step;
64
64
  }
65
- }), __exportStar(require("./utils/easing-func"), exports), __exportStar(require("./utils/easing"), exports);
65
+ }), __exportStar(require("./utils/easing-func"), exports);
66
66
 
67
67
  var register_1 = require("./register");
68
68
 
@@ -85,11 +85,6 @@ Object.defineProperty(exports, "ACustomAnimate", {
85
85
  get: function() {
86
86
  return custom_animate_1.AComponentAnimate;
87
87
  }
88
- }), Object.defineProperty(exports, "AStageAnimate", {
89
- enumerable: !0,
90
- get: function() {
91
- return custom_animate_1.AStageAnimate;
92
- }
93
88
  });
94
89
 
95
90
  var component_animator_1 = require("./component/component-animator");
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
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,iDAA+B;AAC/B,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AACxB,0DAA2F;AAAlF,gHAAA,cAAc,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAAE,+GAAA,aAAa,OAAA;AACzD,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 * from './utils/easing';\nexport { registerAnimate } from './register';\nexport { ACustomAnimate, AComponentAnimate, AStageAnimate } 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
+ {"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"]}
@@ -39,6 +39,5 @@ export declare class AnimationStateManager {
39
39
  applyUnhighlightState(animationConfig: IAnimationConfig, callback?: () => void): void;
40
40
  stopState(state: string, type?: 'start' | 'end' | Record<string, any>): void;
41
41
  clearState(): void;
42
- reApplyState(state: string): void;
43
42
  }
44
43
  export {};
@@ -118,11 +118,6 @@ class AnimationStateManager {
118
118
  state.executor.stop();
119
119
  })), this.stateList = null;
120
120
  }
121
- reApplyState(state) {
122
- var _a;
123
- const stateInfo = null === (_a = this.stateList) || void 0 === _a ? void 0 : _a.find((stateInfo => stateInfo.state === state));
124
- stateInfo && (stateInfo.executor.stop(), stateInfo.executor.execute(stateInfo.animationConfig));
125
- }
126
121
  }
127
122
 
128
123
  exports.AnimationStateManager = AnimationStateManager;
@@ -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';\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 reApplyState(state: string): void {\n const stateInfo = this.stateList?.find(stateInfo => stateInfo.state === state);\n if (stateInfo) {\n stateInfo.executor.stop();\n stateInfo.executor.execute(stateInfo.animationConfig);\n }\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"]}