@hitachivantara/uikit-react-viz 5.2.8 → 5.3.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.
Files changed (90) hide show
  1. package/dist/cjs/components/BarChart/BarChart.cjs +103 -4
  2. package/dist/cjs/components/BarChart/BarChart.cjs.map +1 -1
  3. package/dist/cjs/components/BaseChart/BaseChart.cjs +6 -349
  4. package/dist/cjs/components/BaseChart/BaseChart.cjs.map +1 -1
  5. package/dist/cjs/components/DonutChart/DonutChart.cjs +91 -0
  6. package/dist/cjs/components/DonutChart/DonutChart.cjs.map +1 -0
  7. package/dist/cjs/components/LineChart/LineChart.cjs +100 -4
  8. package/dist/cjs/components/LineChart/LineChart.cjs.map +1 -1
  9. package/dist/cjs/{components/BaseChart/BaseChart.styles.cjs → hooks/tooltip/styles.cjs} +2 -2
  10. package/dist/cjs/hooks/tooltip/styles.cjs.map +1 -0
  11. package/dist/cjs/hooks/tooltip/useTooltip.cjs +98 -0
  12. package/dist/cjs/hooks/tooltip/useTooltip.cjs.map +1 -0
  13. package/dist/cjs/hooks/useData.cjs +93 -0
  14. package/dist/cjs/hooks/useData.cjs.map +1 -0
  15. package/dist/cjs/hooks/useDataZoom.cjs +25 -0
  16. package/dist/cjs/hooks/useDataZoom.cjs.map +1 -0
  17. package/dist/cjs/hooks/useDataset.cjs +18 -0
  18. package/dist/cjs/hooks/useDataset.cjs.map +1 -0
  19. package/dist/cjs/hooks/useGrid.cjs +32 -0
  20. package/dist/cjs/hooks/useGrid.cjs.map +1 -0
  21. package/dist/cjs/hooks/useLegend.cjs +46 -0
  22. package/dist/cjs/hooks/useLegend.cjs.map +1 -0
  23. package/dist/cjs/hooks/useSeries.cjs +99 -0
  24. package/dist/cjs/hooks/useSeries.cjs.map +1 -0
  25. package/dist/cjs/hooks/useVizTheme.cjs.map +1 -1
  26. package/dist/cjs/hooks/useXAxis.cjs +29 -0
  27. package/dist/cjs/hooks/useXAxis.cjs.map +1 -0
  28. package/dist/cjs/hooks/useYAxis.cjs +42 -0
  29. package/dist/cjs/hooks/useYAxis.cjs.map +1 -0
  30. package/dist/cjs/index.cjs +2 -0
  31. package/dist/cjs/index.cjs.map +1 -1
  32. package/dist/cjs/providers/Provider.cjs +8 -10
  33. package/dist/cjs/providers/Provider.cjs.map +1 -1
  34. package/dist/cjs/utils/getGroupKey.cjs +5 -0
  35. package/dist/cjs/utils/getGroupKey.cjs.map +1 -0
  36. package/dist/cjs/utils/getLegendIcon.cjs +7 -4
  37. package/dist/cjs/utils/getLegendIcon.cjs.map +1 -1
  38. package/dist/cjs/utils/getMeasure.cjs +14 -0
  39. package/dist/cjs/utils/getMeasure.cjs.map +1 -0
  40. package/dist/cjs/utils/registerTheme.cjs +104 -0
  41. package/dist/cjs/utils/registerTheme.cjs.map +1 -0
  42. package/dist/esm/components/BarChart/BarChart.js +84 -4
  43. package/dist/esm/components/BarChart/BarChart.js.map +1 -1
  44. package/dist/esm/components/BaseChart/BaseChart.js +8 -351
  45. package/dist/esm/components/BaseChart/BaseChart.js.map +1 -1
  46. package/dist/esm/components/DonutChart/DonutChart.js +72 -0
  47. package/dist/esm/components/DonutChart/DonutChart.js.map +1 -0
  48. package/dist/esm/components/LineChart/LineChart.js +81 -4
  49. package/dist/esm/components/LineChart/LineChart.js.map +1 -1
  50. package/dist/esm/{components/BaseChart/BaseChart.styles.js → hooks/tooltip/styles.js} +2 -2
  51. package/dist/esm/hooks/tooltip/styles.js.map +1 -0
  52. package/dist/esm/hooks/tooltip/useTooltip.js +98 -0
  53. package/dist/esm/hooks/tooltip/useTooltip.js.map +1 -0
  54. package/dist/esm/hooks/useData.js +93 -0
  55. package/dist/esm/hooks/useData.js.map +1 -0
  56. package/dist/esm/hooks/useDataZoom.js +25 -0
  57. package/dist/esm/hooks/useDataZoom.js.map +1 -0
  58. package/dist/esm/hooks/useDataset.js +18 -0
  59. package/dist/esm/hooks/useDataset.js.map +1 -0
  60. package/dist/esm/hooks/useGrid.js +32 -0
  61. package/dist/esm/hooks/useGrid.js.map +1 -0
  62. package/dist/esm/hooks/useLegend.js +46 -0
  63. package/dist/esm/hooks/useLegend.js.map +1 -0
  64. package/dist/esm/hooks/useSeries.js +99 -0
  65. package/dist/esm/hooks/useSeries.js.map +1 -0
  66. package/dist/esm/hooks/useVizTheme.js.map +1 -1
  67. package/dist/esm/hooks/useXAxis.js +29 -0
  68. package/dist/esm/hooks/useXAxis.js.map +1 -0
  69. package/dist/esm/hooks/useYAxis.js +42 -0
  70. package/dist/esm/hooks/useYAxis.js.map +1 -0
  71. package/dist/esm/index.js +2 -0
  72. package/dist/esm/index.js.map +1 -1
  73. package/dist/esm/providers/Provider.js +8 -10
  74. package/dist/esm/providers/Provider.js.map +1 -1
  75. package/dist/esm/utils/getGroupKey.js +5 -0
  76. package/dist/esm/utils/getGroupKey.js.map +1 -0
  77. package/dist/esm/utils/getLegendIcon.js +7 -4
  78. package/dist/esm/utils/getLegendIcon.js.map +1 -1
  79. package/dist/esm/utils/getMeasure.js +14 -0
  80. package/dist/esm/utils/getMeasure.js.map +1 -0
  81. package/dist/esm/utils/registerTheme.js +85 -0
  82. package/dist/esm/utils/registerTheme.js.map +1 -0
  83. package/dist/types/index.d.ts +116 -79
  84. package/package.json +3 -3
  85. package/dist/cjs/components/BaseChart/BaseChart.styles.cjs.map +0 -1
  86. package/dist/cjs/utils/registerThemes.cjs +0 -106
  87. package/dist/cjs/utils/registerThemes.cjs.map +0 -1
  88. package/dist/esm/components/BaseChart/BaseChart.styles.js.map +0 -1
  89. package/dist/esm/utils/registerThemes.js +0 -87
  90. package/dist/esm/utils/registerThemes.js.map +0 -1
