@hitachivantara/uikit-react-viz 5.3.19 → 5.4.1

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.
Files changed (62) hide show
  1. package/dist/cjs/components/BarChart/BarChart.cjs +9 -5
  2. package/dist/cjs/components/BarChart/BarChart.cjs.map +1 -1
  3. package/dist/cjs/components/BaseChart/BaseChart.cjs +14 -3
  4. package/dist/cjs/components/BaseChart/BaseChart.cjs.map +1 -1
  5. package/dist/cjs/components/ConfusionMatrix/ConfusionMatrix.cjs +171 -0
  6. package/dist/cjs/components/ConfusionMatrix/ConfusionMatrix.cjs.map +1 -0
  7. package/dist/cjs/components/ConfusionMatrix/ConfusionMatrix.styles.cjs +29 -0
  8. package/dist/cjs/components/ConfusionMatrix/ConfusionMatrix.styles.cjs.map +1 -0
  9. package/dist/cjs/components/ConfusionMatrix/utils.cjs +136 -0
  10. package/dist/cjs/components/ConfusionMatrix/utils.cjs.map +1 -0
  11. package/dist/cjs/components/DonutChart/DonutChart.cjs +5 -1
  12. package/dist/cjs/components/DonutChart/DonutChart.cjs.map +1 -1
  13. package/dist/cjs/components/LineChart/LineChart.cjs +8 -4
  14. package/dist/cjs/components/LineChart/LineChart.cjs.map +1 -1
  15. package/dist/cjs/hooks/tooltip/useTooltip.cjs +3 -3
  16. package/dist/cjs/hooks/tooltip/useTooltip.cjs.map +1 -1
  17. package/dist/cjs/hooks/useData.cjs +12 -2
  18. package/dist/cjs/hooks/useData.cjs.map +1 -1
  19. package/dist/cjs/hooks/useGrid.cjs +10 -2
  20. package/dist/cjs/hooks/useGrid.cjs.map +1 -1
  21. package/dist/cjs/hooks/useVisualMap.cjs +45 -0
  22. package/dist/cjs/hooks/useVisualMap.cjs.map +1 -0
  23. package/dist/cjs/hooks/useXAxis.cjs +43 -11
  24. package/dist/cjs/hooks/useXAxis.cjs.map +1 -1
  25. package/dist/cjs/hooks/useYAxis.cjs +50 -27
  26. package/dist/cjs/hooks/useYAxis.cjs.map +1 -1
  27. package/dist/cjs/index.cjs +2 -0
  28. package/dist/cjs/index.cjs.map +1 -1
  29. package/dist/cjs/utils/registerTheme.cjs +18 -1
  30. package/dist/cjs/utils/registerTheme.cjs.map +1 -1
  31. package/dist/esm/components/BarChart/BarChart.js +9 -5
  32. package/dist/esm/components/BarChart/BarChart.js.map +1 -1
  33. package/dist/esm/components/BaseChart/BaseChart.js +14 -3
  34. package/dist/esm/components/BaseChart/BaseChart.js.map +1 -1
  35. package/dist/esm/components/ConfusionMatrix/ConfusionMatrix.js +152 -0
  36. package/dist/esm/components/ConfusionMatrix/ConfusionMatrix.js.map +1 -0
  37. package/dist/esm/components/ConfusionMatrix/ConfusionMatrix.styles.js +29 -0
  38. package/dist/esm/components/ConfusionMatrix/ConfusionMatrix.styles.js.map +1 -0
  39. package/dist/esm/components/ConfusionMatrix/utils.js +136 -0
  40. package/dist/esm/components/ConfusionMatrix/utils.js.map +1 -0
  41. package/dist/esm/components/DonutChart/DonutChart.js +5 -1
  42. package/dist/esm/components/DonutChart/DonutChart.js.map +1 -1
  43. package/dist/esm/components/LineChart/LineChart.js +8 -4
  44. package/dist/esm/components/LineChart/LineChart.js.map +1 -1
  45. package/dist/esm/hooks/tooltip/useTooltip.js +3 -3
  46. package/dist/esm/hooks/tooltip/useTooltip.js.map +1 -1
  47. package/dist/esm/hooks/useData.js +12 -2
  48. package/dist/esm/hooks/useData.js.map +1 -1
  49. package/dist/esm/hooks/useGrid.js +10 -2
  50. package/dist/esm/hooks/useGrid.js.map +1 -1
  51. package/dist/esm/hooks/useVisualMap.js +45 -0
  52. package/dist/esm/hooks/useVisualMap.js.map +1 -0
  53. package/dist/esm/hooks/useXAxis.js +43 -11
  54. package/dist/esm/hooks/useXAxis.js.map +1 -1
  55. package/dist/esm/hooks/useYAxis.js +51 -28
  56. package/dist/esm/hooks/useYAxis.js.map +1 -1
  57. package/dist/esm/index.js +2 -0
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/utils/registerTheme.js +18 -1
  60. package/dist/esm/utils/registerTheme.js.map +1 -1
  61. package/dist/types/index.d.ts +121 -6
  62. package/package.json +3 -3
