@visactor/vrender-components 1.1.0-alpha.23 → 1.1.0-alpha.25

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 (212) hide show
  1. package/cjs/animation/axis-animate.d.ts +1 -1
  2. package/cjs/animation/axis-animate.js +7 -7
  3. package/cjs/animation/axis-animate.js.map +1 -1
  4. package/cjs/animation/label-animate.d.ts +1 -1
  5. package/cjs/animation/label-animate.js +10 -20
  6. package/cjs/animation/label-animate.js.map +1 -1
  7. package/cjs/axis/animate/group-transition.d.ts +3 -2
  8. package/cjs/axis/animate/group-transition.js +3 -3
  9. package/cjs/axis/animate/group-transition.js.map +1 -1
  10. package/cjs/axis/base.js +2 -2
  11. package/cjs/axis/base.js.map +1 -1
  12. package/cjs/axis/overlap/auto-hide.d.ts +1 -1
  13. package/cjs/axis/overlap/auto-hide.js.map +1 -1
  14. package/cjs/axis/register.js +8 -7
  15. package/cjs/axis/register.js.map +1 -1
  16. package/cjs/brush/register.js +2 -2
  17. package/cjs/brush/register.js.map +1 -1
  18. package/cjs/checkbox/register.js +3 -3
  19. package/cjs/checkbox/register.js.map +1 -1
  20. package/cjs/core/base.d.ts +2 -2
  21. package/cjs/core/base.js +3 -3
  22. package/cjs/core/base.js.map +1 -1
  23. package/cjs/crosshair/register.js +7 -7
  24. package/cjs/crosshair/register.js.map +1 -1
  25. package/cjs/data-zoom/register.js +3 -3
  26. package/cjs/data-zoom/register.js.map +1 -1
  27. package/cjs/empty-tip/register.js +3 -2
  28. package/cjs/empty-tip/register.js.map +1 -1
  29. package/cjs/index.d.ts +1 -1
  30. package/cjs/index.js +1 -1
  31. package/cjs/index.js.map +1 -1
  32. package/cjs/indicator/register.js +3 -2
  33. package/cjs/indicator/register.js.map +1 -1
  34. package/cjs/jsx/component-type.d.ts +2 -3
  35. package/cjs/jsx/component-type.js.map +1 -1
  36. package/cjs/label/base.js +11 -11
  37. package/cjs/label/base.js.map +1 -1
  38. package/cjs/label/register.js +4 -3
  39. package/cjs/label/register.js.map +1 -1
  40. package/cjs/label-item/register.js +3 -3
  41. package/cjs/label-item/register.js.map +1 -1
  42. package/cjs/legend/register.js +3 -3
  43. package/cjs/legend/register.js.map +1 -1
  44. package/cjs/link-path/register.js +2 -2
  45. package/cjs/link-path/register.js.map +1 -1
  46. package/cjs/marker/animate/animate.d.ts +1 -1
  47. package/cjs/marker/animate/animate.js.map +1 -1
  48. package/cjs/marker/animate/call-in.d.ts +2 -2
  49. package/cjs/marker/animate/call-in.js +5 -4
  50. package/cjs/marker/animate/call-in.js.map +1 -1
  51. package/cjs/marker/animate/clip-in.js +5 -4
  52. package/cjs/marker/animate/clip-in.js.map +1 -1
  53. package/cjs/marker/animate/common.d.ts +1 -0
  54. package/cjs/marker/animate/common.js +13 -8
  55. package/cjs/marker/animate/common.js.map +1 -1
  56. package/cjs/marker/animate/fade-in.d.ts +1 -1
  57. package/cjs/marker/animate/fade-in.js.map +1 -1
  58. package/cjs/marker/animate/fade-out.d.ts +1 -1
  59. package/cjs/marker/animate/fade-out.js.map +1 -1
  60. package/cjs/marker/arc-area.d.ts +1 -1
  61. package/cjs/marker/area.d.ts +1 -1
  62. package/cjs/marker/common-line.d.ts +1 -1
  63. package/cjs/marker/point.d.ts +1 -1
  64. package/cjs/marker/register.js +8 -8
  65. package/cjs/marker/register.js.map +1 -1
  66. package/cjs/marker/type.d.ts +6 -4
  67. package/cjs/marker/type.js.map +1 -1
  68. package/cjs/pager/register.js +3 -2
  69. package/cjs/pager/register.js.map +1 -1
  70. package/cjs/player/register.js +3 -3
  71. package/cjs/player/register.js.map +1 -1
  72. package/cjs/poptip/register.js +3 -3
  73. package/cjs/poptip/register.js.map +1 -1
  74. package/cjs/radio/register.js +3 -3
  75. package/cjs/radio/register.js.map +1 -1
  76. package/cjs/scrollbar/register.js +2 -2
  77. package/cjs/scrollbar/register.js.map +1 -1
  78. package/cjs/segment/register.js +5 -5
  79. package/cjs/segment/register.js.map +1 -1
  80. package/cjs/slider/register.js +3 -3
  81. package/cjs/slider/register.js.map +1 -1
  82. package/cjs/switch/register.js +3 -3
  83. package/cjs/switch/register.js.map +1 -1
  84. package/cjs/table-series-number/register.js +3 -2
  85. package/cjs/table-series-number/register.js.map +1 -1
  86. package/cjs/tag/register.js +4 -3
  87. package/cjs/tag/register.js.map +1 -1
  88. package/cjs/timeline/register.js +3 -3
  89. package/cjs/timeline/register.js.map +1 -1
  90. package/cjs/title/register.js +3 -2
  91. package/cjs/title/register.js.map +1 -1
  92. package/cjs/tooltip/register.js +3 -3
  93. package/cjs/tooltip/register.js.map +1 -1
  94. package/cjs/tooltip/tooltip.js +8 -8
  95. package/cjs/tooltip/tooltip.js.map +1 -1
  96. package/cjs/util/event.js +2 -2
  97. package/cjs/util/event.js.map +1 -1
  98. package/cjs/util/graphic-creator.js +1 -1
  99. package/cjs/util/graphic-creator.js.map +1 -1
  100. package/cjs/util/text.js +3 -3
  101. package/cjs/util/text.js.map +1 -1
  102. package/cjs/weather/register.js +2 -2
  103. package/cjs/weather/register.js.map +1 -1
  104. package/cjs/weather/weather-box.js +5 -5
  105. package/cjs/weather/weather-box.js.map +1 -1
  106. package/dist/index.es.js +7745 -8253
  107. package/es/animation/axis-animate.d.ts +1 -1
  108. package/es/animation/axis-animate.js +5 -1
  109. package/es/animation/axis-animate.js.map +1 -1
  110. package/es/animation/label-animate.d.ts +1 -1
  111. package/es/animation/label-animate.js +8 -12
  112. package/es/animation/label-animate.js.map +1 -1
  113. package/es/axis/animate/group-transition.d.ts +3 -2
  114. package/es/axis/animate/group-transition.js +2 -2
  115. package/es/axis/animate/group-transition.js.map +1 -1
  116. package/es/axis/base.js +1 -1
  117. package/es/axis/base.js.map +1 -1
  118. package/es/axis/overlap/auto-hide.d.ts +1 -1
  119. package/es/axis/overlap/auto-hide.js.map +1 -1
  120. package/es/axis/register.js +13 -1
  121. package/es/axis/register.js.map +1 -1
  122. package/es/brush/register.js +3 -1
  123. package/es/brush/register.js.map +1 -1
  124. package/es/checkbox/register.js +7 -1
  125. package/es/checkbox/register.js.map +1 -1
  126. package/es/core/base.d.ts +2 -2
  127. package/es/core/base.js +3 -1
  128. package/es/core/base.js.map +1 -1
  129. package/es/crosshair/register.js +9 -1
  130. package/es/crosshair/register.js.map +1 -1
  131. package/es/data-zoom/register.js +7 -1
  132. package/es/data-zoom/register.js.map +1 -1
  133. package/es/empty-tip/register.js +5 -1
  134. package/es/empty-tip/register.js.map +1 -1
  135. package/es/index.d.ts +1 -1
  136. package/es/index.js +1 -1
  137. package/es/index.js.map +1 -1
  138. package/es/indicator/register.js +5 -1
  139. package/es/indicator/register.js.map +1 -1
  140. package/es/jsx/component-type.d.ts +2 -3
  141. package/es/jsx/component-type.js.map +1 -1
  142. package/es/label/base.js +3 -1
  143. package/es/label/base.js.map +1 -1
  144. package/es/label/register.js +7 -1
  145. package/es/label/register.js.map +1 -1
  146. package/es/label-item/register.js +7 -1
  147. package/es/label-item/register.js.map +1 -1
  148. package/es/legend/register.js +3 -1
  149. package/es/legend/register.js.map +1 -1
  150. package/es/link-path/register.js +3 -1
  151. package/es/link-path/register.js.map +1 -1
  152. package/es/marker/animate/animate.d.ts +1 -1
  153. package/es/marker/animate/animate.js.map +1 -1
  154. package/es/marker/animate/call-in.d.ts +2 -2
  155. package/es/marker/animate/call-in.js +6 -4
  156. package/es/marker/animate/call-in.js.map +1 -1
  157. package/es/marker/animate/clip-in.js +6 -4
  158. package/es/marker/animate/clip-in.js.map +1 -1
  159. package/es/marker/animate/common.d.ts +1 -0
  160. package/es/marker/animate/common.js +9 -4
  161. package/es/marker/animate/common.js.map +1 -1
  162. package/es/marker/animate/fade-in.d.ts +1 -1
  163. package/es/marker/animate/fade-in.js.map +1 -1
  164. package/es/marker/animate/fade-out.d.ts +1 -1
  165. package/es/marker/animate/fade-out.js.map +1 -1
  166. package/es/marker/arc-area.d.ts +1 -1
  167. package/es/marker/area.d.ts +1 -1
  168. package/es/marker/common-line.d.ts +1 -1
  169. package/es/marker/point.d.ts +1 -1
  170. package/es/marker/register.js +12 -2
  171. package/es/marker/register.js.map +1 -1
  172. package/es/marker/type.d.ts +6 -4
  173. package/es/marker/type.js.map +1 -1
  174. package/es/pager/register.js +5 -1
  175. package/es/pager/register.js.map +1 -1
  176. package/es/player/register.js +3 -1
  177. package/es/player/register.js.map +1 -1
  178. package/es/poptip/register.js +7 -1
  179. package/es/poptip/register.js.map +1 -1
  180. package/es/radio/register.js +7 -1
  181. package/es/radio/register.js.map +1 -1
  182. package/es/scrollbar/register.js +3 -1
  183. package/es/scrollbar/register.js.map +1 -1
  184. package/es/segment/register.js +9 -1
  185. package/es/segment/register.js.map +1 -1
  186. package/es/slider/register.js +7 -1
  187. package/es/slider/register.js.map +1 -1
  188. package/es/switch/register.js +7 -1
  189. package/es/switch/register.js.map +1 -1
  190. package/es/table-series-number/register.js +5 -1
  191. package/es/table-series-number/register.js.map +1 -1
  192. package/es/tag/register.js +9 -1
  193. package/es/tag/register.js.map +1 -1
  194. package/es/timeline/register.js +7 -1
  195. package/es/timeline/register.js.map +1 -1
  196. package/es/title/register.js +5 -1
  197. package/es/title/register.js.map +1 -1
  198. package/es/tooltip/register.js +9 -1
  199. package/es/tooltip/register.js.map +1 -1
  200. package/es/tooltip/tooltip.js +3 -1
  201. package/es/tooltip/tooltip.js.map +1 -1
  202. package/es/util/event.js +1 -1
  203. package/es/util/event.js.map +1 -1
  204. package/es/util/graphic-creator.js +1 -1
  205. package/es/util/graphic-creator.js.map +1 -1
  206. package/es/util/text.js +1 -1
  207. package/es/util/text.js.map +1 -1
  208. package/es/weather/register.js +3 -1
  209. package/es/weather/register.js.map +1 -1
  210. package/es/weather/weather-box.js +3 -1
  211. package/es/weather/weather-box.js.map +1 -1
  212. package/package.json +218 -4
