@carto/ps-react-ui 5.0.0-widgets.7 → 5.0.0-widgets.8

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.
@@ -1,5 +1,7 @@
1
1
  import { TableRow } from '../types';
2
2
  export interface UsePaginationResult<T> {
3
+ /** Whether pagination is enabled */
4
+ paginationEnabled: boolean;
3
5
  /** Current page (0-indexed) */
4
6
  page: number;
5
7
  /** Rows per page */
@@ -4,7 +4,11 @@ export interface UseSortOptions {
4
4
  onSortChange?: (columnId: string, direction: SortDirection) => void;
5
5
  }
6
6
  export interface UseSortResult<T> extends SortState {
7
+ /** Whether sorting is enabled */
8
+ sortEnabled: boolean;
7
9
  /** Current sort state */
10
+ columnId: string | null;
11
+ direction: SortDirection;
8
12
  /** Sorted data (for local mode) */
9
13
  sortedData: T[];
10
14
  /** Toggle sort on a column */
@@ -1,4 +1,4 @@
1
- import { jsx as m, jsxs as G } from "react/jsx-runtime";
1
+ import { jsx as p, jsxs as G } from "react/jsx-runtime";
2
2
  import { c as x } from "react/compiler-runtime";
3
3
  import { TableSortLabel as le, TableCell as D, Checkbox as K, Link as ie, Typography as re, TableRow as J, IconButton as H, Box as q, TablePagination as se, Table as Q, TableHead as X, TableBody as Y, Paper as ce, TableContainer as ae, Skeleton as Z } from "@mui/material";
4
4
  import fe from "react-markdown";
@@ -6,7 +6,7 @@ import ue from "@mui/icons-material/FirstPage";
6
6
  import de from "@mui/icons-material/KeyboardArrowLeft";
7
7
  import ge from "@mui/icons-material/KeyboardArrowRight";
8
8
  import he from "@mui/icons-material/LastPage";
9
- import { useRef as me, useEffect as pe } from "react";
9
+ import { useRef as pe, useEffect as me } from "react";
10
10
  import { u as W } from "../widget-store-Dd7_sWZT.js";
11
11
  import { useShallow as U } from "zustand/shallow";
12
12
  import "@mui/icons-material";
@@ -32,7 +32,7 @@ function Pe(o) {
32
32
  "aria-label": "select all rows"
33
33
  }, e[0] = g) : g = e[0];
34
34
  let h;
35
- return e[1] !== r || e[2] !== a || e[3] !== f ? (h = /* @__PURE__ */ m(D, { padding: "checkbox", children: /* @__PURE__ */ m(K, { checked: r, indeterminate: a, onChange: f, inputProps: g }) }), e[1] = r, e[2] = a, e[3] = f, e[4] = h) : h = e[4], h;
35
+ return e[1] !== r || e[2] !== a || e[3] !== f ? (h = /* @__PURE__ */ p(D, { padding: "checkbox", children: /* @__PURE__ */ p(K, { checked: r, indeterminate: a, onChange: f, inputProps: g }) }), e[1] = r, e[2] = a, e[3] = f, e[4] = h) : h = e[4], h;
36
36
  }
37
37
  const s = n?.columnId === t.id, c = s ? n.direction : void 0;
38
38
  if (t.sortable && i) {
@@ -41,19 +41,19 @@ function Pe(o) {
41
41
  width: t.width
42
42
  }, e[5] = t.width, e[6] = g) : g = e[6];
43
43
  const h = c ?? "asc";
44
- let p;
45
- e[7] !== t.id || e[8] !== i ? (p = () => i(t.id), e[7] = t.id, e[8] = i, e[9] = p) : p = e[9];
44
+ let m;
45
+ e[7] !== t.id || e[8] !== i ? (m = () => i(t.id), e[7] = t.id, e[8] = i, e[9] = m) : m = e[9];
46
46
  let b;
47
- e[10] !== t.label || e[11] !== s || e[12] !== h || e[13] !== p ? (b = /* @__PURE__ */ m(le, { active: s, direction: h, onClick: p, children: t.label }), e[10] = t.label, e[11] = s, e[12] = h, e[13] = p, e[14] = b) : b = e[14];
47
+ e[10] !== t.label || e[11] !== s || e[12] !== h || e[13] !== m ? (b = /* @__PURE__ */ p(le, { active: s, direction: h, onClick: m, children: t.label }), e[10] = t.label, e[11] = s, e[12] = h, e[13] = m, e[14] = b) : b = e[14];
48
48
  let C;
49
- return e[15] !== t.align || e[16] !== c || e[17] !== g || e[18] !== b ? (C = /* @__PURE__ */ m(D, { align: t.align, style: g, sortDirection: c, children: b }), e[15] = t.align, e[16] = c, e[17] = g, e[18] = b, e[19] = C) : C = e[19], C;
49
+ return e[15] !== t.align || e[16] !== c || e[17] !== g || e[18] !== b ? (C = /* @__PURE__ */ p(D, { align: t.align, style: g, sortDirection: c, children: b }), e[15] = t.align, e[16] = c, e[17] = g, e[18] = b, e[19] = C) : C = e[19], C;
50
50
  }
51
51
  let u;
52
52
  e[20] !== t.width ? (u = {
53
53
  width: t.width
54
54
  }, e[20] = t.width, e[21] = u) : u = e[21];
55
55
  let P;
56
- return e[22] !== t.align || e[23] !== t.label || e[24] !== u ? (P = /* @__PURE__ */ m(D, { align: t.align, style: u, children: t.label }), e[22] = t.align, e[23] = t.label, e[24] = u, e[25] = P) : P = e[25], P;
56
+ return e[22] !== t.align || e[23] !== t.label || e[24] !== u ? (P = /* @__PURE__ */ p(D, { align: t.align, style: u, children: t.label }), e[22] = t.align, e[23] = t.label, e[24] = u, e[25] = P) : P = e[25], P;
57
57
  }
58
58
  function be(o) {
59
59
  return o == null ? "" : Array.isArray(o) ? `[${o.map((t) => typeof t == "string" ? `"${t}"` : String(t)).join(", ")}]` : typeof o == "object" ? JSON.stringify(o) : o;
@@ -87,7 +87,7 @@ const j = (o) => {
87
87
  children: t
88
88
  } = o;
89
89
  let n;
90
- return e[0] !== t ? (n = /* @__PURE__ */ m(re, { component: "span", variant: "body2", color: "inherit", children: t }), e[0] = t, e[1] = n) : n = e[1], n;
90
+ return e[0] !== t ? (n = /* @__PURE__ */ p(re, { component: "span", variant: "body2", color: "inherit", children: t }), e[0] = t, e[1] = n) : n = e[1], n;
91
91
  }, Ce = {
92
92
  h1: j,
93
93
  h2: j,
@@ -98,7 +98,7 @@ const j = (o) => {
98
98
  href: e
99
99
  }) => {
100
100
  const t = e?.startsWith("http");
101
- return /* @__PURE__ */ m(ie, { href: e, target: t ? "_blank" : void 0, rel: t ? "noopener noreferrer" : void 0, color: "text.primary", underline: "always", children: o });
101
+ return /* @__PURE__ */ p(ie, { href: e, target: t ? "_blank" : void 0, rel: t ? "noopener noreferrer" : void 0, color: "text.primary", underline: "always", children: o });
102
102
  },
103
103
  img: () => null,
104
104
  ul: j,
@@ -115,19 +115,19 @@ function ve(o) {
115
115
  let f;
116
116
  e[0] !== t || e[1] !== n ? (f = t.formatter(n), e[0] = t, e[1] = n, e[2] = f) : f = e[2];
117
117
  let s;
118
- return e[3] !== t.align || e[4] !== f ? (s = /* @__PURE__ */ m(D, { align: a, children: f }), e[3] = t.align, e[4] = f, e[5] = s) : s = e[5], s;
118
+ return e[3] !== t.align || e[4] !== f ? (s = /* @__PURE__ */ p(D, { align: a, children: f }), e[3] = t.align, e[4] = f, e[5] = s) : s = e[5], s;
119
119
  }
120
120
  if (typeof n == "string") {
121
121
  let a;
122
- e[6] !== n ? (a = /* @__PURE__ */ m(fe, { components: Ce, children: n }), e[6] = n, e[7] = a) : a = e[7];
122
+ e[6] !== n ? (a = /* @__PURE__ */ p(fe, { components: Ce, children: n }), e[6] = n, e[7] = a) : a = e[7];
123
123
  let f;
124
- return e[8] !== t.align || e[9] !== a ? (f = /* @__PURE__ */ m(D, { align: t.align, children: a }), e[8] = t.align, e[9] = a, e[10] = f) : f = e[10], f;
124
+ return e[8] !== t.align || e[9] !== a ? (f = /* @__PURE__ */ p(D, { align: t.align, children: a }), e[8] = t.align, e[9] = a, e[10] = f) : f = e[10], f;
125
125
  }
126
126
  const i = t.align;
127
127
  let l;
128
128
  e[11] !== n ? (l = be(n), e[11] = n, e[12] = l) : l = e[12];
129
129
  let r;
130
- return e[13] !== t.align || e[14] !== l ? (r = /* @__PURE__ */ m(D, { align: i, children: l }), e[13] = t.align, e[14] = l, e[15] = r) : r = e[15], r;
130
+ return e[13] !== t.align || e[14] !== l ? (r = /* @__PURE__ */ p(D, { align: i, children: l }), e[13] = t.align, e[14] = l, e[15] = r) : r = e[15], r;
131
131
  }