@@ -50,7 +50,9 @@ const HvBarChart = ({
50
50
  measures,
51
51
  legend,
52
52
  tooltip,
53
- classes
53
+ classes,
54
+ height,
55
+ width
54
56
  }) => {
55
57
  const chartData = useData.useData({
56
58
  data,
@@ -61,12 +63,12 @@ const HvBarChart = ({
61
63
  });
62
64
  const chartDataset = useDataset.useDataset(chartData);
63
65
  const chartYAxis = useYAxis.useYAxis({
64
- yAxis,
66
+ axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],
65
67
  defaultType: horizontal ? "categorical" : "continuous"
66
68
  });
67
69
  const chartXAxis = useXAxis.useXAxis({
68
- xAxis,
69
- defaultType: horizontal ? "continuous" : "categorical"
70
+ type: horizontal ? "continuous" : "categorical",
71
+ ...xAxis
70
72
  });
71
73
  const chartSlider = useDataZoom.useDataZoom({
72
74
  showHorizontal: horizontalRangeSlider == null ? void 0 : horizontalRangeSlider.show
@@ -108,7 +110,9 @@ const HvBarChart = ({
108
110
  };
109
111
  }, [chartXAxis, chartYAxis, chartSlider, chartGrid, chartDataset, chartSeries, chartLegend, chartTooltip]);
110
112
  return /* @__PURE__ */ jsxRuntime.jsx(BaseChart.HvBaseChart, {
111
- options
113
+ options,
114
+ width,
115
+ height
112
116
  });
113
117
  };
114
118
  exports.HvBarChart = HvBarChart;
@@ -1 +1 @@
1
- {"version":3,"file":"BarChart.cjs","sources":["../../../../src/components/BarChart/BarChart.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport * as echarts from \"echarts/core\";\nimport { BarChart } from \"echarts/charts\";\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n} from \"echarts/components\";\n\nimport {\n useXAxis,\n useYAxis,\n useDataZoom,\n useGrid,\n useData,\n useDataset,\n useSeries,\n useLegend,\n useTooltip,\n HvChartTooltipClasses,\n} from \"@viz/hooks\";\n\nimport { HvBarChartMeasures } from \"../../types\";\nimport { HvBaseChart } from \"../BaseChart\";\nimport { HvAxisChartCommonProps, HvChartCommonProps } from \"../../types/common\";\n\n// Register chart components\necharts.use([\n BarChart,\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n]);\n\nexport interface HvBarChartClasses extends HvChartTooltipClasses {}\n\nexport interface HvBarChartProps\n extends HvAxisChartCommonProps,\n HvChartCommonProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<HvBarChartMeasures>;\n /** Whether the bar chart should be horizontal. Defaults to `false`. */\n horizontal?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBarChartClasses;\n}\n\n/**\n * A bar chart is a chart or graph that presents categorical data with rectangular bars.\n */\nexport const HvBarChart = ({\n yAxis,\n xAxis,\n horizontal = false,\n horizontalRangeSlider,\n grid,\n data,\n groupBy,\n splitBy,\n sortBy,\n stack,\n seriesNameFormatter,\n measures,\n legend,\n tooltip,\n classes,\n}: HvBarChartProps) => {\n const chartData = useData({ data, groupBy, sortBy, splitBy, measures });\n\n const chartDataset = useDataset(chartData);\n\n const chartYAxis = useYAxis({\n yAxis,\n defaultType: horizontal ? \"categorical\" : \"continuous\",\n });\n\n const chartXAxis = useXAxis({\n xAxis,\n defaultType: horizontal ? \"continuous\" : \"categorical\",\n });\n\n const chartSlider = useDataZoom({\n showHorizontal: horizontalRangeSlider?.show,\n });\n\n const chartGrid = useGrid({ ...grid });\n\n const chartSeries = useSeries({\n type: \"bar\",\n data: chartData,\n groupBy,\n measures,\n stack,\n nameFormatter: seriesNameFormatter,\n horizontal,\n });\n\n const chartLegend = useLegend({\n ...legend,\n series: chartSeries.series,\n icon: \"square\",\n });\n\n const chartTooltip = useTooltip({\n ...tooltip,\n trigger: \"axis\",\n measures,\n classes,\n horizontal,\n });\n\n const options = useMemo(() => {\n return {\n ...chartYAxis,\n ...chartXAxis,\n ...chartSlider,\n ...chartGrid,\n ...chartDataset,\n ...chartSeries,\n ...chartLegend,\n ...chartTooltip,\n };\n }, [\n chartXAxis,\n chartYAxis,\n chartSlider,\n chartGrid,\n chartDataset,\n chartSeries,\n chartLegend,\n chartTooltip,\n ]);\n\n return <HvBaseChart options={options} />;\n};\n"],"names":["echarts","use","BarChart","DatasetComponent","GridComponent","TooltipComponent","LegendComponent","DataZoomSliderComponent","DataZoomInsideComponent","HvBarChart","yAxis","xAxis","horizontal","horizontalRangeSlider","grid","data","groupBy","splitBy","sortBy","stack","seriesNameFormatter","measures","legend","tooltip","classes","chartData","useData","chartDataset","useDataset","chartYAxis","useYAxis","defaultType","chartXAxis","useXAxis","chartSlider","useDataZoom","showHorizontal","show","chartGrid","useGrid","chartSeries","useSeries","type","nameFormatter","chartLegend","useLegend","series","icon","chartTooltip","useTooltip","trigger","options","useMemo","HvBaseChart"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCAA,mBAAQC,IAAI,CACVC,OACAC,UAAAA,6BACAC,WAAAA,eACAC,WACAC,kBAAAA,4BACAC,WAAAA,yBACAC,WAAuB,uBAAA,CACxB;AAkBM,MAAMC,aAAaA,CAAC;AAAA,EACzBC;AAAAA,EACAC;AAAAA,EACAC,aAAa;AAAA,EACbC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AACe,MAAM;AACrB,QAAMC,YAAYC,QAAAA,QAAQ;AAAA,IAAEX;AAAAA,IAAMC;AAAAA,IAASE;AAAAA,IAAQD;AAAAA,IAASI;AAAAA,EAAAA,CAAU;AAEhEM,QAAAA,eAAeC,sBAAWH,SAAS;AAEzC,QAAMI,aAAaC,SAAAA,SAAS;AAAA,IAC1BpB;AAAAA,IACAqB,aAAanB,aAAa,gBAAgB;AAAA,EAAA,CAC3C;AAED,QAAMoB,aAAaC,SAAAA,SAAS;AAAA,IAC1BtB;AAAAA,IACAoB,aAAanB,aAAa,eAAe;AAAA,EAAA,CAC1C;AAED,QAAMsB,cAAcC,YAAAA,YAAY;AAAA,IAC9BC,gBAAgBvB,+DAAuBwB;AAAAA,EAAAA,CACxC;AAED,QAAMC,YAAYC,QAAAA,QAAQ;AAAA,IAAE,GAAGzB;AAAAA,EAAAA,CAAM;AAErC,QAAM0B,cAAcC,UAAAA,UAAU;AAAA,IAC5BC,MAAM;AAAA,IACN3B,MAAMU;AAAAA,IACNT;AAAAA,IACAK;AAAAA,IACAF;AAAAA,IACAwB,eAAevB;AAAAA,IACfR;AAAAA,EAAAA,CACD;AAED,QAAMgC,cAAcC,UAAAA,UAAU;AAAA,IAC5B,GAAGvB;AAAAA,IACHwB,QAAQN,YAAYM;AAAAA,IACpBC,MAAM;AAAA,EAAA,CACP;AAED,QAAMC,eAAeC,WAAAA,WAAW;AAAA,IAC9B,GAAG1B;AAAAA,IACH2B,SAAS;AAAA,IACT7B;AAAAA,IACAG;AAAAA,IACAZ;AAAAA,EAAAA,CACD;AAEKuC,QAAAA,UAAUC,MAAAA,QAAQ,MAAM;AACrB,WAAA;AAAA,MACL,GAAGvB;AAAAA,MACH,GAAGG;AAAAA,MACH,GAAGE;AAAAA,MACH,GAAGI;AAAAA,MACH,GAAGX;AAAAA,MACH,GAAGa;AAAAA,MACH,GAAGI;AAAAA,MACH,GAAGI;AAAAA,IAAAA;AAAAA,EACL,GACC,CACDhB,YACAH,YACAK,aACAI,WACAX,cACAa,aACAI,aACAI,YAAY,CACb;AAED,wCAAQK,UAAAA,aAAW;AAAA,IAACF;AAAAA,EAAAA,CAAmB;AACzC;;"}
1
+ {"version":3,"file":"BarChart.cjs","sources":["../../../../src/components/BarChart/BarChart.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport * as echarts from \"echarts/core\";\nimport { BarChart } from \"echarts/charts\";\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n} from \"echarts/components\";\n\nimport {\n useXAxis,\n useYAxis,\n useDataZoom,\n useGrid,\n useData,\n useDataset,\n useSeries,\n useLegend,\n useTooltip,\n HvChartTooltipClasses,\n} from \"@viz/hooks\";\n\nimport { HvBarChartMeasures } from \"../../types\";\nimport { HvBaseChart } from \"../BaseChart\";\nimport { HvAxisChartCommonProps, HvChartCommonProps } from \"../../types/common\";\n\n// Register chart components\necharts.use([\n BarChart,\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n]);\n\nexport interface HvBarChartClasses extends HvChartTooltipClasses {}\n\nexport interface HvBarChartProps\n extends HvAxisChartCommonProps,\n HvChartCommonProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<HvBarChartMeasures>;\n /** Whether the bar chart should be horizontal. Defaults to `false`. */\n horizontal?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBarChartClasses;\n}\n\n/**\n * A bar chart is a chart or graph that presents categorical data with rectangular bars.\n */\nexport const HvBarChart = ({\n yAxis,\n xAxis,\n horizontal = false,\n horizontalRangeSlider,\n grid,\n data,\n groupBy,\n splitBy,\n sortBy,\n stack,\n seriesNameFormatter,\n measures,\n legend,\n tooltip,\n classes,\n height,\n width,\n}: HvBarChartProps) => {\n const chartData = useData({ data, groupBy, sortBy, splitBy, measures });\n\n const chartDataset = useDataset(chartData);\n\n const chartYAxis = useYAxis({\n axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],\n defaultType: horizontal ? \"categorical\" : \"continuous\",\n });\n\n const chartXAxis = useXAxis({\n type: horizontal ? \"continuous\" : \"categorical\",\n ...xAxis,\n });\n\n const chartSlider = useDataZoom({\n showHorizontal: horizontalRangeSlider?.show,\n });\n\n const chartGrid = useGrid({ ...grid });\n\n const chartSeries = useSeries({\n type: \"bar\",\n data: chartData,\n groupBy,\n measures,\n stack,\n nameFormatter: seriesNameFormatter,\n horizontal,\n });\n\n const chartLegend = useLegend({\n ...legend,\n series: chartSeries.series,\n icon: \"square\",\n });\n\n const chartTooltip = useTooltip({\n ...tooltip,\n trigger: \"axis\",\n measures,\n classes,\n horizontal,\n });\n\n const options = useMemo(() => {\n return {\n ...chartYAxis,\n ...chartXAxis,\n ...chartSlider,\n ...chartGrid,\n ...chartDataset,\n ...chartSeries,\n ...chartLegend,\n ...chartTooltip,\n };\n }, [\n chartXAxis,\n chartYAxis,\n chartSlider,\n chartGrid,\n chartDataset,\n chartSeries,\n chartLegend,\n chartTooltip,\n ]);\n\n return <HvBaseChart options={options} width={width} height={height} />;\n};\n"],"names":["echarts","use","BarChart","DatasetComponent","GridComponent","TooltipComponent","LegendComponent","DataZoomSliderComponent","DataZoomInsideComponent","HvBarChart","yAxis","xAxis","horizontal","horizontalRangeSlider","grid","data","groupBy","splitBy","sortBy","stack","seriesNameFormatter","measures","legend","tooltip","classes","height","width","chartData","useData","chartDataset","useDataset","chartYAxis","useYAxis","axes","Array","isArray","defaultType","chartXAxis","useXAxis","type","chartSlider","useDataZoom","showHorizontal","show","chartGrid","useGrid","chartSeries","useSeries","nameFormatter","chartLegend","useLegend","series","icon","chartTooltip","useTooltip","trigger","options","useMemo","HvBaseChart"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCAA,mBAAQC,IAAI,CACVC,OACAC,UAAAA,6BACAC,WAAAA,eACAC,WACAC,kBAAAA,4BACAC,WAAAA,yBACAC,WAAuB,uBAAA,CACxB;AAkBM,MAAMC,aAAaA,CAAC;AAAA,EACzBC;AAAAA,EACAC;AAAAA,EACAC,aAAa;AAAA,EACbC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AACe,MAAM;AACrB,QAAMC,YAAYC,QAAAA,QAAQ;AAAA,IAAEb;AAAAA,IAAMC;AAAAA,IAASE;AAAAA,IAAQD;AAAAA,IAASI;AAAAA,EAAAA,CAAU;AAEhEQ,QAAAA,eAAeC,sBAAWH,SAAS;AAEzC,QAAMI,aAAaC,SAAAA,SAAS;AAAA,IAC1BC,MAAMC,MAAMC,QAAQzB,KAAK,KAAKA,SAAS,OAAOA,QAAQ,CAACA,KAAK;AAAA,IAC5D0B,aAAaxB,aAAa,gBAAgB;AAAA,EAAA,CAC3C;AAED,QAAMyB,aAAaC,SAAAA,SAAS;AAAA,IAC1BC,MAAM3B,aAAa,eAAe;AAAA,IAClC,GAAGD;AAAAA,EAAAA,CACJ;AAED,QAAM6B,cAAcC,YAAAA,YAAY;AAAA,IAC9BC,gBAAgB7B,+DAAuB8B;AAAAA,EAAAA,CACxC;AAED,QAAMC,YAAYC,QAAAA,QAAQ;AAAA,IAAE,GAAG/B;AAAAA,EAAAA,CAAM;AAErC,QAAMgC,cAAcC,UAAAA,UAAU;AAAA,IAC5BR,MAAM;AAAA,IACNxB,MAAMY;AAAAA,IACNX;AAAAA,IACAK;AAAAA,IACAF;AAAAA,IACA6B,eAAe5B;AAAAA,IACfR;AAAAA,EAAAA,CACD;AAED,QAAMqC,cAAcC,UAAAA,UAAU;AAAA,IAC5B,GAAG5B;AAAAA,IACH6B,QAAQL,YAAYK;AAAAA,IACpBC,MAAM;AAAA,EAAA,CACP;AAED,QAAMC,eAAeC,WAAAA,WAAW;AAAA,IAC9B,GAAG/B;AAAAA,IACHgC,SAAS;AAAA,IACTlC;AAAAA,IACAG;AAAAA,IACAZ;AAAAA,EAAAA,CACD;AAEK4C,QAAAA,UAAUC,MAAAA,QAAQ,MAAM;AACrB,WAAA;AAAA,MACL,GAAG1B;AAAAA,MACH,GAAGM;AAAAA,MACH,GAAGG;AAAAA,MACH,GAAGI;AAAAA,MACH,GAAGf;AAAAA,MACH,GAAGiB;AAAAA,MACH,GAAGG;AAAAA,MACH,GAAGI;AAAAA,IAAAA;AAAAA,EACL,GACC,CACDhB,YACAN,YACAS,aACAI,WACAf,cACAiB,aACAG,aACAI,YAAY,CACb;AAED,wCAAQK,UAAAA,aAAW;AAAA,IAACF;AAAAA,IAAkB9B;AAAAA,IAAcD;AAAAA,EAAAA,CAAiB;AACvE;;"}
@@ -30,7 +30,9 @@ const echarts__namespace = /* @__PURE__ */ _interopNamespace(echarts);
30
30
  const ReactECharts__default = /* @__PURE__ */ _interopDefault(ReactECharts);
31
31
  echarts__namespace.use([renderers.CanvasRenderer, components.AriaComponent]);
32
32
  const HvBaseChart = ({
33
- options
33
+ options,
34
+ width,
35
+ height
34
36
  }) => {
35
37
  const {
36
38
  theme
@@ -62,7 +64,10 @@ const HvBaseChart = ({
62
64
  currentTheme.current = theme;
63
65
  return;
64
66
  }
65
- (_a = chartRef.current) == null ? void 0 : _a.getEchartsInstance().setOption({
67
+ const instance = (_a = chartRef.current) == null ? void 0 : _a.getEchartsInstance();
68
+ if (!instance)
69
+ return;
70
+ instance.setOption({
66
71
  ...options
67
72
  }, {
68
73
  replaceMerge: ["xAxis", "yAxis", "series", "dataset"]
@@ -73,7 +78,13 @@ const HvBaseChart = ({
73
78
  echarts: echarts__namespace,
74
79
  option: initialOption,
75
80
  theme,
76
- notMerge: true
81
+ notMerge: true,
82
+ ...(width || height) && {
83
+ style: {
84
+ width,
85
+ height
86
+ }
87
+ }
77
88
  });
78
89
  };
79
90
  exports.HvBaseChart = HvBaseChart;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseChart.cjs","sources":["../../../../src/components/BaseChart/BaseChart.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\n\nimport { AriaComponent } from \"echarts/components\";\nimport { CanvasRenderer } from \"echarts/renderers\";\nimport * as echarts from \"echarts/core\";\n\nimport ReactECharts from \"echarts-for-react/lib/core\";\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\nimport { useVizTheme } from \"@viz/hooks\";\n\n// Register chart components\necharts.use([CanvasRenderer, AriaComponent]);\n\nexport interface HvBaseChartProps {\n options: EChartsOption;\n}\n\n/**\n * Base chart.\n */\nexport const HvBaseChart = ({ options }: HvBaseChartProps) => {\n const { theme } = useVizTheme();\n\n const currentTheme = useRef<string | undefined>(theme);\n const chartRef = useRef<ReactECharts>(null);\n const isMounted = useRef<boolean>(false);\n\n const [initialOption, setInitialOption] = useState<EChartsOption>({\n aria: {\n enabled: true,\n },\n animation: false,\n ...options,\n });\n\n useEffect(() => {\n if (!isMounted.current) {\n isMounted.current = true;\n return;\n }\n\n // when the theme changes echarts destroys the chart and mounts it again\n // thus we need to reset the initial option\n if (theme !== currentTheme.current) {\n setInitialOption({\n aria: {\n enabled: true,\n },\n animation: false,\n ...options,\n });\n currentTheme.current = theme;\n return;\n }\n\n chartRef.current?.getEchartsInstance().setOption(\n {\n ...options,\n },\n {\n replaceMerge: [\"xAxis\", \"yAxis\", \"series\", \"dataset\"],\n }\n );\n }, [theme, options]);\n\n return (\n <ReactECharts\n ref={chartRef}\n echarts={echarts}\n option={initialOption}\n theme={theme}\n notMerge\n />\n );\n};\n"],"names":["echarts","use","CanvasRenderer","AriaComponent","HvBaseChart","options","theme","useVizTheme","currentTheme","useRef","chartRef","isMounted","initialOption","setInitialOption","useState","aria","enabled","animation","useEffect","current","getEchartsInstance","setOption","replaceMerge","ReactECharts","ref","option","notMerge"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYAA,mBAAQC,IAAI,CAACC,0BAAgBC,WAAAA,aAAa,CAAC;AASpC,MAAMC,cAAcA,CAAC;AAAA,EAAEC;AAA0B,MAAM;AACtD,QAAA;AAAA,IAAEC;AAAAA,MAAUC,YAAY,YAAA;AAExBC,QAAAA,eAAeC,aAA2BH,KAAK;AAC/CI,QAAAA,WAAWD,aAAqB,IAAI;AACpCE,QAAAA,YAAYF,aAAgB,KAAK;AAEvC,QAAM,CAACG,eAAeC,gBAAgB,IAAIC,eAAwB;AAAA,IAChEC,MAAM;AAAA,MACJC,SAAS;AAAA,IACX;AAAA,IACAC,WAAW;AAAA,IACX,GAAGZ;AAAAA,EAAAA,CACJ;AAEDa,QAAAA,UAAU,MAAM;;AACV,QAAA,CAACP,UAAUQ,SAAS;AACtBR,gBAAUQ,UAAU;AACpB;AAAA,IACF;AAIIb,QAAAA,UAAUE,aAAaW,SAAS;AACjB,uBAAA;AAAA,QACfJ,MAAM;AAAA,UACJC,SAAS;AAAA,QACX;AAAA,QACAC,WAAW;AAAA,QACX,GAAGZ;AAAAA,MAAAA,CACJ;AACDG,mBAAaW,UAAUb;AACvB;AAAA,IACF;AAESa,mBAAAA,YAAAA,mBAASC,qBAAqBC,UACrC;AAAA,MACE,GAAGhB;AAAAA,IAAAA,GAEL;AAAA,MACEiB,cAAc,CAAC,SAAS,SAAS,UAAU,SAAS;AAAA,IAAA;AAAA,EAExD,GACC,CAAChB,OAAOD,OAAO,CAAC;AAEnB,wCACGkB,sBAAAA,SAAY;AAAA,IACXC,KAAKd;AAAAA,IAAAA,SACLV;AAAAA,IACAyB,QAAQb;AAAAA,IACRN;AAAAA,IACAoB,UAAQ;AAAA,EAAA,CACT;AAEL;;"}
1
+ {"version":3,"file":"BaseChart.cjs","sources":["../../../../src/components/BaseChart/BaseChart.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\n\nimport { AriaComponent } from \"echarts/components\";\nimport { CanvasRenderer } from \"echarts/renderers\";\nimport * as echarts from \"echarts/core\";\n\nimport ReactECharts from \"echarts-for-react/lib/core\";\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\nimport { useVizTheme } from \"@viz/hooks\";\n\n// Register chart components\necharts.use([CanvasRenderer, AriaComponent]);\n\nexport interface HvBaseChartProps {\n options: EChartsOption;\n width?: echarts.ResizeOpts[\"width\"];\n height?: echarts.ResizeOpts[\"height\"];\n}\n\n/**\n * Base chart.\n */\nexport const HvBaseChart = ({ options, width, height }: HvBaseChartProps) => {\n const { theme } = useVizTheme();\n\n const currentTheme = useRef<string | undefined>(theme);\n const chartRef = useRef<ReactECharts>(null);\n const isMounted = useRef<boolean>(false);\n\n const [initialOption, setInitialOption] = useState<EChartsOption>({\n aria: {\n enabled: true,\n },\n animation: false,\n ...options,\n });\n\n useEffect(() => {\n if (!isMounted.current) {\n isMounted.current = true;\n return;\n }\n\n // when the theme changes echarts destroys the chart and mounts it again\n // thus we need to reset the initial option\n if (theme !== currentTheme.current) {\n setInitialOption({\n aria: {\n enabled: true,\n },\n animation: false,\n ...options,\n });\n currentTheme.current = theme;\n return;\n }\n\n const instance = chartRef.current?.getEchartsInstance();\n\n if (!instance) return;\n\n instance.setOption(\n {\n ...options,\n },\n {\n replaceMerge: [\"xAxis\", \"yAxis\", \"series\", \"dataset\"],\n }\n );\n }, [theme, options]);\n\n return (\n <ReactECharts\n ref={chartRef}\n echarts={echarts}\n option={initialOption}\n theme={theme}\n notMerge\n {...((width || height) && {\n style: { width, height },\n })}\n />\n );\n};\n"],"names":["echarts","use","CanvasRenderer","AriaComponent","HvBaseChart","options","width","height","theme","useVizTheme","currentTheme","useRef","chartRef","isMounted","initialOption","setInitialOption","useState","aria","enabled","animation","useEffect","current","instance","getEchartsInstance","setOption","replaceMerge","ReactECharts","ref","option","notMerge","style"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYAA,mBAAQC,IAAI,CAACC,0BAAgBC,WAAAA,aAAa,CAAC;AAWpC,MAAMC,cAAcA,CAAC;AAAA,EAAEC;AAAAA,EAASC;AAAAA,EAAOC;AAAyB,MAAM;AACrE,QAAA;AAAA,IAAEC;AAAAA,MAAUC,YAAY,YAAA;AAExBC,QAAAA,eAAeC,aAA2BH,KAAK;AAC/CI,QAAAA,WAAWD,aAAqB,IAAI;AACpCE,QAAAA,YAAYF,aAAgB,KAAK;AAEvC,QAAM,CAACG,eAAeC,gBAAgB,IAAIC,eAAwB;AAAA,IAChEC,MAAM;AAAA,MACJC,SAAS;AAAA,IACX;AAAA,IACAC,WAAW;AAAA,IACX,GAAGd;AAAAA,EAAAA,CACJ;AAEDe,QAAAA,UAAU,MAAM;;AACV,QAAA,CAACP,UAAUQ,SAAS;AACtBR,gBAAUQ,UAAU;AACpB;AAAA,IACF;AAIIb,QAAAA,UAAUE,aAAaW,SAAS;AACjB,uBAAA;AAAA,QACfJ,MAAM;AAAA,UACJC,SAAS;AAAA,QACX;AAAA,QACAC,WAAW;AAAA,QACX,GAAGd;AAAAA,MAAAA,CACJ;AACDK,mBAAaW,UAAUb;AACvB;AAAA,IACF;AAEMc,UAAAA,YAAWV,cAASS,YAATT,mBAAkBW;AAEnC,QAAI,CAACD;AAAU;AAEfA,aAASE,UACP;AAAA,MACE,GAAGnB;AAAAA,IAAAA,GAEL;AAAA,MACEoB,cAAc,CAAC,SAAS,SAAS,UAAU,SAAS;AAAA,IAAA,CAExD;AAAA,EAAA,GACC,CAACjB,OAAOH,OAAO,CAAC;AAEnB,wCACGqB,sBAAAA,SAAY;AAAA,IACXC,KAAKf;AAAAA,IAAAA,SACLZ;AAAAA,IACA4B,QAAQd;AAAAA,IACRN;AAAAA,IACAqB,UAAQ;AAAA,IAAA,IACFvB,SAASC,WAAW;AAAA,MACxBuB,OAAO;AAAA,QAAExB;AAAAA,QAAOC;AAAAA,MAAO;AAAA,IACzB;AAAA,EAAA,CACD;AAEL;;"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const echarts = require("echarts/core");
5
+ const charts = require("echarts/charts");
6
+ const components = require("echarts/components");
7
+ const useXAxis = require("../../hooks/useXAxis.cjs");
8
+ const useYAxis = require("../../hooks/useYAxis.cjs");
9
+ const useGrid = require("../../hooks/useGrid.cjs");
10
+ const useData = require("../../hooks/useData.cjs");
11
+ const useVisualMap = require("../../hooks/useVisualMap.cjs");
12
+ const getGroupKey = require("../../utils/getGroupKey.cjs");
13
+ const ConfusionMatrix_styles = require("./ConfusionMatrix.styles.cjs");
14
+ const utils = require("./utils.cjs");
15
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
16
+ const useTooltip = require("../../hooks/tooltip/useTooltip.cjs");
17
+ const BaseChart = require("../BaseChart/BaseChart.cjs");
18
+ function _interopNamespace(e) {
19
+ if (e && e.__esModule)
20
+ return e;
21
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
22
+ if (e) {
23
+ for (const k in e) {
24
+ if (k !== "default") {
25
+ const d = Object.getOwnPropertyDescriptor(e, k);
26
+ Object.defineProperty(n, k, d.get ? d : {
27
+ enumerable: true,
28
+ get: () => e[k]
29
+ });
30
+ }
31
+ }
32
+ }
33
+ n.default = e;
34
+ return Object.freeze(n);
35
+ }
36
+ const echarts__namespace = /* @__PURE__ */ _interopNamespace(echarts);
37
+ echarts__namespace.use([charts.HeatmapChart, components.VisualMapComponent, components.GridComponent, components.TooltipComponent]);
38
+ const HvConfusionMatrix = ({
39
+ legend,
40
+ groupBy,
41
+ measure,
42
+ sortBy,
43
+ splitBy,
44
+ grid,
45
+ data: dataProp,
46
+ tooltip,
47
+ xAxis,
48
+ yAxis,
49
+ colorScale: colorScaleProp,
50
+ delta,
51
+ valuesProps,
52
+ width,
53
+ height,
54
+ format = "square",
55
+ classes: classesProp
56
+ }) => {
57
+ var _a, _b, _c, _d;
58
+ const {
59
+ classes
60
+ } = ConfusionMatrix_styles.useClasses(classesProp);
61
+ const groupByKey = getGroupKey.getGroupKey(groupBy);
62
+ const chartData = useData.useData({
63
+ data: dataProp,
64
+ groupBy,
65
+ measures: [measure],
66
+ sortBy: sortBy ?? groupBy,
67
+ // automatically orders x axis to create the confusion matrix
68
+ splitBy,
69
+ delta: typeof delta === "string" ? delta : void 0
70
+ });
71
+ const colorScale = utils.useColorScale({
72
+ delta: !!delta,
73
+ data: chartData,
74
+ custom: colorScaleProp,
75
+ filterKey: groupByKey
76
+ });
77
+ const chartVisualMap = useVisualMap.useVisualMap({
78
+ show: (colorScale == null ? void 0 : colorScale.pieces) != null,
79
+ type: (colorScale == null ? void 0 : colorScale.pieces) != null ? "piecewise" : "continuous",
80
+ ...colorScale,
81
+ ...legend
82
+ });
83
+ const chartTooltip = useTooltip.useTooltip({
84
+ component: (params) => {
85
+ var _a2, _b2;
86
+ const value = (_a2 = params == null ? void 0 : params.series) == null ? void 0 : _a2[0].value;
87
+ const fmtValue = typeof measure !== "string" && measure.valueFormatter ? measure.valueFormatter(value) : (tooltip == null ? void 0 : tooltip.valueFormatter) ? tooltip == null ? void 0 : tooltip.valueFormatter(value) : value;
88
+ const ftmTitle = (tooltip == null ? void 0 : tooltip.titleFormatter) ? tooltip.titleFormatter(params == null ? void 0 : params.title) : params == null ? void 0 : params.title;
89
+ const content = `${ftmTitle} - ${(_b2 = params == null ? void 0 : params.series) == null ? void 0 : _b2[0].name}: ${fmtValue}`;
90
+ return `
91
+ <div class="${classes.tooltipRoot}">
92
+ <div class="${classes.tooltipContainer}">
93
+ <div>
94
+ <p class="${classes.tooltipText}">${content}</p>
95
+ </div>
96
+ </div>
97
+ </div>`;
98
+ },
99
+ ...tooltip
100
+ });
101
+ const chartYAxis = useYAxis.useYAxis({
102
+ axes: [{
103
+ type: "categorical",
104
+ name: "True Label",
105
+ position: "left",
106
+ ...yAxis,
107
+ nameProps: {
108
+ location: "center",
109
+ padding: ((_a = yAxis == null ? void 0 : yAxis.nameProps) == null ? void 0 : _a.location) == null || ((_b = yAxis == null ? void 0 : yAxis.nameProps) == null ? void 0 : _b.location) === "center" ? (yAxis == null ? void 0 : yAxis.position) === "right" ? [50, 0, 0, 0] : [0, 0, 50, 0] : void 0,
110
+ ...yAxis == null ? void 0 : yAxis.nameProps
111
+ },
112
+ data: chartData.columnNames().filter((p) => p !== groupByKey).reverse()
113
+ }]
114
+ });
115
+ const chartXAxis = useXAxis.useXAxis({
116
+ name: "Predicted Value",
117
+ position: "top",
118
+ ...xAxis,
119
+ nameProps: {
120
+ location: "center",
121
+ padding: ((_c = xAxis == null ? void 0 : xAxis.nameProps) == null ? void 0 : _c.location) == null || ((_d = xAxis == null ? void 0 : xAxis.nameProps) == null ? void 0 : _d.location) === "center" ? (xAxis == null ? void 0 : xAxis.position) === "bottom" ? [30, 0, 0, 0] : [0, 0, 30, 0] : void 0,
122
+ ...xAxis == null ? void 0 : xAxis.nameProps
123
+ },
124
+ data: chartData.array(groupByKey)
125
+ });
126
+ const chartSeries = utils.useSeries({
127
+ data: chartData,
128
+ filterKey: groupByKey,
129
+ valuesProps,
130
+ delta: !!(delta && colorScale == null)
131
+ });
132
+ const chartGridLayout = utils.useGridLayout({
133
+ data: chartData,
134
+ format,
135
+ filterKey: groupByKey,
136
+ visualMapVisible: chartVisualMap.visualMap.show,
137
+ visualMapYPosition: chartVisualMap.visualMap.top,
138
+ xAxisPosition: chartXAxis.xAxis.position
139
+ });
140
+ const chartGrid = useGrid.useGrid({
141
+ // If sizes are provided, the grid size should automatically adapt to the values provided
142
+ width: width != null ? void 0 : chartGridLayout.size.width,
143
+ height: height != null ? void 0 : chartGridLayout.size.height,
144
+ ...chartGridLayout.padding,
145
+ ...grid
146
+ });
147
+ const size = react.useMemo(() => {
148
+ return {
149
+ width,
150
+ // Echarts has a problem were the height is always set to 300px
151
+ // Thus, we need to update the height to make sure the chart is not cut out
152
+ height: height ?? chartGridLayout.size.height + chartGridLayout.padding.bottom + chartGridLayout.padding.top
153
+ };
154
+ }, [chartGridLayout.padding.bottom, chartGridLayout.padding.top, chartGridLayout.size.height, height, width]);
155
+ const options = react.useMemo(() => {
156
+ return {
157
+ ...chartVisualMap,
158
+ ...chartTooltip,
159
+ ...chartGrid,
160
+ ...chartXAxis,
161
+ ...chartYAxis,
162
+ ...chartSeries
163
+ };
164
+ }, [chartVisualMap, chartTooltip, chartGrid, chartYAxis, chartSeries, chartXAxis]);
165
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseChart.HvBaseChart, {
166
+ options,
167
+ ...size
168
+ });
169
+ };
170
+ exports.HvConfusionMatrix = HvConfusionMatrix;
171
+ //# sourceMappingURL=ConfusionMatrix.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfusionMatrix.cjs","sources":["../../../../src/components/ConfusionMatrix/ConfusionMatrix.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { Arrayable, ExtractNames } from \"@hitachivantara/uikit-react-core\";\n\nimport * as echarts from \"echarts/core\";\nimport { HeatmapChart } from \"echarts/charts\";\nimport {\n VisualMapComponent,\n GridComponent,\n TooltipComponent,\n} from \"echarts/components\";\n\nimport {\n HvVisualMapHookProps,\n useData,\n useGrid,\n useTooltip,\n useVisualMap,\n useXAxis,\n useYAxis,\n} from \"@viz/hooks\";\nimport { getGroupKey } from \"@viz/utils\";\n\nimport { HvBaseChart } from \"../BaseChart\";\nimport { useClasses } from \"./ConfusionMatrix.styles\";\nimport {\n HvChartCommonProps,\n HvChartXAxis,\n HvChartYAxis,\n} from \"../../types/common\";\nimport { HvChartTooltip } from \"../../types/tooltip\";\nimport { HvConfusionMatrixMeasure } from \"../../types/measures\";\nimport { useColorScale, useGridLayout, useSeries } from \"./utils\";\nimport {\n HvConfusionMatrixFormat,\n HvConfusionMatrixColorScale,\n HvConfusionMatrixValuesProps,\n} from \"./types\";\n\n// Register chart components\necharts.use([\n HeatmapChart,\n VisualMapComponent,\n GridComponent,\n TooltipComponent,\n]);\n\nexport type HvConfusionMatrixClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvConfusionMatrixProps\n extends Omit<HvChartCommonProps, \"tooltip\"> {\n /** Column to measure. */\n measure: HvConfusionMatrixMeasure;\n /** Columns to use to split the measure. */\n splitBy?: Arrayable<string>;\n /**\n * Column to use for the delta confusion matrix.\n *\n * It can be set to `true` in case the `measure` already has the calculations for the delta confusion matrix.\n */\n delta?: boolean | string;\n /** Options for the xAxis, i.e. the horizontal axis. */\n xAxis?: HvChartXAxis;\n /** Options for the yAxis, i.e. the vertical axis. */\n yAxis?: HvChartYAxis;\n /** Tooltip options. */\n tooltip?: Omit<HvChartTooltip, \"type\">;\n /** Format of the confusion matrix. Defaults to `square`. */\n format?: HvConfusionMatrixFormat;\n /** Properties to customize the prediction values. */\n valuesProps?: HvConfusionMatrixValuesProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvConfusionMatrixClasses;\n /**\n * Color scale of the confusion matrix.\n *\n * If an array of two strings is provided, the first and second values are the lower and upper ends of the scale, respectively.\n * An array of objects can also be used to create a custom scale.\n * If `delta` is not provided, a default color scale is used when `colorScale` is not defined: `[base-light, cat3]`.\n */\n colorScale?: [string, string] | HvConfusionMatrixColorScale[];\n}\n\n/**\n * Confusion Matrix is a table displaying the performance of a predictive model.\n * Typically the columns show the predicted class and the rows the expected class.\n * The main diagonal counts the positive matches while the cells outside it count the mismatches between predicted and expected.\n */\nexport const HvConfusionMatrix = ({\n legend,\n groupBy,\n measure,\n sortBy,\n splitBy,\n grid,\n data: dataProp,\n tooltip,\n xAxis,\n yAxis,\n colorScale: colorScaleProp,\n delta,\n valuesProps,\n width,\n height,\n format = \"square\",\n classes: classesProp,\n}: HvConfusionMatrixProps) => {\n const { classes } = useClasses(classesProp);\n\n const groupByKey = getGroupKey(groupBy);\n\n const chartData = useData({\n data: dataProp,\n groupBy,\n measures: [measure],\n sortBy: sortBy ?? groupBy, // automatically orders x axis to create the confusion matrix\n splitBy,\n delta: typeof delta === \"string\" ? delta : undefined,\n });\n\n const colorScale = useColorScale({\n delta: !!delta,\n data: chartData,\n custom: colorScaleProp,\n filterKey: groupByKey,\n });\n\n const chartVisualMap = useVisualMap({\n show: colorScale?.pieces != null,\n type: colorScale?.pieces != null ? \"piecewise\" : \"continuous\",\n ...(colorScale as Pick<\n HvVisualMapHookProps,\n \"max\" | \"min\" | \"colorScale\" | \"pieces\"\n >),\n ...legend,\n });\n\n const chartTooltip = useTooltip({\n component: (params) => {\n const value = params?.series?.[0].value;\n const fmtValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : tooltip?.valueFormatter\n ? tooltip?.valueFormatter(value)\n : value;\n const ftmTitle = tooltip?.titleFormatter\n ? tooltip.titleFormatter(params?.title)\n : params?.title;\n\n const content = `${ftmTitle} - ${params?.series?.[0].name}: ${fmtValue}`;\n\n return `\n <div class=\"${classes.tooltipRoot}\">\n <div class=\"${classes.tooltipContainer}\">\n <div>\n <p class=\"${classes.tooltipText}\">${content}</p>\n </div>\n </div>\n </div>`;\n },\n ...tooltip,\n });\n\n const chartYAxis = useYAxis({\n axes: [\n {\n type: \"categorical\",\n name: \"True Label\",\n position: \"left\",\n ...yAxis,\n nameProps: {\n location: \"center\",\n padding:\n yAxis?.nameProps?.location == null ||\n yAxis?.nameProps?.location === \"center\"\n ? yAxis?.position === \"right\"\n ? [50, 0, 0, 0]\n : [0, 0, 50, 0]\n : undefined,\n ...yAxis?.nameProps,\n },\n data: chartData\n .columnNames()\n .filter((p) => p !== groupByKey)\n .reverse(),\n },\n ],\n });\n\n const chartXAxis = useXAxis({\n name: \"Predicted Value\",\n position: \"top\",\n ...xAxis,\n nameProps: {\n location: \"center\",\n padding:\n xAxis?.nameProps?.location == null ||\n xAxis?.nameProps?.location === \"center\"\n ? xAxis?.position === \"bottom\"\n ? [30, 0, 0, 0]\n : [0, 0, 30, 0]\n : undefined,\n ...xAxis?.nameProps,\n },\n data: chartData.array(groupByKey),\n });\n\n const chartSeries = useSeries({\n data: chartData,\n filterKey: groupByKey,\n valuesProps,\n delta: !!(delta && colorScale == null),\n });\n\n const chartGridLayout = useGridLayout({\n data: chartData,\n format,\n filterKey: groupByKey,\n visualMapVisible: chartVisualMap.visualMap.show,\n visualMapYPosition: chartVisualMap.visualMap.top,\n xAxisPosition: chartXAxis.xAxis.position,\n });\n\n const chartGrid = useGrid({\n // If sizes are provided, the grid size should automatically adapt to the values provided\n width: width != null ? undefined : chartGridLayout.size.width,\n height: height != null ? undefined : chartGridLayout.size.height,\n ...chartGridLayout.padding,\n ...grid,\n });\n\n const size = useMemo(() => {\n return {\n width,\n // Echarts has a problem were the height is always set to 300px\n // Thus, we need to update the height to make sure the chart is not cut out\n height:\n height ??\n chartGridLayout.size.height +\n chartGridLayout.padding.bottom +\n chartGridLayout.padding.top,\n };\n }, [\n chartGridLayout.padding.bottom,\n chartGridLayout.padding.top,\n chartGridLayout.size.height,\n height,\n width,\n ]);\n\n const options = useMemo(() => {\n return {\n ...chartVisualMap,\n ...chartTooltip,\n ...chartGrid,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n };\n }, [\n chartVisualMap,\n chartTooltip,\n chartGrid,\n chartYAxis,\n chartSeries,\n chartXAxis,\n ]);\n\n return <HvBaseChart options={options} {...size} />;\n};\n"],"names":["echarts","use","HeatmapChart","VisualMapComponent","GridComponent","TooltipComponent","HvConfusionMatrix","legend","groupBy","measure","sortBy","splitBy","grid","data","dataProp","tooltip","xAxis","yAxis","colorScale","colorScaleProp","delta","valuesProps","width","height","format","classes","classesProp","useClasses","groupByKey","getGroupKey","chartData","useData","measures","undefined","useColorScale","custom","filterKey","chartVisualMap","useVisualMap","show","pieces","type","chartTooltip","useTooltip","component","params","value","series","fmtValue","valueFormatter","ftmTitle","titleFormatter","title","content","name","tooltipRoot","tooltipContainer","tooltipText","chartYAxis","useYAxis","axes","position","nameProps","location","padding","columnNames","filter","p","reverse","chartXAxis","useXAxis","array","chartSeries","useSeries","chartGridLayout","useGridLayout","visualMapVisible","visualMap","visualMapYPosition","top","xAxisPosition","chartGrid","useGrid","size","useMemo","bottom","options","HvBaseChart"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const uikitReactCore = require("@hitachivantara/uikit-react-core");
4
+ const {
5
+ useClasses,
6
+ staticClasses
7
+ } = uikitReactCore.createClasses("HvConfusionMatrix", {
8
+ tooltipRoot: {
9
+ backgroundColor: uikitReactCore.theme.colors.atmo1,
10
+ width: "fit-content",
11
+ minWidth: 150,
12
+ boxShadow: uikitReactCore.theme.colors.shadow,
13
+ zIndex: uikitReactCore.theme.zIndices.sticky
14
+ },
15
+ tooltipContainer: {
16
+ padding: uikitReactCore.theme.spacing(["15px", "sm"]),
17
+ display: "flex",
18
+ flexDirection: "column"
19
+ },
20
+ tooltipText: {
21
+ fontFamily: uikitReactCore.theme.fontFamily.body,
22
+ fontWeight: uikitReactCore.theme.fontWeights.normal,
23
+ fontSize: uikitReactCore.theme.fontSizes.sm,
24
+ color: uikitReactCore.theme.colors.secondary
25
+ }
26
+ });
27
+ exports.staticClasses = staticClasses;
28
+ exports.useClasses = useClasses;
29
+ //# sourceMappingURL=ConfusionMatrix.styles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfusionMatrix.styles.cjs","sources":["../../../../src/components/ConfusionMatrix/ConfusionMatrix.styles.tsx"],"sourcesContent":["import { createClasses, theme } from \"@hitachivantara/uikit-react-core\";\n\nexport const { useClasses, staticClasses } = createClasses(\n \"HvConfusionMatrix\",\n {\n tooltipRoot: {\n backgroundColor: theme.colors.atmo1,\n width: \"fit-content\",\n minWidth: 150,\n boxShadow: theme.colors.shadow,\n zIndex: theme.zIndices.sticky,\n },\n tooltipContainer: {\n padding: theme.spacing([\"15px\", \"sm\"]),\n display: \"flex\",\n flexDirection: \"column\",\n },\n tooltipText: {\n fontFamily: theme.fontFamily.body,\n fontWeight: theme.fontWeights.normal,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.secondary,\n },\n }\n);\n"],"names":["useClasses","staticClasses","createClasses","tooltipRoot","backgroundColor","theme","colors","atmo1","width","minWidth","boxShadow","shadow","zIndex","zIndices","sticky","tooltipContainer","padding","spacing","display","flexDirection","tooltipText","fontFamily","body","fontWeight","fontWeights","normal","fontSize","fontSizes","sm","color","secondary"],"mappings":";;;AAEa,MAAA;AAAA,EAAEA;AAAAA,EAAYC;AAAc,IAAIC,eAAAA,cAC3C,qBACA;AAAA,EACEC,aAAa;AAAA,IACXC,iBAAiBC,eAAAA,MAAMC,OAAOC;AAAAA,IAC9BC,OAAO;AAAA,IACPC,UAAU;AAAA,IACVC,WAAWL,eAAAA,MAAMC,OAAOK;AAAAA,IACxBC,QAAQP,eAAAA,MAAMQ,SAASC;AAAAA,EACzB;AAAA,EACAC,kBAAkB;AAAA,IAChBC,SAASX,eAAAA,MAAMY,QAAQ,CAAC,QAAQ,IAAI,CAAC;AAAA,IACrCC,SAAS;AAAA,IACTC,eAAe;AAAA,EACjB;AAAA,EACAC,aAAa;AAAA,IACXC,YAAYhB,eAAAA,MAAMgB,WAAWC;AAAAA,IAC7BC,YAAYlB,eAAAA,MAAMmB,YAAYC;AAAAA,IAC9BC,UAAUrB,eAAAA,MAAMsB,UAAUC;AAAAA,IAC1BC,OAAOxB,eAAAA,MAAMC,OAAOwB;AAAAA,EACtB;AACF,CACF;;;"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const uikitReactCore = require("@hitachivantara/uikit-react-core");
5
+ const useColorScale = ({
6
+ data,
7
+ delta,
8
+ custom,
9
+ filterKey
10
+ }) => {
11
+ const {
12
+ activeTheme,
13
+ selectedMode
14
+ } = uikitReactCore.useTheme();
15
+ const colorScale = react.useMemo(() => {
16
+ if (custom == null && delta) {
17
+ return;
18
+ }
19
+ if (custom && typeof custom[0] === "object") {
20
+ return {
21
+ pieces: custom.reduce((acc, curr) => {
22
+ acc.push({
23
+ ...curr,
24
+ color: (activeTheme == null ? void 0 : activeTheme.colors.modes[selectedMode][curr.color]) || curr.color
25
+ });
26
+ return acc;
27
+ }, [])
28
+ };
29
+ }
30
+ const flatData = data.columnNames().filter((p) => p !== filterKey).reduce((acc, c) => {
31
+ acc.push(...data.array(c));
32
+ return acc;
33
+ }, []);
34
+ const max = Math.max(...flatData);
35
+ const min = Math.min(...flatData);
36
+ return {
37
+ colorScale: custom || [(activeTheme == null ? void 0 : activeTheme.colors.modes[selectedMode].base_light) || "", (activeTheme == null ? void 0 : activeTheme.colors.modes[selectedMode].cat3) || ""],
38
+ max,
39
+ min
40
+ };
41
+ }, [activeTheme == null ? void 0 : activeTheme.colors.modes, custom, data, filterKey, delta, selectedMode]);
42
+ return colorScale;
43
+ };
44
+ const useSeries = ({
45
+ data,
46
+ filterKey,
47
+ delta,
48
+ valuesProps
49
+ }) => {
50
+ const {
51
+ activeTheme,
52
+ selectedMode
53
+ } = uikitReactCore.useTheme();
54
+ const getDeltaColor = react.useCallback((value, diagonal) => {
55
+ if (diagonal && value > 0 || !diagonal && value < 0) {
56
+ return activeTheme == null ? void 0 : activeTheme.colors.modes[selectedMode].positive;
57
+ }
58
+ if (diagonal && value < 0 || !diagonal && value > 0) {
59
+ return activeTheme == null ? void 0 : activeTheme.colors.modes[selectedMode].negative;
60
+ }
61
+ return activeTheme == null ? void 0 : activeTheme.colors.modes[selectedMode].base_light;
62
+ }, [activeTheme == null ? void 0 : activeTheme.colors.modes, selectedMode]);
63
+ const chartSeries = react.useMemo(() => {
64
+ return {
65
+ series: {
66
+ id: `series~${filterKey}`,
67
+ type: "heatmap",
68
+ label: {
69
+ show: true,
70
+ ...valuesProps,
71
+ ...(valuesProps == null ? void 0 : valuesProps.color) && {
72
+ color: (activeTheme == null ? void 0 : activeTheme.colors.modes[selectedMode][valuesProps.color]) || valuesProps.color
73
+ }
74
+ },
75
+ emphasis: {
76
+ disabled: true
77
+ },
78
+ data: data.columnNames().filter((p) => p !== filterKey).reduce((acc, c, j) => {
79
+ const row = data.array(c).reduce((racc, rv, i) => {
80
+ racc.push({
81
+ value: [data.array(filterKey)[i], c, rv != null ? rv : "-"],
82
+ ...delta && {
83
+ visualMap: false,
84
+ itemStyle: {
85
+ color: getDeltaColor(rv, i === j)
86
+ }
87
+ }
88
+ });
89
+ return racc;
90
+ }, []);
91
+ acc.push(...row);
92
+ return acc;
93
+ }, [])
94
+ }
95
+ };
96
+ }, [activeTheme == null ? void 0 : activeTheme.colors.modes, data, delta, filterKey, getDeltaColor, selectedMode, valuesProps]);
97
+ return chartSeries;
98
+ };
99
+ const SQUARE_SIZE = 52;
100
+ const useGridLayout = ({
101
+ data,
102
+ filterKey,
103
+ format,
104
+ xAxisPosition,
105
+ visualMapVisible,
106
+ visualMapYPosition
107
+ }) => {
108
+ const size = react.useMemo(() => {
109
+ const nCols = data.array(filterKey).length;
110
+ const nRows = data.columnNames().filter((p) => p !== filterKey).length;
111
+ const itemHeight = format === "square" ? SQUARE_SIZE : SQUARE_SIZE / 2;
112
+ return {
113
+ padding: {
114
+ bottom: xAxisPosition === "bottom" || visualMapVisible && visualMapYPosition === "bottom" ? 60 : 20,
115
+ top: xAxisPosition === "top" || visualMapVisible && visualMapYPosition === "top" ? 60 : 20,
116
+ ...visualMapVisible && visualMapYPosition === "bottom" && xAxisPosition === "bottom" && {
117
+ bottom: 100
118
+ },
119
+ ...visualMapVisible && visualMapYPosition === "top" && xAxisPosition === "top" && {
120
+ top: 100
121
+ },
122
+ left: 80,
123
+ right: 80
124
+ },
125
+ size: {
126
+ height: Math.max(itemHeight * nRows, itemHeight * 8),
127
+ width: Math.max(SQUARE_SIZE * nCols, SQUARE_SIZE * 8)
128
+ }
129
+ };
130
+ }, [data, filterKey, format, visualMapVisible, visualMapYPosition, xAxisPosition]);
131
+ return size;
132
+ };
133
+ exports.useColorScale = useColorScale;
134
+ exports.useGridLayout = useGridLayout;
135
+ exports.useSeries = useSeries;
136
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","sources":["../../../../src/components/ConfusionMatrix/utils.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\n\nimport type ColumnTable from \"arquero/dist/types/table/column-table\";\n\nimport { useTheme } from \"@hitachivantara/uikit-react-core\";\n\nimport { HvChartXAxis } from \"@viz/types/common\";\n\nimport {\n HvConfusionMatrixColorScale,\n HvConfusionMatrixFormat,\n HvConfusionMatrixValuesProps,\n} from \"./types\";\n\nexport const useColorScale = ({\n data,\n delta,\n custom,\n filterKey,\n}: {\n data: ColumnTable;\n delta: boolean;\n filterKey: string;\n custom?: [string, string] | HvConfusionMatrixColorScale[];\n}) => {\n const { activeTheme, selectedMode } = useTheme();\n\n const colorScale = useMemo(() => {\n if (custom == null && delta) {\n return;\n }\n\n if (custom && typeof custom[0] === \"object\") {\n return {\n pieces: (custom as HvConfusionMatrixColorScale[]).reduce(\n (acc: HvConfusionMatrixColorScale[], curr) => {\n acc.push({\n ...curr,\n color:\n activeTheme?.colors.modes[selectedMode][curr.color] ||\n curr.color,\n });\n return acc;\n },\n []\n ),\n };\n }\n\n const flatData = data\n .columnNames()\n .filter((p) => p !== filterKey)\n .reduce((acc: number[], c: string) => {\n acc.push(...data.array(c));\n return acc;\n }, []);\n const max = Math.max(...flatData);\n const min = Math.min(...flatData);\n\n return {\n colorScale: custom || [\n activeTheme?.colors.modes[selectedMode].base_light || \"\",\n activeTheme?.colors.modes[selectedMode].cat3 || \"\",\n ],\n max,\n min,\n };\n }, [activeTheme?.colors.modes, custom, data, filterKey, delta, selectedMode]);\n\n return colorScale;\n};\n\nexport const useSeries = ({\n data,\n filterKey,\n delta,\n valuesProps,\n}: {\n data: ColumnTable;\n filterKey: string;\n delta: boolean;\n valuesProps?: HvConfusionMatrixValuesProps;\n}) => {\n const { activeTheme, selectedMode } = useTheme();\n\n const getDeltaColor = useCallback(\n (value: number, diagonal: boolean) => {\n if ((diagonal && value > 0) || (!diagonal && value < 0)) {\n return activeTheme?.colors.modes[selectedMode].positive;\n }\n if ((diagonal && value < 0) || (!diagonal && value > 0)) {\n return activeTheme?.colors.modes[selectedMode].negative;\n }\n\n return activeTheme?.colors.modes[selectedMode].base_light;\n },\n [activeTheme?.colors.modes, selectedMode]\n );\n\n const chartSeries = useMemo(() => {\n return {\n series: {\n id: `series~${filterKey}`,\n type: \"heatmap\",\n label: {\n show: true,\n ...valuesProps,\n ...(valuesProps?.color && {\n color:\n activeTheme?.colors.modes[selectedMode][valuesProps.color] ||\n valuesProps.color,\n }),\n },\n emphasis: {\n disabled: true,\n },\n data: data\n .columnNames()\n .filter((p) => p !== filterKey)\n .reduce((acc: (string | number)[][], c: string, j) => {\n const row: (string | number)[][] = data\n .array(c)\n .reduce((racc, rv, i) => {\n racc.push({\n value: [data.array(filterKey)[i], c, rv != null ? rv : \"-\"],\n ...(delta && {\n visualMap: false,\n itemStyle: {\n color: getDeltaColor(rv, i === j),\n },\n }),\n });\n return racc;\n }, []);\n\n acc.push(...row);\n return acc;\n }, []),\n },\n };\n }, [\n activeTheme?.colors.modes,\n data,\n delta,\n filterKey,\n getDeltaColor,\n selectedMode,\n valuesProps,\n ]);\n\n return chartSeries;\n};\n\nconst SQUARE_SIZE = 52;\n\nexport const useGridLayout = ({\n data,\n filterKey,\n format,\n xAxisPosition,\n visualMapVisible,\n visualMapYPosition,\n}: {\n xAxisPosition: HvChartXAxis[\"position\"];\n data: ColumnTable;\n filterKey: string;\n format: HvConfusionMatrixFormat;\n visualMapVisible: boolean;\n visualMapYPosition: \"top\" | \"center\" | \"bottom\";\n}) => {\n const size = useMemo(() => {\n const nCols = data.array(filterKey).length;\n const nRows = data.columnNames().filter((p) => p !== filterKey).length;\n const itemHeight = format === \"square\" ? SQUARE_SIZE : SQUARE_SIZE / 2;\n\n return {\n padding: {\n bottom:\n xAxisPosition === \"bottom\" ||\n (visualMapVisible && visualMapYPosition === \"bottom\")\n ? 60\n : 20,\n top:\n xAxisPosition === \"top\" ||\n (visualMapVisible && visualMapYPosition === \"top\")\n ? 60\n : 20,\n ...(visualMapVisible &&\n visualMapYPosition === \"bottom\" &&\n xAxisPosition === \"bottom\" && {\n bottom: 100,\n }),\n ...(visualMapVisible &&\n visualMapYPosition === \"top\" &&\n xAxisPosition === \"top\" && {\n top: 100,\n }),\n left: 80,\n right: 80,\n },\n size: {\n height: Math.max(itemHeight * nRows, itemHeight * 8),\n width: Math.max(SQUARE_SIZE * nCols, SQUARE_SIZE * 8),\n },\n };\n }, [\n data,\n filterKey,\n format,\n visualMapVisible,\n visualMapYPosition,\n xAxisPosition,\n ]);\n\n return size;\n};\n"],"names":["useColorScale","data","delta","custom","filterKey","activeTheme","selectedMode","useTheme","colorScale","useMemo","pieces","reduce","acc","curr","push","color","colors","modes","flatData","columnNames","filter","p","c","array","max","Math","min","base_light","cat3","useSeries","valuesProps","getDeltaColor","useCallback","value","diagonal","positive","negative","chartSeries","series","id","type","label","show","emphasis","disabled","j","row","racc","rv","i","visualMap","itemStyle","SQUARE_SIZE","useGridLayout","format","xAxisPosition","visualMapVisible","visualMapYPosition","size","nCols","length","nRows","itemHeight","padding","bottom","top","left","right","height","width"],"mappings":"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"}
@@ -41,6 +41,8 @@ const HvDonutChart = ({
41
41
  measure: measures,
42
42
  sortBy,
43
43
  grid,
44
+ width,
45
+ height,
44
46
  type = "regular",
45
47
  slicesNameFormatter
46
48
  }) => {
@@ -84,7 +86,9 @@ const HvDonutChart = ({
84
86
  };
85
87
  }, [chartSeries, chartDataset, chartLegend, chartTooltip, chartGrid]);
86
88
  return /* @__PURE__ */ jsxRuntime.jsx(BaseChart.HvBaseChart, {
87
- options
89
+ options,
90
+ width,
91
+ height
88
92
  });
89
93
  };
90
94
  exports.HvDonutChart = HvDonutChart;
@@ -1 +1 @@
1
- {"version":3,"file":"DonutChart.cjs","sources":["../../../../src/components/DonutChart/DonutChart.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport * as echarts from \"echarts/core\";\nimport { PieChart } from \"echarts/charts\";\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n} from \"echarts/components\";\n\nimport {\n HvChartTooltipClasses,\n useData,\n useDataset,\n useGrid,\n useLegend,\n useSeries,\n useTooltip,\n} from \"@viz/hooks\";\n\nimport { HvBaseChart } from \"../BaseChart\";\nimport { HvChartCommonProps } from \"../../types/common\";\nimport { HvDonutChartMeasure } from \"../../types\";\n\n// Register chart components\necharts.use([\n PieChart,\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport interface HvDonutChartClasses extends HvChartTooltipClasses {}\n\nexport interface HvDonutChartProps extends HvChartCommonProps {\n /** Column to measure. */\n measure: HvDonutChartMeasure;\n /** Type: regular or thin. Defaults to `regular`. */\n type?: \"regular\" | \"thin\";\n /** Formatter for the slices names used on the tooltips and legend. */\n slicesNameFormatter?: (value?: string) => string;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDonutChartClasses;\n}\n\n/**\n * Donut charts nicely convey the part-whole relationship and they have become\n * the most recognizable chart types for representing proportions in business and data statistics.\n */\nexport const HvDonutChart = ({\n data,\n groupBy,\n classes,\n legend,\n tooltip,\n measure: measures,\n sortBy,\n grid,\n type = \"regular\",\n slicesNameFormatter,\n}: HvDonutChartProps) => {\n const chartData = useData({ data, groupBy, measures, sortBy });\n\n const chartDataset = useDataset(chartData);\n\n const chartSeries = useSeries({\n type: \"pie\",\n data: chartData,\n groupBy,\n measures,\n radius: type === \"thin\" ? [\"65%\", \"70%\"] : [\"55%\", \"70%\"],\n });\n\n const chartLegend = useLegend({\n ...legend,\n show: legend?.show ?? true,\n icon: \"square\",\n series: chartSeries.series,\n formatter: slicesNameFormatter,\n });\n\n const chartTooltip = useTooltip({\n ...tooltip,\n measures,\n classes,\n nameFormatter: slicesNameFormatter,\n });\n\n const chartGrid = useGrid({ ...grid });\n\n const options = useMemo(() => {\n return {\n ...chartSeries,\n ...chartDataset,\n ...chartLegend,\n ...chartTooltip,\n ...chartGrid,\n };\n }, [chartSeries, chartDataset, chartLegend, chartTooltip, chartGrid]);\n\n return <HvBaseChart options={options} />;\n};\n"],"names":["echarts","use","PieChart","DatasetComponent","GridComponent","TooltipComponent","LegendComponent","HvDonutChart","data","groupBy","classes","legend","tooltip","measure","measures","sortBy","grid","type","slicesNameFormatter","chartData","useData","chartDataset","useDataset","chartSeries","useSeries","radius","chartLegend","useLegend","show","icon","series","formatter","chartTooltip","useTooltip","nameFormatter","chartGrid","useGrid","options","useMemo","HvBaseChart"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BAA,mBAAQC,IAAI,CACVC,iBACAC,WAAAA,kBACAC,WAAAA,eACAC,WAAAA,kBACAC,WAAe,eAAA,CAChB;AAmBM,MAAMC,eAAeA,CAAC;AAAA,EAC3BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC,OAAO;AAAA,EACPC;AACiB,MAAM;AACvB,QAAMC,YAAYC,QAAAA,QAAQ;AAAA,IAAEZ;AAAAA,IAAMC;AAAAA,IAASK;AAAAA,IAAUC;AAAAA,EAAAA,CAAQ;AAEvDM,QAAAA,eAAeC,sBAAWH,SAAS;AAEzC,QAAMI,cAAcC,UAAAA,UAAU;AAAA,IAC5BP,MAAM;AAAA,IACNT,MAAMW;AAAAA,IACNV;AAAAA,IACAK;AAAAA,IACAW,QAAQR,SAAS,SAAS,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,KAAK;AAAA,EAAA,CACzD;AAED,QAAMS,cAAcC,UAAAA,UAAU;AAAA,IAC5B,GAAGhB;AAAAA,IACHiB,OAAMjB,iCAAQiB,SAAQ;AAAA,IACtBC,MAAM;AAAA,IACNC,QAAQP,YAAYO;AAAAA,IACpBC,WAAWb;AAAAA,EAAAA,CACZ;AAED,QAAMc,eAAeC,WAAAA,WAAW;AAAA,IAC9B,GAAGrB;AAAAA,IACHE;AAAAA,IACAJ;AAAAA,IACAwB,eAAehB;AAAAA,EAAAA,CAChB;AAED,QAAMiB,YAAYC,QAAAA,QAAQ;AAAA,IAAE,GAAGpB;AAAAA,EAAAA,CAAM;AAE/BqB,QAAAA,UAAUC,MAAAA,QAAQ,MAAM;AACrB,WAAA;AAAA,MACL,GAAGf;AAAAA,MACH,GAAGF;AAAAA,MACH,GAAGK;AAAAA,MACH,GAAGM;AAAAA,MACH,GAAGG;AAAAA,IAAAA;AAAAA,EACL,GACC,CAACZ,aAAaF,cAAcK,aAAaM,cAAcG,SAAS,CAAC;AAEpE,wCAAQI,UAAAA,aAAW;AAAA,IAACF;AAAAA,EAAAA,CAAmB;AACzC;;"}
1
+ {"version":3,"file":"DonutChart.cjs","sources":["../../../../src/components/DonutChart/DonutChart.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport * as echarts from \"echarts/core\";\nimport { PieChart } from \"echarts/charts\";\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n} from \"echarts/components\";\n\nimport {\n HvChartTooltipClasses,\n useData,\n useDataset,\n useGrid,\n useLegend,\n useSeries,\n useTooltip,\n} from \"@viz/hooks\";\n\nimport { HvBaseChart } from \"../BaseChart\";\nimport { HvChartCommonProps } from \"../../types/common\";\nimport { HvDonutChartMeasure } from \"../../types\";\n\n// Register chart components\necharts.use([\n PieChart,\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport interface HvDonutChartClasses extends HvChartTooltipClasses {}\n\nexport interface HvDonutChartProps extends HvChartCommonProps {\n /** Column to measure. */\n measure: HvDonutChartMeasure;\n /** Type: regular or thin. Defaults to `regular`. */\n type?: \"regular\" | \"thin\";\n /** Formatter for the slices names used on the tooltips and legend. */\n slicesNameFormatter?: (value?: string) => string;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDonutChartClasses;\n}\n\n/**\n * Donut charts nicely convey the part-whole relationship and they have become\n * the most recognizable chart types for representing proportions in business and data statistics.\n */\nexport const HvDonutChart = ({\n data,\n groupBy,\n classes,\n legend,\n tooltip,\n measure: measures,\n sortBy,\n grid,\n width,\n height,\n type = \"regular\",\n slicesNameFormatter,\n}: HvDonutChartProps) => {\n const chartData = useData({ data, groupBy, measures, sortBy });\n\n const chartDataset = useDataset(chartData);\n\n const chartSeries = useSeries({\n type: \"pie\",\n data: chartData,\n groupBy,\n measures,\n radius: type === \"thin\" ? [\"65%\", \"70%\"] : [\"55%\", \"70%\"],\n });\n\n const chartLegend = useLegend({\n ...legend,\n show: legend?.show ?? true,\n icon: \"square\",\n series: chartSeries.series,\n formatter: slicesNameFormatter,\n });\n\n const chartTooltip = useTooltip({\n ...tooltip,\n measures,\n classes,\n nameFormatter: slicesNameFormatter,\n });\n\n const chartGrid = useGrid({ ...grid });\n\n const options = useMemo(() => {\n return {\n ...chartSeries,\n ...chartDataset,\n ...chartLegend,\n ...chartTooltip,\n ...chartGrid,\n };\n }, [chartSeries, chartDataset, chartLegend, chartTooltip, chartGrid]);\n\n return <HvBaseChart options={options} width={width} height={height} />;\n};\n"],"names":["echarts","use","PieChart","DatasetComponent","GridComponent","TooltipComponent","LegendComponent","HvDonutChart","data","groupBy","classes","legend","tooltip","measure","measures","sortBy","grid","width","height","type","slicesNameFormatter","chartData","useData","chartDataset","useDataset","chartSeries","useSeries","radius","chartLegend","useLegend","show","icon","series","formatter","chartTooltip","useTooltip","nameFormatter","chartGrid","useGrid","options","useMemo","HvBaseChart"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BAA,mBAAQC,IAAI,CACVC,iBACAC,WAAAA,kBACAC,WAAAA,eACAC,WAAAA,kBACAC,WAAe,eAAA,CAChB;AAmBM,MAAMC,eAAeA,CAAC;AAAA,EAC3BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,OAAO;AAAA,EACPC;AACiB,MAAM;AACvB,QAAMC,YAAYC,QAAAA,QAAQ;AAAA,IAAEd;AAAAA,IAAMC;AAAAA,IAASK;AAAAA,IAAUC;AAAAA,EAAAA,CAAQ;AAEvDQ,QAAAA,eAAeC,sBAAWH,SAAS;AAEzC,QAAMI,cAAcC,UAAAA,UAAU;AAAA,IAC5BP,MAAM;AAAA,IACNX,MAAMa;AAAAA,IACNZ;AAAAA,IACAK;AAAAA,IACAa,QAAQR,SAAS,SAAS,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,KAAK;AAAA,EAAA,CACzD;AAED,QAAMS,cAAcC,UAAAA,UAAU;AAAA,IAC5B,GAAGlB;AAAAA,IACHmB,OAAMnB,iCAAQmB,SAAQ;AAAA,IACtBC,MAAM;AAAA,IACNC,QAAQP,YAAYO;AAAAA,IACpBC,WAAWb;AAAAA,EAAAA,CACZ;AAED,QAAMc,eAAeC,WAAAA,WAAW;AAAA,IAC9B,GAAGvB;AAAAA,IACHE;AAAAA,IACAJ;AAAAA,IACA0B,eAAehB;AAAAA,EAAAA,CAChB;AAED,QAAMiB,YAAYC,QAAAA,QAAQ;AAAA,IAAE,GAAGtB;AAAAA,EAAAA,CAAM;AAE/BuB,QAAAA,UAAUC,MAAAA,QAAQ,MAAM;AACrB,WAAA;AAAA,MACL,GAAGf;AAAAA,MACH,GAAGF;AAAAA,MACH,GAAGK;AAAAA,MACH,GAAGM;AAAAA,MACH,GAAGG;AAAAA,IAAAA;AAAAA,EACL,GACC,CAACZ,aAAaF,cAAcK,aAAaM,cAAcG,SAAS,CAAC;AAEpE,wCAAQI,UAAAA,aAAW;AAAA,IAACF;AAAAA,IAAkBtB;AAAAA,IAAcC;AAAAA,EAAAA,CAAiB;AACvE;;"}
@@ -52,7 +52,9 @@ const HvLineChart = ({
52
52
  seriesNameFormatter,
53
53
  legend,
54
54
  classes,
55
- tooltip
55
+ tooltip,
56
+ width,
57
+ height
56
58
  }) => {
57
59
  const chartData = useData.useData({
58
60
  data,
@@ -63,10 +65,10 @@ const HvLineChart = ({
63
65
  });
64
66
  const chartDataset = useDataset.useDataset(chartData);
65
67
  const chartYAxis = useYAxis.useYAxis({
66
- yAxis
68
+ axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis]
67
69
  });
68
70
  const chartXAxis = useXAxis.useXAxis({
69
- xAxis,
71
+ ...xAxis,
70
72
  scale: true
71
73
  });
72
74
  const chartSlider = useDataZoom.useDataZoom({
@@ -109,7 +111,9 @@ const HvLineChart = ({
109
111
  };
110
112
  }, [chartXAxis, chartYAxis, chartSlider, chartGrid, chartDataset, chartSeries, chartLegend, chartTooltip]);
111
113
  return /* @__PURE__ */ jsxRuntime.jsx(BaseChart.HvBaseChart, {
112
- options
114
+ options,
115
+ width,
116
+ height
113
117
  });
114
118
  };
115
119
  exports.HvLineChart = HvLineChart;