@carto/ps-react-ui 5.0.0-widgets.12 → 5.0.0-widgets.14

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 (54) hide show
  1. package/dist/{cjs-D9ro6BXv.js → cjs-D4KH3azB.js} +2 -2
  2. package/dist/{cjs-D9ro6BXv.js.map → cjs-D4KH3azB.js.map} +1 -1
  3. package/dist/components.js +26 -26
  4. package/dist/components.js.map +1 -1
  5. package/dist/{lasso-tool-CYn3ivf-.js → lasso-tool-BwRzEW7k.js} +10 -10
  6. package/dist/{lasso-tool-CYn3ivf-.js.map → lasso-tool-BwRzEW7k.js.map} +1 -1
  7. package/dist/{note-Clng2ej6.js → note-t51drNe0.js} +3 -3
  8. package/dist/{note-Clng2ej6.js.map → note-t51drNe0.js.map} +1 -1
  9. package/dist/{series-Do02NQUF.js → series-D3Pc-kYX.js} +2 -2
  10. package/dist/{series-Do02NQUF.js.map → series-D3Pc-kYX.js.map} +1 -1
  11. package/dist/styles-CCZnY17y.js +117 -0
  12. package/dist/styles-CCZnY17y.js.map +1 -0
  13. package/dist/types/widgets/_shared/chart-config/index.d.ts +1 -1
  14. package/dist/types/widgets/_shared/chart-config/option-builders.d.ts +51 -0
  15. package/dist/types/widgets/echart/types.d.ts +1 -0
  16. package/dist/types/widgets/stores/types.d.ts +4 -0
  17. package/dist/{utils-Dv5Z47UQ.js → utils-D3-eQyDR.js} +2 -2
  18. package/dist/{utils-Dv5Z47UQ.js.map → utils-D3-eQyDR.js.map} +1 -1
  19. package/dist/widgets/actions.js +556 -531
  20. package/dist/widgets/actions.js.map +1 -1
  21. package/dist/widgets/bar.js +86 -91
  22. package/dist/widgets/bar.js.map +1 -1
  23. package/dist/widgets/category.js +6 -6
  24. package/dist/widgets/category.js.map +1 -1
  25. package/dist/widgets/echart.js +3 -3
  26. package/dist/widgets/echart.js.map +1 -1
  27. package/dist/widgets/formula.js +4 -4
  28. package/dist/widgets/formula.js.map +1 -1
  29. package/dist/widgets/histogram.js +108 -98
  30. package/dist/widgets/histogram.js.map +1 -1
  31. package/dist/widgets/loader.js +1 -1
  32. package/dist/widgets/markdown.js +5 -5
  33. package/dist/widgets/markdown.js.map +1 -1
  34. package/dist/widgets/note.js +1 -1
  35. package/dist/widgets/pie.js +84 -71
  36. package/dist/widgets/pie.js.map +1 -1
  37. package/dist/widgets/range.js +6 -6
  38. package/dist/widgets/range.js.map +1 -1
  39. package/dist/widgets/scatterplot.js +106 -96
  40. package/dist/widgets/scatterplot.js.map +1 -1
  41. package/dist/widgets/spread.js +4 -4
  42. package/dist/widgets/spread.js.map +1 -1
  43. package/dist/widgets/table.js +8 -8
  44. package/dist/widgets/table.js.map +1 -1
  45. package/dist/widgets/timeseries.js +79 -67
  46. package/dist/widgets/timeseries.js.map +1 -1
  47. package/dist/widgets/toolbar-actions.js +1866 -1465
  48. package/dist/widgets/toolbar-actions.js.map +1 -1
  49. package/dist/widgets/wrapper.js +7 -7
  50. package/dist/widgets/wrapper.js.map +1 -1
  51. package/dist/widgets.js +1 -1
  52. package/package.json +4 -4
  53. package/dist/styles-dOu_pRNb.js +0 -77
  54. package/dist/styles-dOu_pRNb.js.map +0 -1
@@ -1,49 +1,75 @@
1
- import { jsxs as s, jsx as n } from "react/jsx-runtime";
2
- import { c as m } from "react/compiler-runtime";
1
+ import { jsxs as p, jsx as a } from "react/jsx-runtime";
2
+ import { c as b } from "react/compiler-runtime";
3
3
  import "react";
4
4
  import "echarts";
5
5
  import "../widget-store-CB6Trp_0.js";
6
6
  import "zustand/shallow";
7
- import { g } from "../options-D9wflre6.js";
8
- import { m as f } from "../utils-Dv5Z47UQ.js";
9
- import { f as h, c as d, b as u, a as x, d as y } from "../styles-dOu_pRNb.js";
10
- import { Box as a, Skeleton as o } from "@mui/material";
7
+ import { g as k } from "../options-D9wflre6.js";
8
+ import { m as w } from "../utils-D3-eQyDR.js";
9
+ import { f as v, c as _, a as S, b as L, d as C, e as A, g as T } from "../styles-CCZnY17y.js";
10
+ import { Box as s, Skeleton as o } from "@mui/material";
11
11
  import "@mui/icons-material";
12
12
  import "react-markdown";
13
- import { d as l, a as p } from "../exports-Cr43OCul.js";
14
- import "../lasso-tool-CYn3ivf-.js";
15
- import "../cjs-D9ro6BXv.js";
13
+ import { d as g, a as f } from "../exports-Cr43OCul.js";
14
+ import "../lasso-tool-BwRzEW7k.js";
15
+ import "../cjs-D4KH3azB.js";
16
16
  import "@dnd-kit/core";
17
17
  import "@dnd-kit/sortable";
18
18
  import "@dnd-kit/utilities";