@@ -0,0 +1,91 @@
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 useGrid = require("../../hooks/useGrid.cjs");
8
+ const useData = require("../../hooks/useData.cjs");
9
+ const useDataset = require("../../hooks/useDataset.cjs");
10
+ const useSeries = require("../../hooks/useSeries.cjs");
11
+ const useLegend = require("../../hooks/useLegend.cjs");
12
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
13
+ const useTooltip = require("../../hooks/tooltip/useTooltip.cjs");
14
+ const BaseChart = require("../BaseChart/BaseChart.cjs");
15
+ function _interopNamespace(e) {
16
+ if (e && e.__esModule)
17
+ return e;
18
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
19
+ if (e) {
20
+ for (const k in e) {
21
+ if (k !== "default") {
22
+ const d = Object.getOwnPropertyDescriptor(e, k);
23
+ Object.defineProperty(n, k, d.get ? d : {
24
+ enumerable: true,
25
+ get: () => e[k]
26
+ });
27
+ }
28
+ }
29
+ }
30
+ n.default = e;
31
+ return Object.freeze(n);
32
+ }
33
+ const echarts__namespace = /* @__PURE__ */ _interopNamespace(echarts);
34
+ echarts__namespace.use([charts.PieChart, components.DatasetComponent, components.GridComponent, components.TooltipComponent, components.LegendComponent]);
35
+ const HvDonutChart = ({
36
+ data,
37
+ groupBy,
38
+ classes,
39
+ legend,
40
+ tooltip,
41
+ measure: measures,
42
+ sortBy,
43
+ grid,
44
+ type = "regular",
45
+ slicesNameFormatter
46
+ }) => {
47
+ const chartData = useData.useData({
48
+ data,
49
+ groupBy,
50
+ measures,
51
+ sortBy
52
+ });
53
+ const chartDataset = useDataset.useDataset(chartData);
54
+ const chartSeries = useSeries.useSeries({
55
+ type: "pie",
56
+ data: chartData,
57
+ groupBy,
58
+ measures,
59
+ radius: type === "thin" ? ["65%", "70%"] : ["55%", "70%"]
60
+ });
61
+ const chartLegend = useLegend.useLegend({
62
+ ...legend,
63
+ show: (legend == null ? void 0 : legend.show) ?? true,
64
+ icon: "square",
65
+ series: chartSeries.series,
66
+ formatter: slicesNameFormatter
67
+ });
68
+ const chartTooltip = useTooltip.useTooltip({
69
+ ...tooltip,
70
+ measures,
71
+ classes,
72
+ nameFormatter: slicesNameFormatter
73
+ });
74
+ const chartGrid = useGrid.useGrid({
75
+ ...grid
76
+ });
77
+ const options = react.useMemo(() => {
78
+ return {
79
+ ...chartSeries,
80
+ ...chartDataset,
81
+ ...chartLegend,
82
+ ...chartTooltip,
83
+ ...chartGrid
84
+ };
85
+ }, [chartSeries, chartDataset, chartLegend, chartTooltip, chartGrid]);
86
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseChart.HvBaseChart, {
87
+ options
88
+ });
89
+ };
90
+ exports.HvDonutChart = HvDonutChart;
91
+ //# sourceMappingURL=DonutChart.cjs.map
@@ -0,0 +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,19 +1,115 @@
1
1
  "use strict";
2
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 useDataZoom = require("../../hooks/useDataZoom.cjs");
8
+ const useXAxis = require("../../hooks/useXAxis.cjs");
9
+ const useYAxis = require("../../hooks/useYAxis.cjs");
10
+ const useGrid = require("../../hooks/useGrid.cjs");
11
+ const useData = require("../../hooks/useData.cjs");
12
+ const useDataset = require("../../hooks/useDataset.cjs");
13
+ const useSeries = require("../../hooks/useSeries.cjs");
14
+ const useLegend = require("../../hooks/useLegend.cjs");
3
15
  const jsxRuntime = require("@emotion/react/jsx-runtime");
