@mantine-vue/charts 3.4.0 → 3.6.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 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
- containLabel: true,
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 data = list(props.data);
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: data.map((item) => resolveColor(item.color)),
519
+ color: resolvedData.map((item) => item.itemStyle.color),
500
520
  legend: {
501
- show: bool(props.withLabels, false) || bool(props.withLegend, false),
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
- radius: donut ? [`${num(props.thickness, 40)}%`, "75%"] : ["0%", "75%"],
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: bool(props.withLabels, false),
518
- formatter: props.withLabelsLine ? "{b}: {d}%" : "{b}"
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
- data: data.map((item) => ({
522
- ...item,
523
- itemStyle: { color: resolveColor(item.color) }
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
- containLabel: true,
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: { lineStyle: {
617
- width: num(props.thickness, 12),
618
- color: axisColors
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
- containLabel: true,
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
- containLabel: true,
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 data = list(props.data);
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: data.map((item) => resolveColor(item.color)),
495
+ color: resolvedData.map((item) => item.itemStyle.color),
476
496
  legend: {
477
- show: bool(props.withLabels, false) || bool(props.withLegend, false),
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
- radius: donut ? [`${num(props.thickness, 40)}%`, "75%"] : ["0%", "75%"],
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: bool(props.withLabels, false),
494
- formatter: props.withLabelsLine ? "{b}: {d}%" : "{b}"
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
- data: data.map((item) => ({
498
- ...item,
499
- itemStyle: { color: resolveColor(item.color) }
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
- containLabel: true,
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: { lineStyle: {
593
- width: num(props.thickness, 12),
594
- color: axisColors
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
- containLabel: true,
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,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,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,OAAO;CAChD,MAAM,CAAC,MAAM,YAAY,MAAM,MAAM,GAAG;CACxC,MAAM,QAAQ,OAAO,YAAY,CAAC;CAClC,OAAO,SAAS,QAAQ,OAAO,UAAU,KAAK,IAAI,QAAQ,MAAM;AAClE;;;AChIA,IAAM,QAAQ,OAAgB,aAAuB,OAAO,UAAU,YAAY,QAAQ;AAC1F,IAAM,OAAO,OAAgB,aAAsB,OAAO,UAAU,WAAW,QAAQ;AACvF,IAAM,OAAO,UAAoB,SAAS,OAAO,UAAU,WAAW,QAAQ,CAAC;AAC/E,IAAM,QAAW,UAAyB,MAAM,QAAQ,KAAK,IAAK,QAAgB,CAAC;AACnF,IAAM,kBAAkB;CACtB,iBAAiB;CACjB,oBAAoB;AACtB;AACA,IAAM,aAAa,UACjB,OAAO,MAAM,mBAAmB,aAC3B,MAAM,iBACP,KAAA;AAEN,SAAS,QAAQ,OAAwC;CACvD,IAAI,CAAC,KAAK,MAAM,aAAa,IAAI,GAAG,OAAO,EAAE,MAAM,MAAM;CACzD,MAAM,SAAS,UAAU,KAAK;CAC9B,OAAO;EACL,SAAS;EACT,oBAAoB,IAAI,MAAM,0BAA0B,CAAC,IAAI;EAC7D,gBAAgB,UAAU,UAAU,OAAO,OAAO,KAAK,CAAC,IAAI,KAAA;EAC5D,GAAG,IAAI,MAAM,YAAY;CAC3B;AACF;AAEA,SAAS,SAAS,gBAAuD;CACvE,IAAI,CAAC,gBAAgB,QAAQ,OAAO,KAAA;CACpC,OAAO;EACL,QAAQ;EACR,QAAQ;EACR,MAAM,eAAe,KAAK,UAAU;GAClC,OAAO,KAAK;GACZ,OAAO,KAAK;GACZ,OAAO,OAAO,KAAK,UAAU,WAAW,EAAE,WAAW,KAAK,MAAM,IAAI,KAAK;GACzE,WAAW;IACT,OAAO,aAAa,KAAK,OAAO,SAAS;IACzC,MAAM,KAAK,kBAAkB,WAAW;GAC1C;EACF,EAAE;CACJ;AACF;AAEA,SAAS,SAAS,gBAAuD;CACvE,IAAI,CAAC,gBAAgB,QAAQ,OAAO,KAAA;CACpC,OAAO;EACL,QAAQ;EACR,MAAM,eAAe,KAAK,SAAS,CACjC;GACE,OAAO,KAAK;GACZ,OAAO,KAAK;GACZ,WAAW;IAAE,OAAO,aAAa,KAAK,OAAO,SAAS;IAAG,SAAS;GAAK;GACvE,OAAO,OAAO,KAAK,UAAU,WAAW,EAAE,WAAW,KAAK,MAAM,IAAI,KAAK;EAC3E,GACA;GAAE,OAAO,KAAK;GAAI,OAAO,KAAK;EAAG,CACnC,CAAC;CACH;AACF;AAEA,SAAS,UAAU,eAAqD;CACtE,IAAI,CAAC,eAAe,QAAQ,OAAO,KAAA;CACnC,OAAO;EACL,QAAQ;EACR,MAAM,cAAc,KAAK,SAAS;GAChC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;GACpB,aAAa,IAAI,KAAK,KAAK;GAC3B,WAAW,EAAE,OAAO,aAAa,IAAI,OAAO,SAAS,EAAE;GACvD,OAAO,OAAO,IAAI,UAAU,WAAW,EAAE,WAAW,IAAI,MAAM,IAAI,IAAI;EACxE,EAAE;CACJ;AACF;AAEA,SAAgB,gBACd,OACA,MACe;CACf,MAAM,OAAO,KAAoB,MAAM,IAAI;CAC3C,MAAM,SAAS,KAOb,MAAM,MAAM;CACd,MAAM,UAAU,OAAO,MAAM,WAAW,MAAM;CAC9C,MAAM,aAAa,MAAM,gBAAgB;CACzC,MAAM,YAAY,OAAO,MAAM,QAAQ,SAAS;CAChD,MAAM,WAAW,KAAK,KAAK,SAAS,KAAK,QAA2B;CACpE,MAAM,aAAa,EAAE,WAAW,EAAE,OAAO,aAAa,MAAM,WAAW,SAAS,EAAE,EAAE;CACpF,MAAM,eAAe;EAAE,MAAM;EAAqB,MAAM;EAAU,GAAG;CAAW;CAChF,MAAM,YAAY;EAAE,MAAM;EAAkB,MAAM,MAAM;EAAsB,GAAG;CAAW;CAC5F,MAAM,SAAS,OAAO,KAAK,MAAM,UAAU;EACzC,MAAM,WAAW,SAAS,cAAe,KAAK,QAAQ,SAAU,SAAS,SAAS,SAAS;EAC3F,MAAM,QAAQ,aAAa,KAAK,OAAO,aAAa,QAAQ,IAAK,QAAQ,GAAI,CAAC;EAC9E,MAAM,QACJ,cAAc,aAAa,cAAc,aAAa,cAAc,WAChE,UACA,KAAK;EACX,MAAM,OAAO;GACX,MAAM,KAAK,SAAS,KAAK;GACzB,MAAM,KAAK,KAAK,UAAU,MAAM,KAAK,KAAsB;GAC3D,YAAY,KAAK,UAAU,IAAI;GAC/B;GACA,UACE,UAAU,IACN,SAAS,MAAM,cAAuD,IACtE,KAAA;GACN,UACE,UAAU,IACN,SAAS,MAAM,cAAuD,IACtE,KAAA;GACN,WACE,UAAU,IACN,UAAU,MAAM,aAAqD,IACrE,KAAA;EACR;EACA,IAAI,aAAa,OACf,OAAO;GACL,GAAG;GACH,MAAM;GACN,aAAa,MAAM;GACnB,cAAc,IAAI,MAAM,YAAY,CAAC;GACrC,WAAW;IAAE;IAAO,SAAS,IAAI,MAAM,aAAa,CAAC;GAAE;GACvD,OAAO;IACL,MAAM,KAAK,MAAM,mBAAmB,KAAK;IACzC,UAAU,aAAa,QAAQ;GACjC;EACF;EAEF,OAAO;GACL,GAAG;GACH,MAAM;GACN,QAAQ,CAAC;IAAC;IAAU;IAAQ;IAAc;GAAW,EAAE,SACrD,OAAO,MAAM,aAAa,KAAK,aAAa,UAAU,CACxD;GACA,MAAM,OAAO,MAAM,SAAS,EAAE,WAAW,MAAM,IAAI,WAAW;GAC9D,cAAc,KAAK,MAAM,cAAc,IAAI;GAC3C,YAAY,KAAK,MAAM,UAAU,IAAI;GACrC,YAAY;GACZ,WAAW;IACT;IACA,OAAO,cAAc,WAAW,IAAI,IAAI,MAAM,aAAa,CAAC;IAC5D,MAAM,KAAK,kBAAkB,WAAW;GAC1C;GACA,WAAW;IAAE;IAAO,SAAS,IAAI,MAAM,aAAa,CAAC;GAAE;GACvD,WAAW,aAAa,SAAS;IAAE;IAAO,SAAS,IAAI,MAAM,aAAa,EAAG;GAAE,IAAI,KAAA;GACnF,OAAO;IAAE,MAAM,KAAK,MAAM,iBAAiB,KAAK;IAAG,UAAU;GAAM;EACrE;CACF,CAAC;CAED,IAAI,SAAS,UAAU,cAAc,UACnC,OAAO,QAAQ;EACb,MAAM;EACN,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,MAAM,KAAK,KACR,UACC,CAAC,OAAO,QAAQ,OAAO,SAAS;GAC9B,MAAM,QAAQ,MAAM,KAAK;GACzB,OAAO,SAAS,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;EAChF,GAAG,CAAC,IAAI,CACZ;EACA,WAAW,EAAE,SAAS,EAAE;EACxB,WAAW,EAAE,SAAS,EAAE;EACxB,SAAS,EAAE,MAAM,MAAM;CACzB,CAAiB;CAGnB,OAAO;EACL,yBAAyB,IAAI,MAAM,0BAA0B,CAAC;EAC9D,OAAO,OAAO,KAAK,SAAS,aAAa,KAAK,KAAK,CAAC;EACpD,MAAM;GACJ,MAAM;GACN,OAAO,KAAK,MAAM,gBAAgB,KAAK,IAAI,KAAK;GAChD,KAAK,KAAK,MAAM,YAAY,KAAK,IAAI,KAAK;GAC1C,QAAQ;GACR,GAAG;GACH,GAAG,IAAI,MAAM,SAAS;EACxB;EACA,QAAQ;GAAE,MAAM,KAAK,MAAM,YAAY,KAAK;GAAG,GAAG,IAAI,MAAM,WAAW;EAAE;EACzE,SAAS,QAAQ,KAAK;EACtB,OAAO,aACH;GACE,GAAG;GACH,MAAM,KAAK,MAAM,WAAW,IAAI;GAChC,MAAM,MAAM;GACZ,GAAG,IAAI,MAAM,UAAU;EACzB,IACA;GAAE,GAAG;GAAW,MAAM,KAAK,MAAM,WAAW,IAAI;GAAG,GAAG,IAAI,MAAM,UAAU;EAAE;EAChF,OAAO,aACH,CACE;GACE,GAAG;GACH,MAAM,cAAc,WAAW,QAAQ,KAAK,MAAM,WAAW,IAAI;GACjE,GAAG,IAAI,MAAM,UAAU;EACzB,GACA;GACE,GAAG;GACH,MAAM,KAAK,MAAM,gBAAgB,KAAK;GACtC,UAAU;GACV,MAAM,MAAM;GACZ,GAAG,IAAI,MAAM,eAAe;EAC9B,CACF,IACA;GAAE,GAAG;GAAc,MAAM,KAAK,MAAM,WAAW,IAAI;GAAG,GAAG,IAAI,MAAM,UAAU;EAAE;EACnF,QAAQ;CACV;AACF;AAEA,SAAgB,aAAa,OAAc,QAAQ,OAAsB;CAEvE,MAAM,eADO,KAAsD,MAAM,IACpD,EAAK,KAAK,EAAE,OAAO,GAAG,WAAW;EACpD,MAAM,gBAAgB,aAAa,KAAK;EACxC,OAAO;GAAE,GAAG;GAAM,WAAW,EAAE,OAAO,cAAc;EAAE;CACxD,CAAC;CACD,MAAM,aAAa,KAAK,MAAM,YAAY,KAAK;CAC/C,MAAM,aAAa,KAAK,MAAM,YAAY,KAAK;CAC/C,MAAM,iBAAiB,MAAM,mBAAmB,WAAW,WAAW;CACtE,MAAM,oBAAoB,cAAc,mBAAmB;CAC3D,MAAM,cAAc,oBAAoB,QAAQ;CAChD,MAAM,cAAc,UAAU,KAAK;CACnC,MAAM,iBACJ,MAAM,eAAe,YACjB,SACA,eACG,WAAgC,YAAY,OAAO,OAAO,KAAK,CAAC,IACjE;CAER,OAAO;EACL,OAAO,aAAa,KAAK,SAAS,KAAK,UAAU,KAAK;EACtD,QAAQ;GACN,MAAM;GACN,MAAM;GACN,MAAM;GACN,QAAQ;GACR,MAAM,aAAa,KAAK,UAAU;IAChC,MAAM,KAAK;IACX,WAAW,EAAE,OAAO,KAAK,UAAU,MAAM;GAC3C,EAAE;GACF,GAAG,IAAI,MAAM,WAAW;EAC1B;EACA,SAAS;GAAE,SAAS;GAAQ,MAAM,KAAK,MAAM,aAAa,IAAI;GAAG,GAAG,IAAI,MAAM,YAAY;EAAE;EAC5F,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,OAAO;GACP,KAAK;GACL,QAAQ,aAAa,KAAK;GAC1B,QAAQ,CAAC,OAAO,KAAK;GACrB,QAAQ,QAAQ,CAAC,GAAG,IAAI,MAAM,WAAW,EAAE,EAAE,IAAI,WAAW,IAAI,CAAC,MAAM,WAAW;GAClF,YAAY,IAAI,MAAM,YAAY,EAAE;GACpC,UAAU,OAAO,MAAM,aAAa,WAAW,MAAM,WAAW,KAAA;GAChE,UAAU,IAAI,MAAM,UAAU,CAAC;GAC/B,UAAU,IAAI,MAAM,cAAc,CAAC;GACnC,mBAAmB;GACnB,UACE,MAAM,SAAS,QACX,KAAA,IACA,MAAM,SAAS,UACb,KAAA,IACC,MAAM;GACf,OAAO;IACL,MAAM;IACN,UAAU;IACV,WAAW;IACX,GAAI,oBAAoB;KAAE,aAAa;KAAG,cAAc;IAAK,IAAI,CAAC;GACpE;GACA,WAAW,EAAE,MAAM,cAAc,KAAK,MAAM,gBAAgB,KAAK,EAAE;GACnE,aAAa,EAAE,aAAa,KAAK;GACjC,MAAM;GACN,GAAG,IAAI,MAAM,QAAQ;EACvB,CACF;EACA,SAAS,MAAM,aACX,CACE;GACE,MAAM;GACN,MAAM;GACN,KAAK;GACL,OAAO;IACL,MAAM,OAAO,MAAM,UAAU;IAC7B,MAAM,aAAa,MAAM,iBAAiB,SAAS;IACnD,UAAU,IAAI,MAAM,oBAAoB,EAAE;GAC5C;EACF,CACF,IACA,KAAA;CACN;AACF;AAEA,SAAgB,cAAc,OAAc,SAAS,OAAsB;CACzE,MAAM,OAAO,KAAoB,MAAM,IAAI;CAC3C,MAAM,SAAS,KAAkB,MAAM,MAAM;CAC7C,MAAM,OAAO,OAAO,MAAM,WAAW,MAAM,YAAY,GAAG;CAC1D,MAAM,OAAO,OAAO,MAAM,YAAY,GAAG;CACzC,MAAM,OAAO,OAAO,MAAM,YAAY,GAAG;CACzC,OAAO;EACL,MAAM;GAAE,GAAG;GAAiB,GAAG,IAAI,MAAM,SAAS;EAAE;EACpD,QAAQ;GAAE,MAAM,KAAK,MAAM,YAAY,KAAK;GAAG,GAAG,IAAI,MAAM,WAAW;EAAE;EACzE,SAAS;GAAE,SAAS;GAAQ,MAAM,KAAK,MAAM,aAAa,IAAI;GAAG,GAAG,IAAI,MAAM,YAAY;EAAE;EAC5F,OAAO;GAAE,MAAM;GAAS,MAAM,KAAK,MAAM,WAAW,IAAI;GAAG,GAAG,IAAI,MAAM,UAAU;EAAE;EACpF,OAAO,MAAM,iBACT,CACE;GACE,MAAM;GACN,MAAM,KAAK,MAAM,WAAW,IAAI;GAChC,MAAM,MAAM;GACZ,GAAG,IAAI,MAAM,UAAU;EACzB,GACA;GACE,MAAM;GACN,MAAM;GACN,UAAU;GACV,MAAM,MAAM;GACZ,GAAG,IAAI,MAAM,eAAe;EAC9B,CACF,IACA;GACE,MAAM;GACN,MAAM,KAAK,MAAM,WAAW,IAAI;GAChC,MAAM,MAAM;GACZ,GAAG,IAAI,MAAM,UAAU;EACzB;EACJ,SAAS,OAAO,SACZ,SACA,CAAC;GAAE,MAAM,OAAO,MAAM,QAAQ,OAAO;GAAG,OAAO,MAAM;EAAgB,CAAC,GACxE,KAAK,MAAM,WAAW;GACtB,MAAM;GACN,MAAM,KAAK,SAAS,KAAK;GACzB,YAAY,KAAK,YAAY,UAAU,IAAI;GAC3C,MAAM,KACH,QAAQ,UAAU,CAAC,MAAM,QAAQ,MAAM,SAAS,KAAK,IAAI,EACzD,KAAK,UAAU;IAAC,MAAM;IAAO,MAAM;IAAO,MAAM;IAAO;GAAK,CAAC;GAChE,YAAY,UACP,UAAqB,KAAK,IAAI,GAAG,KAAK,KAAK,OAAO,MAAM,MAAM,CAAC,CAAC,IAAI,IAAI,MAAM,OAAO,CAAC,CAAC,IACxF,IAAI,MAAM,MAAM,EAAE;GACtB,WAAW,EAAE,OAAO,aAAa,KAAK,KAAK,EAAE;GAC7C,UACE,UAAU,IACN,SAAS,MAAM,cAAuD,IACtE,KAAA;GACN,UACE,UAAU,IACN,SAAS,MAAM,cAAuD,IACtE,KAAA;GACN,WACE,UAAU,IACN,UAAU,MAAM,aAAqD,IACrE,KAAA;EACR,EAAE;CACJ;AACF;AAEA,SAAgB,YAAY,OAA6B;CACvD,MAAM,MAAM,IAAI,MAAM,KAAK,CAAC;CAC5B,MAAM,MAAM,IAAI,MAAM,KAAK,GAAG;CAC9B,MAAM,QAAQ,IAAI,MAAM,OAAO,GAAG;CAClC,MAAM,WAAW,KAAuC,MAAM,QAAQ;CACtE,MAAM,QAAQ,MAAM,OAAO;CAC3B,MAAM,aAAiC,SAAS,SAC5C,SAAS,KAAK,YAAY,CACxB,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,QAAQ,QAAQ,OAAO,KAAK,CAAC,GACtD,aAAa,QAAQ,KAAK,CAC5B,CAAC,IACD,CAAC,CAAC,GAAG,aAAa,MAAM,YAAY,SAAS,CAAC,CAAC;CACnD,MAAM,SACJ,OAAO,MAAM,mBAAmB,aAC3B,MAAM,kBACN,UAAkB,OAAO,KAAK;CAErC,OAAO,EACL,QAAQ,CACN;EACE,MAAM;EACN;EACA;EACA,YAAY,KAAK,IAAI,MAAM,YAAY,IAAI;EAC3C,UAAU,KAAK,IAAI,MAAM,UAAU,GAAG;EACtC,QAAQ;EACR,UAAU;GACR,UAAU,KAAK,MAAM,WAAW,KAAK;GACrC,WAAW;IACT,OAAO,IAAI,MAAM,WAAW,EAAE;IAC9B,OAAO;GACT;EACF;EACA,UAAU,SAAS,SACf,EAAE,MAAM,MAAM,IACd;GACE,MAAM;GACN,OAAO,IAAI,MAAM,WAAW,EAAE;GAC9B,UAAU,KAAK,MAAM,WAAW,KAAK;GACrC,WAAW,EAAE,OAAO,aAAa,MAAM,WAAW,EAAE;EACtD;EACJ,SACE,OAAO,MAAM,WAAW,WACpB;GACE,MAAM;GACN,OAAO,IAAI,MAAM,YAAY,CAAC;GAC9B,QAAQ;GACR,WAAW,EAAE,OAAO,aAAa,MAAM,aAAa,SAAS,EAAE;EACjE,IACA,EAAE,MAAM,MAAM;EACpB,UAAU,EAAE,MAAM,MAAM;EACxB,WAAW,EAAE,MAAM,MAAM;EACzB,WAAW,EAAE,MAAM,MAAM;EACzB,QAAQ,EAAE,MAAM,MAAM;EACtB,OAAO,EAAE,MAAM,MAAM;EACrB,QAAQ;GACN,MAAM,MAAM,UAAU;GACtB,WAAW,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ,OAAO,KAAK;GACvE,OAAO;EACT;EACA,MAAM,CAAC,EAAE,OAAO,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS,MAAM,CAAC;CAC3E,CACF,EACF;AACF;AAEA,SAAS,sBAAsB,OAAe;CAC5C,OAAO,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI;AACvD;AAEA,SAAgB,aAAa,OAA6B;CACxD,MAAM,OAAO,KAAK,IAAI,GAAG,IAAI,MAAM,MAAM,EAAE,CAAC;CAC5C,MAAM,UAAU,KAAK,IAAI,GAAG,IAAI,MAAM,SAAS,EAAE,CAAC;CAClD,MAAM,YAAY,OAAO;CACzB,MAAM,OAAO,KACX,MAAM,IACR;CACA,MAAM,SAAS,KAAK,KAAK,SAAS,sBAAsB,KAAK,KAAK,CAAC;CACnE,MAAM,MAAM,OAAO,QAAQ,OAAO,UAAU,QAAQ,OAAO,CAAC;CAC5D,MAAM,cAAc,MAAM,SAAS,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,OAAO,GAAG,GAAG,GAAG;CACnF,MAAM,eAAe,cAAc,KAAK,MAAO,MAAM,cAAe,SAAS,IAAI;CACjF,MAAM,YAAY,OAAO,KAAK,UAAW,MAAM,KAAK,MAAO,QAAQ,MAAO,YAAY,IAAI,CAAE;CAC5F,IAAI,YAAY,eAAe,UAAU,QAAQ,OAAO,UAAU,QAAQ,OAAO,CAAC;CAClF,MAAM,YAAY,OACf,KAAK,OAAO,WAAW;EACtB;EACA,UAAU,MAAO,QAAQ,MAAO,eAAe,UAAU,SAAS;CACpE,EAAE,EACD,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ;CAEzC,KAAK,IAAI,QAAQ,GAAG,QAAQ,UAAU,UAAU,YAAY,GAAG,SAAS,GAAG,aAAa,GACtF,UAAU,UAAU,OAAO,UAAU;CAGvC,MAAM,QAAQ,KAAK,SAAS,GAAG,iBAC7B,MAAM,KAAK,EAAE,QAAQ,UAAU,cAAc,SAAS,YAAY,CACpE;CACA,OAAO,MAAM,SAAS,WAAW,MAAM,KAAK,EAAE;CAE9C,MAAM,YAAY,OAAO,MAAM,iBAAiB,eAAe;CAC/D,MAAM,SAAS,MAAM,KAAK,cAAc,UAAU;EAChD,IAAI,IAAI,QAAQ;EAChB,IAAI,IAAI,KAAK,MAAM,QAAQ,OAAO;EAClC,IAAI,cAAc,iBAAiB,IAAI,UAAU,IAAI;EACrD,IAAI,cAAc,mBAAmB,cAAc,iBAAiB;GAClE,IAAI,KAAK,MAAM,QAAQ,IAAI;GAC3B,IAAI,QAAQ;GACZ,IAAI,cAAc,iBAAiB,IAAI,OAAO,IAAI;EACpD;EACA,MAAM,OAAO,KAAK;EAClB,OAAO;GACL,OAAO;IAAC;IAAG;IAAG;GAAY;GAC1B,MAAM,MAAM;GACZ,WAAW,EACT,OAAO,OAAO,aAAa,KAAK,KAAK,IAAI,aAAa,MAAM,YAAY,SAAS,EACnF;EACF;CACF,CAAC;CAED,OAAO;EACL,MAAM;GAAE,MAAM;GAAG,OAAO;GAAG,KAAK;GAAG,QAAQ,KAAK,MAAM,YAAY,IAAI,IAAI,KAAK;EAAE;EACjF,OAAO;GAAE,MAAM;GAAS,KAAK;GAAM,KAAK,UAAU;GAAK,MAAM;EAAM;EACnE,OAAO;GAAE,MAAM;GAAS,KAAK;GAAM,KAAK,OAAO;GAAK,SAAS;GAAM,MAAM;EAAM;EAC/E,QAAQ;GACN,MAAM,KAAK,MAAM,YAAY,IAAI;GACjC,MAAM,KAAK,KAAK,SAAS,KAAK,IAAI;GAClC,KAAK,MAAM,mBAAmB,QAAQ,IAAI,KAAA;GAC1C,QAAQ,MAAM,mBAAmB,WAAW,IAAI,KAAA;GAChD,MAAM,MAAM,mBAAmB,SAAS,IAAI,KAAA;GAC5C,OAAO,MAAM,mBAAmB,UAAU,IAAI,KAAA;EAChD;EACA,SAAS;GACP,MAAM,KAAK,MAAM,aAAa,KAAK;GACnC,YAAY,WAAgB;IAC1B,MAAM,OAAO,KAAK,OAAO,QAAQ;IACjC,IAAI,CAAC,MAAM,OAAO;IAClB,OAAO,OAAO,MAAM,oBAAoB,aACpC,OACG,MAAM,gBAAgE;KACrE,GAAG;KACH,OAAO,UAAU,OAAO,MAAM;IAChC,CAAC,CACH,IACA,GAAG,KAAK,KAAK,IAAI,KAAK;GAC5B;EACF;EACA,QAAQ,CACN;GAAE,MAAM;GAAW,QAAQ;GAAa,YAAY,IAAI,MAAM,UAAU,EAAE;GAAG,MAAM;EAAO,CAC5F;CACF;AACF;AAEA,SAAgB,aAAa,OAA6B;CACxD,MAAM,OAAO,KAAqD,MAAM,IAAI;CAC5E,MAAM,UAAU,KAAa,MAAM,OAAO,EAAE,SACxC,KAAa,MAAM,OAAO,IAC1B,CAAC,GAAG,IAAI,IAAI,KAAK,KAAK,SAAS,KAAK,CAAC,CAAC,CAAC;CAC3C,MAAM,UAAU,KAAa,MAAM,OAAO,EAAE,SACxC,KAAa,MAAM,OAAO,IAC1B,CAAC,GAAG,IAAI,IAAI,KAAK,KAAK,SAAS,KAAK,CAAC,CAAC,CAAC;CAC3C,MAAM,SAAS,KAAK,SAAS,SAAU,OAAO,KAAK,UAAU,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,CAAE;CAC1F,MAAM,SACH,MAAM,UACN,CAAC,KAAK,IAAI,GAAG,GAAG,MAAM,GAAG,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC;CAClD,MAAM,SAAS,KAAa,MAAM,MAAM,EAAE,SACtC,KAAa,MAAM,MAAM,EAAE,KAAK,UAAU,aAAa,KAAK,CAAC,IAC7D;EAAC;EAAW;EAAW;EAAW;CAAS;CAE/C,OAAO;EACL,MAAM;GACJ,MAAM,KAAK,MAAM,aAAa,KAAK,IAAI,IAAI,MAAM,cAAc,EAAE,IAAI;GACrE,OAAO;GACP,KACE,MAAM,oBAAoB,SAAS,KAAK,MAAM,aAAa,KAAK,IAC5D,IAAI,MAAM,eAAe,EAAE,IAC3B;GACN,QACE,MAAM,oBAAoB,SAAS,KAAK,MAAM,aAAa,KAAK,IAC5D,IAAI,MAAM,eAAe,EAAE,IAC3B,KAAK,MAAM,YAAY,KAAK,IAC1B,KACA;EACV;EACA,OAAO;GACL,MAAM;GACN,MAAM;GACN,UAAU,MAAM,oBAAoB,QAAQ,QAAQ;GACpD,MAAM,KAAK,MAAM,aAAa,KAAK;GACnC,WAAW;IAAE,QAAQ,IAAI,MAAM,iBAAiB,GAAG;IAAG,UAAU,IAAI,MAAM,UAAU,EAAE;GAAE;EAC1F;EACA,OAAO;GACL,MAAM;GACN,MAAM;GACN,SAAS;GACT,MAAM,KAAK,MAAM,aAAa,KAAK;GACnC,WAAW,EAAE,UAAU,IAAI,MAAM,UAAU,EAAE,EAAE;EACjD;EACA,WAAW;GACT,MAAM,KAAK,MAAM,YAAY,KAAK;GAClC,KAAK,OAAO;GACZ,KAAK,OAAO;GACZ,SAAS,EAAE,OAAO,OAAO;GACzB,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,MAAO,MAAM,gBAAyC,CAAC,QAAQ,MAAM;EACvE;EACA,SAAS;GACP,MAAM,KAAK,MAAM,aAAa,KAAK,KAAK,OAAO,MAAM,oBAAoB;GACzE,YAAY,WAAgB;IAC1B,MAAM,OAAO,KAAK,OAAO;IACzB,OAAO,OACJ,MAAM,kBAAoE,IAAI,KAAK,EACtF;GACF;GACA,GAAG,IAAI,MAAM,YAAY;EAC3B;EACA,QAAQ,CACN;GACE,MAAM;GACN,MAAM,KAAK,KAAK,SAAS;IACvB,MAAM,QACJ,OAAO,MAAM,iBAAiB,aACzB,MAAM,aAAiE,IAAI,IAC5E,CAAC;IACP,MAAM,QAAQ,KAAK,UAAU,QAAQ,CAAC,OAAO,SAAS,KAAK,KAAK;IAChE,OAAO;KACL,OAAO;MAAC,QAAQ,QAAQ,KAAK,CAAC;MAAG,QAAQ,QAAQ,KAAK,CAAC;MAAG,KAAK;MAAO;KAAI;KAC1E,GAAG;KACH,WAAW;MACT,GAAI,SAAS,MAAM,aACf,EAAE,OAAO,aAAa,MAAM,UAAoB,EAAE,IAClD,CAAC;MACL,GAAG,IAAI,MAAM,SAAS;KACxB;IACF;GACF,CAAC;GACD,WAAW;IACT,aAAa,IAAI,MAAM,KAAK,CAAC;IAC7B,aAAa;IACb,cAAc,IAAI,MAAM,YAAY,CAAC;GACvC;EACF,CACF;CACF;AACF;AAEA,SAAgB,kBAAkB,OAA6B;CAC7D,MAAM,OAAO,KAA8B,MAAM,IAAI;CACrD,MAAM,OAAO;EACX,MAAM;EACN,MAAM;EACN,KAAK;EACL,OAAO;EACP,GAAG,IAAI,MAAM,QAAQ;CACvB;CACA,MAAM,UAAU,OAAO,MAAM,WAAW,MAAM;CAE9C,OAAO;EACL,MAAM;GACJ,MAAM;GACN,OAAO;GACP,KAAK;GACL,QAAQ;GACR,GAAG;GACH,GAAG,IAAI,MAAM,SAAS;EACxB;EACA,SAAS;GAAE,SAAS;GAAQ,MAAM,KAAK,MAAM,aAAa,IAAI;GAAG,GAAG,IAAI,MAAM,YAAY;EAAE;EAC5F,OAAO;GACL,MAAM;GACN,MAAM,KAAK,KAAK,SAAS,OAAO,KAAK,YAAY,EAAE,CAAC;GACpD,MAAM,KAAK,MAAM,WAAW,IAAI;GAChC,MAAM,MAAM;GACZ,GAAG,IAAI,MAAM,UAAU;EACzB;EACA,OAAO;GACL,MAAM;GACN,OAAO;GACP,MAAM,KAAK,MAAM,WAAW,IAAI;GAChC,MAAM,MAAM;GACZ,GAAG,IAAI,MAAM,UAAU;EACzB;EACA,QAAQ,CACN;GACE,MAAM;GACN,MAAM,KAAK,KAAK,SAAS;IACvB,KAAK,KAAK;IACV,KAAK,KAAK;IACV,KAAK,KAAK;IACV,KAAK,KAAK;GACZ,CAAC;GACD,aAAa,MAAM;GACnB,WAAW;IACT,OAAO,aAAa,MAAM,SAAS,SAAS;IAC5C,QAAQ,aAAa,MAAM,WAAW,SAAS;IAC/C,aAAa,aAAa,MAAM,SAAS,SAAS;IAClD,cAAc,aAAa,MAAM,WAAW,SAAS;IACrD,aAAa,IAAI,MAAM,mBAAmB,CAAC;GAC7C;GACA,UAAU,SAAS,MAAM,cAAuD;GAChF,UAAU,SAAS,MAAM,cAAuD;GAChF,WAAW,UAAU,MAAM,aAAqD;EAClF,CACF;CACF;AACF;AAEA,SAAgB,gBAAgB,OAA6B;CAC3D,MAAM,OAAO,KAAoB,MAAM,IAAI;CAC3C,MAAM,QAAQ,MAAM;CAGpB,MAAM,QAAQ,QACV,aACE,KAAK,GAAG,EAAE,IAAK,KAAK,KAChB,MAAM,WACN,KAAK,GAAG,EAAE,IAAK,KAAK,KAClB,MAAM,WACN,MAAM,OACd,IACA,aAAa,MAAM,KAAK;CAC5B,OAAO;EACL,MAAM;GAAE,MAAM;GAAG,OAAO;GAAG,KAAK;GAAG,QAAQ;EAAE;EAC7C,OAAO;GAAE,MAAM;GAAY,MAAM;EAAM;EACvC,OAAO;GAAE,MAAM;GAAS,MAAM;GAAO,OAAO;EAAK;EACjD,QAAQ,CACN;GACE,MAAM;GACN;GACA,YAAY;GACZ,cAAc,KAAK,MAAM,cAAc,IAAI;GAC3C,QAAQ,MAAM,cAAc;GAC5B,WAAW;IAAE;IAAO,OAAO,IAAI,MAAM,aAAa,CAAC;GAAE;GACrD,WAAW,KAAK,MAAM,cAAc,IAAI,IACpC;IAAE;IAAO,SAAS,IAAI,MAAM,aAAa,EAAG;GAAE,IAC9C,KAAA;EACN,CACF;CACF;AACF;AAEA,SAAgB,YAAY,OAA6B;CACvD,MAAM,OAAO,KAAoB,MAAM,IAAI;CAC3C,MAAM,SAAS,KAAkB,MAAM,MAAM;CAC7C,MAAM,MAAM,OAAO,MAAM,WAAW,MAAM;CAC1C,MAAM,MAAM,IACV,MAAM,UACN,KAAK,IAAI,GAAG,GAAG,KAAK,SAAS,QAAQ,OAAO,KAAK,MAAM,OAAO,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CACnF;CACA,OAAO;EACL,QAAQ,EAAE,MAAM,KAAK,MAAM,YAAY,KAAK,EAAE;EAC9C,SAAS,EAAE,MAAM,KAAK,MAAM,aAAa,IAAI,EAAE;EAC/C,OAAO;GACL,WAAW,KAAK,KAAK,SAAS;IAAE,MAAM,OAAO,IAAI,IAAI;IAAG;GAAI,EAAE;GAC9D,OAAO,MAAM,UAAU,WAAW,WAAW;EAC/C;EACA,QAAQ,CACN;GACE,MAAM;GACN,MAAM,OAAO,KAAK,OAAO;IACvB,MAAM,EAAE,SAAS,EAAE;IACnB,OAAO,KAAK,KAAK,QAAQ,OAAO,IAAI,EAAE,SAAS,CAAC,CAAC;IACjD,WAAW,EAAE,OAAO,aAAa,EAAE,KAAK,EAAE;IAC1C,WAAW,EAAE,OAAO,aAAa,EAAE,KAAK,EAAE;IAC1C,WAAW,KAAK,MAAM,eAAe,KAAK,IAAI,CAAC,IAAI,KAAA;GACrD,EAAE;EACJ,CACF;CACF;AACF;AAEA,SAAgB,aAAa,MAAuC,OAA6B;CAC/F,MAAM,OAAO,KAA8B,MAAM,IAAI;CACrD,IAAI,SAAS,UACX,OAAO;EACL,SAAS,EAAE,MAAM,KAAK,MAAM,aAAa,IAAI,EAAE;EAC/C,QAAQ,CACN;GACE;GACA,MAAM,KAAK,MAAM,SAAS,IAAI;GAC9B,OAAO,KAAK,MAAM,KAAK;GACvB,UAAU,EAAE,OAAO,YAAY;GAC/B,GAAG,IAAI,MAAM,WAAW;EAC1B,CACF;CACF;CACF,OAAO;EACL,SAAS,EAAE,MAAM,KAAK,MAAM,aAAa,IAAI,EAAE;EAC/C,QAAQ,EAAE,MAAM,KAAK,MAAM,YAAY,KAAK,EAAE;EAC9C,QAAQ,CACN;GACE;GACA,MAAM,KAAK,KAAK,UAAU;IAAE,GAAG;IAAM,WAAW,EAAE,OAAO,aAAa,KAAK,KAAK,EAAE;GAAE,EAAE;GACtF,GAAG,IAAI,MAAM,GAAG,KAAK,OAAO;EAC9B,CACF;CACF;AACF;AAEA,SAAgB,gBAAgB,OAA6B;CAC3D,MAAM,OAAO,KAAsD,MAAM,IAAI;CAC7E,OAAO;EACL,QAAQ,EAAE,MAAM,KAAK,MAAM,YAAY,KAAK,EAAE;EAC9C,SAAS,EAAE,MAAM,KAAK,MAAM,aAAa,IAAI,EAAE;EAC/C,OAAO,CAAC;EACR,WAAW;GAAE,KAAK,IAAI,MAAM,UAAU,GAAG;GAAG,MAAM;EAAM;EACxD,YAAY;GACV,MAAM;GACN,MAAM,KAAK,KAAK,MAAM,EAAE,IAAI;GAC5B,MAAM,KAAK,MAAM,YAAY,IAAI;EACnC;EACA,QAAQ,CACN;GACE,MAAM;GACN,kBAAkB;GAClB,UAAU;GACV,MAAM,KAAK,KAAK,OAAO;IAAE,OAAO,EAAE;IAAO,WAAW,EAAE,OAAO,aAAa,EAAE,KAAK,EAAE;GAAE,EAAE;EACzF,CACF;CACF;AACF;AAEA,SAAgB,cAAc,OAA6B;CACzD,MAAM,QACJ,MAAM,QAAQ,OAAO,MAAM,SAAS,WAAY,MAAM,OAAkC,CAAC;CAC3F,MAAM,OAAO,OAAO,QAAQ,KAAK,EAAE,KAAK,CAAC,MAAM,WAAW,CAAC,MAAM,KAAK,CAAC;CACvE,MAAM,SAAS,OAAO,OAAO,KAAK;CAClC,MAAM,QAAQ,OAAgB,aAC5B,iBAAiB,OACb,MAAM,YAAY,EAAE,MAAM,GAAG,EAAE,IAC/B,OAAO,UAAU,WACf,QACA;CACR,MAAM,QAAQ,KAAK,MAAM,WAAW,OAAO,KAAK,KAAK,uBAAM,IAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;CACjG,MAAM,MAAM,KAAK,MAAM,SAAS,OAAO,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,CAAC;CACjE,OAAO;EACL,SAAS,EAAE,MAAM,KAAK,MAAM,aAAa,KAAK,EAAE;EAChD,WAAW;GACT,MAAM,KAAK,MAAM,YAAY,KAAK;GAClC,KAAM,MAAM,SAAkC,MAAM,KAAK,IAAI,GAAG,GAAG,MAAM;GACzE,KAAM,MAAM,SAAkC,MAAM,KAAK,IAAI,GAAG,GAAG,MAAM;GACzE,SAAS,EACP,OAAO,KAAa,MAAM,MAAM,EAAE,SAC9B,KAAa,MAAM,MAAM,EAAE,KAAK,UAAU,aAAa,KAAK,CAAC,IAC7D,CAAC,WAAW,SAAS,EAC3B;GACA,QAAQ;GACR,MAAM;GACN,QAAQ;EACV;EACA,UAAU;GACR,OAAO,CAAC,OAAO,GAAG;GAClB,UAAU,IAAI,MAAM,UAAU,EAAE,IAAI,IAAI,MAAM,KAAK,CAAC;GACpD,UAAU;IACR,MAAM,KAAK,MAAM,mBAAmB,KAAK;IACzC,UAAU,IAAI,MAAM,gBAAgB,CAAC;GACvC;GACA,YAAY,EAAE,MAAM,KAAK,MAAM,iBAAiB,KAAK,EAAE;GACvD,WAAW;IACT,aAAa,IAAI,MAAM,KAAK,CAAC;IAC7B,aAAa;IACb,cAAc,IAAI,MAAM,YAAY,CAAC;GACvC;EACF;EACA,QAAQ,CAAC;GAAE,MAAM;GAAW,kBAAkB;GAAY;EAAK,CAAC;CAClE;AACF;;;AC5ZA,IAAa,YAAY,qBAAqB,cAAc,MAC1D,gBAAgB,GAAG,MAAM,CAC3B;AACA,IAAa,WAAW,qBAAqB,aAAa,MACxD,gBAAgB,GAAG,KAAK,CAC1B;AACA,IAAa,YAAY,qBAAqB,cAAc,MAC1D,gBAAgB,GAAG,MAAM,CAC3B;AACA,IAAa,iBAAiB,qBAAqB,mBAAmB,MACpE,gBAAgB,GAAG,WAAW,CAChC;AACA,IAAa,WAAW,qBAAqB,aAAa,MACxD,aAAa,CAAC,CAChB;AACA,IAAa,aAAa,qBAAqB,eAAe,MAC5D,aAAa,GAAG,IAAI,CACtB;AACA,IAAa,eAAe,qBAAqB,iBAAiB,MAChE,cAAc,CAAC,CACjB;AACA,IAAa,cAAc,qBAAqB,gBAAgB,MAC9D,cAAc,GAAG,IAAI,CACvB;AACA,IAAa,aAAa,qBACxB,cACA,WACF;AACA,IAAa,iBAAiB,qBAC5B,kBACA,eACF;AACA,IAAa,cAAc,qBAAqB,gBAAgB,MAC9D,aAAa,UAAU,CAAC,CAC1B;AACA,IAAa,UAAU,qBAAqB,YAAY,MACtD,aAAa,WAAW,CAAC,CAC3B;AACA,IAAa,cAAc,qBAAqB,gBAAgB,MAC9D,aAAa,UAAU,CAAC,CAC1B;AACA,IAAa,YAAY,qBACvB,aACA,eACF;AACA,IAAa,UAAU,qBACrB,WACA,aACF;AACA,IAAa,WAAW,qBAAqB,aAAa,MACxD,gBACE;CACE,GAAG;CACH,SAAS;CACT,QAAQ,CAAC;EAAE,MAAM;EAAS,OAAO,EAAE;CAAS,CAAC;CAC7C,aAAa;CACb,WAAW;CACX,WAAW;CACX,aAAa;CACb,aAAa,EAAE;AACjB,GACA,KACF,CACF;AACA,IAAa,aAAa,qBACxB,cACA,WACF;AACA,IAAa,cAAc,qBACzB,eACA,YACF;AACA,IAAa,cAAc,qBACzB,eACA,YACF;AACA,IAAa,mBAAmB,qBAC9B,oBACA,iBACF;;;AC/dA,IAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO;CACP,OAAO;EACL,OAAO;EACP,SAAS;EACT,MAAM;EACN,MAAM;GAAE,MAAM;GAA+C,SAAS;EAAO;EAC7E,WAAW;EACX,QAAQ;EACR,gBAAgB;EAChB,WAAW;GAAE,MAAM;GAAS,SAAS;EAAK;CAC5C;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,SAAS,eACb,OAAO,aAAa,MAAM,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,MAAM,KAAK,SAAS,KAAK,IAAI,CAAC,CAAC,CAC7F;EACA,aAAa;GACX,MAAM,QAAQ,MAAM,UAAU,KAAA,IAAY,MAAM,QAAQ,MAAM,QAAQ;GACtE,MAAM,UAAU,MAAM,YAClB,MAAM,SAAS,QACZ,SAAS,KAAK,SAAS,MAAM,aAAa,KAAK,YAAY,MAAM,SACpE,IACA,MAAM;GACV,IAAI,CAAC,SAAS,QAAQ,OAAO;GAC7B,OAAO,EAAE,OAAO;IAAE,OAAO;IAAgC,aAAa,MAAM;GAAK,GAAG,CAClF,SAAS,OAAO,EAAE,OAAO,EAAE,OAAO,oCAAoC,GAAG,CAAC,KAAK,CAAC,IAAI,MACpF,EACE,OACA,EAAE,OAAO,mCAAmC,GAC5C,QAAQ,KAAK,SACX,EAAE,OAAO,EAAE,OAAO,mCAAmC,GAAG,CACtD,EAAE,OAAO,EAAE,OAAO,uCAAuC,GAAG,CAC1D,MAAM,YACF,EAAE,QAAQ;IACR,OAAO;IACP,OAAO,EAAE,YAAY,aAAa,KAAK,KAAK,EAAE;GAChD,CAAC,IACD,MACJ,EACE,QACA,EAAE,OAAO,uCAAuC,GAChD,OAAO,MAAM,KAAK,QAAQ,OAAO,KAAK,IACxC,CACF,CAAC,GACD,EAAE,QAAQ,EAAE,OAAO,uCAAuC,GAAG,CAC3D,MAAM,iBACF,MAAM,eAAe,OAAO,KAAK,KAAK,CAAC,IACtC,MAAM,iBAAiB;IAAE,OAAO,OAAO,KAAK,KAAK;IAAG;GAAK,CAAC,MAC1D,KAAK,SAAS,OAAO,KAAK,OAAO,KAAK,KAAK,IAChD,MAAM,QAAQ,KAAK,QAAQ,EAC7B,CAAC,CACH,CAAC,CACH,CACF,CACF,CAAC;EACH;CACF;AACF,CAAC;;;AC3DD,IAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,OAAO;EACL,SAAS;EACT,aAAa;GAAE,MAAM;GAAqD,UAAU;EAAK;EACzF,gBAAgB;GACd,MAAM;GACN,UAAU;EACZ;EACA,QAAQ;EACR,WAAW;GAAE,MAAM;GAAS,SAAS;EAAK;EAC1C,UAAU;CACZ;CACA,MAAM,OAAO;EACX,aACE,EACE,OACA;GACE,OAAO;GACP,iBAAiB,MAAM;GACvB,iBAAiB,MAAM,YAAY,KAAA;GACnC,oBAAoB,MAAM,YAAY,IAAI;EAC5C,GACA,MAAM,SAAS,KAAK,SAAS;GAC3B,MAAM,MAAM,KAAK,WAAW,KAAK,QAAQ;GACzC,MAAM,QAAQ,MAAM,QAAQ,MAAM,MAAM,EAAE,SAAS,GAAG,GAAG,SAAS;GAClE,OAAO,EACL,OACA;IAAE,OAAO;IAAkC,oBAAoB,MAAM,YAAY,GAAG;GAAE,GACtF,CACE,MAAM,YACF,EAAE,QAAQ;IACR,OAAO;IACP,OAAO,EAAE,YAAY,aAAa,KAAK,KAAK,EAAE;GAChD,CAAC,IACD,MACJ,EAAE,QAAQ,EAAE,OAAO,qCAAqC,GAAG,KAAK,CAClE,CACF;EACF,CAAC,CACH;CACJ;AACF,CAAC;;;AC5DD,SAAgB,gBAAgB,QAA2D;CACzF,OAAO,OAAO,aAAa,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,MAAM,KAAK,SAAS,KAAK,IAAI,CAAC,CAAC;AAC9F"}
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.4.0",
3
+ "version": "3.6.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.4.0",
41
+ "@mantine-vue/core": "3.6.0",
42
42
  "echarts": ">=6.0.0",
43
43
  "vue": "^3.5.0",
44
44
  "vue-echarts": ">=8.0.0"