@visactor/vrender-components 0.13.2 → 0.13.3-alpha.1

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.
Files changed (53) hide show
  1. package/cjs/axis/base.js +31 -23
  2. package/cjs/axis/base.js.map +1 -1
  3. package/cjs/axis/overlap/auto-limit.js +1 -1
  4. package/cjs/axis/overlap/auto-limit.js.map +1 -1
  5. package/cjs/axis/type.d.ts +3 -3
  6. package/cjs/axis/type.js.map +1 -1
  7. package/cjs/index.d.ts +1 -1
  8. package/cjs/index.js +1 -1
  9. package/cjs/index.js.map +1 -1
  10. package/cjs/legend/discrete/discrete.d.ts +1 -0
  11. package/cjs/legend/discrete/discrete.js +17 -7
  12. package/cjs/legend/discrete/discrete.js.map +1 -1
  13. package/cjs/legend/discrete/type.d.ts +9 -8
  14. package/cjs/legend/discrete/type.js.map +1 -1
  15. package/cjs/poptip/poptip.d.ts +1 -0
  16. package/cjs/poptip/poptip.js +40 -31
  17. package/cjs/poptip/poptip.js.map +1 -1
  18. package/cjs/poptip/register.d.ts +2 -1
  19. package/cjs/poptip/register.js +8 -4
  20. package/cjs/poptip/register.js.map +1 -1
  21. package/cjs/poptip/theme.d.ts +1 -0
  22. package/cjs/poptip/theme.js +24 -18
  23. package/cjs/poptip/theme.js.map +1 -1
  24. package/cjs/poptip/type.d.ts +4 -2
  25. package/cjs/poptip/type.js.map +1 -1
  26. package/dist/index.js +148 -73
  27. package/dist/index.min.js +1 -1
  28. package/es/axis/base.js +29 -20
  29. package/es/axis/base.js.map +1 -1
  30. package/es/axis/overlap/auto-limit.js +1 -1
  31. package/es/axis/overlap/auto-limit.js.map +1 -1
  32. package/es/axis/type.d.ts +3 -3
  33. package/es/axis/type.js.map +1 -1
  34. package/es/index.d.ts +1 -1
  35. package/es/index.js +1 -1
  36. package/es/index.js.map +1 -1
  37. package/es/legend/discrete/discrete.d.ts +1 -0
  38. package/es/legend/discrete/discrete.js +18 -7
  39. package/es/legend/discrete/discrete.js.map +1 -1
  40. package/es/legend/discrete/type.d.ts +9 -8
  41. package/es/legend/discrete/type.js.map +1 -1
  42. package/es/poptip/poptip.d.ts +1 -0
  43. package/es/poptip/poptip.js +38 -31
  44. package/es/poptip/poptip.js.map +1 -1
  45. package/es/poptip/register.d.ts +2 -1
  46. package/es/poptip/register.js +7 -3
  47. package/es/poptip/register.js.map +1 -1
  48. package/es/poptip/theme.d.ts +1 -0
  49. package/es/poptip/theme.js +24 -18
  50. package/es/poptip/theme.js.map +1 -1
  51. package/es/poptip/type.d.ts +4 -2
  52. package/es/poptip/type.js.map +1 -1
  53. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["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, Dict, isBoolean, isNil } from '@visactor/vutils';\nimport type { FederatedPointerEvent, IGroup, IGraphic, INode } from '@visactor/vrender';\n// eslint-disable-next-line no-duplicate-imports\nimport { createGroup, createText, createSymbol, CustomEvent } from '@visactor/vrender';\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';\n\nconst DEFAULT_STATES = {\n [LegendStateValue.focus]: {},\n [LegendStateValue.selected]: {},\n [LegendStateValue.selectedHover]: {},\n [LegendStateValue.unSelected]: {},\n [LegendStateValue.unSelectedHover]: {}\n};\n\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\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 fill: '#D8D8D8'\n // stroke: '#D8D8D8'\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) {\n super(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 = createGroup({\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 );\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 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._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('pointerout', 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) {\n const { id, label, value, shape } = item;\n const {\n shape: shapeAttr = {},\n label: labelAttr = {},\n value: valueAttr = {},\n padding = 0,\n background,\n focus,\n focusIconStyle = {}\n } = this.attribute.item as LegendItem;\n const parsedPadding = normalizePadding(padding);\n\n let itemGroup;\n if (background.visible === false) {\n itemGroup = createGroup({\n x: 0,\n y: 0,\n cursor: background?.style.cursor\n });\n this._appendDataToShape(itemGroup, LEGEND_ELEMENT_NAME.item, item, itemGroup);\n } else {\n itemGroup = createGroup({\n x: 0,\n y: 0,\n ...background?.style\n });\n this._appendDataToShape(itemGroup, LEGEND_ELEMENT_NAME.item, item, itemGroup, background?.state);\n }\n\n itemGroup.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n\n const innerGroup = createGroup({\n x: 0,\n y: 0,\n pickable: false\n });\n itemGroup.add(innerGroup);\n\n let focusStartX = 0;\n const shapeSize = get(shapeAttr, 'style.size', DEFAULT_SHAPE_SIZE);\n const shapeSpace = get(shapeAttr, 'space', DEFAULT_SHAPE_SPACE);\n const itemShape = createSymbol({\n x: 0,\n y: 0,\n symbolType: 'circle',\n strokeBoundsBuffer: 0,\n ...shape,\n ...shapeAttr.style\n });\n // 处理下 shape 的 fill stroke\n Object.keys(shapeAttr.state || {}).forEach(key => {\n const color = shapeAttr.state[key].fill || shapeAttr.state[key].stroke;\n if (shape.fill && isNil(shapeAttr.state[key].fill) && color) {\n shapeAttr.state[key].fill = color as string;\n }\n\n if (shape.stroke && isNil(shapeAttr.state[key].stroke) && color) {\n shapeAttr.state[key].stroke = color as string;\n }\n });\n this._appendDataToShape(itemShape, LEGEND_ELEMENT_NAME.itemShape, item, itemGroup, shapeAttr?.state);\n\n itemShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n innerGroup.add(itemShape);\n\n let focusShape;\n let focusSpace = 0;\n\n if (focus) {\n const focusSize = get(focusIconStyle, 'size', DEFAULT_SHAPE_SIZE);\n // 绘制聚焦按钮\n focusShape = createSymbol({\n x: 0,\n y: -focusSize / 2 - 1,\n strokeBoundsBuffer: 0,\n ...focusIconStyle,\n visible: false,\n pickMode: 'imprecise',\n boundsPadding: parsedPadding\n });\n this._appendDataToShape(focusShape, LEGEND_ELEMENT_NAME.focus, item, itemGroup);\n\n focusSpace = focusSize;\n }\n\n const labelShape = createText({\n x: shapeSize / 2 + shapeSpace,\n y: 0,\n textAlign: 'start',\n textBaseline: 'middle',\n lineHeight: labelAttr?.style.fontSize,\n ...labelAttr?.style,\n text: labelAttr.formatMethod ? labelAttr.formatMethod(label, item, index) : label\n });\n this._appendDataToShape(labelShape, LEGEND_ELEMENT_NAME.itemLabel, item, itemGroup, labelAttr?.state);\n labelShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n innerGroup.add(labelShape);\n const labelSpace = get(labelAttr, 'space', DEFAULT_LABEL_SPACE);\n\n focusStartX += shapeSize / 2 + shapeSpace + labelShape.AABBBounds.width() + labelSpace;\n if (isValid(value)) {\n const valueSpace = get(valueAttr, 'space', focus ? DEFAULT_VALUE_SPACE : 0);\n const valueShape = createText({\n x: focusStartX + labelSpace,\n y: 0,\n textAlign: 'start',\n textBaseline: 'middle',\n lineHeight: valueAttr?.style.fontSize,\n ...valueAttr?.style,\n text: valueAttr.formatMethod ? valueAttr.formatMethod(value, item, index) : value\n });\n this._appendDataToShape(valueShape, LEGEND_ELEMENT_NAME.itemValue, item, itemGroup, valueAttr?.state);\n valueShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n\n if (this._itemWidthByUser) {\n valueShape.setAttribute(\n 'maxLineWidth',\n this._itemWidthByUser -\n parsedPadding[1] -\n parsedPadding[3] -\n shapeSize -\n shapeSpace -\n labelShape.AABBBounds.width() -\n labelSpace -\n focusSpace -\n valueSpace\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 }\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\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 = this._itemWidthByUser || 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 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 = {} } = 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 ...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 });\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.setAttributes({\n total: Math.ceil(pages / maxRow),\n x: pageWidth,\n y: renderStartY + pageHeight / 2 - pagerComp.AABBBounds.height() / 2\n });\n } else {\n // 垂直布局,支持左右翻页\n pagerComp = new Pager({\n layout: 'horizontal',\n total: 99, // 用于估算\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.setAttributes({\n total: Math.ceil(pages / maxCol),\n x: (pageWidth - pagerComp.AABBBounds.width()) / 2,\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 = createGroup({\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?.name?.startsWith(LEGEND_ELEMENT_NAME.item)) {\n // @ts-ignore\n const legendItem = target.delegate;\n const selected = legendItem.hasState(LegendStateValue.selected);\n\n if (selected) {\n // use selectedHover state\n this._setLegendItemState(legendItem, LegendStateValue.selectedHover);\n } else {\n // use unSelectedHover state\n this._setLegendItemState(legendItem, LegendStateValue.unSelectedHover);\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._dispatchEvent(LegendEvent.legendItemHover, legendItem);\n }\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n if (target?.name?.startsWith(LEGEND_ELEMENT_NAME.item)) {\n // @ts-ignore\n const legendItem = target.delegate;\n\n legendItem.removeState(LegendStateValue.unSelectedHover);\n legendItem.removeState(LegendStateValue.selectedHover);\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach((child: any) => {\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 this._dispatchEvent(LegendEvent.legendItemUnHover, legendItem);\n }\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n if (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(item as unknown as IGroup, [\n LegendStateValue.unSelected,\n LegendStateValue.unSelectedHover,\n LegendStateValue.focus\n ]);\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.selected);\n });\n } else {\n this._setLegendItemState(legendItem, LegendStateValue.selected);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover]);\n // 单选逻辑,当前被点击的图例项设置为选中态,其他全部设置为非选中态\n this._itemsContainer?.getChildren().forEach(item => {\n if (legendItem !== item) {\n this._removeLegendItemState(item as unknown as IGroup, [\n LegendStateValue.selected,\n LegendStateValue.selectedHover,\n LegendStateValue.focus\n ]);\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.unSelected);\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._dispatchEvent(LegendEvent.legendItemClick, legendItem);\n return;\n }\n // 多选逻辑\n if (isSelected) {\n // 如果当前为选中状态,则取消选中\n this._removeLegendItemState(legendItem, [LegendStateValue.selected, LegendStateValue.selectedHover]);\n this._setLegendItemState(legendItem, LegendStateValue.unSelected);\n } else {\n // 如果当前为非选中态,则设置为选中状态\n this._setLegendItemState(legendItem, LegendStateValue.selected);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover]);\n }\n } else {\n this._setLegendItemState(legendItem, LegendStateValue.selected);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover]);\n\n // 单选逻辑,当前被点击的图例项设置为选中态,其他全部设置为非选中态\n this._itemsContainer?.getChildren().forEach(item => {\n if (legendItem !== item) {\n this._removeLegendItemState(item as unknown as IGroup, [\n LegendStateValue.selected,\n LegendStateValue.selectedHover\n ]);\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.unSelected);\n }\n });\n }\n }\n\n this._dispatchEvent(LegendEvent.legendItemClick, legendItem);\n }\n };\n\n private _setLegendItemState(legendItem: IGroup, stateName: string, keepCurrentStates = true) {\n legendItem.addState(stateName, keepCurrentStates);\n // TODO: 这个比较 hack\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach(child => {\n if (child.name !== LEGEND_ELEMENT_NAME.focus) {\n (child as unknown as IGraphic).addState(stateName, keepCurrentStates);\n }\n });\n }\n\n private _removeLegendItemState(legendItem: IGroup, stateNames: string[]) {\n stateNames.forEach(name => {\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 (child as unknown as IGraphic).removeState(name);\n });\n }\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 _dispatchEvent(eventName: string, legendItem: any) {\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 // 封装事件\n const changeEvent = new CustomEvent(eventName, {\n item: legendItem, // 当前被选中的图例项整体\n data: legendItem.data, // 当前图例项的数据\n selected: legendItem.hasState(LegendStateValue.selected), // 当前图例项是否被选中\n currentSelectedItems,\n currentSelected\n });\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n\n this.dispatchEvent(changeEvent);\n }\n}\n"]}
