{"version":3,"file":"interval.js","sourceRoot":"","sources":["../../../src/geometry/label/interval.ts"],"names":[],"mappings":"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","sourcesContent":["import { get, deepMix, isArray } from '@antv/util';\nimport { Writeable } from '../../util/types';\nimport { MappingDatum, Point } from '../../interface';\nimport GeometryLabel from './base';\nimport { LabelCfg, LabelItem, LabelPointCfg, TextAlign } from './interface';\n\n/**\n * 柱状图 label\n */\nexport default class IntervalLabel extends GeometryLabel {\n /**\n * 获取 interval label 的方向,取决于 value 的值是正还是负\n * @param labelCfg\n */\n private getLabelValueDir(mappingData: MappingDatum) {\n // points 中的 x/y 和 transpose 无关\n const dim = 'y';\n const { points } = mappingData;\n\n return points[0][dim] <= points[2][dim] ? 1 : -1;\n }\n\n /**\n * 重载:根据 interval 值的正负来调整 label 偏移量\n * @param labelCfg\n * @param index\n * @param total\n */\n protected getLabelOffsetPoint(labelCfg: LabelCfg, index: number, total: number, position?: string) {\n let point = super.getLabelOffsetPoint(labelCfg, index, total);\n const coordinate = this.getCoordinate();\n const transposed = coordinate.isTransposed;\n const dim = transposed ? 'x' : 'y';\n const dir = this.getLabelValueDir(labelCfg.mappingData);\n point = { ...point, [dim]: point[dim] * dir };\n\n if (coordinate.isReflect('x')) {\n point = {\n ...point,\n x: point.x * -1,\n };\n }\n if (coordinate.isReflect('y')) {\n point = {\n ...point,\n y: point.y * -1,\n };\n }\n\n return point;\n }\n\n /**\n * 重载:定制 interval label 的默认主题配置\n * @param labelCfg\n */\n protected getThemedLabelCfg(labelCfg: LabelCfg) {\n const geometry = this.geometry;\n const defaultLabelCfg = this.getDefaultLabelCfg();\n const { theme } = geometry;\n\n // 如果 interval label position 设置为 middle,则将主题中的 offset 覆盖为 0\n return deepMix({}, defaultLabelCfg, theme.labels, labelCfg.position === 'middle' ? { offset: 0 } : {}, labelCfg);\n }\n\n protected setLabelPosition(\n labelPointCfg: Writeable,\n mappingData: MappingDatum,\n index: number,\n position: string\n ) {\n const coordinate = this.getCoordinate();\n const transposed = coordinate.isTransposed;\n const shapePoints = mappingData.points as Point[];\n const point0 = coordinate.convert(shapePoints[0]);\n const point2 = coordinate.convert(shapePoints[2]);\n const dir = this.getLabelValueDir(mappingData);\n\n let top;\n let right;\n let bottom;\n let left;\n\n const shape = isArray(mappingData.shape) ? mappingData.shape[0] : mappingData.shape;\n if (shape === 'funnel' || shape === 'pyramid') {\n // 处理漏斗图\n const nextPoints = get(mappingData, 'nextPoints');\n const points = get(mappingData, 'points');\n if (nextPoints) {\n // 非漏斗图底部\n const p0 = coordinate.convert(points[0] as Point);\n const p1 = coordinate.convert(points[1] as Point);\n const nextP0 = coordinate.convert(nextPoints[0] as Point);\n const nextP1 = coordinate.convert(nextPoints[1] as Point);\n\n // TODO: 使用包围盒的计算方法\n if (transposed) {\n top = Math.min(nextP0.y, p0.y);\n bottom = Math.max(nextP0.y, p0.y);\n right = (p1.x + nextP1.x) / 2;\n left = (p0.x + nextP0.x) / 2;\n } else {\n top = Math.min((p1.y + nextP1.y) / 2, (p0.y + nextP0.y) / 2);\n bottom = Math.max((p1.y + nextP1.y) / 2, (p0.y + nextP0.y) / 2);\n right = nextP1.x;\n left = p0.x;\n }\n } else {\n top = Math.min(point2.y, point0.y);\n bottom = Math.max(point2.y, point0.y);\n right = point2.x;\n left = point0.x;\n }\n } else {\n top = Math.min(point2.y, point0.y);\n bottom = Math.max(point2.y, point0.y);\n right = point2.x;\n left = point0.x;\n }\n\n switch (position) {\n case 'right':\n labelPointCfg.x = right;\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', dir > 0 ? 'left' : 'right');\n break;\n case 'left':\n labelPointCfg.x = left;\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', dir > 0 ? 'left' : 'right');\n break;\n case 'bottom':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = bottom;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', dir > 0 ? 'bottom' : 'top');\n break;\n case 'middle':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', 'middle');\n break;\n case 'top':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = top;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', dir > 0 ? 'bottom' : 'top');\n break;\n default:\n break;\n }\n }\n}\n"]}