@visactor/vrender-components 1.1.0-alpha.2 → 1.1.0-alpha.20

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 (110) hide show
  1. package/cjs/animation/axis-animate.d.ts +1 -0
  2. package/cjs/animation/axis-animate.js +11 -4
  3. package/cjs/animation/axis-animate.js.map +1 -1
  4. package/cjs/animation/exit-release.d.ts +13 -0
  5. package/cjs/animation/exit-release.js +39 -0
  6. package/cjs/animation/exit-release.js.map +1 -0
  7. package/cjs/animation/static-truth.d.ts +2 -0
  8. package/cjs/animation/static-truth.js +21 -0
  9. package/cjs/animation/static-truth.js.map +1 -0
  10. package/cjs/axis/animate/group-transition.d.ts +2 -2
  11. package/cjs/axis/animate/group-transition.js +7 -3
  12. package/cjs/axis/animate/group-transition.js.map +1 -1
  13. package/cjs/axis/base.d.ts +6 -2
  14. package/cjs/axis/base.js +80 -30
  15. package/cjs/axis/base.js.map +1 -1
  16. package/cjs/axis/line.d.ts +1 -1
  17. package/cjs/axis/line.js +2 -2
  18. package/cjs/axis/line.js.map +1 -1
  19. package/cjs/axis/util.js +1 -2
  20. package/cjs/brush/config.js +2 -1
  21. package/cjs/core/type.d.ts +7 -0
  22. package/cjs/core/type.js.map +1 -1
  23. package/cjs/crosshair/polygon-sector.js +1 -2
  24. package/cjs/crosshair/sector.js +2 -1
  25. package/cjs/empty-tip/register.js +1 -2
  26. package/cjs/index.d.ts +1 -1
  27. package/cjs/index.js +1 -1
  28. package/cjs/index.js.map +1 -1
  29. package/cjs/indicator/config.js +2 -1
  30. package/cjs/jsx/index.js +1 -1
  31. package/cjs/label/arc.js +1 -1
  32. package/cjs/label/base.d.ts +6 -1
  33. package/cjs/label/base.js +69 -3
  34. package/cjs/label/base.js.map +1 -1
  35. package/cjs/label/dataLabel.d.ts +5 -1
  36. package/cjs/label/dataLabel.js +46 -1
  37. package/cjs/label/dataLabel.js.map +1 -1
  38. package/cjs/legend/discrete/discrete.js +17 -9
  39. package/cjs/legend/discrete/discrete.js.map +1 -1
  40. package/cjs/marker/animate/call-in.js +6 -2
  41. package/cjs/marker/animate/call-in.js.map +1 -1
  42. package/cjs/marker/animate/clip-in.js +6 -2
  43. package/cjs/marker/animate/clip-in.js.map +1 -1
  44. package/cjs/marker/animate/common.js +14 -5
  45. package/cjs/marker/animate/common.js.map +1 -1
  46. package/cjs/marker/base.d.ts +6 -2
  47. package/cjs/marker/base.js +51 -9
  48. package/cjs/marker/base.js.map +1 -1
  49. package/cjs/marker/type.d.ts +2 -1
  50. package/cjs/marker/type.js.map +1 -1
  51. package/cjs/timeline/timeline.js +35 -12
  52. package/cjs/timeline/timeline.js.map +1 -1
  53. package/cjs/title/title.js +5 -2
  54. package/cjs/title/title.js.map +1 -1
  55. package/dist/index.es.js +1503 -270
  56. package/es/animation/axis-animate.d.ts +1 -0
  57. package/es/animation/axis-animate.js +12 -4
  58. package/es/animation/axis-animate.js.map +1 -1
  59. package/es/animation/exit-release.d.ts +13 -0
  60. package/es/animation/exit-release.js +31 -0
  61. package/es/animation/exit-release.js.map +1 -0
  62. package/es/animation/static-truth.d.ts +2 -0
  63. package/es/animation/static-truth.js +14 -0
  64. package/es/animation/static-truth.js.map +1 -0
  65. package/es/axis/animate/group-transition.d.ts +2 -2
  66. package/es/axis/animate/group-transition.js +7 -2
  67. package/es/axis/animate/group-transition.js.map +1 -1
  68. package/es/axis/base.d.ts +6 -2
  69. package/es/axis/base.js +81 -28
  70. package/es/axis/base.js.map +1 -1
  71. package/es/axis/line.d.ts +1 -1
  72. package/es/axis/line.js +2 -2
  73. package/es/axis/line.js.map +1 -1
  74. package/es/axis/util.js +1 -2
  75. package/es/brush/config.js +2 -1
  76. package/es/core/type.d.ts +7 -0
  77. package/es/core/type.js.map +1 -1
  78. package/es/crosshair/polygon-sector.js +1 -2
  79. package/es/crosshair/sector.js +2 -1
  80. package/es/empty-tip/register.js +1 -2
  81. package/es/index.d.ts +1 -1
  82. package/es/index.js +1 -1
  83. package/es/index.js.map +1 -1
  84. package/es/indicator/config.js +2 -1
  85. package/es/jsx/index.js +1 -1
  86. package/es/label/arc.js +1 -1
  87. package/es/label/base.d.ts +6 -1
  88. package/es/label/base.js +71 -2
  89. package/es/label/base.js.map +1 -1
  90. package/es/label/dataLabel.d.ts +5 -1
  91. package/es/label/dataLabel.js +46 -0
  92. package/es/label/dataLabel.js.map +1 -1
  93. package/es/legend/discrete/discrete.js +18 -8
  94. package/es/legend/discrete/discrete.js.map +1 -1
  95. package/es/marker/animate/call-in.js +7 -2
  96. package/es/marker/animate/call-in.js.map +1 -1
  97. package/es/marker/animate/clip-in.js +7 -2
  98. package/es/marker/animate/clip-in.js.map +1 -1
  99. package/es/marker/animate/common.js +10 -2
  100. package/es/marker/animate/common.js.map +1 -1
  101. package/es/marker/base.d.ts +6 -2
  102. package/es/marker/base.js +51 -8
  103. package/es/marker/base.js.map +1 -1
  104. package/es/marker/type.d.ts +2 -1
  105. package/es/marker/type.js.map +1 -1
  106. package/es/timeline/timeline.js +36 -11
  107. package/es/timeline/timeline.js.map +1 -1
  108. package/es/title/title.js +5 -2
  109. package/es/title/title.js.map +1 -1
  110. package/package.json +5 -5
