@visactor/vgrammar-core 0.13.12 → 0.14.0-alpha.1

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 (254) hide show
  1. package/cjs/component/axis.d.ts +2 -0
  2. package/cjs/component/axis.js +15 -1
  3. package/cjs/component/axis.js.map +1 -1
  4. package/cjs/component/grid.d.ts +2 -0
  5. package/cjs/component/grid.js +15 -1
  6. package/cjs/component/grid.js.map +1 -1
  7. package/cjs/component/index.d.ts +2 -2
  8. package/cjs/component/index.js +21 -1
  9. package/cjs/component/index.js.map +1 -1
  10. package/cjs/core/factory.d.ts +8 -1
  11. package/cjs/core/factory.js +8 -1
  12. package/cjs/core/factory.js.map +1 -1
  13. package/cjs/glyph/boxplot.js +5 -5
  14. package/cjs/glyph/boxplot.js.map +1 -1
  15. package/cjs/glyph/link-path.js +2 -2
  16. package/cjs/glyph/link-path.js.map +1 -1
  17. package/cjs/glyph/ripple.js +3 -2
  18. package/cjs/glyph/ripple.js.map +1 -1
  19. package/cjs/glyph/tree-path.js +2 -2
  20. package/cjs/glyph/tree-path.js.map +1 -1
  21. package/cjs/glyph/violin.js +4 -4
  22. package/cjs/glyph/violin.js.map +1 -1
  23. package/cjs/glyph/wave.js +3 -2
  24. package/cjs/glyph/wave.js.map +1 -1
  25. package/cjs/graph/animation/animation/fade.js +4 -4
  26. package/cjs/graph/animation/animation/fade.js.map +1 -1
  27. package/cjs/graph/animation/animation/grow-cartesian.js +14 -14
  28. package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
  29. package/cjs/graph/animation/animation/grow-interval.js +9 -9
  30. package/cjs/graph/animation/animation/grow-interval.js.map +1 -1
  31. package/cjs/graph/animation/animation/grow-points.js +9 -9
  32. package/cjs/graph/animation/animation/grow-points.js.map +1 -1
  33. package/cjs/graph/animation/animation/grow-polar.js +24 -24
  34. package/cjs/graph/animation/animation/grow-polar.js.map +1 -1
  35. package/cjs/graph/animation/animation/move.js +6 -6
  36. package/cjs/graph/animation/animation/move.js.map +1 -1
  37. package/cjs/graph/animation/animation/rotate.js +5 -5
  38. package/cjs/graph/animation/animation/rotate.js.map +1 -1
  39. package/cjs/graph/animation/animation/scale.js +5 -5
  40. package/cjs/graph/animation/animation/scale.js.map +1 -1
  41. package/cjs/graph/animation/animation/update.js +2 -2
  42. package/cjs/graph/animation/animation/update.js.map +1 -1
  43. package/cjs/graph/animation/animator.js +1 -1
  44. package/cjs/graph/animation/animator.js.map +1 -1
  45. package/cjs/graph/animation/morph.d.ts +2 -12
  46. package/cjs/graph/animation/morph.js +76 -163
  47. package/cjs/graph/animation/morph.js.map +1 -1
  48. package/cjs/graph/attributes/line.js.map +1 -1
  49. package/cjs/graph/canvas-renderer.d.ts +1 -1
  50. package/cjs/graph/canvas-renderer.js +4 -4
  51. package/cjs/graph/canvas-renderer.js.map +1 -1
  52. package/cjs/graph/element.d.ts +1 -2
  53. package/cjs/graph/element.js +19 -20
  54. package/cjs/graph/element.js.map +1 -1
  55. package/cjs/graph/glyph-element.js +4 -3
  56. package/cjs/graph/glyph-element.js.map +1 -1
  57. package/cjs/graph/layout/layout.d.ts +1 -0
  58. package/cjs/graph/layout/layout.js +8 -2
  59. package/cjs/graph/layout/layout.js.map +1 -1
  60. package/cjs/graph/mark/graphic.js +14 -8
  61. package/cjs/graph/mark/graphic.js.map +1 -1
  62. package/cjs/graph/util/point.js +10 -26
  63. package/cjs/graph/util/point.js.map +1 -1
  64. package/cjs/graph/view-diff.d.ts +8 -0
  65. package/cjs/graph/view-diff.js +93 -0
  66. package/cjs/graph/view-diff.js.map +1 -0
  67. package/cjs/index.d.ts +8 -1
  68. package/cjs/index.js +66 -2
  69. package/cjs/index.js.map +1 -1
  70. package/cjs/interactions/brush-base.js +1 -2
  71. package/cjs/interactions/brush-filter.js +2 -1
  72. package/cjs/interactions/fish-eye.js +1 -2
  73. package/cjs/interactions/index.js +2 -1
  74. package/cjs/interactions/tooltip.js +1 -1
  75. package/cjs/parse/event.d.ts +0 -2
  76. package/cjs/parse/event.js +4 -10
  77. package/cjs/parse/event.js.map +1 -1
  78. package/cjs/parse/util.js.map +1 -1
  79. package/cjs/types/animate.d.ts +0 -1
  80. package/cjs/types/animate.js.map +1 -1
  81. package/cjs/types/element.d.ts +1 -5
  82. package/cjs/types/element.js.map +1 -1
  83. package/cjs/types/morph.d.ts +1 -2
  84. package/cjs/types/morph.js.map +1 -1
  85. package/cjs/types/renderer.d.ts +6 -1
  86. package/cjs/types/renderer.js.map +1 -1
  87. package/cjs/view/View.d.ts +3 -6
  88. package/cjs/view/View.js +52 -105
  89. package/cjs/view/View.js.map +1 -1
  90. package/cjs/view/animate.js +2 -1
  91. package/cjs/view/animate.js.map +1 -1
  92. package/cjs/view/constants.d.ts +2 -0
  93. package/cjs/view/constants.js +3 -2
  94. package/cjs/view/constants.js.map +1 -1
  95. package/cjs/view/events.d.ts +0 -1
  96. package/cjs/view/events.js +3 -17
  97. package/cjs/view/events.js.map +1 -1
  98. package/cjs/view/glyph.d.ts +4 -0
  99. package/cjs/view/glyph.js +12 -3
  100. package/cjs/view/glyph.js.map +1 -1
  101. package/cjs/view/group.js +3 -3
  102. package/cjs/view/group.js.map +1 -1
  103. package/cjs/view/mark-animate-mixin.d.ts +1 -0
  104. package/cjs/view/mark-animate-mixin.js +29 -0
  105. package/cjs/view/mark-animate-mixin.js.map +1 -0
  106. package/cjs/view/mark.d.ts +2 -0
  107. package/cjs/view/mark.js +31 -28
  108. package/cjs/view/mark.js.map +1 -1
  109. package/cjs/view/view-animate-mixin.d.ts +1 -0
  110. package/cjs/view/view-animate-mixin.js +26 -0
  111. package/cjs/view/view-animate-mixin.js.map +1 -0
  112. package/cjs/view/view-event-mixin.d.ts +1 -0
  113. package/cjs/view/view-event-mixin.js +92 -0
  114. package/cjs/view/view-event-mixin.js.map +1 -0
  115. package/cjs/view/view-morph-mixin.d.ts +1 -0
  116. package/cjs/view/view-morph-mixin.js +32 -0
  117. package/cjs/view/view-morph-mixin.js.map +1 -0
  118. package/es/component/axis.d.ts +2 -0
  119. package/es/component/axis.js +10 -0
  120. package/es/component/axis.js.map +1 -1
  121. package/es/component/grid.d.ts +2 -0
  122. package/es/component/grid.js +10 -0
  123. package/es/component/grid.js.map +1 -1
  124. package/es/component/index.d.ts +2 -2
  125. package/es/component/index.js +2 -2
  126. package/es/component/index.js.map +1 -1
  127. package/es/core/factory.d.ts +8 -1
  128. package/es/core/factory.js +8 -1
  129. package/es/core/factory.js.map +1 -1
  130. package/es/glyph/boxplot.js +4 -2
  131. package/es/glyph/boxplot.js.map +1 -1
  132. package/es/glyph/link-path.js +4 -2
  133. package/es/glyph/link-path.js.map +1 -1
  134. package/es/glyph/ripple.js +3 -1
  135. package/es/glyph/ripple.js.map +1 -1
  136. package/es/glyph/tree-path.js +4 -2
  137. package/es/glyph/tree-path.js.map +1 -1
  138. package/es/glyph/violin.js +4 -2
  139. package/es/glyph/violin.js.map +1 -1
  140. package/es/glyph/wave.js +3 -1
  141. package/es/glyph/wave.js.map +1 -1
  142. package/es/graph/animation/animation/fade.js +4 -4
  143. package/es/graph/animation/animation/fade.js.map +1 -1
  144. package/es/graph/animation/animation/grow-cartesian.js +14 -14
  145. package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
  146. package/es/graph/animation/animation/grow-interval.js +9 -9
  147. package/es/graph/animation/animation/grow-interval.js.map +1 -1
  148. package/es/graph/animation/animation/grow-points.js +9 -9
  149. package/es/graph/animation/animation/grow-points.js.map +1 -1
  150. package/es/graph/animation/animation/grow-polar.js +24 -24
  151. package/es/graph/animation/animation/grow-polar.js.map +1 -1
  152. package/es/graph/animation/animation/move.js +6 -6
  153. package/es/graph/animation/animation/move.js.map +1 -1
  154. package/es/graph/animation/animation/rotate.js +4 -4
  155. package/es/graph/animation/animation/rotate.js.map +1 -1
  156. package/es/graph/animation/animation/scale.js +5 -5
  157. package/es/graph/animation/animation/scale.js.map +1 -1
  158. package/es/graph/animation/animation/update.js +1 -3
  159. package/es/graph/animation/animation/update.js.map +1 -1
  160. package/es/graph/animation/animator.js +1 -1
  161. package/es/graph/animation/animator.js.map +1 -1
  162. package/es/graph/animation/morph.d.ts +2 -12
  163. package/es/graph/animation/morph.js +72 -159
  164. package/es/graph/animation/morph.js.map +1 -1
  165. package/es/graph/attributes/line.js.map +1 -1
  166. package/es/graph/canvas-renderer.d.ts +1 -1
  167. package/es/graph/canvas-renderer.js +5 -5
  168. package/es/graph/canvas-renderer.js.map +1 -1
  169. package/es/graph/element.d.ts +1 -2
  170. package/es/graph/element.js +17 -20
  171. package/es/graph/element.js.map +1 -1
  172. package/es/graph/glyph-element.js +3 -5
  173. package/es/graph/glyph-element.js.map +1 -1
  174. package/es/graph/layout/layout.d.ts +1 -0
  175. package/es/graph/layout/layout.js +6 -0
  176. package/es/graph/layout/layout.js.map +1 -1
  177. package/es/graph/mark/graphic.js +13 -7
  178. package/es/graph/mark/graphic.js.map +1 -1
  179. package/es/graph/util/point.js +10 -26
  180. package/es/graph/util/point.js.map +1 -1
  181. package/es/graph/view-diff.d.ts +8 -0
  182. package/es/graph/view-diff.js +89 -0
  183. package/es/graph/view-diff.js.map +1 -0
  184. package/es/index.d.ts +8 -1
  185. package/es/index.js +29 -1
  186. package/es/index.js.map +1 -1
  187. package/es/interactions/brush-filter.js +2 -1
  188. package/es/interactions/element-active.js +1 -2
  189. package/es/interactions/fish-eye.js +1 -1
  190. package/es/interactions/index.js +2 -1
  191. package/es/interactions/legend-filter.js +1 -1
  192. package/es/interactions/player-filter.js +1 -1
  193. package/es/interactions/roll-up.js +1 -1
  194. package/es/interactions/scrollbar-filter.js +1 -1
  195. package/es/interactions/slider-filter.js +1 -1
  196. package/es/interactions/toggle-state-mixin.js +1 -1
  197. package/es/interactions/tooltip.js +1 -1
  198. package/es/parse/coordinate.js +1 -1
  199. package/es/parse/event.d.ts +0 -2
  200. package/es/parse/event.js +4 -8
  201. package/es/parse/event.js.map +1 -1
  202. package/es/parse/mark.js +1 -1
  203. package/es/parse/option.js +1 -2
  204. package/es/parse/scale.js +1 -1
  205. package/es/parse/transform.js +1 -1
  206. package/es/parse/util.js +1 -1
  207. package/es/parse/util.js.map +1 -1
  208. package/es/parse/view.js +1 -1
  209. package/es/types/animate.d.ts +0 -1
  210. package/es/types/animate.js.map +1 -1
  211. package/es/types/element.d.ts +1 -5
  212. package/es/types/element.js.map +1 -1
  213. package/es/types/morph.d.ts +1 -2
  214. package/es/types/morph.js.map +1 -1
  215. package/es/types/renderer.d.ts +6 -1
  216. package/es/types/renderer.js.map +1 -1
  217. package/es/view/View.d.ts +3 -6
  218. package/es/view/View.js +53 -114
  219. package/es/view/View.js.map +1 -1
  220. package/es/view/animate.js +2 -1
  221. package/es/view/animate.js.map +1 -1
  222. package/es/view/constants.d.ts +2 -0
  223. package/es/view/constants.js +4 -0
  224. package/es/view/constants.js.map +1 -1
  225. package/es/view/events.d.ts +0 -1
  226. package/es/view/events.js +1 -15
  227. package/es/view/events.js.map +1 -1
  228. package/es/view/glyph.d.ts +4 -0
  229. package/es/view/glyph.js +11 -0
  230. package/es/view/glyph.js.map +1 -1
  231. package/es/view/group.js +2 -4
  232. package/es/view/group.js.map +1 -1
  233. package/es/view/mark-animate-mixin.d.ts +1 -0
  234. package/es/view/mark-animate-mixin.js +25 -0
  235. package/es/view/mark-animate-mixin.js.map +1 -0
  236. package/es/view/mark.d.ts +2 -0
  237. package/es/view/mark.js +32 -30
  238. package/es/view/mark.js.map +1 -1
  239. package/es/view/view-animate-mixin.d.ts +1 -0
  240. package/es/view/view-animate-mixin.js +16 -0
  241. package/es/view/view-animate-mixin.js.map +1 -0
  242. package/es/view/view-event-mixin.d.ts +1 -0
  243. package/es/view/view-event-mixin.js +90 -0
  244. package/es/view/view-event-mixin.js.map +1 -0
  245. package/es/view/view-morph-mixin.d.ts +1 -0
  246. package/es/view/view-morph-mixin.js +22 -0
  247. package/es/view/view-morph-mixin.js.map +1 -0
  248. package/package.json +12 -12
  249. package/cjs/graph/util/element.d.ts +0 -2
  250. package/cjs/graph/util/element.js +0 -10
  251. package/cjs/graph/util/element.js.map +0 -1
  252. package/es/graph/util/element.d.ts +0 -2
  253. package/es/graph/util/element.js +0 -8
  254. package/es/graph/util/element.js.map +0 -1