132
132
  function we(o) {
133
133
  const e = x(32), {
@@ -149,7 +149,7 @@ function we(o) {
149
149
  e[3] !== a || e[4] !== t ? (h = ($) => {
150
150
  $.stopPropagation(), a?.(t);
151
151
  }, e[3] = a, e[4] = t, e[5] = h) : h = e[5];
152
- const p = h;
152
+ const m = h;
153
153
  let b;
154
154
  e[6] !== f || e[7] !== t ? (b = () => {
155
155
  f?.(t);
@@ -159,26 +159,26 @@ function we(o) {
159
159
  e[9] !== s ? (v = () => {
160
160
  s?.();
161
161
  }, e[9] = s, e[10] = v) : v = e[10];
162
- const w = v, k = !!f || !!s || !!r, d = r ? "pointer" : "default";
163
- let _;
164
- e[11] !== d ? (_ = {
162
+ const k = v, T = !!f || !!s || !!r, d = r ? "pointer" : "default";
163
+ let S;
164
+ e[11] !== d ? (S = {
165
165
  cursor: d
166
- }, e[11] = d, e[12] = _) : _ = e[12];
167
- let T;
168
- e[13] !== p || e[14] !== c || e[15] !== t || e[16] !== u ? (T = u && /* @__PURE__ */ m(D, { padding: "checkbox", children: /* @__PURE__ */ m(K, { checked: c, onClick: p, inputProps: {
166
+ }, e[11] = d, e[12] = S) : S = e[12];
167
+ let A;
168
+ e[13] !== m || e[14] !== c || e[15] !== t || e[16] !== u ? (A = u && /* @__PURE__ */ p(D, { padding: "checkbox", children: /* @__PURE__ */ p(K, { checked: c, onClick: m, inputProps: {
169
169
  "aria-label": `select row ${t.id}`
170
- } }) }), e[13] = p, e[14] = c, e[15] = t, e[16] = u, e[17] = T) : T = e[17];
171
- let S;
170
+ } }) }), e[13] = m, e[14] = c, e[15] = t, e[16] = u, e[17] = A) : A = e[17];
171
+ let y;
172
172
  if (e[18] !== n || e[19] !== t) {
173
173
  let $;
174
- e[21] !== t ? ($ = (O) => /* @__PURE__ */ m(ve, { column: O, value: t[O.id] }, O.id), e[21] = t, e[22] = $) : $ = e[22], S = n.map($), e[18] = n, e[19] = t, e[20] = S;
174
+ e[21] !== t ? ($ = (O) => /* @__PURE__ */ p(ve, { column: O, value: t[O.id] }, O.id), e[21] = t, e[22] = $) : $ = e[22], y = n.map($), e[18] = n, e[19] = t, e[20] = y;
175
175
  } else
176
- S = e[20];
177
- let A;
178
- return e[23] !== g || e[24] !== C || e[25] !== w || e[26] !== c || e[27] !== T || e[28] !== S || e[29] !== k || e[30] !== _ ? (A = /* @__PURE__ */ G(J, { hover: k, selected: c, onClick: g, onMouseEnter: C, onMouseLeave: w, sx: _, children: [
179
- T,
180
- S
181
- ] }), e[23] = g, e[24] = C, e[25] = w, e[26] = c, e[27] = T, e[28] = S, e[29] = k, e[30] = _, e[31] = A) : A = e[31], A;
176
+ y = e[20];
177
+ let w;
178
+ return e[23] !== g || e[24] !== C || e[25] !== k || e[26] !== c || e[27] !== A || e[28] !== y || e[29] !== T || e[30] !== S ? (w = /* @__PURE__ */ G(J, { hover: T, selected: c, onClick: g, onMouseEnter: C, onMouseLeave: k, sx: S, children: [
179
+ A,
180
+ y
181
+ ] }), e[23] = g, e[24] = C, e[25] = k, e[26] = c, e[27] = A, e[28] = y, e[29] = T, e[30] = S, e[31] = w) : w = e[31], w;
182
182
  }
183
183
  function V(o) {
184
184
  const e = x(33), {
@@ -207,38 +207,38 @@ function V(o) {
207
207
  l(E, r);
208
208
  }, e[8] = r, e[9] = l, e[10] = g) : g = e[10];
209
209
  const h = g;
210
- let p;
211
- e[11] === Symbol.for("react.memo_cache_sentinel") ? (p = {
210
+ let m;
211
+ e[11] === Symbol.for("react.memo_cache_sentinel") ? (m = {
212
212
  flexShrink: 0,
213
213
  ml: 2.5
214
- }, e[11] = p) : p = e[11];
214
+ }, e[11] = m) : m = e[11];
215
215
  const b = n === 0;
216
216
  let C;
217
- e[12] === Symbol.for("react.memo_cache_sentinel") ? (C = /* @__PURE__ */ m(ue, {}), e[12] = C) : C = e[12];
217
+ e[12] === Symbol.for("react.memo_cache_sentinel") ? (C = /* @__PURE__ */ p(ue, {}), e[12] = C) : C = e[12];
218
218
  let v;
219
- e[13] !== f || e[14] !== b ? (v = /* @__PURE__ */ m(H, { onClick: f, disabled: b, "aria-label": "first page", children: C }), e[13] = f, e[14] = b, e[15] = v) : v = e[15];
220
- const w = n === 0;
221
- let k;
222
- e[16] === Symbol.for("react.memo_cache_sentinel") ? (k = /* @__PURE__ */ m(de, {}), e[16] = k) : k = e[16];
223
- let d;
224
- e[17] !== c || e[18] !== w ? (d = /* @__PURE__ */ m(H, { onClick: c, disabled: w, "aria-label": "previous page", children: k }), e[17] = c, e[18] = w, e[19] = d) : d = e[19];
225
- const _ = n >= r;
219
+ e[13] !== f || e[14] !== b ? (v = /* @__PURE__ */ p(H, { onClick: f, disabled: b, "aria-label": "first page", children: C }), e[13] = f, e[14] = b, e[15] = v) : v = e[15];
220
+ const k = n === 0;
226
221
  let T;
227
- e[20] === Symbol.for("react.memo_cache_sentinel") ? (T = /* @__PURE__ */ m(ge, {}), e[20] = T) : T = e[20];
228
- let S;
229
- e[21] !== P || e[22] !== _ ? (S = /* @__PURE__ */ m(H, { onClick: P, disabled: _, "aria-label": "next page", children: T }), e[21] = P, e[22] = _, e[23] = S) : S = e[23];
230
- const A = n >= r;
222
+ e[16] === Symbol.for("react.memo_cache_sentinel") ? (T = /* @__PURE__ */ p(de, {}), e[16] = T) : T = e[16];
223
+ let d;
224
+ e[17] !== c || e[18] !== k ? (d = /* @__PURE__ */ p(H, { onClick: c, disabled: k, "aria-label": "previous page", children: T }), e[17] = c, e[18] = k, e[19] = d) : d = e[19];
225
+ const S = n >= r;
226
+ let A;
227
+ e[20] === Symbol.for("react.memo_cache_sentinel") ? (A = /* @__PURE__ */ p(ge, {}), e[20] = A) : A = e[20];
228
+ let y;
229
+ e[21] !== P || e[22] !== S ? (y = /* @__PURE__ */ p(H, { onClick: P, disabled: S, "aria-label": "next page", children: A }), e[21] = P, e[22] = S, e[23] = y) : y = e[23];
230
+ const w = n >= r;
231
231
  let $;
232
- e[24] === Symbol.for("react.memo_cache_sentinel") ? ($ = /* @__PURE__ */ m(he, {}), e[24] = $) : $ = e[24];
232
+ e[24] === Symbol.for("react.memo_cache_sentinel") ? ($ = /* @__PURE__ */ p(he, {}), e[24] = $) : $ = e[24];
233
233
  let O;
234
- e[25] !== h || e[26] !== A ? (O = /* @__PURE__ */ m(H, { onClick: h, disabled: A, "aria-label": "last page", children: $ }), e[25] = h, e[26] = A, e[27] = O) : O = e[27];
235
- let y;
236
- return e[28] !== d || e[29] !== S || e[30] !== O || e[31] !== v ? (y = /* @__PURE__ */ G(q, { sx: p, children: [
234
+ e[25] !== h || e[26] !== w ? (O = /* @__PURE__ */ p(H, { onClick: h, disabled: w, "aria-label": "last page", children: $ }), e[25] = h, e[26] = w, e[27] = O) : O = e[27];
235
+ let _;
236
+ return e[28] !== d || e[29] !== y || e[30] !== O || e[31] !== v ? (_ = /* @__PURE__ */ G(q, { sx: m, children: [
237
237
  v,
238
238
  d,
239
- S,
239
+ y,
240
240
  O
241
- ] }), e[28] = d, e[29] = S, e[30] = O, e[31] = v, e[32] = y) : y = e[32], y;
241
+ ] }), e[28] = d, e[29] = y, e[30] = O, e[31] = v, e[32] = _) : _ = e[32], _;
242
242
  }
243
243
  function ke(o) {
244
244
  const e = x(13), {
@@ -253,26 +253,26 @@ function ke(o) {
253
253
  e[0] !== l ? (f = l === void 0 ? [5, 10, 25, 50] : l, e[0] = l, e[1] = f) : f = e[1];
254
254
  const s = f;
255
255
  let c;
256
- e[2] !== r ? (c = (p, b) => {
256
+ e[2] !== r ? (c = (m, b) => {
257
257
  r(b);
258
258
  }, e[2] = r, e[3] = c) : c = e[3];
259
259
  const u = c;
260
260
  let P;
261
- e[4] !== a ? (P = (p) => {
262
- a(parseInt(p.target.value, 10));
261
+ e[4] !== a ? (P = (m) => {
262
+ a(parseInt(m.target.value, 10));
263
263
  }, e[4] = a, e[5] = P) : P = e[5];
264
264
  const g = P;
265
265
  let h;
266
- return e[6] !== u || e[7] !== g || e[8] !== t || e[9] !== n || e[10] !== s || e[11] !== i ? (h = /* @__PURE__ */ m(se, { component: "div", count: i, page: t, rowsPerPage: n, rowsPerPageOptions: s, onPageChange: u, onRowsPerPageChange: g, ActionsComponent: V }), e[6] = u, e[7] = g, e[8] = t, e[9] = n, e[10] = s, e[11] = i, e[12] = h) : h = e[12], h;
266
+ return e[6] !== u || e[7] !== g || e[8] !== t || e[9] !== n || e[10] !== s || e[11] !== i ? (h = /* @__PURE__ */ p(se, { component: "div", count: i, page: t, rowsPerPage: n, rowsPerPageOptions: s, onPageChange: u, onRowsPerPageChange: g, ActionsComponent: V }), e[6] = u, e[7] = g, e[8] = t, e[9] = n, e[10] = s, e[11] = i, e[12] = h) : h = e[12], h;
267
267
  }
268
268
  function Te(o) {
269
- const e = x(4), t = me(null), n = W(Ae);
269
+ const e = x(4), t = pe(null), n = W(Ae);
270
270
  let i, l;
271
271
  return e[0] !== n || e[1] !== o ? (i = () => {
272
272
  t.current && n(o, {
273
273
  refUI: t
274
274
  });
275
- }, l = [o, n], e[0] = n, e[1] = o, e[2] = i, e[3] = l) : (i = e[2], l = e[3]), pe(i, l), t;
275
+ }, l = [o, n], e[0] = n, e[1] = o, e[2] = i, e[3] = l) : (i = e[2], l = e[3]), me(i, l), t;
276
276
  }
277
277
  function Ae(o) {
278
278
  return o.setWidget;
@@ -288,7 +288,7 @@ function M(o) {
288
288
  } = o, e[0] = o, e[1] = t, e[2] = n, e[3] = i, e[4] = l) : (t = e[1], n = e[2], i = e[3], l = e[4]);
289
289
  const r = l === void 0 ? !0 : l;
290
290
  let a;
291
- return e[5] !== t || e[6] !== n || e[7] !== i || e[8] !== r ? (a = /* @__PURE__ */ m(Q, { stickyHeader: r, ref: i, ...n, children: t }), e[5] = t, e[6] = n, e[7] = i, e[8] = r, e[9] = a) : a = e[9], a;
291
+ return e[5] !== t || e[6] !== n || e[7] !== i || e[8] !== r ? (a = /* @__PURE__ */ p(Q, { stickyHeader: r, ref: i, ...n, children: t }), e[5] = t, e[6] = n, e[7] = i, e[8] = r, e[9] = a) : a = e[9], a;
292
292
  }
293
293
  M.Head = X;
294
294
  M.CellHeader = Pe;
@@ -302,7 +302,7 @@ M.PaginationActions = V;
302
302
  function Ee(o) {
303
303
  const e = x(3), t = Te(o.id);
304
304
  let n;
305
- return e[0] !== o.children || e[1] !== t ? (n = /* @__PURE__ */ m(ae, { ref: t, children: o.children }), e[0] = o.children, e[1] = t, e[2] = n) : n = e[2], n;
305
+ return e[0] !== o.children || e[1] !== t ? (n = /* @__PURE__ */ p(ae, { ref: t, children: o.children }), e[0] = o.children, e[1] = t, e[2] = n) : n = e[2], n;
306
306
  }
307
307
  const $e = "local", I = 0, ee = 10, te = [5, 10, 25, 50], ne = null, oe = "asc";
308
308
  function nt({
@@ -348,36 +348,37 @@ function ot(o = []) {
348
348
  function lt(o, e) {
349
349
  const t = x(38), n = W(Oe);
350
350
  let i;
351
- t[0] !== e || t[1] !== o ? (i = (S) => {
352
- const A = S.widgets[o];
351
+ t[0] !== e || t[1] !== o ? (i = (y) => {
352
+ const w = y.widgets[o];
353
353
  return {
354
- page: A?.pagination?.page ?? I,
355
- rowsPerPage: A?.pagination?.rowsPerPage ?? ee,
356
- rowsPerPageOptions: A?.pagination?.rowsPerPageOptions ?? te,
357
- total: A?.pagination?.total ?? e.length
354
+ paginationEnabled: !!w?.pagination,
355
+ page: w?.pagination?.page ?? I,
356
+ rowsPerPage: w?.pagination?.rowsPerPage ?? ee,
357
+ rowsPerPageOptions: w?.pagination?.rowsPerPageOptions ?? te,
358
+ total: w?.pagination?.total ?? e.length
358
359
  };
359
360
  }, t[0] = e, t[1] = o, t[2] = i) : i = t[2];
360
361
  const l = W(U(i));
361
362
  let r;
362
- t[3] !== o ? (r = (S) => S.widgets[o]?.mode, t[3] = o, t[4] = r) : r = t[4];
363
+ t[3] !== o ? (r = (y) => y.widgets[o]?.mode, t[3] = o, t[4] = r) : r = t[4];
363
364
  const a = W(U(r)), f = Math.max(0, Math.ceil(l.total / (l?.rowsPerPage ?? 1)) - 1);
364
365
  let s;
365
- t[5] !== f || t[6] !== l || t[7] !== n || t[8] !== o ? (s = (S) => {
366
- const A = Math.max(0, Math.min(S, f));
366
+ t[5] !== f || t[6] !== l || t[7] !== n || t[8] !== o ? (s = (y) => {
367
+ const w = Math.max(0, Math.min(y, f));
367
368
  n(o, {
368
369
  pagination: {
369
370
  ...l,
370
- page: A
371
+ page: w
371
372
  }
372
373
  });
373
374
  }, t[5] = f, t[6] = l, t[7] = n, t[8] = o, t[9] = s) : s = t[9];
374
375
  const c = s;
375
376
  let u;
376
- t[10] !== l || t[11] !== n || t[12] !== o ? (u = (S) => {
377
+ t[10] !== l || t[11] !== n || t[12] !== o ? (u = (y) => {
377
378
  n(o, {
378
379
  pagination: {
379
380
  ...l,
380
- rowsPerPage: S
381
+ rowsPerPage: y
381
382
  }
382
383
  });
383
384
  }, t[10] = l, t[11] = n, t[12] = o, t[13] = u) : u = t[13];
@@ -385,36 +386,36 @@ function lt(o, e) {
385
386
  let g;
386
387
  t[14] !== c ? (g = () => c(0), t[14] = c, t[15] = g) : g = t[15];
387
388
  const h = g;
388
- let p;
389
- t[16] !== f || t[17] !== c ? (p = () => c(f), t[16] = f, t[17] = c, t[18] = p) : p = t[18];
390
- const b = p;
389
+ let m;
390
+ t[16] !== f || t[17] !== c ? (m = () => c(f), t[16] = f, t[17] = c, t[18] = m) : m = t[18];
391
+ const b = m;
391
392
  let C;
392
393
  t[19] !== l.page || t[20] !== c ? (C = () => c(l.page + 1), t[19] = l.page, t[20] = c, t[21] = C) : C = t[21];
393
394
  const v = C;
394
- let w;
395
- t[22] !== l.page || t[23] !== c ? (w = () => c(l.page - 1), t[22] = l.page, t[23] = c, t[24] = w) : w = t[24];
396
- const k = w;
395
+ let k;
396
+ t[22] !== l.page || t[23] !== c ? (k = () => c(l.page - 1), t[22] = l.page, t[23] = c, t[24] = k) : k = t[24];
397
+ const T = k;
397
398
  let d;
398
399
  e: {
399
- if (a === "remote") {
400
+ if (a === "remote" || !l.paginationEnabled) {
400
401
  d = e;
401
402
  break e;
402
403
  }
403
- let S;
404
- t[25] !== e || t[26] !== l.page || t[27] !== l.rowsPerPage ? (S = _e(e, l.page, l.rowsPerPage), t[25] = e, t[26] = l.page, t[27] = l.rowsPerPage, t[28] = S) : S = t[28], d = S;
404
+ let y;
405
+ t[25] !== e || t[26] !== l.page || t[27] !== l.rowsPerPage ? (y = _e(e, l.page, l.rowsPerPage), t[25] = e, t[26] = l.page, t[27] = l.rowsPerPage, t[28] = y) : y = t[28], d = y;
405
406
  }
406
- const _ = d;
407
- let T;
408
- return t[29] !== h || t[30] !== b || t[31] !== v || t[32] !== k || t[33] !== _ || t[34] !== l || t[35] !== c || t[36] !== P ? (T = {
407
+ const S = d;
408
+ let A;
409
+ return t[29] !== h || t[30] !== b || t[31] !== v || t[32] !== T || t[33] !== S || t[34] !== l || t[35] !== c || t[36] !== P ? (A = {
409
410
  ...l,
410
- paginatedData: _,
411
+ paginatedData: S,
411
412
  setPage: c,
412
413
  setRowsPerPage: P,
413
414
  goToFirstPage: h,
414
415
  goToLastPage: b,
415
416
  goToNextPage: v,
416
- goToPreviousPage: k
417
- }, t[29] = h, t[30] = b, t[31] = v, t[32] = k, t[33] = _, t[34] = l, t[35] = c, t[36] = P, t[37] = T) : T = t[37], T;
417
+ goToPreviousPage: T
418
+ }, t[29] = h, t[30] = b, t[31] = v, t[32] = T, t[33] = S, t[34] = l, t[35] = c, t[36] = P, t[37] = A) : A = t[37], A;
418
419
  }
419
420
  function Oe(o) {
420
421
  return o.setWidget;
@@ -428,10 +429,11 @@ function it(o, e, t) {
428
429
  } = i, r = W(xe), a = W(Re);
429
430
  let f;
430
431
  n[2] !== o ? (f = (d) => {
431
- const _ = d.widgets[o];
432
+ const S = d.widgets[o];
432
433
  return {
433
- columnId: _?.sort?.columnId ?? ne,
434
- direction: _?.sort?.direction ?? oe
434
+ sortEnabled: !!S?.sort,
435
+ columnId: S?.sort?.columnId ?? ne,
436
+ direction: S?.sort?.direction ?? oe
435
437
  };
436
438
  }, n[2] = o, n[3] = f) : f = n[3];
437
439
  const s = W(U(f));
@@ -440,27 +442,27 @@ function it(o, e, t) {
440
442
  const u = W(U(c));
441
443
  let P;
442
444
  n[6] !== u || n[7] !== l || n[8] !== r || n[9] !== s || n[10] !== o ? (P = (d) => {
443
- let _ = "asc";
444
- s.columnId === d && (_ = s.direction === "asc" ? "desc" : "asc"), r(o, {
445
+ let S = "asc";
446
+ s.columnId === d && (S = s.direction === "asc" ? "desc" : "asc"), r(o, {
445
447
  sort: {
446
448
  ...s,
447
449
  columnId: d,
448
- direction: _
450
+ direction: S
449
451
  }
450
- }), u === "remote" && l && l(d, _);
452
+ }), u === "remote" && l && l(d, S);
451
453
  }, n[6] = u, n[7] = l, n[8] = r, n[9] = s, n[10] = o, n[11] = P) : P = n[11];
452
454
  const g = P;
453
455
  let h;
454
- n[12] !== u || n[13] !== l || n[14] !== r || n[15] !== s || n[16] !== o ? (h = (d, _) => {
456
+ n[12] !== u || n[13] !== l || n[14] !== r || n[15] !== s || n[16] !== o ? (h = (d, S) => {
455
457
  r(o, {
456
458
  sort: {
457
459
  ...s,
458
460
  columnId: d,
459
- direction: _
461
+ direction: S
460
462
  }
461
- }), u === "remote" && l && d && l(d, _);
463
+ }), u === "remote" && l && d && l(d, S);
462
464
  }, n[12] = u, n[13] = l, n[14] = r, n[15] = s, n[16] = o, n[17] = h) : h = n[17];
463
- const p = h;
465
+ const m = h;
464
466
  let b;
465
467
  n[18] !== a || n[19] !== r || n[20] !== o ? (b = () => {
466
468
  const d = a(o);
@@ -475,22 +477,22 @@ function it(o, e, t) {
475
477
  const C = b;
476
478
  let v;
477
479
  e: {
478
- if (u === "remote" || !s.columnId) {
480
+ if (u === "remote" || !s.columnId || !s.sortEnabled) {
479
481
  v = e;
480
482
  break e;
481
483
  }
482
484
  let d;
483
485
  n[22] !== e || n[23] !== s.columnId || n[24] !== s.direction ? (d = ye(e, s.columnId, s.direction), n[22] = e, n[23] = s.columnId, n[24] = s.direction, n[25] = d) : d = n[25], v = d;
484
486
  }
485
- const w = v;
486
- let k;
487
- return n[26] !== C || n[27] !== p || n[28] !== s || n[29] !== w || n[30] !== g ? (k = {
487
+ const k = v;
488
+ let T;
489
+ return n[26] !== C || n[27] !== m || n[28] !== s || n[29] !== k || n[30] !== g ? (T = {
488
490
  ...s,
489
- sortedData: w,
491
+ sortedData: k,
490
492
  toggleSort: g,
491
- setSort: p,
493
+ setSort: m,
492
494
  clearSort: C
493
- }, n[26] = C, n[27] = p, n[28] = s, n[29] = w, n[30] = g, n[31] = k) : k = n[31], k;
495
+ }, n[26] = C, n[27] = m, n[28] = s, n[29] = k, n[30] = g, n[31] = T) : T = n[31], T;
494
496
  }
495
497
  function Re(o) {
496
498
  return o.getWidget;
@@ -506,77 +508,77 @@ function rt(o, e) {
506
508
  onSelectionChange: i
507
509
  } = n, l = W(Le), r = W(We);
508
510
  let a;
509
- t[2] !== o ? (a = (y) => y.widgets[o]?.selected, t[2] = o, t[3] = a) : a = t[3];
511
+ t[2] !== o ? (a = (_) => _.widgets[o]?.selected, t[2] = o, t[3] = a) : a = t[3];
510
512
  const f = W(U(a));
511
513
  let s;
512
514
  t[4] !== f ? (s = f ?? /* @__PURE__ */ new Set(), t[4] = f, t[5] = s) : s = t[5];
513
515
  const c = s;
514
516
  let u;
515
- t[6] !== c ? (u = (y) => c.has(y), t[6] = c, t[7] = u) : u = t[7];
517
+ t[6] !== c ? (u = (_) => c.has(_), t[6] = c, t[7] = u) : u = t[7];
516
518
  const P = u;
517
519
  let g;
518
- t[8] !== c ? (g = (y) => y.length === 0 ? !1 : y.every((E) => c.has(E.id)), t[8] = c, t[9] = g) : g = t[9];
520
+ t[8] !== c ? (g = (_) => _.length === 0 ? !1 : _.every((E) => c.has(E.id)), t[8] = c, t[9] = g) : g = t[9];
519
521
  const h = g;
520
- let p;
521
- t[10] !== c ? (p = (y) => {
522
- if (y.length === 0)
522
+ let m;
523
+ t[10] !== c ? (m = (_) => {
524
+ if (_.length === 0)
523
525
  return !1;
524
- const E = y.filter((L) => c.has(L.id)).length;
525
- return E > 0 && E < y.length;
526
- }, t[10] = c, t[11] = p) : p = t[11];
527
- const b = p;
526
+ const E = _.filter((L) => c.has(L.id)).length;
527
+ return E > 0 && E < _.length;
528
+ }, t[10] = c, t[11] = m) : m = t[11];
529
+ const b = m;
528
530
  let C;
529
- t[12] !== r || t[13] !== i || t[14] !== l || t[15] !== o ? (C = (y) => {
531
+ t[12] !== r || t[13] !== i || t[14] !== l || t[15] !== o ? (C = (_) => {
530
532
  const L = r(o)?.selected ?? /* @__PURE__ */ new Set(), R = new Set(L);
531
- R.has(y) ? R.delete(y) : R.add(y), l(o, {
533
+ R.has(_) ? R.delete(_) : R.add(_), l(o, {
532
534
  selected: R
533
535
  }), i && i(R);
534
536
  }, t[12] = r, t[13] = i, t[14] = l, t[15] = o, t[16] = C) : C = t[16];
535
537
  const v = C;
536
- let w;
537
- t[17] !== r || t[18] !== i || t[19] !== l || t[20] !== o ? (w = (y) => {
538
- const L = r(o)?.selected ?? /* @__PURE__ */ new Set(), R = y.every((F) => L.has(F.id)), N = new Set(L);
539
- R ? y.forEach((F) => N.delete(F.id)) : y.forEach((F) => N.add(F.id)), l(o, {
538
+ let k;
539
+ t[17] !== r || t[18] !== i || t[19] !== l || t[20] !== o ? (k = (_) => {
540
+ const L = r(o)?.selected ?? /* @__PURE__ */ new Set(), R = _.every((F) => L.has(F.id)), N = new Set(L);
541
+ R ? _.forEach((F) => N.delete(F.id)) : _.forEach((F) => N.add(F.id)), l(o, {
540
542
  selected: N
541
543
  }), i && i(N);
542
- }, t[17] = r, t[18] = i, t[19] = l, t[20] = o, t[21] = w) : w = t[21];
543
- const k = w;
544
+ }, t[17] = r, t[18] = i, t[19] = l, t[20] = o, t[21] = k) : k = t[21];
545
+ const T = k;
544
546
  let d;
545
- t[22] !== r || t[23] !== i || t[24] !== l || t[25] !== o ? (d = (y) => {
547
+ t[22] !== r || t[23] !== i || t[24] !== l || t[25] !== o ? (d = (_) => {
546
548
  const L = r(o)?.selected ?? /* @__PURE__ */ new Set(), R = new Set(L);
547
- y.forEach((N) => R.add(N)), l(o, {
549
+ _.forEach((N) => R.add(N)), l(o, {
548
550
  selected: R
549
551
  }), i && i(R);
550
552
  }, t[22] = r, t[23] = i, t[24] = l, t[25] = o, t[26] = d) : d = t[26];
551
- const _ = d;
552
- let T;
553
- t[27] !== r || t[28] !== i || t[29] !== l || t[30] !== o ? (T = (y) => {
553
+ const S = d;
554
+ let A;
555
+ t[27] !== r || t[28] !== i || t[29] !== l || t[30] !== o ? (A = (_) => {
554
556
  const L = r(o)?.selected ?? /* @__PURE__ */ new Set(), R = new Set(L);
555
- y.forEach((N) => R.delete(N)), l(o, {
557
+ _.forEach((N) => R.delete(N)), l(o, {
556
558
  selected: R
557
559
  }), i && i(R);
558
- }, t[27] = r, t[28] = i, t[29] = l, t[30] = o, t[31] = T) : T = t[31];
559
- const S = T;
560
- let A;
561
- t[32] !== i || t[33] !== l || t[34] !== o ? (A = () => {
562
- const y = /* @__PURE__ */ new Set();
560
+ }, t[27] = r, t[28] = i, t[29] = l, t[30] = o, t[31] = A) : A = t[31];
561
+ const y = A;
562
+ let w;
563
+ t[32] !== i || t[33] !== l || t[34] !== o ? (w = () => {
564
+ const _ = /* @__PURE__ */ new Set();
563
565
  l(o, {
564
- selected: y
565
- }), i && i(y);
566
- }, t[32] = i, t[33] = l, t[34] = o, t[35] = A) : A = t[35];
567
- const $ = A;
566
+ selected: _
567
+ }), i && i(_);
568
+ }, t[32] = i, t[33] = l, t[34] = o, t[35] = w) : w = t[35];
569
+ const $ = w;
568
570
  let O;
569
- return t[36] !== $ || t[37] !== S || t[38] !== h || t[39] !== b || t[40] !== P || t[41] !== _ || t[42] !== c || t[43] !== k || t[44] !== v ? (O = {
571
+ return t[36] !== $ || t[37] !== y || t[38] !== h || t[39] !== b || t[40] !== P || t[41] !== S || t[42] !== c || t[43] !== T || t[44] !== v ? (O = {
570
572
  selectedIds: c,
571
573
  isSelected: P,
572
574
  isAllSelected: h,
573
575
  isIndeterminate: b,
574
576
  toggleRow: v,
575
- toggleAll: k,
576
- selectRows: _,
577
- deselectRows: S,
577
+ toggleAll: T,
578
+ selectRows: S,
579
+ deselectRows: y,
578
580
  clearSelection: $
579
- }, t[36] = $, t[37] = S, t[38] = h, t[39] = b, t[40] = P, t[41] = _, t[42] = c, t[43] = k, t[44] = v, t[45] = O) : O = t[45], O;
581
+ }, t[36] = $, t[37] = y, t[38] = h, t[39] = b, t[40] = P, t[41] = S, t[42] = c, t[43] = T, t[44] = v, t[45] = O) : O = t[45], O;
580
582
  }
581
583
  function We(o) {
582
584
  return o.getWidget;
@@ -590,7 +592,7 @@ function st(o) {
590
592
  rows: n
591
593
  } = o, i = t === void 0 ? 4 : t, l = n === void 0 ? 5 : n;
592
594
  let r;
593
- e[0] !== i ? (r = /* @__PURE__ */ m(X, { children: /* @__PURE__ */ m(J, { children: Array.from({
595
+ e[0] !== i ? (r = /* @__PURE__ */ p(X, { children: /* @__PURE__ */ p(J, { children: Array.from({
594
596
  length: i
595
597
  }).map(Me) }) }), e[0] = i, e[1] = r) : r = e[1];
596
598
  let a;
@@ -598,20 +600,20 @@ function st(o) {
598
600
  length: l
599
601
  }), e[2] = l, e[3] = a) : a = e[3];
600
602
  let f;
601
- e[4] !== i || e[5] !== a ? (f = /* @__PURE__ */ m(Y, { children: a.map((c, u) => /* @__PURE__ */ m(J, { children: Array.from({
603
+ e[4] !== i || e[5] !== a ? (f = /* @__PURE__ */ p(Y, { children: a.map((c, u) => /* @__PURE__ */ p(J, { children: Array.from({
602
604
  length: i
603
605
  }).map(De) }, u)) }), e[4] = i, e[5] = a, e[6] = f) : f = e[6];
604
606
  let s;
605
- return e[7] !== r || e[8] !== f ? (s = /* @__PURE__ */ m(q, { "aria-label": "Table skeleton", children: /* @__PURE__ */ G(Q, { children: [
607
+ return e[7] !== r || e[8] !== f ? (s = /* @__PURE__ */ p(q, { "aria-label": "Table skeleton", children: /* @__PURE__ */ G(Q, { children: [
606
608
  r,
607
609
  f
608
610
  ] }) }), e[7] = r, e[8] = f, e[9] = s) : s = e[9], s;
609
611
  }
610
612
  function De(o, e) {
611
- return /* @__PURE__ */ m(D, { children: /* @__PURE__ */ m(Z, { width: "70%", height: 20 }) }, e);
613
+ return /* @__PURE__ */ p(D, { children: /* @__PURE__ */ p(Z, { width: "70%", height: 20 }) }, e);
612
614
  }
613
615
  function Me(o, e) {
614
- return /* @__PURE__ */ m(D, { children: /* @__PURE__ */ m(Z, { width: "80%", height: 24 }) }, e);
616
+ return /* @__PURE__ */ p(D, { children: /* @__PURE__ */ p(Z, { width: "80%", height: 24 }) }, e);
615
617
  }
616
618
  function Ne(o) {
617
619
  const e = {
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../src/widgets/table/components/cell-header.tsx","../../src/widgets/table/helpers.ts","../../src/widgets/table/components/cell.tsx","../../src/widgets/table/components/row.tsx","../../src/widgets/table/components/pagination-actions.tsx","../../src/widgets/table/components/pagination.tsx","../../src/hooks/use-widget-ref.ts","../../src/widgets/table/table-ui.tsx","../../src/widgets/table/config.ts","../../src/widgets/table/hooks/use-pagination.ts","../../src/widgets/table/hooks/use-sort.ts","../../src/widgets/table/hooks/use-selection.ts","../../src/widgets/table/skeleton.tsx","../../src/widgets/table/serializer.ts","../../src/widgets/table/style.ts"],"sourcesContent":["import { TableCell, TableSortLabel, Checkbox } from '@mui/material'\nimport type { CellHeaderProps } from '../types'\n\n/**\n * Table cell header component with optional sorting and select-all checkbox\n */\nexport function CellHeader({\n column,\n sortState,\n onSort,\n isSelectAll,\n isAllSelected,\n isIndeterminate,\n onSelectAll,\n}: CellHeaderProps) {\n // Render select-all checkbox\n if (isSelectAll) {\n return (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={onSelectAll}\n inputProps={{ 'aria-label': 'select all rows' }}\n />\n </TableCell>\n )\n }\n\n const isSorted = sortState?.columnId === column.id\n const sortDirection = isSorted ? sortState.direction : undefined\n\n // Render sortable column header\n if (column.sortable && onSort) {\n return (\n <TableCell\n align={column.align}\n style={{ width: column.width }}\n sortDirection={sortDirection}\n >\n <TableSortLabel\n active={isSorted}\n direction={sortDirection ?? 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n </TableCell>\n )\n }\n\n // Render non-sortable column header\n return (\n <TableCell align={column.align} style={{ width: column.width }}>\n {column.label}\n </TableCell>\n )\n}\n","import type { ReactNode } from 'react'\n\n/**\n * Get formatted cell value for display\n * Handles primitives, arrays, objects, and custom formatters\n *\n * @param cellValue - Raw cell value\n * @param formatter - Optional formatter function\n * @returns Formatted value for display\n */\nexport function getCellValue<T>(cellValue: T): ReactNode {\n // Handle null/undefined\n if (cellValue === null || cellValue === undefined) {\n return ''\n }\n\n // Handle arrays - format as [item1, item2, ...]\n if (Array.isArray(cellValue)) {\n const formatted = cellValue\n .map((item) => (typeof item === 'string' ? `\"${item}\"` : String(item)))\n .join(', ')\n return `[${formatted}]`\n }\n\n // Handle objects - stringify to JSON\n if (typeof cellValue === 'object') {\n return JSON.stringify(cellValue)\n }\n\n // Return primitives as-is (string, number, boolean)\n return cellValue as ReactNode\n}\n\n/**\n * Compare two values for sorting\n * Handles strings, numbers, and other types\n *\n * @param a - First value\n * @param b - Second value\n * @param direction - Sort direction\n * @returns Comparison result (-1, 0, 1)\n */\nexport function compareValues(\n a: unknown,\n b: unknown,\n direction: 'asc' | 'desc',\n): number {\n // Handle null/undefined - always sort to end\n if (a === null || a === undefined) return 1\n if (b === null || b === undefined) return -1\n\n let comparison = 0\n\n if (typeof a === 'string' && typeof b === 'string') {\n comparison = a.localeCompare(b)\n } else if (typeof a === 'number' && typeof b === 'number') {\n comparison = a - b\n } else if (typeof a === 'boolean' && typeof b === 'boolean') {\n comparison = a === b ? 0 : a ? 1 : -1\n } else if (typeof a === 'object' || typeof b === 'object') {\n // Compare objects/arrays as JSON strings\n const strA = JSON.stringify(a)\n const strB = JSON.stringify(b)\n comparison = strA.localeCompare(strB)\n } else {\n // Fallback for other primitives (bigint, symbol, etc.)\n comparison = 0\n }\n\n return direction === 'asc' ? comparison : -comparison\n}\n\n/**\n * Sort data array by column\n *\n * @param data - Data array to sort\n * @param columnId - Column ID to sort by\n * @param direction - Sort direction\n * @returns Sorted data array (new array, does not mutate original)\n */\nexport function sortData<T extends Record<string, unknown>>(\n data: T[],\n columnId: string,\n direction: 'asc' | 'desc',\n): T[] {\n return [...data].sort((a, b) =>\n compareValues(a[columnId], b[columnId], direction),\n )\n}\n\n/**\n * Paginate data array\n *\n * @param data - Data array to paginate\n * @param page - Current page (0-indexed)\n * @param rowsPerPage - Number of rows per page\n * @returns Paginated data slice\n */\nexport function paginateData<T>(\n data: T[],\n page: number,\n rowsPerPage: number,\n): T[] {\n const start = page * rowsPerPage\n const end = start + rowsPerPage\n return data.slice(start, end)\n}\n","import { TableCell as MuiTableCell, Link, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport type { TableColumn } from '../types'\nimport { getCellValue } from '../helpers'\nimport type { ReactNode } from 'react'\n\n/**\n * Props for Cell component\n */\nexport interface CellProps {\n /** Column definition */\n column: TableColumn\n /** Cell value */\n value: unknown\n}\n\nconst DEFAULT_P = ({ children }: { children?: ReactNode }) => (\n <Typography component='span' variant='body2' color='inherit'>\n {children}\n </Typography>\n)\n\n/**\n * Markdown components for cell content\n * Uses compact styling suitable for table cells (reusing Note widget pattern)\n */\nconst CELL_MARKDOWN_COMPONENTS: Components = {\n h1: DEFAULT_P,\n h2: DEFAULT_P,\n h3: DEFAULT_P,\n p: DEFAULT_P,\n a: ({ children, href }) => {\n const isExternal = href?.startsWith('http')\n return (\n <Link\n href={href}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n color='text.primary'\n underline='always'\n >\n {children}\n </Link>\n )\n },\n img: () => null,\n ul: DEFAULT_P,\n ol: DEFAULT_P,\n li: DEFAULT_P,\n}\n\n/**\n * Table cell component with automatic markdown support for string values\n * Markdown is rendered when the raw value is a string and no formatter is defined.\n * If a formatter is used, its output is rendered directly without markdown parsing.\n */\nexport function Cell({ column, value }: CellProps) {\n // If formatter is defined, use it directly without markdown\n if (column.formatter) {\n return (\n <MuiTableCell align={column.align}>\n {column.formatter(value)}\n </MuiTableCell>\n )\n }\n\n // For string values without formatter, render as markdown\n if (typeof value === 'string') {\n return (\n <MuiTableCell align={column.align}>\n <ReactMarkdown components={CELL_MARKDOWN_COMPONENTS}>\n {value}\n </ReactMarkdown>\n </MuiTableCell>\n )\n }\n\n // For non-string values, render directly\n return <MuiTableCell align={column.align}>{getCellValue(value)}</MuiTableCell>\n}\n","import { TableRow as MuiTableRow, TableCell, Checkbox } from '@mui/material'\nimport type { RowProps } from '../types'\nimport { Cell } from './cell'\n\n/**\n * Table row component with selection and hover support\n */\nexport function Row({\n row,\n columns,\n isSelected = false,\n selectable = false,\n onClick,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n}: RowProps) {\n const handleClick = () => {\n onClick?.(row)\n }\n\n const handleCheckboxClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n onSelect?.(row)\n }\n\n const handleMouseEnter = () => {\n onMouseEnter?.(row)\n }\n\n const handleMouseLeave = () => {\n onMouseLeave?.()\n }\n\n return (\n <MuiTableRow\n hover={!!onMouseEnter || !!onMouseLeave || !!onClick}\n selected={isSelected}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n sx={{\n cursor: onClick ? 'pointer' : 'default',\n }}\n >\n {selectable && (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isSelected}\n onClick={handleCheckboxClick}\n inputProps={{ 'aria-label': `select row ${row.id}` }}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <Cell key={column.id} column={column} value={row[column.id]} />\n ))}\n </MuiTableRow>\n )\n}\n","import { Box, IconButton } from '@mui/material'\nimport FirstPageIcon from '@mui/icons-material/FirstPage'\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'\nimport LastPageIcon from '@mui/icons-material/LastPage'\nimport type { PaginationActionsProps } from '../types'\n\n/**\n * Custom pagination actions with first/prev/next/last buttons\n */\nexport function PaginationActions({\n count,\n page,\n rowsPerPage,\n onPageChange,\n}: PaginationActionsProps) {\n const lastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1)\n\n const handleFirstPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handlePreviousPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, lastPage)\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton\n onClick={handleFirstPage}\n disabled={page === 0}\n aria-label='first page'\n >\n <FirstPageIcon />\n </IconButton>\n <IconButton\n onClick={handlePreviousPage}\n disabled={page === 0}\n aria-label='previous page'\n >\n <KeyboardArrowLeft />\n </IconButton>\n <IconButton\n onClick={handleNextPage}\n disabled={page >= lastPage}\n aria-label='next page'\n >\n <KeyboardArrowRight />\n </IconButton>\n <IconButton\n onClick={handleLastPage}\n disabled={page >= lastPage}\n aria-label='last page'\n >\n <LastPageIcon />\n </IconButton>\n </Box>\n )\n}\n","import { TablePagination as MuiTablePagination } from '@mui/material'\nimport type { PaginationProps } from '../types'\nimport { PaginationActions } from './pagination-actions'\n\n/**\n * Table pagination component\n */\nexport function Pagination({\n page,\n rowsPerPage,\n total,\n rowsPerPageOptions = [5, 10, 25, 50],\n onPageChange,\n onRowsPerPageChange,\n}: PaginationProps) {\n const handlePageChange = (\n _event: React.MouseEvent<HTMLButtonElement> | null,\n newPage: number,\n ) => {\n onPageChange(newPage)\n }\n\n const handleRowsPerPageChange = (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n onRowsPerPageChange(parseInt(event.target.value, 10))\n }\n\n return (\n <MuiTablePagination\n component='div'\n count={total}\n page={page}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n onPageChange={handlePageChange}\n onRowsPerPageChange={handleRowsPerPageChange}\n ActionsComponent={PaginationActions}\n />\n )\n}\n","import { useEffect, useRef } from 'react'\nimport { useWidgetStore } from '../widgets/stores/widget-store'\n\n/**\n * Custom hook for registering a DOM element ref with the widget store.\n * This allows other parts of the application to access the widget's DOM element.\n *\n * @param widgetId - The widget ID to register the ref under\n * @returns A ref object to attach to the DOM element\n *\n * @example\n * ```tsx\n * function MyWidget({ id }: { id: string }) {\n * const ref = useWidgetRef<HTMLDivElement>(id)\n *\n * return <div ref={ref}>Widget content</div>\n * }\n * ```\n */\nexport function useWidgetRef<T extends HTMLElement = HTMLElement>(\n widgetId: string,\n) {\n const ref = useRef<T | null>(null)\n const setWidget = useWidgetStore((store) => store.setWidget)\n\n useEffect(() => {\n if (ref.current) {\n setWidget(widgetId, { refUI: ref })\n }\n }, [widgetId, setWidget])\n\n return ref\n}\n","import {\n Table as MuiTable,\n TableBody,\n TableCell,\n TableHead,\n TableContainer as MuiTableContainer,\n Paper,\n type TableProps as MuiTableProps,\n} from '@mui/material'\nimport type { Ref } from 'react'\nimport { CellHeader } from './components/cell-header'\nimport { Row } from './components/row'\nimport { Pagination } from './components/pagination'\nimport { PaginationActions } from './components/pagination-actions'\nimport { useWidgetRef } from '../../hooks'\nimport type { TableUIProps } from './types'\n\n/**\n * Props for the base Table component\n */\nexport interface TableComponentProps extends MuiTableProps {\n /** Table element ref */\n ref?: Ref<HTMLTableElement>\n}\n\n/**\n * Base Table component with compound component pattern\n * Provides Table.Head, Table.Body, Table.Row, Table.Cell, Table.CellHeader, Table.Pagination\n */\nfunction Table({\n children,\n ref,\n stickyHeader = true,\n ...props\n}: TableComponentProps) {\n return (\n <MuiTable stickyHeader={stickyHeader} ref={ref} {...props}>\n {children}\n </MuiTable>\n )\n}\n\n// Attach sub-components as static properties\nTable.Head = TableHead\nTable.CellHeader = CellHeader\nTable.Body = TableBody\nTable.Row = Row\nTable.Cell = TableCell\nTable.Container = TableContainer\nTable.Paper = Paper\nTable.Pagination = Pagination\nTable.PaginationActions = PaginationActions\n\nexport { Table }\n\n/**\n * TableContainer widget component\n * Integrates with widget store and provides ref registration using custom hook\n */\nfunction TableContainer(props: TableUIProps) {\n const ref = useWidgetRef<HTMLDivElement>(props.id)\n\n return <MuiTableContainer ref={ref}>{props.children}</MuiTableContainer>\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../root/types'\nimport type {\n TableDownloadConfig,\n TableWidgetConfig,\n TableColumn,\n Mode,\n SortDirection,\n} from './types'\n\nexport const DEFAULT_MODE: Mode = 'local'\nexport const DEFAULT_PAGE = 0\nexport const DEFAULT_ROWS_PER_PAGE = 10\nexport const DEFAULT_ROWS_PER_PAGE_OPTIONS = [5, 10, 25, 50]\n\nexport const DEFAULT_COLUMN_ID = null\nexport const DEFAULT_DIRECTION: SortDirection = 'asc'\n\n/**\n * Default table download configuration\n * Supports PNG export (screenshot) and CSV export (data)\n */\nexport function tableDownloadConfig({\n refUI,\n}: ConfigProps): TableDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length) {\n return downloadToCSV.modifier([])\n }\n\n // Convert table data to CSV format\n // First row contains headers (column keys)\n const firstRow = data[0]\n if (!firstRow) {\n return downloadToCSV.modifier([])\n }\n\n const headers = Object.keys(firstRow).filter((key) => key !== 'id')\n const rows = data.map((row) =>\n headers.map((header) => {\n const value = row[header]\n if (value === null || value === undefined) return ''\n if (typeof value === 'object') return JSON.stringify(value)\n return value\n }),\n )\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\n/**\n * Default table widget configuration\n */\nexport function tableConfig(columns: TableColumn[] = []): TableWidgetConfig {\n return {\n columns,\n selectable: false,\n selected: new Set(),\n mode: DEFAULT_MODE,\n pagination: {\n page: DEFAULT_PAGE,\n rowsPerPageOptions: DEFAULT_ROWS_PER_PAGE_OPTIONS,\n rowsPerPage: DEFAULT_ROWS_PER_PAGE,\n total: 0,\n },\n sort: {\n columnId: DEFAULT_COLUMN_ID,\n direction: DEFAULT_DIRECTION,\n },\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { paginateData } from '../helpers'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport {\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_ROWS_PER_PAGE_OPTIONS,\n} from '../config'\n\nexport interface UsePaginationResult<T> {\n /** Current page (0-indexed) */\n page: number\n /** Rows per page */\n rowsPerPage: number\n /** Total row count */\n total: number\n /** Available rows per page options */\n rowsPerPageOptions: number[]\n /** Paginated data (for local mode) */\n paginatedData: T[]\n /** Set current page */\n setPage: (page: number) => void\n /** Set rows per page */\n setRowsPerPage: (rowsPerPage: number) => void\n /** Go to first page */\n goToFirstPage: () => void\n /** Go to last page */\n goToLastPage: () => void\n /** Go to next page */\n goToNextPage: () => void\n /** Go to previous page */\n goToPreviousPage: () => void\n}\n\n/**\n * Hook for managing table pagination\n * Supports both local (client-side) and remote (server-side) pagination\n * State is persisted in the widget store for the given widgetId\n */\nexport function usePagination<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UsePaginationResult<T> {\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const paginationState = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return {\n page: widget?.pagination?.page ?? DEFAULT_PAGE,\n rowsPerPage: widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE,\n rowsPerPageOptions:\n widget?.pagination?.rowsPerPageOptions ??\n DEFAULT_ROWS_PER_PAGE_OPTIONS,\n total: widget?.pagination?.total ?? data.length,\n } as NonNullable<Required<TableWidgetState['pagination']>>\n }),\n )\n\n const mode = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.mode\n }),\n )\n\n // Calculate max page\n const maxPage = Math.max(\n 0,\n Math.ceil(paginationState.total / (paginationState?.rowsPerPage ?? 1)) - 1,\n )\n\n // Set page with bounds checking\n const setPage = useCallback(\n (newPage: number) => {\n const boundedPage = Math.max(0, Math.min(newPage, maxPage))\n\n setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...paginationState,\n page: boundedPage,\n },\n })\n },\n [maxPage, paginationState, setWidget, widgetId],\n )\n\n // Set rows per page and reset to first page\n const setRowsPerPage = useCallback(\n (newRowsPerPage: number) => {\n setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...paginationState,\n rowsPerPage: newRowsPerPage,\n },\n })\n },\n [paginationState, setWidget, widgetId],\n )\n\n // Navigation helpers\n const goToFirstPage = useCallback(() => setPage(0), [setPage])\n const goToLastPage = useCallback(() => setPage(maxPage), [setPage, maxPage])\n const goToNextPage = useCallback(\n () => setPage(paginationState.page + 1),\n [setPage, paginationState.page],\n )\n const goToPreviousPage = useCallback(\n () => setPage(paginationState.page - 1),\n [setPage, paginationState.page],\n )\n\n // Paginated data for local mode\n const paginatedData = useMemo(() => {\n if (mode === 'remote') {\n // For remote mode, data is already paginated from server\n return data\n }\n return paginateData(data, paginationState.page, paginationState.rowsPerPage)\n }, [data, mode, paginationState.page, paginationState.rowsPerPage])\n\n return {\n ...paginationState,\n paginatedData,\n setPage,\n setRowsPerPage,\n goToFirstPage,\n goToLastPage,\n goToNextPage,\n goToPreviousPage,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type {\n TableRow,\n SortDirection,\n SortState,\n TableWidgetState,\n} from '../types'\nimport { sortData } from '../helpers'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport { DEFAULT_COLUMN_ID, DEFAULT_DIRECTION } from '../config'\n\nexport interface UseSortOptions {\n /** Callback when sort changes (for remote sorting) */\n onSortChange?: (columnId: string, direction: SortDirection) => void\n}\n\nexport interface UseSortResult<T> extends SortState {\n /** Current sort state */\n /** Sorted data (for local mode) */\n sortedData: T[]\n /** Toggle sort on a column */\n toggleSort: (columnId: string) => void\n /** Set sort state directly */\n setSort: (columnId: string | null, direction: SortDirection) => void\n /** Clear sort */\n clearSort: () => void\n}\n\n/**\n * Hook for managing table sorting\n * Supports both local (client-side) and remote (server-side) sorting\n * State is persisted in the widget store for the given widgetId\n */\nexport function useSort<T extends TableRow>(\n widgetId: string,\n data: T[],\n options?: UseSortOptions,\n): UseSortResult<T> {\n const { onSortChange } = options ?? {}\n\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const sortStoreState = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return {\n columnId: widget?.sort?.columnId ?? DEFAULT_COLUMN_ID,\n direction: widget?.sort?.direction ?? DEFAULT_DIRECTION,\n }\n }),\n )\n\n const mode = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.mode\n }),\n )\n\n // Toggle sort on a column\n const toggleSort = useCallback(\n (toggleColumnId: string) => {\n let newDirection: SortDirection = 'asc'\n\n if (sortStoreState.columnId === toggleColumnId) {\n // Same column - toggle direction\n newDirection = sortStoreState.direction === 'asc' ? 'desc' : 'asc'\n }\n\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...sortStoreState,\n columnId: toggleColumnId,\n direction: newDirection,\n },\n })\n\n if (mode === 'remote' && onSortChange) {\n onSortChange(toggleColumnId, newDirection)\n }\n },\n [mode, onSortChange, setWidget, sortStoreState, widgetId],\n )\n\n // Set sort state directly\n const setSort = useCallback(\n (newColumnId: string | null, newDirection: SortDirection) => {\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...sortStoreState,\n columnId: newColumnId,\n direction: newDirection,\n },\n })\n\n if (mode === 'remote' && onSortChange && newColumnId) {\n onSortChange(newColumnId, newDirection)\n }\n },\n [mode, onSortChange, setWidget, sortStoreState, widgetId],\n )\n\n // Clear sort\n const clearSort = useCallback(() => {\n const widget = getWidget<TableWidgetState>(widgetId)\n if (!widget?.sort) return\n\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...widget.sort,\n columnId: null,\n direction: 'asc',\n },\n })\n }, [setWidget, getWidget, widgetId])\n\n // Sorted data for local mode\n const sortedData = useMemo(() => {\n if (mode === 'remote' || !sortStoreState.columnId) {\n // For remote mode, data is already sorted from server\n // If no sort column, return original data\n return data\n }\n return sortData(data, sortStoreState.columnId, sortStoreState.direction)\n }, [data, mode, sortStoreState.columnId, sortStoreState.direction])\n\n return {\n ...sortStoreState,\n sortedData,\n toggleSort,\n setSort,\n clearSort,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\n\nexport interface UseSelectionOptions {\n /** Callback when selection changes */\n onSelectionChange?: (selectedIds: Set<string | number>) => void\n}\n\nexport interface UseSelectionResult {\n /** Set of selected row IDs */\n selectedIds: Set<string | number>\n /** Check if a row is selected */\n isSelected: (id: string | number) => boolean\n /** Check if all provided rows are selected */\n isAllSelected: (rows: TableRow[]) => boolean\n /** Check if some but not all rows are selected (for indeterminate state) */\n isIndeterminate: (rows: TableRow[]) => boolean\n /** Toggle selection of a single row */\n toggleRow: (id: string | number) => void\n /** Toggle selection of all provided rows */\n toggleAll: (rows: TableRow[]) => void\n /** Select specific rows */\n selectRows: (ids: (string | number)[]) => void\n /** Deselect specific rows */\n deselectRows: (ids: (string | number)[]) => void\n /** Clear all selections */\n clearSelection: () => void\n}\n\n/**\n * Hook for managing table row selection\n * Selection persists across pagination and is stored in the widget store\n */\nexport function useSelection(\n widgetId: string,\n options?: UseSelectionOptions,\n): UseSelectionResult {\n const { onSelectionChange } = options ?? {}\n\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const selected = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.selected\n }),\n )\n\n // Use store values with fallback to empty Set\n const selectedIds = useMemo(\n () => selected ?? new Set<string | number>(),\n [selected],\n )\n\n // Check if a row is selected\n const isSelected = useCallback(\n (id: string | number) => selectedIds.has(id),\n [selectedIds],\n )\n\n // Check if all provided rows are selected\n const isAllSelected = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n return rows.every((row) => selectedIds.has(row.id))\n },\n [selectedIds],\n )\n\n // Check if some but not all rows are selected\n const isIndeterminate = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n const selectedCount = rows.filter((row) => selectedIds.has(row.id)).length\n return selectedCount > 0 && selectedCount < rows.length\n },\n [selectedIds],\n )\n\n // Toggle selection of a single row\n const toggleRow = useCallback(\n (id: string | number) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? new Set<string | number>()\n\n const newSet = new Set(currentSelected)\n if (newSet.has(id)) {\n newSet.delete(id)\n } else {\n newSet.add(id)\n }\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Toggle selection of all provided rows\n const toggleAll = useCallback(\n (rows: TableRow[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? new Set<string | number>()\n\n const allSelected = rows.every((row) => currentSelected.has(row.id))\n const newSet = new Set(currentSelected)\n\n if (allSelected) {\n // Deselect all provided rows\n rows.forEach((row) => newSet.delete(row.id))\n } else {\n // Select all provided rows\n rows.forEach((row) => newSet.add(row.id))\n }\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Select specific rows\n const selectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? new Set<string | number>()\n\n const newSet = new Set(currentSelected)\n ids.forEach((id) => newSet.add(id))\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Deselect specific rows\n const deselectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? new Set<string | number>()\n\n const newSet = new Set(currentSelected)\n ids.forEach((id) => newSet.delete(id))\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n const newSet = new Set<string | number>()\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n }, [setWidget, widgetId, onSelectionChange])\n\n return {\n selectedIds,\n isSelected,\n isAllSelected,\n isIndeterminate,\n toggleRow,\n toggleAll,\n selectRows,\n deselectRows,\n clearSelection,\n }\n}\n","import {\n Box,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from '@mui/material'\n\nexport interface TableSkeletonProps {\n /** Number of columns to display */\n columns?: number\n /** Number of rows to display */\n rows?: number\n}\n\n/**\n * Table skeleton loader component\n */\nexport function TableSkeleton({ columns = 4, rows = 5 }: TableSkeletonProps) {\n return (\n <Box aria-label='Table skeleton'>\n <Table>\n <TableHead>\n <TableRow>\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index}>\n <Skeleton width='80%' height={24} />\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton width='70%' height={20} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Box>\n )\n}\n","import type { TableRow, TableWidgetData } from './types'\n\n/**\n * Sanitizes a table row by ensuring all values are serializable.\n * Converts ReactNode and function values to undefined.\n *\n * @param row - The table row to sanitize\n * @returns A sanitized table row\n */\nexport function sanitizeTableRow(row: TableRow): TableRow {\n const sanitized: TableRow = { id: row.id }\n\n for (const [key, value] of Object.entries(row)) {\n if (key === 'id') continue\n\n // Keep primitive values\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n sanitized[key] = value\n }\n // Serialize arrays and plain objects\n else if (Array.isArray(value) || typeof value === 'object') {\n try {\n // Attempt to serialize - if it fails, the value contains non-serializable content\n JSON.stringify(value)\n sanitized[key] = value\n } catch {\n sanitized[key] = undefined\n }\n }\n // Skip functions and other non-serializable values\n else {\n sanitized[key] = undefined\n }\n }\n\n return sanitized\n}\n\n/**\n * Sanitizes table widget data by ensuring all rows are serializable.\n *\n * @param data - The table data to sanitize\n * @returns Sanitized table data\n */\nexport function sanitizeTableData(\n data: TableWidgetData | undefined,\n): TableWidgetData | undefined {\n return data?.map(sanitizeTableRow)\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n width: '100%',\n overflow: 'auto',\n },\n table: {\n minWidth: 650,\n },\n headerCell: {\n fontWeight: 600,\n backgroundColor: (theme: Theme) => theme.palette.background.paper,\n },\n row: {\n '&:last-child td, &:last-child th': {\n border: 0,\n },\n },\n rowHover: {\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n },\n },\n rowSelected: {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n },\n },\n pagination: {\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n },\n} satisfies Record<string, SxProps<Theme>>\n"],"names":["CellHeader","t0","$","_c","column","sortState","onSort","isSelectAll","isAllSelected","isIndeterminate","onSelectAll","t1","Symbol","for","t2","jsx","TableCell","Checkbox","isSorted","columnId","id","sortDirection","direction","undefined","sortable","width","t3","t4","label","TableSortLabel","t5","align","getCellValue","cellValue","Array","isArray","map","item","String","join","JSON","stringify","compareValues","a","b","comparison","localeCompare","strA","strB","sortData","data","sort","paginateData","page","rowsPerPage","start","end","slice","DEFAULT_P","children","Typography","CELL_MARKDOWN_COMPONENTS","h1","h2","h3","p","href","isExternal","startsWith","Link","img","ul","ol","li","Cell","value","formatter","MuiTableCell","ReactMarkdown","Row","row","columns","isSelected","selectable","onClick","onSelect","onMouseEnter","onMouseLeave","handleClick","event","stopPropagation","handleCheckboxClick","handleMouseEnter","t6","handleMouseLeave","t7","t8","t9","cursor","t10","t11","t12","MuiTableRow","PaginationActions","count","onPageChange","lastPage","Math","max","ceil","handleFirstPage","event_0","handlePreviousPage","event_1","handleNextPage","event_2","handleLastPage","flexShrink","ml","FirstPageIcon","IconButton","KeyboardArrowLeft","t13","KeyboardArrowRight","t14","t15","t16","LastPageIcon","t17","t18","jsxs","Box","Pagination","total","rowsPerPageOptions","onRowsPerPageChange","_event","newPage","handlePageChange","parseInt","target","handleRowsPerPageChange","MuiTablePagination","useWidgetRef","widgetId","ref","useRef","setWidget","useWidgetStore","_temp","current","refUI","useEffect","store","Table","props","stickyHeader","MuiTable","Head","TableHead","Body","TableBody","Container","TableContainer","Paper","MuiTableContainer","DEFAULT_MODE","DEFAULT_PAGE","DEFAULT_ROWS_PER_PAGE","DEFAULT_ROWS_PER_PAGE_OPTIONS","DEFAULT_COLUMN_ID","DEFAULT_DIRECTION","tableDownloadConfig","downloadToPNG","modifier","downloadToCSV","length","firstRow","headers","Object","keys","filter","key","rows","header","tableConfig","selected","Set","mode","pagination","usePagination","state_0","widget","state","widgets","paginationState","useShallow","state_1","maxPage","boundedPage","min","setPage","newRowsPerPage","setRowsPerPage","goToFirstPage","goToLastPage","goToNextPage","goToPreviousPage","bb0","paginatedData","useSort","options","onSortChange","getWidget","_temp2","sortStoreState","state_2","toggleColumnId","newDirection","toggleSort","newColumnId","newDirection_0","setSort","widget_1","clearSort","sortedData","useSelection","onSelectionChange","selectedIds","has","every","rows_0","selectedCount","row_0","id_0","currentSelected","newSet","delete","add","toggleRow","rows_1","currentSelected_0","allSelected","row_1","newSet_0","forEach","row_2","row_3","toggleAll","ids","currentSelected_1","newSet_1","id_1","selectRows","ids_0","currentSelected_2","newSet_2","id_2","deselectRows","newSet_3","clearSelection","TableSkeleton","TableRow","from","__0","rowIndex","__1","colIndex","Skeleton","_","index","sanitizeTableRow","sanitized","entries","sanitizeTableData","styles","container","overflow","table","minWidth","headerCell","fontWeight","backgroundColor","theme","palette","background","paper","border","rowHover","action","hover","rowSelected","borderTop","divider"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../src/widgets/table/components/cell-header.tsx","../../src/widgets/table/helpers.ts","../../src/widgets/table/components/cell.tsx","../../src/widgets/table/components/row.tsx","../../src/widgets/table/components/pagination-actions.tsx","../../src/widgets/table/components/pagination.tsx","../../src/hooks/use-widget-ref.ts","../../src/widgets/table/table-ui.tsx","../../src/widgets/table/config.ts","../../src/widgets/table/hooks/use-pagination.ts","../../src/widgets/table/hooks/use-sort.ts","../../src/widgets/table/hooks/use-selection.ts","../../src/widgets/table/skeleton.tsx","../../src/widgets/table/serializer.ts","../../src/widgets/table/style.ts"],"sourcesContent":["import { TableCell, TableSortLabel, Checkbox } from '@mui/material'\nimport type { CellHeaderProps } from '../types'\n\n/**\n * Table cell header component with optional sorting and select-all checkbox\n */\nexport function CellHeader({\n column,\n sortState,\n onSort,\n isSelectAll,\n isAllSelected,\n isIndeterminate,\n onSelectAll,\n}: CellHeaderProps) {\n // Render select-all checkbox\n if (isSelectAll) {\n return (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={onSelectAll}\n inputProps={{ 'aria-label': 'select all rows' }}\n />\n </TableCell>\n )\n }\n\n const isSorted = sortState?.columnId === column.id\n const sortDirection = isSorted ? sortState.direction : undefined\n\n // Render sortable column header\n if (column.sortable && onSort) {\n return (\n <TableCell\n align={column.align}\n style={{ width: column.width }}\n sortDirection={sortDirection}\n >\n <TableSortLabel\n active={isSorted}\n direction={sortDirection ?? 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n </TableCell>\n )\n }\n\n // Render non-sortable column header\n return (\n <TableCell align={column.align} style={{ width: column.width }}>\n {column.label}\n </TableCell>\n )\n}\n","import type { ReactNode } from 'react'\n\n/**\n * Get formatted cell value for display\n * Handles primitives, arrays, objects, and custom formatters\n *\n * @param cellValue - Raw cell value\n * @param formatter - Optional formatter function\n * @returns Formatted value for display\n */\nexport function getCellValue<T>(cellValue: T): ReactNode {\n // Handle null/undefined\n if (cellValue === null || cellValue === undefined) {\n return ''\n }\n\n // Handle arrays - format as [item1, item2, ...]\n if (Array.isArray(cellValue)) {\n const formatted = cellValue\n .map((item) => (typeof item === 'string' ? `\"${item}\"` : String(item)))\n .join(', ')\n return `[${formatted}]`\n }\n\n // Handle objects - stringify to JSON\n if (typeof cellValue === 'object') {\n return JSON.stringify(cellValue)\n }\n\n // Return primitives as-is (string, number, boolean)\n return cellValue as ReactNode\n}\n\n/**\n * Compare two values for sorting\n * Handles strings, numbers, and other types\n *\n * @param a - First value\n * @param b - Second value\n * @param direction - Sort direction\n * @returns Comparison result (-1, 0, 1)\n */\nexport function compareValues(\n a: unknown,\n b: unknown,\n direction: 'asc' | 'desc',\n): number {\n // Handle null/undefined - always sort to end\n if (a === null || a === undefined) return 1\n if (b === null || b === undefined) return -1\n\n let comparison = 0\n\n if (typeof a === 'string' && typeof b === 'string') {\n comparison = a.localeCompare(b)\n } else if (typeof a === 'number' && typeof b === 'number') {\n comparison = a - b\n } else if (typeof a === 'boolean' && typeof b === 'boolean') {\n comparison = a === b ? 0 : a ? 1 : -1\n } else if (typeof a === 'object' || typeof b === 'object') {\n // Compare objects/arrays as JSON strings\n const strA = JSON.stringify(a)\n const strB = JSON.stringify(b)\n comparison = strA.localeCompare(strB)\n } else {\n // Fallback for other primitives (bigint, symbol, etc.)\n comparison = 0\n }\n\n return direction === 'asc' ? comparison : -comparison\n}\n\n/**\n * Sort data array by column\n *\n * @param data - Data array to sort\n * @param columnId - Column ID to sort by\n * @param direction - Sort direction\n * @returns Sorted data array (new array, does not mutate original)\n */\nexport function sortData<T extends Record<string, unknown>>(\n data: T[],\n columnId: string,\n direction: 'asc' | 'desc',\n): T[] {\n return [...data].sort((a, b) =>\n compareValues(a[columnId], b[columnId], direction),\n )\n}\n\n/**\n * Paginate data array\n *\n * @param data - Data array to paginate\n * @param page - Current page (0-indexed)\n * @param rowsPerPage - Number of rows per page\n * @returns Paginated data slice\n */\nexport function paginateData<T>(\n data: T[],\n page: number,\n rowsPerPage: number,\n): T[] {\n const start = page * rowsPerPage\n const end = start + rowsPerPage\n return data.slice(start, end)\n}\n","import { TableCell as MuiTableCell, Link, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport type { TableColumn } from '../types'\nimport { getCellValue } from '../helpers'\nimport type { ReactNode } from 'react'\n\n/**\n * Props for Cell component\n */\nexport interface CellProps {\n /** Column definition */\n column: TableColumn\n /** Cell value */\n value: unknown\n}\n\nconst DEFAULT_P = ({ children }: { children?: ReactNode }) => (\n <Typography component='span' variant='body2' color='inherit'>\n {children}\n </Typography>\n)\n\n/**\n * Markdown components for cell content\n * Uses compact styling suitable for table cells (reusing Note widget pattern)\n */\nconst CELL_MARKDOWN_COMPONENTS: Components = {\n h1: DEFAULT_P,\n h2: DEFAULT_P,\n h3: DEFAULT_P,\n p: DEFAULT_P,\n a: ({ children, href }) => {\n const isExternal = href?.startsWith('http')\n return (\n <Link\n href={href}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n color='text.primary'\n underline='always'\n >\n {children}\n </Link>\n )\n },\n img: () => null,\n ul: DEFAULT_P,\n ol: DEFAULT_P,\n li: DEFAULT_P,\n}\n\n/**\n * Table cell component with automatic markdown support for string values\n * Markdown is rendered when the raw value is a string and no formatter is defined.\n * If a formatter is used, its output is rendered directly without markdown parsing.\n */\nexport function Cell({ column, value }: CellProps) {\n // If formatter is defined, use it directly without markdown\n if (column.formatter) {\n return (\n <MuiTableCell align={column.align}>\n {column.formatter(value)}\n </MuiTableCell>\n )\n }\n\n // For string values without formatter, render as markdown\n if (typeof value === 'string') {\n return (\n <MuiTableCell align={column.align}>\n <ReactMarkdown components={CELL_MARKDOWN_COMPONENTS}>\n {value}\n </ReactMarkdown>\n </MuiTableCell>\n )\n }\n\n // For non-string values, render directly\n return <MuiTableCell align={column.align}>{getCellValue(value)}</MuiTableCell>\n}\n","import { TableRow as MuiTableRow, TableCell, Checkbox } from '@mui/material'\nimport type { RowProps } from '../types'\nimport { Cell } from './cell'\n\n/**\n * Table row component with selection and hover support\n */\nexport function Row({\n row,\n columns,\n isSelected = false,\n selectable = false,\n onClick,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n}: RowProps) {\n const handleClick = () => {\n onClick?.(row)\n }\n\n const handleCheckboxClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n onSelect?.(row)\n }\n\n const handleMouseEnter = () => {\n onMouseEnter?.(row)\n }\n\n const handleMouseLeave = () => {\n onMouseLeave?.()\n }\n\n return (\n <MuiTableRow\n hover={!!onMouseEnter || !!onMouseLeave || !!onClick}\n selected={isSelected}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n sx={{\n cursor: onClick ? 'pointer' : 'default',\n }}\n >\n {selectable && (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isSelected}\n onClick={handleCheckboxClick}\n inputProps={{ 'aria-label': `select row ${row.id}` }}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <Cell key={column.id} column={column} value={row[column.id]} />\n ))}\n </MuiTableRow>\n )\n}\n","import { Box, IconButton } from '@mui/material'\nimport FirstPageIcon from '@mui/icons-material/FirstPage'\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'\nimport LastPageIcon from '@mui/icons-material/LastPage'\nimport type { PaginationActionsProps } from '../types'\n\n/**\n * Custom pagination actions with first/prev/next/last buttons\n */\nexport function PaginationActions({\n count,\n page,\n rowsPerPage,\n onPageChange,\n}: PaginationActionsProps) {\n const lastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1)\n\n const handleFirstPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handlePreviousPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, lastPage)\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton\n onClick={handleFirstPage}\n disabled={page === 0}\n aria-label='first page'\n >\n <FirstPageIcon />\n </IconButton>\n <IconButton\n onClick={handlePreviousPage}\n disabled={page === 0}\n aria-label='previous page'\n >\n <KeyboardArrowLeft />\n </IconButton>\n <IconButton\n onClick={handleNextPage}\n disabled={page >= lastPage}\n aria-label='next page'\n >\n <KeyboardArrowRight />\n </IconButton>\n <IconButton\n onClick={handleLastPage}\n disabled={page >= lastPage}\n aria-label='last page'\n >\n <LastPageIcon />\n </IconButton>\n </Box>\n )\n}\n","import { TablePagination as MuiTablePagination } from '@mui/material'\nimport type { PaginationProps } from '../types'\nimport { PaginationActions } from './pagination-actions'\n\n/**\n * Table pagination component\n */\nexport function Pagination({\n page,\n rowsPerPage,\n total,\n rowsPerPageOptions = [5, 10, 25, 50],\n onPageChange,\n onRowsPerPageChange,\n}: PaginationProps) {\n const handlePageChange = (\n _event: React.MouseEvent<HTMLButtonElement> | null,\n newPage: number,\n ) => {\n onPageChange(newPage)\n }\n\n const handleRowsPerPageChange = (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n onRowsPerPageChange(parseInt(event.target.value, 10))\n }\n\n return (\n <MuiTablePagination\n component='div'\n count={total}\n page={page}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n onPageChange={handlePageChange}\n onRowsPerPageChange={handleRowsPerPageChange}\n ActionsComponent={PaginationActions}\n />\n )\n}\n","import { useEffect, useRef } from 'react'\nimport { useWidgetStore } from '../widgets/stores/widget-store'\n\n/**\n * Custom hook for registering a DOM element ref with the widget store.\n * This allows other parts of the application to access the widget's DOM element.\n *\n * @param widgetId - The widget ID to register the ref under\n * @returns A ref object to attach to the DOM element\n *\n * @example\n * ```tsx\n * function MyWidget({ id }: { id: string }) {\n * const ref = useWidgetRef<HTMLDivElement>(id)\n *\n * return <div ref={ref}>Widget content</div>\n * }\n * ```\n */\nexport function useWidgetRef<T extends HTMLElement = HTMLElement>(\n widgetId: string,\n) {\n const ref = useRef<T | null>(null)\n const setWidget = useWidgetStore((store) => store.setWidget)\n\n useEffect(() => {\n if (ref.current) {\n setWidget(widgetId, { refUI: ref })\n }\n }, [widgetId, setWidget])\n\n return ref\n}\n","import {\n Table as MuiTable,\n TableBody,\n TableCell,\n TableHead,\n TableContainer as MuiTableContainer,\n Paper,\n type TableProps as MuiTableProps,\n} from '@mui/material'\nimport type { Ref } from 'react'\nimport { CellHeader } from './components/cell-header'\nimport { Row } from './components/row'\nimport { Pagination } from './components/pagination'\nimport { PaginationActions } from './components/pagination-actions'\nimport { useWidgetRef } from '../../hooks'\nimport type { TableUIProps } from './types'\n\n/**\n * Props for the base Table component\n */\nexport interface TableComponentProps extends MuiTableProps {\n /** Table element ref */\n ref?: Ref<HTMLTableElement>\n}\n\n/**\n * Base Table component with compound component pattern\n * Provides Table.Head, Table.Body, Table.Row, Table.Cell, Table.CellHeader, Table.Pagination\n */\nfunction Table({\n children,\n ref,\n stickyHeader = true,\n ...props\n}: TableComponentProps) {\n return (\n <MuiTable stickyHeader={stickyHeader} ref={ref} {...props}>\n {children}\n </MuiTable>\n )\n}\n\n// Attach sub-components as static properties\nTable.Head = TableHead\nTable.CellHeader = CellHeader\nTable.Body = TableBody\nTable.Row = Row\nTable.Cell = TableCell\nTable.Container = TableContainer\nTable.Paper = Paper\nTable.Pagination = Pagination\nTable.PaginationActions = PaginationActions\n\nexport { Table }\n\n/**\n * TableContainer widget component\n * Integrates with widget store and provides ref registration using custom hook\n */\nfunction TableContainer(props: TableUIProps) {\n const ref = useWidgetRef<HTMLDivElement>(props.id)\n\n return <MuiTableContainer ref={ref}>{props.children}</MuiTableContainer>\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../root/types'\nimport type {\n TableDownloadConfig,\n TableWidgetConfig,\n TableColumn,\n Mode,\n SortDirection,\n} from './types'\n\nexport const DEFAULT_MODE: Mode = 'local'\nexport const DEFAULT_PAGE = 0\nexport const DEFAULT_ROWS_PER_PAGE = 10\nexport const DEFAULT_ROWS_PER_PAGE_OPTIONS = [5, 10, 25, 50]\n\nexport const DEFAULT_COLUMN_ID = null\nexport const DEFAULT_DIRECTION: SortDirection = 'asc'\n\n/**\n * Default table download configuration\n * Supports PNG export (screenshot) and CSV export (data)\n */\nexport function tableDownloadConfig({\n refUI,\n}: ConfigProps): TableDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length) {\n return downloadToCSV.modifier([])\n }\n\n // Convert table data to CSV format\n // First row contains headers (column keys)\n const firstRow = data[0]\n if (!firstRow) {\n return downloadToCSV.modifier([])\n }\n\n const headers = Object.keys(firstRow).filter((key) => key !== 'id')\n const rows = data.map((row) =>\n headers.map((header) => {\n const value = row[header]\n if (value === null || value === undefined) return ''\n if (typeof value === 'object') return JSON.stringify(value)\n return value\n }),\n )\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\n/**\n * Default table widget configuration\n */\nexport function tableConfig(columns: TableColumn[] = []): TableWidgetConfig {\n return {\n columns,\n selectable: false,\n selected: new Set(),\n mode: DEFAULT_MODE,\n pagination: {\n page: DEFAULT_PAGE,\n rowsPerPageOptions: DEFAULT_ROWS_PER_PAGE_OPTIONS,\n rowsPerPage: DEFAULT_ROWS_PER_PAGE,\n total: 0,\n },\n sort: {\n columnId: DEFAULT_COLUMN_ID,\n direction: DEFAULT_DIRECTION,\n },\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { paginateData } from '../helpers'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport {\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_ROWS_PER_PAGE_OPTIONS,\n} from '../config'\n\nexport interface UsePaginationResult<T> {\n /** Whether pagination is enabled */\n paginationEnabled: boolean\n /** Current page (0-indexed) */\n page: number\n /** Rows per page */\n rowsPerPage: number\n /** Total row count */\n total: number\n /** Available rows per page options */\n rowsPerPageOptions: number[]\n /** Paginated data (for local mode) */\n paginatedData: T[]\n /** Set current page */\n setPage: (page: number) => void\n /** Set rows per page */\n setRowsPerPage: (rowsPerPage: number) => void\n /** Go to first page */\n goToFirstPage: () => void\n /** Go to last page */\n goToLastPage: () => void\n /** Go to next page */\n goToNextPage: () => void\n /** Go to previous page */\n goToPreviousPage: () => void\n}\n\n/**\n * Hook for managing table pagination\n * Supports both local (client-side) and remote (server-side) pagination\n * State is persisted in the widget store for the given widgetId\n */\nexport function usePagination<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UsePaginationResult<T> {\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const paginationState = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return {\n paginationEnabled: !!widget?.pagination,\n page: widget?.pagination?.page ?? DEFAULT_PAGE,\n rowsPerPage: widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE,\n rowsPerPageOptions:\n widget?.pagination?.rowsPerPageOptions ??\n DEFAULT_ROWS_PER_PAGE_OPTIONS,\n total: widget?.pagination?.total ?? data.length,\n }\n }),\n )\n\n const mode = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.mode\n }),\n )\n\n // Calculate max page\n const maxPage = Math.max(\n 0,\n Math.ceil(paginationState.total / (paginationState?.rowsPerPage ?? 1)) - 1,\n )\n\n // Set page with bounds checking\n const setPage = useCallback(\n (newPage: number) => {\n const boundedPage = Math.max(0, Math.min(newPage, maxPage))\n\n setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...paginationState,\n page: boundedPage,\n },\n })\n },\n [maxPage, paginationState, setWidget, widgetId],\n )\n\n // Set rows per page and reset to first page\n const setRowsPerPage = useCallback(\n (newRowsPerPage: number) => {\n setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...paginationState,\n rowsPerPage: newRowsPerPage,\n },\n })\n },\n [paginationState, setWidget, widgetId],\n )\n\n // Navigation helpers\n const goToFirstPage = useCallback(() => setPage(0), [setPage])\n const goToLastPage = useCallback(() => setPage(maxPage), [setPage, maxPage])\n const goToNextPage = useCallback(\n () => setPage(paginationState.page + 1),\n [setPage, paginationState.page],\n )\n const goToPreviousPage = useCallback(\n () => setPage(paginationState.page - 1),\n [setPage, paginationState.page],\n )\n\n // Paginated data for local mode\n const paginatedData = useMemo(() => {\n if (mode === 'remote' || !paginationState.paginationEnabled) {\n // For remote mode, data is already paginated from server\n return data\n }\n return paginateData(data, paginationState.page, paginationState.rowsPerPage)\n }, [\n data,\n mode,\n paginationState.page,\n paginationState.paginationEnabled,\n paginationState.rowsPerPage,\n ])\n\n return {\n ...paginationState,\n paginatedData,\n setPage,\n setRowsPerPage,\n goToFirstPage,\n goToLastPage,\n goToNextPage,\n goToPreviousPage,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type {\n TableRow,\n SortDirection,\n SortState,\n TableWidgetState,\n} from '../types'\nimport { sortData } from '../helpers'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport { DEFAULT_COLUMN_ID, DEFAULT_DIRECTION } from '../config'\n\nexport interface UseSortOptions {\n /** Callback when sort changes (for remote sorting) */\n onSortChange?: (columnId: string, direction: SortDirection) => void\n}\n\nexport interface UseSortResult<T> extends SortState {\n /** Whether sorting is enabled */\n sortEnabled: boolean\n /** Current sort state */\n columnId: string | null\n direction: SortDirection\n /** Sorted data (for local mode) */\n sortedData: T[]\n /** Toggle sort on a column */\n toggleSort: (columnId: string) => void\n /** Set sort state directly */\n setSort: (columnId: string | null, direction: SortDirection) => void\n /** Clear sort */\n clearSort: () => void\n}\n\n/**\n * Hook for managing table sorting\n * Supports both local (client-side) and remote (server-side) sorting\n * State is persisted in the widget store for the given widgetId\n */\nexport function useSort<T extends TableRow>(\n widgetId: string,\n data: T[],\n options?: UseSortOptions,\n): UseSortResult<T> {\n const { onSortChange } = options ?? {}\n\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const sortStoreState = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return {\n sortEnabled: !!widget?.sort,\n columnId: widget?.sort?.columnId ?? DEFAULT_COLUMN_ID,\n direction: widget?.sort?.direction ?? DEFAULT_DIRECTION,\n }\n }),\n )\n\n const mode = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.mode\n }),\n )\n\n // Toggle sort on a column\n const toggleSort = useCallback(\n (toggleColumnId: string) => {\n let newDirection: SortDirection = 'asc'\n\n if (sortStoreState.columnId === toggleColumnId) {\n // Same column - toggle direction\n newDirection = sortStoreState.direction === 'asc' ? 'desc' : 'asc'\n }\n\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...sortStoreState,\n columnId: toggleColumnId,\n direction: newDirection,\n },\n })\n\n if (mode === 'remote' && onSortChange) {\n onSortChange(toggleColumnId, newDirection)\n }\n },\n [mode, onSortChange, setWidget, sortStoreState, widgetId],\n )\n\n // Set sort state directly\n const setSort = useCallback(\n (newColumnId: string | null, newDirection: SortDirection) => {\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...sortStoreState,\n columnId: newColumnId,\n direction: newDirection,\n },\n })\n\n if (mode === 'remote' && onSortChange && newColumnId) {\n onSortChange(newColumnId, newDirection)\n }\n },\n [mode, onSortChange, setWidget, sortStoreState, widgetId],\n )\n\n // Clear sort\n const clearSort = useCallback(() => {\n const widget = getWidget<TableWidgetState>(widgetId)\n if (!widget?.sort) return\n\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...widget.sort,\n columnId: null,\n direction: 'asc',\n },\n })\n }, [setWidget, getWidget, widgetId])\n\n // Sorted data for local mode\n const sortedData = useMemo(() => {\n if (\n mode === 'remote' ||\n !sortStoreState.columnId ||\n !sortStoreState.sortEnabled\n ) {\n // For remote mode, data is already sorted from server\n // If no sort column, return original data\n return data\n }\n return sortData(data, sortStoreState.columnId, sortStoreState.direction)\n }, [\n data,\n mode,\n sortStoreState.columnId,\n sortStoreState.direction,\n sortStoreState.sortEnabled,\n ])\n\n return {\n ...sortStoreState,\n sortedData,\n toggleSort,\n setSort,\n clearSort,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\n\nexport interface UseSelectionOptions {\n /** Callback when selection changes */\n onSelectionChange?: (selectedIds: Set<string | number>) => void\n}\n\nexport interface UseSelectionResult {\n /** Set of selected row IDs */\n selectedIds: Set<string | number>\n /** Check if a row is selected */\n isSelected: (id: string | number) => boolean\n /** Check if all provided rows are selected */\n isAllSelected: (rows: TableRow[]) => boolean\n /** Check if some but not all rows are selected (for indeterminate state) */\n isIndeterminate: (rows: TableRow[]) => boolean\n /** Toggle selection of a single row */\n toggleRow: (id: string | number) => void\n /** Toggle selection of all provided rows */\n toggleAll: (rows: TableRow[]) => void\n /** Select specific rows */\n selectRows: (ids: (string | number)[]) => void\n /** Deselect specific rows */\n deselectRows: (ids: (string | number)[]) => void\n /** Clear all selections */\n clearSelection: () => void\n}\n\n/**\n * Hook for managing table row selection\n * Selection persists across pagination and is stored in the widget store\n */\nexport function useSelection(\n widgetId: string,\n options?: UseSelectionOptions,\n): UseSelectionResult {\n const { onSelectionChange } = options ?? {}\n\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const selected = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.selected\n }),\n )\n\n // Use store values with fallback to empty Set\n const selectedIds = useMemo(\n () => selected ?? new Set<string | number>(),\n [selected],\n )\n\n // Check if a row is selected\n const isSelected = useCallback(\n (id: string | number) => selectedIds.has(id),\n [selectedIds],\n )\n\n // Check if all provided rows are selected\n const isAllSelected = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n return rows.every((row) => selectedIds.has(row.id))\n },\n [selectedIds],\n )\n\n // Check if some but not all rows are selected\n const isIndeterminate = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n const selectedCount = rows.filter((row) => selectedIds.has(row.id)).length\n return selectedCount > 0 && selectedCount < rows.length\n },\n [selectedIds],\n )\n\n // Toggle selection of a single row\n const toggleRow = useCallback(\n (id: string | number) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? new Set<string | number>()\n\n const newSet = new Set(currentSelected)\n if (newSet.has(id)) {\n newSet.delete(id)\n } else {\n newSet.add(id)\n }\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Toggle selection of all provided rows\n const toggleAll = useCallback(\n (rows: TableRow[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? new Set<string | number>()\n\n const allSelected = rows.every((row) => currentSelected.has(row.id))\n const newSet = new Set(currentSelected)\n\n if (allSelected) {\n // Deselect all provided rows\n rows.forEach((row) => newSet.delete(row.id))\n } else {\n // Select all provided rows\n rows.forEach((row) => newSet.add(row.id))\n }\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Select specific rows\n const selectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? new Set<string | number>()\n\n const newSet = new Set(currentSelected)\n ids.forEach((id) => newSet.add(id))\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Deselect specific rows\n const deselectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? new Set<string | number>()\n\n const newSet = new Set(currentSelected)\n ids.forEach((id) => newSet.delete(id))\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n const newSet = new Set<string | number>()\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSet,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSet)\n }\n }, [setWidget, widgetId, onSelectionChange])\n\n return {\n selectedIds,\n isSelected,\n isAllSelected,\n isIndeterminate,\n toggleRow,\n toggleAll,\n selectRows,\n deselectRows,\n clearSelection,\n }\n}\n","import {\n Box,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from '@mui/material'\n\nexport interface TableSkeletonProps {\n /** Number of columns to display */\n columns?: number\n /** Number of rows to display */\n rows?: number\n}\n\n/**\n * Table skeleton loader component\n */\nexport function TableSkeleton({ columns = 4, rows = 5 }: TableSkeletonProps) {\n return (\n <Box aria-label='Table skeleton'>\n <Table>\n <TableHead>\n <TableRow>\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index}>\n <Skeleton width='80%' height={24} />\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton width='70%' height={20} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Box>\n )\n}\n","import type { TableRow, TableWidgetData } from './types'\n\n/**\n * Sanitizes a table row by ensuring all values are serializable.\n * Converts ReactNode and function values to undefined.\n *\n * @param row - The table row to sanitize\n * @returns A sanitized table row\n */\nexport function sanitizeTableRow(row: TableRow): TableRow {\n const sanitized: TableRow = { id: row.id }\n\n for (const [key, value] of Object.entries(row)) {\n if (key === 'id') continue\n\n // Keep primitive values\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n sanitized[key] = value\n }\n // Serialize arrays and plain objects\n else if (Array.isArray(value) || typeof value === 'object') {\n try {\n // Attempt to serialize - if it fails, the value contains non-serializable content\n JSON.stringify(value)\n sanitized[key] = value\n } catch {\n sanitized[key] = undefined\n }\n }\n // Skip functions and other non-serializable values\n else {\n sanitized[key] = undefined\n }\n }\n\n return sanitized\n}\n\n/**\n * Sanitizes table widget data by ensuring all rows are serializable.\n *\n * @param data - The table data to sanitize\n * @returns Sanitized table data\n */\nexport function sanitizeTableData(\n data: TableWidgetData | undefined,\n): TableWidgetData | undefined {\n return data?.map(sanitizeTableRow)\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n width: '100%',\n overflow: 'auto',\n },\n table: {\n minWidth: 650,\n },\n headerCell: {\n fontWeight: 600,\n backgroundColor: (theme: Theme) => theme.palette.background.paper,\n },\n row: {\n '&:last-child td, &:last-child th': {\n border: 0,\n },\n },\n rowHover: {\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n },\n },\n rowSelected: {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n },\n },\n pagination: {\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n },\n} satisfies Record<string, SxProps<Theme>>\n"],"names":["CellHeader","t0","$","_c","column","sortState","onSort","isSelectAll","isAllSelected","isIndeterminate","onSelectAll","t1","Symbol","for","t2","jsx","TableCell","Checkbox","isSorted","columnId","id","sortDirection","direction","undefined","sortable","width","t3","t4","label","TableSortLabel","t5","align","getCellValue","cellValue","Array","isArray","map","item","String","join","JSON","stringify","compareValues","a","b","comparison","localeCompare","strA","strB","sortData","data","sort","paginateData","page","rowsPerPage","start","end","slice","DEFAULT_P","children","Typography","CELL_MARKDOWN_COMPONENTS","h1","h2","h3","p","href","isExternal","startsWith","Link","img","ul","ol","li","Cell","value","formatter","MuiTableCell","ReactMarkdown","Row","row","columns","isSelected","selectable","onClick","onSelect","onMouseEnter","onMouseLeave","handleClick","event","stopPropagation","handleCheckboxClick","handleMouseEnter","t6","handleMouseLeave","t7","t8","t9","cursor","t10","t11","t12","MuiTableRow","PaginationActions","count","onPageChange","lastPage","Math","max","ceil","handleFirstPage","event_0","handlePreviousPage","event_1","handleNextPage","event_2","handleLastPage","flexShrink","ml","FirstPageIcon","IconButton","KeyboardArrowLeft","t13","KeyboardArrowRight","t14","t15","t16","LastPageIcon","t17","t18","jsxs","Box","Pagination","total","rowsPerPageOptions","onRowsPerPageChange","_event","newPage","handlePageChange","parseInt","target","handleRowsPerPageChange","MuiTablePagination","useWidgetRef","widgetId","ref","useRef","setWidget","useWidgetStore","_temp","current","refUI","useEffect","store","Table","props","stickyHeader","MuiTable","Head","TableHead","Body","TableBody","Container","TableContainer","Paper","MuiTableContainer","DEFAULT_MODE","DEFAULT_PAGE","DEFAULT_ROWS_PER_PAGE","DEFAULT_ROWS_PER_PAGE_OPTIONS","DEFAULT_COLUMN_ID","DEFAULT_DIRECTION","tableDownloadConfig","downloadToPNG","modifier","downloadToCSV","length","firstRow","headers","Object","keys","filter","key","rows","header","tableConfig","selected","Set","mode","pagination","usePagination","state_0","widget","state","widgets","paginationEnabled","paginationState","useShallow","state_1","maxPage","boundedPage","min","setPage","newRowsPerPage","setRowsPerPage","goToFirstPage","goToLastPage","goToNextPage","goToPreviousPage","bb0","paginatedData","useSort","options","onSortChange","getWidget","_temp2","sortEnabled","sortStoreState","state_2","toggleColumnId","newDirection","toggleSort","newColumnId","newDirection_0","setSort","widget_1","clearSort","sortedData","useSelection","onSelectionChange","selectedIds","has","every","rows_0","selectedCount","row_0","id_0","currentSelected","newSet","delete","add","toggleRow","rows_1","currentSelected_0","allSelected","row_1","newSet_0","forEach","row_2","row_3","toggleAll","ids","currentSelected_1","newSet_1","id_1","selectRows","ids_0","currentSelected_2","newSet_2","id_2","deselectRows","newSet_3","clearSelection","TableSkeleton","TableRow","from","__0","rowIndex","__1","colIndex","Skeleton","_","index","sanitizeTableRow","sanitized","entries","sanitizeTableData","styles","container","overflow","table","minWidth","headerCell","fontWeight","backgroundColor","theme","palette","background","paper","border","rowHover","action","hover","rowSelected","borderTop","divider"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carto/ps-react-ui",
3
- "version": "5.0.0-widgets.7",
3
+ "version": "5.0.0-widgets.8",
4
4
  "description": "CARTO's Professional Service React Material library",
5
5
  "type": "module",
6
6
  "devDependencies": {