@@ -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 AxisEnter extends AComponentAnimate<any> {
3
3
  onBind(): void;
4
4
  }
@@ -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
 
@@ -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 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"]}
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"]}
@@ -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"]}
@@ -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":"AAAA,OAAO,EAAE,WAAW,EAA+C,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAa,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE3E,MAAM,OAAO,eAAgB,SAAQ,cAAmB;IAAxD;;QAKE,SAAI,GAAG,WAAW,CAAC,MAAM,CAAC;IA0G5B,CAAC;IAxGC,MAAM;QACJ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAEpD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACrD,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;SACR;QAED,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAI7B,aAAa,CAAC,gBAAgB,EAAE,CAAC,EAAY,EAAE,EAAE;;YAC/C,IAAK,EAAe,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAI,KAAK,EAAE;oBACT,IAAI,CAAC,OAAO,CAAE,EAAe,CAAC,SAAS,EAAG,KAAkB,CAAC,SAAS,CAAC,EAAE;wBAEvE,MAAM,QAAQ,GAAG,SAAS,CAAE,EAAe,CAAC,SAAS,CAAC,CAAC;wBACvD,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;4BAC/B,KAAK,EAAE,QAAQ;4BACf,IAAI,EAAE,EAAE;4BACR,KAAK,kCACA,QAAQ,KACX,OAAO,EAAE,MAAA,QAAQ,CAAC,OAAO,mCAAI,CAAC,EAC9B,WAAW,EAAE,MAAA,QAAQ,CAAC,WAAW,mCAAI,CAAC,EACtC,aAAa,EAAE,MAAA,QAAQ,CAAC,aAAa,mCAAI,CAAC,GAC3C;yBACF,CAAC;wBAEF,2BAA2B,CACzB,EAAc,EACd,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EACpC,SAAS,CAAE,KAAkB,CAAC,SAAS,CAAC,CACzC,CAAC;qBACH;iBACF;qBAAM;oBAEL,MAAM,iBAAiB,GAAG;wBACxB,OAAO,EAAE,MAAA,EAAE,CAAC,SAAS,CAAC,OAAO,mCAAI,CAAC;wBAClC,WAAW,EAAE,MAAA,EAAE,CAAC,SAAS,CAAC,WAAW,mCAAI,CAAC;wBAC1C,aAAa,EAAE,MAAA,EAAE,CAAC,SAAS,CAAC,aAAa,mCAAI,CAAC;qBAC/C,CAAC;oBACF,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;wBAC/B,KAAK,EAAE,OAAO;wBACd,IAAI,EAAE,EAAE;wBACR,KAAK,EAAE,iBAAiB;qBACzB,CAAC;oBACF,2BAA2B,CAAC,EAAc,EAAE,iBAAiB,EAAE;wBAC7D,OAAO,EAAE,CAAC;wBACV,WAAW,EAAE,CAAC;wBACd,aAAa,EAAE,CAAC;qBACjB,CAAC,CAAC;iBACJ;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAGzB,IAAI,CAAC,kBAAkB;YACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;;gBAChD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBAC3D,IAAI,KAAK,KAAK,OAAO,EAAE;oBACrB,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAC;oBACzC,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACrE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;iBAC/C;gBACD,IAAK,IAAiB,CAAC,IAAI,KAAK,MAAM,EAAE;oBACrC,IAAiB;yBACf,OAAO,CAAC;wBACP,WAAW,CAAC,GAAW,EAAE,KAAa,EAAE,IAAS,EAAE,EAAO,EAAE,cAAmB;4BAC7E,IAAI,GAAG,KAAK,MAAM,EAAE;gCAClB,cAAc,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gCACzD,OAAO,IAAI,CAAC;6BACb;4BAED,OAAO,KAAK,CAAC;wBACf,CAAC;qBACF,CAAC;yBAED,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAoB,CAAC,CAAC;iBAC9C;qBAAM;oBACJ,IAAiB;yBACf,OAAO,EAAE;yBAET,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAoB,CAAC,CAAC;iBAC9C;YACH,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,GAAY,EAAE,KAAa,EAAE,GAAwB;IAE9D,CAAC;CACF","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.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
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/axis/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * TODO:\n * 1. trunk 坐标轴截断\n * @description 坐标轴组件基类\n */\nimport type {\n IGroup,\n INode,\n ITextGraphicAttribute,\n TextAlignType,\n TextBaselineType,\n FederatedPointerEvent,\n IGraphic,\n IText\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { diff } from '@visactor/vrender-core';\nimport { graphicCreator } from '../util/graphic-creator';\nimport type { Dict } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { abs, cloneDeep, get, isEmpty, isFunction, merge, pi } from '@visactor/vutils';\nimport type { ComponentExitReleaseOptions, Point } from '../core/type';\nimport type { TagAttributes } from '../tag';\nimport { createTextGraphicByType, traverseGroup } from '../util';\nimport { DEFAULT_STATES } from '../constant';\nimport { AXIS_ELEMENT_NAME } from './constant';\nimport { DEFAULT_AXIS_THEME } from './config';\nimport type {\n LabelAttributes,\n AxisBaseAttributes,\n AxisItem,\n TickAttributes,\n TransformedAxisItem,\n SubTickAttributes,\n TickLineItem,\n callbackFunc\n} from './type';\nimport { Tag } from '../tag/tag';\nimport { getElMap, getVerticalCoord } from './util';\nimport { dispatchClickState, dispatchHoverState, dispatchUnHoverState } from '../util/interaction';\nimport { AnimateComponent } from '../animation/animate-component';\nimport { commitUpdateAnimationTarget } from '../animation/static-truth';\nimport {\n appendExitReleaseCallback,\n bindExitReleaseAnimates,\n collectTrackedAnimates,\n runExitReleaseCallbacks,\n type AnimateExitReleaseState\n} from '../animation/exit-release';\nimport { DefaultAxisAnimation } from './animate/config';\nimport type { IBaseScale } from '@visactor/vscale';\n\ntype AxisExitReleaseState = AnimateExitReleaseState;\n\nexport abstract class AxisBase<T extends AxisBaseAttributes> extends AnimateComponent<Required<T>> {\n name = 'axis';\n\n lastScale: IBaseScale;\n\n // TODO: 组件整体统一起来\n protected _innerView: IGroup;\n getInnerView() {\n return this._innerView;\n }\n\n protected _prevInnerView: { [key: string]: IGraphic }; // 缓存旧场景树,用于自定义动画\n /**\n * 获取更新前的旧场景树\n * @returns 返回更新前的旧场景树\n */\n getPrevInnerView() {\n return this._prevInnerView;\n }\n\n // 经过处理后的坐标轴点数据\n protected data: TransformedAxisItem[] = [];\n protected tickLineItems: TickLineItem[] = [];\n protected subTickLineItems: TickLineItem[] = [];\n protected axisLabelLayerSize: Dict<{\n width: number;\n height: number;\n textAlign: string;\n textBaseline: string;\n labelPos: number;\n }> = {};\n protected axisLabelsContainer: IGroup | null = null;\n protected axisContainer: IGroup;\n\n private _lastHover: IGraphic;\n private _lastSelect: IGraphic;\n private _exitReleaseState?: AxisExitReleaseState;\n\n // 用于动画diff\n protected _newElementAttrMap: Dict<any>;\n\n protected abstract renderLine(container: IGroup): void;\n abstract isInValidValue(value: number): boolean;\n abstract getTickCoord(value: number): Point;\n abstract getVerticalVector(offset: number, inside: boolean, point: Point): [number, number];\n abstract getRelativeVector(point?: Point): [number, number];\n protected abstract getTitleAttribute(): TagAttributes;\n protected abstract beforeLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract handleLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract afterLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract getLabelAlign(\n vector: [number, number],\n inside?: boolean,\n angle?: number\n ): { textAlign: TextAlignType; textBaseline: TextBaselineType };\n\n /**\n * 坐标轴的一个特殊的方法,用于不更新场景树来获取更新属性后的包围盒\n * TODO:后面看情况再抽象为通用的方法\n */\n getBoundsWithoutRender(attributes: Partial<T>) {\n const currentAttribute = cloneDeep(this.attribute);\n // scale 不能拷贝,它是一个实例,重新设置上去\n currentAttribute.scale = (this.attribute as any).scale;\n this.attribute = attributes;\n\n const offscreenGroup = graphicCreator.group({\n x: this.attribute.x,\n y: this.attribute.y\n });\n this.add(offscreenGroup);\n\n this._renderInner(offscreenGroup);\n\n this.removeChild(offscreenGroup);\n this.attribute = currentAttribute;\n return offscreenGroup.AABBBounds;\n }\n\n private _finalizeExitRelease() {\n const state = this._exitReleaseState;\n if (state?.finalized) {\n return;\n }\n\n if (state) {\n state.finalized = true;\n }\n\n const parent = this.parent;\n const removeFromParent = !!state?.removeFromParent;\n const callbacks = state?.onComplete ?? [];\n\n this._exitReleaseState = undefined;\n this._prevInnerView = null;\n this._innerView = null;\n this.axisLabelsContainer = null;\n this.axisContainer = null;\n this.removeAllChild(true);\n super.release(true);\n if (removeFromParent) {\n (parent ?? this.parent)?.removeChild(this);\n }\n\n runExitReleaseCallbacks(callbacks);\n }\n\n private _runExitAnimationBeforeRelease(options: ComponentExitReleaseOptions = {}) {\n if (this._exitReleaseState && !this._exitReleaseState.finalized) {\n this._exitReleaseState.removeFromParent = this._exitReleaseState.removeFromParent || !!options.removeFromParent;\n appendExitReleaseCallback(this._exitReleaseState, options.onComplete);\n return true;\n }\n\n if (\n !this.stage ||\n this.attribute.animation === false ||\n this.attribute.animationExit === false ||\n !this._innerView\n ) {\n return false;\n }\n\n this._prepare();\n if (!this._animationConfig?.exit) {\n return false;\n }\n\n const exitTargets = new Set<IGraphic>();\n traverseGroup(this._innerView, (el: IGraphic) => {\n if (el.type !== 'group') {\n exitTargets.add(el);\n }\n });\n\n if (!exitTargets.size) {\n return false;\n }\n\n const existingAnimates = collectTrackedAnimates(this as unknown as IGraphic);\n\n const {\n delay = 0,\n duration = DefaultAxisAnimation.duration,\n easing = DefaultAxisAnimation.easing\n } = this._animationConfig.exit as any;\n exitTargets.forEach(target => {\n const startAttrs = {\n opacity: target.attribute.opacity ?? 1,\n fillOpacity: target.attribute.fillOpacity ?? 1,\n strokeOpacity: target.attribute.strokeOpacity ?? 1\n };\n const endAttrs = {\n opacity: 0,\n fillOpacity: 0,\n strokeOpacity: 0\n };\n\n commitUpdateAnimationTarget(target, endAttrs, startAttrs);\n target.animate().wait(delay).to(endAttrs, duration, easing);\n });\n\n const animates = collectTrackedAnimates(this as unknown as IGraphic);\n const exitAnimates = animates.filter(animate => !existingAnimates.includes(animate));\n\n if (!exitAnimates.length) {\n return false;\n }\n\n this.setAttribute('childrenPickable', false);\n (this._innerView as any).removeAllEventListeners?.();\n this.releaseStatus = 'willRelease';\n\n const pendingAnimates = new Set(exitAnimates);\n this._exitReleaseState = {\n pendingAnimates,\n finalized: false,\n removeFromParent: !!options.removeFromParent,\n onComplete: options.onComplete ? [options.onComplete] : []\n };\n\n bindExitReleaseAnimates(\n exitAnimates,\n () => this._exitReleaseState,\n () => this._finalizeExitRelease()\n );\n\n return true;\n }\n\n releaseWithExitAnimation(options: ComponentExitReleaseOptions = {}): boolean {\n if (this.releaseStatus === 'released') {\n return false;\n }\n\n return this._runExitAnimationBeforeRelease(options);\n }\n\n protected render(): void {\n if (this._exitReleaseState) {\n return;\n }\n\n this._prepare();\n this._prevInnerView = this._innerView && getElMap(this._innerView);\n this.removeAllChild(true);\n this._innerView = graphicCreator.group({ x: 0, y: 0, pickable: false });\n this.add(this._innerView);\n this._renderInner(this._innerView);\n\n this._bindEvent();\n // 尝试执行动画\n this.runAnimation();\n }\n\n protected _prepare() {\n this._prepareAnimate(DefaultAxisAnimation);\n }\n\n private _bindEvent() {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const { hover, select } = this.attribute;\n\n if (hover) {\n this._innerView.addEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n this._innerView.addEventListener('pointerout', this._onUnHover as EventListenerOrEventListenerObject);\n }\n\n if (select) {\n this._innerView.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchHoverState(e, this.axisContainer, this._lastHover);\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchUnHoverState(e, this.axisContainer, this._lastHover);\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n this._lastSelect = dispatchClickState(e, this.axisContainer, this._lastSelect);\n };\n\n protected _renderInner(container: IGroup) {\n const { title, label, tick, line, items } = this.attribute;\n\n const axisContainer = graphicCreator.group({ x: 0, y: 0, zIndex: 1, pickable: false });\n axisContainer.name = AXIS_ELEMENT_NAME.axisContainer;\n axisContainer.id = this._getNodeId('container');\n axisContainer.setMode(this.mode);\n this.axisContainer = axisContainer;\n container.add(axisContainer);\n\n // 渲染轴线\n if (line && line.visible) {\n this.renderLine(axisContainer);\n }\n\n if (items && items.length) {\n this.data = this._transformItems(items[0]);\n\n // 渲染刻度线,包含子刻度线\n if (tick && tick.visible) {\n this.renderTicks(axisContainer);\n }\n // 渲染标签\n if (label && label.visible) {\n const labelGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n labelGroup.name = AXIS_ELEMENT_NAME.labelContainer;\n labelGroup.id = this._getNodeId('label-container');\n this.axisLabelsContainer = labelGroup;\n axisContainer.add(labelGroup);\n items.forEach((axisItems: AxisItem[], layer: number) => {\n const layerLabelGroup = this.renderLabels(labelGroup, axisItems, layer);\n\n const labels = layerLabelGroup.getChildren() as IText[];\n this.beforeLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n // handle overlap\n this.handleLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n this.afterLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n\n let maxTextWidth = 0;\n let maxTextHeight = 0;\n let textAlign = 'center';\n let textBaseline = 'middle';\n let labelPos: number = 0;\n labels.forEach((label: IText, index) => {\n const labelStyle = label.attribute;\n\n const angle = labelStyle.angle ?? 0;\n const textBounds = label.AABBBounds;\n let textWidth = textBounds.width();\n let textHeight = textBounds.height();\n if (angle) {\n textWidth = Math.abs(textWidth * Math.cos(angle));\n textHeight = Math.abs(textHeight * Math.sin(angle));\n }\n maxTextWidth = Math.max(maxTextWidth, textWidth);\n maxTextHeight = Math.max(maxTextHeight, textHeight);\n\n textAlign = labelStyle.textAlign as string;\n textBaseline = labelStyle.textBaseline as string;\n if (index === 0) {\n labelPos = labelStyle.x;\n }\n });\n this.axisLabelLayerSize[layer] = {\n width: maxTextWidth,\n height: maxTextHeight,\n\n labelPos,\n textAlign,\n textBaseline\n };\n });\n }\n }\n\n // 渲染标题\n if (title && title.visible) {\n this.renderTitle(axisContainer);\n }\n }\n protected renderTicks(container: IGroup) {\n const tickLineItems = this.getTickLineItems();\n\n const tickLineGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n tickLineGroup.name = AXIS_ELEMENT_NAME.tickContainer;\n tickLineGroup.id = this._getNodeId('tick-container');\n container.add(tickLineGroup);\n\n tickLineItems.forEach((item: TickLineItem, index) => {\n const line = graphicCreator.line({\n ...this._getTickLineAttribute('tick', item, index, tickLineItems)\n });\n line.name = AXIS_ELEMENT_NAME.tick;\n line.id = this._getNodeId(item.id);\n\n if (isEmpty(this.attribute.tick?.state)) {\n line.states = DEFAULT_STATES;\n } else {\n const data = this.data[index];\n const tickLineState = merge({}, DEFAULT_STATES, this.attribute.tick.state);\n Object.keys(tickLineState).forEach(key => {\n if (isFunction(tickLineState[key])) {\n tickLineState[key] = tickLineState[key](data.rawValue, index, data, this.data);\n }\n });\n line.states = tickLineState;\n }\n\n tickLineGroup.add(line);\n });\n this.tickLineItems = tickLineItems;\n\n // subTick 处理\n const { subTick } = this.attribute;\n if (subTick && subTick.visible) {\n const subTickLineItems: TickLineItem[] = this.getSubTickLineItems();\n if (subTickLineItems.length) {\n subTickLineItems.forEach((item: TickLineItem, index) => {\n const line = graphicCreator.line({\n ...this._getTickLineAttribute('subTick', item, index, tickLineItems)\n });\n line.name = AXIS_ELEMENT_NAME.subTick;\n line.id = this._getNodeId(`${index}`);\n\n if (isEmpty(subTick.state)) {\n line.states = DEFAULT_STATES;\n } else {\n const subTickLineState = merge({}, DEFAULT_STATES, subTick.state);\n Object.keys(subTickLineState).forEach(key => {\n if (isFunction(subTickLineState[key])) {\n subTickLineState[key] = subTickLineState[key](item.value, index, item, tickLineItems);\n }\n });\n line.states = subTickLineState;\n }\n\n tickLineGroup.add(line);\n });\n }\n\n this.subTickLineItems = subTickLineItems;\n }\n }\n\n protected renderLabels(container: IGroup, items: AxisItem[], layer: number) {\n const { dataFilter } = this.attribute.label;\n if (dataFilter && isFunction(dataFilter)) {\n items = dataFilter(items, layer) as TransformedAxisItem[];\n }\n const data = this._transformItems(items);\n\n const labelGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n labelGroup.name = `${AXIS_ELEMENT_NAME.labelContainer}-layer-${layer}`;\n labelGroup.id = this._getNodeId(`label-container-layer-${layer}`);\n container.add(labelGroup);\n\n data.forEach((item: TransformedAxisItem, index: number) => {\n const labelStyle: any = this._getLabelAttribute(item, index, data, layer);\n const text = createTextGraphicByType(labelStyle);\n\n text.name = AXIS_ELEMENT_NAME.label;\n text.id = this._getNodeId(`layer${layer}-label-${item.id}`);\n if (isEmpty(this.attribute.label?.state)) {\n text.states = DEFAULT_STATES;\n } else {\n const labelState = merge({}, DEFAULT_STATES, this.attribute.label.state);\n Object.keys(labelState).forEach(key => {\n if (isFunction(labelState[key])) {\n labelState[key] = labelState[key](item, index, data, layer);\n }\n });\n text.states = labelState;\n }\n text.data = { ...item, index, layer };\n labelGroup.add(text);\n });\n\n return labelGroup;\n }\n\n protected renderTitle(container: IGroup) {\n const titleAttributes = this.getTitleAttribute();\n const axisTitle = new Tag({\n ...titleAttributes\n });\n axisTitle.name = AXIS_ELEMENT_NAME.title;\n axisTitle.id = this._getNodeId('title');\n container.add(axisTitle as unknown as INode);\n }\n\n protected getVerticalCoord(point: Point, offset: number, inside: boolean): Point {\n return getVerticalCoord(point, this.getVerticalVector(offset, inside, point));\n }\n\n protected getTickLineItems() {\n const { tick } = this.attribute;\n const data = this.data;\n // tick 处理\n const tickLineItems: TickLineItem[] = [];\n const { alignWithLabel, inside = false, length, dataFilter } = tick as TickAttributes;\n let tickSegment = 1;\n const count = data.length;\n if (count >= 2) {\n tickSegment = data[1].value - data[0].value;\n }\n\n (dataFilter && isFunction(dataFilter) ? dataFilter(data) : data).forEach((item: TransformedAxisItem) => {\n let point = item.point;\n let tickValue = item.value;\n if (!alignWithLabel) {\n const value = item.value - tickSegment / 2;\n if (this.isInValidValue(value)) {\n return;\n }\n point = this.getTickCoord(value);\n tickValue = value;\n }\n const endPoint = this.getVerticalCoord(point, length as number, inside);\n\n if (this.mode === '3d') {\n const vec = this.getVerticalVector(length as number, inside, point);\n let alpha = 0;\n let beta = 0;\n if (abs(vec[0]) > abs(vec[1])) {\n alpha = (pi / 2) * (endPoint.x > point.x ? 1 : -1);\n } else {\n beta = (pi / 2) * (endPoint.y > point.y ? -1 : 1);\n }\n tickLineItems.push({\n start: point,\n end: endPoint,\n value: tickValue,\n id: `tick-${item.id}`,\n anchor: [point.x, point.y],\n alpha,\n beta\n });\n } else {\n tickLineItems.push({\n start: point,\n end: endPoint,\n value: tickValue,\n id: `tick-${item.id}`\n });\n }\n });\n\n return tickLineItems;\n }\n\n protected getSubTickLineItems() {\n const { subTick } = this.attribute as AxisBaseAttributes;\n const subTickLineItems: TickLineItem[] = [];\n const { count: subCount = 4, inside = false, length = 2 } = subTick as SubTickAttributes;\n const tickLineItems = this.tickLineItems;\n const tickLineCount = tickLineItems.length;\n\n if (tickLineCount >= 2) {\n for (let i = 0; i < tickLineCount - 1; i++) {\n const pre = tickLineItems[i];\n const next = tickLineItems[i + 1];\n for (let j = 0; j < subCount; j++) {\n const percent = (j + 1) / (subCount + 1);\n const value = (1 - percent) * pre.value + percent * next.value;\n const point = this.getTickCoord(value);\n const endPoint = this.getVerticalCoord(point, length, inside);\n subTickLineItems.push({\n start: point,\n end: endPoint,\n value,\n id: `sub-tick-${value}`\n });\n }\n }\n }\n\n return subTickLineItems;\n }\n\n private _getTickLineAttribute(type: string, tickItem: TickLineItem, index: number, tickItems: TickLineItem[]) {\n let style = get(this.attribute, `${type}.style`);\n const data = this.data[index];\n style = isFunction(style)\n ? merge(\n {},\n get(DEFAULT_AXIS_THEME, `${type}.style`),\n type === 'tick'\n ? style(data.rawValue, index, data, this.data)\n : style(tickItem.value, index, tickItem, tickItems)\n )\n : style;\n\n const { start, end, anchor, alpha, beta } = tickItem;\n return {\n points: [start, end],\n anchor,\n alpha,\n beta,\n ...style\n };\n }\n\n private _getLabelAttribute(\n tickDatum: TransformedAxisItem,\n index: number,\n tickData: TransformedAxisItem[],\n layer: number\n ) {\n const { space = 4, inside = false, formatMethod, type = 'text', text } = this.attribute.label as LabelAttributes;\n let offset = space;\n let tickLength = 0;\n if (this.attribute.tick?.visible && this.attribute.tick.inside === inside) {\n tickLength = this.attribute.tick.length || 4;\n }\n if (this.attribute.subTick?.visible && this.attribute.subTick.inside === inside) {\n tickLength = Math.max(tickLength, this.attribute.subTick.length || 2);\n }\n offset += tickLength;\n\n // 先测试 line\n const axisVector = this.getRelativeVector(tickDatum.point);\n if (layer > 0) {\n if (axisVector[1] === 0) {\n offset += (this.axisLabelLayerSize[layer - 1].height + get(this.attribute, 'label.space', 4)) * layer;\n } else {\n offset += (this.axisLabelLayerSize[layer - 1].width + get(this.attribute, 'label.space', 4)) * layer;\n }\n }\n\n const point = this.getVerticalCoord(tickDatum.point, offset, inside);\n const vector = this.getVerticalVector(offset || 1, inside, point);\n const textContent = formatMethod\n ? formatMethod(`${tickDatum.label}`, tickDatum, index, tickData, layer)\n : tickDatum.label;\n let { style: textStyle } = this.attribute.label as LabelAttributes;\n textStyle = isFunction(textStyle)\n ? merge(\n {},\n DEFAULT_AXIS_THEME.label.style,\n (textStyle as callbackFunc<Partial<ITextGraphicAttribute> | undefined>)(tickDatum, index, tickData, layer)\n )\n : textStyle;\n\n const labelAlign = this.getLabelAlign(vector, inside, (textStyle as ITextGraphicAttribute).angle);\n textStyle = merge(labelAlign, textStyle) as Partial<ITextGraphicAttribute>;\n // 兼容原先 style.text 回调的方式\n if (isFunction(textStyle.text)) {\n // @ts-ignore\n textStyle.text = textStyle.text({\n label: tickDatum.label,\n value: tickDatum.rawValue,\n index: tickDatum.index,\n layer\n });\n }\n let reactStyle = textStyle.react;\n if (isFunction(reactStyle)) {\n reactStyle = reactStyle(tickDatum, index, tickData, layer);\n }\n return {\n ...this.getLabelPosition(point, vector, textContent, textStyle),\n text: text ?? textContent,\n _originText: tickDatum.label,\n lineHeight: textStyle?.fontSize,\n type,\n ...textStyle,\n react: reactStyle\n };\n }\n\n protected getLabelPosition(\n point: Point,\n vector: [number, number],\n text: string | number,\n style: Partial<ITextGraphicAttribute>\n ) {\n return point;\n }\n\n private _transformItems(items: AxisItem[]) {\n const data: TransformedAxisItem[] = [];\n items.forEach((item: AxisItem) => {\n data.push({\n ...item,\n point: this.getTickCoord(item.value),\n id: item.id ?? item.label\n });\n });\n return data;\n }\n\n protected runAnimation() {\n const lastScale = this.lastScale;\n if ((this.attribute as any).scale) {\n const scale = (this.attribute as any).scale;\n this.lastScale = scale.clone();\n this.lastScale.range([0, 1]);\n }\n\n if (this.attribute.animation && (this as any).applyAnimationState) {\n // @ts-ignore\n const currentInnerView = this.getInnerView();\n // @ts-ignore\n const prevInnerView = this.getPrevInnerView();\n if (!prevInnerView) {\n return;\n }\n\n const animationConfig = this._animationConfig;\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 oldEl.release();\n // oldEl.stopAnimationState('enter');\n // oldEl.stopAnimationState('update');\n const oldAttrs = cloneDeep((oldEl as IGraphic).attribute);\n const finalAttrs = cloneDeep((el as IGraphic).attribute);\n const diffAttrs: Record<string, any> = diff(oldAttrs, finalAttrs);\n\n let hasDiff = Object.keys(diffAttrs).length > 0;\n // TODO 如果入场会有fadeIn,则需要处理opacity(后续还需要考虑其他动画情况)\n if ('opacity' in oldAttrs && finalAttrs.opacity !== oldAttrs.opacity) {\n diffAttrs.opacity = finalAttrs.opacity ?? 1;\n hasDiff = true;\n }\n\n if (animationConfig.update && hasDiff) {\n this._newElementAttrMap[el.id] = {\n state: 'update',\n node: el,\n attrs: finalAttrs\n };\n\n commitUpdateAnimationTarget(el as IGraphic, finalAttrs, oldAttrs);\n\n el.applyAnimationState(\n ['update'],\n [\n {\n name: 'update',\n animation: {\n selfOnly: true,\n ...animationConfig.update,\n type: 'axisUpdate',\n customParameters: {\n config: animationConfig.update,\n diffAttrs,\n lastScale\n }\n }\n }\n ]\n );\n }\n } else if (animationConfig.enter) {\n this._newElementAttrMap[el.id] = {\n state: 'enter',\n node: el,\n attrs: el.attribute\n };\n\n el.applyAnimationState(\n ['enter'],\n [\n {\n name: 'enter',\n animation: {\n ...animationConfig.enter,\n type: 'axisEnter',\n selfOnly: true,\n customParameters: {\n config: animationConfig.enter,\n lastScale,\n getTickCoord: this.getTickCoord.bind(this)\n }\n }\n }\n ]\n );\n }\n }\n });\n }\n }\n\n release(all?: boolean): void {\n if (this._exitReleaseState) {\n this._finalizeExitRelease();\n return;\n }\n\n if (all) {\n this.removeAllChild(true);\n }\n super.release(all);\n if (all) {\n this.removeAllChild(true);\n }\n this._prevInnerView = null;\n this._innerView = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/axis/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * TODO:\n * 1. trunk 坐标轴截断\n * @description 坐标轴组件基类\n */\nimport type {\n IGroup,\n INode,\n ITextGraphicAttribute,\n TextAlignType,\n TextBaselineType,\n FederatedPointerEvent,\n IGraphic,\n IText\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { diff } from '@visactor/vrender-core/common/diff';\nimport { graphicCreator } from '../util/graphic-creator';\nimport type { Dict } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { abs, cloneDeep, get, isEmpty, isFunction, merge, pi } from '@visactor/vutils';\nimport type { ComponentExitReleaseOptions, Point } from '../core/type';\nimport type { TagAttributes } from '../tag';\nimport { createTextGraphicByType, traverseGroup } from '../util';\nimport { DEFAULT_STATES } from '../constant';\nimport { AXIS_ELEMENT_NAME } from './constant';\nimport { DEFAULT_AXIS_THEME } from './config';\nimport type {\n LabelAttributes,\n AxisBaseAttributes,\n AxisItem,\n TickAttributes,\n TransformedAxisItem,\n SubTickAttributes,\n TickLineItem,\n callbackFunc\n} from './type';\nimport { Tag } from '../tag/tag';\nimport { getElMap, getVerticalCoord } from './util';\nimport { dispatchClickState, dispatchHoverState, dispatchUnHoverState } from '../util/interaction';\nimport { AnimateComponent } from '../animation/animate-component';\nimport { commitUpdateAnimationTarget } from '../animation/static-truth';\nimport {\n appendExitReleaseCallback,\n bindExitReleaseAnimates,\n collectTrackedAnimates,\n runExitReleaseCallbacks,\n type AnimateExitReleaseState\n} from '../animation/exit-release';\nimport { DefaultAxisAnimation } from './animate/config';\nimport type { IBaseScale } from '@visactor/vscale';\n\ntype AxisExitReleaseState = AnimateExitReleaseState;\n\nexport abstract class AxisBase<T extends AxisBaseAttributes> extends AnimateComponent<Required<T>> {\n name = 'axis';\n\n lastScale: IBaseScale;\n\n // TODO: 组件整体统一起来\n protected _innerView: IGroup;\n getInnerView() {\n return this._innerView;\n }\n\n protected _prevInnerView: { [key: string]: IGraphic }; // 缓存旧场景树,用于自定义动画\n /**\n * 获取更新前的旧场景树\n * @returns 返回更新前的旧场景树\n */\n getPrevInnerView() {\n return this._prevInnerView;\n }\n\n // 经过处理后的坐标轴点数据\n protected data: TransformedAxisItem[] = [];\n protected tickLineItems: TickLineItem[] = [];\n protected subTickLineItems: TickLineItem[] = [];\n protected axisLabelLayerSize: Dict<{\n width: number;\n height: number;\n textAlign: string;\n textBaseline: string;\n labelPos: number;\n }> = {};\n protected axisLabelsContainer: IGroup | null = null;\n protected axisContainer: IGroup;\n\n private _lastHover: IGraphic;\n private _lastSelect: IGraphic;\n private _exitReleaseState?: AxisExitReleaseState;\n\n // 用于动画diff\n protected _newElementAttrMap: Dict<any>;\n\n protected abstract renderLine(container: IGroup): void;\n abstract isInValidValue(value: number): boolean;\n abstract getTickCoord(value: number): Point;\n abstract getVerticalVector(offset: number, inside: boolean, point: Point): [number, number];\n abstract getRelativeVector(point?: Point): [number, number];\n protected abstract getTitleAttribute(): TagAttributes;\n protected abstract beforeLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract handleLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract afterLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void;\n protected abstract getLabelAlign(\n vector: [number, number],\n inside?: boolean,\n angle?: number\n ): { textAlign: TextAlignType; textBaseline: TextBaselineType };\n\n /**\n * 坐标轴的一个特殊的方法,用于不更新场景树来获取更新属性后的包围盒\n * TODO:后面看情况再抽象为通用的方法\n */\n getBoundsWithoutRender(attributes: Partial<T>) {\n const currentAttribute = cloneDeep(this.attribute);\n // scale 不能拷贝,它是一个实例,重新设置上去\n currentAttribute.scale = (this.attribute as any).scale;\n this.attribute = attributes;\n\n const offscreenGroup = graphicCreator.group({\n x: this.attribute.x,\n y: this.attribute.y\n });\n this.add(offscreenGroup);\n\n this._renderInner(offscreenGroup);\n\n this.removeChild(offscreenGroup);\n this.attribute = currentAttribute;\n return offscreenGroup.AABBBounds;\n }\n\n private _finalizeExitRelease() {\n const state = this._exitReleaseState;\n if (state?.finalized) {\n return;\n }\n\n if (state) {\n state.finalized = true;\n }\n\n const parent = this.parent;\n const removeFromParent = !!state?.removeFromParent;\n const callbacks = state?.onComplete ?? [];\n\n this._exitReleaseState = undefined;\n this._prevInnerView = null;\n this._innerView = null;\n this.axisLabelsContainer = null;\n this.axisContainer = null;\n this.removeAllChild(true);\n super.release(true);\n if (removeFromParent) {\n (parent ?? this.parent)?.removeChild(this);\n }\n\n runExitReleaseCallbacks(callbacks);\n }\n\n private _runExitAnimationBeforeRelease(options: ComponentExitReleaseOptions = {}) {\n if (this._exitReleaseState && !this._exitReleaseState.finalized) {\n this._exitReleaseState.removeFromParent = this._exitReleaseState.removeFromParent || !!options.removeFromParent;\n appendExitReleaseCallback(this._exitReleaseState, options.onComplete);\n return true;\n }\n\n if (\n !this.stage ||\n this.attribute.animation === false ||\n this.attribute.animationExit === false ||\n !this._innerView\n ) {\n return false;\n }\n\n this._prepare();\n if (!this._animationConfig?.exit) {\n return false;\n }\n\n const exitTargets = new Set<IGraphic>();\n traverseGroup(this._innerView, (el: IGraphic) => {\n if (el.type !== 'group') {\n exitTargets.add(el);\n }\n });\n\n if (!exitTargets.size) {\n return false;\n }\n\n const existingAnimates = collectTrackedAnimates(this as unknown as IGraphic);\n\n const {\n delay = 0,\n duration = DefaultAxisAnimation.duration,\n easing = DefaultAxisAnimation.easing\n } = this._animationConfig.exit as any;\n exitTargets.forEach(target => {\n const startAttrs = {\n opacity: target.attribute.opacity ?? 1,\n fillOpacity: target.attribute.fillOpacity ?? 1,\n strokeOpacity: target.attribute.strokeOpacity ?? 1\n };\n const endAttrs = {\n opacity: 0,\n fillOpacity: 0,\n strokeOpacity: 0\n };\n\n commitUpdateAnimationTarget(target, endAttrs, startAttrs);\n target.animate().wait(delay).to(endAttrs, duration, easing);\n });\n\n const animates = collectTrackedAnimates(this as unknown as IGraphic);\n const exitAnimates = animates.filter(animate => !existingAnimates.includes(animate));\n\n if (!exitAnimates.length) {\n return false;\n }\n\n this.setAttribute('childrenPickable', false);\n (this._innerView as any).removeAllEventListeners?.();\n this.releaseStatus = 'willRelease';\n\n const pendingAnimates = new Set(exitAnimates);\n this._exitReleaseState = {\n pendingAnimates,\n finalized: false,\n removeFromParent: !!options.removeFromParent,\n onComplete: options.onComplete ? [options.onComplete] : []\n };\n\n bindExitReleaseAnimates(\n exitAnimates,\n () => this._exitReleaseState,\n () => this._finalizeExitRelease()\n );\n\n return true;\n }\n\n releaseWithExitAnimation(options: ComponentExitReleaseOptions = {}): boolean {\n if (this.releaseStatus === 'released') {\n return false;\n }\n\n return this._runExitAnimationBeforeRelease(options);\n }\n\n protected render(): void {\n if (this._exitReleaseState) {\n return;\n }\n\n this._prepare();\n this._prevInnerView = this._innerView && getElMap(this._innerView);\n this.removeAllChild(true);\n this._innerView = graphicCreator.group({ x: 0, y: 0, pickable: false });\n this.add(this._innerView);\n this._renderInner(this._innerView);\n\n this._bindEvent();\n // 尝试执行动画\n this.runAnimation();\n }\n\n protected _prepare() {\n this._prepareAnimate(DefaultAxisAnimation);\n }\n\n private _bindEvent() {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const { hover, select } = this.attribute;\n\n if (hover) {\n this._innerView.addEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n this._innerView.addEventListener('pointerout', this._onUnHover as EventListenerOrEventListenerObject);\n }\n\n if (select) {\n this._innerView.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchHoverState(e, this.axisContainer, this._lastHover);\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchUnHoverState(e, this.axisContainer, this._lastHover);\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n this._lastSelect = dispatchClickState(e, this.axisContainer, this._lastSelect);\n };\n\n protected _renderInner(container: IGroup) {\n const { title, label, tick, line, items } = this.attribute;\n\n const axisContainer = graphicCreator.group({ x: 0, y: 0, zIndex: 1, pickable: false });\n axisContainer.name = AXIS_ELEMENT_NAME.axisContainer;\n axisContainer.id = this._getNodeId('container');\n axisContainer.setMode(this.mode);\n this.axisContainer = axisContainer;\n container.add(axisContainer);\n\n // 渲染轴线\n if (line && line.visible) {\n this.renderLine(axisContainer);\n }\n\n if (items && items.length) {\n this.data = this._transformItems(items[0]);\n\n // 渲染刻度线,包含子刻度线\n if (tick && tick.visible) {\n this.renderTicks(axisContainer);\n }\n // 渲染标签\n if (label && label.visible) {\n const labelGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n labelGroup.name = AXIS_ELEMENT_NAME.labelContainer;\n labelGroup.id = this._getNodeId('label-container');\n this.axisLabelsContainer = labelGroup;\n axisContainer.add(labelGroup);\n items.forEach((axisItems: AxisItem[], layer: number) => {\n const layerLabelGroup = this.renderLabels(labelGroup, axisItems, layer);\n\n const labels = layerLabelGroup.getChildren() as IText[];\n this.beforeLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n // handle overlap\n this.handleLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n this.afterLabelsOverlap(labels, axisItems, layerLabelGroup, layer, items.length);\n\n let maxTextWidth = 0;\n let maxTextHeight = 0;\n let textAlign = 'center';\n let textBaseline = 'middle';\n let labelPos: number = 0;\n labels.forEach((label: IText, index) => {\n const labelStyle = label.attribute;\n\n const angle = labelStyle.angle ?? 0;\n const textBounds = label.AABBBounds;\n let textWidth = textBounds.width();\n let textHeight = textBounds.height();\n if (angle) {\n textWidth = Math.abs(textWidth * Math.cos(angle));\n textHeight = Math.abs(textHeight * Math.sin(angle));\n }\n maxTextWidth = Math.max(maxTextWidth, textWidth);\n maxTextHeight = Math.max(maxTextHeight, textHeight);\n\n textAlign = labelStyle.textAlign as string;\n textBaseline = labelStyle.textBaseline as string;\n if (index === 0) {\n labelPos = labelStyle.x;\n }\n });\n this.axisLabelLayerSize[layer] = {\n width: maxTextWidth,\n height: maxTextHeight,\n\n labelPos,\n textAlign,\n textBaseline\n };\n });\n }\n }\n\n // 渲染标题\n if (title && title.visible) {\n this.renderTitle(axisContainer);\n }\n }\n protected renderTicks(container: IGroup) {\n const tickLineItems = this.getTickLineItems();\n\n const tickLineGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n tickLineGroup.name = AXIS_ELEMENT_NAME.tickContainer;\n tickLineGroup.id = this._getNodeId('tick-container');\n container.add(tickLineGroup);\n\n tickLineItems.forEach((item: TickLineItem, index) => {\n const line = graphicCreator.line({\n ...this._getTickLineAttribute('tick', item, index, tickLineItems)\n });\n line.name = AXIS_ELEMENT_NAME.tick;\n line.id = this._getNodeId(item.id);\n\n if (isEmpty(this.attribute.tick?.state)) {\n line.states = DEFAULT_STATES;\n } else {\n const data = this.data[index];\n const tickLineState = merge({}, DEFAULT_STATES, this.attribute.tick.state);\n Object.keys(tickLineState).forEach(key => {\n if (isFunction(tickLineState[key])) {\n tickLineState[key] = tickLineState[key](data.rawValue, index, data, this.data);\n }\n });\n line.states = tickLineState;\n }\n\n tickLineGroup.add(line);\n });\n this.tickLineItems = tickLineItems;\n\n // subTick 处理\n const { subTick } = this.attribute;\n if (subTick && subTick.visible) {\n const subTickLineItems: TickLineItem[] = this.getSubTickLineItems();\n if (subTickLineItems.length) {\n subTickLineItems.forEach((item: TickLineItem, index) => {\n const line = graphicCreator.line({\n ...this._getTickLineAttribute('subTick', item, index, tickLineItems)\n });\n line.name = AXIS_ELEMENT_NAME.subTick;\n line.id = this._getNodeId(`${index}`);\n\n if (isEmpty(subTick.state)) {\n line.states = DEFAULT_STATES;\n } else {\n const subTickLineState = merge({}, DEFAULT_STATES, subTick.state);\n Object.keys(subTickLineState).forEach(key => {\n if (isFunction(subTickLineState[key])) {\n subTickLineState[key] = subTickLineState[key](item.value, index, item, tickLineItems);\n }\n });\n line.states = subTickLineState;\n }\n\n tickLineGroup.add(line);\n });\n }\n\n this.subTickLineItems = subTickLineItems;\n }\n }\n\n protected renderLabels(container: IGroup, items: AxisItem[], layer: number) {\n const { dataFilter } = this.attribute.label;\n if (dataFilter && isFunction(dataFilter)) {\n items = dataFilter(items, layer) as TransformedAxisItem[];\n }\n const data = this._transformItems(items);\n\n const labelGroup = graphicCreator.group({ x: 0, y: 0, pickable: false });\n labelGroup.name = `${AXIS_ELEMENT_NAME.labelContainer}-layer-${layer}`;\n labelGroup.id = this._getNodeId(`label-container-layer-${layer}`);\n container.add(labelGroup);\n\n data.forEach((item: TransformedAxisItem, index: number) => {\n const labelStyle: any = this._getLabelAttribute(item, index, data, layer);\n const text = createTextGraphicByType(labelStyle);\n\n text.name = AXIS_ELEMENT_NAME.label;\n text.id = this._getNodeId(`layer${layer}-label-${item.id}`);\n if (isEmpty(this.attribute.label?.state)) {\n text.states = DEFAULT_STATES;\n } else {\n const labelState = merge({}, DEFAULT_STATES, this.attribute.label.state);\n Object.keys(labelState).forEach(key => {\n if (isFunction(labelState[key])) {\n labelState[key] = labelState[key](item, index, data, layer);\n }\n });\n text.states = labelState;\n }\n text.data = { ...item, index, layer };\n labelGroup.add(text);\n });\n\n return labelGroup;\n }\n\n protected renderTitle(container: IGroup) {\n const titleAttributes = this.getTitleAttribute();\n const axisTitle = new Tag({\n ...titleAttributes\n });\n axisTitle.name = AXIS_ELEMENT_NAME.title;\n axisTitle.id = this._getNodeId('title');\n container.add(axisTitle as unknown as INode);\n }\n\n protected getVerticalCoord(point: Point, offset: number, inside: boolean): Point {\n return getVerticalCoord(point, this.getVerticalVector(offset, inside, point));\n }\n\n protected getTickLineItems() {\n const { tick } = this.attribute;\n const data = this.data;\n // tick 处理\n const tickLineItems: TickLineItem[] = [];\n const { alignWithLabel, inside = false, length, dataFilter } = tick as TickAttributes;\n let tickSegment = 1;\n const count = data.length;\n if (count >= 2) {\n tickSegment = data[1].value - data[0].value;\n }\n\n (dataFilter && isFunction(dataFilter) ? dataFilter(data) : data).forEach((item: TransformedAxisItem) => {\n let point = item.point;\n let tickValue = item.value;\n if (!alignWithLabel) {\n const value = item.value - tickSegment / 2;\n if (this.isInValidValue(value)) {\n return;\n }\n point = this.getTickCoord(value);\n tickValue = value;\n }\n const endPoint = this.getVerticalCoord(point, length as number, inside);\n\n if (this.mode === '3d') {\n const vec = this.getVerticalVector(length as number, inside, point);\n let alpha = 0;\n let beta = 0;\n if (abs(vec[0]) > abs(vec[1])) {\n alpha = (pi / 2) * (endPoint.x > point.x ? 1 : -1);\n } else {\n beta = (pi / 2) * (endPoint.y > point.y ? -1 : 1);\n }\n tickLineItems.push({\n start: point,\n end: endPoint,\n value: tickValue,\n id: `tick-${item.id}`,\n anchor: [point.x, point.y],\n alpha,\n beta\n });\n } else {\n tickLineItems.push({\n start: point,\n end: endPoint,\n value: tickValue,\n id: `tick-${item.id}`\n });\n }\n });\n\n return tickLineItems;\n }\n\n protected getSubTickLineItems() {\n const { subTick } = this.attribute as AxisBaseAttributes;\n const subTickLineItems: TickLineItem[] = [];\n const { count: subCount = 4, inside = false, length = 2 } = subTick as SubTickAttributes;\n const tickLineItems = this.tickLineItems;\n const tickLineCount = tickLineItems.length;\n\n if (tickLineCount >= 2) {\n for (let i = 0; i < tickLineCount - 1; i++) {\n const pre = tickLineItems[i];\n const next = tickLineItems[i + 1];\n for (let j = 0; j < subCount; j++) {\n const percent = (j + 1) / (subCount + 1);\n const value = (1 - percent) * pre.value + percent * next.value;\n const point = this.getTickCoord(value);\n const endPoint = this.getVerticalCoord(point, length, inside);\n subTickLineItems.push({\n start: point,\n end: endPoint,\n value,\n id: `sub-tick-${value}`\n });\n }\n }\n }\n\n return subTickLineItems;\n }\n\n private _getTickLineAttribute(type: string, tickItem: TickLineItem, index: number, tickItems: TickLineItem[]) {\n let style = get(this.attribute, `${type}.style`);\n const data = this.data[index];\n style = isFunction(style)\n ? merge(\n {},\n get(DEFAULT_AXIS_THEME, `${type}.style`),\n type === 'tick'\n ? style(data.rawValue, index, data, this.data)\n : style(tickItem.value, index, tickItem, tickItems)\n )\n : style;\n\n const { start, end, anchor, alpha, beta } = tickItem;\n return {\n points: [start, end],\n anchor,\n alpha,\n beta,\n ...style\n };\n }\n\n private _getLabelAttribute(\n tickDatum: TransformedAxisItem,\n index: number,\n tickData: TransformedAxisItem[],\n layer: number\n ) {\n const { space = 4, inside = false, formatMethod, type = 'text', text } = this.attribute.label as LabelAttributes;\n let offset = space;\n let tickLength = 0;\n if (this.attribute.tick?.visible && this.attribute.tick.inside === inside) {\n tickLength = this.attribute.tick.length || 4;\n }\n if (this.attribute.subTick?.visible && this.attribute.subTick.inside === inside) {\n tickLength = Math.max(tickLength, this.attribute.subTick.length || 2);\n }\n offset += tickLength;\n\n // 先测试 line\n const axisVector = this.getRelativeVector(tickDatum.point);\n if (layer > 0) {\n if (axisVector[1] === 0) {\n offset += (this.axisLabelLayerSize[layer - 1].height + get(this.attribute, 'label.space', 4)) * layer;\n } else {\n offset += (this.axisLabelLayerSize[layer - 1].width + get(this.attribute, 'label.space', 4)) * layer;\n }\n }\n\n const point = this.getVerticalCoord(tickDatum.point, offset, inside);\n const vector = this.getVerticalVector(offset || 1, inside, point);\n const textContent = formatMethod\n ? formatMethod(`${tickDatum.label}`, tickDatum, index, tickData, layer)\n : tickDatum.label;\n let { style: textStyle } = this.attribute.label as LabelAttributes;\n textStyle = isFunction(textStyle)\n ? merge(\n {},\n DEFAULT_AXIS_THEME.label.style,\n (textStyle as callbackFunc<Partial<ITextGraphicAttribute> | undefined>)(tickDatum, index, tickData, layer)\n )\n : textStyle;\n\n const labelAlign = this.getLabelAlign(vector, inside, (textStyle as ITextGraphicAttribute).angle);\n textStyle = merge(labelAlign, textStyle) as Partial<ITextGraphicAttribute>;\n // 兼容原先 style.text 回调的方式\n if (isFunction(textStyle.text)) {\n // @ts-ignore\n textStyle.text = textStyle.text({\n label: tickDatum.label,\n value: tickDatum.rawValue,\n index: tickDatum.index,\n layer\n });\n }\n let reactStyle = textStyle.react;\n if (isFunction(reactStyle)) {\n reactStyle = reactStyle(tickDatum, index, tickData, layer);\n }\n return {\n ...this.getLabelPosition(point, vector, textContent, textStyle),\n text: text ?? textContent,\n _originText: tickDatum.label,\n lineHeight: textStyle?.fontSize,\n type,\n ...textStyle,\n react: reactStyle\n };\n }\n\n protected getLabelPosition(\n point: Point,\n vector: [number, number],\n text: string | number,\n style: Partial<ITextGraphicAttribute>\n ) {\n return point;\n }\n\n private _transformItems(items: AxisItem[]) {\n const data: TransformedAxisItem[] = [];\n items.forEach((item: AxisItem) => {\n data.push({\n ...item,\n point: this.getTickCoord(item.value),\n id: item.id ?? item.label\n });\n });\n return data;\n }\n\n protected runAnimation() {\n const lastScale = this.lastScale;\n if ((this.attribute as any).scale) {\n const scale = (this.attribute as any).scale;\n this.lastScale = scale.clone();\n this.lastScale.range([0, 1]);\n }\n\n if (this.attribute.animation && (this as any).applyAnimationState) {\n // @ts-ignore\n const currentInnerView = this.getInnerView();\n // @ts-ignore\n const prevInnerView = this.getPrevInnerView();\n if (!prevInnerView) {\n return;\n }\n\n const animationConfig = this._animationConfig;\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 oldEl.release();\n // oldEl.stopAnimationState('enter');\n // oldEl.stopAnimationState('update');\n const oldAttrs = cloneDeep((oldEl as IGraphic).attribute);\n const finalAttrs = cloneDeep((el as IGraphic).attribute);\n const diffAttrs: Record<string, any> = diff(oldAttrs, finalAttrs);\n\n let hasDiff = Object.keys(diffAttrs).length > 0;\n // TODO 如果入场会有fadeIn,则需要处理opacity(后续还需要考虑其他动画情况)\n if ('opacity' in oldAttrs && finalAttrs.opacity !== oldAttrs.opacity) {\n diffAttrs.opacity = finalAttrs.opacity ?? 1;\n hasDiff = true;\n }\n\n if (animationConfig.update && hasDiff) {\n this._newElementAttrMap[el.id] = {\n state: 'update',\n node: el,\n attrs: finalAttrs\n };\n\n commitUpdateAnimationTarget(el as IGraphic, finalAttrs, oldAttrs);\n\n el.applyAnimationState(\n ['update'],\n [\n {\n name: 'update',\n animation: {\n selfOnly: true,\n ...animationConfig.update,\n type: 'axisUpdate',\n customParameters: {\n config: animationConfig.update,\n diffAttrs,\n lastScale\n }\n }\n }\n ]\n );\n }\n } else if (animationConfig.enter) {\n this._newElementAttrMap[el.id] = {\n state: 'enter',\n node: el,\n attrs: el.attribute\n };\n\n el.applyAnimationState(\n ['enter'],\n [\n {\n name: 'enter',\n animation: {\n ...animationConfig.enter,\n type: 'axisEnter',\n selfOnly: true,\n customParameters: {\n config: animationConfig.enter,\n lastScale,\n getTickCoord: this.getTickCoord.bind(this)\n }\n }\n }\n ]\n );\n }\n }\n });\n }\n }\n\n release(all?: boolean): void {\n if (this._exitReleaseState) {\n this._finalizeExitRelease();\n return;\n }\n\n if (all) {\n this.removeAllChild(true);\n }\n super.release(all);\n if (all) {\n this.removeAllChild(true);\n }\n this._prevInnerView = null;\n this._innerView = null;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { type IText } from '@visactor/vrender-core';
1
+ import type { IText } from '@visactor/vrender-core';
2
2
  import type { CustomMethod } from '../type';
3
3
  type HideConfig = {
4
4
  orient: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/axis/overlap/auto-hide.ts"],"names":[],"mappings":"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","file":"auto-hide.js","sourcesContent":["/**\n * @description 自动隐藏\n */\n\nimport { createRect, type IText } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEmpty, isFunction, last } from '@visactor/vutils';\nimport type { CustomMethod } from '../type';\nimport { textIntersect as intersect, hasOverlap } from '../util';\n\nconst methods = {\n parity: function (items: IText[]) {\n return items.filter((item, i) => (i % 2 ? item.setAttribute('opacity', 0) : 1));\n },\n greedy: function (items: IText[], sep: number) {\n let a: IText;\n return items.filter((b, i) => {\n if (!i || !intersect(a, b, sep)) {\n a = b;\n return 1;\n }\n return b.setAttribute('opacity', 0);\n });\n }\n};\n\nfunction hasBounds(item: IText) {\n let bounds;\n if (!item.OBBBounds.empty()) {\n bounds = item.OBBBounds;\n } else {\n bounds = item.AABBBounds;\n }\n return bounds.width() > 1 && bounds.height() > 1;\n}\n\n// reset all items to be fully opaque\nfunction reset(items: IText[]) {\n items.forEach(item => item.setAttribute('opacity', 1));\n return items;\n}\n\nfunction forceItemVisible(sourceItem: IText, items: IText[], check: boolean, comparator: any, inverse = false) {\n if (check && !sourceItem.attribute.opacity) {\n const remainLength = items.length;\n if (remainLength > 1) {\n sourceItem.setAttribute('opacity', 1);\n for (let i = 0; i < remainLength; i++) {\n const item = inverse ? items[remainLength - 1 - i] : items[i];\n if (comparator(item)) {\n item.setAttribute('opacity', 0);\n } else {\n break;\n }\n }\n }\n }\n}\n\ntype HideConfig = {\n /**\n * 轴的方向\n */\n orient: string;\n /**\n * 防重叠策略。\n * - 'parity': 奇偶校验,使用删除所有其他标签的策略(这对于标准线性轴非常有效)。\n * - 'greedy': 将执行标签的线性扫描,并删除与最后一个可见标签重叠的所有标签。\n * - 也可以传入函数用于自定义策略\n */\n method?: 'parity' | 'greedy' | CustomMethod;\n /**\n * 设置文本之间的间隔距离,单位 px\n */\n separation?: number;\n /**\n * 保证最后的label展示\n */\n lastVisible?: boolean;\n /**\n * 保证第一个的label展示\n */\n firstVisible?: boolean;\n};\n\nexport function autoHide(labels: IText[], config: HideConfig) {\n if (isEmpty(labels)) {\n return;\n }\n\n const source = labels.filter(hasBounds);\n if (isEmpty(source)) {\n return;\n }\n\n let items: IText[];\n\n items = reset(source);\n\n const { method = 'parity', separation: sep = 0 } = config;\n\n const reduce = isFunction(method) ? method : methods[method] || methods.parity;\n\n if (items.length >= 3 && hasOverlap(items, sep)) {\n do {\n items = reduce(items, sep);\n } while (items.length >= 3 && hasOverlap(items, sep));\n\n const shouldCheck = (length: number, visibility: boolean, checkLength: boolean = true) => {\n return checkLength ? length < 3 || visibility : visibility;\n };\n\n const checkFirst = shouldCheck(items.length, config.firstVisible, false);\n /**\n * 0.17.10 之前,当最后 label 个数小于 3 的时候,才做最后的label强制显示的策略\n */\n let checkLast = shouldCheck(items.length, config.lastVisible);\n\n const firstSourceItem = source[0];\n const lastSourceItem = last(source);\n\n if (intersect(firstSourceItem, lastSourceItem, sep) && checkFirst && checkLast) {\n lastSourceItem.setAttribute('opacity', 0); // Or firstSourceItem, depending on preference\n checkLast = false;\n }\n\n forceItemVisible(firstSourceItem, items, checkFirst, (item: IText) => intersect(item, firstSourceItem, sep));\n\n forceItemVisible(\n lastSourceItem,\n items,\n checkLast,\n (item: IText) =>\n intersect(item, lastSourceItem, sep) ||\n (checkFirst && item !== firstSourceItem ? intersect(item, firstSourceItem, sep) : false),\n true\n );\n }\n\n source.forEach(item => {\n item.setAttribute('visible', !!item.attribute.opacity);\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/axis/overlap/auto-hide.ts"],"names":[],"mappings":"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","file":"auto-hide.js","sourcesContent":["/**\n * @description 自动隐藏\n */\n\nimport type { IText } from '@visactor/vrender-core';\nimport { isEmpty, isFunction, last } from '@visactor/vutils';\nimport type { CustomMethod } from '../type';\nimport { textIntersect as intersect, hasOverlap } from '../util';\n\nconst methods = {\n parity: function (items: IText[]) {\n return items.filter((item, i) => (i % 2 ? item.setAttribute('opacity', 0) : 1));\n },\n greedy: function (items: IText[], sep: number) {\n let a: IText;\n return items.filter((b, i) => {\n if (!i || !intersect(a, b, sep)) {\n a = b;\n return 1;\n }\n return b.setAttribute('opacity', 0);\n });\n }\n};\n\nfunction hasBounds(item: IText) {\n let bounds;\n if (!item.OBBBounds.empty()) {\n bounds = item.OBBBounds;\n } else {\n bounds = item.AABBBounds;\n }\n return bounds.width() > 1 && bounds.height() > 1;\n}\n\n// reset all items to be fully opaque\nfunction reset(items: IText[]) {\n items.forEach(item => item.setAttribute('opacity', 1));\n return items;\n}\n\nfunction forceItemVisible(sourceItem: IText, items: IText[], check: boolean, comparator: any, inverse = false) {\n if (check && !sourceItem.attribute.opacity) {\n const remainLength = items.length;\n if (remainLength > 1) {\n sourceItem.setAttribute('opacity', 1);\n for (let i = 0; i < remainLength; i++) {\n const item = inverse ? items[remainLength - 1 - i] : items[i];\n if (comparator(item)) {\n item.setAttribute('opacity', 0);\n } else {\n break;\n }\n }\n }\n }\n}\n\ntype HideConfig = {\n /**\n * 轴的方向\n */\n orient: string;\n /**\n * 防重叠策略。\n * - 'parity': 奇偶校验,使用删除所有其他标签的策略(这对于标准线性轴非常有效)。\n * - 'greedy': 将执行标签的线性扫描,并删除与最后一个可见标签重叠的所有标签。\n * - 也可以传入函数用于自定义策略\n */\n method?: 'parity' | 'greedy' | CustomMethod;\n /**\n * 设置文本之间的间隔距离,单位 px\n */\n separation?: number;\n /**\n * 保证最后的label展示\n */\n lastVisible?: boolean;\n /**\n * 保证第一个的label展示\n */\n firstVisible?: boolean;\n};\n\nexport function autoHide(labels: IText[], config: HideConfig) {\n if (isEmpty(labels)) {\n return;\n }\n\n const source = labels.filter(hasBounds);\n if (isEmpty(source)) {\n return;\n }\n\n let items: IText[];\n\n items = reset(source);\n\n const { method = 'parity', separation: sep = 0 } = config;\n\n const reduce = isFunction(method) ? method : methods[method] || methods.parity;\n\n if (items.length >= 3 && hasOverlap(items, sep)) {\n do {\n items = reduce(items, sep);\n } while (items.length >= 3 && hasOverlap(items, sep));\n\n const shouldCheck = (length: number, visibility: boolean, checkLength: boolean = true) => {\n return checkLength ? length < 3 || visibility : visibility;\n };\n\n const checkFirst = shouldCheck(items.length, config.firstVisible, false);\n /**\n * 0.17.10 之前,当最后 label 个数小于 3 的时候,才做最后的label强制显示的策略\n */\n let checkLast = shouldCheck(items.length, config.lastVisible);\n\n const firstSourceItem = source[0];\n const lastSourceItem = last(source);\n\n if (intersect(firstSourceItem, lastSourceItem, sep) && checkFirst && checkLast) {\n lastSourceItem.setAttribute('opacity', 0); // Or firstSourceItem, depending on preference\n checkLast = false;\n }\n\n forceItemVisible(firstSourceItem, items, checkFirst, (item: IText) => intersect(item, firstSourceItem, sep));\n\n forceItemVisible(\n lastSourceItem,\n items,\n checkLast,\n (item: IText) =>\n intersect(item, lastSourceItem, sep) ||\n (checkFirst && item !== firstSourceItem ? intersect(item, firstSourceItem, sep) : false),\n true\n );\n }\n\n source.forEach(item => {\n item.setAttribute('visible', !!item.attribute.opacity);\n });\n}\n"]}
@@ -1,4 +1,16 @@
1
- import { registerCircle, registerGroup, registerLine, registerPath, registerRect, registerRichtext, registerText } from "@visactor/vrender-kits";
1
+ import { registerCircle } from "@visactor/vrender-kits/register/register-circle";
2
+
3
+ import { registerGroup } from "@visactor/vrender-kits/register/register-group";
4
+
5
+ import { registerLine } from "@visactor/vrender-kits/register/register-line";
6
+
7
+ import { registerPath } from "@visactor/vrender-kits/register/register-path";
8
+
9
+ import { registerRect } from "@visactor/vrender-kits/register/register-rect";
10
+
11
+ import { registerRichtext } from "@visactor/vrender-kits/register/register-richtext";
12
+
13
+ import { registerText } from "@visactor/vrender-kits/register/register-text";
2
14
 
3
15
  import { registerAxisAnimate } from "../animation/axis-animate";
4
16
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/axis/register.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,SAAS,aAAa;IACpB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC;IACf,mBAAmB,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;AACjB,CAAC","file":"register.js","sourcesContent":["import {\n registerCircle,\n registerGroup,\n registerLine,\n registerPath,\n registerRect,\n registerRichtext,\n registerText\n} from '@visactor/vrender-kits';\nimport { registerAxisAnimate } from '../animation/axis-animate';\n\nfunction loadBasicAxis() {\n registerGroup();\n registerLine();\n registerRichtext();\n registerText();\n registerAxisAnimate();\n}\n\nexport function loadLineAxisComponent() {\n loadBasicAxis();\n registerRect();\n}\n\nexport function loadCircleAxisComponent() {\n loadBasicAxis();\n registerCircle();\n}\n\nexport function loadLineAxisGridComponent() {\n registerGroup();\n registerPath();\n}\n\nexport function loadCircleAxisGridComponent() {\n registerGroup();\n registerPath();\n}\n"]}
1
+ {"version":3,"sources":["../src/axis/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,SAAS,aAAa;IACpB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC;IACf,mBAAmB,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;AACjB,CAAC","file":"register.js","sourcesContent":["import { registerCircle } from '@visactor/vrender-kits/register/register-circle';\nimport { registerGroup } from '@visactor/vrender-kits/register/register-group';\nimport { registerLine } from '@visactor/vrender-kits/register/register-line';\nimport { registerPath } from '@visactor/vrender-kits/register/register-path';\nimport { registerRect } from '@visactor/vrender-kits/register/register-rect';\nimport { registerRichtext } from '@visactor/vrender-kits/register/register-richtext';\nimport { registerText } from '@visactor/vrender-kits/register/register-text';\nimport { registerAxisAnimate } from '../animation/axis-animate';\n\nfunction loadBasicAxis() {\n registerGroup();\n registerLine();\n registerRichtext();\n registerText();\n registerAxisAnimate();\n}\n\nexport function loadLineAxisComponent() {\n loadBasicAxis();\n registerRect();\n}\n\nexport function loadCircleAxisComponent() {\n loadBasicAxis();\n registerCircle();\n}\n\nexport function loadLineAxisGridComponent() {\n registerGroup();\n registerPath();\n}\n\nexport function loadCircleAxisGridComponent() {\n registerGroup();\n registerPath();\n}\n"]}
@@ -1,4 +1,6 @@
1
- import { registerGroup, registerPolygon } from "@visactor/vrender-kits";
1
+ import { registerGroup } from "@visactor/vrender-kits/register/register-group";
2
+
3
+ import { registerPolygon } from "@visactor/vrender-kits/register/register-polygon";
2
4
 
3
5
  export function loadBrushComponent() {
4
6
  registerGroup(), registerPolygon();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/brush/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAExE,MAAM,UAAU,kBAAkB;IAChC,aAAa,EAAE,CAAC;IAChB,eAAe,EAAE,CAAC;AACpB,CAAC","file":"register.js","sourcesContent":["import { registerGroup, registerPolygon } from '@visactor/vrender-kits';\n\nexport function loadBrushComponent() {\n registerGroup();\n registerPolygon();\n}\n"]}
1
+ {"version":3,"sources":["../src/brush/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AAEnF,MAAM,UAAU,kBAAkB;IAChC,aAAa,EAAE,CAAC;IAChB,eAAe,EAAE,CAAC;AACpB,CAAC","file":"register.js","sourcesContent":["import { registerGroup } from '@visactor/vrender-kits/register/register-group';\nimport { registerPolygon } from '@visactor/vrender-kits/register/register-polygon';\n\nexport function loadBrushComponent() {\n registerGroup();\n registerPolygon();\n}\n"]}
@@ -1,4 +1,10 @@
1
- import { registerGroup, registerImage, registerRect, registerText } from "@visactor/vrender-kits";
1
+ import { registerGroup } from "@visactor/vrender-kits/register/register-group";
2
+
3
+ import { registerImage } from "@visactor/vrender-kits/register/register-image";
4
+
5
+ import { registerRect } from "@visactor/vrender-kits/register/register-rect";
6
+
7
+ import { registerText } from "@visactor/vrender-kits/register/register-text";
2
8
 
3
9
  export function loadCheckBoxComponent() {
4
10
  registerGroup(), registerRect(), registerText(), registerImage();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/checkbox/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAElG,MAAM,UAAU,qBAAqB;IACnC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;AAClB,CAAC","file":"register.js","sourcesContent":["import { registerGroup, registerImage, registerRect, registerText } from '@visactor/vrender-kits';\n\nexport function loadCheckBoxComponent() {\n registerGroup();\n registerRect();\n registerText();\n registerImage();\n}\n"]}
1
+ {"version":3,"sources":["../src/checkbox/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAE7E,MAAM,UAAU,qBAAqB;IACnC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;AAClB,CAAC","file":"register.js","sourcesContent":["import { registerGroup } from '@visactor/vrender-kits/register/register-group';\nimport { registerImage } from '@visactor/vrender-kits/register/register-image';\nimport { registerRect } from '@visactor/vrender-kits/register/register-rect';\nimport { registerText } from '@visactor/vrender-kits/register/register-text';\n\nexport function loadCheckBoxComponent() {\n registerGroup();\n registerRect();\n registerText();\n registerImage();\n}\n"]}
package/es/core/base.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { FederatedPointerEvent, IGroupGraphicAttribute, ISetAttributeContext } from '@visactor/vrender-core';
2
- import { Group } from '@visactor/vrender-core';
3
- import type { Dict } from '@visactor/vutils';
2
+ import { Group } from '@visactor/vrender-core/graphic/group';
3
+ import { type Dict } from '@visactor/vutils';
4
4
  import type { ComponentOptions } from '../interface';
5
5
  export declare abstract class AbstractComponent<T extends IGroupGraphicAttribute = IGroupGraphicAttribute> extends Group {
6
6
  attribute: Partial<T>;
package/es/core/base.js CHANGED
@@ -1,4 +1,6 @@
1
- import { Group, CustomEvent } from "@visactor/vrender-core";
1
+ import { CustomEvent } from "@visactor/vrender-core/event/constant";
2
+
3
+ import { Group } from "@visactor/vrender-core/graphic/group";
2
4
 
3
5
  import { merge, isFunction, isPlainObject, isNil } from "@visactor/vutils";
4
6