@visactor/vrender-components 1.1.0-alpha.9 → 1.1.1-alpha.0

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 (301) hide show
  1. package/README.md +9 -1
  2. package/cjs/animation/axis-animate.d.ts +2 -1
  3. package/cjs/animation/axis-animate.js +11 -8
  4. package/cjs/animation/axis-animate.js.map +1 -1
  5. package/cjs/animation/exit-release.d.ts +13 -0
  6. package/cjs/animation/exit-release.js +39 -0
  7. package/cjs/animation/exit-release.js.map +1 -0
  8. package/cjs/animation/label-animate.d.ts +1 -1
  9. package/cjs/animation/label-animate.js +10 -20
  10. package/cjs/animation/label-animate.js.map +1 -1
  11. package/cjs/animation/static-truth.js +1 -5
  12. package/cjs/animation/static-truth.js.map +1 -1
  13. package/cjs/axis/animate/group-transition.d.ts +3 -2
  14. package/cjs/axis/animate/group-transition.js +3 -3
  15. package/cjs/axis/animate/group-transition.js.map +1 -1
  16. package/cjs/axis/base.d.ts +6 -2
  17. package/cjs/axis/base.js +62 -8
  18. package/cjs/axis/base.js.map +1 -1
  19. package/cjs/axis/circle.js +1 -1
  20. package/cjs/axis/config.js +1 -1
  21. package/cjs/axis/constant.js +1 -1
  22. package/cjs/axis/index.js +1 -1
  23. package/cjs/axis/line.d.ts +1 -1
  24. package/cjs/axis/line.js +3 -3
  25. package/cjs/axis/line.js.map +1 -1
  26. package/cjs/axis/overlap/auto-hide.d.ts +1 -1
  27. package/cjs/axis/overlap/auto-hide.js.map +1 -1
  28. package/cjs/axis/register.js +9 -8
  29. package/cjs/axis/register.js.map +1 -1
  30. package/cjs/axis/type.js +1 -1
  31. package/cjs/axis/util.js +1 -1
  32. package/cjs/brush/brush.d.ts +4 -0
  33. package/cjs/brush/brush.js +32 -14
  34. package/cjs/brush/brush.js.map +1 -1
  35. package/cjs/brush/register.js +2 -2
  36. package/cjs/brush/register.js.map +1 -1
  37. package/cjs/brush/type.js +1 -2
  38. package/cjs/checkbox/register.js +3 -3
  39. package/cjs/checkbox/register.js.map +1 -1
  40. package/cjs/core/base.d.ts +2 -2
  41. package/cjs/core/base.js +3 -3
  42. package/cjs/core/base.js.map +1 -1
  43. package/cjs/core/type.d.ts +7 -0
  44. package/cjs/core/type.js.map +1 -1
  45. package/cjs/crosshair/polygon.js +2 -1
  46. package/cjs/crosshair/register.js +7 -7
  47. package/cjs/crosshair/register.js.map +1 -1
  48. package/cjs/data-zoom/interaction.js +1 -2
  49. package/cjs/data-zoom/register.js +3 -3
  50. package/cjs/data-zoom/register.js.map +1 -1
  51. package/cjs/empty-tip/register.js +3 -2
  52. package/cjs/empty-tip/register.js.map +1 -1
  53. package/cjs/empty-tip/type.js +2 -1
  54. package/cjs/index.d.ts +1 -1
  55. package/cjs/index.js +1 -1
  56. package/cjs/index.js.map +1 -1
  57. package/cjs/indicator/register.js +3 -2
  58. package/cjs/indicator/register.js.map +1 -1
  59. package/cjs/jsx/component-type.d.ts +2 -3
  60. package/cjs/jsx/component-type.js.map +1 -1
  61. package/cjs/label/arc.js +14 -10
  62. package/cjs/label/arc.js.map +1 -1
  63. package/cjs/label/base.d.ts +12 -2
  64. package/cjs/label/base.js +114 -41
  65. package/cjs/label/base.js.map +1 -1
  66. package/cjs/label/data-label-register.js +1 -1
  67. package/cjs/label/dataLabel.d.ts +5 -1
  68. package/cjs/label/dataLabel.js +47 -2
  69. package/cjs/label/dataLabel.js.map +1 -1
  70. package/cjs/label/index.js +1 -1
  71. package/cjs/label/line.js +1 -1
  72. package/cjs/label/polygon.js +1 -1
  73. package/cjs/label/rect.js +1 -1
  74. package/cjs/label/register.js +4 -3
  75. package/cjs/label/register.js.map +1 -1
  76. package/cjs/label-item/register.js +3 -3
  77. package/cjs/label-item/register.js.map +1 -1
  78. package/cjs/legend/discrete/discrete.js +4 -2
  79. package/cjs/legend/discrete/discrete.js.map +1 -1
  80. package/cjs/legend/register.js +3 -3
  81. package/cjs/legend/register.js.map +1 -1
  82. package/cjs/link-path/register.js +2 -2
  83. package/cjs/link-path/register.js.map +1 -1
  84. package/cjs/marker/animate/animate.d.ts +1 -1
  85. package/cjs/marker/animate/animate.js.map +1 -1
  86. package/cjs/marker/animate/call-in.d.ts +2 -2
  87. package/cjs/marker/animate/call-in.js +5 -4
  88. package/cjs/marker/animate/call-in.js.map +1 -1
  89. package/cjs/marker/animate/clip-in.js +5 -4
  90. package/cjs/marker/animate/clip-in.js.map +1 -1
  91. package/cjs/marker/animate/common.d.ts +1 -0
  92. package/cjs/marker/animate/common.js +13 -8
  93. package/cjs/marker/animate/common.js.map +1 -1
  94. package/cjs/marker/animate/fade-in.d.ts +1 -1
  95. package/cjs/marker/animate/fade-in.js.map +1 -1
  96. package/cjs/marker/animate/fade-out.d.ts +1 -1
  97. package/cjs/marker/animate/fade-out.js.map +1 -1
  98. package/cjs/marker/arc-area.d.ts +1 -1
  99. package/cjs/marker/area.d.ts +1 -1
  100. package/cjs/marker/base.d.ts +6 -2
  101. package/cjs/marker/base.js +51 -9
  102. package/cjs/marker/base.js.map +1 -1
  103. package/cjs/marker/common-line.d.ts +1 -1
  104. package/cjs/marker/point.d.ts +1 -1
  105. package/cjs/marker/register.js +8 -8
  106. package/cjs/marker/register.js.map +1 -1
  107. package/cjs/marker/type.d.ts +8 -5
  108. package/cjs/marker/type.js.map +1 -1
  109. package/cjs/pager/register.js +3 -2
  110. package/cjs/pager/register.js.map +1 -1
  111. package/cjs/player/register.js +3 -3
  112. package/cjs/player/register.js.map +1 -1
  113. package/cjs/poptip/module.js +3 -1
  114. package/cjs/poptip/module.js.map +1 -1
  115. package/cjs/poptip/register.js +3 -3
  116. package/cjs/poptip/register.js.map +1 -1
  117. package/cjs/radio/register.js +3 -3
  118. package/cjs/radio/register.js.map +1 -1
  119. package/cjs/scrollbar/register.js +2 -2
  120. package/cjs/scrollbar/register.js.map +1 -1
  121. package/cjs/segment/register.js +5 -5
  122. package/cjs/segment/register.js.map +1 -1
  123. package/cjs/slider/register.js +3 -3
  124. package/cjs/slider/register.js.map +1 -1
  125. package/cjs/switch/register.js +3 -3
  126. package/cjs/switch/register.js.map +1 -1
  127. package/cjs/table-series-number/register.js +3 -2
  128. package/cjs/table-series-number/register.js.map +1 -1
  129. package/cjs/tag/register.js +4 -3
  130. package/cjs/tag/register.js.map +1 -1
  131. package/cjs/timeline/register.js +3 -3
  132. package/cjs/timeline/register.js.map +1 -1
  133. package/cjs/title/register.js +3 -2
  134. package/cjs/title/register.js.map +1 -1
  135. package/cjs/title/title.js +5 -2
  136. package/cjs/title/title.js.map +1 -1
  137. package/cjs/tooltip/register.js +3 -3
  138. package/cjs/tooltip/register.js.map +1 -1
  139. package/cjs/tooltip/tooltip.js +8 -8
  140. package/cjs/tooltip/tooltip.js.map +1 -1
  141. package/cjs/util/event.js +2 -2
  142. package/cjs/util/event.js.map +1 -1
  143. package/cjs/util/graphic-creator.js +1 -1
  144. package/cjs/util/graphic-creator.js.map +1 -1
  145. package/cjs/util/text.js +3 -3
  146. package/cjs/util/text.js.map +1 -1
  147. package/cjs/weather/register.js +2 -2
  148. package/cjs/weather/register.js.map +1 -1
  149. package/cjs/weather/weather-box.js +5 -5
  150. package/cjs/weather/weather-box.js.map +1 -1
  151. package/dist/index.es.js +6869 -6023
  152. package/es/animation/axis-animate.d.ts +2 -1
  153. package/es/animation/axis-animate.js +9 -2
  154. package/es/animation/axis-animate.js.map +1 -1
  155. package/es/animation/exit-release.d.ts +13 -0
  156. package/es/animation/exit-release.js +31 -0
  157. package/es/animation/exit-release.js.map +1 -0
  158. package/es/animation/label-animate.d.ts +1 -1
  159. package/es/animation/label-animate.js +8 -12
  160. package/es/animation/label-animate.js.map +1 -1
  161. package/es/animation/static-truth.js +1 -5
  162. package/es/animation/static-truth.js.map +1 -1
  163. package/es/axis/animate/group-transition.d.ts +3 -2
  164. package/es/axis/animate/group-transition.js +2 -2
  165. package/es/axis/animate/group-transition.js.map +1 -1
  166. package/es/axis/base.d.ts +6 -2
  167. package/es/axis/base.js +61 -6
  168. package/es/axis/base.js.map +1 -1
  169. package/es/axis/circle.js +1 -1
  170. package/es/axis/config.js +1 -1
  171. package/es/axis/constant.js +1 -1
  172. package/es/axis/index.js +1 -1
  173. package/es/axis/line.d.ts +1 -1
  174. package/es/axis/line.js +3 -3
  175. package/es/axis/line.js.map +1 -1
  176. package/es/axis/overlap/auto-hide.d.ts +1 -1
  177. package/es/axis/overlap/auto-hide.js.map +1 -1
  178. package/es/axis/register.js +14 -2
  179. package/es/axis/register.js.map +1 -1
  180. package/es/axis/type.js +1 -1
  181. package/es/axis/util.js +1 -1
  182. package/es/brush/brush.d.ts +4 -0
  183. package/es/brush/brush.js +32 -15
  184. package/es/brush/brush.js.map +1 -1
  185. package/es/brush/register.js +3 -1
  186. package/es/brush/register.js.map +1 -1
  187. package/es/brush/type.js +1 -2
  188. package/es/checkbox/register.js +7 -1
  189. package/es/checkbox/register.js.map +1 -1
  190. package/es/core/base.d.ts +2 -2
  191. package/es/core/base.js +3 -1
  192. package/es/core/base.js.map +1 -1
  193. package/es/core/type.d.ts +7 -0
  194. package/es/core/type.js.map +1 -1
  195. package/es/crosshair/polygon.js +2 -1
  196. package/es/crosshair/register.js +9 -1
  197. package/es/crosshair/register.js.map +1 -1
  198. package/es/data-zoom/interaction.js +1 -2
  199. package/es/data-zoom/register.js +7 -1
  200. package/es/data-zoom/register.js.map +1 -1
  201. package/es/empty-tip/register.js +5 -1
  202. package/es/empty-tip/register.js.map +1 -1
  203. package/es/empty-tip/type.js +2 -1
  204. package/es/index.d.ts +1 -1
  205. package/es/index.js +1 -1
  206. package/es/index.js.map +1 -1
  207. package/es/indicator/register.js +5 -1
  208. package/es/indicator/register.js.map +1 -1
  209. package/es/jsx/component-type.d.ts +2 -3
  210. package/es/jsx/component-type.js.map +1 -1
  211. package/es/label/arc.js +14 -10
  212. package/es/label/arc.js.map +1 -1
  213. package/es/label/base.d.ts +12 -2
  214. package/es/label/base.js +107 -31
  215. package/es/label/base.js.map +1 -1
  216. package/es/label/data-label-register.js +1 -1
  217. package/es/label/dataLabel.d.ts +5 -1
  218. package/es/label/dataLabel.js +47 -1
  219. package/es/label/dataLabel.js.map +1 -1
  220. package/es/label/index.js +1 -1
  221. package/es/label/line.js +1 -1
  222. package/es/label/polygon.js +1 -1
  223. package/es/label/rect.js +1 -1
  224. package/es/label/register.js +7 -1
  225. package/es/label/register.js.map +1 -1
  226. package/es/label-item/register.js +7 -1
  227. package/es/label-item/register.js.map +1 -1
  228. package/es/legend/discrete/discrete.js +4 -2
  229. package/es/legend/discrete/discrete.js.map +1 -1
  230. package/es/legend/register.js +3 -1
  231. package/es/legend/register.js.map +1 -1
  232. package/es/link-path/register.js +3 -1
  233. package/es/link-path/register.js.map +1 -1
  234. package/es/marker/animate/animate.d.ts +1 -1
  235. package/es/marker/animate/animate.js.map +1 -1
  236. package/es/marker/animate/call-in.d.ts +2 -2
  237. package/es/marker/animate/call-in.js +6 -4
  238. package/es/marker/animate/call-in.js.map +1 -1
  239. package/es/marker/animate/clip-in.js +6 -4
  240. package/es/marker/animate/clip-in.js.map +1 -1
  241. package/es/marker/animate/common.d.ts +1 -0
  242. package/es/marker/animate/common.js +9 -4
  243. package/es/marker/animate/common.js.map +1 -1
  244. package/es/marker/animate/fade-in.d.ts +1 -1
  245. package/es/marker/animate/fade-in.js.map +1 -1
  246. package/es/marker/animate/fade-out.d.ts +1 -1
  247. package/es/marker/animate/fade-out.js.map +1 -1
  248. package/es/marker/arc-area.d.ts +1 -1
  249. package/es/marker/area.d.ts +1 -1
  250. package/es/marker/base.d.ts +6 -2
  251. package/es/marker/base.js +51 -8
  252. package/es/marker/base.js.map +1 -1
  253. package/es/marker/common-line.d.ts +1 -1
  254. package/es/marker/point.d.ts +1 -1
  255. package/es/marker/register.js +12 -2
  256. package/es/marker/register.js.map +1 -1
  257. package/es/marker/type.d.ts +8 -5
  258. package/es/marker/type.js.map +1 -1
  259. package/es/pager/register.js +5 -1
  260. package/es/pager/register.js.map +1 -1
  261. package/es/player/register.js +3 -1
  262. package/es/player/register.js.map +1 -1
  263. package/es/poptip/module.js +3 -1
  264. package/es/poptip/module.js.map +1 -1
  265. package/es/poptip/register.js +7 -1
  266. package/es/poptip/register.js.map +1 -1
  267. package/es/radio/register.js +7 -1
  268. package/es/radio/register.js.map +1 -1
  269. package/es/scrollbar/register.js +3 -1
  270. package/es/scrollbar/register.js.map +1 -1
  271. package/es/segment/register.js +9 -1
  272. package/es/segment/register.js.map +1 -1
  273. package/es/slider/register.js +7 -1
  274. package/es/slider/register.js.map +1 -1
  275. package/es/switch/register.js +7 -1
  276. package/es/switch/register.js.map +1 -1
  277. package/es/table-series-number/register.js +5 -1
  278. package/es/table-series-number/register.js.map +1 -1
  279. package/es/tag/register.js +9 -1
  280. package/es/tag/register.js.map +1 -1
  281. package/es/timeline/register.js +7 -1
  282. package/es/timeline/register.js.map +1 -1
  283. package/es/title/register.js +5 -1
  284. package/es/title/register.js.map +1 -1
  285. package/es/title/title.js +5 -2
  286. package/es/title/title.js.map +1 -1
  287. package/es/tooltip/register.js +9 -1
  288. package/es/tooltip/register.js.map +1 -1
  289. package/es/tooltip/tooltip.js +3 -1
  290. package/es/tooltip/tooltip.js.map +1 -1
  291. package/es/util/event.js +1 -1
  292. package/es/util/event.js.map +1 -1
  293. package/es/util/graphic-creator.js +1 -1
  294. package/es/util/graphic-creator.js.map +1 -1
  295. package/es/util/text.js +1 -1
  296. package/es/util/text.js.map +1 -1
  297. package/es/weather/register.js +3 -1
  298. package/es/weather/register.js.map +1 -1
  299. package/es/weather/weather-box.js +3 -1
  300. package/es/weather/weather-box.js.map +1 -1
  301. package/package.json +486 -6
