@visactor/vrender-components 1.0.18-alpha.1 → 1.0.19-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/label/base.js +2 -2
- package/cjs/label/base.js.map +1 -1
- package/cjs/table-series-number/event-manager.js +12 -6
- package/cjs/table-series-number/event-manager.js.map +1 -1
- package/cjs/table-series-number/type.d.ts +5 -1
- package/cjs/table-series-number/type.js +2 -1
- package/cjs/table-series-number/type.js.map +1 -1
- package/dist/index.es.js +36 -6
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/label/base.js +2 -2
- package/es/label/base.js.map +1 -1
- package/es/table-series-number/event-manager.js +12 -6
- package/es/table-series-number/event-manager.js.map +1 -1
- package/es/table-series-number/type.d.ts +5 -1
- package/es/table-series-number/type.js +2 -1
- package/es/table-series-number/type.js.map +1 -1
- package/package.json +4 -4
package/cjs/index.d.ts
CHANGED
package/cjs/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
|
|
|
17
17
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", {
|
|
19
19
|
value: !0
|
|
20
|
-
}), exports.version = void 0, exports.version = "1.0.
|
|
20
|
+
}), exports.version = void 0, exports.version = "1.0.19-alpha.0", __exportStar(require("./core/base"), exports),
|
|
21
21
|
__exportStar(require("./core/type"), exports), __exportStar(require("./scrollbar"), exports),
|
|
22
22
|
__exportStar(require("./tag"), exports), __exportStar(require("./poptip"), exports),
|
|
23
23
|
__exportStar(require("./crosshair"), exports), __exportStar(require("./label"), exports),
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAExC,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,wCAAsB;AACtB,6CAA2B;AAC3B,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,2CAAyB;AACzB,+CAA6B;AAC7B,wDAAsC","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"1.0.
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAExC,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,wCAAsB;AACtB,6CAA2B;AAC3B,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,2CAAyB;AACzB,+CAA6B;AAC7B,wDAAsC","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"1.0.19-alpha.0\";\n\nexport * from './core/base';\nexport * from './core/type';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\nexport * from './axis/grid';\nexport * from './segment';\nexport * from './data-zoom';\nexport * from './marker';\nexport * from './pager';\nexport * from './legend';\nexport * from './title';\nexport * from './indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport * from './brush';\nexport * from './tooltip';\nexport * from './timeline';\nexport * from './interface';\nexport * from './jsx';\nexport * from './checkbox';\nexport * from './radio';\nexport * from './empty-tip';\nexport * from './weather';\nexport * from './util';\nexport * from './switch';\nexport * from './label-item';\nexport * from './table-series-number';\n"]}
|
package/cjs/label/base.js
CHANGED
|
@@ -228,7 +228,7 @@ class LabelBase extends animate_component_1.AnimateComponent {
|
|
|
228
228
|
}));
|
|
229
229
|
for (let i = 0; i < result.length; i++) {
|
|
230
230
|
const text = result[i], bounds = text.AABBBounds, range = (0, overlap_1.boundToRange)(bmpTool, bounds, !0);
|
|
231
|
-
if ((0, overlap_1.canPlace)(bmpTool, bitmap, bounds, clampForce, overlapPadding)) bitmap.setRange(range); else {
|
|
231
|
+
if ((0, overlap_1.canPlace)(bmpTool, bitmap, bounds, clampForce || hideOnOverflow, overlapPadding)) bitmap.setRange(range); else {
|
|
232
232
|
if (hideOnOverflow) {
|
|
233
233
|
if (this._processHideOnOverflow(text, bmpTool)) continue;
|
|
234
234
|
} else if (clampForce && this._processClampForce(text, bmpTool, bitmap, overlapPadding)) continue;
|
|
@@ -276,7 +276,7 @@ class LabelBase extends animate_component_1.AnimateComponent {
|
|
|
276
276
|
if (!1 === labels[i].attribute.visible) continue;
|
|
277
277
|
const text = labels[i], baseMark = this.getRelatedGraphic(text.attribute);
|
|
278
278
|
if (text.update(), !this.isMarkInsideRect(baseMark, bmpTool)) continue;
|
|
279
|
-
if ((0, overlap_1.canPlace)(bmpTool, bitmap, text.AABBBounds, clampForce, overlapPadding)) {
|
|
279
|
+
if ((0, overlap_1.canPlace)(bmpTool, bitmap, text.AABBBounds, clampForce || hideOnOverflow, overlapPadding)) {
|
|
280
280
|
if (!checkBounds) {
|
|
281
281
|
bitmap.setRange((0, overlap_1.boundToRange)(bmpTool, text.AABBBounds, !0)), result.push(text);
|
|
282
282
|
continue;
|
package/cjs/label/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/label/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * @description Label 基类\n */\nimport type {\n IGroup,\n Text,\n IGraphic,\n IText,\n FederatedPointerEvent,\n IColor,\n ILine,\n IArea,\n IRichText,\n ILineGraphicAttribute,\n ILinearGradient,\n IRectGraphicAttribute\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator, AttributeUpdateType, IContainPointMode, CustomPath2D } from '@visactor/vrender-core';\nimport type { IAABBBounds, IBoundsLike, IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n isFunction,\n isEmpty,\n isValid,\n isString,\n merge,\n isRectIntersect,\n isNil,\n isArray,\n isObject,\n pointInRect\n} from '@visactor/vutils';\nimport type { PointLocationCfg } from '../core/type';\nimport { labelSmartInvert, contrastAccessibilityChecker, smartInvertStrategy } from '../util/label-smartInvert';\nimport { createTextGraphicByType, getMarksByName, getNoneGroupMarksByName, traverseGroup } from '../util';\nimport { StateValue } from '../constant';\nimport type { Bitmap, BitmapTool } from './overlap';\n// eslint-disable-next-line no-duplicate-imports\nimport { bitmapTool, boundToRange, canPlace, clampText, place } from './overlap';\nimport type {\n BaseLabelAttrs,\n OverlapAttrs,\n LabelItem,\n SmartInvertAttrs,\n ILabelEnterAnimation,\n ILabelExitAnimation,\n ILabelUpdateAnimation,\n LabelContent,\n ShiftYStrategy,\n Strategy\n} from './type';\nimport { DefaultLabelAnimation } from './animate/animate';\nimport { connectLineBetweenBounds, getPointsOfLineArea } from './util';\nimport type { ComponentOptions } from '../interface';\nimport { loadLabelComponent } from './register';\nimport { shiftY } from './overlap/shiftY';\nimport { AnimateComponent } from '../animation/animate-component';\n\nloadLabelComponent();\nexport class LabelBase<T extends BaseLabelAttrs> extends AnimateComponent<T> {\n name = 'label';\n\n protected _baseMarks?: IGraphic[];\n\n protected _isCollectionBase: boolean;\n\n protected _bitmap?: Bitmap;\n\n // parsed animation config\n protected _animationConfig?: {\n enter: ILabelEnterAnimation | false;\n exit: ILabelExitAnimation | false;\n update: ILabelUpdateAnimation | false;\n };\n\n static defaultAttributes: Partial<BaseLabelAttrs> = {\n textStyle: {\n fontSize: 12,\n // FIXME: we need a default color. Yet in current logic, textStyle will override fill from baseMark.\n // This need a new config option like `colorFull`\n // fill: '#000',\n textAlign: 'center',\n textBaseline: 'middle',\n boundsPadding: [-2, -1, -2, -1] // to ignore the textBound buf\n },\n offset: 0,\n pickable: false\n };\n\n setBitmap(bitmap: Bitmap) {\n this._bitmap = bitmap;\n }\n\n protected _bmpTool?: ReturnType<typeof bitmapTool>;\n setBitmapTool(bmpTool: ReturnType<typeof bitmapTool>) {\n this._bmpTool = bmpTool;\n }\n\n protected _graphicToText: Map<IGraphic, LabelContent>;\n\n protected _idToGraphic: Map<string, IGraphic>;\n\n protected _idToPoint: Map<string, IPointLike>;\n\n private _lastHover: IGraphic;\n private _lastSelect: IGraphic;\n\n private _enableAnimation: boolean;\n\n constructor(attributes: BaseLabelAttrs, options?: ComponentOptions) {\n const { data, ...restAttributes } = attributes;\n super(options?.skipDefault ? attributes : { data, ...merge({}, LabelBase.defaultAttributes, restAttributes) });\n }\n\n /**\n * 计算 text 的最终位置属性x, y\n * @param textBounds\n * @param graphicBounds\n * @param position\n * @param offset\n * @returns\n */\n protected labeling(\n textBounds: IBoundsLike,\n graphicBounds: IBoundsLike,\n position?: BaseLabelAttrs['position'],\n offset?: number\n ): { x: number; y: number } | undefined {\n // 基类没有指定的图元类型,需要在 data 中指定位置,故无需进行 labeling\n return;\n }\n\n protected _getLabelLinePoints(text: IText | IRichText, baseMark?: IGraphic) {\n return connectLineBetweenBounds(text.AABBBounds, baseMark?.AABBBounds);\n }\n\n protected _createLabelLine(text: IText | IRichText, baseMark?: IGraphic): ILine | undefined {\n const points = this._getLabelLinePoints(text, baseMark);\n if (points) {\n const lineGraphic = graphicCreator.line({\n points\n });\n\n const { line = {} } = text.attribute as any;\n\n if (line.customShape) {\n const customShape = line.customShape;\n lineGraphic.pathProxy = (attrs: Partial<ILineGraphicAttribute>) => {\n return customShape(\n {\n text,\n baseMark: baseMark\n },\n attrs,\n new CustomPath2D()\n );\n };\n }\n\n if (baseMark && baseMark.getAttributes(true).fill) {\n lineGraphic.setAttribute('stroke', baseMark.getAttributes(true).fill);\n }\n\n if (this.attribute.line && !isEmpty(this.attribute.line.style)) {\n lineGraphic.setAttributes(this.attribute.line.style);\n }\n this._setStatesOfLabelLine(lineGraphic);\n return lineGraphic;\n }\n }\n\n protected render() {\n this._prepare();\n if (isNil(this._idToGraphic) || (this._isCollectionBase && isNil(this._idToPoint))) {\n return;\n }\n // 如果有动画的话,需要先设置入场的最终属性,否则无法计算放重叠、反色之类的逻辑\n const markAttributeList: any[] = [];\n if (this._enableAnimation !== false) {\n this._baseMarks.forEach(mark => {\n markAttributeList.push(mark.attribute);\n mark.initAttributes(mark.getAttributes(true));\n });\n }\n\n const { overlap, smartInvert, dataFilter, customLayoutFunc, customOverlapFunc } = this.attribute;\n let data = this.attribute.data;\n\n if (isFunction(dataFilter)) {\n data = dataFilter(data);\n }\n\n if (data && data.length) {\n // 数据保护,防止重复 id 造成不可预知的问题\n const seenIds = new Set();\n data = data.filter(d => !seenIds.has(d.id) && seenIds.add(d.id));\n }\n\n let labels: (IText | IRichText)[] = this._initText(data);\n\n if (isFunction(customLayoutFunc)) {\n labels = customLayoutFunc(\n data,\n labels,\n this.getRelatedGraphic.bind(this),\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null,\n this\n );\n } else {\n // 根据关联图元和配置的position计算标签坐标\n labels = this._layout(labels);\n }\n\n if (isFunction(customOverlapFunc)) {\n labels = customOverlapFunc(\n labels as Text[],\n this.getRelatedGraphic.bind(this),\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null,\n this\n );\n } else {\n // 防重叠逻辑\n if (overlap !== false) {\n labels = this._overlapping(labels);\n }\n }\n\n if (isFunction(this.attribute.onAfterOverlapping)) {\n this.attribute.onAfterOverlapping(\n labels as Text[],\n this.getRelatedGraphic.bind(this),\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null,\n this\n );\n }\n\n if (labels && labels.length) {\n labels.forEach(label => {\n this._bindEvent(label);\n this._setStatesOfText(label);\n });\n }\n\n if (smartInvert !== false) {\n this._smartInvert(labels);\n }\n\n this._renderLabels(labels);\n\n if (this._enableAnimation !== false) {\n this._baseMarks.forEach((mark, index) => {\n mark.initAttributes(markAttributeList[index]);\n });\n }\n }\n\n private _bindEvent(target: IGraphic) {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n if (!target) {\n return;\n }\n\n const { hover, select } = this.attribute;\n\n if (hover) {\n target.addEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n target.addEventListener('pointerout', this._onUnHover as EventListenerOrEventListenerObject);\n }\n\n if (select) {\n target.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _setStatesOfText(target: IGraphic) {\n if (!target) {\n return;\n }\n const state = this.attribute.state;\n\n if (!state || isEmpty(state)) {\n return;\n }\n\n target.states = state;\n }\n\n protected _setStatesOfLabelLine(target: IGraphic) {\n if (!target) {\n return;\n }\n const state = this.attribute.labelLineState;\n\n if (!state || isEmpty(state)) {\n return;\n }\n\n target.states = state;\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGraphic;\n if (target !== this._lastHover && !isEmpty(target.states)) {\n target.addState(StateValue.hover, true);\n traverseGroup(this as unknown as IGraphic, (node: IGraphic) => {\n if (node !== target && !isEmpty(node.states)) {\n node.addState(StateValue.hoverReverse, true);\n }\n });\n this._lastHover = target;\n }\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n if (this._lastHover) {\n traverseGroup(this as unknown as IGraphic, (node: IGraphic) => {\n if (!isEmpty(node.states)) {\n node.removeState(StateValue.hoverReverse);\n node.removeState(StateValue.hover);\n }\n });\n this._lastHover = null;\n }\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGraphic;\n if (this._lastSelect === target && target.hasState('selected')) {\n // 取消选中\n this._lastSelect = null;\n traverseGroup(this as unknown as IGraphic, (node: IGraphic) => {\n if (!isEmpty(node.states)) {\n node.removeState(StateValue.selectedReverse);\n node.removeState(StateValue.selected);\n }\n });\n return;\n }\n\n if (!isEmpty(target.states)) {\n target.addState(StateValue.selected, true);\n traverseGroup(this as unknown as IGraphic, (node: IGraphic) => {\n if (node !== target && !isEmpty(node.states)) {\n node.addState(StateValue.selectedReverse, true);\n }\n });\n this._lastSelect = target;\n }\n };\n\n protected _createLabelText(attributes: LabelItem) {\n const textAttrs = {\n ...this.stage?.getTheme()?.text,\n ...attributes\n };\n return createTextGraphicByType(textAttrs, 'textType');\n }\n\n private _prepare() {\n const currentBaseMarks: IGraphic[] = [];\n let baseMarks;\n if (isFunction(this.attribute.getBaseMarks)) {\n baseMarks = this.attribute.getBaseMarks();\n } else {\n baseMarks = getMarksByName(this.getRootNode() as IGroup, this.attribute.baseMarkGroupName);\n }\n\n baseMarks.forEach(mark => {\n if ((mark as any).releaseStatus !== 'willRelease') {\n currentBaseMarks.push(mark);\n }\n });\n\n this._idToGraphic?.clear();\n this._idToPoint?.clear();\n this._baseMarks = currentBaseMarks;\n this._isCollectionBase = this.attribute.type === 'line-data';\n\n if (!currentBaseMarks || currentBaseMarks.length === 0) {\n return;\n }\n\n const { data } = this.attribute;\n\n if (!data || data.length === 0) {\n return;\n }\n if (!this._idToGraphic) {\n this._idToGraphic = new Map();\n }\n\n // generate id mapping before data filter\n if (this._isCollectionBase) {\n if (!this._idToPoint) {\n this._idToPoint = new Map();\n }\n let cur = 0;\n for (let i = 0; i < currentBaseMarks.length; i++) {\n const baseMark = currentBaseMarks[i];\n const points = getPointsOfLineArea(baseMark as ILine | IArea);\n\n if (points && points.length) {\n for (let j = 0; j < points.length; j++) {\n const textData = data[cur];\n if (textData && points[j]) {\n if (!isValid(textData.id)) {\n textData.id = `vrender-component-${this.name}-${cur}`;\n }\n this._idToPoint.set(textData.id, points[j]);\n this._idToGraphic.set(textData.id, baseMark);\n }\n\n cur++;\n }\n }\n }\n } else {\n for (let i = 0; i < currentBaseMarks.length; i++) {\n const textData = data[i];\n const baseMark = currentBaseMarks[i] as IGraphic;\n if (textData && baseMark) {\n if (!isValid(textData.id)) {\n textData.id = `vrender-component-${this.name}-${i}`;\n }\n this._idToGraphic.set(textData.id, baseMark);\n }\n }\n }\n\n this._prepareAnimate(DefaultLabelAnimation);\n }\n\n protected getRelatedGraphic(item: LabelItem) {\n return this._idToGraphic.get(item.id);\n }\n\n protected _initText(data: LabelItem[] = []): (IText | IRichText)[] {\n const { textStyle = {} } = this.attribute;\n const labels = [];\n for (let i = 0; i < data.length; i++) {\n const textData = data[i];\n const baseMark = this.getRelatedGraphic(textData);\n if (!baseMark) {\n continue;\n }\n\n const graphicAttribute = baseMark.getAttributes(true);\n const labelAttribute = {\n fill: this._isCollectionBase\n ? isArray(graphicAttribute.stroke)\n ? graphicAttribute.stroke.find(entry => !!entry && entry !== true)\n : graphicAttribute.stroke\n : graphicAttribute.fill,\n ...textStyle,\n ...textData\n };\n const text = this._createLabelText(labelAttribute);\n labels.push(text);\n }\n\n return labels;\n }\n\n protected _layout(texts: (IText | IRichText)[]): (IText | IRichText)[] {\n const { position, offset } = this.attribute;\n for (let i = 0; i < texts.length; i++) {\n const text = texts[i];\n if (!text) {\n return;\n }\n const textData = text.attribute as LabelItem;\n const baseMark = this.getRelatedGraphic(textData);\n if (!baseMark) {\n continue;\n }\n\n text.attachedThemeGraphic = this as any;\n const textBounds = this.getGraphicBounds(text);\n text.attachedThemeGraphic = null;\n const actualPosition = isFunction(position) ? position(textData) : (position as string);\n\n const graphicBounds = this._isCollectionBase\n ? this.getGraphicBounds(null, this._idToPoint.get(textData.id), actualPosition)\n : this.getGraphicBounds(baseMark, { x: textData.x as number, y: textData.y as number }, actualPosition);\n\n const textLocation = this.labeling(textBounds, graphicBounds, actualPosition, offset);\n\n if (textLocation) {\n text.setAttributes(textLocation);\n }\n }\n\n return texts;\n }\n\n protected _overlapping(labels: (IText | IRichText)[]) {\n if (labels.length === 0) {\n return [];\n }\n const option = (isObject(this.attribute.overlap) ? this.attribute.overlap : {}) as OverlapAttrs;\n const baseMarkGroup = this.getBaseMarkGroup();\n\n const size = option.size ?? {\n width: baseMarkGroup?.AABBBounds.width() ?? 0,\n height: baseMarkGroup?.AABBBounds.height() ?? 0\n };\n\n if (size.width === 0 || size.height === 0) {\n return labels;\n }\n\n const { strategy, priority } = option;\n\n const bmpTool = this._bmpTool || bitmapTool(size.width, size.height);\n const bitmap = this._bitmap || bmpTool.bitmap();\n\n if (priority) {\n labels = labels.sort((a, b) => priority((b.attribute as any).data) - priority((a.attribute as any).data));\n }\n\n if ((strategy as ShiftYStrategy)?.type === 'shiftY') {\n return this._overlapGlobal(labels, option, bmpTool, bitmap);\n }\n return this._overlapByStrategy(labels, option, bmpTool, bitmap);\n }\n\n protected _overlapGlobal(labels: (IText | IRichText)[], option: OverlapAttrs, bmpTool: BitmapTool, bitmap: Bitmap) {\n let result = labels.filter(\n label =>\n label.attribute.visible &&\n label.attribute.opacity !== 0 &&\n this.isMarkInsideRect(this.getRelatedGraphic(label.attribute), bmpTool)\n );\n\n const { clampForce = true, hideOnHit = true, hideOnOverflow = false, overlapPadding, strategy } = option;\n if (clampForce || hideOnOverflow) {\n for (let i = 0; i < result.length; i++) {\n const text = labels[i];\n const { dx = 0, dy = 0 } = clampText(text as IText, bmpTool.width, bmpTool.height, bmpTool.padding);\n if (dx !== 0 || dy !== 0) {\n if (hideOnOverflow) {\n text.setAttributes({ visible: false });\n } else {\n text.setAttributes({ x: text.attribute.x + dx, y: text.attribute.y + dy });\n text._isClamped = true;\n }\n }\n }\n }\n result = shiftY(result as any, {\n maxY: bmpTool.height,\n ...(strategy as ShiftYStrategy),\n labelling: (text: IText) => {\n const baseMark = this.getRelatedGraphic(text.attribute);\n const graphicBound = this._isCollectionBase\n ? this.getGraphicBounds(null, this._idToPoint.get((text.attribute as any).id))\n : this.getGraphicBounds(baseMark, text);\n return this.labeling(text.AABBBounds, graphicBound, 'bottom', this.attribute.offset);\n }\n });\n\n for (let i = 0; i < result.length; i++) {\n const text = result[i];\n const bounds = text.AABBBounds;\n const range = boundToRange(bmpTool, bounds, true);\n if (canPlace(bmpTool, bitmap, bounds, clampForce, overlapPadding)) {\n bitmap.setRange(range);\n } else {\n if (hideOnOverflow) {\n if (this._processHideOnOverflow(text as IText, bmpTool)) {\n continue;\n }\n } else if (clampForce) {\n if (this._processClampForce(text as IText, bmpTool, bitmap, overlapPadding)) {\n continue;\n }\n }\n\n if (hideOnHit) {\n text.setAttributes({ visible: false });\n } else {\n bitmap.setRange(range);\n }\n }\n }\n return result;\n }\n\n protected _processHideOnOverflow(text: IText, bmpTool: BitmapTool) {\n const { dy: dy = 0, dx: dx = 0 } = clampText(text, bmpTool.width, bmpTool.height, bmpTool.padding);\n if (0 !== dx || 0 !== dy) {\n text.setAttributes({\n visible: false\n });\n return false;\n }\n return true;\n }\n\n protected _processClampForce(text: IText, bmpTool: BitmapTool, bitmap: Bitmap, overlapPadding = 0) {\n const { dy = 0, dx = 0 } = clampText(text as IText, bmpTool.width, bmpTool.height, bmpTool.padding);\n if (dx === 0 && dy === 0) {\n // 再次检查,若不考虑边界,仍然可以放得下,代表当前 text 没有与其他 text 重叠\n if (canPlace(bmpTool, bitmap, text.AABBBounds, false, overlapPadding)) {\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n return true;\n }\n } else if (\n canPlace(\n bmpTool,\n bitmap,\n {\n x1: text.AABBBounds.x1 + dx,\n x2: text.AABBBounds.x2 + dx,\n y1: text.AABBBounds.y1 + dy,\n y2: text.AABBBounds.y2 + dy\n }\n // 向内 clamp 只处理超出的位移量,不叠加 overlapPadding\n )\n ) {\n text.setAttributes({ x: text.attribute.x + dx, y: text.attribute.y + dy });\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n return true;\n }\n return false;\n }\n\n protected _overlapByStrategy(\n labels: (IText | IRichText)[],\n option: OverlapAttrs,\n bmpTool: BitmapTool,\n bitmap: Bitmap\n ) {\n const {\n avoidBaseMark,\n strategy = [],\n hideOnHit = true,\n clampForce = true,\n avoidMarks = [],\n overlapPadding,\n hideOnOverflow = false\n } = option;\n const result: (IText | IRichText)[] = [];\n\n const checkBounds = (strategy as Strategy[]).some(s => s.type === 'bound');\n // 躲避关联的基础图元\n if (avoidBaseMark) {\n this._baseMarks?.forEach(mark => {\n mark.AABBBounds && bitmap.setRange(boundToRange(bmpTool, mark.AABBBounds, true));\n });\n }\n\n // 躲避指定图元\n if (avoidMarks.length > 0) {\n avoidMarks.forEach(avoid => {\n if (isString(avoid)) {\n getNoneGroupMarksByName(this.getRootNode() as IGroup, avoid).forEach(avoidMark => {\n avoidMark.AABBBounds && bitmap.setRange(boundToRange(bmpTool, avoidMark.AABBBounds, true));\n });\n } else if (avoid.AABBBounds) {\n bitmap.setRange(boundToRange(bmpTool, avoid.AABBBounds, true));\n }\n });\n }\n\n for (let i = 0; i < labels.length; i++) {\n if (labels[i].attribute.visible === false) {\n continue;\n }\n\n const text = labels[i] as IText | IRichText;\n const baseMark = this.getRelatedGraphic(text.attribute);\n text.update();\n if (!this.isMarkInsideRect(baseMark, bmpTool)) {\n continue;\n }\n // 默认位置可以放置\n if (canPlace(bmpTool, bitmap, text.AABBBounds, clampForce, overlapPadding)) {\n // 如果配置了限制在图形内部,需要提前判断;\n if (!checkBounds) {\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n result.push(text);\n continue;\n }\n\n if (\n checkBounds &&\n baseMark &&\n baseMark.AABBBounds &&\n this._canPlaceInside(text.AABBBounds, baseMark.AABBBounds)\n ) {\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n result.push(text);\n continue;\n }\n }\n\n let hasPlace: ReturnType<typeof place> = false;\n // 发生碰撞,根据策略寻找可放置的位置\n for (let j = 0; j < (strategy as Strategy[]).length; j++) {\n hasPlace = place(\n bmpTool,\n bitmap,\n (strategy as any)[j],\n <BaseLabelAttrs>this.attribute,\n text as Text,\n this._isCollectionBase\n ? this.getGraphicBounds(null, this._idToPoint.get((labels[i].attribute as any).id))\n : this.getGraphicBounds(baseMark, labels[i].attribute),\n this.labeling\n );\n if (hasPlace !== false) {\n text.setAttributes({ x: hasPlace.x, y: hasPlace.y });\n // 需要判定是否超出边界\n if (!(hideOnOverflow && !this._processHideOnOverflow(text as IText, bmpTool))) {\n result.push(text);\n break;\n }\n }\n }\n\n // 尝试向内挤压\n if (!hasPlace) {\n // 是否隐藏\n if (hideOnOverflow) {\n // 直接隐藏\n if (!this._processHideOnOverflow(text as IText, bmpTool)) {\n continue;\n }\n }\n if (clampForce) {\n // 向内挤压\n if (this._processClampForce(text as IText, bmpTool, bitmap, overlapPadding)) {\n result.push(text);\n continue;\n }\n }\n }\n\n !hasPlace && !hideOnHit && result.push(text);\n }\n return result;\n }\n\n protected isMarkInsideRect(baseMark: IGraphic, bmpTool: BitmapTool) {\n const { left, right, top, bottom } = bmpTool.padding;\n const rect: IBoundsLike = { x1: -left, x2: bmpTool.width + right, y1: -top, y2: bmpTool.height + bottom };\n const bounds = baseMark.AABBBounds;\n if (bounds.width() !== 0 && bounds.height() !== 0) {\n return isRectIntersect(baseMark.AABBBounds, rect, true);\n }\n const { attribute } = baseMark;\n if (baseMark.type === 'rect') {\n const { x, x1, y, y1 } = attribute as IRectGraphicAttribute;\n return pointInRect({ x: x ?? x1, y: y ?? y1 }, rect, true);\n } else if ('x' in attribute && 'y' in attribute) {\n return pointInRect({ x: attribute.x, y: attribute.y }, rect, true);\n }\n return false;\n }\n\n protected getBaseMarkGroup() {\n const { baseMarkGroupName } = this.attribute as BaseLabelAttrs;\n if (!baseMarkGroupName) {\n return;\n }\n return (this.getRootNode() as IGroup).find(node => node.name === baseMarkGroupName, true) as IGroup;\n }\n\n protected getGraphicBounds(\n graphic?: IGraphic,\n point: Partial<PointLocationCfg> = {},\n position?: string\n ): IBoundsLike {\n if (graphic) {\n if (graphic.attribute.visible !== false) {\n // TODO 这里有些hack 如果有动画,需要使用finalAttribute\n if (graphic.context?.animationState) {\n const clonedGraphic = graphic.clone();\n Object.assign(clonedGraphic.attribute, graphic.getAttributes(true));\n return clonedGraphic.AABBBounds;\n }\n return graphic.AABBBounds;\n }\n const { x, y } = graphic.attribute;\n return { x1: x, x2: x, y1: y, y2: y } as IBoundsLike;\n }\n if (point && position && position === 'inside-middle') {\n const { x, y, x1 = x, y1 = y } = point;\n return {\n x1: (x + x1) / 2,\n x2: (x + x1) / 2,\n y1: (y + y1) / 2,\n y2: (y + y1) / 2\n };\n }\n const { x, y } = point;\n return { x1: x, x2: x, y1: y, y2: y } as IBoundsLike;\n }\n\n protected _renderLabels(labels: (IText | IRichText)[]) {\n const { syncState } = this.attribute;\n const currentTextMap: Map<any, LabelContent> = new Map();\n const prevTextMap: Map<any, LabelContent> = this._graphicToText || new Map();\n const texts = [] as (IText | IRichText)[];\n const labelLines = [] as ILine[];\n const { visible: showLabelLine } = this.attribute.line ?? {};\n\n labels &&\n labels.forEach((text, index) => {\n const relatedGraphic = this.getRelatedGraphic(text.attribute);\n const textKey = this._isCollectionBase ? (text.attribute as LabelItem).id : relatedGraphic;\n const state = prevTextMap?.get(textKey) ? 'update' : 'enter';\n let labelLine;\n if (showLabelLine) {\n labelLine = this._createLabelLine(text as IText, relatedGraphic);\n }\n const currentLabel = labelLine ? { text, labelLine } : { text };\n if (syncState) {\n this.updateStatesOfLabels([currentLabel], relatedGraphic.currentStates ?? []);\n }\n\n if (state === 'enter') {\n texts.push(text);\n currentTextMap.set(textKey, currentLabel);\n this._addLabel(currentLabel, texts, labelLines, index);\n } else if (state === 'update') {\n const prevLabel = prevTextMap.get(textKey);\n prevTextMap.delete(textKey);\n currentTextMap.set(textKey, prevLabel);\n this._updateLabel(prevLabel, currentLabel);\n }\n });\n\n this._removeLabel(prevTextMap);\n\n this._graphicToText = currentTextMap;\n }\n\n protected runEnterAnimation(text: IText | IRichText, labelLine?: ILine) {\n if (this._enableAnimation === false || !this._animationConfig.enter) {\n return;\n }\n\n const relatedGraphic = this.getRelatedGraphic(text.attribute);\n const { enter } = this._animationConfig;\n\n [text, labelLine].filter(Boolean).forEach(item =>\n item.applyAnimationState(\n ['enter'],\n [\n {\n name: 'enter',\n animation: {\n ...enter,\n type: 'labelEnter',\n selfOnly: true,\n customParameters: {\n relatedGraphic,\n relatedGraphics: this._idToGraphic,\n config: {\n ...enter,\n // 默认fadeIn\n type: item === text ? (enter as any).type : 'fadeIn'\n }\n }\n }\n }\n ]\n )\n );\n }\n\n protected _runUpdateAnimation(prevLabel: LabelContent, currentLabel: LabelContent) {\n const { text: prevText, labelLine: prevLabelLine } = prevLabel;\n const { text: curText, labelLine: curLabelLine } = currentLabel;\n\n prevText.applyAnimationState(\n ['update'],\n [\n {\n name: 'update',\n animation: {\n type: 'labelUpdate',\n customParameters: {\n ...this._animationConfig.update,\n prevText,\n curText,\n prevLabelLine,\n curLabelLine\n }\n }\n }\n ]\n );\n }\n\n protected _syncStateWithRelatedGraphic(relatedGraphic: IGraphic) {\n if (this.attribute.syncState && relatedGraphic) {\n relatedGraphic.on('afterStateUpdate', this._handleRelatedGraphicSetState);\n }\n }\n\n protected _addLabel(\n label: LabelContent,\n texts?: LabelContent['text'][],\n labelLines?: LabelContent['labelLine'][],\n index?: number\n ) {\n const { text, labelLine } = label;\n // TODO: 或许还需要判断关联图元是否有动画?\n const relatedGraphic = this.getRelatedGraphic(text.attribute);\n this._syncStateWithRelatedGraphic(relatedGraphic);\n\n if (text) {\n this.add(text);\n }\n if (labelLine) {\n this.add(labelLine);\n }\n\n this.runEnterAnimation(text, labelLine);\n }\n\n protected _updateLabel(prevLabel: LabelContent, currentLabel: LabelContent) {\n const { text: prevText, labelLine: prevLabelLine } = prevLabel;\n const { text: curText, labelLine: curLabelLine } = currentLabel;\n\n if (this._enableAnimation === false || this._animationConfig.update === false) {\n prevLabel.text.setAttributes(curText.attribute as any);\n if (prevLabelLine && curLabelLine) {\n prevLabel.labelLine.setAttributes(curLabelLine.attribute);\n }\n } else {\n this._runUpdateAnimation(prevLabel, currentLabel);\n }\n }\n\n protected _removeLabel(textMap: Map<any, LabelContent>) {\n const removeLabelAndLine = (label: LabelContent) => {\n this.removeChild(label.text);\n if (label.labelLine) {\n this.removeChild(label.labelLine);\n }\n };\n\n if (this._enableAnimation !== false && this._animationConfig.exit !== false) {\n textMap.forEach(label => {\n label.text.applyAnimationState(\n ['exit'],\n [\n {\n name: 'exit',\n animation: {\n ...this._animationConfig.exit,\n type: 'fadeOut'\n }\n }\n ],\n () => {\n removeLabelAndLine(label);\n }\n );\n label.labelLine?.applyAnimationState(\n ['exit'],\n [\n {\n name: 'exit',\n animation: {\n ...this._animationConfig.exit,\n type: 'fadeOut'\n }\n }\n ],\n () => {\n // removeLabelAndLine(label);\n }\n );\n });\n } else {\n textMap.forEach(label => {\n removeLabelAndLine(label);\n });\n }\n }\n\n private updateStatesOfLabels(labels: LabelContent[], currentStates?: string[]) {\n labels.forEach(label => {\n if (label) {\n if (label.text) {\n label.text.useStates(currentStates);\n }\n\n if (label.labelLine) {\n label.labelLine.useStates(currentStates);\n }\n }\n });\n }\n\n protected _handleRelatedGraphicSetState = (e: any) => {\n if (\n e.detail?.type === AttributeUpdateType.STATE ||\n (e.detail?.type === AttributeUpdateType.ANIMATE_UPDATE && e.detail.animationState?.isFirstFrameOfStep)\n ) {\n const currentStates = e.target?.currentStates ?? [];\n const labels = this._isCollectionBase ? [...this._graphicToText.values()] : [this._graphicToText.get(e.target)];\n\n this.updateStatesOfLabels(labels, currentStates);\n }\n };\n\n protected _smartInvert(labels: (IText | IRichText)[]) {\n const option = (isObject(this.attribute.smartInvert) ? this.attribute.smartInvert : {}) as SmartInvertAttrs;\n const { textType, contrastRatiosThreshold, alternativeColors, mode, interactInvertType } = option;\n const fillStrategy = option.fillStrategy ?? 'invertBase';\n const strokeStrategy = option.strokeStrategy ?? 'base';\n const brightColor = option.brightColor ?? '#ffffff';\n const darkColor = option.darkColor ?? '#000000';\n const outsideEnable = option.outsideEnable ?? false;\n\n if (fillStrategy === 'null' && strokeStrategy === 'null') {\n return;\n }\n\n for (let i = 0; i < labels.length; i++) {\n const label = labels[i];\n if (!label) {\n continue;\n }\n\n const baseMark = this.getRelatedGraphic(label.attribute as LabelItem);\n\n /**\n * 增加smartInvert时fillStrategy和 strokeStrategy的四种策略:\n * base(baseMark色),\n * inverBase(执行智能反色),\n * similarBase(智能反色的补色),\n * null(不执行智能反色,保持fill设置的颜色)\n * */\n let backgroundColor = baseMark.getAttributes(true).fill as IColor;\n let foregroundColor = label.attribute.fill as IColor;\n\n if (isObject(backgroundColor) && backgroundColor.gradient) {\n const firstStopColor = (backgroundColor as ILinearGradient).stops?.[0]?.color;\n\n if (firstStopColor) {\n backgroundColor = firstStopColor;\n foregroundColor = firstStopColor; // 渐变色的时候,标签的颜色可能会和背景色不一致,所以需要设置为相同的颜色\n }\n }\n\n const invertColor = labelSmartInvert(\n foregroundColor,\n backgroundColor,\n textType,\n contrastRatiosThreshold,\n alternativeColors,\n mode\n );\n const similarColor = contrastAccessibilityChecker(invertColor, brightColor) ? brightColor : darkColor;\n const isInside = this._canPlaceInside(label.AABBBounds, baseMark.AABBBounds);\n const isIntersect =\n !isInside && label.AABBBounds && baseMark.AABBBounds && baseMark.AABBBounds.intersects(label.AABBBounds);\n\n if (isInside || outsideEnable || (isIntersect && interactInvertType === 'inside')) {\n // 按照标签展示在柱子内部的情况,执行反色逻辑\n const fill = smartInvertStrategy(fillStrategy, backgroundColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n if (label.attribute.lineWidth === 0 || label.attribute.strokeOpacity === 0) {\n continue;\n }\n\n const stroke = smartInvertStrategy(strokeStrategy, backgroundColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n } else if (isIntersect && interactInvertType !== 'none') {\n // 存在相交的情况\n /** 当label无法设置stroke时,不进行反色计算(容易反色为白色与白色背景混合不可见) */\n if (label.attribute.lineWidth === 0 || label.attribute.strokeOpacity === 0) {\n continue;\n }\n /** 当label设置stroke时,保留stroke设置的颜色,根据stroke对fill做反色 */\n if (label.attribute.stroke) {\n // stroke 作为背景色进行反色计算\n label.setAttributes({\n fill: labelSmartInvert(\n label.attribute.fill as IColor,\n label.attribute.stroke as IColor,\n textType,\n contrastRatiosThreshold,\n alternativeColors,\n mode\n )\n });\n continue;\n }\n /** 当label未设置stroke,且可设置stroke时,正常计算 */\n const fill = smartInvertStrategy(fillStrategy, backgroundColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n const stroke = smartInvertStrategy(strokeStrategy, backgroundColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n }\n }\n }\n\n /**\n * 是否在图形内部\n * @param textBound\n * @param shapeBound\n * @returns\n */\n protected _canPlaceInside(textBound: IBoundsLike, shapeBound: IAABBBounds) {\n if (!textBound || !shapeBound) {\n return false;\n }\n return shapeBound.encloses(textBound);\n }\n\n setLocation(point: PointLocationCfg) {\n this.translateTo(point.x, point.y);\n }\n\n disableAnimation() {\n this._enableAnimation = false;\n }\n\n enableAnimation() {\n this._enableAnimation = true;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/label/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * @description Label 基类\n */\nimport type {\n IGroup,\n Text,\n IGraphic,\n IText,\n FederatedPointerEvent,\n IColor,\n ILine,\n IArea,\n IRichText,\n ILineGraphicAttribute,\n ILinearGradient,\n IRectGraphicAttribute\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator, AttributeUpdateType, IContainPointMode, CustomPath2D } from '@visactor/vrender-core';\nimport type { IAABBBounds, IBoundsLike, IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n isFunction,\n isEmpty,\n isValid,\n isString,\n merge,\n isRectIntersect,\n isNil,\n isArray,\n isObject,\n pointInRect\n} from '@visactor/vutils';\nimport type { PointLocationCfg } from '../core/type';\nimport { labelSmartInvert, contrastAccessibilityChecker, smartInvertStrategy } from '../util/label-smartInvert';\nimport { createTextGraphicByType, getMarksByName, getNoneGroupMarksByName, traverseGroup } from '../util';\nimport { StateValue } from '../constant';\nimport type { Bitmap, BitmapTool } from './overlap';\n// eslint-disable-next-line no-duplicate-imports\nimport { bitmapTool, boundToRange, canPlace, clampText, place } from './overlap';\nimport type {\n BaseLabelAttrs,\n OverlapAttrs,\n LabelItem,\n SmartInvertAttrs,\n ILabelEnterAnimation,\n ILabelExitAnimation,\n ILabelUpdateAnimation,\n LabelContent,\n ShiftYStrategy,\n Strategy\n} from './type';\nimport { DefaultLabelAnimation } from './animate/animate';\nimport { connectLineBetweenBounds, getPointsOfLineArea } from './util';\nimport type { ComponentOptions } from '../interface';\nimport { loadLabelComponent } from './register';\nimport { shiftY } from './overlap/shiftY';\nimport { AnimateComponent } from '../animation/animate-component';\n\nloadLabelComponent();\nexport class LabelBase<T extends BaseLabelAttrs> extends AnimateComponent<T> {\n name = 'label';\n\n protected _baseMarks?: IGraphic[];\n\n protected _isCollectionBase: boolean;\n\n protected _bitmap?: Bitmap;\n\n // parsed animation config\n protected _animationConfig?: {\n enter: ILabelEnterAnimation | false;\n exit: ILabelExitAnimation | false;\n update: ILabelUpdateAnimation | false;\n };\n\n static defaultAttributes: Partial<BaseLabelAttrs> = {\n textStyle: {\n fontSize: 12,\n // FIXME: we need a default color. Yet in current logic, textStyle will override fill from baseMark.\n // This need a new config option like `colorFull`\n // fill: '#000',\n textAlign: 'center',\n textBaseline: 'middle',\n boundsPadding: [-2, -1, -2, -1] // to ignore the textBound buf\n },\n offset: 0,\n pickable: false\n };\n\n setBitmap(bitmap: Bitmap) {\n this._bitmap = bitmap;\n }\n\n protected _bmpTool?: ReturnType<typeof bitmapTool>;\n setBitmapTool(bmpTool: ReturnType<typeof bitmapTool>) {\n this._bmpTool = bmpTool;\n }\n\n protected _graphicToText: Map<IGraphic, LabelContent>;\n\n protected _idToGraphic: Map<string, IGraphic>;\n\n protected _idToPoint: Map<string, IPointLike>;\n\n private _lastHover: IGraphic;\n private _lastSelect: IGraphic;\n\n private _enableAnimation: boolean;\n\n constructor(attributes: BaseLabelAttrs, options?: ComponentOptions) {\n const { data, ...restAttributes } = attributes;\n super(options?.skipDefault ? attributes : { data, ...merge({}, LabelBase.defaultAttributes, restAttributes) });\n }\n\n /**\n * 计算 text 的最终位置属性x, y\n * @param textBounds\n * @param graphicBounds\n * @param position\n * @param offset\n * @returns\n */\n protected labeling(\n textBounds: IBoundsLike,\n graphicBounds: IBoundsLike,\n position?: BaseLabelAttrs['position'],\n offset?: number\n ): { x: number; y: number } | undefined {\n // 基类没有指定的图元类型,需要在 data 中指定位置,故无需进行 labeling\n return;\n }\n\n protected _getLabelLinePoints(text: IText | IRichText, baseMark?: IGraphic) {\n return connectLineBetweenBounds(text.AABBBounds, baseMark?.AABBBounds);\n }\n\n protected _createLabelLine(text: IText | IRichText, baseMark?: IGraphic): ILine | undefined {\n const points = this._getLabelLinePoints(text, baseMark);\n if (points) {\n const lineGraphic = graphicCreator.line({\n points\n });\n\n const { line = {} } = text.attribute as any;\n\n if (line.customShape) {\n const customShape = line.customShape;\n lineGraphic.pathProxy = (attrs: Partial<ILineGraphicAttribute>) => {\n return customShape(\n {\n text,\n baseMark: baseMark\n },\n attrs,\n new CustomPath2D()\n );\n };\n }\n\n if (baseMark && baseMark.getAttributes(true).fill) {\n lineGraphic.setAttribute('stroke', baseMark.getAttributes(true).fill);\n }\n\n if (this.attribute.line && !isEmpty(this.attribute.line.style)) {\n lineGraphic.setAttributes(this.attribute.line.style);\n }\n this._setStatesOfLabelLine(lineGraphic);\n return lineGraphic;\n }\n }\n\n protected render() {\n this._prepare();\n if (isNil(this._idToGraphic) || (this._isCollectionBase && isNil(this._idToPoint))) {\n return;\n }\n // 如果有动画的话,需要先设置入场的最终属性,否则无法计算放重叠、反色之类的逻辑\n const markAttributeList: any[] = [];\n if (this._enableAnimation !== false) {\n this._baseMarks.forEach(mark => {\n markAttributeList.push(mark.attribute);\n mark.initAttributes(mark.getAttributes(true));\n });\n }\n\n const { overlap, smartInvert, dataFilter, customLayoutFunc, customOverlapFunc } = this.attribute;\n let data = this.attribute.data;\n\n if (isFunction(dataFilter)) {\n data = dataFilter(data);\n }\n\n if (data && data.length) {\n // 数据保护,防止重复 id 造成不可预知的问题\n const seenIds = new Set();\n data = data.filter(d => !seenIds.has(d.id) && seenIds.add(d.id));\n }\n\n let labels: (IText | IRichText)[] = this._initText(data);\n\n if (isFunction(customLayoutFunc)) {\n labels = customLayoutFunc(\n data,\n labels,\n this.getRelatedGraphic.bind(this),\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null,\n this\n );\n } else {\n // 根据关联图元和配置的position计算标签坐标\n labels = this._layout(labels);\n }\n\n if (isFunction(customOverlapFunc)) {\n labels = customOverlapFunc(\n labels as Text[],\n this.getRelatedGraphic.bind(this),\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null,\n this\n );\n } else {\n // 防重叠逻辑\n if (overlap !== false) {\n labels = this._overlapping(labels);\n }\n }\n\n if (isFunction(this.attribute.onAfterOverlapping)) {\n this.attribute.onAfterOverlapping(\n labels as Text[],\n this.getRelatedGraphic.bind(this),\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null,\n this\n );\n }\n\n if (labels && labels.length) {\n labels.forEach(label => {\n this._bindEvent(label);\n this._setStatesOfText(label);\n });\n }\n\n if (smartInvert !== false) {\n this._smartInvert(labels);\n }\n\n this._renderLabels(labels);\n\n if (this._enableAnimation !== false) {\n this._baseMarks.forEach((mark, index) => {\n mark.initAttributes(markAttributeList[index]);\n });\n }\n }\n\n private _bindEvent(target: IGraphic) {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n if (!target) {\n return;\n }\n\n const { hover, select } = this.attribute;\n\n if (hover) {\n target.addEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n target.addEventListener('pointerout', this._onUnHover as EventListenerOrEventListenerObject);\n }\n\n if (select) {\n target.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _setStatesOfText(target: IGraphic) {\n if (!target) {\n return;\n }\n const state = this.attribute.state;\n\n if (!state || isEmpty(state)) {\n return;\n }\n\n target.states = state;\n }\n\n protected _setStatesOfLabelLine(target: IGraphic) {\n if (!target) {\n return;\n }\n const state = this.attribute.labelLineState;\n\n if (!state || isEmpty(state)) {\n return;\n }\n\n target.states = state;\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGraphic;\n if (target !== this._lastHover && !isEmpty(target.states)) {\n target.addState(StateValue.hover, true);\n traverseGroup(this as unknown as IGraphic, (node: IGraphic) => {\n if (node !== target && !isEmpty(node.states)) {\n node.addState(StateValue.hoverReverse, true);\n }\n });\n this._lastHover = target;\n }\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n if (this._lastHover) {\n traverseGroup(this as unknown as IGraphic, (node: IGraphic) => {\n if (!isEmpty(node.states)) {\n node.removeState(StateValue.hoverReverse);\n node.removeState(StateValue.hover);\n }\n });\n this._lastHover = null;\n }\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGraphic;\n if (this._lastSelect === target && target.hasState('selected')) {\n // 取消选中\n this._lastSelect = null;\n traverseGroup(this as unknown as IGraphic, (node: IGraphic) => {\n if (!isEmpty(node.states)) {\n node.removeState(StateValue.selectedReverse);\n node.removeState(StateValue.selected);\n }\n });\n return;\n }\n\n if (!isEmpty(target.states)) {\n target.addState(StateValue.selected, true);\n traverseGroup(this as unknown as IGraphic, (node: IGraphic) => {\n if (node !== target && !isEmpty(node.states)) {\n node.addState(StateValue.selectedReverse, true);\n }\n });\n this._lastSelect = target;\n }\n };\n\n protected _createLabelText(attributes: LabelItem) {\n const textAttrs = {\n ...this.stage?.getTheme()?.text,\n ...attributes\n };\n return createTextGraphicByType(textAttrs, 'textType');\n }\n\n private _prepare() {\n const currentBaseMarks: IGraphic[] = [];\n let baseMarks;\n if (isFunction(this.attribute.getBaseMarks)) {\n baseMarks = this.attribute.getBaseMarks();\n } else {\n baseMarks = getMarksByName(this.getRootNode() as IGroup, this.attribute.baseMarkGroupName);\n }\n\n baseMarks.forEach(mark => {\n if ((mark as any).releaseStatus !== 'willRelease') {\n currentBaseMarks.push(mark);\n }\n });\n\n this._idToGraphic?.clear();\n this._idToPoint?.clear();\n this._baseMarks = currentBaseMarks;\n this._isCollectionBase = this.attribute.type === 'line-data';\n\n if (!currentBaseMarks || currentBaseMarks.length === 0) {\n return;\n }\n\n const { data } = this.attribute;\n\n if (!data || data.length === 0) {\n return;\n }\n if (!this._idToGraphic) {\n this._idToGraphic = new Map();\n }\n\n // generate id mapping before data filter\n if (this._isCollectionBase) {\n if (!this._idToPoint) {\n this._idToPoint = new Map();\n }\n let cur = 0;\n for (let i = 0; i < currentBaseMarks.length; i++) {\n const baseMark = currentBaseMarks[i];\n const points = getPointsOfLineArea(baseMark as ILine | IArea);\n\n if (points && points.length) {\n for (let j = 0; j < points.length; j++) {\n const textData = data[cur];\n if (textData && points[j]) {\n if (!isValid(textData.id)) {\n textData.id = `vrender-component-${this.name}-${cur}`;\n }\n this._idToPoint.set(textData.id, points[j]);\n this._idToGraphic.set(textData.id, baseMark);\n }\n\n cur++;\n }\n }\n }\n } else {\n for (let i = 0; i < currentBaseMarks.length; i++) {\n const textData = data[i];\n const baseMark = currentBaseMarks[i] as IGraphic;\n if (textData && baseMark) {\n if (!isValid(textData.id)) {\n textData.id = `vrender-component-${this.name}-${i}`;\n }\n this._idToGraphic.set(textData.id, baseMark);\n }\n }\n }\n\n this._prepareAnimate(DefaultLabelAnimation);\n }\n\n protected getRelatedGraphic(item: LabelItem) {\n return this._idToGraphic.get(item.id);\n }\n\n protected _initText(data: LabelItem[] = []): (IText | IRichText)[] {\n const { textStyle = {} } = this.attribute;\n const labels = [];\n for (let i = 0; i < data.length; i++) {\n const textData = data[i];\n const baseMark = this.getRelatedGraphic(textData);\n if (!baseMark) {\n continue;\n }\n\n const graphicAttribute = baseMark.getAttributes(true);\n const labelAttribute = {\n fill: this._isCollectionBase\n ? isArray(graphicAttribute.stroke)\n ? graphicAttribute.stroke.find(entry => !!entry && entry !== true)\n : graphicAttribute.stroke\n : graphicAttribute.fill,\n ...textStyle,\n ...textData\n };\n const text = this._createLabelText(labelAttribute);\n labels.push(text);\n }\n\n return labels;\n }\n\n protected _layout(texts: (IText | IRichText)[]): (IText | IRichText)[] {\n const { position, offset } = this.attribute;\n for (let i = 0; i < texts.length; i++) {\n const text = texts[i];\n if (!text) {\n return;\n }\n const textData = text.attribute as LabelItem;\n const baseMark = this.getRelatedGraphic(textData);\n if (!baseMark) {\n continue;\n }\n\n text.attachedThemeGraphic = this as any;\n const textBounds = this.getGraphicBounds(text);\n text.attachedThemeGraphic = null;\n const actualPosition = isFunction(position) ? position(textData) : (position as string);\n\n const graphicBounds = this._isCollectionBase\n ? this.getGraphicBounds(null, this._idToPoint.get(textData.id), actualPosition)\n : this.getGraphicBounds(baseMark, { x: textData.x as number, y: textData.y as number }, actualPosition);\n\n const textLocation = this.labeling(textBounds, graphicBounds, actualPosition, offset);\n\n if (textLocation) {\n text.setAttributes(textLocation);\n }\n }\n\n return texts;\n }\n\n protected _overlapping(labels: (IText | IRichText)[]) {\n if (labels.length === 0) {\n return [];\n }\n const option = (isObject(this.attribute.overlap) ? this.attribute.overlap : {}) as OverlapAttrs;\n const baseMarkGroup = this.getBaseMarkGroup();\n\n const size = option.size ?? {\n width: baseMarkGroup?.AABBBounds.width() ?? 0,\n height: baseMarkGroup?.AABBBounds.height() ?? 0\n };\n\n if (size.width === 0 || size.height === 0) {\n return labels;\n }\n\n const { strategy, priority } = option;\n\n const bmpTool = this._bmpTool || bitmapTool(size.width, size.height);\n const bitmap = this._bitmap || bmpTool.bitmap();\n\n if (priority) {\n labels = labels.sort((a, b) => priority((b.attribute as any).data) - priority((a.attribute as any).data));\n }\n\n if ((strategy as ShiftYStrategy)?.type === 'shiftY') {\n return this._overlapGlobal(labels, option, bmpTool, bitmap);\n }\n return this._overlapByStrategy(labels, option, bmpTool, bitmap);\n }\n\n protected _overlapGlobal(labels: (IText | IRichText)[], option: OverlapAttrs, bmpTool: BitmapTool, bitmap: Bitmap) {\n let result = labels.filter(\n label =>\n label.attribute.visible &&\n label.attribute.opacity !== 0 &&\n this.isMarkInsideRect(this.getRelatedGraphic(label.attribute), bmpTool)\n );\n\n const { clampForce = true, hideOnHit = true, hideOnOverflow = false, overlapPadding, strategy } = option;\n if (clampForce || hideOnOverflow) {\n for (let i = 0; i < result.length; i++) {\n const text = labels[i];\n const { dx = 0, dy = 0 } = clampText(text as IText, bmpTool.width, bmpTool.height, bmpTool.padding);\n if (dx !== 0 || dy !== 0) {\n if (hideOnOverflow) {\n text.setAttributes({ visible: false });\n } else {\n text.setAttributes({ x: text.attribute.x + dx, y: text.attribute.y + dy });\n text._isClamped = true;\n }\n }\n }\n }\n result = shiftY(result as any, {\n maxY: bmpTool.height,\n ...(strategy as ShiftYStrategy),\n labelling: (text: IText) => {\n const baseMark = this.getRelatedGraphic(text.attribute);\n const graphicBound = this._isCollectionBase\n ? this.getGraphicBounds(null, this._idToPoint.get((text.attribute as any).id))\n : this.getGraphicBounds(baseMark, text);\n return this.labeling(text.AABBBounds, graphicBound, 'bottom', this.attribute.offset);\n }\n });\n\n for (let i = 0; i < result.length; i++) {\n const text = result[i];\n const bounds = text.AABBBounds;\n const range = boundToRange(bmpTool, bounds, true);\n if (canPlace(bmpTool, bitmap, bounds, clampForce || hideOnOverflow, overlapPadding)) {\n bitmap.setRange(range);\n } else {\n if (hideOnOverflow) {\n if (this._processHideOnOverflow(text as IText, bmpTool)) {\n continue;\n }\n } else if (clampForce) {\n if (this._processClampForce(text as IText, bmpTool, bitmap, overlapPadding)) {\n continue;\n }\n }\n\n if (hideOnHit) {\n text.setAttributes({ visible: false });\n } else {\n bitmap.setRange(range);\n }\n }\n }\n return result;\n }\n\n protected _processHideOnOverflow(text: IText, bmpTool: BitmapTool) {\n const { dy: dy = 0, dx: dx = 0 } = clampText(text, bmpTool.width, bmpTool.height, bmpTool.padding);\n if (0 !== dx || 0 !== dy) {\n text.setAttributes({\n visible: false\n });\n return false;\n }\n return true;\n }\n\n protected _processClampForce(text: IText, bmpTool: BitmapTool, bitmap: Bitmap, overlapPadding = 0) {\n const { dy = 0, dx = 0 } = clampText(text as IText, bmpTool.width, bmpTool.height, bmpTool.padding);\n if (dx === 0 && dy === 0) {\n // 再次检查,若不考虑边界,仍然可以放得下,代表当前 text 没有与其他 text 重叠\n if (canPlace(bmpTool, bitmap, text.AABBBounds, false, overlapPadding)) {\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n return true;\n }\n } else if (\n canPlace(\n bmpTool,\n bitmap,\n {\n x1: text.AABBBounds.x1 + dx,\n x2: text.AABBBounds.x2 + dx,\n y1: text.AABBBounds.y1 + dy,\n y2: text.AABBBounds.y2 + dy\n }\n // 向内 clamp 只处理超出的位移量,不叠加 overlapPadding\n )\n ) {\n text.setAttributes({ x: text.attribute.x + dx, y: text.attribute.y + dy });\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n return true;\n }\n return false;\n }\n\n protected _overlapByStrategy(\n labels: (IText | IRichText)[],\n option: OverlapAttrs,\n bmpTool: BitmapTool,\n bitmap: Bitmap\n ) {\n const {\n avoidBaseMark,\n strategy = [],\n hideOnHit = true,\n clampForce = true,\n avoidMarks = [],\n overlapPadding,\n hideOnOverflow = false\n } = option;\n const result: (IText | IRichText)[] = [];\n\n const checkBounds = (strategy as Strategy[]).some(s => s.type === 'bound');\n // 躲避关联的基础图元\n if (avoidBaseMark) {\n this._baseMarks?.forEach(mark => {\n mark.AABBBounds && bitmap.setRange(boundToRange(bmpTool, mark.AABBBounds, true));\n });\n }\n\n // 躲避指定图元\n if (avoidMarks.length > 0) {\n avoidMarks.forEach(avoid => {\n if (isString(avoid)) {\n getNoneGroupMarksByName(this.getRootNode() as IGroup, avoid).forEach(avoidMark => {\n avoidMark.AABBBounds && bitmap.setRange(boundToRange(bmpTool, avoidMark.AABBBounds, true));\n });\n } else if (avoid.AABBBounds) {\n bitmap.setRange(boundToRange(bmpTool, avoid.AABBBounds, true));\n }\n });\n }\n\n for (let i = 0; i < labels.length; i++) {\n if (labels[i].attribute.visible === false) {\n continue;\n }\n\n const text = labels[i] as IText | IRichText;\n const baseMark = this.getRelatedGraphic(text.attribute);\n text.update();\n if (!this.isMarkInsideRect(baseMark, bmpTool)) {\n continue;\n }\n // 默认位置可以放置\n if (canPlace(bmpTool, bitmap, text.AABBBounds, clampForce || hideOnOverflow, overlapPadding)) {\n // 如果配置了限制在图形内部,需要提前判断;\n if (!checkBounds) {\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n result.push(text);\n continue;\n }\n\n if (\n checkBounds &&\n baseMark &&\n baseMark.AABBBounds &&\n this._canPlaceInside(text.AABBBounds, baseMark.AABBBounds)\n ) {\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n result.push(text);\n continue;\n }\n }\n\n let hasPlace: ReturnType<typeof place> = false;\n // 发生碰撞,根据策略寻找可放置的位置\n for (let j = 0; j < (strategy as Strategy[]).length; j++) {\n hasPlace = place(\n bmpTool,\n bitmap,\n (strategy as any)[j],\n <BaseLabelAttrs>this.attribute,\n text as Text,\n this._isCollectionBase\n ? this.getGraphicBounds(null, this._idToPoint.get((labels[i].attribute as any).id))\n : this.getGraphicBounds(baseMark, labels[i].attribute),\n this.labeling\n );\n if (hasPlace !== false) {\n text.setAttributes({ x: hasPlace.x, y: hasPlace.y });\n // 需要判定是否超出边界\n if (!(hideOnOverflow && !this._processHideOnOverflow(text as IText, bmpTool))) {\n result.push(text);\n break;\n }\n }\n }\n\n // 尝试向内挤压\n if (!hasPlace) {\n // 是否隐藏\n if (hideOnOverflow) {\n // 直接隐藏\n if (!this._processHideOnOverflow(text as IText, bmpTool)) {\n continue;\n }\n }\n if (clampForce) {\n // 向内挤压\n if (this._processClampForce(text as IText, bmpTool, bitmap, overlapPadding)) {\n result.push(text);\n continue;\n }\n }\n }\n\n !hasPlace && !hideOnHit && result.push(text);\n }\n return result;\n }\n\n protected isMarkInsideRect(baseMark: IGraphic, bmpTool: BitmapTool) {\n const { left, right, top, bottom } = bmpTool.padding;\n const rect: IBoundsLike = { x1: -left, x2: bmpTool.width + right, y1: -top, y2: bmpTool.height + bottom };\n const bounds = baseMark.AABBBounds;\n if (bounds.width() !== 0 && bounds.height() !== 0) {\n return isRectIntersect(baseMark.AABBBounds, rect, true);\n }\n const { attribute } = baseMark;\n if (baseMark.type === 'rect') {\n const { x, x1, y, y1 } = attribute as IRectGraphicAttribute;\n return pointInRect({ x: x ?? x1, y: y ?? y1 }, rect, true);\n } else if ('x' in attribute && 'y' in attribute) {\n return pointInRect({ x: attribute.x, y: attribute.y }, rect, true);\n }\n return false;\n }\n\n protected getBaseMarkGroup() {\n const { baseMarkGroupName } = this.attribute as BaseLabelAttrs;\n if (!baseMarkGroupName) {\n return;\n }\n return (this.getRootNode() as IGroup).find(node => node.name === baseMarkGroupName, true) as IGroup;\n }\n\n protected getGraphicBounds(\n graphic?: IGraphic,\n point: Partial<PointLocationCfg> = {},\n position?: string\n ): IBoundsLike {\n if (graphic) {\n if (graphic.attribute.visible !== false) {\n // TODO 这里有些hack 如果有动画,需要使用finalAttribute\n if (graphic.context?.animationState) {\n const clonedGraphic = graphic.clone();\n Object.assign(clonedGraphic.attribute, graphic.getAttributes(true));\n return clonedGraphic.AABBBounds;\n }\n return graphic.AABBBounds;\n }\n const { x, y } = graphic.attribute;\n return { x1: x, x2: x, y1: y, y2: y } as IBoundsLike;\n }\n if (point && position && position === 'inside-middle') {\n const { x, y, x1 = x, y1 = y } = point;\n return {\n x1: (x + x1) / 2,\n x2: (x + x1) / 2,\n y1: (y + y1) / 2,\n y2: (y + y1) / 2\n };\n }\n const { x, y } = point;\n return { x1: x, x2: x, y1: y, y2: y } as IBoundsLike;\n }\n\n protected _renderLabels(labels: (IText | IRichText)[]) {\n const { syncState } = this.attribute;\n const currentTextMap: Map<any, LabelContent> = new Map();\n const prevTextMap: Map<any, LabelContent> = this._graphicToText || new Map();\n const texts = [] as (IText | IRichText)[];\n const labelLines = [] as ILine[];\n const { visible: showLabelLine } = this.attribute.line ?? {};\n\n labels &&\n labels.forEach((text, index) => {\n const relatedGraphic = this.getRelatedGraphic(text.attribute);\n const textKey = this._isCollectionBase ? (text.attribute as LabelItem).id : relatedGraphic;\n const state = prevTextMap?.get(textKey) ? 'update' : 'enter';\n let labelLine;\n if (showLabelLine) {\n labelLine = this._createLabelLine(text as IText, relatedGraphic);\n }\n const currentLabel = labelLine ? { text, labelLine } : { text };\n if (syncState) {\n this.updateStatesOfLabels([currentLabel], relatedGraphic.currentStates ?? []);\n }\n\n if (state === 'enter') {\n texts.push(text);\n currentTextMap.set(textKey, currentLabel);\n this._addLabel(currentLabel, texts, labelLines, index);\n } else if (state === 'update') {\n const prevLabel = prevTextMap.get(textKey);\n prevTextMap.delete(textKey);\n currentTextMap.set(textKey, prevLabel);\n this._updateLabel(prevLabel, currentLabel);\n }\n });\n\n this._removeLabel(prevTextMap);\n\n this._graphicToText = currentTextMap;\n }\n\n protected runEnterAnimation(text: IText | IRichText, labelLine?: ILine) {\n if (this._enableAnimation === false || !this._animationConfig.enter) {\n return;\n }\n\n const relatedGraphic = this.getRelatedGraphic(text.attribute);\n const { enter } = this._animationConfig;\n\n [text, labelLine].filter(Boolean).forEach(item =>\n item.applyAnimationState(\n ['enter'],\n [\n {\n name: 'enter',\n animation: {\n ...enter,\n type: 'labelEnter',\n selfOnly: true,\n customParameters: {\n relatedGraphic,\n relatedGraphics: this._idToGraphic,\n config: {\n ...enter,\n // 默认fadeIn\n type: item === text ? (enter as any).type : 'fadeIn'\n }\n }\n }\n }\n ]\n )\n );\n }\n\n protected _runUpdateAnimation(prevLabel: LabelContent, currentLabel: LabelContent) {\n const { text: prevText, labelLine: prevLabelLine } = prevLabel;\n const { text: curText, labelLine: curLabelLine } = currentLabel;\n\n prevText.applyAnimationState(\n ['update'],\n [\n {\n name: 'update',\n animation: {\n type: 'labelUpdate',\n customParameters: {\n ...this._animationConfig.update,\n prevText,\n curText,\n prevLabelLine,\n curLabelLine\n }\n }\n }\n ]\n );\n }\n\n protected _syncStateWithRelatedGraphic(relatedGraphic: IGraphic) {\n if (this.attribute.syncState && relatedGraphic) {\n relatedGraphic.on('afterStateUpdate', this._handleRelatedGraphicSetState);\n }\n }\n\n protected _addLabel(\n label: LabelContent,\n texts?: LabelContent['text'][],\n labelLines?: LabelContent['labelLine'][],\n index?: number\n ) {\n const { text, labelLine } = label;\n // TODO: 或许还需要判断关联图元是否有动画?\n const relatedGraphic = this.getRelatedGraphic(text.attribute);\n this._syncStateWithRelatedGraphic(relatedGraphic);\n\n if (text) {\n this.add(text);\n }\n if (labelLine) {\n this.add(labelLine);\n }\n\n this.runEnterAnimation(text, labelLine);\n }\n\n protected _updateLabel(prevLabel: LabelContent, currentLabel: LabelContent) {\n const { text: prevText, labelLine: prevLabelLine } = prevLabel;\n const { text: curText, labelLine: curLabelLine } = currentLabel;\n\n if (this._enableAnimation === false || this._animationConfig.update === false) {\n prevLabel.text.setAttributes(curText.attribute as any);\n if (prevLabelLine && curLabelLine) {\n prevLabel.labelLine.setAttributes(curLabelLine.attribute);\n }\n } else {\n this._runUpdateAnimation(prevLabel, currentLabel);\n }\n }\n\n protected _removeLabel(textMap: Map<any, LabelContent>) {\n const removeLabelAndLine = (label: LabelContent) => {\n this.removeChild(label.text);\n if (label.labelLine) {\n this.removeChild(label.labelLine);\n }\n };\n\n if (this._enableAnimation !== false && this._animationConfig.exit !== false) {\n textMap.forEach(label => {\n label.text.applyAnimationState(\n ['exit'],\n [\n {\n name: 'exit',\n animation: {\n ...this._animationConfig.exit,\n type: 'fadeOut'\n }\n }\n ],\n () => {\n removeLabelAndLine(label);\n }\n );\n label.labelLine?.applyAnimationState(\n ['exit'],\n [\n {\n name: 'exit',\n animation: {\n ...this._animationConfig.exit,\n type: 'fadeOut'\n }\n }\n ],\n () => {\n // removeLabelAndLine(label);\n }\n );\n });\n } else {\n textMap.forEach(label => {\n removeLabelAndLine(label);\n });\n }\n }\n\n private updateStatesOfLabels(labels: LabelContent[], currentStates?: string[]) {\n labels.forEach(label => {\n if (label) {\n if (label.text) {\n label.text.useStates(currentStates);\n }\n\n if (label.labelLine) {\n label.labelLine.useStates(currentStates);\n }\n }\n });\n }\n\n protected _handleRelatedGraphicSetState = (e: any) => {\n if (\n e.detail?.type === AttributeUpdateType.STATE ||\n (e.detail?.type === AttributeUpdateType.ANIMATE_UPDATE && e.detail.animationState?.isFirstFrameOfStep)\n ) {\n const currentStates = e.target?.currentStates ?? [];\n const labels = this._isCollectionBase ? [...this._graphicToText.values()] : [this._graphicToText.get(e.target)];\n\n this.updateStatesOfLabels(labels, currentStates);\n }\n };\n\n protected _smartInvert(labels: (IText | IRichText)[]) {\n const option = (isObject(this.attribute.smartInvert) ? this.attribute.smartInvert : {}) as SmartInvertAttrs;\n const { textType, contrastRatiosThreshold, alternativeColors, mode, interactInvertType } = option;\n const fillStrategy = option.fillStrategy ?? 'invertBase';\n const strokeStrategy = option.strokeStrategy ?? 'base';\n const brightColor = option.brightColor ?? '#ffffff';\n const darkColor = option.darkColor ?? '#000000';\n const outsideEnable = option.outsideEnable ?? false;\n\n if (fillStrategy === 'null' && strokeStrategy === 'null') {\n return;\n }\n\n for (let i = 0; i < labels.length; i++) {\n const label = labels[i];\n if (!label) {\n continue;\n }\n\n const baseMark = this.getRelatedGraphic(label.attribute as LabelItem);\n\n /**\n * 增加smartInvert时fillStrategy和 strokeStrategy的四种策略:\n * base(baseMark色),\n * inverBase(执行智能反色),\n * similarBase(智能反色的补色),\n * null(不执行智能反色,保持fill设置的颜色)\n * */\n let backgroundColor = baseMark.getAttributes(true).fill as IColor;\n let foregroundColor = label.attribute.fill as IColor;\n\n if (isObject(backgroundColor) && backgroundColor.gradient) {\n const firstStopColor = (backgroundColor as ILinearGradient).stops?.[0]?.color;\n\n if (firstStopColor) {\n backgroundColor = firstStopColor;\n foregroundColor = firstStopColor; // 渐变色的时候,标签的颜色可能会和背景色不一致,所以需要设置为相同的颜色\n }\n }\n\n const invertColor = labelSmartInvert(\n foregroundColor,\n backgroundColor,\n textType,\n contrastRatiosThreshold,\n alternativeColors,\n mode\n );\n const similarColor = contrastAccessibilityChecker(invertColor, brightColor) ? brightColor : darkColor;\n const isInside = this._canPlaceInside(label.AABBBounds, baseMark.AABBBounds);\n const isIntersect =\n !isInside && label.AABBBounds && baseMark.AABBBounds && baseMark.AABBBounds.intersects(label.AABBBounds);\n\n if (isInside || outsideEnable || (isIntersect && interactInvertType === 'inside')) {\n // 按照标签展示在柱子内部的情况,执行反色逻辑\n const fill = smartInvertStrategy(fillStrategy, backgroundColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n if (label.attribute.lineWidth === 0 || label.attribute.strokeOpacity === 0) {\n continue;\n }\n\n const stroke = smartInvertStrategy(strokeStrategy, backgroundColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n } else if (isIntersect && interactInvertType !== 'none') {\n // 存在相交的情况\n /** 当label无法设置stroke时,不进行反色计算(容易反色为白色与白色背景混合不可见) */\n if (label.attribute.lineWidth === 0 || label.attribute.strokeOpacity === 0) {\n continue;\n }\n /** 当label设置stroke时,保留stroke设置的颜色,根据stroke对fill做反色 */\n if (label.attribute.stroke) {\n // stroke 作为背景色进行反色计算\n label.setAttributes({\n fill: labelSmartInvert(\n label.attribute.fill as IColor,\n label.attribute.stroke as IColor,\n textType,\n contrastRatiosThreshold,\n alternativeColors,\n mode\n )\n });\n continue;\n }\n /** 当label未设置stroke,且可设置stroke时,正常计算 */\n const fill = smartInvertStrategy(fillStrategy, backgroundColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n const stroke = smartInvertStrategy(strokeStrategy, backgroundColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n }\n }\n }\n\n /**\n * 是否在图形内部\n * @param textBound\n * @param shapeBound\n * @returns\n */\n protected _canPlaceInside(textBound: IBoundsLike, shapeBound: IAABBBounds) {\n if (!textBound || !shapeBound) {\n return false;\n }\n return shapeBound.encloses(textBound);\n }\n\n setLocation(point: PointLocationCfg) {\n this.translateTo(point.x, point.y);\n }\n\n disableAnimation() {\n this._enableAnimation = false;\n }\n\n enableAnimation() {\n this._enableAnimation = true;\n }\n}\n"]}
|
|
@@ -33,19 +33,17 @@ class TableSeriesNumberEventManager {
|
|
|
33
33
|
this._tableSeriesNumber.interactionState._lastClickItem = target;
|
|
34
34
|
} else {
|
|
35
35
|
if (target.name.startsWith("col")) {
|
|
36
|
-
Number(target.name.split("-")[1])
|
|
37
|
-
const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY), XYtoTarget = {
|
|
36
|
+
const colIndex = Number(target.name.split("-")[1]), canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY), XYtoTarget = {
|
|
38
37
|
x: 0,
|
|
39
38
|
y: 0
|
|
40
39
|
};
|
|
41
|
-
target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget), XYtoTarget.x <= 4 || XYtoTarget.x <= target.getAttributes().width && XYtoTarget.x >= target.getAttributes().width - 4 ? target.setAttribute("cursor", "col-resize") : target.setAttribute("cursor", "default");
|
|
40
|
+
target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget), XYtoTarget.x <= 4 || XYtoTarget.x <= target.getAttributes().width && XYtoTarget.x >= target.getAttributes().width - 4 ? target.setAttribute("cursor", "col-resize") : null != colIndex && this._tableSeriesNumber.attribute.checkMoveColumnOrder(colIndex) ? target.setAttribute("cursor", "grab") : target.setAttribute("cursor", "default");
|
|
42
41
|
} else if (target.name.startsWith("row")) {
|
|
43
|
-
Number(target.name.split("-")[1])
|
|
44
|
-
const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY), XYtoTarget = {
|
|
42
|
+
const rowIndex = Number(target.name.split("-")[1]), canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY), XYtoTarget = {
|
|
45
43
|
x: 0,
|
|
46
44
|
y: 0
|
|
47
45
|
};
|
|
48
|
-
target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget), XYtoTarget.y <= 4 || XYtoTarget.y <= target.getAttributes().height && XYtoTarget.y >= target.getAttributes().height - 4 ? target.setAttribute("cursor", "row-resize") : target.setAttribute("cursor", "default");
|
|
46
|
+
target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget), XYtoTarget.y <= 4 || XYtoTarget.y <= target.getAttributes().height && XYtoTarget.y >= target.getAttributes().height - 4 ? target.setAttribute("cursor", "row-resize") : null != rowIndex && this._tableSeriesNumber.attribute.checkMoveRowOrder(rowIndex) ? target.setAttribute("cursor", "grab") : target.setAttribute("cursor", "default");
|
|
49
47
|
}
|
|
50
48
|
if (this._tableSeriesNumber.interactionState._lastHoverItem) {
|
|
51
49
|
if (this._tableSeriesNumber.interactionState._lastHoverItem.id === target.id) return;
|
|
@@ -72,6 +70,10 @@ class TableSeriesNumberEventManager {
|
|
|
72
70
|
event: e
|
|
73
71
|
});
|
|
74
72
|
}
|
|
73
|
+
if (null != colIndex && this._tableSeriesNumber.attribute.checkMoveColumnOrder(colIndex)) return void this._tableSeriesNumber.dispatchTableSeriesNumberEvent(type_1.SeriesNumberEvent.dragColumnOrderStart, {
|
|
74
|
+
colIndex: colIndex,
|
|
75
|
+
event: e
|
|
76
|
+
});
|
|
75
77
|
} else if (target.name.startsWith("row")) {
|
|
76
78
|
const rowIndex = Number(target.name.split("-")[1]), canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY), XYtoTarget = {
|
|
77
79
|
x: 0,
|
|
@@ -84,6 +86,10 @@ class TableSeriesNumberEventManager {
|
|
|
84
86
|
event: e
|
|
85
87
|
});
|
|
86
88
|
}
|
|
89
|
+
if (null != rowIndex && this._tableSeriesNumber.attribute.checkMoveRowOrder(rowIndex)) return void this._tableSeriesNumber.dispatchTableSeriesNumberEvent(type_1.SeriesNumberEvent.dragRowOrderStart, {
|
|
90
|
+
rowIndex: rowIndex,
|
|
91
|
+
event: e
|
|
92
|
+
});
|
|
87
93
|
}
|
|
88
94
|
if (this.isPointerDownStartSelect = !0, null === (_a = this._tableSeriesNumber.interactionState.selectIndexs) || void 0 === _a ? void 0 : _a.size) if (this._tableSeriesNumber.interactionState.selectIndexs.has(target.name)) if (e.nativeEvent.ctrlKey || e.nativeEvent.metaKey) this._tableSeriesNumber.removeOneGroupSelected(target),
|
|
89
95
|
this._unClickHandler(target.name, e); else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/table-series-number/event-manager.ts"],"names":[],"mappings":"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","file":"event-manager.js","sourcesContent":["import type { TableSeriesNumber } from './table-series-number';\nimport { vglobal, type FederatedPointerEvent, type Group, type IGroup, type IText } from '@visactor/vrender-core';\nimport { SeriesNumberCellStateValue, SeriesNumberEvent } from './type';\n\nexport class TableSeriesNumberEventManager {\n private _tableSeriesNumber: TableSeriesNumber;\n isPointerDownStartSelect: boolean = false;\n constructor(tableSeriesNumber: TableSeriesNumber) {\n this._tableSeriesNumber = tableSeriesNumber;\n }\n\n bindEvents() {\n //ff\n const { hover = true, select = true } = this._tableSeriesNumber.attribute;\n\n if (hover) {\n this._tableSeriesNumber._rowSeriesNumberGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._rowSeriesNumberGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n\n this._tableSeriesNumber._colSeriesNumberGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._colSeriesNumberGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n\n this._tableSeriesNumber._cornerGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._cornerGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n\n this._tableSeriesNumber._frozenTopRowSeriesNumberGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenTopRowSeriesNumberGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n\n this._tableSeriesNumber._frozenLeftColSeriesNumberGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenLeftColSeriesNumberGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n }\n\n if (select) {\n this._tableSeriesNumber._rowSeriesNumberGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._colSeriesNumberGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._cornerGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenTopRowSeriesNumberGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenLeftColSeriesNumberGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n\n vglobal.addEventListener('pointerup', this._onPointerup as EventListenerOrEventListenerObject);\n }\n this._tableSeriesNumber._rowSeriesNumberGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._colSeriesNumberGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._cornerGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenTopRowSeriesNumberGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenLeftColSeriesNumberGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n }\n private _onRightDown = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellRightClick, {\n seriesNumberCell: target,\n event: e\n });\n };\n private _onPointermove = (e: FederatedPointerEvent) => {\n //ff\n const target = e.target as unknown as IGroup;\n if (this.isPointerDownStartSelect) {\n if (!this._tableSeriesNumber.interactionState.selectIndexs.has(target.name)) {\n this._tableSeriesNumber.interactionState.selectIndexs.add(target.name);\n this._tableSeriesNumber.renderSelectedIndexsState();\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellClick, {\n seriesNumberCell: target,\n event: e,\n isDragSelect: true\n });\n } else {\n if (\n this._tableSeriesNumber.interactionState._lastClickItem &&\n this._tableSeriesNumber.interactionState._lastClickItem.id === target.id\n ) {\n return;\n }\n this._tableSeriesNumber.renderSelectedIndexsState();\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellClick, {\n seriesNumberCell: target,\n event: e,\n isDragSelect: true\n });\n }\n this._tableSeriesNumber.interactionState._lastClickItem = target;\n return;\n }\n\n if (target.name.startsWith('col')) {\n //判断鼠标是否位于列间隔线附近,如果是则设置cursor为col-resize\n const colIndex = Number(target.name.split('-')[1]);\n const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY);\n const XYtoTarget = { x: 0, y: 0 };\n\n target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget);\n if (\n XYtoTarget.x <= 4 ||\n (XYtoTarget.x <= target.getAttributes().width && XYtoTarget.x >= target.getAttributes().width - 4)\n ) {\n target.setAttribute('cursor', 'col-resize');\n } else {\n target.setAttribute('cursor', 'default');\n }\n } else if (target.name.startsWith('row')) {\n //判断鼠标是否位于行间隔线附近,如果是则设置cursor为row-resize\n const rowIndex = Number(target.name.split('-')[1]);\n const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY);\n const XYtoTarget = { x: 0, y: 0 };\n\n target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget);\n if (\n XYtoTarget.y <= 4 ||\n (XYtoTarget.y <= target.getAttributes().height && XYtoTarget.y >= target.getAttributes().height - 4)\n ) {\n target.setAttribute('cursor', 'row-resize');\n } else {\n target.setAttribute('cursor', 'default');\n }\n }\n // // 如果上个激活元素存在,则判断当前元素是否和上个激活元素相同,相同则不做处理,不相同则触发 unhover\n if (this._tableSeriesNumber.interactionState._lastHoverItem) {\n if (this._tableSeriesNumber.interactionState._lastHoverItem.id === target.id) {\n return;\n }\n this._unHoverHandler(this._tableSeriesNumber.interactionState._lastHoverItem, e);\n }\n if ((this._tableSeriesNumber.getAttributes() as any).hover) {\n this._hoverHandler(target, e);\n }\n };\n private _onPointerleave = (e: FederatedPointerEvent) => {\n //ff\n if (this._tableSeriesNumber.interactionState._lastHoverItem) {\n this._unHoverHandler(this._tableSeriesNumber.interactionState._lastHoverItem, e);\n this._tableSeriesNumber.interactionState._lastHoverItem = null;\n }\n };\n private _onPointerdown = (e: FederatedPointerEvent) => {\n //验证是否右键点击\n if (e.button === 2) {\n return;\n }\n const target = e.target as unknown as IGroup;\n\n if (target.name.startsWith('col')) {\n //判断鼠标是否位于列间隔线附近,如果是则触发resizeColWidthStart事件\n const colIndex = Number(target.name.split('-')[1]);\n const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY);\n const XYtoTarget = { x: 0, y: 0 };\n\n target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget);\n if (\n XYtoTarget.x <= 4 ||\n (XYtoTarget.x <= target.getAttributes().width && XYtoTarget.x >= target.getAttributes().width - 4)\n ) {\n let resizeTargetColIndex = colIndex;\n if (XYtoTarget.x <= 4) {\n resizeTargetColIndex = colIndex - 1;\n }\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.resizeColWidthStart, {\n colIndex: resizeTargetColIndex,\n event: e\n });\n return;\n }\n } else if (target.name.startsWith('row')) {\n //判断鼠标是否位于行间隔线附近,如果是则触发resizeRowHeightStart事件\n const rowIndex = Number(target.name.split('-')[1]);\n const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY);\n const XYtoTarget = { x: 0, y: 0 };\n\n target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget);\n if (\n XYtoTarget.y <= 4 ||\n (XYtoTarget.y <= target.getAttributes().height && XYtoTarget.y >= target.getAttributes().height - 4)\n ) {\n let resizeTargetRowIndex = rowIndex;\n if (XYtoTarget.y <= 4) {\n resizeTargetRowIndex = rowIndex - 1;\n }\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.resizeRowHeightStart, {\n rowIndex: resizeTargetRowIndex,\n event: e\n });\n return;\n }\n }\n this.isPointerDownStartSelect = true;\n if (this._tableSeriesNumber.interactionState.selectIndexs?.size) {\n if (this._tableSeriesNumber.interactionState.selectIndexs.has(target.name)) {\n if (e.nativeEvent.ctrlKey || e.nativeEvent.metaKey) {\n this._tableSeriesNumber.removeOneGroupSelected(target);\n this._unClickHandler(target.name, e);\n } else {\n this._tableSeriesNumber.removeAllSelectedIndexs();\n for (const name of this._tableSeriesNumber.interactionState.selectIndexs) {\n this._unClickHandler(name, e);\n }\n }\n } else {\n if (e.nativeEvent.ctrlKey || e.nativeEvent.metaKey) {\n // nothing\n } else {\n this._tableSeriesNumber.removeAllSelectedIndexs();\n for (const name of this._tableSeriesNumber.interactionState.selectIndexs) {\n if (\n (target.name.startsWith('row') && name.startsWith('row')) ||\n (target.name.startsWith('col') && name.startsWith('col'))\n ) {\n this._unClickHandler(name, e);\n }\n }\n }\n }\n }\n this._clickHandler(target, e);\n };\n private _onPointerup = (e: FederatedPointerEvent) => {\n //ff\n const target = e.target as unknown as IGroup;\n if (this.isPointerDownStartSelect) {\n this.isPointerDownStartSelect = false;\n this._tableSeriesNumber.interactionState._lastClickItem = null;\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellClickUp, {\n seriesNumberCell: target,\n event: e\n });\n }\n };\n\n private _hoverHandler(seriesNumberCell: IGroup, e: FederatedPointerEvent) {\n this._tableSeriesNumber.interactionState._lastHoverItem = seriesNumberCell;\n //需兼顾select状态\n if (seriesNumberCell.hasState(SeriesNumberCellStateValue.select)) {\n seriesNumberCell.useStates([SeriesNumberCellStateValue.select, SeriesNumberCellStateValue.hover]);\n } else {\n seriesNumberCell.useStates([SeriesNumberCellStateValue.hover]);\n }\n\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellHover, {\n seriesNumberCell,\n event: e\n });\n }\n\n private _unHoverHandler(seriesNumberCell: IGroup, e: FederatedPointerEvent) {\n seriesNumberCell.removeState(SeriesNumberCellStateValue.hover);\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellUnHover, {\n seriesNumberCell,\n event: e\n });\n }\n\n private _clickHandler(seriesNumberCell: IGroup, e: FederatedPointerEvent) {\n // this._tableSeriesNumber.interactionState.selectIndexs.add(seriesNumberCell.name);\n // seriesNumberCell.useStates([SeriesNumberCellStateValue.select]);\n this._tableSeriesNumber.addOneGroupSelected(seriesNumberCell);\n this._tableSeriesNumber.interactionState._lastClickItem = seriesNumberCell;\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellClick, {\n seriesNumberCell,\n event: e\n });\n }\n private _unClickHandler(seriesNumberIndex: string, e: FederatedPointerEvent) {\n const isRow = seriesNumberIndex.startsWith('row');\n // const isCol = seriesNumberIndex.startsWith('col');\n\n // this._tableSeriesNumber.interactionState.selectIndexs.delete(seriesNumberIndex);\n // this._tableSeriesNumber.removeOneGroupSelected(seriesNumberIndex);\n const seriesNumberCell = isRow\n ? this._tableSeriesNumber.getRowSeriesNumberCellGroup(Number(seriesNumberIndex.split('-')[1]))\n : this._tableSeriesNumber.getColSeriesNumberCellGroup(Number(seriesNumberIndex.split('-')[1]));\n seriesNumberCell?.removeState(SeriesNumberCellStateValue.select);\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellCancelClick, {\n index: seriesNumberIndex,\n event: e\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/table-series-number/event-manager.ts"],"names":[],"mappings":"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","file":"event-manager.js","sourcesContent":["import type { TableSeriesNumber } from './table-series-number';\nimport { vglobal, type FederatedPointerEvent, type Group, type IGroup, type IText } from '@visactor/vrender-core';\nimport { SeriesNumberCellStateValue, SeriesNumberEvent } from './type';\n\nexport class TableSeriesNumberEventManager {\n private _tableSeriesNumber: TableSeriesNumber;\n isPointerDownStartSelect: boolean = false;\n constructor(tableSeriesNumber: TableSeriesNumber) {\n this._tableSeriesNumber = tableSeriesNumber;\n }\n\n bindEvents() {\n //ff\n const { hover = true, select = true } = this._tableSeriesNumber.attribute;\n\n if (hover) {\n this._tableSeriesNumber._rowSeriesNumberGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._rowSeriesNumberGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n\n this._tableSeriesNumber._colSeriesNumberGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._colSeriesNumberGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n\n this._tableSeriesNumber._cornerGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._cornerGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n\n this._tableSeriesNumber._frozenTopRowSeriesNumberGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenTopRowSeriesNumberGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n\n this._tableSeriesNumber._frozenLeftColSeriesNumberGroup.addEventListener(\n 'pointermove',\n this._onPointermove as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenLeftColSeriesNumberGroup.addEventListener(\n 'pointerleave',\n this._onPointerleave as EventListenerOrEventListenerObject\n );\n }\n\n if (select) {\n this._tableSeriesNumber._rowSeriesNumberGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._colSeriesNumberGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._cornerGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenTopRowSeriesNumberGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenLeftColSeriesNumberGroup.addEventListener(\n 'pointerdown',\n this._onPointerdown as EventListenerOrEventListenerObject\n );\n\n vglobal.addEventListener('pointerup', this._onPointerup as EventListenerOrEventListenerObject);\n }\n this._tableSeriesNumber._rowSeriesNumberGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._colSeriesNumberGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._cornerGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenTopRowSeriesNumberGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n this._tableSeriesNumber._frozenLeftColSeriesNumberGroup.addEventListener(\n 'rightdown',\n this._onRightDown as EventListenerOrEventListenerObject\n );\n }\n private _onRightDown = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellRightClick, {\n seriesNumberCell: target,\n event: e\n });\n };\n private _onPointermove = (e: FederatedPointerEvent) => {\n //ff\n const target = e.target as unknown as IGroup;\n if (this.isPointerDownStartSelect) {\n if (!this._tableSeriesNumber.interactionState.selectIndexs.has(target.name)) {\n this._tableSeriesNumber.interactionState.selectIndexs.add(target.name);\n this._tableSeriesNumber.renderSelectedIndexsState();\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellClick, {\n seriesNumberCell: target,\n event: e,\n isDragSelect: true\n });\n } else {\n if (\n this._tableSeriesNumber.interactionState._lastClickItem &&\n this._tableSeriesNumber.interactionState._lastClickItem.id === target.id\n ) {\n return;\n }\n this._tableSeriesNumber.renderSelectedIndexsState();\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellClick, {\n seriesNumberCell: target,\n event: e,\n isDragSelect: true\n });\n }\n this._tableSeriesNumber.interactionState._lastClickItem = target;\n return;\n }\n\n if (target.name.startsWith('col')) {\n //判断鼠标是否位于列间隔线附近,如果是则设置cursor为col-resize\n const colIndex = Number(target.name.split('-')[1]);\n const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY);\n const XYtoTarget = { x: 0, y: 0 };\n\n target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget);\n //假如校验后,是整列被选中状态。鼠标样式变为抓手样式\n if (\n XYtoTarget.x <= 4 ||\n (XYtoTarget.x <= target.getAttributes().width && XYtoTarget.x >= target.getAttributes().width - 4)\n ) {\n target.setAttribute('cursor', 'col-resize');\n } else if (\n colIndex !== undefined &&\n colIndex !== null &&\n this._tableSeriesNumber.attribute.checkMoveColumnOrder(colIndex)\n ) {\n target.setAttribute('cursor', 'grab');\n } else {\n target.setAttribute('cursor', 'default');\n }\n } else if (target.name.startsWith('row')) {\n //判断鼠标是否位于行间隔线附近,如果是则设置cursor为row-resize\n const rowIndex = Number(target.name.split('-')[1]);\n const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY);\n const XYtoTarget = { x: 0, y: 0 };\n\n target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget);\n if (\n XYtoTarget.y <= 4 ||\n (XYtoTarget.y <= target.getAttributes().height && XYtoTarget.y >= target.getAttributes().height - 4)\n ) {\n target.setAttribute('cursor', 'row-resize');\n } else if (\n rowIndex !== undefined &&\n rowIndex !== null &&\n this._tableSeriesNumber.attribute.checkMoveRowOrder(rowIndex)\n ) {\n target.setAttribute('cursor', 'grab');\n } else {\n target.setAttribute('cursor', 'default');\n }\n }\n // // 如果上个激活元素存在,则判断当前元素是否和上个激活元素相同,相同则不做处理,不相同则触发 unhover\n if (this._tableSeriesNumber.interactionState._lastHoverItem) {\n if (this._tableSeriesNumber.interactionState._lastHoverItem.id === target.id) {\n return;\n }\n this._unHoverHandler(this._tableSeriesNumber.interactionState._lastHoverItem, e);\n }\n if ((this._tableSeriesNumber.getAttributes() as any).hover) {\n this._hoverHandler(target, e);\n }\n };\n private _onPointerleave = (e: FederatedPointerEvent) => {\n //ff\n if (this._tableSeriesNumber.interactionState._lastHoverItem) {\n this._unHoverHandler(this._tableSeriesNumber.interactionState._lastHoverItem, e);\n this._tableSeriesNumber.interactionState._lastHoverItem = null;\n }\n };\n private _onPointerdown = (e: FederatedPointerEvent) => {\n //验证是否右键点击\n if (e.button === 2) {\n return;\n }\n const target = e.target as unknown as IGroup;\n\n if (target.name.startsWith('col')) {\n //判断鼠标是否位于列间隔线附近,如果是则触发resizeColWidthStart事件\n const colIndex = Number(target.name.split('-')[1]);\n const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY);\n const XYtoTarget = { x: 0, y: 0 };\n\n target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget);\n if (\n XYtoTarget.x <= 4 ||\n (XYtoTarget.x <= target.getAttributes().width && XYtoTarget.x >= target.getAttributes().width - 4)\n ) {\n let resizeTargetColIndex = colIndex;\n if (XYtoTarget.x <= 4) {\n resizeTargetColIndex = colIndex - 1;\n }\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.resizeColWidthStart, {\n colIndex: resizeTargetColIndex,\n event: e\n });\n return;\n } else if (\n colIndex !== undefined &&\n colIndex !== null &&\n this._tableSeriesNumber.attribute.checkMoveColumnOrder(colIndex)\n ) {\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.dragColumnOrderStart, {\n colIndex: colIndex,\n event: e\n });\n return;\n }\n } else if (target.name.startsWith('row')) {\n //判断鼠标是否位于行间隔线附近,如果是则触发resizeRowHeightStart事件\n const rowIndex = Number(target.name.split('-')[1]);\n const canvasPointXY = target.stage.window.pointTransform(e.canvasX, e.canvasY);\n const XYtoTarget = { x: 0, y: 0 };\n\n target.globalTransMatrix.transformPoint(canvasPointXY, XYtoTarget);\n if (\n XYtoTarget.y <= 4 ||\n (XYtoTarget.y <= target.getAttributes().height && XYtoTarget.y >= target.getAttributes().height - 4)\n ) {\n let resizeTargetRowIndex = rowIndex;\n if (XYtoTarget.y <= 4) {\n resizeTargetRowIndex = rowIndex - 1;\n }\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.resizeRowHeightStart, {\n rowIndex: resizeTargetRowIndex,\n event: e\n });\n return;\n } else if (\n rowIndex !== undefined &&\n rowIndex !== null &&\n this._tableSeriesNumber.attribute.checkMoveRowOrder(rowIndex)\n ) {\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.dragRowOrderStart, {\n rowIndex: rowIndex,\n event: e\n });\n return;\n }\n }\n this.isPointerDownStartSelect = true;\n if (this._tableSeriesNumber.interactionState.selectIndexs?.size) {\n if (this._tableSeriesNumber.interactionState.selectIndexs.has(target.name)) {\n if (e.nativeEvent.ctrlKey || e.nativeEvent.metaKey) {\n this._tableSeriesNumber.removeOneGroupSelected(target);\n this._unClickHandler(target.name, e);\n } else {\n this._tableSeriesNumber.removeAllSelectedIndexs();\n for (const name of this._tableSeriesNumber.interactionState.selectIndexs) {\n this._unClickHandler(name, e);\n }\n }\n } else {\n if (e.nativeEvent.ctrlKey || e.nativeEvent.metaKey) {\n // nothing\n } else {\n this._tableSeriesNumber.removeAllSelectedIndexs();\n for (const name of this._tableSeriesNumber.interactionState.selectIndexs) {\n if (\n (target.name.startsWith('row') && name.startsWith('row')) ||\n (target.name.startsWith('col') && name.startsWith('col'))\n ) {\n this._unClickHandler(name, e);\n }\n }\n }\n }\n }\n this._clickHandler(target, e);\n };\n private _onPointerup = (e: FederatedPointerEvent) => {\n //ff\n const target = e.target as unknown as IGroup;\n if (this.isPointerDownStartSelect) {\n this.isPointerDownStartSelect = false;\n this._tableSeriesNumber.interactionState._lastClickItem = null;\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellClickUp, {\n seriesNumberCell: target,\n event: e\n });\n }\n };\n\n private _hoverHandler(seriesNumberCell: IGroup, e: FederatedPointerEvent) {\n this._tableSeriesNumber.interactionState._lastHoverItem = seriesNumberCell;\n //需兼顾select状态\n if (seriesNumberCell.hasState(SeriesNumberCellStateValue.select)) {\n seriesNumberCell.useStates([SeriesNumberCellStateValue.select, SeriesNumberCellStateValue.hover]);\n } else {\n seriesNumberCell.useStates([SeriesNumberCellStateValue.hover]);\n }\n\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellHover, {\n seriesNumberCell,\n event: e\n });\n }\n\n private _unHoverHandler(seriesNumberCell: IGroup, e: FederatedPointerEvent) {\n seriesNumberCell.removeState(SeriesNumberCellStateValue.hover);\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellUnHover, {\n seriesNumberCell,\n event: e\n });\n }\n\n private _clickHandler(seriesNumberCell: IGroup, e: FederatedPointerEvent) {\n // this._tableSeriesNumber.interactionState.selectIndexs.add(seriesNumberCell.name);\n // seriesNumberCell.useStates([SeriesNumberCellStateValue.select]);\n this._tableSeriesNumber.addOneGroupSelected(seriesNumberCell);\n this._tableSeriesNumber.interactionState._lastClickItem = seriesNumberCell;\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellClick, {\n seriesNumberCell,\n event: e\n });\n }\n private _unClickHandler(seriesNumberIndex: string, e: FederatedPointerEvent) {\n const isRow = seriesNumberIndex.startsWith('row');\n // const isCol = seriesNumberIndex.startsWith('col');\n\n // this._tableSeriesNumber.interactionState.selectIndexs.delete(seriesNumberIndex);\n // this._tableSeriesNumber.removeOneGroupSelected(seriesNumberIndex);\n const seriesNumberCell = isRow\n ? this._tableSeriesNumber.getRowSeriesNumberCellGroup(Number(seriesNumberIndex.split('-')[1]))\n : this._tableSeriesNumber.getColSeriesNumberCellGroup(Number(seriesNumberIndex.split('-')[1]));\n seriesNumberCell?.removeState(SeriesNumberCellStateValue.select);\n this._tableSeriesNumber.dispatchTableSeriesNumberEvent(SeriesNumberEvent.seriesNumberCellCancelClick, {\n index: seriesNumberIndex,\n event: e\n });\n }\n}\n"]}
|
|
@@ -12,7 +12,9 @@ export declare enum SeriesNumberEvent {
|
|
|
12
12
|
rowSeriesNumberWidthChange = "rowSeriesNumberWidthChange",
|
|
13
13
|
resizeRowHeightStart = "resizeRowHeightStart",
|
|
14
14
|
resizeColWidthStart = "resizeColWidthStart",
|
|
15
|
-
seriesNumberCellRightClick = "seriesNumberCellRightClick"
|
|
15
|
+
seriesNumberCellRightClick = "seriesNumberCellRightClick",
|
|
16
|
+
dragColumnOrderStart = "dragColumnOrderStart",
|
|
17
|
+
dragRowOrderStart = "dragRowOrderStart"
|
|
16
18
|
}
|
|
17
19
|
export type TableSeriesNumberAttributes = IGroupGraphicAttribute & {
|
|
18
20
|
frozenRowCount?: number;
|
|
@@ -77,4 +79,6 @@ export type TableSeriesNumberAttributes = IGroupGraphicAttribute & {
|
|
|
77
79
|
};
|
|
78
80
|
select?: boolean;
|
|
79
81
|
hover?: boolean;
|
|
82
|
+
checkMoveColumnOrder?: (colIndex: number) => boolean;
|
|
83
|
+
checkMoveRowOrder?: (rowIndex: number) => boolean;
|
|
80
84
|
};
|
|
@@ -12,6 +12,7 @@ function(SeriesNumberEvent) {
|
|
|
12
12
|
SeriesNumberEvent.seriesNumberCellClick = "seriesNumberCellClick", SeriesNumberEvent.seriesNumberCellClickUp = "seriesNumberCellClickUp",
|
|
13
13
|
SeriesNumberEvent.seriesNumberCellCancelClick = "seriesNumberCellCancelClick", SeriesNumberEvent.rowSeriesNumberWidthChange = "rowSeriesNumberWidthChange",
|
|
14
14
|
SeriesNumberEvent.resizeRowHeightStart = "resizeRowHeightStart", SeriesNumberEvent.resizeColWidthStart = "resizeColWidthStart",
|
|
15
|
-
SeriesNumberEvent.seriesNumberCellRightClick = "seriesNumberCellRightClick"
|
|
15
|
+
SeriesNumberEvent.seriesNumberCellRightClick = "seriesNumberCellRightClick", SeriesNumberEvent.dragColumnOrderStart = "dragColumnOrderStart",
|
|
16
|
+
SeriesNumberEvent.dragRowOrderStart = "dragRowOrderStart";
|
|
16
17
|
}(SeriesNumberEvent = exports.SeriesNumberEvent || (exports.SeriesNumberEvent = {}));
|
|
17
18
|
//# sourceMappingURL=type.js.map
|