@hitachivantara/uikit-react-viz 4.1.10 → 5.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/LineChart/LineChart.cjs +398 -0
  3. package/dist/cjs/components/LineChart/LineChart.cjs.map +1 -0
  4. package/dist/cjs/components/LineChart/LineChart.styles.cjs +85 -0
  5. package/dist/cjs/components/LineChart/LineChart.styles.cjs.map +1 -0
  6. package/dist/cjs/hooks/useVizTheme.cjs +9 -0
  7. package/dist/cjs/hooks/useVizTheme.cjs.map +1 -0
  8. package/dist/cjs/index.cjs +8 -0
  9. package/dist/cjs/index.cjs.map +1 -0
  10. package/dist/cjs/providers/Provider.cjs +137 -0
  11. package/dist/cjs/providers/Provider.cjs.map +1 -0
  12. package/dist/cjs/utils/getAgFunc.cjs +5 -0
  13. package/dist/cjs/utils/getAgFunc.cjs.map +1 -0
  14. package/dist/cjs/utils/getAxisType.cjs +16 -0
  15. package/dist/cjs/utils/getAxisType.cjs.map +1 -0
  16. package/dist/cjs/utils/getLegendIcon.cjs +10 -0
  17. package/dist/cjs/utils/getLegendIcon.cjs.map +1 -0
  18. package/dist/esm/components/LineChart/LineChart.js +377 -0
  19. package/dist/esm/components/LineChart/LineChart.js.map +1 -0
  20. package/dist/esm/components/LineChart/LineChart.styles.js +85 -0
  21. package/dist/esm/components/LineChart/LineChart.styles.js.map +1 -0
  22. package/dist/esm/hooks/useVizTheme.js +9 -0
  23. package/dist/esm/hooks/useVizTheme.js.map +1 -0
  24. package/dist/esm/index.js +8 -0
  25. package/dist/esm/index.js.map +1 -0
  26. package/dist/esm/providers/Provider.js +118 -0
  27. package/dist/esm/providers/Provider.js.map +1 -0
  28. package/dist/esm/utils/getAgFunc.js +5 -0
  29. package/dist/esm/utils/getAgFunc.js.map +1 -0
  30. package/dist/esm/utils/getAxisType.js +16 -0
  31. package/dist/esm/utils/getAxisType.js.map +1 -0
  32. package/dist/esm/utils/getLegendIcon.js +10 -0
  33. package/dist/esm/utils/getLegendIcon.js.map +1 -0
  34. package/dist/types/index.d.ts +234 -0
  35. package/package.json +36 -48
  36. package/LICENSE.txt +0 -201
  37. package/dist/Barchart/Barchart.d.ts +0 -14
  38. package/dist/Barchart/Barchart.js +0 -214
  39. package/dist/Barchart/Barchart.js.map +0 -1
  40. package/dist/Barchart/barchartPlotlyOverrides.js +0 -47
  41. package/dist/Barchart/barchartPlotlyOverrides.js.map +0 -1
  42. package/dist/Barchart/index.d.ts +0 -2
  43. package/dist/Barchart/index.js +0 -14
  44. package/dist/Barchart/index.js.map +0 -1
  45. package/dist/Barchart/styles.js +0 -10
  46. package/dist/Barchart/styles.js.map +0 -1
  47. package/dist/Chart/Chart.d.ts +0 -44
  48. package/dist/Chart/Chart.js +0 -194
  49. package/dist/Chart/Chart.js.map +0 -1
  50. package/dist/Chart/Plot/Plot.d.ts +0 -43
  51. package/dist/Chart/Plot/Plot.js +0 -110
  52. package/dist/Chart/Plot/Plot.js.map +0 -1
  53. package/dist/Chart/Plot/index.d.ts +0 -2
  54. package/dist/Chart/Plot/index.js +0 -14
  55. package/dist/Chart/Plot/index.js.map +0 -1
  56. package/dist/Chart/Plot/styles.js +0 -10
  57. package/dist/Chart/Plot/styles.js.map +0 -1
  58. package/dist/Chart/Tooltip/MultiTooltip/MultiTooltip.js +0 -143
  59. package/dist/Chart/Tooltip/MultiTooltip/MultiTooltip.js.map +0 -1
  60. package/dist/Chart/Tooltip/MultiTooltip/index.js +0 -14
  61. package/dist/Chart/Tooltip/MultiTooltip/index.js.map +0 -1
  62. package/dist/Chart/Tooltip/MultiTooltip/styles.js +0 -49
  63. package/dist/Chart/Tooltip/MultiTooltip/styles.js.map +0 -1
  64. package/dist/Chart/Tooltip/SingleTooltip/SingleTooltip.js +0 -73
  65. package/dist/Chart/Tooltip/SingleTooltip/SingleTooltip.js.map +0 -1
  66. package/dist/Chart/Tooltip/SingleTooltip/index.js +0 -14
  67. package/dist/Chart/Tooltip/SingleTooltip/index.js.map +0 -1
  68. package/dist/Chart/Tooltip/SingleTooltip/styles.js +0 -24
  69. package/dist/Chart/Tooltip/SingleTooltip/styles.js.map +0 -1
  70. package/dist/Chart/Tooltip/Tooltip.js +0 -146
  71. package/dist/Chart/Tooltip/Tooltip.js.map +0 -1
  72. package/dist/Chart/Tooltip/index.js +0 -14
  73. package/dist/Chart/Tooltip/index.js.map +0 -1
  74. package/dist/Chart/Tooltip/styles.js +0 -16
  75. package/dist/Chart/Tooltip/styles.js.map +0 -1
  76. package/dist/Chart/chartPlotlyOverrides.js +0 -145
  77. package/dist/Chart/chartPlotlyOverrides.js.map +0 -1
  78. package/dist/Chart/index.d.ts +0 -5
  79. package/dist/Chart/index.js +0 -14
  80. package/dist/Chart/index.js.map +0 -1
  81. package/dist/Chart/styles.js +0 -36
  82. package/dist/Chart/styles.js.map +0 -1
  83. package/dist/ConfusionMatrix/ConfusionMatrix.d.ts +0 -10
  84. package/dist/ConfusionMatrix/ConfusionMatrix.js +0 -102
  85. package/dist/ConfusionMatrix/ConfusionMatrix.js.map +0 -1
  86. package/dist/ConfusionMatrix/CustomTooltip/CustomTooltip.js +0 -47
  87. package/dist/ConfusionMatrix/CustomTooltip/CustomTooltip.js.map +0 -1
  88. package/dist/ConfusionMatrix/CustomTooltip/index.js +0 -14
  89. package/dist/ConfusionMatrix/CustomTooltip/index.js.map +0 -1
  90. package/dist/ConfusionMatrix/CustomTooltip/styles.js +0 -26
  91. package/dist/ConfusionMatrix/CustomTooltip/styles.js.map +0 -1
  92. package/dist/ConfusionMatrix/confusionMatrixPlotlyOverrides.js +0 -189
  93. package/dist/ConfusionMatrix/confusionMatrixPlotlyOverrides.js.map +0 -1
  94. package/dist/ConfusionMatrix/index.d.ts +0 -2
  95. package/dist/ConfusionMatrix/index.js +0 -14
  96. package/dist/ConfusionMatrix/index.js.map +0 -1
  97. package/dist/ConfusionMatrix/styles.js +0 -10
  98. package/dist/ConfusionMatrix/styles.js.map +0 -1
  99. package/dist/Donutchart/Donutchart.d.ts +0 -10
  100. package/dist/Donutchart/Donutchart.js +0 -103
  101. package/dist/Donutchart/Donutchart.js.map +0 -1
  102. package/dist/Donutchart/donutchartPlotlyOverrides.js +0 -44
  103. package/dist/Donutchart/donutchartPlotlyOverrides.js.map +0 -1
  104. package/dist/Donutchart/index.d.ts +0 -2
  105. package/dist/Donutchart/index.js +0 -14
  106. package/dist/Donutchart/index.js.map +0 -1
  107. package/dist/Donutchart/styles.js +0 -10
  108. package/dist/Donutchart/styles.js.map +0 -1
  109. package/dist/Linechart/Linechart.d.ts +0 -14
  110. package/dist/Linechart/Linechart.js +0 -108
  111. package/dist/Linechart/Linechart.js.map +0 -1
  112. package/dist/Linechart/index.d.ts +0 -2
  113. package/dist/Linechart/index.js +0 -14
  114. package/dist/Linechart/index.js.map +0 -1
  115. package/dist/Linechart/lineChartPlotlyOverrides.js +0 -63
  116. package/dist/Linechart/lineChartPlotlyOverrides.js.map +0 -1
  117. package/dist/Linechart/styles.js +0 -10
  118. package/dist/Linechart/styles.js.map +0 -1
  119. package/dist/index.d.ts +0 -11
  120. package/dist/index.js +0 -35
  121. package/dist/index.js.map +0 -1
  122. package/dist/legacy/Barchart/Barchart.d.ts +0 -14
  123. package/dist/legacy/Barchart/Barchart.js +0 -199
  124. package/dist/legacy/Barchart/Barchart.js.map +0 -1
  125. package/dist/legacy/Barchart/barchartPlotlyOverrides.js +0 -38
  126. package/dist/legacy/Barchart/barchartPlotlyOverrides.js.map +0 -1
  127. package/dist/legacy/Barchart/index.d.ts +0 -2
  128. package/dist/legacy/Barchart/index.js +0 -2
  129. package/dist/legacy/Barchart/index.js.map +0 -1
  130. package/dist/legacy/Barchart/styles.js +0 -3
  131. package/dist/legacy/Barchart/styles.js.map +0 -1
  132. package/dist/legacy/Chart/Chart.d.ts +0 -44
  133. package/dist/legacy/Chart/Chart.js +0 -181
  134. package/dist/legacy/Chart/Chart.js.map +0 -1
  135. package/dist/legacy/Chart/Plot/Plot.d.ts +0 -43
  136. package/dist/legacy/Chart/Plot/Plot.js +0 -95
  137. package/dist/legacy/Chart/Plot/Plot.js.map +0 -1
  138. package/dist/legacy/Chart/Plot/index.d.ts +0 -2
  139. package/dist/legacy/Chart/Plot/index.js +0 -2
  140. package/dist/legacy/Chart/Plot/index.js.map +0 -1
  141. package/dist/legacy/Chart/Plot/styles.js +0 -3
  142. package/dist/legacy/Chart/Plot/styles.js.map +0 -1
  143. package/dist/legacy/Chart/Tooltip/MultiTooltip/MultiTooltip.js +0 -130
  144. package/dist/legacy/Chart/Tooltip/MultiTooltip/MultiTooltip.js.map +0 -1
  145. package/dist/legacy/Chart/Tooltip/MultiTooltip/index.js +0 -2
  146. package/dist/legacy/Chart/Tooltip/MultiTooltip/index.js.map +0 -1
  147. package/dist/legacy/Chart/Tooltip/MultiTooltip/styles.js +0 -42
  148. package/dist/legacy/Chart/Tooltip/MultiTooltip/styles.js.map +0 -1
  149. package/dist/legacy/Chart/Tooltip/SingleTooltip/SingleTooltip.js +0 -57
  150. package/dist/legacy/Chart/Tooltip/SingleTooltip/SingleTooltip.js.map +0 -1
  151. package/dist/legacy/Chart/Tooltip/SingleTooltip/index.js +0 -2
  152. package/dist/legacy/Chart/Tooltip/SingleTooltip/index.js.map +0 -1
  153. package/dist/legacy/Chart/Tooltip/SingleTooltip/styles.js +0 -17
  154. package/dist/legacy/Chart/Tooltip/SingleTooltip/styles.js.map +0 -1
  155. package/dist/legacy/Chart/Tooltip/Tooltip.js +0 -129
  156. package/dist/legacy/Chart/Tooltip/Tooltip.js.map +0 -1
  157. package/dist/legacy/Chart/Tooltip/index.js +0 -2
  158. package/dist/legacy/Chart/Tooltip/index.js.map +0 -1
  159. package/dist/legacy/Chart/Tooltip/styles.js +0 -9
  160. package/dist/legacy/Chart/Tooltip/styles.js.map +0 -1
  161. package/dist/legacy/Chart/chartPlotlyOverrides.js +0 -136
  162. package/dist/legacy/Chart/chartPlotlyOverrides.js.map +0 -1
  163. package/dist/legacy/Chart/index.d.ts +0 -5
  164. package/dist/legacy/Chart/index.js +0 -2
  165. package/dist/legacy/Chart/index.js.map +0 -1
  166. package/dist/legacy/Chart/styles.js +0 -28
  167. package/dist/legacy/Chart/styles.js.map +0 -1
  168. package/dist/legacy/ConfusionMatrix/ConfusionMatrix.d.ts +0 -10
  169. package/dist/legacy/ConfusionMatrix/ConfusionMatrix.js +0 -87
  170. package/dist/legacy/ConfusionMatrix/ConfusionMatrix.js.map +0 -1
  171. package/dist/legacy/ConfusionMatrix/CustomTooltip/CustomTooltip.js +0 -39
  172. package/dist/legacy/ConfusionMatrix/CustomTooltip/CustomTooltip.js.map +0 -1
  173. package/dist/legacy/ConfusionMatrix/CustomTooltip/index.js +0 -2
  174. package/dist/legacy/ConfusionMatrix/CustomTooltip/index.js.map +0 -1
  175. package/dist/legacy/ConfusionMatrix/CustomTooltip/styles.js +0 -19
  176. package/dist/legacy/ConfusionMatrix/CustomTooltip/styles.js.map +0 -1
  177. package/dist/legacy/ConfusionMatrix/confusionMatrixPlotlyOverrides.js +0 -181
  178. package/dist/legacy/ConfusionMatrix/confusionMatrixPlotlyOverrides.js.map +0 -1
  179. package/dist/legacy/ConfusionMatrix/index.d.ts +0 -2
  180. package/dist/legacy/ConfusionMatrix/index.js +0 -2
  181. package/dist/legacy/ConfusionMatrix/index.js.map +0 -1
  182. package/dist/legacy/ConfusionMatrix/styles.js +0 -3
  183. package/dist/legacy/ConfusionMatrix/styles.js.map +0 -1
  184. package/dist/legacy/Donutchart/Donutchart.d.ts +0 -10
  185. package/dist/legacy/Donutchart/Donutchart.js +0 -89
  186. package/dist/legacy/Donutchart/Donutchart.js.map +0 -1
  187. package/dist/legacy/Donutchart/donutchartPlotlyOverrides.js +0 -35
  188. package/dist/legacy/Donutchart/donutchartPlotlyOverrides.js.map +0 -1
  189. package/dist/legacy/Donutchart/index.d.ts +0 -2
  190. package/dist/legacy/Donutchart/index.js +0 -2
  191. package/dist/legacy/Donutchart/index.js.map +0 -1
  192. package/dist/legacy/Donutchart/styles.js +0 -3
  193. package/dist/legacy/Donutchart/styles.js.map +0 -1
  194. package/dist/legacy/Linechart/Linechart.d.ts +0 -14
  195. package/dist/legacy/Linechart/Linechart.js +0 -94
  196. package/dist/legacy/Linechart/Linechart.js.map +0 -1
  197. package/dist/legacy/Linechart/index.d.ts +0 -2
  198. package/dist/legacy/Linechart/index.js +0 -2
  199. package/dist/legacy/Linechart/index.js.map +0 -1
  200. package/dist/legacy/Linechart/lineChartPlotlyOverrides.js +0 -54
  201. package/dist/legacy/Linechart/lineChartPlotlyOverrides.js.map +0 -1
  202. package/dist/legacy/Linechart/styles.js +0 -3
  203. package/dist/legacy/Linechart/styles.js.map +0 -1
  204. package/dist/legacy/index.d.ts +0 -11
  205. package/dist/legacy/index.js +0 -6
  206. package/dist/legacy/index.js.map +0 -1
  207. package/dist/modern/Barchart/Barchart.d.ts +0 -14
  208. package/dist/modern/Barchart/Barchart.js +0 -185
  209. package/dist/modern/Barchart/Barchart.js.map +0 -1
  210. package/dist/modern/Barchart/barchartPlotlyOverrides.js +0 -36
  211. package/dist/modern/Barchart/barchartPlotlyOverrides.js.map +0 -1
  212. package/dist/modern/Barchart/index.d.ts +0 -2
  213. package/dist/modern/Barchart/index.js +0 -2
  214. package/dist/modern/Barchart/index.js.map +0 -1
  215. package/dist/modern/Barchart/styles.js +0 -3
  216. package/dist/modern/Barchart/styles.js.map +0 -1
  217. package/dist/modern/Chart/Chart.d.ts +0 -44
  218. package/dist/modern/Chart/Chart.js +0 -162
  219. package/dist/modern/Chart/Chart.js.map +0 -1
  220. package/dist/modern/Chart/Plot/Plot.d.ts +0 -43
  221. package/dist/modern/Chart/Plot/Plot.js +0 -89
  222. package/dist/modern/Chart/Plot/Plot.js.map +0 -1
  223. package/dist/modern/Chart/Plot/index.d.ts +0 -2
  224. package/dist/modern/Chart/Plot/index.js +0 -2
  225. package/dist/modern/Chart/Plot/index.js.map +0 -1
  226. package/dist/modern/Chart/Plot/styles.js +0 -3
  227. package/dist/modern/Chart/Plot/styles.js.map +0 -1
  228. package/dist/modern/Chart/Tooltip/MultiTooltip/MultiTooltip.js +0 -122
  229. package/dist/modern/Chart/Tooltip/MultiTooltip/MultiTooltip.js.map +0 -1
  230. package/dist/modern/Chart/Tooltip/MultiTooltip/index.js +0 -2
  231. package/dist/modern/Chart/Tooltip/MultiTooltip/index.js.map +0 -1
  232. package/dist/modern/Chart/Tooltip/MultiTooltip/styles.js +0 -40
  233. package/dist/modern/Chart/Tooltip/MultiTooltip/styles.js.map +0 -1
  234. package/dist/modern/Chart/Tooltip/SingleTooltip/SingleTooltip.js +0 -54
  235. package/dist/modern/Chart/Tooltip/SingleTooltip/SingleTooltip.js.map +0 -1
  236. package/dist/modern/Chart/Tooltip/SingleTooltip/index.js +0 -2
  237. package/dist/modern/Chart/Tooltip/SingleTooltip/index.js.map +0 -1
  238. package/dist/modern/Chart/Tooltip/SingleTooltip/styles.js +0 -15
  239. package/dist/modern/Chart/Tooltip/SingleTooltip/styles.js.map +0 -1
  240. package/dist/modern/Chart/Tooltip/Tooltip.js +0 -129
  241. package/dist/modern/Chart/Tooltip/Tooltip.js.map +0 -1
  242. package/dist/modern/Chart/Tooltip/index.js +0 -2
  243. package/dist/modern/Chart/Tooltip/index.js.map +0 -1
  244. package/dist/modern/Chart/Tooltip/styles.js +0 -9
  245. package/dist/modern/Chart/Tooltip/styles.js.map +0 -1
  246. package/dist/modern/Chart/chartPlotlyOverrides.js +0 -126
  247. package/dist/modern/Chart/chartPlotlyOverrides.js.map +0 -1
  248. package/dist/modern/Chart/index.d.ts +0 -5
  249. package/dist/modern/Chart/index.js +0 -2
  250. package/dist/modern/Chart/index.js.map +0 -1
  251. package/dist/modern/Chart/styles.js +0 -19
  252. package/dist/modern/Chart/styles.js.map +0 -1
  253. package/dist/modern/ConfusionMatrix/ConfusionMatrix.d.ts +0 -10
  254. package/dist/modern/ConfusionMatrix/ConfusionMatrix.js +0 -76
  255. package/dist/modern/ConfusionMatrix/ConfusionMatrix.js.map +0 -1
  256. package/dist/modern/ConfusionMatrix/CustomTooltip/CustomTooltip.js +0 -37
  257. package/dist/modern/ConfusionMatrix/CustomTooltip/CustomTooltip.js.map +0 -1
  258. package/dist/modern/ConfusionMatrix/CustomTooltip/index.js +0 -2
  259. package/dist/modern/ConfusionMatrix/CustomTooltip/index.js.map +0 -1
  260. package/dist/modern/ConfusionMatrix/CustomTooltip/styles.js +0 -17
  261. package/dist/modern/ConfusionMatrix/CustomTooltip/styles.js.map +0 -1
  262. package/dist/modern/ConfusionMatrix/confusionMatrixPlotlyOverrides.js +0 -154
  263. package/dist/modern/ConfusionMatrix/confusionMatrixPlotlyOverrides.js.map +0 -1
  264. package/dist/modern/ConfusionMatrix/index.d.ts +0 -2
  265. package/dist/modern/ConfusionMatrix/index.js +0 -2
  266. package/dist/modern/ConfusionMatrix/index.js.map +0 -1
  267. package/dist/modern/ConfusionMatrix/styles.js +0 -3
  268. package/dist/modern/ConfusionMatrix/styles.js.map +0 -1
  269. package/dist/modern/Donutchart/Donutchart.d.ts +0 -10
  270. package/dist/modern/Donutchart/Donutchart.js +0 -78
  271. package/dist/modern/Donutchart/Donutchart.js.map +0 -1
  272. package/dist/modern/Donutchart/donutchartPlotlyOverrides.js +0 -33
  273. package/dist/modern/Donutchart/donutchartPlotlyOverrides.js.map +0 -1
  274. package/dist/modern/Donutchart/index.d.ts +0 -2
  275. package/dist/modern/Donutchart/index.js +0 -2
  276. package/dist/modern/Donutchart/index.js.map +0 -1
  277. package/dist/modern/Donutchart/styles.js +0 -3
  278. package/dist/modern/Donutchart/styles.js.map +0 -1
  279. package/dist/modern/Linechart/Linechart.d.ts +0 -14
  280. package/dist/modern/Linechart/Linechart.js +0 -82
  281. package/dist/modern/Linechart/Linechart.js.map +0 -1
  282. package/dist/modern/Linechart/index.d.ts +0 -2
  283. package/dist/modern/Linechart/index.js +0 -2
  284. package/dist/modern/Linechart/index.js.map +0 -1
  285. package/dist/modern/Linechart/lineChartPlotlyOverrides.js +0 -50
  286. package/dist/modern/Linechart/lineChartPlotlyOverrides.js.map +0 -1
  287. package/dist/modern/Linechart/styles.js +0 -3
  288. package/dist/modern/Linechart/styles.js.map +0 -1
  289. package/dist/modern/index.d.ts +0 -11
  290. package/dist/modern/index.js +0 -6
  291. package/dist/modern/index.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const uikitReactCore = require("@hitachivantara/uikit-react-core");
