@visactor/vrender-components 0.17.0 → 0.17.1-alpha.2
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/axis/base.js +12 -14
- package/cjs/axis/base.js.map +1 -1
- package/cjs/axis/circle.js +1 -1
- package/cjs/axis/circle.js.map +1 -1
- package/cjs/axis/grid/base.js +4 -6
- package/cjs/axis/grid/base.js.map +1 -1
- package/cjs/axis/line.d.ts +1 -2
- package/cjs/axis/line.js +2 -3
- package/cjs/axis/line.js.map +1 -1
- package/cjs/brush/brush.js +1 -2
- package/cjs/brush/brush.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/label/arc.d.ts +1 -2
- package/cjs/label/arc.js +1 -2
- package/cjs/label/arc.js.map +1 -1
- package/cjs/label/base.js +3 -3
- package/cjs/label/base.js.map +1 -1
- package/cjs/legend/base.js +1 -1
- package/cjs/legend/base.js.map +1 -1
- package/cjs/legend/discrete/discrete.js +9 -11
- package/cjs/legend/discrete/discrete.js.map +1 -1
- package/cjs/legend/size/size.js +2 -3
- package/cjs/legend/size/size.js.map +1 -1
- package/cjs/marker/area.js +1 -2
- package/cjs/marker/area.js.map +1 -1
- package/cjs/marker/base.js +3 -3
- package/cjs/marker/base.js.map +1 -1
- package/cjs/marker/point.js +2 -4
- package/cjs/marker/point.js.map +1 -1
- package/cjs/pager/pager.js +4 -5
- package/cjs/pager/pager.js.map +1 -1
- package/cjs/segment/segment.js +3 -3
- package/cjs/segment/segment.js.map +1 -1
- package/cjs/slider/slider.js +10 -11
- package/cjs/slider/slider.js.map +1 -1
- package/cjs/util/text.d.ts +2 -2
- package/dist/index.js +3681 -9155
- package/dist/index.min.js +1 -1
- package/es/axis/base.js +11 -11
- package/es/axis/base.js.map +1 -1
- package/es/axis/circle.js +2 -2
- package/es/axis/circle.js.map +1 -1
- package/es/axis/grid/base.js +5 -5
- package/es/axis/grid/base.js.map +1 -1
- package/es/axis/line.d.ts +1 -2
- package/es/axis/line.js +3 -3
- package/es/axis/line.js.map +1 -1
- package/es/brush/brush.js +2 -2
- package/es/brush/brush.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/label/arc.d.ts +1 -2
- package/es/label/arc.js +2 -2
- package/es/label/arc.js.map +1 -1
- package/es/label/base.js +4 -4
- package/es/label/base.js.map +1 -1
- package/es/legend/base.js +2 -2
- package/es/legend/base.js.map +1 -1
- package/es/legend/discrete/discrete.js +10 -10
- package/es/legend/discrete/discrete.js.map +1 -1
- package/es/legend/size/size.js +3 -3
- package/es/legend/size/size.js.map +1 -1
- package/es/marker/area.js +2 -2
- package/es/marker/area.js.map +1 -1
- package/es/marker/base.js +4 -4
- package/es/marker/base.js.map +1 -1
- package/es/marker/point.js +3 -3
- package/es/marker/point.js.map +1 -1
- package/es/pager/pager.js +5 -5
- package/es/pager/pager.js.map +1 -1
- package/es/segment/segment.js +4 -4
- package/es/segment/segment.js.map +1 -1
- package/es/slider/slider.js +11 -11
- package/es/slider/slider.js.map +1 -1
- package/es/util/text.d.ts +2 -2
- package/package.json +5 -5
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 IRichTextGraphicAttribute,\n IRichText,\n IRichTextCharacter,\n ITextAttribute\n} from '@visactor/vrender-core';\nimport { createText, AttributeUpdateType, IContainPointMode, createRichText } from '@visactor/vrender-core';\nimport type { IAABBBounds, IBoundsLike, IPointLike } from '@visactor/vutils';\nimport { isFunction, isEmpty, isValid, isString, merge, isRectIntersect, isNil, isArray } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { PointLocationCfg } from '../core/type';\nimport { labelSmartInvert, contrastAccessibilityChecker, smartInvertStrategy } from '../util/label-smartInvert';\nimport { getMarksByName, getNoneGroupMarksByName, traverseGroup } from '../util';\nimport { StateValue } from '../constant';\nimport type { Bitmap } from './overlap';\nimport { bitmapTool, boundToRange, canPlace, clampText, place } from './overlap';\nimport type {\n BaseLabelAttrs,\n OverlapAttrs,\n ILabelAnimation,\n ArcLabelAttrs,\n LabelItem,\n SmartInvertAttrs,\n ILabelEnterAnimation,\n ILabelExitAnimation,\n ILabelUpdateAnimation\n} from './type';\nimport { DefaultLabelAnimation, getAnimationAttributes, updateAnimation } from './animate/animate';\nimport { getPointsOfLineArea } from './util';\nimport type { ComponentOptions } from '../interface';\nimport { DEFAULT_HTML_TEXT_SPEC } from '../constant';\n\nexport class LabelBase<T extends BaseLabelAttrs> extends AbstractComponent<T> {\n name = 'label';\n\n protected _baseMarks?: IGraphic[];\n\n protected _isCollectionBase: boolean;\n\n protected _bitmap?: Bitmap;\n\n protected _animationConfig?: {\n enter: ILabelEnterAnimation;\n exit: ILabelExitAnimation;\n update: ILabelUpdateAnimation;\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: [-1, 0, -1, 0] // 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, { text: IText | IRichText; labelLine?: ILine }>;\n\n protected _idToGraphic: Map<string, IGraphic>;\n\n protected _idToPoint: Map<string, IPointLike>;\n\n onAfterLabelOverlap?: (bitmap: Bitmap) => void;\n\n private _lastHover: IGraphic;\n private _lastSelect: IGraphic;\n\n private _enableAnimation: boolean;\n\n constructor(attributes: BaseLabelAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, LabelBase.defaultAttributes, attributes));\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 _labelLine(text: LabelItem): ILine | undefined {\n // 基类没有指定的图元类型,需要在 data 中指定位置,故无需进行 labeling\n return;\n }\n\n protected render() {\n this._prepare();\n\n if (isNil(this._idToGraphic) || (this._isCollectionBase && isNil(this._idToPoint))) {\n return;\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 let labels: (IText | IRichText)[];\n\n if (isFunction(customLayoutFunc)) {\n labels = customLayoutFunc(\n data,\n this.getRelatedGrphic,\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null\n );\n } else {\n // 根据关联图元和配置的position计算标签坐标\n labels = this._layout(data);\n }\n\n if (isFunction(customOverlapFunc)) {\n labels = customOverlapFunc(\n labels as Text[],\n this.getRelatedGrphic,\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null\n );\n } else {\n // 防重叠逻辑\n if (overlap !== false) {\n labels = this._overlapping(labels);\n }\n }\n\n if (smartInvert !== false) {\n this._smartInvert(labels);\n }\n\n this._renderLabels(labels);\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 private _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 if (attributes.textType === 'rich') {\n attributes.textConfig = attributes.text as IRichTextCharacter[];\n attributes.width = attributes.width ?? 0;\n attributes.height = attributes.height ?? 0;\n const text = createRichText(attributes as any);\n this._bindEvent(text);\n this._setStatesOfText(text);\n return text;\n } else if (attributes.textType === 'html') {\n attributes.textConfig = [] as IRichTextCharacter[];\n attributes.html = {\n dom: attributes.text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...attributes\n };\n const text = createRichText(attributes as IRichTextGraphicAttribute);\n this._bindEvent(text);\n this._setStatesOfText(text);\n return text;\n }\n const text = createText(attributes);\n this._bindEvent(text);\n this._setStatesOfText(text);\n return text;\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?.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 if (this.attribute.animation !== false) {\n this._animationConfig = {\n enter: merge({}, DefaultLabelAnimation, this.attribute.animation, this.attribute.animationEnter ?? {}),\n exit: merge({}, DefaultLabelAnimation, this.attribute.animation, this.attribute.animationExit ?? {}),\n update: isArray(this.attribute.animationUpdate)\n ? this.attribute.animationUpdate\n : merge({}, DefaultLabelAnimation, this.attribute.animation, this.attribute.animationUpdate ?? {})\n };\n }\n }\n\n protected getRelatedGrphic(item: LabelItem) {\n return this._idToGraphic.get(item.id);\n }\n\n protected _layout(data: LabelItem[] = []): (IText | IRichText)[] {\n const { textStyle = {}, position, offset } = this.attribute;\n const labels = [];\n\n for (let i = 0; i < data.length; i++) {\n const textData = data[i];\n const baseMark = this.getRelatedGrphic(textData);\n\n const labelAttribute = {\n fill: this._isCollectionBase\n ? isArray(baseMark.attribute.stroke)\n ? baseMark.attribute.stroke.find(entry => !!entry && entry !== true)\n : baseMark.attribute.stroke\n : baseMark.attribute.fill,\n ...textStyle,\n ...textData\n };\n const text = this._createLabelText(labelAttribute);\n const textBounds = this.getGraphicBounds(text);\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 labelAttribute.x = textLocation.x;\n labelAttribute.y = textLocation.y;\n text.setAttributes(textLocation);\n }\n\n labels.push(text);\n }\n\n return labels;\n }\n\n protected _overlapping(labels: (IText | IRichText)[]) {\n if (labels.length === 0) {\n return [];\n }\n const option = this.attribute.overlap as OverlapAttrs;\n\n const result: (IText | IRichText)[] = [];\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 {\n avoidBaseMark,\n strategy = [],\n hideOnHit = true,\n clampForce = true,\n avoidMarks = [],\n overlapPadding\n } = option;\n const bmpTool = this._bmpTool || bitmapTool(size.width, size.height);\n const bitmap = this._bitmap || bmpTool.bitmap();\n const checkBounds = strategy.some(s => s.type === 'bound');\n\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].visible === false) {\n continue;\n }\n\n const text = labels[i] as IText | IRichText;\n const baseMark = this.getRelatedGrphic(text.attribute);\n text.update();\n if (!isRectIntersect(baseMark.AABBBounds, { x1: 0, x2: bmpTool.width, y1: 0, y2: bmpTool.height }, true)) {\n continue;\n }\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 (checkBounds && baseMark?.AABBBounds && this._canPlaceInside(text.AABBBounds, baseMark?.AABBBounds)) {\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.length; j++) {\n hasPlace = place(\n bmpTool,\n bitmap,\n strategy[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 result.push(text);\n break;\n }\n }\n\n // 尝试向内挤压\n if (!hasPlace && clampForce) {\n // 向内挤压不考虑 overlapPadding\n const { dx = 0, dy = 0 } = clampText(text as IText, bmpTool.width, bmpTool.height);\n if (dx === 0 && dy === 0) {\n if (canPlace(bmpTool, bitmap, text.AABBBounds)) {\n // xy方向偏移都为0,意味着不考虑 overlapPadding 时,实际上可以放得下\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n result.push(text);\n continue;\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 result.push(text);\n continue;\n }\n }\n\n !hasPlace && !hideOnHit && result.push(text);\n }\n\n if (isFunction(this.onAfterLabelOverlap)) {\n this.onAfterLabelOverlap(bitmap);\n }\n\n return result;\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(graphic?: IGraphic, point?: Partial<PointLocationCfg>, position?: string): IBoundsLike;\n protected getGraphicBounds(graphic?: IGraphic, point: Partial<PointLocationCfg> = {}): IBoundsLike {\n return (\n graphic?.AABBBounds ||\n ({\n x1: point.x,\n x2: point.x,\n y1: point.y,\n y2: point.y\n } as IBoundsLike)\n );\n }\n\n protected _renderLabels(labels: (IText | IRichText)[]) {\n const disableAnimation = this._enableAnimation === false || this.attribute.animation === false;\n\n if (disableAnimation) {\n this._renderWithOutAnimation(labels);\n } else {\n this._renderWithAnimation(labels);\n }\n }\n\n protected _renderWithAnimation(labels: (IText | IRichText)[]) {\n const currentTextMap: Map<any, { text: IText | IRichText; labelLine?: ILine }> = new Map();\n const prevTextMap: Map<any, { text: IText | IRichText; labelLine?: ILine }> = this._graphicToText || new Map();\n const texts = [] as (IText | IRichText)[];\n\n labels.forEach((text, index) => {\n const labelLine: ILine = this._labelLine(text as any);\n const relatedGraphic = this.getRelatedGrphic(text.attribute);\n const textId = (text.attribute as LabelItem).id;\n const textKey = this._isCollectionBase ? textId : relatedGraphic;\n const state = prevTextMap?.get(textKey) ? 'update' : 'enter';\n\n if (state === 'enter') {\n texts.push(text);\n currentTextMap.set(textKey, labelLine ? { text, labelLine } : { text });\n if (relatedGraphic) {\n const { from, to } = getAnimationAttributes(text.attribute, 'fadeIn');\n this.add(text);\n\n if (labelLine) {\n this._setStatesOfLabelLine(labelLine);\n this.add(labelLine);\n }\n\n this._syncStateWithRelatedGraphic(relatedGraphic);\n relatedGraphic.once('animate-bind', a => {\n text.setAttributes(from);\n const listener = this._afterRelatedGraphicAttributeUpdate(\n text,\n texts,\n index,\n relatedGraphic,\n to,\n this._animationConfig.enter\n );\n relatedGraphic.on('afterAttributeUpdate', listener);\n });\n }\n } else if (state === 'update') {\n const prevLabel = prevTextMap.get(textKey);\n prevTextMap.delete(textKey);\n currentTextMap.set(textKey, prevLabel);\n const prevText = prevLabel.text;\n const { duration, easing } = this._animationConfig.update;\n updateAnimation(prevText as Text, text as Text, this._animationConfig.update);\n if (prevLabel.labelLine) {\n prevLabel.labelLine.animate().to(\n merge({}, prevLabel.labelLine.attribute, {\n visible:\n ((text.attribute as ArcLabelAttrs)?.line?.visible && text.attribute?.visible) ??\n text.attribute?.visible ??\n true,\n points: (text.attribute as ArcLabelAttrs)?.points\n }),\n duration,\n easing\n );\n }\n }\n });\n prevTextMap.forEach(label => {\n label.text\n ?.animate()\n .to(\n getAnimationAttributes(label.text.attribute, 'fadeOut').to,\n this._animationConfig.exit.duration,\n this._animationConfig.exit.easing\n )\n .onEnd(() => {\n this.removeChild(label.text);\n if (label?.labelLine) {\n this.removeChild(label.labelLine);\n }\n });\n });\n\n this._graphicToText = currentTextMap;\n }\n\n protected _renderWithOutAnimation(labels: (IText | IRichText)[]) {\n const currentTextMap: Map<any, { text: IText | IRichText; labelLine?: ILine }> = new Map();\n const prevTextMap: Map<any, { text: IText | IRichText; labelLine?: ILine }> = this._graphicToText || new Map();\n const texts = [] as (IText | IRichText)[];\n\n labels.forEach(text => {\n const labelLine = this._labelLine(text as any);\n const relatedGraphic = this.getRelatedGrphic(text.attribute);\n const state = prevTextMap?.get(relatedGraphic) ? 'update' : 'enter';\n const textKey = this._isCollectionBase ? (text.attribute as LabelItem).id : relatedGraphic;\n\n if (state === 'enter') {\n texts.push(text);\n currentTextMap.set(textKey, labelLine ? { text, labelLine } : { text });\n this.add(text);\n if (labelLine) {\n this.add(labelLine);\n }\n\n this._syncStateWithRelatedGraphic(relatedGraphic);\n } else if (state === 'update') {\n const prevLabel = prevTextMap.get(textKey);\n prevTextMap.delete(textKey);\n currentTextMap.set(textKey, prevLabel);\n prevLabel.text.setAttributes(text.attribute as any);\n if (prevLabel?.labelLine) {\n prevLabel.labelLine.setAttributes({ points: (text.attribute as ArcLabelAttrs)?.points });\n }\n }\n });\n\n prevTextMap.forEach(label => {\n this.removeChild(label.text);\n if (label?.labelLine) {\n this.removeChild(label.labelLine);\n }\n });\n\n this._graphicToText = currentTextMap;\n }\n\n protected _handleRelatedGraphicSetState = (e: any) => {\n if (e.detail?.type === AttributeUpdateType.STATE) {\n const currentStates = e.target?.currentStates ?? [];\n const labels = this._isCollectionBase ? [...this._graphicToText.values()] : [this._graphicToText.get(e.target)];\n\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\n protected _syncStateWithRelatedGraphic(relatedGraphic: IGraphic) {\n if (this.attribute.syncState) {\n relatedGraphic.on('afterAttributeUpdate', this._handleRelatedGraphicSetState);\n }\n }\n\n protected _afterRelatedGraphicAttributeUpdate(\n text: IText | IRichText,\n texts: (IText | IRichText)[],\n index: number,\n relatedGraphic: IGraphic,\n to: any,\n { mode, duration, easing, delay }: ILabelAnimation\n ) {\n const listener = (event: any) => {\n const { detail } = event;\n if (!detail) {\n return {};\n }\n const isValidAnimateState =\n detail &&\n detail.type === AttributeUpdateType.ANIMATE_UPDATE &&\n detail.animationState &&\n detail.animationState.step?.type !== 'wait';\n\n if (!isValidAnimateState) {\n return {};\n }\n\n if (detail.type === AttributeUpdateType.ANIMATE_END) {\n text.setAttributes(to);\n return;\n }\n\n const onStart = () => {\n if (relatedGraphic) {\n relatedGraphic.onAnimateBind = undefined;\n relatedGraphic.removeEventListener('afterAttributeUpdate', listener);\n }\n };\n\n switch (mode) {\n case 'after':\n // 3. 当前关联图元的动画播放结束后\n if (detail.animationState.end) {\n text.animate({ onStart }).wait(delay).to(to, duration, easing);\n }\n break;\n case 'after-all':\n // 2. 所有完成后才开始;\n if (index === texts.length - 1) {\n if (detail.animationState.end) {\n texts.forEach(t => {\n t.animate({ onStart }).wait(delay).to(to, duration, easing);\n });\n }\n }\n break;\n case 'same-time':\n default:\n if (this._isCollectionBase) {\n const point = this._idToPoint.get((text.attribute as LabelItem).id);\n if (\n point &&\n (!text.animates || !text.animates.has('label-animate')) &&\n relatedGraphic.containsPoint(point.x, point.y, IContainPointMode.LOCAL, this.stage?.pickerService)\n ) {\n text.animate({ onStart }).wait(delay).to(to, duration, easing);\n }\n } else if (detail.animationState.isFirstFrameOfStep) {\n text.animate({ onStart }).wait(delay).to(to, duration, easing);\n }\n\n break;\n }\n };\n return listener;\n }\n\n protected _smartInvert(labels: (IText | IRichText)[]) {\n const option = (this.attribute.smartInvert || {}) as SmartInvertAttrs;\n const { textType, contrastRatiosThreshold, alternativeColors, mode } = 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.getRelatedGrphic(label.attribute as LabelItem);\n\n /**\n * 增加smartInvert时fillStrategy和 strokeStrategy的四种策略:\n * base(baseMark色),\n * inverBase(执行智能反色),\n * similarBase(智能反色的补色),\n * null(不执行智能反色,保持fill设置的颜色)\n * */\n const backgroundColor = baseMark.attribute.fill as IColor;\n const foregroundColor = label.attribute.fill as IColor;\n const baseColor = backgroundColor;\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\n if (outsideEnable) {\n const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n if (label.attribute.lineWidth === 0) {\n continue;\n }\n\n const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n } else {\n const isInside = this._canPlaceInside(label.AABBBounds, baseMark?.AABBBounds);\n if (isInside) {\n const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n if (label.attribute.lineWidth === 0) {\n continue;\n }\n\n const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n } else {\n /** 当label无法设置stroke时,不进行反色计算(容易反色为白色与白色背景混合不可见) */\n if (label.attribute.lineWidth === 0) {\n continue;\n }\n\n /** 当label设置stroke时,保留stroke设置的颜色,根据stroke对fill做反色 */\n if (label.attribute.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\n /** 当label未设置stroke,且可设置stroke时,正常计算 */\n const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n }\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 IRichTextGraphicAttribute,\n IRichText,\n IRichTextCharacter,\n ITextAttribute\n} from '@visactor/vrender-core';\nimport { graphicCreator, AttributeUpdateType, IContainPointMode } from '@visactor/vrender-core';\nimport type { IAABBBounds, IBoundsLike, IPointLike } from '@visactor/vutils';\nimport { isFunction, isEmpty, isValid, isString, merge, isRectIntersect, isNil, isArray } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { PointLocationCfg } from '../core/type';\nimport { labelSmartInvert, contrastAccessibilityChecker, smartInvertStrategy } from '../util/label-smartInvert';\nimport { getMarksByName, getNoneGroupMarksByName, traverseGroup } from '../util';\nimport { StateValue } from '../constant';\nimport type { Bitmap } from './overlap';\nimport { bitmapTool, boundToRange, canPlace, clampText, place } from './overlap';\nimport type {\n BaseLabelAttrs,\n OverlapAttrs,\n ILabelAnimation,\n ArcLabelAttrs,\n LabelItem,\n SmartInvertAttrs,\n ILabelEnterAnimation,\n ILabelExitAnimation,\n ILabelUpdateAnimation\n} from './type';\nimport { DefaultLabelAnimation, getAnimationAttributes, updateAnimation } from './animate/animate';\nimport { getPointsOfLineArea } from './util';\nimport type { ComponentOptions } from '../interface';\nimport { DEFAULT_HTML_TEXT_SPEC } from '../constant';\n\nexport class LabelBase<T extends BaseLabelAttrs> extends AbstractComponent<T> {\n name = 'label';\n\n protected _baseMarks?: IGraphic[];\n\n protected _isCollectionBase: boolean;\n\n protected _bitmap?: Bitmap;\n\n protected _animationConfig?: {\n enter: ILabelEnterAnimation;\n exit: ILabelExitAnimation;\n update: ILabelUpdateAnimation;\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: [-1, 0, -1, 0] // 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, { text: IText | IRichText; labelLine?: ILine }>;\n\n protected _idToGraphic: Map<string, IGraphic>;\n\n protected _idToPoint: Map<string, IPointLike>;\n\n onAfterLabelOverlap?: (bitmap: Bitmap) => void;\n\n private _lastHover: IGraphic;\n private _lastSelect: IGraphic;\n\n private _enableAnimation: boolean;\n\n constructor(attributes: BaseLabelAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, LabelBase.defaultAttributes, attributes));\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 _labelLine(text: LabelItem): ILine | undefined {\n // 基类没有指定的图元类型,需要在 data 中指定位置,故无需进行 labeling\n return;\n }\n\n protected render() {\n this._prepare();\n\n if (isNil(this._idToGraphic) || (this._isCollectionBase && isNil(this._idToPoint))) {\n return;\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 let labels: (IText | IRichText)[];\n\n if (isFunction(customLayoutFunc)) {\n labels = customLayoutFunc(\n data,\n this.getRelatedGrphic,\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null\n );\n } else {\n // 根据关联图元和配置的position计算标签坐标\n labels = this._layout(data);\n }\n\n if (isFunction(customOverlapFunc)) {\n labels = customOverlapFunc(\n labels as Text[],\n this.getRelatedGrphic,\n this._isCollectionBase ? (d: LabelItem) => this._idToPoint.get(d.id) : null\n );\n } else {\n // 防重叠逻辑\n if (overlap !== false) {\n labels = this._overlapping(labels);\n }\n }\n\n if (smartInvert !== false) {\n this._smartInvert(labels);\n }\n\n this._renderLabels(labels);\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 private _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 if (attributes.textType === 'rich') {\n attributes.textConfig = attributes.text as IRichTextCharacter[];\n attributes.width = attributes.width ?? 0;\n attributes.height = attributes.height ?? 0;\n const text = graphicCreator.richtext(attributes as any);\n this._bindEvent(text);\n this._setStatesOfText(text);\n return text;\n } else if (attributes.textType === 'html') {\n attributes.textConfig = [] as IRichTextCharacter[];\n attributes.html = {\n dom: attributes.text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...attributes\n };\n const text = graphicCreator.richtext(attributes as IRichTextGraphicAttribute);\n this._bindEvent(text);\n this._setStatesOfText(text);\n return text;\n }\n const text = graphicCreator.text(attributes);\n this._bindEvent(text);\n this._setStatesOfText(text);\n return text;\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?.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 if (this.attribute.animation !== false) {\n this._animationConfig = {\n enter: merge({}, DefaultLabelAnimation, this.attribute.animation, this.attribute.animationEnter ?? {}),\n exit: merge({}, DefaultLabelAnimation, this.attribute.animation, this.attribute.animationExit ?? {}),\n update: isArray(this.attribute.animationUpdate)\n ? this.attribute.animationUpdate\n : merge({}, DefaultLabelAnimation, this.attribute.animation, this.attribute.animationUpdate ?? {})\n };\n }\n }\n\n protected getRelatedGrphic(item: LabelItem) {\n return this._idToGraphic.get(item.id);\n }\n\n protected _layout(data: LabelItem[] = []): (IText | IRichText)[] {\n const { textStyle = {}, position, offset } = this.attribute;\n const labels = [];\n\n for (let i = 0; i < data.length; i++) {\n const textData = data[i];\n const baseMark = this.getRelatedGrphic(textData);\n\n const labelAttribute = {\n fill: this._isCollectionBase\n ? isArray(baseMark.attribute.stroke)\n ? baseMark.attribute.stroke.find(entry => !!entry && entry !== true)\n : baseMark.attribute.stroke\n : baseMark.attribute.fill,\n ...textStyle,\n ...textData\n };\n const text = this._createLabelText(labelAttribute);\n const textBounds = this.getGraphicBounds(text);\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 labelAttribute.x = textLocation.x;\n labelAttribute.y = textLocation.y;\n text.setAttributes(textLocation);\n }\n\n labels.push(text);\n }\n\n return labels;\n }\n\n protected _overlapping(labels: (IText | IRichText)[]) {\n if (labels.length === 0) {\n return [];\n }\n const option = this.attribute.overlap as OverlapAttrs;\n\n const result: (IText | IRichText)[] = [];\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 {\n avoidBaseMark,\n strategy = [],\n hideOnHit = true,\n clampForce = true,\n avoidMarks = [],\n overlapPadding\n } = option;\n const bmpTool = this._bmpTool || bitmapTool(size.width, size.height);\n const bitmap = this._bitmap || bmpTool.bitmap();\n const checkBounds = strategy.some(s => s.type === 'bound');\n\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].visible === false) {\n continue;\n }\n\n const text = labels[i] as IText | IRichText;\n const baseMark = this.getRelatedGrphic(text.attribute);\n text.update();\n if (!isRectIntersect(baseMark.AABBBounds, { x1: 0, x2: bmpTool.width, y1: 0, y2: bmpTool.height }, true)) {\n continue;\n }\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 (checkBounds && baseMark?.AABBBounds && this._canPlaceInside(text.AABBBounds, baseMark?.AABBBounds)) {\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.length; j++) {\n hasPlace = place(\n bmpTool,\n bitmap,\n strategy[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 result.push(text);\n break;\n }\n }\n\n // 尝试向内挤压\n if (!hasPlace && clampForce) {\n // 向内挤压不考虑 overlapPadding\n const { dx = 0, dy = 0 } = clampText(text as IText, bmpTool.width, bmpTool.height);\n if (dx === 0 && dy === 0) {\n if (canPlace(bmpTool, bitmap, text.AABBBounds)) {\n // xy方向偏移都为0,意味着不考虑 overlapPadding 时,实际上可以放得下\n bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));\n result.push(text);\n continue;\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 result.push(text);\n continue;\n }\n }\n\n !hasPlace && !hideOnHit && result.push(text);\n }\n\n if (isFunction(this.onAfterLabelOverlap)) {\n this.onAfterLabelOverlap(bitmap);\n }\n\n return result;\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(graphic?: IGraphic, point?: Partial<PointLocationCfg>, position?: string): IBoundsLike;\n protected getGraphicBounds(graphic?: IGraphic, point: Partial<PointLocationCfg> = {}): IBoundsLike {\n return (\n graphic?.AABBBounds ||\n ({\n x1: point.x,\n x2: point.x,\n y1: point.y,\n y2: point.y\n } as IBoundsLike)\n );\n }\n\n protected _renderLabels(labels: (IText | IRichText)[]) {\n const disableAnimation = this._enableAnimation === false || this.attribute.animation === false;\n\n if (disableAnimation) {\n this._renderWithOutAnimation(labels);\n } else {\n this._renderWithAnimation(labels);\n }\n }\n\n protected _renderWithAnimation(labels: (IText | IRichText)[]) {\n const currentTextMap: Map<any, { text: IText | IRichText; labelLine?: ILine }> = new Map();\n const prevTextMap: Map<any, { text: IText | IRichText; labelLine?: ILine }> = this._graphicToText || new Map();\n const texts = [] as (IText | IRichText)[];\n\n labels.forEach((text, index) => {\n const labelLine: ILine = this._labelLine(text as any);\n const relatedGraphic = this.getRelatedGrphic(text.attribute);\n const textId = (text.attribute as LabelItem).id;\n const textKey = this._isCollectionBase ? textId : relatedGraphic;\n const state = prevTextMap?.get(textKey) ? 'update' : 'enter';\n\n if (state === 'enter') {\n texts.push(text);\n currentTextMap.set(textKey, labelLine ? { text, labelLine } : { text });\n if (relatedGraphic) {\n const { from, to } = getAnimationAttributes(text.attribute, 'fadeIn');\n this.add(text);\n\n if (labelLine) {\n this._setStatesOfLabelLine(labelLine);\n this.add(labelLine);\n }\n\n this._syncStateWithRelatedGraphic(relatedGraphic);\n relatedGraphic.once('animate-bind', a => {\n text.setAttributes(from);\n const listener = this._afterRelatedGraphicAttributeUpdate(\n text,\n texts,\n index,\n relatedGraphic,\n to,\n this._animationConfig.enter\n );\n relatedGraphic.on('afterAttributeUpdate', listener);\n });\n }\n } else if (state === 'update') {\n const prevLabel = prevTextMap.get(textKey);\n prevTextMap.delete(textKey);\n currentTextMap.set(textKey, prevLabel);\n const prevText = prevLabel.text;\n const { duration, easing } = this._animationConfig.update;\n updateAnimation(prevText as Text, text as Text, this._animationConfig.update);\n if (prevLabel.labelLine) {\n prevLabel.labelLine.animate().to(\n merge({}, prevLabel.labelLine.attribute, {\n visible:\n ((text.attribute as ArcLabelAttrs)?.line?.visible && text.attribute?.visible) ??\n text.attribute?.visible ??\n true,\n points: (text.attribute as ArcLabelAttrs)?.points\n }),\n duration,\n easing\n );\n }\n }\n });\n prevTextMap.forEach(label => {\n label.text\n ?.animate()\n .to(\n getAnimationAttributes(label.text.attribute, 'fadeOut').to,\n this._animationConfig.exit.duration,\n this._animationConfig.exit.easing\n )\n .onEnd(() => {\n this.removeChild(label.text);\n if (label?.labelLine) {\n this.removeChild(label.labelLine);\n }\n });\n });\n\n this._graphicToText = currentTextMap;\n }\n\n protected _renderWithOutAnimation(labels: (IText | IRichText)[]) {\n const currentTextMap: Map<any, { text: IText | IRichText; labelLine?: ILine }> = new Map();\n const prevTextMap: Map<any, { text: IText | IRichText; labelLine?: ILine }> = this._graphicToText || new Map();\n const texts = [] as (IText | IRichText)[];\n\n labels.forEach(text => {\n const labelLine = this._labelLine(text as any);\n const relatedGraphic = this.getRelatedGrphic(text.attribute);\n const state = prevTextMap?.get(relatedGraphic) ? 'update' : 'enter';\n const textKey = this._isCollectionBase ? (text.attribute as LabelItem).id : relatedGraphic;\n\n if (state === 'enter') {\n texts.push(text);\n currentTextMap.set(textKey, labelLine ? { text, labelLine } : { text });\n this.add(text);\n if (labelLine) {\n this.add(labelLine);\n }\n\n this._syncStateWithRelatedGraphic(relatedGraphic);\n } else if (state === 'update') {\n const prevLabel = prevTextMap.get(textKey);\n prevTextMap.delete(textKey);\n currentTextMap.set(textKey, prevLabel);\n prevLabel.text.setAttributes(text.attribute as any);\n if (prevLabel?.labelLine) {\n prevLabel.labelLine.setAttributes({ points: (text.attribute as ArcLabelAttrs)?.points });\n }\n }\n });\n\n prevTextMap.forEach(label => {\n this.removeChild(label.text);\n if (label?.labelLine) {\n this.removeChild(label.labelLine);\n }\n });\n\n this._graphicToText = currentTextMap;\n }\n\n protected _handleRelatedGraphicSetState = (e: any) => {\n if (e.detail?.type === AttributeUpdateType.STATE) {\n const currentStates = e.target?.currentStates ?? [];\n const labels = this._isCollectionBase ? [...this._graphicToText.values()] : [this._graphicToText.get(e.target)];\n\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\n protected _syncStateWithRelatedGraphic(relatedGraphic: IGraphic) {\n if (this.attribute.syncState) {\n relatedGraphic.on('afterAttributeUpdate', this._handleRelatedGraphicSetState);\n }\n }\n\n protected _afterRelatedGraphicAttributeUpdate(\n text: IText | IRichText,\n texts: (IText | IRichText)[],\n index: number,\n relatedGraphic: IGraphic,\n to: any,\n { mode, duration, easing, delay }: ILabelAnimation\n ) {\n const listener = (event: any) => {\n const { detail } = event;\n if (!detail) {\n return {};\n }\n const isValidAnimateState =\n detail &&\n detail.type === AttributeUpdateType.ANIMATE_UPDATE &&\n detail.animationState &&\n detail.animationState.step?.type !== 'wait';\n\n if (!isValidAnimateState) {\n return {};\n }\n\n if (detail.type === AttributeUpdateType.ANIMATE_END) {\n text.setAttributes(to);\n return;\n }\n\n const onStart = () => {\n if (relatedGraphic) {\n relatedGraphic.onAnimateBind = undefined;\n relatedGraphic.removeEventListener('afterAttributeUpdate', listener);\n }\n };\n\n switch (mode) {\n case 'after':\n // 3. 当前关联图元的动画播放结束后\n if (detail.animationState.end) {\n text.animate({ onStart }).wait(delay).to(to, duration, easing);\n }\n break;\n case 'after-all':\n // 2. 所有完成后才开始;\n if (index === texts.length - 1) {\n if (detail.animationState.end) {\n texts.forEach(t => {\n t.animate({ onStart }).wait(delay).to(to, duration, easing);\n });\n }\n }\n break;\n case 'same-time':\n default:\n if (this._isCollectionBase) {\n const point = this._idToPoint.get((text.attribute as LabelItem).id);\n if (\n point &&\n (!text.animates || !text.animates.has('label-animate')) &&\n relatedGraphic.containsPoint(point.x, point.y, IContainPointMode.LOCAL, this.stage?.pickerService)\n ) {\n text.animate({ onStart }).wait(delay).to(to, duration, easing);\n }\n } else if (detail.animationState.isFirstFrameOfStep) {\n text.animate({ onStart }).wait(delay).to(to, duration, easing);\n }\n\n break;\n }\n };\n return listener;\n }\n\n protected _smartInvert(labels: (IText | IRichText)[]) {\n const option = (this.attribute.smartInvert || {}) as SmartInvertAttrs;\n const { textType, contrastRatiosThreshold, alternativeColors, mode } = 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.getRelatedGrphic(label.attribute as LabelItem);\n\n /**\n * 增加smartInvert时fillStrategy和 strokeStrategy的四种策略:\n * base(baseMark色),\n * inverBase(执行智能反色),\n * similarBase(智能反色的补色),\n * null(不执行智能反色,保持fill设置的颜色)\n * */\n const backgroundColor = baseMark.attribute.fill as IColor;\n const foregroundColor = label.attribute.fill as IColor;\n const baseColor = backgroundColor;\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\n if (outsideEnable) {\n const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n if (label.attribute.lineWidth === 0) {\n continue;\n }\n\n const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n } else {\n const isInside = this._canPlaceInside(label.AABBBounds, baseMark?.AABBBounds);\n if (isInside) {\n const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n if (label.attribute.lineWidth === 0) {\n continue;\n }\n\n const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n } else {\n /** 当label无法设置stroke时,不进行反色计算(容易反色为白色与白色背景混合不可见) */\n if (label.attribute.lineWidth === 0) {\n continue;\n }\n\n /** 当label设置stroke时,保留stroke设置的颜色,根据stroke对fill做反色 */\n if (label.attribute.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\n /** 当label未设置stroke,且可设置stroke时,正常计算 */\n const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor);\n fill && label.setAttributes({ fill });\n\n const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor);\n stroke && label.setAttributes({ stroke });\n }\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"]}
|
package/cjs/legend/base.js
CHANGED
|
@@ -13,7 +13,7 @@ class LegendBase extends base_1.AbstractComponent {
|
|
|
13
13
|
render() {
|
|
14
14
|
this.removeAllChild();
|
|
15
15
|
const {interactive: interactive = !0, title: title, padding: padding = 0} = this.attribute, parsedPadding = (0,
|
|
16
|
-
vutils_1.normalizePadding)(padding), innerView =
|
|
16
|
+
vutils_1.normalizePadding)(padding), innerView = vrender_core_1.graphicCreator.group({
|
|
17
17
|
x: parsedPadding[3],
|
|
18
18
|
y: parsedPadding[0],
|
|
19
19
|
pickable: interactive,
|
package/cjs/legend/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/legend/base.ts"],"names":[],"mappings":";;;AAIA,6CAA6D;AAE7D,
|
|
1
|
+
{"version":3,"sources":["../src/legend/base.ts"],"names":[],"mappings":";;;AAIA,6CAA6D;AAE7D,yDAAwD;AACxD,uCAAiD;AAEjD,gCAA6B;AAE7B,yCAAiD;AAEjD,MAAsB,UAA2C,SAAQ,wBAA8B;IAAvG;;QACE,SAAI,GAAG,QAAQ,CAAC;QAEN,WAAM,GAAe,IAAI,CAAC;IAgGtC,CAAC;IA9FC,MAAM;QACJ,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClE,MAAM,aAAa,GAAG,IAAA,yBAAgB,EAAC,OAAO,CAAC,CAAC;QAGhD,MAAM,SAAS,GAAG,6BAAc,CAAC,KAAK,CAAC;YACrC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;YACnB,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;YACnB,QAAQ,EAAE,WAAW;YACrB,gBAAgB,EAAE,WAAW;SAC9B,CAAC,CAAC;QACH,SAAS,CAAC,IAAI,GAAG,8BAAmB,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE;YAElB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC1B;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAUO,YAAY,CAAC,KAAkB;QACrC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QAE3F,MAAM,QAAQ,GAAkB;YAC9B,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,IAAI;YACJ,SAAS;YACT,OAAO,EAAE,IAAA,yBAAgB,EAAC,OAAO,CAAC;YAClC,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;YAC1B,QAAQ,CAAC,KAAK,mBACZ,OAAO,EAAE,IAAI,IACV,KAAK,CAAC,KAAK,CACf,CAAC;YACF,IAAI,IAAA,gBAAO,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;aAC9B;SACF;QAED,IAAI,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE;YACpC,QAAQ,CAAC,KAAK,mBACZ,OAAO,EAAE,IAAI,IACV,UAAU,CAAC,KAAK,CACpB,CAAC;SACH;QAED,MAAM,QAAQ,GAAG,IAAI,SAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,QAAQ,CAAC,IAAI,GAAG,8BAAmB,CAAC,KAAK,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QAEvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAA4B,CAAC,CAAC;IACpD,CAAC;IAEO,aAAa;;QAEnB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAElD,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,KAAK,0CAAE,KAAK,CAAC;YAC1C,IAAI,KAAK,KAAK,QAAQ,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;aAClE;iBAAM,IAAI,KAAK,KAAK,KAAK,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;aAC5D;SACF;IACH,CAAC;CACF;AAnGD,gCAmGC","file":"base.js","sourcesContent":["/**\n * TODO:\n * align 为 'top' 时,操作区域同标题的间距有问题\n */\nimport { isValid, normalizePadding } from '@visactor/vutils';\nimport type { IGroup, INode } from '@visactor/vrender-core';\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { TagAttributes } from '../tag';\nimport { Tag } from '../tag';\nimport type { LegendBaseAttributes, LegendTitle } from './type';\nimport { LEGEND_ELEMENT_NAME } from './constant';\n\nexport abstract class LegendBase<T extends LegendBaseAttributes> extends AbstractComponent<Required<T>> {\n name = 'legend';\n protected _innerView!: IGroup;\n protected _title: Tag | null = null;\n\n render() {\n this.removeAllChild();\n\n const { interactive = true, title, padding = 0 } = this.attribute;\n const parsedPadding = normalizePadding(padding);\n\n // 创建一个内部的 container 用于存储所有的元素\n const innerView = graphicCreator.group({\n x: parsedPadding[3],\n y: parsedPadding[0],\n pickable: interactive,\n childrenPickable: interactive\n });\n innerView.name = LEGEND_ELEMENT_NAME.innerView;\n this.add(innerView);\n this._innerView = innerView;\n\n if (title?.visible) {\n // 渲染标题\n this._renderTitle(title);\n }\n\n this._renderContent();\n\n this._adjustLayout();\n\n if (interactive) {\n this._bindEvents();\n }\n\n const viewBounds = this._innerView.AABBBounds;\n this.attribute.width = viewBounds.width() + parsedPadding[1] + parsedPadding[3];\n this.attribute.height = viewBounds.height() + parsedPadding[0] + parsedPadding[2];\n }\n /**\n * 图例主体内容渲染\n */\n protected abstract _renderContent(): void;\n /**\n * 事件绑定逻辑\n */\n protected abstract _bindEvents(): void;\n\n private _renderTitle(title: LegendTitle) {\n const { text = '', textStyle, padding = 0, background, minWidth, maxWidth, shape } = title;\n\n const tagAttrs: TagAttributes = {\n x: 0,\n y: 0,\n text,\n textStyle,\n padding: normalizePadding(padding),\n minWidth,\n maxWidth\n };\n\n if (shape && shape.visible) {\n tagAttrs.shape = {\n visible: true,\n ...shape.style\n };\n if (isValid(shape.space)) {\n tagAttrs.space = shape.space;\n }\n }\n\n if (background && background.visible) {\n tagAttrs.panel = {\n visible: true,\n ...background.style\n };\n }\n\n const titleTag = new Tag(tagAttrs);\n titleTag.name = LEGEND_ELEMENT_NAME.title;\n this._title = titleTag;\n\n this._innerView.add(titleTag as unknown as INode);\n }\n\n private _adjustLayout() {\n // 调整 title\n if (this._title) {\n const innerViewWidth = this._innerView.AABBBounds.width();\n const titleWidth = this._title.AABBBounds.width();\n\n const align = this.attribute.title?.align;\n if (align === 'center') {\n this._title.setAttribute('x', (innerViewWidth - titleWidth) / 2);\n } else if (align === 'end') {\n this._title.setAttribute('x', innerViewWidth - titleWidth);\n }\n }\n }\n}\n"]}
|
|
@@ -90,7 +90,7 @@ class DiscreteLegend extends base_1.LegendBase {
|
|
|
90
90
|
if (!1 === item.visible || (0, vutils_1.isEmpty)(items)) return;
|
|
91
91
|
let legendItems = items;
|
|
92
92
|
reversed && (legendItems = null == items ? void 0 : items.reverse());
|
|
93
|
-
const itemsContainer =
|
|
93
|
+
const itemsContainer = vrender_core_1.graphicCreator.group({
|
|
94
94
|
x: 0,
|
|
95
95
|
y: 0
|
|
96
96
|
});
|
|
@@ -135,17 +135,16 @@ class DiscreteLegend extends base_1.LegendBase {
|
|
|
135
135
|
valueAttr = this._handleStyle(valueAttr, item, isSelected, index, items), background = this._handleStyle(background, item, isSelected, index, items);
|
|
136
136
|
const parsedPadding = (0, vutils_1.normalizePadding)(padding);
|
|
137
137
|
let itemGroup;
|
|
138
|
-
!1 === background.visible ? (itemGroup =
|
|
138
|
+
!1 === background.visible ? (itemGroup = vrender_core_1.graphicCreator.group({
|
|
139
139
|
x: 0,
|
|
140
140
|
y: 0,
|
|
141
141
|
cursor: (null == background ? void 0 : background.style).cursor
|
|
142
|
-
}), this._appendDataToShape(itemGroup, constant_1.LEGEND_ELEMENT_NAME.item, item, itemGroup)) : (itemGroup = (
|
|
143
|
-
vrender_core_1.createGroup)(Object.assign({
|
|
142
|
+
}), this._appendDataToShape(itemGroup, constant_1.LEGEND_ELEMENT_NAME.item, item, itemGroup)) : (itemGroup = vrender_core_1.graphicCreator.group(Object.assign({
|
|
144
143
|
x: 0,
|
|
145
144
|
y: 0
|
|
146
145
|
}, null == background ? void 0 : background.style)), this._appendDataToShape(itemGroup, constant_1.LEGEND_ELEMENT_NAME.item, item, itemGroup, null == background ? void 0 : background.state)),
|
|
147
146
|
itemGroup.id = `${null != id ? id : label}-${index}`, itemGroup.addState(isSelected ? constant_1.LegendStateValue.selected : constant_1.LegendStateValue.unSelected);
|
|
148
|
-
const innerGroup =
|
|
147
|
+
const innerGroup = vrender_core_1.graphicCreator.group({
|
|
149
148
|
x: 0,
|
|
150
149
|
y: 0,
|
|
151
150
|
pickable: !1
|
|
@@ -155,7 +154,7 @@ class DiscreteLegend extends base_1.LegendBase {
|
|
|
155
154
|
if (!1 !== (null == shapeAttr ? void 0 : shapeAttr.visible)) {
|
|
156
155
|
shapeSize = (0, vutils_1.get)(shapeAttr, "style.size", constant_1.DEFAULT_SHAPE_SIZE),
|
|
157
156
|
shapeSpace = (0, vutils_1.get)(shapeAttr, "space", constant_1.DEFAULT_SHAPE_SPACE);
|
|
158
|
-
const itemShape =
|
|
157
|
+
const itemShape = vrender_core_1.graphicCreator.symbol(Object.assign(Object.assign({
|
|
159
158
|
x: 0,
|
|
160
159
|
y: 0,
|
|
161
160
|
symbolType: "circle",
|
|
@@ -172,7 +171,7 @@ class DiscreteLegend extends base_1.LegendBase {
|
|
|
172
171
|
let focusSpace = 0;
|
|
173
172
|
if (focus) {
|
|
174
173
|
const focusSize = (0, vutils_1.get)(focusIconStyle, "size", constant_1.DEFAULT_SHAPE_SIZE);
|
|
175
|
-
focusShape =
|
|
174
|
+
focusShape = vrender_core_1.graphicCreator.symbol(Object.assign(Object.assign({
|
|
176
175
|
x: 0,
|
|
177
176
|
y: -focusSize / 2 - 1,
|
|
178
177
|
strokeBoundsBuffer: 0
|
|
@@ -183,7 +182,7 @@ class DiscreteLegend extends base_1.LegendBase {
|
|
|
183
182
|
})), this._appendDataToShape(focusShape, constant_1.LEGEND_ELEMENT_NAME.focus, item, itemGroup),
|
|
184
183
|
focusSpace = focusSize;
|
|
185
184
|
}
|
|
186
|
-
const labelShape =
|
|
185
|
+
const labelShape = vrender_core_1.graphicCreator.text(Object.assign(Object.assign({
|
|
187
186
|
x: shapeSize / 2 + shapeSpace,
|
|
188
187
|
y: 0,
|
|
189
188
|
textAlign: "start",
|
|
@@ -197,8 +196,7 @@ class DiscreteLegend extends base_1.LegendBase {
|
|
|
197
196
|
innerGroup.add(labelShape);
|
|
198
197
|
const labelSpace = (0, vutils_1.get)(labelAttr, "space", constant_1.DEFAULT_LABEL_SPACE);
|
|
199
198
|
if ((0, vutils_1.isValid)(value)) {
|
|
200
|
-
const valueSpace = (0, vutils_1.get)(valueAttr, "space", focus ? constant_1.DEFAULT_VALUE_SPACE : 0), valueShape = (
|
|
201
|
-
vrender_core_1.createText)(Object.assign(Object.assign({
|
|
199
|
+
const valueSpace = (0, vutils_1.get)(valueAttr, "space", focus ? constant_1.DEFAULT_VALUE_SPACE : 0), valueShape = vrender_core_1.graphicCreator.text(Object.assign(Object.assign({
|
|
202
200
|
x: 0,
|
|
203
201
|
y: 0,
|
|
204
202
|
textAlign: "start",
|
|
@@ -281,7 +279,7 @@ class DiscreteLegend extends base_1.LegendBase {
|
|
|
281
279
|
});
|
|
282
280
|
}
|
|
283
281
|
pager.defaultCurrent > 1 && (isHorizontal ? itemsContainer.setAttribute("y", -(pager.defaultCurrent - 1) * (pageHeight + spaceRow)) : itemsContainer.setAttribute("x", -(pager.defaultCurrent - 1) * (pageWidth + spaceCol)));
|
|
284
|
-
const clipGroup =
|
|
282
|
+
const clipGroup = vrender_core_1.graphicCreator.group({
|
|
285
283
|
x: 0,
|
|
286
284
|
y: renderStartY,
|
|
287
285
|
width: pageWidth,
|