@visactor/vchart 2.0.5-alpha.5 → 2.0.5-alpha.7
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/build/es5/index.js +2 -2
- package/build/index.es.js +38 -23
- package/build/index.js +39 -22
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/compile/compiler.js +3 -4
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/component/crosshair/base.js +2 -2
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +11 -11
- package/cjs/index.js.map +1 -1
- package/cjs/layout/grid-layout/grid-layout.js +2 -0
- package/cjs/layout/grid-layout/grid-layout.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/base.js +23 -13
- package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
- package/cjs/series/sankey/sankey.js +1 -1
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/esm/compile/compiler.js +3 -4
- package/esm/compile/compiler.js.map +1 -1
- package/esm/component/crosshair/base.js +2 -2
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -1
- package/esm/layout/grid-layout/grid-layout.js +2 -0
- package/esm/layout/grid-layout/grid-layout.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/base.js +23 -12
- package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
- package/esm/series/sankey/sankey.js +1 -1
- package/esm/series/sankey/sankey.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/layout/grid-layout/grid-layout.ts"],"names":[],"mappings":"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","file":"grid-layout.js","sourcesContent":["import type { utilFunctionCtx } from '../../typings/params';\nimport type { IChart } from '../../chart/interface/chart';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { IBaseLayout, IGridLayoutSpec, ElementSpec, ILayoutItem } from '../interface';\nimport { isFunction, isValid, isValidNumber } from '@visactor/vutils';\nimport type { IRect } from '../../typings/space';\nimport { Factory } from '../../core/factory';\n\ntype GridSize = {\n value: number;\n isUserSetting: boolean;\n isLayoutSetting: boolean;\n};\n\nexport class GridLayout implements IBaseLayout {\n static type = 'grid';\n private _chartLayoutRect: IRect = { x: 0, y: 0, width: 1, height: 1 };\n private _chartViewBox: IBoundsLike;\n\n protected _col: number = 1;\n protected _row: number = 1;\n protected _colSize: GridSize[];\n protected _rowSize: GridSize[];\n\n protected _colElements: ILayoutItem[][];\n protected _rowElements: ILayoutItem[][];\n\n protected _gridInfo: IGridLayoutSpec;\n\n protected _elementMap: Map<ILayoutItem, ElementSpec> = new Map();\n\n protected _onError: (...args: any[]) => void;\n\n constructor(gridInfo: IGridLayoutSpec, ctx: utilFunctionCtx) {\n this.standardizationSpec(gridInfo);\n this._gridInfo = gridInfo;\n this._col = gridInfo.col;\n this._row = gridInfo.row;\n this._colSize = new Array(this._col).fill(null);\n this._rowSize = new Array(this._row).fill(null);\n this._colElements = new Array(this._col).fill([]);\n this._rowElements = new Array(this._row).fill([]);\n this._onError = ctx?.onError;\n\n this.initUserSetting();\n }\n\n protected standardizationSpec(gridInfo: IGridLayoutSpec) {\n gridInfo.col = gridInfo.col ?? 1;\n gridInfo.row = gridInfo.row ?? 1;\n gridInfo.elements = gridInfo.elements ?? [];\n }\n\n protected initUserSetting() {\n // 先对用户设置的宽高进行设置\n this._gridInfo.colWidth &&\n this.setSizeFromUserSetting(this._gridInfo.colWidth, this._colSize, this._col, this._chartLayoutRect.width);\n\n this._gridInfo.rowHeight &&\n this.setSizeFromUserSetting(this._gridInfo.rowHeight, this._rowSize, this._row, this._chartLayoutRect.height);\n // 其余位置默认填充0\n this._colSize.forEach((c, i) => {\n if (!c) {\n this._colSize[i] = {\n value: 0,\n isUserSetting: false,\n isLayoutSetting: false\n };\n }\n });\n this._rowSize.forEach((r, i) => {\n if (!r) {\n this._rowSize[i] = {\n value: 0,\n isUserSetting: false,\n isLayoutSetting: false\n };\n }\n });\n }\n\n /**\n * 设置用户设置的 colWidth 和 rowHeight\n */\n protected setSizeFromUserSetting(\n userSetting: {\n index: number;\n size: number | ((maxSize: number) => number);\n }[],\n gridSize: GridSize[],\n gridMax: number,\n maxSize: number\n ) {\n userSetting.forEach(userSet => {\n if (userSet.index < 0 && userSet.index >= gridMax) {\n return;\n }\n if (isValidNumber(userSet.size)) {\n gridSize[userSet.index] = {\n value: +userSet.size,\n isUserSetting: true,\n isLayoutSetting: false\n };\n } else if (isFunction(userSet.size)) {\n gridSize[userSet.index] = {\n value: userSet.size(maxSize),\n isUserSetting: true,\n isLayoutSetting: false\n };\n }\n });\n }\n\n protected clearLayoutSize() {\n // 其余位置默认填充0\n this._colSize.forEach(c => {\n c.isLayoutSetting = false;\n if (!c.isUserSetting) {\n c.value = 0;\n }\n });\n this._rowSize.forEach(r => {\n r.isLayoutSetting = false;\n if (!r.isUserSetting) {\n r.value = 0;\n }\n });\n }\n\n protected getItemGridInfo(item: ILayoutItem): ElementSpec {\n // map 中寻找\n const mapResult = this._elementMap.get(item);\n if (mapResult) {\n return mapResult;\n }\n // 配置中匹配\n let result: ElementSpec | undefined;\n result = this._gridInfo.elements?.find(e => {\n if ('modelId' in e && isValid(e.modelId)) {\n if (isValid(item.model.userId) && item.model.userId === e.modelId) {\n return true;\n }\n } else if ('modelKey' in e && isValid(e.modelKey) && 'modelIndex' in e && isValid(e.modelIndex)) {\n const specKey = item.model.specKey ?? item.model.type;\n if (specKey === e.modelKey && item.model.getSpecIndex() === e.modelIndex) {\n return true;\n }\n }\n return false;\n });\n // default\n if (!result) {\n result = {\n col: 0,\n colSpan: 1,\n row: 0,\n rowSpan: 1\n } as ElementSpec;\n }\n this._elementMap.set(item, result);\n return result;\n }\n\n protected getSizeFromGrid(spec: ElementSpec, type: 'col' | 'row'): number | undefined {\n const sizeList = type === 'col' ? this._colSize : this._rowSize;\n let result = 0;\n for (let index = spec[type]; index < spec[type] + (spec[`${type}Span`] ?? 1); index++) {\n result += sizeList[index].value;\n }\n return result;\n }\n\n protected getSizeFromUser(spec: ElementSpec, type: 'col' | 'row'): number | undefined {\n const sizeList = type === 'col' ? this._colSize : this._rowSize;\n if (!sizeList[spec[type]]?.isUserSetting) {\n return undefined;\n }\n let result = 0;\n for (let index = spec[type]; index < spec[type] + (spec[`${type}Span`] ?? 1); index++) {\n if (!sizeList[index].isUserSetting) {\n return undefined;\n }\n result += sizeList[index].value;\n }\n return result;\n }\n\n protected setItemLayoutSizeToGrid(item: ILayoutItem, gridSpec: ElementSpec) {\n if (isColItem(item)) {\n if (gridSpec.colSpan && gridSpec.colSpan > 1) {\n return;\n }\n if (this._colSize[gridSpec.col].isUserSetting) {\n return;\n }\n this._colSize[gridSpec.col].value = Math.max(\n this._colSize[gridSpec.col].value,\n item.getLayoutRect().width + item.layoutPaddingLeft + item.layoutPaddingRight\n );\n this._colSize[gridSpec.col].isLayoutSetting = true;\n } else {\n if (gridSpec.rowSpan && gridSpec.rowSpan > 1) {\n return;\n }\n if (this._rowSize[gridSpec.row].isUserSetting) {\n return;\n }\n this._rowSize[gridSpec.row].value = Math.max(\n this._rowSize[gridSpec.row].value,\n item.getLayoutRect().height + item.layoutPaddingTop + item.layoutPaddingBottom\n );\n this._rowSize[gridSpec.row].isLayoutSetting = true;\n }\n }\n\n protected layoutGrid(type: 'col' | 'row') {\n const gridSize = type === 'col' ? this._colSize : this._rowSize;\n let unSetSize = type === 'col' ? this._chartLayoutRect.width : this._chartLayoutRect.height;\n const willSize: GridSize[] = [];\n gridSize.forEach(s => {\n if (s.isUserSetting || s.isLayoutSetting) {\n unSetSize -= s.value;\n } else {\n willSize.push(s);\n }\n });\n if (unSetSize < 0) {\n console.warn(`layout content ${type} size bigger than chart`);\n }\n willSize.forEach(s => (s.value = unSetSize / willSize.length));\n }\n\n protected getItemPosition(item: ILayoutItem) {\n const gridSpec = this.getItemGridInfo(item);\n const point = { x: this._chartLayoutRect.x, y: this._chartLayoutRect.y };\n for (let col = 0; col < gridSpec.col; col++) {\n point.x += this._colSize[col].value;\n }\n for (let row = 0; row < gridSpec.row; row++) {\n point.y += this._rowSize[row].value;\n }\n point.x += item.layoutPaddingLeft + item.layoutOffsetX;\n point.y += item.layoutPaddingTop + item.layoutOffsetY;\n return point;\n }\n\n protected getItemLayoutRect(item: ILayoutItem) {\n const gridSpec = this.getItemGridInfo(item);\n // 先设置空间\n const rect = {\n width:\n (this.getSizeFromGrid(gridSpec, 'col') ?? this._chartLayoutRect.width) -\n item.layoutPaddingLeft -\n item.layoutPaddingRight,\n height:\n (this.getSizeFromGrid(gridSpec, 'row') ?? this._chartLayoutRect.height) -\n item.layoutPaddingTop -\n item.layoutPaddingBottom\n };\n return rect;\n }\n\n layoutItems(_chart: IChart, items: ILayoutItem[], chartLayoutRect: IRect, chartViewBox: IBoundsLike): void {\n this._chartLayoutRect = chartLayoutRect;\n this._chartViewBox = chartViewBox;\n // 先清空旧布局信息\n this.clearLayoutSize();\n // 越大越先处理,进行排序调整,利用原地排序特性,排序会受 level 和传进来的数组顺序共同影响\n items.sort((a, b) => b.layoutLevel - a.layoutLevel);\n\n // 剔除 region 后,其余元素先布局运算\n const normalItems = items.filter(item => item.layoutType === 'normal' && item.getModelVisible() !== false);\n const normalItemsCol = normalItems.filter(item => isColItem(item));\n const normalItemsRow = normalItems.filter(item => !isColItem(item));\n normalItems.forEach(item => {\n this.layoutOneItem(item, 'user', false);\n });\n\n // region 和 region 关联元素\n const regionsRelative = items.filter(x => x.layoutType === 'region-relative');\n const regionsRelativeCol = regionsRelative.filter(item => isColItem(item));\n const regionsRelativeRow = regionsRelative.filter(item => !isColItem(item));\n // 先进行 col 方向布局\n regionsRelativeCol.forEach(item => this.layoutOneItem(item, 'user', false));\n // 然后得到最终 col 信息 此时已经是最终 col 信息\n this.layoutGrid('col');\n // 再使用宽度信息辅助row方向排序\n // 此时普通占位元素,会因为布局宽度影响最终布局高度\n normalItemsRow.forEach(item => this.layoutOneItem(item, 'colGrid', false));\n regionsRelativeRow.forEach(item => {\n this.layoutOneItem(item, 'colGrid', false);\n });\n // 然后得到最终 row 信息\n this.layoutGrid('row');\n // 统一水平方向元素高度\n regionsRelativeRow.forEach(item => {\n this.layoutOneItem(item, 'grid', false);\n });\n // 再使用宽度信息,第二次次对 col 方向布局\n normalItemsCol.forEach(item => this.layoutOneItem(item, 'grid', false));\n regionsRelativeCol.forEach(item => {\n // 此时从布局逻辑可知,item的layoutRect会发生,将item的layoutTag设置为true\n this.layoutOneItem(item, 'grid', true);\n });\n this.layoutGrid('col');\n\n // region\n items.filter(x => x.layoutType === 'region').forEach(item => this.layoutOneItem(item, 'grid', false));\n\n // 再找出 absolute 元素,无需排序,在 compiler 层需要排序放置\n this.layoutAbsoluteItems(items.filter(x => x.layoutType === 'absolute'));\n\n // 最后基于grid 设置位置\n items\n .filter(x => x.layoutType !== 'absolute')\n .forEach(item => {\n item.setLayoutStartPosition(this.getItemPosition(item));\n });\n }\n\n /**\n *\n * 无需排序,在 compiler 层需要排序放置\n *\n * 重要:absolute 默认依据 region 进行相对依赖\n */\n\n private layoutAbsoluteItems(absoluteItems: ILayoutItem[]) {\n absoluteItems.forEach(item => {\n // 设置盒子\n item.absoluteLayoutInRect(this._chartLayoutRect);\n });\n }\n\n protected layoutOneItem(item: ILayoutItem, sizeType: 'user' | 'grid' | 'colGrid' | 'rowGrid', ignoreTag: boolean) {\n const sizeCallRow =\n sizeType === 'rowGrid' || sizeType === 'grid' ? this.getSizeFromGrid.bind(this) : this.getSizeFromUser.bind(this);\n const sizeCallCol =\n sizeType === 'colGrid' || sizeType === 'grid' ? this.getSizeFromGrid.bind(this) : this.getSizeFromUser.bind(this);\n // 先获取 item 的 grid 信息\n const gridSpec = this.getItemGridInfo(item);\n // 先设置空间\n const computeRect = {\n width:\n (sizeCallCol(gridSpec, 'col') ?? this._chartLayoutRect.width) -\n item.layoutPaddingLeft -\n item.layoutPaddingRight,\n height:\n (sizeCallRow(gridSpec, 'row') ?? this._chartLayoutRect.height) -\n item.layoutPaddingTop -\n item.layoutPaddingBottom\n };\n const rect = item.computeBoundsInRect(computeRect);\n if (!isValidNumber(rect.width)) {\n rect.width = computeRect.width;\n }\n if (!isValidNumber(rect.height)) {\n rect.height = computeRect.height;\n }\n item.setLayoutRect(sizeType !== 'grid' ? rect : computeRect);\n // 设置大小到grid\n this.setItemLayoutSizeToGrid(item, gridSpec);\n }\n}\n\nfunction isColItem(item: ILayoutItem) {\n return item.layoutOrient === 'left' || item.layoutOrient === 'right';\n}\n\nexport const registerGridLayout = () => {\n Factory.registerLayout(GridLayout.type, GridLayout);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/layout/grid-layout/grid-layout.ts"],"names":[],"mappings":"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","file":"grid-layout.js","sourcesContent":["import type { utilFunctionCtx } from '../../typings/params';\nimport type { IChart } from '../../chart/interface/chart';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { IBaseLayout, IGridLayoutSpec, ElementSpec, ILayoutItem } from '../interface';\nimport { isFunction, isValid, isValidNumber } from '@visactor/vutils';\nimport type { IRect } from '../../typings/space';\nimport { Factory } from '../../core/factory';\n\ntype GridSize = {\n value: number;\n isUserSetting: boolean;\n isLayoutSetting: boolean;\n};\n\nexport class GridLayout implements IBaseLayout {\n static type = 'grid';\n private _chartLayoutRect: IRect = { x: 0, y: 0, width: 1, height: 1 };\n private _chartViewBox: IBoundsLike;\n\n protected _col: number = 1;\n protected _row: number = 1;\n protected _colSize: GridSize[];\n protected _rowSize: GridSize[];\n\n protected _colElements: ILayoutItem[][];\n protected _rowElements: ILayoutItem[][];\n\n protected _gridInfo: IGridLayoutSpec;\n\n protected _elementMap: Map<ILayoutItem, ElementSpec> = new Map();\n\n protected _onError: (...args: any[]) => void;\n\n constructor(gridInfo: IGridLayoutSpec, ctx: utilFunctionCtx) {\n this.standardizationSpec(gridInfo);\n this._gridInfo = gridInfo;\n this._col = gridInfo.col;\n this._row = gridInfo.row;\n this._colSize = new Array(this._col).fill(null);\n this._rowSize = new Array(this._row).fill(null);\n this._colElements = new Array(this._col).fill([]);\n this._rowElements = new Array(this._row).fill([]);\n this._onError = ctx?.onError;\n\n this.initUserSetting();\n }\n\n protected standardizationSpec(gridInfo: IGridLayoutSpec) {\n gridInfo.col = gridInfo.col ?? 1;\n gridInfo.row = gridInfo.row ?? 1;\n gridInfo.elements = gridInfo.elements ?? [];\n }\n\n protected initUserSetting() {\n // 先对用户设置的宽高进行设置\n this._gridInfo.colWidth &&\n this.setSizeFromUserSetting(this._gridInfo.colWidth, this._colSize, this._col, this._chartLayoutRect.width);\n\n this._gridInfo.rowHeight &&\n this.setSizeFromUserSetting(this._gridInfo.rowHeight, this._rowSize, this._row, this._chartLayoutRect.height);\n // 其余位置默认填充0\n this._colSize.forEach((c, i) => {\n if (!c) {\n this._colSize[i] = {\n value: 0,\n isUserSetting: false,\n isLayoutSetting: false\n };\n }\n });\n this._rowSize.forEach((r, i) => {\n if (!r) {\n this._rowSize[i] = {\n value: 0,\n isUserSetting: false,\n isLayoutSetting: false\n };\n }\n });\n }\n\n /**\n * 设置用户设置的 colWidth 和 rowHeight\n */\n protected setSizeFromUserSetting(\n userSetting: {\n index: number;\n size: number | ((maxSize: number) => number);\n }[],\n gridSize: GridSize[],\n gridMax: number,\n maxSize: number\n ) {\n userSetting.forEach(userSet => {\n if (userSet.index < 0 && userSet.index >= gridMax) {\n return;\n }\n if (isValidNumber(userSet.size)) {\n gridSize[userSet.index] = {\n value: +userSet.size,\n isUserSetting: true,\n isLayoutSetting: false\n };\n } else if (isFunction(userSet.size)) {\n gridSize[userSet.index] = {\n value: userSet.size(maxSize),\n isUserSetting: true,\n isLayoutSetting: false\n };\n }\n });\n }\n\n protected clearLayoutSize() {\n // 先对用户设置的宽高进行设置\n this._gridInfo.colWidth &&\n this.setSizeFromUserSetting(this._gridInfo.colWidth, this._colSize, this._col, this._chartLayoutRect.width);\n\n this._gridInfo.rowHeight &&\n this.setSizeFromUserSetting(this._gridInfo.rowHeight, this._rowSize, this._row, this._chartLayoutRect.height);\n\n // 其余位置默认填充0\n this._colSize.forEach(c => {\n c.isLayoutSetting = false;\n if (!c.isUserSetting) {\n c.value = 0;\n }\n });\n this._rowSize.forEach(r => {\n r.isLayoutSetting = false;\n if (!r.isUserSetting) {\n r.value = 0;\n }\n });\n }\n\n protected getItemGridInfo(item: ILayoutItem): ElementSpec {\n // map 中寻找\n const mapResult = this._elementMap.get(item);\n if (mapResult) {\n return mapResult;\n }\n // 配置中匹配\n let result: ElementSpec | undefined;\n result = this._gridInfo.elements?.find(e => {\n if ('modelId' in e && isValid(e.modelId)) {\n if (isValid(item.model.userId) && item.model.userId === e.modelId) {\n return true;\n }\n } else if ('modelKey' in e && isValid(e.modelKey) && 'modelIndex' in e && isValid(e.modelIndex)) {\n const specKey = item.model.specKey ?? item.model.type;\n if (specKey === e.modelKey && item.model.getSpecIndex() === e.modelIndex) {\n return true;\n }\n }\n return false;\n });\n // default\n if (!result) {\n result = {\n col: 0,\n colSpan: 1,\n row: 0,\n rowSpan: 1\n } as ElementSpec;\n }\n this._elementMap.set(item, result);\n return result;\n }\n\n protected getSizeFromGrid(spec: ElementSpec, type: 'col' | 'row'): number | undefined {\n const sizeList = type === 'col' ? this._colSize : this._rowSize;\n let result = 0;\n for (let index = spec[type]; index < spec[type] + (spec[`${type}Span`] ?? 1); index++) {\n result += sizeList[index].value;\n }\n return result;\n }\n\n protected getSizeFromUser(spec: ElementSpec, type: 'col' | 'row'): number | undefined {\n const sizeList = type === 'col' ? this._colSize : this._rowSize;\n if (!sizeList[spec[type]]?.isUserSetting) {\n return undefined;\n }\n let result = 0;\n for (let index = spec[type]; index < spec[type] + (spec[`${type}Span`] ?? 1); index++) {\n if (!sizeList[index].isUserSetting) {\n return undefined;\n }\n result += sizeList[index].value;\n }\n return result;\n }\n\n protected setItemLayoutSizeToGrid(item: ILayoutItem, gridSpec: ElementSpec) {\n if (isColItem(item)) {\n if (gridSpec.colSpan && gridSpec.colSpan > 1) {\n return;\n }\n if (this._colSize[gridSpec.col].isUserSetting) {\n return;\n }\n this._colSize[gridSpec.col].value = Math.max(\n this._colSize[gridSpec.col].value,\n item.getLayoutRect().width + item.layoutPaddingLeft + item.layoutPaddingRight\n );\n this._colSize[gridSpec.col].isLayoutSetting = true;\n } else {\n if (gridSpec.rowSpan && gridSpec.rowSpan > 1) {\n return;\n }\n if (this._rowSize[gridSpec.row].isUserSetting) {\n return;\n }\n this._rowSize[gridSpec.row].value = Math.max(\n this._rowSize[gridSpec.row].value,\n item.getLayoutRect().height + item.layoutPaddingTop + item.layoutPaddingBottom\n );\n this._rowSize[gridSpec.row].isLayoutSetting = true;\n }\n }\n\n protected layoutGrid(type: 'col' | 'row') {\n const gridSize = type === 'col' ? this._colSize : this._rowSize;\n let unSetSize = type === 'col' ? this._chartLayoutRect.width : this._chartLayoutRect.height;\n const willSize: GridSize[] = [];\n gridSize.forEach(s => {\n if (s.isUserSetting || s.isLayoutSetting) {\n unSetSize -= s.value;\n } else {\n willSize.push(s);\n }\n });\n if (unSetSize < 0) {\n console.warn(`layout content ${type} size bigger than chart`);\n }\n willSize.forEach(s => (s.value = unSetSize / willSize.length));\n }\n\n protected getItemPosition(item: ILayoutItem) {\n const gridSpec = this.getItemGridInfo(item);\n const point = { x: this._chartLayoutRect.x, y: this._chartLayoutRect.y };\n for (let col = 0; col < gridSpec.col; col++) {\n point.x += this._colSize[col].value;\n }\n for (let row = 0; row < gridSpec.row; row++) {\n point.y += this._rowSize[row].value;\n }\n point.x += item.layoutPaddingLeft + item.layoutOffsetX;\n point.y += item.layoutPaddingTop + item.layoutOffsetY;\n return point;\n }\n\n protected getItemLayoutRect(item: ILayoutItem) {\n const gridSpec = this.getItemGridInfo(item);\n // 先设置空间\n const rect = {\n width:\n (this.getSizeFromGrid(gridSpec, 'col') ?? this._chartLayoutRect.width) -\n item.layoutPaddingLeft -\n item.layoutPaddingRight,\n height:\n (this.getSizeFromGrid(gridSpec, 'row') ?? this._chartLayoutRect.height) -\n item.layoutPaddingTop -\n item.layoutPaddingBottom\n };\n return rect;\n }\n\n layoutItems(_chart: IChart, items: ILayoutItem[], chartLayoutRect: IRect, chartViewBox: IBoundsLike): void {\n this._chartLayoutRect = chartLayoutRect;\n this._chartViewBox = chartViewBox;\n // 先清空旧布局信息\n this.clearLayoutSize();\n // 越大越先处理,进行排序调整,利用原地排序特性,排序会受 level 和传进来的数组顺序共同影响\n items.sort((a, b) => b.layoutLevel - a.layoutLevel);\n\n // 剔除 region 后,其余元素先布局运算\n const normalItems = items.filter(item => item.layoutType === 'normal' && item.getModelVisible() !== false);\n const normalItemsCol = normalItems.filter(item => isColItem(item));\n const normalItemsRow = normalItems.filter(item => !isColItem(item));\n normalItems.forEach(item => {\n this.layoutOneItem(item, 'user', false);\n });\n\n // region 和 region 关联元素\n const regionsRelative = items.filter(x => x.layoutType === 'region-relative');\n const regionsRelativeCol = regionsRelative.filter(item => isColItem(item));\n const regionsRelativeRow = regionsRelative.filter(item => !isColItem(item));\n // 先进行 col 方向布局\n regionsRelativeCol.forEach(item => this.layoutOneItem(item, 'user', false));\n // 然后得到最终 col 信息 此时已经是最终 col 信息\n this.layoutGrid('col');\n // 再使用宽度信息辅助row方向排序\n // 此时普通占位元素,会因为布局宽度影响最终布局高度\n normalItemsRow.forEach(item => this.layoutOneItem(item, 'colGrid', false));\n regionsRelativeRow.forEach(item => {\n this.layoutOneItem(item, 'colGrid', false);\n });\n // 然后得到最终 row 信息\n this.layoutGrid('row');\n // 统一水平方向元素高度\n regionsRelativeRow.forEach(item => {\n this.layoutOneItem(item, 'grid', false);\n });\n // 再使用宽度信息,第二次次对 col 方向布局\n normalItemsCol.forEach(item => this.layoutOneItem(item, 'grid', false));\n regionsRelativeCol.forEach(item => {\n // 此时从布局逻辑可知,item的layoutRect会发生,将item的layoutTag设置为true\n this.layoutOneItem(item, 'grid', true);\n });\n this.layoutGrid('col');\n\n // region\n items.filter(x => x.layoutType === 'region').forEach(item => this.layoutOneItem(item, 'grid', false));\n\n // 再找出 absolute 元素,无需排序,在 compiler 层需要排序放置\n this.layoutAbsoluteItems(items.filter(x => x.layoutType === 'absolute'));\n\n // 最后基于grid 设置位置\n items\n .filter(x => x.layoutType !== 'absolute')\n .forEach(item => {\n item.setLayoutStartPosition(this.getItemPosition(item));\n });\n }\n\n /**\n *\n * 无需排序,在 compiler 层需要排序放置\n *\n * 重要:absolute 默认依据 region 进行相对依赖\n */\n\n private layoutAbsoluteItems(absoluteItems: ILayoutItem[]) {\n absoluteItems.forEach(item => {\n // 设置盒子\n item.absoluteLayoutInRect(this._chartLayoutRect);\n });\n }\n\n protected layoutOneItem(item: ILayoutItem, sizeType: 'user' | 'grid' | 'colGrid' | 'rowGrid', ignoreTag: boolean) {\n const sizeCallRow =\n sizeType === 'rowGrid' || sizeType === 'grid' ? this.getSizeFromGrid.bind(this) : this.getSizeFromUser.bind(this);\n const sizeCallCol =\n sizeType === 'colGrid' || sizeType === 'grid' ? this.getSizeFromGrid.bind(this) : this.getSizeFromUser.bind(this);\n // 先获取 item 的 grid 信息\n const gridSpec = this.getItemGridInfo(item);\n // 先设置空间\n const computeRect = {\n width:\n (sizeCallCol(gridSpec, 'col') ?? this._chartLayoutRect.width) -\n item.layoutPaddingLeft -\n item.layoutPaddingRight,\n height:\n (sizeCallRow(gridSpec, 'row') ?? this._chartLayoutRect.height) -\n item.layoutPaddingTop -\n item.layoutPaddingBottom\n };\n const rect = item.computeBoundsInRect(computeRect);\n if (!isValidNumber(rect.width)) {\n rect.width = computeRect.width;\n }\n if (!isValidNumber(rect.height)) {\n rect.height = computeRect.height;\n }\n item.setLayoutRect(sizeType !== 'grid' ? rect : computeRect);\n // 设置大小到grid\n this.setItemLayoutSizeToGrid(item, gridSpec);\n }\n}\n\nfunction isColItem(item: ILayoutItem) {\n return item.layoutOrient === 'left' || item.layoutOrient === 'right';\n}\n\nexport const registerGridLayout = () => {\n Factory.registerLayout(GridLayout.type, GridLayout);\n};\n"]}
|
|
@@ -49,7 +49,10 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
|
|
|
49
49
|
}, tooltipParentElementRect = {
|
|
50
50
|
x: 0,
|
|
51
51
|
y: 0
|
|
52
|
-
}, chartElementScale =
|
|
52
|
+
}, chartElementScale = {
|
|
53
|
+
x: 1,
|
|
54
|
+
y: 1
|
|
55
|
+
}, tooltipParentElementScale = 1;
|
|
53
56
|
const isBrowser = (0, env_1.isTrueBrowser)(this._env);
|
|
54
57
|
if (isBrowser && !tooltipSpec.confine ? (containerSize.width = window.innerWidth,
|
|
55
58
|
containerSize.height = window.innerHeight) : (containerSize.width = canvasWidth,
|
|
@@ -61,10 +64,17 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
|
|
|
61
64
|
relativePosOffset = {
|
|
62
65
|
x: chartElementRect.x - tooltipParentElementRect.x,
|
|
63
66
|
y: chartElementRect.y - tooltipParentElementRect.y
|
|
64
|
-
}
|
|
65
|
-
common_1.getScale)(
|
|
67
|
+
};
|
|
68
|
+
const chartElementDomScale = (0, common_1.getScale)(chartElement, chartElementRect);
|
|
69
|
+
chartElementScale = {
|
|
70
|
+
x: (0, vutils_1.isValidNumber)(null == chartElementRect ? void 0 : chartElementRect.width) && canvasWidth > 0 ? chartElementRect.width / canvasWidth : chartElementDomScale,
|
|
71
|
+
y: (0, vutils_1.isValidNumber)(null == chartElementRect ? void 0 : chartElementRect.height) && canvasHeight > 0 ? chartElementRect.height / canvasHeight : chartElementDomScale
|
|
72
|
+
}, tooltipParentElementScale = (0, common_1.getScale)(tooltipParentElement, tooltipParentElementRect);
|
|
66
73
|
}
|
|
67
|
-
const tooltipSizeScale =
|
|
74
|
+
const tooltipSizeScale = {
|
|
75
|
+
x: tooltipParentElementScale / chartElementScale.x,
|
|
76
|
+
y: tooltipParentElementScale / chartElementScale.y
|
|
77
|
+
}, calcPos = {}, pointerFixedPosition = {
|
|
68
78
|
x: position,
|
|
69
79
|
y: position
|
|
70
80
|
}, dimToPos = {
|
|
@@ -85,10 +95,10 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
|
|
|
85
95
|
rect && (dim1 = rect.start[dim], dim2 = rect.end[dim]);
|
|
86
96
|
} else pointerFixedPosition[dim] = orient;
|
|
87
97
|
if (isFixedPosition) {
|
|
88
|
-
const posKey = dimToPos[dim][0], boxSize = "x" === dim ? tooltipBoxWidth : tooltipBoxHeight;
|
|
98
|
+
const posKey = dimToPos[dim][0], boxSize = "x" === dim ? tooltipBoxWidth : tooltipBoxHeight, dimTooltipSizeScale = tooltipSizeScale[dim];
|
|
89
99
|
switch ((0, position_1.getPositionType)(orient, dim)) {
|
|
90
100
|
case -2:
|
|
91
|
-
calcPos[posKey] = dim1 - boxSize *
|
|
101
|
+
calcPos[posKey] = dim1 - boxSize * dimTooltipSizeScale - dimOffset;
|
|
92
102
|
break;
|
|
93
103
|
|
|
94
104
|
case -1.5:
|
|
@@ -96,11 +106,11 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
|
|
|
96
106
|
break;
|
|
97
107
|
|
|
98
108
|
case 0:
|
|
99
|
-
calcPos[posKey] = (dim1 + dim2) / 2 - boxSize *
|
|
109
|
+
calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * dimTooltipSizeScale / 2;
|
|
100
110
|
break;
|
|
101
111
|
|
|
102
112
|
case -1:
|
|
103
|
-
calcPos[posKey] = (dim1 + dim2) / 2 - boxSize *
|
|
113
|
+
calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * dimTooltipSizeScale - dimOffset;
|
|
104
114
|
break;
|
|
105
115
|
|
|
106
116
|
case 1:
|
|
@@ -108,7 +118,7 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
|
|
|
108
118
|
break;
|
|
109
119
|
|
|
110
120
|
case 1.5:
|
|
111
|
-
calcPos[posKey] = dim2 - boxSize *
|
|
121
|
+
calcPos[posKey] = dim2 - boxSize * dimTooltipSizeScale - dimOffset;
|
|
112
122
|
break;
|
|
113
123
|
|
|
114
124
|
case 2:
|
|
@@ -141,13 +151,13 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
|
|
|
141
151
|
const boxSize = "x" === dim ? tooltipBoxWidth : tooltipBoxHeight, canvasSize = "x" === dim ? canvasWidth : canvasHeight, offset = "x" === dim ? offsetX : offsetY, posType = (0,
|
|
142
152
|
position_1.getPositionType)(pointerFixedPosition[dim], dim);
|
|
143
153
|
if ((0, vutils_1.isValidNumber)(calcPos[dimToPos[dim][0]])) result[dim] = calcPos[dimToPos[dim][0]]; else if ((0,
|
|
144
|
-
vutils_1.isValidNumber)(calcPos[dimToPos[dim][1]])) result[dim] = canvasSize - boxSize * tooltipSizeScale - calcPos[dimToPos[dim][1]]; else {
|
|
154
|
+
vutils_1.isValidNumber)(calcPos[dimToPos[dim][1]])) result[dim] = canvasSize - boxSize * tooltipSizeScale[dim] - calcPos[dimToPos[dim][1]]; else {
|
|
145
155
|
const value0 = "x" === dim ? event.canvasX : event.canvasY;
|
|
146
|
-
result[dim] = posType > 0 ? value0 + offset : 0 === posType ? value0 - boxSize * tooltipSizeScale / 2 : value0 - boxSize * tooltipSizeScale - offset;
|
|
156
|
+
result[dim] = posType > 0 ? value0 + offset : 0 === posType ? value0 - boxSize * tooltipSizeScale[dim] / 2 : value0 - boxSize * tooltipSizeScale[dim] - offset;
|
|
147
157
|
}
|
|
148
|
-
result[dim] *= chartElementScale, isBrowser && (result[dim] += relativePosOffset[dim]),
|
|
158
|
+
result[dim] *= chartElementScale[dim], isBrowser && (result[dim] += relativePosOffset[dim]),
|
|
149
159
|
result[dim] /= tooltipParentElementScale;
|
|
150
|
-
const containerDimSize = "x" === dim ? containerSize.width : containerSize.height, leftOrTop = tooltipSpec.confine ?
|
|
160
|
+
const containerDimSize = "x" === dim ? containerSize.width : containerSize.height, leftOrTop = tooltipSpec.confine ? ((null !== (_a = null == chartElementRect ? void 0 : chartElementRect[dim]) && void 0 !== _a ? _a : 0) - tooltipParentElementRect[dim]) / tooltipParentElementScale : -tooltipParentElementRect[dim] / tooltipParentElementScale, rightOrBottom = (tooltipSpec.confine ? containerDimSize * chartElementScale[dim] : containerDimSize) / tooltipParentElementScale + leftOrTop - boxSize;
|
|
151
161
|
2 !== posType && result[dim] < leftOrTop ? isFixedPosition ? result[dim] = leftOrTop : (result[dim] += 0 === posType ? offset + boxSize / 2 : 2 * offset + boxSize,
|
|
152
162
|
result[dim] > rightOrBottom && (result[dim] = rightOrBottom)) : -2 !== posType && result[dim] > rightOrBottom && (isFixedPosition ? result[dim] = rightOrBottom : (result[dim] -= 0 === posType ? offset + boxSize / 2 : 2 * offset + boxSize,
|
|
153
163
|
result[dim] < leftOrTop && (result[dim] = leftOrTop)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ITooltipPositionFixedValue, TooltipPositionKeys } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n ITooltipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPositionActual,\n IGlobalTooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport { getScale } from './utils/common';\nimport {\n getActualTooltipPositionValue,\n getPositionType,\n isFixedTooltipPositionPattern,\n isGlobalTooltipPositionPattern\n} from './utils/position';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNumber, isObject, isValidNumber, isValid, isFunction } from '@visactor/vutils';\nimport type { ILayoutModel } from '../../../model/interface';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport type { IChartOption } from '../../../chart/interface';\nimport type { ITooltipSpec, Tooltip, TooltipHandlerParams } from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { getTooltipPatternValue } from '../../../component/tooltip/utils';\nimport type { IDimensionData, IDimensionInfo } from '../../../event/events/dimension/interface';\nimport type { ITooltipHandlerOptions } from './interface';\nimport type { ICompiler } from '../../../compile/interface/compilable-item';\n\ntype ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: ITooltipHandlerOptions;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: ICompiler;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n const { changePositionOnly } = params;\n\n if (changePositionOnly) {\n return this.changeTooltipPosition(params, data);\n }\n return this.changeTooltip(true, params, data);\n };\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n if (!visible) {\n /** 关闭 tooltip */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n return this.changeTooltipPosition(params, data);\n };\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const { tooltipSpec, activeTooltipSpec, changePositionOnly } = params;\n\n if (!activeTooltipSpec) {\n return TooltipResult.failed;\n }\n\n const activeType = activeTooltipSpec.activeType;\n\n /** 用户自定义逻辑 */\n if (activeTooltipSpec.handler) {\n return activeTooltipSpec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = activeTooltipSpec;\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n activeTooltipSpec,\n params,\n this._getTooltipBoxSize(activeTooltipSpec, changePositionOnly)\n );\n activeTooltipSpec.position = position;\n const updatePosition = activeTooltipSpec.updatePosition ?? tooltipSpec[activeType]?.updatePosition;\n\n if (updatePosition) {\n activeTooltipSpec.position = updatePosition(activeTooltipSpec.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !activeTooltipSpec.visible ||\n (!activeTooltipSpec.title && !activeTooltipSpec.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(tooltipVisible, {\n ...params,\n changePositionOnly\n });\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n const spec = this._component?.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n this._chartOption = null;\n this._component = null;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void;\n protected abstract _removeTooltip(): void;\n protected abstract _getTooltipBoxSize(\n actualTooltip: ITooltipActual,\n changePositionOnly: boolean\n ): IContainerSize | undefined;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _getDefaultOption(): ITooltipHandlerOptions {\n const { offset } = this._component.getSpec();\n\n return offset\n ? {\n offsetX: offset.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset.y ?? DEFAULT_OPTIONS.offsetY\n }\n : DEFAULT_OPTIONS;\n }\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: ITooltipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const getCartesianCrosshairRect = this._chartOption.getRectByDimensionData;\n const { tooltipSpec } = params;\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n if (!tooltipSpec) {\n return invalidPosition;\n }\n const event = params.event as MouseEvent;\n const { activeType, data } = actualTooltip;\n const firstDim =\n activeType === 'dimension' ? (data as IDimensionInfo[])[0]?.data?.[0] : (data as IDimensionData[])?.[0];\n\n const { offsetX, offsetY } = this._option;\n\n const spec = tooltipSpec[activeType];\n const position = getTooltipPatternValue(spec?.position, data, params);\n const positionMode =\n getTooltipPatternValue(spec?.positionMode, data, params) ?? (activeType === 'mark' ? 'mark' : 'pointer');\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementRect: DOMRect;\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n const isBrowser = isTrueBrowser(this._env);\n\n if (isBrowser && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n if (isBrowser && !isCanvas) {\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect?.() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n\n const calcPos: { top?: number; bottom?: number; left?: number; right?: number } = {};\n const pointerFixedPosition: {\n x: TooltipFixedPosition;\n y: TooltipFixedPosition;\n } = { x: position as any, y: position as any };\n const dimToPos = { x: ['left', 'right'], y: ['top', 'bottom'] };\n\n const processCartesianFixedPosition = ({ orient, mode, offset }: ITooltipPositionFixedValue, dim: 'x' | 'y') => {\n let dim1: number;\n let dim2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n const dimOffset = offset ?? (dim === 'x' ? offsetX : offsetY);\n\n if (mode === 'mark') {\n isFixedPosition = true;\n const markGraphic = params.item;\n const bounds = markGraphic?.AABBBounds as AABBBounds;\n if (bounds && startPoint) {\n dim1 = (dim === 'x' ? bounds.x1 : bounds.y1) + startPoint[dim];\n dim2 = (dim === 'x' ? bounds.x2 : bounds.y2) + startPoint[dim];\n }\n } else if (\n getCartesianCrosshairRect &&\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\n if (rect) {\n dim1 = rect.start[dim];\n dim2 = rect.end[dim];\n }\n } else {\n pointerFixedPosition[dim] = orient;\n }\n\n if (isFixedPosition) {\n const posKey = dimToPos[dim][0] as TooltipPositionKeys;\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n switch (getPositionType(orient, dim)) {\n case -2:\n calcPos[posKey] = dim1 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case -1.5:\n calcPos[posKey] = dim1 + dimOffset;\n break;\n case 0:\n calcPos[posKey] = (dim1 + dim2) / 2 - (boxSize * tooltipSizeScale) / 2;\n break;\n case -1:\n calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 1:\n calcPos[posKey] = (dim1 + dim2) / 2 + dimOffset;\n break;\n case 1.5:\n calcPos[posKey] = dim2 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 2:\n calcPos[posKey] = dim2 + dimOffset;\n break;\n }\n }\n };\n const dims = ['x', 'y'] as ('x' | 'y')[];\n if (isObject(position)) {\n if (isGlobalTooltipPositionPattern(position)) {\n const {\n left: posLeft,\n right: posRight,\n top: posTop,\n bottom: posBottom\n } = position as IGlobalTooltipPositionPattern;\n calcPos.left = getActualTooltipPositionValue(posLeft, event);\n calcPos.top = getActualTooltipPositionValue(posTop, event);\n calcPos.right = getActualTooltipPositionValue(posRight, event);\n calcPos.bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (isFixedTooltipPositionPattern(position)) {\n dims.forEach(dim => {\n const dimValue = position[dim];\n if (isNumber(dimValue) || isFunction(dimValue)) {\n calcPos[dimToPos[dim][0] as TooltipPositionKeys] = getActualTooltipPositionValue(\n dimValue as number | ((event: MouseEvent) => number),\n event\n );\n } else {\n processCartesianFixedPosition(dimValue as ITooltipPositionFixedValue, dim);\n }\n });\n }\n } else if (isValid(position)) {\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'x');\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'y');\n }\n\n const result: ITooltipPositionActual = { x: null, y: null };\n\n dims.forEach(dim => {\n /* 二、换算成 x 和 y */\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n const canvasSize = dim === 'x' ? canvasWidth : canvasHeight;\n const offset = dim === 'x' ? offsetX : offsetY;\n const posType = getPositionType(pointerFixedPosition[dim], dim);\n if (isValidNumber(calcPos[dimToPos[dim][0] as TooltipPositionKeys])) {\n result[dim] = calcPos[dimToPos[dim][0] as TooltipPositionKeys];\n } else if (isValidNumber(calcPos[dimToPos[dim][1] as TooltipPositionKeys])) {\n result[dim] = canvasSize - boxSize * tooltipSizeScale - calcPos[dimToPos[dim][1] as TooltipPositionKeys];\n } else {\n const value0 = dim === 'x' ? (event as any).canvasX : (event as any).canvasY;\n\n if (posType > 0) {\n result[dim] = value0 + offset;\n } else if (posType === 0) {\n result[dim] = value0 - (boxSize * tooltipSizeScale) / 2;\n } else {\n result[dim] = value0 - boxSize * tooltipSizeScale - offset;\n }\n }\n result[dim] *= chartElementScale;\n\n if (isBrowser) {\n result[dim] += relativePosOffset[dim];\n }\n result[dim] /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const containerDimSize = dim === 'x' ? containerSize.width : containerSize.height;\n const leftOrTop = tooltipSpec.confine\n ? -(tooltipParentElementRect[dim] - (chartElementRect?.[dim] ?? 0) / chartElementScale) /\n tooltipParentElementScale\n : -tooltipParentElementRect[dim] / tooltipParentElementScale;\n const rightOrBottom = containerDimSize / tooltipParentElementScale + leftOrTop - boxSize;\n\n // 处理左右\n if (posType !== 2 && result[dim] < leftOrTop) {\n // 优先检测left\n if (isFixedPosition) {\n result[dim] = leftOrTop;\n } else {\n if (posType === 0) {\n // 从居中 挪至 右侧\n result[dim] += offset + boxSize / 2;\n } else {\n // 从居左/左侧 挪至 居右/右侧\n result[dim] += offset * 2 + boxSize;\n }\n\n if (result[dim] > rightOrBottom) {\n // 位置不超出视区右界\n result[dim] = rightOrBottom;\n }\n }\n } else if (posType !== -2 && result[dim] > rightOrBottom) {\n // 优先检测right\n // 位置不超出视区右界\n if (isFixedPosition) {\n result[dim] = rightOrBottom;\n } else {\n if (posType === 0) {\n // 从居中 挪至 左侧\n result[dim] -= offset + boxSize / 2;\n } else {\n // 从居右/右侧 挪至 居左/左侧\n result[dim] -= offset * 2 + boxSize;\n }\n\n if (result[dim] < leftOrTop) {\n // 位置不超出视区左界\n result[dim] = leftOrTop;\n }\n }\n }\n });\n\n return result;\n };\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ITooltipPositionFixedValue, TooltipPositionKeys } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n ITooltipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPositionActual,\n IGlobalTooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport { getScale } from './utils/common';\nimport {\n getActualTooltipPositionValue,\n getPositionType,\n isFixedTooltipPositionPattern,\n isGlobalTooltipPositionPattern\n} from './utils/position';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNumber, isObject, isValidNumber, isValid, isFunction } from '@visactor/vutils';\nimport type { ILayoutModel } from '../../../model/interface';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport type { IChartOption } from '../../../chart/interface';\nimport type { ITooltipSpec, Tooltip, TooltipHandlerParams } from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { getTooltipPatternValue } from '../../../component/tooltip/utils';\nimport type { IDimensionData, IDimensionInfo } from '../../../event/events/dimension/interface';\nimport type { ITooltipHandlerOptions } from './interface';\nimport type { ICompiler } from '../../../compile/interface/compilable-item';\n\ntype ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: ITooltipHandlerOptions;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: ICompiler;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n const { changePositionOnly } = params;\n\n if (changePositionOnly) {\n return this.changeTooltipPosition(params, data);\n }\n return this.changeTooltip(true, params, data);\n };\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n if (!visible) {\n /** 关闭 tooltip */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n return this.changeTooltipPosition(params, data);\n };\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const { tooltipSpec, activeTooltipSpec, changePositionOnly } = params;\n\n if (!activeTooltipSpec) {\n return TooltipResult.failed;\n }\n\n const activeType = activeTooltipSpec.activeType;\n\n /** 用户自定义逻辑 */\n if (activeTooltipSpec.handler) {\n return activeTooltipSpec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = activeTooltipSpec;\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n activeTooltipSpec,\n params,\n this._getTooltipBoxSize(activeTooltipSpec, changePositionOnly)\n );\n activeTooltipSpec.position = position;\n const updatePosition = activeTooltipSpec.updatePosition ?? tooltipSpec[activeType]?.updatePosition;\n\n if (updatePosition) {\n activeTooltipSpec.position = updatePosition(activeTooltipSpec.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !activeTooltipSpec.visible ||\n (!activeTooltipSpec.title && !activeTooltipSpec.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(tooltipVisible, {\n ...params,\n changePositionOnly\n });\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n const spec = this._component?.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n this._chartOption = null;\n this._component = null;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void;\n protected abstract _removeTooltip(): void;\n protected abstract _getTooltipBoxSize(\n actualTooltip: ITooltipActual,\n changePositionOnly: boolean\n ): IContainerSize | undefined;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _getDefaultOption(): ITooltipHandlerOptions {\n const { offset } = this._component.getSpec();\n\n return offset\n ? {\n offsetX: offset.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset.y ?? DEFAULT_OPTIONS.offsetY\n }\n : DEFAULT_OPTIONS;\n }\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: ITooltipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const getCartesianCrosshairRect = this._chartOption.getRectByDimensionData;\n const { tooltipSpec } = params;\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n if (!tooltipSpec) {\n return invalidPosition;\n }\n const event = params.event as MouseEvent;\n const { activeType, data } = actualTooltip;\n const firstDim =\n activeType === 'dimension' ? (data as IDimensionInfo[])[0]?.data?.[0] : (data as IDimensionData[])?.[0];\n\n const { offsetX, offsetY } = this._option;\n\n const spec = tooltipSpec[activeType];\n const position = getTooltipPatternValue(spec?.position, data, params);\n const positionMode =\n getTooltipPatternValue(spec?.positionMode, data, params) ?? (activeType === 'mark' ? 'mark' : 'pointer');\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementRect: DOMRect;\n let chartElementScale = { x: 1, y: 1 };\n let tooltipParentElementScale = 1;\n const isBrowser = isTrueBrowser(this._env);\n\n if (isBrowser && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n if (isBrowser && !isCanvas) {\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect?.() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n const chartElementDomScale = getScale(chartElement, chartElementRect);\n chartElementScale = {\n x:\n isValidNumber(chartElementRect?.width) && canvasWidth > 0\n ? chartElementRect.width / canvasWidth\n : chartElementDomScale,\n y:\n isValidNumber(chartElementRect?.height) && canvasHeight > 0\n ? chartElementRect.height / canvasHeight\n : chartElementDomScale\n };\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n const tooltipSizeScale = {\n x: tooltipParentElementScale / chartElementScale.x,\n y: tooltipParentElementScale / chartElementScale.y\n };\n\n /* 一、计算 left、top、right、bottom */\n\n const calcPos: { top?: number; bottom?: number; left?: number; right?: number } = {};\n const pointerFixedPosition: {\n x: TooltipFixedPosition;\n y: TooltipFixedPosition;\n } = { x: position as any, y: position as any };\n const dimToPos = { x: ['left', 'right'], y: ['top', 'bottom'] };\n\n const processCartesianFixedPosition = ({ orient, mode, offset }: ITooltipPositionFixedValue, dim: 'x' | 'y') => {\n let dim1: number;\n let dim2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n const dimOffset = offset ?? (dim === 'x' ? offsetX : offsetY);\n\n if (mode === 'mark') {\n isFixedPosition = true;\n const markGraphic = params.item;\n const bounds = markGraphic?.AABBBounds as AABBBounds;\n if (bounds && startPoint) {\n dim1 = (dim === 'x' ? bounds.x1 : bounds.y1) + startPoint[dim];\n dim2 = (dim === 'x' ? bounds.x2 : bounds.y2) + startPoint[dim];\n }\n } else if (\n getCartesianCrosshairRect &&\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\n if (rect) {\n dim1 = rect.start[dim];\n dim2 = rect.end[dim];\n }\n } else {\n pointerFixedPosition[dim] = orient;\n }\n\n if (isFixedPosition) {\n const posKey = dimToPos[dim][0] as TooltipPositionKeys;\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n const dimTooltipSizeScale = tooltipSizeScale[dim];\n switch (getPositionType(orient, dim)) {\n case -2:\n calcPos[posKey] = dim1 - boxSize * dimTooltipSizeScale - dimOffset;\n break;\n case -1.5:\n calcPos[posKey] = dim1 + dimOffset;\n break;\n case 0:\n calcPos[posKey] = (dim1 + dim2) / 2 - (boxSize * dimTooltipSizeScale) / 2;\n break;\n case -1:\n calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * dimTooltipSizeScale - dimOffset;\n break;\n case 1:\n calcPos[posKey] = (dim1 + dim2) / 2 + dimOffset;\n break;\n case 1.5:\n calcPos[posKey] = dim2 - boxSize * dimTooltipSizeScale - dimOffset;\n break;\n case 2:\n calcPos[posKey] = dim2 + dimOffset;\n break;\n }\n }\n };\n const dims = ['x', 'y'] as ('x' | 'y')[];\n if (isObject(position)) {\n if (isGlobalTooltipPositionPattern(position)) {\n const {\n left: posLeft,\n right: posRight,\n top: posTop,\n bottom: posBottom\n } = position as IGlobalTooltipPositionPattern;\n calcPos.left = getActualTooltipPositionValue(posLeft, event);\n calcPos.top = getActualTooltipPositionValue(posTop, event);\n calcPos.right = getActualTooltipPositionValue(posRight, event);\n calcPos.bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (isFixedTooltipPositionPattern(position)) {\n dims.forEach(dim => {\n const dimValue = position[dim];\n if (isNumber(dimValue) || isFunction(dimValue)) {\n calcPos[dimToPos[dim][0] as TooltipPositionKeys] = getActualTooltipPositionValue(\n dimValue as number | ((event: MouseEvent) => number),\n event\n );\n } else {\n processCartesianFixedPosition(dimValue as ITooltipPositionFixedValue, dim);\n }\n });\n }\n } else if (isValid(position)) {\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'x');\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'y');\n }\n\n const result: ITooltipPositionActual = { x: null, y: null };\n\n dims.forEach(dim => {\n /* 二、换算成 x 和 y */\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n const canvasSize = dim === 'x' ? canvasWidth : canvasHeight;\n const offset = dim === 'x' ? offsetX : offsetY;\n const posType = getPositionType(pointerFixedPosition[dim], dim);\n if (isValidNumber(calcPos[dimToPos[dim][0] as TooltipPositionKeys])) {\n result[dim] = calcPos[dimToPos[dim][0] as TooltipPositionKeys];\n } else if (isValidNumber(calcPos[dimToPos[dim][1] as TooltipPositionKeys])) {\n result[dim] = canvasSize - boxSize * tooltipSizeScale[dim] - calcPos[dimToPos[dim][1] as TooltipPositionKeys];\n } else {\n const value0 = dim === 'x' ? (event as any).canvasX : (event as any).canvasY;\n\n if (posType > 0) {\n result[dim] = value0 + offset;\n } else if (posType === 0) {\n result[dim] = value0 - (boxSize * tooltipSizeScale[dim]) / 2;\n } else {\n result[dim] = value0 - boxSize * tooltipSizeScale[dim] - offset;\n }\n }\n result[dim] *= chartElementScale[dim];\n\n if (isBrowser) {\n result[dim] += relativePosOffset[dim];\n }\n result[dim] /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const containerDimSize = dim === 'x' ? containerSize.width : containerSize.height;\n const leftOrTop = tooltipSpec.confine\n ? ((chartElementRect?.[dim] ?? 0) - tooltipParentElementRect[dim]) / tooltipParentElementScale\n : -tooltipParentElementRect[dim] / tooltipParentElementScale;\n const actualContainerDimSize = tooltipSpec.confine ? containerDimSize * chartElementScale[dim] : containerDimSize;\n const rightOrBottom = actualContainerDimSize / tooltipParentElementScale + leftOrTop - boxSize;\n\n // 处理左右\n if (posType !== 2 && result[dim] < leftOrTop) {\n // 优先检测left\n if (isFixedPosition) {\n result[dim] = leftOrTop;\n } else {\n if (posType === 0) {\n // 从居中 挪至 右侧\n result[dim] += offset + boxSize / 2;\n } else {\n // 从居左/左侧 挪至 居右/右侧\n result[dim] += offset * 2 + boxSize;\n }\n\n if (result[dim] > rightOrBottom) {\n // 位置不超出视区右界\n result[dim] = rightOrBottom;\n }\n }\n } else if (posType !== -2 && result[dim] > rightOrBottom) {\n // 优先检测right\n // 位置不超出视区右界\n if (isFixedPosition) {\n result[dim] = rightOrBottom;\n } else {\n if (posType === 0) {\n // 从居中 挪至 左侧\n result[dim] -= offset + boxSize / 2;\n } else {\n // 从居右/右侧 挪至 居左/左侧\n result[dim] -= offset * 2 + boxSize;\n }\n\n if (result[dim] < leftOrTop) {\n // 位置不超出视区左界\n result[dim] = leftOrTop;\n }\n }\n }\n });\n\n return result;\n };\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
|
|
@@ -491,7 +491,7 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
491
491
|
let colorDomain, colorRange;
|
|
492
492
|
colorScale && (colorDomain = colorScale.domain(), colorRange = colorScale.range()),
|
|
493
493
|
colorRange || (colorRange = this._getDataScheme()), colorDomain && !(0, vutils_1.isNil)(colorDomain[0]) || (colorDomain = this.getNodeList(),
|
|
494
|
-
colorDomain
|
|
494
|
+
colorDomain.length > 10 && (colorRange = null === (_c = this._getDataScheme()[1]) || void 0 === _c ? void 0 : _c.scheme));
|
|
495
495
|
const ordinalScale = new color_ordinal_scale_1.ColorOrdinalScale;
|
|
496
496
|
null === (_e = (_d = ordinalScale.domain(colorDomain)).range) || void 0 === _e || _e.call(_d, colorRange),
|
|
497
497
|
this._colorScale = ordinalScale;
|