@@ -2,13 +2,13 @@ import { isFunction, isValidNumber } from "@visactor/vutils";
2
2
 
3
3
  export const moveIn = (element, options, animationParameters) => {
4
4
  var _a, _b;
5
- const {offset: offset = 0, orient: orient, direction: direction, point: pointOpt, excludeChannels: excludeChannels = []} = null != options ? options : {};
5
+ const {offset: offset = 0, orient: orient, direction: direction, point: pointOpt} = null != options ? options : {};
6
6
  let changedX = 0, changedY = 0;
7
7
  "negative" === orient && (animationParameters.group ? (changedX = null !== (_a = animationParameters.groupWidth) && void 0 !== _a ? _a : animationParameters.group.getBounds().width(),
8
8
  changedY = null !== (_b = animationParameters.groupHeight) && void 0 !== _b ? _b : animationParameters.group.getBounds().height(),
9
9
  animationParameters.groupWidth = changedX, animationParameters.groupHeight = changedY) : (changedX = animationParameters.width,
10
10
  changedY = animationParameters.height)), changedX += offset, changedY += offset;
11
- const point = isFunction(pointOpt) ? pointOpt.call(null, element.getDatum(), element, animationParameters) : pointOpt, fromX = point && isValidNumber(point.x) ? point.x : changedX, fromY = point && isValidNumber(point.y) ? point.y : changedY, finalAttrsX = excludeChannels.includes("x") ? element.getGraphicAttribute("x") : element.getFinalAnimationAttribute("x"), finalAttrsY = excludeChannels.includes("y") ? element.getGraphicAttribute("y") : element.getFinalAnimationAttribute("y");
11
+ const point = isFunction(pointOpt) ? pointOpt.call(null, element.getDatum(), element, animationParameters) : pointOpt, fromX = point && isValidNumber(point.x) ? point.x : changedX, fromY = point && isValidNumber(point.y) ? point.y : changedY, finalAttrs = element.getFinalGraphicAttributes();
12
12
  switch (direction) {
13
13
  case "x":
14
14
  return {
@@ -16,7 +16,7 @@ export const moveIn = (element, options, animationParameters) => {
16
16
  x: fromX
17
17
  },
18
18
  to: {
19
- x: finalAttrsX
19
+ x: null == finalAttrs ? void 0 : finalAttrs.x
20
20
  }
21
21
  };
22
22
 
@@ -26,7 +26,7 @@ export const moveIn = (element, options, animationParameters) => {
26
26
  y: fromY
27
27
  },
28
28
  to: {
29
- y: finalAttrsY
29
+ y: null == finalAttrs ? void 0 : finalAttrs.y
30
30
  }
31
31
  };
32
32
 
@@ -37,8 +37,8 @@ export const moveIn = (element, options, animationParameters) => {
37
37
  y: fromY
38
38
  },
39
39
  to: {
40
- x: finalAttrsX,
41
- y: finalAttrsY
40
+ x: null == finalAttrs ? void 0 : finalAttrs.x,
41
+ y: null == finalAttrs ? void 0 : finalAttrs.y
42
42
  }
43
43
  };