16
+ const useTooltip = require("../../hooks/tooltip/useTooltip.cjs");
4
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.LineChart, components.DatasetComponent, components.GridComponent, components.TooltipComponent, components.LegendComponent, components.DataZoomSliderComponent, components.DataZoomInsideComponent]);
5
38
  const HvLineChart = ({
6
39
  area = false,
7
40
  emptyCellMode = "void",
8
41
  areaOpacity = 0.5,
9
- ...others
42
+ yAxis,
43
+ xAxis,
44
+ horizontalRangeSlider,
45
+ grid,
46
+ data,
47
+ groupBy,
48
+ splitBy,
49
+ sortBy,
50
+ measures,
51
+ stack,
52
+ seriesNameFormatter,
53
+ legend,
54
+ classes,
55
+ tooltip
10
56
  }) => {
11
- return /* @__PURE__ */ jsxRuntime.jsx(BaseChart.HvBaseChart, {
57
+ const chartData = useData.useData({
58
+ data,
59
+ groupBy,
60
+ measures,
61
+ splitBy,
62
+ sortBy
63
+ });
64
+ const chartDataset = useDataset.useDataset(chartData);
65
+ const chartYAxis = useYAxis.useYAxis({
66
+ yAxis
67
+ });
68
+ const chartXAxis = useXAxis.useXAxis({
69
+ xAxis,
70
+ scale: true
71
+ });
72
+ const chartSlider = useDataZoom.useDataZoom({
73
+ showHorizontal: horizontalRangeSlider == null ? void 0 : horizontalRangeSlider.show
74
+ });
75
+ const chartGrid = useGrid.useGrid({
76
+ ...grid
77
+ });
78
+ const chartSeries = useSeries.useSeries({
12
79
  type: "line",
80
+ data: chartData,
81
+ groupBy,
82
+ measures,
13
83
  area,
14
- emptyCellMode,
15
84
  areaOpacity,
16
- ...others
85
+ emptyCellMode,
86
+ stack,
87
+ nameFormatter: seriesNameFormatter
88
+ });
89
+ const chartLegend = useLegend.useLegend({
90
+ ...legend,
91
+ series: chartSeries.series
92
+ });
93
+ const chartTooltip = useTooltip.useTooltip({
94
+ ...tooltip,
95
+ trigger: "axis",
96
+ measures,
97
+ classes
98
+ });
99
+ const options = react.useMemo(() => {
100
+ return {
101
+ ...chartYAxis,
102
+ ...chartXAxis,
103
+ ...chartSlider,
104
+ ...chartGrid,
105
+ ...chartDataset,
106
+ ...chartSeries,
107
+ ...chartLegend,
108
+ ...chartTooltip
109
+ };
110
+ }, [chartXAxis, chartYAxis, chartSlider, chartGrid, chartDataset, chartSeries, chartLegend, chartTooltip]);
111
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseChart.HvBaseChart, {
112
+ options
17
113
  });
18
114
  };
19
115
  exports.HvLineChart = HvLineChart;
@@ -1 +1 @@
1
- {"version":3,"file":"LineChart.cjs","sources":["../../../../src/components/LineChart/LineChart.tsx"],"sourcesContent":["import {\n HvBaseChart,\n HvBaseChartClasses,\n HvBaseChartCommonProps,\n HvBaseChartLineProps,\n} from \"../BaseChart\";\n\nexport interface HvLineChartClasses extends HvBaseChartClasses {}\n\nexport interface HvLineChartProps\n extends HvBaseChartCommonProps,\n HvBaseChartLineProps {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvLineChartClasses;\n}\n\n/**\n * A line chart or line plot or line graph is a type of chart which displays information as a series of data points\n * connected by straight line segments. It is a basic type of chart common in many fields.\n */\nexport const HvLineChart = ({\n area = false,\n emptyCellMode = \"void\",\n areaOpacity = 0.5,\n ...others\n}: HvLineChartProps) => {\n return (\n <HvBaseChart\n type=\"line\"\n area={area}\n emptyCellMode={emptyCellMode}\n areaOpacity={areaOpacity}\n {...others}\n />\n );\n};\n"],"names":["HvLineChart","area","emptyCellMode","areaOpacity","others","HvBaseChart","type"],"mappings":";;;;AAoBO,MAAMA,cAAcA,CAAC;AAAA,EAC1BC,OAAO;AAAA,EACPC,gBAAgB;AAAA,EAChBC,cAAc;AAAA,EACd,GAAGC;AACa,MAAM;AACtB,wCACGC,UAAAA,aAAW;AAAA,IACVC,MAAK;AAAA,IACLL;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IAAyB,GACrBC;AAAAA,EAAAA,CACL;AAEL;;"}
1
+ {"version":3,"file":"LineChart.cjs","sources":["../../../../src/components/LineChart/LineChart.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport * as echarts from \"echarts/core\";\nimport { LineChart } from \"echarts/charts\";\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n} from \"echarts/components\";\n\nimport {\n useYAxis,\n useXAxis,\n useDataZoom,\n useGrid,\n useData,\n useDataset,\n useSeries,\n useLegend,\n useTooltip,\n HvChartTooltipClasses,\n} from \"@viz/hooks\";\n\nimport { HvChartEmptyCellMode, HvLineChartMeasures } from \"../../types\";\nimport { HvBaseChart } from \"../BaseChart\";\nimport { HvAxisChartCommonProps, HvChartCommonProps } from \"../../types/common\";\n\n// Register chart components\necharts.use([\n LineChart,\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n]);\n\nexport interface HvLineChartClasses extends HvChartTooltipClasses {}\n\nexport interface HvLineChartProps\n extends HvAxisChartCommonProps,\n HvChartCommonProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<HvLineChartMeasures>;\n /** Strategy to use when there are empty cells. Defaults to `void`. */\n emptyCellMode?: HvChartEmptyCellMode;\n /** Whether the area under the lines should be filled. Defaults to `false`. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. Defaults to `0.5`. */\n areaOpacity?: number;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvLineChartClasses;\n}\n\n/**\n * A line chart or line plot or line graph is a type of chart which displays information as a series of data points\n * connected by straight line segments. It is a basic type of chart common in many fields.\n */\nexport const HvLineChart = ({\n area = false,\n emptyCellMode = \"void\",\n areaOpacity = 0.5,\n yAxis,\n xAxis,\n horizontalRangeSlider,\n grid,\n data,\n groupBy,\n splitBy,\n sortBy,\n measures,\n stack,\n seriesNameFormatter,\n legend,\n classes,\n tooltip,\n}: HvLineChartProps) => {\n const chartData = useData({ data, groupBy, measures, splitBy, sortBy });\n\n const chartDataset = useDataset(chartData);\n\n const chartYAxis = useYAxis({ yAxis });\n\n const chartXAxis = useXAxis({ xAxis, scale: true });\n\n const chartSlider = useDataZoom({\n showHorizontal: horizontalRangeSlider?.show,\n });\n\n const chartGrid = useGrid({ ...grid });\n\n const chartSeries = useSeries({\n type: \"line\",\n data: chartData,\n groupBy,\n measures,\n area,\n areaOpacity,\n emptyCellMode,\n stack,\n nameFormatter: seriesNameFormatter,\n });\n\n const chartLegend = useLegend({\n ...legend,\n series: chartSeries.series,\n });\n\n const chartTooltip = useTooltip({\n ...tooltip,\n trigger: \"axis\",\n measures,\n classes,\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","LineChart","DatasetComponent","GridComponent","TooltipComponent","LegendComponent","DataZoomSliderComponent","DataZoomInsideComponent","HvLineChart","area","emptyCellMode","areaOpacity","yAxis","xAxis","horizontalRangeSlider","grid","data","groupBy","splitBy","sortBy","measures","stack","seriesNameFormatter","legend","classes","tooltip","chartData","useData","chartDataset","useDataset","chartYAxis","useYAxis","chartXAxis","useXAxis","scale","chartSlider","useDataZoom","showHorizontal","show","chartGrid","useGrid","chartSeries","useSeries","type","nameFormatter","chartLegend","useLegend","series","chartTooltip","useTooltip","trigger","options","useMemo","HvBaseChart"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCAA,mBAAQC,IAAI,CACVC,OACAC,WAAAA,6BACAC,WAAAA,eACAC,WACAC,kBAAAA,4BACAC,WAAAA,yBACAC,WAAuB,uBAAA,CACxB;AAuBM,MAAMC,cAAcA,CAAC;AAAA,EAC1BC,OAAO;AAAA,EACPC,gBAAgB;AAAA,EAChBC,cAAc;AAAA,EACdC;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;AACgB,MAAM;AACtB,QAAMC,YAAYC,QAAAA,QAAQ;AAAA,IAAEX;AAAAA,IAAMC;AAAAA,IAASG;AAAAA,IAAUF;AAAAA,IAASC;AAAAA,EAAAA,CAAQ;AAEhES,QAAAA,eAAeC,sBAAWH,SAAS;AAEzC,QAAMI,aAAaC,SAAAA,SAAS;AAAA,IAAEnB;AAAAA,EAAAA,CAAO;AAErC,QAAMoB,aAAaC,SAAAA,SAAS;AAAA,IAAEpB;AAAAA,IAAOqB,OAAO;AAAA,EAAA,CAAM;AAElD,QAAMC,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,IACAG;AAAAA,IACAX;AAAAA,IACAE;AAAAA,IACAD;AAAAA,IACAW;AAAAA,IACAuB,eAAetB;AAAAA,EAAAA,CAChB;AAED,QAAMuB,cAAcC,UAAAA,UAAU;AAAA,IAC5B,GAAGvB;AAAAA,IACHwB,QAAQN,YAAYM;AAAAA,EAAAA,CACrB;AAED,QAAMC,eAAeC,WAAAA,WAAW;AAAA,IAC9B,GAAGxB;AAAAA,IACHyB,SAAS;AAAA,IACT9B;AAAAA,IACAI;AAAAA,EAAAA,CACD;AAEK2B,QAAAA,UAAUC,MAAAA,QAAQ,MAAM;AACrB,WAAA;AAAA,MACL,GAAGtB;AAAAA,MACH,GAAGE;AAAAA,MACH,GAAGG;AAAAA,MACH,GAAGI;AAAAA,MACH,GAAGX;AAAAA,MACH,GAAGa;AAAAA,MACH,GAAGI;AAAAA,MACH,GAAGG;AAAAA,IAAAA;AAAAA,EACL,GACC,CACDhB,YACAF,YACAK,aACAI,WACAX,cACAa,aACAI,aACAG,YAAY,CACb;AAED,wCAAQK,UAAAA,aAAW;AAAA,IAACF;AAAAA,EAAAA,CAAmB;AACzC;;"}
@@ -4,7 +4,7 @@ const uikitReactCore = require("@hitachivantara/uikit-react-core");
4
4
  const {
5
5
  useClasses,
6
6
  staticClasses
7
- } = uikitReactCore.createClasses("HvBaseChart", {
7
+ } = uikitReactCore.createClasses("HvChartTooltip", {
8
8
  /** Single tooltip styles */
9
9
  singleTooltipRoot: {
10
10
  width: "fit-content",
@@ -82,4 +82,4 @@ const {
82
82
  });
83
83
  exports.staticClasses = staticClasses;
84
84
  exports.useClasses = useClasses;
85
- //# sourceMappingURL=BaseChart.styles.cjs.map
85
+ //# sourceMappingURL=styles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.cjs","sources":["../../../../src/hooks/tooltip/styles.tsx"],"sourcesContent":["import { theme, createClasses } from \"@hitachivantara/uikit-react-core\";\n\nexport const { useClasses, staticClasses } = createClasses(\"HvChartTooltip\", {\n /** Single tooltip styles */\n singleTooltipRoot: {\n width: \"fit-content\",\n boxShadow: theme.colors.shadow,\n backgroundColor: theme.colors.atmo1,\n padding: theme.space.sm,\n display: \"flex\",\n },\n singleTooltipTitle: {\n fontFamily: theme.fontFamily.body,\n fontWeight: theme.fontWeights.semibold,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.secondary,\n },\n singleTooltipValue: {\n fontFamily: theme.fontFamily.body,\n fontWeight: theme.fontWeights.normal,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.secondary,\n marginLeft: theme.space.xs,\n },\n /** Multiple tooltip styles */\n multipleTooltipRoot: {\n width: \"fit-content\",\n boxShadow: theme.colors.shadow,\n backgroundColor: theme.colors.atmo1,\n },\n multipleTooltipTitleContainer: {\n padding: `15px ${theme.space.sm}`,\n borderBottom: `3px solid ${theme.colors.atmo2}`,\n },\n multipleTooltipTitle: {\n fontFamily: theme.fontFamily.body,\n fontWeight: theme.fontWeights.semibold,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.secondary,\n },\n multipleTooltipValuesContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: theme.space.sm,\n\n \"& > *:not(:last-child)\": { paddingBottom: theme.space.sm },\n },\n multipleTooltipSeriesContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n multipleTooltipSeriesNameContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n marginRight: theme.space.sm,\n },\n multipleTooltipSeriesColor: {\n width: \"10px\",\n height: \"10px\",\n marginRight: \"5px\",\n },\n multipleTooltipSeriesName: {\n fontFamily: theme.fontFamily.body,\n fontWeight: theme.fontWeights.semibold,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.secondary,\n },\n multipleTooltipSeriesValue: {\n fontFamily: theme.fontFamily.body,\n fontWeight: theme.fontWeights.normal,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.secondary,\n },\n});\n"],"names":["useClasses","staticClasses","createClasses","singleTooltipRoot","width","boxShadow","theme","colors","shadow","backgroundColor","atmo1","padding","space","sm","display","singleTooltipTitle","fontFamily","body","fontWeight","fontWeights","semibold","fontSize","fontSizes","color","secondary","singleTooltipValue","normal","marginLeft","xs","multipleTooltipRoot","multipleTooltipTitleContainer","borderBottom","atmo2","multipleTooltipTitle","multipleTooltipValuesContainer","flexDirection","paddingBottom","multipleTooltipSeriesContainer","justifyContent","alignItems","multipleTooltipSeriesNameContainer","marginRight","multipleTooltipSeriesColor","height","multipleTooltipSeriesName","multipleTooltipSeriesValue"],"mappings":";;;AAEa,MAAA;AAAA,EAAEA;AAAAA,EAAYC;AAAc,IAAIC,eAAAA,cAAc,kBAAkB;AAAA;AAAA,EAE3EC,mBAAmB;AAAA,IACjBC,OAAO;AAAA,IACPC,WAAWC,eAAAA,MAAMC,OAAOC;AAAAA,IACxBC,iBAAiBH,eAAAA,MAAMC,OAAOG;AAAAA,IAC9BC,SAASL,eAAAA,MAAMM,MAAMC;AAAAA,IACrBC,SAAS;AAAA,EACX;AAAA,EACAC,oBAAoB;AAAA,IAClBC,YAAYV,eAAAA,MAAMU,WAAWC;AAAAA,IAC7BC,YAAYZ,eAAAA,MAAMa,YAAYC;AAAAA,IAC9BC,UAAUf,eAAAA,MAAMgB,UAAUT;AAAAA,IAC1BU,OAAOjB,eAAAA,MAAMC,OAAOiB;AAAAA,EACtB;AAAA,EACAC,oBAAoB;AAAA,IAClBT,YAAYV,eAAAA,MAAMU,WAAWC;AAAAA,IAC7BC,YAAYZ,eAAAA,MAAMa,YAAYO;AAAAA,IAC9BL,UAAUf,eAAAA,MAAMgB,UAAUT;AAAAA,IAC1BU,OAAOjB,eAAAA,MAAMC,OAAOiB;AAAAA,IACpBG,YAAYrB,eAAAA,MAAMM,MAAMgB;AAAAA,EAC1B;AAAA;AAAA,EAEAC,qBAAqB;AAAA,IACnBzB,OAAO;AAAA,IACPC,WAAWC,eAAAA,MAAMC,OAAOC;AAAAA,IACxBC,iBAAiBH,eAAAA,MAAMC,OAAOG;AAAAA,EAChC;AAAA,EACAoB,+BAA+B;AAAA,IAC7BnB,SAAU,QAAOL,eAAAA,MAAMM,MAAMC;AAAAA,IAC7BkB,cAAe,aAAYzB,eAAAA,MAAMC,OAAOyB;AAAAA,EAC1C;AAAA,EACAC,sBAAsB;AAAA,IACpBjB,YAAYV,eAAAA,MAAMU,WAAWC;AAAAA,IAC7BC,YAAYZ,eAAAA,MAAMa,YAAYC;AAAAA,IAC9BC,UAAUf,eAAAA,MAAMgB,UAAUT;AAAAA,IAC1BU,OAAOjB,eAAAA,MAAMC,OAAOiB;AAAAA,EACtB;AAAA,EACAU,gCAAgC;AAAA,IAC9BpB,SAAS;AAAA,IACTqB,eAAe;AAAA,IACfxB,SAASL,eAAAA,MAAMM,MAAMC;AAAAA,IAErB,0BAA0B;AAAA,MAAEuB,eAAe9B,eAAAA,MAAMM,MAAMC;AAAAA,IAAG;AAAA,EAC5D;AAAA,EACAwB,gCAAgC;AAAA,IAC9BvB,SAAS;AAAA,IACTqB,eAAe;AAAA,IACfG,gBAAgB;AAAA,IAChBC,YAAY;AAAA,EACd;AAAA,EACAC,oCAAoC;AAAA,IAClC1B,SAAS;AAAA,IACTqB,eAAe;AAAA,IACfI,YAAY;AAAA,IACZE,aAAanC,eAAAA,MAAMM,MAAMC;AAAAA,EAC3B;AAAA,EACA6B,4BAA4B;AAAA,IAC1BtC,OAAO;AAAA,IACPuC,QAAQ;AAAA,IACRF,aAAa;AAAA,EACf;AAAA,EACAG,2BAA2B;AAAA,IACzB5B,YAAYV,eAAAA,MAAMU,WAAWC;AAAAA,IAC7BC,YAAYZ,eAAAA,MAAMa,YAAYC;AAAAA,IAC9BC,UAAUf,eAAAA,MAAMgB,UAAUT;AAAAA,IAC1BU,OAAOjB,eAAAA,MAAMC,OAAOiB;AAAAA,EACtB;AAAA,EACAqB,4BAA4B;AAAA,IAC1B7B,YAAYV,eAAAA,MAAMU,WAAWC;AAAAA,IAC7BC,YAAYZ,eAAAA,MAAMa,YAAYO;AAAAA,IAC9BL,UAAUf,eAAAA,MAAMgB,UAAUT;AAAAA,IAC1BU,OAAOjB,eAAAA,MAAMC,OAAOiB;AAAAA,EACtB;AACF,CAAC;;;"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const getMeasure = require("../../utils/getMeasure.cjs");
5
+ const styles = require("./styles.cjs");
6
+ const useTooltip = ({
7
+ measures,
8
+ classes,
9
+ component,
10
+ show = true,
11
+ horizontal = false,
12
+ trigger = "item",
13
+ type = "multiple",
14
+ valueFormatter,
15
+ titleFormatter,
16
+ nameFormatter
17
+ }) => {
18
+ const {
19
+ classes: hvClasses
20
+ } = styles.useClasses(classes);
21
+ const renderTooltip = react.useCallback((params) => {
22
+ const title = params[0].seriesType === "pie" ? params[0].seriesName : horizontal ? params[0].value[params[0].encode.y[0]] : params[0].value[params[0].encode.x[0]];
23
+ const formattedTitle = titleFormatter ? titleFormatter(title) : title;
24
+ if (type === "single") {
25
+ const measure = getMeasure.getMeasure(params[0].seriesType === "pie" ? params[0].name : horizontal ? params[0].dimensionNames[params[0].encode.x[0]] : params[0].dimensionNames[params[0].encode.y[0]], measures);
26
+ const value = params[0].seriesType === "pie" ? params[0].value[params[0].encode.value[0]] : horizontal ? params[0].value[params[0].encode.x[0]] : params[0].value[params[0].encode.y[0]];
27
+ const formattedValue = typeof measure !== "string" && measure.valueFormatter ? measure.valueFormatter(value) : valueFormatter ? valueFormatter(value) : value;
28
+ return `
29
+ <div class="${hvClasses == null ? void 0 : hvClasses.singleTooltipRoot}">
30
+ <p class="${hvClasses == null ? void 0 : hvClasses.singleTooltipTitle}">${formattedTitle}</p>
31
+ <p class="${hvClasses == null ? void 0 : hvClasses.singleTooltipValue}">${formattedValue}</p>
32
+ </div>
33
+ `;
34
+ }
35
+ return `
36
+ <div class="${hvClasses == null ? void 0 : hvClasses.multipleTooltipRoot}">
37
+ <div class="${hvClasses == null ? void 0 : hvClasses.multipleTooltipTitleContainer}">
38
+ <div>
39
+ <p class="${hvClasses == null ? void 0 : hvClasses.multipleTooltipTitle}">${formattedTitle}</p>
40
+ </div>
41
+ </div>
42
+ <div class="${hvClasses == null ? void 0 : hvClasses.multipleTooltipValuesContainer}">
43
+ ${params.map((s) => {
44
+ const measure = getMeasure.getMeasure(s.seriesType === "pie" ? s.name : horizontal ? s.dimensionNames[s.encode.x[0]] : s.dimensionNames[s.encode.y[0]], measures);
45
+ const value = s.seriesType === "pie" ? s.value[s.encode.value[0]] : horizontal ? s.value[s.encode.x[0]] : s.value[s.encode.y[0]];
46
+ const formattedValue = typeof measure !== "string" && measure.valueFormatter ? measure.valueFormatter(value) : valueFormatter ? valueFormatter(value) : value;
47
+ const name = s.seriesType === "pie" ? s.name : s.seriesName;
48
+ const formattedName = nameFormatter ? nameFormatter(name) : name;
49
+ return `
50
+ <div key="${s.seriesName}" class="${hvClasses == null ? void 0 : hvClasses.multipleTooltipSeriesContainer}">
51
+ <div class="${hvClasses == null ? void 0 : hvClasses.multipleTooltipSeriesNameContainer}">
52
+ <p style="background-color: ${s.color};" class="${hvClasses == null ? void 0 : hvClasses.multipleTooltipSeriesColor}" />
53
+ <p class="${hvClasses == null ? void 0 : hvClasses.multipleTooltipSeriesName}">${formattedName}</p>
54
+ </div>
55
+ <p class="${hvClasses == null ? void 0 : hvClasses.multipleTooltipSeriesValue}">${formattedValue}</p>
56
+ </div>
57
+ `;
58
+ }).join(" ")}
59
+ </div>
60
+ </div>
61
+ `;
62
+ }, [hvClasses, horizontal, type, measures, nameFormatter, titleFormatter, valueFormatter]);
63
+ const renderCustomTooltip = react.useCallback((params) => {
64
+ if (typeof component === "function") {
65
+ const values = {
66
+ title: params[0].seriesType === "pie" ? params[0].seriesName : horizontal ? params[0].value[params[0].encode.y[0]] : params[0].value[params[0].encode.x[0]],
67
+ series: params.map((p) => {
68
+ return {
69
+ color: p.color,
70
+ name: p.seriesType === "pie" ? p.name : p.seriesName,
71
+ value: p.seriesType === "pie" ? p.value[p.encode.value[0]] : horizontal ? p.value[p.encode.x[0]] : p.value[p.encode.y[0]]
72
+ };
73
+ })
74
+ };
75
+ return component(values);
76
+ }
77
+ return component;
78
+ }, [component, horizontal]);
79
+ const option = react.useMemo(() => {
80
+ return {
81
+ tooltip: {
82
+ confine: false,
83
+ show,
84
+ trigger,
85
+ position: (point, params, dom, rect, size) => {
86
+ return [point[0], point[1] - size.contentSize[1]];
87
+ },
88
+ formatter: (params) => {
89
+ const tooltipParams = Array.isArray(params) ? params : [params];
90
+ return component ? renderCustomTooltip(tooltipParams) : renderTooltip(tooltipParams);
91
+ }
92
+ }
93
+ };
94
+ }, [trigger, component, show, renderTooltip, renderCustomTooltip]);
95
+ return option;
96
+ };
97
+ exports.useTooltip = useTooltip;
98
+ //# sourceMappingURL=useTooltip.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTooltip.cjs","sources":["../../../../src/hooks/tooltip/useTooltip.tsx"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\n\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\nimport { Arrayable, ExtractNames } from \"@hitachivantara/uikit-react-core\";\n\nimport {\n HvBarChartMeasures,\n HvChartTooltip,\n HvChartTooltipParams,\n HvDonutChartMeasure,\n HvLineChartMeasures,\n} from \"@viz/types\";\nimport { getMeasure } from \"@viz/utils\";\n\nimport { useClasses } from \"./styles\";\n\nexport type HvChartTooltipClasses = ExtractNames<typeof useClasses>;\n\n/** Echarts doesn't seem to have the type for the tooltip params */\ninterface EChartsTooltipParams {\n seriesName: string;\n value: (string | number)[];\n encode: { [key: string]: number[] };\n color: string;\n dimensionNames: string[];\n name: string;\n seriesType: string;\n}\n\ninterface HvTooltipHookProps {\n measures:\n | Arrayable<HvLineChartMeasures | HvBarChartMeasures>\n | HvDonutChartMeasure;\n trigger?: \"item\" | \"axis\";\n classes?: HvChartTooltipClasses;\n horizontal?: boolean;\n show?: HvChartTooltip[\"show\"];\n type?: HvChartTooltip[\"type\"];\n component?: HvChartTooltip[\"component\"];\n valueFormatter?: HvChartTooltip[\"valueFormatter\"];\n titleFormatter?: HvChartTooltip[\"titleFormatter\"];\n nameFormatter?: (value?: string) => string;\n}\n\nexport const useTooltip = ({\n measures,\n classes,\n component,\n show = true,\n horizontal = false,\n trigger = \"item\",\n type = \"multiple\",\n valueFormatter,\n titleFormatter,\n nameFormatter,\n}: HvTooltipHookProps) => {\n const { classes: hvClasses } = useClasses(classes);\n\n const renderTooltip = useCallback(\n (params: EChartsTooltipParams[]) => {\n const title =\n params[0].seriesType === \"pie\"\n ? params[0].seriesName\n : horizontal\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]];\n\n const formattedTitle = titleFormatter ? titleFormatter(title) : title;\n\n if (type === \"single\") {\n const measure = getMeasure(\n params[0].seriesType === \"pie\"\n ? params[0].name\n : horizontal\n ? params[0].dimensionNames[params[0].encode.x[0]]\n : params[0].dimensionNames[params[0].encode.y[0]],\n\n measures\n );\n\n const value =\n params[0].seriesType === \"pie\"\n ? params[0].value[params[0].encode.value[0]]\n : horizontal\n ? params[0].value[params[0].encode.x[0]]\n : params[0].value[params[0].encode.y[0]];\n\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n return `\n <div class=\"${hvClasses?.singleTooltipRoot}\">\n <p class=\"${hvClasses?.singleTooltipTitle}\">${formattedTitle}</p>\n <p class=\"${hvClasses?.singleTooltipValue}\">${formattedValue}</p>\n </div>\n `;\n }\n\n return `\n <div class=\"${hvClasses?.multipleTooltipRoot}\">\n <div class=\"${hvClasses?.multipleTooltipTitleContainer}\">\n <div>\n <p class=\"${\n hvClasses?.multipleTooltipTitle\n }\">${formattedTitle}</p>\n </div>\n </div>\n <div class=\"${hvClasses?.multipleTooltipValuesContainer}\">\n ${params\n .map((s) => {\n const measure = getMeasure(\n s.seriesType === \"pie\"\n ? s.name\n : horizontal\n ? s.dimensionNames[s.encode.x[0]]\n : s.dimensionNames[s.encode.y[0]],\n measures\n );\n\n const value =\n s.seriesType === \"pie\"\n ? s.value[s.encode.value[0]]\n : horizontal\n ? s.value[s.encode.x[0]]\n : s.value[s.encode.y[0]];\n\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n const name = s.seriesType === \"pie\" ? s.name : s.seriesName;\n\n const formattedName = nameFormatter\n ? nameFormatter(name)\n : name;\n\n return `\n <div key=\"${s.seriesName}\" class=\"${hvClasses?.multipleTooltipSeriesContainer}\">\n <div class=\"${hvClasses?.multipleTooltipSeriesNameContainer}\">\n <p style=\"background-color: ${s.color};\" class=\"${hvClasses?.multipleTooltipSeriesColor}\" />\n <p class=\"${hvClasses?.multipleTooltipSeriesName}\">${formattedName}</p>\n </div>\n <p class=\"${hvClasses?.multipleTooltipSeriesValue}\">${formattedValue}</p>\n </div>\n `;\n })\n .join(\" \")}\n </div>\n </div>\n `;\n },\n [\n hvClasses,\n horizontal,\n type,\n measures,\n nameFormatter,\n titleFormatter,\n valueFormatter,\n ]\n );\n\n const renderCustomTooltip = useCallback(\n (params: EChartsTooltipParams[]) => {\n if (typeof component === \"function\") {\n const values: HvChartTooltipParams = {\n title:\n params[0].seriesType === \"pie\"\n ? params[0].seriesName\n : horizontal\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]],\n series: params.map((p) => {\n return {\n color: p.color,\n name: p.seriesType === \"pie\" ? p.name : p.seriesName,\n value:\n p.seriesType === \"pie\"\n ? p.value[p.encode.value[0]]\n : horizontal\n ? p.value[p.encode.x[0]]\n : p.value[p.encode.y[0]],\n };\n }),\n };\n\n return component(values);\n }\n\n return component;\n },\n [component, horizontal]\n );\n\n const option = useMemo<Pick<EChartsOption, \"tooltip\">>(() => {\n return {\n tooltip: {\n confine: false,\n show,\n trigger,\n position: (point, params, dom, rect, size) => {\n return [point[0], point[1] - size.contentSize[1]];\n },\n formatter: (params) => {\n const tooltipParams = Array.isArray(params) ? params : [params];\n\n return component\n ? renderCustomTooltip(tooltipParams)\n : renderTooltip(tooltipParams);\n },\n },\n };\n }, [trigger, component, show, renderTooltip, renderCustomTooltip]);\n\n return option;\n};\n"],"names":["useTooltip","measures","classes","component","show","horizontal","trigger","type","valueFormatter","titleFormatter","nameFormatter","hvClasses","useClasses","renderTooltip","useCallback","params","title","seriesType","seriesName","value","encode","y","x","formattedTitle","measure","getMeasure","name","dimensionNames","formattedValue","singleTooltipRoot","singleTooltipTitle","singleTooltipValue","multipleTooltipRoot","multipleTooltipTitleContainer","multipleTooltipTitle","multipleTooltipValuesContainer","map","s","formattedName","multipleTooltipSeriesContainer","multipleTooltipSeriesNameContainer","color","multipleTooltipSeriesColor","multipleTooltipSeriesName","multipleTooltipSeriesValue","join","renderCustomTooltip","values","series","p","option","useMemo","tooltip","confine","position","point","dom","rect","size","contentSize","formatter","tooltipParams","Array","isArray"],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const arquero = require("arquero");
5
+ const getAgFunc = require("../utils/getAgFunc.cjs");
6
+ const getGroupKey = require("../utils/getGroupKey.cjs");
7
+ const useData = ({
8
+ data,
9
+ groupBy,
10
+ measures,
11
+ sortBy,
12
+ splitBy
13
+ }) => {
14
+ const groupByKey = getGroupKey.getGroupKey(groupBy);
15
+ const chartData = react.useMemo(() => {
16
+ let tableData;
17
+ if (data instanceof arquero.internal.ColumnTable) {
18
+ tableData = data;
19
+ } else if (Array.isArray(data)) {
20
+ tableData = arquero.from(data);
21
+ } else {
22
+ tableData = arquero.table(data);
23
+ }
24
+ const groupByFields = groupBy ? Array.isArray(groupBy) ? groupBy : [groupBy] : [];
25
+ const splitByFields = Array.isArray(splitBy) ? splitBy : splitBy != null ? [splitBy] : [];
26
+ const measuresFields = measures == null ? {} : typeof measures === "string" ? {
27
+ [measures]: getAgFunc.getAgFunc("sum", measures)
28
+ } : Array.isArray(measures) ? measures.reduce((acc, value) => {
29
+ let field;
30
+ let agFunction;
31
+ if (typeof value === "string") {
32
+ field = value;
33
+ agFunction = "sum";
34
+ } else {
35
+ field = value.field;
36
+ agFunction = value.agg ?? "sum";
37
+ }
38
+ return {
39
+ ...acc,
40
+ [field]: getAgFunc.getAgFunc(agFunction, field)
41
+ };
42
+ }, {}) : {
43
+ [measures.field]: getAgFunc.getAgFunc(measures.agg ?? "sum", measures.field)
44
+ };
45
+ const sortByFields = sortBy == null ? {} : typeof sortBy === "string" ? {
46
+ [sortBy]: "asc"
47
+ } : Array.isArray(sortBy) ? sortBy.reduce((acc, value) => {
48
+ let field;
49
+ let orderFunction;
50
+ if (typeof value === "string") {
51
+ field = value;
52
+ orderFunction = "asc";
53
+ } else {
54
+ field = value.field;
55
+ orderFunction = value.order ?? "asc";
56
+ }
57
+ return {
58
+ ...acc,
59
+ [field]: orderFunction
60
+ };
61
+ }, {}) : {
62
+ [sortBy.field]: sortBy.order ?? "asc"
63
+ };
64
+ const allFields = [...groupByFields, ...splitByFields, ...Object.keys(measuresFields)];
65
+ tableData = tableData.select(...allFields);
66
+ if (groupByFields.length > 0) {
67
+ tableData = tableData.groupby(groupByFields);
68
+ }
69
+ if (splitByFields.length > 0) {
70
+ tableData = tableData.pivot(splitByFields, measuresFields);
71
+ } else {
72
+ tableData = tableData.rollup(measuresFields);
73
+ }
74
+ if (groupByFields.length > 1) {
75
+ const expression = `d => ${groupByFields.map((field) => `d.${field}`).join(" + '_' + ")}`;
76
+ tableData = tableData.derive({
77
+ [groupByKey]: expression
78
+ }, {
79
+ after: groupByFields[groupByFields.length - 1]
80
+ });
81
+ }
82
+ if (Object.keys(sortByFields).length > 0) {
83
+ tableData = tableData.orderby(...Object.keys(sortByFields).filter((key) => allFields.includes(key)).map((key) => sortByFields[key] === "desc" ? arquero.desc(key) : key));
84
+ }
85
+ if (groupByFields.length > 1) {
86
+ tableData = tableData.select(arquero.not(...groupByFields));
87
+ }
88
+ return tableData;
89
+ }, [data, groupBy, groupByKey, splitBy, measures, sortBy]);
90
+ return chartData;
91
+ };
92
+ exports.useData = useData;
93
+ //# sourceMappingURL=useData.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useData.cjs","sources":["../../../src/hooks/useData.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { from, internal, not, table, desc } from \"arquero\";\nimport type ColumnTable from \"arquero/dist/types/table/column-table\";\n\nimport { Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport {\n HvBarChartMeasures,\n HvChartAggregation,\n HvChartOrder,\n HvLineChartMeasures,\n HvChartData,\n HvDonutChartMeasure,\n} from \"@viz/types\";\nimport { getAgFunc, getGroupKey } from \"@viz/utils\";\nimport { HvAxisChartCommonProps, HvChartCommonProps } from \"@viz/types/common\";\n\ninterface HvDataHookProps {\n data: HvChartData;\n groupBy: HvChartCommonProps[\"groupBy\"];\n measures:\n | Arrayable<HvLineChartMeasures | HvBarChartMeasures>\n | HvDonutChartMeasure;\n splitBy?: HvAxisChartCommonProps[\"splitBy\"];\n sortBy?: HvChartCommonProps[\"sortBy\"];\n}\n\nexport const useData = ({\n data,\n groupBy,\n measures,\n sortBy,\n splitBy,\n}: HvDataHookProps): internal.ColumnTable => {\n const groupByKey = getGroupKey(groupBy);\n\n const chartData = useMemo<ColumnTable>(() => {\n let tableData: ColumnTable;\n if (data instanceof internal.ColumnTable) {\n tableData = data;\n } else if (Array.isArray(data)) {\n tableData = from(data);\n } else {\n tableData = table(data);\n }\n\n const groupByFields = groupBy\n ? Array.isArray(groupBy)\n ? groupBy\n : [groupBy]\n : [];\n\n const splitByFields = Array.isArray(splitBy)\n ? splitBy\n : splitBy != null\n ? [splitBy]\n : [];\n\n const measuresFields: { [key: string]: string } =\n measures == null\n ? {}\n : typeof measures === \"string\"\n ? { [measures]: getAgFunc(\"sum\", measures) }\n : Array.isArray(measures)\n ? measures.reduce<{ [key: string]: string }>((acc, value) => {\n let field: string;\n let agFunction: HvChartAggregation;\n if (typeof value === \"string\") {\n field = value;\n agFunction = \"sum\";\n } else {\n field = value.field;\n agFunction = value.agg ?? \"sum\";\n }\n\n return {\n ...acc,\n [field]: getAgFunc(agFunction, field),\n };\n }, {})\n : {\n [measures.field]: getAgFunc(measures.agg ?? \"sum\", measures.field),\n };\n\n const sortByFields: { [key: string]: HvChartOrder } =\n sortBy == null\n ? {}\n : typeof sortBy === \"string\"\n ? { [sortBy]: \"asc\" }\n : Array.isArray(sortBy)\n ? sortBy.reduce<{ [key: string]: HvChartOrder }>((acc, value) => {\n let field: string;\n let orderFunction: HvChartOrder;\n if (typeof value === \"string\") {\n field = value;\n orderFunction = \"asc\";\n } else {\n field = value.field;\n orderFunction = value.order ?? \"asc\";\n }\n\n return {\n ...acc,\n [field]: orderFunction,\n };\n }, {})\n : { [sortBy.field]: sortBy.order ?? \"asc\" };\n\n const allFields = [\n ...groupByFields,\n ...splitByFields,\n ...Object.keys(measuresFields),\n ];\n\n // remove unneeded fields\n tableData = tableData.select(...allFields);\n\n // group by groupBy fields\n if (groupByFields.length > 0) {\n tableData = tableData.groupby(groupByFields);\n }\n\n if (splitByFields.length > 0) {\n // pivot by splitBy fields\n tableData = tableData.pivot(splitByFields, measuresFields);\n } else {\n // if there is no splitBy fields, just aggregate measures fields\n tableData = tableData.rollup(measuresFields);\n }\n\n // if grouped by multiple fields, create a new joint field\n // as the line chart doesn't implement hierarchical axis label grouping\n if (groupByFields.length > 1) {\n const expression = `d => ${groupByFields\n .map((field) => `d.${field}`)\n .join(\" + '_' + \")}`;\n\n tableData = tableData.derive(\n { [groupByKey]: expression },\n { after: groupByFields[groupByFields.length - 1] }\n );\n }\n\n // sort by sortBy fields\n if (Object.keys(sortByFields).length > 0) {\n tableData = tableData.orderby(\n ...Object.keys(sortByFields)\n // only sort by fields that are in the table, ignore the rest\n .filter((key) => allFields.includes(key))\n .map((key) => (sortByFields[key] === \"desc\" ? desc(key) : key))\n );\n }\n\n // if a derived field was created, remove the original fields\n if (groupByFields.length > 1) {\n tableData = tableData.select(not(...groupByFields));\n }\n\n return tableData;\n }, [data, groupBy, groupByKey, splitBy, measures, sortBy]);\n\n return chartData;\n};\n"],"names":["useData","data","groupBy","measures","sortBy","splitBy","groupByKey","getGroupKey","chartData","useMemo","tableData","internal","ColumnTable","Array","isArray","from","table","groupByFields","splitByFields","measuresFields","getAgFunc","reduce","acc","value","field","agFunction","agg","sortByFields","orderFunction","order","allFields","Object","keys","select","length","groupby","pivot","rollup","expression","map","join","derive","after","orderby","filter","key","includes","desc","not"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const useDataZoom = ({
5
+ showHorizontal
6
+ }) => {
7
+ const option = react.useMemo(() => {
8
+ return {
9
+ dataZoom: [{
10
+ show: showHorizontal ?? false,
11
+ type: "slider",
12
+ orient: "horizontal"
13
+ }, {
14
+ show: showHorizontal ?? false,
15
+ type: "inside",
16
+ orient: "horizontal",
17
+ zoomOnMouseWheel: "shift",
18
+ moveOnMouseWheel: true
19
+ }]
20
+ };
21
+ }, [showHorizontal]);
22
+ return option;
23
+ };
24
+ exports.useDataZoom = useDataZoom;
25
+ //# sourceMappingURL=useDataZoom.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataZoom.cjs","sources":["../../../src/hooks/useDataZoom.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\ninterface HvDataZoomHookProps {\n showHorizontal?: boolean;\n}\n\nexport const useDataZoom = ({ showHorizontal }: HvDataZoomHookProps) => {\n const option = useMemo<Pick<EChartsOption, \"dataZoom\">>(() => {\n return {\n dataZoom: [\n {\n show: showHorizontal ?? false,\n type: \"slider\",\n orient: \"horizontal\",\n },\n {\n show: showHorizontal ?? false,\n type: \"inside\",\n orient: \"horizontal\",\n zoomOnMouseWheel: \"shift\",\n moveOnMouseWheel: true,\n },\n ],\n };\n }, [showHorizontal]);\n\n return option;\n};\n"],"names":["useDataZoom","showHorizontal","option","useMemo","dataZoom","show","type","orient","zoomOnMouseWheel","moveOnMouseWheel"],"mappings":";;;AAQO,MAAMA,cAAcA,CAAC;AAAA,EAAEC;AAAoC,MAAM;AAChEC,QAAAA,SAASC,MAAAA,QAAyC,MAAM;AACrD,WAAA;AAAA,MACLC,UAAU,CACR;AAAA,QACEC,MAAMJ,kBAAkB;AAAA,QACxBK,MAAM;AAAA,QACNC,QAAQ;AAAA,MAAA,GAEV;AAAA,QACEF,MAAMJ,kBAAkB;AAAA,QACxBK,MAAM;AAAA,QACNC,QAAQ;AAAA,QACRC,kBAAkB;AAAA,QAClBC,kBAAkB;AAAA,MAAA,CACnB;AAAA,IAAA;AAAA,EAEL,GACC,CAACR,cAAc,CAAC;AAEZC,SAAAA;AACT;;"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const useDataset = (data) => {
5
+ const option = react.useMemo(() => {
6
+ return {
7
+ dataset: {
8
+ source: data.columnNames().reduce((acc, c) => ({
9
+ ...acc,
10
+ [c]: data.array(c)
11
+ }), {})
12
+ }
13
+ };
14
+ }, [data]);
15
+ return option;
16
+ };
17
+ exports.useDataset = useDataset;
18
+ //# sourceMappingURL=useDataset.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataset.cjs","sources":["../../../src/hooks/useDataset.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { internal } from \"arquero\";\n\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\nexport const useDataset = (data: internal.ColumnTable) => {\n const option = useMemo<Pick<EChartsOption, \"dataset\">>(() => {\n return {\n dataset: {\n source: data.columnNames().reduce(\n (acc, c) => ({\n ...acc,\n [c]: data.array(c),\n }),\n {}\n ),\n },\n };\n }, [data]);\n\n return option;\n};\n"],"names":["useDataset","data","option","useMemo","dataset","source","columnNames","reduce","acc","c","array"],"mappings":";;;AAMaA,MAAAA,aAAaA,CAACC,SAA+B;AAClDC,QAAAA,SAASC,MAAAA,QAAwC,MAAM;AACpD,WAAA;AAAA,MACLC,SAAS;AAAA,QACPC,QAAQJ,KAAKK,YAAAA,EAAcC,OACzB,CAACC,KAAKC,OAAO;AAAA,UACX,GAAGD;AAAAA,UACH,CAACC,CAAC,GAAGR,KAAKS,MAAMD,CAAC;AAAA,QACnB,IACA,CAAA,CACF;AAAA,MACF;AAAA,IAAA;AAAA,EACF,GACC,CAACR,IAAI,CAAC;AAEFC,SAAAA;AACT;;"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const useGrid = ({
5
+ top,
6
+ left,
7
+ right,
8
+ bottom
9
+ }) => {
10
+ const option = react.useMemo(() => {
11
+ return {
12
+ // if no value is defined we shouldn't pass anything because echarts doesn't behave well otherwise
13
+ grid: {
14
+ ...top != null && {
15
+ top
16
+ },
17
+ ...bottom != null && {
18
+ bottom
19
+ },
20
+ ...left != null && {
21
+ left
22
+ },
23
+ ...right != null && {
24
+ right
25
+ }
26
+ }
27
+ };
28
+ }, [top, left, right, bottom]);
29
+ return option;
30
+ };
31
+ exports.useGrid = useGrid;
32
+ //# sourceMappingURL=useGrid.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGrid.cjs","sources":["../../../src/hooks/useGrid.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\nimport { HvChartGrid } from \"@viz/types\";\n\ninterface HvGridHookProps {\n top?: HvChartGrid[\"top\"];\n bottom?: HvChartGrid[\"bottom\"];\n left?: HvChartGrid[\"left\"];\n right?: HvChartGrid[\"right\"];\n}\n\nexport const useGrid = ({ top, left, right, bottom }: HvGridHookProps) => {\n const option = useMemo<Pick<EChartsOption, \"grid\">>(() => {\n return {\n // if no value is defined we shouldn't pass anything because echarts doesn't behave well otherwise\n grid: {\n ...(top != null && {\n top,\n }),\n ...(bottom != null && {\n bottom,\n }),\n ...(left != null && {\n left,\n }),\n ...(right != null && {\n right,\n }),\n },\n };\n }, [top, left, right, bottom]);\n\n return option;\n};\n"],"names":["useGrid","top","left","right","bottom","option","useMemo","grid"],"mappings":";;;AAaO,MAAMA,UAAUA,CAAC;AAAA,EAAEC;AAAAA,EAAKC;AAAAA,EAAMC;AAAAA,EAAOC;AAAwB,MAAM;AAClEC,QAAAA,SAASC,MAAAA,QAAqC,MAAM;AACjD,WAAA;AAAA;AAAA,MAELC,MAAM;AAAA,QACJ,GAAIN,OAAO,QAAQ;AAAA,UACjBA;AAAAA,QACF;AAAA,QACA,GAAIG,UAAU,QAAQ;AAAA,UACpBA;AAAAA,QACF;AAAA,QACA,GAAIF,QAAQ,QAAQ;AAAA,UAClBA;AAAAA,QACF;AAAA,QACA,GAAIC,SAAS,QAAQ;AAAA,UACnBA;AAAAA,QACF;AAAA,MACF;AAAA,IAAA;AAAA,KAED,CAACF,KAAKC,MAAMC,OAAOC,MAAM,CAAC;AAEtBC,SAAAA;AACT;;"}