@carto/ps-react-ui 4.4.1 → 4.4.2

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 (210) hide show
  1. package/dist/components.js.map +1 -1
  2. package/dist/error-CEkRPccv.js.map +1 -1
  3. package/dist/exports-Cr43OCul.js.map +1 -1
  4. package/dist/formatter-B1Xh8XDH.js +5 -0
  5. package/dist/formatter-B1Xh8XDH.js.map +1 -0
  6. package/dist/lasso-tool-BYbxrJ-7.js.map +1 -1
  7. package/dist/note-t51drNe0.js.map +1 -1
  8. package/dist/options-D9wflre6.js.map +1 -1
  9. package/dist/row-DTCV0Ocm.js.map +1 -1
  10. package/dist/series-CYNOu2Ju.js.map +1 -1
  11. package/dist/smart-tooltip-D4vwQpFf.js.map +1 -1
  12. package/dist/styles-C_8vOEep.js +167 -0
  13. package/dist/styles-C_8vOEep.js.map +1 -0
  14. package/dist/tooltip-BDnrRKrp.js.map +1 -1
  15. package/dist/types/components/basemaps/basemaps.d.ts +20 -0
  16. package/dist/types/components/geolocation-controls/geolocation-controls.d.ts +11 -0
  17. package/dist/types/components/lasso-tool/lasso-tool-inline.d.ts +17 -0
  18. package/dist/types/components/lasso-tool/lasso-tool.d.ts +21 -0
  19. package/dist/types/components/list-data/list-data.d.ts +16 -0
  20. package/dist/types/components/measurement-tools/measurement-tools.d.ts +20 -0
  21. package/dist/types/components/smart-tooltip/smart-tooltip.d.ts +17 -0
  22. package/dist/types/components/tooltip/tooltip.d.ts +13 -0
  23. package/dist/types/components/zoom-controls/zoom-controls.d.ts +16 -0
  24. package/dist/types/hooks/use-widget-ref.d.ts +4 -4
  25. package/dist/types/widgets/actions/download/download.d.ts +11 -0
  26. package/dist/types/widgets/actions/download/exports.d.ts +15 -0
  27. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +13 -0
  28. package/dist/types/widgets/actions/index.d.ts +1 -1
  29. package/dist/types/widgets/actions/relative-data/relative-data.d.ts +1 -0
  30. package/dist/types/widgets/bar/config.d.ts +8 -4
  31. package/dist/types/widgets/category/category-ui.d.ts +3 -0
  32. package/dist/types/widgets/category/components/category-bar.d.ts +3 -0
  33. package/dist/types/widgets/category/components/category-legend.d.ts +3 -0
  34. package/dist/types/widgets/category/components/category-row-multi.d.ts +3 -0
  35. package/dist/types/widgets/category/components/category-row-other.d.ts +3 -0
  36. package/dist/types/widgets/category/components/category-row-single.d.ts +3 -0
  37. package/dist/types/widgets/category/config.d.ts +11 -0
  38. package/dist/types/widgets/echart/echart-ui.d.ts +7 -0
  39. package/dist/types/widgets/echart/echart.d.ts +6 -0
  40. package/dist/types/widgets/echart/options.d.ts +7 -0
  41. package/dist/types/widgets/echart/types.d.ts +1 -0
  42. package/dist/types/widgets/echart/utils.d.ts +41 -0
  43. package/dist/types/widgets/error/error.d.ts +10 -0
  44. package/dist/types/widgets/formula/components/item.d.ts +3 -0
  45. package/dist/types/widgets/formula/components/prefix.d.ts +3 -0
  46. package/dist/types/widgets/formula/components/row.d.ts +3 -0
  47. package/dist/types/widgets/formula/components/series.d.ts +3 -0
  48. package/dist/types/widgets/formula/components/suffix.d.ts +3 -0
  49. package/dist/types/widgets/formula/components/value.d.ts +3 -0
  50. package/dist/types/widgets/formula/config.d.ts +11 -0
  51. package/dist/types/widgets/formula/formula-ui.d.ts +3 -0
  52. package/dist/types/widgets/histogram/config.d.ts +8 -4
  53. package/dist/types/widgets/loader/loader.d.ts +22 -0
  54. package/dist/types/widgets/loader/utils.d.ts +26 -3
  55. package/dist/types/widgets/markdown/config.d.ts +10 -0
  56. package/dist/types/widgets/markdown/markdown-ui.d.ts +7 -0
  57. package/dist/types/widgets/markdown/markdown.d.ts +3 -0
  58. package/dist/types/widgets/note/note.d.ts +10 -0
  59. package/dist/types/widgets/pie/config.d.ts +8 -4
  60. package/dist/types/widgets/range/components/range-item.d.ts +3 -0
  61. package/dist/types/widgets/range/config.d.ts +5 -0
  62. package/dist/types/widgets/range/range-ui.d.ts +3 -0
  63. package/dist/types/widgets/scatterplot/config.d.ts +7 -3
  64. package/dist/types/widgets/selection-summary/selection-summary.d.ts +11 -0
  65. package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +10 -0
  66. package/dist/types/widgets/spread/components/max-value.d.ts +3 -0
  67. package/dist/types/widgets/spread/components/min-value.d.ts +3 -0
  68. package/dist/types/widgets/spread/components/separator.d.ts +3 -0
  69. package/dist/types/widgets/spread/config.d.ts +11 -0
  70. package/dist/types/widgets/spread/spread-ui.d.ts +3 -0
  71. package/dist/types/widgets/subheader/subheader.d.ts +11 -0
  72. package/dist/types/widgets/table/config.d.ts +8 -3
  73. package/dist/types/widgets/table/hooks/use-pagination.d.ts +11 -3
  74. package/dist/types/widgets/table/hooks/use-selection.d.ts +11 -2
  75. package/dist/types/widgets/table/hooks/use-sort.d.ts +11 -3
  76. package/dist/types/widgets/timeseries/config.d.ts +8 -4
  77. package/dist/types/widgets/utils/chart-config/download-config.d.ts +3 -0
  78. package/dist/types/widgets/{_shared → utils}/chart-config/index.d.ts +2 -0
  79. package/dist/types/widgets/{_shared → utils}/chart-config/option-builders.d.ts +1 -1
  80. package/dist/types/widgets/utils/formatter.d.ts +1 -0
  81. package/dist/types/widgets/utils/index.d.ts +7 -0
  82. package/dist/types/widgets/wrapper/components/actions.d.ts +3 -0
  83. package/dist/types/widgets/wrapper/components/options.d.ts +3 -0
  84. package/dist/types/widgets/wrapper/components/title.d.ts +3 -0
  85. package/dist/types/widgets/wrapper/wrapper-ui.d.ts +14 -0
  86. package/dist/types/widgets/wrapper/wrapper.d.ts +14 -0
  87. package/dist/use-widget-ref-wtFLDFCD.js.map +1 -1
  88. package/dist/utils-BOhInag6.js.map +1 -1
  89. package/dist/widgets/actions.js +651 -628
  90. package/dist/widgets/actions.js.map +1 -1
  91. package/dist/widgets/bar.js +66 -86
  92. package/dist/widgets/bar.js.map +1 -1
  93. package/dist/widgets/category.js +21 -21
  94. package/dist/widgets/category.js.map +1 -1
  95. package/dist/widgets/echart.js.map +1 -1
  96. package/dist/widgets/formula.js +54 -54
  97. package/dist/widgets/formula.js.map +1 -1
  98. package/dist/widgets/histogram.js +45 -65
  99. package/dist/widgets/histogram.js.map +1 -1
  100. package/dist/widgets/loader.js.map +1 -1
  101. package/dist/widgets/markdown.js.map +1 -1
  102. package/dist/widgets/pie.js +122 -99
  103. package/dist/widgets/pie.js.map +1 -1
  104. package/dist/widgets/range.js +23 -22
  105. package/dist/widgets/range.js.map +1 -1
  106. package/dist/widgets/scatterplot.js +39 -59
  107. package/dist/widgets/scatterplot.js.map +1 -1
  108. package/dist/widgets/selection-summary.js.map +1 -1
  109. package/dist/widgets/skeleton-loader.js.map +1 -1
  110. package/dist/widgets/spread.js +40 -41
  111. package/dist/widgets/spread.js.map +1 -1
  112. package/dist/widgets/subheader.js.map +1 -1
  113. package/dist/widgets/table.js.map +1 -1
  114. package/dist/widgets/timeseries.js +39 -59
  115. package/dist/widgets/timeseries.js.map +1 -1
  116. package/dist/widgets/utils.js +31 -0
  117. package/dist/widgets/utils.js.map +1 -0
  118. package/dist/widgets/wrapper.js.map +1 -1
  119. package/package.json +5 -1
  120. package/src/components/basemaps/basemaps.tsx +20 -0
  121. package/src/components/geolocation-controls/geolocation-controls.tsx +11 -0
  122. package/src/components/lasso-tool/lasso-tool-inline.tsx +17 -0
  123. package/src/components/lasso-tool/lasso-tool.tsx +21 -0
  124. package/src/components/list-data/list-data.tsx +16 -0
  125. package/src/components/measurement-tools/measurement-tools.tsx +20 -0
  126. package/src/components/smart-tooltip/smart-tooltip.tsx +17 -0
  127. package/src/components/tooltip/tooltip.tsx +13 -0
  128. package/src/components/zoom-controls/zoom-controls.tsx +16 -0
  129. package/src/hooks/use-widget-ref.ts +4 -4
  130. package/src/widgets/README.md +10 -10
  131. package/src/widgets/actions/download/download.tsx +11 -0
  132. package/src/widgets/actions/download/exports.tsx +15 -0
  133. package/src/widgets/actions/fullscreen/fullscreen.tsx +13 -0
  134. package/src/widgets/actions/index.ts +1 -0
  135. package/src/widgets/actions/relative-data/relative-data.test.tsx +62 -1
  136. package/src/widgets/actions/relative-data/relative-data.tsx +62 -39
  137. package/src/widgets/bar/config.ts +12 -20
  138. package/src/widgets/bar/style.ts +1 -1
  139. package/src/widgets/category/category-ui.tsx +4 -2
  140. package/src/widgets/category/components/category-bar.tsx +3 -0
  141. package/src/widgets/category/components/category-legend.tsx +3 -0
  142. package/src/widgets/category/components/category-row-multi.tsx +3 -0
  143. package/src/widgets/category/components/category-row-other.tsx +3 -0
  144. package/src/widgets/category/components/category-row-single.tsx +3 -0
  145. package/src/widgets/category/config.ts +11 -0
  146. package/src/widgets/echart/echart-ui.tsx +7 -0
  147. package/src/widgets/echart/echart.tsx +6 -0
  148. package/src/widgets/echart/options.ts +7 -0
  149. package/src/widgets/echart/types.ts +1 -0
  150. package/src/widgets/echart/utils.ts +41 -0
  151. package/src/widgets/error/error.tsx +10 -0
  152. package/src/widgets/formula/components/item.tsx +3 -0
  153. package/src/widgets/formula/components/prefix.tsx +3 -0
  154. package/src/widgets/formula/components/row.tsx +3 -0
  155. package/src/widgets/formula/components/series.tsx +3 -0
  156. package/src/widgets/formula/components/suffix.tsx +3 -0
  157. package/src/widgets/formula/components/value.tsx +4 -2
  158. package/src/widgets/formula/config.ts +11 -0
  159. package/src/widgets/formula/formula-ui.tsx +3 -0
  160. package/src/widgets/histogram/config.ts +11 -20
  161. package/src/widgets/histogram/style.ts +1 -1
  162. package/src/widgets/loader/loader.tsx +22 -0
  163. package/src/widgets/loader/utils.ts +26 -3
  164. package/src/widgets/markdown/config.ts +10 -0
  165. package/src/widgets/markdown/markdown-ui.tsx +7 -0
  166. package/src/widgets/markdown/markdown.tsx +3 -0
  167. package/src/widgets/note/note.tsx +10 -0
  168. package/src/widgets/pie/config.ts +85 -30
  169. package/src/widgets/pie/style.ts +1 -1
  170. package/src/widgets/range/components/range-item.tsx +5 -2
  171. package/src/widgets/range/config.ts +5 -0
  172. package/src/widgets/range/range-ui.tsx +3 -0
  173. package/src/widgets/scatterplot/config.ts +11 -20
  174. package/src/widgets/scatterplot/style.ts +1 -1
  175. package/src/widgets/selection-summary/selection-summary.tsx +11 -0
  176. package/src/widgets/skeleton-loader/skeleton-loader.tsx +10 -0
  177. package/src/widgets/spread/components/max-value.tsx +4 -2
  178. package/src/widgets/spread/components/min-value.tsx +4 -2
  179. package/src/widgets/spread/components/separator.tsx +3 -0
  180. package/src/widgets/spread/config.ts +11 -0
  181. package/src/widgets/spread/spread-ui.tsx +3 -0
  182. package/src/widgets/subheader/subheader.tsx +11 -0
  183. package/src/widgets/table/config.ts +8 -3
  184. package/src/widgets/table/hooks/use-pagination.ts +11 -3
  185. package/src/widgets/table/hooks/use-selection.ts +11 -2
  186. package/src/widgets/table/hooks/use-sort.ts +11 -3
  187. package/src/widgets/timeseries/config.ts +11 -20
  188. package/src/widgets/timeseries/style.ts +1 -1
  189. package/src/widgets/utils/chart-config/download-config.ts +22 -0
  190. package/src/widgets/{_shared → utils}/chart-config/index.ts +4 -0
  191. package/src/widgets/{_shared → utils}/chart-config/option-builders.ts +1 -1
  192. package/src/widgets/utils/formatter.ts +1 -0
  193. package/src/widgets/utils/index.ts +26 -0
  194. package/src/widgets/wrapper/components/actions.tsx +3 -0
  195. package/src/widgets/wrapper/components/options.tsx +3 -0
  196. package/src/widgets/wrapper/components/title.tsx +3 -0
  197. package/src/widgets/wrapper/wrapper-ui.tsx +14 -0
  198. package/src/widgets/wrapper/wrapper.tsx +14 -0
  199. package/dist/styles-CAroD5Rc.js +0 -123
  200. package/dist/styles-CAroD5Rc.js.map +0 -1
  201. /package/dist/types/widgets/{_shared → utils}/chart-config/config-factory.d.ts +0 -0
  202. /package/dist/types/widgets/{_shared → utils}/chart-config/csv-modifiers.d.ts +0 -0
  203. /package/dist/types/widgets/{_shared → utils}/chart-config/option-builders.test.d.ts +0 -0
  204. /package/dist/types/widgets/{_shared → utils}/skeleton/index.d.ts +0 -0
  205. /package/dist/types/widgets/{_shared → utils}/skeleton/styles.d.ts +0 -0
  206. /package/src/widgets/{_shared → utils}/chart-config/config-factory.ts +0 -0
  207. /package/src/widgets/{_shared → utils}/chart-config/csv-modifiers.ts +0 -0
  208. /package/src/widgets/{_shared → utils}/chart-config/option-builders.test.ts +0 -0
  209. /package/src/widgets/{_shared → utils}/skeleton/index.ts +0 -0
  210. /package/src/widgets/{_shared → utils}/skeleton/styles.ts +0 -0
