@carto/ps-react-ui 4.5.0 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@ export declare const styles: {
4
4
  display: "flex";
5
5
  flexDirection: "column";
6
6
  position: "relative";
7
+ width: string;
7
8
  };
8
9
  list: {
9
10
  display: "flex";
@@ -1,13 +1,14 @@
1
- import { jsx as h, jsxs as $ } from "react/jsx-runtime";
2
- import { c as D } from "react/compiler-runtime";
3
- import { Box as y, Typography as _, useTheme as z, Skeleton as E } from "@mui/material";
4
- import { u as J } from "../use-widget-selector-DqRmWQ1K.js";
5
- import { useState as K } from "react";
6
- import { a as Q, d as X } from "../formatter-B9Bxn1k7.js";
1
+ import { jsx as h, jsxs as S } from "react/jsx-runtime";
2
+ import { c as M } from "react/compiler-runtime";
3
+ import { Box as C, Typography as D, useTheme as K, Skeleton as P } from "@mui/material";
4
+ import { u as Q } from "../use-widget-selector-DqRmWQ1K.js";
5
+ import { useState as X } from "react";
6
+ import { a as Y, d as Z } from "../formatter-B9Bxn1k7.js";
7
+ import { u as ee } from "../use-widget-ref-BFazQvJK.js";
7
8
  import "../widget-store-CIrb9RKP.js";
8
9
  import "zustand/shallow";
9
10
  import "@mui/icons-material";
10
- import { d as P, a as G } from "../exports-Cr43OCul.js";
11
+ import { d as U, a as N } from "../exports-Cr43OCul.js";
11
12
  import "../lasso-tool-BYbxrJ-7.js";
12
13
  import "../cjs-D4KH3azB.js";
13
14
  import "@dnd-kit/core";
@@ -17,7 +18,8 @@ const u = {
17
18
  root: {
18
19
  display: "flex",
19
20
  flexDirection: "column",
20
- position: "relative"
21
+ position: "relative",
22
+ width: "100%"
21
23
  },
22
24
  list: {
23
25
  display: "flex",
@@ -143,126 +145,126 @@ const u = {
143
145
  color: "text.disabled"
144
146
  }
145
147
  };
146
- function N(t) {
147
- const e = D(6), {
148
+ function z(t) {
149
+ const e = M(6), {
148
150
  value: o,
149
151
  maxValue: l,
150
152
  color: r,
151
- selected: d
152
- } = t, s = d === void 0 ? !0 : d, a = l > 0 ? o / l * 100 : 0;
153
- let i;
154
- e[0] !== r || e[1] !== a || e[2] !== s ? (i = s ? {
153
+ selected: c
154
+ } = t, i = c === void 0 ? !0 : c, s = l > 0 ? o / l * 100 : 0;
155
+ let d;
156
+ e[0] !== r || e[1] !== s || e[2] !== i ? (d = i ? {
155
157
  ...u.barFill,
156
- width: `${a}%`,
158
+ width: `${s}%`,
157
159
  backgroundColor: r
158
160
  } : {
159
161
  ...u.barFill,
160
162
  ...u.barFillMuted,
161
- width: `${a}%`
162
- }, e[0] = r, e[1] = a, e[2] = s, e[3] = i) : i = e[3];
163
- const n = i;
164
- let c;
165
- return e[4] !== n ? (c = /* @__PURE__ */ h(y, { sx: u.bar, children: /* @__PURE__ */ h(y, { sx: n }) }), e[4] = n, e[5] = c) : c = e[5], c;
163
+ width: `${s}%`
164
+ }, e[0] = r, e[1] = s, e[2] = i, e[3] = d) : d = e[3];
165
+ const n = d;
166
+ let a;
167
+ return e[4] !== n ? (a = /* @__PURE__ */ h(C, { sx: u.bar, children: /* @__PURE__ */ h(C, { sx: n }) }), e[4] = n, e[5] = a) : a = e[5], a;
166
168
  }
167
- function Y(t) {
168
- const e = D(26), {
169
+ function te(t) {
170
+ const e = M(26), {
169
171
  name: o,
170
172
  value: l,
171
173
  maxValue: r,
172
- color: d,
173
- formatter: s,
174
- labelFormatter: a,
175
- onClick: i,
174
+ color: c,
175
+ formatter: i,
176
+ labelFormatter: s,
177
+ onClick: d,
176
178
  selected: n
177
- } = t, c = n === void 0 ? !0 : n;
179
+ } = t, a = n === void 0 ? !0 : n;
178
180
  let m;
179
- e[0] !== o || e[1] !== i ? (m = i ? () => i({
181
+ e[0] !== o || e[1] !== d ? (m = d ? () => d({
180
182
  name: o
181
- }) : void 0, e[0] = o, e[1] = i, e[2] = m) : m = e[2];
182
- const C = m, k = i ? u.rowClickable : u.row;
183
+ }) : void 0, e[0] = o, e[1] = d, e[2] = m) : m = e[2];
184
+ const y = m, k = d ? u.rowClickable : u.row;
183
185
  let b;
184
- e[3] !== a || e[4] !== o ? (b = a ? a(o) : o, e[3] = a, e[4] = o, e[5] = b) : b = e[5];
186
+ e[3] !== s || e[4] !== o ? (b = s ? s(o) : o, e[3] = s, e[4] = o, e[5] = b) : b = e[5];
187
+ let x;
188
+ e[6] !== b ? (x = /* @__PURE__ */ h(D, { sx: u.rowLabel, children: b }), e[6] = b, e[7] = x) : x = e[7];
185
189
  let f;
186
- e[6] !== b ? (f = /* @__PURE__ */ h(_, { sx: u.rowLabel, children: b }), e[6] = b, e[7] = f) : f = e[7];
190
+ e[8] !== i || e[9] !== l ? (f = i(l), e[8] = i, e[9] = l, e[10] = f) : f = e[10];
187
191
  let g;
188
- e[8] !== s || e[9] !== l ? (g = s(l), e[8] = s, e[9] = l, e[10] = g) : g = e[10];
189
- let w;
190
- e[11] !== g ? (w = /* @__PURE__ */ h(_, { sx: u.rowValue, children: g }), e[11] = g, e[12] = w) : w = e[12];
191
- let p;
192
- e[13] !== f || e[14] !== w ? (p = /* @__PURE__ */ $(y, { sx: u.rowHeader, children: [
193
- f,
194
- w
195
- ] }), e[13] = f, e[14] = w, e[15] = p) : p = e[15];
196
- let x;
197
- e[16] !== d || e[17] !== r || e[18] !== c || e[19] !== l ? (x = /* @__PURE__ */ h(N, { value: l, maxValue: r, color: d, selected: c }), e[16] = d, e[17] = r, e[18] = c, e[19] = l, e[20] = x) : x = e[20];
192
+ e[11] !== f ? (g = /* @__PURE__ */ h(D, { sx: u.rowValue, children: f }), e[11] = f, e[12] = g) : g = e[12];
198
193
  let v;
199
- return e[21] !== C || e[22] !== k || e[23] !== p || e[24] !== x ? (v = /* @__PURE__ */ $(y, { sx: k, onClick: C, children: [
200
- p,
201
- x
202
- ] }), e[21] = C, e[22] = k, e[23] = p, e[24] = x, e[25] = v) : v = e[25], v;
194
+ e[13] !== x || e[14] !== g ? (v = /* @__PURE__ */ S(C, { sx: u.rowHeader, children: [
195
+ x,
196
+ g
197
+ ] }), e[13] = x, e[14] = g, e[15] = v) : v = e[15];
198
+ let p;
199
+ e[16] !== c || e[17] !== r || e[18] !== a || e[19] !== l ? (p = /* @__PURE__ */ h(z, { value: l, maxValue: r, color: c, selected: a }), e[16] = c, e[17] = r, e[18] = a, e[19] = l, e[20] = p) : p = e[20];
200
+ let w;
201
+ return e[21] !== y || e[22] !== k || e[23] !== v || e[24] !== p ? (w = /* @__PURE__ */ S(C, { sx: k, onClick: y, children: [
202
+ v,
203
+ p
204
+ ] }), e[21] = y, e[22] = k, e[23] = v, e[24] = p, e[25] = w) : w = e[25], w;
203
205
  }
204
- function Z(t) {
205
- const e = D(28), {
206
+ function oe(t) {
207
+ const e = M(28), {
206
208
  name: o,
207
209
  values: l,
208
210
  maxValue: r,
209
- colors: d,
210
- formatter: s,
211
- labelFormatter: a,
212
- onClick: i,
211
+ colors: c,
212
+ formatter: i,
213
+ labelFormatter: s,
214
+ onClick: d,
213
215
  selected: n
214
- } = t, c = n === void 0 ? !0 : n;
216
+ } = t, a = n === void 0 ? !0 : n;
215
217
  let m;
216
- e[0] !== o || e[1] !== i ? (m = i ? () => i({
218
+ e[0] !== o || e[1] !== d ? (m = d ? () => d({
217
219
  name: o
218
- }) : void 0, e[0] = o, e[1] = i, e[2] = m) : m = e[2];
219
- const C = m, k = i ? u.rowClickable : u.row;
220
+ }) : void 0, e[0] = o, e[1] = d, e[2] = m) : m = e[2];
221
+ const y = m, k = d ? u.rowClickable : u.row;
220
222
  let b;
221
- e[3] !== a || e[4] !== o ? (b = a ? a(o) : o, e[3] = a, e[4] = o, e[5] = b) : b = e[5];
223
+ e[3] !== s || e[4] !== o ? (b = s ? s(o) : o, e[3] = s, e[4] = o, e[5] = b) : b = e[5];
224
+ let x;
225
+ e[6] !== b ? (x = /* @__PURE__ */ h(D, { sx: u.rowLabel, children: b }), e[6] = b, e[7] = x) : x = e[7];
222
226
  let f;
223
- e[6] !== b ? (f = /* @__PURE__ */ h(_, { sx: u.rowLabel, children: b }), e[6] = b, e[7] = f) : f = e[7];
224
- let g;
225
- if (e[8] !== d || e[9] !== s || e[10] !== r || e[11] !== o || e[12] !== c || e[13] !== l) {
226
- let x;
227
- e[15] !== d || e[16] !== s || e[17] !== r || e[18] !== o || e[19] !== c ? (x = (v, S) => /* @__PURE__ */ $(y, { sx: u.multiBarRow, children: [
228
- /* @__PURE__ */ h(y, { sx: u.multiBarContainer, children: /* @__PURE__ */ h(N, { value: v, maxValue: r, color: d[S % d.length] ?? "", selected: c }) }),
229
- /* @__PURE__ */ h(_, { sx: u.multiBarValue, children: s(v) })
230
- ] }, `${o}-${v}-${S}`), e[15] = d, e[16] = s, e[17] = r, e[18] = o, e[19] = c, e[20] = x) : x = e[20], g = l.map(x), e[8] = d, e[9] = s, e[10] = r, e[11] = o, e[12] = c, e[13] = l, e[14] = g;
227
+ if (e[8] !== c || e[9] !== i || e[10] !== r || e[11] !== o || e[12] !== a || e[13] !== l) {
228
+ let p;
229
+ e[15] !== c || e[16] !== i || e[17] !== r || e[18] !== o || e[19] !== a ? (p = (w, $) => /* @__PURE__ */ S(C, { sx: u.multiBarRow, children: [
230
+ /* @__PURE__ */ h(C, { sx: u.multiBarContainer, children: /* @__PURE__ */ h(z, { value: w, maxValue: r, color: c[$ % c.length] ?? "", selected: a }) }),
231
+ /* @__PURE__ */ h(D, { sx: u.multiBarValue, children: i(w) })
232
+ ] }, `${o}-${w}-${$}`), e[15] = c, e[16] = i, e[17] = r, e[18] = o, e[19] = a, e[20] = p) : p = e[20], f = l.map(p), e[8] = c, e[9] = i, e[10] = r, e[11] = o, e[12] = a, e[13] = l, e[14] = f;
231
233
  } else
232
- g = e[14];
233
- let w;
234
- e[21] !== g ? (w = /* @__PURE__ */ h(y, { sx: u.barContainer, children: g }), e[21] = g, e[22] = w) : w = e[22];
235
- let p;
236
- return e[23] !== C || e[24] !== k || e[25] !== f || e[26] !== w ? (p = /* @__PURE__ */ $(y, { sx: k, onClick: C, children: [
237
- f,
238
- w
239
- ] }), e[23] = C, e[24] = k, e[25] = f, e[26] = w, e[27] = p) : p = e[27], p;
234
+ f = e[14];
235
+ let g;
236
+ e[21] !== f ? (g = /* @__PURE__ */ h(C, { sx: u.barContainer, children: f }), e[21] = f, e[22] = g) : g = e[22];
237
+ let v;
238
+ return e[23] !== y || e[24] !== k || e[25] !== x || e[26] !== g ? (v = /* @__PURE__ */ S(C, { sx: k, onClick: y, children: [
239
+ x,
240
+ g
241
+ ] }), e[23] = y, e[24] = k, e[25] = x, e[26] = g, e[27] = v) : v = e[27], v;
240
242
  }
241
- function ee(t) {
242
- const e = D(10), {
243
+ function re(t) {
244
+ const e = M(10), {
243
245
  hiddenCount: o,
244
246
  otherLabel: l,
245
247
  otherCountLabel: r
246
- } = t, d = l === void 0 ? "Other" : l, s = r === void 0 ? "{count} more" : r;
247
- let a;
248
- e[0] !== o || e[1] !== s ? (a = s.replace("{count}", String(o)), e[0] = o, e[1] = s, e[2] = a) : a = e[2];
249
- const i = a;
248
+ } = t, c = l === void 0 ? "Other" : l, i = r === void 0 ? "{count} more" : r;
249
+ let s;
250
+ e[0] !== o || e[1] !== i ? (s = i.replace("{count}", String(o)), e[0] = o, e[1] = i, e[2] = s) : s = e[2];
251
+ const d = s;
250
252
  let n;
251
- e[3] !== d ? (n = /* @__PURE__ */ h(_, { sx: u.otherLabel, children: d }), e[3] = d, e[4] = n) : n = e[4];
252
- let c;
253
- e[5] !== i ? (c = /* @__PURE__ */ $(_, { sx: u.otherCount, children: [
253
+ e[3] !== c ? (n = /* @__PURE__ */ h(D, { sx: u.otherLabel, children: c }), e[3] = c, e[4] = n) : n = e[4];
254
+ let a;
255
+ e[5] !== d ? (a = /* @__PURE__ */ S(D, { sx: u.otherCount, children: [
254
256
  "(",
255
- i,
257
+ d,
256
258
  ")"
257
- ] }), e[5] = i, e[6] = c) : c = e[6];
259
+ ] }), e[5] = d, e[6] = a) : a = e[6];
258
260
  let m;
259
- return e[7] !== n || e[8] !== c ? (m = /* @__PURE__ */ $(y, { sx: u.otherRow, children: [
261
+ return e[7] !== n || e[8] !== a ? (m = /* @__PURE__ */ S(C, { sx: u.otherRow, children: [
260
262
  n,
261
- c
262
- ] }), e[7] = n, e[8] = c, e[9] = m) : m = e[9], m;
263
+ a
264
+ ] }), e[7] = n, e[8] = a, e[9] = m) : m = e[9], m;
263
265
  }
264
- function te(t) {
265
- const e = D(7), {
266
+ function le(t) {
267
+ const e = M(7), {
266
268
  series: o,
267
269
  colors: l
268
270
  } = t;
@@ -270,80 +272,82 @@ function te(t) {
270
272
  return null;
271
273
  let r;
272
274
  if (e[0] !== l || e[1] !== o) {
273
- let s;
274
- e[3] !== l ? (s = (a, i) => /* @__PURE__ */ $(y, { sx: u.legendItem, children: [
275
- /* @__PURE__ */ h(y, { sx: {
275
+ let i;
276
+ e[3] !== l ? (i = (s, d) => /* @__PURE__ */ S(C, { sx: u.legendItem, children: [
277
+ /* @__PURE__ */ h(C, { sx: {
276
278
  ...u.legendDot,
277
- backgroundColor: a.color ?? l[i % l.length]
279
+ backgroundColor: s.color ?? l[d % l.length]
278
280
  } }),
279
- /* @__PURE__ */ h(_, { sx: u.legendLabel, children: a.name })
280
- ] }, a.name), e[3] = l, e[4] = s) : s = e[4], r = o.map(s), e[0] = l, e[1] = o, e[2] = r;
281
+ /* @__PURE__ */ h(D, { sx: u.legendLabel, children: s.name })
282
+ ] }, s.name), e[3] = l, e[4] = i) : i = e[4], r = o.map(i), e[0] = l, e[1] = o, e[2] = r;
281
283
  } else
282
284
  r = e[2];
283
- let d;
284
- return e[5] !== r ? (d = /* @__PURE__ */ h(y, { sx: u.legend, children: r }), e[5] = r, e[6] = d) : d = e[6], d;
285
+ let c;
286
+ return e[5] !== r ? (c = /* @__PURE__ */ h(C, { sx: u.legend, children: r }), e[5] = r, e[6] = c) : c = e[6], c;
285
287
  }
286
- function ve(t) {
287
- const e = D(40), {
288
+ function Le(t) {
289
+ const e = M(43), {
288
290
  id: o
289
- } = t, l = z(), {
290
- _formatter: r,
291
- _labelFormatter: d,
291
+ } = t, {
292
+ ref: l
293
+ } = ee(o), r = K(), {
294
+ _formatter: c,
295
+ _labelFormatter: i,
292
296
  _series: s,
293
- data: a,
294
- maxItems: i,
295
- labels: n,
296
- onRowClick: c,
297
- selected: m,
298
- max: C
299
- } = J(o, re), k = r ?? X, b = d ?? Q, f = s ?? [], [g] = K(i ? 40 * (f.length || 1) * i : void 0), w = Object.values(l.palette.qualitative.bold), p = f.length > 0 ? f.map((R, O) => R.color ?? w[O % w.length] ?? l.palette.secondary.main) : [l.palette.secondary.main];
300
- let x, v, S, M, F, T, I, V;
301
- if (e[0] !== p || e[1] !== a || e[2] !== k || e[3] !== b || e[4] !== C || e[5] !== g || e[6] !== i || e[7] !== c || e[8] !== m || e[9] !== f) {
302
- V = /* @__PURE__ */ Symbol.for("react.early_return_sentinel");
297
+ data: d,
298
+ maxItems: n,
299
+ labels: a,
300
+ onRowClick: m,
301
+ selected: y,
302
+ max: k
303
+ } = Q(o, ae), b = c ?? Z, x = i ?? Y, f = s ?? [], [g] = X(n ? 40 * (f.length || 1) * n : void 0), v = Object.values(r.palette.qualitative.bold), p = f.length > 0 ? f.map((_, q) => _.color ?? v[q % v.length] ?? r.palette.secondary.main) : [r.palette.secondary.main];
304
+ let w, $, R, T, F, V, B, I, W;
305
+ if (e[0] !== p || e[1] !== d || e[2] !== b || e[3] !== x || e[4] !== k || e[5] !== g || e[6] !== n || e[7] !== m || e[8] !== l || e[9] !== y || e[10] !== f) {
306
+ W = /* @__PURE__ */ Symbol.for("react.early_return_sentinel");
303
307
  e: {
304
- const R = le({
305
- data: a
308
+ const _ = ie({
309
+ data: d
306
310
  });
307
- if (R.length === 0) {
308
- V = null;
311
+ if (_.length === 0) {
312
+ W = null;
309
313
  break e;
310
314
  }
311
- const O = C ?? Math.max(...R.flatMap(oe)), H = i !== void 0 && i >= 0 ? R.slice(0, i) : R;
312
- S = R.length - H.length;
313
- const U = f.length > 1;
314
- v = y, e[18] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (I = {
315
+ const q = k ?? Math.max(..._.flatMap(ne)), E = n !== void 0 && n >= 0 ? _.slice(0, n) : _;
316
+ R = _.length - E.length;
317
+ const J = f.length > 1;
318
+ $ = C, B = l, e[20] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (I = {
315
319
  ...u.root
316
- }, e[18] = I) : I = e[18], x = y, M = u.list;
317
- const q = S === 0 ? "auto" : "hidden";
318
- e[19] !== g || e[20] !== q ? (F = {
320
+ }, e[20] = I) : I = e[20], w = C, T = u.list;
321
+ const G = R === 0 ? "auto" : "hidden";
322
+ e[21] !== g || e[22] !== G ? (F = {
319
323
  maxHeight: g,
320
- overflow: q
321
- }, e[19] = g, e[20] = q, e[21] = F) : F = e[21], T = U ? H.map((L) => /* @__PURE__ */ h(Z, { name: L.name, values: L.values, maxValue: O, colors: p, formatter: k, labelFormatter: b, onClick: c, selected: m?.(L.name) ?? !0 }, L.name)) : H.map((L) => /* @__PURE__ */ h(Y, { name: L.name, value: L.values[0] ?? 0, selected: m?.(L.name) ?? !0, maxValue: O, color: p[0], formatter: k, labelFormatter: b, onClick: c }, L.name));
324
+ overflow: G
325
+ }, e[21] = g, e[22] = G, e[23] = F) : F = e[23], V = J ? E.map((L) => /* @__PURE__ */ h(oe, { name: L.name, values: L.values, maxValue: q, colors: p, formatter: b, labelFormatter: x, onClick: m, selected: y?.(L.name) ?? !0 }, L.name)) : E.map((L) => /* @__PURE__ */ h(te, { name: L.name, value: L.values[0] ?? 0, selected: y?.(L.name) ?? !0, maxValue: q, color: p[0], formatter: b, labelFormatter: x, onClick: m }, L.name));
322
326
  }
323
- e[0] = p, e[1] = a, e[2] = k, e[3] = b, e[4] = C, e[5] = g, e[6] = i, e[7] = c, e[8] = m, e[9] = f, e[10] = x, e[11] = v, e[12] = S, e[13] = M, e[14] = F, e[15] = T, e[16] = I, e[17] = V;
327
+ e[0] = p, e[1] = d, e[2] = b, e[3] = x, e[4] = k, e[5] = g, e[6] = n, e[7] = m, e[8] = l, e[9] = y, e[10] = f, e[11] = w, e[12] = $, e[13] = R, e[14] = T, e[15] = F, e[16] = V, e[17] = B, e[18] = I, e[19] = W;
324
328
  } else
325
- x = e[10], v = e[11], S = e[12], M = e[13], F = e[14], T = e[15], I = e[16], V = e[17];
326
- if (V !== /* @__PURE__ */ Symbol.for("react.early_return_sentinel"))
327
- return V;
328
- let B;
329
- e[22] !== S || e[23] !== n?.other || e[24] !== n?.otherCount ? (B = S > 0 && /* @__PURE__ */ h(ee, { hiddenCount: S, otherLabel: n?.other, otherCountLabel: n?.otherCount }), e[22] = S, e[23] = n?.other, e[24] = n?.otherCount, e[25] = B) : B = e[25];
330
- let W;
331
- e[26] !== x || e[27] !== M || e[28] !== F || e[29] !== T || e[30] !== B ? (W = /* @__PURE__ */ $(x, { sx: M, style: F, children: [
332
- T,
333
- B
334
- ] }), e[26] = x, e[27] = M, e[28] = F, e[29] = T, e[30] = B, e[31] = W) : W = e[31];
329
+ w = e[11], $ = e[12], R = e[13], T = e[14], F = e[15], V = e[16], B = e[17], I = e[18], W = e[19];
330
+ if (W !== /* @__PURE__ */ Symbol.for("react.early_return_sentinel"))
331
+ return W;
335
332
  let j;
336
- e[32] !== p || e[33] !== f ? (j = f.length > 0 && /* @__PURE__ */ h(te, { series: f, colors: p }), e[32] = p, e[33] = f, e[34] = j) : j = e[34];
333
+ e[24] !== R || e[25] !== a?.other || e[26] !== a?.otherCount ? (j = R > 0 && /* @__PURE__ */ h(re, { hiddenCount: R, otherLabel: a?.other, otherCountLabel: a?.otherCount }), e[24] = R, e[25] = a?.other, e[26] = a?.otherCount, e[27] = j) : j = e[27];
337
334
  let A;
338
- return e[35] !== v || e[36] !== I || e[37] !== W || e[38] !== j ? (A = /* @__PURE__ */ $(v, { sx: I, children: [
339
- W,
335
+ e[28] !== w || e[29] !== T || e[30] !== F || e[31] !== V || e[32] !== j ? (A = /* @__PURE__ */ S(w, { sx: T, style: F, children: [
336
+ V,
340
337
  j
341
- ] }), e[35] = v, e[36] = I, e[37] = W, e[38] = j, e[39] = A) : A = e[39], A;
338
+ ] }), e[28] = w, e[29] = T, e[30] = F, e[31] = V, e[32] = j, e[33] = A) : A = e[33];
339
+ let O;
340
+ e[34] !== p || e[35] !== f ? (O = f.length > 0 && /* @__PURE__ */ h(le, { series: f, colors: p }), e[34] = p, e[35] = f, e[36] = O) : O = e[36];
341
+ let H;
342
+ return e[37] !== $ || e[38] !== B || e[39] !== I || e[40] !== A || e[41] !== O ? (H = /* @__PURE__ */ S($, { ref: B, sx: I, children: [
343
+ A,
344
+ O
345
+ ] }), e[37] = $, e[38] = B, e[39] = I, e[40] = A, e[41] = O, e[42] = H) : H = e[42], H;
342
346
  }
343
- function oe(t) {
347
+ function ne(t) {
344
348
  return t.values;
345
349
  }
346
- function re(t) {
350
+ function ae(t) {
347
351
  const e = t;
348
352
  return {
349
353
  _formatter: e?.formatter,
@@ -357,16 +361,16 @@ function re(t) {
357
361
  max: e?.max
358
362
  };
359
363
  }
360
- function le({
364
+ function ie({
361
365
  data: t
362
366
  }) {
363
367
  if (!t || t.length === 0) return [];
364
368
  const e = Math.max(t.length, 1), o = /* @__PURE__ */ new Map(), l = [];
365
369
  for (let r = 0; r < t.length; r++) {
366
- const d = t[r];
367
- for (const s of d) {
368
- let a = o.get(s.name);
369
- a || (a = new Array(e).fill(0), o.set(s.name, a), l.push(s.name)), a[r] = s.value;
370
+ const c = t[r];
371
+ for (const i of c) {
372
+ let s = o.get(i.name);
373
+ s || (s = new Array(e).fill(0), o.set(i.name, s), l.push(i.name)), s[r] = i.value;
370
374
  }
371
375
  }
372
376
  return l.map((r) => ({
@@ -374,54 +378,54 @@ function le({
374
378
  values: o.get(r)
375
379
  }));
376
380
  }
377
- const ne = [85, 70, 55, 75, 60];
378
- function ke() {
379
- const t = D(1);
381
+ const se = [85, 70, 55, 75, 60];
382
+ function Re() {
383
+ const t = M(1);
380
384
  let e;
381
- return t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ h(y, { sx: u.list, "aria-label": "Category skeleton", children: Array.from({
385
+ return t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ h(C, { sx: u.list, "aria-label": "Category skeleton", children: Array.from({
382
386
  length: 5
383
- }).map(ae) }), t[0] = e) : e = t[0], e;
387
+ }).map(ce) }), t[0] = e) : e = t[0], e;
384
388
  }
385
- function ae(t, e) {
386
- return /* @__PURE__ */ $(y, { sx: u.row, children: [
387
- /* @__PURE__ */ $(y, { sx: u.rowHeader, children: [
388
- /* @__PURE__ */ h(E, { width: 80, height: 16 }),
389
- /* @__PURE__ */ h(E, { width: 40, height: 16 })
389
+ function ce(t, e) {
390
+ return /* @__PURE__ */ S(C, { sx: u.row, children: [
391
+ /* @__PURE__ */ S(C, { sx: u.rowHeader, children: [
392
+ /* @__PURE__ */ h(P, { width: 80, height: 16 }),
393
+ /* @__PURE__ */ h(P, { width: 40, height: 16 })
390
394
  ] }),
391
- /* @__PURE__ */ h(E, { variant: "rectangular", height: 4, sx: {
395
+ /* @__PURE__ */ h(P, { variant: "rectangular", height: 4, sx: {
392
396
  borderRadius: 2,
393
- width: `${ne[e]}%`
397
+ width: `${se[e]}%`
394
398
  } })
395
399
  ] }, e);
396
400
  }
397
- function Se({
401
+ function Fe({
398
402
  refUI: t,
399
403
  series: e
400
404
  }) {
401
405
  return [{
402
- ...P,
403
- modifier: () => P.modifier(t)
406
+ ...U,
407
+ modifier: () => U.modifier(t)
404
408
  }, {
405
- ...G,
409
+ ...N,
406
410
  modifier: async (o) => {
407
411
  if (!o?.length || o[0]?.length === 0)
408
- return G.modifier([]);
409
- const l = o.length, r = /* @__PURE__ */ new Map(), d = [];
412
+ return N.modifier([]);
413
+ const l = o.length, r = /* @__PURE__ */ new Map(), c = [];
410
414
  for (let n = 0; n < l; n++) {
411
- const c = o[n];
412
- for (const m of c) {
413
- let C = r.get(m.name);
414
- C || (C = new Array(l).fill(0), r.set(m.name, C), d.push(m.name)), C[n] = m.value;
415
+ const a = o[n];
416
+ for (const m of a) {
417
+ let y = r.get(m.name);
418
+ y || (y = new Array(l).fill(0), r.set(m.name, y), c.push(m.name)), y[n] = m.value;
415
419
  }
416
420
  }
417
- const s = d.map((n) => [n, ...r.get(n)]), i = l > 1 ? ["Category", ...e?.map((n) => n.name) ?? Array.from({
421
+ const i = c.map((n) => [n, ...r.get(n)]), d = l > 1 ? ["Category", ...e?.map((n) => n.name) ?? Array.from({
418
422
  length: l
419
- }, (n, c) => `Series ${c + 1}`)] : ["Category", "Value"];
420
- return G.modifier([i, ...s]);
423
+ }, (n, a) => `Series ${a + 1}`)] : ["Category", "Value"];
424
+ return N.modifier([d, ...i]);
421
425
  }
422
426
  }];
423
427
  }
424
- function $e() {
428
+ function Ie() {
425
429
  return {
426
430
  series: [],
427
431
  maxItems: 10,
@@ -429,14 +433,14 @@ function $e() {
429
433
  };
430
434
  }
431
435
  export {
432
- N as CategoryBar,
433
- te as CategoryLegend,
434
- Z as CategoryRowMulti,
435
- ee as CategoryRowOther,
436
- Y as CategoryRowSingle,
437
- ke as CategorySkeleton,
438
- ve as CategoryUI,
439
- $e as categoryConfig,
440
- Se as categoryDownloadConfig
436
+ z as CategoryBar,
437
+ le as CategoryLegend,
438
+ oe as CategoryRowMulti,
439
+ re as CategoryRowOther,
440
+ te as CategoryRowSingle,
441
+ Re as CategorySkeleton,
442
+ Le as CategoryUI,
443
+ Ie as categoryConfig,
444
+ Fe as categoryDownloadConfig
441
445
  };
442
446
  //# 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\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 labelFormatter?: CategoryWidgetConfig['labelFormatter']\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 labelFormatter,\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}>\n {labelFormatter ? labelFormatter(name) : name}\n </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 labelFormatter?: CategoryWidgetConfig['labelFormatter']\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 labelFormatter,\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}>\n {labelFormatter ? labelFormatter(name) : name}\n </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\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 { useWidgetSelector } from '../stores/use-widget-selector'\nimport { styles } from './style'\nimport type { CategoryUIProps, CategoryWidgetState } from './types'\nimport {\n CategoryRowSingle,\n CategoryRowMulti,\n CategoryRowOther,\n CategoryLegend,\n} from './components'\nimport { useState } from 'react'\nimport { defaultFormatter, defaultLabelFormatter } 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\n // Single consolidated subscription instead of 9 separate ones.\n const {\n _formatter,\n _labelFormatter,\n _series,\n data,\n maxItems,\n labels,\n onRowClick,\n selected,\n max,\n } = useWidgetSelector(id, (w) => {\n const cw = w as CategoryWidgetState | undefined\n return {\n _formatter: cw?.formatter,\n _labelFormatter: cw?.labelFormatter,\n _series: cw?.series,\n data: cw?.data,\n maxItems: cw?.maxItems,\n labels: cw?.labels,\n onRowClick: cw?.onRowClick,\n selected: cw?.selected,\n max: cw?.max,\n }\n })\n\n const formatter = _formatter ?? defaultFormatter\n const labelFormatter = _labelFormatter ?? defaultLabelFormatter\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 labelFormatter={labelFormatter}\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 labelFormatter={labelFormatter}\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","labelFormatter","onClick","handleClick","rowStyle","t4","Typography","t5","t6","t7","t8","t9","jsxs","CategoryRowMulti","values","colors","index","length","map","CategoryRowOther","hiddenCount","otherCountLabel","replace","String","countText","CategoryLegend","series","item","CategoryUI","id","useTheme","_formatter","_labelFormatter","_series","data","maxItems","labels","onRowClick","max","useWidgetSelector","_temp","defaultFormatter","defaultLabelFormatter","maxHeight","useState","qualitativeColors","Object","qualitative","bold","s","secondary","main","T0","T1","Symbol","for","bb0","groupedData","generateGroupedData","Math","flatMap","_temp2","visibleData","slice","isMulti","item_0","item_1","other","w","cw","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 width: '100%',\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 labelFormatter?: CategoryWidgetConfig['labelFormatter']\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 labelFormatter,\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}>\n {labelFormatter ? labelFormatter(name) : name}\n </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 labelFormatter?: CategoryWidgetConfig['labelFormatter']\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 labelFormatter,\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}>\n {labelFormatter ? labelFormatter(name) : name}\n </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\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 { useWidgetSelector } from '../stores/use-widget-selector'\nimport { styles } from './style'\nimport type { CategoryUIProps, CategoryWidgetState } from './types'\nimport {\n CategoryRowSingle,\n CategoryRowMulti,\n CategoryRowOther,\n CategoryLegend,\n} from './components'\nimport { useState } from 'react'\nimport { defaultFormatter, defaultLabelFormatter } from '../utils/formatter'\nimport { useWidgetRef } from '../../hooks'\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 { ref } = useWidgetRef<HTMLDivElement>(id)\n const theme = useTheme()\n\n // Single consolidated subscription instead of 9 separate ones.\n const {\n _formatter,\n _labelFormatter,\n _series,\n data,\n maxItems,\n labels,\n onRowClick,\n selected,\n max,\n } = useWidgetSelector(id, (w) => {\n const cw = w as CategoryWidgetState | undefined\n return {\n _formatter: cw?.formatter,\n _labelFormatter: cw?.labelFormatter,\n _series: cw?.series,\n data: cw?.data,\n maxItems: cw?.maxItems,\n labels: cw?.labels,\n onRowClick: cw?.onRowClick,\n selected: cw?.selected,\n max: cw?.max,\n }\n })\n\n const formatter = _formatter ?? defaultFormatter\n const labelFormatter = _labelFormatter ?? defaultLabelFormatter\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 ref={ref}\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 labelFormatter={labelFormatter}\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 labelFormatter={labelFormatter}\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","width","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","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","labelFormatter","onClick","handleClick","rowStyle","t4","Typography","t5","t6","t7","t8","t9","jsxs","CategoryRowMulti","values","colors","index","length","map","CategoryRowOther","hiddenCount","otherCountLabel","replace","String","countText","CategoryLegend","series","item","CategoryUI","id","ref","useWidgetRef","useTheme","_formatter","_labelFormatter","_series","data","maxItems","labels","onRowClick","max","useWidgetSelector","_temp","defaultFormatter","defaultLabelFormatter","maxHeight","useState","qualitativeColors","Object","qualitative","bold","s","secondary","main","T0","T1","Symbol","for","bb0","groupedData","generateGroupedData","Math","flatMap","_temp2","visibleData","slice","isMulti","item_0","item_1","other","t10","w","cw","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,16 +1,16 @@
1
- import { jsx as g, jsxs as m } from "react/jsx-runtime";
2
- import { c as d } from "react/compiler-runtime";
3
- import { Box as x } from "@mui/material";
4
- const c = {
1
+ import { jsx as c, jsxs as g } from "react/jsx-runtime";
2
+ import { c as x } from "react/compiler-runtime";
3
+ import { Box as a } from "@mui/material";
4
+ const d = {
5
5
  root: {
6
6
  display: "flex",
7
7
  alignItems: "center",
8
8
  gap: ({
9
- spacing: e
10
- }) => e(1),
9
+ spacing: t
10
+ }) => t(1),
11
11
  minHeight: ({
12
- spacing: e
13
- }) => e(3)
12
+ spacing: t
13
+ }) => t(3)
14
14
  },
15
15
  slotLeft: {
16
16
  flexShrink: 0
@@ -21,30 +21,30 @@ const c = {
21
21
  justifyContent: "flex-end",
22
22
  alignItems: "center",
23
23
  gap: ({
24
- spacing: e
25
- }) => e(1)
24
+ spacing: t
25
+ }) => t(1)
26
26
  }
27
27
  };
28
- function u(e) {
29
- const t = d(10), {
30
- slotLeft: i,
31
- slotRight: n,
32
- sx: f
33
- } = e;
34
- let l;
35
- t[0] !== f ? (l = {
36
- ...c.root,
37
- ...f
38
- }, t[0] = f, t[1] = l) : l = t[1];
28
+ function u(t) {
29
+ const e = x(10), {
30
+ slotLeft: o,
31
+ slotRight: r,
32
+ sx: n
33
+ } = t;
39
34
  let s;
40
- t[2] !== i ? (s = i && /* @__PURE__ */ g(x, { sx: c.slotLeft, children: i }), t[2] = i, t[3] = s) : s = t[3];
41
- let o;
42
- t[4] !== n ? (o = /* @__PURE__ */ g(x, { sx: c.slotRight, children: n }), t[4] = n, t[5] = o) : o = t[5];
43
- let r;
44
- return t[6] !== l || t[7] !== s || t[8] !== o ? (r = /* @__PURE__ */ m(x, { sx: l, children: [
45
- s,
46
- o
47
- ] }), t[6] = l, t[7] = s, t[8] = o, t[9] = r) : r = t[9], r;
35
+ e[0] !== n ? (s = {
36
+ ...d.root,
37
+ ...n
38
+ }, e[0] = n, e[1] = s) : s = e[1];
39
+ let l;
40
+ e[2] !== o ? (l = o && /* @__PURE__ */ c(a, { sx: d.slotLeft, className: "widget-subheader-slot-left", children: o }), e[2] = o, e[3] = l) : l = e[3];
41
+ let i;
42
+ e[4] !== r ? (i = r && /* @__PURE__ */ c(a, { sx: d.slotRight, className: "widget-subheader-slot-right", children: r }), e[4] = r, e[5] = i) : i = e[5];
43
+ let f;
44
+ return e[6] !== s || e[7] !== l || e[8] !== i ? (f = /* @__PURE__ */ g(a, { sx: s, className: "widget-subheader", children: [
45
+ l,
46
+ i
47
+ ] }), e[6] = s, e[7] = l, e[8] = i, e[9] = f) : f = e[9], f;
48
48
  }
49
49
  export {
50
50
  u as WidgetSubHeader
@@ -1 +1 @@
1
- {"version":3,"file":"subheader.js","sources":["../../src/widgets/subheader/style.ts","../../src/widgets/subheader/subheader.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1),\n minHeight: ({ spacing }) => spacing(3),\n },\n slotLeft: {\n flexShrink: 0,\n },\n slotRight: {\n flexGrow: 1,\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1),\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport { styles } from './style'\nimport type { WidgetSubHeaderProps } from './types'\n\n/**\n * Flexible two-slot layout for displaying supplementary widget information such as totals, timestamps, or controls. Uses flexbox with space-between justification.\n *\n * @example\n * ```tsx\n * <WidgetSubHeader\n * slotLeft={<Typography variant=\"caption\">Total: 1,234</Typography>}\n * slotRight={<Typography variant=\"caption\">Updated: 2m ago</Typography>}\n * />\n * ```\n */\nexport function WidgetSubHeader({\n slotLeft,\n slotRight,\n sx,\n}: WidgetSubHeaderProps) {\n return (\n <Box sx={{ ...styles.root, ...sx }}>\n {slotLeft && <Box sx={styles.slotLeft}>{slotLeft}</Box>}\n <Box sx={styles.slotRight}>{slotRight}</Box>\n </Box>\n )\n}\n"],"names":["styles","root","display","alignItems","gap","spacing","minHeight","slotLeft","flexShrink","slotRight","flexGrow","justifyContent","WidgetSubHeader","t0","$","_c","sx","t1","t2","jsx","Box","t3","t4"],"mappings":";;;AAEO,MAAMA,IAAS;AAAA,EACpBC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,YAAY;AAAA,IACZC,KAAKA,CAAC;AAAA,MAAEC,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,IAC/BC,WAAWA,CAAC;AAAA,MAAED,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,EAAA;AAAA,EAEvCE,UAAU;AAAA,IACRC,YAAY;AAAA,EAAA;AAAA,EAEdC,WAAW;AAAA,IACTC,UAAU;AAAA,IACVR,SAAS;AAAA,IACTS,gBAAgB;AAAA,IAChBR,YAAY;AAAA,IACZC,KAAKA,CAAC;AAAA,MAAEC,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,EAAA;AAEnC;ACJO,SAAAO,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAyB;AAAA,IAAAR,UAAAA;AAAAA,IAAAE,WAAAA;AAAAA,IAAAO,IAAAA;AAAAA,EAAAA,IAAAH;AAIT,MAAAI;AAAA,EAAAH,SAAAE,KAEVC,IAAA;AAAA,IAAA,GAAKjB,EAAMC;AAAAA,IAAK,GAAKe;AAAAA,EAAAA,GAAIF,OAAAE,GAAAF,OAAAG,KAAAA,IAAAH,EAAA,CAAA;AAAA,MAAAI;AAAA,EAAAJ,SAAAP,KAC/BW,IAAAX,KAAY,gBAAAY,EAACC,GAAA,EAAQ,IAAApB,EAAMO,uBAAqB,GAAMO,OAAAP,GAAAO,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAA,MAAAO;AAAA,EAAAP,SAAAL,KACvDY,IAAA,gBAAAF,EAACC,GAAA,EAAQ,IAAApB,EAAMS,WAAaA,UAAAA,GAAU,GAAMK,OAAAL,GAAAK,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAA,MAAAQ;AAAA,SAAAR,EAAA,CAAA,MAAAG,KAAAH,SAAAI,KAAAJ,EAAA,CAAA,MAAAO,KAF9CC,sBAACF,GAAA,EAAQ,IAAAH,GACNC,UAAAA;AAAAA,IAAAA;AAAAA,IACDG;AAAAA,EAAAA,GACF,GAAMP,OAAAG,GAAAH,OAAAI,GAAAJ,OAAAO,GAAAP,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAHNQ;AAGM;"}
1
+ {"version":3,"file":"subheader.js","sources":["../../src/widgets/subheader/style.ts","../../src/widgets/subheader/subheader.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1),\n minHeight: ({ spacing }) => spacing(3),\n },\n slotLeft: {\n flexShrink: 0,\n },\n slotRight: {\n flexGrow: 1,\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1),\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport { styles } from './style'\nimport type { WidgetSubHeaderProps } from './types'\n\n/**\n * Flexible two-slot layout for displaying supplementary widget information such as totals, timestamps, or controls. Uses flexbox with space-between justification.\n *\n * @example\n * ```tsx\n * <WidgetSubHeader\n * slotLeft={<Typography variant=\"caption\">Total: 1,234</Typography>}\n * slotRight={<Typography variant=\"caption\">Updated: 2m ago</Typography>}\n * />\n * ```\n */\nexport function WidgetSubHeader({\n slotLeft,\n slotRight,\n sx,\n}: WidgetSubHeaderProps) {\n return (\n <Box sx={{ ...styles.root, ...sx }} className='widget-subheader'>\n {slotLeft && (\n <Box sx={styles.slotLeft} className='widget-subheader-slot-left'>\n {slotLeft}\n </Box>\n )}\n {slotRight && (\n <Box sx={styles.slotRight} className='widget-subheader-slot-right'>\n {slotRight}\n </Box>\n )}\n </Box>\n )\n}\n"],"names":["styles","root","display","alignItems","gap","spacing","minHeight","slotLeft","flexShrink","slotRight","flexGrow","justifyContent","WidgetSubHeader","t0","$","_c","sx","t1","t2","Box","t3","t4","jsxs"],"mappings":";;;AAEO,MAAMA,IAAS;AAAA,EACpBC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,YAAY;AAAA,IACZC,KAAKA,CAAC;AAAA,MAAEC,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,IAC/BC,WAAWA,CAAC;AAAA,MAAED,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,EAAA;AAAA,EAEvCE,UAAU;AAAA,IACRC,YAAY;AAAA,EAAA;AAAA,EAEdC,WAAW;AAAA,IACTC,UAAU;AAAA,IACVR,SAAS;AAAA,IACTS,gBAAgB;AAAA,IAChBR,YAAY;AAAA,IACZC,KAAKA,CAAC;AAAA,MAAEC,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,EAAA;AAEnC;ACJO,SAAAO,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAyB;AAAA,IAAAR,UAAAA;AAAAA,IAAAE,WAAAA;AAAAA,IAAAO,IAAAA;AAAAA,EAAAA,IAAAH;AAIT,MAAAI;AAAA,EAAAH,SAAAE,KAEVC,IAAA;AAAA,IAAA,GAAKjB,EAAMC;AAAAA,IAAK,GAAKe;AAAAA,EAAAA,GAAIF,OAAAE,GAAAF,OAAAG,KAAAA,IAAAH,EAAA,CAAA;AAAA,MAAAI;AAAA,EAAAJ,SAAAP,KAC/BW,IAAAX,uBACEY,GAAA,EAAQ,IAAAnB,EAAMO,UAAqB,WAAA,8BACjCA,UAAAA,EAAAA,CACH,GACDO,OAAAP,GAAAO,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAA,MAAAM;AAAA,EAAAN,SAAAL,KACAW,IAAAX,uBACEU,GAAA,EAAQ,IAAAnB,EAAMS,WAAsB,WAAA,+BAClCA,UAAAA,EAAAA,CACH,GACDK,OAAAL,GAAAK,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAAA,MAAAO;AAAA,SAAAP,EAAA,CAAA,MAAAG,KAAAH,SAAAI,KAAAJ,EAAA,CAAA,MAAAM,KAVHC,IAAA,gBAAAC,EAACH,GAAA,EAAQ,IAAAF,GAAqC,WAAA,oBAC3CC,UAAAA;AAAAA,IAAAA;AAAAA,IAKAE;AAAAA,EAAAA,GAKH,GAAMN,OAAAG,GAAAH,OAAAI,GAAAJ,OAAAM,GAAAN,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAXNO;AAWM;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carto/ps-react-ui",
3
- "version": "4.5.0",
3
+ "version": "4.5.1",
4
4
  "description": "CARTO's Professional Service React Material library",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -10,11 +10,13 @@ import {
10
10
  } from './components'
11
11
  import { useState } from 'react'
12
12
  import { defaultFormatter, defaultLabelFormatter } from '../utils/formatter'
13
+ import { useWidgetRef } from '../../hooks'
13
14
 
14
15
  /**
15
16
  * Renders a category widget displaying horizontal bars for categorical data with support for single and multi-series layouts, selection, and overflow grouping.
16
17
  */
17
18
  export function CategoryUI({ id }: CategoryUIProps) {
19
+ const { ref } = useWidgetRef<HTMLDivElement>(id)
18
20
  const theme = useTheme()
19
21
 
20
22
  // Single consolidated subscription instead of 9 separate ones.
@@ -85,6 +87,7 @@ export function CategoryUI({ id }: CategoryUIProps) {
85
87
 
86
88
  return (
87
89
  <Box
90
+ ref={ref}
88
91
  sx={{
89
92
  ...styles.root,
90
93
  }}
@@ -5,6 +5,7 @@ export const styles = {
5
5
  display: 'flex',
6
6
  flexDirection: 'column',
7
7
  position: 'relative',
8
+ width: '100%',
8
9
  },
9
10
  list: {
10
11
  display: 'flex',
@@ -19,9 +19,17 @@ export function WidgetSubHeader({
19
19
  sx,
20
20
  }: WidgetSubHeaderProps) {
21
21
  return (
22
- <Box sx={{ ...styles.root, ...sx }}>
23
- {slotLeft && <Box sx={styles.slotLeft}>{slotLeft}</Box>}
24
- <Box sx={styles.slotRight}>{slotRight}</Box>
22
+ <Box sx={{ ...styles.root, ...sx }} className='widget-subheader'>
23
+ {slotLeft && (
24
+ <Box sx={styles.slotLeft} className='widget-subheader-slot-left'>
25
+ {slotLeft}
26
+ </Box>
27
+ )}
28
+ {slotRight && (
29
+ <Box sx={styles.slotRight} className='widget-subheader-slot-right'>
30
+ {slotRight}
31
+ </Box>
32
+ )}
25
33
  </Box>
26
34
  )
27
35
  }