{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../src/chart/controller/tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { deepMix, find, flatten, get, isArray, isEqual, isFunction, isUndefined, mix } from '@antv/util';\nimport { Crosshair, HtmlTooltip, IGroup } from '../../dependents';\nimport Geometry from '../../geometry/base';\nimport { Point, TooltipOption } from '../../interface';\nimport { getAngleByPoint, getDistanceToCenter, isPointInCoordinate } from '../../util/coordinate';\nimport { polarToCartesian } from '../../util/graphics';\nimport { findDataByPoint, getTooltipItems } from '../../util/tooltip';\nimport { Controller } from './base';\n\n// Filter duplicates, use `name`, `color`, `value` and `title` property values as condition\nfunction uniq(items) {\n const uniqItems = [];\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n const result = find(uniqItems, (subItem) => {\n return (\n subItem.color === item.color &&\n subItem.name === item.name &&\n subItem.value === item.value &&\n subItem.title === item.title\n );\n });\n if (!result) {\n uniqItems.push(item);\n }\n }\n return uniqItems;\n}\n\n/** @ignore */\nexport default class Tooltip extends Controller {\n private tooltip;\n private tooltipMarkersGroup: IGroup;\n private tooltipCrosshairsGroup: IGroup;\n private xCrosshair;\n private yCrosshair;\n private guideGroup: IGroup;\n\n private isLocked: boolean = false;\n private isVisible: boolean = true;\n private items;\n private title: string;\n private point: Point;\n\n public get name(): string {\n return 'tooltip';\n }\n\n public init() { }\n\n public render() {\n const option = this.view.getOptions().tooltip;\n this.isVisible = option !== false;\n }\n\n /**\n * Shows tooltip\n * @param point\n */\n public showTooltip(point: Point) {\n this.point = point;\n if (!this.isVisible) { // 如果设置 tooltip(false) 则始终不显示\n return;\n }\n const view = this.view;\n const items = this.getTooltipItems(point);\n if (!items.length) {\n // 无内容则不展示,同时 tooltip 需要隐藏\n this.hideTooltip();\n return;\n }\n const title = this.getTitle(items);\n const dataPoint = {\n x: items[0].x,\n y: items[0].y,\n }; // 数据点位置\n\n view.emit('tooltip:show', {\n items,\n title,\n ...point,\n });\n\n const cfg = this.getTooltipCfg();\n const { follow, showMarkers, showCrosshairs, showContent, marker } = cfg;\n const lastItems = this.items;\n const lastTitle = this.title;\n if (!isEqual(lastTitle, title) || !isEqual(lastItems, items)) {\n // 内容发生变化了更新 tooltip\n view.emit('tooltip:change', {\n items,\n title,\n ...point,\n });\n\n if (showContent) {\n // 展示 tooltip 内容框才渲染 tooltip\n if (!this.tooltip) {\n // 延迟生成\n this.renderTooltip();\n }\n this.tooltip.update(mix({}, cfg, {\n items,\n title,\n }, follow ? point : {}));\n this.tooltip.show();\n }\n\n if (showMarkers) {\n // 展示 tooltipMarkers,tooltipMarkers 跟随数据\n this.renderTooltipMarkers(items, marker);\n }\n } else {\n // 内容未发生变化,则更新位置\n if (this.tooltip && follow) {\n this.tooltip.update(point);\n this.tooltip.show(); // tooltip 有可能被隐藏,需要保证显示状态\n }\n\n if (this.tooltipMarkersGroup) {\n this.tooltipMarkersGroup.show();\n }\n }\n\n this.items = items;\n this.title = title;\n\n if (showCrosshairs) {\n // 展示 tooltip 辅助线\n const isCrosshairsFollowCursor = get(cfg, ['crosshairs', 'follow'], false); // 辅助线是否要跟随鼠标\n this.renderCrosshairs(isCrosshairsFollowCursor ? point : dataPoint, cfg);\n }\n }\n\n public hideTooltip() {\n const { follow } = this.getTooltipCfg();\n if (!follow) {\n this.point = null;\n return;\n }\n // hide the tooltipMarkers\n const tooltipMarkersGroup = this.tooltipMarkersGroup;\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.hide();\n }\n\n // hide crosshairs\n const xCrosshair = this.xCrosshair;\n const yCrosshair = this.yCrosshair;\n if (xCrosshair) {\n xCrosshair.hide();\n }\n if (yCrosshair) {\n yCrosshair.hide();\n }\n\n const tooltip = this.tooltip;\n if (tooltip) {\n tooltip.hide();\n }\n\n this.view.emit('tooltip:hide', {});\n this.point = null;\n }\n\n /**\n * lockTooltip\n */\n public lockTooltip() {\n this.isLocked = true;\n if (this.tooltip) {\n // tooltip contianer 可捕获事件\n this.tooltip.setCapture(true);\n }\n }\n\n /**\n * unlockTooltip\n */\n public unlockTooltip() {\n this.isLocked = false;\n const cfg = this.getTooltipCfg();\n if (this.tooltip) {\n // 重置 capture 属性\n this.tooltip.setCapture(cfg.capture);\n }\n }\n\n /**\n * isTooltipLocked\n */\n public isTooltipLocked() {\n return this.isLocked;\n }\n\n public clear() {\n const { tooltip, xCrosshair, yCrosshair, tooltipMarkersGroup } = this;\n if (tooltip) {\n tooltip.hide();\n tooltip.clear();\n }\n\n if (xCrosshair) {\n xCrosshair.clear();\n }\n\n if (yCrosshair) {\n yCrosshair.clear();\n }\n\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.clear();\n }\n }\n\n public destroy() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n if (this.xCrosshair) {\n this.xCrosshair.destroy();\n }\n if (this.yCrosshair) {\n this.yCrosshair.destroy();\n }\n\n if (this.guideGroup) {\n this.guideGroup.remove(true);\n }\n\n this.items = null;\n this.title = null;\n this.tooltipMarkersGroup = null;\n this.tooltipCrosshairsGroup = null;\n this.xCrosshair = null;\n this.yCrosshair = null;\n this.tooltip = null;\n this.guideGroup = null;\n this.isLocked = false;\n this.point = null;\n }\n\n public changeVisible(visible: boolean) {\n if (this.visible === visible) {\n return;\n }\n const { tooltip, tooltipMarkersGroup, xCrosshair, yCrosshair } = this;\n if (visible) {\n if (tooltip) {\n tooltip.show();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.show();\n }\n if (xCrosshair) {\n xCrosshair.show();\n }\n if (yCrosshair) {\n yCrosshair.show();\n }\n } else {\n if (tooltip) {\n tooltip.hide();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.hide();\n }\n if (xCrosshair) {\n xCrosshair.hide();\n }\n if (yCrosshair) {\n yCrosshair.hide();\n }\n }\n this.visible = visible;\n }\n\n public getTooltipItems(point: Point) {\n let items = this.findItemsFromView(this.view, point);\n if (items.length) {\n // 三层\n items = flatten(items);\n for (const itemArr of items) {\n for (const item of itemArr) {\n const { x, y } = item.mappingData;\n item.x = isArray(x) ? x[x.length - 1] : x;\n item.y = isArray(y) ? y[y.length - 1] : y;\n }\n }\n\n const { shared } = this.getTooltipCfg();\n // shared: false 代表只显示当前拾取到的 shape 的数据,但是一个 view 会有多个 Geometry,所以有可能会拾取到多个 shape\n if (shared === false && items.length > 1) {\n let snapItem = items[0];\n let min = Math.abs(point.y - snapItem[0].y);\n for (const aItem of items) {\n const yDistance = Math.abs(point.y - aItem[0].y);\n if (yDistance <= min) {\n snapItem = aItem;\n min = yDistance;\n }\n }\n items = [snapItem];\n }\n\n return uniq(flatten(items));\n }\n\n return [];\n }\n\n public layout() { }\n public update() {\n if (this.point) {\n this.showTooltip(this.point);\n }\n }\n\n // 获取 tooltip 配置,因为用户可能会通过 view.tooltip() 重新配置 tooltip,所以就不做缓存,每次直接读取\n private getTooltipCfg() {\n const view = this.view;\n const option = view.getOptions().tooltip;\n const theme = view.getTheme();\n const defaultCfg = get(theme, ['components', 'tooltip'], {});\n const enterable = isUndefined(get(option, 'enterable')) ? defaultCfg.enterable : get(option, 'enterable');\n return deepMix({}, defaultCfg, option, {\n capture: enterable || this.isLocked ? true : false,\n });\n }\n\n private getTitle(items) {\n const title = items[0].title || items[0].name;\n this.title = title;\n\n return title;\n }\n\n private renderTooltip() {\n const canvas = this.view.getCanvas();\n const region = {\n start: { x: 0, y: 0 },\n end: { x: canvas.get('width'), y: canvas.get('height') },\n };\n\n const cfg = this.getTooltipCfg();\n const tooltip = new HtmlTooltip({\n parent: canvas.get('el').parentNode,\n region,\n ...cfg,\n visible: false,\n crosshairs: null,\n });\n\n tooltip.init();\n this.tooltip = tooltip;\n }\n\n private renderTooltipMarkers(items, marker) {\n const tooltipMarkersGroup = this.getTooltipMarkersGroup();\n for (const item of items) {\n const { x, y } = item;\n const attrs = {\n fill: item.color,\n symbol: 'circle',\n shadowColor: item.color,\n ...marker,\n x,\n y,\n };\n\n tooltipMarkersGroup.addShape('marker', {\n attrs,\n });\n }\n }\n\n private renderCrosshairs(point: Point, cfg) {\n const crosshairsType = get(cfg, ['crosshairs', 'type'], 'x'); // 默认展示 x 轴上的辅助线\n if (crosshairsType === 'x') {\n if (this.yCrosshair) {\n this.yCrosshair.hide();\n }\n this.renderXCrosshairs(point, cfg);\n } else if (crosshairsType === 'y') {\n if (this.xCrosshair) {\n this.xCrosshair.hide();\n }\n this.renderYCrosshairs(point, cfg);\n } else if (crosshairsType === 'xy') {\n this.renderXCrosshairs(point, cfg);\n this.renderYCrosshairs(point, cfg);\n }\n }\n\n // 渲染 x 轴上的 tooltip 辅助线\n private renderXCrosshairs(point: Point, tooltipCfg) {\n const coordinate = this.getViewWithGeometry(this.view).getCoordinate();\n if (!isPointInCoordinate(coordinate, point)) {\n return;\n }\n let start;\n let end;\n if (coordinate.isRect) {\n if (coordinate.isTransposed) {\n start = {\n x: coordinate.start.x,\n y: point.y,\n };\n end = {\n x: coordinate.end.x,\n y: point.y,\n };\n } else {\n start = {\n x: point.x,\n y: coordinate.end.y,\n };\n end = {\n x: point.x,\n y: coordinate.start.y,\n };\n }\n } else {\n // 极坐标下 x 轴上的 crosshairs 表现为半径\n const angle = getAngleByPoint(coordinate, point);\n const center = coordinate.getCenter();\n const radius = coordinate.getRadius();\n end = polarToCartesian(center.x, center.y, radius, angle);\n start = center;\n }\n\n const cfg = deepMix({\n start,\n end,\n container: this.getTooltipCrosshairsGroup(),\n }, get(tooltipCfg, 'crosshairs', {}), this.getCrosshairsText('x', point, tooltipCfg));\n delete cfg.type; // 与 Crosshairs 组件的 type 冲突故删除\n\n let xCrosshair = this.xCrosshair;\n if (xCrosshair) {\n xCrosshair.update(cfg);\n } else {\n xCrosshair = new Crosshair.Line(cfg);\n xCrosshair.init();\n }\n xCrosshair.render();\n xCrosshair.show();\n this.xCrosshair = xCrosshair;\n }\n\n // 渲染 y 轴上的辅助线\n private renderYCrosshairs(point: Point, tooltipCfg) {\n const coordinate = this.getViewWithGeometry(this.view).getCoordinate();\n if (!isPointInCoordinate(coordinate, point)) {\n return;\n }\n let cfg;\n let type;\n if (coordinate.isRect) {\n let start;\n let end;\n if (coordinate.isTransposed) {\n start = {\n x: point.x,\n y: coordinate.end.y,\n };\n end = {\n x: point.x,\n y: coordinate.start.y,\n };\n } else {\n start = {\n x: coordinate.start.x,\n y: point.y,\n };\n end = {\n x: coordinate.end.x,\n y: point.y,\n };\n }\n cfg = {\n start,\n end,\n };\n type = 'Line';\n } else {\n // 极坐标下 y 轴上的 crosshairs 表现为圆弧\n cfg = {\n center: coordinate.getCenter(),\n // @ts-ignore\n radius: getDistanceToCenter(coordinate, point),\n startAngle: coordinate.startAngle,\n endAngle: coordinate.endAngle,\n };\n type = 'Circle';\n }\n\n cfg = deepMix({\n container: this.getTooltipCrosshairsGroup()\n }, cfg, get(tooltipCfg, 'crosshairs', {}), this.getCrosshairsText('y', point, tooltipCfg));\n delete cfg.type; // 与 Crosshairs 组件的 type 冲突故删除\n\n let yCrosshair = this.yCrosshair;\n if (yCrosshair) {\n // 如果坐标系发生直角坐标系与极坐标的切换操作\n if ((coordinate.isRect && yCrosshair.get('type') === 'circle')\n || (!coordinate.isRect && yCrosshair.get('type') === 'line')) {\n yCrosshair = new Crosshair[type](cfg);\n yCrosshair.init();\n } else {\n yCrosshair.update(cfg);\n }\n } else {\n yCrosshair = new Crosshair[type](cfg);\n yCrosshair.init();\n }\n yCrosshair.render();\n yCrosshair.show();\n this.yCrosshair = yCrosshair;\n }\n\n private getCrosshairsText(type, point: Point, tooltipCfg) {\n let textCfg = get(tooltipCfg, ['crosshairs', 'text']);\n const follow = get(tooltipCfg, ['crosshairs', 'follow']);\n const items = this.items;\n\n if (textCfg) {\n const view = this.getViewWithGeometry(this.view);\n // 需要展示文本\n const firstItem = items[0];\n const xScale = view.getXScale();\n const yScale = view.getYScales()[0];\n let xValue;\n let yValue;\n if (follow) {\n // 如果需要跟随鼠标移动,就需要将当前鼠标坐标点转换为对应的数值\n const invertPoint = this.view.getCoordinate().invert(point);\n xValue = xScale.invert(invertPoint.x); // 转换为原始值\n yValue = yScale.invert(invertPoint.y); // 转换为原始值\n } else {\n xValue = firstItem.data[xScale.field];\n yValue = firstItem.data[yScale.field];\n }\n\n const content = type === 'x' ? xValue : yValue;\n if (isFunction(textCfg)) {\n textCfg = textCfg(type, content, items, point);\n } else {\n textCfg.content = content;\n }\n\n return {\n text: textCfg,\n };\n }\n }\n\n // 获取存储 tooltipMarkers 和 crosshairs 的容器\n private getGuideGroup() {\n if (!this.guideGroup) {\n const foregroundGroup = this.view.foregroundGroup;\n this.guideGroup = foregroundGroup.addGroup({\n name: 'tooltipGuide',\n capture: false,\n });\n }\n\n return this.guideGroup;\n }\n\n // 获取 tooltipMarkers 存储的容器\n private getTooltipMarkersGroup() {\n let tooltipMarkersGroup = this.tooltipMarkersGroup;\n if (tooltipMarkersGroup && !tooltipMarkersGroup.destroyed) {\n tooltipMarkersGroup.clear();\n tooltipMarkersGroup.show();\n } else {\n tooltipMarkersGroup = this.getGuideGroup().addGroup({\n name: 'tooltipMarkersGroup',\n });\n tooltipMarkersGroup.toFront();\n this.tooltipMarkersGroup = tooltipMarkersGroup;\n }\n return tooltipMarkersGroup;\n }\n\n // 获取 tooltip crosshairs 存储的容器\n private getTooltipCrosshairsGroup() {\n let tooltipCrosshairsGroup = this.tooltipCrosshairsGroup;\n if (!tooltipCrosshairsGroup) {\n tooltipCrosshairsGroup = this.getGuideGroup().addGroup({\n name: 'tooltipCrosshairsGroup',\n capture: false,\n });\n tooltipCrosshairsGroup.toBack();\n this.tooltipCrosshairsGroup = tooltipCrosshairsGroup;\n }\n return tooltipCrosshairsGroup;\n }\n\n private getTooltipItemsByHitShape(geometry, point, title) {\n const result = [];\n const container = geometry.container;\n const shape = container.getShape(point.x, point.y);\n if (shape && shape.get('visible') && shape.get('origin')) {\n const mappingData = shape.get('origin').mappingData;\n const items = getTooltipItems(mappingData, geometry, title);\n if (items.length) {\n result.push(items);\n }\n }\n\n return result;\n }\n\n private getTooltipItemsByFindData(geometry: Geometry, point, title) {\n const result = [];\n const dataArray = geometry.dataArray;\n geometry.sort(dataArray); // 先进行排序,便于 tooltip 查找\n for (const data of dataArray) {\n const record = findDataByPoint(point, data, geometry);\n if (record) {\n const elementId = geometry.getElementId(record);\n const element = geometry.elementsMap[elementId];\n if (geometry.type === 'heatmap' || element.visible) {\n // Heatmap 没有 Element\n // 如果图形元素隐藏了,怎不再 tooltip 上展示相关数据\n const items = getTooltipItems(record, geometry, title);\n if (items.length) {\n result.push(items);\n }\n }\n }\n }\n\n return result;\n }\n\n private findItemsFromView(view, point) {\n if (view.getOptions().tooltip === false) {\n // 如果 view 关闭了 tooltip\n return [];\n }\n\n let result = [];\n // 先从 view 本身查找\n const geometries = view.geometries;\n const { shared, title } = this.getTooltipCfg();\n for (const geometry of geometries) {\n if (geometry.visible && geometry.tooltipOption !== false) {\n // geometry 可见同时未关闭 tooltip\n const geometryType = geometry.type;\n let tooltipItems;\n if (['point', 'edge', 'polygon'].includes(geometryType)) {\n // 始终通过图形拾取\n tooltipItems = this.getTooltipItemsByHitShape(geometry, point, title);\n } else if (['area', 'line', 'path', 'heatmap'].includes(geometryType)) {\n // 如果是 'area', 'line', 'path',始终通过数据查找方法查找 tooltip\n tooltipItems = this.getTooltipItemsByFindData(geometry, point, title);\n } else {\n if (shared !== false) {\n tooltipItems = this.getTooltipItemsByFindData(geometry, point, title);\n } else {\n tooltipItems = this.getTooltipItemsByHitShape(geometry, point, title);\n }\n }\n if (tooltipItems.length) {\n // geometry 有可能会有多个 item,因为用户可以设置 geometry.tooltip('x*y*z')\n result.push(tooltipItems);\n }\n }\n }\n\n // 递归查找,并合并结果\n for (const childView of view.views) {\n result = result.concat(this.findItemsFromView(childView, point));\n }\n\n return result;\n }\n\n // FIXME: hack 方法\n // 因为 tooltip 的交互是挂载在 Chart 上,所以当chart 上没有绘制 Geometry 的时候,就查找不到数据,并且绘图区域同子 View 的区域不同\n private getViewWithGeometry(view) {\n if (view.geometries.length) {\n return view;\n }\n\n return find(view.views, (childView) => this.getViewWithGeometry(childView));\n }\n}\n"]}