@@ -1,51 +1,31 @@
1
- import { jsxs as g, jsx as r } from "react/jsx-runtime";
2
- import { c as w } 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-CzDt8oSK.js";
6
6
  import "zustand/shallow";
7
- import { g as _ } from "../options-D9wflre6.js";
8
- import { m as S } from "../utils-BOhInag6.js";
9
- import { f as v, c as L, a as C, n as u, b as T, d as I, e as N } from "../styles-CAroD5Rc.js";
7
+ import { g as k } from "../options-D9wflre6.js";
8
+ import { m as w } from "../utils-BOhInag6.js";
9
+ import { g as _, h as S, i as v, n as h, d as C, e as L, j as I, c as j } from "../styles-C_8vOEep.js";
10
10
  import { Box as s, Skeleton as o } from "@mui/material";
11
- import "@mui/icons-material";
12
- import "react-markdown";
13
- import { d, a as h } from "../exports-Cr43OCul.js";
14
- import "../lasso-tool-BYbxrJ-7.js";
15
- import "../cjs-D4KH3azB.js";
16
- import "@dnd-kit/core";
17
- import "@dnd-kit/sortable";
18
- import "@dnd-kit/utilities";
19
- function ee({
20
- refUI: e
21
- }) {
22
- return [{
23
- ...d,
24
- modifier: () => d.modifier(e)
25
- }, {
26
- ...h,
27
- modifier: async (t) => {
28
- const n = v(t);
29
- return h.modifier(n);
30
- }
31
- }];
32
- }
33
- function te(e) {
11
+ const H = _(I);
12
+ function J(e) {
34
13
  return {
35
14
  type: "bar",
36
- option: S(_(e), A(e))
15
+ option: w(k(e), A(e)),
16
+ formatter: e.formatter
37
17
  };
38
18
  }
39
19
  function A({
40
20
  data: e = [],
41
- theme: t,
42
- formatter: n
21
+ theme: n,
22
+ formatter: i
43
23
  }) {
44
24
  const f = (e?.length ?? 0) > 1;
45
25
  let l = 0, c = 1;
46
26
  return {
47
- legend: I(f),
48
- grid: T(f, t),
27
+ legend: L(f),
28
+ grid: C(f, n),
49
29
  xAxis: {
50
30
  type: "category",
51
31
  axisLine: {
@@ -55,24 +35,24 @@ function A({
55
35
  show: !1
56
36
  },
57
37
  axisLabel: {
58
- padding: [parseInt(t.spacing(0.5)), 0, 0, 0],
38
+ padding: [parseInt(n.spacing(0.5)), 0, 0, 0],
59
39
  margin: 0
60
40
  }
61
41
  },
62
42
  yAxis: {
63
43
  type: "value",
64
- min: (i) => (l = i.min < 0 ? u(i.min) : 0, l),
65
- max: (i) => (c = i.max <= 0 ? 1 : u(i.max), c),
44
+ min: (t) => (l = t.min < 0 ? h(t.min) : 0, l),
45
+ max: (t) => (c = t.max <= 0 ? 1 : h(t.max), c),
66
46
  axisLabel: {
67
- fontSize: t.typography.overlineDelicate.fontSize,
68
- fontFamily: t.typography.overlineDelicate.fontFamily,
69
- margin: parseInt(t.spacing(1)),
47
+ fontSize: n.typography.overlineDelicate.fontSize,
48
+ fontFamily: n.typography.overlineDelicate.fontFamily,
49
+ margin: parseInt(n.spacing(1)),
70
50
  show: !0,
71
51
  showMaxLabel: !0,
72
52
  showMinLabel: !0,
73
53
  verticalAlign: "bottom",
74
54
  inside: !0,
75
- formatter: (i) => i !== c && i !== l || i === 0 ? "" : n ? n(i) : String(i)
55
+ formatter: (t) => t !== c && t !== l || t === 0 ? "" : i ? i(t) : String(t)
76
56
  },
77
57
  axisLine: {
78
58
  show: !1
@@ -83,24 +63,24 @@ function A({
83
63
  splitLine: {
84
64
  show: !0,
85
65
  lineStyle: {
86
- color: t.palette.black[4]
66
+ color: n.palette.black[4]
87
67
  }
88
68
  }
89
69
  },
90
70
  tooltip: {
91
- position: C(t),
92
- formatter: L((i) => {
93
- const m = i.value, x = i.dimensionNames?.[i.encode?.y?.at(0) ?? 1], p = m[x ?? ""], y = typeof p == "number" && n ? n(p) : p ?? "", b = typeof i.marker == "string" ? i.marker : "", k = i.seriesName ? `${i.seriesName}: ` : "";
71
+ position: v(n),
72
+ formatter: S((t) => {
73
+ const g = t.value, u = t.dimensionNames?.[t.encode?.y?.at(0) ?? 1], m = g[u ?? ""], x = typeof m == "number" && i ? i(m) : m ?? "", d = typeof t.marker == "string" ? t.marker : "", y = t.seriesName ? `${t.seriesName}: ` : "";
94
74
  return {
95
- name: i.name ?? "",
96
- seriesName: k,
97
- marker: b,
98
- value: y
75
+ name: t.name ?? "",
76
+ seriesName: y,
77
+ marker: d,
78
+ value: x
99
79
  };
100
80
  })
101
81
  },
102
- series: e.map((i, m) => ({
103
- datasetIndex: m,
82
+ series: e.map((t, g) => ({
83
+ datasetIndex: g,
104
84
  type: "bar",
105
85
  barMaxWidth: 100,
106
86
  emphasis: {
@@ -109,7 +89,7 @@ function A({
109
89
  }))
110
90
  };
111
91
  }
112
- const a = {
92
+ const r = {
113
93
  skeleton: {
114
94
  item: {
115
95
  flex: 1,
@@ -123,7 +103,7 @@ const a = {
123
103
  }
124
104
  },
125
105
  graph: {
126
- ...N.graph,
106
+ ...j.graph,
127
107
  grid: {
128
108
  display: "flex",
129
109
  justifyContent: "space-between",
@@ -134,58 +114,58 @@ const a = {
134
114
  }
135
115
  }
136
116
  };
137
- function ie() {
138
- const e = w(2);
139
- let t;
140
- e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ g(s, { sx: a.skeleton.graph.grid, children: [
141
- /* @__PURE__ */ r(o, { sx: a.skeleton.item, variant: "rectangular", height: "20%" }),
142
- /* @__PURE__ */ r(o, { sx: a.skeleton.item, variant: "rectangular", height: "40%" }),
143
- /* @__PURE__ */ r(o, { sx: a.skeleton.item, variant: "rectangular", height: "60%" }),
144
- /* @__PURE__ */ r(o, { sx: a.skeleton.item, variant: "rectangular", height: "20%" }),
145
- /* @__PURE__ */ r(o, { sx: a.skeleton.item, variant: "rectangular", height: "80%" })
146
- ] }), e[0] = t) : t = e[0];
117
+ function K() {
118
+ const e = b(2);
147
119
  let n;
148
- return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (n = /* @__PURE__ */ g(s, { sx: a.skeleton.graph.container, children: [
149
- t,
150
- /* @__PURE__ */ r(s, { sx: {
120
+ e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (n = /* @__PURE__ */ p(s, { sx: r.skeleton.graph.grid, children: [
121
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
122
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "40%" }),
123
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "60%" }),
124
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
125
+ /* @__PURE__ */ a(o, { sx: r.skeleton.item, variant: "rectangular", height: "80%" })
126
+ ] }), e[0] = n) : n = e[0];
127
+ let i;
128
+ return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ p(s, { sx: r.skeleton.graph.container, children: [
129
+ n,
130
+ /* @__PURE__ */ a(s, { sx: {
151
131
  display: "flex",
152
132
  alignItems: "center",
153
- gap: F,
154
- height: D
133
+ gap: D,
134
+ height: T
155
135
  }, children: Array(2).fill(0).map(M) })
156
- ] }), e[1] = n) : n = e[1], n;
136
+ ] }), e[1] = i) : i = e[1], i;
157
137
  }
158
- function M(e, t) {
159
- return /* @__PURE__ */ g(s, { sx: {
138
+ function M(e, n) {
139
+ return /* @__PURE__ */ p(s, { sx: {
160
140
  display: "flex",
161
141
  alignItems: "center",
162
- gap: j
142
+ gap: N
163
143
  }, children: [
164
- /* @__PURE__ */ r(o, { variant: "circular", width: 8, height: 8 }),
165
- /* @__PURE__ */ r(o, { width: 48, height: 8 })
166
- ] }, `skeleton-${t}`);
144
+ /* @__PURE__ */ a(o, { variant: "circular", width: 8, height: 8 }),
145
+ /* @__PURE__ */ a(o, { width: 48, height: 8 })
146
+ ] }, `skeleton-${n}`);
167
147
  }
168
- function j(e) {
148
+ function N(e) {
169
149
  const {
170
- spacing: t
150
+ spacing: n
171
151
  } = e;
172
- return t(1.5);
152
+ return n(1.5);
173
153
  }
174
- function D(e) {
154
+ function T(e) {
175
155
  const {
176
- spacing: t
156
+ spacing: n
177
157
  } = e;
178
- return t(5);
158
+ return n(5);
179
159
  }
180
- function F(e) {
160
+ function D(e) {
181
161
  const {
182
- spacing: t
162
+ spacing: n
183
163
  } = e;
184
- return t(2);
164
+ return n(2);
185
165
  }
186
166
  export {
187
- ie as BarSkeleton,
188
- te as barConfig,
189
- ee as barDownloadConfig
167
+ K as BarSkeleton,
168
+ J as barConfig,
169
+ H as barDownloadConfig
190
170
  };
191
171
  //# 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 createTooltipFormatter,\n niceNum,\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 let niceMin = 0\n let niceMax = 1\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: {\n type: 'value' as const,\n min: (extent: { min: number }) => {\n niceMin = extent.min < 0 ? niceNum(extent.min) : 0\n return niceMin\n },\n max: (extent: { min: number; max: number }) => {\n niceMax = extent.max <= 0 ? 1 : niceNum(extent.max)\n return niceMax\n },\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' as const,\n inside: true,\n formatter: (value: number) => {\n if (value !== niceMax && value !== niceMin) return ''\n if (value === 0) return ''\n return formatter ? formatter(value) : String(value)\n },\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 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={`skeleton-${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","niceMin","niceMax","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisTick","axisLabel","padding","parseInt","spacing","margin","yAxis","min","extent","niceNum","max","fontSize","typography","overlineDelicate","fontFamily","showMaxLabel","showMinLabel","verticalAlign","inside","value","String","splitLine","lineStyle","color","palette","black","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","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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"}
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 createChartDownloadConfig,\n niceNum,\n} from '../utils/chart-config'\n\nexport const barDownloadConfig = createChartDownloadConfig<BarWidgetData>(\n flattenObjectArrayToCSV,\n)\n\n/**\n * Generates ECharts configuration for bar chart widgets (vertical and horizontal), including axis, tooltip, legend, and series options styled with the CARTO theme.\n *\n * @param props - Bar chart configuration including data and theme.\n * @returns Widget config with ECharts option object.\n */\nexport function barConfig(props: BarConfig): BarWidgetConfig {\n return {\n type: 'bar',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n formatter: props.formatter,\n }\n}\n\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: BarConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n let niceMin = 0\n let niceMax = 1\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: {\n type: 'value' as const,\n min: (extent: { min: number }) => {\n niceMin = extent.min < 0 ? niceNum(extent.min) : 0\n return niceMin\n },\n max: (extent: { min: number; max: number }) => {\n niceMax = extent.max <= 0 ? 1 : niceNum(extent.max)\n return niceMax\n },\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' as const,\n inside: true,\n formatter: (value: number) => {\n if (value !== niceMax && value !== niceMin) return ''\n if (value === 0) return ''\n return formatter ? formatter(value) : String(value)\n },\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 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 '../utils/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={`skeleton-${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","createChartDownloadConfig","flattenObjectArrayToCSV","barConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","formatter","data","theme","hasLegend","length","niceMin","niceMax","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisTick","axisLabel","padding","parseInt","spacing","margin","yAxis","min","extent","niceNum","max","fontSize","typography","overlineDelicate","fontFamily","showMaxLabel","showMinLabel","verticalAlign","inside","value","String","splitLine","lineStyle","color","palette","black","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","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":";;;;;;;;;;AAgBO,MAAMA,IAAoBC,EAC/BC,CACF;AAQO,SAASC,EAAUC,GAAmC;AAC3D,SAAO;AAAA,IACLC,MAAM;AAAA,IACNC,QAAQC,EAAwBC,EAAiBJ,CAAK,GAAGK,EAAUL,CAAK,CAAC;AAAA,IACzEM,WAAWN,EAAMM;AAAAA,EAAAA;AAErB;AAEA,SAASD,EAAU;AAAA,EACjBE,MAAAA,IAAO,CAAA;AAAA,EACPC,OAAAA;AAAAA,EACAF,WAAAA;AACS,GAAuB;AAChC,QAAMG,KAAaF,GAAMG,UAAU,KAAK;AAExC,MAAIC,IAAU,GACVC,IAAU;AAEd,SAAO;AAAA,IACLC,QAAQC,EAAkBL,CAAS;AAAA,IACnCM,MAAMC,EAAgBP,GAAWD,CAAK;AAAA,IACtCS,OAAO;AAAA,MACLhB,MAAM;AAAA,MACNiB,UAAU;AAAA,QACRC,MAAM;AAAA,MAAA;AAAA,MAERC,UAAU;AAAA,QACRD,MAAM;AAAA,MAAA;AAAA,MAERE,WAAW;AAAA,QACTC,SAAS,CAACC,SAASf,EAAMgB,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,QAC/CC,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,IAEFC,OAAO;AAAA,MACLzB,MAAM;AAAA,MACN0B,KAAKA,CAACC,OACJjB,IAAUiB,EAAOD,MAAM,IAAIE,EAAQD,EAAOD,GAAG,IAAI,GAC1ChB;AAAAA,MAETmB,KAAKA,CAACF,OACJhB,IAAUgB,EAAOE,OAAO,IAAI,IAAID,EAAQD,EAAOE,GAAG,GAC3ClB;AAAAA,MAETS,WAAW;AAAA,QACTU,UAAUvB,EAAMwB,WAAWC,iBAAiBF;AAAAA,QAC5CG,YAAY1B,EAAMwB,WAAWC,iBAAiBC;AAAAA,QAC9CT,QAAQF,SAASf,EAAMgB,QAAQ,CAAC,CAAC;AAAA,QACjCL,MAAM;AAAA,QACNgB,cAAc;AAAA,QACdC,cAAc;AAAA,QACdC,eAAe;AAAA,QACfC,QAAQ;AAAA,QACRhC,WAAWA,CAACiC,MACNA,MAAU3B,KAAW2B,MAAU5B,KAC/B4B,MAAU,IAAU,KACjBjC,IAAYA,EAAUiC,CAAK,IAAIC,OAAOD,CAAK;AAAA,MACpD;AAAA,MAEFrB,UAAU;AAAA,QACRC,MAAM;AAAA,MAAA;AAAA,MAERC,UAAU;AAAA,QACRD,MAAM;AAAA,MAAA;AAAA,MAERsB,WAAW;AAAA,QACTtB,MAAM;AAAA,QACNuB,WAAW;AAAA,UACTC,OAAOnC,EAAMoC,QAAQC,MAAM,CAAC;AAAA,QAAA;AAAA,MAC9B;AAAA,IACF;AAAA,IAEFC,SAAS;AAAA,MACPC,UAAUC,EAAwBxC,CAAK;AAAA,MACvCF,WAAW2C,EAAwBC,CAAAA,MAAS;AAC1C,cAAMX,IAAQW,EAAKX,OACbY,IAAQD,EAAKE,iBAAiBF,EAAKG,QAAQC,GAAGC,GAAG,CAAC,KAAK,CAAC,GACxDC,IAASjB,EAAMY,KAAS,EAAE,GAE1BM,IACJ,OAAOD,KAAW,YAAYlD,IAC1BA,EAAUkD,CAAM,IACfA,KAAU,IAEXE,IAAS,OAAOR,EAAKQ,UAAW,WAAWR,EAAKQ,SAAS,IACzDC,IAAaT,EAAKS,aAAa,GAAGT,EAAKS,UAAU,OAAO;AAG9D,eAAO;AAAA,UAAEC,MAFIV,EAAKU,QAAQ;AAAA,UAEXD,YAAAA;AAAAA,UAAYD,QAAAA;AAAAA,UAAQnB,OAAOkB;AAAAA,QAAAA;AAAAA,MAC5C,CAAC;AAAA,IAAA;AAAA,IAEHI,QAAQtD,EAAKuD,IAAI,CAACC,GAAYZ,OAAmB;AAAA,MAC/Ca,cAAcb;AAAAA,MACdlD,MAAM;AAAA,MACNgE,aAAa;AAAA,MACbC,UAAU;AAAA,QACRC,OAAO;AAAA,MAAA;AAAA,IACT,EACA;AAAA,EAAA;AAEN;AC3HO,MAAMC,IAAS;AAAA,EACpBC,UAAU;AAAA,IACRnB,MAAM;AAAA,MACJoB,MAAM;AAAA,MACNC,UAAUA,CAAC;AAAA,QAAE/C,SAAAA;AAAAA,MAAAA,MAAcA,EAAQ,EAAE;AAAA,MAErC,SAAS;AAAA,QACPgD,YAAYA,CAAC;AAAA,UAAEhD,SAAAA;AAAAA,QAAAA,MAAcA,EAAQ,CAAC;AAAA,MAAA;AAAA,IACxC;AAAA,IAEFiD,OAAO;AAAA,MACL,GAAGC,EAAmBD;AAAAA,MACtB1D,MAAM;AAAA,QACJ4D,SAAS;AAAA,QACTC,gBAAgB;AAAA,QAChBN,MAAM;AAAA,QACNO,YAAY;AAAA,QACZC,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EAUJ;AACF;AC7BO,SAAAC,IAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAC;AAAA,EAAAF,EAAA,CAAA,MAAAG,uBAAAC,IAAA,2BAAA,KAGDF,sBAACG,GAAA,EAAQ,IAAAjB,EAAMC,SAASI,MAAM1D,MAC5B,UAAA;AAAA,IAAA,gBAAAuE,EAACC,GAAA,EACK,IAAAnB,EAAMC,SAASnB,MACX,SAAA,eACD,QAAA,MAAA,CAAK;AAAA,IAEd,gBAAAoC,EAACC,KACK,IAAAnB,EAAMC,SAASnB,MACX,SAAA,eACD,QAAA,MAAA,CAAK;AAAA,IAEd,gBAAAoC,EAACC,KACK,IAAAnB,EAAMC,SAASnB,MACX,SAAA,eACD,QAAA,MAAA,CAAK;AAAA,IAEd,gBAAAoC,EAACC,KACK,IAAAnB,EAAMC,SAASnB,MACX,SAAA,eACD,QAAA,MAAA,CAAK;AAAA,IAEd,gBAAAoC,EAACC,KACK,IAAAnB,EAAMC,SAASnB,MACX,SAAA,eACD,QAAA,MAAA,CAAK;AAAA,EAAA,GAEhB,GAAM8B,OAAAE,KAAAA,IAAAF,EAAA,CAAA;AAAA,MAAAQ;AAAA,SAAAR,EAAA,CAAA,MAAAG,uBAAAC,IAAA,2BAAA,KA3BRI,sBAACH,GAAA,EAAQ,IAAAjB,EAAMC,SAASI,MAAMgB,WAC5BP,UAAAA;AAAAA,IAAAA;AAAAA,IA2BA,gBAAAI,EAACD,KACK,IAAA;AAAA,MAAAV,SACO;AAAA,MAAME,YACH;AAAA,MAAQa,KACfC;AAAAA,MAA2BC,QACxBC;AAAAA,IAAAA,GAGTC,gBAAM,CAAC,EAACC,KACD,CAAC,EAACjC,IACHkC,CAYJ,EAAA,CACL;AAAA,EAAA,GACF,GAAMhB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GApDNQ;AAoDM;AAtDH,SAAAQ,EAAAjC,GAAAkC,GAAA;AAAA,SAyCK,gBAAAC,EAACb,KAEK,IAAA;AAAA,IAAAV,SACO;AAAA,IAAME,YACH;AAAA,IAAQa,KACfS;AAAAA,EAAAA,GAGP,UAAA;AAAA,IAAA,gBAAAb,EAACC,KAAiB,SAAA,YAAkB,OAAA,GAAW,QAAA,GAAC;AAAA,IAChD,gBAAAD,EAACC,GAAA,EAAgB,OAAA,IAAY,QAAA,EAAA,CAAC;AAAA,EAAA,EAAA,GARzB,YAAYU,CAAC,EASpB;AAAM;AAnDX,SAAAE,EAAAjB,GAAA;AA8Ce,QAAA;AAAA,IAAA1D,SAAA4E;AAAAA,EAAAA,IAAAlB;AAAW,SAAK1D,EAAQ,GAAG;AAAC;AA9C3C,SAAAqE,EAAAX,GAAA;AAmCY,QAAA;AAAA,IAAA1D,SAAA6E;AAAAA,EAAAA,IAAAnB;AAAW,SAAK1D,EAAQ,CAAC;AAAC;AAnCtC,SAAAmE,EAAAT,GAAA;AAkCS,QAAA;AAAA,IAAA1D,SAAAA;AAAAA,EAAAA,IAAA0D;AAAW,SAAK1D,EAAQ,CAAC;AAAC;"}
@@ -4,6 +4,7 @@ import { Box as b, Typography as T, useTheme as te, Skeleton as K } from "@mui/m
4
4
  import { u as R } from "../widget-store-CzDt8oSK.js";
5
5
  import { useShallow as D } from "zustand/shallow";
6
6
  import { useState as oe } from "react";
7
+ import { d as le } from "../formatter-B1Xh8XDH.js";
7
8
  import "@mui/icons-material";
8
9
  import "react-markdown";
9
10
  import { d as Y, a as Q } from "../exports-Cr43OCul.js";
@@ -163,7 +164,7 @@ function Z(o) {
163
164
  let a;
164
165
  return e[4] !== n ? (a = /* @__PURE__ */ m(b, { sx: d.bar, children: /* @__PURE__ */ m(b, { sx: n }) }), e[4] = n, e[5] = a) : a = e[5], a;
165
166
  }
166
- function le(o) {
167
+ function re(o) {
167
168
  const e = V(23), {
168
169
  name: t,
169
170
  value: r,
@@ -197,7 +198,7 @@ function le(o) {
197
198
  w
198
199
  ] }), e[18] = u, e[19] = y, e[20] = C, e[21] = w, e[22] = v) : v = e[22], v;
199
200
  }
200
- function re(o) {
201
+ function ne(o) {
201
202
  const e = V(25), {
202
203
  name: t,
203
204
  values: r,
@@ -231,7 +232,7 @@ function re(o) {
231
232
  x
232
233
  ] }), e[20] = u, e[21] = y, e[22] = h, e[23] = x, e[24] = C) : C = e[24], C;
233
234
  }
234
- function ne(o) {
235
+ function ie(o) {
235
236
  const e = V(10), {
236
237
  hiddenCount: t,
237
238
  otherLabel: r,
@@ -254,7 +255,7 @@ function ne(o) {
254
255
  a
255
256
  ] }), e[7] = n, e[8] = a, e[9] = u) : u = e[9], u;
256
257
  }
257
- function ie(o) {
258
+ function se(o) {
258
259
  const e = V(7), {
259
260
  series: t,
260
261
  colors: r
@@ -276,8 +277,7 @@ function ie(o) {
276
277
  let c;
277
278
  return e[5] !== l ? (c = /* @__PURE__ */ m(b, { sx: d.legend, children: l }), e[5] = l, e[6] = c) : c = e[6], c;
278
279
  }
279
- const se = (o) => o.toString();
280
- function Le(o) {
280
+ function We(o) {
281
281
  const e = V(55), {
282
282
  id: t
283
283
  } = o, r = te();
@@ -304,7 +304,7 @@ function Le(o) {
304
304
  const w = R(D(C));
305
305
  let v;
306
306
  e[14] !== t ? (v = (f) => f.getWidget(t)?.max, e[14] = t, e[15] = v) : v = e[15];
307
- const E = R(D(v)), P = c ?? se, S = s ?? [], [G] = oe(u ? 40 * (S.length || 1) * u : void 0), X = Object.values(r.palette.qualitative.bold), M = S.length > 0 ? S.map((f, U) => f.color ?? X[U % X.length] ?? r.palette.secondary.main) : [r.palette.secondary.main];
307
+ const E = R(D(v)), P = c ?? le, S = s ?? [], [G] = oe(u ? 40 * (S.length || 1) * u : void 0), X = Object.values(r.palette.qualitative.bold), M = S.length > 0 ? S.map((f, U) => f.color ?? X[U % X.length] ?? r.palette.secondary.main) : [r.palette.secondary.main];
308
308
  let B, _, L, W, F, I, j, A;
309
309
  if (e[16] !== M || e[17] !== n || e[18] !== P || e[19] !== E || e[20] !== G || e[21] !== u || e[22] !== x || e[23] !== w || e[24] !== S) {
310
310
  j = /* @__PURE__ */ Symbol.for("react.early_return_sentinel");
@@ -326,7 +326,7 @@ function Le(o) {
326
326
  e[34] !== G || e[35] !== J ? (W = {
327
327
  maxHeight: G,
328
328
  overflow: J
329
- }, e[34] = G, e[35] = J, e[36] = W) : W = e[36], F = ee ? z.map(($) => /* @__PURE__ */ m(re, { name: $.name, values: $.values, maxValue: U, colors: M, formatter: P, onClick: x, selected: w?.($.name) ?? !0 }, $.name)) : z.map(($) => /* @__PURE__ */ m(le, { name: $.name, value: $.values[0] ?? 0, selected: w?.($.name) ?? !0, maxValue: U, color: M[0], formatter: P, onClick: x }, $.name));
329
+ }, e[34] = G, e[35] = J, e[36] = W) : W = e[36], F = ee ? z.map(($) => /* @__PURE__ */ m(ne, { name: $.name, values: $.values, maxValue: U, colors: M, formatter: P, onClick: x, selected: w?.($.name) ?? !0 }, $.name)) : z.map(($) => /* @__PURE__ */ m(re, { name: $.name, value: $.values[0] ?? 0, selected: w?.($.name) ?? !0, maxValue: U, color: M[0], formatter: P, onClick: x }, $.name));
330
330
  }
331
331
  e[16] = M, e[17] = n, e[18] = P, e[19] = E, e[20] = G, e[21] = u, e[22] = x, e[23] = w, e[24] = S, e[25] = B, e[26] = _, e[27] = L, e[28] = W, e[29] = F, e[30] = I, e[31] = j, e[32] = A;
332
332
  } else
@@ -334,14 +334,14 @@ function Le(o) {
334
334
  if (j !== /* @__PURE__ */ Symbol.for("react.early_return_sentinel"))
335
335
  return j;
336
336
  let O;
337
- e[37] !== L || e[38] !== h?.other || e[39] !== h?.otherCount ? (O = L > 0 && /* @__PURE__ */ m(ne, { hiddenCount: L, otherLabel: h?.other, otherCountLabel: h?.otherCount }), e[37] = L, e[38] = h?.other, e[39] = h?.otherCount, e[40] = O) : O = e[40];
337
+ e[37] !== L || e[38] !== h?.other || e[39] !== h?.otherCount ? (O = L > 0 && /* @__PURE__ */ m(ie, { hiddenCount: L, otherLabel: h?.other, otherCountLabel: h?.otherCount }), e[37] = L, e[38] = h?.other, e[39] = h?.otherCount, e[40] = O) : O = e[40];
338
338
  let H;
339
339
  e[41] !== B || e[42] !== W || e[43] !== F || e[44] !== O || e[45] !== A ? (H = /* @__PURE__ */ k(B, { sx: A, style: W, children: [
340
340
  F,
341
341
  O
342
342
  ] }), e[41] = B, e[42] = W, e[43] = F, e[44] = O, e[45] = A, e[46] = H) : H = e[46];
343
343
  let q;
344
- e[47] !== M || e[48] !== S ? (q = S.length > 0 && /* @__PURE__ */ m(ie, { series: S, colors: M }), e[47] = M, e[48] = S, e[49] = q) : q = e[49];
344
+ e[47] !== M || e[48] !== S ? (q = S.length > 0 && /* @__PURE__ */ m(se, { series: S, colors: M }), e[47] = M, e[48] = S, e[49] = q) : q = e[49];
345
345
  let N;
346
346
  return e[50] !== _ || e[51] !== I || e[52] !== H || e[53] !== q ? (N = /* @__PURE__ */ k(_, { sx: I, children: [
347
347
  H,
@@ -369,7 +369,7 @@ function ce({
369
369
  }));
370
370
  }
371
371
  const de = [85, 70, 55, 75, 60];
372
- function We() {
372
+ function Ie() {
373
373
  const o = V(1);
374
374
  let e;
375
375
  return o[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ m(b, { sx: d.list, "aria-label": "Category skeleton", children: Array.from({
@@ -388,7 +388,7 @@ function ue(o, e) {
388
388
  } })
389
389
  ] }, e);
390
390
  }
391
- function Ie({
391
+ function Re({
392
392
  refUI: o,
393
393
  series: e
394
394
  }) {
@@ -415,7 +415,7 @@ function Ie({
415
415
  }
416
416
  }];
417
417
  }
418
- function Re() {
418
+ function De() {
419
419
  return {
420
420
  series: [],
421
421
  maxItems: 10,
@@ -424,13 +424,13 @@ function Re() {
424
424
  }
425
425
  export {
426
426
  Z as CategoryBar,
427
- ie as CategoryLegend,
428
- re as CategoryRowMulti,
429
- ne as CategoryRowOther,
430
- le as CategoryRowSingle,
431
- We as CategorySkeleton,
432
- Le as CategoryUI,
433
- Re as categoryConfig,
434
- Ie as categoryDownloadConfig
427
+ se as CategoryLegend,
428
+ ne as CategoryRowMulti,
429
+ ie as CategoryRowOther,
430
+ re as CategoryRowSingle,
431
+ Ie as CategorySkeleton,
432
+ We as CategoryUI,
433
+ De as categoryConfig,
434
+ Re as categoryDownloadConfig
435
435
  };
436
436
  //# sourceMappingURL=category.js.map
@@ -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}`} 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 _formatter = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.formatter),\n )\n const _series = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.series),\n )\n const data = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.data),\n )\n const maxItems = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.maxItems),\n )\n const labels = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.labels),\n )\n const onRowClick = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.onRowClick),\n )\n const selected = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.selected),\n )\n const max = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.max),\n )\n\n const formatter = _formatter ?? defaultFormatter\n const series = _series ?? []\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.secondary.main,\n )\n : [theme.palette.secondary.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]!}\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} from './types'\n\ninterface CategoryDownloadConfigProps extends ConfigProps {\n series?: CategorySeriesConfig[]\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: 10,\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","getWidget","_formatter","useWidgetStore","useShallow","state_0","_series","state_1","data","state_2","maxItems","state_3","labels","state_4","onRowClick","state_5","state_6","max","maxHeight","useState","qualitativeColors","Object","qualitative","bold","s","secondary","main","T0","T1","t10","t11","t12","t13","t9","Symbol","for","bb0","groupedData","generateGroupedData","Math","flatMap","_temp","visibleData","slice","isMulti","t14","item_0","item_1","other","t15","t16","t17","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\n/**\n * Renders a single horizontal bar fill proportional to its value relative to the maximum.\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\n/**\n * Renders a single-series category row with a label, formatted value, and proportional bar.\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\n/**\n * Renders a multi-series category row with a label and multiple color-coded bars stacked vertically.\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}`} 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\n/**\n * Renders an \"Other\" summary row indicating how many additional categories are hidden beyond `maxItems`.\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\n/**\n * Renders a color-coded legend for multi-series category widgets.\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'\nimport { defaultFormatter } from '../utils/formatter'\n\n/**\n * Renders a category widget displaying horizontal bars for categorical data with support for single and multi-series layouts, selection, and overflow grouping.\n */\nexport function CategoryUI({ id }: CategoryUIProps) {\n const theme = useTheme()\n const _formatter = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.formatter),\n )\n const _series = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.series),\n )\n const data = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.data),\n )\n const maxItems = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.maxItems),\n )\n const labels = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.labels),\n )\n const onRowClick = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.onRowClick),\n )\n const selected = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.selected),\n )\n const max = useWidgetStore(\n useShallow((state) => state.getWidget<CategoryWidgetState>(id)?.max),\n )\n\n const formatter = _formatter ?? defaultFormatter\n const series = _series ?? []\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.secondary.main,\n )\n : [theme.palette.secondary.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]!}\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} from './types'\n\ninterface CategoryDownloadConfigProps extends ConfigProps {\n series?: CategorySeriesConfig[]\n}\n\n/**\n * Creates download configuration for category widgets, supporting PNG (screenshot) and CSV (data) exports. CSV output groups values by category across multiple series.\n *\n * @param props - Configuration with `refUI` reference and optional `series` for CSV column headers.\n * @returns Array of download items for use with the Download action.\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\n/**\n * Returns the default configuration for category list widgets, including empty series and a default `maxItems` of 10.\n *\n * @returns Default category widget config.\n */\nexport function categoryConfig(): CategoryWidgetConfig {\n return {\n series: [],\n maxItems: 10,\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","CategoryUI","id","useTheme","state","getWidget","_formatter","useWidgetStore","useShallow","state_0","_series","state_1","data","state_2","maxItems","state_3","labels","state_4","onRowClick","state_5","state_6","max","defaultFormatter","maxHeight","useState","qualitativeColors","Object","qualitative","bold","s","secondary","main","T0","T1","t10","t11","t12","t13","t9","Symbol","for","bb0","groupedData","generateGroupedData","Math","flatMap","_temp","visibleData","slice","isMulti","t14","item_0","item_1","other","t15","t16","t17","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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"}