44
44
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/animation/animation/move.ts"],"names":[],"mappings":"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","file":"move.js","sourcesContent":["import { isFunction, isValidNumber } from '@visactor/vutils';\nimport type { IElement, IMoveAnimationOptions, IAnimationParameters, TypeAnimation } from '../../../types';\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: TypeAnimation<IElement> = (\n element: IElement,\n options: IMoveAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const { offset = 0, orient, direction, point: pointOpt, excludeChannels = [] } = options ?? {};\n let changedX = 0;\n let changedY = 0;\n\n if (orient === 'negative') {\n // consider the offset of group\n if (animationParameters.group) {\n changedX = (animationParameters as any).groupWidth ?? animationParameters.group.getBounds().width();\n changedY = (animationParameters as any).groupHeight ?? animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupWidth = changedX;\n (animationParameters as any).groupHeight = changedY;\n } else {\n changedX = animationParameters.width;\n changedY = animationParameters.height;\n }\n }\n\n changedX += offset;\n changedY += offset;\n const point = isFunction(pointOpt) ? pointOpt.call(null, element.getDatum(), element, animationParameters) : pointOpt;\n const fromX = point && isValidNumber(point.x) ? point.x : changedX;\n const fromY = point && isValidNumber(point.y) ? point.y : changedY;\n const finalAttrsX = excludeChannels.includes('x')\n ? element.getGraphicAttribute('x')\n : element.getFinalAnimationAttribute('x');\n const finalAttrsY = excludeChannels.includes('y')\n ? element.getGraphicAttribute('y')\n : element.getFinalAnimationAttribute('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: TypeAnimation<IElement> = (\n element: IElement,\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 = animationParameters.group ? animationParameters.group.getBounds() : 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) ? pointOpt.call(null, element.getDatum(), element, animationParameters) : 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: element.getGraphicAttribute('x', true) },\n to: { x: fromX }\n };\n case 'y':\n return {\n from: { y: element.getGraphicAttribute('y', true) },\n to: { y: fromY }\n };\n case 'xy':\n default:\n return {\n from: {\n x: element.getGraphicAttribute('x', true),\n y: element.getGraphicAttribute('y', true)\n },\n to: { x: fromX, y: fromY }\n };\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/graph/animation/animation/move.ts"],"names":[],"mappings":"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","file":"move.js","sourcesContent":["import { isFunction, isValidNumber } from '@visactor/vutils';\nimport type { IElement, IMoveAnimationOptions, IAnimationParameters, TypeAnimation } from '../../../types';\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: TypeAnimation<IElement> = (\n element: IElement,\n options: IMoveAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const { offset = 0, orient, direction, point: pointOpt } = options ?? {};\n let changedX = 0;\n let changedY = 0;\n\n if (orient === 'negative') {\n // consider the offset of group\n if (animationParameters.group) {\n changedX = (animationParameters as any).groupWidth ?? animationParameters.group.getBounds().width();\n changedY = (animationParameters as any).groupHeight ?? animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupWidth = changedX;\n (animationParameters as any).groupHeight = changedY;\n } else {\n changedX = animationParameters.width;\n changedY = animationParameters.height;\n }\n }\n\n changedX += offset;\n changedY += offset;\n const point = isFunction(pointOpt) ? pointOpt.call(null, element.getDatum(), element, animationParameters) : pointOpt;\n const fromX = point && isValidNumber(point.x) ? point.x : changedX;\n const fromY = point && isValidNumber(point.y) ? point.y : changedY;\n const finalAttrs = element.getFinalGraphicAttributes();\n\n switch (direction) {\n case 'x':\n return {\n from: { x: fromX },\n to: { x: finalAttrs?.x }\n };\n case 'y':\n return {\n from: { y: fromY },\n to: { y: finalAttrs?.y }\n };\n case 'xy':\n default:\n return {\n from: { x: fromX, y: fromY },\n to: {\n x: finalAttrs?.x,\n y: finalAttrs?.y\n }\n };\n }\n};\n\nexport const moveOut: TypeAnimation<IElement> = (\n element: IElement,\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 = animationParameters.group ? animationParameters.group.getBounds() : 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) ? pointOpt.call(null, element.getDatum(), element, animationParameters) : 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: element.getGraphicAttribute('x', true) },\n to: { x: fromX }\n };\n case 'y':\n return {\n from: { y: element.getGraphicAttribute('y', true) },\n to: { y: fromY }\n };\n case 'xy':\n default:\n return {\n from: {\n x: element.getGraphicAttribute('x', true),\n y: element.getGraphicAttribute('y', true)\n },\n to: { x: fromX, y: fromY }\n };\n }\n};\n"]}
@@ -1,16 +1,16 @@
1
1
  import { isNumberClose, isValidNumber } from "@visactor/vutils";
2
2
 
3
3
  export const rotateIn = (element, options, animationParameters) => {
4
- var _a;
5
- const attributeAngle = null !== (_a = element.getFinalAnimationAttribute("angle")) && void 0 !== _a ? _a : 0;
4
+ var _a, _b;
5
+ const finalAngle = null !== (_b = null === (_a = element.getFinalGraphicAttributes()) || void 0 === _a ? void 0 : _a.angle) && void 0 !== _b ? _b : 0;
6
6
  let angle = 0;
7
- return angle = isNumberClose(attributeAngle / (2 * Math.PI), 0) ? Math.round(attributeAngle / (2 * Math.PI)) * Math.PI * 2 : isValidNumber(null == options ? void 0 : options.angle) ? options.angle : "anticlockwise" === (null == options ? void 0 : options.orient) ? Math.ceil(attributeAngle / (2 * Math.PI)) * Math.PI * 2 : Math.floor(attributeAngle / (2 * Math.PI)) * Math.PI * 2,
7
+ return angle = isNumberClose(finalAngle / (2 * Math.PI), 0) ? Math.round(finalAngle / (2 * Math.PI)) * Math.PI * 2 : isValidNumber(null == options ? void 0 : options.angle) ? options.angle : "anticlockwise" === (null == options ? void 0 : options.orient) ? Math.ceil(finalAngle / (2 * Math.PI)) * Math.PI * 2 : Math.floor(finalAngle / (2 * Math.PI)) * Math.PI * 2,
8
8
  {
9
9
  from: {
10
10
  angle: angle
11
11
  },
12
12
  to: {
13
- angle: attributeAngle
13
+ angle: finalAngle
14
14
  }
15
15
  };
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/animation/animation/rotate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGhE,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAC/C,OAAiB,EACjB,OAAgC,EAChC,mBAAyC,EACzC,EAAE;;IACF,MAAM,cAAc,GAAG,MAAA,OAAO,CAAC,0BAA0B,CAAC,OAAO,CAAC,mCAAI,CAAC,CAAC;IAExE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,aAAa,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACpD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAClE;SAAM,IAAI,aAAa,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,EAAE;QACxC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACvB;SAAM,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,eAAe,EAAE;QAC9C,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KACjE;SAAM;QACL,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAClE;IACD,OAAO;QACL,IAAI,EAAE,EAAE,KAAK,EAAE;QACf,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;KAC9B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAA4B,CAChD,OAAiB,EACjB,OAAgC,EAChC,mBAAyC,EACzC,EAAE;;IACF,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mCAAI,CAAC,CAAC;IACnE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,aAAa,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAChD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC9D;SAAM,IAAI,aAAa,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,EAAE;QACxC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACvB;SAAM,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,eAAe,EAAE;QAC9C,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7D;SAAM;QACL,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC9D;IACD,OAAO;QACL,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;QAC3B,EAAE,EAAE,EAAE,KAAK,EAAE;KACd,CAAC;AACJ,CAAC,CAAC","file":"rotate.js","sourcesContent":["import { isNumberClose, isValidNumber } from '@visactor/vutils';\nimport type { IAnimationParameters, IRotateAnimationOptions, TypeAnimation, IElement } from '../../../types';\n\nexport const rotateIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IRotateAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const attributeAngle = element.getFinalAnimationAttribute('angle') ?? 0;\n\n let angle = 0;\n if (isNumberClose(attributeAngle / (Math.PI * 2), 0)) {\n angle = Math.round(attributeAngle / (Math.PI * 2)) * Math.PI * 2;\n } else if (isValidNumber(options?.angle)) {\n angle = options.angle;\n } else if (options?.orient === 'anticlockwise') {\n angle = Math.ceil(attributeAngle / (Math.PI * 2)) * Math.PI * 2;\n } else {\n angle = Math.floor(attributeAngle / (Math.PI * 2)) * Math.PI * 2;\n }\n return {\n from: { angle },\n to: { angle: attributeAngle }\n };\n};\n\nexport const rotateOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IRotateAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const finalAngle = element.getGraphicAttribute('angle', true) ?? 0;\n let angle = 0;\n if (isNumberClose(finalAngle / (Math.PI * 2), 0)) {\n angle = Math.round(finalAngle / (Math.PI * 2)) * Math.PI * 2;\n } else if (isValidNumber(options?.angle)) {\n angle = options.angle;\n } else if (options?.orient === 'anticlockwise') {\n angle = Math.ceil(finalAngle / (Math.PI * 2)) * Math.PI * 2;\n } else {\n angle = Math.floor(finalAngle / (Math.PI * 2)) * Math.PI * 2;\n }\n return {\n from: { angle: finalAngle },\n to: { angle }\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/graph/animation/animation/rotate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGhE,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAC/C,OAAiB,EACjB,OAAgC,EAChC,mBAAyC,EACzC,EAAE;;IACF,MAAM,UAAU,GAAG,MAAA,MAAA,OAAO,CAAC,yBAAyB,EAAE,0CAAE,KAAK,mCAAI,CAAC,CAAC;IAEnE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,aAAa,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAChD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC9D;SAAM,IAAI,aAAa,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,EAAE;QACxC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACvB;SAAM,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,eAAe,EAAE;QAC9C,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7D;SAAM;QACL,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC9D;IACD,OAAO;QACL,IAAI,EAAE,EAAE,KAAK,EAAE;QACf,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;KAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAA4B,CAChD,OAAiB,EACjB,OAAgC,EAChC,mBAAyC,EACzC,EAAE;;IACF,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mCAAI,CAAC,CAAC;IACnE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,aAAa,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAChD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC9D;SAAM,IAAI,aAAa,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,EAAE;QACxC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACvB;SAAM,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,eAAe,EAAE;QAC9C,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7D;SAAM;QACL,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC9D;IACD,OAAO;QACL,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;QAC3B,EAAE,EAAE,EAAE,KAAK,EAAE;KACd,CAAC;AACJ,CAAC,CAAC","file":"rotate.js","sourcesContent":["import { isNumberClose, isValidNumber } from '@visactor/vutils';\nimport type { IAnimationParameters, IRotateAnimationOptions, TypeAnimation, IElement } from '../../../types';\n\nexport const rotateIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IRotateAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const finalAngle = element.getFinalGraphicAttributes()?.angle ?? 0;\n\n let angle = 0;\n if (isNumberClose(finalAngle / (Math.PI * 2), 0)) {\n angle = Math.round(finalAngle / (Math.PI * 2)) * Math.PI * 2;\n } else if (isValidNumber(options?.angle)) {\n angle = options.angle;\n } else if (options?.orient === 'anticlockwise') {\n angle = Math.ceil(finalAngle / (Math.PI * 2)) * Math.PI * 2;\n } else {\n angle = Math.floor(finalAngle / (Math.PI * 2)) * Math.PI * 2;\n }\n return {\n from: { angle },\n to: { angle: finalAngle }\n };\n};\n\nexport const rotateOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IRotateAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const finalAngle = element.getGraphicAttribute('angle', true) ?? 0;\n let angle = 0;\n if (isNumberClose(finalAngle / (Math.PI * 2), 0)) {\n angle = Math.round(finalAngle / (Math.PI * 2)) * Math.PI * 2;\n } else if (isValidNumber(options?.angle)) {\n angle = options.angle;\n } else if (options?.orient === 'anticlockwise') {\n angle = Math.ceil(finalAngle / (Math.PI * 2)) * Math.PI * 2;\n } else {\n angle = Math.floor(finalAngle / (Math.PI * 2)) * Math.PI * 2;\n }\n return {\n from: { angle: finalAngle },\n to: { angle }\n };\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  export const scaleIn = (element, options, animationParameters) => {
2
2
  var _a, _b, _c, _d;
3
- const attrs = element.getFinalAnimationAttributes();
3
+ const finalAttrs = element.getFinalGraphicAttributes();
4
4
  switch (null == options ? void 0 : options.direction) {
5
5
  case "x":
6
6
  return {
@@ -8,7 +8,7 @@ export const scaleIn = (element, options, animationParameters) => {
8
8
  scaleX: 0
9
9
  },
10
10
  to: {
11
- scaleX: null !== (_a = null == attrs ? void 0 : attrs.scaleX) && void 0 !== _a ? _a : 1
11
+ scaleX: null !== (_a = null == finalAttrs ? void 0 : finalAttrs.scaleX) && void 0 !== _a ? _a : 1
12
12
  }
13
13
  };
14
14
 
@@ -18,7 +18,7 @@ export const scaleIn = (element, options, animationParameters) => {
18
18
  scaleY: 0
19
19
  },
20
20
  to: {
21
- scaleY: null !== (_b = null == attrs ? void 0 : attrs.scaleY) && void 0 !== _b ? _b : 1
21
+ scaleY: null !== (_b = null == finalAttrs ? void 0 : finalAttrs.scaleY) && void 0 !== _b ? _b : 1
22
22
  }
23
23
  };
24
24
 
@@ -29,8 +29,8 @@ export const scaleIn = (element, options, animationParameters) => {
29
29
  scaleY: 0
30
30
  },
31
31
  to: {
32
- scaleX: null !== (_c = null == attrs ? void 0 : attrs.scaleX) && void 0 !== _c ? _c : 1,
33
- scaleY: null !== (_d = null == attrs ? void 0 : attrs.scaleY) && void 0 !== _d ? _d : 1
32
+ scaleX: null !== (_c = null == finalAttrs ? void 0 : finalAttrs.scaleX) && void 0 !== _c ? _c : 1,
33
+ scaleY: null !== (_d = null == finalAttrs ? void 0 : finalAttrs.scaleY) && void 0 !== _d ? _d : 1
34
34
  }
35
35
  };
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/animation/animation/scale.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,OAAO,GAA4B,CAC9C,OAAiB,EACjB,OAA+B,EAC/B,mBAAyC,EACzC,EAAE;;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC;IAEpD,QAAQ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE;QAC1B,KAAK,GAAG;YACN,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;gBACnB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,CAAC,EAAE;aACnC,CAAC;QACJ,KAAK,GAAG;YACN,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;gBACnB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,CAAC,EAAE;aACnC,CAAC;QACJ,KAAK,IAAI,CAAC;QACV;YACE,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC9B,EAAE,EAAE;oBACF,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,CAAC;oBAC1B,MAAM,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,CAAC;iBAC3B;aACF,CAAC;KACL;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAC/C,OAAiB,EACjB,OAA+B,EAC/B,mBAAyC,EACzC,EAAE;;IACF,QAAQ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE;QAC1B,KAAK,GAAG;YACN,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,MAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,mCAAI,CAAC,EAAE;gBAClE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;aAClB,CAAC;QACJ,KAAK,GAAG;YACN,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,MAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,mCAAI,CAAC,EAAE;gBAClE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;aAClB,CAAC;QACJ,KAAK,IAAI,CAAC;QACV;YACE,OAAO;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,mCAAI,CAAC;oBACxD,MAAM,EAAE,MAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,mCAAI,CAAC;iBACzD;gBACD,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;aAC7B,CAAC;KACL;AACH,CAAC,CAAC","file":"scale.js","sourcesContent":["import type { IElement, IScaleAnimationOptions, IAnimationParameters, TypeAnimation } from '../../../types';\n\n// TODO: negative direction, need support from VRender\n\nexport const scaleIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IScaleAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const attrs = element.getFinalAnimationAttributes();\n\n switch (options?.direction) {\n case 'x':\n return {\n from: { scaleX: 0 },\n to: { scaleX: attrs?.scaleX ?? 1 }\n };\n case 'y':\n return {\n from: { scaleY: 0 },\n to: { scaleY: attrs?.scaleY ?? 1 }\n };\n case 'xy':\n default:\n return {\n from: { scaleX: 0, scaleY: 0 },\n to: {\n scaleX: attrs?.scaleX ?? 1,\n scaleY: attrs?.scaleY ?? 1\n }\n };\n }\n};\n\nexport const scaleOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IScaleAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n switch (options?.direction) {\n case 'x':\n return {\n from: { scaleX: element.getGraphicAttribute('scaleX', true) ?? 1 },\n to: { scaleX: 0 }\n };\n case 'y':\n return {\n from: { scaleY: element.getGraphicAttribute('scaleY', true) ?? 1 },\n to: { scaleY: 0 }\n };\n case 'xy':\n default:\n return {\n from: {\n scaleX: element.getGraphicAttribute('scaleX', true) ?? 1,\n scaleY: element.getGraphicAttribute('scaleY', true) ?? 1\n },\n to: { scaleX: 0, scaleY: 0 }\n };\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/graph/animation/animation/scale.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,OAAO,GAA4B,CAC9C,OAAiB,EACjB,OAA+B,EAC/B,mBAAyC,EACzC,EAAE;;IACF,MAAM,UAAU,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAEvD,QAAQ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE;QAC1B,KAAK,GAAG;YACN,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;gBACnB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,mCAAI,CAAC,EAAE;aACxC,CAAC;QACJ,KAAK,GAAG;YACN,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;gBACnB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,mCAAI,CAAC,EAAE;aACxC,CAAC;QACJ,KAAK,IAAI,CAAC;QACV;YACE,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC9B,EAAE,EAAE;oBACF,MAAM,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,mCAAI,CAAC;oBAC/B,MAAM,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,mCAAI,CAAC;iBAChC;aACF,CAAC;KACL;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAC/C,OAAiB,EACjB,OAA+B,EAC/B,mBAAyC,EACzC,EAAE;;IACF,QAAQ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE;QAC1B,KAAK,GAAG;YACN,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,MAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,mCAAI,CAAC,EAAE;gBAClE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;aAClB,CAAC;QACJ,KAAK,GAAG;YACN,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,MAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,mCAAI,CAAC,EAAE;gBAClE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;aAClB,CAAC;QACJ,KAAK,IAAI,CAAC;QACV;YACE,OAAO;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,mCAAI,CAAC;oBACxD,MAAM,EAAE,MAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,mCAAI,CAAC;iBACzD;gBACD,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;aAC7B,CAAC;KACL;AACH,CAAC,CAAC","file":"scale.js","sourcesContent":["import type { IElement, IScaleAnimationOptions, IAnimationParameters, TypeAnimation } from '../../../types';\n\n// TODO: negative direction, need support from VRender\n\nexport const scaleIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IScaleAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const finalAttrs = element.getFinalGraphicAttributes();\n\n switch (options?.direction) {\n case 'x':\n return {\n from: { scaleX: 0 },\n to: { scaleX: finalAttrs?.scaleX ?? 1 }\n };\n case 'y':\n return {\n from: { scaleY: 0 },\n to: { scaleY: finalAttrs?.scaleY ?? 1 }\n };\n case 'xy':\n default:\n return {\n from: { scaleX: 0, scaleY: 0 },\n to: {\n scaleX: finalAttrs?.scaleX ?? 1,\n scaleY: finalAttrs?.scaleY ?? 1\n }\n };\n }\n};\n\nexport const scaleOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IScaleAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n switch (options?.direction) {\n case 'x':\n return {\n from: { scaleX: element.getGraphicAttribute('scaleX', true) ?? 1 },\n to: { scaleX: 0 }\n };\n case 'y':\n return {\n from: { scaleY: element.getGraphicAttribute('scaleY', true) ?? 1 },\n to: { scaleY: 0 }\n };\n case 'xy':\n default:\n return {\n from: {\n scaleX: element.getGraphicAttribute('scaleX', true) ?? 1,\n scaleY: element.getGraphicAttribute('scaleY', true) ?? 1\n },\n to: { scaleX: 0, scaleY: 0 }\n };\n }\n};\n"]}
@@ -1,7 +1,5 @@
1
1
  import { array, isNil, isEqual } from "@visactor/vutils";
2
2
 
3
- import { isEqual as isEmptyByKey } from "@visactor/vgrammar-util";
4
-
5
3
  const BUILT_IN_EXCLUDE_CHANNELS = {
6
4
  symbol: [ "_mo_hide_", "visible" ]
7
5
  };
@@ -14,7 +12,7 @@ export const update = (element, options, animationParameters) => {
14
12
  })), element.mark && element.mark.markType && (excludeChannels = BUILT_IN_EXCLUDE_CHANNELS[element.mark.markType]) && excludeChannels.forEach((key => {
15
13
  delete from[key], delete to[key];
16
14
  })), Object.keys(to).forEach((key => {
17
- isEmptyByKey(key, from, to) && (delete from[key], delete to[key]);
15
+ isEqual(from[key], to[key]) && (delete from[key], delete to[key]);
18
16
  }));