1
+ {"version":3,"sources":["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, Dict, isBoolean, isNil, isFunction } from '@visactor/vutils';\nimport type {\n FederatedPointerEvent,\n IGroup,\n IGraphic,\n INode,\n IGroupGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender';\n// eslint-disable-next-line no-duplicate-imports\nimport { createGroup, createText, createSymbol, CustomEvent } from '@visactor/vrender';\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';\n\nconst DEFAULT_STATES = {\n [LegendStateValue.focus]: {},\n [LegendStateValue.selected]: {},\n [LegendStateValue.selectedHover]: {},\n [LegendStateValue.unSelected]: {},\n [LegendStateValue.unSelectedHover]: {}\n};\n\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\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 fill: '#D8D8D8'\n // stroke: '#D8D8D8'\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) {\n super(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 = createGroup({\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 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._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('pointerout', 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 let {\n shape: shapeAttr = {},\n label: labelAttr = {},\n value: valueAttr = {},\n background = {}\n } = this.attribute.item as LegendItem;\n\n shapeAttr = this._handleStyle(shapeAttr, item, isSelected, index, items);\n labelAttr = this._handleStyle(labelAttr, item, isSelected, index, items);\n valueAttr = this._handleStyle(valueAttr, item, isSelected, index, items);\n background = this._handleStyle(background, item, isSelected, index, items);\n\n const parsedPadding = normalizePadding(padding);\n\n let itemGroup;\n if (background.visible === false) {\n itemGroup = createGroup({\n x: 0,\n y: 0,\n cursor: (background?.style as IGroupGraphicAttribute).cursor\n });\n this._appendDataToShape(itemGroup, LEGEND_ELEMENT_NAME.item, item, itemGroup);\n } else {\n itemGroup = createGroup({\n x: 0,\n y: 0,\n ...background?.style\n });\n this._appendDataToShape(itemGroup, LEGEND_ELEMENT_NAME.item, item, itemGroup, background?.state);\n }\n\n itemGroup.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n\n const innerGroup = createGroup({\n x: 0,\n y: 0,\n pickable: false\n });\n itemGroup.add(innerGroup);\n\n let focusStartX = 0;\n const shapeSize = get(shapeAttr, 'style.size', DEFAULT_SHAPE_SIZE);\n const shapeSpace = get(shapeAttr, 'space', DEFAULT_SHAPE_SPACE);\n const itemShape = createSymbol({\n x: 0,\n y: 0,\n symbolType: 'circle',\n strokeBoundsBuffer: 0,\n ...shape,\n ...shapeAttr.style\n });\n // 处理下 shape 的 fill stroke\n Object.keys(shapeAttr.state || {}).forEach(key => {\n const color =\n (shapeAttr.state[key] as ISymbolGraphicAttribute).fill ||\n (shapeAttr.state[key] as ISymbolGraphicAttribute).stroke;\n if (shape.fill && isNil((shapeAttr.state[key] as ISymbolGraphicAttribute).fill) && color) {\n (shapeAttr.state[key] as ISymbolGraphicAttribute).fill = color as string;\n }\n\n if (shape.stroke && isNil((shapeAttr.state[key] as ISymbolGraphicAttribute).stroke) && color) {\n (shapeAttr.state[key] as ISymbolGraphicAttribute).stroke = color as string;\n }\n });\n this._appendDataToShape(itemShape, LEGEND_ELEMENT_NAME.itemShape, item, itemGroup, shapeAttr?.state);\n\n itemShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n innerGroup.add(itemShape);\n\n let focusShape;\n let focusSpace = 0;\n\n if (focus) {\n const focusSize = get(focusIconStyle, 'size', DEFAULT_SHAPE_SIZE);\n // 绘制聚焦按钮\n focusShape = createSymbol({\n x: 0,\n y: -focusSize / 2 - 1,\n strokeBoundsBuffer: 0,\n ...focusIconStyle,\n visible: false,\n pickMode: 'imprecise',\n boundsPadding: parsedPadding\n });\n this._appendDataToShape(focusShape, LEGEND_ELEMENT_NAME.focus, item, itemGroup);\n\n focusSpace = focusSize;\n }\n\n const labelShape = createText({\n x: shapeSize / 2 + shapeSpace,\n y: 0,\n textAlign: 'start',\n textBaseline: 'middle',\n lineHeight: (labelAttr?.style as ITextGraphicAttribute).fontSize,\n ...labelAttr?.style,\n text: labelAttr.formatMethod ? labelAttr.formatMethod(label, item, index) : label\n });\n this._appendDataToShape(labelShape, LEGEND_ELEMENT_NAME.itemLabel, item, itemGroup, labelAttr?.state);\n labelShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n innerGroup.add(labelShape);\n const labelSpace = get(labelAttr, 'space', DEFAULT_LABEL_SPACE);\n\n focusStartX += shapeSize / 2 + shapeSpace + labelShape.AABBBounds.width() + labelSpace;\n if (isValid(value)) {\n const valueSpace = get(valueAttr, 'space', focus ? DEFAULT_VALUE_SPACE : 0);\n const valueShape = createText({\n x: focusStartX + labelSpace,\n y: 0,\n textAlign: 'start',\n textBaseline: 'middle',\n lineHeight: (valueAttr?.style as ITextGraphicAttribute).fontSize,\n ...valueAttr?.style,\n text: valueAttr.formatMethod ? valueAttr.formatMethod(value, item, index) : value\n });\n this._appendDataToShape(valueShape, LEGEND_ELEMENT_NAME.itemValue, item, itemGroup, valueAttr?.state);\n valueShape.addState(isSelected ? LegendStateValue.selected : LegendStateValue.unSelected);\n\n if (this._itemWidthByUser) {\n valueShape.setAttribute(\n 'maxLineWidth',\n this._itemWidthByUser -\n parsedPadding[1] -\n parsedPadding[3] -\n shapeSize -\n shapeSpace -\n labelShape.AABBBounds.width() -\n labelSpace -\n focusSpace -\n valueSpace\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 }\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\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 = this._itemWidthByUser || 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 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 = {} } = 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 ...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 });\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.setAttributes({\n total: Math.ceil(pages / maxRow),\n x: pageWidth,\n y: renderStartY + pageHeight / 2 - pagerComp.AABBBounds.height() / 2\n });\n } else {\n // 垂直布局,支持左右翻页\n pagerComp = new Pager({\n layout: 'horizontal',\n total: 99, // 用于估算\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.setAttributes({\n total: Math.ceil(pages / maxCol),\n x: (pageWidth - pagerComp.AABBBounds.width()) / 2,\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 = createGroup({\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?.name?.startsWith(LEGEND_ELEMENT_NAME.item)) {\n // @ts-ignore\n const legendItem = target.delegate;\n const selected = legendItem.hasState(LegendStateValue.selected);\n\n if (selected) {\n // use selectedHover state\n this._setLegendItemState(legendItem, LegendStateValue.selectedHover);\n } else {\n // use unSelectedHover state\n this._setLegendItemState(legendItem, LegendStateValue.unSelectedHover);\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._dispatchEvent(LegendEvent.legendItemHover, legendItem);\n }\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n if (target?.name?.startsWith(LEGEND_ELEMENT_NAME.item)) {\n // @ts-ignore\n const legendItem = target.delegate;\n\n legendItem.removeState(LegendStateValue.unSelectedHover);\n legendItem.removeState(LegendStateValue.selectedHover);\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach((child: any) => {\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 this._dispatchEvent(LegendEvent.legendItemUnHover, legendItem);\n }\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as IGroup;\n if (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(item as unknown as IGroup, [\n LegendStateValue.unSelected,\n LegendStateValue.unSelectedHover,\n LegendStateValue.focus\n ]);\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.selected);\n });\n } else {\n this._setLegendItemState(legendItem, LegendStateValue.selected);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover]);\n // 单选逻辑,当前被点击的图例项设置为选中态,其他全部设置为非选中态\n this._itemsContainer?.getChildren().forEach(item => {\n if (legendItem !== item) {\n this._removeLegendItemState(item as unknown as IGroup, [\n LegendStateValue.selected,\n LegendStateValue.selectedHover,\n LegendStateValue.focus\n ]);\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.unSelected);\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._dispatchEvent(LegendEvent.legendItemClick, legendItem);\n return;\n }\n // 多选逻辑\n if (isSelected) {\n // 如果当前为选中状态,则取消选中\n this._removeLegendItemState(legendItem, [LegendStateValue.selected, LegendStateValue.selectedHover]);\n this._setLegendItemState(legendItem, LegendStateValue.unSelected);\n } else {\n // 如果当前为非选中态,则设置为选中状态\n this._setLegendItemState(legendItem, LegendStateValue.selected);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover]);\n }\n } else {\n this._setLegendItemState(legendItem, LegendStateValue.selected);\n this._removeLegendItemState(legendItem, [LegendStateValue.unSelected, LegendStateValue.unSelectedHover]);\n\n // 单选逻辑,当前被点击的图例项设置为选中态,其他全部设置为非选中态\n this._itemsContainer?.getChildren().forEach(item => {\n if (legendItem !== item) {\n this._removeLegendItemState(item as unknown as IGroup, [\n LegendStateValue.selected,\n LegendStateValue.selectedHover\n ]);\n this._setLegendItemState(item as unknown as IGroup, LegendStateValue.unSelected);\n }\n });\n }\n }\n\n this._dispatchEvent(LegendEvent.legendItemClick, legendItem);\n }\n };\n\n private _setLegendItemState(legendItem: IGroup, stateName: string, keepCurrentStates = true) {\n legendItem.addState(stateName, keepCurrentStates);\n // TODO: 这个比较 hack\n legendItem\n .getChildren()[0]\n .getChildren()\n .forEach(child => {\n if (child.name !== LEGEND_ELEMENT_NAME.focus) {\n (child as unknown as IGraphic).addState(stateName, keepCurrentStates);\n }\n });\n }\n\n private _removeLegendItemState(legendItem: IGroup, stateNames: string[]) {\n stateNames.forEach(name => {\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 (child as unknown as IGraphic).removeState(name);\n });\n }\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 _dispatchEvent(eventName: string, legendItem: any) {\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 // 封装事件\n const changeEvent = new CustomEvent(eventName, {\n item: legendItem, // 当前被选中的图例项整体\n data: legendItem.data, // 当前图例项的数据\n selected: legendItem.hasState(LegendStateValue.selected), // 当前图例项是否被选中\n currentSelectedItems,\n currentSelected\n });\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n\n this.dispatchEvent(changeEvent);\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 = merge({}, config);\n // 处理下样式\n if (config.style && isFunction(config.style)) {\n newConfig.style = config.style(item, isSelected, index, items);\n }\n if (config.state) {\n Object.keys(config.state).forEach(key => {\n if (config.state[key] && isFunction(config.state[key])) {\n newConfig.state[key] = config.state[key](item, isSelected, index, items);\n }\n });\n }\n\n return newConfig;\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { EasingType, IGroupGraphicAttribute, ISymbolGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender';
2
- import { BaseGraphicAttributes, Padding } from '../../core/type';
3
- import { PagerAttributes } from '../../pager';
4
- import { LegendBaseAttributes } from '../type';
1
+ import type { EasingType, IGroupGraphicAttribute, ISymbolGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender';
2
+ import type { BaseGraphicAttributes, Padding } from '../../core/type';
3
+ import type { PagerAttributes } from '../../pager';
4
+ import type { LegendBaseAttributes } from '../type';
5
5
  export type LegendItemDatum = {
6
6
  id?: string;
7
7
  label: string;
@@ -13,6 +13,7 @@ export type LegendItemDatum = {
13
13
  };
14
14
  [key: string]: any;
15
15
  };
16
+ export type StyleCallback<T> = (item: LegendItemDatum, isSelected: boolean, index: number, allItems: LegendItemDatum[]) => T;
16
17
  export type formatterCallback = (text: string | number, item: LegendItemDatum, index: number) => any;
17
18
  export type LegendItem = {
18
19
  visible?: boolean;
@@ -24,19 +25,19 @@ export type LegendItem = {
24
25
  padding?: Padding;
25
26
  background?: {
26
27
  visible?: boolean;
27
- } & BaseGraphicAttributes<Partial<IGroupGraphicAttribute>>;
28
+ } & BaseGraphicAttributes<Partial<IGroupGraphicAttribute> | StyleCallback<Partial<IGroupGraphicAttribute>>>;
28
29
  shape?: {
29
30
  space?: number;
30
- } & BaseGraphicAttributes<Partial<ISymbolGraphicAttribute>>;
31
+ } & BaseGraphicAttributes<Partial<ISymbolGraphicAttribute> | StyleCallback<Partial<ISymbolGraphicAttribute>>>;
31
32
  label?: {
32
33
  space?: number;
33
34
  formatMethod?: formatterCallback;
34
- } & BaseGraphicAttributes<Partial<ITextGraphicAttribute>>;
35
+ } & BaseGraphicAttributes<Partial<ITextGraphicAttribute> | StyleCallback<Partial<ITextGraphicAttribute>>>;
35
36
  value?: {
36
37
  space?: number;
37
38
  alignRight?: boolean;
38
39
  formatMethod?: formatterCallback;
39
- } & BaseGraphicAttributes<Partial<ITextGraphicAttribute>>;
40
+ } & BaseGraphicAttributes<Partial<ITextGraphicAttribute> | StyleCallback<Partial<ITextGraphicAttribute>>>;
40
41
  focus?: boolean;
41
42
  focusIconStyle?: Partial<ISymbolGraphicAttribute>;
42
43
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["legend/discrete/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import { EasingType, IGroupGraphicAttribute, ISymbolGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender';\nimport { BaseGraphicAttributes, Padding } from '../../core/type';\nimport { PagerAttributes } from '../../pager';\nimport { LegendBaseAttributes } from '../type';\n\nexport type LegendItemDatum = {\n /**\n * 该条数据的唯一标识,可用于动画或者查找\n */\n id?: string;\n /** 显示文本 */\n label: string;\n /** 显示数据 */\n value?: string | number;\n /** 图例项前的 shape 形状定义 */\n shape: {\n symbolType?: string;\n fill?: string;\n stroke?: string;\n };\n [key: string]: any;\n};\n\nexport type formatterCallback = (text: string | number, item: LegendItemDatum, index: number) => any;\n\nexport type LegendItem = {\n /**\n * 是否展示图例项\n * @default true\n */\n visible?: boolean;\n /**\n * 图例项的列间距 水平间距\n */\n spaceCol?: number;\n /**\n * 图例项的行间距 垂直间距\n */\n spaceRow?: number;\n /**\n * 图例项的最大宽度,默认为 null,由上层传入\n */\n maxWidth?: number;\n /**\n * 图例项的宽度, 默认自动计算\n */\n width?: number;\n /**\n * 图例的高度,默认自动计算\n */\n height?: number;\n /**\n * 图例项自身的内边距\n */\n padding?: Padding;\n /**\n * 图例项背景配置\n */\n background?: {\n visible?: boolean;\n } & BaseGraphicAttributes<Partial<IGroupGraphicAttribute>>;\n /**\n * 图例项的 shape 图标的配置\n */\n shape?: {\n /** shape 同后面 label 的间距 */\n space?: number;\n } & BaseGraphicAttributes<Partial<ISymbolGraphicAttribute>>;\n /**\n * 图例项的 label 文本配置\n */\n label?: {\n /**\n * 图例项 label 同后面 value 的间距\n */\n space?: number;\n /**\n * 格式化文本函数\n */\n formatMethod?: formatterCallback;\n } & BaseGraphicAttributes<Partial<ITextGraphicAttribute>>;\n /**\n * 图例项 value 配置\n */\n value?: {\n /** value 同后面元素的间距 */\n space?: number;\n /**\n * 是否右对齐显示,仅当设置图例项宽度 itemWidth 时生效\n * 默认为 false,\n */\n alignRight?: boolean;\n /**\n * 格式化文本函数\n */\n formatMethod?: formatterCallback;\n } & BaseGraphicAttributes<Partial<ITextGraphicAttribute>>;\n /**\n * 是否开启聚焦功能,默认关闭\n */\n focus?: boolean;\n /**\n * 聚焦按钮配置\n */\n focusIconStyle?: Partial<ISymbolGraphicAttribute>;\n};\n\nexport type DiscreteLegendAttrs = {\n /**\n * 是否开启选中交互\n */\n select?: boolean;\n /**\n * 是否开启 hover 交互\n */\n hover?: boolean;\n /**\n * 图例数据\n */\n items: LegendItemDatum[];\n /**\n * 默认选中的图例项\n */\n defaultSelected?: (string | number)[];\n /**\n * 单选/多选模式配置,默认 'multiple'。\n * - `single` 表示单选\n * - `multiple` 表示多选\n */\n selectMode?: 'single' | 'multiple';\n /**\n * 是否允许图例全部取消,多选模式下生效\n */\n allowAllCanceled?: boolean;\n /**\n * 图例项的顺序是否要逆序,默认为 false\n */\n reversed?: boolean;\n /**\n * 图例项相关的配置\n */\n item?: LegendItem;\n /**\n * 最大宽度,决定 layout : 'horizontal' 是否自动换行\n */\n maxWidth?: number;\n /**\n * 最大高度,决定是否分页\n */\n maxHeight?: number;\n /**\n * 最大行数,当且仅当 layout 为 'horizontal' 时生效\n */\n maxRow?: number;\n /**\n * 最大列数,当且仅当 layout 为 'vertical' 时生效\n */\n maxCol?: number;\n /**\n * 是否进行自动分页,默认为 true\n */\n autoPage?: boolean;\n /**\n * 翻页器配置\n */\n pager?: Omit<PagerAttributes, 'total'> & {\n /**\n * 翻页器同图例内容项之间的间距\n */\n space?: number;\n /**\n * 翻页是否开启动画\n */\n animation?: boolean;\n /**\n * 动画执行时间\n */\n animationDuration?: number;\n /**\n * 动画执行效果\n */\n animationEasing?: EasingType;\n };\n} & LegendBaseAttributes;\n"]}
1
+ {"version":3,"sources":["legend/discrete/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n EasingType,\n IGroupGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender';\nimport type { BaseGraphicAttributes, Padding } from '../../core/type';\nimport type { PagerAttributes } from '../../pager';\nimport type { LegendBaseAttributes } from '../type';\n\nexport type LegendItemDatum = {\n /**\n * 该条数据的唯一标识,可用于动画或者查找\n */\n id?: string;\n /** 显示文本 */\n label: string;\n /** 显示数据 */\n value?: string | number;\n /** 图例项前的 shape 形状定义 */\n shape: {\n symbolType?: string;\n fill?: string;\n stroke?: string;\n };\n [key: string]: any;\n};\n\nexport type StyleCallback<T> = (\n item: LegendItemDatum,\n isSelected: boolean,\n index: number,\n allItems: LegendItemDatum[]\n) => T;\n\nexport type formatterCallback = (text: string | number, item: LegendItemDatum, index: number) => any;\n\nexport type LegendItem = {\n /**\n * 是否展示图例项\n * @default true\n */\n visible?: boolean;\n /**\n * 图例项的列间距 水平间距\n */\n spaceCol?: number;\n /**\n * 图例项的行间距 垂直间距\n */\n spaceRow?: number;\n /**\n * 图例项的最大宽度,默认为 null,由上层传入\n */\n maxWidth?: number;\n /**\n * 图例项的宽度, 默认自动计算\n */\n width?: number;\n /**\n * 图例的高度,默认自动计算\n */\n height?: number;\n /**\n * 图例项自身的内边距\n */\n padding?: Padding;\n /**\n * 图例项背景配置\n */\n background?: {\n visible?: boolean;\n } & BaseGraphicAttributes<Partial<IGroupGraphicAttribute> | StyleCallback<Partial<IGroupGraphicAttribute>>>;\n /**\n * 图例项的 shape 图标的配置\n */\n shape?: {\n /** shape 同后面 label 的间距 */\n space?: number;\n } & BaseGraphicAttributes<Partial<ISymbolGraphicAttribute> | StyleCallback<Partial<ISymbolGraphicAttribute>>>;\n /**\n * 图例项的 label 文本配置\n */\n label?: {\n /**\n * 图例项 label 同后面 value 的间距\n */\n space?: number;\n /**\n * 格式化文本函数\n */\n formatMethod?: formatterCallback;\n } & BaseGraphicAttributes<Partial<ITextGraphicAttribute> | StyleCallback<Partial<ITextGraphicAttribute>>>;\n /**\n * 图例项 value 配置\n */\n value?: {\n /** value 同后面元素的间距 */\n space?: number;\n /**\n * 是否右对齐显示,仅当设置图例项宽度 itemWidth 时生效\n * 默认为 false,\n */\n alignRight?: boolean;\n /**\n * 格式化文本函数\n */\n formatMethod?: formatterCallback;\n } & BaseGraphicAttributes<Partial<ITextGraphicAttribute> | StyleCallback<Partial<ITextGraphicAttribute>>>;\n /**\n * 是否开启聚焦功能,默认关闭\n */\n focus?: boolean;\n /**\n * 聚焦按钮配置\n */\n focusIconStyle?: Partial<ISymbolGraphicAttribute>;\n};\n\nexport type DiscreteLegendAttrs = {\n /**\n * 是否开启选中交互\n */\n select?: boolean;\n /**\n * 是否开启 hover 交互\n */\n hover?: boolean;\n /**\n * 图例数据\n */\n items: LegendItemDatum[];\n /**\n * 默认选中的图例项\n */\n defaultSelected?: (string | number)[];\n /**\n * 单选/多选模式配置,默认 'multiple'。\n * - `single` 表示单选\n * - `multiple` 表示多选\n */\n selectMode?: 'single' | 'multiple';\n /**\n * 是否允许图例全部取消,多选模式下生效\n */\n allowAllCanceled?: boolean;\n /**\n * 图例项的顺序是否要逆序,默认为 false\n */\n reversed?: boolean;\n /**\n * 图例项相关的配置\n */\n item?: LegendItem;\n /**\n * 最大宽度,决定 layout : 'horizontal' 是否自动换行\n */\n maxWidth?: number;\n /**\n * 最大高度,决定是否分页\n */\n maxHeight?: number;\n /**\n * 最大行数,当且仅当 layout 为 'horizontal' 时生效\n */\n maxRow?: number;\n /**\n * 最大列数,当且仅当 layout 为 'vertical' 时生效\n */\n maxCol?: number;\n /**\n * 是否进行自动分页,默认为 true\n */\n autoPage?: boolean;\n /**\n * 翻页器配置\n */\n pager?: Omit<PagerAttributes, 'total'> & {\n /**\n * 翻页器同图例内容项之间的间距\n */\n space?: number;\n /**\n * 翻页是否开启动画\n */\n animation?: boolean;\n /**\n * 动画执行时间\n */\n animationDuration?: number;\n /**\n * 动画执行效果\n */\n animationEasing?: EasingType;\n };\n} & LegendBaseAttributes;\n"]}
@@ -5,6 +5,7 @@ export declare class PopTip extends AbstractComponent<Required<PopTipAttributes>
5
5
  static defaultAttributes: Partial<PopTipAttributes>;
