@visactor/vrender-components 0.20.0-alpha.1 → 0.20.0-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/brush/brush.js +2 -1
- package/cjs/brush/type.js +1 -2
- package/cjs/index.d.ts +2 -1
- package/cjs/index.js +5 -4
- package/cjs/index.js.map +1 -1
- package/cjs/indicator/indicator.d.ts +3 -1
- package/cjs/indicator/indicator.js +19 -41
- package/cjs/indicator/indicator.js.map +1 -1
- package/cjs/indicator/type.d.ts +1 -0
- package/cjs/indicator/type.js.map +1 -1
- package/cjs/interface.d.ts +2 -1
- package/cjs/interface.js.map +1 -1
- package/cjs/label/arc.js +13 -6
- package/cjs/label/arc.js.map +1 -1
- package/cjs/label/base.js +4 -0
- package/cjs/label/base.js.map +1 -1
- package/cjs/label/type.d.ts +2 -1
- package/cjs/label/type.js.map +1 -1
- package/cjs/label/util.d.ts +1 -5
- package/cjs/label/util.js +1 -34
- package/cjs/label/util.js.map +1 -1
- package/cjs/marker/point.js +4 -3
- package/cjs/marker/point.js.map +1 -1
- package/cjs/tag/tag.d.ts +1 -1
- package/cjs/tag/tag.js +11 -3
- package/cjs/tag/tag.js.map +1 -1
- package/cjs/timeline/index.d.ts +2 -0
- package/cjs/timeline/index.js +21 -0
- package/cjs/timeline/index.js.map +1 -0
- package/cjs/timeline/register.d.ts +1 -0
- package/cjs/timeline/register.js +15 -0
- package/cjs/timeline/register.js.map +1 -0
- package/cjs/timeline/timeline.d.ts +30 -0
- package/cjs/timeline/timeline.js +178 -0
- package/cjs/timeline/timeline.js.map +1 -0
- package/cjs/timeline/type.d.ts +18 -0
- package/cjs/timeline/type.js +6 -0
- package/cjs/timeline/type.js.map +1 -0
- package/cjs/util/index.d.ts +1 -0
- package/cjs/util/index.js +1 -1
- package/cjs/util/index.js.map +1 -1
- package/dist/index.es.js +2869 -2723
- package/es/brush/brush.js +2 -1
- package/es/brush/type.js +1 -2
- package/es/index.d.ts +2 -1
- package/es/index.js +3 -1
- package/es/index.js.map +1 -1
- package/es/indicator/indicator.d.ts +3 -1
- package/es/indicator/indicator.js +19 -40
- package/es/indicator/indicator.js.map +1 -1
- package/es/indicator/type.d.ts +1 -0
- package/es/indicator/type.js.map +1 -1
- package/es/interface.d.ts +2 -1
- package/es/interface.js.map +1 -1
- package/es/label/arc.js +14 -7
- package/es/label/arc.js.map +1 -1
- package/es/label/base.js +5 -1
- package/es/label/base.js.map +1 -1
- package/es/label/type.d.ts +2 -1
- package/es/label/type.js.map +1 -1
- package/es/label/util.d.ts +1 -5
- package/es/label/util.js +0 -31
- package/es/label/util.js.map +1 -1
- package/es/marker/point.js +4 -3
- package/es/marker/point.js.map +1 -1
- package/es/tag/tag.d.ts +1 -1
- package/es/tag/tag.js +12 -2
- package/es/tag/tag.js.map +1 -1
- package/es/timeline/index.d.ts +2 -0
- package/es/timeline/index.js +4 -0
- package/es/timeline/index.js.map +1 -0
- package/es/timeline/register.d.ts +1 -0
- package/es/timeline/register.js +6 -0
- package/es/timeline/register.js.map +1 -0
- package/es/timeline/timeline.d.ts +30 -0
- package/es/timeline/timeline.js +175 -0
- package/es/timeline/timeline.js.map +1 -0
- package/es/timeline/type.d.ts +18 -0
- package/es/timeline/type.js +2 -0
- package/es/timeline/type.js.map +1 -0
- package/es/util/index.d.ts +1 -0
- package/es/util/index.js +2 -0
- package/es/util/index.js.map +1 -1
- package/package.json +6 -6
package/cjs/marker/point.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/marker/point.ts"],"names":[],"mappings":"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","file":"point.js","sourcesContent":["import type {\n IGroup,\n IImage,\n INode,\n ISymbol,\n IImageGraphicAttribute,\n IRichText,\n IRichTextGraphicAttribute,\n ILine,\n ILineGraphicAttribute\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber, merge } from '@visactor/vutils';\nimport { ArcSegment, Segment } from '../segment';\nimport type { TagAttributes } from '../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_POINT_TEXT_STYLE_MAP, DEFAULT_MARK_POINT_THEME, FUZZY_EQUAL_DELTA } from './config';\nimport type { IItemContent, IItemLine, MarkPointAnimationType, MarkPointAttrs, MarkerAnimationState } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport { IMarkPointItemPosition } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\nimport { loadMarkPointComponent } from './register';\nimport { computeOffsetForlimit } from '../util/limit-shape';\nimport { DEFAULT_STATES } from '../constant';\nimport { DefaultExitMarkerAnimation, DefaultUpdateMarkPointAnimation, markPointAnimate } from './animate/animate';\nimport {\n deltaXYToAngle,\n fuzzyEqualNumber,\n getTextAlignAttrOfVerticalDir,\n isPostiveXAxis,\n removeRepeatPoint\n} from '../util';\n\nloadMarkPointComponent();\n\nexport function registerMarkPointAnimate() {\n MarkPoint._animate = markPointAnimate;\n}\n\nexport class MarkPoint extends Marker<MarkPointAttrs, MarkPointAnimationType> {\n name = 'markPoint';\n static defaultAttributes = DEFAULT_MARK_POINT_THEME;\n\n /** animate */\n defaultUpdateAnimation = DefaultUpdateMarkPointAnimation;\n defaultExitAnimation = DefaultExitMarkerAnimation;\n protected markerAnimate(state: MarkerAnimationState): void {\n if (MarkPoint._animate && this._animationConfig) {\n MarkPoint._animate([this._line, this._decorativeLine], this._item, this._animationConfig, state);\n }\n }\n\n private _item!: ISymbol | Tag | IImage | IRichText;\n private _targetItem!: ISymbol;\n\n private _line?: Segment;\n\n private _decorativeLine!: ILine;\n private _isArcLine: boolean = false; // 用于区分 arc-segment 和 segment\n private _isStraightLine: boolean = false; // 用于区分绘制 纯直线 和 折线,(type-do/op/po时, 如果偏移量很小, 视觉无法分辨, 也需要绘制成直线)\n\n constructor(attributes: MarkPointAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkPoint.defaultAttributes, attributes));\n }\n\n protected setLabelPos() {\n //do nothing\n }\n\n protected getTextAlignAttr(\n autoRotate: boolean,\n offsetX: number,\n offsetY: number,\n lineEndAngle: number,\n itemPosition: keyof typeof IMarkPointItemPosition\n ) {\n // 垂直方向例外\n if (\n fuzzyEqualNumber(Math.abs(lineEndAngle), Math.PI / 2, FUZZY_EQUAL_DELTA) ||\n fuzzyEqualNumber(Math.abs(lineEndAngle), (Math.PI * 3) / 2, FUZZY_EQUAL_DELTA)\n ) {\n return getTextAlignAttrOfVerticalDir(autoRotate, lineEndAngle, itemPosition);\n }\n\n if (isPostiveXAxis(lineEndAngle)) {\n return DEFAULT_MARK_POINT_TEXT_STYLE_MAP.postiveXAxis[itemPosition];\n }\n return DEFAULT_MARK_POINT_TEXT_STYLE_MAP.negativeXAxis[itemPosition];\n }\n\n protected setItemAttributes(\n item: ISymbol | Tag | IImage | IRichText,\n itemContent: IItemContent,\n newPosition: Point,\n newItemPosition: Point,\n itemType: 'symbol' | 'text' | 'image' | 'richText' | 'custom'\n ) {\n if (!item) {\n return;\n }\n const {\n autoRotate = true,\n refX = 0,\n refY = 0,\n refAngle = 0,\n textStyle = {},\n richTextStyle = {},\n imageStyle = {},\n position: positionType = IMarkPointItemPosition.middle\n } = itemContent;\n const { state } = this.attribute as MarkPointAttrs;\n const lineEndAngle = this._line?.getEndAngle() || 0;\n const itemRefOffsetX = refX * Math.cos(lineEndAngle) + refY * Math.cos(lineEndAngle - Math.PI / 2);\n const itemRefOffsetY = refX * Math.sin(lineEndAngle) + refY * Math.sin(lineEndAngle - Math.PI / 2);\n if (itemType === 'text') {\n const offsetX = newItemPosition.x - newPosition.x;\n const offsetY = newItemPosition.y - newPosition.y;\n item.setAttributes({\n ...(textStyle as TagAttributes),\n textStyle: {\n ...this.getTextAlignAttr(\n autoRotate,\n offsetX,\n offsetY,\n lineEndAngle,\n itemContent.position ?? ('end' as keyof typeof IMarkPointItemPosition)\n ),\n ...textStyle.textStyle\n },\n state: {\n panel: merge({}, DEFAULT_STATES, state?.textBackground),\n text: merge({}, DEFAULT_STATES, state?.text)\n }\n } as any);\n } else if (itemType === 'richText') {\n item.setAttributes({\n dx: this.getItemDx(item, positionType, richTextStyle) + (richTextStyle.dx || 0),\n dy: this.getItemDy(item, positionType, richTextStyle) + (richTextStyle.dy || 0)\n });\n item.states = merge({}, DEFAULT_STATES, state?.richText);\n } else if (itemType === 'image') {\n item.setAttributes({\n dx: this.getItemDx(item, positionType, imageStyle) + (imageStyle.dx || 0),\n dy: this.getItemDy(item, positionType, imageStyle) + (imageStyle.dy || 0)\n });\n item.states = merge({}, DEFAULT_STATES, state?.image);\n }\n\n const itemAngle = isPostiveXAxis(lineEndAngle) ? lineEndAngle : lineEndAngle - Math.PI;\n\n item.setAttributes({\n x: newItemPosition.x + (itemRefOffsetX || 0),\n y: newItemPosition.y + (itemRefOffsetY || 0),\n angle: autoRotate && itemAngle + refAngle\n });\n }\n\n protected getItemDx(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const width = (item as IGroup)?.AABBBounds?.width() ?? (style?.width || 0);\n if (position.includes('inside')) {\n return -width;\n }\n if (position === 'insideTop') {\n return 0;\n }\n return 0;\n }\n\n protected getItemDy(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const height = (item as IGroup)?.AABBBounds?.height() ?? (style?.height || 0);\n if (position.includes('top') || position.includes('Top')) {\n return -height;\n }\n if (position.includes('middle') || position.includes('Middle')) {\n return -height / 2;\n }\n return 0;\n }\n\n protected initItem(itemContent: IItemContent, newPosition: Point, newItemPosition: Point) {\n const { state } = this.attribute as MarkPointAttrs;\n const { type = 'text', symbolStyle, richTextStyle, imageStyle, renderCustomCallback } = itemContent;\n let item: ISymbol | Tag | IImage | IRichText | IGroup;\n if (type === 'symbol') {\n item = graphicCreator.symbol({\n ...newItemPosition,\n ...symbolStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.symbol);\n } else if (type === 'text') {\n item = new Tag({\n ...newItemPosition,\n state: {\n panel: merge({}, DEFAULT_STATES, state?.textBackground),\n text: merge({}, DEFAULT_STATES, state?.text)\n }\n });\n } else if (type === 'richText') {\n item = graphicCreator.richtext({\n ...newItemPosition,\n ...richTextStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.richText);\n } else if (type === 'image') {\n item = graphicCreator.image({\n ...newItemPosition,\n ...imageStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.image);\n } else if (type === 'custom' && renderCustomCallback) {\n item = renderCustomCallback();\n item.states = merge({}, DEFAULT_STATES, state?.customMark);\n }\n item.name = `mark-point-${type}`;\n this.setItemAttributes(item, itemContent, newPosition, newItemPosition, type);\n return item;\n }\n\n protected getItemLineAttr(itemLine: IItemLine, newPosition: Point, newItemPosition: Point) {\n let points: Point[] = [];\n let center = { x: 0, y: 0 };\n let radius = 0;\n let startAngle = 0;\n let endAngle = 0;\n const { type = 'type-s', arcRatio = 0.8 } = itemLine;\n // confine之后位置会变化,所以这里需要重新check是否是直线\n const itemOffsetX = newItemPosition.x - newPosition.x;\n const itemOffsetY = newItemPosition.y - newPosition.y;\n this._isStraightLine =\n fuzzyEqualNumber(itemOffsetX, 0, FUZZY_EQUAL_DELTA) || fuzzyEqualNumber(itemOffsetY, 0, FUZZY_EQUAL_DELTA);\n if (this._isArcLine) {\n const { x: x1, y: y1 } = newPosition;\n const { x: x2, y: y2 } = newItemPosition;\n\n // 得到中点和斜率\n const x0 = (x1 + x2) / 2;\n const y0 = (y1 + y2) / 2;\n // 得到垂直平分线表达式\n const k = y1 === y2 ? 0 : -(x1 - x2) / (y1 - y2); // 垂直平分线斜率 * 两点连线斜率 = -1\n const line = (x: number) => k * (x - x0) + y0;\n // 在垂直平分线上找圆心\n const direction = y2 > y1 ? -1 : 1;\n\n const deltaX = arcRatio * direction * x0; // 数值决定曲率, 符号决定法向, 可通过配置自定义\n const centerX = x0 + deltaX;\n const centerY = line(centerX);\n startAngle = deltaXYToAngle(y1 - centerY, x1 - centerX);\n endAngle = deltaXYToAngle(y2 - centerY, x2 - centerX);\n center = { x: centerX, y: centerY };\n\n if (arcRatio > 0) {\n // 此时绘制凹圆弧, 顺时针绘制\n // 根据arc图元绘制逻辑, 需要保证endAngle > startAngle, 才能顺时针绘制\n if (endAngle < startAngle) {\n endAngle += Math.PI * 2;\n }\n } else {\n // 此时绘制凸圆弧, 顺时针绘制\n // 根据arc图元绘制逻辑, 需要保证endAngle < startAngle, 才能逆时针绘制\n if (startAngle < endAngle) {\n startAngle += Math.PI * 2;\n }\n }\n\n radius = Math.sqrt((centerX - x1) * (centerX - x1) + (centerY - y1) * (centerY - y1));\n } else if (type === 'type-do' && !this._isStraightLine) {\n points = [\n newPosition,\n {\n x: (newPosition.x + newItemPosition.x) / 2,\n y: newItemPosition.y\n },\n newItemPosition\n ];\n } else if (type === 'type-po' && !this._isStraightLine) {\n points = [\n newPosition,\n {\n x: newItemPosition.x,\n y: newPosition.y\n },\n newItemPosition\n ];\n } else if (type === 'type-op' && !this._isStraightLine) {\n points = [\n newPosition,\n {\n x: newPosition.x,\n y: newItemPosition.y\n },\n newItemPosition\n ];\n } else {\n points = [newPosition, newItemPosition];\n }\n // 插值的过程中可能会产生重复的点, 在此去除\n points = removeRepeatPoint(points);\n return {\n points,\n center,\n radius,\n startAngle,\n endAngle\n };\n }\n\n protected reDrawLine(itemLine: IItemLine, pointsAttr: any) {\n this._line.release();\n const { startSymbol, endSymbol, lineStyle, type = 'type-s' } = itemLine;\n const { state } = this.attribute as MarkPointAttrs;\n const lineConstructor = this._isArcLine ? ArcSegment : Segment;\n this._container.removeChild(this._line);\n this._line = new lineConstructor({\n ...pointsAttr,\n pickable: false,\n startSymbol,\n endSymbol,\n lineStyle,\n visible: itemLine.visible,\n state: {\n line: merge({}, DEFAULT_STATES, state?.line),\n startSymbol: merge({}, DEFAULT_STATES, state?.lineStartSymbol),\n endSymbol: merge({}, DEFAULT_STATES, state?.lineEndSymbol)\n }\n } as any);\n this._container.add(this._line as unknown as INode);\n }\n\n protected setItemLineAttr(itemLine: IItemLine, newPosition: Point, newItemPosition: Point) {\n if (this._line) {\n const { startSymbol, endSymbol, lineStyle, type = 'type-s' } = itemLine;\n const { state } = this.attribute as MarkPointAttrs;\n const pointsAttr = this.getItemLineAttr(itemLine, newPosition, newItemPosition);\n if ((this._isArcLine && this._line.key === 'arc-segment') || (!this._isArcLine && this._line.key === 'segment')) {\n this._line.setAttributes({\n ...pointsAttr,\n startSymbol,\n endSymbol,\n lineStyle,\n visible: itemLine.visible,\n state: {\n line: merge({}, DEFAULT_STATES, state?.line),\n startSymbol: merge({}, DEFAULT_STATES, state?.lineStartSymbol),\n endSymbol: merge({}, DEFAULT_STATES, state?.lineEndSymbol)\n }\n });\n } else {\n this.reDrawLine(itemLine, pointsAttr);\n }\n }\n }\n\n protected getDecorativeLineAttr(itemLine: IItemLine) {\n const decorativeLength = itemLine?.decorativeLine?.length || 10;\n const itemAngle = this._line.getEndAngle() || 0;\n\n const startPointOffsetX = (decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const startPointOffsetY = (decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n const endPointOffsetX = (-decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const endPointOffsetY = (-decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n return {\n startPointOffsetX,\n startPointOffsetY,\n endPointOffsetX,\n endPointOffsetY\n };\n }\n\n protected setDecorativeLineAttr(itemLine: IItemLine, newItemPosition: Point, visible: boolean) {\n if (this._decorativeLine) {\n const { lineStyle } = itemLine;\n const { startPointOffsetX, startPointOffsetY, endPointOffsetX, endPointOffsetY } =\n this.getDecorativeLineAttr(itemLine);\n this._decorativeLine.setAttributes({\n points: [\n {\n x: newItemPosition.x + startPointOffsetX,\n y: newItemPosition.y + startPointOffsetY\n },\n {\n x: newItemPosition.x + endPointOffsetX,\n y: newItemPosition.y + endPointOffsetY\n }\n ] as IPointLike[],\n ...(lineStyle as Partial<ILineGraphicAttribute>),\n visible\n });\n this._decorativeLine.states = merge({}, DEFAULT_STATES, this.attribute.state?.line);\n }\n }\n\n protected setTargetItemAttributes(targetItem: any, position: IPointLike) {\n if (this._targetItem) {\n this._targetItem.setAttributes({\n x: position.x,\n y: position.y,\n visible: targetItem.visible ?? false,\n ...targetItem.style\n });\n this._targetItem.states = merge({}, DEFAULT_STATES, this.attribute.state?.targetItem);\n }\n }\n\n protected setAllOfItemsAttr(newPosition: Point, newItemPosition: Point) {\n const { position, itemLine = {}, itemContent = {}, limitRect, targetSymbol } = this.attribute as MarkPointAttrs;\n const { type = 'text', confine } = itemContent;\n if (limitRect && confine) {\n const { x, y, width, height } = limitRect;\n const { dx, dy } = computeOffsetForlimit(this._item, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n newItemPosition.x = newItemPosition.x + dx;\n newItemPosition.y = newItemPosition.y + dy;\n }\n this.setTargetItemAttributes(targetSymbol, position);\n this.setItemLineAttr(itemLine, newPosition, newItemPosition);\n this.setItemAttributes(this._item, itemContent, newPosition, newItemPosition, type);\n this.setDecorativeLineAttr(itemLine, newItemPosition, itemLine.decorativeLine?.visible);\n }\n\n protected computeNewPositionAfterTargetItem(position: Point) {\n const { itemContent = {}, targetSymbol } = this.attribute as MarkPointAttrs;\n const { offsetX: itemContentOffsetX = 0, offsetY: itemContentOffsetY = 0 } = itemContent;\n const {\n offset: targetSymbolOffset = 0,\n style: targetSymbolStyle,\n visible: targetItemvisible = false,\n size: targetSymbolSize\n } = targetSymbol;\n const targetSize = targetItemvisible ? targetSymbolSize || (targetSymbolStyle.size ?? 10) : 0;\n const targetOffsetAngle = deltaXYToAngle(itemContentOffsetY, itemContentOffsetX);\n const newPosition: Point = {\n x: position.x + (targetSize / 2 + targetSymbolOffset) * Math.cos(targetOffsetAngle),\n y: position.y + (targetSize / 2 + targetSymbolOffset) * Math.sin(targetOffsetAngle)\n };\n const newItemPosition: Point = {\n x: position.x + (targetSize / 2 + targetSymbolOffset) * Math.cos(targetOffsetAngle) + itemContentOffsetX, // 偏移量 = targetItem size + targetItem space + 用户配置offset\n y: position.y + (targetSize / 2 + targetSymbolOffset) * Math.sin(targetOffsetAngle) + itemContentOffsetY // 偏移量 = targetItem size + targetItem space + 用户配置offset\n };\n\n return { newPosition, newItemPosition };\n }\n\n protected initMarker(container: IGroup) {\n const { position, itemContent = {}, itemLine } = this.attribute as MarkPointAttrs;\n const { type: itemLineType = 'type-s', arcRatio = 0.8 } = itemLine;\n const { offsetX = 0, offsetY = 0 } = itemContent;\n\n this._isStraightLine =\n fuzzyEqualNumber(offsetX, 0, FUZZY_EQUAL_DELTA) || fuzzyEqualNumber(offsetY, 0, FUZZY_EQUAL_DELTA);\n this._isArcLine = itemLineType === 'type-arc' && arcRatio !== 0 && !this._isStraightLine;\n\n /** 根据targetItem计算新的弧线起点 */\n const { newPosition, newItemPosition } = this.computeNewPositionAfterTargetItem(position);\n\n /** itemline - 连接线 */\n\n const lineConstructor = this._isArcLine ? ArcSegment : Segment;\n const line = new lineConstructor({\n points: [],\n pickable: false, // 组件容器本身不参与拾取\n center: { x: 0, y: 0 },\n radius: 0,\n startAngle: 0,\n endAngle: 0\n });\n\n line.name = 'mark-point-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n /** decorativeLine - 装饰线 */\n const decorativeLine = graphicCreator.line({\n points: []\n });\n decorativeLine.name = 'mark-point-decorativeLine';\n this._decorativeLine = decorativeLine;\n container.add(decorativeLine as unknown as INode);\n\n /** targetItem - 被标注的点上需要放置的内容 */\n const targetItem = graphicCreator.symbol({});\n targetItem.name = 'mark-point-targetItem';\n this._targetItem = targetItem;\n container.add(this._targetItem);\n\n /** item - 标注的内容 */\n // 为了强制将itemContent限制在limitRect内, 所以需要先绘制item, 然后根据item bounds 动态调整位置\n const item = this.initItem(itemContent as any, newPosition, newItemPosition);\n this._item = item;\n container.add(item as unknown as INode);\n\n /** 全部属性确定后, 给每个元素 set attr */\n // 由于itemLine的指向也要变化, 所以需要对所有的内容进行渲染\n this.setAllOfItemsAttr(newPosition, newItemPosition);\n }\n\n protected updateMarker() {\n const { position, itemContent = {}, itemLine } = this.attribute as MarkPointAttrs;\n const { type = 'text' } = itemContent;\n const { type: itemLineType = 'type-s', arcRatio = 0.8 } = itemLine;\n const { offsetX = 0, offsetY = 0 } = itemContent;\n\n this._isStraightLine =\n fuzzyEqualNumber(offsetX, 0, FUZZY_EQUAL_DELTA) || fuzzyEqualNumber(offsetY, 0, FUZZY_EQUAL_DELTA);\n const isArcLine = itemLineType === 'type-arc' && arcRatio !== 0 && !this._isStraightLine;\n /** 根据targetItem计算新的弧线起点 */\n const { newPosition, newItemPosition } = this.computeNewPositionAfterTargetItem(position);\n\n if (isArcLine !== this._isArcLine) {\n // 如果曲线和直线相互切换了, 则需要重新绘制line\n this._isArcLine = isArcLine;\n this.reDrawLine(itemLine, {\n points: [{ x: 0, y: 0 }],\n pickable: false,\n center: { x: 0, y: 0 },\n radius: 0,\n startAngle: 0,\n endAngle: 0\n });\n } else {\n this._isArcLine = isArcLine;\n }\n\n // 为了强制将itemContent限制在limitRect内, 所以需要先绘制item, 然后根据item bounds 动态调整位置\n this.setItemAttributes(this._item, itemContent, newPosition, newItemPosition, type);\n // 由于itemLine的指向也要变化, 所以需要对所有的内容进行渲染\n this.setAllOfItemsAttr(newPosition, newItemPosition);\n }\n\n protected isValidPoints() {\n const { position } = this.attribute as MarkPointAttrs;\n if (isValidNumber(position.x) && isValidNumber(position.y)) {\n return true;\n }\n return false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/marker/point.ts"],"names":[],"mappings":"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","file":"point.js","sourcesContent":["import type {\n IGroup,\n IImage,\n INode,\n ISymbol,\n IImageGraphicAttribute,\n IRichText,\n IRichTextGraphicAttribute,\n ILine,\n ILineGraphicAttribute\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber, merge } from '@visactor/vutils';\nimport { ArcSegment, Segment } from '../segment';\nimport type { TagAttributes } from '../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_POINT_TEXT_STYLE_MAP, DEFAULT_MARK_POINT_THEME, FUZZY_EQUAL_DELTA } from './config';\nimport type { IItemContent, IItemLine, MarkPointAnimationType, MarkPointAttrs, MarkerAnimationState } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport { IMarkPointItemPosition } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\nimport { loadMarkPointComponent } from './register';\nimport { computeOffsetForlimit } from '../util/limit-shape';\nimport { DEFAULT_STATES } from '../constant';\nimport { DefaultExitMarkerAnimation, DefaultUpdateMarkPointAnimation, markPointAnimate } from './animate/animate';\nimport {\n deltaXYToAngle,\n fuzzyEqualNumber,\n getTextAlignAttrOfVerticalDir,\n isPostiveXAxis,\n removeRepeatPoint\n} from '../util';\n\nloadMarkPointComponent();\n\nexport function registerMarkPointAnimate() {\n MarkPoint._animate = markPointAnimate;\n}\n\nexport class MarkPoint extends Marker<MarkPointAttrs, MarkPointAnimationType> {\n name = 'markPoint';\n static defaultAttributes = DEFAULT_MARK_POINT_THEME;\n\n /** animate */\n defaultUpdateAnimation = DefaultUpdateMarkPointAnimation;\n defaultExitAnimation = DefaultExitMarkerAnimation;\n protected markerAnimate(state: MarkerAnimationState): void {\n if (MarkPoint._animate && this._animationConfig) {\n MarkPoint._animate([this._line, this._decorativeLine], this._item, this._animationConfig, state);\n }\n }\n\n private _item!: ISymbol | Tag | IImage | IRichText;\n private _targetItem!: ISymbol;\n\n private _line?: Segment;\n\n private _decorativeLine!: ILine;\n private _isArcLine: boolean = false; // 用于区分 arc-segment 和 segment\n private _isStraightLine: boolean = false; // 用于区分绘制 纯直线 和 折线,(type-do/op/po时, 如果偏移量很小, 视觉无法分辨, 也需要绘制成直线)\n\n constructor(attributes: MarkPointAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkPoint.defaultAttributes, attributes));\n }\n\n protected setLabelPos() {\n //do nothing\n }\n\n protected getTextAlignAttr(\n autoRotate: boolean,\n offsetX: number,\n offsetY: number,\n lineEndAngle: number,\n itemPosition: keyof typeof IMarkPointItemPosition\n ) {\n // 垂直方向例外\n if (\n fuzzyEqualNumber(Math.abs(lineEndAngle), Math.PI / 2, FUZZY_EQUAL_DELTA) ||\n fuzzyEqualNumber(Math.abs(lineEndAngle), (Math.PI * 3) / 2, FUZZY_EQUAL_DELTA)\n ) {\n return getTextAlignAttrOfVerticalDir(autoRotate, lineEndAngle, itemPosition);\n }\n\n if (isPostiveXAxis(lineEndAngle)) {\n return DEFAULT_MARK_POINT_TEXT_STYLE_MAP.postiveXAxis[itemPosition];\n }\n return DEFAULT_MARK_POINT_TEXT_STYLE_MAP.negativeXAxis[itemPosition];\n }\n\n protected setItemAttributes(\n item: ISymbol | Tag | IImage | IRichText,\n itemContent: IItemContent,\n newPosition: Point,\n newItemPosition: Point,\n itemType: 'symbol' | 'text' | 'image' | 'richText' | 'custom'\n ) {\n if (!item) {\n return;\n }\n const {\n autoRotate = true,\n refX = 0,\n refY = 0,\n refAngle = 0,\n textStyle = {},\n richTextStyle = {},\n imageStyle = {},\n position: positionType = IMarkPointItemPosition.middle\n } = itemContent;\n const { state } = this.attribute as MarkPointAttrs;\n const lineEndAngle = this._line?.getEndAngle() || 0;\n const itemRefOffsetX = refX * Math.cos(lineEndAngle) + refY * Math.cos(lineEndAngle - Math.PI / 2);\n const itemRefOffsetY = refX * Math.sin(lineEndAngle) + refY * Math.sin(lineEndAngle - Math.PI / 2);\n if (itemType === 'text') {\n const offsetX = newItemPosition.x - newPosition.x;\n const offsetY = newItemPosition.y - newPosition.y;\n item.setAttributes({\n ...(textStyle as TagAttributes),\n textStyle: {\n ...this.getTextAlignAttr(\n autoRotate,\n offsetX,\n offsetY,\n lineEndAngle,\n itemContent.position ?? ('end' as keyof typeof IMarkPointItemPosition)\n ),\n ...textStyle.textStyle\n },\n state: {\n panel: merge({}, DEFAULT_STATES, state?.textBackground),\n text: merge({}, DEFAULT_STATES, state?.text)\n }\n } as any);\n } else if (itemType === 'richText') {\n item.setAttributes({\n dx: this.getItemDx(item, positionType, richTextStyle) + (richTextStyle.dx || 0),\n dy: this.getItemDy(item, positionType, richTextStyle) + (richTextStyle.dy || 0)\n });\n item.states = merge({}, DEFAULT_STATES, state?.richText);\n } else if (itemType === 'image') {\n item.setAttributes({\n dx: this.getItemDx(item, positionType, imageStyle) + (imageStyle.dx || 0),\n dy: this.getItemDy(item, positionType, imageStyle) + (imageStyle.dy || 0)\n });\n item.states = merge({}, DEFAULT_STATES, state?.image);\n }\n\n const itemAngle = isPostiveXAxis(lineEndAngle) ? lineEndAngle : lineEndAngle - Math.PI;\n\n item.setAttributes({\n x: newItemPosition.x + (itemRefOffsetX || 0),\n y: newItemPosition.y + (itemRefOffsetY || 0),\n angle: autoRotate && itemAngle + refAngle\n });\n }\n\n protected getItemDx(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const width = (item as IGroup)?.AABBBounds?.width() ?? (style?.width || 0);\n if (position.includes('inside')) {\n return -width;\n }\n if (position === 'insideTop') {\n return 0;\n }\n return 0;\n }\n\n protected getItemDy(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const height = (item as IGroup)?.AABBBounds?.height() ?? (style?.height || 0);\n if (position.includes('top') || position.includes('Top')) {\n return -height;\n }\n if (position.includes('middle') || position.includes('Middle')) {\n return -height / 2;\n }\n return 0;\n }\n\n protected initItem(itemContent: IItemContent, newPosition: Point, newItemPosition: Point) {\n const { state } = this.attribute as MarkPointAttrs;\n const { type = 'text', symbolStyle, richTextStyle, imageStyle, renderCustomCallback } = itemContent;\n let item: ISymbol | Tag | IImage | IRichText | IGroup;\n if (type === 'symbol') {\n item = graphicCreator.symbol({\n ...newItemPosition,\n ...symbolStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.symbol);\n } else if (type === 'text') {\n item = new Tag({\n ...newItemPosition,\n state: {\n panel: merge({}, DEFAULT_STATES, state?.textBackground),\n text: merge({}, DEFAULT_STATES, state?.text)\n }\n });\n } else if (type === 'richText') {\n item = graphicCreator.richtext({\n ...newItemPosition,\n ...richTextStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.richText);\n } else if (type === 'image') {\n item = graphicCreator.image({\n ...newItemPosition,\n ...imageStyle\n });\n item.states = merge({}, DEFAULT_STATES, state?.image);\n } else if (type === 'custom' && renderCustomCallback) {\n item = renderCustomCallback();\n item.states = merge({}, DEFAULT_STATES, state?.customMark);\n }\n item.name = `mark-point-${type}`;\n this.setItemAttributes(item, itemContent, newPosition, newItemPosition, type);\n return item;\n }\n\n protected getItemLineAttr(itemLine: IItemLine, newPosition: Point, newItemPosition: Point) {\n let points: Point[] = [];\n let center = { x: 0, y: 0 };\n let radius = 0;\n let startAngle = 0;\n let endAngle = 0;\n const { type = 'type-s', arcRatio = 0.8 } = itemLine;\n // confine之后位置会变化,所以这里需要重新check是否是直线\n const itemOffsetX = newItemPosition.x - newPosition.x;\n const itemOffsetY = newItemPosition.y - newPosition.y;\n this._isStraightLine =\n fuzzyEqualNumber(itemOffsetX, 0, FUZZY_EQUAL_DELTA) || fuzzyEqualNumber(itemOffsetY, 0, FUZZY_EQUAL_DELTA);\n if (this._isArcLine) {\n const { x: x1, y: y1 } = newPosition;\n const { x: x2, y: y2 } = newItemPosition;\n\n // 得到中点和斜率\n const x0 = (x1 + x2) / 2;\n const y0 = (y1 + y2) / 2;\n // 得到垂直平分线表达式\n const k = y1 === y2 ? 0 : -(x1 - x2) / (y1 - y2); // 垂直平分线斜率 * 两点连线斜率 = -1\n const line = (x: number) => k * (x - x0) + y0;\n // 在垂直平分线上找圆心\n const direction = y2 > y1 ? -1 : 1;\n\n const deltaX = arcRatio * direction * x0; // 数值决定曲率, 符号决定法向, 可通过配置自定义\n const centerX = x0 + deltaX;\n const centerY = line(centerX);\n startAngle = deltaXYToAngle(y1 - centerY, x1 - centerX);\n endAngle = deltaXYToAngle(y2 - centerY, x2 - centerX);\n center = { x: centerX, y: centerY };\n\n if (arcRatio > 0) {\n // 此时绘制凹圆弧, 顺时针绘制\n // 根据arc图元绘制逻辑, 需要保证endAngle > startAngle, 才能顺时针绘制\n if (endAngle < startAngle) {\n endAngle += Math.PI * 2;\n }\n } else {\n // 此时绘制凸圆弧, 顺时针绘制\n // 根据arc图元绘制逻辑, 需要保证endAngle < startAngle, 才能逆时针绘制\n if (startAngle < endAngle) {\n startAngle += Math.PI * 2;\n }\n }\n\n radius = Math.sqrt((centerX - x1) * (centerX - x1) + (centerY - y1) * (centerY - y1));\n } else if (type === 'type-do' && !this._isStraightLine) {\n points = [\n newPosition,\n {\n x: (newPosition.x + newItemPosition.x) / 2,\n y: newItemPosition.y\n },\n newItemPosition\n ];\n } else if (type === 'type-po' && !this._isStraightLine) {\n points = [\n newPosition,\n {\n x: newItemPosition.x,\n y: newPosition.y\n },\n newItemPosition\n ];\n } else if (type === 'type-op' && !this._isStraightLine) {\n points = [\n newPosition,\n {\n x: newPosition.x,\n y: newItemPosition.y\n },\n newItemPosition\n ];\n } else {\n points = [newPosition, newItemPosition];\n }\n // 插值的过程中可能会产生重复的点, 在此去除\n points = removeRepeatPoint(points);\n return {\n points,\n center,\n radius,\n startAngle,\n endAngle\n };\n }\n\n protected reDrawLine(itemLine: IItemLine, pointsAttr: any) {\n this._line.release();\n const { startSymbol, endSymbol, lineStyle, type = 'type-s' } = itemLine;\n const { state } = this.attribute as MarkPointAttrs;\n const lineConstructor = this._isArcLine ? ArcSegment : Segment;\n this._container.removeChild(this._line);\n this._line = new lineConstructor({\n ...pointsAttr,\n pickable: false,\n startSymbol,\n endSymbol,\n lineStyle,\n visible: itemLine.visible,\n state: {\n line: merge({}, DEFAULT_STATES, state?.line),\n startSymbol: merge({}, DEFAULT_STATES, state?.lineStartSymbol),\n endSymbol: merge({}, DEFAULT_STATES, state?.lineEndSymbol)\n }\n } as any);\n this._container.add(this._line as unknown as INode);\n }\n\n protected setItemLineAttr(itemLine: IItemLine, newPosition: Point, newItemPosition: Point) {\n if (this._line) {\n const { startSymbol, endSymbol, lineStyle, type = 'type-s' } = itemLine;\n const { state } = this.attribute as MarkPointAttrs;\n const pointsAttr = this.getItemLineAttr(itemLine, newPosition, newItemPosition);\n if ((this._isArcLine && this._line.key === 'arc-segment') || (!this._isArcLine && this._line.key === 'segment')) {\n this._line.setAttributes({\n ...pointsAttr,\n startSymbol,\n endSymbol,\n lineStyle,\n visible: itemLine.visible,\n state: {\n line: merge({}, DEFAULT_STATES, state?.line),\n startSymbol: merge({}, DEFAULT_STATES, state?.lineStartSymbol),\n endSymbol: merge({}, DEFAULT_STATES, state?.lineEndSymbol)\n }\n });\n } else {\n this.reDrawLine(itemLine, pointsAttr);\n }\n }\n }\n\n protected getDecorativeLineAttr(itemLine: IItemLine) {\n const decorativeLength = itemLine?.decorativeLine?.length || 10;\n const itemAngle = this._line.getEndAngle() || 0;\n\n const startPointOffsetX = (decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const startPointOffsetY = (decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n const endPointOffsetX = (-decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const endPointOffsetY = (-decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n return {\n startPointOffsetX,\n startPointOffsetY,\n endPointOffsetX,\n endPointOffsetY\n };\n }\n\n protected setDecorativeLineAttr(itemLine: IItemLine, newItemPosition: Point, visible: boolean) {\n if (this._decorativeLine) {\n const { lineStyle } = itemLine;\n const { startPointOffsetX, startPointOffsetY, endPointOffsetX, endPointOffsetY } =\n this.getDecorativeLineAttr(itemLine);\n this._decorativeLine.setAttributes({\n points: [\n {\n x: newItemPosition.x + startPointOffsetX,\n y: newItemPosition.y + startPointOffsetY\n },\n {\n x: newItemPosition.x + endPointOffsetX,\n y: newItemPosition.y + endPointOffsetY\n }\n ] as IPointLike[],\n ...(lineStyle as Partial<ILineGraphicAttribute>),\n visible\n });\n this._decorativeLine.states = merge({}, DEFAULT_STATES, this.attribute.state?.line);\n }\n }\n\n protected setTargetItemAttributes(targetItem: any, position: IPointLike) {\n if (this._targetItem) {\n this._targetItem.setAttributes({\n x: position.x,\n y: position.y,\n visible: targetItem.visible ?? false,\n size: targetItem.size,\n ...targetItem.style\n });\n this._targetItem.states = merge({}, DEFAULT_STATES, this.attribute.state?.targetItem);\n }\n }\n\n protected setAllOfItemsAttr(newPosition: Point, newItemPosition: Point) {\n const { position, itemLine = {}, itemContent = {}, limitRect, targetSymbol } = this.attribute as MarkPointAttrs;\n const { type = 'text', confine } = itemContent;\n if (limitRect && confine) {\n const { x, y, width, height } = limitRect;\n const { dx, dy } = computeOffsetForlimit(this._item, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n newItemPosition.x = newItemPosition.x + dx;\n newItemPosition.y = newItemPosition.y + dy;\n }\n this.setTargetItemAttributes(targetSymbol, position);\n this.setItemLineAttr(itemLine, newPosition, newItemPosition);\n this.setItemAttributes(this._item, itemContent, newPosition, newItemPosition, type);\n this.setDecorativeLineAttr(itemLine, newItemPosition, itemLine.decorativeLine?.visible);\n }\n\n protected computeNewPositionAfterTargetItem(position: Point) {\n const { itemContent = {}, targetSymbol } = this.attribute as MarkPointAttrs;\n const { offsetX: itemContentOffsetX = 0, offsetY: itemContentOffsetY = 0 } = itemContent;\n const {\n offset: targetSymbolOffset = 0,\n style: targetSymbolStyle,\n visible: targetItemvisible = false,\n size: targetSymbolSize\n } = targetSymbol;\n const targetSize = targetItemvisible ? targetSymbolStyle.size ?? targetSymbolSize ?? 20 : 0;\n const targetOffsetAngle = deltaXYToAngle(itemContentOffsetY, itemContentOffsetX);\n const newPosition: Point = {\n x: position.x + (targetSize / 2 + targetSymbolOffset) * Math.cos(targetOffsetAngle),\n y: position.y + (targetSize / 2 + targetSymbolOffset) * Math.sin(targetOffsetAngle)\n };\n const newItemPosition: Point = {\n x: position.x + (targetSize / 2 + targetSymbolOffset) * Math.cos(targetOffsetAngle) + itemContentOffsetX, // 偏移量 = targetItem size + targetItem space + 用户配置offset\n y: position.y + (targetSize / 2 + targetSymbolOffset) * Math.sin(targetOffsetAngle) + itemContentOffsetY // 偏移量 = targetItem size + targetItem space + 用户配置offset\n };\n\n return { newPosition, newItemPosition };\n }\n\n protected initMarker(container: IGroup) {\n const { position, itemContent = {}, itemLine } = this.attribute as MarkPointAttrs;\n const { type: itemLineType = 'type-s', arcRatio = 0.8 } = itemLine;\n const { offsetX = 0, offsetY = 0 } = itemContent;\n\n this._isStraightLine =\n fuzzyEqualNumber(offsetX, 0, FUZZY_EQUAL_DELTA) || fuzzyEqualNumber(offsetY, 0, FUZZY_EQUAL_DELTA);\n this._isArcLine = itemLineType === 'type-arc' && arcRatio !== 0 && !this._isStraightLine;\n\n /** 根据targetItem计算新的弧线起点 */\n const { newPosition, newItemPosition } = this.computeNewPositionAfterTargetItem(position);\n\n /** itemline - 连接线 */\n\n const lineConstructor = this._isArcLine ? ArcSegment : Segment;\n const line = new lineConstructor({\n points: [],\n pickable: false, // 组件容器本身不参与拾取\n center: { x: 0, y: 0 },\n radius: 0,\n startAngle: 0,\n endAngle: 0\n });\n\n line.name = 'mark-point-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n /** decorativeLine - 装饰线 */\n const decorativeLine = graphicCreator.line({\n points: []\n });\n decorativeLine.name = 'mark-point-decorativeLine';\n this._decorativeLine = decorativeLine;\n container.add(decorativeLine as unknown as INode);\n\n /** targetItem - 被标注的点上需要放置的内容 */\n const targetItem = graphicCreator.symbol({});\n targetItem.name = 'mark-point-targetItem';\n this._targetItem = targetItem;\n container.add(this._targetItem);\n\n /** item - 标注的内容 */\n // 为了强制将itemContent限制在limitRect内, 所以需要先绘制item, 然后根据item bounds 动态调整位置\n const item = this.initItem(itemContent as any, newPosition, newItemPosition);\n this._item = item;\n container.add(item as unknown as INode);\n\n /** 全部属性确定后, 给每个元素 set attr */\n // 由于itemLine的指向也要变化, 所以需要对所有的内容进行渲染\n this.setAllOfItemsAttr(newPosition, newItemPosition);\n }\n\n protected updateMarker() {\n const { position, itemContent = {}, itemLine } = this.attribute as MarkPointAttrs;\n const { type = 'text' } = itemContent;\n const { type: itemLineType = 'type-s', arcRatio = 0.8 } = itemLine;\n const { offsetX = 0, offsetY = 0 } = itemContent;\n\n this._isStraightLine =\n fuzzyEqualNumber(offsetX, 0, FUZZY_EQUAL_DELTA) || fuzzyEqualNumber(offsetY, 0, FUZZY_EQUAL_DELTA);\n const isArcLine = itemLineType === 'type-arc' && arcRatio !== 0 && !this._isStraightLine;\n /** 根据targetItem计算新的弧线起点 */\n const { newPosition, newItemPosition } = this.computeNewPositionAfterTargetItem(position);\n\n if (isArcLine !== this._isArcLine) {\n // 如果曲线和直线相互切换了, 则需要重新绘制line\n this._isArcLine = isArcLine;\n this.reDrawLine(itemLine, {\n points: [{ x: 0, y: 0 }],\n pickable: false,\n center: { x: 0, y: 0 },\n radius: 0,\n startAngle: 0,\n endAngle: 0\n });\n } else {\n this._isArcLine = isArcLine;\n }\n\n // 为了强制将itemContent限制在limitRect内, 所以需要先绘制item, 然后根据item bounds 动态调整位置\n this.setItemAttributes(this._item, itemContent, newPosition, newItemPosition, type);\n // 由于itemLine的指向也要变化, 所以需要对所有的内容进行渲染\n this.setAllOfItemsAttr(newPosition, newItemPosition);\n }\n\n protected isValidPoints() {\n const { position } = this.attribute as MarkPointAttrs;\n if (isValidNumber(position.x) && isValidNumber(position.y)) {\n return true;\n }\n return false;\n }\n}\n"]}
|
package/cjs/tag/tag.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type IRect, type IText, type IRichText } from '@visactor/vrender-core';
|
|
2
2
|
import { AbstractComponent } from '../core/base';
|
|
3
3
|
import type { ComponentOptions } from '../interface';
|
|
4
4
|
import type { TagAttributes } from './type';
|
package/cjs/tag/tag.js
CHANGED
|
@@ -14,7 +14,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
14
14
|
value: !0
|
|
15
15
|
}), exports.Tag = void 0;
|
|
16
16
|
|
|
17
|
-
const vutils_1 = require("@visactor/vutils"), base_1 = require("../core/base"), util_1 = require("../util"), register_1 = require("./register");
|
|
17
|
+
const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), base_1 = require("../core/base"), util_1 = require("../util"), register_1 = require("./register");
|
|
18
18
|
|
|
19
19
|
(0, register_1.loadTagComponent)();
|
|
20
20
|
|
|
@@ -76,7 +76,11 @@ class Tag extends base_1.AbstractComponent {
|
|
|
76
76
|
width: textShape.AABBBounds.width(),
|
|
77
77
|
height: textShape.AABBBounds.height()
|
|
78
78
|
}), "rect");
|
|
79
|
-
(0, vutils_1.isEmpty)(null == state ? void 0 : state.panel) || (bgRect.states = state.panel),
|
|
79
|
+
if ((0, vutils_1.isEmpty)(null == state ? void 0 : state.panel) || (bgRect.states = state.panel),
|
|
80
|
+
backgroundStyle.customShape) {
|
|
81
|
+
const customShape = backgroundStyle.customShape;
|
|
82
|
+
bgRect.pathProxy = attrs => customShape(textShape.attribute, attrs, new vrender_core_1.CustomPath2D);
|
|
83
|
+
}
|
|
80
84
|
this._bgRect = bgRect;
|
|
81
85
|
}
|
|
82
86
|
} else {
|
|
@@ -153,7 +157,11 @@ class Tag extends base_1.AbstractComponent {
|
|
|
153
157
|
width: tagWidth,
|
|
154
158
|
height: tagHeight
|
|
155
159
|
}), "rect");
|
|
156
|
-
(0, vutils_1.isEmpty)(null == state ? void 0 : state.panel) || (bgRect.states = state.panel),
|
|
160
|
+
if ((0, vutils_1.isEmpty)(null == state ? void 0 : state.panel) || (bgRect.states = state.panel),
|
|
161
|
+
backgroundStyle.customShape) {
|
|
162
|
+
const customShape = backgroundStyle.customShape;
|
|
163
|
+
bgRect.pathProxy = attrs => customShape(textShape.attribute, attrs, new vrender_core_1.CustomPath2D);
|
|
164
|
+
}
|
|
157
165
|
this._bgRect = bgRect;
|
|
158
166
|
}
|
|
159
167
|
}
|
package/cjs/tag/tag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tag/tag.ts"],"names":[],"mappings":"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","file":"tag.js","sourcesContent":["/**\n * @description 标签组件\n */\nimport type {\n IGroup,\n IRect,\n ISymbol,\n IText,\n ITextAttribute,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute,\n IRichText\n} from '@visactor/vrender-core';\nimport { isBoolean, isEmpty, isNil, isNumber, isObject, isValid, merge, normalizePadding } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport { isRichText, measureTextSize, richTextAttributeTransform } from '../util';\nimport type { BackgroundAttributes, ComponentOptions } from '../interface';\nimport type { TagAttributes, TagShapeAttributes } from './type';\nimport { loadTagComponent } from './register';\nimport type { TextContent } from '../core/type';\n\nloadTagComponent();\nexport class Tag extends AbstractComponent<Required<TagAttributes>> {\n name = 'tag';\n\n private _bgRect!: IRect;\n private _textShape!: IText | IRichText;\n\n getBgRect() {\n return this._bgRect;\n }\n\n getTextShape() {\n return this._textShape;\n }\n\n static defaultAttributes: Partial<TagAttributes> = {\n visible: true,\n textStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n space: 4,\n padding: 4,\n // @ts-ignore\n shape: {\n fill: '#000'\n }\n };\n\n constructor(attributes: TagAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Tag.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n text = '',\n textStyle = {} as ITextGraphicAttribute | IRichTextGraphicAttribute,\n shape = {} as TagShapeAttributes,\n panel = {} as BackgroundAttributes,\n space = 4,\n minWidth,\n maxWidth,\n padding = 4,\n visible,\n state,\n type,\n textAlwaysCenter,\n containerTextAlign\n } = this.attribute as TagAttributes;\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('tag-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n let symbol;\n let tagWidth = parsedPadding[1] + parsedPadding[3];\n let tagHeight = parsedPadding[0] + parsedPadding[2];\n let textX = 0;\n let symbolPlaceWidth = 0;\n const { visible: shapeVisible, ...shapeStyle } = shape;\n if (isBoolean(shapeVisible)) {\n const size = shapeStyle?.size || 10;\n const maxSize = (isNumber(size) ? size : Math.max(size[0], size[1])) as number;\n\n symbol = group.createOrUpdateChild(\n 'tag-shape',\n {\n symbolType: 'circle',\n size,\n strokeBoundsBuffer: 0,\n ...shapeStyle,\n visible: shapeVisible,\n x: maxSize / 2,\n y: maxSize / 2\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.shape)) {\n symbol.states = state.shape;\n }\n\n if (shapeVisible) {\n symbolPlaceWidth = maxSize + space;\n }\n }\n\n tagWidth += symbolPlaceWidth;\n textX += symbolPlaceWidth;\n\n let textShape;\n const isRich = isRichText({ text } as TextContent) || type === 'rich';\n if (isRich) {\n const richTextAttrs = {\n ...richTextAttributeTransform({ type, text, ...textStyle } as any),\n ...(textStyle as IRichTextGraphicAttribute),\n visible: isValid(text) && visible !== false,\n x: textX,\n y: 0\n };\n textShape = group.createOrUpdateChild('tag-text', richTextAttrs, 'richtext') as IRichText;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x: textShape.AABBBounds.x1,\n y: textShape.AABBBounds.y1,\n width: textShape.AABBBounds.width(),\n height: textShape.AABBBounds.height()\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n this._bgRect = bgRect;\n }\n } else {\n const textAttrs = {\n text: isObject(text) && 'type' in text && text.type === 'text' ? text.text : text,\n visible: isValid(text) && visible !== false,\n lineHeight: (textStyle as ITextGraphicAttribute)?.fontSize,\n ...(textStyle as ITextGraphicAttribute),\n x: textX,\n y: 0\n };\n if (isNil(textAttrs.lineHeight)) {\n textAttrs.lineHeight = (textStyle as ITextGraphicAttribute).fontSize;\n }\n textShape = group.createOrUpdateChild('tag-text', textAttrs as ITextGraphicAttribute, 'text') as IText;\n if (!isEmpty(state?.text)) {\n textShape.states = state.text;\n }\n\n // 因为文本可能发生旋转,所以需要使用 measureTextSize 方法\n const textBounds = measureTextSize(textAttrs.text as string, textStyle, this.stage?.getTheme()?.text);\n const textWidth = textBounds.width;\n const textHeight = textBounds.height;\n tagWidth += textWidth;\n const size = shape.size ?? 10;\n const maxSize = (isNumber(size) ? size : Math.max(size[0], size[1])) as number;\n tagHeight += Math.max(textHeight, shape.visible ? maxSize : 0);\n\n const { textAlign, textBaseline } = textStyle as ITextAttribute;\n\n if (isValid(minWidth) || isValid(maxWidth)) {\n if (isValid(minWidth) && tagWidth < minWidth) {\n tagWidth = minWidth;\n }\n if (isValid(maxWidth) && tagWidth > maxWidth) {\n tagWidth = maxWidth;\n textShape.setAttribute('maxLineWidth', maxWidth - parsedPadding[1] - parsedPadding[2]);\n }\n }\n\n let x = 0;\n let y = 0;\n let flag = 0;\n if (textAlign === 'left' || textAlign === 'start') {\n flag = 1;\n } else if (textAlign === 'right' || textAlign === 'end') {\n flag = -1;\n } else if (textAlign === 'center') {\n flag = 0;\n }\n if (!flag) {\n x -= tagWidth / 2;\n if (symbol) {\n symbol.setAttribute('x', (symbol.attribute.x || 0) - textWidth / 2);\n }\n\n group.setAttribute('x', -symbolPlaceWidth / 2);\n } else if (flag < 0) {\n x -= tagWidth;\n if (symbol) {\n symbol.setAttribute('x', (symbol.attribute.x || 0) - textWidth);\n }\n\n group.setAttribute('x', -parsedPadding[1] - symbolPlaceWidth);\n } else if (flag > 0) {\n group.setAttribute('x', parsedPadding[3]);\n }\n\n const shouldCenter = containerTextAlign ? containerTextAlign === 'center' : textAlwaysCenter;\n const shouldRight = containerTextAlign === 'right' || containerTextAlign === 'end';\n const shouldLeft = containerTextAlign === 'left' || containerTextAlign === 'start';\n\n if (shouldCenter && flag) {\n // 文本容器内居中\n // 剔除padding后的内宽度\n const containerWidth = tagWidth - parsedPadding[1] - parsedPadding[3];\n const tsWidth = textWidth + symbolPlaceWidth;\n const textX =\n flag === 1\n ? (containerWidth - tsWidth) / 2 + symbolPlaceWidth + textWidth / 2\n : parsedPadding[0] + symbolPlaceWidth - (tagWidth / 2 + tsWidth / 2 - symbolPlaceWidth) + textWidth / 2;\n\n textShape.setAttributes({\n x: textX,\n textAlign: 'center'\n });\n if (symbol) {\n const symbolX = textX - textWidth / 2 - symbolPlaceWidth + maxSize / 2;\n symbol.setAttributes({\n x: symbolX\n });\n }\n }\n\n if (shouldLeft && flag !== 1) {\n // 文本容器内朝左展示\n const containerWidth = tagWidth - parsedPadding[1] - parsedPadding[3];\n const offset =\n flag === 0\n ? -containerWidth / 2 + symbolPlaceWidth / 2\n : -tagWidth + parsedPadding[3] + parsedPadding[1] + symbolPlaceWidth;\n const textX = offset + symbolPlaceWidth;\n\n textShape.setAttributes({\n x: textX,\n textAlign: 'left'\n });\n\n if (symbol) {\n const symbolX = offset + maxSize / 2;\n symbol.setAttributes({\n x: symbolX\n });\n }\n }\n\n if (shouldRight && flag !== -1) {\n // 文本容器内朝右展示\n const containerWidth = tagWidth - parsedPadding[1] - parsedPadding[3];\n const textX = flag === 0 ? containerWidth / 2 + symbolPlaceWidth / 2 : containerWidth;\n\n textShape.setAttributes({\n x: textX,\n textAlign: 'right'\n });\n if (symbol) {\n const symbolX = textX - textWidth - symbolPlaceWidth + maxSize / 2;\n symbol.setAttributes({\n x: symbolX\n });\n }\n }\n\n if (textBaseline === 'middle') {\n y -= tagHeight / 2;\n if (symbol) {\n symbol.setAttribute('y', 0);\n }\n } else if (textBaseline === 'bottom') {\n y -= tagHeight;\n if (symbol) {\n symbol.setAttribute('y', -textHeight / 2);\n }\n\n group.setAttribute('y', -parsedPadding[2]);\n } else if (textBaseline === 'top') {\n group.setAttribute('y', parsedPadding[0]);\n if (symbol) {\n symbol.setAttribute('y', textHeight / 2);\n }\n }\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x,\n y,\n width: tagWidth,\n height: tagHeight\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n this._bgRect = bgRect;\n }\n }\n this._textShape = textShape;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/tag/tag.ts"],"names":[],"mappings":"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","file":"tag.js","sourcesContent":["/**\n * @description 标签组件\n */\nimport {\n type IGroup,\n type IRect,\n type ISymbol,\n type IText,\n type ITextAttribute,\n type ITextGraphicAttribute,\n type IRichTextGraphicAttribute,\n type IRichText,\n type IGraphicAttribute,\n CustomPath2D\n} from '@visactor/vrender-core';\nimport { isBoolean, isEmpty, isNil, isNumber, isObject, isValid, merge, normalizePadding } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport { isRichText, measureTextSize, richTextAttributeTransform } from '../util';\nimport type { BackgroundAttributes, ComponentOptions } from '../interface';\nimport type { TagAttributes, TagShapeAttributes } from './type';\nimport { loadTagComponent } from './register';\nimport type { TextContent } from '../core/type';\n\nloadTagComponent();\nexport class Tag extends AbstractComponent<Required<TagAttributes>> {\n name = 'tag';\n\n private _bgRect!: IRect;\n private _textShape!: IText | IRichText;\n\n getBgRect() {\n return this._bgRect;\n }\n\n getTextShape() {\n return this._textShape;\n }\n\n static defaultAttributes: Partial<TagAttributes> = {\n visible: true,\n textStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n space: 4,\n padding: 4,\n // @ts-ignore\n shape: {\n fill: '#000'\n }\n };\n\n constructor(attributes: TagAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Tag.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n text = '',\n textStyle = {} as ITextGraphicAttribute | IRichTextGraphicAttribute,\n shape = {} as TagShapeAttributes,\n panel = {} as BackgroundAttributes,\n space = 4,\n minWidth,\n maxWidth,\n padding = 4,\n visible,\n state,\n type,\n textAlwaysCenter,\n containerTextAlign\n } = this.attribute as TagAttributes;\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('tag-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n let symbol;\n let tagWidth = parsedPadding[1] + parsedPadding[3];\n let tagHeight = parsedPadding[0] + parsedPadding[2];\n let textX = 0;\n let symbolPlaceWidth = 0;\n const { visible: shapeVisible, ...shapeStyle } = shape;\n if (isBoolean(shapeVisible)) {\n const size = shapeStyle?.size || 10;\n const maxSize = (isNumber(size) ? size : Math.max(size[0], size[1])) as number;\n\n symbol = group.createOrUpdateChild(\n 'tag-shape',\n {\n symbolType: 'circle',\n size,\n strokeBoundsBuffer: 0,\n ...shapeStyle,\n visible: shapeVisible,\n x: maxSize / 2,\n y: maxSize / 2\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.shape)) {\n symbol.states = state.shape;\n }\n\n if (shapeVisible) {\n symbolPlaceWidth = maxSize + space;\n }\n }\n\n tagWidth += symbolPlaceWidth;\n textX += symbolPlaceWidth;\n\n let textShape: IRichText | IText;\n const isRich = isRichText({ text } as TextContent) || type === 'rich';\n if (isRich) {\n const richTextAttrs = {\n ...richTextAttributeTransform({ type, text, ...textStyle } as any),\n ...(textStyle as IRichTextGraphicAttribute),\n visible: isValid(text) && visible !== false,\n x: textX,\n y: 0\n };\n textShape = group.createOrUpdateChild('tag-text', richTextAttrs, 'richtext') as IRichText;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x: textShape.AABBBounds.x1,\n y: textShape.AABBBounds.y1,\n width: textShape.AABBBounds.width(),\n height: textShape.AABBBounds.height()\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n if (backgroundStyle.customShape) {\n const customShape = backgroundStyle.customShape;\n bgRect.pathProxy = (attrs: Partial<IGraphicAttribute>) => {\n return customShape(textShape.attribute, attrs, new CustomPath2D());\n };\n }\n this._bgRect = bgRect;\n }\n } else {\n const textAttrs = {\n text: isObject(text) && 'type' in text && text.type === 'text' ? text.text : text,\n visible: isValid(text) && visible !== false,\n lineHeight: (textStyle as ITextGraphicAttribute)?.fontSize,\n ...(textStyle as ITextGraphicAttribute),\n x: textX,\n y: 0\n };\n if (isNil(textAttrs.lineHeight)) {\n textAttrs.lineHeight = (textStyle as ITextGraphicAttribute).fontSize;\n }\n textShape = group.createOrUpdateChild('tag-text', textAttrs as ITextGraphicAttribute, 'text') as IText;\n if (!isEmpty(state?.text)) {\n textShape.states = state.text;\n }\n\n // 因为文本可能发生旋转,所以需要使用 measureTextSize 方法\n const textBounds = measureTextSize(textAttrs.text as string, textStyle, this.stage?.getTheme()?.text);\n const textWidth = textBounds.width;\n const textHeight = textBounds.height;\n tagWidth += textWidth;\n const size = shape.size ?? 10;\n const maxSize = (isNumber(size) ? size : Math.max(size[0], size[1])) as number;\n tagHeight += Math.max(textHeight, shape.visible ? maxSize : 0);\n\n const { textAlign, textBaseline } = textStyle as ITextAttribute;\n\n if (isValid(minWidth) || isValid(maxWidth)) {\n if (isValid(minWidth) && tagWidth < minWidth) {\n tagWidth = minWidth;\n }\n if (isValid(maxWidth) && tagWidth > maxWidth) {\n tagWidth = maxWidth;\n textShape.setAttribute('maxLineWidth', maxWidth - parsedPadding[1] - parsedPadding[2]);\n }\n }\n\n let x = 0;\n let y = 0;\n let flag = 0;\n if (textAlign === 'left' || textAlign === 'start') {\n flag = 1;\n } else if (textAlign === 'right' || textAlign === 'end') {\n flag = -1;\n } else if (textAlign === 'center') {\n flag = 0;\n }\n if (!flag) {\n x -= tagWidth / 2;\n if (symbol) {\n symbol.setAttribute('x', (symbol.attribute.x || 0) - textWidth / 2);\n }\n\n group.setAttribute('x', -symbolPlaceWidth / 2);\n } else if (flag < 0) {\n x -= tagWidth;\n if (symbol) {\n symbol.setAttribute('x', (symbol.attribute.x || 0) - textWidth);\n }\n\n group.setAttribute('x', -parsedPadding[1] - symbolPlaceWidth);\n } else if (flag > 0) {\n group.setAttribute('x', parsedPadding[3]);\n }\n\n const shouldCenter = containerTextAlign ? containerTextAlign === 'center' : textAlwaysCenter;\n const shouldRight = containerTextAlign === 'right' || containerTextAlign === 'end';\n const shouldLeft = containerTextAlign === 'left' || containerTextAlign === 'start';\n\n if (shouldCenter && flag) {\n // 文本容器内居中\n // 剔除padding后的内宽度\n const containerWidth = tagWidth - parsedPadding[1] - parsedPadding[3];\n const tsWidth = textWidth + symbolPlaceWidth;\n const textX =\n flag === 1\n ? (containerWidth - tsWidth) / 2 + symbolPlaceWidth + textWidth / 2\n : parsedPadding[0] + symbolPlaceWidth - (tagWidth / 2 + tsWidth / 2 - symbolPlaceWidth) + textWidth / 2;\n\n textShape.setAttributes({\n x: textX,\n textAlign: 'center'\n });\n if (symbol) {\n const symbolX = textX - textWidth / 2 - symbolPlaceWidth + maxSize / 2;\n symbol.setAttributes({\n x: symbolX\n });\n }\n }\n\n if (shouldLeft && flag !== 1) {\n // 文本容器内朝左展示\n const containerWidth = tagWidth - parsedPadding[1] - parsedPadding[3];\n const offset =\n flag === 0\n ? -containerWidth / 2 + symbolPlaceWidth / 2\n : -tagWidth + parsedPadding[3] + parsedPadding[1] + symbolPlaceWidth;\n const textX = offset + symbolPlaceWidth;\n\n textShape.setAttributes({\n x: textX,\n textAlign: 'left'\n });\n\n if (symbol) {\n const symbolX = offset + maxSize / 2;\n symbol.setAttributes({\n x: symbolX\n });\n }\n }\n\n if (shouldRight && flag !== -1) {\n // 文本容器内朝右展示\n const containerWidth = tagWidth - parsedPadding[1] - parsedPadding[3];\n const textX = flag === 0 ? containerWidth / 2 + symbolPlaceWidth / 2 : containerWidth;\n\n textShape.setAttributes({\n x: textX,\n textAlign: 'right'\n });\n if (symbol) {\n const symbolX = textX - textWidth - symbolPlaceWidth + maxSize / 2;\n symbol.setAttributes({\n x: symbolX\n });\n }\n }\n\n if (textBaseline === 'middle') {\n y -= tagHeight / 2;\n if (symbol) {\n symbol.setAttribute('y', 0);\n }\n } else if (textBaseline === 'bottom') {\n y -= tagHeight;\n if (symbol) {\n symbol.setAttribute('y', -textHeight / 2);\n }\n\n group.setAttribute('y', -parsedPadding[2]);\n } else if (textBaseline === 'top') {\n group.setAttribute('y', parsedPadding[0]);\n if (symbol) {\n symbol.setAttribute('y', textHeight / 2);\n }\n }\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n if (visible && isBoolean(bgVisible)) {\n const bgRect = this.createOrUpdateChild(\n 'tag-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && !!text,\n x,\n y,\n width: tagWidth,\n height: tagHeight\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n if (backgroundStyle.customShape) {\n const customShape = backgroundStyle.customShape;\n bgRect.pathProxy = (attrs: Partial<IGraphicAttribute>) => {\n return customShape(textShape.attribute, attrs, new CustomPath2D());\n };\n }\n this._bgRect = bgRect;\n }\n }\n this._textShape = textShape;\n }\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
|
|
4
|
+
void 0 === k2 && (k2 = k);
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
desc && !("get" in desc ? !m.__esModule : desc.writable || desc.configurable) || (desc = {
|
|
7
|
+
enumerable: !0,
|
|
8
|
+
get: function() {
|
|
9
|
+
return m[k];
|
|
10
|
+
}
|
|
11
|
+
}), Object.defineProperty(o, k2, desc);
|
|
12
|
+
} : function(o, m, k, k2) {
|
|
13
|
+
void 0 === k2 && (k2 = k), o[k2] = m[k];
|
|
14
|
+
}), __exportStar = this && this.__exportStar || function(m, exports) {
|
|
15
|
+
for (var p in m) "default" === p || Object.prototype.hasOwnProperty.call(exports, p) || __createBinding(exports, m, p);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
Object.defineProperty(exports, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), __exportStar(require("./timeline"), exports), __exportStar(require("./type"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/timeline/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,yCAAuB","file":"index.js","sourcesContent":["export * from './timeline';\nexport * from './type';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function loadTimelineComponent(): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.loadTimelineComponent = void 0;
|
|
6
|
+
|
|
7
|
+
const vrender_kits_1 = require("@visactor/vrender-kits");
|
|
8
|
+
|
|
9
|
+
function loadTimelineComponent() {
|
|
10
|
+
(0, vrender_kits_1.registerGroup)(), (0, vrender_kits_1.registerText)(), (0, vrender_kits_1.registerSymbol)(),
|
|
11
|
+
(0, vrender_kits_1.registerLine)();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
exports.loadTimelineComponent = loadTimelineComponent;
|
|
15
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/timeline/register.ts"],"names":[],"mappings":";;;AAAA,yDAAmG;AAEnG,SAAgB,qBAAqB;IACnC,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,2BAAY,GAAE,CAAC;AACjB,CAAC;AALD,sDAKC","file":"register.js","sourcesContent":["import { registerGroup, registerSymbol, registerLine, registerText } from '@visactor/vrender-kits';\n\nexport function loadTimelineComponent() {\n registerGroup();\n registerText();\n registerSymbol();\n registerLine();\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AbstractComponent } from '../core/base';
|
|
2
|
+
import type { TimelineAttrs } from './type';
|
|
3
|
+
import type { ComponentOptions } from '../interface';
|
|
4
|
+
export declare class Timeline extends AbstractComponent<Required<TimelineAttrs>> {
|
|
5
|
+
name: string;
|
|
6
|
+
private _line?;
|
|
7
|
+
private _activeLine?;
|
|
8
|
+
private _symbolGroup?;
|
|
9
|
+
private _labelGroup?;
|
|
10
|
+
private _timesPercent?;
|
|
11
|
+
static defaultAttributes: Partial<TimelineAttrs>;
|
|
12
|
+
constructor(attributes: TimelineAttrs, options?: ComponentOptions);
|
|
13
|
+
protected render(): void;
|
|
14
|
+
appearAnimate(animateConfig: {
|
|
15
|
+
duration?: number;
|
|
16
|
+
easing?: string;
|
|
17
|
+
}): void;
|
|
18
|
+
goto(flag: 1 | -1, animateConfig: {
|
|
19
|
+
duration?: number;
|
|
20
|
+
easing?: string;
|
|
21
|
+
}): void;
|
|
22
|
+
forward(animateConfig: {
|
|
23
|
+
duration?: number;
|
|
24
|
+
easing?: string;
|
|
25
|
+
}): void;
|
|
26
|
+
backward(animateConfig: {
|
|
27
|
+
duration?: number;
|
|
28
|
+
easing?: string;
|
|
29
|
+
}): void;
|
|
30
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.Timeline = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), base_1 = require("../core/base"), register_1 = require("./register");
|
|
8
|
+
|
|
9
|
+
(0, register_1.loadTimelineComponent)();
|
|
10
|
+
|
|
11
|
+
class Timeline extends base_1.AbstractComponent {
|
|
12
|
+
constructor(attributes, options) {
|
|
13
|
+
super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, Timeline.defaultAttributes, attributes)),
|
|
14
|
+
this.name = "timeline";
|
|
15
|
+
}
|
|
16
|
+
render() {
|
|
17
|
+
const {width: width, lineStyle: lineStyle, activeLineStyle: activeLineStyle, symbolStyle: symbolStyle, activeSymbolStyle: activeSymbolStyle, labelStyle: labelStyle, activeLabelStyle: activeLabelStyle, times: times, pointLayoutMode: pointLayoutMode, labelSpace: labelSpace, clipRange: clipRange, animation: animation} = this.attribute;
|
|
18
|
+
if (!times || !times.length) return;
|
|
19
|
+
const symbolHeight = ((0, vutils_1.isArray)(symbolStyle.size) ? symbolStyle.size[1] : symbolStyle.size) || 0, activeSymbolHeight = ((0,
|
|
20
|
+
vutils_1.isArray)(activeSymbolStyle.size) ? activeSymbolStyle.size[1] : activeSymbolStyle.size) || 0, lineSymbolHeight = Math.max(lineStyle.lineWidth || 0, activeLineStyle.lineWidth || 0, symbolHeight, activeSymbolHeight), lineY = lineSymbolHeight / 2, lineAttr = {
|
|
21
|
+
y: lineY,
|
|
22
|
+
points: [ {
|
|
23
|
+
x: 0,
|
|
24
|
+
y: 0
|
|
25
|
+
}, {
|
|
26
|
+
x: width,
|
|
27
|
+
y: 0
|
|
28
|
+
} ]
|
|
29
|
+
};
|
|
30
|
+
this._line = this.createOrUpdateChild("line-axes", Object.assign(Object.assign({}, lineStyle), lineAttr), "line"),
|
|
31
|
+
this._activeLine = this.createOrUpdateChild("active-line-axes", Object.assign(Object.assign(Object.assign({}, activeLineStyle), lineAttr), {
|
|
32
|
+
clipRange: clipRange
|
|
33
|
+
}), "line");
|
|
34
|
+
const activeWidth = width * clipRange, symbolGroup = this.createOrUpdateChild("symbol-group", {
|
|
35
|
+
y: lineY
|
|
36
|
+
}, "group"), symbolSpace = 1 === times.length ? width : "space-between" === pointLayoutMode ? width / (times.length - 1) : width / times.length, symbolStartX = "space-between" === pointLayoutMode ? 0 : symbolSpace / 2;
|
|
37
|
+
this._timesPercent = times.map(((_, i) => (symbolStartX + symbolSpace * i) / width)),
|
|
38
|
+
times.forEach(((item, i) => {
|
|
39
|
+
const x = this._timesPercent[i] * width;
|
|
40
|
+
symbolGroup.createOrUpdateChild(item.label, Object.assign(Object.assign({}, symbolStyle), {
|
|
41
|
+
x: x
|
|
42
|
+
}), "symbol");
|
|
43
|
+
})), this._symbolGroup = symbolGroup;
|
|
44
|
+
const labelY = lineSymbolHeight + labelSpace, labelGroup = this.createOrUpdateChild("label-group", {
|
|
45
|
+
y: labelY
|
|
46
|
+
}, "group");
|
|
47
|
+
times.forEach(((item, i) => {
|
|
48
|
+
const x = this._timesPercent[i] * width;
|
|
49
|
+
labelGroup.createOrUpdateChild(item.label, Object.assign(Object.assign({}, labelStyle), {
|
|
50
|
+
x: x,
|
|
51
|
+
text: item.label
|
|
52
|
+
}), "text");
|
|
53
|
+
})), this._labelGroup = labelGroup;
|
|
54
|
+
const setActive = (group, activeStyle) => {
|
|
55
|
+
group.forEachChildren((label => {
|
|
56
|
+
if (label.currentStates) {
|
|
57
|
+
const currentStates = label.currentStates;
|
|
58
|
+
label.clearStates(), label.useStates(currentStates, !1);
|
|
59
|
+
}
|
|
60
|
+
label.states = {
|
|
61
|
+
active: activeStyle
|
|
62
|
+
}, label.attribute.x <= activeWidth && label.useStates([ "active" ], animation);
|
|
63
|
+
}));
|
|
64
|
+
};
|
|
65
|
+
setActive(labelGroup, activeLabelStyle), setActive(symbolGroup, activeSymbolStyle);
|
|
66
|
+
}
|
|
67
|
+
appearAnimate(animateConfig) {
|
|
68
|
+
const {duration: duration = 1e3, easing: easing = "quadOut"} = animateConfig, {activeLabelStyle: activeLabelStyle, activeSymbolStyle: activeSymbolStyle} = this.attribute, percent = duration / 1e3, lineDuration = 500 * percent, activeLineDuration = 200 * percent, perSymbolDuration = 100 * percent, perSymbolNormalDuration = 90 * percent, symbolDelay = 100 * percent, symbolNormalDelay = 600 * percent;
|
|
69
|
+
if (this._line && (this._line.setAttributes({
|
|
70
|
+
clipRange: 0
|
|
71
|
+
}), this._line.animate().to({
|
|
72
|
+
clipRange: 1
|
|
73
|
+
}, lineDuration, easing)), this._activeLine && (this._activeLine.setAttributes({
|
|
74
|
+
opacity: 0
|
|
75
|
+
}), this._activeLine.animate().wait(500).to({
|
|
76
|
+
opacity: 1
|
|
77
|
+
}, activeLineDuration, easing)), this._symbolGroup) {
|
|
78
|
+
const size = this._symbolGroup.count - 1, delay = percent * (1 === size ? 0 : 400 / (size - 1)), delayNormal = percent * (1 === size ? 0 : 240 / (size - 1));
|
|
79
|
+
this._symbolGroup.forEachChildren(((symbol, i) => {
|
|
80
|
+
const originAttrs = Object.assign({}, symbol.attribute);
|
|
81
|
+
symbol.setAttributes({
|
|
82
|
+
opacity: 0
|
|
83
|
+
}), symbol.animate().wait(symbolDelay + delay * i).to({
|
|
84
|
+
opacity: 1
|
|
85
|
+
}, perSymbolDuration, easing), symbol.animate().wait(symbolNormalDelay + delayNormal * i).to(Object.assign({
|
|
86
|
+
scaleX: 1.8,
|
|
87
|
+
scaleY: 1.8
|
|
88
|
+
}, activeSymbolStyle), perSymbolNormalDuration, easing).to(Object.assign({
|
|
89
|
+
scaleX: 1,
|
|
90
|
+
scaleY: 1
|
|
91
|
+
}, originAttrs), perSymbolNormalDuration, easing);
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
if (this._labelGroup) {
|
|
95
|
+
const size = this._labelGroup.count - 1, delay = percent * (1 === size ? 0 : 400 / (size - 1)), delayNormal = percent * (1 === size ? 0 : 240 / (size - 1));
|
|
96
|
+
this._labelGroup.forEachChildren(((label, i) => {
|
|
97
|
+
const originAttrs = Object.assign({}, label.attribute);
|
|
98
|
+
label.setAttributes({
|
|
99
|
+
opacity: 0
|
|
100
|
+
}), label.animate().wait(symbolDelay + delay * i).to({
|
|
101
|
+
opacity: 1
|
|
102
|
+
}, perSymbolDuration, easing), label.animate().wait(symbolNormalDelay + delayNormal * i).to(Object.assign({
|
|
103
|
+
dy: 10
|
|
104
|
+
}, activeLabelStyle), perSymbolNormalDuration, easing).to(Object.assign({
|
|
105
|
+
dy: 0
|
|
106
|
+
}, originAttrs), perSymbolNormalDuration, easing);
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
goto(flag, animateConfig) {
|
|
111
|
+
var _a;
|
|
112
|
+
let {clipRange: clipRange} = this.attribute;
|
|
113
|
+
const {animation: animation} = this.attribute;
|
|
114
|
+
if (flag > 0) {
|
|
115
|
+
if (clipRange >= 1) return;
|
|
116
|
+
clipRange < 0 && (clipRange = 0);
|
|
117
|
+
} else {
|
|
118
|
+
if (clipRange <= 0) return;
|
|
119
|
+
clipRange > 1 && (clipRange = 1);
|
|
120
|
+
}
|
|
121
|
+
clipRange !== this.attribute.clipRange && this.setAttributes({
|
|
122
|
+
clipRange: clipRange
|
|
123
|
+
});
|
|
124
|
+
let i = 0;
|
|
125
|
+
for (;i < this._timesPercent.length && !(clipRange < this._timesPercent[i]); i++) ;
|
|
126
|
+
const nextClipRange = flag > 0 ? this._timesPercent[i] : this._timesPercent[i - 1] || 0;
|
|
127
|
+
if (animation) {
|
|
128
|
+
const {duration: duration = 1e3, easing: easing = "quadOut"} = animateConfig, actDuration = Math.abs(nextClipRange - clipRange) / (this._timesPercent[i] - (null !== (_a = this._timesPercent[i - 1]) && void 0 !== _a ? _a : 0)) * duration;
|
|
129
|
+
this.animate().to({
|
|
130
|
+
clipRange: nextClipRange
|
|
131
|
+
}, actDuration, easing);
|
|
132
|
+
} else this.setAttributes({
|
|
133
|
+
clipRange: nextClipRange
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
forward(animateConfig) {
|
|
137
|
+
this.goto(1, animateConfig);
|
|
138
|
+
}
|
|
139
|
+
backward(animateConfig) {
|
|
140
|
+
this.goto(-1, animateConfig);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
exports.Timeline = Timeline, Timeline.defaultAttributes = {
|
|
145
|
+
labelSpace: 10,
|
|
146
|
+
pointLayoutMode: "space-around",
|
|
147
|
+
animation: !0,
|
|
148
|
+
symbolStyle: {
|
|
149
|
+
fill: "black",
|
|
150
|
+
size: 12,
|
|
151
|
+
symbolType: "circle"
|
|
152
|
+
},
|
|
153
|
+
activeSymbolStyle: {
|
|
154
|
+
fill: "orange"
|
|
155
|
+
},
|
|
156
|
+
lineStyle: {
|
|
157
|
+
lineDash: [ 2, 2 ],
|
|
158
|
+
lineCap: "butt",
|
|
159
|
+
stroke: "black",
|
|
160
|
+
lineWidth: 2
|
|
161
|
+
},
|
|
162
|
+
activeLineStyle: {
|
|
163
|
+
stroke: "orange",
|
|
164
|
+
lineWidth: 4
|
|
165
|
+
},
|
|
166
|
+
labelStyle: {
|
|
167
|
+
fontSize: 12,
|
|
168
|
+
fill: "black",
|
|
169
|
+
textAlign: "center",
|
|
170
|
+
textBaseline: "top"
|
|
171
|
+
},
|
|
172
|
+
activeLabelStyle: {
|
|
173
|
+
fontSize: 14,
|
|
174
|
+
fill: "orange"
|
|
175
|
+
},
|
|
176
|
+
clipRange: 0
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=timeline.js.map
|