19
17
  const final = element.getFinalGraphicAttributes();
20
18
  return Object.keys(from).forEach((key => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/animation/animation/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAQlE,MAAM,yBAAyB,GAAG;IAChC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAA4B,CAC7C,OAAiB,EACjB,OAAgC,EAChC,mBAAyC,EACzC,EAAE;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACnE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACjE,IAAI,OAAO,EAAE;QACX,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;KACJ;IACD,IAAI,eAAyB,CAAC;IAC9B,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,eAAe,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;QACjH,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5B,IAAI,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;SAChB;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAElD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC9B,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YAClB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;gBACvD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;aAClB;iBAAM;gBACL,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;aACtB;SACF;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC,CAAC","file":"update.js","sourcesContent":["import { array, isNil, isEqual } from '@visactor/vutils';\nimport { isEqual as isEmptyByKey } from '@visactor/vgrammar-util';\nimport type { IElement } from '../../../types';\nimport type { IAnimationParameters, TypeAnimation } from '../../../types/animate';\n\nexport interface IUpdateAnimationOptions {\n excludeChannels: string[];\n}\n\nconst BUILT_IN_EXCLUDE_CHANNELS = {\n symbol: ['_mo_hide_', 'visible']\n};\n\nexport const update: TypeAnimation<IElement> = (\n element: IElement,\n options: IUpdateAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const from = Object.assign({}, element.getPrevGraphicAttributes());\n const to = Object.assign({}, element.getNextGraphicAttributes());\n if (options) {\n array(options.excludeChannels).forEach(key => {\n delete from[key];\n delete to[key];\n });\n }\n let excludeChannels: string[];\n if (element.mark && element.mark.markType && (excludeChannels = BUILT_IN_EXCLUDE_CHANNELS[element.mark.markType])) {\n excludeChannels.forEach(key => {\n delete from[key];\n delete to[key];\n });\n }\n\n Object.keys(to).forEach(key => {\n if (isEmptyByKey(key, from, to)) {\n delete from[key];\n delete to[key];\n }\n });\n\n const final = element.getFinalGraphicAttributes();\n\n Object.keys(from).forEach(key => {\n if (isNil(to[key])) {\n if (isNil(final[key]) || isEqual(from[key], final[key])) {\n delete from[key];\n } else {\n to[key] = final[key];\n }\n }\n });\n\n return { from, to };\n};\n"]}
1
+ {"version":3,"sources":["../src/graph/animation/animation/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQzD,MAAM,yBAAyB,GAAG;IAChC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAA4B,CAC7C,OAAiB,EACjB,OAAgC,EAChC,mBAAyC,EACzC,EAAE;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACnE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACjE,IAAI,OAAO,EAAE;QACX,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;KACJ;IACD,IAAI,eAAyB,CAAC;IAC9B,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,eAAe,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;QACjH,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;SAChB;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAElD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC9B,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YAClB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;gBACvD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;aAClB;iBAAM;gBACL,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;aACtB;SACF;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC,CAAC","file":"update.js","sourcesContent":["import { array, isNil, isEqual } from '@visactor/vutils';\nimport type { IElement } from '../../../types';\nimport type { IAnimationParameters, TypeAnimation } from '../../../types/animate';\n\nexport interface IUpdateAnimationOptions {\n excludeChannels: string[];\n}\n\nconst BUILT_IN_EXCLUDE_CHANNELS = {\n symbol: ['_mo_hide_', 'visible']\n};\n\nexport const update: TypeAnimation<IElement> = (\n element: IElement,\n options: IUpdateAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const from = Object.assign({}, element.getPrevGraphicAttributes());\n const to = Object.assign({}, element.getNextGraphicAttributes());\n if (options) {\n array(options.excludeChannels).forEach(key => {\n delete from[key];\n delete to[key];\n });\n }\n let excludeChannels: string[];\n if (element.mark && element.mark.markType && (excludeChannels = BUILT_IN_EXCLUDE_CHANNELS[element.mark.markType])) {\n excludeChannels.forEach(key => {\n delete from[key];\n delete to[key];\n });\n }\n\n Object.keys(to).forEach(key => {\n if (isEqual(from[key], to[key])) {\n delete from[key];\n delete to[key];\n }\n });\n\n const final = element.getFinalGraphicAttributes();\n\n Object.keys(from).forEach(key => {\n if (isNil(to[key])) {\n if (isNil(final[key]) || isEqual(from[key], final[key])) {\n delete from[key];\n } else {\n to[key] = final[key];\n }\n }\n });\n\n return { from, to };\n};\n"]}
@@ -8,7 +8,7 @@ Animate.mode |= AnimateMode.SET_ATTR_IMMEDIATELY;
8
8
 
9
9
  let GlobalAnimatorId = 0;
10
10
 
11
- const isCustomAnimateCtor = custom => !isNil(custom) && !isNil(custom.prototype) && (custom.prototype instanceof ACustomAnimate || "onBind" in custom.prototype && "onStart" in custom.prototype && "onEnd" in custom.prototype && "onUpdate" in custom.prototype);
11
+ const isCustomAnimateCtor = custom => !isNil(custom) && (custom.prototype instanceof ACustomAnimate || "onBind" in custom.prototype && "onStart" in custom.prototype && "onEnd" in custom.prototype && "onUpdate" in custom.prototype);
12
12
 
13
13
  export class Animator {
14
14
  constructor(element, unit, animationOptions) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/animation/animator.ts"],"names":[],"mappings":"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","file":"animator.js","sourcesContent":["import { isNil, isValidNumber } from '@visactor/vutils';\nimport type { IAnimate as IGraphicAnimate } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { ACustomAnimate, Animate, AnimateGroup, AnimateMode } from '@visactor/vrender-core';\nimport type {\n IAnimationChannelInterpolator,\n IAnimationCustomConstructor,\n IAnimationTimeline,\n IAnimator,\n IAnimatorOptions,\n IAnimationUnit,\n IAnimationParameters,\n IAnimationTimeSlice,\n IElement,\n IAnimationEffect\n} from '../../types';\nimport { AttributeAnimate, channelAnimationAttributes, CustomInterpolator, typeAnimationAttributes } from './attribute';\n\nAnimate.mode |= AnimateMode.SET_ATTR_IMMEDIATELY;\n\nlet GlobalAnimatorId = 0;\n\nconst isCustomAnimateCtor = (custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor) => {\n if (isNil(custom) || isNil(custom.prototype)) {\n return false;\n }\n return (\n custom.prototype instanceof ACustomAnimate ||\n // similar to ACustomAnimate, apply for different vrender version\n ('onBind' in custom.prototype &&\n 'onStart' in custom.prototype &&\n 'onEnd' in custom.prototype &&\n 'onUpdate' in custom.prototype)\n );\n};\n\nexport class Animator implements IAnimator {\n id: number = GlobalAnimatorId++;\n element: IElement;\n animationOptions: IAnimatorOptions;\n isAnimating: boolean = false;\n\n private unit: IAnimationUnit;\n private runnings: IGraphicAnimate[] = [];\n private callbackFunction: (...args: any[]) => any;\n\n constructor(\n element: IElement,\n unit: IAnimationUnit,\n animationOptions: {\n state: string;\n timeline: IAnimationTimeline;\n id: string;\n }\n ) {\n this.element = element;\n this.animationOptions = animationOptions;\n this.unit = unit;\n }\n\n callback(callbackFunction: (...args: any[]) => void): this {\n this.callbackFunction = callbackFunction;\n return this;\n }\n\n animate(animationParameters: IAnimationParameters, parameters: any): this {\n this.isAnimating = true;\n\n this.animateElement(animationParameters, parameters);\n\n // if no valid running, end animating immediately\n if (this.runnings.length === 0) {\n this.animationEnd();\n }\n return this;\n }\n\n stop(stopState: 'start' | 'end' = 'end', invokeCallback: boolean = true): this {\n // FIXME: wait for VRender to fix 'end' parameter\n this.runnings.forEach(running => running.stop(stopState));\n this.animationEnd(invokeCallback);\n return this;\n }\n\n pause(): this {\n this.runnings.forEach(running => running.pause());\n return this;\n }\n\n resume(): this {\n this.runnings.forEach(running => running.resume());\n return this;\n }\n\n startAt(startTime: number): this {\n this.runnings.forEach(running => {\n const initialDelay = this.unit.initialDelay;\n running.startAt(initialDelay + startTime);\n });\n return this;\n }\n\n getTotalAnimationTime() {\n const timeLineDuration = this.unit.initialDelay + this.unit.loopDuration * this.unit.loopCount;\n return this.unit.totalTime ?? timeLineDuration;\n }\n\n getEndAttributes() {\n return this.runnings.reduce((attributes, running) => {\n return Object.assign(attributes, running.getEndProps());\n }, {} as Record<string, any>);\n }\n\n private animationEnd(invokeCallback: boolean = true) {\n this.isAnimating = false;\n this.runnings = null;\n if (invokeCallback) {\n this.callbackFunction?.call(null);\n }\n }\n\n private animateElement(animationParameters: IAnimationParameters, parameters: any) {\n const graphicItem = this.element.getGraphicItem();\n\n if (!graphicItem) {\n return;\n }\n\n const graphicAnimate: IGraphicAnimate = graphicItem.animate();\n this.runnings.push(graphicAnimate);\n // initialDelay is only used at first loop\n graphicAnimate.startAt(this.unit.initialDelay);\n // execute loop animation\n graphicAnimate.wait(this.unit.loopDelay);\n this.unit.timeSlices.forEach(timeSlice => {\n this.animateTimeSlice(graphicAnimate, timeSlice, animationParameters, parameters);\n });\n graphicAnimate.wait(this.unit.loopDelayAfter);\n\n graphicAnimate.loop(this.unit.loopCount - 1);\n\n if (isValidNumber(this.unit.totalTime)) {\n // FIXME: use VRender api instead after VRender refactor is finished\n setTimeout(() => {\n if (graphicAnimate) {\n graphicAnimate.stop('end');\n }\n }, this.unit.totalTime);\n }\n\n graphicAnimate.onEnd(() => {\n this.runnings = this.runnings.filter(running => running !== graphicAnimate);\n if (this.runnings.length === 0) {\n this.animationEnd();\n }\n });\n }\n\n private animateTimeSlice(\n graphicAnimate: IGraphicAnimate,\n timeSlice: IAnimationTimeSlice,\n animationParameters: IAnimationParameters,\n parameters: any\n ) {\n const delay = timeSlice.delay as number;\n const delayAfter = timeSlice.delayAfter as number;\n const duration = timeSlice.duration as number;\n const effects = timeSlice.effects as IAnimationEffect[];\n\n // wait in loop animation before animation starts\n if (delay > 0) {\n graphicAnimate.wait(delay);\n }\n\n if (effects.length < 0) {\n graphicAnimate.wait(duration);\n } else {\n const customAnimates = effects\n .map((effect, index) => {\n const attributes =\n (effect.type\n ? typeAnimationAttributes(this.element, effect, animationParameters, parameters)\n : effect.channel\n ? channelAnimationAttributes(this.element, effect, animationParameters, parameters)\n : undefined) ?? {};\n\n const customOption = attributes.custom || effect?.custom;\n const customParametersOption = attributes?.customParameters || effect?.customParameters;\n\n if (\n attributes.from &&\n Object.keys(attributes.from).length &&\n this.unit &&\n this.animationOptions.timeline.controlOptions.immediatelyApply &&\n this.element.mark.markType !== 'component'\n ) {\n this.element.getGraphicItem().setAttributes(attributes.from);\n }\n\n const isCustomAnimate = isCustomAnimateCtor(customOption);\n const isCustomInterpolator = !isNil(customOption) && !isCustomAnimateCtor(customOption);\n\n if (isCustomInterpolator) {\n return new CustomInterpolator(attributes.from, attributes.to, duration, effect.easing, {\n interpolator: customOption as IAnimationChannelInterpolator,\n element: this.element,\n parameters: customParametersOption\n });\n } else if (isCustomAnimate) {\n return new (customOption as IAnimationCustomConstructor)(\n attributes.from,\n attributes.to,\n duration,\n effect.easing,\n customParametersOption\n );\n } else if (attributes.to) {\n return new AttributeAnimate(attributes.from, attributes.to, duration, effect.easing);\n }\n })\n .filter(animate => !isNil(animate));\n\n if (customAnimates.length === 1) {\n graphicAnimate.play(customAnimates[0]);\n } else if (customAnimates.length > 1) {\n graphicAnimate.play(new AnimateGroup(duration, customAnimates));\n }\n }\n\n if (delayAfter > 0) {\n graphicAnimate.wait(delayAfter);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/graph/animation/animator.ts"],"names":[],"mappings":"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","file":"animator.js","sourcesContent":["import { isNil, isValidNumber } from '@visactor/vutils';\nimport type { IAnimate as IGraphicAnimate } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { ACustomAnimate, Animate, AnimateGroup, AnimateMode } from '@visactor/vrender-core';\nimport type {\n IAnimationChannelInterpolator,\n IAnimationCustomConstructor,\n IAnimationTimeline,\n IAnimator,\n IAnimatorOptions,\n IAnimationUnit,\n IAnimationParameters,\n IAnimationTimeSlice,\n IElement,\n IAnimationEffect\n} from '../../types';\nimport { AttributeAnimate, channelAnimationAttributes, CustomInterpolator, typeAnimationAttributes } from './attribute';\n\nAnimate.mode |= AnimateMode.SET_ATTR_IMMEDIATELY;\n\nlet GlobalAnimatorId = 0;\n\nconst isCustomAnimateCtor = (custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor) => {\n if (isNil(custom)) {\n return false;\n }\n return (\n custom.prototype instanceof ACustomAnimate ||\n // similar to ACustomAnimate, apply for different vrender version\n ('onBind' in custom.prototype &&\n 'onStart' in custom.prototype &&\n 'onEnd' in custom.prototype &&\n 'onUpdate' in custom.prototype)\n );\n};\n\nexport class Animator implements IAnimator {\n id: number = GlobalAnimatorId++;\n element: IElement;\n animationOptions: IAnimatorOptions;\n isAnimating: boolean = false;\n\n private unit: IAnimationUnit;\n private runnings: IGraphicAnimate[] = [];\n private callbackFunction: (...args: any[]) => any;\n\n constructor(\n element: IElement,\n unit: IAnimationUnit,\n animationOptions: {\n state: string;\n timeline: IAnimationTimeline;\n id: string;\n }\n ) {\n this.element = element;\n this.animationOptions = animationOptions;\n this.unit = unit;\n }\n\n callback(callbackFunction: (...args: any[]) => void): this {\n this.callbackFunction = callbackFunction;\n return this;\n }\n\n animate(animationParameters: IAnimationParameters, parameters: any): this {\n this.isAnimating = true;\n\n this.animateElement(animationParameters, parameters);\n\n // if no valid running, end animating immediately\n if (this.runnings.length === 0) {\n this.animationEnd();\n }\n return this;\n }\n\n stop(stopState: 'start' | 'end' = 'end', invokeCallback: boolean = true): this {\n // FIXME: wait for VRender to fix 'end' parameter\n this.runnings.forEach(running => running.stop(stopState));\n this.animationEnd(invokeCallback);\n return this;\n }\n\n pause(): this {\n this.runnings.forEach(running => running.pause());\n return this;\n }\n\n resume(): this {\n this.runnings.forEach(running => running.resume());\n return this;\n }\n\n startAt(startTime: number): this {\n this.runnings.forEach(running => {\n const initialDelay = this.unit.initialDelay;\n running.startAt(initialDelay + startTime);\n });\n return this;\n }\n\n getTotalAnimationTime() {\n const timeLineDuration = this.unit.initialDelay + this.unit.loopDuration * this.unit.loopCount;\n return this.unit.totalTime ?? timeLineDuration;\n }\n\n getEndAttributes() {\n return this.runnings.reduce((attributes, running) => {\n return Object.assign(attributes, running.getEndProps());\n }, {} as Record<string, any>);\n }\n\n private animationEnd(invokeCallback: boolean = true) {\n this.isAnimating = false;\n this.runnings = null;\n if (invokeCallback) {\n this.callbackFunction?.call(null);\n }\n }\n\n private animateElement(animationParameters: IAnimationParameters, parameters: any) {\n const graphicItem = this.element.getGraphicItem();\n\n if (!graphicItem) {\n return;\n }\n\n const graphicAnimate: IGraphicAnimate = graphicItem.animate();\n this.runnings.push(graphicAnimate);\n // initialDelay is only used at first loop\n graphicAnimate.startAt(this.unit.initialDelay);\n // execute loop animation\n graphicAnimate.wait(this.unit.loopDelay);\n this.unit.timeSlices.forEach(timeSlice => {\n this.animateTimeSlice(graphicAnimate, timeSlice, animationParameters, parameters);\n });\n graphicAnimate.wait(this.unit.loopDelayAfter);\n\n graphicAnimate.loop(this.unit.loopCount - 1);\n\n if (isValidNumber(this.unit.totalTime)) {\n // FIXME: use VRender api instead after VRender refactor is finished\n setTimeout(() => {\n if (graphicAnimate) {\n graphicAnimate.stop('end');\n }\n }, this.unit.totalTime);\n }\n\n graphicAnimate.onEnd(() => {\n this.runnings = this.runnings.filter(running => running !== graphicAnimate);\n if (this.runnings.length === 0) {\n this.animationEnd();\n }\n });\n }\n\n private animateTimeSlice(\n graphicAnimate: IGraphicAnimate,\n timeSlice: IAnimationTimeSlice,\n animationParameters: IAnimationParameters,\n parameters: any\n ) {\n const delay = timeSlice.delay as number;\n const delayAfter = timeSlice.delayAfter as number;\n const duration = timeSlice.duration as number;\n const effects = timeSlice.effects as IAnimationEffect[];\n\n // wait in loop animation before animation starts\n if (delay > 0) {\n graphicAnimate.wait(delay);\n }\n\n if (effects.length < 0) {\n graphicAnimate.wait(duration);\n } else {\n const customAnimates = effects\n .map((effect, index) => {\n const attributes =\n (effect.type\n ? typeAnimationAttributes(this.element, effect, animationParameters, parameters)\n : effect.channel\n ? channelAnimationAttributes(this.element, effect, animationParameters, parameters)\n : undefined) ?? {};\n\n const customOption = attributes.custom || effect?.custom;\n const customParametersOption = attributes?.customParameters || effect?.customParameters;\n\n if (\n attributes.from &&\n Object.keys(attributes.from).length &&\n this.unit &&\n this.animationOptions.timeline.controlOptions.immediatelyApply &&\n this.element.mark.markType !== 'component'\n ) {\n this.element.getGraphicItem().setAttributes(attributes.from);\n }\n\n const isCustomAnimate = isCustomAnimateCtor(customOption);\n const isCustomInterpolator = !isNil(customOption) && !isCustomAnimateCtor(customOption);\n\n if (isCustomInterpolator) {\n return new CustomInterpolator(attributes.from, attributes.to, duration, effect.easing, {\n interpolator: customOption as IAnimationChannelInterpolator,\n element: this.element,\n parameters: customParametersOption\n });\n } else if (isCustomAnimate) {\n return new (customOption as IAnimationCustomConstructor)(\n attributes.from,\n attributes.to,\n duration,\n effect.easing,\n customParametersOption\n );\n } else if (attributes.to) {\n return new AttributeAnimate(attributes.from, attributes.to, duration, effect.easing);\n }\n })\n .filter(animate => !isNil(animate));\n\n if (customAnimates.length === 1) {\n graphicAnimate.play(customAnimates[0]);\n } else if (customAnimates.length > 1) {\n graphicAnimate.play(new AnimateGroup(duration, customAnimates));\n }\n }\n\n if (delayAfter > 0) {\n graphicAnimate.wait(delayAfter);\n }\n }\n}\n"]}
@@ -1,12 +1,2 @@
1
- import type { IGrammarBase, IMark, IRunningConfig } from '../../types';
2
- import type { DiffResult } from '../../types/base';
3
- import type { IMorph } from '../../types/morph';
4
- export declare class Morph implements IMorph {
5
- diffGrammar<U extends IGrammarBase>(prevGrammars: U[], nextGrammars: U[]): DiffResult<U, U>;
6
- diffMark(prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig): DiffResult<IMark[], IMark[]>;
7
- private _appendMorphKeyToElements;
8
- morph(prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig): void;
9
- private diffUpdateByGroup;
10
- private doMorph;
11
- private divideElements;
12
- }
1
+ import type { IMark, IRunningConfig } from '../../types';
2
+ export declare const morph: (prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig) => void;
@@ -4,168 +4,81 @@ import { isNil, isNumber, isValidNumber } from "@visactor/vutils";
4
4
 
5
5
  import { invokeFunctionType, parseField } from "../../parse/util";
6
6
 
7
- import { diffMultiple, diffSingle, groupData } from "../mark/differ";
7
+ import { diffMultiple } from "../mark/differ";
8
8
 
9
- import { GrammarMarkType } from "../enums";
10
-
11
- const EmptyKey = Symbol.for("key");
12
-
13
- export class Morph {
14
- diffGrammar(prevGrammars, nextGrammars) {
15
- return diffSingle(prevGrammars, nextGrammars, (grammar => {
16
- var _a;
17
- return null !== (_a = grammar.id()) && void 0 !== _a ? _a : Symbol();
18
- }));
19
- }
20
- diffMark(prevMarks, nextMarks, runningConfig) {
21
- const diffResult = {
22
- enter: [],
23
- exit: [],
24
- update: []
25
- };
26
- let prevDiffMarks = [], nextDiffMarks = [];
27
- prevMarks.forEach((mark => {
28
- mark.markType !== GrammarMarkType.group && (runningConfig.morph && mark.getMorphConfig().morph || runningConfig.morphAll || runningConfig.reuse) ? prevDiffMarks.push(mark) : diffResult.exit.push({
29
- prev: [ mark ]
30
- });
31
- })), nextMarks.forEach((mark => {
32
- mark.markType !== GrammarMarkType.group && (runningConfig.morph && mark.getMorphConfig().morph || runningConfig.morphAll || runningConfig.reuse) ? nextDiffMarks.push(mark) : diffResult.enter.push({
33
- next: [ mark ]
34
- });
35
- }));
36
- const keyDiffResult = this.diffUpdateByGroup(prevDiffMarks, nextDiffMarks, (mark => mark.getMorphConfig().morphKey), (mark => mark.getMorphConfig().morphKey));
37
- prevDiffMarks = keyDiffResult.prev, nextDiffMarks = keyDiffResult.next, diffResult.update = diffResult.update.concat(keyDiffResult.update);
38
- const nameDiffResult = this.diffUpdateByGroup(prevDiffMarks, nextDiffMarks, (mark => mark.id()), (mark => mark.id()));
39
- prevDiffMarks = nameDiffResult.prev, nextDiffMarks = nameDiffResult.next, diffResult.update = diffResult.update.concat(nameDiffResult.update);
40
- const prevParentGroup = groupData(prevDiffMarks, (mark => {
41
- var _a, _b;
42
- return null === (_b = null === (_a = mark.group) || void 0 === _a ? void 0 : _a.id) || void 0 === _b ? void 0 : _b.call(_a);
43
- })), nextParentGroup = groupData(nextDiffMarks, (mark => {
44
- var _a, _b;
45
- return null === (_b = null === (_a = mark.group) || void 0 === _a ? void 0 : _a.id) || void 0 === _b ? void 0 : _b.call(_a);
9
+ const doMorph = (prev, next, runningConfig, onEnd, parameters) => {
10
+ var _a, _b;
11
+ const morphData = {
12
+ prev: prev.map((element => element.getDatum())),
13
+ next: next.map((element => element.getDatum()))
14
+ }, morphElements = {
15
+ prev: prev.slice(),
16
+ next: next.slice()
17
+ }, easing = runningConfig.animation.easing, delay = invokeFunctionType(runningConfig.animation.delay, parameters, morphData, morphElements), duration = invokeFunctionType(runningConfig.animation.duration, parameters, morphData, morphElements), oneByOne = invokeFunctionType(runningConfig.animation.oneByOne, parameters, morphData, morphElements), splitPath = invokeFunctionType(runningConfig.animation.splitPath, parameters, morphData, morphElements), individualDelay = isValidNumber(oneByOne) && oneByOne > 0 ? index => isNumber(oneByOne) ? index * oneByOne : !0 === oneByOne ? index * duration : 0 : void 0;
18
+ 1 !== prev.length && 0 !== prev.length || 1 !== next.length ? 1 === prev.length && next.length > 1 ? oneToMultiMorph(prev[0].getGraphicItem(), next.map((element => element.getGraphicItem())), {
19
+ delay: delay,
20
+ duration: duration,
21
+ easing: easing,
22
+ onEnd: onEnd,
23
+ individualDelay: individualDelay,
24
+ splitPath: splitPath
25
+ }) : prev.length > 1 && 1 === next.length && multiToOneMorph(prev.map((element => element.getGraphicItem())), next[0].getGraphicItem(), {
26
+ delay: delay,
27
+ duration: duration,
28
+ easing: easing,
29
+ onEnd: onEnd,
30
+ individualDelay: individualDelay,
31
+ splitPath: splitPath
32
+ }) : morphPath(null === (_b = null === (_a = prev[0]) || void 0 === _a ? void 0 : _a.getGraphicItem) || void 0 === _b ? void 0 : _b.call(_a), next[0].getGraphicItem(), {
33
+ delay: delay,
34
+ duration: duration,
35
+ easing: easing,
36
+ onEnd: onEnd
37
+ });
38
+ }, divideElements = (elements, count) => {
39
+ const divideLength = Math.floor(elements.length / count);
40
+ return new Array(count).fill(0).map(((i, index) => elements.slice(divideLength * index, index === count - 1 ? elements.length : divideLength * (index + 1))));
41
+ }, appendMorphKeyToElements = mark => {
42
+ const config = mark.getMorphConfig();
43
+ if (!isNil(config.morphElementKey)) {
44
+ const getter = parseField(config.morphElementKey);
45
+ mark.elements && mark.elements.forEach((el => {
46
+ el.morphKey = getter(el.getDatum());
46
47
  }));
47
- return Object.keys(nextParentGroup).forEach((groupName => {
48
- const prevChildren = prevParentGroup.data.get(groupName), nextChildren = nextParentGroup.data.get(groupName);
49
- if (prevChildren && nextChildren) {
50
- for (let i = 0; i < Math.max(prevChildren.length, nextChildren.length); i += 1) {
51
- const prevChild = prevChildren[i], nextChild = nextChildren[i];
52
- prevChild && nextChild ? diffResult.update.push({
53
- prev: [ prevChild ],
54
- next: [ nextChild ]
55
- }) : prevChild ? diffResult.exit.push({
56
- prev: [ prevChild ]
57
- }) : nextChild && diffResult.enter.push({
58
- next: [ nextChild ]
59
- });
60
- }
61
- prevDiffMarks = prevDiffMarks.filter((mark => !prevChildren.includes(mark))), nextDiffMarks = nextDiffMarks.filter((mark => !nextChildren.includes(mark)));
62
- }
63
- })), prevDiffMarks.forEach((mark => diffResult.exit.push({
64
- prev: [ mark ]
65
- }))), nextDiffMarks.forEach((mark => diffResult.enter.push({
66
- next: [ mark ]
67
- }))), diffResult;
68
- }
69
- _appendMorphKeyToElements(mark) {
70
- const config = mark.getMorphConfig();
71
- if (!isNil(config.morphElementKey)) {
72
- const getter = parseField(config.morphElementKey);
73
- mark.elements && mark.elements.forEach((el => {
74
- el.morphKey = getter(el.getDatum());
75
- }));
76
- }
77
48
  }
78
- morph(prevMarks, nextMarks, runningConfig) {
79
- const prevElements = prevMarks.reduce(((elements, mark) => (this._appendMorphKeyToElements(mark),
80
- elements.concat(mark.elements))), []), nextElements = nextMarks.reduce(((elements, mark) => (this._appendMorphKeyToElements(mark),
81
- elements.concat(mark.elements))), []), diffResult = diffMultiple(prevElements, nextElements, (element => {
82
- var _a;
83
- return null !== (_a = element.morphKey) && void 0 !== _a ? _a : element.key;
84
- }));
85
- prevMarks.forEach((mark => {
86
- var _a, _b;
87
- return null === (_b = null === (_a = mark.animate) || void 0 === _a ? void 0 : _a.disable) || void 0 === _b ? void 0 : _b.call(_a);
88
- })), nextMarks.forEach((mark => {
49
+ };
50
+
51
+ export const morph = (prevMarks, nextMarks, runningConfig) => {
52
+ const prevElements = prevMarks.reduce(((elements, mark) => (appendMorphKeyToElements(mark),
53
+ elements.concat(mark.elements))), []), nextElements = nextMarks.reduce(((elements, mark) => (appendMorphKeyToElements(mark),
54
+ elements.concat(mark.elements))), []), diffResult = diffMultiple(prevElements, nextElements, (element => {
55
+ var _a;
56
+ return null !== (_a = element.morphKey) && void 0 !== _a ? _a : element.key;
57
+ }));
58
+ prevMarks.forEach((mark => {
59
+ var _a, _b;
60
+ return null === (_b = null === (_a = mark.animate) || void 0 === _a ? void 0 : _a.disable) || void 0 === _b ? void 0 : _b.call(_a);
61
+ })), nextMarks.forEach((mark => {
62
+ var _a, _b;
63
+ return null === (_b = null === (_a = mark.animate) || void 0 === _a ? void 0 : _a.disable) || void 0 === _b ? void 0 : _b.call(_a);
64
+ }));
65
+ const parameters = prevMarks.concat(nextMarks).reduce(((parameters, mark) => (Object.assign(parameters, mark.parameters()),
66
+ parameters)), {});
67
+ let morphCount = 0;
68
+ const onMorphEnd = () => {
69
+ morphCount -= 1, 0 === morphCount && nextMarks.forEach((mark => {
89
70
  var _a, _b;
90
- return null === (_b = null === (_a = mark.animate) || void 0 === _a ? void 0 : _a.disable) || void 0 === _b ? void 0 : _b.call(_a);
91
- }));
92
- const parameters = prevMarks.concat(nextMarks).reduce(((parameters, mark) => (Object.assign(parameters, mark.parameters()),
93
- parameters)), {});
94
- let morphCount = 0;
95
- const onMorphEnd = () => {
96
- morphCount -= 1, 0 === morphCount && nextMarks.forEach((mark => {
97
- var _a, _b;
98
- null === (_b = null === (_a = mark.animate) || void 0 === _a ? void 0 : _a.enable) || void 0 === _b || _b.call(_a);
99
- }));
100
- };
101
- diffResult.enter.forEach((diff => {
102
- diff.next.forEach((element => {
103
- this.doMorph([], [ element ], runningConfig, onMorphEnd, parameters);
104
- })), morphCount += 1;
105
- })), diffResult.update.forEach((diff => {
106
- const divideCount = Math.min(diff.prev.length, diff.next.length), prevDivide = this.divideElements(diff.prev, divideCount), nextDivide = this.divideElements(diff.next, divideCount);
107
- for (let i = 0; i < divideCount; i++) this.doMorph(prevDivide[i], nextDivide[i], runningConfig, onMorphEnd, parameters),
108
- morphCount += 1;
109
- }));
110
- }
111
- diffUpdateByGroup(prev, next, prevKey, nextKey) {
112
- const prevGroup = groupData(prev, (datum => {
113
- var _a;
114
- return null !== (_a = prevKey(datum)) && void 0 !== _a ? _a : EmptyKey;
115
- })), nextGroup = groupData(next, (datum => {
116
- var _a;
117
- return null !== (_a = nextKey(datum)) && void 0 !== _a ? _a : EmptyKey;
71
+ null === (_b = null === (_a = mark.animate) || void 0 === _a ? void 0 : _a.enable) || void 0 === _b || _b.call(_a);
118
72
  }));
119
- let prevAfterDiff = prev, nextAfterDiff = next;
120
- const update = [];
121
- return nextGroup.keys.forEach((key => {
122
- if (key !== EmptyKey) {
123
- const prevKeyData = prevGroup.data.get(key), nextKeyData = nextGroup.data.get(key);
124
- prevKeyData && nextKeyData && (update.push({
125
- prev: prevKeyData,
126
- next: nextKeyData
127
- }), prevAfterDiff = prevAfterDiff.filter((datum => !prevKeyData.includes(datum))),
128
- nextAfterDiff = nextAfterDiff.filter((datum => !nextKeyData.includes(datum))));
129
- }
130
- })), {
131
- prev: prevAfterDiff,
132
- next: nextAfterDiff,
133
- update: update
134
- };
135
- }
136
- doMorph(prev, next, runningConfig, onEnd, parameters) {
137
- var _a, _b;
138
- const morphData = {
139
- prev: prev.map((element => element.getDatum())),
140
- next: next.map((element => element.getDatum()))
141
- }, morphElements = {
142
- prev: prev.slice(),
143
- next: next.slice()
144
- }, easing = runningConfig.animation.easing, delay = invokeFunctionType(runningConfig.animation.delay, parameters, morphData, morphElements), duration = invokeFunctionType(runningConfig.animation.duration, parameters, morphData, morphElements), oneByOne = invokeFunctionType(runningConfig.animation.oneByOne, parameters, morphData, morphElements), splitPath = invokeFunctionType(runningConfig.animation.splitPath, parameters, morphData, morphElements), individualDelay = isValidNumber(oneByOne) && oneByOne > 0 ? index => isNumber(oneByOne) ? index * oneByOne : !0 === oneByOne ? index * duration : 0 : void 0;
145
- 1 !== prev.length && 0 !== prev.length || 1 !== next.length ? 1 === prev.length && next.length > 1 ? oneToMultiMorph(prev[0].getGraphicItem(), next.map((element => element.getGraphicItem())), {
146
- delay: delay,
147
- duration: duration,
148
- easing: easing,
149
- onEnd: onEnd,
150
- individualDelay: individualDelay,
151
- splitPath: splitPath
152
- }) : prev.length > 1 && 1 === next.length && multiToOneMorph(prev.map((element => element.getGraphicItem())), next[0].getGraphicItem(), {
153
- delay: delay,
154
- duration: duration,
155
- easing: easing,
156
- onEnd: onEnd,
157
- individualDelay: individualDelay,
158
- splitPath: splitPath
159
- }) : morphPath(null === (_b = null === (_a = prev[0]) || void 0 === _a ? void 0 : _a.getGraphicItem) || void 0 === _b ? void 0 : _b.call(_a), next[0].getGraphicItem(), {
160
- delay: delay,
161
- duration: duration,
162
- easing: easing,
163
- onEnd: onEnd
164
- });
165
- }
166
- divideElements(elements, count) {
167
- const divideLength = Math.floor(elements.length / count);
168
- return new Array(count).fill(0).map(((i, index) => elements.slice(divideLength * index, index === count - 1 ? elements.length : divideLength * (index + 1))));
169
- }
170
- }
73
+ };
74
+ diffResult.enter.forEach((diff => {
75
+ diff.next.forEach((element => {
76
+ doMorph([], [ element ], runningConfig, onMorphEnd, parameters);
77
+ })), morphCount += 1;
78
+ })), diffResult.update.forEach((diff => {
79
+ const divideCount = Math.min(diff.prev.length, diff.next.length), prevDivide = divideElements(diff.prev, divideCount), nextDivide = divideElements(diff.next, divideCount);
80
+ for (let i = 0; i < divideCount; i++) doMorph(prevDivide[i], nextDivide[i], runningConfig, onMorphEnd, parameters),
81
+ morphCount += 1;
82
+ }));
83
+ };
171
84
  //# sourceMappingURL=morph.js.map