{"version":3,"file":"interval.js","sourceRoot":"","sources":["../../../src/adaptor/geometries/interval.ts"],"names":[],"mappings":"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","sourcesContent":["import { Geometry, getTheme, ShapeAttrs } from '@antv/g2';\nimport { isNil, isObject } from '@antv/util';\nimport { Params } from '../../core/adaptor';\nimport { deepAssign } from '../../utils';\nimport { getTooltipMapping } from '../../utils/tooltip';\nimport { geometry, GeometryOptions, MappingOptions } from './base';\n\nexport interface IntervalGeometryOptions extends GeometryOptions {\n /** x 轴字段 */\n readonly xField: string;\n /** y 轴字段 */\n readonly yField: string;\n /** 拆分字段,在分组柱状图下同 groupField、colorField,在堆积柱状图下同 stackField、colorField */\n readonly seriesField?: string;\n /** 是否分组柱形图 */\n readonly isGroup?: boolean;\n /** 是否堆积柱状图 */\n readonly isStack?: boolean;\n /** 柱状图宽度占比 [0-1] */\n readonly widthRatio?: number;\n /** 分组间柱子之间的组间间距(像素级),仅对分组柱状图适用 */\n readonly intervalPadding?: number;\n /** 分组中柱子之间的间距 [0-1],仅对分组柱状图适用 */\n readonly marginRatio?: number;\n /** 分组中柱子之间的组内间距(像素级),仅对分组柱状图适用 */\n readonly dodgePadding?: number;\n /** 柱状图最小宽度(像素) */\n readonly minColumnWidth?: number;\n /** 柱状图最大宽度(像素) */\n readonly maxColumnWidth?: number;\n /** 柱子的背景样式设置 */\n readonly columnBackground?: { style: ShapeAttrs };\n /** 柱子视觉通道配置(含 color、shape、size、style、tooltip) */\n readonly interval?: MappingOptions;\n /** 分组字段,优先级高于 seriesField , isGroup: true 时会根据 groupField 进行分组。*/\n readonly groupField?: string;\n}\n\n/**\n * 柱形图其他的 adaptor\n * @param params\n */\nfunction otherAdaptor(params: Params): Params {\n const { chart, options, ext } = params;\n const { seriesField, isGroup, isStack, marginRatio, widthRatio, groupField, theme } = options;\n\n /**\n * adjust\n */\n const adjust = [];\n if (seriesField) {\n // group\n if (isGroup) {\n adjust.push({\n type: 'dodge',\n dodgeBy: groupField || seriesField,\n marginRatio,\n });\n }\n // stack\n if (isStack) {\n adjust.push({\n type: 'stack',\n marginRatio,\n });\n }\n }\n\n if (adjust.length && ext?.geometry) {\n const g = ext?.geometry as Geometry;\n g.adjust(adjust);\n }\n\n // widthRatio\n if (!isNil(widthRatio)) {\n chart.theme(\n deepAssign({}, isObject(theme) ? theme : getTheme(theme), {\n // columWidthRatio 配置覆盖 theme 中的配置\n columnWidthRatio: widthRatio,\n })\n );\n }\n\n return params;\n}\n\nexport function interval(params: Params): Params {\n const { options } = params;\n const {\n xField,\n yField,\n interval,\n seriesField,\n tooltip,\n minColumnWidth,\n maxColumnWidth,\n columnBackground,\n dodgePadding,\n intervalPadding,\n useDeferredLabel,\n } = options;\n\n const { fields, formatter } = getTooltipMapping(tooltip, [xField, yField, seriesField]);\n\n // 保障一定要存在 interval 映射\n const { ext } = interval\n ? geometry(\n deepAssign({}, params, {\n options: {\n type: 'interval',\n colorField: seriesField,\n tooltipFields: fields,\n mapping: {\n tooltip: formatter,\n ...interval,\n },\n args: {\n dodgePadding,\n intervalPadding,\n minColumnWidth,\n maxColumnWidth,\n background: columnBackground,\n useDeferredLabel,\n },\n },\n })\n )\n : params;\n\n return otherAdaptor({\n ...params,\n ext,\n });\n}\n"]}