@visactor/vrender-components 0.17.25-alpha.2 → 0.17.25
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/index.js +2 -1
- package/cjs/axis/line.js +1 -1
- package/cjs/axis/line.js.map +1 -1
- package/cjs/axis/overlap/auto-limit.js +6 -4
- package/cjs/axis/overlap/auto-limit.js.map +1 -1
- package/cjs/brush/brush.js +1 -2
- package/cjs/core/base.d.ts +1 -1
- package/cjs/core/base.js.map +1 -1
- package/cjs/data-zoom/data-zoom.js +4 -5
- package/cjs/data-zoom/data-zoom.js.map +1 -1
- package/cjs/index.d.ts +2 -1
- package/cjs/index.js +13 -13
- package/cjs/index.js.map +1 -1
- package/cjs/jsx/index.js +1 -1
- package/cjs/label/index.js +1 -2
- package/cjs/label/line.js +2 -1
- package/cjs/label/util.js +2 -2
- package/cjs/legend/discrete/discrete.js +5 -4
- package/cjs/legend/discrete/discrete.js.map +1 -1
- package/cjs/marker/base.d.ts +1 -1
- package/cjs/marker/base.js.map +1 -1
- package/es/axis/index.js +2 -1
- package/es/axis/line.js +1 -1
- package/es/axis/line.js.map +1 -1
- package/es/axis/overlap/auto-limit.js +6 -4
- package/es/axis/overlap/auto-limit.js.map +1 -1
- package/es/brush/brush.js +1 -2
- package/es/core/base.d.ts +1 -1
- package/es/core/base.js.map +1 -1
- package/es/data-zoom/data-zoom.js +4 -5
- package/es/data-zoom/data-zoom.js.map +1 -1
- package/es/index.d.ts +2 -1
- package/es/index.js +3 -1
- package/es/index.js.map +1 -1
- package/es/jsx/index.js +1 -1
- package/es/label/index.js +1 -2
- package/es/label/line.js +2 -1
- package/es/label/util.js +1 -1
- package/es/legend/discrete/discrete.js +5 -4
- package/es/legend/discrete/discrete.js.map +1 -1
- package/es/marker/base.d.ts +1 -1
- package/es/marker/base.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/legend/discrete/discrete.ts"],"names":[],"mappings":"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","file":"discrete.js","sourcesContent":["/**\n * @description 离散图例\n * @author 章伟星\n */\nimport { merge, isEmpty, normalizePadding, get, isValid, isNil, isFunction, isArray } from '@visactor/vutils';\nimport type {\n FederatedPointerEvent,\n IGroup,\n IGraphic,\n INode,\n IGroupGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute,\n CustomEvent\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { LegendBase } from '../base';\nimport { Pager } from '../../pager';\nimport {\n DEFAULT_TITLE_SPACE,\n DEFAULT_ITEM_SPACE_COL,\n DEFAULT_ITEM_SPACE_ROW,\n DEFAULT_SHAPE_SPACE,\n DEFAULT_SHAPE_SIZE,\n DEFAULT_LABEL_SPACE,\n DEFAULT_PAGER_SPACE,\n LegendStateValue,\n DEFAULT_VALUE_SPACE,\n LegendEvent,\n LEGEND_ELEMENT_NAME\n} from '../constant';\nimport type { DiscreteLegendAttrs, LegendItem, LegendItemDatum } from './type';\nimport type { ComponentOptions } from '../../interface';\nimport { loadDiscreteLegendComponent } from '../register';\nimport { isRichText, richTextAttributeTransform } from '../../util';\n\nconst DEFAULT_STATES = {\n [LegendStateValue.focus]: {},\n [LegendStateValue.selected]: {},\n [LegendStateValue.selectedHover]: {},\n [LegendStateValue.unSelected]: {},\n [LegendStateValue.unSelectedHover]: {}\n};\n\nloadDiscreteLegendComponent();\nexport class DiscreteLegend extends LegendBase<DiscreteLegendAttrs> {\n name = 'discreteLegend';\n\n private _itemsContainer: IGroup | null = null;\n private _itemWidthByUser: number | undefined;\n private _itemHeightByUser: number | undefined = undefined;\n private _itemHeight = 0; // 存储每一个图例项的高度\n private _itemMaxWidth = 0; // 存储图例项的最大的宽度\n private _pager!: Pager;\n private _lastActiveItem: IGroup;\n\n static defaultAttributes: Partial<DiscreteLegendAttrs> = {\n layout: 'horizontal',\n title: {\n align: 'start',\n space: DEFAULT_TITLE_SPACE,\n textStyle: {\n fontSize: 12,\n fontWeight: 'bold',\n fill: '#2C3542'\n }\n },\n item: {\n spaceCol: DEFAULT_ITEM_SPACE_COL,\n spaceRow: DEFAULT_ITEM_SPACE_ROW,\n shape: {\n space: DEFAULT_SHAPE_SPACE,\n style: {\n size: DEFAULT_SHAPE_SIZE,\n cursor: 'pointer'\n },\n state: {\n selectedHover: {\n opacity: 0.85\n },\n unSelected: {\n opacity: 0.5\n }\n }\n },\n label: {\n space: DEFAULT_LABEL_SPACE,\n style: {\n fontSize: 12,\n fill: '#2C3542',\n cursor: 'pointer'\n },\n state: {\n selectedHover: {\n opacity: 0.85\n },\n unSelected: {\n fill: '#D8D8D8'\n }\n }\n },\n value: {\n alignRight: false,\n style: {\n fontSize: 12,\n fill: '#ccc',\n cursor: 'pointer'\n },\n state: {\n selectedHover: {\n opacity: 0.85\n },\n unSelected: {\n fill: '#D8D8D8'\n }\n }\n },\n background: {\n style: {\n cursor: 'pointer'\n }\n },\n focus: false,\n focusIconStyle: {\n size: DEFAULT_SHAPE_SIZE,\n symbolType:\n 'M8 1C11.866 1 15 4.13401 15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1ZM8.75044 2.55077L8.75 3.75H7.25L7.25006 2.5507C4.81247 2.88304 2.88304 4.81247 2.5507 7.25006L3.75 7.25V8.75L2.55077 8.75044C2.8833 11.1878 4.81264 13.117 7.25006 13.4493L7.25 12.25H8.75L8.75044 13.4492C11.1876 13.1167 13.1167 11.1876 13.4492 8.75044L12.25 8.75V7.25L13.4493 7.25006C13.117 4.81264 11.1878 2.8833 8.75044 2.55077ZM8 5.5C9.38071 5.5 10.5 6.61929 10.5 8C10.5 9.38071 9.38071 10.5 8 10.5C6.61929 10.5 5.5 9.38071 5.5 8C5.5 6.61929 6.61929 5.5 8 5.5ZM8 7C7.44772 7 7 7.44772 7 8C7 8.55228 7.44772 9 8 9C8.55228 9 9 8.55228 9 8C9 7.44772 8.55228 7 8 7Z',\n fill: '#333',\n cursor: 'pointer'\n }\n },\n autoPage: true,\n pager: {\n space: DEFAULT_PAGER_SPACE,\n handler: {\n style: { size: 10 },\n space: 4\n }\n },\n hover: true,\n select: true,\n selectMode: 'multiple',\n allowAllCanceled: true\n };\n\n constructor(attributes: DiscreteLegendAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, DiscreteLegend.defaultAttributes, attributes));\n }\n\n /**\n * 更新选中数据\n * @param value 选中数据范围\n * @returns\n */\n setSelected(selectedData: (string | number)[]) {\n (this._itemsContainer?.getChildren() as IGroup[]).forEach(item => {\n // @ts-ignore\n const itemData = item.data as LegendItemDatum;\n if (selectedData.includes(itemData.label)) {\n this._setLegendItemState(item, LegendStateValue.selected);\n this._removeLegendItemState(item, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover]);\n } else {\n // 如果当前为选中状态,则取消选中\n this._removeLegendItemState(item, [LegendStateValue.selected, LegendStateValue.selectedHover]);\n this._setLegendItemState(item, LegendStateValue.unSelected);\n }\n });\n }\n\n protected _renderContent() {\n const { item = {}, items, reversed, maxCol = 1, maxRow = 2 } = this.attribute as DiscreteLegendAttrs;\n if (item.visible === false || isEmpty(items)) {\n return;\n }\n\n let legendItems = items;\n if (reversed) {\n legendItems = items?.reverse();\n }\n\n const itemsContainer = graphicCreator.group({\n x: 0,\n y: 0\n });\n this._itemsContainer = itemsContainer;\n\n const { layout, maxWidth, maxHeight, defaultSelected = [], autoPage } = this.attribute;\n const isHorizontal = layout === 'horizontal';\n\n const {\n spaceCol = DEFAULT_ITEM_SPACE_COL,\n spaceRow = DEFAULT_ITEM_SPACE_ROW,\n maxWidth: maxItemWidth,\n width: itemWidth,\n height: itemHeight\n } = item;\n\n // 根据用户声明的 maxItemWidth 和 itemWidth 获取图例项宽度\n if (isValid(maxItemWidth)) {\n if (isValid(itemWidth)) {\n this._itemWidthByUser = Math.min(maxItemWidth, itemWidth);\n } else {\n this._itemWidthByUser = maxItemWidth;\n }\n } else if (isValid(itemWidth)) {\n this._itemWidthByUser = itemWidth;\n }\n\n // 存储用户指定图例项高度\n if (isValid(itemHeight)) {\n this._itemHeightByUser = itemHeight;\n }\n let doWrap = false; // 水平布局换行标识\n let maxWidthInCol = 0; // 存储每一列最大的宽度,用于垂直布局的换列\n let startX = 0;\n let startY = 0;\n let maxPages = 1;\n let pages = 1;\n legendItems.forEach((item, index) => {\n if (!item.id) {\n item.id = item.label; // 如果没有设置 id,默认使用 label\n }\n item.index = index; // 用于维护图例的顺序\n\n const itemGroup = this._renderEachItem(\n item,\n isEmpty(defaultSelected) ? true : defaultSelected?.includes(item.label),\n index,\n legendItems\n );\n const itemWidth = itemGroup.attribute.width;\n const itemHeight = itemGroup.attribute.height;\n this._itemHeight = Math.max(this._itemHeight, itemHeight);\n maxWidthInCol = Math.max(itemWidth, maxWidthInCol);\n\n this._itemMaxWidth = Math.max(itemWidth, this._itemMaxWidth);\n\n if (isHorizontal) {\n maxPages = maxRow;\n // 水平布局\n if (isValid(maxWidth)) {\n if (itemWidth >= maxWidth) {\n // 如果图例项本身就大于 maxWidth\n doWrap = true;\n if (index > 0) {\n startX = 0;\n startY += itemHeight + spaceRow;\n pages += 1;\n }\n } else if (maxWidth < startX + itemWidth) {\n // 检测是否需要换行:如果用户声明了 maxWidth 并且超出了,则进行换行\n doWrap = true;\n startX = 0;\n startY += itemHeight + spaceRow;\n pages += 1;\n }\n }\n if (index > 0) {\n itemGroup.setAttributes({\n x: startX,\n y: startY\n });\n }\n startX += spaceCol + itemWidth;\n } else {\n maxPages = maxCol;\n // 垂直布局\n if (isValid(maxHeight) && maxHeight < startY + itemHeight) {\n // 检测是否换列:如果用户声明了 maxHeight 并且超出了,则进行换列\n doWrap = true;\n startY = 0;\n startX += maxWidthInCol + spaceCol;\n maxWidthInCol = 0;\n pages += 1;\n }\n if (index > 0) {\n itemGroup.setAttributes({\n x: startX,\n y: startY\n });\n }\n startY += spaceRow + itemHeight;\n }\n\n itemsContainer.add(itemGroup);\n });\n\n // TODO: 添加测试用例\n let pagerRendered = false;\n if (doWrap && autoPage && pages > maxPages) {\n // 进行分页处理\n pagerRendered = this._renderPager(isHorizontal);\n }\n\n if (!pagerRendered) {\n itemsContainer.setAttribute(\n 'y',\n this._title ? this._title.AABBBounds.height() + get(this.attribute, 'title.space', 8) : 0\n );\n this._innerView.add(itemsContainer);\n }\n }\n\n protected _bindEvents() {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n if (!this._itemsContainer) {\n return;\n }\n\n const { hover = true, select = true } = this.attribute;\n if (hover) {\n this._itemsContainer.addEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n this._itemsContainer.addEventListener('pointerleave', this._onUnHover as EventListenerOrEventListenerObject);\n }\n\n if (select) {\n this._itemsContainer.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _renderEachItem(item: LegendItemDatum, isSelected: boolean, index: number, items: LegendItemDatum[]) {\n const { id, label, value, shape } = item;\n const { padding = 0, focus, focusIconStyle } = this.attribute.item as LegendItem;\n\n const { shape: shapeAttr, label: labelAttr, value: valueAttr, background } = this.attribute.item as LegendItem;\n\n const shapeStyle = this._handleStyle(shapeAttr, item, isSelected, index, items);\n const labelStyle = this._handleStyle(labelAttr, item, isSelected, index, items);\n const valueStyle = this._handleStyle(valueAttr, item, isSelected, index, items);\n const backgroundStyle = this._handleStyle(background, item, isSelected, index, items);\n\n const parsedPadding = normalizePadding(padding);\n\n let itemGroup;\n if (background.visible === false) {\n itemGroup = graphicCreator.group({\n x: 0,\n y: 0,\n cursor: (backgroundStyle.style as IGroupGraphicAttribute)?.cursor\n });\n this._appendDataToShape(itemGroup, LEGEND_ELEMENT_NAME.item, item, itemGroup);\n } else {\n itemGroup = graphicCreator.group({\n x: 0,\n y: 0,\n ...backgroundStyle.style\n });\n this._appendDataToShape(itemGroup, LEGEND_ELEMENT_NAME.item, item, itemGroup, backgroundStyle.state);\n }\n itemGroup.id = `${id ?? label}-${index}`;\n\n itemGroup.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n\n const innerGroup = graphicCreator.group({\n x: 0,\n y: 0,\n pickable: false\n });\n itemGroup.add(innerGroup);\n\n let focusStartX = 0;\n let shapeSize = 0;\n let shapeSpace = 0;\n if (shapeAttr && shapeAttr.visible !== false) {\n const s = get(shapeStyle, 'style.size', DEFAULT_SHAPE_SIZE);\n if (isArray(s)) {\n shapeSize = s[0] || 0;\n } else {\n shapeSize = s;\n }\n shapeSpace = get(shapeAttr, 'space', DEFAULT_SHAPE_SPACE);\n const itemShape = graphicCreator.symbol({\n x: 0,\n y: 0,\n symbolType: 'circle',\n strokeBoundsBuffer: 0,\n ...shape,\n ...shapeStyle.style\n });\n // 处理下 shape 的 fill stroke\n Object.keys(shapeStyle.state || {}).forEach(key => {\n const color =\n (shapeStyle.state[key] as ISymbolGraphicAttribute).fill ||\n (shapeStyle.state[key] as ISymbolGraphicAttribute).stroke;\n if (shape.fill && isNil((shapeStyle.state[key] as ISymbolGraphicAttribute).fill) && color) {\n (shapeStyle.state[key] as ISymbolGraphicAttribute).fill = color as string;\n }\n\n if (shape.stroke && isNil((shapeStyle.state[key] as ISymbolGraphicAttribute).stroke) && color) {\n (shapeStyle.state[key] as ISymbolGraphicAttribute).stroke = color as string;\n }\n });\n this._appendDataToShape(itemShape, LEGEND_ELEMENT_NAME.itemShape, item, itemGroup, shapeStyle.state);\n\n itemShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n innerGroup.add(itemShape);\n }\n\n let focusShape;\n let focusSpace = 0;\n\n if (focus) {\n const focusSize = get(focusIconStyle, 'size', DEFAULT_SHAPE_SIZE);\n // 绘制聚焦按钮\n focusShape = graphicCreator.symbol({\n x: 0,\n y: -focusSize / 2 - 1,\n strokeBoundsBuffer: 0,\n ...focusIconStyle,\n visible: true,\n pickMode: 'imprecise',\n boundsPadding: parsedPadding\n });\n this._appendDataToShape(focusShape, LEGEND_ELEMENT_NAME.focus, item, itemGroup);\n\n focusSpace = focusSize;\n }\n let labelShape;\n const text = labelAttr.formatMethod ? labelAttr.formatMethod(label, item, index) : label;\n const labelAttributes = {\n x: shapeSize / 2 + shapeSpace,\n y: 0,\n textAlign: 'start',\n textBaseline: 'middle',\n lineHeight: (labelStyle.style as ITextGraphicAttribute)?.fontSize,\n ...labelStyle.style,\n text\n };\n if (isRichText(labelAttributes)) {\n labelShape = graphicCreator.richtext(richTextAttributeTransform(labelAttributes));\n } else {\n labelShape = graphicCreator.text(labelAttributes);\n }\n\n this._appendDataToShape(labelShape, LEGEND_ELEMENT_NAME.itemLabel, item, itemGroup, labelStyle.state);\n labelShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n innerGroup.add(labelShape);\n const labelSpace = get(labelAttr, 'space', DEFAULT_LABEL_SPACE);\n if (isValid(value)) {\n const valueSpace = get(valueAttr, 'space', focus ? DEFAULT_VALUE_SPACE : 0);\n const valueText = valueAttr.formatMethod ? valueAttr.formatMethod(value, item, index) : value;\n const valueAttributes = {\n x: 0,\n y: 0,\n textAlign: 'start',\n textBaseline: 'middle',\n lineHeight: (valueStyle.style as ITextGraphicAttribute).fontSize,\n ...valueStyle.style,\n text: valueText\n };\n let valueShape;\n if (isRichText(valueAttributes)) {\n valueShape = graphicCreator.richtext(richTextAttributeTransform(valueAttributes));\n } else {\n valueShape = graphicCreator.text(valueAttributes);\n }\n\n this._appendDataToShape(valueShape, LEGEND_ELEMENT_NAME.itemValue, item, itemGroup, valueStyle.state);\n valueShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n\n if (this._itemWidthByUser) {\n // 计算用来防止文本的宽度\n const layoutWidth =\n this._itemWidthByUser -\n parsedPadding[1] -\n parsedPadding[3] -\n shapeSize -\n shapeSpace -\n labelSpace -\n focusSpace -\n valueSpace;\n const valueBounds = valueShape.AABBBounds;\n const labelBounds = labelShape.AABBBounds;\n const valueWidth = valueBounds.width();\n const labelWidth = labelBounds.width();\n if (labelWidth > layoutWidth) {\n if ((layoutWidth - valueWidth) / labelWidth > 0.4) {\n // 设置一个值,如果剩余的宽度和 label 自身的比例不低于 0.4 的话,优先展示全 label\n labelShape.setAttribute('maxLineWidth', layoutWidth - valueWidth);\n } else {\n valueShape.setAttribute('maxLineWidth', layoutWidth * 0.5);\n labelShape.setAttribute('maxLineWidth', layoutWidth * 0.5);\n }\n } else {\n valueShape.setAttribute('maxLineWidth', layoutWidth - labelWidth);\n }\n\n if (valueAttr.alignRight) {\n valueShape.setAttributes({\n // @ts-ignore\n textAlign: 'right',\n x: this._itemWidthByUser - shapeSize / 2 - parsedPadding[1] - parsedPadding[3] - focusSpace - valueSpace\n });\n } else {\n valueShape.setAttribute('x', labelShape.AABBBounds.x2 + valueSpace);\n }\n } else {\n valueShape.setAttribute('x', labelShape.AABBBounds.x2 + valueSpace);\n }\n focusStartX = valueShape.AABBBounds.x2 + valueSpace;\n\n innerGroup.add(valueShape);\n } else if (this._itemWidthByUser) {\n labelShape.setAttribute(\n 'maxLineWidth',\n this._itemWidthByUser - parsedPadding[1] - parsedPadding[3] - shapeSize - shapeSpace - focusSpace\n );\n\n focusStartX = labelShape.AABBBounds.x2 + labelSpace;\n } else {\n focusStartX = labelShape.AABBBounds.x2 + labelSpace;\n }\n\n if (focusShape) {\n focusShape.setAttribute('x', focusStartX);\n innerGroup.add(focusShape);\n }\n\n const innerGroupBounds = innerGroup.AABBBounds;\n const innerGroupWidth = innerGroupBounds.width();\n const innerGroupHeight = innerGroupBounds.height();\n const itemGroupWidth = isValid(this.attribute.item.width)\n ? this.attribute.item.width\n : innerGroupWidth + parsedPadding[1] + parsedPadding[3];\n const itemGroupHeight = this._itemHeightByUser || innerGroupHeight + parsedPadding[0] + parsedPadding[2];\n itemGroup.attribute.width = itemGroupWidth;\n itemGroup.attribute.height = itemGroupHeight;\n\n focusShape && focusShape.setAttribute('visible', false);\n innerGroup.translateTo(-innerGroupBounds.x1 + parsedPadding[3], -innerGroupBounds.y1 + parsedPadding[0]);\n return itemGroup;\n }\n\n private _renderPager(isHorizontal: boolean) {\n const renderStartY = this._title ? this._title.AABBBounds.height() + get(this.attribute, 'title.space', 8) : 0;\n const { maxWidth, maxHeight, maxCol = 1, maxRow = 2, item = {}, pager = {}, disableTriggerEvent } = this.attribute;\n const { spaceCol = DEFAULT_ITEM_SPACE_COL, spaceRow = DEFAULT_ITEM_SPACE_ROW } = item;\n const itemsContainer = this._itemsContainer as IGroup;\n const {\n animation = true,\n animationDuration = 450,\n animationEasing = 'quadIn',\n space: pagerSpace = DEFAULT_PAGER_SPACE,\n position = 'middle',\n ...pageStyle\n } = pager;\n\n let pagerComp: Pager;\n let pageHeight = 0; // 每页的高度\n let pageWidth = 0; // 每页的宽度\n let startX = 0; // 临时变量,用来存储布局的起始点\n let startY = 0; // 临时变量,用来存储布局的起始点\n let pages = 1; // 页数\n\n if (isHorizontal) {\n // 水平布局,支持上下翻页\n pagerComp = new Pager({\n layout: maxRow === 1 ? 'horizontal' : 'vertical',\n total: 99,\n ...merge(\n {\n handler: {\n preShape: 'triangleUp',\n nextShape: 'triangleDown'\n }\n },\n pageStyle\n ),\n disableTriggerEvent\n });\n this._pager = pagerComp;\n this._innerView.add(pagerComp as unknown as INode);\n pageHeight = (maxRow - 1) * spaceRow + this._itemHeight * maxRow;\n pageWidth = (maxWidth as number) - pagerComp.AABBBounds.width() - pagerSpace;\n\n if (pageWidth <= 0) {\n // 布局空间不够则不进行分页器渲染\n this._innerView.removeChild(pagerComp as unknown as INode);\n return false;\n }\n\n // 重新进行布局\n (itemsContainer.getChildren() as unknown as IGroup[]).forEach((item, index) => {\n const { width, height } = item.attribute;\n\n if (pageWidth < startX + (width as number)) {\n // 超出了,则换行\n startX = 0;\n startY += (height as number) + spaceRow;\n pages += 1;\n }\n if (index > 0) {\n item.setAttributes({\n x: startX,\n y: startY\n });\n }\n startX += spaceCol + (width as number);\n });\n\n pagerComp.setAttribute('total', Math.ceil(pages / maxRow));\n let y;\n if (position === 'start') {\n y = renderStartY;\n } else if (position === 'end') {\n y = renderStartY + pageHeight - pagerComp.AABBBounds.height() / 2;\n } else {\n y = renderStartY + pageHeight / 2 - pagerComp.AABBBounds.height() / 2;\n }\n pagerComp.setAttributes({\n x: pageWidth,\n y\n });\n } else {\n // 垂直布局,支持左右翻页\n pagerComp = new Pager({\n layout: 'horizontal',\n total: 99, // 用于估算,\n disableTriggerEvent,\n ...pageStyle\n });\n this._pager = pagerComp;\n this._innerView.add(pagerComp as unknown as INode);\n\n pageWidth = this._itemMaxWidth * maxCol + (maxCol - 1) * spaceCol;\n pageHeight = (maxHeight as number) - pagerComp.AABBBounds.height() - pagerSpace - renderStartY;\n\n if (pageHeight <= 0) {\n // 布局空间不够则不进行分页器渲染\n this._innerView.removeChild(pagerComp as unknown as INode);\n return false;\n }\n\n // 重新进行布局\n (itemsContainer.getChildren() as unknown as IGroup[]).forEach((item, index) => {\n const { height } = item.attribute;\n if (pageHeight < startY + (height as number)) {\n startY = 0;\n startX += this._itemMaxWidth + spaceCol;\n pages += 1;\n }\n if (index > 0) {\n item.setAttributes({\n x: startX,\n y: startY\n });\n }\n startY += spaceRow + (height as number);\n });\n\n pagerComp.setAttribute('total', Math.ceil(pages / maxCol));\n\n let x;\n if (position === 'start') {\n x = 0;\n } else if (position === 'end') {\n x = pageWidth - pagerComp.AABBBounds.width();\n } else {\n x = (pageWidth - pagerComp.AABBBounds.width()) / 2;\n }\n pagerComp.setAttributes({\n x,\n y: (maxHeight as number) - pagerComp.AABBBounds.height()\n });\n }\n\n // 初始化 defaultCurrent\n if (pager.defaultCurrent > 1) {\n if (isHorizontal) {\n itemsContainer.setAttribute('y', -(pager.defaultCurrent - 1) * (pageHeight + spaceRow));\n } else {\n itemsContainer.setAttribute('x', -(pager.defaultCurrent - 1) * (pageWidth + spaceCol));\n }\n }\n\n const clipGroup = graphicCreator.group({\n x: 0,\n y: renderStartY,\n width: pageWidth,\n height: pageHeight,\n clip: true,\n pickable: false\n });\n clipGroup.add(itemsContainer);\n this._innerView.add(clipGroup);\n\n const onPaging = (e: CustomEvent) => {\n const { current } = e.detail;\n\n if (animation) {\n itemsContainer\n .animate()\n .to(\n isHorizontal\n ? { y: -(current - 1) * (pageHeight + spaceRow) }\n : { x: -(current - 1) * (pageWidth + spaceCol) },\n animationDuration,\n animationEasing\n );\n } else {\n if (isHorizontal) {\n itemsContainer.setAttribute('y', -(current - 1) * (pageHeight + spaceRow));\n } else {\n itemsContainer.setAttribute('x', -(current - 1) * (pageWidth + spaceCol));\n }\n }\n };\n\n this._pager.addEventListener('toPrev', onPaging);\n this._pager.addEventListener('toNext', onPaging);\n\n return true;\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n if (target && target.name && target.name.startsWith(LEGEND_ELEMENT_NAME.item)) {\n // @ts-ignore\n const legendItem = target.delegate;\n\n // 如果上个激活元素存在,则判断当前元素是否和上个激活元素相同,相同则不做处理,不相同则触发 unhover\n if (this._lastActiveItem) {\n if (this._lastActiveItem.id === legendItem.id) {\n return;\n }\n this._unHover(this._lastActiveItem, e);\n }\n this._hover(legendItem, e);\n } else if (this._lastActiveItem) {\n this._unHover(this._lastActiveItem, e);\n this._lastActiveItem = null;\n }\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n if (this._lastActiveItem) {\n this._unHover(this._lastActiveItem, e);\n this._lastActiveItem = null;\n }\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n if (target && target.name && target.name.startsWith(LEGEND_ELEMENT_NAME.item)) {\n // @ts-ignore\n const legendItem = target.delegate;\n\n // 图例聚焦功能\n if (target.name === LEGEND_ELEMENT_NAME.focus) {\n const isFocusSelected = legendItem.hasState(LegendStateValue.focus);\n legendItem.toggleState(LegendStateValue.focus);\n\n if (isFocusSelected) {\n // 当前为选中态,则再次点击变成全选\n this._itemsContainer?.getChildren().forEach(item => {\n this._removeLegendItemState(\n item as unknown as IGroup,\n [LegendStateValue.unSelected, LegendStateValue.unSelectedHover, LegendStateValue.focus],\n e\n );\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.selected, e);\n });\n } else {\n this._setLegendItemState(legendItem, LegendStateValue.selected, e);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover], e);\n // 单选逻辑,当前被点击的图例项设置为选中态,其他全部设置为非选中态\n this._itemsContainer?.getChildren().forEach(item => {\n if (legendItem !== item) {\n this._removeLegendItemState(\n item as unknown as IGroup,\n [LegendStateValue.selected, LegendStateValue.selectedHover, LegendStateValue.focus],\n e\n );\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.unSelected, e);\n }\n });\n }\n } else {\n // 清除 focus 状态\n this._itemsContainer?.getChildren().forEach(item => {\n (item as unknown as IGroup).removeState(LegendStateValue.focus);\n });\n const { selectMode = 'multiple', allowAllCanceled = true } = this.attribute;\n const isSelected = legendItem.hasState(LegendStateValue.selected);\n const currentSelectedItems = this._getSelectedLegends();\n if (selectMode === 'multiple') {\n if (allowAllCanceled === false && isSelected && currentSelectedItems.length === 1) {\n this._dispatchLegendEvent(LegendEvent.legendItemClick, legendItem, e);\n return;\n }\n // 多选逻辑\n if (isSelected) {\n // 如果当前为选中状态,则取消选中\n this._removeLegendItemState(legendItem, [LegendStateValue.selected, LegendStateValue.selectedHover], e);\n this._setLegendItemState(legendItem, LegendStateValue.unSelected, e);\n } else {\n // 如果当前为非选中态,则设置为选中状态\n this._setLegendItemState(legendItem, LegendStateValue.selected, e);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover], e);\n }\n } else {\n this._setLegendItemState(legendItem, LegendStateValue.selected, e);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover], e);\n\n // 单选逻辑,当前被点击的图例项设置为选中态,其他全部设置为非选中态\n this._itemsContainer?.getChildren().forEach(item => {\n if (legendItem !== item) {\n this._removeLegendItemState(\n item as unknown as IGroup,\n [LegendStateValue.selected, LegendStateValue.selectedHover],\n e\n );\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.unSelected, e);\n }\n });\n }\n }\n\n this._dispatchLegendEvent(LegendEvent.legendItemClick, legendItem, e);\n }\n };\n\n private _hover(legendItem: IGroup, e: FederatedPointerEvent) {\n this._lastActiveItem = legendItem;\n const selected = legendItem.hasState(LegendStateValue.selected);\n\n if (selected) {\n // use selectedHover state\n this._setLegendItemState(legendItem, LegendStateValue.selectedHover, e);\n } else {\n // use unSelectedHover state\n this._setLegendItemState(legendItem, LegendStateValue.unSelectedHover, e);\n }\n\n const focusButton = (legendItem.getChildren()[0] as unknown as IGroup).find(\n node => node.name === LEGEND_ELEMENT_NAME.focus,\n false\n ) as IGraphic;\n if (focusButton) {\n focusButton.setAttribute('visible', true);\n }\n\n this._dispatchLegendEvent(LegendEvent.legendItemHover, legendItem, e);\n }\n\n private _unHover(legendItem: IGroup, e: FederatedPointerEvent) {\n let attributeUpdate = false;\n if (legendItem.hasState(LegendStateValue.unSelectedHover) || legendItem.hasState(LegendStateValue.selectedHover)) {\n attributeUpdate = true;\n }\n legendItem.removeState(LegendStateValue.unSelectedHover);\n legendItem.removeState(LegendStateValue.selectedHover);\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach((child: any) => {\n if (\n !attributeUpdate &&\n (child.hasState(LegendStateValue.unSelectedHover) || child.hasState(LegendStateValue.selectedHover))\n ) {\n attributeUpdate = true;\n }\n (child as unknown as IGraphic).removeState(LegendStateValue.unSelectedHover);\n (child as unknown as IGraphic).removeState(LegendStateValue.selectedHover);\n });\n\n const focusButton = (legendItem.getChildren()[0] as unknown as IGroup).find(\n node => node.name === LEGEND_ELEMENT_NAME.focus,\n false\n ) as IGraphic;\n if (focusButton) {\n focusButton.setAttribute('visible', false);\n }\n\n if (attributeUpdate) {\n this._dispatchLegendEvent(LegendEvent.legendItemAttributeUpdate, legendItem, e);\n }\n this._dispatchLegendEvent(LegendEvent.legendItemUnHover, legendItem, e);\n }\n\n private _setLegendItemState(legendItem: IGroup, stateName: string, e?: FederatedPointerEvent) {\n const keepCurrentStates = true;\n let attributeUpdate = false;\n if (!legendItem.hasState(stateName)) {\n attributeUpdate = true;\n }\n legendItem.addState(stateName, keepCurrentStates);\n // TODO: 这个比较 hack\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach((child: IGraphic) => {\n if (child.name !== LEGEND_ELEMENT_NAME.focus) {\n if (!attributeUpdate && !child.hasState(stateName)) {\n attributeUpdate = true;\n }\n (child as unknown as IGraphic).addState(stateName, keepCurrentStates);\n }\n });\n if (attributeUpdate) {\n this._dispatchLegendEvent(LegendEvent.legendItemAttributeUpdate, legendItem, e);\n }\n }\n\n private _removeLegendItemState(legendItem: IGroup, stateNames: string[], e?: FederatedPointerEvent) {\n let attributeUpdate = false;\n stateNames.forEach(name => {\n if (!attributeUpdate && legendItem.hasState(name)) {\n attributeUpdate = true;\n }\n legendItem.removeState(name);\n });\n // TODO: 这个比较 hack\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach(child => {\n if (child.name !== LEGEND_ELEMENT_NAME.focus) {\n stateNames.forEach(name => {\n if (!attributeUpdate && (child as unknown as IGraphic).hasState(name)) {\n attributeUpdate = true;\n }\n (child as unknown as IGraphic).removeState(name);\n });\n }\n });\n if (attributeUpdate) {\n this._dispatchLegendEvent(LegendEvent.legendItemAttributeUpdate, legendItem, e);\n }\n }\n\n // 获取当前选中的图例项\n private _getSelectedLegends() {\n const selectedData: LegendItemDatum[] = [];\n this._itemsContainer?.getChildren().forEach(item => {\n if ((item as unknown as IGroup).hasState(LegendStateValue.selected)) {\n // @ts-ignore\n selectedData.push(item.data);\n }\n });\n\n return selectedData;\n }\n\n private _appendDataToShape(shape: any, name: string, data: any, delegateShape: any, states: any = {}) {\n shape.name = name;\n shape.data = data;\n shape.delegate = delegateShape;\n shape.states = merge({}, DEFAULT_STATES, states);\n }\n\n private _dispatchLegendEvent(eventName: string, legendItem: any, event: FederatedPointerEvent) {\n const currentSelectedItems = this._getSelectedLegends();\n // 需要保持显示顺序\n currentSelectedItems.sort((pre: LegendItemDatum, next: LegendItemDatum) => pre.index - next.index);\n\n const currentSelected = currentSelectedItems.map((obj: LegendItemDatum) => obj.label);\n\n this._dispatchEvent(eventName, {\n item: legendItem, // 当前被选中的图例项整体\n data: legendItem.data, // 当前图例项的数据\n selected: legendItem.hasState(LegendStateValue.selected), // 当前图例项是否被选中\n currentSelectedItems,\n currentSelected,\n event\n });\n }\n\n // 处理回调函数\n private _handleStyle(\n config: any,\n item: LegendItemDatum,\n isSelected: boolean,\n index: number,\n items: LegendItemDatum[]\n ) {\n const newConfig: any = {};\n // 处理下样式\n if (config.style) {\n if (isFunction(config.style)) {\n newConfig.style = config.style(item, isSelected, index, items);\n } else {\n newConfig.style = config.style;\n }\n }\n\n if (config.state) {\n newConfig.state = {};\n\n Object.keys(config.state).forEach(key => {\n if (config.state[key]) {\n if (isFunction(config.state[key])) {\n newConfig.state[key] = config.state[key](item, isSelected, index, items);\n } else {\n newConfig.state[key] = config.state[key];\n }\n }\n });\n }\n\n return newConfig;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/legend/discrete/discrete.ts"],"names":[],"mappings":"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","file":"discrete.js","sourcesContent":["/**\n * @description 离散图例\n * @author 章伟星\n */\nimport { merge, isEmpty, normalizePadding, get, isValid, isNil, isFunction, isArray } from '@visactor/vutils';\nimport type {\n FederatedPointerEvent,\n IGroup,\n IGraphic,\n INode,\n IGroupGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute,\n CustomEvent\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { LegendBase } from '../base';\nimport { Pager } from '../../pager';\nimport {\n DEFAULT_TITLE_SPACE,\n DEFAULT_ITEM_SPACE_COL,\n DEFAULT_ITEM_SPACE_ROW,\n DEFAULT_SHAPE_SPACE,\n DEFAULT_SHAPE_SIZE,\n DEFAULT_LABEL_SPACE,\n DEFAULT_PAGER_SPACE,\n LegendStateValue,\n DEFAULT_VALUE_SPACE,\n LegendEvent,\n LEGEND_ELEMENT_NAME\n} from '../constant';\nimport type { DiscreteLegendAttrs, LegendItem, LegendItemDatum } from './type';\nimport type { ComponentOptions } from '../../interface';\nimport { loadDiscreteLegendComponent } from '../register';\nimport { isRichText, richTextAttributeTransform } from '../../util';\n\nconst DEFAULT_STATES = {\n [LegendStateValue.focus]: {},\n [LegendStateValue.selected]: {},\n [LegendStateValue.selectedHover]: {},\n [LegendStateValue.unSelected]: {},\n [LegendStateValue.unSelectedHover]: {}\n};\n\nloadDiscreteLegendComponent();\nexport class DiscreteLegend extends LegendBase<DiscreteLegendAttrs> {\n name = 'discreteLegend';\n\n private _itemsContainer: IGroup | null = null;\n private _itemWidthByUser: number | undefined;\n private _itemHeightByUser: number | undefined = undefined;\n private _itemHeight = 0; // 存储每一个图例项的高度\n private _itemMaxWidth = 0; // 存储图例项的最大的宽度\n private _pager!: Pager;\n private _lastActiveItem: IGroup;\n\n static defaultAttributes: Partial<DiscreteLegendAttrs> = {\n layout: 'horizontal',\n title: {\n align: 'start',\n space: DEFAULT_TITLE_SPACE,\n textStyle: {\n fontSize: 12,\n fontWeight: 'bold',\n fill: '#2C3542'\n }\n },\n item: {\n spaceCol: DEFAULT_ITEM_SPACE_COL,\n spaceRow: DEFAULT_ITEM_SPACE_ROW,\n shape: {\n space: DEFAULT_SHAPE_SPACE,\n style: {\n size: DEFAULT_SHAPE_SIZE,\n cursor: 'pointer'\n },\n state: {\n selectedHover: {\n opacity: 0.85\n },\n unSelected: {\n opacity: 0.5\n }\n }\n },\n label: {\n space: DEFAULT_LABEL_SPACE,\n style: {\n fontSize: 12,\n fill: '#2C3542',\n cursor: 'pointer'\n },\n state: {\n selectedHover: {\n opacity: 0.85\n },\n unSelected: {\n fill: '#D8D8D8'\n }\n }\n },\n value: {\n alignRight: false,\n style: {\n fontSize: 12,\n fill: '#ccc',\n cursor: 'pointer'\n },\n state: {\n selectedHover: {\n opacity: 0.85\n },\n unSelected: {\n fill: '#D8D8D8'\n }\n }\n },\n background: {\n style: {\n cursor: 'pointer'\n }\n },\n focus: false,\n focusIconStyle: {\n size: DEFAULT_SHAPE_SIZE,\n symbolType:\n 'M8 1C11.866 1 15 4.13401 15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1ZM8.75044 2.55077L8.75 3.75H7.25L7.25006 2.5507C4.81247 2.88304 2.88304 4.81247 2.5507 7.25006L3.75 7.25V8.75L2.55077 8.75044C2.8833 11.1878 4.81264 13.117 7.25006 13.4493L7.25 12.25H8.75L8.75044 13.4492C11.1876 13.1167 13.1167 11.1876 13.4492 8.75044L12.25 8.75V7.25L13.4493 7.25006C13.117 4.81264 11.1878 2.8833 8.75044 2.55077ZM8 5.5C9.38071 5.5 10.5 6.61929 10.5 8C10.5 9.38071 9.38071 10.5 8 10.5C6.61929 10.5 5.5 9.38071 5.5 8C5.5 6.61929 6.61929 5.5 8 5.5ZM8 7C7.44772 7 7 7.44772 7 8C7 8.55228 7.44772 9 8 9C8.55228 9 9 8.55228 9 8C9 7.44772 8.55228 7 8 7Z',\n fill: '#333',\n cursor: 'pointer'\n }\n },\n autoPage: true,\n pager: {\n space: DEFAULT_PAGER_SPACE,\n handler: {\n style: { size: 10 },\n space: 4\n }\n },\n hover: true,\n select: true,\n selectMode: 'multiple',\n allowAllCanceled: true\n };\n\n constructor(attributes: DiscreteLegendAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, DiscreteLegend.defaultAttributes, attributes));\n }\n\n /**\n * 更新选中数据\n * @param value 选中数据范围\n * @returns\n */\n setSelected(selectedData: (string | number)[]) {\n (this._itemsContainer?.getChildren() as IGroup[]).forEach(item => {\n // @ts-ignore\n const itemData = item.data as LegendItemDatum;\n if (selectedData.includes(itemData.label)) {\n this._setLegendItemState(item, LegendStateValue.selected);\n this._removeLegendItemState(item, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover]);\n } else {\n // 如果当前为选中状态,则取消选中\n this._removeLegendItemState(item, [LegendStateValue.selected, LegendStateValue.selectedHover]);\n this._setLegendItemState(item, LegendStateValue.unSelected);\n }\n });\n }\n\n protected _renderContent() {\n const { item = {}, items, reversed, maxCol = 1, maxRow = 2 } = this.attribute as DiscreteLegendAttrs;\n if (item.visible === false || isEmpty(items)) {\n return;\n }\n\n let legendItems = items;\n if (reversed) {\n legendItems = items?.reverse();\n }\n\n const itemsContainer = graphicCreator.group({\n x: 0,\n y: 0\n });\n this._itemsContainer = itemsContainer;\n\n const { layout, maxWidth, maxHeight, defaultSelected = [], autoPage } = this.attribute;\n const isHorizontal = layout === 'horizontal';\n\n const {\n spaceCol = DEFAULT_ITEM_SPACE_COL,\n spaceRow = DEFAULT_ITEM_SPACE_ROW,\n maxWidth: maxItemWidth,\n width: itemWidth,\n height: itemHeight\n } = item;\n\n // 根据用户声明的 maxItemWidth 和 itemWidth 获取图例项宽度\n if (isValid(maxItemWidth)) {\n if (isValid(itemWidth)) {\n this._itemWidthByUser = Math.min(maxItemWidth, itemWidth);\n } else {\n this._itemWidthByUser = maxItemWidth;\n }\n } else if (isValid(itemWidth)) {\n this._itemWidthByUser = itemWidth;\n }\n\n // 存储用户指定图例项高度\n if (isValid(itemHeight)) {\n this._itemHeightByUser = itemHeight;\n }\n let doWrap = false; // 水平布局换行标识\n let maxWidthInCol = 0; // 存储每一列最大的宽度,用于垂直布局的换列\n let startX = 0;\n let startY = 0;\n let maxPages = 1;\n let pages = 1;\n legendItems.forEach((item, index) => {\n if (!item.id) {\n item.id = item.label; // 如果没有设置 id,默认使用 label\n }\n item.index = index; // 用于维护图例的顺序\n\n const itemGroup = this._renderEachItem(\n item,\n isEmpty(defaultSelected) ? true : defaultSelected?.includes(item.label),\n index,\n legendItems\n );\n const itemWidth = itemGroup.attribute.width;\n const itemHeight = itemGroup.attribute.height;\n this._itemHeight = Math.max(this._itemHeight, itemHeight);\n maxWidthInCol = Math.max(itemWidth, maxWidthInCol);\n\n this._itemMaxWidth = Math.max(itemWidth, this._itemMaxWidth);\n\n if (isHorizontal) {\n maxPages = maxRow;\n // 水平布局\n if (isValid(maxWidth)) {\n if (itemWidth >= maxWidth) {\n // 如果图例项本身就大于 maxWidth\n doWrap = true;\n if (index > 0) {\n startX = 0;\n startY += itemHeight + spaceRow;\n pages += 1;\n }\n } else if (maxWidth < startX + itemWidth) {\n // 检测是否需要换行:如果用户声明了 maxWidth 并且超出了,则进行换行\n doWrap = true;\n startX = 0;\n startY += itemHeight + spaceRow;\n pages += 1;\n }\n }\n if (index > 0) {\n itemGroup.setAttributes({\n x: startX,\n y: startY\n });\n }\n startX += spaceCol + itemWidth;\n } else {\n maxPages = maxCol;\n // 垂直布局\n if (isValid(maxHeight) && maxHeight < startY + itemHeight) {\n // 检测是否换列:如果用户声明了 maxHeight 并且超出了,则进行换列\n doWrap = true;\n startY = 0;\n startX += maxWidthInCol + spaceCol;\n maxWidthInCol = 0;\n pages += 1;\n }\n if (index > 0) {\n itemGroup.setAttributes({\n x: startX,\n y: startY\n });\n }\n startY += spaceRow + itemHeight;\n }\n\n itemsContainer.add(itemGroup);\n });\n\n // TODO: 添加测试用例\n let pagerRendered = false;\n if (doWrap && autoPage && pages > maxPages) {\n // 进行分页处理\n pagerRendered = this._renderPager(isHorizontal);\n }\n\n if (!pagerRendered) {\n itemsContainer.setAttribute(\n 'y',\n this._title ? this._title.AABBBounds.height() + get(this.attribute, 'title.space', 8) : 0\n );\n this._innerView.add(itemsContainer);\n }\n }\n\n protected _bindEvents() {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n if (!this._itemsContainer) {\n return;\n }\n\n const { hover = true, select = true } = this.attribute;\n if (hover) {\n this._itemsContainer.addEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n this._itemsContainer.addEventListener('pointerleave', this._onUnHover as EventListenerOrEventListenerObject);\n }\n\n if (select) {\n this._itemsContainer.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _renderEachItem(item: LegendItemDatum, isSelected: boolean, index: number, items: LegendItemDatum[]) {\n const { id, label, value, shape } = item;\n const { padding = 0, focus, focusIconStyle } = this.attribute.item as LegendItem;\n\n const { shape: shapeAttr, label: labelAttr, value: valueAttr, background } = this.attribute.item as LegendItem;\n\n const shapeStyle = this._handleStyle(shapeAttr, item, isSelected, index, items);\n const labelStyle = this._handleStyle(labelAttr, item, isSelected, index, items);\n const valueStyle = this._handleStyle(valueAttr, item, isSelected, index, items);\n const backgroundStyle = this._handleStyle(background, item, isSelected, index, items);\n\n const parsedPadding = normalizePadding(padding);\n\n let itemGroup;\n if (background.visible === false) {\n itemGroup = graphicCreator.group({\n x: 0,\n y: 0,\n cursor: (backgroundStyle.style as IGroupGraphicAttribute)?.cursor\n });\n this._appendDataToShape(itemGroup, LEGEND_ELEMENT_NAME.item, item, itemGroup);\n } else {\n itemGroup = graphicCreator.group({\n x: 0,\n y: 0,\n ...backgroundStyle.style\n });\n this._appendDataToShape(itemGroup, LEGEND_ELEMENT_NAME.item, item, itemGroup, backgroundStyle.state);\n }\n itemGroup.id = `${id ?? label}-${index}`;\n\n itemGroup.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n\n const innerGroup = graphicCreator.group({\n x: 0,\n y: 0,\n pickable: false\n });\n itemGroup.add(innerGroup);\n\n let focusStartX = 0;\n let shapeSize = 0;\n let shapeSpace = 0;\n if (shapeAttr && shapeAttr.visible !== false) {\n const s = get(shapeStyle, 'style.size', DEFAULT_SHAPE_SIZE);\n if (isArray(s)) {\n shapeSize = s[0] || 0;\n } else {\n shapeSize = s;\n }\n shapeSpace = get(shapeAttr, 'space', DEFAULT_SHAPE_SPACE);\n const itemShape = graphicCreator.symbol({\n x: 0,\n y: 0,\n symbolType: 'circle',\n strokeBoundsBuffer: 0,\n ...shape,\n ...shapeStyle.style\n });\n // 处理下 shape 的 fill stroke\n Object.keys(shapeStyle.state || {}).forEach(key => {\n const color =\n (shapeStyle.state[key] as ISymbolGraphicAttribute).fill ||\n (shapeStyle.state[key] as ISymbolGraphicAttribute).stroke;\n if (shape.fill && isNil((shapeStyle.state[key] as ISymbolGraphicAttribute).fill) && color) {\n (shapeStyle.state[key] as ISymbolGraphicAttribute).fill = color as string;\n }\n\n if (shape.stroke && isNil((shapeStyle.state[key] as ISymbolGraphicAttribute).stroke) && color) {\n (shapeStyle.state[key] as ISymbolGraphicAttribute).stroke = color as string;\n }\n });\n this._appendDataToShape(itemShape, LEGEND_ELEMENT_NAME.itemShape, item, itemGroup, shapeStyle.state);\n\n itemShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n innerGroup.add(itemShape);\n }\n\n let focusShape;\n let focusSpace = 0;\n if (focus) {\n const focusSize = get(focusIconStyle, 'size', DEFAULT_SHAPE_SIZE);\n // 绘制聚焦按钮\n focusShape = graphicCreator.symbol({\n x: 0,\n y: -focusSize / 2 - 1,\n strokeBoundsBuffer: 0,\n ...focusIconStyle,\n visible: true,\n pickMode: 'imprecise',\n boundsPadding: parsedPadding\n });\n this._appendDataToShape(focusShape, LEGEND_ELEMENT_NAME.focus, item, itemGroup);\n\n focusSpace = focusSize;\n }\n let labelShape;\n const text = labelAttr.formatMethod ? labelAttr.formatMethod(label, item, index) : label;\n const labelAttributes = {\n x: shapeSize / 2 + shapeSpace,\n y: 0,\n textAlign: 'start',\n textBaseline: 'middle',\n lineHeight: (labelStyle.style as ITextGraphicAttribute)?.fontSize,\n ...labelStyle.style,\n text\n };\n if (isRichText(labelAttributes)) {\n labelShape = graphicCreator.richtext(richTextAttributeTransform(labelAttributes));\n } else {\n labelShape = graphicCreator.text(labelAttributes);\n }\n\n this._appendDataToShape(labelShape, LEGEND_ELEMENT_NAME.itemLabel, item, itemGroup, labelStyle.state);\n labelShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n innerGroup.add(labelShape);\n const labelSpace = get(labelAttr, 'space', DEFAULT_LABEL_SPACE);\n if (isValid(value)) {\n const valueSpace = get(valueAttr, 'space', focus ? DEFAULT_VALUE_SPACE : 0);\n const valueText = valueAttr.formatMethod ? valueAttr.formatMethod(value, item, index) : value;\n const valueAttributes = {\n x: 0,\n y: 0,\n textAlign: 'start',\n textBaseline: 'middle',\n lineHeight: (valueStyle.style as ITextGraphicAttribute).fontSize,\n ...valueStyle.style,\n text: valueText\n };\n let valueShape;\n if (isRichText(valueAttributes)) {\n valueShape = graphicCreator.richtext(richTextAttributeTransform(valueAttributes));\n } else {\n valueShape = graphicCreator.text(valueAttributes);\n }\n\n this._appendDataToShape(valueShape, LEGEND_ELEMENT_NAME.itemValue, item, itemGroup, valueStyle.state);\n valueShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n\n if (this._itemWidthByUser) {\n // 计算用来防止文本的宽度\n const layoutWidth =\n this._itemWidthByUser -\n parsedPadding[1] -\n parsedPadding[3] -\n shapeSize -\n shapeSpace -\n labelSpace -\n focusSpace -\n valueSpace;\n const valueBounds = valueShape.AABBBounds;\n const labelBounds = labelShape.AABBBounds;\n const valueWidth = valueBounds.width();\n const labelWidth = labelBounds.width();\n if (labelWidth > layoutWidth) {\n if ((layoutWidth - valueWidth) / labelWidth > 0.4) {\n // 设置一个值,如果剩余的宽度和 label 自身的比例不低于 0.4 的话,优先展示全 label\n labelShape.setAttribute('maxLineWidth', layoutWidth - valueWidth);\n } else {\n valueShape.setAttribute('maxLineWidth', layoutWidth * 0.5);\n labelShape.setAttribute('maxLineWidth', layoutWidth * 0.5);\n }\n } else {\n valueShape.setAttribute('maxLineWidth', layoutWidth - labelWidth);\n }\n\n if (valueAttr.alignRight) {\n valueShape.setAttributes({\n // @ts-ignore\n textAlign: 'right',\n x: this._itemWidthByUser - shapeSize / 2 - parsedPadding[1] - parsedPadding[3] - focusSpace - valueSpace\n });\n } else {\n valueShape.setAttribute('x', valueSpace + (labelShape.AABBBounds.empty() ? 0 : labelShape.AABBBounds.x2));\n }\n } else {\n valueShape.setAttribute('x', valueSpace + (labelShape.AABBBounds.empty() ? 0 : labelShape.AABBBounds.x2));\n }\n focusStartX = valueSpace + (valueShape.AABBBounds.empty() ? 0 : valueShape.AABBBounds.x2);\n\n innerGroup.add(valueShape);\n } else if (this._itemWidthByUser) {\n labelShape.setAttribute(\n 'maxLineWidth',\n this._itemWidthByUser - parsedPadding[1] - parsedPadding[3] - shapeSize - shapeSpace - focusSpace\n );\n\n focusStartX = labelSpace + (labelShape.AABBBounds.empty() ? 0 : labelShape.AABBBounds.x2);\n } else {\n focusStartX = labelSpace + (labelShape.AABBBounds.empty() ? 0 : labelShape.AABBBounds.x2);\n }\n\n if (focusShape) {\n focusShape.setAttribute('x', focusStartX);\n innerGroup.add(focusShape);\n }\n\n const innerGroupBounds = innerGroup.AABBBounds;\n const innerGroupWidth = innerGroupBounds.width();\n const innerGroupHeight = innerGroupBounds.height();\n const itemGroupWidth = isValid(this.attribute.item.width)\n ? this.attribute.item.width\n : innerGroupWidth + parsedPadding[1] + parsedPadding[3];\n const itemGroupHeight = this._itemHeightByUser || innerGroupHeight + parsedPadding[0] + parsedPadding[2];\n itemGroup.attribute.width = itemGroupWidth;\n itemGroup.attribute.height = itemGroupHeight;\n focusShape && focusShape.setAttribute('visible', false);\n innerGroup.translateTo(-innerGroupBounds.x1 + parsedPadding[3], -innerGroupBounds.y1 + parsedPadding[0]);\n return itemGroup;\n }\n\n private _renderPager(isHorizontal: boolean) {\n const renderStartY = this._title ? this._title.AABBBounds.height() + get(this.attribute, 'title.space', 8) : 0;\n const { maxWidth, maxHeight, maxCol = 1, maxRow = 2, item = {}, pager = {}, disableTriggerEvent } = this.attribute;\n const { spaceCol = DEFAULT_ITEM_SPACE_COL, spaceRow = DEFAULT_ITEM_SPACE_ROW } = item;\n const itemsContainer = this._itemsContainer as IGroup;\n const {\n animation = true,\n animationDuration = 450,\n animationEasing = 'quadIn',\n space: pagerSpace = DEFAULT_PAGER_SPACE,\n position = 'middle',\n ...pageStyle\n } = pager;\n\n let pagerComp: Pager;\n let pageHeight = 0; // 每页的高度\n let pageWidth = 0; // 每页的宽度\n let startX = 0; // 临时变量,用来存储布局的起始点\n let startY = 0; // 临时变量,用来存储布局的起始点\n let pages = 1; // 页数\n\n if (isHorizontal) {\n // 水平布局,支持上下翻页\n pagerComp = new Pager({\n layout: maxRow === 1 ? 'horizontal' : 'vertical',\n total: 99,\n ...merge(\n {\n handler: {\n preShape: 'triangleUp',\n nextShape: 'triangleDown'\n }\n },\n pageStyle\n ),\n disableTriggerEvent\n });\n this._pager = pagerComp;\n this._innerView.add(pagerComp as unknown as INode);\n pageHeight = (maxRow - 1) * spaceRow + this._itemHeight * maxRow;\n pageWidth = (maxWidth as number) - pagerComp.AABBBounds.width() - pagerSpace;\n\n if (pageWidth <= 0) {\n // 布局空间不够则不进行分页器渲染\n this._innerView.removeChild(pagerComp as unknown as INode);\n return false;\n }\n\n // 重新进行布局\n (itemsContainer.getChildren() as unknown as IGroup[]).forEach((item, index) => {\n const { width, height } = item.attribute;\n\n if (pageWidth < startX + (width as number)) {\n // 超出了,则换行\n startX = 0;\n startY += (height as number) + spaceRow;\n pages += 1;\n }\n if (index > 0) {\n item.setAttributes({\n x: startX,\n y: startY\n });\n }\n startX += spaceCol + (width as number);\n });\n\n pagerComp.setAttribute('total', Math.ceil(pages / maxRow));\n let y;\n if (position === 'start') {\n y = renderStartY;\n } else if (position === 'end') {\n y = renderStartY + pageHeight - pagerComp.AABBBounds.height() / 2;\n } else {\n y = renderStartY + pageHeight / 2 - pagerComp.AABBBounds.height() / 2;\n }\n pagerComp.setAttributes({\n x: pageWidth,\n y\n });\n } else {\n // 垂直布局,支持左右翻页\n pagerComp = new Pager({\n layout: 'horizontal',\n total: 99, // 用于估算,\n disableTriggerEvent,\n ...pageStyle\n });\n this._pager = pagerComp;\n this._innerView.add(pagerComp as unknown as INode);\n\n pageWidth = this._itemMaxWidth * maxCol + (maxCol - 1) * spaceCol;\n pageHeight = (maxHeight as number) - pagerComp.AABBBounds.height() - pagerSpace - renderStartY;\n\n if (pageHeight <= 0) {\n // 布局空间不够则不进行分页器渲染\n this._innerView.removeChild(pagerComp as unknown as INode);\n return false;\n }\n\n // 重新进行布局\n (itemsContainer.getChildren() as unknown as IGroup[]).forEach((item, index) => {\n const { height } = item.attribute;\n if (pageHeight < startY + (height as number)) {\n startY = 0;\n startX += this._itemMaxWidth + spaceCol;\n pages += 1;\n }\n if (index > 0) {\n item.setAttributes({\n x: startX,\n y: startY\n });\n }\n startY += spaceRow + (height as number);\n });\n\n pagerComp.setAttribute('total', Math.ceil(pages / maxCol));\n\n let x;\n if (position === 'start') {\n x = 0;\n } else if (position === 'end') {\n x = pageWidth - pagerComp.AABBBounds.width();\n } else {\n x = (pageWidth - pagerComp.AABBBounds.width()) / 2;\n }\n pagerComp.setAttributes({\n x,\n y: (maxHeight as number) - pagerComp.AABBBounds.height()\n });\n }\n\n // 初始化 defaultCurrent\n if (pager.defaultCurrent > 1) {\n if (isHorizontal) {\n itemsContainer.setAttribute('y', -(pager.defaultCurrent - 1) * (pageHeight + spaceRow));\n } else {\n itemsContainer.setAttribute('x', -(pager.defaultCurrent - 1) * (pageWidth + spaceCol));\n }\n }\n\n const clipGroup = graphicCreator.group({\n x: 0,\n y: renderStartY,\n width: pageWidth,\n height: pageHeight,\n clip: true,\n pickable: false\n });\n clipGroup.add(itemsContainer);\n this._innerView.add(clipGroup);\n\n const onPaging = (e: CustomEvent) => {\n const { current } = e.detail;\n\n if (animation) {\n itemsContainer\n .animate()\n .to(\n isHorizontal\n ? { y: -(current - 1) * (pageHeight + spaceRow) }\n : { x: -(current - 1) * (pageWidth + spaceCol) },\n animationDuration,\n animationEasing\n );\n } else {\n if (isHorizontal) {\n itemsContainer.setAttribute('y', -(current - 1) * (pageHeight + spaceRow));\n } else {\n itemsContainer.setAttribute('x', -(current - 1) * (pageWidth + spaceCol));\n }\n }\n };\n\n this._pager.addEventListener('toPrev', onPaging);\n this._pager.addEventListener('toNext', onPaging);\n\n return true;\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n if (target && target.name && target.name.startsWith(LEGEND_ELEMENT_NAME.item)) {\n // @ts-ignore\n const legendItem = target.delegate;\n\n // 如果上个激活元素存在,则判断当前元素是否和上个激活元素相同,相同则不做处理,不相同则触发 unhover\n if (this._lastActiveItem) {\n if (this._lastActiveItem.id === legendItem.id) {\n return;\n }\n this._unHover(this._lastActiveItem, e);\n }\n this._hover(legendItem, e);\n } else if (this._lastActiveItem) {\n this._unHover(this._lastActiveItem, e);\n this._lastActiveItem = null;\n }\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n if (this._lastActiveItem) {\n this._unHover(this._lastActiveItem, e);\n this._lastActiveItem = null;\n }\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n if (target && target.name && target.name.startsWith(LEGEND_ELEMENT_NAME.item)) {\n // @ts-ignore\n const legendItem = target.delegate;\n\n // 图例聚焦功能\n if (target.name === LEGEND_ELEMENT_NAME.focus) {\n const isFocusSelected = legendItem.hasState(LegendStateValue.focus);\n legendItem.toggleState(LegendStateValue.focus);\n\n if (isFocusSelected) {\n // 当前为选中态,则再次点击变成全选\n this._itemsContainer?.getChildren().forEach(item => {\n this._removeLegendItemState(\n item as unknown as IGroup,\n [LegendStateValue.unSelected, LegendStateValue.unSelectedHover, LegendStateValue.focus],\n e\n );\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.selected, e);\n });\n } else {\n this._setLegendItemState(legendItem, LegendStateValue.selected, e);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover], e);\n // 单选逻辑,当前被点击的图例项设置为选中态,其他全部设置为非选中态\n this._itemsContainer?.getChildren().forEach(item => {\n if (legendItem !== item) {\n this._removeLegendItemState(\n item as unknown as IGroup,\n [LegendStateValue.selected, LegendStateValue.selectedHover, LegendStateValue.focus],\n e\n );\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.unSelected, e);\n }\n });\n }\n } else {\n // 清除 focus 状态\n this._itemsContainer?.getChildren().forEach(item => {\n (item as unknown as IGroup).removeState(LegendStateValue.focus);\n });\n const { selectMode = 'multiple', allowAllCanceled = true } = this.attribute;\n const isSelected = legendItem.hasState(LegendStateValue.selected);\n const currentSelectedItems = this._getSelectedLegends();\n if (selectMode === 'multiple') {\n if (allowAllCanceled === false && isSelected && currentSelectedItems.length === 1) {\n this._dispatchLegendEvent(LegendEvent.legendItemClick, legendItem, e);\n return;\n }\n // 多选逻辑\n if (isSelected) {\n // 如果当前为选中状态,则取消选中\n this._removeLegendItemState(legendItem, [LegendStateValue.selected, LegendStateValue.selectedHover], e);\n this._setLegendItemState(legendItem, LegendStateValue.unSelected, e);\n } else {\n // 如果当前为非选中态,则设置为选中状态\n this._setLegendItemState(legendItem, LegendStateValue.selected, e);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover], e);\n }\n } else {\n this._setLegendItemState(legendItem, LegendStateValue.selected, e);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover], e);\n\n // 单选逻辑,当前被点击的图例项设置为选中态,其他全部设置为非选中态\n this._itemsContainer?.getChildren().forEach(item => {\n if (legendItem !== item) {\n this._removeLegendItemState(\n item as unknown as IGroup,\n [LegendStateValue.selected, LegendStateValue.selectedHover],\n e\n );\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.unSelected, e);\n }\n });\n }\n }\n\n this._dispatchLegendEvent(LegendEvent.legendItemClick, legendItem, e);\n }\n };\n\n private _hover(legendItem: IGroup, e: FederatedPointerEvent) {\n this._lastActiveItem = legendItem;\n const selected = legendItem.hasState(LegendStateValue.selected);\n\n if (selected) {\n // use selectedHover state\n this._setLegendItemState(legendItem, LegendStateValue.selectedHover, e);\n } else {\n // use unSelectedHover state\n this._setLegendItemState(legendItem, LegendStateValue.unSelectedHover, e);\n }\n\n const focusButton = (legendItem.getChildren()[0] as unknown as IGroup).find(\n node => node.name === LEGEND_ELEMENT_NAME.focus,\n false\n ) as IGraphic;\n if (focusButton) {\n focusButton.setAttribute('visible', true);\n }\n\n this._dispatchLegendEvent(LegendEvent.legendItemHover, legendItem, e);\n }\n\n private _unHover(legendItem: IGroup, e: FederatedPointerEvent) {\n let attributeUpdate = false;\n if (legendItem.hasState(LegendStateValue.unSelectedHover) || legendItem.hasState(LegendStateValue.selectedHover)) {\n attributeUpdate = true;\n }\n legendItem.removeState(LegendStateValue.unSelectedHover);\n legendItem.removeState(LegendStateValue.selectedHover);\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach((child: any) => {\n if (\n !attributeUpdate &&\n (child.hasState(LegendStateValue.unSelectedHover) || child.hasState(LegendStateValue.selectedHover))\n ) {\n attributeUpdate = true;\n }\n (child as unknown as IGraphic).removeState(LegendStateValue.unSelectedHover);\n (child as unknown as IGraphic).removeState(LegendStateValue.selectedHover);\n });\n\n const focusButton = (legendItem.getChildren()[0] as unknown as IGroup).find(\n node => node.name === LEGEND_ELEMENT_NAME.focus,\n false\n ) as IGraphic;\n if (focusButton) {\n focusButton.setAttribute('visible', false);\n }\n\n if (attributeUpdate) {\n this._dispatchLegendEvent(LegendEvent.legendItemAttributeUpdate, legendItem, e);\n }\n this._dispatchLegendEvent(LegendEvent.legendItemUnHover, legendItem, e);\n }\n\n private _setLegendItemState(legendItem: IGroup, stateName: string, e?: FederatedPointerEvent) {\n const keepCurrentStates = true;\n let attributeUpdate = false;\n if (!legendItem.hasState(stateName)) {\n attributeUpdate = true;\n }\n legendItem.addState(stateName, keepCurrentStates);\n // TODO: 这个比较 hack\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach((child: IGraphic) => {\n if (child.name !== LEGEND_ELEMENT_NAME.focus) {\n if (!attributeUpdate && !child.hasState(stateName)) {\n attributeUpdate = true;\n }\n (child as unknown as IGraphic).addState(stateName, keepCurrentStates);\n }\n });\n if (attributeUpdate) {\n this._dispatchLegendEvent(LegendEvent.legendItemAttributeUpdate, legendItem, e);\n }\n }\n\n private _removeLegendItemState(legendItem: IGroup, stateNames: string[], e?: FederatedPointerEvent) {\n let attributeUpdate = false;\n stateNames.forEach(name => {\n if (!attributeUpdate && legendItem.hasState(name)) {\n attributeUpdate = true;\n }\n legendItem.removeState(name);\n });\n // TODO: 这个比较 hack\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach(child => {\n if (child.name !== LEGEND_ELEMENT_NAME.focus) {\n stateNames.forEach(name => {\n if (!attributeUpdate && (child as unknown as IGraphic).hasState(name)) {\n attributeUpdate = true;\n }\n (child as unknown as IGraphic).removeState(name);\n });\n }\n });\n if (attributeUpdate) {\n this._dispatchLegendEvent(LegendEvent.legendItemAttributeUpdate, legendItem, e);\n }\n }\n\n // 获取当前选中的图例项\n private _getSelectedLegends() {\n const selectedData: LegendItemDatum[] = [];\n this._itemsContainer?.getChildren().forEach(item => {\n if ((item as unknown as IGroup).hasState(LegendStateValue.selected)) {\n // @ts-ignore\n selectedData.push(item.data);\n }\n });\n\n return selectedData;\n }\n\n private _appendDataToShape(shape: any, name: string, data: any, delegateShape: any, states: any = {}) {\n shape.name = name;\n shape.data = data;\n shape.delegate = delegateShape;\n shape.states = merge({}, DEFAULT_STATES, states);\n }\n\n private _dispatchLegendEvent(eventName: string, legendItem: any, event: FederatedPointerEvent) {\n const currentSelectedItems = this._getSelectedLegends();\n // 需要保持显示顺序\n currentSelectedItems.sort((pre: LegendItemDatum, next: LegendItemDatum) => pre.index - next.index);\n\n const currentSelected = currentSelectedItems.map((obj: LegendItemDatum) => obj.label);\n\n this._dispatchEvent(eventName, {\n item: legendItem, // 当前被选中的图例项整体\n data: legendItem.data, // 当前图例项的数据\n selected: legendItem.hasState(LegendStateValue.selected), // 当前图例项是否被选中\n currentSelectedItems,\n currentSelected,\n event\n });\n }\n\n // 处理回调函数\n private _handleStyle(\n config: any,\n item: LegendItemDatum,\n isSelected: boolean,\n index: number,\n items: LegendItemDatum[]\n ) {\n const newConfig: any = {};\n // 处理下样式\n if (config.style) {\n if (isFunction(config.style)) {\n newConfig.style = config.style(item, isSelected, index, items);\n } else {\n newConfig.style = config.style;\n }\n }\n\n if (config.state) {\n newConfig.state = {};\n\n Object.keys(config.state).forEach(key => {\n if (config.state[key]) {\n if (isFunction(config.state[key])) {\n newConfig.state[key] = config.state[key](item, isSelected, index, items);\n } else {\n newConfig.state[key] = config.state[key];\n }\n }\n });\n }\n\n return newConfig;\n }\n}\n"]}
|
package/cjs/marker/base.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare abstract class Marker<T extends MarkerAttrs> extends AbstractComp
|
|
|
11
11
|
protected abstract initMarker(container: IGroup): any;
|
|
12
12
|
protected abstract updateMarker(): any;
|
|
13
13
|
protected abstract isValidPoints(): any;
|
|
14
|
-
setAttribute(key:
|
|
14
|
+
setAttribute(key: string, value: any, forceUpdateTag?: boolean | undefined): void;
|
|
15
15
|
private _initContainer;
|
|
16
16
|
private _updateContainer;
|
|
17
17
|
protected render(): void;
|
package/cjs/marker/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/marker/base.ts"],"names":[],"mappings":";;;AACA,yDAAwD;AACxD,uCAAiD;AAIjD,MAAsB,MAA8B,SAAQ,wBAA8B;IAA1F;;QACE,SAAI,GAAG,QAAQ,CAAC;IAoFlB,CAAC;IAzEC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"sources":["../src/marker/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import type { IGroup } from '@visactor/vrender-core';\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { Tag } from '../tag';\nimport type { MarkerAttrs } from './type';\n\nexport abstract class Marker<T extends MarkerAttrs> extends AbstractComponent<Required<T>> {\n name = 'marker';\n private _containerClip!: IGroup;\n private _container!: IGroup;\n\n protected _label!: Tag;\n\n protected abstract setLabelPos(): any;\n protected abstract initMarker(container: IGroup): any;\n protected abstract updateMarker(): any;\n protected abstract isValidPoints(): any;\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean | undefined): void {\n super.setAttribute(key, value, forceUpdateTag);\n if (key === 'visible') {\n this.render();\n }\n }\n\n private _initContainer() {\n const { limitRect = {} as T['limitRect'], clipInRange } = this.attribute;\n let group;\n if (clipInRange) {\n // 如果用户配置了剪切\n const groupClip = graphicCreator.group({\n ...limitRect,\n clip: true,\n pickable: false\n });\n group = graphicCreator.group({\n x: -(limitRect.x ?? 0),\n y: -(limitRect.y ?? 0),\n pickable: false\n });\n groupClip.add(group);\n this._containerClip = groupClip;\n this.add(groupClip);\n } else {\n group = graphicCreator.group({\n x: 0,\n y: 0,\n pickable: false\n });\n this.add(group);\n }\n group.name = 'marker-container';\n this._container = group;\n }\n\n private _updateContainer() {\n const { limitRect = {} as T['limitRect'], clipInRange } = this.attribute;\n if (this._containerClip) {\n this._containerClip.setAttributes({\n ...limitRect\n });\n }\n\n this._container.setAttributes({\n x: clipInRange ? -(limitRect.x ?? 0) : 0,\n y: clipInRange ? -(limitRect.y ?? 0) : 0\n });\n }\n\n protected render() {\n // 因为标注本身不规则,所以默认将组件的 group 设置为不可拾取\n this.setAttribute('pickable', false);\n\n const markerVisible = this.attribute.visible ?? true;\n if (this.attribute.interactive === false) {\n this.setAttribute('childrenPickable', false);\n }\n\n if (markerVisible && this.isValidPoints()) {\n if (!this._container) {\n this._initContainer();\n this.initMarker(this._container);\n } else {\n this._updateContainer();\n this.updateMarker();\n }\n } else {\n this._container = null;\n this.removeAllChild(true);\n }\n }\n}\n"]}
|
package/es/axis/index.js
CHANGED
package/es/axis/line.js
CHANGED
|
@@ -198,7 +198,7 @@ export class LineAxis extends AxisBase {
|
|
|
198
198
|
labelRotateAngle: autoRotateAngle,
|
|
199
199
|
orient: orient
|
|
200
200
|
}), autoLimit && isValidNumber(limitLength) && limitLength > 0) {
|
|
201
|
-
const verticalLimitLength = "left"
|
|
201
|
+
const verticalLimitLength = "left" === orient || "right" === orient ? Math.abs(this.attribute.start.y - this.attribute.end.y) / labelShapes.length : autoHide || autoRotate ? 1 / 0 : Math.abs(this.attribute.start.x - this.attribute.end.x) / labelShapes.length;
|
|
202
202
|
autoLimitFunc(labelShapes, {
|
|
203
203
|
limitLength: limitLength,
|
|
204
204
|
verticalLimitLength: verticalLimitLength,
|
package/es/axis/line.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/axis/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["/**\n * @description 直线型坐标轴\n */\n// eslint-disable-next-line no-duplicate-imports\nimport {\n get,\n isNil,\n merge,\n isNumberClose,\n isEmpty,\n isFunction,\n isValidNumber,\n isValid,\n normalizePadding,\n mixin,\n last as peek\n} from '@visactor/vutils';\nimport { graphicCreator } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TextAlignType, IGroup, INode, IText, TextBaselineType } from '@visactor/vrender-core';\nimport type { SegmentAttributes } from '../segment';\n// eslint-disable-next-line no-duplicate-imports\nimport { Segment } from '../segment';\nimport { angleTo } from '../util/matrix';\nimport type { TagAttributes } from '../tag';\nimport type { LineAttributes, LineAxisAttributes, TitleAttributes, AxisItem } from './type';\nimport { AxisBase } from './base';\nimport { DEFAULT_AXIS_THEME } from './config';\nimport { AXIS_ELEMENT_NAME, DEFAULT_STATES } from './constant';\nimport { measureTextSize } from '../util';\nimport { autoHide as autoHideFunc } from './overlap/auto-hide';\nimport { autoRotate as autoRotateFunc, getXAxisLabelAlign, getYAxisLabelAlign } from './overlap/auto-rotate';\nimport { autoLimit as autoLimitFunc } from './overlap/auto-limit';\nimport { alignAxisLabels } from '../util/align';\nimport { LineAxisMixin } from './mixin/line';\nimport type { ComponentOptions } from '../interface';\nimport { loadLineAxisComponent } from './register';\n\nloadLineAxisComponent();\nexport interface LineAxis\n extends Pick<LineAxisMixin, 'isInValidValue' | 'getTickCoord' | 'getVerticalVector' | 'getRelativeVector'>,\n AxisBase<LineAxisAttributes> {}\n\nexport class LineAxis extends AxisBase<LineAxisAttributes> {\n static defaultAttributes = DEFAULT_AXIS_THEME;\n\n constructor(attributes: LineAxisAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, LineAxis.defaultAttributes, attributes), options);\n }\n\n protected _renderInner(container: IGroup) {\n super._renderInner(container);\n const { panel } = this.attribute;\n\n // TODO: 目前是通过包围盒绘制,在一些情况下会有那问题,比如圆弧轴、带了箭头的坐标轴等\n // 坐标轴主体 panel\n if (panel && panel.visible) {\n const axisContainer = this.axisContainer;\n const axisContainerBounds = axisContainer.AABBBounds;\n const bgRect = graphicCreator.rect({\n x: axisContainerBounds.x1,\n y: axisContainerBounds.y1,\n width: axisContainerBounds.width(),\n height: axisContainerBounds.height(),\n ...panel.style\n });\n bgRect.name = AXIS_ELEMENT_NAME.background;\n bgRect.id = this._getNodeId('background');\n\n bgRect.states = merge({}, DEFAULT_STATES, panel.state ?? {});\n axisContainer.insertBefore(bgRect, axisContainer.firstChild);\n }\n }\n\n // TODO: break\n protected renderLine(container: IGroup): void {\n const { start, end, line } = this.attribute as LineAxisAttributes;\n const { startSymbol, endSymbol, style, breakRange, breakShape, breakShapeStyle, state, ...restLineAttrs } =\n line as LineAttributes;\n const lineAttrs = {\n points: [start, end],\n startSymbol,\n endSymbol,\n lineStyle: style,\n ...restLineAttrs\n } as SegmentAttributes;\n\n if (!isEmpty(state)) {\n lineAttrs.state = {\n line: merge({}, DEFAULT_STATES, state),\n symbol: merge({}, DEFAULT_STATES, state)\n };\n }\n\n const axisLineGroup = new Segment(lineAttrs);\n axisLineGroup.name = AXIS_ELEMENT_NAME.line;\n axisLineGroup.id = this._getNodeId('line');\n container.add(axisLineGroup as unknown as INode);\n }\n\n // TODO: 太 hack 了,需要静心优化\n protected getTitleAttribute() {\n const {\n position = 'middle',\n space = 4,\n textStyle = {},\n autoRotate = true,\n shape,\n background,\n state = {},\n ...restAttrs\n } = this.attribute.title as TitleAttributes;\n let percent = 0.5;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'end') {\n percent = 1;\n }\n const { verticalFactor = 1 } = this.attribute;\n const factor = -1 * verticalFactor;\n const point = this.getTickCoord(percent);\n const axisVector = this.getRelativeVector();\n // HACK;\n let labelLength = 0;\n if (this.attribute.label?.visible && this.attribute.label.inside === false) {\n const space = +get(this.attribute, 'label.space', 4);\n labelLength += space;\n const layerCount = Object.keys(this.axisLabelLayerSize).length;\n if (axisVector[1] === 0) {\n const labelBoundsHeight = this.axisLabelsContainer ? this.axisLabelsContainer.AABBBounds.height() : 0;\n if (isFinite(labelBoundsHeight)) {\n labelLength += labelBoundsHeight + (layerCount - 1) * space;\n } else {\n labelLength = 0;\n }\n } else {\n if (axisVector[0] === 0) {\n const boundsWidth = this.axisLabelsContainer ? this.axisLabelsContainer.AABBBounds.width() : 0;\n if (isFinite(boundsWidth)) {\n labelLength += boundsWidth + (layerCount - 1) * space;\n } else {\n labelLength = 0;\n }\n } else {\n // 发生了旋转\n Object.keys(this.axisLabelLayerSize).forEach((layer, index) => {\n labelLength += this.axisLabelLayerSize[layer].width + (index > 0 ? space : 0);\n });\n }\n\n const textAlign = this.axisLabelLayerSize[0].textAlign;\n const isTextAlignStart = textAlign === 'start' || textAlign === 'left';\n const isTextCenter = textAlign === 'center';\n const isReverse = axisVector[1] > 0;\n if (factor === 1) {\n labelLength = isReverse\n ? isTextAlignStart\n ? labelLength\n : isTextCenter\n ? labelLength / 2\n : space\n : isTextAlignStart\n ? space\n : isTextCenter\n ? labelLength / 2\n : labelLength;\n } else {\n labelLength = isReverse\n ? isTextAlignStart\n ? space\n : isTextCenter\n ? labelLength / 2\n : labelLength\n : isTextAlignStart\n ? labelLength\n : isTextCenter\n ? labelLength / 2\n : space;\n }\n }\n }\n\n // 标题都默认朝外\n let tickLength = 0;\n if (this.attribute.tick?.visible && this.attribute.tick.inside === false) {\n tickLength = this.attribute.tick.length || 4;\n }\n if (this.attribute.subTick?.visible && this.attribute.subTick.inside === false) {\n tickLength = Math.max(tickLength, this.attribute.subTick.length || 2);\n }\n\n const offset = tickLength + labelLength + space;\n const titlePoint = this.getVerticalCoord(point, offset, false); // 标题的点\n const vector = this.getVerticalVector(offset, false, { x: 0, y: 0 });\n\n let { angle } = restAttrs; // 用户设置的是角度\n let textAlign;\n if (position === 'start') {\n textAlign = 'start';\n } else if (position === 'end') {\n textAlign = 'end';\n } else {\n textAlign = 'center';\n }\n let textBaseline;\n if (isNil(angle) && autoRotate) {\n const v1: [number, number] = [1, 0]; // 水平方向的向量\n const radian = angleTo(axisVector, v1, true);\n angle = radian;\n const { verticalFactor = 1 } = this.attribute;\n const factor = -1 * verticalFactor;\n if (factor === 1) {\n textBaseline = 'bottom';\n } else {\n textBaseline = 'top';\n }\n } else {\n // if (isValid(angle)) {\n // angle = degreeToRadian(angle);\n // }\n textAlign = this.getTextAlign(vector as number[]);\n textBaseline = this.getTextBaseline(vector as number[], false);\n }\n\n const attrs: TagAttributes = {\n ...titlePoint,\n ...restAttrs,\n textStyle: {\n // @ts-ignore\n textAlign,\n // @ts-ignore\n textBaseline,\n ...textStyle\n },\n state: {\n text: merge({}, DEFAULT_STATES, state.text),\n shape: merge({}, DEFAULT_STATES, state.shape),\n panel: merge({}, DEFAULT_STATES, state.background)\n }\n };\n attrs.angle = angle;\n\n if (shape && shape.visible) {\n attrs.shape = {\n visible: true,\n ...shape.style\n };\n if (shape.space) {\n attrs.space = shape.space;\n }\n }\n\n if (background && background.visible) {\n attrs.panel = {\n visible: true,\n ...background.style\n };\n }\n\n return attrs;\n }\n\n protected getTextBaseline(vector: number[], inside?: boolean): TextBaselineType {\n let base: TextBaselineType = 'middle';\n const { verticalFactor = 1 } = this.attribute;\n const factor = (inside ? 1 : -1) * verticalFactor;\n if (isNumberClose(vector[1], 0)) {\n if (isNumberClose(vector[0], 0) && !Object.is(vector[0], -0) && !Object.is(vector[1], -0)) {\n base = factor === 1 ? 'bottom' : 'top';\n } else {\n base = 'middle';\n }\n } else if (vector[1] > 0) {\n base = 'top';\n } else if (vector[1] < 0) {\n base = 'bottom';\n }\n return base;\n }\n\n protected getLabelAlign(\n vector: [number, number],\n inside?: boolean,\n angle?: number\n ): { textAlign: TextAlignType; textBaseline: TextBaselineType } {\n const orient = this.attribute.orient;\n if (isValidNumber(angle) || (vector[0] === 0 && vector[1] === 0)) {\n if (orient === 'top' || orient === 'bottom') {\n return getXAxisLabelAlign(orient, angle);\n }\n if (orient === 'left' || orient === 'right') {\n return getYAxisLabelAlign(orient, angle);\n }\n }\n\n return {\n textAlign: this.getTextAlign(vector),\n textBaseline: this.getTextBaseline(vector, inside)\n };\n }\n\n protected beforeLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void {\n const { flush = false } = this.attribute.label || {};\n if (flush && labelShapes.length) {\n // 首尾标签向内偏移\n const { orient, start: axisStart, end: axisEnd } = this.attribute;\n const isX = orient === 'bottom' || orient === 'top';\n const first = labelShapes[0];\n const last = peek(labelShapes);\n const isInverse = isX ? first.attribute.x > last.attribute.x : first.attribute.y < last.attribute.y;\n if (isX) {\n const leftMostLabel = isInverse ? last : first;\n const rightMostLabel = isInverse ? first : last;\n const left = axisStart.x;\n const right = axisEnd.x;\n const leftBound = leftMostLabel.AABBBounds.x1;\n const rightBound = rightMostLabel.AABBBounds.x2;\n\n if (leftBound < left) {\n const angle = leftMostLabel.attribute.angle;\n\n if (angle) {\n leftMostLabel.setAttributes({ dx: (leftMostLabel.attribute.dx ?? 0) + left - leftBound });\n } else {\n leftMostLabel.setAttributes({\n x: left,\n textAlign: 'left'\n });\n }\n }\n\n if (rightBound > right) {\n const angle = rightMostLabel.attribute.angle;\n\n if (angle) {\n rightMostLabel.setAttributes({ dx: (rightMostLabel.attribute.dx ?? 0) + right - rightBound });\n } else {\n rightMostLabel.setAttributes({\n x: right,\n textAlign: 'right'\n });\n }\n }\n } else {\n const bottomMostLabel = isInverse ? last : first;\n const topMostLabel = isInverse ? first : last;\n const bottomBound = bottomMostLabel.AABBBounds.y2;\n const topBound = topMostLabel.AABBBounds.y1;\n const top = axisStart.y;\n const bottom = axisEnd.y;\n\n if (topBound < top) {\n const angle = topMostLabel.attribute.angle;\n\n if (angle) {\n // has rotate\n topMostLabel.setAttributes({\n dy: (topMostLabel.attribute.dy ?? 0) + top - topBound\n });\n } else {\n topMostLabel.setAttributes({\n y: top,\n textBaseline: 'top'\n });\n }\n }\n\n if (bottomBound > bottom) {\n const angle = bottomMostLabel.attribute.angle;\n\n if (angle) {\n bottomMostLabel.setAttributes({\n dy: (bottomMostLabel.attribute.dy ?? 0) + bottom - bottomBound\n });\n } else {\n bottomMostLabel.setAttributes({\n y: bottom,\n textBaseline: 'bottom'\n });\n }\n }\n }\n }\n\n return;\n }\n protected handleLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void {\n if (isEmpty(labelShapes)) {\n return;\n }\n\n const { verticalLimitSize, label, orient } = this.attribute;\n const limitLength = this._getAxisLabelLimitLength(verticalLimitSize, layerCount);\n\n const {\n layoutFunc,\n autoRotate,\n autoRotateAngle,\n autoLimit,\n limitEllipsis,\n autoHide,\n autoHideMethod,\n autoHideSeparation,\n lastVisible\n } = label;\n\n if (isFunction(layoutFunc)) {\n // 自定义布局\n layoutFunc(labelShapes, labelData, layer, this);\n } else {\n // order: autoRotate -> autoLimit -> autoHide\n if (autoRotate) {\n autoRotateFunc(labelShapes, {\n labelRotateAngle: autoRotateAngle,\n orient\n });\n }\n if (autoLimit && isValidNumber(limitLength) && limitLength > 0) {\n const verticalLimitLength =\n (orient === 'left' || orient === 'right') &&\n labelShapes.some(label => label.attribute.direction === 'vertical')\n ? Math.abs(this.attribute.start.y - this.attribute.end.y) / labelShapes.length\n : Infinity;\n autoLimitFunc(labelShapes, {\n limitLength,\n verticalLimitLength,\n ellipsis: limitEllipsis,\n orient\n });\n }\n if (autoHide) {\n autoHideFunc(labelShapes, {\n orient,\n method: autoHideMethod,\n separation: autoHideSeparation,\n lastVisible\n });\n }\n }\n }\n\n protected afterLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ) {\n const { verticalLimitSize, orient } = this.attribute;\n\n // 处理 verticalMinSize,根据 verticalMinSize 调整 labelContainer 的大小\n const isHorizontal = orient === 'bottom' || orient === 'top';\n const axisLabelContainerBounds = labelContainer.AABBBounds;\n let axisLabelContainerSize = isHorizontal ? axisLabelContainerBounds.height() : axisLabelContainerBounds.width();\n const { verticalMinSize } = this.attribute;\n\n if (isValidNumber(verticalMinSize) && (!isValidNumber(verticalLimitSize) || verticalMinSize <= verticalLimitSize)) {\n const minSize = this._getAxisLabelLimitLength(verticalMinSize, layerCount);\n axisLabelContainerSize = Math.max(axisLabelContainerSize, minSize);\n\n let x;\n let y;\n if (orient === 'left') {\n x = axisLabelContainerBounds.x2 - axisLabelContainerSize;\n y = axisLabelContainerBounds.y1;\n } else if (orient === 'right') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y1;\n } else if (orient === 'top') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y2 - axisLabelContainerSize;\n } else if (orient === 'bottom') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y1;\n }\n\n const bgRect = graphicCreator.rect({\n x,\n y,\n width: isHorizontal ? axisLabelContainerBounds.width() : axisLabelContainerSize,\n height: isHorizontal ? axisLabelContainerSize : axisLabelContainerBounds.height(),\n pickable: false\n });\n bgRect.name = AXIS_ELEMENT_NAME.axisLabelBackground;\n bgRect.id = this._getNodeId('axis-label-background');\n labelContainer.insertBefore(bgRect, labelContainer.firstChild);\n }\n\n // 处理 align,进行整体的对齐操作\n if (isValid(this.attribute.label.containerAlign)) {\n let start;\n if (orient === 'left') {\n start = axisLabelContainerBounds.x2;\n } else if (orient === 'right') {\n start = axisLabelContainerBounds.x1;\n } else if (orient === 'top') {\n start = axisLabelContainerBounds.y2;\n } else if (orient === 'bottom') {\n start = axisLabelContainerBounds.y1;\n }\n\n alignAxisLabels(labelShapes, start, axisLabelContainerSize, orient, this.attribute.label.containerAlign);\n }\n }\n\n private _getAxisLabelLimitLength(limitSize: number, layerCount: number): number {\n const { label, title, line, tick } = this.attribute;\n const labelSpace = label.space ?? 4;\n let limitLength = limitSize;\n let titleHeight = 0;\n let titleSpacing = 0;\n const axisLineWidth = line && line.visible ? line.style.lineWidth ?? 1 : 0;\n const tickLength = tick && tick.visible ? tick.length ?? 4 : 0;\n if (title && title.visible && typeof title.text === 'string') {\n titleHeight = measureTextSize(title.text, title.textStyle, this.stage?.getTheme().text.fontFamily).height;\n const padding = normalizePadding(title.padding);\n titleSpacing = title.space + padding[0] + padding[2];\n }\n if (limitLength) {\n limitLength = (limitLength - labelSpace - titleSpacing - titleHeight - axisLineWidth - tickLength) / layerCount;\n }\n return limitLength;\n }\n}\n\nmixin(LineAxis, LineAxisMixin);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/axis/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["/**\n * @description 直线型坐标轴\n */\n// eslint-disable-next-line no-duplicate-imports\nimport {\n get,\n isNil,\n merge,\n isNumberClose,\n isEmpty,\n isFunction,\n isValidNumber,\n isValid,\n normalizePadding,\n mixin,\n last as peek\n} from '@visactor/vutils';\nimport { graphicCreator } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TextAlignType, IGroup, INode, IText, TextBaselineType } from '@visactor/vrender-core';\nimport type { SegmentAttributes } from '../segment';\n// eslint-disable-next-line no-duplicate-imports\nimport { Segment } from '../segment';\nimport { angleTo } from '../util/matrix';\nimport type { TagAttributes } from '../tag';\nimport type { LineAttributes, LineAxisAttributes, TitleAttributes, AxisItem } from './type';\nimport { AxisBase } from './base';\nimport { DEFAULT_AXIS_THEME } from './config';\nimport { AXIS_ELEMENT_NAME, DEFAULT_STATES } from './constant';\nimport { measureTextSize } from '../util';\nimport { autoHide as autoHideFunc } from './overlap/auto-hide';\nimport { autoRotate as autoRotateFunc, getXAxisLabelAlign, getYAxisLabelAlign } from './overlap/auto-rotate';\nimport { autoLimit as autoLimitFunc } from './overlap/auto-limit';\nimport { alignAxisLabels } from '../util/align';\nimport { LineAxisMixin } from './mixin/line';\nimport type { ComponentOptions } from '../interface';\nimport { loadLineAxisComponent } from './register';\n\nloadLineAxisComponent();\nexport interface LineAxis\n extends Pick<LineAxisMixin, 'isInValidValue' | 'getTickCoord' | 'getVerticalVector' | 'getRelativeVector'>,\n AxisBase<LineAxisAttributes> {}\n\nexport class LineAxis extends AxisBase<LineAxisAttributes> {\n static defaultAttributes = DEFAULT_AXIS_THEME;\n\n constructor(attributes: LineAxisAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, LineAxis.defaultAttributes, attributes), options);\n }\n\n protected _renderInner(container: IGroup) {\n super._renderInner(container);\n const { panel } = this.attribute;\n\n // TODO: 目前是通过包围盒绘制,在一些情况下会有那问题,比如圆弧轴、带了箭头的坐标轴等\n // 坐标轴主体 panel\n if (panel && panel.visible) {\n const axisContainer = this.axisContainer;\n const axisContainerBounds = axisContainer.AABBBounds;\n const bgRect = graphicCreator.rect({\n x: axisContainerBounds.x1,\n y: axisContainerBounds.y1,\n width: axisContainerBounds.width(),\n height: axisContainerBounds.height(),\n ...panel.style\n });\n bgRect.name = AXIS_ELEMENT_NAME.background;\n bgRect.id = this._getNodeId('background');\n\n bgRect.states = merge({}, DEFAULT_STATES, panel.state ?? {});\n axisContainer.insertBefore(bgRect, axisContainer.firstChild);\n }\n }\n\n // TODO: break\n protected renderLine(container: IGroup): void {\n const { start, end, line } = this.attribute as LineAxisAttributes;\n const { startSymbol, endSymbol, style, breakRange, breakShape, breakShapeStyle, state, ...restLineAttrs } =\n line as LineAttributes;\n const lineAttrs = {\n points: [start, end],\n startSymbol,\n endSymbol,\n lineStyle: style,\n ...restLineAttrs\n } as SegmentAttributes;\n\n if (!isEmpty(state)) {\n lineAttrs.state = {\n line: merge({}, DEFAULT_STATES, state),\n symbol: merge({}, DEFAULT_STATES, state)\n };\n }\n\n const axisLineGroup = new Segment(lineAttrs);\n axisLineGroup.name = AXIS_ELEMENT_NAME.line;\n axisLineGroup.id = this._getNodeId('line');\n container.add(axisLineGroup as unknown as INode);\n }\n\n // TODO: 太 hack 了,需要静心优化\n protected getTitleAttribute() {\n const {\n position = 'middle',\n space = 4,\n textStyle = {},\n autoRotate = true,\n shape,\n background,\n state = {},\n ...restAttrs\n } = this.attribute.title as TitleAttributes;\n let percent = 0.5;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'end') {\n percent = 1;\n }\n const { verticalFactor = 1 } = this.attribute;\n const factor = -1 * verticalFactor;\n const point = this.getTickCoord(percent);\n const axisVector = this.getRelativeVector();\n // HACK;\n let labelLength = 0;\n if (this.attribute.label?.visible && this.attribute.label.inside === false) {\n const space = +get(this.attribute, 'label.space', 4);\n labelLength += space;\n const layerCount = Object.keys(this.axisLabelLayerSize).length;\n if (axisVector[1] === 0) {\n const labelBoundsHeight = this.axisLabelsContainer ? this.axisLabelsContainer.AABBBounds.height() : 0;\n if (isFinite(labelBoundsHeight)) {\n labelLength += labelBoundsHeight + (layerCount - 1) * space;\n } else {\n labelLength = 0;\n }\n } else {\n if (axisVector[0] === 0) {\n const boundsWidth = this.axisLabelsContainer ? this.axisLabelsContainer.AABBBounds.width() : 0;\n if (isFinite(boundsWidth)) {\n labelLength += boundsWidth + (layerCount - 1) * space;\n } else {\n labelLength = 0;\n }\n } else {\n // 发生了旋转\n Object.keys(this.axisLabelLayerSize).forEach((layer, index) => {\n labelLength += this.axisLabelLayerSize[layer].width + (index > 0 ? space : 0);\n });\n }\n\n const textAlign = this.axisLabelLayerSize[0].textAlign;\n const isTextAlignStart = textAlign === 'start' || textAlign === 'left';\n const isTextCenter = textAlign === 'center';\n const isReverse = axisVector[1] > 0;\n if (factor === 1) {\n labelLength = isReverse\n ? isTextAlignStart\n ? labelLength\n : isTextCenter\n ? labelLength / 2\n : space\n : isTextAlignStart\n ? space\n : isTextCenter\n ? labelLength / 2\n : labelLength;\n } else {\n labelLength = isReverse\n ? isTextAlignStart\n ? space\n : isTextCenter\n ? labelLength / 2\n : labelLength\n : isTextAlignStart\n ? labelLength\n : isTextCenter\n ? labelLength / 2\n : space;\n }\n }\n }\n\n // 标题都默认朝外\n let tickLength = 0;\n if (this.attribute.tick?.visible && this.attribute.tick.inside === false) {\n tickLength = this.attribute.tick.length || 4;\n }\n if (this.attribute.subTick?.visible && this.attribute.subTick.inside === false) {\n tickLength = Math.max(tickLength, this.attribute.subTick.length || 2);\n }\n\n const offset = tickLength + labelLength + space;\n const titlePoint = this.getVerticalCoord(point, offset, false); // 标题的点\n const vector = this.getVerticalVector(offset, false, { x: 0, y: 0 });\n\n let { angle } = restAttrs; // 用户设置的是角度\n let textAlign;\n if (position === 'start') {\n textAlign = 'start';\n } else if (position === 'end') {\n textAlign = 'end';\n } else {\n textAlign = 'center';\n }\n let textBaseline;\n if (isNil(angle) && autoRotate) {\n const v1: [number, number] = [1, 0]; // 水平方向的向量\n const radian = angleTo(axisVector, v1, true);\n angle = radian;\n const { verticalFactor = 1 } = this.attribute;\n const factor = -1 * verticalFactor;\n if (factor === 1) {\n textBaseline = 'bottom';\n } else {\n textBaseline = 'top';\n }\n } else {\n // if (isValid(angle)) {\n // angle = degreeToRadian(angle);\n // }\n textAlign = this.getTextAlign(vector as number[]);\n textBaseline = this.getTextBaseline(vector as number[], false);\n }\n\n const attrs: TagAttributes = {\n ...titlePoint,\n ...restAttrs,\n textStyle: {\n // @ts-ignore\n textAlign,\n // @ts-ignore\n textBaseline,\n ...textStyle\n },\n state: {\n text: merge({}, DEFAULT_STATES, state.text),\n shape: merge({}, DEFAULT_STATES, state.shape),\n panel: merge({}, DEFAULT_STATES, state.background)\n }\n };\n attrs.angle = angle;\n\n if (shape && shape.visible) {\n attrs.shape = {\n visible: true,\n ...shape.style\n };\n if (shape.space) {\n attrs.space = shape.space;\n }\n }\n\n if (background && background.visible) {\n attrs.panel = {\n visible: true,\n ...background.style\n };\n }\n\n return attrs;\n }\n\n protected getTextBaseline(vector: number[], inside?: boolean): TextBaselineType {\n let base: TextBaselineType = 'middle';\n const { verticalFactor = 1 } = this.attribute;\n const factor = (inside ? 1 : -1) * verticalFactor;\n if (isNumberClose(vector[1], 0)) {\n if (isNumberClose(vector[0], 0) && !Object.is(vector[0], -0) && !Object.is(vector[1], -0)) {\n base = factor === 1 ? 'bottom' : 'top';\n } else {\n base = 'middle';\n }\n } else if (vector[1] > 0) {\n base = 'top';\n } else if (vector[1] < 0) {\n base = 'bottom';\n }\n return base;\n }\n\n protected getLabelAlign(\n vector: [number, number],\n inside?: boolean,\n angle?: number\n ): { textAlign: TextAlignType; textBaseline: TextBaselineType } {\n const orient = this.attribute.orient;\n if (isValidNumber(angle) || (vector[0] === 0 && vector[1] === 0)) {\n if (orient === 'top' || orient === 'bottom') {\n return getXAxisLabelAlign(orient, angle);\n }\n if (orient === 'left' || orient === 'right') {\n return getYAxisLabelAlign(orient, angle);\n }\n }\n\n return {\n textAlign: this.getTextAlign(vector),\n textBaseline: this.getTextBaseline(vector, inside)\n };\n }\n\n protected beforeLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void {\n const { flush = false } = this.attribute.label || {};\n if (flush && labelShapes.length) {\n // 首尾标签向内偏移\n const { orient, start: axisStart, end: axisEnd } = this.attribute;\n const isX = orient === 'bottom' || orient === 'top';\n const first = labelShapes[0];\n const last = peek(labelShapes);\n const isInverse = isX ? first.attribute.x > last.attribute.x : first.attribute.y < last.attribute.y;\n if (isX) {\n const leftMostLabel = isInverse ? last : first;\n const rightMostLabel = isInverse ? first : last;\n const left = axisStart.x;\n const right = axisEnd.x;\n const leftBound = leftMostLabel.AABBBounds.x1;\n const rightBound = rightMostLabel.AABBBounds.x2;\n\n if (leftBound < left) {\n const angle = leftMostLabel.attribute.angle;\n\n if (angle) {\n leftMostLabel.setAttributes({ dx: (leftMostLabel.attribute.dx ?? 0) + left - leftBound });\n } else {\n leftMostLabel.setAttributes({\n x: left,\n textAlign: 'left'\n });\n }\n }\n\n if (rightBound > right) {\n const angle = rightMostLabel.attribute.angle;\n\n if (angle) {\n rightMostLabel.setAttributes({ dx: (rightMostLabel.attribute.dx ?? 0) + right - rightBound });\n } else {\n rightMostLabel.setAttributes({\n x: right,\n textAlign: 'right'\n });\n }\n }\n } else {\n const bottomMostLabel = isInverse ? last : first;\n const topMostLabel = isInverse ? first : last;\n const bottomBound = bottomMostLabel.AABBBounds.y2;\n const topBound = topMostLabel.AABBBounds.y1;\n const top = axisStart.y;\n const bottom = axisEnd.y;\n\n if (topBound < top) {\n const angle = topMostLabel.attribute.angle;\n\n if (angle) {\n // has rotate\n topMostLabel.setAttributes({\n dy: (topMostLabel.attribute.dy ?? 0) + top - topBound\n });\n } else {\n topMostLabel.setAttributes({\n y: top,\n textBaseline: 'top'\n });\n }\n }\n\n if (bottomBound > bottom) {\n const angle = bottomMostLabel.attribute.angle;\n\n if (angle) {\n bottomMostLabel.setAttributes({\n dy: (bottomMostLabel.attribute.dy ?? 0) + bottom - bottomBound\n });\n } else {\n bottomMostLabel.setAttributes({\n y: bottom,\n textBaseline: 'bottom'\n });\n }\n }\n }\n }\n\n return;\n }\n protected handleLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void {\n if (isEmpty(labelShapes)) {\n return;\n }\n\n const { verticalLimitSize, label, orient } = this.attribute;\n const limitLength = this._getAxisLabelLimitLength(verticalLimitSize, layerCount);\n\n const {\n layoutFunc,\n autoRotate,\n autoRotateAngle,\n autoLimit,\n limitEllipsis,\n autoHide,\n autoHideMethod,\n autoHideSeparation,\n lastVisible\n } = label;\n\n if (isFunction(layoutFunc)) {\n // 自定义布局\n layoutFunc(labelShapes, labelData, layer, this);\n } else {\n // order: autoRotate -> autoLimit -> autoHide\n if (autoRotate) {\n autoRotateFunc(labelShapes, {\n labelRotateAngle: autoRotateAngle,\n orient\n });\n }\n if (autoLimit && isValidNumber(limitLength) && limitLength > 0) {\n const verticalLimitLength =\n orient === 'left' || orient === 'right'\n ? Math.abs(this.attribute.start.y - this.attribute.end.y) / labelShapes.length\n : !autoHide && !autoRotate\n ? Math.abs(this.attribute.start.x - this.attribute.end.x) / labelShapes.length\n : Infinity;\n autoLimitFunc(labelShapes, {\n limitLength,\n verticalLimitLength,\n ellipsis: limitEllipsis,\n orient\n });\n }\n if (autoHide) {\n autoHideFunc(labelShapes, {\n orient,\n method: autoHideMethod,\n separation: autoHideSeparation,\n lastVisible\n });\n }\n }\n }\n\n protected afterLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ) {\n const { verticalLimitSize, orient } = this.attribute;\n\n // 处理 verticalMinSize,根据 verticalMinSize 调整 labelContainer 的大小\n const isHorizontal = orient === 'bottom' || orient === 'top';\n const axisLabelContainerBounds = labelContainer.AABBBounds;\n let axisLabelContainerSize = isHorizontal ? axisLabelContainerBounds.height() : axisLabelContainerBounds.width();\n const { verticalMinSize } = this.attribute;\n\n if (isValidNumber(verticalMinSize) && (!isValidNumber(verticalLimitSize) || verticalMinSize <= verticalLimitSize)) {\n const minSize = this._getAxisLabelLimitLength(verticalMinSize, layerCount);\n axisLabelContainerSize = Math.max(axisLabelContainerSize, minSize);\n\n let x;\n let y;\n if (orient === 'left') {\n x = axisLabelContainerBounds.x2 - axisLabelContainerSize;\n y = axisLabelContainerBounds.y1;\n } else if (orient === 'right') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y1;\n } else if (orient === 'top') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y2 - axisLabelContainerSize;\n } else if (orient === 'bottom') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y1;\n }\n\n const bgRect = graphicCreator.rect({\n x,\n y,\n width: isHorizontal ? axisLabelContainerBounds.width() : axisLabelContainerSize,\n height: isHorizontal ? axisLabelContainerSize : axisLabelContainerBounds.height(),\n pickable: false\n });\n bgRect.name = AXIS_ELEMENT_NAME.axisLabelBackground;\n bgRect.id = this._getNodeId('axis-label-background');\n labelContainer.insertBefore(bgRect, labelContainer.firstChild);\n }\n\n // 处理 align,进行整体的对齐操作\n if (isValid(this.attribute.label.containerAlign)) {\n let start;\n if (orient === 'left') {\n start = axisLabelContainerBounds.x2;\n } else if (orient === 'right') {\n start = axisLabelContainerBounds.x1;\n } else if (orient === 'top') {\n start = axisLabelContainerBounds.y2;\n } else if (orient === 'bottom') {\n start = axisLabelContainerBounds.y1;\n }\n\n alignAxisLabels(labelShapes, start, axisLabelContainerSize, orient, this.attribute.label.containerAlign);\n }\n }\n\n private _getAxisLabelLimitLength(limitSize: number, layerCount: number): number {\n const { label, title, line, tick } = this.attribute;\n const labelSpace = label.space ?? 4;\n let limitLength = limitSize;\n let titleHeight = 0;\n let titleSpacing = 0;\n const axisLineWidth = line && line.visible ? line.style.lineWidth ?? 1 : 0;\n const tickLength = tick && tick.visible ? tick.length ?? 4 : 0;\n if (title && title.visible && typeof title.text === 'string') {\n titleHeight = measureTextSize(title.text, title.textStyle, this.stage?.getTheme().text.fontFamily).height;\n const padding = normalizePadding(title.padding);\n titleSpacing = title.space + padding[0] + padding[2];\n }\n if (limitLength) {\n limitLength = (limitLength - labelSpace - titleSpacing - titleHeight - axisLineWidth - tickLength) / layerCount;\n }\n return limitLength;\n }\n}\n\nmixin(LineAxis, LineAxisMixin);\n"]}
|
|
@@ -3,15 +3,17 @@ import { isEmpty, isNil, isValidNumber } from "@visactor/vutils";
|
|
|
3
3
|
export function autoLimit(labels, config) {
|
|
4
4
|
const {limitLength: limitLength, verticalLimitLength: verticalLimitLength, ellipsis: ellipsis = "...", orient: orient} = config;
|
|
5
5
|
!isEmpty(labels) && isValidNumber(limitLength) && labels.forEach((label => {
|
|
6
|
-
|
|
6
|
+
var _a;
|
|
7
|
+
const angle = label.attribute.angle, isRotated = !isNil(angle) && 0 !== angle;
|
|
8
|
+
if (("top" === orient || "bottom" === orient) && (isRotated && Math.floor(label.AABBBounds.height()) <= limitLength || !isRotated && Math.floor(label.AABBBounds.width()) <= verticalLimitLength)) return;
|
|
7
9
|
const direction = label.attribute.direction;
|
|
8
10
|
if (("left" === orient || "right" === orient) && ("vertical" === direction && Math.floor(label.AABBBounds.height()) <= verticalLimitLength || "vertical" !== direction && Math.floor(label.AABBBounds.width()) <= limitLength)) return;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
let limitLabelLength = null;
|
|
12
|
+
limitLabelLength = isRotated ? Math.abs(limitLength / Math.sin(angle)) : "top" === orient || "bottom" === orient || "vertical" === direction ? verticalLimitLength : limitLength,
|
|
11
13
|
isValidNumber(label.attribute.maxLineWidth) && (limitLabelLength = isValidNumber(limitLabelLength) ? Math.min(label.attribute.maxLineWidth, limitLabelLength) : label.attribute.maxLineWidth),
|
|
12
14
|
label.setAttributes({
|
|
13
15
|
maxLineWidth: limitLabelLength,
|
|
14
|
-
ellipsis: label.attribute.ellipsis
|
|
16
|
+
ellipsis: null !== (_a = label.attribute.ellipsis) && void 0 !== _a ? _a : ellipsis
|
|
15
17
|
});
|
|
16
18
|
}));
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/axis/overlap/auto-limit.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjE,MAAM,UAAU,SAAS,CAAC,MAAe,EAAE,MAAmB;IAC5D,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE9E,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;QAClD,OAAO;KACR;IAED,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE
|
|
1
|
+
{"version":3,"sources":["../src/axis/overlap/auto-limit.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjE,MAAM,UAAU,SAAS,CAAC,MAAe,EAAE,MAAmB;IAC5D,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE9E,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;QAClD,OAAO;KACR;IAED,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAE/C,IACE,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC;YACzC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,CAAC;gBAClE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,mBAAmB,CAAC,CAAC,EAC9E;YACA,OAAO;SACR;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5C,IACE,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC;YACzC,CAAC,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,mBAAmB,CAAC;gBACzF,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,EACpF;YACA,OAAO;SACR;QAGD,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAE5B,IAAI,SAAS,EAAE;YACb,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5D;aAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,EAAE;YAClD,gBAAgB,GAAG,mBAAmB,CAAC;SACxC;aAAM;YACL,gBAAgB,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC;SACjF;QAED,IAAI,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;YAC/C,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;gBAChD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC;gBAC1D,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;SAClC;QACD,KAAK,CAAC,aAAa,CAAC;YAClB,YAAY,EAAE,gBAAgB;YAC9B,QAAQ,EAAE,MAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,mCAAI,QAAQ;SAC/C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","file":"auto-limit.js","sourcesContent":["/**\n * 自动省略\n */\nimport type { IText } from '@visactor/vrender-core';\nimport { isEmpty, isNil, isValidNumber } from '@visactor/vutils';\n\ntype LimitConfig = {\n orient: string;\n limitLength: number;\n verticalLimitLength?: number;\n ellipsis?: string;\n};\n\nexport function autoLimit(labels: IText[], config: LimitConfig) {\n const { limitLength, verticalLimitLength, ellipsis = '...', orient } = config;\n\n if (isEmpty(labels) || !isValidNumber(limitLength)) {\n return;\n }\n\n labels.forEach(label => {\n const angle = label.attribute.angle;\n const isRotated = !isNil(angle) && angle !== 0;\n\n if (\n (orient === 'top' || orient === 'bottom') &&\n ((isRotated && Math.floor(label.AABBBounds.height()) <= limitLength) ||\n (!isRotated && Math.floor(label.AABBBounds.width()) <= verticalLimitLength))\n ) {\n return;\n }\n const direction = label.attribute.direction;\n if (\n (orient === 'left' || orient === 'right') &&\n ((direction === 'vertical' && Math.floor(label.AABBBounds.height()) <= verticalLimitLength) ||\n (direction !== 'vertical' && Math.floor(label.AABBBounds.width()) <= limitLength))\n ) {\n return;\n }\n\n // 如果水平并且文本未发生旋转,则不配置 maxLineWidth\n let limitLabelLength = null;\n\n if (isRotated) {\n limitLabelLength = Math.abs(limitLength / Math.sin(angle));\n } else if (orient === 'top' || orient === 'bottom') {\n limitLabelLength = verticalLimitLength;\n } else {\n limitLabelLength = direction === 'vertical' ? verticalLimitLength : limitLength;\n }\n\n if (isValidNumber(label.attribute.maxLineWidth)) {\n limitLabelLength = isValidNumber(limitLabelLength)\n ? Math.min(label.attribute.maxLineWidth, limitLabelLength)\n : label.attribute.maxLineWidth;\n }\n label.setAttributes({\n maxLineWidth: limitLabelLength,\n ellipsis: label.attribute.ellipsis ?? ellipsis\n });\n });\n}\n"]}
|
package/es/brush/brush.js
CHANGED