6
6
  constructor(attributes: PopTipAttributes);
7
7
  protected render(): void;
8
+ positionList: string[];
8
9
  getAngleAndOffset(position: string, width: number, height: number, size: [number, number]): {
9
10
  angle: number;
10
11
  offset: [number, number];
@@ -18,10 +18,11 @@ const vutils_1 = require("@visactor/vutils"), base_1 = require("../core/base");
18
18
 
19
19
  class PopTip extends base_1.AbstractComponent {
20
20
  constructor(attributes) {
21
- super((0, vutils_1.merge)({}, PopTip.defaultAttributes, attributes)), this.name = "poptip";
21
+ super((0, vutils_1.merge)({}, PopTip.defaultAttributes, attributes)), this.name = "poptip",
22
+ this.positionList = [ "top", "tl", "tr", "bottom", "bl", "br", "left", "lt", "lb", "right", "rt", "rb" ];
22
23
  }
23
24
  render() {
24
- var _a, _b;
25
+ var _a, _b, _c, _d, _e;
25
26
  const {title: title = "", titleStyle: titleStyle = {}, position: position, content: content = "", contentStyle: contentStyle = {}, panel: panel = {}, space: space = 4, minWidth: minWidth = 0, maxWidth: maxWidth = 1 / 0, padding: padding = 4, visible: visible, state: state, dx: dx = 0, dy: dy = 0} = this.attribute, parsedPadding = (0,
26
27
  vutils_1.normalizePadding)(padding), group = this.createOrUpdateChild("poptip-content", {
27
28
  x: 0,
@@ -57,36 +58,44 @@ class PopTip extends base_1.AbstractComponent {
57
58
  contentVisible && (height += contentHeight);
58
59
  let popTipWidth = (0, vutils_1.max)(titleWidth + parsedPadding[1] + parsedPadding[3], contentWidth + parsedPadding[1] + parsedPadding[3]);
59
60
  popTipWidth > maxWidth ? popTipWidth = maxWidth : popTipWidth < minWidth && (popTipWidth = minWidth);
60
- const poptipHeight = parsedPadding[0] + parsedPadding[2] + height, {visible: bgVisible} = panel, backgroundStyle = __rest(panel, [ "visible" ]), symbolSize = null !== (_a = backgroundStyle.size) && void 0 !== _a ? _a : 12, lineWidth = null !== (_b = backgroundStyle.lineWidth) && void 0 !== _b ? _b : 1, {angle: angle, offset: offset, rectOffset: rectOffset} = this.getAngleAndOffset(position, popTipWidth, poptipHeight, (0,
61
- vutils_1.isArray)(symbolSize) ? symbolSize : [ symbolSize, symbolSize - lineWidth ]);
62
- if ((0, vutils_1.isBoolean)(bgVisible)) {
63
- const offsetX = ((0, vutils_1.isArray)(symbolSize) ? symbolSize[0] : symbolSize) / 4, bgSymbol = group.createOrUpdateChild("poptip-symbol-panel", Object.assign(Object.assign({}, backgroundStyle), {
64
- visible: bgVisible && (contentVisible || titleVisible),
65
- x: offsetX,
66
- y: 0,
67
- anchor: [ 0, 0 ],
68
- symbolType: "arrow2Left",
69
- angle: angle,
70
- dx: offset[0],
71
- dy: offset[1],
72
- size: symbolSize,
73
- zIndex: -9
74
- }), "symbol");
75
- (0, vutils_1.isEmpty)(null == state ? void 0 : state.panel) || (bgSymbol.states = state.panel);
76
- const bgRect = group.createOrUpdateChild("poptip-rect-panel", Object.assign(Object.assign({}, backgroundStyle), {
77
- visible: bgVisible && (contentVisible || titleVisible),
78
- x: 0,
79
- y: 0,
80
- width: popTipWidth,
81
- height: poptipHeight,
82
- zIndex: -10
83
- }), "rect");
84
- (0, vutils_1.isEmpty)(null == state ? void 0 : state.panel) || (bgRect.states = state.panel);
61
+ const poptipHeight = parsedPadding[0] + parsedPadding[2] + height, {visible: bgVisible} = panel, backgroundStyle = __rest(panel, [ "visible" ]), symbolSize = null !== (_a = backgroundStyle.size) && void 0 !== _a ? _a : 12, spaceSize = (0,
62
+ vutils_1.isArray)(symbolSize) ? [ symbolSize[0] + (null !== (_b = backgroundStyle.space) && void 0 !== _b ? _b : 0), symbolSize[1] + (null !== (_c = backgroundStyle.space) && void 0 !== _c ? _c : 0) ] : symbolSize + (null !== (_d = backgroundStyle.space) && void 0 !== _d ? _d : 0), lineWidth = null !== (_e = backgroundStyle.lineWidth) && void 0 !== _e ? _e : 1, range = this.stage ? [ this.stage.width, this.stage.height ] : void 0, layout = "auto" === position;
63
+ for (let i = 0; i < this.positionList.length; i++) {
64
+ const p = layout ? this.positionList[i] : position, {angle: angle, offset: offset, rectOffset: rectOffset} = this.getAngleAndOffset(p, popTipWidth, poptipHeight, (0,
65
+ vutils_1.isArray)(spaceSize) ? spaceSize : [ spaceSize, spaceSize - lineWidth ]);
66
+ if ((0, vutils_1.isBoolean)(bgVisible)) {
67
+ const offsetX = ((0, vutils_1.isArray)(symbolSize) ? symbolSize[0] : symbolSize) / 4, bgSymbol = group.createOrUpdateChild("poptip-symbol-panel", Object.assign(Object.assign({}, backgroundStyle), {
68
+ visible: bgVisible && (contentVisible || titleVisible),
69
+ x: offsetX,
70
+ y: 0,
71
+ anchor: [ 0, 0 ],
72
+ symbolType: "arrow2Left",
73
+ angle: angle,
74
+ dx: offset[0],
75
+ dy: offset[1],
76
+ size: symbolSize,
77
+ zIndex: -9
78
+ }), "symbol");
79
+ (0, vutils_1.isEmpty)(null == state ? void 0 : state.panel) || (bgSymbol.states = state.panel);
80
+ const bgRect = group.createOrUpdateChild("poptip-rect-panel", Object.assign(Object.assign({}, backgroundStyle), {
81
+ visible: bgVisible && (contentVisible || titleVisible),
82
+ x: 0,
83
+ y: 0,
84
+ width: popTipWidth,
85
+ height: poptipHeight,
86
+ zIndex: -10
87
+ }), "rect");
88
+ (0, vutils_1.isEmpty)(null == state ? void 0 : state.panel) || (bgRect.states = state.panel);
89
+ }
90
+ if (group.setAttributes({
91
+ x: -offset[0] + dx,
92
+ y: -offset[1] + dy
93
+ }), !layout || !range) break;
94
+ {
95
+ const b = this.AABBBounds, stageBounds = (new vutils_1.Bounds).setValue(0, 0, range[0], range[1]);
96
+ if ((0, vutils_1.rectInsideAnotherRect)(b, stageBounds, !1)) break;
97
+ }
85
98
  }
86
- group.setAttributes({
87
- x: -offset[0] + dx,
88
- y: -offset[1] + dy
89
- });
90
99
  }
91
100
  getAngleAndOffset(position, width, height, size) {
92
101
  const sizeH = size[1] / 2;
@@ -1 +1 @@
1
- {"version":3,"sources":["poptip/poptip.ts"],"names":[],"mappings":"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","file":"poptip.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n IGroup,\n IRect,\n ISymbol,\n ISymbolGraphicAttribute,\n IText,\n ITextGraphicAttribute,\n TextAlignType,\n TextBaselineType\n} from '@visactor/vrender';\nimport { isArray, isBoolean, isEmpty, isValid, max, merge, normalizePadding, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { BackgroundAttributes } from '../interface';\nimport type { PopTipAttributes } from './type';\n\nexport class PopTip extends AbstractComponent<Required<PopTipAttributes>> {\n name = 'poptip';\n\n static defaultAttributes: Partial<PopTipAttributes> = {\n position: 'rt',\n visible: true,\n title: null,\n content: null,\n titleStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n contentStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n space: 8,\n padding: 10\n };\n\n constructor(attributes: PopTipAttributes) {\n super(merge({}, PopTip.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n title = '',\n titleStyle = {} as ITextGraphicAttribute,\n position,\n content = '',\n contentStyle = {} as ITextGraphicAttribute,\n panel = {} as BackgroundAttributes & ISymbolGraphicAttribute,\n space = 4,\n minWidth = 0,\n maxWidth = Infinity,\n padding = 4,\n visible,\n state,\n dx = 0,\n dy = 0\n } = this.attribute as PopTipAttributes;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('poptip-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n const maxLineWidth = maxWidth - parsedPadding[1] - parsedPadding[3];\n\n const titleVisible = isValid(title) && visible !== false;\n const titleAttrs = {\n text: title,\n visible: titleVisible,\n ...titleStyle,\n x: parsedPadding[3],\n y: parsedPadding[0],\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const titleShape = group.createOrUpdateChild('poptip-title', titleAttrs, 'text') as IText;\n if (!isEmpty(state?.title)) {\n titleShape.states = state.title;\n }\n\n const titleBounds = titleShape.AABBBounds;\n const titleHeight = titleBounds.height();\n const titleWidth = titleBounds.width();\n let height = titleHeight + space;\n if (!titleVisible) {\n height = 0;\n }\n\n const contentVisible = isValid(content) && visible !== false;\n const contentAttrs = {\n text: content,\n visible: contentVisible,\n ...contentStyle,\n x: parsedPadding[3],\n y: parsedPadding[0] + height,\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const contentShape = group.createOrUpdateChild('poptip-content', contentAttrs, 'text') as IText;\n if (!isEmpty(state?.content)) {\n contentShape.states = state.content;\n }\n\n const contentBounds = contentShape.AABBBounds;\n const contentHeight = contentBounds.height();\n const contentWidth = contentBounds.width();\n\n if (contentVisible) {\n height += contentHeight;\n }\n\n // 计算整个popTip的宽高\n let popTipWidth = max(\n titleWidth + parsedPadding[1] + parsedPadding[3],\n contentWidth + parsedPadding[1] + parsedPadding[3]\n );\n if (popTipWidth > maxWidth) {\n popTipWidth = maxWidth;\n } else if (popTipWidth < minWidth) {\n popTipWidth = minWidth;\n }\n const poptipHeight = parsedPadding[0] + parsedPadding[2] + height;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n const symbolSize = backgroundStyle.size ?? 12;\n const lineWidth = backgroundStyle.lineWidth ?? 1;\n const { angle, offset, rectOffset } = this.getAngleAndOffset(\n position,\n popTipWidth,\n poptipHeight,\n isArray(symbolSize) ? symbolSize : [symbolSize, symbolSize - lineWidth]\n );\n if (isBoolean(bgVisible)) {\n const offsetX = (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 4;\n const bgSymbol = group.createOrUpdateChild(\n 'poptip-symbol-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: offsetX,\n y: 0,\n anchor: [0, 0],\n symbolType: 'arrow2Left',\n angle: angle,\n dx: offset[0],\n dy: offset[1],\n size: symbolSize,\n zIndex: -9\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.panel)) {\n bgSymbol.states = state.panel;\n }\n\n const bgRect = group.createOrUpdateChild(\n 'poptip-rect-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: 0,\n y: 0,\n width: popTipWidth,\n height: poptipHeight,\n zIndex: -10\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n\n group.setAttributes({\n x: -offset[0] + dx,\n y: -offset[1] + dy\n });\n }\n\n getAngleAndOffset(\n position: string,\n width: number,\n height: number,\n size: [number, number]\n ): { angle: number; offset: [number, number]; rectOffset: [number, number] } {\n // const sizeW = size[0];\n const sizeH = size[1] / 2;\n switch (position) {\n case 'tl':\n return {\n angle: (pi / 2) * 3,\n offset: [width / 4, height + sizeH],\n rectOffset: [-width / 4, -height - size[1]]\n };\n case 'top':\n return { angle: (pi / 2) * 3, offset: [width / 2, height + sizeH], rectOffset: [0, -height - size[1]] };\n case 'tr':\n return {\n angle: (pi / 2) * 3,\n offset: [(width / 4) * 3, height + sizeH],\n rectOffset: [(width / 4) * 3, -height - size[1]]\n };\n case 'rt':\n return { angle: 0, offset: [-sizeH, height / 5], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'right':\n return { angle: 0, offset: [-sizeH, height / 2], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'rb':\n return { angle: 0, offset: [-sizeH, (height / 5) * 4], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'bl':\n return { angle: pi / 2, offset: [width / 4, -sizeH], rectOffset: [-width / 4, -height - size[1]] };\n case 'bottom':\n return { angle: pi / 2, offset: [width / 2, -sizeH], rectOffset: [0, -height - size[1]] };\n case 'br':\n return { angle: pi / 2, offset: [(width / 4) * 3, -sizeH], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'lt':\n return { angle: pi, offset: [width + sizeH, height / 5], rectOffset: [-width / 4, -height - size[1]] };\n case 'left':\n return { angle: pi, offset: [width + sizeH, height / 2], rectOffset: [0, -height - size[1]] };\n case 'lb':\n return {\n angle: pi,\n offset: [width + sizeH, (height / 5) * 4],\n rectOffset: [(width / 4) * 3, -height - size[1]]\n };\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["poptip/poptip.ts"],"names":[],"mappings":"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","file":"poptip.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n IGroup,\n IRect,\n ISymbol,\n ISymbolGraphicAttribute,\n IText,\n ITextGraphicAttribute,\n TextAlignType,\n TextBaselineType\n} from '@visactor/vrender';\nimport {\n Bounds,\n isArray,\n isBoolean,\n isEmpty,\n isValid,\n max,\n merge,\n normalizePadding,\n pi,\n rectInsideAnotherRect\n} from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { BackgroundAttributes } from '../interface';\nimport type { PopTipAttributes } from './type';\n\nexport class PopTip extends AbstractComponent<Required<PopTipAttributes>> {\n name = 'poptip';\n\n static defaultAttributes: Partial<PopTipAttributes> = {\n position: 'rt',\n visible: true,\n title: null,\n content: null,\n titleStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n contentStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n space: 8,\n padding: 10\n };\n\n constructor(attributes: PopTipAttributes) {\n super(merge({}, PopTip.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n title = '',\n titleStyle = {} as ITextGraphicAttribute,\n position,\n content = '',\n contentStyle = {} as ITextGraphicAttribute,\n panel = {} as BackgroundAttributes & ISymbolGraphicAttribute & { space?: number },\n space = 4,\n minWidth = 0,\n maxWidth = Infinity,\n padding = 4,\n visible,\n state,\n dx = 0,\n dy = 0\n } = this.attribute as PopTipAttributes;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('poptip-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n const maxLineWidth = maxWidth - parsedPadding[1] - parsedPadding[3];\n\n const titleVisible = isValid(title) && visible !== false;\n const titleAttrs = {\n text: title,\n visible: titleVisible,\n ...titleStyle,\n x: parsedPadding[3],\n y: parsedPadding[0],\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const titleShape = group.createOrUpdateChild('poptip-title', titleAttrs, 'text') as IText;\n if (!isEmpty(state?.title)) {\n titleShape.states = state.title;\n }\n\n const titleBounds = titleShape.AABBBounds;\n const titleHeight = titleBounds.height();\n const titleWidth = titleBounds.width();\n let height = titleHeight + space;\n if (!titleVisible) {\n height = 0;\n }\n\n const contentVisible = isValid(content) && visible !== false;\n const contentAttrs = {\n text: content,\n visible: contentVisible,\n ...contentStyle,\n x: parsedPadding[3],\n y: parsedPadding[0] + height,\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const contentShape = group.createOrUpdateChild('poptip-content', contentAttrs, 'text') as IText;\n if (!isEmpty(state?.content)) {\n contentShape.states = state.content;\n }\n\n const contentBounds = contentShape.AABBBounds;\n const contentHeight = contentBounds.height();\n const contentWidth = contentBounds.width();\n\n if (contentVisible) {\n height += contentHeight;\n }\n\n // 计算整个popTip的宽高\n let popTipWidth = max(\n titleWidth + parsedPadding[1] + parsedPadding[3],\n contentWidth + parsedPadding[1] + parsedPadding[3]\n );\n if (popTipWidth > maxWidth) {\n popTipWidth = maxWidth;\n } else if (popTipWidth < minWidth) {\n popTipWidth = minWidth;\n }\n const poptipHeight = parsedPadding[0] + parsedPadding[2] + height;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n const symbolSize = backgroundStyle.size ?? 12;\n const spaceSize: number | [number, number] = isArray(symbolSize)\n ? [symbolSize[0] + (backgroundStyle.space ?? 0), symbolSize[1] + (backgroundStyle.space ?? 0)]\n : (symbolSize as number) + (backgroundStyle.space ?? 0);\n const lineWidth = backgroundStyle.lineWidth ?? 1;\n const range: [number, number] | undefined = (this as any).stage\n ? [(this as any).stage.width, (this as any).stage.height]\n : undefined;\n\n const layout = position === 'auto';\n // 最多循环this.positionList次\n for (let i = 0; i < this.positionList.length; i++) {\n const p = layout ? this.positionList[i] : position;\n const { angle, offset, rectOffset } = this.getAngleAndOffset(\n p,\n popTipWidth,\n poptipHeight,\n isArray(spaceSize) ? (spaceSize as [number, number]) : [spaceSize, spaceSize - lineWidth]\n );\n if (isBoolean(bgVisible)) {\n const offsetX = (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 4;\n const bgSymbol = group.createOrUpdateChild(\n 'poptip-symbol-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: offsetX,\n y: 0,\n anchor: [0, 0],\n symbolType: 'arrow2Left',\n angle: angle,\n dx: offset[0],\n dy: offset[1],\n size: symbolSize,\n zIndex: -9\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.panel)) {\n bgSymbol.states = state.panel;\n }\n\n const bgRect = group.createOrUpdateChild(\n 'poptip-rect-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: 0,\n y: 0,\n width: popTipWidth,\n height: poptipHeight,\n zIndex: -10\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n\n group.setAttributes({\n x: -offset[0] + dx,\n y: -offset[1] + dy\n });\n\n if (layout && range) {\n const b = (this as any).AABBBounds;\n const stageBounds = new Bounds().setValue(0, 0, range[0], range[1]);\n if (rectInsideAnotherRect(b, stageBounds, false)) {\n break;\n }\n } else {\n break;\n }\n }\n }\n\n positionList = ['top', 'tl', 'tr', 'bottom', 'bl', 'br', 'left', 'lt', 'lb', 'right', 'rt', 'rb'];\n\n getAngleAndOffset(\n position: string,\n width: number,\n height: number,\n size: [number, number]\n ): { angle: number; offset: [number, number]; rectOffset: [number, number] } {\n // const sizeW = size[0];\n const sizeH = size[1] / 2;\n switch (position) {\n case 'tl':\n return {\n angle: (pi / 2) * 3,\n offset: [width / 4, height + sizeH],\n rectOffset: [-width / 4, -height - size[1]]\n };\n case 'top':\n return { angle: (pi / 2) * 3, offset: [width / 2, height + sizeH], rectOffset: [0, -height - size[1]] };\n case 'tr':\n return {\n angle: (pi / 2) * 3,\n offset: [(width / 4) * 3, height + sizeH],\n rectOffset: [(width / 4) * 3, -height - size[1]]\n };\n case 'rt':\n return { angle: 0, offset: [-sizeH, height / 5], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'right':\n return { angle: 0, offset: [-sizeH, height / 2], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'rb':\n return { angle: 0, offset: [-sizeH, (height / 5) * 4], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'bl':\n return { angle: pi / 2, offset: [width / 4, -sizeH], rectOffset: [-width / 4, -height - size[1]] };\n case 'bottom':\n return { angle: pi / 2, offset: [width / 2, -sizeH], rectOffset: [0, -height - size[1]] };\n case 'br':\n return { angle: pi / 2, offset: [(width / 4) * 3, -sizeH], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'lt':\n return { angle: pi, offset: [width + sizeH, height / 5], rectOffset: [-width / 4, -height - size[1]] };\n case 'left':\n return { angle: pi, offset: [width + sizeH, height / 2], rectOffset: [0, -height - size[1]] };\n case 'lb':\n return {\n angle: pi,\n offset: [width + sizeH, (height / 5) * 4],\n rectOffset: [(width / 4) * 3, -height - size[1]]\n };\n }\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { ContainerModule } from 'inversify';
2
2
  import type { PopTipAttributes } from './type';
3
- export declare const module: ContainerModule;
3
+ export declare const popTipModule: ContainerModule;
4
4
  export declare function loadPoptip(defaultPoptipTheme: PopTipAttributes): void;
5
+ export declare function setPoptipTheme(defaultPoptipTheme: PopTipAttributes): void;
@@ -2,17 +2,21 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.loadPoptip = exports.module = void 0;
5
+ }), exports.setPoptipTheme = exports.loadPoptip = exports.popTipModule = void 0;
6
6
 
7
7
  const vrender_1 = require("@visactor/vrender"), inversify_1 = require("inversify"), vutils_1 = require("@visactor/vutils"), contribution_1 = require("./contribution"), poptip_plugin_1 = require("./poptip-plugin"), theme_1 = require("./theme");
8
8
 
9
9
  function loadPoptip(defaultPoptipTheme) {
10
- (0, vutils_1.merge)(theme_1.theme.poptip, defaultPoptipTheme), vrender_1.container.load(exports.module);
10
+ (0, vutils_1.merge)(theme_1.theme.poptip, defaultPoptipTheme), vrender_1.container.load(exports.popTipModule);
11
11
  }
12
12
 
13
- exports.module = new inversify_1.ContainerModule((bind => {
13
+ function setPoptipTheme(defaultPoptipTheme) {
14
+ (0, vutils_1.merge)(theme_1.theme.poptip, theme_1.DEFAULT_THEME, defaultPoptipTheme);
15
+ }
16
+
17
+ exports.popTipModule = new inversify_1.ContainerModule((bind => {
14
18
  bind(contribution_1.PopTipRenderContribution).toSelf().inSingletonScope(), bind(vrender_1.InteractiveSubRenderContribution).toService(contribution_1.PopTipRenderContribution),
15
19
  bind(poptip_plugin_1.PopTipPlugin).toSelf().inSingletonScope(), bind(vrender_1.AutoEnablePlugins).toService(poptip_plugin_1.PopTipPlugin),
16
20
  bind(poptip_plugin_1.PopTipForClipedTextPlugin).toSelf().inSingletonScope(), bind(vrender_1.AutoEnablePlugins).toService(poptip_plugin_1.PopTipForClipedTextPlugin);
17
- })), exports.loadPoptip = loadPoptip;
21
+ })), exports.loadPoptip = loadPoptip, exports.setPoptipTheme = setPoptipTheme;
18
22
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["poptip/register.ts"],"names":[],"mappings":";;;AAAA,+CAAmG;AACnG,yCAA4C;AAC5C,6CAAyC;AACzC,iDAA0D;AAC1D,mDAA0E;AAE1E,mCAAgC;AAEnB,QAAA,MAAM,GAAG,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IAC/C,IAAI,CAAC,uCAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC3D,IAAI,CAAC,0CAAgC,CAAC,CAAC,SAAS,CAAC,uCAAwB,CAAC,CAAC;IAE3E,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC/C,IAAI,CAAC,2BAAiB,CAAC,CAAC,SAAS,CAAC,4BAAY,CAAC,CAAC;IAEhD,IAAI,CAAC,yCAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,2BAAiB,CAAC,CAAC,SAAS,CAAC,yCAAyB,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,SAAgB,UAAU,CAAC,kBAAoC;IAC7D,IAAA,cAAK,EAAC,aAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACxC,mBAAS,CAAC,IAAI,CAAC,cAAM,CAAC,CAAC;AACzB,CAAC;AAHD,gCAGC","file":"register.js","sourcesContent":["import { container, InteractiveSubRenderContribution, AutoEnablePlugins } from '@visactor/vrender';\nimport { ContainerModule } from 'inversify';\nimport { merge } from '@visactor/vutils';\nimport { PopTipRenderContribution } from './contribution';\nimport { PopTipPlugin, PopTipForClipedTextPlugin } from './poptip-plugin';\nimport type { PopTipAttributes } from './type';\nimport { theme } from './theme';\n\nexport const module = new ContainerModule(bind => {\n bind(PopTipRenderContribution).toSelf().inSingletonScope();\n bind(InteractiveSubRenderContribution).toService(PopTipRenderContribution);\n\n bind(PopTipPlugin).toSelf().inSingletonScope();\n bind(AutoEnablePlugins).toService(PopTipPlugin);\n\n bind(PopTipForClipedTextPlugin).toSelf().inSingletonScope();\n bind(AutoEnablePlugins).toService(PopTipForClipedTextPlugin);\n});\n\nexport function loadPoptip(defaultPoptipTheme: PopTipAttributes) {\n merge(theme.poptip, defaultPoptipTheme);\n container.load(module);\n}\n"]}
1
+ {"version":3,"sources":["poptip/register.ts"],"names":[],"mappings":";;;AAAA,+CAAmG;AACnG,yCAA4C;AAC5C,6CAAyC;AACzC,iDAA0D;AAC1D,mDAA0E;AAE1E,mCAA+C;AAElC,QAAA,YAAY,GAAG,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACrD,IAAI,CAAC,uCAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC3D,IAAI,CAAC,0CAAgC,CAAC,CAAC,SAAS,CAAC,uCAAwB,CAAC,CAAC;IAE3E,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC/C,IAAI,CAAC,2BAAiB,CAAC,CAAC,SAAS,CAAC,4BAAY,CAAC,CAAC;IAEhD,IAAI,CAAC,yCAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,2BAAiB,CAAC,CAAC,SAAS,CAAC,yCAAyB,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,SAAgB,UAAU,CAAC,kBAAoC;IAC7D,IAAA,cAAK,EAAC,aAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACxC,mBAAS,CAAC,IAAI,CAAC,oBAAY,CAAC,CAAC;AAC/B,CAAC;AAHD,gCAGC;AAED,SAAgB,cAAc,CAAC,kBAAoC;IACjE,IAAA,cAAK,EAAC,aAAK,CAAC,MAAM,EAAE,qBAAa,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAFD,wCAEC","file":"register.js","sourcesContent":["import { container, InteractiveSubRenderContribution, AutoEnablePlugins } from '@visactor/vrender';\nimport { ContainerModule } from 'inversify';\nimport { merge } from '@visactor/vutils';\nimport { PopTipRenderContribution } from './contribution';\nimport { PopTipPlugin, PopTipForClipedTextPlugin } from './poptip-plugin';\nimport type { PopTipAttributes } from './type';\nimport { DEFAULT_THEME, theme } from './theme';\n\nexport const popTipModule = new ContainerModule(bind => {\n bind(PopTipRenderContribution).toSelf().inSingletonScope();\n bind(InteractiveSubRenderContribution).toService(PopTipRenderContribution);\n\n bind(PopTipPlugin).toSelf().inSingletonScope();\n bind(AutoEnablePlugins).toService(PopTipPlugin);\n\n bind(PopTipForClipedTextPlugin).toSelf().inSingletonScope();\n bind(AutoEnablePlugins).toService(PopTipForClipedTextPlugin);\n});\n\nexport function loadPoptip(defaultPoptipTheme: PopTipAttributes) {\n merge(theme.poptip, defaultPoptipTheme);\n container.load(popTipModule);\n}\n\nexport function setPoptipTheme(defaultPoptipTheme: PopTipAttributes) {\n merge(theme.poptip, DEFAULT_THEME, defaultPoptipTheme);\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import type { PopTipAttributes } from './type';
2
+ export declare const DEFAULT_THEME: PopTipAttributes;
2
3
  export declare const theme: {
3
4
  poptip: PopTipAttributes;
4
5
  };