@@ -1,10 +1,11 @@
1
- import { AComponentAnimate } from '@visactor/vrender-animate';
1
+ import { AComponentAnimate } from '@visactor/vrender-animate/custom/custom-animate';
2
2
  export declare class AxisEnter extends AComponentAnimate<any> {
3
3
  onBind(): void;
4
4
  }
5
5
  export declare class AxisUpdate extends AComponentAnimate<any> {
6
6
  onBind(): void;
7
7
  deleteSelfAttr(key: string): void;
8
+ deleteSelfAttrs(keys: string[]): void;
8
9
  protected tryPreventConflict(): void;
9
10
  }
10
11
  export declare function registerAxisAnimate(): void;
@@ -1,4 +1,8 @@
1
- import { AComponentAnimate, AnimateExecutor, createComponentAnimator } from "@visactor/vrender-animate";
1
+ import { createComponentAnimator } from "@visactor/vrender-animate/component";
2
+
3
+ import { AComponentAnimate } from "@visactor/vrender-animate/custom/custom-animate";
4
+
5
+ import { AnimateExecutor } from "@visactor/vrender-animate/executor/animate-executor";
2
6
 
3
7
  import { commitUpdateAnimationTarget } from "./static-truth";
4
8
 
@@ -54,7 +58,10 @@ export class AxisUpdate extends AComponentAnimate {
54
58
  }), this.completeBind(animator);