19
- function $({
19
+ function Z({
20
20
  refUI: e
21
21
  }) {
22
22
  return [{
23
- ...l,
24
- modifier: () => l.modifier(e)
23
+ ...g,
24
+ modifier: () => g.modifier(e)
25
25
  }, {
26
- ...p,
26
+ ...f,
27
27
  modifier: async (t) => {
28
- const i = h(t);
29
- return p.modifier(i);
28
+ const i = v(t);
29
+ return f.modifier(i);
30
30
  }
31
31
  }];
32
32
  }
33
- function q(e) {
33
+ function ee(e) {
34
34
  return {
35
35
  type: "bar",
36
- option: f(g(e), b(e))
36
+ option: w(k(e), I(e))
37
37
  };
38
38
  }
39
- function b({
39
+ function I({
40
40
  data: e = [],
41
- theme: t
41
+ theme: t,
42
+ formatter: i
42
43
  }) {
43
- const i = (e?.length ?? 0) > 1;
44
+ const m = (e?.length ?? 0) > 1, d = {
45
+ type: "value",
46
+ splitNumber: 1,
47
+ axisLabel: {
48
+ fontSize: t.typography.overlineDelicate.fontSize,
49
+ fontFamily: t.typography.overlineDelicate.fontFamily,
50
+ margin: parseInt(t.spacing(1)),
51
+ show: !0,
52
+ showMaxLabel: !0,
53
+ showMinLabel: !1,
54
+ verticalAlign: "bottom",
55
+ inside: !0
56
+ },
57
+ axisLine: {
58
+ show: !1
59
+ },
60
+ axisTick: {
61
+ show: !1
62
+ },
63
+ splitLine: {
64
+ show: !0,
65
+ lineStyle: {
66
+ color: t.palette.black[4]
67
+ }
68
+ }
69
+ };
44
70
  return {
45
- legend: x(i),
46
- grid: u(i, t),
71
+ legend: A(m),
72
+ grid: C(m, t),
47
73
  xAxis: {
48
74
  type: "category",
49
75
  axisLine: {
@@ -57,57 +83,26 @@ function b({
57
83
  margin: 0
58
84
  }
59
85
  },
60
- yAxis: {
61
- type: "value",
62
- splitNumber: 1,
63
- axisLabel: {
64
- fontSize: t.typography.overlineDelicate.fontSize,
65
- fontFamily: t.typography.overlineDelicate.fontFamily,
66
- margin: parseInt(t.spacing(1)),
67
- show: !0,
68
- showMaxLabel: !0,
69
- showMinLabel: !0,
70
- verticalAlign: "bottom"
71
- },
72
- axisLine: {
73
- show: !1
74
- },
75
- axisTick: {
76
- show: !1
77
- },
78
- splitLine: {
79
- show: !0,
80
- lineStyle: {
81
- color: t.palette.black[4]
82
- }
83
- }
84
- },
86
+ yAxis: L(d, i),
85
87
  tooltip: {
86
- position: d(t)
88
+ position: S(t),
89
+ formatter: _((n) => {
90
+ const l = n.value, u = n.dimensionNames?.[n.encode?.y?.at(0) ?? 1], c = l[u ?? ""], h = typeof c == "number" && i ? i(c) : c ?? "", x = typeof n.marker == "string" ? n.marker : "", y = n.seriesName ? `${n.seriesName}: ` : "";
91
+ return {
92
+ name: n.name ?? "",
93
+ seriesName: y,
94
+ marker: x,
95
+ value: h
96
+ };
97
+ })
87
98
  },
88
- series: e.map((v, c) => ({
89
- datasetIndex: c,
99
+ series: e.map((n, l) => ({
100
+ datasetIndex: l,
90
101
  type: "bar",
91
102
  barMaxWidth: 100,
92
103
  emphasis: {
93
104
  focus: "series"
94
105
  }
95
- // itemStyle: {
96
- // color(params) {
97
- // const color =
98
- // getColorBySchema({
99
- // colorSchema: config?.colorSchema,
100
- // value: params.value as ColorSchemaValue,
101
- // }) ?? params.color!
102
- // if (!selected?.length) {
103
- // return color
104
- // }
105
- // if (selected.map(String).includes(params.name)) {
106
- // return color
107
- // }
108
- // return theme.palette.black[25]
109
- // },
110
- // },
111
106
  }))
112
107
  };
113
108
  }
@@ -125,7 +120,7 @@ const r = {
125
120
  }
126
121
  },
127
122
  graph: {
128
- ...y.graph,
123
+ ...T.graph,
129
124
  grid: {
130
125
  display: "flex",
131
126
  justifyContent: "space-between",
@@ -136,58 +131,58 @@ const r = {
136
131
  }
137
132
  }
138
133
  };
139
- function H() {
140
- const e = m(2);
134
+ function te() {
135
+ const e = b(2);
141
136
  let t;
142
- e[0] === Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ s(a, { sx: r.skeleton.graph.grid, children: [
143
- /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
144
- /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "40%" }),
145
- /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "60%" }),
146
- /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
147
- /* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "80%" })
137
+ e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ p(s, { sx: r.skeleton.graph.grid, children: [
138
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
139
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "40%" }),
140
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "60%" }),
141
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
142
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "80%" })
148
143
  ] }), e[0] = t) : t = e[0];
149
144
  let i;
150
- return e[1] === Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ s(a, { sx: r.skeleton.graph.container, children: [
145
+ return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ p(s, { sx: r.skeleton.graph.container, children: [
151
146
  t,
152
- /* @__PURE__ */ n(a, { sx: {
147
+ /* @__PURE__ */ a(s, { sx: {
153
148
  display: "flex",
154
149
  alignItems: "center",
155
- gap: S,
156
- height: _
157
- }, children: Array(2).fill(0).map(w) })
150
+ gap: D,
151
+ height: F
152
+ }, children: Array(2).fill(0).map(N) })
158
153
  ] }), e[1] = i) : i = e[1], i;
159
154
  }
160
- function w(e, t) {
161
- return /* @__PURE__ */ s(a, { sx: {
155
+ function N(e, t) {
156
+ return /* @__PURE__ */ p(s, { sx: {
162
157
  display: "flex",
163
158
  alignItems: "center",
164
- gap: k
159
+ gap: j
165
160
  }, children: [
166
- /* @__PURE__ */ n(o, { variant: "circular", width: 8, height: 8 }),
167
- /* @__PURE__ */ n(o, { width: 48, height: 8 })
161
+ /* @__PURE__ */ a(o, { variant: "circular", width: 8, height: 8 }),
162
+ /* @__PURE__ */ a(o, { width: 48, height: 8 })
168
163
  ] }, t);
169
164
  }
170
- function k(e) {
165
+ function j(e) {
171
166
  const {
172
167
  spacing: t
173
168
  } = e;
174
169
  return t(1.5);
175
170
  }
176
- function _(e) {
171
+ function F(e) {
177
172
  const {
178
173
  spacing: t
179
174
  } = e;
180
175
  return t(5);
181
176
  }
182
- function S(e) {
177
+ function D(e) {
183
178
  const {
184
179
  spacing: t
185
180
  } = e;
186
181
  return t(2);
187
182
  }
188
183
  export {
189
- H as BarSkeleton,
190
- q as barConfig,
191
- $ as barDownloadConfig
184
+ te as BarSkeleton,
185
+ ee as barConfig,
186
+ Z as barDownloadConfig
192
187
  };
193
188
  //# sourceMappingURL=bar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bar.js","sources":["../../src/widgets/bar/config.ts","../../src/widgets/bar/style.ts","../../src/widgets/bar/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type { BarConfig, BarWidgetConfig, BarWidgetData } from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\n\nexport function barDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<BarWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\n\nexport function barConfig(props: BarConfig): BarWidgetConfig {\n return {\n type: 'bar',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\n\nfunction getOption({ data = [], theme }: BarConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n return {\n legend: buildLegendConfig(hasLegend),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [parseInt(theme.spacing(0.5)), 0, 0, 0],\n margin: 0,\n },\n },\n yAxis: {\n type: 'value',\n splitNumber: 1,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n verticalAlign: 'bottom',\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n tooltip: {\n position: createTooltipPositioner(theme),\n },\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barMaxWidth: 100,\n emphasis: {\n focus: 'series',\n },\n // itemStyle: {\n // color(params) {\n // const color =\n // getColorBySchema({\n // colorSchema: config?.colorSchema,\n // value: params.value as ColorSchemaValue,\n // }) ?? params.color!\n\n // if (!selected?.length) {\n // return color\n // }\n\n // if (selected.map(String).includes(params.name)) {\n // return color\n // }\n\n // return theme.palette.black[25]\n // },\n // },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(12),\n\n '& + &': {\n marginLeft: ({ spacing }) => spacing(1),\n },\n },\n graph: {\n ...baseSkeletonStyles.graph,\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n mask: {\n gray: {\n backgroundColor: ({ palette }) => palette.grey[100],\n },\n white: {\n backgroundColor: ({ palette }) => palette.common.white,\n },\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function BarSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n }}\n >\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={i}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1.5),\n }}\n >\n <Skeleton variant='circular' width={8} height={8} />\n <Skeleton width={48} height={8} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["barDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","barConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","hasLegend","length","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisTick","axisLabel","padding","parseInt","spacing","margin","yAxis","splitNumber","fontSize","typography","overlineDelicate","fontFamily","showMaxLabel","showMinLabel","verticalAlign","splitLine","lineStyle","color","palette","black","tooltip","position","createTooltipPositioner","series","map","_","index","datasetIndex","barMaxWidth","emphasis","focus","styles","skeleton","item","flex","maxWidth","marginLeft","graph","baseSkeletonStyles","display","justifyContent","alignItems","width","BarSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","container","gap","_temp","height","_temp2","Array","fill","_temp4","i","jsxs","_temp3","spacing_1","spacing_0"],"mappings":"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"}
1
+ {"version":3,"file":"bar.js","sources":["../../src/widgets/bar/config.ts","../../src/widgets/bar/style.ts","../../src/widgets/bar/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type { BarConfig, BarWidgetConfig, BarWidgetData } from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n createTooltipFormatter,\n applyYAxisFormatter,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\n\nexport function barDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<BarWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\n\nexport function barConfig(props: BarConfig): BarWidgetConfig {\n return {\n type: 'bar',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\n\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: BarConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n const yAxis = {\n type: 'value' as const,\n splitNumber: 1,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: false,\n verticalAlign: 'bottom' as const,\n inside: true,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n }\n\n return {\n legend: buildLegendConfig(hasLegend),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [parseInt(theme.spacing(0.5)), 0, 0, 0],\n margin: 0,\n },\n },\n yAxis: applyYAxisFormatter(yAxis, formatter),\n tooltip: {\n position: createTooltipPositioner(theme),\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.dimensionNames?.[item.encode?.y?.at(0) ?? 1]\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = item.name ?? ''\n\n return { name, seriesName, marker, value: formattedValue }\n }),\n },\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barMaxWidth: 100,\n emphasis: {\n focus: 'series',\n },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(12),\n\n '& + &': {\n marginLeft: ({ spacing }) => spacing(1),\n },\n },\n graph: {\n ...baseSkeletonStyles.graph,\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n mask: {\n gray: {\n backgroundColor: ({ palette }) => palette.grey[100],\n },\n white: {\n backgroundColor: ({ palette }) => palette.common.white,\n },\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function BarSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n }}\n >\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={i}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1.5),\n }}\n >\n <Skeleton variant='circular' width={8} height={8} />\n <Skeleton width={48} height={8} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["barDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","barConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","formatter","hasLegend","length","yAxis","splitNumber","axisLabel","fontSize","typography","overlineDelicate","fontFamily","margin","parseInt","spacing","show","showMaxLabel","showMinLabel","verticalAlign","inside","axisLine","axisTick","splitLine","lineStyle","color","palette","black","legend","buildLegendConfig","grid","buildGridConfig","xAxis","padding","applyYAxisFormatter","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","value","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","series","map","_","datasetIndex","barMaxWidth","emphasis","focus","styles","skeleton","flex","maxWidth","marginLeft","graph","baseSkeletonStyles","display","justifyContent","alignItems","width","BarSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","container","gap","_temp","height","_temp2","Array","fill","_temp4","i","jsxs","_temp3","spacing_1","spacing_0"],"mappings":"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"}
@@ -7,8 +7,8 @@ import { useState as J } from "react";
7
7
  import "@mui/icons-material";
8
8
  import "react-markdown";
9
9
  import { d as E, a as q } from "../exports-Cr43OCul.js";
10
- import "../lasso-tool-CYn3ivf-.js";
11
- import "../cjs-D9ro6BXv.js";
10
+ import "../lasso-tool-BwRzEW7k.js";
11
+ import "../cjs-D4KH3azB.js";
12
12
  import "@dnd-kit/core";
13
13
  import "@dnd-kit/sortable";
14
14
  import "@dnd-kit/utilities";
@@ -298,7 +298,7 @@ function ye(t) {
298
298
  const a = U(z(l)), s = a?.formatter ?? Z, r = a?.series ?? [], u = a?.data, n = a?.maxItems, c = a?.labels, m = a?.onRowClick, x = a?.selected, y = a?.max, [f] = J(n ? 40 * (r.length || 1) * n : void 0), C = Object.values(i.palette.qualitative.bold), g = r.length > 0 ? r.map(($, v) => $.color ?? C[v % C.length] ?? i.palette.primary.main) : [i.palette.primary.main];
299
299
  let p, w, k, T, R, V, L, B;
300
300
  if (e[2] !== g || e[3] !== u || e[4] !== s || e[5] !== y || e[6] !== f || e[7] !== n || e[8] !== m || e[9] !== x || e[10] !== r || e[11] !== i.palette.primary) {
301
- B = Symbol.for("react.early_return_sentinel");
301
+ B = /* @__PURE__ */ Symbol.for("react.early_return_sentinel");
302
302
  e: {
303
303
  const $ = te({
304
304
  data: u
@@ -310,7 +310,7 @@ function ye(t) {
310
310
  const v = y ?? Math.max(...$.flatMap(ee)), A = n !== void 0 && n >= 0 ? $.slice(0, n) : $;
311
311
  k = $.length - A.length;
312
312
  const P = r.length > 1;
313
- w = b, e[20] === Symbol.for("react.memo_cache_sentinel") ? (L = {
313
+ w = b, e[20] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (L = {
314
314
  ...d.root
315
315
  }, e[20] = L) : L = e[20], p = b, T = d.list;
316
316
  const O = k === 0 ? "auto" : "hidden";
@@ -322,7 +322,7 @@ function ye(t) {
322
322
  e[2] = g, e[3] = u, e[4] = s, e[5] = y, e[6] = f, e[7] = n, e[8] = m, e[9] = x, e[10] = r, e[11] = i.palette.primary, e[12] = p, e[13] = w, e[14] = k, e[15] = T, e[16] = R, e[17] = V, e[18] = L, e[19] = B;
323
323
  } else
324
324
  p = e[12], w = e[13], k = e[14], T = e[15], R = e[16], V = e[17], L = e[18], B = e[19];
325
- if (B !== Symbol.for("react.early_return_sentinel"))
325
+ if (B !== /* @__PURE__ */ Symbol.for("react.early_return_sentinel"))
326
326
  return B;
327
327
  let F;
328
328
  e[24] !== k || e[25] !== c?.other || e[26] !== c?.otherCount ? (F = k > 0 && /* @__PURE__ */ h(X, { hiddenCount: k, otherLabel: c?.other, otherCountLabel: c?.otherCount }), e[24] = k, e[25] = c?.other, e[26] = c?.otherCount, e[27] = F) : F = e[27];
@@ -363,7 +363,7 @@ const oe = [85, 70, 55, 75, 60];
363
363
  function be() {
364
364
  const t = M(1);
365
365
  let e;
366
- return t[0] === Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ h(b, { sx: d.list, "aria-label": "Category skeleton", children: Array.from({
366
+ return t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ h(b, { sx: d.list, "aria-label": "Category skeleton", children: Array.from({
367
367
  length: 5
368
368
  }).map(re) }), t[0] = e) : e = t[0], e;
369
369
  }
@@ -1 +1 @@
1
- {"version":3,"file":"category.js","sources":["../../src/widgets/category/style.ts","../../src/widgets/category/components/category-bar.tsx","../../src/widgets/category/components/category-row-single.tsx","../../src/widgets/category/components/category-row-multi.tsx","../../src/widgets/category/components/category-row-other.tsx","../../src/widgets/category/components/category-legend.tsx","../../src/widgets/category/category-ui.tsx","../../src/widgets/category/skeleton.tsx","../../src/widgets/category/config.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(1),\n },\n row: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(0.5),\n pointerEvents: 'none',\n },\n rowClickable: {\n pointerEvents: 'auto',\n // display: 'flex',\n // flexDirection: 'column',\n // gap: (theme: Theme) => theme.spacing(0.5),\n // cursor: 'pointer',\n // borderRadius: 1,\n // padding: (theme: Theme) => theme.spacing(0.5),\n // margin: (theme: Theme) => theme.spacing(-0.5),\n // transition: 'background-color 0.15s ease-in-out',\n // '&:hover': {\n // backgroundColor: (theme: Theme) => theme.palette.action.hover,\n // },\n },\n rowHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n rowLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.primary',\n },\n rowValue: {\n typography: 'body2',\n color: 'text.secondary',\n },\n barContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n bar: {\n height: 4,\n borderRadius: 2,\n backgroundColor: (theme: Theme) => theme.palette.action.disabledBackground,\n overflow: 'hidden',\n position: 'relative',\n transition: 'background-color 0.15s ease-in-out',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n\n '& > div': {\n filter: 'brightness(1.2)',\n },\n },\n },\n barFill: {\n height: '100%',\n borderRadius: 2,\n transition: 'width 0.3s ease-in-out, background-color 0.15s ease-in-out',\n },\n barFillMuted: {\n backgroundColor: (theme: Theme) => theme.palette.action.disabled,\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(2),\n flexWrap: 'wrap',\n paddingTop: (theme: Theme) => theme.spacing(2),\n position: 'sticky',\n bottom: 0,\n backgroundColor: 'background.paper',\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n marginTop: (theme: Theme) => theme.spacing(2),\n },\n legendItem: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n legendDot: {\n width: 8,\n height: 8,\n borderRadius: '50%',\n },\n legendLabel: {\n typography: 'caption',\n color: 'text.secondary',\n textTransform: 'uppercase',\n fontWeight: 'medium',\n },\n multiBarRow: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n multiBarValue: {\n typography: 'body2',\n color: 'text.secondary',\n minWidth: 48,\n textAlign: 'right',\n },\n multiBarContainer: {\n flex: 1,\n },\n otherRow: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n otherLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.secondary',\n fontStyle: 'italic',\n },\n otherCount: {\n typography: 'body2',\n color: 'text.disabled',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryBarProps {\n value: number\n maxValue: number\n color: string\n selected?: boolean\n}\n\nexport function CategoryBar({\n value,\n maxValue,\n color,\n selected = true,\n}: CategoryBarProps) {\n const percentage = maxValue > 0 ? (value / maxValue) * 100 : 0\n\n const barFillSx = selected\n ? { ...styles.barFill, width: `${percentage}%`, backgroundColor: color }\n : { ...styles.barFill, ...styles.barFillMuted, width: `${percentage}%` }\n\n return (\n <Box sx={styles.bar}>\n <Box sx={barFillSx} />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowSingleProps {\n name: string\n value: number\n maxValue: number\n color: string\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\nexport function CategoryRowSingle({\n name,\n value,\n maxValue,\n color,\n formatter,\n onClick,\n selected = true,\n}: CategoryRowSingleProps) {\n const handleClick = onClick\n ? () =>\n onClick({\n name,\n })\n : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Box sx={styles.rowHeader}>\n <Typography sx={styles.rowLabel}>{name}</Typography>\n <Typography sx={styles.rowValue}>{formatter(value)}</Typography>\n </Box>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={color}\n selected={selected}\n />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowMultiProps {\n name: string\n values: number[]\n maxValue: number\n colors: string[]\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\nexport function CategoryRowMulti({\n name,\n values,\n maxValue,\n colors,\n formatter,\n onClick,\n selected = true,\n}: CategoryRowMultiProps) {\n const handleClick = onClick ? () => onClick({ name }) : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Typography sx={styles.rowLabel}>{name}</Typography>\n <Box sx={styles.barContainer}>\n {values.map((value, index) => (\n <Box key={`${name}-${value}-${index}`} sx={styles.multiBarRow}>\n <Box sx={styles.multiBarContainer}>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={colors[index % colors.length] ?? ''}\n selected={selected}\n />\n </Box>\n <Typography sx={styles.multiBarValue}>\n {formatter(value)}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryRowOtherProps {\n hiddenCount: number\n otherLabel?: string\n otherCountLabel?: string\n}\n\nexport function CategoryRowOther({\n hiddenCount,\n otherLabel = 'Other',\n otherCountLabel = '{count} more',\n}: CategoryRowOtherProps) {\n const countText = otherCountLabel.replace('{count}', String(hiddenCount))\n\n return (\n <Box sx={styles.otherRow}>\n <Typography sx={styles.otherLabel}>{otherLabel}</Typography>\n <Typography sx={styles.otherCount}>({countText})</Typography>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport type { CategorySeriesConfig } from '../types'\n\nexport interface CategoryLegendProps {\n series: CategorySeriesConfig[]\n colors: string[]\n}\n\nexport function CategoryLegend({ series, colors }: CategoryLegendProps) {\n if (series.length === 0) {\n return null\n }\n\n return (\n <Box sx={styles.legend}>\n {series.map((item, index) => (\n <Box key={item.name} sx={styles.legendItem}>\n <Box\n sx={{\n ...styles.legendDot,\n backgroundColor: item.color ?? colors[index % colors.length],\n }}\n />\n <Typography sx={styles.legendLabel}>{item.name}</Typography>\n </Box>\n ))}\n </Box>\n )\n}\n","import { Box, useTheme } from '@mui/material'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { styles } from './style'\nimport type { CategoryUIProps, CategoryWidgetState } from './types'\nimport {\n CategoryRowSingle,\n CategoryRowMulti,\n CategoryRowOther,\n CategoryLegend,\n} from './components'\nimport { useShallow } from 'zustand/shallow'\nimport { useState } from 'react'\n\nconst defaultFormatter = (value: number) => value.toString()\n\nexport function CategoryUI({ id }: CategoryUIProps) {\n const theme = useTheme()\n const widget = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<CategoryWidgetState>(id)\n return {\n formatter: widget?.formatter,\n series: widget?.series,\n data: widget?.data,\n maxItems: widget?.maxItems,\n labels: widget?.labels,\n onRowClick: widget?.onRowClick,\n selected: widget?.selected,\n max: widget?.max,\n }\n }),\n )\n\n const formatter = widget?.formatter ?? defaultFormatter\n const series = widget?.series ?? []\n const data = widget?.data\n const maxItems = widget?.maxItems\n const labels = widget?.labels\n const onRowClick = widget?.onRowClick\n const selected = widget?.selected\n const max = widget?.max\n\n const [maxHeight] = useState<string | number | undefined>(\n maxItems ? 40 * (series.length || 1) * maxItems : undefined,\n )\n\n const qualitativeColors = Object.values(theme.palette.qualitative.bold)\n\n const colors =\n series.length > 0\n ? series.map(\n (s, index: number) =>\n s.color ??\n qualitativeColors[index % qualitativeColors.length] ??\n theme.palette.primary.main,\n )\n : [theme.palette.primary.main]\n\n // Group data items by name to support multi-series display\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const groupedData = generateGroupedData({ data })\n\n if (groupedData.length === 0) {\n return null\n }\n\n const maxValue =\n max ?? Math.max(...groupedData.flatMap((item) => item.values))\n\n // Slice data to maxItems and compute hidden count\n const visibleData =\n maxItems !== undefined && maxItems >= 0\n ? groupedData.slice(0, maxItems)\n : groupedData\n\n const hiddenCount = groupedData.length - visibleData.length\n const isMulti = series.length > 1\n\n return (\n <Box\n sx={{\n ...styles.root,\n }}\n >\n <Box\n sx={styles.list}\n style={{ maxHeight, overflow: hiddenCount === 0 ? 'auto' : 'hidden' }}\n >\n {isMulti\n ? visibleData.map((item) => (\n <CategoryRowMulti\n key={item.name}\n name={item.name}\n values={item.values}\n maxValue={maxValue}\n colors={colors}\n formatter={formatter}\n onClick={onRowClick}\n selected={selected?.(item.name) ?? true}\n />\n ))\n : visibleData.map((item) => (\n <CategoryRowSingle\n key={item.name}\n name={item.name}\n value={item.values[0] ?? 0}\n selected={selected?.(item.name) ?? true}\n maxValue={maxValue}\n color={colors[0] ?? theme.palette.primary.main}\n formatter={formatter}\n onClick={onRowClick}\n />\n ))}\n {hiddenCount > 0 && (\n <CategoryRowOther\n hiddenCount={hiddenCount}\n otherLabel={labels?.other}\n otherCountLabel={labels?.otherCount}\n />\n )}\n </Box>\n {series.length > 0 && <CategoryLegend series={series} colors={colors} />}\n </Box>\n )\n}\n\nfunction generateGroupedData({\n data,\n}: {\n data: { name: string; value: number }[][] | undefined\n}) {\n if (!data || data.length === 0) return []\n\n const seriesCount = Math.max(data.length, 1)\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < data.length; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n return nameOrder.map((name) => ({\n name,\n values: grouped.get(name)!,\n }))\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nconst widthPatterns = [85, 70, 55, 75, 60]\n\nexport function CategorySkeleton() {\n return (\n <Box sx={styles.list} aria-label='Category skeleton'>\n {Array.from({ length: 5 }).map((_, index) => (\n <Box key={index} sx={styles.row}>\n <Box sx={styles.rowHeader}>\n <Skeleton width={80} height={16} />\n <Skeleton width={40} height={16} />\n </Box>\n <Skeleton\n variant='rectangular'\n height={4}\n sx={{ borderRadius: 2, width: `${widthPatterns[index]}%` }}\n />\n </Box>\n ))}\n </Box>\n )\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type {\n CategoryWidgetConfig,\n CategoryWidgetData,\n CategorySeriesConfig,\n CategoryLabels,\n} from './types'\n\nexport interface CategoryDownloadConfigProps extends ConfigProps {\n series?: CategorySeriesConfig[]\n}\n\nexport interface CategoryConfigProps {\n data?: CategoryWidgetData\n series?: CategorySeriesConfig[]\n formatter?: (value: number) => string\n maxItems?: number\n labels?: CategoryLabels\n max?: number\n}\n\nexport function categoryDownloadConfig({\n refUI,\n series,\n}: CategoryDownloadConfigProps): DownloadItem<CategoryWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length || data[0]?.length === 0) {\n return downloadToCSV.modifier([])\n }\n\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const seriesCount = data.length\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n // Build rows\n const rows = nameOrder.map((name) => [name, ...grouped.get(name)!])\n\n const isMulti = seriesCount > 1\n const headers = isMulti\n ? [\n 'Category',\n ...(series?.map((s: CategorySeriesConfig) => s.name) ??\n Array.from(\n { length: seriesCount },\n (_, i) => `Series ${i + 1}`,\n )),\n ]\n : ['Category', 'Value']\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\nexport function categoryConfig(): CategoryWidgetConfig {\n return {\n series: [],\n maxItems: undefined,\n max: undefined,\n }\n}\n"],"names":["styles","root","display","flexDirection","position","list","gap","theme","spacing","row","pointerEvents","rowClickable","rowHeader","justifyContent","alignItems","rowLabel","typography","fontWeight","color","rowValue","barContainer","bar","height","borderRadius","backgroundColor","palette","action","disabledBackground","overflow","transition","cursor","hover","filter","barFill","barFillMuted","disabled","legend","flexWrap","paddingTop","bottom","borderTop","divider","marginTop","legendItem","legendDot","width","legendLabel","textTransform","multiBarRow","multiBarValue","minWidth","textAlign","multiBarContainer","flex","otherRow","otherLabel","fontStyle","otherCount","CategoryBar","t0","$","_c","value","maxValue","selected","t1","undefined","percentage","t2","barFillSx","t3","jsx","Box","CategoryRowSingle","name","formatter","onClick","handleClick","rowStyle","Typography","t4","t5","t6","t7","t8","jsxs","CategoryRowMulti","values","colors","index","length","map","CategoryRowOther","hiddenCount","otherCountLabel","replace","String","countText","CategoryLegend","series","item","defaultFormatter","toString","CategoryUI","id","useTheme","state","widget","getWidget","data","maxItems","labels","onRowClick","max","widget_0","useWidgetStore","useShallow","maxHeight","useState","qualitativeColors","Object","qualitative","bold","s","primary","main","T0","T1","Symbol","for","bb0","groupedData","generateGroupedData","Math","flatMap","_temp","visibleData","slice","isMulti","item_0","item_1","other","t9","t10","seriesCount","grouped","Map","nameOrder","seriesIndex","seriesData","get","Array","fill","set","push","widthPatterns","CategorySkeleton","from","_","Skeleton","categoryDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","rows","headers","i","categoryConfig"],"mappings":"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"}
1
+ {"version":3,"file":"category.js","sources":["../../src/widgets/category/style.ts","../../src/widgets/category/components/category-bar.tsx","../../src/widgets/category/components/category-row-single.tsx","../../src/widgets/category/components/category-row-multi.tsx","../../src/widgets/category/components/category-row-other.tsx","../../src/widgets/category/components/category-legend.tsx","../../src/widgets/category/category-ui.tsx","../../src/widgets/category/skeleton.tsx","../../src/widgets/category/config.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(1),\n },\n row: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(0.5),\n pointerEvents: 'none',\n },\n rowClickable: {\n pointerEvents: 'auto',\n // display: 'flex',\n // flexDirection: 'column',\n // gap: (theme: Theme) => theme.spacing(0.5),\n // cursor: 'pointer',\n // borderRadius: 1,\n // padding: (theme: Theme) => theme.spacing(0.5),\n // margin: (theme: Theme) => theme.spacing(-0.5),\n // transition: 'background-color 0.15s ease-in-out',\n // '&:hover': {\n // backgroundColor: (theme: Theme) => theme.palette.action.hover,\n // },\n },\n rowHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n rowLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.primary',\n },\n rowValue: {\n typography: 'body2',\n color: 'text.secondary',\n },\n barContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n bar: {\n height: 4,\n borderRadius: 2,\n backgroundColor: (theme: Theme) => theme.palette.action.disabledBackground,\n overflow: 'hidden',\n position: 'relative',\n transition: 'background-color 0.15s ease-in-out',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n\n '& > div': {\n filter: 'brightness(1.2)',\n },\n },\n },\n barFill: {\n height: '100%',\n borderRadius: 2,\n transition: 'width 0.3s ease-in-out, background-color 0.15s ease-in-out',\n },\n barFillMuted: {\n backgroundColor: (theme: Theme) => theme.palette.action.disabled,\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(2),\n flexWrap: 'wrap',\n paddingTop: (theme: Theme) => theme.spacing(2),\n position: 'sticky',\n bottom: 0,\n backgroundColor: 'background.paper',\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n marginTop: (theme: Theme) => theme.spacing(2),\n },\n legendItem: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n legendDot: {\n width: 8,\n height: 8,\n borderRadius: '50%',\n },\n legendLabel: {\n typography: 'caption',\n color: 'text.secondary',\n textTransform: 'uppercase',\n fontWeight: 'medium',\n },\n multiBarRow: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n multiBarValue: {\n typography: 'body2',\n color: 'text.secondary',\n minWidth: 48,\n textAlign: 'right',\n },\n multiBarContainer: {\n flex: 1,\n },\n otherRow: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n otherLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.secondary',\n fontStyle: 'italic',\n },\n otherCount: {\n typography: 'body2',\n color: 'text.disabled',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryBarProps {\n value: number\n maxValue: number\n color: string\n selected?: boolean\n}\n\nexport function CategoryBar({\n value,\n maxValue,\n color,\n selected = true,\n}: CategoryBarProps) {\n const percentage = maxValue > 0 ? (value / maxValue) * 100 : 0\n\n const barFillSx = selected\n ? { ...styles.barFill, width: `${percentage}%`, backgroundColor: color }\n : { ...styles.barFill, ...styles.barFillMuted, width: `${percentage}%` }\n\n return (\n <Box sx={styles.bar}>\n <Box sx={barFillSx} />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowSingleProps {\n name: string\n value: number\n maxValue: number\n color: string\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\nexport function CategoryRowSingle({\n name,\n value,\n maxValue,\n color,\n formatter,\n onClick,\n selected = true,\n}: CategoryRowSingleProps) {\n const handleClick = onClick\n ? () =>\n onClick({\n name,\n })\n : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Box sx={styles.rowHeader}>\n <Typography sx={styles.rowLabel}>{name}</Typography>\n <Typography sx={styles.rowValue}>{formatter(value)}</Typography>\n </Box>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={color}\n selected={selected}\n />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowMultiProps {\n name: string\n values: number[]\n maxValue: number\n colors: string[]\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\nexport function CategoryRowMulti({\n name,\n values,\n maxValue,\n colors,\n formatter,\n onClick,\n selected = true,\n}: CategoryRowMultiProps) {\n const handleClick = onClick ? () => onClick({ name }) : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Typography sx={styles.rowLabel}>{name}</Typography>\n <Box sx={styles.barContainer}>\n {values.map((value, index) => (\n <Box key={`${name}-${value}-${index}`} sx={styles.multiBarRow}>\n <Box sx={styles.multiBarContainer}>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={colors[index % colors.length] ?? ''}\n selected={selected}\n />\n </Box>\n <Typography sx={styles.multiBarValue}>\n {formatter(value)}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryRowOtherProps {\n hiddenCount: number\n otherLabel?: string\n otherCountLabel?: string\n}\n\nexport function CategoryRowOther({\n hiddenCount,\n otherLabel = 'Other',\n otherCountLabel = '{count} more',\n}: CategoryRowOtherProps) {\n const countText = otherCountLabel.replace('{count}', String(hiddenCount))\n\n return (\n <Box sx={styles.otherRow}>\n <Typography sx={styles.otherLabel}>{otherLabel}</Typography>\n <Typography sx={styles.otherCount}>({countText})</Typography>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport type { CategorySeriesConfig } from '../types'\n\nexport interface CategoryLegendProps {\n series: CategorySeriesConfig[]\n colors: string[]\n}\n\nexport function CategoryLegend({ series, colors }: CategoryLegendProps) {\n if (series.length === 0) {\n return null\n }\n\n return (\n <Box sx={styles.legend}>\n {series.map((item, index) => (\n <Box key={item.name} sx={styles.legendItem}>\n <Box\n sx={{\n ...styles.legendDot,\n backgroundColor: item.color ?? colors[index % colors.length],\n }}\n />\n <Typography sx={styles.legendLabel}>{item.name}</Typography>\n </Box>\n ))}\n </Box>\n )\n}\n","import { Box, useTheme } from '@mui/material'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { styles } from './style'\nimport type { CategoryUIProps, CategoryWidgetState } from './types'\nimport {\n CategoryRowSingle,\n CategoryRowMulti,\n CategoryRowOther,\n CategoryLegend,\n} from './components'\nimport { useShallow } from 'zustand/shallow'\nimport { useState } from 'react'\n\nconst defaultFormatter = (value: number) => value.toString()\n\nexport function CategoryUI({ id }: CategoryUIProps) {\n const theme = useTheme()\n const widget = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<CategoryWidgetState>(id)\n return {\n formatter: widget?.formatter,\n series: widget?.series,\n data: widget?.data,\n maxItems: widget?.maxItems,\n labels: widget?.labels,\n onRowClick: widget?.onRowClick,\n selected: widget?.selected,\n max: widget?.max,\n }\n }),\n )\n\n const formatter = widget?.formatter ?? defaultFormatter\n const series = widget?.series ?? []\n const data = widget?.data\n const maxItems = widget?.maxItems\n const labels = widget?.labels\n const onRowClick = widget?.onRowClick\n const selected = widget?.selected\n const max = widget?.max\n\n const [maxHeight] = useState<string | number | undefined>(\n maxItems ? 40 * (series.length || 1) * maxItems : undefined,\n )\n\n const qualitativeColors = Object.values(theme.palette.qualitative.bold)\n\n const colors =\n series.length > 0\n ? series.map(\n (s, index: number) =>\n s.color ??\n qualitativeColors[index % qualitativeColors.length] ??\n theme.palette.primary.main,\n )\n : [theme.palette.primary.main]\n\n // Group data items by name to support multi-series display\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const groupedData = generateGroupedData({ data })\n\n if (groupedData.length === 0) {\n return null\n }\n\n const maxValue =\n max ?? Math.max(...groupedData.flatMap((item) => item.values))\n\n // Slice data to maxItems and compute hidden count\n const visibleData =\n maxItems !== undefined && maxItems >= 0\n ? groupedData.slice(0, maxItems)\n : groupedData\n\n const hiddenCount = groupedData.length - visibleData.length\n const isMulti = series.length > 1\n\n return (\n <Box\n sx={{\n ...styles.root,\n }}\n >\n <Box\n sx={styles.list}\n style={{ maxHeight, overflow: hiddenCount === 0 ? 'auto' : 'hidden' }}\n >\n {isMulti\n ? visibleData.map((item) => (\n <CategoryRowMulti\n key={item.name}\n name={item.name}\n values={item.values}\n maxValue={maxValue}\n colors={colors}\n formatter={formatter}\n onClick={onRowClick}\n selected={selected?.(item.name) ?? true}\n />\n ))\n : visibleData.map((item) => (\n <CategoryRowSingle\n key={item.name}\n name={item.name}\n value={item.values[0] ?? 0}\n selected={selected?.(item.name) ?? true}\n maxValue={maxValue}\n color={colors[0] ?? theme.palette.primary.main}\n formatter={formatter}\n onClick={onRowClick}\n />\n ))}\n {hiddenCount > 0 && (\n <CategoryRowOther\n hiddenCount={hiddenCount}\n otherLabel={labels?.other}\n otherCountLabel={labels?.otherCount}\n />\n )}\n </Box>\n {series.length > 0 && <CategoryLegend series={series} colors={colors} />}\n </Box>\n )\n}\n\nfunction generateGroupedData({\n data,\n}: {\n data: { name: string; value: number }[][] | undefined\n}) {\n if (!data || data.length === 0) return []\n\n const seriesCount = Math.max(data.length, 1)\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < data.length; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n return nameOrder.map((name) => ({\n name,\n values: grouped.get(name)!,\n }))\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nconst widthPatterns = [85, 70, 55, 75, 60]\n\nexport function CategorySkeleton() {\n return (\n <Box sx={styles.list} aria-label='Category skeleton'>\n {Array.from({ length: 5 }).map((_, index) => (\n <Box key={index} sx={styles.row}>\n <Box sx={styles.rowHeader}>\n <Skeleton width={80} height={16} />\n <Skeleton width={40} height={16} />\n </Box>\n <Skeleton\n variant='rectangular'\n height={4}\n sx={{ borderRadius: 2, width: `${widthPatterns[index]}%` }}\n />\n </Box>\n ))}\n </Box>\n )\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type {\n CategoryWidgetConfig,\n CategoryWidgetData,\n CategorySeriesConfig,\n CategoryLabels,\n} from './types'\n\nexport interface CategoryDownloadConfigProps extends ConfigProps {\n series?: CategorySeriesConfig[]\n}\n\nexport interface CategoryConfigProps {\n data?: CategoryWidgetData\n series?: CategorySeriesConfig[]\n formatter?: (value: number) => string\n maxItems?: number\n labels?: CategoryLabels\n max?: number\n}\n\nexport function categoryDownloadConfig({\n refUI,\n series,\n}: CategoryDownloadConfigProps): DownloadItem<CategoryWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length || data[0]?.length === 0) {\n return downloadToCSV.modifier([])\n }\n\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const seriesCount = data.length\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n // Build rows\n const rows = nameOrder.map((name) => [name, ...grouped.get(name)!])\n\n const isMulti = seriesCount > 1\n const headers = isMulti\n ? [\n 'Category',\n ...(series?.map((s: CategorySeriesConfig) => s.name) ??\n Array.from(\n { length: seriesCount },\n (_, i) => `Series ${i + 1}`,\n )),\n ]\n : ['Category', 'Value']\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\nexport function categoryConfig(): CategoryWidgetConfig {\n return {\n series: [],\n maxItems: undefined,\n max: undefined,\n }\n}\n"],"names":["styles","root","display","flexDirection","position","list","gap","theme","spacing","row","pointerEvents","rowClickable","rowHeader","justifyContent","alignItems","rowLabel","typography","fontWeight","color","rowValue","barContainer","bar","height","borderRadius","backgroundColor","palette","action","disabledBackground","overflow","transition","cursor","hover","filter","barFill","barFillMuted","disabled","legend","flexWrap","paddingTop","bottom","borderTop","divider","marginTop","legendItem","legendDot","width","legendLabel","textTransform","multiBarRow","multiBarValue","minWidth","textAlign","multiBarContainer","flex","otherRow","otherLabel","fontStyle","otherCount","CategoryBar","t0","$","_c","value","maxValue","selected","t1","undefined","percentage","t2","barFillSx","t3","jsx","Box","CategoryRowSingle","name","formatter","onClick","handleClick","rowStyle","Typography","t4","t5","t6","t7","t8","jsxs","CategoryRowMulti","values","colors","index","length","map","CategoryRowOther","hiddenCount","otherCountLabel","replace","String","countText","CategoryLegend","series","item","defaultFormatter","toString","CategoryUI","id","useTheme","state","widget","getWidget","data","maxItems","labels","onRowClick","max","widget_0","useWidgetStore","useShallow","maxHeight","useState","qualitativeColors","Object","qualitative","bold","s","primary","main","T0","T1","Symbol","for","bb0","groupedData","generateGroupedData","Math","flatMap","_temp","visibleData","slice","isMulti","item_0","item_1","other","t9","t10","seriesCount","grouped","Map","nameOrder","seriesIndex","seriesData","get","Array","fill","set","push","widthPatterns","CategorySkeleton","from","_","Skeleton","categoryDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","rows","headers","i","categoryConfig"],"mappings":"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"}
@@ -5,7 +5,7 @@ import * as B from "echarts";
5
5
  import { u as k } from "../widget-store-CB6Trp_0.js";
6
6
  import { useShallow as D } from "zustand/shallow";
7
7
  import { g as Q } from "../options-D9wflre6.js";
8
- import { g as V, a as X, b as Y, m as ee } from "../utils-Dv5Z47UQ.js";
8
+ import { g as V, a as X, b as Y, m as ee } from "../utils-D3-eQyDR.js";
9
9
  function H(t) {
10
10
  const e = U(21), {
11
11
  id: r,
@@ -23,7 +23,7 @@ function H(t) {
23
23
  });
24
24
  }, v = [r, m], e[0] = r, e[1] = m, e[2] = s, e[3] = v) : (s = e[2], v = e[3]), h(s, v);
25
25
  let E, p;
26
- e[4] === Symbol.for("react.memo_cache_sentinel") ? (E = () => n.current, p = [], e[4] = E, e[5] = p) : (E = e[4], p = e[5]), $(i, E, p);
26
+ e[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (E = () => n.current, p = [], e[4] = E, e[5] = p) : (E = e[4], p = e[5]), $(i, E, p);
27
27
  let b, C;
28
28
  e[6] !== c ? (b = () => {
29
29
  if (u.current)
@@ -42,7 +42,7 @@ function H(t) {
42
42
  });
43
43
  }, O = [l], e[9] = l, e[10] = _, e[11] = O) : (_ = e[10], O = e[11]), h(_, O);
44
44
  let S, y;
45
- e[12] === Symbol.for("react.memo_cache_sentinel") ? (y = () => {
45
+ e[12] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (y = () => {
46
46
  const g = () => {
47
47
  n.current?.resize();
48
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"echart.js","sources":["../../src/widgets/echart/echart-ui.tsx","../../src/widgets/echart/echart.tsx"],"sourcesContent":["import { useEffect, useRef, useImperativeHandle } from 'react'\nimport * as echarts from 'echarts'\nimport type { EchartUIProps } from './types'\nimport { useWidgetStore } from '../stores/widget-store'\n\nexport function EchartUI({\n id,\n ref,\n init,\n option,\n className,\n style,\n onEvents,\n}: EchartUIProps) {\n const chartRef = useRef<HTMLDivElement>(null)\n const chartInstance = useRef<echarts.ECharts>(null)\n const resizeObserverRef = useRef<ResizeObserver | null>(null)\n\n const setWidget = useWidgetStore((state) => state.setWidget)\n\n // Register chart instance in the widget store\n useEffect(() => {\n setWidget(id, { refUI: chartRef })\n }, [id, setWidget])\n\n useImperativeHandle(ref, () => chartInstance.current!, [])\n\n useEffect(() => {\n if (!chartRef.current) return\n\n chartInstance.current = echarts.init(chartRef.current, null, {\n renderer: 'svg',\n height: 304,\n ...init,\n })\n // Cleanup function\n return () => {\n chartInstance.current?.dispose()\n chartInstance.current = null\n }\n }, [init])\n\n // Update chart when options change\n useEffect(() => {\n chartInstance.current?.setOption(option, {\n lazyUpdate: true,\n // notMerge: true,\n })\n }, [option])\n\n // Handle resize using ResizeObserver\n useEffect(() => {\n const handleResize = () => {\n chartInstance.current?.resize()\n }\n\n resizeObserverRef.current = new ResizeObserver(handleResize)\n resizeObserverRef.current.observe(chartRef.current!)\n\n return () => {\n resizeObserverRef.current?.disconnect()\n resizeObserverRef.current = null\n }\n }, [])\n\n useEffect(() => {\n const _onEvents = { ...(onEvents ?? {}) }\n if (!_onEvents.click) {\n _onEvents.mousemove = () => {\n chartInstance.current?.getZr().setCursorStyle('default')\n }\n }\n\n // Attach event listeners\n Object.entries(_onEvents).forEach(([event, handler]) => {\n chartInstance.current?.on(event, handler)\n })\n // Cleanup function to remove event listeners\n return () => {\n Object.entries(_onEvents).forEach(([event]) => {\n chartInstance.current?.off(event)\n })\n }\n }, [onEvents])\n\n return <div id={id} ref={chartRef} style={style} className={className} />\n}\n","import type {\n EchartProps,\n EchartWidgetState,\n EchartWidgetData,\n EchartOptionsProps,\n} from './types'\nimport { EchartUI } from './echart-ui'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport { useMemo } from 'react'\n\nexport function Echart(props: EchartProps) {\n const widget = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<EchartWidgetState>(props.id)\n return {\n id: widget?.id,\n data: widget?.data as EchartWidgetData | undefined,\n option: widget?.option,\n onEvents: widget?.onEvents,\n init: widget?.init,\n }\n }),\n )\n\n // Memoize dataset transformation to avoid re-computing on every render\n const dataset = useMemo(() => buildDataset(widget.data), [widget.data])\n\n if (!widget.id) {\n return null\n }\n const option: EchartOptionsProps = {\n ...widget.option,\n ...(dataset && { dataset }),\n }\n\n const onEvents = widget.onEvents\n const init = widget.init\n\n return (\n <EchartUI id={props.id} option={option} onEvents={onEvents} init={init} />\n )\n}\n\n/**\n * Builds the dataset configuration from widget data\n * @param data - The widget data array\n * @returns The dataset configuration for ECharts\n */\nfunction buildDataset(\n data: EchartWidgetData | undefined,\n): EchartOptionsProps['dataset'] {\n if (!data || data.length === 0) {\n return undefined\n }\n\n return data.map((d) => ({\n source: d,\n }))\n}\n"],"names":["EchartUI","t0","$","_c","id","ref","init","option","className","style","onEvents","chartRef","useRef","chartInstance","resizeObserverRef","setWidget","useWidgetStore","_temp","t1","t2","refUI","useEffect","t3","t4","Symbol","for","current","useImperativeHandle","t5","t6","echarts","renderer","height","dispose","t7","t8","setOption","lazyUpdate","t10","t9","handleResize","resize","ResizeObserver","observe","disconnect","t11","t12","_onEvents","click","mousemove","getZr","setCursorStyle","Object","entries","forEach","t13","event","handler","on","t14","event_0","off","state","Echart","props","widget","getWidget","data","widget_0","useShallow","buildDataset","dataset","length","map","d","source"],"mappings":"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"}
1
+ {"version":3,"file":"echart.js","sources":["../../src/widgets/echart/echart-ui.tsx","../../src/widgets/echart/echart.tsx"],"sourcesContent":["import { useEffect, useRef, useImperativeHandle } from 'react'\nimport * as echarts from 'echarts'\nimport type { EchartUIProps } from './types'\nimport { useWidgetStore } from '../stores/widget-store'\n\nexport function EchartUI({\n id,\n ref,\n init,\n option,\n className,\n style,\n onEvents,\n}: EchartUIProps) {\n const chartRef = useRef<HTMLDivElement>(null)\n const chartInstance = useRef<echarts.ECharts>(null)\n const resizeObserverRef = useRef<ResizeObserver | null>(null)\n\n const setWidget = useWidgetStore((state) => state.setWidget)\n\n // Register chart instance in the widget store\n useEffect(() => {\n setWidget(id, { refUI: chartRef })\n }, [id, setWidget])\n\n useImperativeHandle(ref, () => chartInstance.current!, [])\n\n useEffect(() => {\n if (!chartRef.current) return\n\n chartInstance.current = echarts.init(chartRef.current, null, {\n renderer: 'svg',\n height: 304,\n ...init,\n })\n // Cleanup function\n return () => {\n chartInstance.current?.dispose()\n chartInstance.current = null\n }\n }, [init])\n\n // Update chart when options change\n useEffect(() => {\n chartInstance.current?.setOption(option, {\n lazyUpdate: true,\n // notMerge: true,\n })\n }, [option])\n\n // Handle resize using ResizeObserver\n useEffect(() => {\n const handleResize = () => {\n chartInstance.current?.resize()\n }\n\n resizeObserverRef.current = new ResizeObserver(handleResize)\n resizeObserverRef.current.observe(chartRef.current!)\n\n return () => {\n resizeObserverRef.current?.disconnect()\n resizeObserverRef.current = null\n }\n }, [])\n\n useEffect(() => {\n const _onEvents = { ...(onEvents ?? {}) }\n if (!_onEvents.click) {\n _onEvents.mousemove = () => {\n chartInstance.current?.getZr().setCursorStyle('default')\n }\n }\n\n // Attach event listeners\n Object.entries(_onEvents).forEach(([event, handler]) => {\n chartInstance.current?.on(event, handler)\n })\n // Cleanup function to remove event listeners\n return () => {\n Object.entries(_onEvents).forEach(([event]) => {\n chartInstance.current?.off(event)\n })\n }\n }, [onEvents])\n\n return <div id={id} ref={chartRef} style={style} className={className} />\n}\n","import type {\n EchartProps,\n EchartWidgetState,\n EchartWidgetData,\n EchartOptionsProps,\n} from './types'\nimport { EchartUI } from './echart-ui'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport { useMemo } from 'react'\n\nexport function Echart(props: EchartProps) {\n const widget = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<EchartWidgetState>(props.id)\n return {\n id: widget?.id,\n data: widget?.data as EchartWidgetData | undefined,\n option: widget?.option,\n onEvents: widget?.onEvents,\n init: widget?.init,\n }\n }),\n )\n\n // Memoize dataset transformation to avoid re-computing on every render\n const dataset = useMemo(() => buildDataset(widget.data), [widget.data])\n\n if (!widget.id) {\n return null\n }\n const option: EchartOptionsProps = {\n ...widget.option,\n ...(dataset && { dataset }),\n }\n\n const onEvents = widget.onEvents\n const init = widget.init\n\n return (\n <EchartUI id={props.id} option={option} onEvents={onEvents} init={init} />\n )\n}\n\n/**\n * Builds the dataset configuration from widget data\n * @param data - The widget data array\n * @returns The dataset configuration for ECharts\n */\nfunction buildDataset(\n data: EchartWidgetData | undefined,\n): EchartOptionsProps['dataset'] {\n if (!data || data.length === 0) {\n return undefined\n }\n\n return data.map((d) => ({\n source: d,\n }))\n}\n"],"names":["EchartUI","t0","$","_c","id","ref","init","option","className","style","onEvents","chartRef","useRef","chartInstance","resizeObserverRef","setWidget","useWidgetStore","_temp","t1","t2","refUI","useEffect","t3","t4","Symbol","for","current","useImperativeHandle","t5","t6","echarts","renderer","height","dispose","t7","t8","setOption","lazyUpdate","t10","t9","handleResize","resize","ResizeObserver","observe","disconnect","t11","t12","_onEvents","click","mousemove","getZr","setCursorStyle","Object","entries","forEach","t13","event","handler","on","t14","event_0","off","state","Echart","props","widget","getWidget","data","widget_0","useShallow","buildDataset","dataset","length","map","d","source"],"mappings":"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"}