@@ -14,7 +14,7 @@ Object.defineProperty(exports, "__esModule", {
14
14
  value: !0
15
15
  }), exports.DataLabel = void 0;
16
16
 
17
- const vutils_1 = require("@visactor/vutils"), base_1 = require("../core/base"), overlap_1 = require("./overlap"), base_2 = require("./base"), data_label_register_1 = require("./data-label-register");
17
+ const vutils_1 = require("@visactor/vutils"), base_1 = require("../core/base"), overlap_1 = require("./overlap"), base_2 = require("./base"), data_label_register_1 = require("./data-label-register"), exit_release_1 = require("../animation/exit-release");
18
18
 
19
19
  class DataLabel extends base_1.AbstractComponent {
20
20
  constructor(attributes, options) {
@@ -25,6 +25,7 @@ class DataLabel extends base_1.AbstractComponent {
25
25
  }
26
26
  render() {
27
27
  var _a;
28
+ if (this._exitReleaseState) return;
28
29
  const {dataLabels: dataLabels, size: size} = this.attribute;
29
30
  if (!dataLabels || 0 === dataLabels.length) return;
30
31
  const {width: width = 0, height: height = 0, padding: padding} = size || {};
@@ -47,6 +48,50 @@ class DataLabel extends base_1.AbstractComponent {
47
48
  currentComponentMap.get(key) || this.removeChild(cp);
48
49
  })), this._componentMap = currentComponentMap;
49
50
  }