55
59
  }
56
60
  deleteSelfAttr(key) {
57
- super.deleteSelfAttr(key), this._animator.deleteSelfAttr(key);
61
+ this.deleteSelfAttrs([ key ]);
62
+ }
63
+ deleteSelfAttrs(keys) {
64
+ super.deleteSelfAttrs(keys), this._animator.deleteSelfAttrs(keys);
58
65
  }
59
66
  tryPreventConflict() {}
60
67
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/animation/axis-animate.ts"],"names":[],"mappings":"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","file":"axis-animate.js","sourcesContent":["import { AComponentAnimate, AnimateExecutor, createComponentAnimator } from '@visactor/vrender-animate';\nimport { commitUpdateAnimationTarget } from './static-truth';\n\n/**\n * AxisEnter class handles the enter animation for Axis components\n */\nexport class AxisEnter extends AComponentAnimate<any> {\n onBind(): void {\n const animator = createComponentAnimator(this.target);\n this._animator = animator;\n const duration = this.duration;\n const easing = this.easing;\n const { config, lastScale, getTickCoord } = this.params;\n\n let ratio = 1;\n const currData = this.target.data;\n if (lastScale && getTickCoord && currData) {\n ratio = 0.7;\n\n const oldValue = lastScale.scale(currData.rawValue);\n const point = getTickCoord(oldValue);\n const newX = this.target.attribute.x;\n const newY = this.target.attribute.y;\n\n commitUpdateAnimationTarget(this.target, { x: newX, y: newY }, { x: point.x, y: point.y });\n animator.animate(this.target, {\n type: 'to',\n to: { x: newX, y: newY },\n duration,\n easing\n });\n }\n\n // if (updateEls && updateEls.length > 1) {\n // ratio = 0.5;\n // const oldData1 = updateEls[0].oldEl.data;\n // const { rawValue: oldRawValue1, value: oldValue1 } = oldData1;\n // const oldData2 = updateEls[1].oldEl.data;\n // const { rawValue: oldRawValue2, value: oldValue2 } = oldData2;\n // const data = this.target.data;\n // const { rawValue: newRawValue } = data;\n // // rawValue 是原始值,value是映射出来的值,假设是线性映射,计算一下newRawValue在old阶段的value是什么值\n // const oldValue =\n // oldValue1 + ((oldValue2 - oldValue1) * (newRawValue - oldRawValue1)) / (oldRawValue2 - oldRawValue1);\n // // 将 x 和 y 做映射\n // const oldX1 = updateEls[0].oldEl.attribute.x;\n // const oldY1 = updateEls[0].oldEl.attribute.y;\n // const oldX2 = updateEls[1].oldEl.attribute.x;\n // const oldY2 = updateEls[1].oldEl.attribute.y;\n // const oldX = oldX1 + ((oldX2 - oldX1) * (oldValue - oldValue1)) / (oldValue2 - oldValue1);\n // const oldY = oldY1 + ((oldY2 - oldY1) * (oldValue - oldValue1)) / (oldValue2 - oldValue1);\n // const newX = this.target.attribute.x;\n // const newY = this.target.attribute.y;\n\n // this.target.setAttributes({ x: oldX, y: oldY });\n // animator.animate(this.target, {\n // type: 'to',\n // to: { x: newX, y: newY },\n // duration,\n // easing\n // });\n // }\n\n animator.animate(this.target, {\n type: config.type ?? 'fadeIn',\n to: config.to,\n duration: duration * ratio,\n easing\n });\n this.completeBind(animator);\n }\n}\n\n/**\n * AxisUpdate class handles the update animation for Axis components\n */\nexport class AxisUpdate extends AComponentAnimate<any> {\n onBind(): void {\n const animator = createComponentAnimator(this.target);\n this._animator = animator;\n const duration = this.duration;\n const easing = this.easing;\n const { diffAttrs } = this.params;\n // this.target.applyAnimationState(\n // ['update'],\n // [\n // {\n // name: 'update',\n // animation: {\n // type: 'to',\n // to: { ...this.props },\n // duration,\n // easing,\n // customParameters: {\n // diffAttrs: { ...this.props }\n // }\n // }\n // }\n // ]\n // );\n // console.log('this.props', this.props, { ...this.target.attribute });\n commitUpdateAnimationTarget(this.target, { ...diffAttrs });\n animator.animate(this.target, {\n type: 'to',\n to: { ...diffAttrs },\n duration,\n easing,\n customParameters: {\n diffAttrs: { ...diffAttrs }\n }\n });\n this.completeBind(animator);\n }\n\n // 轴动画本身没有逻辑,具体通过animator中执行,所以当需要屏蔽自身属性时,需要通过animator中执行\n deleteSelfAttr(key: string): void {\n super.deleteSelfAttr(key);\n this._animator.deleteSelfAttr(key);\n }\n\n // 轴动画本身没有逻辑,具体通过animator中执行,所以本身不需要屏蔽冲突\n protected tryPreventConflict(): void {\n return;\n }\n}\n\nexport function registerAxisAnimate() {\n // Label update animation\n AnimateExecutor.registerBuiltInAnimate('axisEnter', AxisEnter);\n AnimateExecutor.registerBuiltInAnimate('axisUpdate', AxisUpdate);\n}\n"]}
1
+ {"version":3,"sources":["../src/animation/axis-animate.ts"],"names":[],"mappings":"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","file":"axis-animate.js","sourcesContent":["import { createComponentAnimator } from '@visactor/vrender-animate/component';\nimport { AComponentAnimate } from '@visactor/vrender-animate/custom/custom-animate';\nimport { AnimateExecutor } from '@visactor/vrender-animate/executor/animate-executor';\nimport { commitUpdateAnimationTarget } from './static-truth';\n\n/**\n * AxisEnter class handles the enter animation for Axis components\n */\nexport class AxisEnter extends AComponentAnimate<any> {\n onBind(): void {\n const animator = createComponentAnimator(this.target);\n this._animator = animator;\n const duration = this.duration;\n const easing = this.easing;\n const { config, lastScale, getTickCoord } = this.params;\n\n let ratio = 1;\n const currData = this.target.data;\n if (lastScale && getTickCoord && currData) {\n ratio = 0.7;\n\n const oldValue = lastScale.scale(currData.rawValue);\n const point = getTickCoord(oldValue);\n const newX = this.target.attribute.x;\n const newY = this.target.attribute.y;\n\n commitUpdateAnimationTarget(this.target, { x: newX, y: newY }, { x: point.x, y: point.y });\n animator.animate(this.target, {\n type: 'to',\n to: { x: newX, y: newY },\n duration,\n easing\n });\n }\n\n // if (updateEls && updateEls.length > 1) {\n // ratio = 0.5;\n // const oldData1 = updateEls[0].oldEl.data;\n // const { rawValue: oldRawValue1, value: oldValue1 } = oldData1;\n // const oldData2 = updateEls[1].oldEl.data;\n // const { rawValue: oldRawValue2, value: oldValue2 } = oldData2;\n // const data = this.target.data;\n // const { rawValue: newRawValue } = data;\n // // rawValue 是原始值,value是映射出来的值,假设是线性映射,计算一下newRawValue在old阶段的value是什么值\n // const oldValue =\n // oldValue1 + ((oldValue2 - oldValue1) * (newRawValue - oldRawValue1)) / (oldRawValue2 - oldRawValue1);\n // // 将 x 和 y 做映射\n // const oldX1 = updateEls[0].oldEl.attribute.x;\n // const oldY1 = updateEls[0].oldEl.attribute.y;\n // const oldX2 = updateEls[1].oldEl.attribute.x;\n // const oldY2 = updateEls[1].oldEl.attribute.y;\n // const oldX = oldX1 + ((oldX2 - oldX1) * (oldValue - oldValue1)) / (oldValue2 - oldValue1);\n // const oldY = oldY1 + ((oldY2 - oldY1) * (oldValue - oldValue1)) / (oldValue2 - oldValue1);\n // const newX = this.target.attribute.x;\n // const newY = this.target.attribute.y;\n\n // this.target.setAttributes({ x: oldX, y: oldY });\n // animator.animate(this.target, {\n // type: 'to',\n // to: { x: newX, y: newY },\n // duration,\n // easing\n // });\n // }\n\n animator.animate(this.target, {\n type: config.type ?? 'fadeIn',\n to: config.to,\n duration: duration * ratio,\n easing\n });\n this.completeBind(animator);\n }\n}\n\n/**\n * AxisUpdate class handles the update animation for Axis components\n */\nexport class AxisUpdate extends AComponentAnimate<any> {\n onBind(): void {\n const animator = createComponentAnimator(this.target);\n this._animator = animator;\n const duration = this.duration;\n const easing = this.easing;\n const { diffAttrs } = this.params;\n // this.target.applyAnimationState(\n // ['update'],\n // [\n // {\n // name: 'update',\n // animation: {\n // type: 'to',\n // to: { ...this.props },\n // duration,\n // easing,\n // customParameters: {\n // diffAttrs: { ...this.props }\n // }\n // }\n // }\n // ]\n // );\n // console.log('this.props', this.props, { ...this.target.attribute });\n commitUpdateAnimationTarget(this.target, { ...diffAttrs });\n animator.animate(this.target, {\n type: 'to',\n to: { ...diffAttrs },\n duration,\n easing,\n customParameters: {\n diffAttrs: { ...diffAttrs }\n }\n });\n this.completeBind(animator);\n }\n\n // 轴动画本身没有逻辑,具体通过animator中执行,所以当需要屏蔽自身属性时,需要通过animator中执行\n deleteSelfAttr(key: string): void {\n this.deleteSelfAttrs([key]);\n }\n\n deleteSelfAttrs(keys: string[]): void {\n super.deleteSelfAttrs(keys);\n this._animator.deleteSelfAttrs(keys);\n }\n\n // 轴动画本身没有逻辑,具体通过animator中执行,所以本身不需要屏蔽冲突\n protected tryPreventConflict(): void {\n return;\n }\n}\n\nexport function registerAxisAnimate() {\n // Label update animation\n AnimateExecutor.registerBuiltInAnimate('axisEnter', AxisEnter);\n AnimateExecutor.registerBuiltInAnimate('axisUpdate', AxisUpdate);\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { IAnimate, IGraphic } from '@visactor/vrender-core';
2
+ export type ExitReleaseCallbackState = {
3
+ finalized: boolean;
4
+ removeFromParent: boolean;
5
+ onComplete: (() => void)[];
6
+ };
7
+ export type AnimateExitReleaseState = ExitReleaseCallbackState & {
8
+ pendingAnimates: Set<IAnimate>;
9
+ };
10
+ export declare function collectTrackedAnimates(graphic: IGraphic, animates?: IAnimate[], visited?: Set<IAnimate>): IAnimate[];
11
+ export declare function appendExitReleaseCallback(state: ExitReleaseCallbackState | undefined, callback?: () => void): void;
12
+ export declare function runExitReleaseCallbacks(callbacks: (() => void)[]): void;
13
+ export declare function bindExitReleaseAnimates<T extends AnimateExitReleaseState>(exitAnimates: IAnimate[], getState: () => T | undefined, finalize: () => void): void;
@@ -0,0 +1,31 @@
1
+ export function collectTrackedAnimates(graphic, animates = [], visited = new Set) {
2
+ var _a, _b, _c, _d, _e;
3
+ const trackedAnimates = null !== (_c = null === (_b = (_a = graphic).getTrackedAnimates) || void 0 === _b ? void 0 : _b.call(_a)) && void 0 !== _c ? _c : graphic.animates;
4
+ return null == trackedAnimates || trackedAnimates.forEach((animate => {
5
+ animate && !visited.has(animate) && (visited.add(animate), animates.push(animate));
6
+ })), null === (_e = (_d = graphic).forEachChildren) || void 0 === _e || _e.call(_d, (child => {
7
+ collectTrackedAnimates(child, animates, visited);
8
+ })), animates;
9
+ }
10
+
11
+ export function appendExitReleaseCallback(state, callback) {
12
+ callback && (null == state || state.onComplete.push(callback));
13
+ }
14
+
15
+ export function runExitReleaseCallbacks(callbacks) {
16
+ callbacks.forEach((callback => {
17
+ callback();
18
+ }));
19
+ }
20
+
21
+ export function bindExitReleaseAnimates(exitAnimates, getState, finalize) {
22
+ const finish = animate => {
23
+ const state = getState();
24
+ state && !state.finalized && state.pendingAnimates.has(animate) && (state.pendingAnimates.delete(animate),
25
+ state.pendingAnimates.size || finalize());
26
+ };
27
+ exitAnimates.forEach((animate => {
28
+ animate.onEnd((() => finish(animate))), animate.onRemove((() => finish(animate)));
29
+ }));
30
+ }
31
+ //# sourceMappingURL=exit-release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/animation/exit-release.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,sBAAsB,CACpC,OAAiB,EACjB,WAAuB,EAAE,EACzB,UAAyB,IAAI,GAAG,EAAE;;IAElC,MAAM,eAAe,GAAG,MAAA,MAAA,MAAC,OAAe,EAAC,kBAAkB,kDAAI,mCAAK,OAAe,CAAC,QAAQ,CAAC;IAE7F,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,CAAC,CAAC,OAAiB,EAAE,EAAE;QAC7C,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;IAEH,MAAA,MAAC,OAAkB,EAAC,eAAe,mDAAG,CAAC,KAAe,EAAE,EAAE;QACxD,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA2C,EAAE,QAAqB;IAC1G,IAAI,QAAQ,EAAE;QACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAyB;IAC/D,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,YAAwB,EACxB,QAA6B,EAC7B,QAAoB;IAEpB,MAAM,MAAM,GAAG,CAAC,OAAiB,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACpE,OAAO;SACR;QAED,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE;YAC/B,QAAQ,EAAE,CAAC;SACZ;IACH,CAAC,CAAC;IAEF,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC7B,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC","file":"exit-release.js","sourcesContent":["import type { IAnimate, IGraphic, IGroup } from '@visactor/vrender-core';\n\nexport type ExitReleaseCallbackState = {\n finalized: boolean;\n removeFromParent: boolean;\n onComplete: (() => void)[];\n};\n\nexport type AnimateExitReleaseState = ExitReleaseCallbackState & {\n pendingAnimates: Set<IAnimate>;\n};\n\nexport function collectTrackedAnimates(\n graphic: IGraphic,\n animates: IAnimate[] = [],\n visited: Set<IAnimate> = new Set()\n): IAnimate[] {\n const trackedAnimates = (graphic as any).getTrackedAnimates?.() ?? (graphic as any).animates;\n\n trackedAnimates?.forEach((animate: IAnimate) => {\n if (animate && !visited.has(animate)) {\n visited.add(animate);\n animates.push(animate);\n }\n });\n\n (graphic as IGroup).forEachChildren?.((child: IGraphic) => {\n collectTrackedAnimates(child, animates, visited);\n });\n\n return animates;\n}\n\nexport function appendExitReleaseCallback(state: ExitReleaseCallbackState | undefined, callback?: () => void) {\n if (callback) {\n state?.onComplete.push(callback);\n }\n}\n\nexport function runExitReleaseCallbacks(callbacks: (() => void)[]) {\n callbacks.forEach(callback => {\n callback();\n });\n}\n\nexport function bindExitReleaseAnimates<T extends AnimateExitReleaseState>(\n exitAnimates: IAnimate[],\n getState: () => T | undefined,\n finalize: () => void\n) {\n const finish = (animate: IAnimate) => {\n const state = getState();\n if (!state || state.finalized || !state.pendingAnimates.has(animate)) {\n return;\n }\n\n state.pendingAnimates.delete(animate);\n if (!state.pendingAnimates.size) {\n finalize();\n }\n };\n\n exitAnimates.forEach(animate => {\n animate.onEnd(() => finish(animate));\n animate.onRemove(() => finish(animate));\n });\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { AComponentAnimate } from '@visactor/vrender-animate';
1
+ import { AComponentAnimate } from '@visactor/vrender-animate/custom/custom-animate';
2
2
  export declare class LabelUpdate extends AComponentAnimate<any> {
3
3
  onBind(): void;
4
4
  protected tryPreventConflict(): void;
@@ -1,14 +1,10 @@
1
- var __rest = this && this.__rest || function(s, e) {
2
- var t = {};
3
- for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0 && (t[p] = s[p]);
4
- if (null != s && "function" == typeof Object.getOwnPropertySymbols) {
5
- var i = 0;
6
- for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]) && (t[p[i]] = s[p[i]]);
7
- }
8
- return t;
9
- };
1
+ import { createComponentAnimator } from "@visactor/vrender-animate/component";
2
+
3
+ import { AComponentAnimate } from "@visactor/vrender-animate/custom/custom-animate";
4
+
5
+ import { IncreaseCount } from "@visactor/vrender-animate/custom/number";
10
6
 
11
- import { AComponentAnimate, AnimateExecutor, createComponentAnimator, IncreaseCount } from "@visactor/vrender-animate";
7
+ import { AnimateExecutor } from "@visactor/vrender-animate/executor/animate-executor";
12
8
 
13
9
  export class LabelUpdate extends AComponentAnimate {
14
10
  onBind() {
@@ -16,8 +12,8 @@ export class LabelUpdate extends AComponentAnimate {
16
12
  this._animator = animator;
17
13
  const duration = this.duration, easing = this.easing, {prevText: prevText, curText: curText, prevLabelLine: prevLabelLine, curLabelLine: curLabelLine, increaseEffect: increaseEffect = !0} = this.params, diff = {};
18
14
  for (const key in curText.attribute) prevText.attribute[key] !== curText.attribute[key] && (diff[key] = curText.attribute[key]);
19
- const {text: text} = diff, rest = __rest(diff, [ "text" ]);
20
- animator.animate(prevText, {
15
+ const rest = Object.assign({}, diff);
16
+ delete rest.text, animator.animate(prevText, {
21
17
  type: "to",
22
18
  to: rest,
23
19
  duration: duration,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/animation/label-animate.ts"],"names":[],"mappings":"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","file":"label-animate.js","sourcesContent":["import { AComponentAnimate, AnimateExecutor, createComponentAnimator, IncreaseCount } from '@visactor/vrender-animate';\n\n/**\n * LabelUpdate class handles the update animation for Label components\n */\nexport class LabelUpdate extends AComponentAnimate<any> {\n onBind(): void {\n const animator = createComponentAnimator(this.target);\n this._animator = animator;\n const duration = this.duration;\n const easing = this.easing;\n\n const { prevText, curText, prevLabelLine, curLabelLine, increaseEffect = true } = this.params;\n const diff: Record<string, any> = {};\n\n for (const key in curText.attribute) {\n if (prevText.attribute[key] !== curText.attribute[key]) {\n diff[key] = curText.attribute[key];\n }\n }\n\n const { text, ...rest } = diff;\n\n animator.animate(prevText, {\n type: 'to',\n to: rest,\n duration,\n easing\n });\n\n if (increaseEffect !== false) {\n animator.animate(prevText, {\n type: 'increaseCount',\n to: {\n text: curText.attribute.text\n },\n duration,\n easing\n });\n }\n\n if (prevLabelLine) {\n animator.animate(prevLabelLine, {\n type: 'to',\n to: curLabelLine.attribute,\n duration,\n easing\n });\n }\n\n this.completeBind(animator);\n }\n\n // 标签动画本身没有逻辑,具体通过animator中执行,所以本身不需要屏蔽冲突\n protected tryPreventConflict(): void {\n return;\n }\n}\n\nexport class LabelEnter extends AComponentAnimate<any> {\n onBind(): void {\n const animator = createComponentAnimator(this.target);\n this._animator = animator;\n const duration = this.duration;\n const easing = this.easing;\n\n const { relatedGraphic, relatedGraphics, config } = this.params;\n const { mode, type = 'fadeIn' } = config;\n\n const target = this.target;\n\n let startTime = 0;\n\n if (mode === 'after') {\n relatedGraphic.animates &&\n relatedGraphic.animates.forEach((animate: any) => {\n startTime = Math.max(startTime, animate.getStartTime() + animate.getTotalDuration());\n });\n } else if (mode === 'after-all') {\n relatedGraphics &&\n relatedGraphics.forEach((graphic: any) => {\n graphic.animates &&\n graphic.animates.forEach((animate: any) => {\n startTime = Math.max(startTime, animate.getStartTime() + animate.getTotalDuration());\n });\n });\n } else {\n // 'same-time'\n relatedGraphic.animates &&\n relatedGraphic.animates.forEach((animate: any) => {\n startTime = Math.max(startTime, animate.getStartTime());\n });\n }\n\n animator.animate(target, {\n ...config,\n duration,\n easing,\n startTime,\n type\n });\n\n this.completeBind(animator);\n }\n\n // 标签动画本身没有逻辑,具体通过animator中执行,所以本身不需要屏蔽冲突\n protected tryPreventConflict(): void {\n return;\n }\n}\n\nexport function registerLabelAnimate() {\n AnimateExecutor.registerBuiltInAnimate('increaseCount', IncreaseCount);\n // Label update animation\n AnimateExecutor.registerBuiltInAnimate('labelUpdate', LabelUpdate);\n AnimateExecutor.registerBuiltInAnimate('labelEnter', LabelEnter);\n}\n"]}
1
+ {"version":3,"sources":["../src/animation/label-animate.ts"],"names":[],"mappings":"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","file":"label-animate.js","sourcesContent":["import { createComponentAnimator } from '@visactor/vrender-animate/component';\nimport { AComponentAnimate } from '@visactor/vrender-animate/custom/custom-animate';\nimport { IncreaseCount } from '@visactor/vrender-animate/custom/number';\nimport { AnimateExecutor } from '@visactor/vrender-animate/executor/animate-executor';\n\n/**\n * LabelUpdate class handles the update animation for Label components\n */\nexport class LabelUpdate extends AComponentAnimate<any> {\n onBind(): void {\n const animator = createComponentAnimator(this.target);\n this._animator = animator;\n const duration = this.duration;\n const easing = this.easing;\n\n const { prevText, curText, prevLabelLine, curLabelLine, increaseEffect = true } = this.params;\n const diff: Record<string, any> = {};\n\n for (const key in curText.attribute) {\n if (prevText.attribute[key] !== curText.attribute[key]) {\n diff[key] = curText.attribute[key];\n }\n }\n\n const rest = { ...diff };\n delete rest.text;\n\n animator.animate(prevText, {\n type: 'to',\n to: rest,\n duration,\n easing\n });\n\n if (increaseEffect !== false) {\n animator.animate(prevText, {\n type: 'increaseCount',\n to: {\n text: curText.attribute.text\n },\n duration,\n easing\n });\n }\n\n if (prevLabelLine) {\n animator.animate(prevLabelLine, {\n type: 'to',\n to: curLabelLine.attribute,\n duration,\n easing\n });\n }\n\n this.completeBind(animator);\n }\n\n // 标签动画本身没有逻辑,具体通过animator中执行,所以本身不需要屏蔽冲突\n protected tryPreventConflict(): void {\n return;\n }\n}\n\nexport class LabelEnter extends AComponentAnimate<any> {\n onBind(): void {\n const animator = createComponentAnimator(this.target);\n this._animator = animator;\n const duration = this.duration;\n const easing = this.easing;\n\n const { relatedGraphic, relatedGraphics, config } = this.params;\n const { mode, type = 'fadeIn' } = config;\n\n const target = this.target;\n\n let startTime = 0;\n\n if (mode === 'after') {\n relatedGraphic.animates &&\n relatedGraphic.animates.forEach((animate: any) => {\n startTime = Math.max(startTime, animate.getStartTime() + animate.getTotalDuration());\n });\n } else if (mode === 'after-all') {\n relatedGraphics &&\n relatedGraphics.forEach((graphic: any) => {\n graphic.animates &&\n graphic.animates.forEach((animate: any) => {\n startTime = Math.max(startTime, animate.getStartTime() + animate.getTotalDuration());\n });\n });\n } else {\n // 'same-time'\n relatedGraphic.animates &&\n relatedGraphic.animates.forEach((animate: any) => {\n startTime = Math.max(startTime, animate.getStartTime());\n });\n }\n\n animator.animate(target, {\n ...config,\n duration,\n easing,\n startTime,\n type\n });\n\n this.completeBind(animator);\n }\n\n // 标签动画本身没有逻辑,具体通过animator中执行,所以本身不需要屏蔽冲突\n protected tryPreventConflict(): void {\n return;\n }\n}\n\nexport function registerLabelAnimate() {\n AnimateExecutor.registerBuiltInAnimate('increaseCount', IncreaseCount);\n // Label update animation\n AnimateExecutor.registerBuiltInAnimate('labelUpdate', LabelUpdate);\n AnimateExecutor.registerBuiltInAnimate('labelEnter', LabelEnter);\n}\n"]}
@@ -6,11 +6,7 @@ export function commitUpdateAnimationTarget(graphic, targetAttrs, startAttrs) {
6
6
  var _a, _b, _c, _d;
7
7
  if (!graphic || !targetAttrs) return;
8
8
  const committedTargetAttrs = cloneDeep(targetAttrs), transientStartAttrs = cloneDeep(null != startAttrs ? startAttrs : graphic.attribute);
9
- graphic.setAttributes(committedTargetAttrs);
10
- const baseAttributes = graphic.baseAttributes;
11
- baseAttributes && "object" == typeof baseAttributes && Object.keys(committedTargetAttrs).forEach((key => {
12
- baseAttributes[key] = cloneDeep(committedTargetAttrs[key]);
13
- })), null === (_b = (_a = graphic).setFinalAttributes) || void 0 === _b || _b.call(_a, committedTargetAttrs),
9
+ graphic.setAttributes(committedTargetAttrs), null === (_b = (_a = graphic).setFinalAttributes) || void 0 === _b || _b.call(_a, committedTargetAttrs),
14
10
  null === (_d = (_c = graphic).setAttributesAndPreventAnimate) || void 0 === _d || _d.call(_c, transientStartAttrs, !1, {
15
11
  type: AttributeUpdateType.ANIMATE_BIND
16
12
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/animation/static-truth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAiB,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,2BAA2B,CACzC,OAAkB,EAClB,WAAiC,EACjC,UAAgC;;IAEhC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE;QAC5B,OAAO;KACR;IAED,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,mBAAmB,GAAG,SAAS,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvE,OAAO,CAAC,aAAa,CAAC,oBAA2B,CAAC,CAAC;IACnD,MAAM,cAAc,GAAI,OAAe,CAAC,cAAc,CAAC;IACvD,IAAI,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;QACxD,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9C,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;KACJ;IACD,MAAA,MAAC,OAAe,EAAC,kBAAkB,mDAAG,oBAAoB,CAAC,CAAC;IAC5D,MAAA,MAAC,OAAe,EAAC,8BAA8B,mDAAG,mBAA0B,EAAE,KAAK,EAAE;QACnF,IAAI,EAAE,mBAAmB,CAAC,YAAY;KACvC,CAAC,CAAC;AACL,CAAC","file":"static-truth.js","sourcesContent":["import { AttributeUpdateType, type IGraphic } from '@visactor/vrender-core';\nimport { cloneDeep } from '@visactor/vutils';\n\nexport function commitUpdateAnimationTarget(\n graphic?: IGraphic,\n targetAttrs?: Record<string, any>,\n startAttrs?: Record<string, any>\n) {\n if (!graphic || !targetAttrs) {\n return;\n }\n\n const committedTargetAttrs = cloneDeep(targetAttrs);\n const transientStartAttrs = cloneDeep(startAttrs ?? graphic.attribute);\n\n graphic.setAttributes(committedTargetAttrs as any);\n const baseAttributes = (graphic as any).baseAttributes;\n if (baseAttributes && typeof baseAttributes === 'object') {\n Object.keys(committedTargetAttrs).forEach(key => {\n baseAttributes[key] = cloneDeep(committedTargetAttrs[key]);\n });\n }\n (graphic as any).setFinalAttributes?.(committedTargetAttrs);\n (graphic as any).setAttributesAndPreventAnimate?.(transientStartAttrs as any, false, {\n type: AttributeUpdateType.ANIMATE_BIND\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/animation/static-truth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAiB,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,2BAA2B,CACzC,OAAkB,EAClB,WAAiC,EACjC,UAAgC;;IAEhC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE;QAC5B,OAAO;KACR;IAED,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,mBAAmB,GAAG,SAAS,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvE,OAAO,CAAC,aAAa,CAAC,oBAA2B,CAAC,CAAC;IACnD,MAAA,MAAC,OAAe,EAAC,kBAAkB,mDAAG,oBAAoB,CAAC,CAAC;IAC5D,MAAA,MAAC,OAAe,EAAC,8BAA8B,mDAAG,mBAA0B,EAAE,KAAK,EAAE;QACnF,IAAI,EAAE,mBAAmB,CAAC,YAAY;KACvC,CAAC,CAAC;AACL,CAAC","file":"static-truth.js","sourcesContent":["import { AttributeUpdateType, type IGraphic } from '@visactor/vrender-core';\nimport { cloneDeep } from '@visactor/vutils';\n\nexport function commitUpdateAnimationTarget(\n graphic?: IGraphic,\n targetAttrs?: Record<string, any>,\n startAttrs?: Record<string, any>\n) {\n if (!graphic || !targetAttrs) {\n return;\n }\n\n const committedTargetAttrs = cloneDeep(targetAttrs);\n const transientStartAttrs = cloneDeep(startAttrs ?? graphic.attribute);\n\n graphic.setAttributes(committedTargetAttrs as any);\n (graphic as any).setFinalAttributes?.(committedTargetAttrs);\n (graphic as any).setAttributesAndPreventAnimate?.(transientStartAttrs as any, false, {\n type: AttributeUpdateType.ANIMATE_BIND\n });\n}\n"]}
@@ -1,5 +1,6 @@
1
- import { AnimateMode, type IGroup } from '@visactor/vrender-core';
2
- import { ACustomAnimate } from '@visactor/vrender-animate';
1
+ import type { IGroup } from '@visactor/vrender-core';
2
+ import { AnimateMode } from '@visactor/vrender-core/event/constant';
3
+ import { ACustomAnimate } from '@visactor/vrender-animate/custom/custom-animate';
3
4
  export declare class GroupTransition extends ACustomAnimate<any> {
4
5
  target: IGroup;
5
6
  private _newElementAttrMap;
@@ -1,6 +1,6 @@
1
- import { AnimateMode } from "@visactor/vrender-core";
1
+ import { AnimateMode } from "@visactor/vrender-core/event/constant";
2
2
 
3
- import { ACustomAnimate } from "@visactor/vrender-animate";
3
+ import { ACustomAnimate } from "@visactor/vrender-animate/custom/custom-animate";
4
4
 
5
5
  import { cloneDeep, interpolateString, isEqual, isValidNumber } from "@visactor/vutils";
6
6
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/axis/animate/group-transition.ts"],"names":[],"mappings":"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","file":"group-transition.js","sourcesContent":["import { AnimateMode, type EasingType, type IGraphic, type IGroup } from '@visactor/vrender-core';\nimport { ACustomAnimate } from '@visactor/vrender-animate';\nimport { cloneDeep, interpolateString, isEqual, isValidNumber, type Dict } from '@visactor/vutils';\nimport { traverseGroup } from '../../util';\nimport { commitUpdateAnimationTarget } from '../../animation/static-truth';\n\nexport class GroupTransition extends ACustomAnimate<any> {\n declare target: IGroup;\n\n private _newElementAttrMap: Dict<any>;\n private _started: boolean;\n mode = AnimateMode.NORMAL; // 组件的群组动画不需要设置走 AnimateMode.SET_ATTR_IMMEDIATELY\n\n onBind(): void {\n this._started = false;\n // @ts-ignore\n const currentInnerView = this.target.getInnerView();\n // @ts-ignore\n const prevInnerView = this.target.getPrevInnerView();\n if (!prevInnerView) {\n return;\n }\n\n this._newElementAttrMap = {};\n\n // 遍历新的场景树,将新节点属性更新为旧节点\n // TODO: 目前只处理更新场景\n traverseGroup(currentInnerView, (el: IGraphic) => {\n if ((el as IGraphic).type !== 'group' && el.id) {\n const oldEl = prevInnerView[el.id];\n if (oldEl) {\n if (!isEqual((el as IGraphic).attribute, (oldEl as IGraphic).attribute)) {\n // 更新\n const newProps = cloneDeep((el as IGraphic).attribute);\n this._newElementAttrMap[el.id] = {\n state: 'update',\n node: el,\n attrs: {\n ...newProps,\n opacity: newProps.opacity ?? 1,\n fillOpacity: newProps.fillOpacity ?? 1,\n strokeOpacity: newProps.strokeOpacity ?? 1\n }\n };\n\n commitUpdateAnimationTarget(\n el as IGraphic,\n this._newElementAttrMap[el.id].attrs,\n cloneDeep((oldEl as IGraphic).attribute)\n );\n }\n } else {\n // 新入场元素,进行 fadeIn 动画\n const finalOpacityAttrs = {\n opacity: el.attribute.opacity ?? 1,\n fillOpacity: el.attribute.fillOpacity ?? 1,\n strokeOpacity: el.attribute.strokeOpacity ?? 1\n };\n this._newElementAttrMap[el.id] = {\n state: 'enter',\n node: el,\n attrs: finalOpacityAttrs\n };\n commitUpdateAnimationTarget(el as IGraphic, finalOpacityAttrs, {\n opacity: 0,\n fillOpacity: 0,\n strokeOpacity: 0\n });\n }\n }\n });\n }\n\n onStart(): void {\n if (this._started) {\n return;\n }\n this._started = true;\n\n let duration = this.duration;\n let easing = this.easing;\n\n // 新的场景树\n this._newElementAttrMap &&\n Object.keys(this._newElementAttrMap).forEach(id => {\n const { node, attrs, state } = this._newElementAttrMap[id];\n if (state === 'enter') {\n const { enter = {} } = this.params ?? {};\n duration = isValidNumber(enter.duration) ? enter.duration : duration;\n easing = enter.easing ? enter.easing : easing;\n }\n if ((node as IGraphic).type === 'path') {\n (node as IGraphic)\n .animate({\n interpolate(key: string, ratio: number, from: any, to: any, nextAttributes: any) {\n if (key === 'path') {\n nextAttributes.path = interpolateString(from, to)(ratio);\n return true;\n }\n\n return false;\n }\n })\n // .wait(delay)\n .to(attrs, duration, easing as EasingType);\n } else {\n (node as IGraphic)\n .animate()\n // .wait(delay)\n .to(attrs, duration, easing as EasingType);\n }\n });\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n // do nothing\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/axis/animate/group-transition.ts"],"names":[],"mappings":"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","file":"group-transition.js","sourcesContent":["import type { EasingType, IGraphic, IGroup } from '@visactor/vrender-core';\nimport { AnimateMode } from '@visactor/vrender-core/event/constant';\nimport { ACustomAnimate } from '@visactor/vrender-animate/custom/custom-animate';\nimport { cloneDeep, interpolateString, isEqual, isValidNumber, type Dict } from '@visactor/vutils';\nimport { traverseGroup } from '../../util';\nimport { commitUpdateAnimationTarget } from '../../animation/static-truth';\n\nexport class GroupTransition extends ACustomAnimate<any> {\n declare target: IGroup;\n\n private _newElementAttrMap: Dict<any>;\n private _started: boolean;\n mode = AnimateMode.NORMAL; // 组件的群组动画不需要设置走 AnimateMode.SET_ATTR_IMMEDIATELY\n\n onBind(): void {\n this._started = false;\n // @ts-ignore\n const currentInnerView = this.target.getInnerView();\n // @ts-ignore\n const prevInnerView = this.target.getPrevInnerView();\n if (!prevInnerView) {\n return;\n }\n\n this._newElementAttrMap = {};\n\n // 遍历新的场景树,将新节点属性更新为旧节点\n // TODO: 目前只处理更新场景\n traverseGroup(currentInnerView, (el: IGraphic) => {\n if ((el as IGraphic).type !== 'group' && el.id) {\n const oldEl = prevInnerView[el.id];\n if (oldEl) {\n if (!isEqual((el as IGraphic).attribute, (oldEl as IGraphic).attribute)) {\n // 更新\n const newProps = cloneDeep((el as IGraphic).attribute);\n this._newElementAttrMap[el.id] = {\n state: 'update',\n node: el,\n attrs: {\n ...newProps,\n opacity: newProps.opacity ?? 1,\n fillOpacity: newProps.fillOpacity ?? 1,\n strokeOpacity: newProps.strokeOpacity ?? 1\n }\n };\n\n commitUpdateAnimationTarget(\n el as IGraphic,\n this._newElementAttrMap[el.id].attrs,\n cloneDeep((oldEl as IGraphic).attribute)\n );\n }\n } else {\n // 新入场元素,进行 fadeIn 动画\n const finalOpacityAttrs = {\n opacity: el.attribute.opacity ?? 1,\n fillOpacity: el.attribute.fillOpacity ?? 1,\n strokeOpacity: el.attribute.strokeOpacity ?? 1\n };\n this._newElementAttrMap[el.id] = {\n state: 'enter',\n node: el,\n attrs: finalOpacityAttrs\n };\n commitUpdateAnimationTarget(el as IGraphic, finalOpacityAttrs, {\n opacity: 0,\n fillOpacity: 0,\n strokeOpacity: 0\n });\n }\n }\n });\n }\n\n onStart(): void {\n if (this._started) {\n return;\n }\n this._started = true;\n\n let duration = this.duration;\n let easing = this.easing;\n\n // 新的场景树\n this._newElementAttrMap &&\n Object.keys(this._newElementAttrMap).forEach(id => {\n const { node, attrs, state } = this._newElementAttrMap[id];\n if (state === 'enter') {\n const { enter = {} } = this.params ?? {};\n duration = isValidNumber(enter.duration) ? enter.duration : duration;\n easing = enter.easing ? enter.easing : easing;\n }\n if ((node as IGraphic).type === 'path') {\n (node as IGraphic)\n .animate({\n interpolate(key: string, ratio: number, from: any, to: any, nextAttributes: any) {\n if (key === 'path') {\n nextAttributes.path = interpolateString(from, to)(ratio);\n return true;\n }\n\n return false;\n }\n })\n // .wait(delay)\n .to(attrs, duration, easing as EasingType);\n } else {\n (node as IGraphic)\n .animate()\n // .wait(delay)\n .to(attrs, duration, easing as EasingType);\n }\n });\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n // do nothing\n }\n}\n"]}
package/es/axis/base.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { IGroup, ITextGraphicAttribute, TextAlignType, TextBaselineType, IGraphic, IText } from '@visactor/vrender-core';
2
2
  import type { Dict } from '@visactor/vutils';
3
- import type { Point } from '../core/type';
3
+ import type { ComponentExitReleaseOptions, Point } from '../core/type';
4
4
  import type { TagAttributes } from '../tag';
5
5
  import type { AxisBaseAttributes, AxisItem, TransformedAxisItem, TickLineItem } from './type';
6
6
  import { AnimateComponent } from '../animation/animate-component';
@@ -30,6 +30,7 @@ export declare abstract class AxisBase<T extends AxisBaseAttributes> extends Ani
30
30
  protected axisContainer: IGroup;
31
31
  private _lastHover;
32
32
  private _lastSelect;
33
+ private _exitReleaseState?;
33
34
  protected _newElementAttrMap: Dict<any>;
34
35
  protected abstract renderLine(container: IGroup): void;
35
36
  abstract isInValidValue(value: number): boolean;
@@ -45,6 +46,9 @@ export declare abstract class AxisBase<T extends AxisBaseAttributes> extends Ani
45
46
  textBaseline: TextBaselineType;
46
47
  };
47
48
  getBoundsWithoutRender(attributes: Partial<T>): import("@visactor/vutils").IBounds;
49
+ private _finalizeExitRelease;
50
+ private _runExitAnimationBeforeRelease;
51
+ releaseWithExitAnimation(options?: ComponentExitReleaseOptions): boolean;
48
52
  protected render(): void;
49
53
  protected _prepare(): void;
50
54
  private _bindEvent;
@@ -63,5 +67,5 @@ export declare abstract class AxisBase<T extends AxisBaseAttributes> extends Ani
63
67
  protected getLabelPosition(point: Point, vector: [number, number], text: string | number, style: Partial<ITextGraphicAttribute>): Point;
64
68
  private _transformItems;
65
69
  protected runAnimation(): void;
66
- release(): void;
70
+ release(all?: boolean): void;
67
71
  }
package/es/axis/base.js CHANGED
@@ -1,4 +1,4 @@
1
- import { diff } from "@visactor/vrender-core";
1
+ import { diff } from "@visactor/vrender-core/common/diff";
2
2
 
3
3
  import { graphicCreator } from "../util/graphic-creator";
4
4
 
@@ -22,6 +22,8 @@ import { AnimateComponent } from "../animation/animate-component";
22
22
 
23
23
  import { commitUpdateAnimationTarget } from "../animation/static-truth";
24
24
 
25
+ import { appendExitReleaseCallback, bindExitReleaseAnimates, collectTrackedAnimates, runExitReleaseCallbacks } from "../animation/exit-release";
26
+
25
27
  import { DefaultAxisAnimation } from "./animate/config";
26
28
 
27
29
  export class AxisBase extends AnimateComponent {
@@ -52,14 +54,65 @@ export class AxisBase extends AnimateComponent {
52
54
  return this.add(offscreenGroup), this._renderInner(offscreenGroup), this.removeChild(offscreenGroup),
53
55
  this.attribute = currentAttribute, offscreenGroup.AABBBounds;
54
56
  }
57
+ _finalizeExitRelease() {
58
+ var _a, _b;
59
+ const state = this._exitReleaseState;
60
+ if (null == state ? void 0 : state.finalized) return;
61
+ state && (state.finalized = !0);
62
+ const parent = this.parent, removeFromParent = !!(null == state ? void 0 : state.removeFromParent), callbacks = null !== (_a = null == state ? void 0 : state.onComplete) && void 0 !== _a ? _a : [];
63
+ this._exitReleaseState = void 0, this._prevInnerView = null, this._innerView = null,
64
+ this.axisLabelsContainer = null, this.axisContainer = null, this.removeAllChild(!0),
65
+ super.release(!0), removeFromParent && (null === (_b = null != parent ? parent : this.parent) || void 0 === _b || _b.removeChild(this)),
66
+ runExitReleaseCallbacks(callbacks);
67
+ }
68
+ _runExitAnimationBeforeRelease(options = {}) {
69
+ var _a, _b, _c;
70
+ if (this._exitReleaseState && !this._exitReleaseState.finalized) return this._exitReleaseState.removeFromParent = this._exitReleaseState.removeFromParent || !!options.removeFromParent,
71
+ appendExitReleaseCallback(this._exitReleaseState, options.onComplete), !0;
72
+ if (!this.stage || !1 === this.attribute.animation || !1 === this.attribute.animationExit || !this._innerView) return !1;
73
+ if (this._prepare(), !(null === (_a = this._animationConfig) || void 0 === _a ? void 0 : _a.exit)) return !1;
74
+ const exitTargets = new Set;
75
+ if (traverseGroup(this._innerView, (el => {
76
+ "group" !== el.type && exitTargets.add(el);
77
+ })), !exitTargets.size) return !1;
78
+ const existingAnimates = collectTrackedAnimates(this), {delay: delay = 0, duration: duration = DefaultAxisAnimation.duration, easing: easing = DefaultAxisAnimation.easing} = this._animationConfig.exit;
79
+ exitTargets.forEach((target => {
80
+ var _a, _b, _c;
81
+ const startAttrs = {
82
+ opacity: null !== (_a = target.attribute.opacity) && void 0 !== _a ? _a : 1,
83
+ fillOpacity: null !== (_b = target.attribute.fillOpacity) && void 0 !== _b ? _b : 1,
84
+ strokeOpacity: null !== (_c = target.attribute.strokeOpacity) && void 0 !== _c ? _c : 1
85
+ }, endAttrs = {
86
+ opacity: 0,
87
+ fillOpacity: 0,
88
+ strokeOpacity: 0
89
+ };
90
+ commitUpdateAnimationTarget(target, endAttrs, startAttrs), target.animate().wait(delay).to(endAttrs, duration, easing);
91
+ }));
92
+ const exitAnimates = collectTrackedAnimates(this).filter((animate => !existingAnimates.includes(animate)));
93
+ if (!exitAnimates.length) return !1;
94
+ this.setAttribute("childrenPickable", !1), null === (_c = (_b = this._innerView).removeAllEventListeners) || void 0 === _c || _c.call(_b),
95
+ this.releaseStatus = "willRelease";
96
+ const pendingAnimates = new Set(exitAnimates);
97
+ return this._exitReleaseState = {
98
+ pendingAnimates: pendingAnimates,
99
+ finalized: !1,
100
+ removeFromParent: !!options.removeFromParent,
101
+ onComplete: options.onComplete ? [ options.onComplete ] : []
102
+ }, bindExitReleaseAnimates(exitAnimates, (() => this._exitReleaseState), (() => this._finalizeExitRelease())),
103
+ !0;
104
+ }
105
+ releaseWithExitAnimation(options = {}) {
106
+ return "released" !== this.releaseStatus && this._runExitAnimationBeforeRelease(options);
107
+ }
55
108
  render() {
56
- this._prepare(), this._prevInnerView = this._innerView && getElMap(this._innerView),
109
+ this._exitReleaseState || (this._prepare(), this._prevInnerView = this._innerView && getElMap(this._innerView),
57
110
  this.removeAllChild(!0), this._innerView = graphicCreator.group({
58
111
  x: 0,
59
112
  y: 0,
60
113
  pickable: !1
61
114
  }), this.add(this._innerView), this._renderInner(this._innerView), this._bindEvent(),
62
- this.runAnimation();
115
+ this.runAnimation());
63
116
  }
64
117
  _prepare() {
65
118
  this._prepareAnimate(DefaultAxisAnimation);
@@ -337,8 +390,10 @@ export class AxisBase extends AnimateComponent {
337
390
  }));
338
391
  }
339
392
  }
340
- release() {
341
- super.release(), this._prevInnerView = null, this._innerView = null;
393
+ release(all) {
394
+ this._exitReleaseState ? this._finalizeExitRelease() : (all && this.removeAllChild(!0),
395
+ super.release(all), all && this.removeAllChild(!0), this._prevInnerView = null,
396
+ this._innerView = null);
342
397
  }
343
398
  }
344
- //# sourceMappingURL=base.js.map
399
+ //# sourceMappingURL=base.js.map