@mantine-vue/charts 3.4.0 → 3.5.0
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/cjs/index.cjs +60 -19
- package/cjs/index.cjs.map +1 -1
- package/esm/index.mjs +60 -19
- package/esm/index.mjs.map +1 -1
- package/lib/charts.d.ts +3 -1
- package/lib/internal/component.d.ts +3 -0
- package/package.json +2 -2
package/cjs/index.cjs
CHANGED
|
@@ -71,6 +71,9 @@ function registerECharts() {
|
|
|
71
71
|
//#endregion
|
|
72
72
|
//#region src/internal/component.ts
|
|
73
73
|
registerECharts();
|
|
74
|
+
function normalizeChartProps(props) {
|
|
75
|
+
return Object.fromEntries(Object.entries(props).map(([key, value]) => [key.replace(/-([a-z])/g, (_match, letter) => letter.toUpperCase()), value]));
|
|
76
|
+
}
|
|
74
77
|
function createChartComponent(name, buildOption) {
|
|
75
78
|
return (0, vue.defineComponent)({
|
|
76
79
|
name: `Mantine${name}`,
|
|
@@ -107,7 +110,7 @@ function createChartComponent(name, buildOption) {
|
|
|
107
110
|
setup(props, { attrs, emit, expose }) {
|
|
108
111
|
const chart = (0, vue.ref)();
|
|
109
112
|
const option = (0, vue.computed)(() => ({
|
|
110
|
-
...buildOption(attrs),
|
|
113
|
+
...buildOption(normalizeChartProps(attrs)),
|
|
111
114
|
...props.option
|
|
112
115
|
}));
|
|
113
116
|
expose({
|
|
@@ -302,6 +305,10 @@ var bool = (value, fallback) => typeof value === "boolean" ? value : fallback;
|
|
|
302
305
|
var num = (value, fallback) => typeof value === "number" ? value : fallback;
|
|
303
306
|
var obj = (value) => value && typeof value === "object" ? value : {};
|
|
304
307
|
var list = (value) => Array.isArray(value) ? value : [];
|
|
308
|
+
var gridLabelBounds = {
|
|
309
|
+
outerBoundsMode: "same",
|
|
310
|
+
outerBoundsContain: "axisLabel"
|
|
311
|
+
};
|
|
305
312
|
var formatter = (props) => typeof props.valueFormatter === "function" ? props.valueFormatter : void 0;
|
|
306
313
|
function tooltip(props) {
|
|
307
314
|
if (!bool(props.withTooltip, true)) return { show: false };
|
|
@@ -457,7 +464,7 @@ function cartesianOption(props, kind) {
|
|
|
457
464
|
right: bool(props.withRightYAxis, false) ? 48 : 16,
|
|
458
465
|
top: bool(props.withLegend, false) ? 44 : 16,
|
|
459
466
|
bottom: 38,
|
|
460
|
-
|
|
467
|
+
...gridLabelBounds,
|
|
461
468
|
...obj(props.gridProps)
|
|
462
469
|
},
|
|
463
470
|
legend: {
|
|
@@ -494,11 +501,31 @@ function cartesianOption(props, kind) {
|
|
|
494
501
|
};
|
|
495
502
|
}
|
|
496
503
|
function radialOption(props, donut = false) {
|
|
497
|
-
const
|
|
504
|
+
const resolvedData = list(props.data).map(({ color, ...item }) => {
|
|
505
|
+
const resolvedColor = resolveColor(color);
|
|
506
|
+
return {
|
|
507
|
+
...item,
|
|
508
|
+
itemStyle: { color: resolvedColor }
|
|
509
|
+
};
|
|
510
|
+
});
|
|
511
|
+
const withLabels = bool(props.withLabels, false);
|
|
512
|
+
const withLegend = bool(props.withLegend, false);
|
|
513
|
+
const labelsPosition = props.labelsPosition === "inside" ? "inside" : "outside";
|
|
514
|
+
const withOutsideLabels = withLabels && labelsPosition === "outside";
|
|
515
|
+
const outerRadius = withOutsideLabels ? "65%" : "75%";
|
|
516
|
+
const valueFormat = formatter(props);
|
|
517
|
+
const labelFormatter = props.labelsType === "percent" ? "{d}%" : valueFormat ? (params) => valueFormat(Number(params.value)) : "{c}";
|
|
498
518
|
return {
|
|
499
|
-
color:
|
|
519
|
+
color: resolvedData.map((item) => item.itemStyle.color),
|
|
500
520
|
legend: {
|
|
501
|
-
show:
|
|
521
|
+
show: withLegend,
|
|
522
|
+
type: "scroll",
|
|
523
|
+
left: "center",
|
|
524
|
+
bottom: 8,
|
|
525
|
+
data: resolvedData.map((item) => ({
|
|
526
|
+
name: item.name,
|
|
527
|
+
itemStyle: { color: item.itemStyle.color }
|
|
528
|
+
})),
|
|
502
529
|
...obj(props.legendProps)
|
|
503
530
|
},
|
|
504
531
|
tooltip: {
|
|
@@ -508,20 +535,31 @@ function radialOption(props, donut = false) {
|
|
|
508
535
|
},
|
|
509
536
|
series: [{
|
|
510
537
|
type: "pie",
|
|
511
|
-
|
|
538
|
+
left: 0,
|
|
539
|
+
right: 0,
|
|
540
|
+
top: 0,
|
|
541
|
+
bottom: withLegend ? 56 : 0,
|
|
542
|
+
center: ["50%", "50%"],
|
|
543
|
+
radius: donut ? [`${num(props.thickness, 40)}%`, outerRadius] : ["0%", outerRadius],
|
|
512
544
|
startAngle: num(props.startAngle, 90),
|
|
545
|
+
endAngle: typeof props.endAngle === "number" ? props.endAngle : void 0,
|
|
513
546
|
minAngle: num(props.minAngle, 0),
|
|
514
547
|
padAngle: num(props.paddingAngle, 0),
|
|
548
|
+
avoidLabelOverlap: true,
|
|
515
549
|
roseType: props.type === "pie" ? void 0 : props.type === "donut" ? void 0 : props.type,
|
|
516
550
|
label: {
|
|
517
|
-
show:
|
|
518
|
-
|
|
551
|
+
show: withLabels,
|
|
552
|
+
position: labelsPosition,
|
|
553
|
+
formatter: labelFormatter,
|
|
554
|
+
...withOutsideLabels ? {
|
|
555
|
+
bleedMargin: 5,
|
|
556
|
+
edgeDistance: "8%"
|
|
557
|
+
} : {}
|
|
519
558
|
},
|
|
520
|
-
labelLine: { show: bool(props.withLabelsLine, false) },
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
}))
|
|
559
|
+
labelLine: { show: withLabels && bool(props.withLabelsLine, false) },
|
|
560
|
+
labelLayout: { hideOverlap: true },
|
|
561
|
+
data: resolvedData,
|
|
562
|
+
...obj(props.pieProps)
|
|
525
563
|
}],
|
|
526
564
|
graphic: props.chartLabel ? [{
|
|
527
565
|
type: "text",
|
|
@@ -543,7 +581,7 @@ function scatterOption(props, bubble = false) {
|
|
|
543
581
|
const zKey = String(props.zAxisKey ?? "z");
|
|
544
582
|
return {
|
|
545
583
|
grid: {
|
|
546
|
-
|
|
584
|
+
...gridLabelBounds,
|
|
547
585
|
...obj(props.gridProps)
|
|
548
586
|
},
|
|
549
587
|
legend: {
|
|
@@ -613,10 +651,13 @@ function gaugeOption(props) {
|
|
|
613
651
|
startAngle: 90 - num(props.startAngle, -120),
|
|
614
652
|
endAngle: 90 - num(props.endAngle, 120),
|
|
615
653
|
radius: "90%",
|
|
616
|
-
axisLine: {
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
654
|
+
axisLine: {
|
|
655
|
+
roundCap: bool(props.roundCaps, false),
|
|
656
|
+
lineStyle: {
|
|
657
|
+
width: num(props.thickness, 12),
|
|
658
|
+
color: axisColors
|
|
659
|
+
}
|
|
660
|
+
},
|
|
620
661
|
progress: sections.length ? { show: false } : {
|
|
621
662
|
show: true,
|
|
622
663
|
width: num(props.thickness, 12),
|
|
@@ -828,7 +869,7 @@ function candlestickOption(props) {
|
|
|
828
869
|
right: 16,
|
|
829
870
|
top: 16,
|
|
830
871
|
bottom: 38,
|
|
831
|
-
|
|
872
|
+
...gridLabelBounds,
|
|
832
873
|
...obj(props.gridProps)
|
|
833
874
|
},
|
|
834
875
|
tooltip: {
|
package/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../src/internal/echarts.ts","../src/internal/component.ts","../src/internal/colors.ts","../src/internal/options.ts","../src/charts.ts","../src/ChartTooltip/ChartTooltip.ts","../src/ChartLegend/ChartLegend.ts","../src/utils/get-series-labels/get-series-labels.ts"],"sourcesContent":["import { use } from 'echarts/core'\nimport {\n BarChart as EBarChart,\n CandlestickChart as ECandlestickChart,\n EffectScatterChart,\n FunnelChart as EFunnelChart,\n GaugeChart,\n GraphChart,\n HeatmapChart as EHeatmapChart,\n LineChart as ELineChart,\n PieChart as EPieChart,\n RadarChart as ERadarChart,\n SankeyChart as ESankeyChart,\n ScatterChart as EScatterChart,\n TreemapChart as ETreemapChart,\n} from 'echarts/charts'\nimport {\n AriaComponent,\n CalendarComponent,\n DatasetComponent,\n DataZoomComponent,\n GraphicComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n MarkAreaComponent,\n MarkPointComponent,\n PolarComponent,\n RadarComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n TransformComponent,\n VisualMapComponent,\n} from 'echarts/components'\nimport { CanvasRenderer, SVGRenderer } from 'echarts/renderers'\n\nlet registered = false\n\nexport function registerECharts(): void {\n if (registered) {\n return\n }\n\n use([\n EBarChart,\n ECandlestickChart,\n EffectScatterChart,\n EFunnelChart,\n GaugeChart,\n GraphChart,\n EHeatmapChart,\n ELineChart,\n EPieChart,\n ERadarChart,\n ESankeyChart,\n EScatterChart,\n ETreemapChart,\n AriaComponent,\n CalendarComponent,\n DatasetComponent,\n DataZoomComponent,\n GraphicComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n MarkAreaComponent,\n MarkPointComponent,\n PolarComponent,\n RadarComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n TransformComponent,\n VisualMapComponent,\n CanvasRenderer,\n SVGRenderer,\n ])\n\n registered = true\n}\n","import { computed, defineComponent, h, ref, type Component, type PropType } from 'vue'\nimport type { EChartsOption } from 'echarts'\nimport VChart from 'vue-echarts'\nimport { registerECharts } from './echarts'\n\nregisterECharts()\n\nexport type OptionBuilder = (props: Record<string, unknown>) => EChartsOption\n\nexport function createChartComponent(name: string, buildOption: OptionBuilder): Component {\n return defineComponent({\n name: `Mantine${name}`,\n inheritAttrs: false,\n props: {\n option: Object as PropType<EChartsOption>,\n height: { type: [Number, String], default: 300 },\n width: { type: [Number, String], default: '100%' },\n loading: Boolean,\n autoresize: { type: Boolean, default: true },\n renderer: { type: String as PropType<'canvas' | 'svg'>, default: 'canvas' },\n initOptions: Object as PropType<Record<string, unknown>>,\n },\n emits: ['click', 'dblclick', 'mouseover', 'mouseout', 'legendselectchanged', 'datazoom'],\n setup(props, { attrs, emit, expose }) {\n const chart = ref<InstanceType<typeof VChart>>()\n const option = computed(() => ({ ...buildOption(attrs), ...props.option }))\n expose({\n getEchartsInstance: () => chart.value?.chart,\n resize: () => chart.value?.resize(),\n setOption: (next: EChartsOption) => chart.value?.setOption(next),\n })\n const size = (value: string | number) => (typeof value === 'number' ? `${value}px` : value)\n const rootAttributes = computed(() =>\n Object.fromEntries(\n Object.entries(attrs).filter(\n ([key]) =>\n ['id', 'dir', 'role', 'tabindex', 'title'].includes(key) ||\n key.startsWith('aria-') ||\n (key.startsWith('data-') && key !== 'data'),\n ),\n ),\n )\n return () =>\n h(\n 'div',\n {\n ...rootAttributes.value,\n class: ['mantine-Chart-root', `mantine-${name}-root`, attrs.class],\n style: [{ width: size(props.width), height: size(props.height) }, attrs.style],\n },\n [\n h(VChart, {\n ref: chart,\n option: option.value,\n autoresize: props.autoresize,\n loading: props.loading,\n initOptions: { ...props.initOptions, renderer: props.renderer },\n class: 'mantine-Chart-container',\n onClick: (event: unknown) => emit('click', event),\n onDblclick: (event: unknown) => emit('dblclick', event),\n onMouseover: (event: unknown) => emit('mouseover', event),\n onMouseout: (event: unknown) => emit('mouseout', event),\n onLegendselectchanged: (event: unknown) => emit('legendselectchanged', event),\n onDatazoom: (event: unknown) => emit('datazoom', event),\n }),\n ],\n )\n },\n })\n}\n","const shadeMap: Record<string, string[]> = {\n blue: [\n '#e7f5ff',\n '#d0ebff',\n '#a5d8ff',\n '#74c0fc',\n '#4dabf7',\n '#339af0',\n '#228be6',\n '#1c7ed6',\n '#1971c2',\n '#1864ab',\n ],\n cyan: [\n '#e3fafc',\n '#c5f6fa',\n '#99e9f2',\n '#66d9e8',\n '#3bc9db',\n '#22b8cf',\n '#15aabf',\n '#1098ad',\n '#0c8599',\n '#0b7285',\n ],\n green: [\n '#ebfbee',\n '#d3f9d8',\n '#b2f2bb',\n '#8ce99a',\n '#69db7c',\n '#51cf66',\n '#40c057',\n '#37b24d',\n '#2f9e44',\n '#2b8a3e',\n ],\n grape: [\n '#f8f0fc',\n '#f3d9fa',\n '#eebefa',\n '#e599f7',\n '#da77f2',\n '#cc5de8',\n '#be4bdb',\n '#ae3ec9',\n '#9c36b5',\n '#862e9c',\n ],\n gray: [\n '#f8f9fa',\n '#f1f3f5',\n '#e9ecef',\n '#dee2e6',\n '#ced4da',\n '#adb5bd',\n '#868e96',\n '#495057',\n '#343a40',\n '#212529',\n ],\n orange: [\n '#fff4e6',\n '#ffe8cc',\n '#ffd8a8',\n '#ffc078',\n '#ffa94d',\n '#ff922b',\n '#fd7e14',\n '#f76707',\n '#e8590c',\n '#d9480f',\n ],\n pink: [\n '#fff0f6',\n '#ffdeeb',\n '#fcc2d7',\n '#faa2c1',\n '#f783ac',\n '#f06595',\n '#e64980',\n '#d6336c',\n '#c2255c',\n '#a61e4d',\n ],\n red: [\n '#fff5f5',\n '#ffe3e3',\n '#ffc9c9',\n '#ffa8a8',\n '#ff8787',\n '#ff6b6b',\n '#fa5252',\n '#f03e3e',\n '#e03131',\n '#c92a2a',\n ],\n teal: [\n '#e6fcf5',\n '#c3fae8',\n '#96f2d7',\n '#63e6be',\n '#38d9a9',\n '#20c997',\n '#12b886',\n '#0ca678',\n '#099268',\n '#087f5b',\n ],\n violet: [\n '#f3f0ff',\n '#e5dbff',\n '#d0bfff',\n '#b197fc',\n '#9775fa',\n '#845ef7',\n '#7950f2',\n '#7048e8',\n '#6741d9',\n '#5f3dc4',\n ],\n yellow: [\n '#fff9db',\n '#fff3bf',\n '#ffec99',\n '#ffe066',\n '#ffd43b',\n '#fcc419',\n '#fab005',\n '#f59f00',\n '#f08c00',\n '#e67700',\n ],\n}\n\nexport function resolveColor(color: unknown, fallback = '#228be6'): string {\n if (typeof color !== 'string' || !color) return fallback\n const [name, rawShade] = color.split('.')\n const shade = Number(rawShade ?? 6)\n return shadeMap[name]?.[Number.isInteger(shade) ? shade : 6] ?? color\n}\n","import type { EChartsOption, SeriesOption } from 'echarts'\nimport type {\n ChartDataItem,\n ChartReferenceAreaProps,\n ChartReferenceDotProps,\n ChartReferenceLineProps,\n ChartSeries,\n} from '../types'\nimport { resolveColor } from './colors'\n\ntype Props = Record<string, unknown>\n\nconst bool = (value: unknown, fallback: boolean) => (typeof value === 'boolean' ? value : fallback)\nconst num = (value: unknown, fallback: number) => (typeof value === 'number' ? value : fallback)\nconst obj = (value: unknown) => (value && typeof value === 'object' ? value : {})\nconst list = <T>(value: unknown): T[] => (Array.isArray(value) ? (value as T[]) : [])\nconst formatter = (props: Props) =>\n typeof props.valueFormatter === 'function'\n ? (props.valueFormatter as (value: number) => string)\n : undefined\n\nfunction tooltip(props: Props): EChartsOption['tooltip'] {\n if (!bool(props.withTooltip, true)) return { show: false }\n const format = formatter(props)\n return {\n trigger: 'axis',\n transitionDuration: num(props.tooltipAnimationDuration, 0) / 1000,\n valueFormatter: format ? (value) => format(Number(value)) : undefined,\n ...obj(props.tooltipProps),\n }\n}\n\nfunction markLine(referenceLines: ChartReferenceLineProps[] | undefined) {\n if (!referenceLines?.length) return undefined\n return {\n silent: true,\n symbol: 'none',\n data: referenceLines.map((line) => ({\n xAxis: line.x,\n yAxis: line.y,\n label: typeof line.label === 'string' ? { formatter: line.label } : line.label,\n lineStyle: {\n color: resolveColor(line.color, '#868e96'),\n type: line.strokeDasharray ? 'dashed' : 'solid',\n },\n })),\n }\n}\n\nfunction markArea(referenceAreas: ChartReferenceAreaProps[] | undefined) {\n if (!referenceAreas?.length) return undefined\n return {\n silent: true,\n data: referenceAreas.map((area) => [\n {\n xAxis: area.x1,\n yAxis: area.y1,\n itemStyle: { color: resolveColor(area.color, '#868e96'), opacity: 0.15 },\n label: typeof area.label === 'string' ? { formatter: area.label } : area.label,\n },\n { xAxis: area.x2, yAxis: area.y2 },\n ]),\n }\n}\n\nfunction markPoint(referenceDots: ChartReferenceDotProps[] | undefined) {\n if (!referenceDots?.length) return undefined\n return {\n silent: true,\n data: referenceDots.map((dot) => ({\n coord: [dot.x, dot.y],\n symbolSize: (dot.r ?? 6) * 2,\n itemStyle: { color: resolveColor(dot.color, '#868e96') },\n label: typeof dot.label === 'string' ? { formatter: dot.label } : dot.label,\n })),\n }\n}\n\nexport function cartesianOption(\n props: Props,\n kind: 'line' | 'area' | 'bar' | 'composite',\n): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<\n ChartSeries & {\n type?: string\n stackId?: string\n strokeDasharray?: string | number\n curveType?: string\n }\n >(props.series)\n const dataKey = String(props.dataKey ?? 'name')\n const horizontal = props.orientation !== 'vertical'\n const chartType = String(props.type ?? 'default')\n const category = data.map((item) => item[dataKey] as string | number)\n const commonAxis = { axisLabel: { color: resolveColor(props.textColor, '#868e96') } }\n const categoryAxis = { type: 'category' as const, data: category, ...commonAxis }\n const valueAxis = { type: 'value' as const, name: props.yAxisLabel as string, ...commonAxis }\n const mapped = series.map((item, index) => {\n const itemKind = kind === 'composite' ? (item.type ?? 'line') : kind === 'area' ? 'line' : kind\n const color = resolveColor(item.color, resolveColor(`blue.${6 + (index % 3)}`))\n const stack =\n chartType === 'stacked' || chartType === 'percent' || chartType === 'stream'\n ? 'stack'\n : item.stackId\n const base = {\n name: item.label ?? item.name,\n data: data.map((entry) => entry[item.name] as number | null),\n yAxisIndex: item.yAxisId ? 1 : 0,\n stack,\n markLine:\n index === 0\n ? markLine(props.referenceLines as ChartReferenceLineProps[] | undefined)\n : undefined,\n markArea:\n index === 0\n ? markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined)\n : undefined,\n markPoint:\n index === 0\n ? markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined)\n : undefined,\n }\n if (itemKind === 'bar') {\n return {\n ...base,\n type: 'bar',\n barMaxWidth: props.maxBarWidth as number,\n barMinHeight: num(props.minBarSize, 0),\n itemStyle: { color, opacity: num(props.fillOpacity, 1) },\n label: {\n show: bool(props.withBarValueLabel, false),\n position: horizontal ? 'top' : 'right',\n },\n }\n }\n return {\n ...base,\n type: 'line',\n smooth: !['linear', 'step', 'stepBefore', 'stepAfter'].includes(\n String(props.curveType ?? item.curveType ?? 'monotone'),\n ),\n step: String(props.curveType).startsWith('step') ? 'middle' : false,\n connectNulls: bool(props.connectNulls, true),\n showSymbol: bool(props.withDots, true),\n symbolSize: 6,\n lineStyle: {\n color,\n width: chartType === 'stream' ? 0 : num(props.strokeWidth, 2),\n type: item.strokeDasharray ? 'dashed' : 'solid',\n },\n itemStyle: { color, opacity: num(props.fillOpacity, 1) },\n areaStyle: itemKind === 'area' ? { color, opacity: num(props.fillOpacity, 0.2) } : undefined,\n label: { show: bool(props.withPointLabels, false), position: 'top' },\n }\n }) as unknown as SeriesOption[]\n\n if (kind === 'area' && chartType === 'stream') {\n mapped.unshift({\n type: 'line',\n stack: 'stack',\n silent: true,\n symbol: 'none',\n data: data.map(\n (entry) =>\n -series.reduce((total, item) => {\n const value = entry[item.name]\n return total + (typeof value === 'number' && Number.isFinite(value) ? value : 0)\n }, 0) / 2,\n ),\n lineStyle: { opacity: 0 },\n areaStyle: { opacity: 0 },\n tooltip: { show: false },\n } as SeriesOption)\n }\n\n return {\n animationDurationUpdate: num(props.tooltipAnimationDuration, 0),\n color: series.map((item) => resolveColor(item.color)),\n grid: {\n left: 48,\n right: bool(props.withRightYAxis, false) ? 48 : 16,\n top: bool(props.withLegend, false) ? 44 : 16,\n bottom: 38,\n containLabel: true,\n ...obj(props.gridProps),\n },\n legend: { show: bool(props.withLegend, false), ...obj(props.legendProps) },\n tooltip: tooltip(props),\n xAxis: horizontal\n ? {\n ...categoryAxis,\n show: bool(props.withXAxis, true),\n name: props.xAxisLabel as string,\n ...obj(props.xAxisProps),\n }\n : { ...valueAxis, show: bool(props.withXAxis, true), ...obj(props.xAxisProps) },\n yAxis: horizontal\n ? [\n {\n ...valueAxis,\n show: chartType === 'stream' ? false : bool(props.withYAxis, true),\n ...obj(props.yAxisProps),\n },\n {\n ...valueAxis,\n show: bool(props.withRightYAxis, false),\n position: 'right',\n name: props.rightYAxisLabel as string,\n ...obj(props.rightYAxisProps),\n },\n ]\n : { ...categoryAxis, show: bool(props.withYAxis, true), ...obj(props.yAxisProps) },\n series: mapped,\n }\n}\n\nexport function radialOption(props: Props, donut = false): EChartsOption {\n const data = list<{ name: string; value: number; color?: string }>(props.data)\n return {\n color: data.map((item) => resolveColor(item.color)),\n legend: {\n show: bool(props.withLabels, false) || bool(props.withLegend, false),\n ...obj(props.legendProps),\n },\n tooltip: { trigger: 'item', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n series: [\n {\n type: 'pie',\n radius: donut ? [`${num(props.thickness, 40)}%`, '75%'] : ['0%', '75%'],\n startAngle: num(props.startAngle, 90),\n minAngle: num(props.minAngle, 0),\n padAngle: num(props.paddingAngle, 0),\n roseType:\n props.type === 'pie'\n ? undefined\n : props.type === 'donut'\n ? undefined\n : (props.type as 'radius' | 'area'),\n label: {\n show: bool(props.withLabels, false),\n formatter: props.withLabelsLine ? '{b}: {d}%' : '{b}',\n },\n labelLine: { show: bool(props.withLabelsLine, false) },\n data: data.map((item) => ({ ...item, itemStyle: { color: resolveColor(item.color) } })),\n },\n ],\n graphic: props.chartLabel\n ? [\n {\n type: 'text',\n left: 'center',\n top: 'middle',\n style: {\n text: String(props.chartLabel),\n fill: resolveColor(props.chartLabelColor, '#212529'),\n fontSize: num(props.chartLabelFontSize, 18),\n },\n },\n ]\n : undefined,\n }\n}\n\nexport function scatterOption(props: Props, bubble = false): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<ChartSeries>(props.series)\n const xKey = String(props.dataKey ?? props.xAxisKey ?? 'x')\n const yKey = String(props.yAxisKey ?? 'y')\n const zKey = String(props.zAxisKey ?? 'z')\n return {\n grid: { containLabel: true, ...obj(props.gridProps) },\n legend: { show: bool(props.withLegend, false), ...obj(props.legendProps) },\n tooltip: { trigger: 'item', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n xAxis: { type: 'value', show: bool(props.withXAxis, true), ...obj(props.xAxisProps) },\n yAxis: props.withRightYAxis\n ? [\n {\n type: 'value',\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n {\n type: 'value',\n show: true,\n position: 'right',\n name: props.rightYAxisLabel as string,\n ...obj(props.rightYAxisProps),\n },\n ]\n : {\n type: 'value',\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n series: (series.length\n ? series\n : [{ name: String(props.name ?? 'value'), color: props.color as string }]\n ).map((item, index) => ({\n type: 'scatter',\n name: item.label ?? item.name,\n yAxisIndex: item.yAxisId === 'right' ? 1 : 0,\n data: data\n .filter((entry) => !entry.name || entry.name === item.name)\n .map((entry) => [entry[xKey], entry[yKey], entry[zKey], entry]),\n symbolSize: bubble\n ? (value: unknown[]) => Math.max(4, Math.sqrt(Number(value[2] ?? 1)) * num(props.range, 4))\n : num(props.size, 10),\n itemStyle: { color: resolveColor(item.color) },\n markLine:\n index === 0\n ? markLine(props.referenceLines as ChartReferenceLineProps[] | undefined)\n : undefined,\n markArea:\n index === 0\n ? markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined)\n : undefined,\n markPoint:\n index === 0\n ? markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined)\n : undefined,\n })) as unknown as SeriesOption[],\n }\n}\n\nexport function gaugeOption(props: Props): EChartsOption {\n const min = num(props.min, 0)\n const max = num(props.max, 100)\n const value = num(props.value, min)\n const sections = list<{ value: number; color: string }>(props.sections)\n const range = max - min || 1\n const axisColors: [number, string][] = sections.length\n ? sections.map((section) => [\n Math.max(0, Math.min(1, (section.value - min) / range)),\n resolveColor(section.color),\n ])\n : [[1, resolveColor(props.trackColor, '#e9ecef')]]\n const format =\n typeof props.valueFormatter === 'function'\n ? (props.valueFormatter as (input: number) => string)\n : (input: number) => String(input)\n\n return {\n series: [\n {\n type: 'gauge',\n min,\n max,\n startAngle: 90 - num(props.startAngle, -120),\n endAngle: 90 - num(props.endAngle, 120),\n radius: '90%',\n axisLine: {\n lineStyle: {\n width: num(props.thickness, 12),\n color: axisColors,\n },\n },\n progress: sections.length\n ? { show: false }\n : {\n show: true,\n width: num(props.thickness, 12),\n roundCap: bool(props.roundCaps, false),\n itemStyle: { color: resolveColor(props.filledColor) },\n },\n pointer:\n typeof props.target === 'number'\n ? {\n show: true,\n width: num(props.targetSize, 2),\n length: '85%',\n itemStyle: { color: resolveColor(props.targetColor, '#212529') },\n }\n : { show: false },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n anchor: { show: false },\n title: { show: false },\n detail: {\n show: props.label !== null,\n formatter: typeof props.label === 'string' ? props.label : format(value),\n color: 'inherit',\n },\n data: [{ value: typeof props.target === 'number' ? props.target : value }],\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nfunction normalizeSegmentValue(value: number) {\n return Number.isFinite(value) ? Math.max(0, value) : 0\n}\n\nexport function waffleOption(props: Props): EChartsOption {\n const rows = Math.max(1, num(props.rows, 10))\n const columns = Math.max(1, num(props.columns, 10))\n const cellCount = rows * columns\n const data = list<{ name: string; value: number; color: string; key?: string | number }>(\n props.data,\n )\n const values = data.map((item) => normalizeSegmentValue(item.value))\n const sum = values.reduce((total, value) => total + value, 0)\n const denominator = props.total == null ? sum : Math.max(num(props.total, sum), sum)\n const filledTarget = denominator ? Math.round((sum / denominator) * cellCount) : 0\n const allocated = values.map((value) => (sum ? Math.floor((value / sum) * filledTarget) : 0))\n let remainder = filledTarget - allocated.reduce((total, value) => total + value, 0)\n const fractions = values\n .map((value, index) => ({\n index,\n fraction: sum ? (value / sum) * filledTarget - allocated[index] : 0,\n }))\n .sort((a, b) => b.fraction - a.fraction)\n\n for (let index = 0; index < fractions.length && remainder > 0; index += 1, remainder -= 1) {\n allocated[fractions[index].index] += 1\n }\n\n const cells = data.flatMap((_, segmentIndex) =>\n Array.from({ length: allocated[segmentIndex] }, () => segmentIndex),\n )\n while (cells.length < cellCount) cells.push(-1)\n\n const direction = String(props.fillDirection ?? 'left-to-right')\n const points = cells.map((segmentIndex, index) => {\n let x = index % columns\n let y = Math.floor(index / columns)\n if (direction === 'right-to-left') x = columns - 1 - x\n if (direction === 'top-to-bottom' || direction === 'bottom-to-top') {\n x = Math.floor(index / rows)\n y = index % rows\n if (direction === 'bottom-to-top') y = rows - 1 - y\n }\n const item = data[segmentIndex]\n return {\n value: [x, y, segmentIndex],\n name: item?.name,\n itemStyle: {\n color: item ? resolveColor(item.color) : resolveColor(props.emptyColor, '#e9ecef'),\n },\n }\n })\n\n return {\n grid: { left: 0, right: 0, top: 0, bottom: bool(props.withLegend, true) ? 36 : 0 },\n xAxis: { type: 'value', min: -0.5, max: columns - 0.5, show: false },\n yAxis: { type: 'value', min: -0.5, max: rows - 0.5, inverse: true, show: false },\n legend: {\n show: bool(props.withLegend, true),\n data: data.map((item) => item.name),\n top: props.legendPosition === 'top' ? 0 : undefined,\n bottom: props.legendPosition === 'bottom' ? 0 : undefined,\n left: props.legendPosition === 'left' ? 0 : undefined,\n right: props.legendPosition === 'right' ? 0 : undefined,\n },\n tooltip: {\n show: bool(props.withTooltip, false),\n formatter: (params: any) => {\n const item = data[params.value?.[2]]\n if (!item) return ''\n return typeof props.getTooltipLabel === 'function'\n ? String(\n (props.getTooltipLabel as (input: Record<string, unknown>) => unknown)({\n ...item,\n count: allocated[params.value[2]],\n }),\n )\n : `${item.name}: ${item.value}`\n },\n },\n series: [\n { type: 'scatter', symbol: 'roundRect', symbolSize: num(props.cellSize, 20), data: points },\n ],\n }\n}\n\nexport function matrixOption(props: Props): EChartsOption {\n const data = list<{ x: string; y: string; value: number | null }>(props.data)\n const xLabels = list<string>(props.xLabels).length\n ? list<string>(props.xLabels)\n : [...new Set(data.map((cell) => cell.x))]\n const yLabels = list<string>(props.yLabels).length\n ? list<string>(props.yLabels)\n : [...new Set(data.map((cell) => cell.y))]\n const values = data.flatMap((cell) => (typeof cell.value === 'number' ? [cell.value] : []))\n const domain =\n (props.domain as [number, number] | undefined) ??\n ([Math.min(0, ...values), Math.max(1, ...values)] as [number, number])\n const colors = list<string>(props.colors).length\n ? list<string>(props.colors).map((color) => resolveColor(color))\n : ['#ebfbee', '#8ce99a', '#40c057', '#2b8a3e']\n\n return {\n grid: {\n left: bool(props.withYLabels, false) ? num(props.yLabelsWidth, 60) : 0,\n right: 0,\n top:\n props.xLabelsPosition === 'top' && bool(props.withXLabels, false)\n ? num(props.xLabelsHeight, 60)\n : 0,\n bottom:\n props.xLabelsPosition !== 'top' && bool(props.withXLabels, false)\n ? num(props.xLabelsHeight, 60)\n : bool(props.withLegend, false)\n ? 30\n : 0,\n },\n xAxis: {\n type: 'category',\n data: xLabels,\n position: props.xLabelsPosition === 'top' ? 'top' : 'bottom',\n show: bool(props.withXLabels, false),\n axisLabel: { rotate: num(props.xLabelsRotation, -90), fontSize: num(props.fontSize, 12) },\n },\n yAxis: {\n type: 'category',\n data: yLabels,\n inverse: true,\n show: bool(props.withYLabels, false),\n axisLabel: { fontSize: num(props.fontSize, 12) },\n },\n visualMap: {\n show: bool(props.withLegend, false),\n min: domain[0],\n max: domain[1],\n inRange: { color: colors },\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n text: (props.legendLabels as string[] | undefined) ?? ['More', 'Less'],\n },\n tooltip: {\n show: bool(props.withTooltip, false) && typeof props.getTooltipLabel === 'function',\n formatter: (params: any) => {\n const cell = data[params.dataIndex]\n return String(\n (props.getTooltipLabel as ((input: typeof cell) => unknown) | undefined)?.(cell) ?? '',\n )\n },\n ...obj(props.tooltipProps),\n },\n series: [\n {\n type: 'heatmap',\n data: data.map((cell) => {\n const extra =\n typeof props.getCellProps === 'function'\n ? (props.getCellProps as (input: typeof cell) => Record<string, unknown>)(cell)\n : {}\n const empty = cell.value === null || !Number.isFinite(cell.value)\n return {\n value: [xLabels.indexOf(cell.x), yLabels.indexOf(cell.y), cell.value, cell],\n ...extra,\n itemStyle: {\n ...(empty && props.emptyColor\n ? { color: resolveColor(props.emptyColor as string) }\n : {}),\n ...obj(extra.itemStyle),\n },\n }\n }),\n itemStyle: {\n borderWidth: num(props.gap, 1),\n borderColor: 'transparent',\n borderRadius: num(props.cellRadius, 2),\n },\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nexport function candlestickOption(props: Props): EChartsOption {\n const data = list<Record<string, unknown>>(props.data)\n const keys = {\n open: 'open',\n high: 'high',\n low: 'low',\n close: 'close',\n ...obj(props.dataKeys),\n } as Record<string, string>\n const dataKey = String(props.dataKey ?? 'date')\n\n return {\n grid: {\n left: 48,\n right: 16,\n top: 16,\n bottom: 38,\n containLabel: true,\n ...obj(props.gridProps),\n },\n tooltip: { trigger: 'axis', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n xAxis: {\n type: 'category',\n data: data.map((item) => String(item[dataKey] ?? '')),\n show: bool(props.withXAxis, true),\n name: props.xAxisLabel as string,\n ...obj(props.xAxisProps),\n },\n yAxis: {\n type: 'value',\n scale: true,\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n series: [\n {\n type: 'candlestick',\n data: data.map((item) => [\n item[keys.open],\n item[keys.close],\n item[keys.low],\n item[keys.high],\n ]),\n barMaxWidth: props.maxCandleWidth as number,\n itemStyle: {\n color: resolveColor(props.upColor, '#12b886'),\n color0: resolveColor(props.downColor, '#fa5252'),\n borderColor: resolveColor(props.upColor, '#12b886'),\n borderColor0: resolveColor(props.downColor, '#fa5252'),\n borderWidth: num(props.candleStrokeWidth, 1),\n },\n markLine: markLine(props.referenceLines as ChartReferenceLineProps[] | undefined),\n markArea: markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined),\n markPoint: markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined),\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nexport function sparklineOption(props: Props): EChartsOption {\n const data = list<number | null>(props.data)\n const trend = props.trendColors as\n | { positive?: string; negative?: string; neutral?: string }\n | undefined\n const color = trend\n ? resolveColor(\n data.at(-1)! > data[0]!\n ? trend.positive\n : data.at(-1)! < data[0]!\n ? trend.negative\n : trend.neutral,\n )\n : resolveColor(props.color)\n return {\n grid: { left: 0, right: 0, top: 1, bottom: 1 },\n xAxis: { type: 'category', show: false },\n yAxis: { type: 'value', show: false, scale: true },\n series: [\n {\n type: 'line',\n data,\n showSymbol: false,\n connectNulls: bool(props.connectNulls, true),\n smooth: props.curveType !== 'linear',\n lineStyle: { color, width: num(props.strokeWidth, 2) },\n areaStyle: bool(props.withGradient, true)\n ? { color, opacity: num(props.fillOpacity, 0.6) }\n : undefined,\n },\n ],\n }\n}\n\nexport function radarOption(props: Props): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<ChartSeries>(props.series)\n const key = String(props.dataKey ?? 'name')\n const max = num(\n props.maxValue,\n Math.max(1, ...data.flatMap((row) => series.map((s) => Number(row[s.name] ?? 0)))),\n )\n return {\n legend: { show: bool(props.withLegend, false) },\n tooltip: { show: bool(props.withTooltip, true) },\n radar: {\n indicator: data.map((row) => ({ name: String(row[key]), max })),\n shape: props.shape === 'circle' ? 'circle' : 'polygon',\n },\n series: [\n {\n type: 'radar',\n data: series.map((s) => ({\n name: s.label ?? s.name,\n value: data.map((row) => Number(row[s.name] ?? 0)),\n lineStyle: { color: resolveColor(s.color) },\n itemStyle: { color: resolveColor(s.color) },\n areaStyle: bool(props.withPolarGrid, false) ? {} : undefined,\n })),\n },\n ],\n }\n}\n\nexport function simpleOption(type: 'funnel' | 'treemap' | 'sankey', props: Props): EChartsOption {\n const data = list<Record<string, unknown>>(props.data)\n if (type === 'sankey')\n return {\n tooltip: { show: bool(props.withTooltip, true) },\n series: [\n {\n type,\n data: list(props.nodes ?? data),\n links: list(props.links),\n emphasis: { focus: 'adjacency' },\n ...obj(props.sankeyProps),\n },\n ],\n }\n return {\n tooltip: { show: bool(props.withTooltip, true) },\n legend: { show: bool(props.withLegend, false) },\n series: [\n {\n type,\n data: data.map((item) => ({ ...item, itemStyle: { color: resolveColor(item.color) } })),\n ...obj(props[`${type}Props`]),\n },\n ],\n }\n}\n\nexport function radialBarOption(props: Props): EChartsOption {\n const data = list<{ name: string; value: number; color?: string }>(props.data)\n return {\n legend: { show: bool(props.withLegend, false) },\n tooltip: { show: bool(props.withTooltip, true) },\n polar: {},\n angleAxis: { max: num(props.maxValue, 100), show: false },\n radiusAxis: {\n type: 'category',\n data: data.map((i) => i.name),\n show: bool(props.withLabels, true),\n },\n series: [\n {\n type: 'bar',\n coordinateSystem: 'polar',\n roundCap: true,\n data: data.map((i) => ({ value: i.value, itemStyle: { color: resolveColor(i.color) } })),\n },\n ],\n }\n}\n\nexport function heatmapOption(props: Props): EChartsOption {\n const input =\n props.data && typeof props.data === 'object' ? (props.data as Record<string, number>) : {}\n const data = Object.entries(input).map(([date, value]) => [date, value])\n const values = Object.values(input)\n const date = (value: unknown, fallback: string) =>\n value instanceof Date\n ? value.toISOString().slice(0, 10)\n : typeof value === 'string'\n ? value\n : fallback\n const start = date(props.startDate, String(data[0]?.[0] ?? new Date().toISOString().slice(0, 10)))\n const end = date(props.endDate, String(data.at(-1)?.[0] ?? start))\n return {\n tooltip: { show: bool(props.withTooltip, false) },\n visualMap: {\n show: bool(props.withLegend, false),\n min: (props.domain as number[] | undefined)?.[0] ?? Math.min(0, ...values),\n max: (props.domain as number[] | undefined)?.[1] ?? Math.max(1, ...values),\n inRange: {\n color: list<string>(props.colors).length\n ? list<string>(props.colors).map((color) => resolveColor(color))\n : ['#ebfbee', '#2f9e44'],\n },\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n },\n calendar: {\n range: [start, end],\n cellSize: num(props.rectSize, 10) + num(props.gap, 1),\n dayLabel: {\n show: bool(props.withWeekdayLabels, false),\n firstDay: num(props.firstDayOfWeek, 1),\n },\n monthLabel: { show: bool(props.withMonthLabels, false) },\n itemStyle: {\n borderWidth: num(props.gap, 1),\n borderColor: 'transparent',\n borderRadius: num(props.rectRadius, 2),\n },\n },\n series: [{ type: 'heatmap', coordinateSystem: 'calendar', data }],\n }\n}\n","import type { MantineColor } from '@mantine-vue/core'\nimport type { DefineComponent, HTMLAttributes, VNodeChild } from 'vue'\nimport { createChartComponent } from './internal/component'\nimport {\n cartesianOption,\n candlestickOption,\n gaugeOption,\n heatmapOption,\n matrixOption,\n radarOption,\n radialBarOption,\n radialOption,\n scatterOption,\n simpleOption,\n sparklineOption,\n waffleOption,\n} from './internal/options'\nimport type {\n BaseChartStylesNames,\n ChartData,\n ChartOptionProps,\n ChartRootProps,\n ChartSeries,\n GridChartBaseProps,\n MantineChartDotProps,\n} from './types'\n\nexport type LineChartCurveType =\n | 'bump'\n | 'linear'\n | 'natural'\n | 'monotone'\n | 'step'\n | 'stepBefore'\n | 'stepAfter'\nexport type AreaChartCurveType = LineChartCurveType\nexport type CompositeChartCurveType = LineChartCurveType\nexport interface LineChartSeries extends ChartSeries {\n strokeDasharray?: string | number\n curveType?: LineChartCurveType\n}\nexport interface AreaChartSeries extends ChartSeries {\n color: MantineColor\n strokeDasharray?: string | number\n curveType?: AreaChartCurveType\n}\nexport interface BarChartSeries extends ChartSeries {\n stackId?: string\n}\nexport interface CompositeChartSeries extends ChartSeries {\n type: 'line' | 'area' | 'bar'\n strokeDasharray?: string | number\n}\n\nexport interface LineChartProps extends GridChartBaseProps {\n series: LineChartSeries[]\n type?: 'default' | 'gradient'\n gradientStops?: { offset: number; color: MantineColor }[]\n curveType?: LineChartCurveType\n fillOpacity?: number\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n lineChartProps?: ChartOptionProps\n connectNulls?: boolean\n lineProps?: ChartOptionProps | ((series: LineChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n}\nexport interface AreaChartProps extends GridChartBaseProps {\n series: AreaChartSeries[]\n type?: 'default' | 'stacked' | 'percent' | 'split' | 'stream'\n withGradient?: boolean\n curveType?: AreaChartCurveType\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n areaChartProps?: ChartOptionProps\n fillOpacity?: number\n splitColors?: [MantineColor, MantineColor]\n splitOffset?: number\n connectNulls?: boolean\n areaProps?: ChartOptionProps | ((series: AreaChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n}\nexport interface BarChartProps extends GridChartBaseProps {\n series: BarChartSeries[]\n type?: 'default' | 'stacked' | 'percent' | 'waterfall'\n fillOpacity?: number\n cursorFill?: MantineColor\n barChartProps?: ChartOptionProps\n barProps?: ChartOptionProps | ((series: BarChartSeries) => ChartOptionProps)\n withBarValueLabel?: boolean\n valueLabelProps?: ChartOptionProps | ((series: BarChartSeries) => ChartOptionProps)\n minBarSize?: number\n maxBarWidth?: number\n barLabelColor?: MantineColor\n getBarColor?: (value: number, series: BarChartSeries) => MantineColor\n}\nexport interface CompositeChartProps extends Omit<GridChartBaseProps, 'orientation'> {\n series: CompositeChartSeries[]\n curveType?: CompositeChartCurveType\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n connectNulls?: boolean\n lineProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n areaProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n barProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n withBarValueLabel?: boolean\n minBarSize?: number\n maxBarWidth?: number\n composedChartProps?: ChartOptionProps\n}\n\nexport interface PieChartCell {\n name: string\n value: number\n color?: MantineColor\n}\nexport interface PieChartProps extends ChartRootProps {\n data: PieChartCell[]\n withTooltip?: boolean\n withLabels?: boolean\n withLabelsLine?: boolean\n labelsPosition?: 'inside' | 'outside'\n labelsType?: 'value' | 'percent'\n tooltipDataSource?: 'segment' | 'all'\n valueFormatter?: (value: number) => string\n strokeWidth?: number\n size?: number\n startAngle?: number\n endAngle?: number\n paddingAngle?: number\n pieProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n}\nexport interface DonutChartProps extends PieChartProps {\n thickness?: number\n chartLabel?: string\n chartLabelColor?: MantineColor\n chartLabelFontSize?: number\n chartLabelProps?: ChartOptionProps\n}\n\nexport interface ScatterChartSeries extends ChartSeries {\n data?: ChartData\n}\nexport interface ScatterChartProps extends GridChartBaseProps {\n data: ChartData\n series: ScatterChartSeries[]\n xAxisKey?: string\n yAxisKey?: string\n scatterProps?: ChartOptionProps | ((series: ScatterChartSeries) => ChartOptionProps)\n}\nexport interface BubbleChartProps extends ChartRootProps {\n data: ChartData\n xAxisKey?: string\n yAxisKey?: string\n zAxisKey?: string\n name?: string\n color?: MantineColor\n range?: number\n withTooltip?: boolean\n withXAxis?: boolean\n withYAxis?: boolean\n xAxisProps?: ChartOptionProps\n yAxisProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n gridProps?: ChartOptionProps\n valueFormatter?: (value: number) => string\n}\n\nexport interface RadarChartProps extends GridChartBaseProps {\n series: ChartSeries[]\n maxValue?: number\n withPolarGrid?: boolean\n withAngleAxis?: boolean\n withRadiusAxis?: boolean\n shape?: 'polygon' | 'circle'\n radarProps?: ChartOptionProps\n}\nexport interface RadialBarChartCell {\n name: string\n value: number\n color?: MantineColor\n}\nexport interface RadialBarChartProps extends ChartRootProps {\n data: RadialBarChartCell[]\n maxValue?: number\n withLabels?: boolean\n withLegend?: boolean\n withTooltip?: boolean\n startAngle?: number\n endAngle?: number\n barSize?: number\n radialBarProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n legendProps?: ChartOptionProps\n}\nexport interface FunnelChartCell extends PieChartCell {\n label?: string\n}\nexport interface FunnelChartProps extends ChartRootProps {\n data: FunnelChartCell[]\n withTooltip?: boolean\n withLabels?: boolean\n withLegend?: boolean\n valueFormatter?: (value: number) => string\n funnelProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n}\n\nexport interface TreemapData {\n name: string\n value?: number\n color?: MantineColor\n children?: TreemapData[]\n}\nexport interface TreemapProps extends ChartRootProps {\n data: TreemapData[]\n withTooltip?: boolean\n withLegend?: boolean\n valueFormatter?: (value: number) => string\n treemapProps?: ChartOptionProps\n}\nexport interface SankeyChartNode {\n name: string\n color?: MantineColor\n [key: string]: unknown\n}\nexport interface SankeyChartLink {\n source: string | number\n target: string | number\n value: number\n [key: string]: unknown\n}\nexport interface SankeyChartProps extends ChartRootProps {\n data?: SankeyChartNode[]\n nodes?: SankeyChartNode[]\n links: SankeyChartLink[]\n withTooltip?: boolean\n valueFormatter?: (value: number) => string\n sankeyProps?: ChartOptionProps\n}\n\nexport interface SparklineTrendColors {\n positive: MantineColor\n negative: MantineColor\n neutral?: MantineColor\n}\nexport interface SparklineProps extends ChartRootProps {\n data: (number | null)[]\n color?: MantineColor\n withGradient?: boolean\n fillOpacity?: number\n curveType?: LineChartCurveType\n strokeWidth?: number\n trendColors?: SparklineTrendColors\n connectNulls?: boolean\n areaProps?: ChartOptionProps\n}\nexport interface HeatmapRectData {\n date: string\n value: number | null\n}\nexport interface HeatmapProps extends ChartRootProps {\n data: Record<string, number>\n domain?: [number, number]\n startDate?: Date | string\n endDate?: Date | string\n withMonthLabels?: boolean\n monthLabels?: string[]\n withWeekdayLabels?: boolean\n weekdayLabels?: string[]\n withOutsideDates?: boolean\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n rectSize?: number\n gap?: number\n rectRadius?: number\n colors?: string[]\n weekdaysLabelsWidth?: number\n monthsLabelsHeight?: number\n fontSize?: number\n getTooltipLabel?: (input: HeatmapRectData) => VNodeChild\n withTooltip?: boolean\n tooltipProps?: ChartOptionProps\n getRectProps?: (input: HeatmapRectData) => Record<string, unknown>\n splitMonths?: boolean\n withLegend?: boolean\n legendLabels?: [string, string]\n}\n\nexport interface GaugeChartSection {\n value: number\n color: MantineColor\n}\nexport interface GaugeChartProps extends ChartRootProps {\n value: number\n min?: number\n max?: number\n target?: number\n sections?: GaugeChartSection[]\n thickness?: number\n size?: number\n startAngle?: number\n endAngle?: number\n label?: VNodeChild\n valueFormatter?: (value: number) => string\n trackColor?: MantineColor\n filledColor?: MantineColor\n targetColor?: MantineColor\n targetSize?: number\n roundCaps?: boolean\n}\n\nexport interface WaffleChartCell {\n name: string\n value: number\n color: MantineColor\n key?: string | number\n}\nexport interface WaffleChartProps extends ChartRootProps {\n data: WaffleChartCell[]\n rows?: number\n columns?: number\n total?: number\n gap?: number\n cellRadius?: number\n cellSize?: number\n emptyColor?: MantineColor\n withTooltip?: boolean\n getTooltipLabel?: (cell: WaffleChartCell & { count: number }) => VNodeChild\n withLegend?: boolean\n legendPosition?: 'top' | 'bottom' | 'left' | 'right'\n fillDirection?: 'left-to-right' | 'right-to-left' | 'top-to-bottom' | 'bottom-to-top'\n size?: number\n}\n\nexport interface MatrixChartCell {\n x: string\n y: string\n value: number | null\n}\nexport type MatrixChartData = MatrixChartCell[]\nexport interface MatrixChartProps extends ChartRootProps {\n data: MatrixChartData\n xLabels?: string[]\n yLabels?: string[]\n domain?: [number, number]\n colors?: MantineColor[]\n cellSize?: number\n gap?: number\n cellRadius?: number\n withTooltip?: boolean\n getTooltipLabel?: (cell: MatrixChartCell) => VNodeChild\n tooltipProps?: ChartOptionProps\n getCellProps?: (cell: MatrixChartCell) => Record<string, unknown>\n yLabelsWidth?: number\n xLabelsHeight?: number\n xLabelsPosition?: 'top' | 'bottom'\n fontSize?: number\n emptyColor?: MantineColor\n withLegend?: boolean\n legendLabels?: [string, string]\n withXLabels?: boolean\n withYLabels?: boolean\n xLabelsRotation?: number\n}\n\nexport interface CandlestickChartDataKeys {\n open: string\n high: string\n low: string\n close: string\n}\nexport interface CandlestickChartLabels {\n open: string\n high: string\n low: string\n close: string\n}\nexport interface CandlestickChartProps extends GridChartBaseProps {\n dataKeys?: CandlestickChartDataKeys\n labels?: Partial<CandlestickChartLabels>\n upColor?: MantineColor\n downColor?: MantineColor\n maxCandleWidth?: number\n candleStrokeWidth?: number\n composedChartProps?: ChartOptionProps\n}\n\nexport interface BarsListBarData {\n name: string\n value: number\n color?: MantineColor\n textColor?: MantineColor\n variant?: 'light' | 'filled'\n}\nexport interface BarsListProps extends ChartRootProps {\n data: BarsListBarData[]\n valueFormatter?: (value: number) => string\n barsLabel?: string\n valueLabel?: string\n getBarProps?: (data: BarsListBarData) => HTMLAttributes\n renderBar?: (data: BarsListBarData, defaultBar: VNodeChild) => VNodeChild\n barGap?: string | number\n minBarSize?: string | number\n barHeight?: string | number\n barColor?: MantineColor\n barTextColor?: MantineColor\n autoContrast?: boolean\n}\n\ntype PublicComponent<P> = DefineComponent<P>\nexport const AreaChart = createChartComponent('AreaChart', (p) =>\n cartesianOption(p, 'area'),\n) as PublicComponent<AreaChartProps>\nexport const BarChart = createChartComponent('BarChart', (p) =>\n cartesianOption(p, 'bar'),\n) as PublicComponent<BarChartProps>\nexport const LineChart = createChartComponent('LineChart', (p) =>\n cartesianOption(p, 'line'),\n) as PublicComponent<LineChartProps>\nexport const CompositeChart = createChartComponent('CompositeChart', (p) =>\n cartesianOption(p, 'composite'),\n) as PublicComponent<CompositeChartProps>\nexport const PieChart = createChartComponent('PieChart', (p) =>\n radialOption(p),\n) as PublicComponent<PieChartProps>\nexport const DonutChart = createChartComponent('DonutChart', (p) =>\n radialOption(p, true),\n) as PublicComponent<DonutChartProps>\nexport const ScatterChart = createChartComponent('ScatterChart', (p) =>\n scatterOption(p),\n) as PublicComponent<ScatterChartProps>\nexport const BubbleChart = createChartComponent('BubbleChart', (p) =>\n scatterOption(p, true),\n) as PublicComponent<BubbleChartProps>\nexport const RadarChart = createChartComponent(\n 'RadarChart',\n radarOption,\n) as PublicComponent<RadarChartProps>\nexport const RadialBarChart = createChartComponent(\n 'RadialBarChart',\n radialBarOption,\n) as PublicComponent<RadialBarChartProps>\nexport const FunnelChart = createChartComponent('FunnelChart', (p) =>\n simpleOption('funnel', p),\n) as PublicComponent<FunnelChartProps>\nexport const Treemap = createChartComponent('Treemap', (p) =>\n simpleOption('treemap', p),\n) as PublicComponent<TreemapProps>\nexport const SankeyChart = createChartComponent('SankeyChart', (p) =>\n simpleOption('sankey', p),\n) as PublicComponent<SankeyChartProps>\nexport const Sparkline = createChartComponent(\n 'Sparkline',\n sparklineOption,\n) as PublicComponent<SparklineProps>\nexport const Heatmap = createChartComponent(\n 'Heatmap',\n heatmapOption,\n) as PublicComponent<HeatmapProps>\nexport const BarsList = createChartComponent('BarsList', (p) =>\n cartesianOption(\n {\n ...p,\n dataKey: 'name',\n series: [{ name: 'value', color: p.barColor }],\n orientation: 'vertical',\n withXAxis: false,\n withYAxis: true,\n withTooltip: false,\n maxBarWidth: p.barHeight,\n },\n 'bar',\n ),\n) as PublicComponent<BarsListProps>\nexport const GaugeChart = createChartComponent(\n 'GaugeChart',\n gaugeOption,\n) as PublicComponent<GaugeChartProps>\nexport const WaffleChart = createChartComponent(\n 'WaffleChart',\n waffleOption,\n) as PublicComponent<WaffleChartProps>\nexport const MatrixChart = createChartComponent(\n 'MatrixChart',\n matrixOption,\n) as PublicComponent<MatrixChartProps>\nexport const CandlestickChart = createChartComponent(\n 'CandlestickChart',\n candlestickOption,\n) as PublicComponent<CandlestickChartProps>\n\nexport type AreaChartStylesNames =\n | 'area'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type BarChartStylesNames =\n | 'bar'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type LineChartStylesNames =\n | 'line'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type CompositeChartStylesNames =\n | 'line'\n | 'area'\n | 'bar'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type PieChartStylesNames = 'root' | 'label'\nexport type DonutChartStylesNames = PieChartStylesNames\nexport type ScatterChartStylesNames =\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type BubbleChartStylesNames = ScatterChartStylesNames\nexport type RadarChartStylesNames =\n | 'root'\n | 'container'\n | 'axis'\n | 'grid'\n | 'curve'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type RadialBarChartStylesNames =\n | 'root'\n | 'container'\n | 'label'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type FunnelChartStylesNames =\n | 'root'\n | 'container'\n | 'label'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type TreemapStylesNames = 'root' | 'container'\nexport type SankeyChartStylesNames = 'root' | 'container'\nexport type SparklineStylesNames = 'root'\nexport type HeatmapStylesNames =\n | 'root'\n | 'rect'\n | 'weekdayLabel'\n | 'monthLabel'\n | 'legend'\n | 'legendLabel'\n | 'legendRect'\nexport type BarsListStylesNames = 'root' | 'bar' | 'barLabel' | 'barValue' | 'labelsRow'\nexport type GaugeChartStylesNames = 'root' | 'track' | 'section' | 'needle' | 'label'\nexport type WaffleChartStylesNames =\n | 'root'\n | 'grid'\n | 'cell'\n | 'legend'\n | 'legendItem'\n | 'legendSwatch'\n | 'legendLabel'\nexport type MatrixChartStylesNames =\n | 'root'\n | 'cell'\n | 'xLabel'\n | 'yLabel'\n | 'legend'\n | 'legendLabel'\n | 'legendRect'\nexport type CandlestickChartStylesNames = 'candle' | BaseChartStylesNames | ChartTooltipStylesNames\n\nexport type ChartTooltipStylesNames =\n | 'tooltip'\n | 'tooltipItem'\n | 'tooltipItemBody'\n | 'tooltipItemColor'\n | 'tooltipItemName'\n | 'tooltipItemData'\n | 'tooltipLabel'\n | 'tooltipBody'\nexport type ChartLegendStylesNames = 'legendItem' | 'legendItemColor' | 'legendItemName' | 'legend'\nexport type ChartCssVariables = Record<string, string>\n","import { computed, defineComponent, h, type PropType, type SlotsType, type VNodeChild } from 'vue'\nimport type { ChartRenderable, ChartSeries, ChartTooltipPayload } from '../types'\nimport { resolveColor } from '../internal/colors'\n\nexport interface ChartTooltipProps {\n label?: ChartRenderable\n payload?: readonly ChartTooltipPayload[]\n unit?: string\n type?: 'area' | 'radial' | 'scatter'\n segmentId?: string\n series?: ChartSeries[]\n valueFormatter?: (value: number) => ChartRenderable\n showColor?: boolean\n}\n\nexport interface ChartTooltipSlots {\n label?: () => VNodeChild\n valueFormatter?: (input: { value: number; item: ChartTooltipPayload }) => VNodeChild\n}\n\nexport const ChartTooltip = defineComponent({\n name: 'MantineChartTooltip',\n slots: Object as SlotsType<ChartTooltipSlots>,\n props: {\n label: null,\n payload: Array as PropType<readonly ChartTooltipPayload[]>,\n unit: String,\n type: { type: String as PropType<ChartTooltipProps['type']>, default: 'area' },\n segmentId: String,\n series: Array as PropType<ChartSeries[]>,\n valueFormatter: Function as PropType<(value: number) => ChartRenderable>,\n showColor: { type: Boolean, default: true },\n },\n setup(props, { slots }) {\n const labels = computed(() =>\n Object.fromEntries((props.series ?? []).map((item) => [item.name, item.label ?? item.name])),\n )\n return () => {\n const label = props.label !== undefined ? props.label : slots.label?.()\n const payload = props.segmentId\n ? props.payload?.filter(\n (item) => item.name === props.segmentId || item.dataKey === props.segmentId,\n )\n : props.payload\n if (!payload?.length) return null\n return h('div', { class: 'mantine-ChartTooltip-tooltip', 'data-type': props.type }, [\n label != null ? h('div', { class: 'mantine-ChartTooltip-tooltipLabel' }, [label]) : null,\n h(\n 'div',\n { class: 'mantine-ChartTooltip-tooltipBody' },\n payload.map((item) =>\n h('div', { class: 'mantine-ChartTooltip-tooltipItem' }, [\n h('div', { class: 'mantine-ChartTooltip-tooltipItemBody' }, [\n props.showColor\n ? h('span', {\n class: 'mantine-ChartTooltip-tooltipItemColor',\n style: { background: resolveColor(item.color) },\n })\n : null,\n h(\n 'span',\n { class: 'mantine-ChartTooltip-tooltipItemName' },\n labels.value[item.name ?? ''] ?? item.name,\n ),\n ]),\n h('span', { class: 'mantine-ChartTooltip-tooltipItemData' }, [\n props.valueFormatter\n ? props.valueFormatter(Number(item.value))\n : (slots.valueFormatter?.({ value: Number(item.value), item }) ??\n (item.value == null ? '' : String(item.value))),\n props.unit ?? item.unit ?? '',\n ]),\n ]),\n ),\n ),\n ])\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\nimport type { ChartSeries } from '../types'\nimport { resolveColor } from '../internal/colors'\n\nexport interface ChartLegendPayload {\n dataKey?: string\n name?: string\n color?: string\n [key: string]: unknown\n}\nexport interface ChartLegendProps {\n payload?: readonly ChartLegendPayload[]\n onHighlight: (area: string | null) => void\n legendPosition: 'top' | 'bottom' | 'middle'\n series?: ChartSeries[]\n showColor?: boolean\n centered?: boolean\n}\n\nexport const ChartLegend = defineComponent({\n name: 'MantineChartLegend',\n props: {\n payload: Array as PropType<readonly ChartLegendPayload[]>,\n onHighlight: { type: Function as PropType<(area: string | null) => void>, required: true },\n legendPosition: {\n type: String as PropType<ChartLegendProps['legendPosition']>,\n required: true,\n },\n series: Array as PropType<ChartSeries[]>,\n showColor: { type: Boolean, default: true },\n centered: Boolean,\n },\n setup(props) {\n return () =>\n h(\n 'div',\n {\n class: 'mantine-ChartLegend-legend',\n 'data-position': props.legendPosition,\n 'data-centered': props.centered || undefined,\n onMouseleave: () => props.onHighlight(null),\n },\n props.payload?.map((item) => {\n const key = item.dataKey ?? item.name ?? ''\n const label = props.series?.find((s) => s.name === key)?.label ?? key\n return h(\n 'div',\n { class: 'mantine-ChartLegend-legendItem', onMouseenter: () => props.onHighlight(key) },\n [\n props.showColor\n ? h('span', {\n class: 'mantine-ChartLegend-legendItemColor',\n style: { background: resolveColor(item.color) },\n })\n : null,\n h('span', { class: 'mantine-ChartLegend-legendItemName' }, label),\n ],\n )\n }),\n )\n },\n})\n","import type { ChartSeries } from '../../types'\nexport function getSeriesLabels(series: ChartSeries[] | undefined): Record<string, string> {\n return Object.fromEntries((series ?? []).map((item) => [item.name, item.label ?? item.name]))\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/internal/echarts.ts","../src/internal/component.ts","../src/internal/colors.ts","../src/internal/options.ts","../src/charts.ts","../src/ChartTooltip/ChartTooltip.ts","../src/ChartLegend/ChartLegend.ts","../src/utils/get-series-labels/get-series-labels.ts"],"sourcesContent":["import { use } from 'echarts/core'\nimport {\n BarChart as EBarChart,\n CandlestickChart as ECandlestickChart,\n EffectScatterChart,\n FunnelChart as EFunnelChart,\n GaugeChart,\n GraphChart,\n HeatmapChart as EHeatmapChart,\n LineChart as ELineChart,\n PieChart as EPieChart,\n RadarChart as ERadarChart,\n SankeyChart as ESankeyChart,\n ScatterChart as EScatterChart,\n TreemapChart as ETreemapChart,\n} from 'echarts/charts'\nimport {\n AriaComponent,\n CalendarComponent,\n DatasetComponent,\n DataZoomComponent,\n GraphicComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n MarkAreaComponent,\n MarkPointComponent,\n PolarComponent,\n RadarComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n TransformComponent,\n VisualMapComponent,\n} from 'echarts/components'\nimport { CanvasRenderer, SVGRenderer } from 'echarts/renderers'\n\nlet registered = false\n\nexport function registerECharts(): void {\n if (registered) {\n return\n }\n\n use([\n EBarChart,\n ECandlestickChart,\n EffectScatterChart,\n EFunnelChart,\n GaugeChart,\n GraphChart,\n EHeatmapChart,\n ELineChart,\n EPieChart,\n ERadarChart,\n ESankeyChart,\n EScatterChart,\n ETreemapChart,\n AriaComponent,\n CalendarComponent,\n DatasetComponent,\n DataZoomComponent,\n GraphicComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n MarkAreaComponent,\n MarkPointComponent,\n PolarComponent,\n RadarComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n TransformComponent,\n VisualMapComponent,\n CanvasRenderer,\n SVGRenderer,\n ])\n\n registered = true\n}\n","import { computed, defineComponent, h, ref, type Component, type PropType } from 'vue'\nimport type { EChartsOption } from 'echarts'\nimport VChart from 'vue-echarts'\nimport { registerECharts } from './echarts'\n\nregisterECharts()\n\nexport type OptionBuilder = (props: Record<string, unknown>) => EChartsOption\n\nexport function normalizeChartProps(props: Record<string, unknown>) {\n return Object.fromEntries(\n Object.entries(props).map(([key, value]) => [\n key.replace(/-([a-z])/g, (_match, letter: string) => letter.toUpperCase()),\n value,\n ]),\n )\n}\n\nexport function createChartComponent(name: string, buildOption: OptionBuilder): Component {\n return defineComponent({\n name: `Mantine${name}`,\n inheritAttrs: false,\n props: {\n option: Object as PropType<EChartsOption>,\n height: { type: [Number, String], default: 300 },\n width: { type: [Number, String], default: '100%' },\n loading: Boolean,\n autoresize: { type: Boolean, default: true },\n renderer: { type: String as PropType<'canvas' | 'svg'>, default: 'canvas' },\n initOptions: Object as PropType<Record<string, unknown>>,\n },\n emits: ['click', 'dblclick', 'mouseover', 'mouseout', 'legendselectchanged', 'datazoom'],\n setup(props, { attrs, emit, expose }) {\n const chart = ref<InstanceType<typeof VChart>>()\n const option = computed(() => ({\n ...buildOption(normalizeChartProps(attrs)),\n ...props.option,\n }))\n expose({\n getEchartsInstance: () => chart.value?.chart,\n resize: () => chart.value?.resize(),\n setOption: (next: EChartsOption) => chart.value?.setOption(next),\n })\n const size = (value: string | number) => (typeof value === 'number' ? `${value}px` : value)\n const rootAttributes = computed(() =>\n Object.fromEntries(\n Object.entries(attrs).filter(\n ([key]) =>\n ['id', 'dir', 'role', 'tabindex', 'title'].includes(key) ||\n key.startsWith('aria-') ||\n (key.startsWith('data-') && key !== 'data'),\n ),\n ),\n )\n return () =>\n h(\n 'div',\n {\n ...rootAttributes.value,\n class: ['mantine-Chart-root', `mantine-${name}-root`, attrs.class],\n style: [{ width: size(props.width), height: size(props.height) }, attrs.style],\n },\n [\n h(VChart, {\n ref: chart,\n option: option.value,\n autoresize: props.autoresize,\n loading: props.loading,\n initOptions: { ...props.initOptions, renderer: props.renderer },\n class: 'mantine-Chart-container',\n onClick: (event: unknown) => emit('click', event),\n onDblclick: (event: unknown) => emit('dblclick', event),\n onMouseover: (event: unknown) => emit('mouseover', event),\n onMouseout: (event: unknown) => emit('mouseout', event),\n onLegendselectchanged: (event: unknown) => emit('legendselectchanged', event),\n onDatazoom: (event: unknown) => emit('datazoom', event),\n }),\n ],\n )\n },\n })\n}\n","const shadeMap: Record<string, string[]> = {\n blue: [\n '#e7f5ff',\n '#d0ebff',\n '#a5d8ff',\n '#74c0fc',\n '#4dabf7',\n '#339af0',\n '#228be6',\n '#1c7ed6',\n '#1971c2',\n '#1864ab',\n ],\n cyan: [\n '#e3fafc',\n '#c5f6fa',\n '#99e9f2',\n '#66d9e8',\n '#3bc9db',\n '#22b8cf',\n '#15aabf',\n '#1098ad',\n '#0c8599',\n '#0b7285',\n ],\n green: [\n '#ebfbee',\n '#d3f9d8',\n '#b2f2bb',\n '#8ce99a',\n '#69db7c',\n '#51cf66',\n '#40c057',\n '#37b24d',\n '#2f9e44',\n '#2b8a3e',\n ],\n grape: [\n '#f8f0fc',\n '#f3d9fa',\n '#eebefa',\n '#e599f7',\n '#da77f2',\n '#cc5de8',\n '#be4bdb',\n '#ae3ec9',\n '#9c36b5',\n '#862e9c',\n ],\n gray: [\n '#f8f9fa',\n '#f1f3f5',\n '#e9ecef',\n '#dee2e6',\n '#ced4da',\n '#adb5bd',\n '#868e96',\n '#495057',\n '#343a40',\n '#212529',\n ],\n orange: [\n '#fff4e6',\n '#ffe8cc',\n '#ffd8a8',\n '#ffc078',\n '#ffa94d',\n '#ff922b',\n '#fd7e14',\n '#f76707',\n '#e8590c',\n '#d9480f',\n ],\n pink: [\n '#fff0f6',\n '#ffdeeb',\n '#fcc2d7',\n '#faa2c1',\n '#f783ac',\n '#f06595',\n '#e64980',\n '#d6336c',\n '#c2255c',\n '#a61e4d',\n ],\n red: [\n '#fff5f5',\n '#ffe3e3',\n '#ffc9c9',\n '#ffa8a8',\n '#ff8787',\n '#ff6b6b',\n '#fa5252',\n '#f03e3e',\n '#e03131',\n '#c92a2a',\n ],\n teal: [\n '#e6fcf5',\n '#c3fae8',\n '#96f2d7',\n '#63e6be',\n '#38d9a9',\n '#20c997',\n '#12b886',\n '#0ca678',\n '#099268',\n '#087f5b',\n ],\n violet: [\n '#f3f0ff',\n '#e5dbff',\n '#d0bfff',\n '#b197fc',\n '#9775fa',\n '#845ef7',\n '#7950f2',\n '#7048e8',\n '#6741d9',\n '#5f3dc4',\n ],\n yellow: [\n '#fff9db',\n '#fff3bf',\n '#ffec99',\n '#ffe066',\n '#ffd43b',\n '#fcc419',\n '#fab005',\n '#f59f00',\n '#f08c00',\n '#e67700',\n ],\n}\n\nexport function resolveColor(color: unknown, fallback = '#228be6'): string {\n if (typeof color !== 'string' || !color) return fallback\n const [name, rawShade] = color.split('.')\n const shade = Number(rawShade ?? 6)\n return shadeMap[name]?.[Number.isInteger(shade) ? shade : 6] ?? color\n}\n","import type { EChartsOption, SeriesOption } from 'echarts'\nimport type {\n ChartDataItem,\n ChartReferenceAreaProps,\n ChartReferenceDotProps,\n ChartReferenceLineProps,\n ChartSeries,\n} from '../types'\nimport { resolveColor } from './colors'\n\ntype Props = Record<string, unknown>\n\nconst bool = (value: unknown, fallback: boolean) => (typeof value === 'boolean' ? value : fallback)\nconst num = (value: unknown, fallback: number) => (typeof value === 'number' ? value : fallback)\nconst obj = (value: unknown) => (value && typeof value === 'object' ? value : {})\nconst list = <T>(value: unknown): T[] => (Array.isArray(value) ? (value as T[]) : [])\nconst gridLabelBounds = {\n outerBoundsMode: 'same' as const,\n outerBoundsContain: 'axisLabel' as const,\n}\nconst formatter = (props: Props) =>\n typeof props.valueFormatter === 'function'\n ? (props.valueFormatter as (value: number) => string)\n : undefined\n\nfunction tooltip(props: Props): EChartsOption['tooltip'] {\n if (!bool(props.withTooltip, true)) return { show: false }\n const format = formatter(props)\n return {\n trigger: 'axis',\n transitionDuration: num(props.tooltipAnimationDuration, 0) / 1000,\n valueFormatter: format ? (value) => format(Number(value)) : undefined,\n ...obj(props.tooltipProps),\n }\n}\n\nfunction markLine(referenceLines: ChartReferenceLineProps[] | undefined) {\n if (!referenceLines?.length) return undefined\n return {\n silent: true,\n symbol: 'none',\n data: referenceLines.map((line) => ({\n xAxis: line.x,\n yAxis: line.y,\n label: typeof line.label === 'string' ? { formatter: line.label } : line.label,\n lineStyle: {\n color: resolveColor(line.color, '#868e96'),\n type: line.strokeDasharray ? 'dashed' : 'solid',\n },\n })),\n }\n}\n\nfunction markArea(referenceAreas: ChartReferenceAreaProps[] | undefined) {\n if (!referenceAreas?.length) return undefined\n return {\n silent: true,\n data: referenceAreas.map((area) => [\n {\n xAxis: area.x1,\n yAxis: area.y1,\n itemStyle: { color: resolveColor(area.color, '#868e96'), opacity: 0.15 },\n label: typeof area.label === 'string' ? { formatter: area.label } : area.label,\n },\n { xAxis: area.x2, yAxis: area.y2 },\n ]),\n }\n}\n\nfunction markPoint(referenceDots: ChartReferenceDotProps[] | undefined) {\n if (!referenceDots?.length) return undefined\n return {\n silent: true,\n data: referenceDots.map((dot) => ({\n coord: [dot.x, dot.y],\n symbolSize: (dot.r ?? 6) * 2,\n itemStyle: { color: resolveColor(dot.color, '#868e96') },\n label: typeof dot.label === 'string' ? { formatter: dot.label } : dot.label,\n })),\n }\n}\n\nexport function cartesianOption(\n props: Props,\n kind: 'line' | 'area' | 'bar' | 'composite',\n): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<\n ChartSeries & {\n type?: string\n stackId?: string\n strokeDasharray?: string | number\n curveType?: string\n }\n >(props.series)\n const dataKey = String(props.dataKey ?? 'name')\n const horizontal = props.orientation !== 'vertical'\n const chartType = String(props.type ?? 'default')\n const category = data.map((item) => item[dataKey] as string | number)\n const commonAxis = { axisLabel: { color: resolveColor(props.textColor, '#868e96') } }\n const categoryAxis = { type: 'category' as const, data: category, ...commonAxis }\n const valueAxis = { type: 'value' as const, name: props.yAxisLabel as string, ...commonAxis }\n const mapped = series.map((item, index) => {\n const itemKind = kind === 'composite' ? (item.type ?? 'line') : kind === 'area' ? 'line' : kind\n const color = resolveColor(item.color, resolveColor(`blue.${6 + (index % 3)}`))\n const stack =\n chartType === 'stacked' || chartType === 'percent' || chartType === 'stream'\n ? 'stack'\n : item.stackId\n const base = {\n name: item.label ?? item.name,\n data: data.map((entry) => entry[item.name] as number | null),\n yAxisIndex: item.yAxisId ? 1 : 0,\n stack,\n markLine:\n index === 0\n ? markLine(props.referenceLines as ChartReferenceLineProps[] | undefined)\n : undefined,\n markArea:\n index === 0\n ? markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined)\n : undefined,\n markPoint:\n index === 0\n ? markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined)\n : undefined,\n }\n if (itemKind === 'bar') {\n return {\n ...base,\n type: 'bar',\n barMaxWidth: props.maxBarWidth as number,\n barMinHeight: num(props.minBarSize, 0),\n itemStyle: { color, opacity: num(props.fillOpacity, 1) },\n label: {\n show: bool(props.withBarValueLabel, false),\n position: horizontal ? 'top' : 'right',\n },\n }\n }\n return {\n ...base,\n type: 'line',\n smooth: !['linear', 'step', 'stepBefore', 'stepAfter'].includes(\n String(props.curveType ?? item.curveType ?? 'monotone'),\n ),\n step: String(props.curveType).startsWith('step') ? 'middle' : false,\n connectNulls: bool(props.connectNulls, true),\n showSymbol: bool(props.withDots, true),\n symbolSize: 6,\n lineStyle: {\n color,\n width: chartType === 'stream' ? 0 : num(props.strokeWidth, 2),\n type: item.strokeDasharray ? 'dashed' : 'solid',\n },\n itemStyle: { color, opacity: num(props.fillOpacity, 1) },\n areaStyle: itemKind === 'area' ? { color, opacity: num(props.fillOpacity, 0.2) } : undefined,\n label: { show: bool(props.withPointLabels, false), position: 'top' },\n }\n }) as unknown as SeriesOption[]\n\n if (kind === 'area' && chartType === 'stream') {\n mapped.unshift({\n type: 'line',\n stack: 'stack',\n silent: true,\n symbol: 'none',\n data: data.map(\n (entry) =>\n -series.reduce((total, item) => {\n const value = entry[item.name]\n return total + (typeof value === 'number' && Number.isFinite(value) ? value : 0)\n }, 0) / 2,\n ),\n lineStyle: { opacity: 0 },\n areaStyle: { opacity: 0 },\n tooltip: { show: false },\n } as SeriesOption)\n }\n\n return {\n animationDurationUpdate: num(props.tooltipAnimationDuration, 0),\n color: series.map((item) => resolveColor(item.color)),\n grid: {\n left: 48,\n right: bool(props.withRightYAxis, false) ? 48 : 16,\n top: bool(props.withLegend, false) ? 44 : 16,\n bottom: 38,\n ...gridLabelBounds,\n ...obj(props.gridProps),\n },\n legend: { show: bool(props.withLegend, false), ...obj(props.legendProps) },\n tooltip: tooltip(props),\n xAxis: horizontal\n ? {\n ...categoryAxis,\n show: bool(props.withXAxis, true),\n name: props.xAxisLabel as string,\n ...obj(props.xAxisProps),\n }\n : { ...valueAxis, show: bool(props.withXAxis, true), ...obj(props.xAxisProps) },\n yAxis: horizontal\n ? [\n {\n ...valueAxis,\n show: chartType === 'stream' ? false : bool(props.withYAxis, true),\n ...obj(props.yAxisProps),\n },\n {\n ...valueAxis,\n show: bool(props.withRightYAxis, false),\n position: 'right',\n name: props.rightYAxisLabel as string,\n ...obj(props.rightYAxisProps),\n },\n ]\n : { ...categoryAxis, show: bool(props.withYAxis, true), ...obj(props.yAxisProps) },\n series: mapped,\n }\n}\n\nexport function radialOption(props: Props, donut = false): EChartsOption {\n const data = list<{ name: string; value: number; color?: string }>(props.data)\n const resolvedData = data.map(({ color, ...item }) => {\n const resolvedColor = resolveColor(color)\n return { ...item, itemStyle: { color: resolvedColor } }\n })\n const withLabels = bool(props.withLabels, false)\n const withLegend = bool(props.withLegend, false)\n const labelsPosition = props.labelsPosition === 'inside' ? 'inside' : 'outside'\n const withOutsideLabels = withLabels && labelsPosition === 'outside'\n const outerRadius = withOutsideLabels ? '65%' : '75%'\n const valueFormat = formatter(props)\n const labelFormatter =\n props.labelsType === 'percent'\n ? '{d}%'\n : valueFormat\n ? (params: { value?: unknown }) => valueFormat(Number(params.value))\n : '{c}'\n\n return {\n color: resolvedData.map((item) => item.itemStyle.color),\n legend: {\n show: withLegend,\n type: 'scroll',\n left: 'center',\n bottom: 8,\n data: resolvedData.map((item) => ({\n name: item.name,\n itemStyle: { color: item.itemStyle.color },\n })),\n ...obj(props.legendProps),\n },\n tooltip: { trigger: 'item', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n series: [\n {\n type: 'pie',\n left: 0,\n right: 0,\n top: 0,\n bottom: withLegend ? 56 : 0,\n center: ['50%', '50%'],\n radius: donut ? [`${num(props.thickness, 40)}%`, outerRadius] : ['0%', outerRadius],\n startAngle: num(props.startAngle, 90),\n endAngle: typeof props.endAngle === 'number' ? props.endAngle : undefined,\n minAngle: num(props.minAngle, 0),\n padAngle: num(props.paddingAngle, 0),\n avoidLabelOverlap: true,\n roseType:\n props.type === 'pie'\n ? undefined\n : props.type === 'donut'\n ? undefined\n : (props.type as 'radius' | 'area'),\n label: {\n show: withLabels,\n position: labelsPosition,\n formatter: labelFormatter,\n ...(withOutsideLabels ? { bleedMargin: 5, edgeDistance: '8%' } : {}),\n },\n labelLine: { show: withLabels && bool(props.withLabelsLine, false) },\n labelLayout: { hideOverlap: true },\n data: resolvedData,\n ...obj(props.pieProps),\n },\n ],\n graphic: props.chartLabel\n ? [\n {\n type: 'text',\n left: 'center',\n top: 'middle',\n style: {\n text: String(props.chartLabel),\n fill: resolveColor(props.chartLabelColor, '#212529'),\n fontSize: num(props.chartLabelFontSize, 18),\n },\n },\n ]\n : undefined,\n }\n}\n\nexport function scatterOption(props: Props, bubble = false): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<ChartSeries>(props.series)\n const xKey = String(props.dataKey ?? props.xAxisKey ?? 'x')\n const yKey = String(props.yAxisKey ?? 'y')\n const zKey = String(props.zAxisKey ?? 'z')\n return {\n grid: { ...gridLabelBounds, ...obj(props.gridProps) },\n legend: { show: bool(props.withLegend, false), ...obj(props.legendProps) },\n tooltip: { trigger: 'item', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n xAxis: { type: 'value', show: bool(props.withXAxis, true), ...obj(props.xAxisProps) },\n yAxis: props.withRightYAxis\n ? [\n {\n type: 'value',\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n {\n type: 'value',\n show: true,\n position: 'right',\n name: props.rightYAxisLabel as string,\n ...obj(props.rightYAxisProps),\n },\n ]\n : {\n type: 'value',\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n series: (series.length\n ? series\n : [{ name: String(props.name ?? 'value'), color: props.color as string }]\n ).map((item, index) => ({\n type: 'scatter',\n name: item.label ?? item.name,\n yAxisIndex: item.yAxisId === 'right' ? 1 : 0,\n data: data\n .filter((entry) => !entry.name || entry.name === item.name)\n .map((entry) => [entry[xKey], entry[yKey], entry[zKey], entry]),\n symbolSize: bubble\n ? (value: unknown[]) => Math.max(4, Math.sqrt(Number(value[2] ?? 1)) * num(props.range, 4))\n : num(props.size, 10),\n itemStyle: { color: resolveColor(item.color) },\n markLine:\n index === 0\n ? markLine(props.referenceLines as ChartReferenceLineProps[] | undefined)\n : undefined,\n markArea:\n index === 0\n ? markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined)\n : undefined,\n markPoint:\n index === 0\n ? markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined)\n : undefined,\n })) as unknown as SeriesOption[],\n }\n}\n\nexport function gaugeOption(props: Props): EChartsOption {\n const min = num(props.min, 0)\n const max = num(props.max, 100)\n const value = num(props.value, min)\n const sections = list<{ value: number; color: string }>(props.sections)\n const range = max - min || 1\n const axisColors: [number, string][] = sections.length\n ? sections.map((section) => [\n Math.max(0, Math.min(1, (section.value - min) / range)),\n resolveColor(section.color),\n ])\n : [[1, resolveColor(props.trackColor, '#e9ecef')]]\n const format =\n typeof props.valueFormatter === 'function'\n ? (props.valueFormatter as (input: number) => string)\n : (input: number) => String(input)\n\n return {\n series: [\n {\n type: 'gauge',\n min,\n max,\n startAngle: 90 - num(props.startAngle, -120),\n endAngle: 90 - num(props.endAngle, 120),\n radius: '90%',\n axisLine: {\n roundCap: bool(props.roundCaps, false),\n lineStyle: {\n width: num(props.thickness, 12),\n color: axisColors,\n },\n },\n progress: sections.length\n ? { show: false }\n : {\n show: true,\n width: num(props.thickness, 12),\n roundCap: bool(props.roundCaps, false),\n itemStyle: { color: resolveColor(props.filledColor) },\n },\n pointer:\n typeof props.target === 'number'\n ? {\n show: true,\n width: num(props.targetSize, 2),\n length: '85%',\n itemStyle: { color: resolveColor(props.targetColor, '#212529') },\n }\n : { show: false },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n anchor: { show: false },\n title: { show: false },\n detail: {\n show: props.label !== null,\n formatter: typeof props.label === 'string' ? props.label : format(value),\n color: 'inherit',\n },\n data: [{ value: typeof props.target === 'number' ? props.target : value }],\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nfunction normalizeSegmentValue(value: number) {\n return Number.isFinite(value) ? Math.max(0, value) : 0\n}\n\nexport function waffleOption(props: Props): EChartsOption {\n const rows = Math.max(1, num(props.rows, 10))\n const columns = Math.max(1, num(props.columns, 10))\n const cellCount = rows * columns\n const data = list<{ name: string; value: number; color: string; key?: string | number }>(\n props.data,\n )\n const values = data.map((item) => normalizeSegmentValue(item.value))\n const sum = values.reduce((total, value) => total + value, 0)\n const denominator = props.total == null ? sum : Math.max(num(props.total, sum), sum)\n const filledTarget = denominator ? Math.round((sum / denominator) * cellCount) : 0\n const allocated = values.map((value) => (sum ? Math.floor((value / sum) * filledTarget) : 0))\n let remainder = filledTarget - allocated.reduce((total, value) => total + value, 0)\n const fractions = values\n .map((value, index) => ({\n index,\n fraction: sum ? (value / sum) * filledTarget - allocated[index] : 0,\n }))\n .sort((a, b) => b.fraction - a.fraction)\n\n for (let index = 0; index < fractions.length && remainder > 0; index += 1, remainder -= 1) {\n allocated[fractions[index].index] += 1\n }\n\n const cells = data.flatMap((_, segmentIndex) =>\n Array.from({ length: allocated[segmentIndex] }, () => segmentIndex),\n )\n while (cells.length < cellCount) cells.push(-1)\n\n const direction = String(props.fillDirection ?? 'left-to-right')\n const points = cells.map((segmentIndex, index) => {\n let x = index % columns\n let y = Math.floor(index / columns)\n if (direction === 'right-to-left') x = columns - 1 - x\n if (direction === 'top-to-bottom' || direction === 'bottom-to-top') {\n x = Math.floor(index / rows)\n y = index % rows\n if (direction === 'bottom-to-top') y = rows - 1 - y\n }\n const item = data[segmentIndex]\n return {\n value: [x, y, segmentIndex],\n name: item?.name,\n itemStyle: {\n color: item ? resolveColor(item.color) : resolveColor(props.emptyColor, '#e9ecef'),\n },\n }\n })\n\n return {\n grid: { left: 0, right: 0, top: 0, bottom: bool(props.withLegend, true) ? 36 : 0 },\n xAxis: { type: 'value', min: -0.5, max: columns - 0.5, show: false },\n yAxis: { type: 'value', min: -0.5, max: rows - 0.5, inverse: true, show: false },\n legend: {\n show: bool(props.withLegend, true),\n data: data.map((item) => item.name),\n top: props.legendPosition === 'top' ? 0 : undefined,\n bottom: props.legendPosition === 'bottom' ? 0 : undefined,\n left: props.legendPosition === 'left' ? 0 : undefined,\n right: props.legendPosition === 'right' ? 0 : undefined,\n },\n tooltip: {\n show: bool(props.withTooltip, false),\n formatter: (params: any) => {\n const item = data[params.value?.[2]]\n if (!item) return ''\n return typeof props.getTooltipLabel === 'function'\n ? String(\n (props.getTooltipLabel as (input: Record<string, unknown>) => unknown)({\n ...item,\n count: allocated[params.value[2]],\n }),\n )\n : `${item.name}: ${item.value}`\n },\n },\n series: [\n { type: 'scatter', symbol: 'roundRect', symbolSize: num(props.cellSize, 20), data: points },\n ],\n }\n}\n\nexport function matrixOption(props: Props): EChartsOption {\n const data = list<{ x: string; y: string; value: number | null }>(props.data)\n const xLabels = list<string>(props.xLabels).length\n ? list<string>(props.xLabels)\n : [...new Set(data.map((cell) => cell.x))]\n const yLabels = list<string>(props.yLabels).length\n ? list<string>(props.yLabels)\n : [...new Set(data.map((cell) => cell.y))]\n const values = data.flatMap((cell) => (typeof cell.value === 'number' ? [cell.value] : []))\n const domain =\n (props.domain as [number, number] | undefined) ??\n ([Math.min(0, ...values), Math.max(1, ...values)] as [number, number])\n const colors = list<string>(props.colors).length\n ? list<string>(props.colors).map((color) => resolveColor(color))\n : ['#ebfbee', '#8ce99a', '#40c057', '#2b8a3e']\n\n return {\n grid: {\n left: bool(props.withYLabels, false) ? num(props.yLabelsWidth, 60) : 0,\n right: 0,\n top:\n props.xLabelsPosition === 'top' && bool(props.withXLabels, false)\n ? num(props.xLabelsHeight, 60)\n : 0,\n bottom:\n props.xLabelsPosition !== 'top' && bool(props.withXLabels, false)\n ? num(props.xLabelsHeight, 60)\n : bool(props.withLegend, false)\n ? 30\n : 0,\n },\n xAxis: {\n type: 'category',\n data: xLabels,\n position: props.xLabelsPosition === 'top' ? 'top' : 'bottom',\n show: bool(props.withXLabels, false),\n axisLabel: { rotate: num(props.xLabelsRotation, -90), fontSize: num(props.fontSize, 12) },\n },\n yAxis: {\n type: 'category',\n data: yLabels,\n inverse: true,\n show: bool(props.withYLabels, false),\n axisLabel: { fontSize: num(props.fontSize, 12) },\n },\n visualMap: {\n show: bool(props.withLegend, false),\n min: domain[0],\n max: domain[1],\n inRange: { color: colors },\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n text: (props.legendLabels as string[] | undefined) ?? ['More', 'Less'],\n },\n tooltip: {\n show: bool(props.withTooltip, false) && typeof props.getTooltipLabel === 'function',\n formatter: (params: any) => {\n const cell = data[params.dataIndex]\n return String(\n (props.getTooltipLabel as ((input: typeof cell) => unknown) | undefined)?.(cell) ?? '',\n )\n },\n ...obj(props.tooltipProps),\n },\n series: [\n {\n type: 'heatmap',\n data: data.map((cell) => {\n const extra =\n typeof props.getCellProps === 'function'\n ? (props.getCellProps as (input: typeof cell) => Record<string, unknown>)(cell)\n : {}\n const empty = cell.value === null || !Number.isFinite(cell.value)\n return {\n value: [xLabels.indexOf(cell.x), yLabels.indexOf(cell.y), cell.value, cell],\n ...extra,\n itemStyle: {\n ...(empty && props.emptyColor\n ? { color: resolveColor(props.emptyColor as string) }\n : {}),\n ...obj(extra.itemStyle),\n },\n }\n }),\n itemStyle: {\n borderWidth: num(props.gap, 1),\n borderColor: 'transparent',\n borderRadius: num(props.cellRadius, 2),\n },\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nexport function candlestickOption(props: Props): EChartsOption {\n const data = list<Record<string, unknown>>(props.data)\n const keys = {\n open: 'open',\n high: 'high',\n low: 'low',\n close: 'close',\n ...obj(props.dataKeys),\n } as Record<string, string>\n const dataKey = String(props.dataKey ?? 'date')\n\n return {\n grid: {\n left: 48,\n right: 16,\n top: 16,\n bottom: 38,\n ...gridLabelBounds,\n ...obj(props.gridProps),\n },\n tooltip: { trigger: 'axis', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n xAxis: {\n type: 'category',\n data: data.map((item) => String(item[dataKey] ?? '')),\n show: bool(props.withXAxis, true),\n name: props.xAxisLabel as string,\n ...obj(props.xAxisProps),\n },\n yAxis: {\n type: 'value',\n scale: true,\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n series: [\n {\n type: 'candlestick',\n data: data.map((item) => [\n item[keys.open],\n item[keys.close],\n item[keys.low],\n item[keys.high],\n ]),\n barMaxWidth: props.maxCandleWidth as number,\n itemStyle: {\n color: resolveColor(props.upColor, '#12b886'),\n color0: resolveColor(props.downColor, '#fa5252'),\n borderColor: resolveColor(props.upColor, '#12b886'),\n borderColor0: resolveColor(props.downColor, '#fa5252'),\n borderWidth: num(props.candleStrokeWidth, 1),\n },\n markLine: markLine(props.referenceLines as ChartReferenceLineProps[] | undefined),\n markArea: markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined),\n markPoint: markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined),\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nexport function sparklineOption(props: Props): EChartsOption {\n const data = list<number | null>(props.data)\n const trend = props.trendColors as\n | { positive?: string; negative?: string; neutral?: string }\n | undefined\n const color = trend\n ? resolveColor(\n data.at(-1)! > data[0]!\n ? trend.positive\n : data.at(-1)! < data[0]!\n ? trend.negative\n : trend.neutral,\n )\n : resolveColor(props.color)\n return {\n grid: { left: 0, right: 0, top: 1, bottom: 1 },\n xAxis: { type: 'category', show: false },\n yAxis: { type: 'value', show: false, scale: true },\n series: [\n {\n type: 'line',\n data,\n showSymbol: false,\n connectNulls: bool(props.connectNulls, true),\n smooth: props.curveType !== 'linear',\n lineStyle: { color, width: num(props.strokeWidth, 2) },\n areaStyle: bool(props.withGradient, true)\n ? { color, opacity: num(props.fillOpacity, 0.6) }\n : undefined,\n },\n ],\n }\n}\n\nexport function radarOption(props: Props): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<ChartSeries>(props.series)\n const key = String(props.dataKey ?? 'name')\n const max = num(\n props.maxValue,\n Math.max(1, ...data.flatMap((row) => series.map((s) => Number(row[s.name] ?? 0)))),\n )\n return {\n legend: { show: bool(props.withLegend, false) },\n tooltip: { show: bool(props.withTooltip, true) },\n radar: {\n indicator: data.map((row) => ({ name: String(row[key]), max })),\n shape: props.shape === 'circle' ? 'circle' : 'polygon',\n },\n series: [\n {\n type: 'radar',\n data: series.map((s) => ({\n name: s.label ?? s.name,\n value: data.map((row) => Number(row[s.name] ?? 0)),\n lineStyle: { color: resolveColor(s.color) },\n itemStyle: { color: resolveColor(s.color) },\n areaStyle: bool(props.withPolarGrid, false) ? {} : undefined,\n })),\n },\n ],\n }\n}\n\nexport function simpleOption(type: 'funnel' | 'treemap' | 'sankey', props: Props): EChartsOption {\n const data = list<Record<string, unknown>>(props.data)\n if (type === 'sankey')\n return {\n tooltip: { show: bool(props.withTooltip, true) },\n series: [\n {\n type,\n data: list(props.nodes ?? data),\n links: list(props.links),\n emphasis: { focus: 'adjacency' },\n ...obj(props.sankeyProps),\n },\n ],\n }\n return {\n tooltip: { show: bool(props.withTooltip, true) },\n legend: { show: bool(props.withLegend, false) },\n series: [\n {\n type,\n data: data.map((item) => ({ ...item, itemStyle: { color: resolveColor(item.color) } })),\n ...obj(props[`${type}Props`]),\n },\n ],\n }\n}\n\nexport function radialBarOption(props: Props): EChartsOption {\n const data = list<{ name: string; value: number; color?: string }>(props.data)\n return {\n legend: { show: bool(props.withLegend, false) },\n tooltip: { show: bool(props.withTooltip, true) },\n polar: {},\n angleAxis: { max: num(props.maxValue, 100), show: false },\n radiusAxis: {\n type: 'category',\n data: data.map((i) => i.name),\n show: bool(props.withLabels, true),\n },\n series: [\n {\n type: 'bar',\n coordinateSystem: 'polar',\n roundCap: true,\n data: data.map((i) => ({ value: i.value, itemStyle: { color: resolveColor(i.color) } })),\n },\n ],\n }\n}\n\nexport function heatmapOption(props: Props): EChartsOption {\n const input =\n props.data && typeof props.data === 'object' ? (props.data as Record<string, number>) : {}\n const data = Object.entries(input).map(([date, value]) => [date, value])\n const values = Object.values(input)\n const date = (value: unknown, fallback: string) =>\n value instanceof Date\n ? value.toISOString().slice(0, 10)\n : typeof value === 'string'\n ? value\n : fallback\n const start = date(props.startDate, String(data[0]?.[0] ?? new Date().toISOString().slice(0, 10)))\n const end = date(props.endDate, String(data.at(-1)?.[0] ?? start))\n return {\n tooltip: { show: bool(props.withTooltip, false) },\n visualMap: {\n show: bool(props.withLegend, false),\n min: (props.domain as number[] | undefined)?.[0] ?? Math.min(0, ...values),\n max: (props.domain as number[] | undefined)?.[1] ?? Math.max(1, ...values),\n inRange: {\n color: list<string>(props.colors).length\n ? list<string>(props.colors).map((color) => resolveColor(color))\n : ['#ebfbee', '#2f9e44'],\n },\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n },\n calendar: {\n range: [start, end],\n cellSize: num(props.rectSize, 10) + num(props.gap, 1),\n dayLabel: {\n show: bool(props.withWeekdayLabels, false),\n firstDay: num(props.firstDayOfWeek, 1),\n },\n monthLabel: { show: bool(props.withMonthLabels, false) },\n itemStyle: {\n borderWidth: num(props.gap, 1),\n borderColor: 'transparent',\n borderRadius: num(props.rectRadius, 2),\n },\n },\n series: [{ type: 'heatmap', coordinateSystem: 'calendar', data }],\n }\n}\n","import type { MantineColor } from '@mantine-vue/core'\nimport type { DefineComponent, HTMLAttributes, VNodeChild } from 'vue'\nimport { createChartComponent } from './internal/component'\nimport {\n cartesianOption,\n candlestickOption,\n gaugeOption,\n heatmapOption,\n matrixOption,\n radarOption,\n radialBarOption,\n radialOption,\n scatterOption,\n simpleOption,\n sparklineOption,\n waffleOption,\n} from './internal/options'\nimport type {\n BaseChartStylesNames,\n ChartData,\n ChartOptionProps,\n ChartRootProps,\n ChartSeries,\n GridChartBaseProps,\n MantineChartDotProps,\n} from './types'\n\nexport type LineChartCurveType =\n | 'bump'\n | 'linear'\n | 'natural'\n | 'monotone'\n | 'step'\n | 'stepBefore'\n | 'stepAfter'\nexport type AreaChartCurveType = LineChartCurveType\nexport type CompositeChartCurveType = LineChartCurveType\nexport interface LineChartSeries extends ChartSeries {\n strokeDasharray?: string | number\n curveType?: LineChartCurveType\n}\nexport interface AreaChartSeries extends ChartSeries {\n color: MantineColor\n strokeDasharray?: string | number\n curveType?: AreaChartCurveType\n}\nexport interface BarChartSeries extends ChartSeries {\n stackId?: string\n}\nexport interface CompositeChartSeries extends ChartSeries {\n type: 'line' | 'area' | 'bar'\n strokeDasharray?: string | number\n}\n\nexport interface LineChartProps extends GridChartBaseProps {\n series: LineChartSeries[]\n type?: 'default' | 'gradient'\n gradientStops?: { offset: number; color: MantineColor }[]\n curveType?: LineChartCurveType\n fillOpacity?: number\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n lineChartProps?: ChartOptionProps\n connectNulls?: boolean\n lineProps?: ChartOptionProps | ((series: LineChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n}\nexport interface AreaChartProps extends GridChartBaseProps {\n series: AreaChartSeries[]\n type?: 'default' | 'stacked' | 'percent' | 'split' | 'stream'\n withGradient?: boolean\n curveType?: AreaChartCurveType\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n areaChartProps?: ChartOptionProps\n fillOpacity?: number\n splitColors?: [MantineColor, MantineColor]\n splitOffset?: number\n connectNulls?: boolean\n areaProps?: ChartOptionProps | ((series: AreaChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n}\nexport interface BarChartProps extends GridChartBaseProps {\n series: BarChartSeries[]\n type?: 'default' | 'stacked' | 'percent' | 'waterfall'\n fillOpacity?: number\n cursorFill?: MantineColor\n barChartProps?: ChartOptionProps\n barProps?: ChartOptionProps | ((series: BarChartSeries) => ChartOptionProps)\n withBarValueLabel?: boolean\n valueLabelProps?: ChartOptionProps | ((series: BarChartSeries) => ChartOptionProps)\n minBarSize?: number\n maxBarWidth?: number\n barLabelColor?: MantineColor\n getBarColor?: (value: number, series: BarChartSeries) => MantineColor\n}\nexport interface CompositeChartProps extends Omit<GridChartBaseProps, 'orientation'> {\n series: CompositeChartSeries[]\n curveType?: CompositeChartCurveType\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n connectNulls?: boolean\n lineProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n areaProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n barProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n withBarValueLabel?: boolean\n minBarSize?: number\n maxBarWidth?: number\n composedChartProps?: ChartOptionProps\n}\n\nexport interface PieChartCell {\n name: string\n value: number\n color?: MantineColor\n}\nexport interface PieChartProps extends ChartRootProps {\n data: PieChartCell[]\n withTooltip?: boolean\n withLegend?: boolean\n legendProps?: ChartOptionProps\n withLabels?: boolean\n withLabelsLine?: boolean\n labelsPosition?: 'inside' | 'outside'\n labelsType?: 'value' | 'percent'\n tooltipDataSource?: 'segment' | 'all'\n valueFormatter?: (value: number) => string\n strokeWidth?: number\n size?: number\n startAngle?: number\n endAngle?: number\n paddingAngle?: number\n pieProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n}\nexport interface DonutChartProps extends PieChartProps {\n thickness?: number\n chartLabel?: string\n chartLabelColor?: MantineColor\n chartLabelFontSize?: number\n chartLabelProps?: ChartOptionProps\n}\n\nexport interface ScatterChartSeries extends ChartSeries {\n data?: ChartData\n}\nexport interface ScatterChartProps extends GridChartBaseProps {\n data: ChartData\n series: ScatterChartSeries[]\n xAxisKey?: string\n yAxisKey?: string\n scatterProps?: ChartOptionProps | ((series: ScatterChartSeries) => ChartOptionProps)\n}\nexport interface BubbleChartProps extends ChartRootProps {\n data: ChartData\n xAxisKey?: string\n yAxisKey?: string\n zAxisKey?: string\n name?: string\n color?: MantineColor\n range?: number\n withTooltip?: boolean\n withXAxis?: boolean\n withYAxis?: boolean\n xAxisProps?: ChartOptionProps\n yAxisProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n gridProps?: ChartOptionProps\n valueFormatter?: (value: number) => string\n}\n\nexport interface RadarChartProps extends GridChartBaseProps {\n series: ChartSeries[]\n maxValue?: number\n withPolarGrid?: boolean\n withAngleAxis?: boolean\n withRadiusAxis?: boolean\n shape?: 'polygon' | 'circle'\n radarProps?: ChartOptionProps\n}\nexport interface RadialBarChartCell {\n name: string\n value: number\n color?: MantineColor\n}\nexport interface RadialBarChartProps extends ChartRootProps {\n data: RadialBarChartCell[]\n maxValue?: number\n withLabels?: boolean\n withLegend?: boolean\n withTooltip?: boolean\n startAngle?: number\n endAngle?: number\n barSize?: number\n radialBarProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n legendProps?: ChartOptionProps\n}\nexport interface FunnelChartCell extends PieChartCell {\n label?: string\n}\nexport interface FunnelChartProps extends ChartRootProps {\n data: FunnelChartCell[]\n withTooltip?: boolean\n withLabels?: boolean\n withLegend?: boolean\n valueFormatter?: (value: number) => string\n funnelProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n}\n\nexport interface TreemapData {\n name: string\n value?: number\n color?: MantineColor\n children?: TreemapData[]\n}\nexport interface TreemapProps extends ChartRootProps {\n data: TreemapData[]\n withTooltip?: boolean\n withLegend?: boolean\n valueFormatter?: (value: number) => string\n treemapProps?: ChartOptionProps\n}\nexport interface SankeyChartNode {\n name: string\n color?: MantineColor\n [key: string]: unknown\n}\nexport interface SankeyChartLink {\n source: string | number\n target: string | number\n value: number\n [key: string]: unknown\n}\nexport interface SankeyChartProps extends ChartRootProps {\n data?: SankeyChartNode[]\n nodes?: SankeyChartNode[]\n links: SankeyChartLink[]\n withTooltip?: boolean\n valueFormatter?: (value: number) => string\n sankeyProps?: ChartOptionProps\n}\n\nexport interface SparklineTrendColors {\n positive: MantineColor\n negative: MantineColor\n neutral?: MantineColor\n}\nexport interface SparklineProps extends ChartRootProps {\n data: (number | null)[]\n color?: MantineColor\n withGradient?: boolean\n fillOpacity?: number\n curveType?: LineChartCurveType\n strokeWidth?: number\n trendColors?: SparklineTrendColors\n connectNulls?: boolean\n areaProps?: ChartOptionProps\n}\nexport interface HeatmapRectData {\n date: string\n value: number | null\n}\nexport interface HeatmapProps extends ChartRootProps {\n data: Record<string, number>\n domain?: [number, number]\n startDate?: Date | string\n endDate?: Date | string\n withMonthLabels?: boolean\n monthLabels?: string[]\n withWeekdayLabels?: boolean\n weekdayLabels?: string[]\n withOutsideDates?: boolean\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n rectSize?: number\n gap?: number\n rectRadius?: number\n colors?: string[]\n weekdaysLabelsWidth?: number\n monthsLabelsHeight?: number\n fontSize?: number\n getTooltipLabel?: (input: HeatmapRectData) => VNodeChild\n withTooltip?: boolean\n tooltipProps?: ChartOptionProps\n getRectProps?: (input: HeatmapRectData) => Record<string, unknown>\n splitMonths?: boolean\n withLegend?: boolean\n legendLabels?: [string, string]\n}\n\nexport interface GaugeChartSection {\n value: number\n color: MantineColor\n}\nexport interface GaugeChartProps extends ChartRootProps {\n value: number\n min?: number\n max?: number\n target?: number\n sections?: GaugeChartSection[]\n thickness?: number\n size?: number\n startAngle?: number\n endAngle?: number\n label?: VNodeChild\n valueFormatter?: (value: number) => string\n trackColor?: MantineColor\n filledColor?: MantineColor\n targetColor?: MantineColor\n targetSize?: number\n roundCaps?: boolean\n}\n\nexport interface WaffleChartCell {\n name: string\n value: number\n color: MantineColor\n key?: string | number\n}\nexport interface WaffleChartProps extends ChartRootProps {\n data: WaffleChartCell[]\n rows?: number\n columns?: number\n total?: number\n gap?: number\n cellRadius?: number\n cellSize?: number\n emptyColor?: MantineColor\n withTooltip?: boolean\n getTooltipLabel?: (cell: WaffleChartCell & { count: number }) => VNodeChild\n withLegend?: boolean\n legendPosition?: 'top' | 'bottom' | 'left' | 'right'\n fillDirection?: 'left-to-right' | 'right-to-left' | 'top-to-bottom' | 'bottom-to-top'\n size?: number\n}\n\nexport interface MatrixChartCell {\n x: string\n y: string\n value: number | null\n}\nexport type MatrixChartData = MatrixChartCell[]\nexport interface MatrixChartProps extends ChartRootProps {\n data: MatrixChartData\n xLabels?: string[]\n yLabels?: string[]\n domain?: [number, number]\n colors?: MantineColor[]\n cellSize?: number\n gap?: number\n cellRadius?: number\n withTooltip?: boolean\n getTooltipLabel?: (cell: MatrixChartCell) => VNodeChild\n tooltipProps?: ChartOptionProps\n getCellProps?: (cell: MatrixChartCell) => Record<string, unknown>\n yLabelsWidth?: number\n xLabelsHeight?: number\n xLabelsPosition?: 'top' | 'bottom'\n fontSize?: number\n emptyColor?: MantineColor\n withLegend?: boolean\n legendLabels?: [string, string]\n withXLabels?: boolean\n withYLabels?: boolean\n xLabelsRotation?: number\n}\n\nexport interface CandlestickChartDataKeys {\n open: string\n high: string\n low: string\n close: string\n}\nexport interface CandlestickChartLabels {\n open: string\n high: string\n low: string\n close: string\n}\nexport interface CandlestickChartProps extends GridChartBaseProps {\n dataKeys?: CandlestickChartDataKeys\n labels?: Partial<CandlestickChartLabels>\n upColor?: MantineColor\n downColor?: MantineColor\n maxCandleWidth?: number\n candleStrokeWidth?: number\n composedChartProps?: ChartOptionProps\n}\n\nexport interface BarsListBarData {\n name: string\n value: number\n color?: MantineColor\n textColor?: MantineColor\n variant?: 'light' | 'filled'\n}\nexport interface BarsListProps extends ChartRootProps {\n data: BarsListBarData[]\n valueFormatter?: (value: number) => string\n barsLabel?: string\n valueLabel?: string\n getBarProps?: (data: BarsListBarData) => HTMLAttributes\n renderBar?: (data: BarsListBarData, defaultBar: VNodeChild) => VNodeChild\n barGap?: string | number\n minBarSize?: string | number\n barHeight?: string | number\n barColor?: MantineColor\n barTextColor?: MantineColor\n autoContrast?: boolean\n}\n\ntype PublicComponent<P> = DefineComponent<P>\nexport const AreaChart = createChartComponent('AreaChart', (p) =>\n cartesianOption(p, 'area'),\n) as PublicComponent<AreaChartProps>\nexport const BarChart = createChartComponent('BarChart', (p) =>\n cartesianOption(p, 'bar'),\n) as PublicComponent<BarChartProps>\nexport const LineChart = createChartComponent('LineChart', (p) =>\n cartesianOption(p, 'line'),\n) as PublicComponent<LineChartProps>\nexport const CompositeChart = createChartComponent('CompositeChart', (p) =>\n cartesianOption(p, 'composite'),\n) as PublicComponent<CompositeChartProps>\nexport const PieChart = createChartComponent('PieChart', (p) =>\n radialOption(p),\n) as PublicComponent<PieChartProps>\nexport const DonutChart = createChartComponent('DonutChart', (p) =>\n radialOption(p, true),\n) as PublicComponent<DonutChartProps>\nexport const ScatterChart = createChartComponent('ScatterChart', (p) =>\n scatterOption(p),\n) as PublicComponent<ScatterChartProps>\nexport const BubbleChart = createChartComponent('BubbleChart', (p) =>\n scatterOption(p, true),\n) as PublicComponent<BubbleChartProps>\nexport const RadarChart = createChartComponent(\n 'RadarChart',\n radarOption,\n) as PublicComponent<RadarChartProps>\nexport const RadialBarChart = createChartComponent(\n 'RadialBarChart',\n radialBarOption,\n) as PublicComponent<RadialBarChartProps>\nexport const FunnelChart = createChartComponent('FunnelChart', (p) =>\n simpleOption('funnel', p),\n) as PublicComponent<FunnelChartProps>\nexport const Treemap = createChartComponent('Treemap', (p) =>\n simpleOption('treemap', p),\n) as PublicComponent<TreemapProps>\nexport const SankeyChart = createChartComponent('SankeyChart', (p) =>\n simpleOption('sankey', p),\n) as PublicComponent<SankeyChartProps>\nexport const Sparkline = createChartComponent(\n 'Sparkline',\n sparklineOption,\n) as PublicComponent<SparklineProps>\nexport const Heatmap = createChartComponent(\n 'Heatmap',\n heatmapOption,\n) as PublicComponent<HeatmapProps>\nexport const BarsList = createChartComponent('BarsList', (p) =>\n cartesianOption(\n {\n ...p,\n dataKey: 'name',\n series: [{ name: 'value', color: p.barColor }],\n orientation: 'vertical',\n withXAxis: false,\n withYAxis: true,\n withTooltip: false,\n maxBarWidth: p.barHeight,\n },\n 'bar',\n ),\n) as PublicComponent<BarsListProps>\nexport const GaugeChart = createChartComponent(\n 'GaugeChart',\n gaugeOption,\n) as PublicComponent<GaugeChartProps>\nexport const WaffleChart = createChartComponent(\n 'WaffleChart',\n waffleOption,\n) as PublicComponent<WaffleChartProps>\nexport const MatrixChart = createChartComponent(\n 'MatrixChart',\n matrixOption,\n) as PublicComponent<MatrixChartProps>\nexport const CandlestickChart = createChartComponent(\n 'CandlestickChart',\n candlestickOption,\n) as PublicComponent<CandlestickChartProps>\n\nexport type AreaChartStylesNames =\n | 'area'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type BarChartStylesNames =\n | 'bar'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type LineChartStylesNames =\n | 'line'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type CompositeChartStylesNames =\n | 'line'\n | 'area'\n | 'bar'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type PieChartStylesNames = 'root' | 'label'\nexport type DonutChartStylesNames = PieChartStylesNames\nexport type ScatterChartStylesNames =\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type BubbleChartStylesNames = ScatterChartStylesNames\nexport type RadarChartStylesNames =\n | 'root'\n | 'container'\n | 'axis'\n | 'grid'\n | 'curve'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type RadialBarChartStylesNames =\n | 'root'\n | 'container'\n | 'label'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type FunnelChartStylesNames =\n | 'root'\n | 'container'\n | 'label'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type TreemapStylesNames = 'root' | 'container'\nexport type SankeyChartStylesNames = 'root' | 'container'\nexport type SparklineStylesNames = 'root'\nexport type HeatmapStylesNames =\n | 'root'\n | 'rect'\n | 'weekdayLabel'\n | 'monthLabel'\n | 'legend'\n | 'legendLabel'\n | 'legendRect'\nexport type BarsListStylesNames = 'root' | 'bar' | 'barLabel' | 'barValue' | 'labelsRow'\nexport type GaugeChartStylesNames = 'root' | 'track' | 'section' | 'sectionCap' | 'needle' | 'label'\nexport type WaffleChartStylesNames =\n | 'root'\n | 'grid'\n | 'cell'\n | 'legend'\n | 'legendItem'\n | 'legendSwatch'\n | 'legendLabel'\nexport type MatrixChartStylesNames =\n | 'root'\n | 'cell'\n | 'xLabel'\n | 'yLabel'\n | 'legend'\n | 'legendLabel'\n | 'legendRect'\nexport type CandlestickChartStylesNames = 'candle' | BaseChartStylesNames | ChartTooltipStylesNames\n\nexport type ChartTooltipStylesNames =\n | 'tooltip'\n | 'tooltipItem'\n | 'tooltipItemBody'\n | 'tooltipItemColor'\n | 'tooltipItemName'\n | 'tooltipItemData'\n | 'tooltipLabel'\n | 'tooltipBody'\nexport type ChartLegendStylesNames = 'legendItem' | 'legendItemColor' | 'legendItemName' | 'legend'\nexport type ChartCssVariables = Record<string, string>\n","import { computed, defineComponent, h, type PropType, type SlotsType, type VNodeChild } from 'vue'\nimport type { ChartRenderable, ChartSeries, ChartTooltipPayload } from '../types'\nimport { resolveColor } from '../internal/colors'\n\nexport interface ChartTooltipProps {\n label?: ChartRenderable\n payload?: readonly ChartTooltipPayload[]\n unit?: string\n type?: 'area' | 'radial' | 'scatter'\n segmentId?: string\n series?: ChartSeries[]\n valueFormatter?: (value: number) => ChartRenderable\n showColor?: boolean\n}\n\nexport interface ChartTooltipSlots {\n label?: () => VNodeChild\n valueFormatter?: (input: { value: number; item: ChartTooltipPayload }) => VNodeChild\n}\n\nexport const ChartTooltip = defineComponent({\n name: 'MantineChartTooltip',\n slots: Object as SlotsType<ChartTooltipSlots>,\n props: {\n label: null,\n payload: Array as PropType<readonly ChartTooltipPayload[]>,\n unit: String,\n type: { type: String as PropType<ChartTooltipProps['type']>, default: 'area' },\n segmentId: String,\n series: Array as PropType<ChartSeries[]>,\n valueFormatter: Function as PropType<(value: number) => ChartRenderable>,\n showColor: { type: Boolean, default: true },\n },\n setup(props, { slots }) {\n const labels = computed(() =>\n Object.fromEntries((props.series ?? []).map((item) => [item.name, item.label ?? item.name])),\n )\n return () => {\n const label = props.label !== undefined ? props.label : slots.label?.()\n const payload = props.segmentId\n ? props.payload?.filter(\n (item) => item.name === props.segmentId || item.dataKey === props.segmentId,\n )\n : props.payload\n if (!payload?.length) return null\n return h('div', { class: 'mantine-ChartTooltip-tooltip', 'data-type': props.type }, [\n label != null ? h('div', { class: 'mantine-ChartTooltip-tooltipLabel' }, [label]) : null,\n h(\n 'div',\n { class: 'mantine-ChartTooltip-tooltipBody' },\n payload.map((item) =>\n h('div', { class: 'mantine-ChartTooltip-tooltipItem' }, [\n h('div', { class: 'mantine-ChartTooltip-tooltipItemBody' }, [\n props.showColor\n ? h('span', {\n class: 'mantine-ChartTooltip-tooltipItemColor',\n style: { background: resolveColor(item.color) },\n })\n : null,\n h(\n 'span',\n { class: 'mantine-ChartTooltip-tooltipItemName' },\n labels.value[item.name ?? ''] ?? item.name,\n ),\n ]),\n h('span', { class: 'mantine-ChartTooltip-tooltipItemData' }, [\n props.valueFormatter\n ? props.valueFormatter(Number(item.value))\n : (slots.valueFormatter?.({ value: Number(item.value), item }) ??\n (item.value == null ? '' : String(item.value))),\n props.unit ?? item.unit ?? '',\n ]),\n ]),\n ),\n ),\n ])\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\nimport type { ChartSeries } from '../types'\nimport { resolveColor } from '../internal/colors'\n\nexport interface ChartLegendPayload {\n dataKey?: string\n name?: string\n color?: string\n [key: string]: unknown\n}\nexport interface ChartLegendProps {\n payload?: readonly ChartLegendPayload[]\n onHighlight: (area: string | null) => void\n legendPosition: 'top' | 'bottom' | 'middle'\n series?: ChartSeries[]\n showColor?: boolean\n centered?: boolean\n}\n\nexport const ChartLegend = defineComponent({\n name: 'MantineChartLegend',\n props: {\n payload: Array as PropType<readonly ChartLegendPayload[]>,\n onHighlight: { type: Function as PropType<(area: string | null) => void>, required: true },\n legendPosition: {\n type: String as PropType<ChartLegendProps['legendPosition']>,\n required: true,\n },\n series: Array as PropType<ChartSeries[]>,\n showColor: { type: Boolean, default: true },\n centered: Boolean,\n },\n setup(props) {\n return () =>\n h(\n 'div',\n {\n class: 'mantine-ChartLegend-legend',\n 'data-position': props.legendPosition,\n 'data-centered': props.centered || undefined,\n onMouseleave: () => props.onHighlight(null),\n },\n props.payload?.map((item) => {\n const key = item.dataKey ?? item.name ?? ''\n const label = props.series?.find((s) => s.name === key)?.label ?? key\n return h(\n 'div',\n { class: 'mantine-ChartLegend-legendItem', onMouseenter: () => props.onHighlight(key) },\n [\n props.showColor\n ? h('span', {\n class: 'mantine-ChartLegend-legendItemColor',\n style: { background: resolveColor(item.color) },\n })\n : null,\n h('span', { class: 'mantine-ChartLegend-legendItemName' }, label),\n ],\n )\n }),\n )\n },\n})\n","import type { ChartSeries } from '../../types'\nexport function getSeriesLabels(series: ChartSeries[] | undefined): Record<string, string> {\n return Object.fromEntries((series ?? []).map((item) => [item.name, item.label ?? item.name]))\n}\n"],"mappings":"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"}
|
package/esm/index.mjs
CHANGED
|
@@ -47,6 +47,9 @@ function registerECharts() {
|
|
|
47
47
|
//#endregion
|
|
48
48
|
//#region src/internal/component.ts
|
|
49
49
|
registerECharts();
|
|
50
|
+
function normalizeChartProps(props) {
|
|
51
|
+
return Object.fromEntries(Object.entries(props).map(([key, value]) => [key.replace(/-([a-z])/g, (_match, letter) => letter.toUpperCase()), value]));
|
|
52
|
+
}
|
|
50
53
|
function createChartComponent(name, buildOption) {
|
|
51
54
|
return defineComponent({
|
|
52
55
|
name: `Mantine${name}`,
|
|
@@ -83,7 +86,7 @@ function createChartComponent(name, buildOption) {
|
|
|
83
86
|
setup(props, { attrs, emit, expose }) {
|
|
84
87
|
const chart = ref();
|
|
85
88
|
const option = computed(() => ({
|
|
86
|
-
...buildOption(attrs),
|
|
89
|
+
...buildOption(normalizeChartProps(attrs)),
|
|
87
90
|
...props.option
|
|
88
91
|
}));
|
|
89
92
|
expose({
|
|
@@ -278,6 +281,10 @@ var bool = (value, fallback) => typeof value === "boolean" ? value : fallback;
|
|
|
278
281
|
var num = (value, fallback) => typeof value === "number" ? value : fallback;
|
|
279
282
|
var obj = (value) => value && typeof value === "object" ? value : {};
|
|
280
283
|
var list = (value) => Array.isArray(value) ? value : [];
|
|
284
|
+
var gridLabelBounds = {
|
|
285
|
+
outerBoundsMode: "same",
|
|
286
|
+
outerBoundsContain: "axisLabel"
|
|
287
|
+
};
|
|
281
288
|
var formatter = (props) => typeof props.valueFormatter === "function" ? props.valueFormatter : void 0;
|
|
282
289
|
function tooltip(props) {
|
|
283
290
|
if (!bool(props.withTooltip, true)) return { show: false };
|
|
@@ -433,7 +440,7 @@ function cartesianOption(props, kind) {
|
|
|
433
440
|
right: bool(props.withRightYAxis, false) ? 48 : 16,
|
|
434
441
|
top: bool(props.withLegend, false) ? 44 : 16,
|
|
435
442
|
bottom: 38,
|
|
436
|
-
|
|
443
|
+
...gridLabelBounds,
|
|
437
444
|
...obj(props.gridProps)
|
|
438
445
|
},
|
|
439
446
|
legend: {
|
|
@@ -470,11 +477,31 @@ function cartesianOption(props, kind) {
|
|
|
470
477
|
};
|
|
471
478
|
}
|
|
472
479
|
function radialOption(props, donut = false) {
|
|
473
|
-
const
|
|
480
|
+
const resolvedData = list(props.data).map(({ color, ...item }) => {
|
|
481
|
+
const resolvedColor = resolveColor(color);
|
|
482
|
+
return {
|
|
483
|
+
...item,
|
|
484
|
+
itemStyle: { color: resolvedColor }
|
|
485
|
+
};
|
|
486
|
+
});
|
|
487
|
+
const withLabels = bool(props.withLabels, false);
|
|
488
|
+
const withLegend = bool(props.withLegend, false);
|
|
489
|
+
const labelsPosition = props.labelsPosition === "inside" ? "inside" : "outside";
|
|
490
|
+
const withOutsideLabels = withLabels && labelsPosition === "outside";
|
|
491
|
+
const outerRadius = withOutsideLabels ? "65%" : "75%";
|
|
492
|
+
const valueFormat = formatter(props);
|
|
493
|
+
const labelFormatter = props.labelsType === "percent" ? "{d}%" : valueFormat ? (params) => valueFormat(Number(params.value)) : "{c}";
|
|
474
494
|
return {
|
|
475
|
-
color:
|
|
495
|
+
color: resolvedData.map((item) => item.itemStyle.color),
|
|
476
496
|
legend: {
|
|
477
|
-
show:
|
|
497
|
+
show: withLegend,
|
|
498
|
+
type: "scroll",
|
|
499
|
+
left: "center",
|
|
500
|
+
bottom: 8,
|
|
501
|
+
data: resolvedData.map((item) => ({
|
|
502
|
+
name: item.name,
|
|
503
|
+
itemStyle: { color: item.itemStyle.color }
|
|
504
|
+
})),
|
|
478
505
|
...obj(props.legendProps)
|
|
479
506
|
},
|
|
480
507
|
tooltip: {
|
|
@@ -484,20 +511,31 @@ function radialOption(props, donut = false) {
|
|
|
484
511
|
},
|
|
485
512
|
series: [{
|
|
486
513
|
type: "pie",
|
|
487
|
-
|
|
514
|
+
left: 0,
|
|
515
|
+
right: 0,
|
|
516
|
+
top: 0,
|
|
517
|
+
bottom: withLegend ? 56 : 0,
|
|
518
|
+
center: ["50%", "50%"],
|
|
519
|
+
radius: donut ? [`${num(props.thickness, 40)}%`, outerRadius] : ["0%", outerRadius],
|
|
488
520
|
startAngle: num(props.startAngle, 90),
|
|
521
|
+
endAngle: typeof props.endAngle === "number" ? props.endAngle : void 0,
|
|
489
522
|
minAngle: num(props.minAngle, 0),
|
|
490
523
|
padAngle: num(props.paddingAngle, 0),
|
|
524
|
+
avoidLabelOverlap: true,
|
|
491
525
|
roseType: props.type === "pie" ? void 0 : props.type === "donut" ? void 0 : props.type,
|
|
492
526
|
label: {
|
|
493
|
-
show:
|
|
494
|
-
|
|
527
|
+
show: withLabels,
|
|
528
|
+
position: labelsPosition,
|
|
529
|
+
formatter: labelFormatter,
|
|
530
|
+
...withOutsideLabels ? {
|
|
531
|
+
bleedMargin: 5,
|
|
532
|
+
edgeDistance: "8%"
|
|
533
|
+
} : {}
|
|
495
534
|
},
|
|
496
|
-
labelLine: { show: bool(props.withLabelsLine, false) },
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
}))
|
|
535
|
+
labelLine: { show: withLabels && bool(props.withLabelsLine, false) },
|
|
536
|
+
labelLayout: { hideOverlap: true },
|
|
537
|
+
data: resolvedData,
|
|
538
|
+
...obj(props.pieProps)
|
|
501
539
|
}],
|
|
502
540
|
graphic: props.chartLabel ? [{
|
|
503
541
|
type: "text",
|
|
@@ -519,7 +557,7 @@ function scatterOption(props, bubble = false) {
|
|
|
519
557
|
const zKey = String(props.zAxisKey ?? "z");
|
|
520
558
|
return {
|
|
521
559
|
grid: {
|
|
522
|
-
|
|
560
|
+
...gridLabelBounds,
|
|
523
561
|
...obj(props.gridProps)
|
|
524
562
|
},
|
|
525
563
|
legend: {
|
|
@@ -589,10 +627,13 @@ function gaugeOption(props) {
|
|
|
589
627
|
startAngle: 90 - num(props.startAngle, -120),
|
|
590
628
|
endAngle: 90 - num(props.endAngle, 120),
|
|
591
629
|
radius: "90%",
|
|
592
|
-
axisLine: {
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
630
|
+
axisLine: {
|
|
631
|
+
roundCap: bool(props.roundCaps, false),
|
|
632
|
+
lineStyle: {
|
|
633
|
+
width: num(props.thickness, 12),
|
|
634
|
+
color: axisColors
|
|
635
|
+
}
|
|
636
|
+
},
|
|
596
637
|
progress: sections.length ? { show: false } : {
|
|
597
638
|
show: true,
|
|
598
639
|
width: num(props.thickness, 12),
|
|
@@ -804,7 +845,7 @@ function candlestickOption(props) {
|
|
|
804
845
|
right: 16,
|
|
805
846
|
top: 16,
|
|
806
847
|
bottom: 38,
|
|
807
|
-
|
|
848
|
+
...gridLabelBounds,
|
|
808
849
|
...obj(props.gridProps)
|
|
809
850
|
},
|
|
810
851
|
tooltip: {
|
package/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/internal/echarts.ts","../src/internal/component.ts","../src/internal/colors.ts","../src/internal/options.ts","../src/charts.ts","../src/ChartTooltip/ChartTooltip.ts","../src/ChartLegend/ChartLegend.ts","../src/utils/get-series-labels/get-series-labels.ts"],"sourcesContent":["import { use } from 'echarts/core'\nimport {\n BarChart as EBarChart,\n CandlestickChart as ECandlestickChart,\n EffectScatterChart,\n FunnelChart as EFunnelChart,\n GaugeChart,\n GraphChart,\n HeatmapChart as EHeatmapChart,\n LineChart as ELineChart,\n PieChart as EPieChart,\n RadarChart as ERadarChart,\n SankeyChart as ESankeyChart,\n ScatterChart as EScatterChart,\n TreemapChart as ETreemapChart,\n} from 'echarts/charts'\nimport {\n AriaComponent,\n CalendarComponent,\n DatasetComponent,\n DataZoomComponent,\n GraphicComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n MarkAreaComponent,\n MarkPointComponent,\n PolarComponent,\n RadarComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n TransformComponent,\n VisualMapComponent,\n} from 'echarts/components'\nimport { CanvasRenderer, SVGRenderer } from 'echarts/renderers'\n\nlet registered = false\n\nexport function registerECharts(): void {\n if (registered) {\n return\n }\n\n use([\n EBarChart,\n ECandlestickChart,\n EffectScatterChart,\n EFunnelChart,\n GaugeChart,\n GraphChart,\n EHeatmapChart,\n ELineChart,\n EPieChart,\n ERadarChart,\n ESankeyChart,\n EScatterChart,\n ETreemapChart,\n AriaComponent,\n CalendarComponent,\n DatasetComponent,\n DataZoomComponent,\n GraphicComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n MarkAreaComponent,\n MarkPointComponent,\n PolarComponent,\n RadarComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n TransformComponent,\n VisualMapComponent,\n CanvasRenderer,\n SVGRenderer,\n ])\n\n registered = true\n}\n","import { computed, defineComponent, h, ref, type Component, type PropType } from 'vue'\nimport type { EChartsOption } from 'echarts'\nimport VChart from 'vue-echarts'\nimport { registerECharts } from './echarts'\n\nregisterECharts()\n\nexport type OptionBuilder = (props: Record<string, unknown>) => EChartsOption\n\nexport function createChartComponent(name: string, buildOption: OptionBuilder): Component {\n return defineComponent({\n name: `Mantine${name}`,\n inheritAttrs: false,\n props: {\n option: Object as PropType<EChartsOption>,\n height: { type: [Number, String], default: 300 },\n width: { type: [Number, String], default: '100%' },\n loading: Boolean,\n autoresize: { type: Boolean, default: true },\n renderer: { type: String as PropType<'canvas' | 'svg'>, default: 'canvas' },\n initOptions: Object as PropType<Record<string, unknown>>,\n },\n emits: ['click', 'dblclick', 'mouseover', 'mouseout', 'legendselectchanged', 'datazoom'],\n setup(props, { attrs, emit, expose }) {\n const chart = ref<InstanceType<typeof VChart>>()\n const option = computed(() => ({ ...buildOption(attrs), ...props.option }))\n expose({\n getEchartsInstance: () => chart.value?.chart,\n resize: () => chart.value?.resize(),\n setOption: (next: EChartsOption) => chart.value?.setOption(next),\n })\n const size = (value: string | number) => (typeof value === 'number' ? `${value}px` : value)\n const rootAttributes = computed(() =>\n Object.fromEntries(\n Object.entries(attrs).filter(\n ([key]) =>\n ['id', 'dir', 'role', 'tabindex', 'title'].includes(key) ||\n key.startsWith('aria-') ||\n (key.startsWith('data-') && key !== 'data'),\n ),\n ),\n )\n return () =>\n h(\n 'div',\n {\n ...rootAttributes.value,\n class: ['mantine-Chart-root', `mantine-${name}-root`, attrs.class],\n style: [{ width: size(props.width), height: size(props.height) }, attrs.style],\n },\n [\n h(VChart, {\n ref: chart,\n option: option.value,\n autoresize: props.autoresize,\n loading: props.loading,\n initOptions: { ...props.initOptions, renderer: props.renderer },\n class: 'mantine-Chart-container',\n onClick: (event: unknown) => emit('click', event),\n onDblclick: (event: unknown) => emit('dblclick', event),\n onMouseover: (event: unknown) => emit('mouseover', event),\n onMouseout: (event: unknown) => emit('mouseout', event),\n onLegendselectchanged: (event: unknown) => emit('legendselectchanged', event),\n onDatazoom: (event: unknown) => emit('datazoom', event),\n }),\n ],\n )\n },\n })\n}\n","const shadeMap: Record<string, string[]> = {\n blue: [\n '#e7f5ff',\n '#d0ebff',\n '#a5d8ff',\n '#74c0fc',\n '#4dabf7',\n '#339af0',\n '#228be6',\n '#1c7ed6',\n '#1971c2',\n '#1864ab',\n ],\n cyan: [\n '#e3fafc',\n '#c5f6fa',\n '#99e9f2',\n '#66d9e8',\n '#3bc9db',\n '#22b8cf',\n '#15aabf',\n '#1098ad',\n '#0c8599',\n '#0b7285',\n ],\n green: [\n '#ebfbee',\n '#d3f9d8',\n '#b2f2bb',\n '#8ce99a',\n '#69db7c',\n '#51cf66',\n '#40c057',\n '#37b24d',\n '#2f9e44',\n '#2b8a3e',\n ],\n grape: [\n '#f8f0fc',\n '#f3d9fa',\n '#eebefa',\n '#e599f7',\n '#da77f2',\n '#cc5de8',\n '#be4bdb',\n '#ae3ec9',\n '#9c36b5',\n '#862e9c',\n ],\n gray: [\n '#f8f9fa',\n '#f1f3f5',\n '#e9ecef',\n '#dee2e6',\n '#ced4da',\n '#adb5bd',\n '#868e96',\n '#495057',\n '#343a40',\n '#212529',\n ],\n orange: [\n '#fff4e6',\n '#ffe8cc',\n '#ffd8a8',\n '#ffc078',\n '#ffa94d',\n '#ff922b',\n '#fd7e14',\n '#f76707',\n '#e8590c',\n '#d9480f',\n ],\n pink: [\n '#fff0f6',\n '#ffdeeb',\n '#fcc2d7',\n '#faa2c1',\n '#f783ac',\n '#f06595',\n '#e64980',\n '#d6336c',\n '#c2255c',\n '#a61e4d',\n ],\n red: [\n '#fff5f5',\n '#ffe3e3',\n '#ffc9c9',\n '#ffa8a8',\n '#ff8787',\n '#ff6b6b',\n '#fa5252',\n '#f03e3e',\n '#e03131',\n '#c92a2a',\n ],\n teal: [\n '#e6fcf5',\n '#c3fae8',\n '#96f2d7',\n '#63e6be',\n '#38d9a9',\n '#20c997',\n '#12b886',\n '#0ca678',\n '#099268',\n '#087f5b',\n ],\n violet: [\n '#f3f0ff',\n '#e5dbff',\n '#d0bfff',\n '#b197fc',\n '#9775fa',\n '#845ef7',\n '#7950f2',\n '#7048e8',\n '#6741d9',\n '#5f3dc4',\n ],\n yellow: [\n '#fff9db',\n '#fff3bf',\n '#ffec99',\n '#ffe066',\n '#ffd43b',\n '#fcc419',\n '#fab005',\n '#f59f00',\n '#f08c00',\n '#e67700',\n ],\n}\n\nexport function resolveColor(color: unknown, fallback = '#228be6'): string {\n if (typeof color !== 'string' || !color) return fallback\n const [name, rawShade] = color.split('.')\n const shade = Number(rawShade ?? 6)\n return shadeMap[name]?.[Number.isInteger(shade) ? shade : 6] ?? color\n}\n","import type { EChartsOption, SeriesOption } from 'echarts'\nimport type {\n ChartDataItem,\n ChartReferenceAreaProps,\n ChartReferenceDotProps,\n ChartReferenceLineProps,\n ChartSeries,\n} from '../types'\nimport { resolveColor } from './colors'\n\ntype Props = Record<string, unknown>\n\nconst bool = (value: unknown, fallback: boolean) => (typeof value === 'boolean' ? value : fallback)\nconst num = (value: unknown, fallback: number) => (typeof value === 'number' ? value : fallback)\nconst obj = (value: unknown) => (value && typeof value === 'object' ? value : {})\nconst list = <T>(value: unknown): T[] => (Array.isArray(value) ? (value as T[]) : [])\nconst formatter = (props: Props) =>\n typeof props.valueFormatter === 'function'\n ? (props.valueFormatter as (value: number) => string)\n : undefined\n\nfunction tooltip(props: Props): EChartsOption['tooltip'] {\n if (!bool(props.withTooltip, true)) return { show: false }\n const format = formatter(props)\n return {\n trigger: 'axis',\n transitionDuration: num(props.tooltipAnimationDuration, 0) / 1000,\n valueFormatter: format ? (value) => format(Number(value)) : undefined,\n ...obj(props.tooltipProps),\n }\n}\n\nfunction markLine(referenceLines: ChartReferenceLineProps[] | undefined) {\n if (!referenceLines?.length) return undefined\n return {\n silent: true,\n symbol: 'none',\n data: referenceLines.map((line) => ({\n xAxis: line.x,\n yAxis: line.y,\n label: typeof line.label === 'string' ? { formatter: line.label } : line.label,\n lineStyle: {\n color: resolveColor(line.color, '#868e96'),\n type: line.strokeDasharray ? 'dashed' : 'solid',\n },\n })),\n }\n}\n\nfunction markArea(referenceAreas: ChartReferenceAreaProps[] | undefined) {\n if (!referenceAreas?.length) return undefined\n return {\n silent: true,\n data: referenceAreas.map((area) => [\n {\n xAxis: area.x1,\n yAxis: area.y1,\n itemStyle: { color: resolveColor(area.color, '#868e96'), opacity: 0.15 },\n label: typeof area.label === 'string' ? { formatter: area.label } : area.label,\n },\n { xAxis: area.x2, yAxis: area.y2 },\n ]),\n }\n}\n\nfunction markPoint(referenceDots: ChartReferenceDotProps[] | undefined) {\n if (!referenceDots?.length) return undefined\n return {\n silent: true,\n data: referenceDots.map((dot) => ({\n coord: [dot.x, dot.y],\n symbolSize: (dot.r ?? 6) * 2,\n itemStyle: { color: resolveColor(dot.color, '#868e96') },\n label: typeof dot.label === 'string' ? { formatter: dot.label } : dot.label,\n })),\n }\n}\n\nexport function cartesianOption(\n props: Props,\n kind: 'line' | 'area' | 'bar' | 'composite',\n): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<\n ChartSeries & {\n type?: string\n stackId?: string\n strokeDasharray?: string | number\n curveType?: string\n }\n >(props.series)\n const dataKey = String(props.dataKey ?? 'name')\n const horizontal = props.orientation !== 'vertical'\n const chartType = String(props.type ?? 'default')\n const category = data.map((item) => item[dataKey] as string | number)\n const commonAxis = { axisLabel: { color: resolveColor(props.textColor, '#868e96') } }\n const categoryAxis = { type: 'category' as const, data: category, ...commonAxis }\n const valueAxis = { type: 'value' as const, name: props.yAxisLabel as string, ...commonAxis }\n const mapped = series.map((item, index) => {\n const itemKind = kind === 'composite' ? (item.type ?? 'line') : kind === 'area' ? 'line' : kind\n const color = resolveColor(item.color, resolveColor(`blue.${6 + (index % 3)}`))\n const stack =\n chartType === 'stacked' || chartType === 'percent' || chartType === 'stream'\n ? 'stack'\n : item.stackId\n const base = {\n name: item.label ?? item.name,\n data: data.map((entry) => entry[item.name] as number | null),\n yAxisIndex: item.yAxisId ? 1 : 0,\n stack,\n markLine:\n index === 0\n ? markLine(props.referenceLines as ChartReferenceLineProps[] | undefined)\n : undefined,\n markArea:\n index === 0\n ? markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined)\n : undefined,\n markPoint:\n index === 0\n ? markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined)\n : undefined,\n }\n if (itemKind === 'bar') {\n return {\n ...base,\n type: 'bar',\n barMaxWidth: props.maxBarWidth as number,\n barMinHeight: num(props.minBarSize, 0),\n itemStyle: { color, opacity: num(props.fillOpacity, 1) },\n label: {\n show: bool(props.withBarValueLabel, false),\n position: horizontal ? 'top' : 'right',\n },\n }\n }\n return {\n ...base,\n type: 'line',\n smooth: !['linear', 'step', 'stepBefore', 'stepAfter'].includes(\n String(props.curveType ?? item.curveType ?? 'monotone'),\n ),\n step: String(props.curveType).startsWith('step') ? 'middle' : false,\n connectNulls: bool(props.connectNulls, true),\n showSymbol: bool(props.withDots, true),\n symbolSize: 6,\n lineStyle: {\n color,\n width: chartType === 'stream' ? 0 : num(props.strokeWidth, 2),\n type: item.strokeDasharray ? 'dashed' : 'solid',\n },\n itemStyle: { color, opacity: num(props.fillOpacity, 1) },\n areaStyle: itemKind === 'area' ? { color, opacity: num(props.fillOpacity, 0.2) } : undefined,\n label: { show: bool(props.withPointLabels, false), position: 'top' },\n }\n }) as unknown as SeriesOption[]\n\n if (kind === 'area' && chartType === 'stream') {\n mapped.unshift({\n type: 'line',\n stack: 'stack',\n silent: true,\n symbol: 'none',\n data: data.map(\n (entry) =>\n -series.reduce((total, item) => {\n const value = entry[item.name]\n return total + (typeof value === 'number' && Number.isFinite(value) ? value : 0)\n }, 0) / 2,\n ),\n lineStyle: { opacity: 0 },\n areaStyle: { opacity: 0 },\n tooltip: { show: false },\n } as SeriesOption)\n }\n\n return {\n animationDurationUpdate: num(props.tooltipAnimationDuration, 0),\n color: series.map((item) => resolveColor(item.color)),\n grid: {\n left: 48,\n right: bool(props.withRightYAxis, false) ? 48 : 16,\n top: bool(props.withLegend, false) ? 44 : 16,\n bottom: 38,\n containLabel: true,\n ...obj(props.gridProps),\n },\n legend: { show: bool(props.withLegend, false), ...obj(props.legendProps) },\n tooltip: tooltip(props),\n xAxis: horizontal\n ? {\n ...categoryAxis,\n show: bool(props.withXAxis, true),\n name: props.xAxisLabel as string,\n ...obj(props.xAxisProps),\n }\n : { ...valueAxis, show: bool(props.withXAxis, true), ...obj(props.xAxisProps) },\n yAxis: horizontal\n ? [\n {\n ...valueAxis,\n show: chartType === 'stream' ? false : bool(props.withYAxis, true),\n ...obj(props.yAxisProps),\n },\n {\n ...valueAxis,\n show: bool(props.withRightYAxis, false),\n position: 'right',\n name: props.rightYAxisLabel as string,\n ...obj(props.rightYAxisProps),\n },\n ]\n : { ...categoryAxis, show: bool(props.withYAxis, true), ...obj(props.yAxisProps) },\n series: mapped,\n }\n}\n\nexport function radialOption(props: Props, donut = false): EChartsOption {\n const data = list<{ name: string; value: number; color?: string }>(props.data)\n return {\n color: data.map((item) => resolveColor(item.color)),\n legend: {\n show: bool(props.withLabels, false) || bool(props.withLegend, false),\n ...obj(props.legendProps),\n },\n tooltip: { trigger: 'item', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n series: [\n {\n type: 'pie',\n radius: donut ? [`${num(props.thickness, 40)}%`, '75%'] : ['0%', '75%'],\n startAngle: num(props.startAngle, 90),\n minAngle: num(props.minAngle, 0),\n padAngle: num(props.paddingAngle, 0),\n roseType:\n props.type === 'pie'\n ? undefined\n : props.type === 'donut'\n ? undefined\n : (props.type as 'radius' | 'area'),\n label: {\n show: bool(props.withLabels, false),\n formatter: props.withLabelsLine ? '{b}: {d}%' : '{b}',\n },\n labelLine: { show: bool(props.withLabelsLine, false) },\n data: data.map((item) => ({ ...item, itemStyle: { color: resolveColor(item.color) } })),\n },\n ],\n graphic: props.chartLabel\n ? [\n {\n type: 'text',\n left: 'center',\n top: 'middle',\n style: {\n text: String(props.chartLabel),\n fill: resolveColor(props.chartLabelColor, '#212529'),\n fontSize: num(props.chartLabelFontSize, 18),\n },\n },\n ]\n : undefined,\n }\n}\n\nexport function scatterOption(props: Props, bubble = false): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<ChartSeries>(props.series)\n const xKey = String(props.dataKey ?? props.xAxisKey ?? 'x')\n const yKey = String(props.yAxisKey ?? 'y')\n const zKey = String(props.zAxisKey ?? 'z')\n return {\n grid: { containLabel: true, ...obj(props.gridProps) },\n legend: { show: bool(props.withLegend, false), ...obj(props.legendProps) },\n tooltip: { trigger: 'item', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n xAxis: { type: 'value', show: bool(props.withXAxis, true), ...obj(props.xAxisProps) },\n yAxis: props.withRightYAxis\n ? [\n {\n type: 'value',\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n {\n type: 'value',\n show: true,\n position: 'right',\n name: props.rightYAxisLabel as string,\n ...obj(props.rightYAxisProps),\n },\n ]\n : {\n type: 'value',\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n series: (series.length\n ? series\n : [{ name: String(props.name ?? 'value'), color: props.color as string }]\n ).map((item, index) => ({\n type: 'scatter',\n name: item.label ?? item.name,\n yAxisIndex: item.yAxisId === 'right' ? 1 : 0,\n data: data\n .filter((entry) => !entry.name || entry.name === item.name)\n .map((entry) => [entry[xKey], entry[yKey], entry[zKey], entry]),\n symbolSize: bubble\n ? (value: unknown[]) => Math.max(4, Math.sqrt(Number(value[2] ?? 1)) * num(props.range, 4))\n : num(props.size, 10),\n itemStyle: { color: resolveColor(item.color) },\n markLine:\n index === 0\n ? markLine(props.referenceLines as ChartReferenceLineProps[] | undefined)\n : undefined,\n markArea:\n index === 0\n ? markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined)\n : undefined,\n markPoint:\n index === 0\n ? markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined)\n : undefined,\n })) as unknown as SeriesOption[],\n }\n}\n\nexport function gaugeOption(props: Props): EChartsOption {\n const min = num(props.min, 0)\n const max = num(props.max, 100)\n const value = num(props.value, min)\n const sections = list<{ value: number; color: string }>(props.sections)\n const range = max - min || 1\n const axisColors: [number, string][] = sections.length\n ? sections.map((section) => [\n Math.max(0, Math.min(1, (section.value - min) / range)),\n resolveColor(section.color),\n ])\n : [[1, resolveColor(props.trackColor, '#e9ecef')]]\n const format =\n typeof props.valueFormatter === 'function'\n ? (props.valueFormatter as (input: number) => string)\n : (input: number) => String(input)\n\n return {\n series: [\n {\n type: 'gauge',\n min,\n max,\n startAngle: 90 - num(props.startAngle, -120),\n endAngle: 90 - num(props.endAngle, 120),\n radius: '90%',\n axisLine: {\n lineStyle: {\n width: num(props.thickness, 12),\n color: axisColors,\n },\n },\n progress: sections.length\n ? { show: false }\n : {\n show: true,\n width: num(props.thickness, 12),\n roundCap: bool(props.roundCaps, false),\n itemStyle: { color: resolveColor(props.filledColor) },\n },\n pointer:\n typeof props.target === 'number'\n ? {\n show: true,\n width: num(props.targetSize, 2),\n length: '85%',\n itemStyle: { color: resolveColor(props.targetColor, '#212529') },\n }\n : { show: false },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n anchor: { show: false },\n title: { show: false },\n detail: {\n show: props.label !== null,\n formatter: typeof props.label === 'string' ? props.label : format(value),\n color: 'inherit',\n },\n data: [{ value: typeof props.target === 'number' ? props.target : value }],\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nfunction normalizeSegmentValue(value: number) {\n return Number.isFinite(value) ? Math.max(0, value) : 0\n}\n\nexport function waffleOption(props: Props): EChartsOption {\n const rows = Math.max(1, num(props.rows, 10))\n const columns = Math.max(1, num(props.columns, 10))\n const cellCount = rows * columns\n const data = list<{ name: string; value: number; color: string; key?: string | number }>(\n props.data,\n )\n const values = data.map((item) => normalizeSegmentValue(item.value))\n const sum = values.reduce((total, value) => total + value, 0)\n const denominator = props.total == null ? sum : Math.max(num(props.total, sum), sum)\n const filledTarget = denominator ? Math.round((sum / denominator) * cellCount) : 0\n const allocated = values.map((value) => (sum ? Math.floor((value / sum) * filledTarget) : 0))\n let remainder = filledTarget - allocated.reduce((total, value) => total + value, 0)\n const fractions = values\n .map((value, index) => ({\n index,\n fraction: sum ? (value / sum) * filledTarget - allocated[index] : 0,\n }))\n .sort((a, b) => b.fraction - a.fraction)\n\n for (let index = 0; index < fractions.length && remainder > 0; index += 1, remainder -= 1) {\n allocated[fractions[index].index] += 1\n }\n\n const cells = data.flatMap((_, segmentIndex) =>\n Array.from({ length: allocated[segmentIndex] }, () => segmentIndex),\n )\n while (cells.length < cellCount) cells.push(-1)\n\n const direction = String(props.fillDirection ?? 'left-to-right')\n const points = cells.map((segmentIndex, index) => {\n let x = index % columns\n let y = Math.floor(index / columns)\n if (direction === 'right-to-left') x = columns - 1 - x\n if (direction === 'top-to-bottom' || direction === 'bottom-to-top') {\n x = Math.floor(index / rows)\n y = index % rows\n if (direction === 'bottom-to-top') y = rows - 1 - y\n }\n const item = data[segmentIndex]\n return {\n value: [x, y, segmentIndex],\n name: item?.name,\n itemStyle: {\n color: item ? resolveColor(item.color) : resolveColor(props.emptyColor, '#e9ecef'),\n },\n }\n })\n\n return {\n grid: { left: 0, right: 0, top: 0, bottom: bool(props.withLegend, true) ? 36 : 0 },\n xAxis: { type: 'value', min: -0.5, max: columns - 0.5, show: false },\n yAxis: { type: 'value', min: -0.5, max: rows - 0.5, inverse: true, show: false },\n legend: {\n show: bool(props.withLegend, true),\n data: data.map((item) => item.name),\n top: props.legendPosition === 'top' ? 0 : undefined,\n bottom: props.legendPosition === 'bottom' ? 0 : undefined,\n left: props.legendPosition === 'left' ? 0 : undefined,\n right: props.legendPosition === 'right' ? 0 : undefined,\n },\n tooltip: {\n show: bool(props.withTooltip, false),\n formatter: (params: any) => {\n const item = data[params.value?.[2]]\n if (!item) return ''\n return typeof props.getTooltipLabel === 'function'\n ? String(\n (props.getTooltipLabel as (input: Record<string, unknown>) => unknown)({\n ...item,\n count: allocated[params.value[2]],\n }),\n )\n : `${item.name}: ${item.value}`\n },\n },\n series: [\n { type: 'scatter', symbol: 'roundRect', symbolSize: num(props.cellSize, 20), data: points },\n ],\n }\n}\n\nexport function matrixOption(props: Props): EChartsOption {\n const data = list<{ x: string; y: string; value: number | null }>(props.data)\n const xLabels = list<string>(props.xLabels).length\n ? list<string>(props.xLabels)\n : [...new Set(data.map((cell) => cell.x))]\n const yLabels = list<string>(props.yLabels).length\n ? list<string>(props.yLabels)\n : [...new Set(data.map((cell) => cell.y))]\n const values = data.flatMap((cell) => (typeof cell.value === 'number' ? [cell.value] : []))\n const domain =\n (props.domain as [number, number] | undefined) ??\n ([Math.min(0, ...values), Math.max(1, ...values)] as [number, number])\n const colors = list<string>(props.colors).length\n ? list<string>(props.colors).map((color) => resolveColor(color))\n : ['#ebfbee', '#8ce99a', '#40c057', '#2b8a3e']\n\n return {\n grid: {\n left: bool(props.withYLabels, false) ? num(props.yLabelsWidth, 60) : 0,\n right: 0,\n top:\n props.xLabelsPosition === 'top' && bool(props.withXLabels, false)\n ? num(props.xLabelsHeight, 60)\n : 0,\n bottom:\n props.xLabelsPosition !== 'top' && bool(props.withXLabels, false)\n ? num(props.xLabelsHeight, 60)\n : bool(props.withLegend, false)\n ? 30\n : 0,\n },\n xAxis: {\n type: 'category',\n data: xLabels,\n position: props.xLabelsPosition === 'top' ? 'top' : 'bottom',\n show: bool(props.withXLabels, false),\n axisLabel: { rotate: num(props.xLabelsRotation, -90), fontSize: num(props.fontSize, 12) },\n },\n yAxis: {\n type: 'category',\n data: yLabels,\n inverse: true,\n show: bool(props.withYLabels, false),\n axisLabel: { fontSize: num(props.fontSize, 12) },\n },\n visualMap: {\n show: bool(props.withLegend, false),\n min: domain[0],\n max: domain[1],\n inRange: { color: colors },\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n text: (props.legendLabels as string[] | undefined) ?? ['More', 'Less'],\n },\n tooltip: {\n show: bool(props.withTooltip, false) && typeof props.getTooltipLabel === 'function',\n formatter: (params: any) => {\n const cell = data[params.dataIndex]\n return String(\n (props.getTooltipLabel as ((input: typeof cell) => unknown) | undefined)?.(cell) ?? '',\n )\n },\n ...obj(props.tooltipProps),\n },\n series: [\n {\n type: 'heatmap',\n data: data.map((cell) => {\n const extra =\n typeof props.getCellProps === 'function'\n ? (props.getCellProps as (input: typeof cell) => Record<string, unknown>)(cell)\n : {}\n const empty = cell.value === null || !Number.isFinite(cell.value)\n return {\n value: [xLabels.indexOf(cell.x), yLabels.indexOf(cell.y), cell.value, cell],\n ...extra,\n itemStyle: {\n ...(empty && props.emptyColor\n ? { color: resolveColor(props.emptyColor as string) }\n : {}),\n ...obj(extra.itemStyle),\n },\n }\n }),\n itemStyle: {\n borderWidth: num(props.gap, 1),\n borderColor: 'transparent',\n borderRadius: num(props.cellRadius, 2),\n },\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nexport function candlestickOption(props: Props): EChartsOption {\n const data = list<Record<string, unknown>>(props.data)\n const keys = {\n open: 'open',\n high: 'high',\n low: 'low',\n close: 'close',\n ...obj(props.dataKeys),\n } as Record<string, string>\n const dataKey = String(props.dataKey ?? 'date')\n\n return {\n grid: {\n left: 48,\n right: 16,\n top: 16,\n bottom: 38,\n containLabel: true,\n ...obj(props.gridProps),\n },\n tooltip: { trigger: 'axis', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n xAxis: {\n type: 'category',\n data: data.map((item) => String(item[dataKey] ?? '')),\n show: bool(props.withXAxis, true),\n name: props.xAxisLabel as string,\n ...obj(props.xAxisProps),\n },\n yAxis: {\n type: 'value',\n scale: true,\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n series: [\n {\n type: 'candlestick',\n data: data.map((item) => [\n item[keys.open],\n item[keys.close],\n item[keys.low],\n item[keys.high],\n ]),\n barMaxWidth: props.maxCandleWidth as number,\n itemStyle: {\n color: resolveColor(props.upColor, '#12b886'),\n color0: resolveColor(props.downColor, '#fa5252'),\n borderColor: resolveColor(props.upColor, '#12b886'),\n borderColor0: resolveColor(props.downColor, '#fa5252'),\n borderWidth: num(props.candleStrokeWidth, 1),\n },\n markLine: markLine(props.referenceLines as ChartReferenceLineProps[] | undefined),\n markArea: markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined),\n markPoint: markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined),\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nexport function sparklineOption(props: Props): EChartsOption {\n const data = list<number | null>(props.data)\n const trend = props.trendColors as\n | { positive?: string; negative?: string; neutral?: string }\n | undefined\n const color = trend\n ? resolveColor(\n data.at(-1)! > data[0]!\n ? trend.positive\n : data.at(-1)! < data[0]!\n ? trend.negative\n : trend.neutral,\n )\n : resolveColor(props.color)\n return {\n grid: { left: 0, right: 0, top: 1, bottom: 1 },\n xAxis: { type: 'category', show: false },\n yAxis: { type: 'value', show: false, scale: true },\n series: [\n {\n type: 'line',\n data,\n showSymbol: false,\n connectNulls: bool(props.connectNulls, true),\n smooth: props.curveType !== 'linear',\n lineStyle: { color, width: num(props.strokeWidth, 2) },\n areaStyle: bool(props.withGradient, true)\n ? { color, opacity: num(props.fillOpacity, 0.6) }\n : undefined,\n },\n ],\n }\n}\n\nexport function radarOption(props: Props): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<ChartSeries>(props.series)\n const key = String(props.dataKey ?? 'name')\n const max = num(\n props.maxValue,\n Math.max(1, ...data.flatMap((row) => series.map((s) => Number(row[s.name] ?? 0)))),\n )\n return {\n legend: { show: bool(props.withLegend, false) },\n tooltip: { show: bool(props.withTooltip, true) },\n radar: {\n indicator: data.map((row) => ({ name: String(row[key]), max })),\n shape: props.shape === 'circle' ? 'circle' : 'polygon',\n },\n series: [\n {\n type: 'radar',\n data: series.map((s) => ({\n name: s.label ?? s.name,\n value: data.map((row) => Number(row[s.name] ?? 0)),\n lineStyle: { color: resolveColor(s.color) },\n itemStyle: { color: resolveColor(s.color) },\n areaStyle: bool(props.withPolarGrid, false) ? {} : undefined,\n })),\n },\n ],\n }\n}\n\nexport function simpleOption(type: 'funnel' | 'treemap' | 'sankey', props: Props): EChartsOption {\n const data = list<Record<string, unknown>>(props.data)\n if (type === 'sankey')\n return {\n tooltip: { show: bool(props.withTooltip, true) },\n series: [\n {\n type,\n data: list(props.nodes ?? data),\n links: list(props.links),\n emphasis: { focus: 'adjacency' },\n ...obj(props.sankeyProps),\n },\n ],\n }\n return {\n tooltip: { show: bool(props.withTooltip, true) },\n legend: { show: bool(props.withLegend, false) },\n series: [\n {\n type,\n data: data.map((item) => ({ ...item, itemStyle: { color: resolveColor(item.color) } })),\n ...obj(props[`${type}Props`]),\n },\n ],\n }\n}\n\nexport function radialBarOption(props: Props): EChartsOption {\n const data = list<{ name: string; value: number; color?: string }>(props.data)\n return {\n legend: { show: bool(props.withLegend, false) },\n tooltip: { show: bool(props.withTooltip, true) },\n polar: {},\n angleAxis: { max: num(props.maxValue, 100), show: false },\n radiusAxis: {\n type: 'category',\n data: data.map((i) => i.name),\n show: bool(props.withLabels, true),\n },\n series: [\n {\n type: 'bar',\n coordinateSystem: 'polar',\n roundCap: true,\n data: data.map((i) => ({ value: i.value, itemStyle: { color: resolveColor(i.color) } })),\n },\n ],\n }\n}\n\nexport function heatmapOption(props: Props): EChartsOption {\n const input =\n props.data && typeof props.data === 'object' ? (props.data as Record<string, number>) : {}\n const data = Object.entries(input).map(([date, value]) => [date, value])\n const values = Object.values(input)\n const date = (value: unknown, fallback: string) =>\n value instanceof Date\n ? value.toISOString().slice(0, 10)\n : typeof value === 'string'\n ? value\n : fallback\n const start = date(props.startDate, String(data[0]?.[0] ?? new Date().toISOString().slice(0, 10)))\n const end = date(props.endDate, String(data.at(-1)?.[0] ?? start))\n return {\n tooltip: { show: bool(props.withTooltip, false) },\n visualMap: {\n show: bool(props.withLegend, false),\n min: (props.domain as number[] | undefined)?.[0] ?? Math.min(0, ...values),\n max: (props.domain as number[] | undefined)?.[1] ?? Math.max(1, ...values),\n inRange: {\n color: list<string>(props.colors).length\n ? list<string>(props.colors).map((color) => resolveColor(color))\n : ['#ebfbee', '#2f9e44'],\n },\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n },\n calendar: {\n range: [start, end],\n cellSize: num(props.rectSize, 10) + num(props.gap, 1),\n dayLabel: {\n show: bool(props.withWeekdayLabels, false),\n firstDay: num(props.firstDayOfWeek, 1),\n },\n monthLabel: { show: bool(props.withMonthLabels, false) },\n itemStyle: {\n borderWidth: num(props.gap, 1),\n borderColor: 'transparent',\n borderRadius: num(props.rectRadius, 2),\n },\n },\n series: [{ type: 'heatmap', coordinateSystem: 'calendar', data }],\n }\n}\n","import type { MantineColor } from '@mantine-vue/core'\nimport type { DefineComponent, HTMLAttributes, VNodeChild } from 'vue'\nimport { createChartComponent } from './internal/component'\nimport {\n cartesianOption,\n candlestickOption,\n gaugeOption,\n heatmapOption,\n matrixOption,\n radarOption,\n radialBarOption,\n radialOption,\n scatterOption,\n simpleOption,\n sparklineOption,\n waffleOption,\n} from './internal/options'\nimport type {\n BaseChartStylesNames,\n ChartData,\n ChartOptionProps,\n ChartRootProps,\n ChartSeries,\n GridChartBaseProps,\n MantineChartDotProps,\n} from './types'\n\nexport type LineChartCurveType =\n | 'bump'\n | 'linear'\n | 'natural'\n | 'monotone'\n | 'step'\n | 'stepBefore'\n | 'stepAfter'\nexport type AreaChartCurveType = LineChartCurveType\nexport type CompositeChartCurveType = LineChartCurveType\nexport interface LineChartSeries extends ChartSeries {\n strokeDasharray?: string | number\n curveType?: LineChartCurveType\n}\nexport interface AreaChartSeries extends ChartSeries {\n color: MantineColor\n strokeDasharray?: string | number\n curveType?: AreaChartCurveType\n}\nexport interface BarChartSeries extends ChartSeries {\n stackId?: string\n}\nexport interface CompositeChartSeries extends ChartSeries {\n type: 'line' | 'area' | 'bar'\n strokeDasharray?: string | number\n}\n\nexport interface LineChartProps extends GridChartBaseProps {\n series: LineChartSeries[]\n type?: 'default' | 'gradient'\n gradientStops?: { offset: number; color: MantineColor }[]\n curveType?: LineChartCurveType\n fillOpacity?: number\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n lineChartProps?: ChartOptionProps\n connectNulls?: boolean\n lineProps?: ChartOptionProps | ((series: LineChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n}\nexport interface AreaChartProps extends GridChartBaseProps {\n series: AreaChartSeries[]\n type?: 'default' | 'stacked' | 'percent' | 'split' | 'stream'\n withGradient?: boolean\n curveType?: AreaChartCurveType\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n areaChartProps?: ChartOptionProps\n fillOpacity?: number\n splitColors?: [MantineColor, MantineColor]\n splitOffset?: number\n connectNulls?: boolean\n areaProps?: ChartOptionProps | ((series: AreaChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n}\nexport interface BarChartProps extends GridChartBaseProps {\n series: BarChartSeries[]\n type?: 'default' | 'stacked' | 'percent' | 'waterfall'\n fillOpacity?: number\n cursorFill?: MantineColor\n barChartProps?: ChartOptionProps\n barProps?: ChartOptionProps | ((series: BarChartSeries) => ChartOptionProps)\n withBarValueLabel?: boolean\n valueLabelProps?: ChartOptionProps | ((series: BarChartSeries) => ChartOptionProps)\n minBarSize?: number\n maxBarWidth?: number\n barLabelColor?: MantineColor\n getBarColor?: (value: number, series: BarChartSeries) => MantineColor\n}\nexport interface CompositeChartProps extends Omit<GridChartBaseProps, 'orientation'> {\n series: CompositeChartSeries[]\n curveType?: CompositeChartCurveType\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n connectNulls?: boolean\n lineProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n areaProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n barProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n withBarValueLabel?: boolean\n minBarSize?: number\n maxBarWidth?: number\n composedChartProps?: ChartOptionProps\n}\n\nexport interface PieChartCell {\n name: string\n value: number\n color?: MantineColor\n}\nexport interface PieChartProps extends ChartRootProps {\n data: PieChartCell[]\n withTooltip?: boolean\n withLabels?: boolean\n withLabelsLine?: boolean\n labelsPosition?: 'inside' | 'outside'\n labelsType?: 'value' | 'percent'\n tooltipDataSource?: 'segment' | 'all'\n valueFormatter?: (value: number) => string\n strokeWidth?: number\n size?: number\n startAngle?: number\n endAngle?: number\n paddingAngle?: number\n pieProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n}\nexport interface DonutChartProps extends PieChartProps {\n thickness?: number\n chartLabel?: string\n chartLabelColor?: MantineColor\n chartLabelFontSize?: number\n chartLabelProps?: ChartOptionProps\n}\n\nexport interface ScatterChartSeries extends ChartSeries {\n data?: ChartData\n}\nexport interface ScatterChartProps extends GridChartBaseProps {\n data: ChartData\n series: ScatterChartSeries[]\n xAxisKey?: string\n yAxisKey?: string\n scatterProps?: ChartOptionProps | ((series: ScatterChartSeries) => ChartOptionProps)\n}\nexport interface BubbleChartProps extends ChartRootProps {\n data: ChartData\n xAxisKey?: string\n yAxisKey?: string\n zAxisKey?: string\n name?: string\n color?: MantineColor\n range?: number\n withTooltip?: boolean\n withXAxis?: boolean\n withYAxis?: boolean\n xAxisProps?: ChartOptionProps\n yAxisProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n gridProps?: ChartOptionProps\n valueFormatter?: (value: number) => string\n}\n\nexport interface RadarChartProps extends GridChartBaseProps {\n series: ChartSeries[]\n maxValue?: number\n withPolarGrid?: boolean\n withAngleAxis?: boolean\n withRadiusAxis?: boolean\n shape?: 'polygon' | 'circle'\n radarProps?: ChartOptionProps\n}\nexport interface RadialBarChartCell {\n name: string\n value: number\n color?: MantineColor\n}\nexport interface RadialBarChartProps extends ChartRootProps {\n data: RadialBarChartCell[]\n maxValue?: number\n withLabels?: boolean\n withLegend?: boolean\n withTooltip?: boolean\n startAngle?: number\n endAngle?: number\n barSize?: number\n radialBarProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n legendProps?: ChartOptionProps\n}\nexport interface FunnelChartCell extends PieChartCell {\n label?: string\n}\nexport interface FunnelChartProps extends ChartRootProps {\n data: FunnelChartCell[]\n withTooltip?: boolean\n withLabels?: boolean\n withLegend?: boolean\n valueFormatter?: (value: number) => string\n funnelProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n}\n\nexport interface TreemapData {\n name: string\n value?: number\n color?: MantineColor\n children?: TreemapData[]\n}\nexport interface TreemapProps extends ChartRootProps {\n data: TreemapData[]\n withTooltip?: boolean\n withLegend?: boolean\n valueFormatter?: (value: number) => string\n treemapProps?: ChartOptionProps\n}\nexport interface SankeyChartNode {\n name: string\n color?: MantineColor\n [key: string]: unknown\n}\nexport interface SankeyChartLink {\n source: string | number\n target: string | number\n value: number\n [key: string]: unknown\n}\nexport interface SankeyChartProps extends ChartRootProps {\n data?: SankeyChartNode[]\n nodes?: SankeyChartNode[]\n links: SankeyChartLink[]\n withTooltip?: boolean\n valueFormatter?: (value: number) => string\n sankeyProps?: ChartOptionProps\n}\n\nexport interface SparklineTrendColors {\n positive: MantineColor\n negative: MantineColor\n neutral?: MantineColor\n}\nexport interface SparklineProps extends ChartRootProps {\n data: (number | null)[]\n color?: MantineColor\n withGradient?: boolean\n fillOpacity?: number\n curveType?: LineChartCurveType\n strokeWidth?: number\n trendColors?: SparklineTrendColors\n connectNulls?: boolean\n areaProps?: ChartOptionProps\n}\nexport interface HeatmapRectData {\n date: string\n value: number | null\n}\nexport interface HeatmapProps extends ChartRootProps {\n data: Record<string, number>\n domain?: [number, number]\n startDate?: Date | string\n endDate?: Date | string\n withMonthLabels?: boolean\n monthLabels?: string[]\n withWeekdayLabels?: boolean\n weekdayLabels?: string[]\n withOutsideDates?: boolean\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n rectSize?: number\n gap?: number\n rectRadius?: number\n colors?: string[]\n weekdaysLabelsWidth?: number\n monthsLabelsHeight?: number\n fontSize?: number\n getTooltipLabel?: (input: HeatmapRectData) => VNodeChild\n withTooltip?: boolean\n tooltipProps?: ChartOptionProps\n getRectProps?: (input: HeatmapRectData) => Record<string, unknown>\n splitMonths?: boolean\n withLegend?: boolean\n legendLabels?: [string, string]\n}\n\nexport interface GaugeChartSection {\n value: number\n color: MantineColor\n}\nexport interface GaugeChartProps extends ChartRootProps {\n value: number\n min?: number\n max?: number\n target?: number\n sections?: GaugeChartSection[]\n thickness?: number\n size?: number\n startAngle?: number\n endAngle?: number\n label?: VNodeChild\n valueFormatter?: (value: number) => string\n trackColor?: MantineColor\n filledColor?: MantineColor\n targetColor?: MantineColor\n targetSize?: number\n roundCaps?: boolean\n}\n\nexport interface WaffleChartCell {\n name: string\n value: number\n color: MantineColor\n key?: string | number\n}\nexport interface WaffleChartProps extends ChartRootProps {\n data: WaffleChartCell[]\n rows?: number\n columns?: number\n total?: number\n gap?: number\n cellRadius?: number\n cellSize?: number\n emptyColor?: MantineColor\n withTooltip?: boolean\n getTooltipLabel?: (cell: WaffleChartCell & { count: number }) => VNodeChild\n withLegend?: boolean\n legendPosition?: 'top' | 'bottom' | 'left' | 'right'\n fillDirection?: 'left-to-right' | 'right-to-left' | 'top-to-bottom' | 'bottom-to-top'\n size?: number\n}\n\nexport interface MatrixChartCell {\n x: string\n y: string\n value: number | null\n}\nexport type MatrixChartData = MatrixChartCell[]\nexport interface MatrixChartProps extends ChartRootProps {\n data: MatrixChartData\n xLabels?: string[]\n yLabels?: string[]\n domain?: [number, number]\n colors?: MantineColor[]\n cellSize?: number\n gap?: number\n cellRadius?: number\n withTooltip?: boolean\n getTooltipLabel?: (cell: MatrixChartCell) => VNodeChild\n tooltipProps?: ChartOptionProps\n getCellProps?: (cell: MatrixChartCell) => Record<string, unknown>\n yLabelsWidth?: number\n xLabelsHeight?: number\n xLabelsPosition?: 'top' | 'bottom'\n fontSize?: number\n emptyColor?: MantineColor\n withLegend?: boolean\n legendLabels?: [string, string]\n withXLabels?: boolean\n withYLabels?: boolean\n xLabelsRotation?: number\n}\n\nexport interface CandlestickChartDataKeys {\n open: string\n high: string\n low: string\n close: string\n}\nexport interface CandlestickChartLabels {\n open: string\n high: string\n low: string\n close: string\n}\nexport interface CandlestickChartProps extends GridChartBaseProps {\n dataKeys?: CandlestickChartDataKeys\n labels?: Partial<CandlestickChartLabels>\n upColor?: MantineColor\n downColor?: MantineColor\n maxCandleWidth?: number\n candleStrokeWidth?: number\n composedChartProps?: ChartOptionProps\n}\n\nexport interface BarsListBarData {\n name: string\n value: number\n color?: MantineColor\n textColor?: MantineColor\n variant?: 'light' | 'filled'\n}\nexport interface BarsListProps extends ChartRootProps {\n data: BarsListBarData[]\n valueFormatter?: (value: number) => string\n barsLabel?: string\n valueLabel?: string\n getBarProps?: (data: BarsListBarData) => HTMLAttributes\n renderBar?: (data: BarsListBarData, defaultBar: VNodeChild) => VNodeChild\n barGap?: string | number\n minBarSize?: string | number\n barHeight?: string | number\n barColor?: MantineColor\n barTextColor?: MantineColor\n autoContrast?: boolean\n}\n\ntype PublicComponent<P> = DefineComponent<P>\nexport const AreaChart = createChartComponent('AreaChart', (p) =>\n cartesianOption(p, 'area'),\n) as PublicComponent<AreaChartProps>\nexport const BarChart = createChartComponent('BarChart', (p) =>\n cartesianOption(p, 'bar'),\n) as PublicComponent<BarChartProps>\nexport const LineChart = createChartComponent('LineChart', (p) =>\n cartesianOption(p, 'line'),\n) as PublicComponent<LineChartProps>\nexport const CompositeChart = createChartComponent('CompositeChart', (p) =>\n cartesianOption(p, 'composite'),\n) as PublicComponent<CompositeChartProps>\nexport const PieChart = createChartComponent('PieChart', (p) =>\n radialOption(p),\n) as PublicComponent<PieChartProps>\nexport const DonutChart = createChartComponent('DonutChart', (p) =>\n radialOption(p, true),\n) as PublicComponent<DonutChartProps>\nexport const ScatterChart = createChartComponent('ScatterChart', (p) =>\n scatterOption(p),\n) as PublicComponent<ScatterChartProps>\nexport const BubbleChart = createChartComponent('BubbleChart', (p) =>\n scatterOption(p, true),\n) as PublicComponent<BubbleChartProps>\nexport const RadarChart = createChartComponent(\n 'RadarChart',\n radarOption,\n) as PublicComponent<RadarChartProps>\nexport const RadialBarChart = createChartComponent(\n 'RadialBarChart',\n radialBarOption,\n) as PublicComponent<RadialBarChartProps>\nexport const FunnelChart = createChartComponent('FunnelChart', (p) =>\n simpleOption('funnel', p),\n) as PublicComponent<FunnelChartProps>\nexport const Treemap = createChartComponent('Treemap', (p) =>\n simpleOption('treemap', p),\n) as PublicComponent<TreemapProps>\nexport const SankeyChart = createChartComponent('SankeyChart', (p) =>\n simpleOption('sankey', p),\n) as PublicComponent<SankeyChartProps>\nexport const Sparkline = createChartComponent(\n 'Sparkline',\n sparklineOption,\n) as PublicComponent<SparklineProps>\nexport const Heatmap = createChartComponent(\n 'Heatmap',\n heatmapOption,\n) as PublicComponent<HeatmapProps>\nexport const BarsList = createChartComponent('BarsList', (p) =>\n cartesianOption(\n {\n ...p,\n dataKey: 'name',\n series: [{ name: 'value', color: p.barColor }],\n orientation: 'vertical',\n withXAxis: false,\n withYAxis: true,\n withTooltip: false,\n maxBarWidth: p.barHeight,\n },\n 'bar',\n ),\n) as PublicComponent<BarsListProps>\nexport const GaugeChart = createChartComponent(\n 'GaugeChart',\n gaugeOption,\n) as PublicComponent<GaugeChartProps>\nexport const WaffleChart = createChartComponent(\n 'WaffleChart',\n waffleOption,\n) as PublicComponent<WaffleChartProps>\nexport const MatrixChart = createChartComponent(\n 'MatrixChart',\n matrixOption,\n) as PublicComponent<MatrixChartProps>\nexport const CandlestickChart = createChartComponent(\n 'CandlestickChart',\n candlestickOption,\n) as PublicComponent<CandlestickChartProps>\n\nexport type AreaChartStylesNames =\n | 'area'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type BarChartStylesNames =\n | 'bar'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type LineChartStylesNames =\n | 'line'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type CompositeChartStylesNames =\n | 'line'\n | 'area'\n | 'bar'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type PieChartStylesNames = 'root' | 'label'\nexport type DonutChartStylesNames = PieChartStylesNames\nexport type ScatterChartStylesNames =\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type BubbleChartStylesNames = ScatterChartStylesNames\nexport type RadarChartStylesNames =\n | 'root'\n | 'container'\n | 'axis'\n | 'grid'\n | 'curve'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type RadialBarChartStylesNames =\n | 'root'\n | 'container'\n | 'label'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type FunnelChartStylesNames =\n | 'root'\n | 'container'\n | 'label'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type TreemapStylesNames = 'root' | 'container'\nexport type SankeyChartStylesNames = 'root' | 'container'\nexport type SparklineStylesNames = 'root'\nexport type HeatmapStylesNames =\n | 'root'\n | 'rect'\n | 'weekdayLabel'\n | 'monthLabel'\n | 'legend'\n | 'legendLabel'\n | 'legendRect'\nexport type BarsListStylesNames = 'root' | 'bar' | 'barLabel' | 'barValue' | 'labelsRow'\nexport type GaugeChartStylesNames = 'root' | 'track' | 'section' | 'needle' | 'label'\nexport type WaffleChartStylesNames =\n | 'root'\n | 'grid'\n | 'cell'\n | 'legend'\n | 'legendItem'\n | 'legendSwatch'\n | 'legendLabel'\nexport type MatrixChartStylesNames =\n | 'root'\n | 'cell'\n | 'xLabel'\n | 'yLabel'\n | 'legend'\n | 'legendLabel'\n | 'legendRect'\nexport type CandlestickChartStylesNames = 'candle' | BaseChartStylesNames | ChartTooltipStylesNames\n\nexport type ChartTooltipStylesNames =\n | 'tooltip'\n | 'tooltipItem'\n | 'tooltipItemBody'\n | 'tooltipItemColor'\n | 'tooltipItemName'\n | 'tooltipItemData'\n | 'tooltipLabel'\n | 'tooltipBody'\nexport type ChartLegendStylesNames = 'legendItem' | 'legendItemColor' | 'legendItemName' | 'legend'\nexport type ChartCssVariables = Record<string, string>\n","import { computed, defineComponent, h, type PropType, type SlotsType, type VNodeChild } from 'vue'\nimport type { ChartRenderable, ChartSeries, ChartTooltipPayload } from '../types'\nimport { resolveColor } from '../internal/colors'\n\nexport interface ChartTooltipProps {\n label?: ChartRenderable\n payload?: readonly ChartTooltipPayload[]\n unit?: string\n type?: 'area' | 'radial' | 'scatter'\n segmentId?: string\n series?: ChartSeries[]\n valueFormatter?: (value: number) => ChartRenderable\n showColor?: boolean\n}\n\nexport interface ChartTooltipSlots {\n label?: () => VNodeChild\n valueFormatter?: (input: { value: number; item: ChartTooltipPayload }) => VNodeChild\n}\n\nexport const ChartTooltip = defineComponent({\n name: 'MantineChartTooltip',\n slots: Object as SlotsType<ChartTooltipSlots>,\n props: {\n label: null,\n payload: Array as PropType<readonly ChartTooltipPayload[]>,\n unit: String,\n type: { type: String as PropType<ChartTooltipProps['type']>, default: 'area' },\n segmentId: String,\n series: Array as PropType<ChartSeries[]>,\n valueFormatter: Function as PropType<(value: number) => ChartRenderable>,\n showColor: { type: Boolean, default: true },\n },\n setup(props, { slots }) {\n const labels = computed(() =>\n Object.fromEntries((props.series ?? []).map((item) => [item.name, item.label ?? item.name])),\n )\n return () => {\n const label = props.label !== undefined ? props.label : slots.label?.()\n const payload = props.segmentId\n ? props.payload?.filter(\n (item) => item.name === props.segmentId || item.dataKey === props.segmentId,\n )\n : props.payload\n if (!payload?.length) return null\n return h('div', { class: 'mantine-ChartTooltip-tooltip', 'data-type': props.type }, [\n label != null ? h('div', { class: 'mantine-ChartTooltip-tooltipLabel' }, [label]) : null,\n h(\n 'div',\n { class: 'mantine-ChartTooltip-tooltipBody' },\n payload.map((item) =>\n h('div', { class: 'mantine-ChartTooltip-tooltipItem' }, [\n h('div', { class: 'mantine-ChartTooltip-tooltipItemBody' }, [\n props.showColor\n ? h('span', {\n class: 'mantine-ChartTooltip-tooltipItemColor',\n style: { background: resolveColor(item.color) },\n })\n : null,\n h(\n 'span',\n { class: 'mantine-ChartTooltip-tooltipItemName' },\n labels.value[item.name ?? ''] ?? item.name,\n ),\n ]),\n h('span', { class: 'mantine-ChartTooltip-tooltipItemData' }, [\n props.valueFormatter\n ? props.valueFormatter(Number(item.value))\n : (slots.valueFormatter?.({ value: Number(item.value), item }) ??\n (item.value == null ? '' : String(item.value))),\n props.unit ?? item.unit ?? '',\n ]),\n ]),\n ),\n ),\n ])\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\nimport type { ChartSeries } from '../types'\nimport { resolveColor } from '../internal/colors'\n\nexport interface ChartLegendPayload {\n dataKey?: string\n name?: string\n color?: string\n [key: string]: unknown\n}\nexport interface ChartLegendProps {\n payload?: readonly ChartLegendPayload[]\n onHighlight: (area: string | null) => void\n legendPosition: 'top' | 'bottom' | 'middle'\n series?: ChartSeries[]\n showColor?: boolean\n centered?: boolean\n}\n\nexport const ChartLegend = defineComponent({\n name: 'MantineChartLegend',\n props: {\n payload: Array as PropType<readonly ChartLegendPayload[]>,\n onHighlight: { type: Function as PropType<(area: string | null) => void>, required: true },\n legendPosition: {\n type: String as PropType<ChartLegendProps['legendPosition']>,\n required: true,\n },\n series: Array as PropType<ChartSeries[]>,\n showColor: { type: Boolean, default: true },\n centered: Boolean,\n },\n setup(props) {\n return () =>\n h(\n 'div',\n {\n class: 'mantine-ChartLegend-legend',\n 'data-position': props.legendPosition,\n 'data-centered': props.centered || undefined,\n onMouseleave: () => props.onHighlight(null),\n },\n props.payload?.map((item) => {\n const key = item.dataKey ?? item.name ?? ''\n const label = props.series?.find((s) => s.name === key)?.label ?? key\n return h(\n 'div',\n { class: 'mantine-ChartLegend-legendItem', onMouseenter: () => props.onHighlight(key) },\n [\n props.showColor\n ? h('span', {\n class: 'mantine-ChartLegend-legendItemColor',\n style: { background: resolveColor(item.color) },\n })\n : null,\n h('span', { class: 'mantine-ChartLegend-legendItemName' }, label),\n ],\n )\n }),\n )\n },\n})\n","import type { ChartSeries } from '../../types'\nexport function getSeriesLabels(series: ChartSeries[] | undefined): Record<string, string> {\n return Object.fromEntries((series ?? []).map((item) => [item.name, item.label ?? item.name]))\n}\n"],"mappings":";;;;;;;AAqCA,IAAI,aAAa;AAEjB,SAAgB,kBAAwB;CACtC,IAAI,YACF;CAGF,IAAI;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,aAAa;AACf;;;AC3EA,gBAAgB;AAIhB,SAAgB,qBAAqB,MAAc,aAAuC;CACxF,OAAO,gBAAgB;EACrB,MAAM,UAAU;EAChB,cAAc;EACd,OAAO;GACL,QAAQ;GACR,QAAQ;IAAE,MAAM,CAAC,QAAQ,MAAM;IAAG,SAAS;GAAI;GAC/C,OAAO;IAAE,MAAM,CAAC,QAAQ,MAAM;IAAG,SAAS;GAAO;GACjD,SAAS;GACT,YAAY;IAAE,MAAM;IAAS,SAAS;GAAK;GAC3C,UAAU;IAAE,MAAM;IAAsC,SAAS;GAAS;GAC1E,aAAa;EACf;EACA,OAAO;GAAC;GAAS;GAAY;GAAa;GAAY;GAAuB;EAAU;EACvF,MAAM,OAAO,EAAE,OAAO,MAAM,UAAU;GACpC,MAAM,QAAQ,IAAiC;GAC/C,MAAM,SAAS,gBAAgB;IAAE,GAAG,YAAY,KAAK;IAAG,GAAG,MAAM;GAAO,EAAE;GAC1E,OAAO;IACL,0BAA0B,MAAM,OAAO;IACvC,cAAc,MAAM,OAAO,OAAO;IAClC,YAAY,SAAwB,MAAM,OAAO,UAAU,IAAI;GACjE,CAAC;GACD,MAAM,QAAQ,UAA4B,OAAO,UAAU,WAAW,GAAG,MAAM,MAAM;GACrF,MAAM,iBAAiB,eACrB,OAAO,YACL,OAAO,QAAQ,KAAK,EAAE,QACnB,CAAC,SACA;IAAC;IAAM;IAAO;IAAQ;IAAY;GAAO,EAAE,SAAS,GAAG,KACvD,IAAI,WAAW,OAAO,KACrB,IAAI,WAAW,OAAO,KAAK,QAAQ,MACxC,CACF,CACF;GACA,aACE,EACE,OACA;IACE,GAAG,eAAe;IAClB,OAAO;KAAC;KAAsB,WAAW,KAAK;KAAQ,MAAM;IAAK;IACjE,OAAO,CAAC;KAAE,OAAO,KAAK,MAAM,KAAK;KAAG,QAAQ,KAAK,MAAM,MAAM;IAAE,GAAG,MAAM,KAAK;GAC/E,GACA,CACE,EAAE,QAAQ;IACR,KAAK;IACL,QAAQ,OAAO;IACf,YAAY,MAAM;IAClB,SAAS,MAAM;IACf,aAAa;KAAE,GAAG,MAAM;KAAa,UAAU,MAAM;IAAS;IAC9D,OAAO;IACP,UAAU,UAAmB,KAAK,SAAS,KAAK;IAChD,aAAa,UAAmB,KAAK,YAAY,KAAK;IACtD,cAAc,UAAmB,KAAK,aAAa,KAAK;IACxD,aAAa,UAAmB,KAAK,YAAY,KAAK;IACtD,wBAAwB,UAAmB,KAAK,uBAAuB,KAAK;IAC5E,aAAa,UAAmB,KAAK,YAAY,KAAK;GACxD,CAAC,CACH,CACF;EACJ;CACF,CAAC;AACH;;;ACrEA,IAAM,WAAqC;CACzC,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,KAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF;AAEA,SAAgB,aAAa,OAAgB,WAAW,WAAmB;CACzE,IAA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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/internal/echarts.ts","../src/internal/component.ts","../src/internal/colors.ts","../src/internal/options.ts","../src/charts.ts","../src/ChartTooltip/ChartTooltip.ts","../src/ChartLegend/ChartLegend.ts","../src/utils/get-series-labels/get-series-labels.ts"],"sourcesContent":["import { use } from 'echarts/core'\nimport {\n BarChart as EBarChart,\n CandlestickChart as ECandlestickChart,\n EffectScatterChart,\n FunnelChart as EFunnelChart,\n GaugeChart,\n GraphChart,\n HeatmapChart as EHeatmapChart,\n LineChart as ELineChart,\n PieChart as EPieChart,\n RadarChart as ERadarChart,\n SankeyChart as ESankeyChart,\n ScatterChart as EScatterChart,\n TreemapChart as ETreemapChart,\n} from 'echarts/charts'\nimport {\n AriaComponent,\n CalendarComponent,\n DatasetComponent,\n DataZoomComponent,\n GraphicComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n MarkAreaComponent,\n MarkPointComponent,\n PolarComponent,\n RadarComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n TransformComponent,\n VisualMapComponent,\n} from 'echarts/components'\nimport { CanvasRenderer, SVGRenderer } from 'echarts/renderers'\n\nlet registered = false\n\nexport function registerECharts(): void {\n if (registered) {\n return\n }\n\n use([\n EBarChart,\n ECandlestickChart,\n EffectScatterChart,\n EFunnelChart,\n GaugeChart,\n GraphChart,\n EHeatmapChart,\n ELineChart,\n EPieChart,\n ERadarChart,\n ESankeyChart,\n EScatterChart,\n ETreemapChart,\n AriaComponent,\n CalendarComponent,\n DatasetComponent,\n DataZoomComponent,\n GraphicComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n MarkAreaComponent,\n MarkPointComponent,\n PolarComponent,\n RadarComponent,\n TitleComponent,\n ToolboxComponent,\n TooltipComponent,\n TransformComponent,\n VisualMapComponent,\n CanvasRenderer,\n SVGRenderer,\n ])\n\n registered = true\n}\n","import { computed, defineComponent, h, ref, type Component, type PropType } from 'vue'\nimport type { EChartsOption } from 'echarts'\nimport VChart from 'vue-echarts'\nimport { registerECharts } from './echarts'\n\nregisterECharts()\n\nexport type OptionBuilder = (props: Record<string, unknown>) => EChartsOption\n\nexport function normalizeChartProps(props: Record<string, unknown>) {\n return Object.fromEntries(\n Object.entries(props).map(([key, value]) => [\n key.replace(/-([a-z])/g, (_match, letter: string) => letter.toUpperCase()),\n value,\n ]),\n )\n}\n\nexport function createChartComponent(name: string, buildOption: OptionBuilder): Component {\n return defineComponent({\n name: `Mantine${name}`,\n inheritAttrs: false,\n props: {\n option: Object as PropType<EChartsOption>,\n height: { type: [Number, String], default: 300 },\n width: { type: [Number, String], default: '100%' },\n loading: Boolean,\n autoresize: { type: Boolean, default: true },\n renderer: { type: String as PropType<'canvas' | 'svg'>, default: 'canvas' },\n initOptions: Object as PropType<Record<string, unknown>>,\n },\n emits: ['click', 'dblclick', 'mouseover', 'mouseout', 'legendselectchanged', 'datazoom'],\n setup(props, { attrs, emit, expose }) {\n const chart = ref<InstanceType<typeof VChart>>()\n const option = computed(() => ({\n ...buildOption(normalizeChartProps(attrs)),\n ...props.option,\n }))\n expose({\n getEchartsInstance: () => chart.value?.chart,\n resize: () => chart.value?.resize(),\n setOption: (next: EChartsOption) => chart.value?.setOption(next),\n })\n const size = (value: string | number) => (typeof value === 'number' ? `${value}px` : value)\n const rootAttributes = computed(() =>\n Object.fromEntries(\n Object.entries(attrs).filter(\n ([key]) =>\n ['id', 'dir', 'role', 'tabindex', 'title'].includes(key) ||\n key.startsWith('aria-') ||\n (key.startsWith('data-') && key !== 'data'),\n ),\n ),\n )\n return () =>\n h(\n 'div',\n {\n ...rootAttributes.value,\n class: ['mantine-Chart-root', `mantine-${name}-root`, attrs.class],\n style: [{ width: size(props.width), height: size(props.height) }, attrs.style],\n },\n [\n h(VChart, {\n ref: chart,\n option: option.value,\n autoresize: props.autoresize,\n loading: props.loading,\n initOptions: { ...props.initOptions, renderer: props.renderer },\n class: 'mantine-Chart-container',\n onClick: (event: unknown) => emit('click', event),\n onDblclick: (event: unknown) => emit('dblclick', event),\n onMouseover: (event: unknown) => emit('mouseover', event),\n onMouseout: (event: unknown) => emit('mouseout', event),\n onLegendselectchanged: (event: unknown) => emit('legendselectchanged', event),\n onDatazoom: (event: unknown) => emit('datazoom', event),\n }),\n ],\n )\n },\n })\n}\n","const shadeMap: Record<string, string[]> = {\n blue: [\n '#e7f5ff',\n '#d0ebff',\n '#a5d8ff',\n '#74c0fc',\n '#4dabf7',\n '#339af0',\n '#228be6',\n '#1c7ed6',\n '#1971c2',\n '#1864ab',\n ],\n cyan: [\n '#e3fafc',\n '#c5f6fa',\n '#99e9f2',\n '#66d9e8',\n '#3bc9db',\n '#22b8cf',\n '#15aabf',\n '#1098ad',\n '#0c8599',\n '#0b7285',\n ],\n green: [\n '#ebfbee',\n '#d3f9d8',\n '#b2f2bb',\n '#8ce99a',\n '#69db7c',\n '#51cf66',\n '#40c057',\n '#37b24d',\n '#2f9e44',\n '#2b8a3e',\n ],\n grape: [\n '#f8f0fc',\n '#f3d9fa',\n '#eebefa',\n '#e599f7',\n '#da77f2',\n '#cc5de8',\n '#be4bdb',\n '#ae3ec9',\n '#9c36b5',\n '#862e9c',\n ],\n gray: [\n '#f8f9fa',\n '#f1f3f5',\n '#e9ecef',\n '#dee2e6',\n '#ced4da',\n '#adb5bd',\n '#868e96',\n '#495057',\n '#343a40',\n '#212529',\n ],\n orange: [\n '#fff4e6',\n '#ffe8cc',\n '#ffd8a8',\n '#ffc078',\n '#ffa94d',\n '#ff922b',\n '#fd7e14',\n '#f76707',\n '#e8590c',\n '#d9480f',\n ],\n pink: [\n '#fff0f6',\n '#ffdeeb',\n '#fcc2d7',\n '#faa2c1',\n '#f783ac',\n '#f06595',\n '#e64980',\n '#d6336c',\n '#c2255c',\n '#a61e4d',\n ],\n red: [\n '#fff5f5',\n '#ffe3e3',\n '#ffc9c9',\n '#ffa8a8',\n '#ff8787',\n '#ff6b6b',\n '#fa5252',\n '#f03e3e',\n '#e03131',\n '#c92a2a',\n ],\n teal: [\n '#e6fcf5',\n '#c3fae8',\n '#96f2d7',\n '#63e6be',\n '#38d9a9',\n '#20c997',\n '#12b886',\n '#0ca678',\n '#099268',\n '#087f5b',\n ],\n violet: [\n '#f3f0ff',\n '#e5dbff',\n '#d0bfff',\n '#b197fc',\n '#9775fa',\n '#845ef7',\n '#7950f2',\n '#7048e8',\n '#6741d9',\n '#5f3dc4',\n ],\n yellow: [\n '#fff9db',\n '#fff3bf',\n '#ffec99',\n '#ffe066',\n '#ffd43b',\n '#fcc419',\n '#fab005',\n '#f59f00',\n '#f08c00',\n '#e67700',\n ],\n}\n\nexport function resolveColor(color: unknown, fallback = '#228be6'): string {\n if (typeof color !== 'string' || !color) return fallback\n const [name, rawShade] = color.split('.')\n const shade = Number(rawShade ?? 6)\n return shadeMap[name]?.[Number.isInteger(shade) ? shade : 6] ?? color\n}\n","import type { EChartsOption, SeriesOption } from 'echarts'\nimport type {\n ChartDataItem,\n ChartReferenceAreaProps,\n ChartReferenceDotProps,\n ChartReferenceLineProps,\n ChartSeries,\n} from '../types'\nimport { resolveColor } from './colors'\n\ntype Props = Record<string, unknown>\n\nconst bool = (value: unknown, fallback: boolean) => (typeof value === 'boolean' ? value : fallback)\nconst num = (value: unknown, fallback: number) => (typeof value === 'number' ? value : fallback)\nconst obj = (value: unknown) => (value && typeof value === 'object' ? value : {})\nconst list = <T>(value: unknown): T[] => (Array.isArray(value) ? (value as T[]) : [])\nconst gridLabelBounds = {\n outerBoundsMode: 'same' as const,\n outerBoundsContain: 'axisLabel' as const,\n}\nconst formatter = (props: Props) =>\n typeof props.valueFormatter === 'function'\n ? (props.valueFormatter as (value: number) => string)\n : undefined\n\nfunction tooltip(props: Props): EChartsOption['tooltip'] {\n if (!bool(props.withTooltip, true)) return { show: false }\n const format = formatter(props)\n return {\n trigger: 'axis',\n transitionDuration: num(props.tooltipAnimationDuration, 0) / 1000,\n valueFormatter: format ? (value) => format(Number(value)) : undefined,\n ...obj(props.tooltipProps),\n }\n}\n\nfunction markLine(referenceLines: ChartReferenceLineProps[] | undefined) {\n if (!referenceLines?.length) return undefined\n return {\n silent: true,\n symbol: 'none',\n data: referenceLines.map((line) => ({\n xAxis: line.x,\n yAxis: line.y,\n label: typeof line.label === 'string' ? { formatter: line.label } : line.label,\n lineStyle: {\n color: resolveColor(line.color, '#868e96'),\n type: line.strokeDasharray ? 'dashed' : 'solid',\n },\n })),\n }\n}\n\nfunction markArea(referenceAreas: ChartReferenceAreaProps[] | undefined) {\n if (!referenceAreas?.length) return undefined\n return {\n silent: true,\n data: referenceAreas.map((area) => [\n {\n xAxis: area.x1,\n yAxis: area.y1,\n itemStyle: { color: resolveColor(area.color, '#868e96'), opacity: 0.15 },\n label: typeof area.label === 'string' ? { formatter: area.label } : area.label,\n },\n { xAxis: area.x2, yAxis: area.y2 },\n ]),\n }\n}\n\nfunction markPoint(referenceDots: ChartReferenceDotProps[] | undefined) {\n if (!referenceDots?.length) return undefined\n return {\n silent: true,\n data: referenceDots.map((dot) => ({\n coord: [dot.x, dot.y],\n symbolSize: (dot.r ?? 6) * 2,\n itemStyle: { color: resolveColor(dot.color, '#868e96') },\n label: typeof dot.label === 'string' ? { formatter: dot.label } : dot.label,\n })),\n }\n}\n\nexport function cartesianOption(\n props: Props,\n kind: 'line' | 'area' | 'bar' | 'composite',\n): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<\n ChartSeries & {\n type?: string\n stackId?: string\n strokeDasharray?: string | number\n curveType?: string\n }\n >(props.series)\n const dataKey = String(props.dataKey ?? 'name')\n const horizontal = props.orientation !== 'vertical'\n const chartType = String(props.type ?? 'default')\n const category = data.map((item) => item[dataKey] as string | number)\n const commonAxis = { axisLabel: { color: resolveColor(props.textColor, '#868e96') } }\n const categoryAxis = { type: 'category' as const, data: category, ...commonAxis }\n const valueAxis = { type: 'value' as const, name: props.yAxisLabel as string, ...commonAxis }\n const mapped = series.map((item, index) => {\n const itemKind = kind === 'composite' ? (item.type ?? 'line') : kind === 'area' ? 'line' : kind\n const color = resolveColor(item.color, resolveColor(`blue.${6 + (index % 3)}`))\n const stack =\n chartType === 'stacked' || chartType === 'percent' || chartType === 'stream'\n ? 'stack'\n : item.stackId\n const base = {\n name: item.label ?? item.name,\n data: data.map((entry) => entry[item.name] as number | null),\n yAxisIndex: item.yAxisId ? 1 : 0,\n stack,\n markLine:\n index === 0\n ? markLine(props.referenceLines as ChartReferenceLineProps[] | undefined)\n : undefined,\n markArea:\n index === 0\n ? markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined)\n : undefined,\n markPoint:\n index === 0\n ? markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined)\n : undefined,\n }\n if (itemKind === 'bar') {\n return {\n ...base,\n type: 'bar',\n barMaxWidth: props.maxBarWidth as number,\n barMinHeight: num(props.minBarSize, 0),\n itemStyle: { color, opacity: num(props.fillOpacity, 1) },\n label: {\n show: bool(props.withBarValueLabel, false),\n position: horizontal ? 'top' : 'right',\n },\n }\n }\n return {\n ...base,\n type: 'line',\n smooth: !['linear', 'step', 'stepBefore', 'stepAfter'].includes(\n String(props.curveType ?? item.curveType ?? 'monotone'),\n ),\n step: String(props.curveType).startsWith('step') ? 'middle' : false,\n connectNulls: bool(props.connectNulls, true),\n showSymbol: bool(props.withDots, true),\n symbolSize: 6,\n lineStyle: {\n color,\n width: chartType === 'stream' ? 0 : num(props.strokeWidth, 2),\n type: item.strokeDasharray ? 'dashed' : 'solid',\n },\n itemStyle: { color, opacity: num(props.fillOpacity, 1) },\n areaStyle: itemKind === 'area' ? { color, opacity: num(props.fillOpacity, 0.2) } : undefined,\n label: { show: bool(props.withPointLabels, false), position: 'top' },\n }\n }) as unknown as SeriesOption[]\n\n if (kind === 'area' && chartType === 'stream') {\n mapped.unshift({\n type: 'line',\n stack: 'stack',\n silent: true,\n symbol: 'none',\n data: data.map(\n (entry) =>\n -series.reduce((total, item) => {\n const value = entry[item.name]\n return total + (typeof value === 'number' && Number.isFinite(value) ? value : 0)\n }, 0) / 2,\n ),\n lineStyle: { opacity: 0 },\n areaStyle: { opacity: 0 },\n tooltip: { show: false },\n } as SeriesOption)\n }\n\n return {\n animationDurationUpdate: num(props.tooltipAnimationDuration, 0),\n color: series.map((item) => resolveColor(item.color)),\n grid: {\n left: 48,\n right: bool(props.withRightYAxis, false) ? 48 : 16,\n top: bool(props.withLegend, false) ? 44 : 16,\n bottom: 38,\n ...gridLabelBounds,\n ...obj(props.gridProps),\n },\n legend: { show: bool(props.withLegend, false), ...obj(props.legendProps) },\n tooltip: tooltip(props),\n xAxis: horizontal\n ? {\n ...categoryAxis,\n show: bool(props.withXAxis, true),\n name: props.xAxisLabel as string,\n ...obj(props.xAxisProps),\n }\n : { ...valueAxis, show: bool(props.withXAxis, true), ...obj(props.xAxisProps) },\n yAxis: horizontal\n ? [\n {\n ...valueAxis,\n show: chartType === 'stream' ? false : bool(props.withYAxis, true),\n ...obj(props.yAxisProps),\n },\n {\n ...valueAxis,\n show: bool(props.withRightYAxis, false),\n position: 'right',\n name: props.rightYAxisLabel as string,\n ...obj(props.rightYAxisProps),\n },\n ]\n : { ...categoryAxis, show: bool(props.withYAxis, true), ...obj(props.yAxisProps) },\n series: mapped,\n }\n}\n\nexport function radialOption(props: Props, donut = false): EChartsOption {\n const data = list<{ name: string; value: number; color?: string }>(props.data)\n const resolvedData = data.map(({ color, ...item }) => {\n const resolvedColor = resolveColor(color)\n return { ...item, itemStyle: { color: resolvedColor } }\n })\n const withLabels = bool(props.withLabels, false)\n const withLegend = bool(props.withLegend, false)\n const labelsPosition = props.labelsPosition === 'inside' ? 'inside' : 'outside'\n const withOutsideLabels = withLabels && labelsPosition === 'outside'\n const outerRadius = withOutsideLabels ? '65%' : '75%'\n const valueFormat = formatter(props)\n const labelFormatter =\n props.labelsType === 'percent'\n ? '{d}%'\n : valueFormat\n ? (params: { value?: unknown }) => valueFormat(Number(params.value))\n : '{c}'\n\n return {\n color: resolvedData.map((item) => item.itemStyle.color),\n legend: {\n show: withLegend,\n type: 'scroll',\n left: 'center',\n bottom: 8,\n data: resolvedData.map((item) => ({\n name: item.name,\n itemStyle: { color: item.itemStyle.color },\n })),\n ...obj(props.legendProps),\n },\n tooltip: { trigger: 'item', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n series: [\n {\n type: 'pie',\n left: 0,\n right: 0,\n top: 0,\n bottom: withLegend ? 56 : 0,\n center: ['50%', '50%'],\n radius: donut ? [`${num(props.thickness, 40)}%`, outerRadius] : ['0%', outerRadius],\n startAngle: num(props.startAngle, 90),\n endAngle: typeof props.endAngle === 'number' ? props.endAngle : undefined,\n minAngle: num(props.minAngle, 0),\n padAngle: num(props.paddingAngle, 0),\n avoidLabelOverlap: true,\n roseType:\n props.type === 'pie'\n ? undefined\n : props.type === 'donut'\n ? undefined\n : (props.type as 'radius' | 'area'),\n label: {\n show: withLabels,\n position: labelsPosition,\n formatter: labelFormatter,\n ...(withOutsideLabels ? { bleedMargin: 5, edgeDistance: '8%' } : {}),\n },\n labelLine: { show: withLabels && bool(props.withLabelsLine, false) },\n labelLayout: { hideOverlap: true },\n data: resolvedData,\n ...obj(props.pieProps),\n },\n ],\n graphic: props.chartLabel\n ? [\n {\n type: 'text',\n left: 'center',\n top: 'middle',\n style: {\n text: String(props.chartLabel),\n fill: resolveColor(props.chartLabelColor, '#212529'),\n fontSize: num(props.chartLabelFontSize, 18),\n },\n },\n ]\n : undefined,\n }\n}\n\nexport function scatterOption(props: Props, bubble = false): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<ChartSeries>(props.series)\n const xKey = String(props.dataKey ?? props.xAxisKey ?? 'x')\n const yKey = String(props.yAxisKey ?? 'y')\n const zKey = String(props.zAxisKey ?? 'z')\n return {\n grid: { ...gridLabelBounds, ...obj(props.gridProps) },\n legend: { show: bool(props.withLegend, false), ...obj(props.legendProps) },\n tooltip: { trigger: 'item', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n xAxis: { type: 'value', show: bool(props.withXAxis, true), ...obj(props.xAxisProps) },\n yAxis: props.withRightYAxis\n ? [\n {\n type: 'value',\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n {\n type: 'value',\n show: true,\n position: 'right',\n name: props.rightYAxisLabel as string,\n ...obj(props.rightYAxisProps),\n },\n ]\n : {\n type: 'value',\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n series: (series.length\n ? series\n : [{ name: String(props.name ?? 'value'), color: props.color as string }]\n ).map((item, index) => ({\n type: 'scatter',\n name: item.label ?? item.name,\n yAxisIndex: item.yAxisId === 'right' ? 1 : 0,\n data: data\n .filter((entry) => !entry.name || entry.name === item.name)\n .map((entry) => [entry[xKey], entry[yKey], entry[zKey], entry]),\n symbolSize: bubble\n ? (value: unknown[]) => Math.max(4, Math.sqrt(Number(value[2] ?? 1)) * num(props.range, 4))\n : num(props.size, 10),\n itemStyle: { color: resolveColor(item.color) },\n markLine:\n index === 0\n ? markLine(props.referenceLines as ChartReferenceLineProps[] | undefined)\n : undefined,\n markArea:\n index === 0\n ? markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined)\n : undefined,\n markPoint:\n index === 0\n ? markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined)\n : undefined,\n })) as unknown as SeriesOption[],\n }\n}\n\nexport function gaugeOption(props: Props): EChartsOption {\n const min = num(props.min, 0)\n const max = num(props.max, 100)\n const value = num(props.value, min)\n const sections = list<{ value: number; color: string }>(props.sections)\n const range = max - min || 1\n const axisColors: [number, string][] = sections.length\n ? sections.map((section) => [\n Math.max(0, Math.min(1, (section.value - min) / range)),\n resolveColor(section.color),\n ])\n : [[1, resolveColor(props.trackColor, '#e9ecef')]]\n const format =\n typeof props.valueFormatter === 'function'\n ? (props.valueFormatter as (input: number) => string)\n : (input: number) => String(input)\n\n return {\n series: [\n {\n type: 'gauge',\n min,\n max,\n startAngle: 90 - num(props.startAngle, -120),\n endAngle: 90 - num(props.endAngle, 120),\n radius: '90%',\n axisLine: {\n roundCap: bool(props.roundCaps, false),\n lineStyle: {\n width: num(props.thickness, 12),\n color: axisColors,\n },\n },\n progress: sections.length\n ? { show: false }\n : {\n show: true,\n width: num(props.thickness, 12),\n roundCap: bool(props.roundCaps, false),\n itemStyle: { color: resolveColor(props.filledColor) },\n },\n pointer:\n typeof props.target === 'number'\n ? {\n show: true,\n width: num(props.targetSize, 2),\n length: '85%',\n itemStyle: { color: resolveColor(props.targetColor, '#212529') },\n }\n : { show: false },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n anchor: { show: false },\n title: { show: false },\n detail: {\n show: props.label !== null,\n formatter: typeof props.label === 'string' ? props.label : format(value),\n color: 'inherit',\n },\n data: [{ value: typeof props.target === 'number' ? props.target : value }],\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nfunction normalizeSegmentValue(value: number) {\n return Number.isFinite(value) ? Math.max(0, value) : 0\n}\n\nexport function waffleOption(props: Props): EChartsOption {\n const rows = Math.max(1, num(props.rows, 10))\n const columns = Math.max(1, num(props.columns, 10))\n const cellCount = rows * columns\n const data = list<{ name: string; value: number; color: string; key?: string | number }>(\n props.data,\n )\n const values = data.map((item) => normalizeSegmentValue(item.value))\n const sum = values.reduce((total, value) => total + value, 0)\n const denominator = props.total == null ? sum : Math.max(num(props.total, sum), sum)\n const filledTarget = denominator ? Math.round((sum / denominator) * cellCount) : 0\n const allocated = values.map((value) => (sum ? Math.floor((value / sum) * filledTarget) : 0))\n let remainder = filledTarget - allocated.reduce((total, value) => total + value, 0)\n const fractions = values\n .map((value, index) => ({\n index,\n fraction: sum ? (value / sum) * filledTarget - allocated[index] : 0,\n }))\n .sort((a, b) => b.fraction - a.fraction)\n\n for (let index = 0; index < fractions.length && remainder > 0; index += 1, remainder -= 1) {\n allocated[fractions[index].index] += 1\n }\n\n const cells = data.flatMap((_, segmentIndex) =>\n Array.from({ length: allocated[segmentIndex] }, () => segmentIndex),\n )\n while (cells.length < cellCount) cells.push(-1)\n\n const direction = String(props.fillDirection ?? 'left-to-right')\n const points = cells.map((segmentIndex, index) => {\n let x = index % columns\n let y = Math.floor(index / columns)\n if (direction === 'right-to-left') x = columns - 1 - x\n if (direction === 'top-to-bottom' || direction === 'bottom-to-top') {\n x = Math.floor(index / rows)\n y = index % rows\n if (direction === 'bottom-to-top') y = rows - 1 - y\n }\n const item = data[segmentIndex]\n return {\n value: [x, y, segmentIndex],\n name: item?.name,\n itemStyle: {\n color: item ? resolveColor(item.color) : resolveColor(props.emptyColor, '#e9ecef'),\n },\n }\n })\n\n return {\n grid: { left: 0, right: 0, top: 0, bottom: bool(props.withLegend, true) ? 36 : 0 },\n xAxis: { type: 'value', min: -0.5, max: columns - 0.5, show: false },\n yAxis: { type: 'value', min: -0.5, max: rows - 0.5, inverse: true, show: false },\n legend: {\n show: bool(props.withLegend, true),\n data: data.map((item) => item.name),\n top: props.legendPosition === 'top' ? 0 : undefined,\n bottom: props.legendPosition === 'bottom' ? 0 : undefined,\n left: props.legendPosition === 'left' ? 0 : undefined,\n right: props.legendPosition === 'right' ? 0 : undefined,\n },\n tooltip: {\n show: bool(props.withTooltip, false),\n formatter: (params: any) => {\n const item = data[params.value?.[2]]\n if (!item) return ''\n return typeof props.getTooltipLabel === 'function'\n ? String(\n (props.getTooltipLabel as (input: Record<string, unknown>) => unknown)({\n ...item,\n count: allocated[params.value[2]],\n }),\n )\n : `${item.name}: ${item.value}`\n },\n },\n series: [\n { type: 'scatter', symbol: 'roundRect', symbolSize: num(props.cellSize, 20), data: points },\n ],\n }\n}\n\nexport function matrixOption(props: Props): EChartsOption {\n const data = list<{ x: string; y: string; value: number | null }>(props.data)\n const xLabels = list<string>(props.xLabels).length\n ? list<string>(props.xLabels)\n : [...new Set(data.map((cell) => cell.x))]\n const yLabels = list<string>(props.yLabels).length\n ? list<string>(props.yLabels)\n : [...new Set(data.map((cell) => cell.y))]\n const values = data.flatMap((cell) => (typeof cell.value === 'number' ? [cell.value] : []))\n const domain =\n (props.domain as [number, number] | undefined) ??\n ([Math.min(0, ...values), Math.max(1, ...values)] as [number, number])\n const colors = list<string>(props.colors).length\n ? list<string>(props.colors).map((color) => resolveColor(color))\n : ['#ebfbee', '#8ce99a', '#40c057', '#2b8a3e']\n\n return {\n grid: {\n left: bool(props.withYLabels, false) ? num(props.yLabelsWidth, 60) : 0,\n right: 0,\n top:\n props.xLabelsPosition === 'top' && bool(props.withXLabels, false)\n ? num(props.xLabelsHeight, 60)\n : 0,\n bottom:\n props.xLabelsPosition !== 'top' && bool(props.withXLabels, false)\n ? num(props.xLabelsHeight, 60)\n : bool(props.withLegend, false)\n ? 30\n : 0,\n },\n xAxis: {\n type: 'category',\n data: xLabels,\n position: props.xLabelsPosition === 'top' ? 'top' : 'bottom',\n show: bool(props.withXLabels, false),\n axisLabel: { rotate: num(props.xLabelsRotation, -90), fontSize: num(props.fontSize, 12) },\n },\n yAxis: {\n type: 'category',\n data: yLabels,\n inverse: true,\n show: bool(props.withYLabels, false),\n axisLabel: { fontSize: num(props.fontSize, 12) },\n },\n visualMap: {\n show: bool(props.withLegend, false),\n min: domain[0],\n max: domain[1],\n inRange: { color: colors },\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n text: (props.legendLabels as string[] | undefined) ?? ['More', 'Less'],\n },\n tooltip: {\n show: bool(props.withTooltip, false) && typeof props.getTooltipLabel === 'function',\n formatter: (params: any) => {\n const cell = data[params.dataIndex]\n return String(\n (props.getTooltipLabel as ((input: typeof cell) => unknown) | undefined)?.(cell) ?? '',\n )\n },\n ...obj(props.tooltipProps),\n },\n series: [\n {\n type: 'heatmap',\n data: data.map((cell) => {\n const extra =\n typeof props.getCellProps === 'function'\n ? (props.getCellProps as (input: typeof cell) => Record<string, unknown>)(cell)\n : {}\n const empty = cell.value === null || !Number.isFinite(cell.value)\n return {\n value: [xLabels.indexOf(cell.x), yLabels.indexOf(cell.y), cell.value, cell],\n ...extra,\n itemStyle: {\n ...(empty && props.emptyColor\n ? { color: resolveColor(props.emptyColor as string) }\n : {}),\n ...obj(extra.itemStyle),\n },\n }\n }),\n itemStyle: {\n borderWidth: num(props.gap, 1),\n borderColor: 'transparent',\n borderRadius: num(props.cellRadius, 2),\n },\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nexport function candlestickOption(props: Props): EChartsOption {\n const data = list<Record<string, unknown>>(props.data)\n const keys = {\n open: 'open',\n high: 'high',\n low: 'low',\n close: 'close',\n ...obj(props.dataKeys),\n } as Record<string, string>\n const dataKey = String(props.dataKey ?? 'date')\n\n return {\n grid: {\n left: 48,\n right: 16,\n top: 16,\n bottom: 38,\n ...gridLabelBounds,\n ...obj(props.gridProps),\n },\n tooltip: { trigger: 'axis', show: bool(props.withTooltip, true), ...obj(props.tooltipProps) },\n xAxis: {\n type: 'category',\n data: data.map((item) => String(item[dataKey] ?? '')),\n show: bool(props.withXAxis, true),\n name: props.xAxisLabel as string,\n ...obj(props.xAxisProps),\n },\n yAxis: {\n type: 'value',\n scale: true,\n show: bool(props.withYAxis, true),\n name: props.yAxisLabel as string,\n ...obj(props.yAxisProps),\n },\n series: [\n {\n type: 'candlestick',\n data: data.map((item) => [\n item[keys.open],\n item[keys.close],\n item[keys.low],\n item[keys.high],\n ]),\n barMaxWidth: props.maxCandleWidth as number,\n itemStyle: {\n color: resolveColor(props.upColor, '#12b886'),\n color0: resolveColor(props.downColor, '#fa5252'),\n borderColor: resolveColor(props.upColor, '#12b886'),\n borderColor0: resolveColor(props.downColor, '#fa5252'),\n borderWidth: num(props.candleStrokeWidth, 1),\n },\n markLine: markLine(props.referenceLines as ChartReferenceLineProps[] | undefined),\n markArea: markArea(props.referenceAreas as ChartReferenceAreaProps[] | undefined),\n markPoint: markPoint(props.referenceDots as ChartReferenceDotProps[] | undefined),\n },\n ] as unknown as SeriesOption[],\n }\n}\n\nexport function sparklineOption(props: Props): EChartsOption {\n const data = list<number | null>(props.data)\n const trend = props.trendColors as\n | { positive?: string; negative?: string; neutral?: string }\n | undefined\n const color = trend\n ? resolveColor(\n data.at(-1)! > data[0]!\n ? trend.positive\n : data.at(-1)! < data[0]!\n ? trend.negative\n : trend.neutral,\n )\n : resolveColor(props.color)\n return {\n grid: { left: 0, right: 0, top: 1, bottom: 1 },\n xAxis: { type: 'category', show: false },\n yAxis: { type: 'value', show: false, scale: true },\n series: [\n {\n type: 'line',\n data,\n showSymbol: false,\n connectNulls: bool(props.connectNulls, true),\n smooth: props.curveType !== 'linear',\n lineStyle: { color, width: num(props.strokeWidth, 2) },\n areaStyle: bool(props.withGradient, true)\n ? { color, opacity: num(props.fillOpacity, 0.6) }\n : undefined,\n },\n ],\n }\n}\n\nexport function radarOption(props: Props): EChartsOption {\n const data = list<ChartDataItem>(props.data)\n const series = list<ChartSeries>(props.series)\n const key = String(props.dataKey ?? 'name')\n const max = num(\n props.maxValue,\n Math.max(1, ...data.flatMap((row) => series.map((s) => Number(row[s.name] ?? 0)))),\n )\n return {\n legend: { show: bool(props.withLegend, false) },\n tooltip: { show: bool(props.withTooltip, true) },\n radar: {\n indicator: data.map((row) => ({ name: String(row[key]), max })),\n shape: props.shape === 'circle' ? 'circle' : 'polygon',\n },\n series: [\n {\n type: 'radar',\n data: series.map((s) => ({\n name: s.label ?? s.name,\n value: data.map((row) => Number(row[s.name] ?? 0)),\n lineStyle: { color: resolveColor(s.color) },\n itemStyle: { color: resolveColor(s.color) },\n areaStyle: bool(props.withPolarGrid, false) ? {} : undefined,\n })),\n },\n ],\n }\n}\n\nexport function simpleOption(type: 'funnel' | 'treemap' | 'sankey', props: Props): EChartsOption {\n const data = list<Record<string, unknown>>(props.data)\n if (type === 'sankey')\n return {\n tooltip: { show: bool(props.withTooltip, true) },\n series: [\n {\n type,\n data: list(props.nodes ?? data),\n links: list(props.links),\n emphasis: { focus: 'adjacency' },\n ...obj(props.sankeyProps),\n },\n ],\n }\n return {\n tooltip: { show: bool(props.withTooltip, true) },\n legend: { show: bool(props.withLegend, false) },\n series: [\n {\n type,\n data: data.map((item) => ({ ...item, itemStyle: { color: resolveColor(item.color) } })),\n ...obj(props[`${type}Props`]),\n },\n ],\n }\n}\n\nexport function radialBarOption(props: Props): EChartsOption {\n const data = list<{ name: string; value: number; color?: string }>(props.data)\n return {\n legend: { show: bool(props.withLegend, false) },\n tooltip: { show: bool(props.withTooltip, true) },\n polar: {},\n angleAxis: { max: num(props.maxValue, 100), show: false },\n radiusAxis: {\n type: 'category',\n data: data.map((i) => i.name),\n show: bool(props.withLabels, true),\n },\n series: [\n {\n type: 'bar',\n coordinateSystem: 'polar',\n roundCap: true,\n data: data.map((i) => ({ value: i.value, itemStyle: { color: resolveColor(i.color) } })),\n },\n ],\n }\n}\n\nexport function heatmapOption(props: Props): EChartsOption {\n const input =\n props.data && typeof props.data === 'object' ? (props.data as Record<string, number>) : {}\n const data = Object.entries(input).map(([date, value]) => [date, value])\n const values = Object.values(input)\n const date = (value: unknown, fallback: string) =>\n value instanceof Date\n ? value.toISOString().slice(0, 10)\n : typeof value === 'string'\n ? value\n : fallback\n const start = date(props.startDate, String(data[0]?.[0] ?? new Date().toISOString().slice(0, 10)))\n const end = date(props.endDate, String(data.at(-1)?.[0] ?? start))\n return {\n tooltip: { show: bool(props.withTooltip, false) },\n visualMap: {\n show: bool(props.withLegend, false),\n min: (props.domain as number[] | undefined)?.[0] ?? Math.min(0, ...values),\n max: (props.domain as number[] | undefined)?.[1] ?? Math.max(1, ...values),\n inRange: {\n color: list<string>(props.colors).length\n ? list<string>(props.colors).map((color) => resolveColor(color))\n : ['#ebfbee', '#2f9e44'],\n },\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n },\n calendar: {\n range: [start, end],\n cellSize: num(props.rectSize, 10) + num(props.gap, 1),\n dayLabel: {\n show: bool(props.withWeekdayLabels, false),\n firstDay: num(props.firstDayOfWeek, 1),\n },\n monthLabel: { show: bool(props.withMonthLabels, false) },\n itemStyle: {\n borderWidth: num(props.gap, 1),\n borderColor: 'transparent',\n borderRadius: num(props.rectRadius, 2),\n },\n },\n series: [{ type: 'heatmap', coordinateSystem: 'calendar', data }],\n }\n}\n","import type { MantineColor } from '@mantine-vue/core'\nimport type { DefineComponent, HTMLAttributes, VNodeChild } from 'vue'\nimport { createChartComponent } from './internal/component'\nimport {\n cartesianOption,\n candlestickOption,\n gaugeOption,\n heatmapOption,\n matrixOption,\n radarOption,\n radialBarOption,\n radialOption,\n scatterOption,\n simpleOption,\n sparklineOption,\n waffleOption,\n} from './internal/options'\nimport type {\n BaseChartStylesNames,\n ChartData,\n ChartOptionProps,\n ChartRootProps,\n ChartSeries,\n GridChartBaseProps,\n MantineChartDotProps,\n} from './types'\n\nexport type LineChartCurveType =\n | 'bump'\n | 'linear'\n | 'natural'\n | 'monotone'\n | 'step'\n | 'stepBefore'\n | 'stepAfter'\nexport type AreaChartCurveType = LineChartCurveType\nexport type CompositeChartCurveType = LineChartCurveType\nexport interface LineChartSeries extends ChartSeries {\n strokeDasharray?: string | number\n curveType?: LineChartCurveType\n}\nexport interface AreaChartSeries extends ChartSeries {\n color: MantineColor\n strokeDasharray?: string | number\n curveType?: AreaChartCurveType\n}\nexport interface BarChartSeries extends ChartSeries {\n stackId?: string\n}\nexport interface CompositeChartSeries extends ChartSeries {\n type: 'line' | 'area' | 'bar'\n strokeDasharray?: string | number\n}\n\nexport interface LineChartProps extends GridChartBaseProps {\n series: LineChartSeries[]\n type?: 'default' | 'gradient'\n gradientStops?: { offset: number; color: MantineColor }[]\n curveType?: LineChartCurveType\n fillOpacity?: number\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n lineChartProps?: ChartOptionProps\n connectNulls?: boolean\n lineProps?: ChartOptionProps | ((series: LineChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n}\nexport interface AreaChartProps extends GridChartBaseProps {\n series: AreaChartSeries[]\n type?: 'default' | 'stacked' | 'percent' | 'split' | 'stream'\n withGradient?: boolean\n curveType?: AreaChartCurveType\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n areaChartProps?: ChartOptionProps\n fillOpacity?: number\n splitColors?: [MantineColor, MantineColor]\n splitOffset?: number\n connectNulls?: boolean\n areaProps?: ChartOptionProps | ((series: AreaChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n}\nexport interface BarChartProps extends GridChartBaseProps {\n series: BarChartSeries[]\n type?: 'default' | 'stacked' | 'percent' | 'waterfall'\n fillOpacity?: number\n cursorFill?: MantineColor\n barChartProps?: ChartOptionProps\n barProps?: ChartOptionProps | ((series: BarChartSeries) => ChartOptionProps)\n withBarValueLabel?: boolean\n valueLabelProps?: ChartOptionProps | ((series: BarChartSeries) => ChartOptionProps)\n minBarSize?: number\n maxBarWidth?: number\n barLabelColor?: MantineColor\n getBarColor?: (value: number, series: BarChartSeries) => MantineColor\n}\nexport interface CompositeChartProps extends Omit<GridChartBaseProps, 'orientation'> {\n series: CompositeChartSeries[]\n curveType?: CompositeChartCurveType\n withDots?: boolean\n dotProps?: MantineChartDotProps\n activeDotProps?: MantineChartDotProps\n strokeWidth?: number\n connectNulls?: boolean\n lineProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n areaProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n barProps?: ChartOptionProps | ((series: CompositeChartSeries) => ChartOptionProps)\n withPointLabels?: boolean\n withBarValueLabel?: boolean\n minBarSize?: number\n maxBarWidth?: number\n composedChartProps?: ChartOptionProps\n}\n\nexport interface PieChartCell {\n name: string\n value: number\n color?: MantineColor\n}\nexport interface PieChartProps extends ChartRootProps {\n data: PieChartCell[]\n withTooltip?: boolean\n withLegend?: boolean\n legendProps?: ChartOptionProps\n withLabels?: boolean\n withLabelsLine?: boolean\n labelsPosition?: 'inside' | 'outside'\n labelsType?: 'value' | 'percent'\n tooltipDataSource?: 'segment' | 'all'\n valueFormatter?: (value: number) => string\n strokeWidth?: number\n size?: number\n startAngle?: number\n endAngle?: number\n paddingAngle?: number\n pieProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n}\nexport interface DonutChartProps extends PieChartProps {\n thickness?: number\n chartLabel?: string\n chartLabelColor?: MantineColor\n chartLabelFontSize?: number\n chartLabelProps?: ChartOptionProps\n}\n\nexport interface ScatterChartSeries extends ChartSeries {\n data?: ChartData\n}\nexport interface ScatterChartProps extends GridChartBaseProps {\n data: ChartData\n series: ScatterChartSeries[]\n xAxisKey?: string\n yAxisKey?: string\n scatterProps?: ChartOptionProps | ((series: ScatterChartSeries) => ChartOptionProps)\n}\nexport interface BubbleChartProps extends ChartRootProps {\n data: ChartData\n xAxisKey?: string\n yAxisKey?: string\n zAxisKey?: string\n name?: string\n color?: MantineColor\n range?: number\n withTooltip?: boolean\n withXAxis?: boolean\n withYAxis?: boolean\n xAxisProps?: ChartOptionProps\n yAxisProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n gridProps?: ChartOptionProps\n valueFormatter?: (value: number) => string\n}\n\nexport interface RadarChartProps extends GridChartBaseProps {\n series: ChartSeries[]\n maxValue?: number\n withPolarGrid?: boolean\n withAngleAxis?: boolean\n withRadiusAxis?: boolean\n shape?: 'polygon' | 'circle'\n radarProps?: ChartOptionProps\n}\nexport interface RadialBarChartCell {\n name: string\n value: number\n color?: MantineColor\n}\nexport interface RadialBarChartProps extends ChartRootProps {\n data: RadialBarChartCell[]\n maxValue?: number\n withLabels?: boolean\n withLegend?: boolean\n withTooltip?: boolean\n startAngle?: number\n endAngle?: number\n barSize?: number\n radialBarProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n legendProps?: ChartOptionProps\n}\nexport interface FunnelChartCell extends PieChartCell {\n label?: string\n}\nexport interface FunnelChartProps extends ChartRootProps {\n data: FunnelChartCell[]\n withTooltip?: boolean\n withLabels?: boolean\n withLegend?: boolean\n valueFormatter?: (value: number) => string\n funnelProps?: ChartOptionProps\n tooltipProps?: ChartOptionProps\n}\n\nexport interface TreemapData {\n name: string\n value?: number\n color?: MantineColor\n children?: TreemapData[]\n}\nexport interface TreemapProps extends ChartRootProps {\n data: TreemapData[]\n withTooltip?: boolean\n withLegend?: boolean\n valueFormatter?: (value: number) => string\n treemapProps?: ChartOptionProps\n}\nexport interface SankeyChartNode {\n name: string\n color?: MantineColor\n [key: string]: unknown\n}\nexport interface SankeyChartLink {\n source: string | number\n target: string | number\n value: number\n [key: string]: unknown\n}\nexport interface SankeyChartProps extends ChartRootProps {\n data?: SankeyChartNode[]\n nodes?: SankeyChartNode[]\n links: SankeyChartLink[]\n withTooltip?: boolean\n valueFormatter?: (value: number) => string\n sankeyProps?: ChartOptionProps\n}\n\nexport interface SparklineTrendColors {\n positive: MantineColor\n negative: MantineColor\n neutral?: MantineColor\n}\nexport interface SparklineProps extends ChartRootProps {\n data: (number | null)[]\n color?: MantineColor\n withGradient?: boolean\n fillOpacity?: number\n curveType?: LineChartCurveType\n strokeWidth?: number\n trendColors?: SparklineTrendColors\n connectNulls?: boolean\n areaProps?: ChartOptionProps\n}\nexport interface HeatmapRectData {\n date: string\n value: number | null\n}\nexport interface HeatmapProps extends ChartRootProps {\n data: Record<string, number>\n domain?: [number, number]\n startDate?: Date | string\n endDate?: Date | string\n withMonthLabels?: boolean\n monthLabels?: string[]\n withWeekdayLabels?: boolean\n weekdayLabels?: string[]\n withOutsideDates?: boolean\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n rectSize?: number\n gap?: number\n rectRadius?: number\n colors?: string[]\n weekdaysLabelsWidth?: number\n monthsLabelsHeight?: number\n fontSize?: number\n getTooltipLabel?: (input: HeatmapRectData) => VNodeChild\n withTooltip?: boolean\n tooltipProps?: ChartOptionProps\n getRectProps?: (input: HeatmapRectData) => Record<string, unknown>\n splitMonths?: boolean\n withLegend?: boolean\n legendLabels?: [string, string]\n}\n\nexport interface GaugeChartSection {\n value: number\n color: MantineColor\n}\nexport interface GaugeChartProps extends ChartRootProps {\n value: number\n min?: number\n max?: number\n target?: number\n sections?: GaugeChartSection[]\n thickness?: number\n size?: number\n startAngle?: number\n endAngle?: number\n label?: VNodeChild\n valueFormatter?: (value: number) => string\n trackColor?: MantineColor\n filledColor?: MantineColor\n targetColor?: MantineColor\n targetSize?: number\n roundCaps?: boolean\n}\n\nexport interface WaffleChartCell {\n name: string\n value: number\n color: MantineColor\n key?: string | number\n}\nexport interface WaffleChartProps extends ChartRootProps {\n data: WaffleChartCell[]\n rows?: number\n columns?: number\n total?: number\n gap?: number\n cellRadius?: number\n cellSize?: number\n emptyColor?: MantineColor\n withTooltip?: boolean\n getTooltipLabel?: (cell: WaffleChartCell & { count: number }) => VNodeChild\n withLegend?: boolean\n legendPosition?: 'top' | 'bottom' | 'left' | 'right'\n fillDirection?: 'left-to-right' | 'right-to-left' | 'top-to-bottom' | 'bottom-to-top'\n size?: number\n}\n\nexport interface MatrixChartCell {\n x: string\n y: string\n value: number | null\n}\nexport type MatrixChartData = MatrixChartCell[]\nexport interface MatrixChartProps extends ChartRootProps {\n data: MatrixChartData\n xLabels?: string[]\n yLabels?: string[]\n domain?: [number, number]\n colors?: MantineColor[]\n cellSize?: number\n gap?: number\n cellRadius?: number\n withTooltip?: boolean\n getTooltipLabel?: (cell: MatrixChartCell) => VNodeChild\n tooltipProps?: ChartOptionProps\n getCellProps?: (cell: MatrixChartCell) => Record<string, unknown>\n yLabelsWidth?: number\n xLabelsHeight?: number\n xLabelsPosition?: 'top' | 'bottom'\n fontSize?: number\n emptyColor?: MantineColor\n withLegend?: boolean\n legendLabels?: [string, string]\n withXLabels?: boolean\n withYLabels?: boolean\n xLabelsRotation?: number\n}\n\nexport interface CandlestickChartDataKeys {\n open: string\n high: string\n low: string\n close: string\n}\nexport interface CandlestickChartLabels {\n open: string\n high: string\n low: string\n close: string\n}\nexport interface CandlestickChartProps extends GridChartBaseProps {\n dataKeys?: CandlestickChartDataKeys\n labels?: Partial<CandlestickChartLabels>\n upColor?: MantineColor\n downColor?: MantineColor\n maxCandleWidth?: number\n candleStrokeWidth?: number\n composedChartProps?: ChartOptionProps\n}\n\nexport interface BarsListBarData {\n name: string\n value: number\n color?: MantineColor\n textColor?: MantineColor\n variant?: 'light' | 'filled'\n}\nexport interface BarsListProps extends ChartRootProps {\n data: BarsListBarData[]\n valueFormatter?: (value: number) => string\n barsLabel?: string\n valueLabel?: string\n getBarProps?: (data: BarsListBarData) => HTMLAttributes\n renderBar?: (data: BarsListBarData, defaultBar: VNodeChild) => VNodeChild\n barGap?: string | number\n minBarSize?: string | number\n barHeight?: string | number\n barColor?: MantineColor\n barTextColor?: MantineColor\n autoContrast?: boolean\n}\n\ntype PublicComponent<P> = DefineComponent<P>\nexport const AreaChart = createChartComponent('AreaChart', (p) =>\n cartesianOption(p, 'area'),\n) as PublicComponent<AreaChartProps>\nexport const BarChart = createChartComponent('BarChart', (p) =>\n cartesianOption(p, 'bar'),\n) as PublicComponent<BarChartProps>\nexport const LineChart = createChartComponent('LineChart', (p) =>\n cartesianOption(p, 'line'),\n) as PublicComponent<LineChartProps>\nexport const CompositeChart = createChartComponent('CompositeChart', (p) =>\n cartesianOption(p, 'composite'),\n) as PublicComponent<CompositeChartProps>\nexport const PieChart = createChartComponent('PieChart', (p) =>\n radialOption(p),\n) as PublicComponent<PieChartProps>\nexport const DonutChart = createChartComponent('DonutChart', (p) =>\n radialOption(p, true),\n) as PublicComponent<DonutChartProps>\nexport const ScatterChart = createChartComponent('ScatterChart', (p) =>\n scatterOption(p),\n) as PublicComponent<ScatterChartProps>\nexport const BubbleChart = createChartComponent('BubbleChart', (p) =>\n scatterOption(p, true),\n) as PublicComponent<BubbleChartProps>\nexport const RadarChart = createChartComponent(\n 'RadarChart',\n radarOption,\n) as PublicComponent<RadarChartProps>\nexport const RadialBarChart = createChartComponent(\n 'RadialBarChart',\n radialBarOption,\n) as PublicComponent<RadialBarChartProps>\nexport const FunnelChart = createChartComponent('FunnelChart', (p) =>\n simpleOption('funnel', p),\n) as PublicComponent<FunnelChartProps>\nexport const Treemap = createChartComponent('Treemap', (p) =>\n simpleOption('treemap', p),\n) as PublicComponent<TreemapProps>\nexport const SankeyChart = createChartComponent('SankeyChart', (p) =>\n simpleOption('sankey', p),\n) as PublicComponent<SankeyChartProps>\nexport const Sparkline = createChartComponent(\n 'Sparkline',\n sparklineOption,\n) as PublicComponent<SparklineProps>\nexport const Heatmap = createChartComponent(\n 'Heatmap',\n heatmapOption,\n) as PublicComponent<HeatmapProps>\nexport const BarsList = createChartComponent('BarsList', (p) =>\n cartesianOption(\n {\n ...p,\n dataKey: 'name',\n series: [{ name: 'value', color: p.barColor }],\n orientation: 'vertical',\n withXAxis: false,\n withYAxis: true,\n withTooltip: false,\n maxBarWidth: p.barHeight,\n },\n 'bar',\n ),\n) as PublicComponent<BarsListProps>\nexport const GaugeChart = createChartComponent(\n 'GaugeChart',\n gaugeOption,\n) as PublicComponent<GaugeChartProps>\nexport const WaffleChart = createChartComponent(\n 'WaffleChart',\n waffleOption,\n) as PublicComponent<WaffleChartProps>\nexport const MatrixChart = createChartComponent(\n 'MatrixChart',\n matrixOption,\n) as PublicComponent<MatrixChartProps>\nexport const CandlestickChart = createChartComponent(\n 'CandlestickChart',\n candlestickOption,\n) as PublicComponent<CandlestickChartProps>\n\nexport type AreaChartStylesNames =\n | 'area'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type BarChartStylesNames =\n | 'bar'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type LineChartStylesNames =\n | 'line'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type CompositeChartStylesNames =\n | 'line'\n | 'area'\n | 'bar'\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type PieChartStylesNames = 'root' | 'label'\nexport type DonutChartStylesNames = PieChartStylesNames\nexport type ScatterChartStylesNames =\n | import('./types').BaseChartStylesNames\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type BubbleChartStylesNames = ScatterChartStylesNames\nexport type RadarChartStylesNames =\n | 'root'\n | 'container'\n | 'axis'\n | 'grid'\n | 'curve'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type RadialBarChartStylesNames =\n | 'root'\n | 'container'\n | 'label'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type FunnelChartStylesNames =\n | 'root'\n | 'container'\n | 'label'\n | ChartLegendStylesNames\n | ChartTooltipStylesNames\nexport type TreemapStylesNames = 'root' | 'container'\nexport type SankeyChartStylesNames = 'root' | 'container'\nexport type SparklineStylesNames = 'root'\nexport type HeatmapStylesNames =\n | 'root'\n | 'rect'\n | 'weekdayLabel'\n | 'monthLabel'\n | 'legend'\n | 'legendLabel'\n | 'legendRect'\nexport type BarsListStylesNames = 'root' | 'bar' | 'barLabel' | 'barValue' | 'labelsRow'\nexport type GaugeChartStylesNames = 'root' | 'track' | 'section' | 'sectionCap' | 'needle' | 'label'\nexport type WaffleChartStylesNames =\n | 'root'\n | 'grid'\n | 'cell'\n | 'legend'\n | 'legendItem'\n | 'legendSwatch'\n | 'legendLabel'\nexport type MatrixChartStylesNames =\n | 'root'\n | 'cell'\n | 'xLabel'\n | 'yLabel'\n | 'legend'\n | 'legendLabel'\n | 'legendRect'\nexport type CandlestickChartStylesNames = 'candle' | BaseChartStylesNames | ChartTooltipStylesNames\n\nexport type ChartTooltipStylesNames =\n | 'tooltip'\n | 'tooltipItem'\n | 'tooltipItemBody'\n | 'tooltipItemColor'\n | 'tooltipItemName'\n | 'tooltipItemData'\n | 'tooltipLabel'\n | 'tooltipBody'\nexport type ChartLegendStylesNames = 'legendItem' | 'legendItemColor' | 'legendItemName' | 'legend'\nexport type ChartCssVariables = Record<string, string>\n","import { computed, defineComponent, h, type PropType, type SlotsType, type VNodeChild } from 'vue'\nimport type { ChartRenderable, ChartSeries, ChartTooltipPayload } from '../types'\nimport { resolveColor } from '../internal/colors'\n\nexport interface ChartTooltipProps {\n label?: ChartRenderable\n payload?: readonly ChartTooltipPayload[]\n unit?: string\n type?: 'area' | 'radial' | 'scatter'\n segmentId?: string\n series?: ChartSeries[]\n valueFormatter?: (value: number) => ChartRenderable\n showColor?: boolean\n}\n\nexport interface ChartTooltipSlots {\n label?: () => VNodeChild\n valueFormatter?: (input: { value: number; item: ChartTooltipPayload }) => VNodeChild\n}\n\nexport const ChartTooltip = defineComponent({\n name: 'MantineChartTooltip',\n slots: Object as SlotsType<ChartTooltipSlots>,\n props: {\n label: null,\n payload: Array as PropType<readonly ChartTooltipPayload[]>,\n unit: String,\n type: { type: String as PropType<ChartTooltipProps['type']>, default: 'area' },\n segmentId: String,\n series: Array as PropType<ChartSeries[]>,\n valueFormatter: Function as PropType<(value: number) => ChartRenderable>,\n showColor: { type: Boolean, default: true },\n },\n setup(props, { slots }) {\n const labels = computed(() =>\n Object.fromEntries((props.series ?? []).map((item) => [item.name, item.label ?? item.name])),\n )\n return () => {\n const label = props.label !== undefined ? props.label : slots.label?.()\n const payload = props.segmentId\n ? props.payload?.filter(\n (item) => item.name === props.segmentId || item.dataKey === props.segmentId,\n )\n : props.payload\n if (!payload?.length) return null\n return h('div', { class: 'mantine-ChartTooltip-tooltip', 'data-type': props.type }, [\n label != null ? h('div', { class: 'mantine-ChartTooltip-tooltipLabel' }, [label]) : null,\n h(\n 'div',\n { class: 'mantine-ChartTooltip-tooltipBody' },\n payload.map((item) =>\n h('div', { class: 'mantine-ChartTooltip-tooltipItem' }, [\n h('div', { class: 'mantine-ChartTooltip-tooltipItemBody' }, [\n props.showColor\n ? h('span', {\n class: 'mantine-ChartTooltip-tooltipItemColor',\n style: { background: resolveColor(item.color) },\n })\n : null,\n h(\n 'span',\n { class: 'mantine-ChartTooltip-tooltipItemName' },\n labels.value[item.name ?? ''] ?? item.name,\n ),\n ]),\n h('span', { class: 'mantine-ChartTooltip-tooltipItemData' }, [\n props.valueFormatter\n ? props.valueFormatter(Number(item.value))\n : (slots.valueFormatter?.({ value: Number(item.value), item }) ??\n (item.value == null ? '' : String(item.value))),\n props.unit ?? item.unit ?? '',\n ]),\n ]),\n ),\n ),\n ])\n }\n },\n})\n","import { defineComponent, h, type PropType } from 'vue'\nimport type { ChartSeries } from '../types'\nimport { resolveColor } from '../internal/colors'\n\nexport interface ChartLegendPayload {\n dataKey?: string\n name?: string\n color?: string\n [key: string]: unknown\n}\nexport interface ChartLegendProps {\n payload?: readonly ChartLegendPayload[]\n onHighlight: (area: string | null) => void\n legendPosition: 'top' | 'bottom' | 'middle'\n series?: ChartSeries[]\n showColor?: boolean\n centered?: boolean\n}\n\nexport const ChartLegend = defineComponent({\n name: 'MantineChartLegend',\n props: {\n payload: Array as PropType<readonly ChartLegendPayload[]>,\n onHighlight: { type: Function as PropType<(area: string | null) => void>, required: true },\n legendPosition: {\n type: String as PropType<ChartLegendProps['legendPosition']>,\n required: true,\n },\n series: Array as PropType<ChartSeries[]>,\n showColor: { type: Boolean, default: true },\n centered: Boolean,\n },\n setup(props) {\n return () =>\n h(\n 'div',\n {\n class: 'mantine-ChartLegend-legend',\n 'data-position': props.legendPosition,\n 'data-centered': props.centered || undefined,\n onMouseleave: () => props.onHighlight(null),\n },\n props.payload?.map((item) => {\n const key = item.dataKey ?? item.name ?? ''\n const label = props.series?.find((s) => s.name === key)?.label ?? key\n return h(\n 'div',\n { class: 'mantine-ChartLegend-legendItem', onMouseenter: () => props.onHighlight(key) },\n [\n props.showColor\n ? h('span', {\n class: 'mantine-ChartLegend-legendItemColor',\n style: { background: resolveColor(item.color) },\n })\n : null,\n h('span', { class: 'mantine-ChartLegend-legendItemName' }, label),\n ],\n )\n }),\n )\n },\n})\n","import type { ChartSeries } from '../../types'\nexport function getSeriesLabels(series: ChartSeries[] | undefined): Record<string, string> {\n return Object.fromEntries((series ?? []).map((item) => [item.name, item.label ?? item.name]))\n}\n"],"mappings":";;;;;;;AAqCA,IAAI,aAAa;AAEjB,SAAgB,kBAAwB;CACtC,IAAI,YACF;CAGF,IAAI;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,aAAa;AACf;;;AC3EA,gBAAgB;AAIhB,SAAgB,oBAAoB,OAAgC;CAClE,OAAO,OAAO,YACZ,OAAO,QAAQ,KAAK,EAAE,KAAK,CAAC,KAAK,WAAW,CAC1C,IAAI,QAAQ,cAAc,QAAQ,WAAmB,OAAO,YAAY,CAAC,GACzE,KACF,CAAC,CACH;AACF;AAEA,SAAgB,qBAAqB,MAAc,aAAuC;CACxF,OAAO,gBAAgB;EACrB,MAAM,UAAU;EAChB,cAAc;EACd,OAAO;GACL,QAAQ;GACR,QAAQ;IAAE,MAAM,CAAC,QAAQ,MAAM;IAAG,SAAS;GAAI;GAC/C,OAAO;IAAE,MAAM,CAAC,QAAQ,MAAM;IAAG,SAAS;GAAO;GACjD,SAAS;GACT,YAAY;IAAE,MAAM;IAAS,SAAS;GAAK;GAC3C,UAAU;IAAE,MAAM;IAAsC,SAAS;GAAS;GAC1E,aAAa;EACf;EACA,OAAO;GAAC;GAAS;GAAY;GAAa;GAAY;GAAuB;EAAU;EACvF,MAAM,OAAO,EAAE,OAAO,MAAM,UAAU;GACpC,MAAM,QAAQ,IAAiC;GAC/C,MAAM,SAAS,gBAAgB;IAC7B,GAAG,YAAY,oBAAoB,KAAK,CAAC;IACzC,GAAG,MAAM;GACX,EAAE;GACF,OAAO;IACL,0BAA0B,MAAM,OAAO;IACvC,cAAc,MAAM,OAAO,OAAO;IAClC,YAAY,SAAwB,MAAM,OAAO,UAAU,IAAI;GACjE,CAAC;GACD,MAAM,QAAQ,UAA4B,OAAO,UAAU,WAAW,GAAG,MAAM,MAAM;GACrF,MAAM,iBAAiB,eACrB,OAAO,YACL,OAAO,QAAQ,KAAK,EAAE,QACnB,CAAC,SACA;IAAC;IAAM;IAAO;IAAQ;IAAY;GAAO,EAAE,SAAS,GAAG,KACvD,IAAI,WAAW,OAAO,KACrB,IAAI,WAAW,OAAO,KAAK,QAAQ,MACxC,CACF,CACF;GACA,aACE,EACE,OACA;IACE,GAAG,eAAe;IAClB,OAAO;KAAC;KAAsB,WAAW,KAAK;KAAQ,MAAM;IAAK;IACjE,OAAO,CAAC;KAAE,OAAO,KAAK,MAAM,KAAK;KAAG,QAAQ,KAAK,MAAM,MAAM;IAAE,GAAG,MAAM,KAAK;GAC/E,GACA,CACE,EAAE,QAAQ;IACR,KAAK;IACL,QAAQ,OAAO;IACf,YAAY,MAAM;IAClB,SAAS,MAAM;IACf,aAAa;KAAE,GAAG,MAAM;KAAa,UAAU,MAAM;IAAS;IAC9D,OAAO;IACP,UAAU,UAAmB,KAAK,SAAS,KAAK;IAChD,aAAa,UAAmB,KAAK,YAAY,KAAK;IACtD,cAAc,UAAmB,KAAK,aAAa,KAAK;IACxD,aAAa,UAAmB,KAAK,YAAY,KAAK;IACtD,wBAAwB,UAAmB,KAAK,uBAAuB,KAAK;IAC5E,aAAa,UAAmB,KAAK,YAAY,KAAK;GACxD,CAAC,CACH,CACF;EACJ;CACF,CAAC;AACH;;;ACjFA,IAAM,WAAqC;CACzC,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,KAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,Q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"}
|
package/lib/charts.d.ts
CHANGED
|
@@ -94,6 +94,8 @@ export interface PieChartCell {
|
|
|
94
94
|
export interface PieChartProps extends ChartRootProps {
|
|
95
95
|
data: PieChartCell[];
|
|
96
96
|
withTooltip?: boolean;
|
|
97
|
+
withLegend?: boolean;
|
|
98
|
+
legendProps?: ChartOptionProps;
|
|
97
99
|
withLabels?: boolean;
|
|
98
100
|
withLabelsLine?: boolean;
|
|
99
101
|
labelsPosition?: 'inside' | 'outside';
|
|
@@ -414,7 +416,7 @@ export type SankeyChartStylesNames = 'root' | 'container';
|
|
|
414
416
|
export type SparklineStylesNames = 'root';
|
|
415
417
|
export type HeatmapStylesNames = 'root' | 'rect' | 'weekdayLabel' | 'monthLabel' | 'legend' | 'legendLabel' | 'legendRect';
|
|
416
418
|
export type BarsListStylesNames = 'root' | 'bar' | 'barLabel' | 'barValue' | 'labelsRow';
|
|
417
|
-
export type GaugeChartStylesNames = 'root' | 'track' | 'section' | 'needle' | 'label';
|
|
419
|
+
export type GaugeChartStylesNames = 'root' | 'track' | 'section' | 'sectionCap' | 'needle' | 'label';
|
|
418
420
|
export type WaffleChartStylesNames = 'root' | 'grid' | 'cell' | 'legend' | 'legendItem' | 'legendSwatch' | 'legendLabel';
|
|
419
421
|
export type MatrixChartStylesNames = 'root' | 'cell' | 'xLabel' | 'yLabel' | 'legend' | 'legendLabel' | 'legendRect';
|
|
420
422
|
export type CandlestickChartStylesNames = 'candle' | BaseChartStylesNames | ChartTooltipStylesNames;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { type Component } from 'vue';
|
|
2
2
|
import type { EChartsOption } from 'echarts';
|
|
3
3
|
export type OptionBuilder = (props: Record<string, unknown>) => EChartsOption;
|
|
4
|
+
export declare function normalizeChartProps(props: Record<string, unknown>): {
|
|
5
|
+
[k: string]: unknown;
|
|
6
|
+
};
|
|
4
7
|
export declare function createChartComponent(name: string, buildOption: OptionBuilder): Component;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantine-vue/charts",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "Charts components built with Apache ECharts and Mantine Vue",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"vue-echarts": "^8.0.1"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@mantine-vue/core": "3.
|
|
41
|
+
"@mantine-vue/core": "3.5.0",
|
|
42
42
|
"echarts": ">=6.0.0",
|
|
43
43
|
"vue": "^3.5.0",
|
|
44
44
|
"vue-echarts": ">=8.0.0"
|