51
+ _finalizeExitRelease() {
52
+ var _a, _b, _c;
53
+ const state = this._exitReleaseState;
54
+ if (null == state ? void 0 : state.finalized) return;
55
+ state && (state.finalized = !0);
56
+ const parent = this.parent, removeFromParent = !!(null == state ? void 0 : state.removeFromParent), callbacks = null !== (_a = null == state ? void 0 : state.onComplete) && void 0 !== _a ? _a : [];
57
+ this._exitReleaseState = void 0, null === (_b = this._componentMap) || void 0 === _b || _b.clear(),
58
+ this.removeAllChild(!0), super.release(!0), removeFromParent && (null === (_c = null != parent ? parent : this.parent) || void 0 === _c || _c.removeChild(this)),
59
+ (0, exit_release_1.runExitReleaseCallbacks)(callbacks);
60
+ }
61
+ releaseWithExitAnimation(options = {}) {
62
+ var _a;
63
+ if ("released" === this.releaseStatus) return !1;
64
+ if (this._exitReleaseState && !this._exitReleaseState.finalized) return this._exitReleaseState.removeFromParent = this._exitReleaseState.removeFromParent || !!options.removeFromParent,
65
+ (0, exit_release_1.appendExitReleaseCallback)(this._exitReleaseState, options.onComplete),
66
+ !0;
67
+ if (!this.stage || !(null === (_a = this._componentMap) || void 0 === _a ? void 0 : _a.size)) return !1;
68
+ const state = {
69
+ pendingCount: 0,
70
+ finalized: !1,
71
+ removeFromParent: !!options.removeFromParent,
72
+ onComplete: options.onComplete ? [ options.onComplete ] : []
73
+ }, exitingComponents = [], fallbackComponents = [];
74
+ let initializing = !0;
75
+ const finish = () => {
76
+ state.finalized || (state.pendingCount -= 1, state.pendingCount <= 0 && !initializing && this._finalizeExitRelease());
77
+ };
78
+ return this._exitReleaseState = state, this._componentMap.forEach((component => {
79
+ state.pendingCount += 1;
80
+ component.releaseWithExitAnimation({
81
+ removeFromParent: !1,
82
+ onComplete: finish
83
+ }) ? exitingComponents.push(component) : (state.pendingCount -= 1, fallbackComponents.push(component));
84
+ })), exitingComponents.length ? (fallbackComponents.forEach((component => {
85
+ component.release(!0), this.removeChild(component);
86
+ })), this.setAttribute("childrenPickable", !1), this.releaseStatus = "willRelease",
87
+ initializing = !1, state.pendingCount <= 0 && this._finalizeExitRelease(), !0) : (this._exitReleaseState = void 0,
88
+ !1);
89
+ }
90
+ release(all) {
91
+ var _a;
92
+ this._exitReleaseState ? this._finalizeExitRelease() : (all && this.removeAllChild(!0),
93
+ super.release(all), null === (_a = this._componentMap) || void 0 === _a || _a.clear());
94
+ }
50
95
  setLocation(point) {
51
96
  this.translateTo(point.x, point.y);
52
97
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/label/dataLabel.ts"],"names":[],"mappings":"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","file":"dataLabel.js","sourcesContent":["import { isValidNumber, merge } from '@visactor/vutils';\nimport type { IGraphic, INode } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { PointLocationCfg } from '../core/type';\nimport { bitmapTool } from './overlap';\nimport type { DataLabelAttrs } from './type';\nimport type { LabelBase } from './base';\nimport { LabelBase as PointLabel } from './base';\nimport type { ComponentOptions } from '../interface';\nimport { getLabelComponent } from './data-label-register';\n\nexport class DataLabel extends AbstractComponent<DataLabelAttrs> {\n name = 'data-label';\n\n private _componentMap: Map<string, LabelBase<any>>;\n\n private static defaultAttributes: Partial<DataLabelAttrs> = {\n pickable: false\n };\n\n constructor(attributes: DataLabelAttrs, options?: ComponentOptions) {\n const { dataLabels, ...restAttributes } = attributes;\n super(\n options?.skipDefault ? attributes : { dataLabels, ...merge({}, DataLabel.defaultAttributes, restAttributes) }\n );\n }\n\n protected render(): void {\n const { dataLabels, size } = this.attribute;\n if (!dataLabels || dataLabels.length === 0) {\n return;\n }\n const { width = 0, height = 0, padding } = size || {};\n\n if (!width || !height || !isValidNumber(height * width)) {\n return;\n }\n\n if (!this._componentMap) {\n this._componentMap = new Map();\n }\n const tool = bitmapTool(width, height, padding);\n const bitmap = tool.bitmap();\n\n const currentComponentMap = new Map();\n const prevComponentMap = this._componentMap;\n\n for (let i = 0; i < dataLabels.length; i++) {\n const dataLabel = dataLabels[i];\n const labelComponent = getLabelComponent(dataLabel.type) || PointLabel;\n if (labelComponent) {\n const { baseMarkGroupName, type } = dataLabel;\n const id = dataLabel.id ?? `${baseMarkGroupName}-${type}-${i}`;\n\n if (dataLabel.type === 'arc') {\n dataLabel.width = size.width;\n dataLabel.height = size.height;\n }\n\n let component = this._componentMap.get(id);\n if (component) {\n component.setBitmapTool(tool);\n component.setBitmap(bitmap);\n component.setAttributes(dataLabel);\n currentComponentMap.set(id, component);\n } else {\n component = new labelComponent(dataLabel as any);\n component.setBitmap(bitmap);\n component.setBitmapTool(tool);\n this.add(component as unknown as INode);\n currentComponentMap.set(id, component);\n }\n }\n }\n\n prevComponentMap.forEach((cp, key) => {\n if (!currentComponentMap.get(key)) {\n this.removeChild(cp as unknown as IGraphic);\n }\n });\n\n this._componentMap = currentComponentMap;\n }\n\n setLocation(point: PointLocationCfg) {\n this.translateTo(point.x, point.y);\n }\n\n disableAnimation() {\n this._componentMap.forEach(component => {\n component.disableAnimation();\n });\n }\n\n enableAnimation() {\n this._componentMap.forEach(component => {\n component.enableAnimation();\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/label/dataLabel.ts"],"names":[],"mappings":"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","file":"dataLabel.js","sourcesContent":["import { isValidNumber, merge } from '@visactor/vutils';\nimport type { IGraphic, INode } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { ComponentExitReleaseOptions, PointLocationCfg } from '../core/type';\nimport { bitmapTool } from './overlap';\nimport type { DataLabelAttrs } from './type';\nimport { LabelBase as PointLabel, type LabelBase } from './base';\nimport type { ComponentOptions } from '../interface';\nimport { getLabelComponent } from './data-label-register';\nimport {\n appendExitReleaseCallback,\n runExitReleaseCallbacks,\n type ExitReleaseCallbackState\n} from '../animation/exit-release';\n\ntype DataLabelExitReleaseState = ExitReleaseCallbackState & {\n pendingCount: number;\n};\n\nexport class DataLabel extends AbstractComponent<DataLabelAttrs> {\n name = 'data-label';\n\n private _componentMap: Map<string, LabelBase<any>>;\n private _exitReleaseState?: DataLabelExitReleaseState;\n\n private static defaultAttributes: Partial<DataLabelAttrs> = {\n pickable: false\n };\n\n constructor(attributes: DataLabelAttrs, options?: ComponentOptions) {\n const { dataLabels, ...restAttributes } = attributes;\n super(\n options?.skipDefault ? attributes : { dataLabels, ...merge({}, DataLabel.defaultAttributes, restAttributes) }\n );\n }\n\n protected render(): void {\n if (this._exitReleaseState) {\n return;\n }\n\n const { dataLabels, size } = this.attribute;\n if (!dataLabels || dataLabels.length === 0) {\n return;\n }\n const { width = 0, height = 0, padding } = size || {};\n\n if (!width || !height || !isValidNumber(height * width)) {\n return;\n }\n\n if (!this._componentMap) {\n this._componentMap = new Map();\n }\n const tool = bitmapTool(width, height, padding);\n const bitmap = tool.bitmap();\n\n const currentComponentMap = new Map();\n const prevComponentMap = this._componentMap;\n\n for (let i = 0; i < dataLabels.length; i++) {\n const dataLabel = dataLabels[i];\n const labelComponent = getLabelComponent(dataLabel.type) || PointLabel;\n if (labelComponent) {\n const { baseMarkGroupName, type } = dataLabel;\n const id = dataLabel.id ?? `${baseMarkGroupName}-${type}-${i}`;\n\n if (dataLabel.type === 'arc') {\n dataLabel.width = size.width;\n dataLabel.height = size.height;\n }\n\n let component = this._componentMap.get(id);\n if (component) {\n component.setBitmapTool(tool);\n component.setBitmap(bitmap);\n component.setAttributes(dataLabel);\n currentComponentMap.set(id, component);\n } else {\n component = new labelComponent(dataLabel as any);\n component.setBitmap(bitmap);\n component.setBitmapTool(tool);\n this.add(component as unknown as INode);\n currentComponentMap.set(id, component);\n }\n }\n }\n\n prevComponentMap.forEach((cp, key) => {\n if (!currentComponentMap.get(key)) {\n this.removeChild(cp as unknown as IGraphic);\n }\n });\n\n this._componentMap = currentComponentMap;\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._componentMap?.clear();\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 releaseWithExitAnimation(options: ComponentExitReleaseOptions = {}): boolean {\n if (this.releaseStatus === 'released') {\n return false;\n }\n\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 (!this.stage || !this._componentMap?.size) {\n return false;\n }\n\n const state: DataLabelExitReleaseState = {\n pendingCount: 0,\n finalized: false,\n removeFromParent: !!options.removeFromParent,\n onComplete: options.onComplete ? [options.onComplete] : []\n };\n const exitingComponents: LabelBase<any>[] = [];\n const fallbackComponents: LabelBase<any>[] = [];\n let initializing = true;\n const finish = () => {\n if (state.finalized) {\n return;\n }\n\n state.pendingCount -= 1;\n if (state.pendingCount <= 0 && !initializing) {\n this._finalizeExitRelease();\n }\n };\n\n this._exitReleaseState = state;\n\n this._componentMap.forEach(component => {\n state.pendingCount += 1;\n const releasedWithExit = component.releaseWithExitAnimation({\n removeFromParent: false,\n onComplete: finish\n });\n\n if (releasedWithExit) {\n exitingComponents.push(component);\n } else {\n state.pendingCount -= 1;\n fallbackComponents.push(component);\n }\n });\n\n if (!exitingComponents.length) {\n this._exitReleaseState = undefined;\n return false;\n }\n\n fallbackComponents.forEach(component => {\n component.release(true);\n this.removeChild(component as any);\n });\n\n this.setAttribute('childrenPickable', false);\n this.releaseStatus = 'willRelease';\n initializing = false;\n if (state.pendingCount <= 0) {\n this._finalizeExitRelease();\n }\n\n return true;\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 this._componentMap?.clear();\n }\n\n setLocation(point: PointLocationCfg) {\n this.translateTo(point.x, point.y);\n }\n\n disableAnimation() {\n this._componentMap.forEach(component => {\n component.disableAnimation();\n });\n }\n\n enableAnimation() {\n this._componentMap.forEach(component => {\n component.enableAnimation();\n });\n }\n}\n"]}
@@ -14,7 +14,7 @@ Object.defineProperty(exports, "__esModule", {
14
14
  value: !0
15
15
  }), exports.DiscreteLegend = void 0;
16
16
 
17
- const vutils_1 = require("@visactor/vutils"), graphic_creator_1 = require("../../util/graphic-creator"), base_1 = require("../base"), pager_1 = require("../../pager"), constant_1 = require("../constant"), register_1 = require("../register"), util_1 = require("../../util"), scrollbar_1 = require("../../scrollbar"), DEFAULT_STATES = {
17
+ const vutils_1 = require("@visactor/vutils"), graphic_creator_1 = require("../../util/graphic-creator"), base_1 = require("../base"), pager_1 = require("../../pager"), constant_1 = require("../constant"), register_1 = require("../register"), util_1 = require("../../util"), scrollbar_1 = require("../../scrollbar"), static_truth_1 = require("../../animation/static-truth"), DEFAULT_STATES = {
18
18
  [constant_1.LegendStateValue.focus]: {},
19
19
  [constant_1.LegendStateValue.selected]: {},
20
20
  [constant_1.LegendStateValue.selectedHover]: {},
@@ -289,8 +289,10 @@ class DiscreteLegend extends base_1.LegendBase {
289
289
  }));
290
290
  }
291
291
  const innerGroupHeight = innerGroupBounds.height(), itemGroupWidth = (0, vutils_1.isValid)(this.attribute.item.width) ? this.attribute.item.width : innerGroupWidth + parsedPadding[1] + parsedPadding[3], itemGroupHeight = this._itemHeightByUser || innerGroupHeight + parsedPadding[0] + parsedPadding[2];
292
- return itemGroup.attribute.width = itemGroupWidth, itemGroup.attribute.height = itemGroupHeight,
293
- focusShape && focusShape.setAttribute("visible", !1), innerGroup.translateTo(-innerGroupBounds.x1 + parsedPadding[3], -innerGroupBounds.y1 + parsedPadding[0]),
292
+ return itemGroup.setAttributes({
293
+ width: itemGroupWidth,
294
+ height: itemGroupHeight
295
+ }), focusShape && focusShape.setAttribute("visible", !1), innerGroup.translateTo(-innerGroupBounds.x1 + parsedPadding[3], -innerGroupBounds.y1 + parsedPadding[0]),
294
296
  itemGroup;
295
297
  }
296
298
  _createPager(compStyle) {
@@ -393,12 +395,18 @@ class DiscreteLegend extends base_1.LegendBase {
393
395
  let containerSize;
394
396
  containerSize = this._itemContext.isHorizontal ? this._itemsContainer.AABBBounds.width() : this._itemsContainer.AABBBounds.height();
395
397
  const startOffset = containerSize * start;
396
- this.updateScrollMask(), animation ? this._itemsContainer.animate().to({
397
- [channel]: -startOffset
398
- }, animationDuration, animationEasing) : this._itemsContainer.setAttribute(channel, -startOffset);
399
- } else animation ? this._itemsContainer.animate().to({
400
- [channel]: -(newPage - 1) * pageSize
401
- }, animationDuration, animationEasing) : this._itemsContainer.setAttribute(channel, -(newPage - 1) * pageSize);
398
+ if (this.updateScrollMask(), animation) {
399
+ const attrs = {
400
+ [channel]: -startOffset
401
+ };
402
+ (0, static_truth_1.commitUpdateAnimationTarget)(this._itemsContainer, attrs), this._itemsContainer.animate().to(attrs, animationDuration, animationEasing);
403
+ } else this._itemsContainer.setAttribute(channel, -startOffset);
404
+ } else if (animation) {
405
+ const attrs = {
406
+ [channel]: -(newPage - 1) * pageSize
407
+ };
408
+ (0, static_truth_1.commitUpdateAnimationTarget)(this._itemsContainer, attrs), this._itemsContainer.animate().to(attrs, animationDuration, animationEasing);
409
+ } else this._itemsContainer.setAttribute(channel, -(newPage - 1) * pageSize);
402
410
  }
403
411
  };
404
412
  if (this._itemContext.isScrollbar) {