@hitachivantara/uikit-react-viz 5.2.7 → 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.
- package/dist/cjs/components/BarChart/BarChart.cjs +103 -4
- package/dist/cjs/components/BarChart/BarChart.cjs.map +1 -1
- package/dist/cjs/components/BaseChart/BaseChart.cjs +6 -349
- package/dist/cjs/components/BaseChart/BaseChart.cjs.map +1 -1
- package/dist/cjs/components/DonutChart/DonutChart.cjs +91 -0
- package/dist/cjs/components/DonutChart/DonutChart.cjs.map +1 -0
- package/dist/cjs/components/LineChart/LineChart.cjs +100 -4
- package/dist/cjs/components/LineChart/LineChart.cjs.map +1 -1
- package/dist/cjs/{components/BaseChart/BaseChart.styles.cjs → hooks/tooltip/styles.cjs} +2 -2
- package/dist/cjs/hooks/tooltip/styles.cjs.map +1 -0
- package/dist/cjs/hooks/tooltip/useTooltip.cjs +98 -0
- package/dist/cjs/hooks/tooltip/useTooltip.cjs.map +1 -0
- package/dist/cjs/hooks/useData.cjs +93 -0
- package/dist/cjs/hooks/useData.cjs.map +1 -0
- package/dist/cjs/hooks/useDataZoom.cjs +25 -0
- package/dist/cjs/hooks/useDataZoom.cjs.map +1 -0
- package/dist/cjs/hooks/useDataset.cjs +18 -0
- package/dist/cjs/hooks/useDataset.cjs.map +1 -0
- package/dist/cjs/hooks/useGrid.cjs +32 -0
- package/dist/cjs/hooks/useGrid.cjs.map +1 -0
- package/dist/cjs/hooks/useLegend.cjs +46 -0
- package/dist/cjs/hooks/useLegend.cjs.map +1 -0
- package/dist/cjs/hooks/useSeries.cjs +99 -0
- package/dist/cjs/hooks/useSeries.cjs.map +1 -0
- package/dist/cjs/hooks/useVizTheme.cjs.map +1 -1
- package/dist/cjs/hooks/useXAxis.cjs +29 -0
- package/dist/cjs/hooks/useXAxis.cjs.map +1 -0
- package/dist/cjs/hooks/useYAxis.cjs +42 -0
- package/dist/cjs/hooks/useYAxis.cjs.map +1 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/providers/Provider.cjs +8 -10
- package/dist/cjs/providers/Provider.cjs.map +1 -1
- package/dist/cjs/utils/getGroupKey.cjs +5 -0
- package/dist/cjs/utils/getGroupKey.cjs.map +1 -0
- package/dist/cjs/utils/getLegendIcon.cjs +7 -4
- package/dist/cjs/utils/getLegendIcon.cjs.map +1 -1
- package/dist/cjs/utils/getMeasure.cjs +14 -0
- package/dist/cjs/utils/getMeasure.cjs.map +1 -0
- package/dist/cjs/utils/registerTheme.cjs +104 -0
- package/dist/cjs/utils/registerTheme.cjs.map +1 -0
- package/dist/esm/components/BarChart/BarChart.js +84 -4
- package/dist/esm/components/BarChart/BarChart.js.map +1 -1
- package/dist/esm/components/BaseChart/BaseChart.js +8 -351
- package/dist/esm/components/BaseChart/BaseChart.js.map +1 -1
- package/dist/esm/components/DonutChart/DonutChart.js +72 -0
- package/dist/esm/components/DonutChart/DonutChart.js.map +1 -0
- package/dist/esm/components/LineChart/LineChart.js +81 -4
- package/dist/esm/components/LineChart/LineChart.js.map +1 -1
- package/dist/esm/{components/BaseChart/BaseChart.styles.js → hooks/tooltip/styles.js} +2 -2
- package/dist/esm/hooks/tooltip/styles.js.map +1 -0
- package/dist/esm/hooks/tooltip/useTooltip.js +98 -0
- package/dist/esm/hooks/tooltip/useTooltip.js.map +1 -0
- package/dist/esm/hooks/useData.js +93 -0
- package/dist/esm/hooks/useData.js.map +1 -0
- package/dist/esm/hooks/useDataZoom.js +25 -0
- package/dist/esm/hooks/useDataZoom.js.map +1 -0
- package/dist/esm/hooks/useDataset.js +18 -0
- package/dist/esm/hooks/useDataset.js.map +1 -0
- package/dist/esm/hooks/useGrid.js +32 -0
- package/dist/esm/hooks/useGrid.js.map +1 -0
- package/dist/esm/hooks/useLegend.js +46 -0
- package/dist/esm/hooks/useLegend.js.map +1 -0
- package/dist/esm/hooks/useSeries.js +99 -0
- package/dist/esm/hooks/useSeries.js.map +1 -0
- package/dist/esm/hooks/useVizTheme.js.map +1 -1
- package/dist/esm/hooks/useXAxis.js +29 -0
- package/dist/esm/hooks/useXAxis.js.map +1 -0
- package/dist/esm/hooks/useYAxis.js +42 -0
- package/dist/esm/hooks/useYAxis.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/providers/Provider.js +8 -10
- package/dist/esm/providers/Provider.js.map +1 -1
- package/dist/esm/utils/getGroupKey.js +5 -0
- package/dist/esm/utils/getGroupKey.js.map +1 -0
- package/dist/esm/utils/getLegendIcon.js +7 -4
- package/dist/esm/utils/getLegendIcon.js.map +1 -1
- package/dist/esm/utils/getMeasure.js +14 -0
- package/dist/esm/utils/getMeasure.js.map +1 -0
- package/dist/esm/utils/registerTheme.js +85 -0
- package/dist/esm/utils/registerTheme.js.map +1 -0
- package/dist/types/index.d.ts +116 -79
- package/package.json +3 -3
- package/dist/cjs/components/BaseChart/BaseChart.styles.cjs.map +0 -1
- package/dist/cjs/utils/registerThemes.cjs +0 -106
- package/dist/cjs/utils/registerThemes.cjs.map +0 -1
- package/dist/esm/components/BaseChart/BaseChart.styles.js.map +0 -1
- package/dist/esm/utils/registerThemes.js +0 -87
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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("
|
|
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=
|
|
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;;"}
|