4
+ const echarts = require("echarts/core");
5
+ const react = require("react");
6
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule)
9
+ return e;
10
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
11
+ if (e) {
12
+ for (const k in e) {
13
+ if (k !== "default") {
14
+ const d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: () => e[k]
18
+ });
19
+ }
20
+ }
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+ const echarts__namespace = /* @__PURE__ */ _interopNamespace(echarts);
26
+ const HvVizContext = react.createContext({
27
+ theme: void 0
28
+ });
29
+ const HvVizProvider = ({
30
+ children
31
+ }) => {
32
+ const {
33
+ activeTheme,
34
+ colorModes,
35
+ selectedMode,
36
+ selectedTheme
37
+ } = uikitReactCore.useTheme();
38
+ const [theme, setTheme] = react.useState();
39
+ const registerThemes = (themeName, modes, themeStructure) => {
40
+ modes.forEach((mode) => {
41
+ const baseText = {
42
+ color: themeStructure == null ? void 0 : themeStructure.colors.modes[mode].secondary,
43
+ fontWeight: themeStructure == null ? void 0 : themeStructure.fontWeights.normal,
44
+ fontSize: themeStructure == null ? void 0 : themeStructure.fontSizes.sm,
45
+ fontFamily: themeStructure == null ? void 0 : themeStructure.fontFamily.body
46
+ };
47
+ const customAxis = {
48
+ nameTextStyle: {
49
+ ...baseText
50
+ },
51
+ axisLine: {
52
+ show: true,
53
+ lineStyle: {
54
+ color: themeStructure == null ? void 0 : themeStructure.colors.modes[mode].atmo3
55
+ }
56
+ },
57
+ axisTick: {
58
+ show: true,
59
+ lineStyle: {
60
+ color: themeStructure == null ? void 0 : themeStructure.colors.modes[mode].atmo3
61
+ }
62
+ },
63
+ axisLabel: {
64
+ color: themeStructure == null ? void 0 : themeStructure.colors.modes[mode].secondary_80,
65
+ fontWeight: themeStructure == null ? void 0 : themeStructure.fontWeights.normal,
66
+ fontSize: themeStructure == null ? void 0 : themeStructure.fontSizes.sm,
67
+ fontFamily: themeStructure == null ? void 0 : themeStructure.fontFamily.body
68
+ },
69
+ splitLine: {
70
+ show: true,
71
+ lineStyle: {
72
+ color: themeStructure == null ? void 0 : themeStructure.colors.modes[mode].atmo3
73
+ }
74
+ }
75
+ };
76
+ echarts__namespace.registerTheme(`${themeName}-${mode}`, {
77
+ color: [themeStructure == null ? void 0 : themeStructure.colors.modes[mode].cat1, themeStructure == null ? void 0 : themeStructure.colors.modes[mode].cat2, themeStructure == null ? void 0 : themeStructure.colors.modes[mode].cat3, themeStructure == null ? void 0 : themeStructure.colors.modes[mode].cat4, themeStructure == null ? void 0 : themeStructure.colors.modes[mode].cat5, themeStructure == null ? void 0 : themeStructure.colors.modes[mode].cat6],
78
+ legend: {
79
+ textStyle: {
80
+ ...baseText
81
+ }
82
+ },
83
+ tooltip: {
84
+ borderWidth: 0,
85
+ padding: 0,
86
+ textStyle: {
87
+ ...baseText
88
+ },
89
+ axisPointer: {
90
+ lineStyle: {
91
+ color: themeStructure == null ? void 0 : themeStructure.colors.modes[mode].secondary,
92
+ width: 1
93
+ }
94
+ }
95
+ },
96
+ dataZoom: {
97
+ textStyle: {
98
+ ...baseText
99
+ }
100
+ },
101
+ categoryAxis: {
102
+ ...customAxis
103
+ },
104
+ valueAxis: {
105
+ ...customAxis
106
+ },
107
+ logAxis: {
108
+ ...customAxis
109
+ },
110
+ timeAxis: {
111
+ ...customAxis
112
+ },
113
+ line: {
114
+ lineStyle: {
115
+ width: 2
116
+ }
117
+ }
118
+ });
119
+ });
120
+ };
121
+ react.useEffect(() => {
122
+ registerThemes(selectedTheme, colorModes, activeTheme);
123
+ }, [selectedTheme, colorModes, activeTheme]);
124
+ react.useEffect(() => {
125
+ setTheme(`${selectedTheme}-${selectedMode}`);
126
+ }, [selectedMode, selectedTheme]);
127
+ const value = react.useMemo(() => ({
128
+ theme
129
+ }), [theme]);
130
+ return /* @__PURE__ */ jsxRuntime.jsx(HvVizContext.Provider, {
131
+ value,
132
+ children
133
+ });
134
+ };
135
+ exports.HvVizContext = HvVizContext;
136
+ exports.HvVizProvider = HvVizProvider;
137
+ //# sourceMappingURL=Provider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.cjs","sources":["../../../src/providers/Provider.tsx"],"sourcesContent":["import { HvTheme, useTheme } from \"@hitachivantara/uikit-react-core\";\nimport * as echarts from \"echarts/core\";\nimport { createContext, useEffect, useMemo, useState } from \"react\";\n\nexport interface HvVizContextValue {\n /**\n * Current theme\n */\n theme?: string;\n}\n\nexport const HvVizContext = createContext<HvVizContextValue>({\n theme: undefined,\n});\n\nexport interface HvVizProviderProps {\n /**\n * Component tree.\n */\n children?: React.ReactNode;\n}\n\n/**\n * Enables theming capabilities for visualizations.\n *\n * Without this provider the visualizations will not comply to the UI Kit themes.\n *\n * This provider should always be used in combination with the `HvProvider` from\n * the core package since the former uses the themes provided by the latter.\n *\n * `HvVizProvider` should always be used after `HvProvider` like so to work properly:\n *\n * ```\n * <HvProvider>\n * <HvVizProvider>\n * (...)\n * </HvVizProvider>\n * </HvProvider>\n * ```\n */\nexport const HvVizProvider = ({ children }: HvVizProviderProps) => {\n const { activeTheme, colorModes, selectedMode, selectedTheme } = useTheme();\n\n const [theme, setTheme] = useState<string | undefined>();\n\n const registerThemes = (\n themeName: string,\n modes: string[],\n themeStructure?: HvTheme\n ) => {\n modes.forEach((mode) => {\n const baseText = {\n color: themeStructure?.colors.modes[mode].secondary,\n fontWeight: themeStructure?.fontWeights.normal,\n fontSize: themeStructure?.fontSizes.sm,\n fontFamily: themeStructure?.fontFamily.body,\n };\n\n const customAxis = {\n nameTextStyle: {\n ...baseText,\n },\n axisLine: {\n show: true,\n lineStyle: {\n color: themeStructure?.colors.modes[mode].atmo3,\n },\n },\n axisTick: {\n show: true,\n lineStyle: {\n color: themeStructure?.colors.modes[mode].atmo3,\n },\n },\n axisLabel: {\n color: themeStructure?.colors.modes[mode].secondary_80,\n fontWeight: themeStructure?.fontWeights.normal,\n fontSize: themeStructure?.fontSizes.sm,\n fontFamily: themeStructure?.fontFamily.body,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: themeStructure?.colors.modes[mode].atmo3,\n },\n },\n };\n\n echarts.registerTheme(`${themeName}-${mode}`, {\n color: [\n themeStructure?.colors.modes[mode].cat1,\n themeStructure?.colors.modes[mode].cat2,\n themeStructure?.colors.modes[mode].cat3,\n themeStructure?.colors.modes[mode].cat4,\n themeStructure?.colors.modes[mode].cat5,\n themeStructure?.colors.modes[mode].cat6,\n ],\n legend: {\n textStyle: {\n ...baseText,\n },\n },\n tooltip: {\n borderWidth: 0,\n padding: 0,\n textStyle: {\n ...baseText,\n },\n axisPointer: {\n lineStyle: {\n color: themeStructure?.colors.modes[mode].secondary,\n width: 1,\n },\n },\n },\n dataZoom: {\n textStyle: { ...baseText },\n },\n categoryAxis: {\n ...customAxis,\n },\n valueAxis: {\n ...customAxis,\n },\n logAxis: {\n ...customAxis,\n },\n timeAxis: {\n ...customAxis,\n },\n line: {\n lineStyle: {\n width: 2,\n },\n },\n });\n });\n };\n\n useEffect(() => {\n registerThemes(selectedTheme, colorModes, activeTheme);\n }, [selectedTheme, colorModes, activeTheme]);\n\n useEffect(() => {\n setTheme(`${selectedTheme}-${selectedMode}`);\n }, [selectedMode, selectedTheme]);\n\n const value = useMemo<HvVizContextValue>(\n () => ({\n theme,\n }),\n [theme]\n );\n\n return (\n <HvVizContext.Provider value={value}>{children}</HvVizContext.Provider>\n );\n};\n"],"names":["HvVizContext","createContext","theme","undefined","HvVizProvider","children","activeTheme","colorModes","selectedMode","selectedTheme","useTheme","setTheme","useState","registerThemes","themeName","modes","themeStructure","forEach","mode","baseText","color","colors","secondary","fontWeight","fontWeights","normal","fontSize","fontSizes","sm","fontFamily","body","customAxis","nameTextStyle","axisLine","show","lineStyle","atmo3","axisTick","axisLabel","secondary_80","splitLine","registerTheme","cat1","cat2","cat3","cat4","cat5","cat6","legend","textStyle","tooltip","borderWidth","padding","axisPointer","width","dataZoom","categoryAxis","valueAxis","logAxis","timeAxis","line","useEffect","value","useMemo","_jsx","Provider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAMA,eAAeC,MAAAA,cAAiC;AAAA,EAC3DC,OAAOC;AACT,CAAC;AA2BM,MAAMC,gBAAgBA,CAAC;AAAA,EAAEC;AAA6B,MAAM;AAC3D,QAAA;AAAA,IAAEC;AAAAA,IAAaC;AAAAA,IAAYC;AAAAA,IAAcC;AAAAA,MAAkBC,eAAS,SAAA;AAE1E,QAAM,CAACR,OAAOS,QAAQ,IAAIC,MAA6B,SAAA;AAEvD,QAAMC,iBAAiBA,CACrBC,WACAC,OACAC,mBACG;AACHD,UAAME,QAASC,CAAS,SAAA;AACtB,YAAMC,WAAW;AAAA,QACfC,OAAOJ,iDAAgBK,OAAON,MAAMG,MAAMI;AAAAA,QAC1CC,YAAYP,iDAAgBQ,YAAYC;AAAAA,QACxCC,UAAUV,iDAAgBW,UAAUC;AAAAA,QACpCC,YAAYb,iDAAgBa,WAAWC;AAAAA,MAAAA;AAGzC,YAAMC,aAAa;AAAA,QACjBC,eAAe;AAAA,UACb,GAAGb;AAAAA,QACL;AAAA,QACAc,UAAU;AAAA,UACRC,MAAM;AAAA,UACNC,WAAW;AAAA,YACTf,OAAOJ,iDAAgBK,OAAON,MAAMG,MAAMkB;AAAAA,UAC5C;AAAA,QACF;AAAA,QACAC,UAAU;AAAA,UACRH,MAAM;AAAA,UACNC,WAAW;AAAA,YACTf,OAAOJ,iDAAgBK,OAAON,MAAMG,MAAMkB;AAAAA,UAC5C;AAAA,QACF;AAAA,QACAE,WAAW;AAAA,UACTlB,OAAOJ,iDAAgBK,OAAON,MAAMG,MAAMqB;AAAAA,UAC1ChB,YAAYP,iDAAgBQ,YAAYC;AAAAA,UACxCC,UAAUV,iDAAgBW,UAAUC;AAAAA,UACpCC,YAAYb,iDAAgBa,WAAWC;AAAAA,QACzC;AAAA,QACAU,WAAW;AAAA,UACTN,MAAM;AAAA,UACNC,WAAW;AAAA,YACTf,OAAOJ,iDAAgBK,OAAON,MAAMG,MAAMkB;AAAAA,UAC5C;AAAA,QACF;AAAA,MAAA;AAGMK,yBAAAA,cAAe,GAAE3B,aAAaI,QAAQ;AAAA,QAC5CE,OAAO,CACLJ,iDAAgBK,OAAON,MAAMG,MAAMwB,MACnC1B,iDAAgBK,OAAON,MAAMG,MAAMyB,MACnC3B,iDAAgBK,OAAON,MAAMG,MAAM0B,MACnC5B,iDAAgBK,OAAON,MAAMG,MAAM2B,MACnC7B,iDAAgBK,OAAON,MAAMG,MAAM4B,MACnC9B,iDAAgBK,OAAON,MAAMG,MAAM6B,IAAI;AAAA,QAEzCC,QAAQ;AAAA,UACNC,WAAW;AAAA,YACT,GAAG9B;AAAAA,UACL;AAAA,QACF;AAAA,QACA+B,SAAS;AAAA,UACPC,aAAa;AAAA,UACbC,SAAS;AAAA,UACTH,WAAW;AAAA,YACT,GAAG9B;AAAAA,UACL;AAAA,UACAkC,aAAa;AAAA,YACXlB,WAAW;AAAA,cACTf,OAAOJ,iDAAgBK,OAAON,MAAMG,MAAMI;AAAAA,cAC1CgC,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,QACAC,UAAU;AAAA,UACRN,WAAW;AAAA,YAAE,GAAG9B;AAAAA,UAAS;AAAA,QAC3B;AAAA,QACAqC,cAAc;AAAA,UACZ,GAAGzB;AAAAA,QACL;AAAA,QACA0B,WAAW;AAAA,UACT,GAAG1B;AAAAA,QACL;AAAA,QACA2B,SAAS;AAAA,UACP,GAAG3B;AAAAA,QACL;AAAA,QACA4B,UAAU;AAAA,UACR,GAAG5B;AAAAA,QACL;AAAA,QACA6B,MAAM;AAAA,UACJzB,WAAW;AAAA,YACTmB,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MAAA,CACD;AAAA,IAAA,CACF;AAAA,EAAA;AAGHO,QAAAA,UAAU,MAAM;AACCpD,mBAAAA,eAAeF,YAAYD,WAAW;AAAA,EACpD,GAAA,CAACG,eAAeF,YAAYD,WAAW,CAAC;AAE3CuD,QAAAA,UAAU,MAAM;AACJ,aAAA,GAAEpD,iBAAiBD,cAAc;AAAA,EAAA,GAC1C,CAACA,cAAcC,aAAa,CAAC;AAE1BqD,QAAAA,QAAQC,MAAAA,QACZ,OAAO;AAAA,IACL7D;AAAAA,EAAAA,IAEF,CAACA,KAAK,CACR;AAGE8D,SAAAA,2BAAAA,IAAChE,aAAaiE,UAAQ;AAAA,IAACH;AAAAA,IAAazD;AAAAA,EAAAA,CAAkC;AAE1E;;;"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const getAgFunc = (func, field) => func === "count" ? "count()" : `${func}(d["${field}"])`;
4
+ exports.getAgFunc = getAgFunc;
5
+ //# sourceMappingURL=getAgFunc.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAgFunc.cjs","sources":["../../../src/utils/getAgFunc.ts"],"sourcesContent":["import { HvChartAggregation } from \"@viz/types\";\n\nexport const getAgFunc = (func: HvChartAggregation, field: string) =>\n func === \"count\" ? \"count()\" : `${func}(d[\"${field}\"])`;\n"],"names":["getAgFunc","func","field"],"mappings":";;AAEaA,MAAAA,YAAYA,CAACC,MAA0BC,UAClDD,SAAS,UAAU,YAAa,GAAEA,WAAWC;;"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const getAxisType = (type) => {
4
+ switch (type) {
5
+ case "categorical":
6
+ return "category";
7
+ case "time":
8
+ return "time";
9
+ case "continuous":
10
+ return "value";
11
+ default:
12
+ return void 0;
13
+ }
14
+ };
15
+ exports.getAxisType = getAxisType;
16
+ //# sourceMappingURL=getAxisType.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAxisType.cjs","sources":["../../../src/utils/getAxisType.ts"],"sourcesContent":["import { HvChartAxisType } from \"@viz/types\";\n\nexport const getAxisType = (type?: HvChartAxisType) => {\n switch (type) {\n case \"categorical\":\n return \"category\";\n case \"time\":\n return \"time\";\n case \"continuous\":\n return \"value\";\n default:\n return undefined;\n }\n};\n"],"names":["getAxisType","type","undefined"],"mappings":";;AAEaA,MAAAA,cAAcA,CAACC,SAA2B;AACrD,UAAQA,MAAI;AAAA,IACV,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT;AACSC,aAAAA;AAAAA,EACX;AACF;;"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const getLegendIcon = (square) => {
4
+ if (square) {
5
+ return "path://M0,0L16,0L16,16L0,16L0,0Z";
6
+ }
7
+ return "path://M0,0L16,0L16,2L0,2Z";
8
+ };
9
+ exports.getLegendIcon = getLegendIcon;
10
+ //# sourceMappingURL=getLegendIcon.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLegendIcon.cjs","sources":["../../../src/utils/getLegendIcon.ts"],"sourcesContent":["export const getLegendIcon = (square: boolean) => {\n if (square) {\n return \"path://M0,0L16,0L16,16L0,16L0,0Z\";\n }\n\n return \"path://M0,0L16,0L16,2L0,2Z\";\n};\n"],"names":["getLegendIcon","square"],"mappings":";;AAAaA,MAAAA,gBAAgBA,CAACC,WAAoB;AAChD,MAAIA,QAAQ;AACH,WAAA;AAAA,EACT;AAEO,SAAA;AACT;;"}
@@ -0,0 +1,377 @@
1
+ import { useRef, useMemo, useState, useEffect } from "react";
2
+ import { DatasetComponent, GridComponent, AriaComponent, TooltipComponent, LegendComponent, DataZoomSliderComponent, DataZoomInsideComponent } from "echarts/components";
3
+ import { CanvasRenderer } from "echarts/renderers";
4
+ import * as echarts from "echarts/core";
5
+ import { LineChart } from "echarts/charts";
6
+ import ReactECharts from "echarts-for-react";
7
+ import { internal, from, table, desc, not } from "arquero";
8
+ import { getAxisType } from "../../utils/getAxisType.js";
9
+ import { getAgFunc } from "../../utils/getAgFunc.js";
10
+ import { getLegendIcon } from "../../utils/getLegendIcon.js";
11
+ import { useVizTheme } from "../../hooks/useVizTheme.js";
12
+ import { useClasses } from "./LineChart.styles.js";
13
+ import { jsx } from "@emotion/react/jsx-runtime";
14
+ echarts.use([LineChart, CanvasRenderer, DatasetComponent, GridComponent, AriaComponent, TooltipComponent, LegendComponent, DataZoomSliderComponent, DataZoomInsideComponent]);
15
+ const HvLineChart = ({
16
+ data,
17
+ groupBy,
18
+ splitBy,
19
+ measures,
20
+ sortBy,
21
+ xAxis,
22
+ yAxis,
23
+ legend,
24
+ tooltip,
25
+ seriesNameFormatter,
26
+ area = false,
27
+ stack,
28
+ emptyCellMode = "void",
29
+ horizontalRangeSlider,
30
+ areaOpacity = 0.5,
31
+ classes: classesProp = {},
32
+ grid
33
+ }) => {
34
+ const {
35
+ theme
36
+ } = useVizTheme();
37
+ const {
38
+ classes
39
+ } = useClasses(classesProp);
40
+ const currentTheme = useRef(theme);
41
+ const chartRef = useRef(null);
42
+ const isMounted = useRef(false);
43
+ const groupByKey = Array.isArray(groupBy) ? groupBy.join("_") : groupBy;
44
+ const chartData = useMemo(() => {
45
+ let tableData;
46
+ if (data instanceof internal.ColumnTable) {
47
+ tableData = data;
48
+ } else if (Array.isArray(data)) {
49
+ tableData = from(data);
50
+ } else {
51
+ tableData = table(data);
52
+ }
53
+ const groupByFields = groupBy ? Array.isArray(groupBy) ? groupBy : [groupBy] : [];
54
+ const splitByFields = Array.isArray(splitBy) ? splitBy : splitBy != null ? [splitBy] : [];
55
+ const measuresFields = measures == null ? {} : typeof measures === "string" ? {
56
+ [measures]: getAgFunc("sum", measures)
57
+ } : Array.isArray(measures) ? measures.reduce((acc, value) => {
58
+ let field;
59
+ let agFunction;
60
+ if (typeof value === "string") {
61
+ field = value;
62
+ agFunction = "sum";
63
+ } else {
64
+ field = value.field;
65
+ agFunction = value.agg ?? "sum";
66
+ }
67
+ return {
68
+ ...acc,
69
+ [field]: getAgFunc(agFunction, field)
70
+ };
71
+ }, {}) : {
72
+ [measures.field]: getAgFunc(measures.agg ?? "sum", measures.field)
73
+ };
74
+ const sortByFields = sortBy == null ? {} : typeof sortBy === "string" ? {
75
+ [sortBy]: "asc"
76
+ } : Array.isArray(sortBy) ? sortBy.reduce((acc, value) => {
77
+ let field;
78
+ let orderFunction;
79
+ if (typeof value === "string") {
80
+ field = value;
81
+ orderFunction = "asc";
82
+ } else {
83
+ field = value.field;
84
+ orderFunction = value.order ?? "asc";
85
+ }
86
+ return {
87
+ ...acc,
88
+ [field]: orderFunction
89
+ };
90
+ }, {}) : {
91
+ [sortBy.field]: sortBy.order ?? "asc"
92
+ };
93
+ const allFields = [...groupByFields, ...splitByFields, ...Object.keys(measuresFields)];
94
+ tableData = tableData.select(...allFields);
95
+ if (groupByFields.length > 0) {
96
+ tableData = tableData.groupby(groupByFields);
97
+ }
98
+ if (splitByFields.length > 0) {
99
+ tableData = tableData.pivot(splitByFields, measuresFields);
100
+ } else {
101
+ tableData = tableData.rollup(measuresFields);
102
+ }
103
+ if (groupByFields.length > 1) {
104
+ const expression = `d => ${groupByFields.map((field) => `d.${field}`).join(" + '_' + ")}`;
105
+ tableData = tableData.derive({
106
+ [groupByKey]: expression
107
+ }, {
108
+ after: groupByFields[groupByFields.length - 1]
109
+ });
110
+ }
111
+ if (Object.keys(sortByFields).length > 0) {
112
+ tableData = tableData.orderby(...Object.keys(sortByFields).filter((key) => allFields.includes(key)).map((key) => sortByFields[key] === "desc" ? desc(key) : key));
113
+ }
114
+ if (groupByFields.length > 1) {
115
+ tableData = tableData.select(not(...groupByFields));
116
+ }
117
+ return tableData;
118
+ }, [data, groupBy, groupByKey, splitBy, measures, sortBy]);
119
+ const chartDataset = useMemo(() => {
120
+ return {
121
+ dataset: {
122
+ source: chartData.columnNames().reduce((acc, c) => ({
123
+ ...acc,
124
+ [c]: chartData.array(c)
125
+ }), {})
126
+ }
127
+ };
128
+ }, [chartData]);
129
+ const chartXAxis = useMemo(() => {
130
+ return {
131
+ xAxis: {
132
+ type: getAxisType(xAxis == null ? void 0 : xAxis.type) ?? "category",
133
+ name: xAxis == null ? void 0 : xAxis.name,
134
+ scale: true,
135
+ axisLabel: {
136
+ rotate: (xAxis == null ? void 0 : xAxis.labelRotation) ?? 0,
137
+ formatter: xAxis == null ? void 0 : xAxis.labelFormatter
138
+ },
139
+ max: (xAxis == null ? void 0 : xAxis.maxValue) === "max" ? "dataMax" : xAxis == null ? void 0 : xAxis.maxValue,
140
+ min: (xAxis == null ? void 0 : xAxis.minValue) === "min" ? "dataMin" : xAxis == null ? void 0 : xAxis.minValue
141
+ }
142
+ };
143
+ }, [xAxis == null ? void 0 : xAxis.labelFormatter, xAxis == null ? void 0 : xAxis.labelRotation, xAxis == null ? void 0 : xAxis.name, xAxis == null ? void 0 : xAxis.type, xAxis == null ? void 0 : xAxis.maxValue, xAxis == null ? void 0 : xAxis.minValue]);
144
+ const chartYAxis = useMemo(() => {
145
+ if (!yAxis || !Array.isArray(yAxis)) {
146
+ return {
147
+ yAxis: {
148
+ id: yAxis == null ? void 0 : yAxis.id,
149
+ type: getAxisType(yAxis == null ? void 0 : yAxis.type) ?? "value",
150
+ name: yAxis == null ? void 0 : yAxis.name,
151
+ axisLabel: {
152
+ rotate: (yAxis == null ? void 0 : yAxis.labelRotation) ?? 0,
153
+ formatter: yAxis == null ? void 0 : yAxis.labelFormatter
154
+ },
155
+ max: (yAxis == null ? void 0 : yAxis.maxValue) === "max" ? "dataMax" : yAxis == null ? void 0 : yAxis.maxValue,
156
+ min: (yAxis == null ? void 0 : yAxis.minValue) === "min" ? "dataMin" : yAxis == null ? void 0 : yAxis.minValue
157
+ }
158
+ };
159
+ }
160
+ return {
161
+ yAxis: yAxis.map((axis) => ({
162
+ id: axis == null ? void 0 : axis.id,
163
+ type: getAxisType(axis == null ? void 0 : axis.type) ?? "value",
164
+ name: axis == null ? void 0 : axis.name,
165
+ axisLabel: {
166
+ rotate: (axis == null ? void 0 : axis.labelRotation) ?? 0,
167
+ formatter: axis == null ? void 0 : axis.labelFormatter
168
+ },
169
+ max: (axis == null ? void 0 : axis.maxValue) === "max" ? "dataMax" : axis == null ? void 0 : axis.maxValue,
170
+ min: (axis == null ? void 0 : axis.minValue) === "min" ? "dataMin" : axis == null ? void 0 : axis.minValue
171
+ }))
172
+ };
173
+ }, [yAxis]);
174
+ const getMeasure = (name, msr) => {
175
+ const measureName = name.split("_")[0];
176
+ const measuresArray = Array.isArray(msr) ? msr : [msr];
177
+ return measuresArray.find((m) => {
178
+ if (typeof m === "string") {
179
+ return m === measureName;
180
+ }
181
+ return m.field === measureName;
182
+ }) ?? measuresArray[0];
183
+ };
184
+ const chartSeries = useMemo(() => {
185
+ return {
186
+ series: chartData.columnNames().filter((c) => c !== groupByKey).map((c) => {
187
+ const measure = getMeasure(c, measures);
188
+ const showSymbol = typeof measure !== "string" ? !measure.hideSymbol : true;
189
+ const sampling = typeof measure !== "string" ? measure.sampling : void 0;
190
+ const yAxisId = typeof measure !== "string" ? measure.yAxis : void 0;
191
+ const isArea = typeof measure !== "string" ? measure.area ?? area : area;
192
+ const aOpacity = typeof measure !== "string" ? measure.areaOpacity ?? areaOpacity : areaOpacity;
193
+ const stackName = typeof measure !== "string" ? measure.stack ?? stack ?? void 0 : stack ?? void 0;
194
+ const connectNulls = typeof measure !== "string" && measure.emptyCellMode ? measure.emptyCellMode === "connect" : emptyCellMode === "connect";
195
+ return {
196
+ id: `series~${groupByKey}~${c}`,
197
+ name: seriesNameFormatter ? seriesNameFormatter(c) : c,
198
+ encode: {
199
+ x: groupByKey,
200
+ y: c
201
+ },
202
+ type: "line",
203
+ showSymbol,
204
+ sampling,
205
+ areaStyle: isArea ? {
206
+ opacity: aOpacity
207
+ } : void 0,
208
+ connectNulls,
209
+ stack: stackName,
210
+ yAxisId
211
+ };
212
+ })
213
+ };
214
+ }, [chartData, groupByKey, area, stack, seriesNameFormatter, emptyCellMode, areaOpacity, measures]);
215
+ const renderTooltip = (params, single, msr, cls, formatter) => {
216
+ const tooltipTitle = params[0].value[params[0].encode.x[0]];
217
+ if (single) {
218
+ const measure = getMeasure(params[0].dimensionNames[params[0].encode.y[0]], msr);
219
+ const value = params[0].value[params[0].encode.y[0]];
220
+ const formattedValue = typeof measure !== "string" && measure.valueFormatter ? measure.valueFormatter(value) : formatter ? formatter(value) : value;
221
+ return `
222
+ <div class="${cls == null ? void 0 : cls.singleTooltipRoot}">
223
+ <p class="${cls == null ? void 0 : cls.singleTooltipTitle}">${tooltipTitle}</p>
224
+ <p class="${cls == null ? void 0 : cls.singleTooltipValue}">${formattedValue}</p>
225
+ </div>
226
+ `;
227
+ }
228
+ return `
229
+ <div class="${cls == null ? void 0 : cls.multipleTooltipRoot}">
230
+ <div class="${cls == null ? void 0 : cls.multipleTooltipTitleContainer}">
231
+ <div>
232
+ <p class="${cls == null ? void 0 : cls.multipleTooltipTitle}">${tooltipTitle}</p>
233
+ </div>
234
+ </div>
235
+ <div class="${cls == null ? void 0 : cls.multipleTooltipValuesContainer}">
236
+ ${params.map((s) => {
237
+ const measure = getMeasure(s.dimensionNames[s.encode.y[0]], msr);
238
+ const value = s.value[s.encode.y[0]];
239
+ const formattedValue = typeof measure !== "string" && measure.valueFormatter ? measure.valueFormatter(value) : formatter ? formatter(value) : value;
240
+ return `
241
+ <div key="${s.seriesName}" class="${cls == null ? void 0 : cls.multipleTooltipSeriesContainer}">
242
+ <div class="${cls == null ? void 0 : cls.multipleTooltipSeriesNameContainer}">
243
+ <p style="background-color: ${s.color};" class="${cls == null ? void 0 : cls.multipleTooltipSeriesColor}" />
244
+ <p class="${cls == null ? void 0 : cls.multipleTooltipSeriesName}">${s.seriesName}</p>
245
+ </div>
246
+ <p class="${cls == null ? void 0 : cls.multipleTooltipSeriesValue}">${formattedValue}</p>
247
+ </div>
248
+ `;
249
+ }).join(" ")}
250
+ </div>
251
+ </div>
252
+ `;
253
+ };
254
+ const chartTooltip = useMemo(() => {
255
+ return {
256
+ tooltip: {
257
+ confine: false,
258
+ show: (tooltip == null ? void 0 : tooltip.show) ?? true,
259
+ trigger: "axis",
260
+ position: (point, params, dom, rect, size) => {
261
+ return [point[0], point[1] - size.contentSize[1]];
262
+ },
263
+ formatter: (params) => renderTooltip(params, (tooltip == null ? void 0 : tooltip.type) === "single", measures, classes, tooltip == null ? void 0 : tooltip.valueFormatter)
264
+ }
265
+ };
266
+ }, [tooltip == null ? void 0 : tooltip.show, tooltip == null ? void 0 : tooltip.valueFormatter, tooltip == null ? void 0 : tooltip.type, classes, measures]);
267
+ const chartLegend = useMemo(() => {
268
+ return {
269
+ legend: {
270
+ show: (legend == null ? void 0 : legend.show) ?? (Array.isArray(chartSeries.series) && chartSeries.series.length > 1),
271
+ itemGap: 20,
272
+ data: (legend == null ? void 0 : legend.show) !== false && Array.isArray(chartSeries.series) ? chartSeries.series.map((s) => {
273
+ return {
274
+ name: s.name,
275
+ icon: getLegendIcon(s.areaStyle != null)
276
+ };
277
+ }) : void 0
278
+ }
279
+ };
280
+ }, [chartSeries, legend == null ? void 0 : legend.show]);
281
+ const chartHorizontalRangerSlider = useMemo(() => {
282
+ return {
283
+ dataZoom: [{
284
+ show: (horizontalRangeSlider == null ? void 0 : horizontalRangeSlider.show) ?? false,
285
+ type: "slider",
286
+ orient: "horizontal"
287
+ }, {
288
+ show: (horizontalRangeSlider == null ? void 0 : horizontalRangeSlider.show) ?? false,
289
+ type: "inside",
290
+ orient: "horizontal",
291
+ zoomOnMouseWheel: "shift",
292
+ moveOnMouseWheel: true
293
+ }]
294
+ };
295
+ }, [horizontalRangeSlider == null ? void 0 : horizontalRangeSlider.show]);
296
+ const chartGrid = useMemo(() => {
297
+ return {
298
+ // if no value is defined we shouldn't pass anything because echarts doesn't behave well otherwise
299
+ grid: {
300
+ ...(grid == null ? void 0 : grid.top) != null && {
301
+ top: grid.top
302
+ },
303
+ ...(grid == null ? void 0 : grid.bottom) != null && {
304
+ bottom: grid.bottom
305
+ },
306
+ ...(grid == null ? void 0 : grid.left) != null && {
307
+ left: grid.left
308
+ },
309
+ ...(grid == null ? void 0 : grid.right) != null && {
310
+ right: grid.right
311
+ }
312
+ }
313
+ };
314
+ }, [grid == null ? void 0 : grid.bottom, grid == null ? void 0 : grid.left, grid == null ? void 0 : grid.right, grid == null ? void 0 : grid.top]);
315
+ const [initialOption, setInitialOption] = useState({
316
+ aria: {
317
+ enabled: true
318
+ },
319
+ animation: false,
320
+ ...chartDataset,
321
+ ...chartXAxis,
322
+ ...chartYAxis,
323
+ ...chartSeries,
324
+ ...chartTooltip,
325
+ ...chartLegend,
326
+ ...chartHorizontalRangerSlider,
327
+ ...chartGrid
328
+ });
329
+ useEffect(() => {
330
+ var _a;
331
+ if (!isMounted.current) {
332
+ isMounted.current = true;
333
+ return;
334
+ }
335
+ if (theme !== currentTheme.current) {
336
+ setInitialOption({
337
+ aria: {
338
+ enabled: true
339
+ },
340
+ animation: false,
341
+ ...chartDataset,
342
+ ...chartXAxis,
343
+ ...chartYAxis,
344
+ ...chartSeries,
345
+ ...chartTooltip,
346
+ ...chartLegend,
347
+ ...chartHorizontalRangerSlider,
348
+ ...chartGrid
349
+ });
350
+ currentTheme.current = theme;
351
+ return;
352
+ }
353
+ (_a = chartRef.current) == null ? void 0 : _a.getEchartsInstance().setOption({
354
+ ...chartDataset,
355
+ ...chartXAxis,
356
+ ...chartYAxis,
357
+ ...chartSeries,
358
+ ...chartLegend,
359
+ ...chartTooltip,
360
+ ...chartHorizontalRangerSlider,
361
+ ...chartGrid
362
+ }, {
363
+ replaceMerge: ["xAxis", "yAxis", "series", "dataset"]
364
+ });
365
+ }, [theme, chartDataset, chartXAxis, chartYAxis, chartSeries, chartLegend, chartTooltip, chartHorizontalRangerSlider, chartGrid]);
366
+ return /* @__PURE__ */ jsx(ReactECharts, {
367
+ ref: chartRef,
368
+ echarts,
369
+ option: initialOption,
370
+ theme,
371
+ notMerge: true
372
+ });
373
+ };
374
+ export {
375
+ HvLineChart
376
+ };
377
+ //# sourceMappingURL=LineChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineChart.js","sources":["../../../../src/components/LineChart/LineChart.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n AriaComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n} from \"echarts/components\";\nimport { CanvasRenderer } from \"echarts/renderers\";\nimport * as echarts from \"echarts/core\";\nimport { LineChart } from \"echarts/charts\";\nimport type {\n EChartsOption,\n LineSeriesOption,\n YAXisComponentOption,\n} from \"echarts\";\n\nimport ReactECharts from \"echarts-for-react\";\n\nimport { from, internal, not, table, desc } from \"arquero\";\nimport type ColumnTable from \"arquero/dist/types/table/column-table\";\n\nimport { ExtractNames } from \"@hitachivantara/uikit-react-core\";\n\nimport {\n HvChartAggregation,\n HvChartOrder,\n HvChartAxis,\n HvChartEmptyCellMode,\n HvChartSampling,\n HvChartTooltipType,\n} from \"@viz/types\";\nimport { getAgFunc, getAxisType, getLegendIcon } from \"@viz/utils\";\nimport { useVizTheme } from \"@viz/hooks\";\nimport { useClasses } from \"./LineChart.styles\";\n\nexport type HvLineChartClasses = ExtractNames<typeof useClasses>;\n\n// Register chart components\necharts.use([\n LineChart,\n CanvasRenderer,\n DatasetComponent,\n GridComponent,\n AriaComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n]);\n\ntype GroupByField = string;\ntype SplitByField = string;\n\ntype FullMeasuresField = {\n /** Column name. */\n field: string;\n /** Sampling function to use. */\n sampling?: HvChartSampling;\n /** Id of the yAxis. */\n yAxis?: string;\n /** Whether to hide the symbol for data points. Defaults to `false`. */\n hideSymbol?: boolean;\n /** Aggregation function to use. If no `agg` is defined, it will default to `sum`. */\n agg?: HvChartAggregation;\n /** Whether the area under the lines should be filled. If not specified, it defaults to the global `area` prop. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. If not specified, it defaults to the global `areaOpacity` prop. */\n areaOpacity?: number;\n /**\n * Stack name to use when the measure should be stacked.\n *\n * Measures stacked together have the same name.\n *\n * If not specified, it defaults to the global `stacked` prop.\n */\n stack?: string;\n /** Strategy to use when there are empty cells. If not specified, it defaults to the global `emptyCellMode` prop. */\n emptyCellMode?: HvChartEmptyCellMode;\n /** Formatter for the value in the tooltip. If not specified, it defaults to the one defined in the global `tooltip` prop. */\n valueFormatter?: (value?: string | number) => string;\n};\n\ntype MeasuresField = string | FullMeasuresField;\n\ntype FullSortByField = {\n /** Column name. */\n field: string;\n /** Order function to use. If no `order` is defined, it will default to `asc`. */\n order?: HvChartOrder;\n};\ntype SortByField = string | FullSortByField;\n\nexport interface HvLineChartProps {\n /** Chart data. */\n data:\n | Map<string | number, (string | number)[]>\n | Record<string | number, (string | number)[]>\n | Record<string | number, string | number>[]\n | ColumnTable;\n /** Columns to use to group the data. */\n groupBy: GroupByField | GroupByField[];\n /** Columns to measure on the chart. */\n measures: MeasuresField | MeasuresField[];\n /** Columns to use to split the measures. */\n splitBy?: SplitByField | SplitByField[];\n /** Columns to use to sort the data points. */\n sortBy?: SortByField | SortByField[];\n /**\n * Options for the xAxis, i.e. the horizontal axis.\n *\n * The default `type` for this axis is `categorical`.\n * */\n xAxis?: HvChartAxis;\n /**\n * Options for the yAxis, i.e. the vertical axis.\n *\n * The default `type` for this axis is `continuous`.\n * */\n yAxis?: HvChartAxis | [HvChartAxis, HvChartAxis];\n /** Tooltip options. */\n tooltip?: {\n /** Whether to show the tooltip or not. Defaults to `true`. */\n show?: boolean;\n /** Formatter for the value in the tooltip. */\n valueFormatter?: (value?: string | number) => string;\n /** Tooltip type: single line or multiple lines modes. The single line mode should only be used when there's one series. Defaults to `multiple`. */\n type?: HvChartTooltipType;\n };\n /** Legend options. */\n legend?: {\n /** Whether to show the legend or not. The legend will appear by default for multiple series. Otherwise, the legend will not be shown. */\n show?: boolean;\n };\n /** Formatter for the series names used on the tooltips and legend. */\n seriesNameFormatter?: (value?: string) => string;\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 /** Stack name to use when all the series should be stacked together. If not provided, the series are not stacked. */\n stack?: string;\n /** Ranger slider options for the horizontal axis. */\n horizontalRangeSlider?: {\n /** Whether to show the ranger slider or not. Defaults to `false`. */\n show?: boolean;\n };\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: Partial<HvLineChartClasses>;\n /** Grid options. */\n grid?: {\n /** Distance between the grid and the top of the container. */\n top?: string | number;\n /** Distance between the grid and the right side of the container. */\n right?: string | number;\n /** Distance between the grid and the left side of the container. */\n left?: string | number;\n /** Distance between the grid and the bottom of the container. */\n bottom?: string | number;\n };\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 data,\n groupBy,\n splitBy,\n measures,\n sortBy,\n xAxis,\n yAxis,\n legend,\n tooltip,\n seriesNameFormatter,\n area = false,\n stack,\n emptyCellMode = \"void\",\n horizontalRangeSlider,\n areaOpacity = 0.5,\n classes: classesProp = {},\n grid,\n}: HvLineChartProps) => {\n const { theme } = useVizTheme();\n const { classes } = useClasses(classesProp);\n\n const currentTheme = useRef<string | undefined>(theme);\n const chartRef = useRef<ReactECharts>(null);\n const isMounted = useRef<boolean>(false);\n\n const groupByKey = Array.isArray(groupBy) ? groupBy.join(\"_\") : 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 const chartDataset = useMemo<Pick<EChartsOption, \"dataset\">>(() => {\n return {\n dataset: {\n source: chartData.columnNames().reduce(\n (acc, c) => ({\n ...acc,\n [c]: chartData.array(c),\n }),\n {}\n ),\n },\n };\n }, [chartData]);\n\n const chartXAxis = useMemo<Pick<EChartsOption, \"xAxis\">>(() => {\n return {\n xAxis: {\n type: getAxisType(xAxis?.type) ?? \"category\",\n name: xAxis?.name,\n scale: true,\n axisLabel: {\n rotate: xAxis?.labelRotation ?? 0,\n formatter: xAxis?.labelFormatter,\n },\n max: xAxis?.maxValue === \"max\" ? \"dataMax\" : xAxis?.maxValue,\n min: xAxis?.minValue === \"min\" ? \"dataMin\" : xAxis?.minValue,\n },\n };\n }, [\n xAxis?.labelFormatter,\n xAxis?.labelRotation,\n xAxis?.name,\n xAxis?.type,\n xAxis?.maxValue,\n xAxis?.minValue,\n ]);\n\n const chartYAxis = useMemo<Pick<EChartsOption, \"yAxis\">>(() => {\n if (!yAxis || !Array.isArray(yAxis)) {\n return {\n yAxis: {\n id: yAxis?.id,\n type: getAxisType(yAxis?.type) ?? \"value\",\n name: yAxis?.name,\n axisLabel: {\n rotate: yAxis?.labelRotation ?? 0,\n formatter: yAxis?.labelFormatter,\n },\n max: yAxis?.maxValue === \"max\" ? \"dataMax\" : yAxis?.maxValue,\n min: yAxis?.minValue === \"min\" ? \"dataMin\" : yAxis?.minValue,\n },\n };\n }\n\n return {\n yAxis: yAxis.map<YAXisComponentOption>((axis) => ({\n id: axis?.id,\n type: getAxisType(axis?.type) ?? \"value\",\n name: axis?.name,\n axisLabel: {\n rotate: axis?.labelRotation ?? 0,\n formatter: axis?.labelFormatter,\n },\n max: axis?.maxValue === \"max\" ? \"dataMax\" : axis?.maxValue,\n min: axis?.minValue === \"min\" ? \"dataMin\" : axis?.minValue,\n })),\n };\n }, [yAxis]);\n\n const getMeasure = (name: string, msr: MeasuresField | MeasuresField[]) => {\n const measureName = name.split(\"_\")[0];\n const measuresArray = Array.isArray(msr) ? msr : [msr];\n // find the measure in measures array or return the first one\n return (\n measuresArray.find((m) => {\n if (typeof m === \"string\") {\n return m === measureName;\n }\n return m.field === measureName;\n }) ?? measuresArray[0]\n );\n };\n\n const chartSeries = useMemo<Pick<EChartsOption, \"series\">>(() => {\n return {\n series: chartData\n .columnNames()\n .filter((c) => c !== groupByKey)\n .map<LineSeriesOption>((c) => {\n const measure = getMeasure(c, measures);\n\n const showSymbol =\n typeof measure !== \"string\" ? !measure.hideSymbol : true;\n const sampling =\n typeof measure !== \"string\" ? measure.sampling : undefined;\n const yAxisId =\n typeof measure !== \"string\" ? measure.yAxis : undefined;\n const isArea =\n typeof measure !== \"string\" ? measure.area ?? area : area;\n const aOpacity =\n typeof measure !== \"string\"\n ? measure.areaOpacity ?? areaOpacity\n : areaOpacity;\n const stackName =\n typeof measure !== \"string\"\n ? measure.stack ?? stack ?? undefined\n : stack ?? undefined;\n const connectNulls =\n typeof measure !== \"string\" && measure.emptyCellMode\n ? measure.emptyCellMode === \"connect\"\n : emptyCellMode === \"connect\";\n\n return {\n id: `series~${groupByKey}~${c}`,\n name: seriesNameFormatter ? seriesNameFormatter(c) : c,\n encode: { x: groupByKey, y: c },\n type: \"line\",\n showSymbol,\n sampling,\n areaStyle: isArea ? { opacity: aOpacity } : undefined,\n connectNulls,\n stack: stackName,\n yAxisId,\n };\n }),\n };\n }, [\n chartData,\n groupByKey,\n area,\n stack,\n seriesNameFormatter,\n emptyCellMode,\n areaOpacity,\n measures,\n ]);\n\n const renderTooltip = (\n params: {\n seriesName: string;\n value: (string | number)[];\n encode: { [key: string]: number[] };\n color: string;\n dimensionNames: string[];\n }[],\n single: boolean,\n msr: MeasuresField | MeasuresField[],\n cls?: typeof classes,\n formatter?: (value?: string | number) => string\n ) => {\n const tooltipTitle = params[0].value[params[0].encode.x[0]];\n\n if (single) {\n const measure = getMeasure(\n params[0].dimensionNames[params[0].encode.y[0]],\n msr\n );\n const value = params[0].value[params[0].encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : formatter\n ? formatter(value)\n : value;\n\n return `\n <div class=\"${cls?.singleTooltipRoot}\">\n <p class=\"${cls?.singleTooltipTitle}\">${tooltipTitle}</p>\n <p class=\"${cls?.singleTooltipValue}\">${formattedValue}</p>\n </div>\n `;\n }\n\n return `\n <div class=\"${cls?.multipleTooltipRoot}\">\n <div class=\"${cls?.multipleTooltipTitleContainer}\">\n <div>\n <p class=\"${cls?.multipleTooltipTitle}\">${tooltipTitle}</p>\n </div>\n </div>\n <div class=\"${cls?.multipleTooltipValuesContainer}\">\n ${params\n .map((s) => {\n const measure = getMeasure(s.dimensionNames[s.encode.y[0]], msr);\n const value = s.value[s.encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : formatter\n ? formatter(value)\n : value;\n\n return `\n <div key=\"${s.seriesName}\" class=\"${cls?.multipleTooltipSeriesContainer}\">\n <div class=\"${cls?.multipleTooltipSeriesNameContainer}\">\n <p style=\"background-color: ${s.color};\" class=\"${cls?.multipleTooltipSeriesColor}\" />\n <p class=\"${cls?.multipleTooltipSeriesName}\">${s.seriesName}</p>\n </div>\n <p class=\"${cls?.multipleTooltipSeriesValue}\">${formattedValue}</p>\n </div>\n `;\n })\n .join(\" \")}\n </div>\n </div>\n `;\n };\n\n const chartTooltip = useMemo<Pick<EChartsOption, \"tooltip\">>(() => {\n return {\n tooltip: {\n confine: false,\n show: tooltip?.show ?? true,\n trigger: \"axis\",\n position: (point, params, dom, rect, size) => {\n return [point[0], point[1] - size.contentSize[1]];\n },\n formatter: (params) =>\n renderTooltip(\n params,\n tooltip?.type === \"single\",\n measures,\n classes,\n tooltip?.valueFormatter\n ),\n },\n };\n }, [\n tooltip?.show,\n tooltip?.valueFormatter,\n tooltip?.type,\n classes,\n measures,\n ]);\n\n const chartLegend = useMemo<Pick<EChartsOption, \"legend\">>(() => {\n return {\n legend: {\n show:\n legend?.show ??\n (Array.isArray(chartSeries.series) && chartSeries.series.length > 1),\n itemGap: 20,\n data:\n legend?.show !== false && Array.isArray(chartSeries.series)\n ? chartSeries.series.map((s) => {\n return {\n name: s.name as string,\n icon: getLegendIcon((s as any).areaStyle != null),\n };\n })\n : undefined,\n },\n };\n }, [chartSeries, legend?.show]);\n\n const chartHorizontalRangerSlider = useMemo<\n Pick<EChartsOption, \"dataZoom\">\n >(() => {\n return {\n dataZoom: [\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"slider\",\n orient: \"horizontal\",\n },\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"inside\",\n orient: \"horizontal\",\n zoomOnMouseWheel: \"shift\",\n moveOnMouseWheel: true,\n },\n ],\n };\n }, [horizontalRangeSlider?.show]);\n\n const chartGrid = useMemo(() => {\n return {\n // if no value is defined we shouldn't pass anything because echarts doesn't behave well otherwise\n grid: {\n ...(grid?.top != null && {\n top: grid.top,\n }),\n ...(grid?.bottom != null && {\n bottom: grid.bottom,\n }),\n ...(grid?.left != null && {\n left: grid.left,\n }),\n ...(grid?.right != null && {\n right: grid.right,\n }),\n },\n };\n }, [grid?.bottom, grid?.left, grid?.right, grid?.top]);\n\n const [initialOption, setInitialOption] = useState<EChartsOption>({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n\n useEffect(() => {\n if (!isMounted.current) {\n isMounted.current = true;\n return;\n }\n\n // when the theme changes echarts destroys the chart and mounts it again\n // thus we need to reset the initial option\n if (theme !== currentTheme.current) {\n setInitialOption({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n currentTheme.current = theme;\n return;\n }\n\n chartRef.current?.getEchartsInstance().setOption(\n {\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartLegend,\n ...chartTooltip,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n },\n {\n replaceMerge: [\"xAxis\", \"yAxis\", \"series\", \"dataset\"],\n }\n );\n }, [\n theme,\n chartDataset,\n chartXAxis,\n chartYAxis,\n chartSeries,\n chartLegend,\n chartTooltip,\n chartHorizontalRangerSlider,\n chartGrid,\n ]);\n\n return (\n <ReactECharts\n ref={chartRef}\n echarts={echarts}\n option={initialOption}\n theme={theme}\n notMerge\n />\n );\n};\n"],"names":["echarts","use","LineChart","CanvasRenderer","DatasetComponent","GridComponent","AriaComponent","TooltipComponent","LegendComponent","DataZoomSliderComponent","DataZoomInsideComponent","HvLineChart","data","groupBy","splitBy","measures","sortBy","xAxis","yAxis","legend","tooltip","seriesNameFormatter","area","stack","emptyCellMode","horizontalRangeSlider","areaOpacity","classes","classesProp","grid","theme","useVizTheme","useClasses","currentTheme","useRef","chartRef","isMounted","groupByKey","Array","isArray","join","chartData","useMemo","tableData","internal","ColumnTable","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","derive","after","orderby","filter","key","includes","desc","not","chartDataset","dataset","source","columnNames","c","array","chartXAxis","type","getAxisType","name","scale","axisLabel","rotate","labelRotation","formatter","labelFormatter","max","maxValue","min","minValue","chartYAxis","id","axis","getMeasure","msr","measureName","split","measuresArray","find","m","chartSeries","series","measure","showSymbol","hideSymbol","sampling","undefined","yAxisId","isArea","aOpacity","stackName","connectNulls","encode","x","y","areaStyle","opacity","renderTooltip","params","single","cls","tooltipTitle","dimensionNames","formattedValue","valueFormatter","singleTooltipRoot","singleTooltipTitle","singleTooltipValue","multipleTooltipRoot","multipleTooltipTitleContainer","multipleTooltipTitle","multipleTooltipValuesContainer","s","seriesName","multipleTooltipSeriesContainer","multipleTooltipSeriesNameContainer","color","multipleTooltipSeriesColor","multipleTooltipSeriesName","multipleTooltipSeriesValue","chartTooltip","confine","show","trigger","position","point","dom","rect","size","contentSize","chartLegend","itemGap","icon","getLegendIcon","chartHorizontalRangerSlider","dataZoom","orient","zoomOnMouseWheel","moveOnMouseWheel","chartGrid","top","bottom","left","right","initialOption","setInitialOption","useState","aria","enabled","animation","useEffect","current","getEchartsInstance","setOption","replaceMerge","ReactECharts","ref","option","notMerge"],"mappings":";;;;;;;;;;;;;AA0CAA,QAAQC,IAAI,CACVC,WACAC,gBACAC,kBACAC,eACAC,eACAC,kBACAC,iBACAC,yBACAC,uBAAuB,CACxB;AAuHM,MAAMC,cAAcA,CAAC;AAAA,EAC1BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,OAAO;AAAA,EACPC;AAAAA,EACAC,gBAAgB;AAAA,EAChBC;AAAAA,EACAC,cAAc;AAAA,EACdC,SAASC,cAAc,CAAC;AAAA,EACxBC;AACgB,MAAM;AAChB,QAAA;AAAA,IAAEC;AAAAA,MAAUC,YAAY;AACxB,QAAA;AAAA,IAAEJ;AAAAA,EAAAA,IAAYK,WAAWJ,WAAW;AAEpCK,QAAAA,eAAeC,OAA2BJ,KAAK;AAC/CK,QAAAA,WAAWD,OAAqB,IAAI;AACpCE,QAAAA,YAAYF,OAAgB,KAAK;AAEjCG,QAAAA,aAAaC,MAAMC,QAAQ1B,OAAO,IAAIA,QAAQ2B,KAAK,GAAG,IAAI3B;AAE1D4B,QAAAA,YAAYC,QAAqB,MAAM;AACvCC,QAAAA;AACA/B,QAAAA,gBAAgBgC,SAASC,aAAa;AAC5BjC,kBAAAA;AAAAA,IACH0B,WAAAA,MAAMC,QAAQ3B,IAAI,GAAG;AAC9B+B,kBAAYG,KAAKlC,IAAI;AAAA,IAAA,OAChB;AACL+B,kBAAYI,MAAMnC,IAAI;AAAA,IACxB;AAEMoC,UAAAA,gBAAgBnC,UAClByB,MAAMC,QAAQ1B,OAAO,IACnBA,UACA,CAACA,OAAO,IACV;AAEEoC,UAAAA,gBAAgBX,MAAMC,QAAQzB,OAAO,IACvCA,UACAA,WAAW,OACX,CAACA,OAAO,IACR,CAAA;AAEJ,UAAMoC,iBACJnC,YAAY,OACR,CAAA,IACA,OAAOA,aAAa,WACpB;AAAA,MAAE,CAACA,QAAQ,GAAGoC,UAAU,OAAOpC,QAAQ;AAAA,IAAA,IACvCuB,MAAMC,QAAQxB,QAAQ,IACtBA,SAASqC,OAAkC,CAACC,KAAKC,UAAU;AACrDC,UAAAA;AACAC,UAAAA;AACA,UAAA,OAAOF,UAAU,UAAU;AACrBA,gBAAAA;AACK,qBAAA;AAAA,MAAA,OACR;AACLC,gBAAQD,MAAMC;AACdC,qBAAaF,MAAMG,OAAO;AAAA,MAC5B;AAEO,aAAA;AAAA,QACL,GAAGJ;AAAAA,QACH,CAACE,KAAK,GAAGJ,UAAUK,YAAYD,KAAK;AAAA,MAAA;AAAA,IAExC,GAAG,CAAE,CAAA,IACL;AAAA,MACE,CAACxC,SAASwC,KAAK,GAAGJ,UAAUpC,SAAS0C,OAAO,OAAO1C,SAASwC,KAAK;AAAA,IAAA;AAGzE,UAAMG,eACJ1C,UAAU,OACN,CAAA,IACA,OAAOA,WAAW,WAClB;AAAA,MAAE,CAACA,MAAM,GAAG;AAAA,IAAA,IACZsB,MAAMC,QAAQvB,MAAM,IACpBA,OAAOoC,OAAwC,CAACC,KAAKC,UAAU;AACzDC,UAAAA;AACAI,UAAAA;AACA,UAAA,OAAOL,UAAU,UAAU;AACrBA,gBAAAA;AACQ,wBAAA;AAAA,MAAA,OACX;AACLC,gBAAQD,MAAMC;AACdI,wBAAgBL,MAAMM,SAAS;AAAA,MACjC;AAEO,aAAA;AAAA,QACL,GAAGP;AAAAA,QACH,CAACE,KAAK,GAAGI;AAAAA,MAAAA;AAAAA,IAEb,GAAG,CAAE,CAAA,IACL;AAAA,MAAE,CAAC3C,OAAOuC,KAAK,GAAGvC,OAAO4C,SAAS;AAAA,IAAA;AAElCC,UAAAA,YAAY,CAChB,GAAGb,eACH,GAAGC,eACH,GAAGa,OAAOC,KAAKb,cAAc,CAAC;AAIpBP,gBAAAA,UAAUqB,OAAO,GAAGH,SAAS;AAGrCb,QAAAA,cAAciB,SAAS,GAAG;AAChBtB,kBAAAA,UAAUuB,QAAQlB,aAAa;AAAA,IAC7C;AAEIC,QAAAA,cAAcgB,SAAS,GAAG;AAEhBtB,kBAAAA,UAAUwB,MAAMlB,eAAeC,cAAc;AAAA,IAAA,OACpD;AAEOP,kBAAAA,UAAUyB,OAAOlB,cAAc;AAAA,IAC7C;AAIIF,QAAAA,cAAciB,SAAS,GAAG;AACtBI,YAAAA,aAAc,QAAOrB,cACxBsB,IAAKf,WAAW,KAAIA,OAAO,EAC3Bf,KAAK,WAAW;AAEnBG,kBAAYA,UAAU4B,OACpB;AAAA,QAAE,CAAClC,UAAU,GAAGgC;AAAAA,MAAAA,GAChB;AAAA,QAAEG,OAAOxB,cAAcA,cAAciB,SAAS,CAAC;AAAA,MAAA,CACjD;AAAA,IACF;AAGA,QAAIH,OAAOC,KAAKL,YAAY,EAAEO,SAAS,GAAG;AAC5BtB,kBAAAA,UAAU8B,QACpB,GAAGX,OAAOC,KAAKL,YAAY,EAExBgB,OAAQC,CAAQd,QAAAA,UAAUe,SAASD,GAAG,CAAC,EACvCL,IAAKK,CAASjB,QAAAA,aAAaiB,GAAG,MAAM,SAASE,KAAKF,GAAG,IAAIA,GAAI,CAClE;AAAA,IACF;AAGI3B,QAAAA,cAAciB,SAAS,GAAG;AAC5BtB,kBAAYA,UAAUqB,OAAOc,IAAI,GAAG9B,aAAa,CAAC;AAAA,IACpD;AAEOL,WAAAA;AAAAA,EAAAA,GACN,CAAC/B,MAAMC,SAASwB,YAAYvB,SAASC,UAAUC,MAAM,CAAC;AAEnD+D,QAAAA,eAAerC,QAAwC,MAAM;AAC1D,WAAA;AAAA,MACLsC,SAAS;AAAA,QACPC,QAAQxC,UAAUyC,YAAAA,EAAc9B,OAC9B,CAACC,KAAK8B,OAAO;AAAA,UACX,GAAG9B;AAAAA,UACH,CAAC8B,CAAC,GAAG1C,UAAU2C,MAAMD,CAAC;AAAA,QACxB,IACA,CAAA,CACF;AAAA,MACF;AAAA,IAAA;AAAA,EACF,GACC,CAAC1C,SAAS,CAAC;AAER4C,QAAAA,aAAa3C,QAAsC,MAAM;AACtD,WAAA;AAAA,MACLzB,OAAO;AAAA,QACLqE,MAAMC,YAAYtE,+BAAOqE,IAAI,KAAK;AAAA,QAClCE,MAAMvE,+BAAOuE;AAAAA,QACbC,OAAO;AAAA,QACPC,WAAW;AAAA,UACTC,SAAQ1E,+BAAO2E,kBAAiB;AAAA,UAChCC,WAAW5E,+BAAO6E;AAAAA,QACpB;AAAA,QACAC,MAAK9E,+BAAO+E,cAAa,QAAQ,YAAY/E,+BAAO+E;AAAAA,QACpDC,MAAKhF,+BAAOiF,cAAa,QAAQ,YAAYjF,+BAAOiF;AAAAA,MACtD;AAAA,IAAA;AAAA,EAED,GAAA,CACDjF,+BAAO6E,gBACP7E,+BAAO2E,eACP3E,+BAAOuE,MACPvE,+BAAOqE,MACPrE,+BAAO+E,UACP/E,+BAAOiF,QAAQ,CAChB;AAEKC,QAAAA,aAAazD,QAAsC,MAAM;AAC7D,QAAI,CAACxB,SAAS,CAACoB,MAAMC,QAAQrB,KAAK,GAAG;AAC5B,aAAA;AAAA,QACLA,OAAO;AAAA,UACLkF,IAAIlF,+BAAOkF;AAAAA,UACXd,MAAMC,YAAYrE,+BAAOoE,IAAI,KAAK;AAAA,UAClCE,MAAMtE,+BAAOsE;AAAAA,UACbE,WAAW;AAAA,YACTC,SAAQzE,+BAAO0E,kBAAiB;AAAA,YAChCC,WAAW3E,+BAAO4E;AAAAA,UACpB;AAAA,UACAC,MAAK7E,+BAAO8E,cAAa,QAAQ,YAAY9E,+BAAO8E;AAAAA,UACpDC,MAAK/E,+BAAOgF,cAAa,QAAQ,YAAYhF,+BAAOgF;AAAAA,QACtD;AAAA,MAAA;AAAA,IAEJ;AAEO,WAAA;AAAA,MACLhF,OAAOA,MAAMoD,IAA2B+B,CAAU,UAAA;AAAA,QAChDD,IAAIC,6BAAMD;AAAAA,QACVd,MAAMC,YAAYc,6BAAMf,IAAI,KAAK;AAAA,QACjCE,MAAMa,6BAAMb;AAAAA,QACZE,WAAW;AAAA,UACTC,SAAQU,6BAAMT,kBAAiB;AAAA,UAC/BC,WAAWQ,6BAAMP;AAAAA,QACnB;AAAA,QACAC,MAAKM,6BAAML,cAAa,QAAQ,YAAYK,6BAAML;AAAAA,QAClDC,MAAKI,6BAAMH,cAAa,QAAQ,YAAYG,6BAAMH;AAAAA,MAAAA,EAClD;AAAA,IAAA;AAAA,EACJ,GACC,CAAChF,KAAK,CAAC;AAEJoF,QAAAA,aAAaA,CAACd,MAAce,QAAyC;AACzE,UAAMC,cAAchB,KAAKiB,MAAM,GAAG,EAAE,CAAC;AACrC,UAAMC,gBAAgBpE,MAAMC,QAAQgE,GAAG,IAAIA,MAAM,CAACA,GAAG;AAGnDG,WAAAA,cAAcC,KAAMC,CAAM,MAAA;AACpB,UAAA,OAAOA,MAAM,UAAU;AACzB,eAAOA,MAAMJ;AAAAA,MACf;AACA,aAAOI,EAAErD,UAAUiD;AAAAA,IAAAA,CACpB,KAAKE,cAAc,CAAC;AAAA,EAAA;AAInBG,QAAAA,cAAcnE,QAAuC,MAAM;AACxD,WAAA;AAAA,MACLoE,QAAQrE,UACLyC,YACAR,EAAAA,OAAQS,OAAMA,MAAM9C,UAAU,EAC9BiC,IAAuBa,CAAM,MAAA;AACtB4B,cAAAA,UAAUT,WAAWnB,GAAGpE,QAAQ;AAEtC,cAAMiG,aACJ,OAAOD,YAAY,WAAW,CAACA,QAAQE,aAAa;AACtD,cAAMC,WACJ,OAAOH,YAAY,WAAWA,QAAQG,WAAWC;AACnD,cAAMC,UACJ,OAAOL,YAAY,WAAWA,QAAQ7F,QAAQiG;AAChD,cAAME,SACJ,OAAON,YAAY,WAAWA,QAAQzF,QAAQA,OAAOA;AACvD,cAAMgG,WACJ,OAAOP,YAAY,WACfA,QAAQrF,eAAeA,cACvBA;AACA6F,cAAAA,YACJ,OAAOR,YAAY,WACfA,QAAQxF,SAASA,SAAS4F,SAC1B5F,SAAS4F;AACTK,cAAAA,eACJ,OAAOT,YAAY,YAAYA,QAAQvF,gBACnCuF,QAAQvF,kBAAkB,YAC1BA,kBAAkB;AAEjB,eAAA;AAAA,UACL4E,IAAK,UAAS/D,cAAc8C;AAAAA,UAC5BK,MAAMnE,sBAAsBA,oBAAoB8D,CAAC,IAAIA;AAAAA,UACrDsC,QAAQ;AAAA,YAAEC,GAAGrF;AAAAA,YAAYsF,GAAGxC;AAAAA,UAAE;AAAA,UAC9BG,MAAM;AAAA,UACN0B;AAAAA,UACAE;AAAAA,UACAU,WAAWP,SAAS;AAAA,YAAEQ,SAASP;AAAAA,UAAaH,IAAAA;AAAAA,UAC5CK;AAAAA,UACAjG,OAAOgG;AAAAA,UACPH;AAAAA,QAAAA;AAAAA,MACF,CACD;AAAA,IAAA;AAAA,EACL,GACC,CACD3E,WACAJ,YACAf,MACAC,OACAF,qBACAG,eACAE,aACAX,QAAQ,CACT;AAED,QAAM+G,gBAAgBA,CACpBC,QAOAC,QACAzB,KACA0B,KACApC,cACG;AACGqC,UAAAA,eAAeH,OAAO,CAAC,EAAEzE,MAAMyE,OAAO,CAAC,EAAEN,OAAOC,EAAE,CAAC,CAAC;AAE1D,QAAIM,QAAQ;AACV,YAAMjB,UAAUT,WACdyB,OAAO,CAAC,EAAEI,eAAeJ,OAAO,CAAC,EAAEN,OAAOE,EAAE,CAAC,CAAC,GAC9CpB,GACF;AACMjD,YAAAA,QAAQyE,OAAO,CAAC,EAAEzE,MAAMyE,OAAO,CAAC,EAAEN,OAAOE,EAAE,CAAC,CAAC;AACnD,YAAMS,iBACJ,OAAOrB,YAAY,YAAYA,QAAQsB,iBACnCtB,QAAQsB,eAAe/E,KAAK,IAC5BuC,YACAA,UAAUvC,KAAK,IACfA;AAEE,aAAA;AAAA,sBACQ2E,2BAAKK;AAAAA,sBACLL,2BAAKM,uBAAuBL;AAAAA,sBAC5BD,2BAAKO,uBAAuBJ;AAAAA;AAAAA;AAAAA,IAG9C;AAEQ,WAAA;AAAA,kBACMH,2BAAKQ;AAAAA,oBACHR,2BAAKS;AAAAA;AAAAA,sBAEHT,2BAAKU,yBAAyBT;AAAAA;AAAAA;AAAAA,oBAGhCD,2BAAKW;AAAAA,UACfb,OACCzD,IAAKuE,CAAM,MAAA;AACJ9B,YAAAA,UAAUT,WAAWuC,EAAEV,eAAeU,EAAEpB,OAAOE,EAAE,CAAC,CAAC,GAAGpB,GAAG;AAC/D,YAAMjD,QAAQuF,EAAEvF,MAAMuF,EAAEpB,OAAOE,EAAE,CAAC,CAAC;AACnC,YAAMS,iBACJ,OAAOrB,YAAY,YAAYA,QAAQsB,iBACnCtB,QAAQsB,eAAe/E,KAAK,IAC5BuC,YACAA,UAAUvC,KAAK,IACfA;AAEE,aAAA;AAAA,wBACIuF,EAAEC,sBAAsBb,2BAAKc;AAAAA,4BACzBd,2BAAKe;AAAAA,8CACaH,EAAEI,kBAAkBhB,2BAAKiB;AAAAA,4BAC3CjB,2BAAKkB,8BAA8BN,EAAEC;AAAAA;AAAAA,0BAEvCb,2BAAKmB,+BAA+BhB;AAAAA;AAAAA;AAAAA,IAAAA,CAGnD,EACA5F,KAAK,GAAG;AAAA;AAAA;AAAA;AAAA,EAAA;AAMX6G,QAAAA,eAAe3G,QAAwC,MAAM;AAC1D,WAAA;AAAA,MACLtB,SAAS;AAAA,QACPkI,SAAS;AAAA,QACTC,OAAMnI,mCAASmI,SAAQ;AAAA,QACvBC,SAAS;AAAA,QACTC,UAAUA,CAACC,OAAO3B,QAAQ4B,KAAKC,MAAMC,SAAS;AACrC,iBAAA,CAACH,MAAM,CAAC,GAAGA,MAAM,CAAC,IAAIG,KAAKC,YAAY,CAAC,CAAC;AAAA,QAClD;AAAA,QACAjE,WAAYkC,CACVD,WAAAA,cACEC,SACA3G,mCAASkE,UAAS,UAClBvE,UACAY,SACAP,mCAASiH,cACX;AAAA,MACJ;AAAA,IAAA;AAAA,EACF,GACC,CACDjH,mCAASmI,MACTnI,mCAASiH,gBACTjH,mCAASkE,MACT3D,SACAZ,QAAQ,CACT;AAEKgJ,QAAAA,cAAcrH,QAAuC,MAAM;AACxD,WAAA;AAAA,MACLvB,QAAQ;AAAA,QACNoI,OACEpI,iCAAQoI,UACPjH,MAAMC,QAAQsE,YAAYC,MAAM,KAAKD,YAAYC,OAAO7C,SAAS;AAAA,QACpE+F,SAAS;AAAA,QACTpJ,OACEO,iCAAQoI,UAAS,SAASjH,MAAMC,QAAQsE,YAAYC,MAAM,IACtDD,YAAYC,OAAOxC,IAAKuE,CAAM,MAAA;AACrB,iBAAA;AAAA,YACLrD,MAAMqD,EAAErD;AAAAA,YACRyE,MAAMC,cAAerB,EAAUjB,aAAa,IAAI;AAAA,UAAA;AAAA,QAEnD,CAAA,IACDT;AAAAA,MACR;AAAA,IAAA;AAAA,EAED,GAAA,CAACN,aAAa1F,iCAAQoI,IAAI,CAAC;AAExBY,QAAAA,8BAA8BzH,QAElC,MAAM;AACC,WAAA;AAAA,MACL0H,UAAU,CACR;AAAA,QACEb,OAAM9H,+DAAuB8H,SAAQ;AAAA,QACrCjE,MAAM;AAAA,QACN+E,QAAQ;AAAA,MAAA,GAEV;AAAA,QACEd,OAAM9H,+DAAuB8H,SAAQ;AAAA,QACrCjE,MAAM;AAAA,QACN+E,QAAQ;AAAA,QACRC,kBAAkB;AAAA,QAClBC,kBAAkB;AAAA,MAAA,CACnB;AAAA,IAAA;AAAA,EAEL,GACC,CAAC9I,+DAAuB8H,IAAI,CAAC;AAE1BiB,QAAAA,YAAY9H,QAAQ,MAAM;AACvB,WAAA;AAAA;AAAA,MAELb,MAAM;AAAA,QACJ,IAAIA,6BAAM4I,QAAO,QAAQ;AAAA,UACvBA,KAAK5I,KAAK4I;AAAAA,QACZ;AAAA,QACA,IAAI5I,6BAAM6I,WAAU,QAAQ;AAAA,UAC1BA,QAAQ7I,KAAK6I;AAAAA,QACf;AAAA,QACA,IAAI7I,6BAAM8I,SAAQ,QAAQ;AAAA,UACxBA,MAAM9I,KAAK8I;AAAAA,QACb;AAAA,QACA,IAAI9I,6BAAM+I,UAAS,QAAQ;AAAA,UACzBA,OAAO/I,KAAK+I;AAAAA,QACd;AAAA,MACF;AAAA,IAAA;AAAA,EACF,GACC,CAAC/I,6BAAM6I,QAAQ7I,6BAAM8I,MAAM9I,6BAAM+I,OAAO/I,6BAAM4I,GAAG,CAAC;AAErD,QAAM,CAACI,eAAeC,gBAAgB,IAAIC,SAAwB;AAAA,IAChEC,MAAM;AAAA,MACJC,SAAS;AAAA,IACX;AAAA,IACAC,WAAW;AAAA,IACX,GAAGnG;AAAAA,IACH,GAAGM;AAAAA,IACH,GAAGc;AAAAA,IACH,GAAGU;AAAAA,IACH,GAAGwC;AAAAA,IACH,GAAGU;AAAAA,IACH,GAAGI;AAAAA,IACH,GAAGK;AAAAA,EAAAA,CACJ;AAEDW,YAAU,MAAM;;AACV,QAAA,CAAC/I,UAAUgJ,SAAS;AACtBhJ,gBAAUgJ,UAAU;AACpB;AAAA,IACF;AAIItJ,QAAAA,UAAUG,aAAamJ,SAAS;AACjB,uBAAA;AAAA,QACfJ,MAAM;AAAA,UACJC,SAAS;AAAA,QACX;AAAA,QACAC,WAAW;AAAA,QACX,GAAGnG;AAAAA,QACH,GAAGM;AAAAA,QACH,GAAGc;AAAAA,QACH,GAAGU;AAAAA,QACH,GAAGwC;AAAAA,QACH,GAAGU;AAAAA,QACH,GAAGI;AAAAA,QACH,GAAGK;AAAAA,MAAAA,CACJ;AACDvI,mBAAamJ,UAAUtJ;AACvB;AAAA,IACF;AAESsJ,mBAAAA,YAAAA,mBAASC,qBAAqBC,UACrC;AAAA,MACE,GAAGvG;AAAAA,MACH,GAAGM;AAAAA,MACH,GAAGc;AAAAA,MACH,GAAGU;AAAAA,MACH,GAAGkD;AAAAA,MACH,GAAGV;AAAAA,MACH,GAAGc;AAAAA,MACH,GAAGK;AAAAA,IAAAA,GAEL;AAAA,MACEe,cAAc,CAAC,SAAS,SAAS,UAAU,SAAS;AAAA,IAAA;AAAA,EAG1D,GAAG,CACDzJ,OACAiD,cACAM,YACAc,YACAU,aACAkD,aACAV,cACAc,6BACAK,SAAS,CACV;AAED,6BACGgB,cAAY;AAAA,IACXC,KAAKtJ;AAAAA,IACLnC;AAAAA,IACA0L,QAAQb;AAAAA,IACR/I;AAAAA,IACA6J,UAAQ;AAAA,EAAA,CACT;AAEL;"}