@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.
- package/cjs/animation/axis-animate.d.ts +1 -0
- package/cjs/animation/axis-animate.js +11 -4
- package/cjs/animation/axis-animate.js.map +1 -1
- package/cjs/animation/exit-release.d.ts +13 -0
- package/cjs/animation/exit-release.js +39 -0
- package/cjs/animation/exit-release.js.map +1 -0
- package/cjs/animation/static-truth.d.ts +2 -0
- package/cjs/animation/static-truth.js +21 -0
- package/cjs/animation/static-truth.js.map +1 -0
- package/cjs/axis/animate/group-transition.d.ts +2 -2
- package/cjs/axis/animate/group-transition.js +7 -3
- package/cjs/axis/animate/group-transition.js.map +1 -1
- package/cjs/axis/base.d.ts +6 -2
- package/cjs/axis/base.js +80 -30
- package/cjs/axis/base.js.map +1 -1
- package/cjs/axis/line.d.ts +1 -1
- package/cjs/axis/line.js +2 -2
- package/cjs/axis/line.js.map +1 -1
- package/cjs/axis/util.js +1 -2
- package/cjs/brush/config.js +2 -1
- package/cjs/core/type.d.ts +7 -0
- package/cjs/core/type.js.map +1 -1
- package/cjs/crosshair/polygon-sector.js +1 -2
- package/cjs/crosshair/sector.js +2 -1
- package/cjs/empty-tip/register.js +1 -2
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/indicator/config.js +2 -1
- package/cjs/jsx/index.js +1 -1
- package/cjs/label/arc.js +1 -1
- package/cjs/label/base.d.ts +6 -1
- package/cjs/label/base.js +69 -3
- package/cjs/label/base.js.map +1 -1
- package/cjs/label/dataLabel.d.ts +5 -1
- package/cjs/label/dataLabel.js +46 -1
- package/cjs/label/dataLabel.js.map +1 -1
- package/cjs/legend/discrete/discrete.js +17 -9
- package/cjs/legend/discrete/discrete.js.map +1 -1
- package/cjs/marker/animate/call-in.js +6 -2
- package/cjs/marker/animate/call-in.js.map +1 -1
- package/cjs/marker/animate/clip-in.js +6 -2
- package/cjs/marker/animate/clip-in.js.map +1 -1
- package/cjs/marker/animate/common.js +14 -5
- package/cjs/marker/animate/common.js.map +1 -1
- package/cjs/marker/base.d.ts +6 -2
- package/cjs/marker/base.js +51 -9
- package/cjs/marker/base.js.map +1 -1
- package/cjs/marker/type.d.ts +2 -1
- package/cjs/marker/type.js.map +1 -1
- package/cjs/timeline/timeline.js +35 -12
- package/cjs/timeline/timeline.js.map +1 -1
- package/cjs/title/title.js +5 -2
- package/cjs/title/title.js.map +1 -1
- package/dist/index.es.js +1503 -270
- package/es/animation/axis-animate.d.ts +1 -0
- package/es/animation/axis-animate.js +12 -4
- package/es/animation/axis-animate.js.map +1 -1
- package/es/animation/exit-release.d.ts +13 -0
- package/es/animation/exit-release.js +31 -0
- package/es/animation/exit-release.js.map +1 -0
- package/es/animation/static-truth.d.ts +2 -0
- package/es/animation/static-truth.js +14 -0
- package/es/animation/static-truth.js.map +1 -0
- package/es/axis/animate/group-transition.d.ts +2 -2
- package/es/axis/animate/group-transition.js +7 -2
- package/es/axis/animate/group-transition.js.map +1 -1
- package/es/axis/base.d.ts +6 -2
- package/es/axis/base.js +81 -28
- package/es/axis/base.js.map +1 -1
- package/es/axis/line.d.ts +1 -1
- package/es/axis/line.js +2 -2
- package/es/axis/line.js.map +1 -1
- package/es/axis/util.js +1 -2
- package/es/brush/config.js +2 -1
- package/es/core/type.d.ts +7 -0
- package/es/core/type.js.map +1 -1
- package/es/crosshair/polygon-sector.js +1 -2
- package/es/crosshair/sector.js +2 -1
- package/es/empty-tip/register.js +1 -2
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/indicator/config.js +2 -1
- package/es/jsx/index.js +1 -1
- package/es/label/arc.js +1 -1
- package/es/label/base.d.ts +6 -1
- package/es/label/base.js +71 -2
- package/es/label/base.js.map +1 -1
- package/es/label/dataLabel.d.ts +5 -1
- package/es/label/dataLabel.js +46 -0
- package/es/label/dataLabel.js.map +1 -1
- package/es/legend/discrete/discrete.js +18 -8
- package/es/legend/discrete/discrete.js.map +1 -1
- package/es/marker/animate/call-in.js +7 -2
- package/es/marker/animate/call-in.js.map +1 -1
- package/es/marker/animate/clip-in.js +7 -2
- package/es/marker/animate/clip-in.js.map +1 -1
- package/es/marker/animate/common.js +10 -2
- package/es/marker/animate/common.js.map +1 -1
- package/es/marker/base.d.ts +6 -2
- package/es/marker/base.js +51 -8
- package/es/marker/base.js.map +1 -1
- package/es/marker/type.d.ts +2 -1
- package/es/marker/type.js.map +1 -1
- package/es/timeline/timeline.js +36 -11
- package/es/timeline/timeline.js.map +1 -1
- package/es/title/title.js +5 -2
- package/es/title/title.js.map +1 -1
- package/package.json +5 -5
package/es/label/dataLabel.js
CHANGED
|
@@ -18,6 +18,8 @@ import { LabelBase as PointLabel } from "./base";
|
|
|
18
18
|
|
|
19
19
|
import { getLabelComponent } from "./data-label-register";
|
|
20
20
|
|
|
21
|
+
import { appendExitReleaseCallback, runExitReleaseCallbacks } from "../animation/exit-release";
|
|
22
|
+
|
|
21
23
|
export class DataLabel extends AbstractComponent {
|
|
22
24
|
constructor(attributes, options) {
|
|
23
25
|
const {dataLabels: dataLabels} = attributes, restAttributes = __rest(attributes, [ "dataLabels" ]);
|
|
@@ -27,6 +29,7 @@ export class DataLabel extends AbstractComponent {
|
|
|
27
29
|
}
|
|
28
30
|
render() {
|
|
29
31
|
var _a;
|
|
32
|
+
if (this._exitReleaseState) return;
|
|
30
33
|
const {dataLabels: dataLabels, size: size} = this.attribute;
|
|
31
34
|
if (!dataLabels || 0 === dataLabels.length) return;
|
|
32
35
|
const {width: width = 0, height: height = 0, padding: padding} = size || {};
|
|
@@ -49,6 +52,49 @@ export class DataLabel extends AbstractComponent {
|
|
|
49
52
|
currentComponentMap.get(key) || this.removeChild(cp);
|
|
50
53
|
})), this._componentMap = currentComponentMap;
|
|
51
54
|
}
|
|
55
|
+
_finalizeExitRelease() {
|
|
56
|
+
var _a, _b, _c;
|
|
57
|
+
const state = this._exitReleaseState;
|
|
58
|
+
if (null == state ? void 0 : state.finalized) return;
|
|
59
|
+
state && (state.finalized = !0);
|
|
60
|
+
const parent = this.parent, removeFromParent = !!(null == state ? void 0 : state.removeFromParent), callbacks = null !== (_a = null == state ? void 0 : state.onComplete) && void 0 !== _a ? _a : [];
|
|
61
|
+
this._exitReleaseState = void 0, null === (_b = this._componentMap) || void 0 === _b || _b.clear(),
|
|
62
|
+
this.removeAllChild(!0), super.release(!0), removeFromParent && (null === (_c = null != parent ? parent : this.parent) || void 0 === _c || _c.removeChild(this)),
|
|
63
|
+
runExitReleaseCallbacks(callbacks);
|
|
64
|
+
}
|
|
65
|
+
releaseWithExitAnimation(options = {}) {
|
|
66
|
+
var _a;
|
|
67
|
+
if ("released" === this.releaseStatus) return !1;
|
|
68
|
+
if (this._exitReleaseState && !this._exitReleaseState.finalized) return this._exitReleaseState.removeFromParent = this._exitReleaseState.removeFromParent || !!options.removeFromParent,
|
|
69
|
+
appendExitReleaseCallback(this._exitReleaseState, options.onComplete), !0;
|
|
70
|
+
if (!this.stage || !(null === (_a = this._componentMap) || void 0 === _a ? void 0 : _a.size)) return !1;
|
|
71
|
+
const state = {
|
|
72
|
+
pendingCount: 0,
|
|
73
|
+
finalized: !1,
|
|
74
|
+
removeFromParent: !!options.removeFromParent,
|
|
75
|
+
onComplete: options.onComplete ? [ options.onComplete ] : []
|
|
76
|
+
}, exitingComponents = [], fallbackComponents = [];
|
|
77
|
+
let initializing = !0;
|
|
78
|
+
const finish = () => {
|
|
79
|
+
state.finalized || (state.pendingCount -= 1, state.pendingCount <= 0 && !initializing && this._finalizeExitRelease());
|
|
80
|
+
};
|
|
81
|
+
return this._exitReleaseState = state, this._componentMap.forEach((component => {
|
|
82
|
+
state.pendingCount += 1;
|
|
83
|
+
component.releaseWithExitAnimation({
|
|
84
|
+
removeFromParent: !1,
|
|
85
|
+
onComplete: finish
|
|
86
|
+
}) ? exitingComponents.push(component) : (state.pendingCount -= 1, fallbackComponents.push(component));
|
|
87
|
+
})), exitingComponents.length ? (fallbackComponents.forEach((component => {
|
|
88
|
+
component.release(!0), this.removeChild(component);
|
|
89
|
+
})), this.setAttribute("childrenPickable", !1), this.releaseStatus = "willRelease",
|
|
90
|
+
initializing = !1, state.pendingCount <= 0 && this._finalizeExitRelease(), !0) : (this._exitReleaseState = void 0,
|
|
91
|
+
!1);
|
|
92
|
+
}
|
|
93
|
+
release(all) {
|
|
94
|
+
var _a;
|
|
95
|
+
this._exitReleaseState ? this._finalizeExitRelease() : (all && this.removeAllChild(!0),
|
|
96
|
+
super.release(all), null === (_a = this._componentMap) || void 0 === _a || _a.clear());
|
|
97
|
+
}
|
|
52
98
|
setLocation(point) {
|
|
53
99
|
this.translateTo(point.x, point.y);
|
|
54
100
|
}
|
|
@@ -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"]}
|
|
@@ -24,6 +24,8 @@ import { createTextGraphicByType } from "../../util";
|
|
|
24
24
|
|
|
25
25
|
import { ScrollBar } from "../../scrollbar";
|
|
26
26
|
|
|
27
|
+
import { commitUpdateAnimationTarget } from "../../animation/static-truth";
|
|
28
|
+
|
|
27
29
|
const DEFAULT_STATES = {
|
|
28
30
|
[LegendStateValue.focus]: {},
|
|
29
31
|
[LegendStateValue.selected]: {},
|
|
@@ -294,8 +296,10 @@ export class DiscreteLegend extends LegendBase {
|
|
|
294
296
|
}));
|
|
295
297
|
}
|
|
296
298
|
const innerGroupHeight = innerGroupBounds.height(), itemGroupWidth = isValid(this.attribute.item.width) ? this.attribute.item.width : innerGroupWidth + parsedPadding[1] + parsedPadding[3], itemGroupHeight = this._itemHeightByUser || innerGroupHeight + parsedPadding[0] + parsedPadding[2];
|
|
297
|
-
return itemGroup.
|
|
298
|
-
|
|
299
|
+
return itemGroup.setAttributes({
|
|
300
|
+
width: itemGroupWidth,
|
|
301
|
+
height: itemGroupHeight
|
|
302
|
+
}), focusShape && focusShape.setAttribute("visible", !1), innerGroup.translateTo(-innerGroupBounds.x1 + parsedPadding[3], -innerGroupBounds.y1 + parsedPadding[0]),
|
|
299
303
|
itemGroup;
|
|
300
304
|
}
|
|
301
305
|
_createPager(compStyle) {
|
|
@@ -398,12 +402,18 @@ export class DiscreteLegend extends LegendBase {
|
|
|
398
402
|
let containerSize;
|
|
399
403
|
containerSize = this._itemContext.isHorizontal ? this._itemsContainer.AABBBounds.width() : this._itemsContainer.AABBBounds.height();
|
|
400
404
|
const startOffset = containerSize * start;
|
|
401
|
-
this.updateScrollMask(), animation
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
405
|
+
if (this.updateScrollMask(), animation) {
|
|
406
|
+
const attrs = {
|
|
407
|
+
[channel]: -startOffset
|
|
408
|
+
};
|
|
409
|
+
commitUpdateAnimationTarget(this._itemsContainer, attrs), this._itemsContainer.animate().to(attrs, animationDuration, animationEasing);
|
|
410
|
+
} else this._itemsContainer.setAttribute(channel, -startOffset);
|
|
411
|
+
} else if (animation) {
|
|
412
|
+
const attrs = {
|
|
413
|
+
[channel]: -(newPage - 1) * pageSize
|
|
414
|
+
};
|
|
415
|
+
commitUpdateAnimationTarget(this._itemsContainer, attrs), this._itemsContainer.animate().to(attrs, animationDuration, animationEasing);
|
|
416
|
+
} else this._itemsContainer.setAttribute(channel, -(newPage - 1) * pageSize);
|
|
407
417
|
}
|
|
408
418
|
};
|
|
409
419
|
if (this._itemContext.isScrollbar) {
|