@toolbox-web/grid-react 1.6.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +12 -10
  2. package/chunks/{grid-detail-panel-CR7YUhdN.js → grid-detail-panel-BZFcujsZ.js} +10 -10
  3. package/chunks/grid-responsive-card-CSZhDCoN.js +45 -0
  4. package/chunks/portal-bridge-CvxNt40O.js +68 -0
  5. package/chunks/post-mount-refresh-hooks-Dt7mPoZC.js +12 -0
  6. package/chunks/{react-column-config-Dz234dN8.js → react-column-config-BOe_PgL1.js} +28 -28
  7. package/chunks/{react-grid-adapter-KD5roD6F.js → react-grid-adapter-LBf2Mqhn.js} +108 -69
  8. package/features/editing.js +1 -1
  9. package/features/filtering.js +3 -3
  10. package/features/grouping-columns.js +1 -1
  11. package/features/grouping-rows.js +1 -1
  12. package/features/index.d.ts.map +1 -1
  13. package/features/index.js +1 -0
  14. package/features/master-detail.js +17 -13
  15. package/features/pinned-rows.d.ts +46 -0
  16. package/features/pinned-rows.d.ts.map +1 -1
  17. package/features/pinned-rows.js +49 -20
  18. package/features/reorder-rows.d.ts.map +1 -1
  19. package/features/responsive.js +22 -14
  20. package/features/row-drag-drop.js +1 -0
  21. package/features/sticky-rows.d.ts +1 -0
  22. package/features/sticky-rows.d.ts.map +1 -0
  23. package/features/sticky-rows.js +1 -0
  24. package/index.d.ts +5 -1
  25. package/index.d.ts.map +1 -1
  26. package/index.js +467 -408
  27. package/lib/child-feature-detector.d.ts +33 -0
  28. package/lib/child-feature-detector.d.ts.map +1 -0
  29. package/lib/data-grid.d.ts.map +1 -1
  30. package/lib/event-props.d.ts +22 -1
  31. package/lib/event-props.d.ts.map +1 -1
  32. package/lib/feature-prop-keys.d.ts +27 -0
  33. package/lib/feature-prop-keys.d.ts.map +1 -0
  34. package/lib/feature-props.d.ts +52 -3
  35. package/lib/feature-props.d.ts.map +1 -1
  36. package/lib/feature-registry.d.ts +3 -3
  37. package/lib/feature-registry.d.ts.map +1 -1
  38. package/lib/grid-header-content.d.ts +41 -0
  39. package/lib/grid-header-content.d.ts.map +1 -0
  40. package/lib/grid-toolbar-content.d.ts +44 -0
  41. package/lib/grid-toolbar-content.d.ts.map +1 -0
  42. package/lib/post-mount-refresh-hooks.d.ts +49 -0
  43. package/lib/post-mount-refresh-hooks.d.ts.map +1 -0
  44. package/lib/react-grid-adapter.d.ts +6 -0
  45. package/lib/react-grid-adapter.d.ts.map +1 -1
  46. package/lib/use-grid-overlay.d.ts +1 -1
  47. package/package.json +1 -1
  48. package/chunks/grid-responsive-card-BB28Zl2O.js +0 -45
  49. package/chunks/portal-bridge-BydpO5wl.js +0 -68
package/README.md CHANGED
@@ -640,16 +640,18 @@ Inject custom CSS into the grid:
640
640
 
641
641
  ### Exported Components
642
642
 
643
- | Component | Description |
644
- | ------------------ | ------------------------------------------- |
645
- | `DataGrid` | Main grid component wrapper |
646
- | `GridColumn` | Declarative column with render props |
647
- | `GridDetailPanel` | Master-detail expandable panel |
648
- | `GridToolPanel` | Custom sidebar panel |
649
- | `GridToolButtons` | Toolbar button container |
650
- | `GridProvider` | Combined provider for icons & type defaults |
651
- | `GridTypeProvider` | App-level type defaults context |
652
- | `GridIconProvider` | App-level icon overrides context |
643
+ | Component | Description |
644
+ | -------------------- | -------------------------------------------- |
645
+ | `DataGrid` | Main grid component wrapper |
646
+ | `GridColumn` | Declarative column with render props |
647
+ | `GridDetailPanel` | Master-detail expandable panel |
648
+ | `GridToolPanel` | Custom sidebar panel |
649
+ | `GridHeaderContent` | Inject React content into shell header zone |
650
+ | `GridToolbarContent` | Inject React content into shell toolbar zone |
651
+ | `GridToolButtons` | Toolbar button container |
652
+ | `GridProvider` | Combined provider for icons & type defaults |
653
+ | `GridTypeProvider` | App-level type defaults context |
654
+ | `GridIconProvider` | App-level icon overrides context |
653
655
 
654
656
  ### Exported Hooks
655
657
 
@@ -1,5 +1,5 @@
1
- import { jsx as u } from "react/jsx-runtime";
2
- import { useRef as g, useCallback as m, useEffect as p } from "react";
1
+ import { jsx as g } from "react/jsx-runtime";
2
+ import { useRef as u, useCallback as b, useEffect as m } from "react";
3
3
  const o = /* @__PURE__ */ new WeakMap(), s = /* @__PURE__ */ new Map();
4
4
  function x(r) {
5
5
  const i = r.querySelector("tbw-grid-detail");
@@ -11,12 +11,12 @@ function x(r) {
11
11
  if (d)
12
12
  return s.get(d);
13
13
  }
14
- function b(r) {
15
- const { children: i, showExpandColumn: d = !0, animation: n = "slide" } = r, l = g(null), f = m(
14
+ function p(r) {
15
+ const { children: i, showExpandColumn: d = !0, animation: n = "slide" } = r, l = u(null), f = b(
16
16
  (t) => {
17
17
  if (l.current = t, !t) return;
18
18
  o.set(t, i);
19
- const e = t.closest("tbw-grid");
19
+ const e = t.closest("tbw-grid, [data-tbw-grid]");
20
20
  if (e) {
21
21
  const a = e.id || e.getAttribute("data-grid-id");
22
22
  a && s.set(a, i);
@@ -24,11 +24,11 @@ function b(r) {
24
24
  },
25
25
  [i]
26
26
  );
27
- return p(() => () => {
27
+ return m(() => () => {
28
28
  const t = l.current;
29
29
  if (t) {
30
30
  o.delete(t);
31
- const e = t.closest("tbw-grid");
31
+ const e = t.closest("tbw-grid, [data-tbw-grid]");
32
32
  if (e) {
33
33
  const c = e.id || e.getAttribute("data-grid-id");
34
34
  c && s.delete(c);
@@ -36,7 +36,7 @@ function b(r) {
36
36
  const a = t.parentNode;
37
37
  a && a.contains(t);
38
38
  }
39
- }, []), /* @__PURE__ */ u(
39
+ }, []), /* @__PURE__ */ g(
40
40
  "tbw-grid-detail",
41
41
  {
42
42
  ref: f,
@@ -45,8 +45,8 @@ function b(r) {
45
45
  }
46
46
  );
47
47
  }
48
- b.displayName = "GridDetailPanel";
48
+ p.displayName = "GridDetailPanel";
49
49
  export {
50
- b as G,
50
+ p as G,
51
51
  x as g
52
52
  };
@@ -0,0 +1,45 @@
1
+ import { jsx as u } from "react/jsx-runtime";
2
+ import { useRef as f, useCallback as l, useEffect as p } from "react";
3
+ const o = /* @__PURE__ */ new WeakMap(), a = /* @__PURE__ */ new Map();
4
+ function v(i) {
5
+ const r = i.querySelector("tbw-grid-responsive-card");
6
+ if (r) {
7
+ const s = o.get(r);
8
+ if (s) return s;
9
+ }
10
+ const d = i.id || i.getAttribute("data-grid-id");
11
+ if (d)
12
+ return a.get(d);
13
+ }
14
+ function b(i) {
15
+ const { children: r, cardRowHeight: d = "auto" } = i, s = f(null), c = l(
16
+ (t) => {
17
+ if (s.current = t, !t) return;
18
+ o.set(t, r);
19
+ const e = t.closest("tbw-grid, [data-tbw-grid]");
20
+ if (e) {
21
+ const n = e.id || e.getAttribute("data-grid-id");
22
+ n && a.set(n, r);
23
+ }
24
+ },
25
+ [r]
26
+ );
27
+ p(() => () => {
28
+ const t = s.current;
29
+ if (t) {
30
+ o.delete(t);
31
+ const e = t.closest("tbw-grid, [data-tbw-grid]");
32
+ if (e) {
33
+ const n = e.id || e.getAttribute("data-grid-id");
34
+ n && a.delete(n);
35
+ }
36
+ }
37
+ }, []);
38
+ const g = d === "auto" ? "auto" : String(d);
39
+ return /* @__PURE__ */ u("tbw-grid-responsive-card", { ref: c, cardRowHeight: g });
40
+ }
41
+ b.displayName = "GridResponsiveCard";
42
+ export {
43
+ b as G,
44
+ v as g
45
+ };
@@ -0,0 +1,68 @@
1
+ import { flushSync as d } from "react-dom";
2
+ import { createRoot as p } from "react-dom/client";
3
+ const o = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
4
+ let m = 0;
5
+ function B(t, e) {
6
+ e ? o.set(t, e) : o.delete(t);
7
+ }
8
+ function g(t, e) {
9
+ if (e) return e;
10
+ const n = t.closest("tbw-grid, [data-tbw-grid]");
11
+ if (n) return n;
12
+ if (o.size === 1) return o.keys().next().value;
13
+ }
14
+ function u(t) {
15
+ const e = i.get(t);
16
+ if (e) {
17
+ try {
18
+ e.unmount();
19
+ } catch {
20
+ }
21
+ i.delete(t);
22
+ }
23
+ }
24
+ function v(t, e, n, r) {
25
+ const s = n ?? `p-${m++}`, a = g(t, r), l = a ? o.get(a) : void 0;
26
+ if (l)
27
+ u(s), a && f.set(s, a), l.renderPortal(s, t, e);
28
+ else {
29
+ let c = i.get(s);
30
+ c || (c = p(t), i.set(s, c)), d(() => c.render(e));
31
+ }
32
+ return s;
33
+ }
34
+ function w(t, e) {
35
+ const n = f.get(t);
36
+ (n ? o.get(n) : void 0)?.removePortal(t, e?.sync), f.delete(t), u(t);
37
+ }
38
+ function M(t) {
39
+ if (t) {
40
+ o.get(t)?.beginBatch();
41
+ return;
42
+ }
43
+ for (const e of o.values()) e.beginBatch();
44
+ }
45
+ function y(t) {
46
+ if (t) {
47
+ o.get(t)?.endBatch();
48
+ return;
49
+ }
50
+ for (const e of o.values()) e.endBatch();
51
+ }
52
+ function P(t) {
53
+ return (e) => {
54
+ const n = t(e);
55
+ if (n == null || n === !1) return null;
56
+ if (n instanceof HTMLElement) return n;
57
+ const r = document.createElement("div");
58
+ return r.style.display = "contents", v(r, n), r;
59
+ };
60
+ }
61
+ export {
62
+ v as a,
63
+ M as b,
64
+ P as c,
65
+ y as e,
66
+ w as r,
67
+ B as s
68
+ };
@@ -0,0 +1,12 @@
1
+ const s = /* @__PURE__ */ new Map();
2
+ function n(o, t) {
3
+ s.set(o, t);
4
+ }
5
+ function e(o) {
6
+ for (const t of s.values())
7
+ t({ gridEl: o });
8
+ }
9
+ export {
10
+ e as n,
11
+ n as r
12
+ };
@@ -1,4 +1,4 @@
1
- import { a as u, r as f } from "./portal-bridge-BydpO5wl.js";
1
+ import { a as i, r as f } from "./portal-bridge-CvxNt40O.js";
2
2
  const y = [];
3
3
  function H(e) {
4
4
  y.push(e);
@@ -13,15 +13,15 @@ function R(e, n) {
13
13
  for (const t of r) t();
14
14
  };
15
15
  }
16
- const l = /* @__PURE__ */ Symbol("reactProcessed"), a = /* @__PURE__ */ new Map();
16
+ const l = /* @__PURE__ */ Symbol("reactProcessed"), s = /* @__PURE__ */ new Map();
17
17
  function K(e) {
18
18
  const n = e.querySelectorAll(".react-cell-editor, .react-cell-renderer");
19
19
  for (const r of n) {
20
- const t = a.get(r);
21
- t && (t.unsub?.(), f(t.key, { sync: !0 }), a.delete(r));
20
+ const t = s.get(r);
21
+ t && (t.unsub?.(), f(t.key, { sync: !0 }), s.delete(r));
22
22
  }
23
23
  }
24
- function i(e) {
24
+ function u(e) {
25
25
  const n = document.createElement("div");
26
26
  return n.className = e, n.style.display = "contents", n;
27
27
  }
@@ -36,36 +36,36 @@ function E(e) {
36
36
  return (r) => {
37
37
  const t = r.cellEl;
38
38
  if (t) {
39
- const c = n.get(t);
40
- if (c) {
41
- if (t.contains(c.container))
42
- return u(c.container, e(r), c.portalKey), c.container;
43
- f(c.portalKey, { sync: !0 }), n.delete(t);
39
+ const a = n.get(t);
40
+ if (a) {
41
+ if (t.contains(a.container))
42
+ return i(a.container, e(r), a.portalKey), a.container;
43
+ f(a.portalKey, { sync: !0 }), n.delete(t);
44
44
  }
45
45
  }
46
- const o = i("react-cell-renderer"), s = u(o, e(r));
47
- return t && n.set(t, { portalKey: s, container: o }), a.set(o, { key: s }), o;
46
+ const o = u("react-cell-renderer"), c = i(o, e(r));
47
+ return t && n.set(t, { portalKey: c, container: o }), s.set(o, { key: c }), o;
48
48
  };
49
49
  }
50
- function k(e) {
50
+ function w(e) {
51
51
  return (n) => {
52
- const r = i("react-cell-editor"), o = { key: u(r, e(n)) };
53
- return a.set(r, o), queueMicrotask(() => {
54
- const s = r.closest("tbw-grid");
55
- s && (o.unsub = R(r, s));
52
+ const r = u("react-cell-editor"), o = { key: i(r, e(n)) };
53
+ return s.set(r, o), queueMicrotask(() => {
54
+ const c = r.closest("tbw-grid, [data-tbw-grid]");
55
+ c && (o.unsub = R(r, c));
56
56
  }), r;
57
57
  };
58
58
  }
59
- function w(e) {
59
+ function k(e) {
60
60
  return (n) => {
61
- const r = i("react-header-renderer"), t = u(r, e(n));
62
- return a.set(r, { key: t }), r;
61
+ const r = u("react-header-renderer"), t = i(r, e(n));
62
+ return s.set(r, { key: t }), r;
63
63
  };
64
64
  }
65
65
  function h(e) {
66
66
  return (n) => {
67
- const r = i("react-header-label-renderer"), t = u(r, e(n));
68
- return a.set(r, { key: t }), r;
67
+ const r = u("react-header-label-renderer"), t = i(r, e(n));
68
+ return s.set(r, { key: t }), r;
69
69
  };
70
70
  }
71
71
  function M(e) {
@@ -73,8 +73,8 @@ function M(e) {
73
73
  const r = e(n);
74
74
  if (r instanceof HTMLElement || typeof r == "string")
75
75
  return r;
76
- const t = i("react-loading-renderer"), o = u(t, r);
77
- return a.set(t, { key: o }), t;
76
+ const t = u("react-loading-renderer"), o = i(t, r);
77
+ return s.set(t, { key: o }), t;
78
78
  };
79
79
  }
80
80
  function b(e) {
@@ -82,8 +82,8 @@ function b(e) {
82
82
  const r = e(n);
83
83
  if (r instanceof HTMLElement || typeof r == "string")
84
84
  return r;
85
- const t = i("react-empty-renderer"), o = u(t, r);
86
- return a.set(t, { key: o }), t;
85
+ const t = u("react-empty-renderer"), o = i(t, r);
86
+ return s.set(t, { key: o }), t;
87
87
  };
88
88
  }
89
89
  function T(e) {
@@ -108,8 +108,8 @@ function T(e) {
108
108
  return t[l] = !0, t;
109
109
  }
110
110
  const n = e.columns.map((t) => {
111
- const { renderer: o, editor: s, headerRenderer: c, headerLabelRenderer: p, ...m } = t, d = { ...m };
112
- return o && (d.renderer = E(o)), s && (d.editor = k(s)), c && (d.headerRenderer = w(c)), p && (d.headerLabelRenderer = h(p)), d;
111
+ const { renderer: o, editor: c, headerRenderer: a, headerLabelRenderer: p, ...m } = t, d = { ...m };
112
+ return o && (d.renderer = E(o)), c && (d.editor = w(c)), a && (d.headerRenderer = k(a)), p && (d.headerLabelRenderer = h(p)), d;
113
113
  }), r = {
114
114
  ...e,
115
115
  columns: n
@@ -1,26 +1,63 @@
1
- import { p as b, n as m, c as K } from "./react-column-config-Dz234dN8.js";
2
- import { jsx as T } from "react/jsx-runtime";
3
- import { useRef as k, useCallback as E, useEffect as w } from "react";
4
- import { a as u, r as g, b as B, e as D } from "./portal-bridge-BydpO5wl.js";
5
- const p = /* @__PURE__ */ new WeakMap(), h = /* @__PURE__ */ new Map();
6
- function M(o) {
7
- const e = p.get(o);
1
+ import { useRef as w, useCallback as K, useEffect as T } from "react";
2
+ import { p as E, n as k, c as B } from "./react-column-config-BOe_PgL1.js";
3
+ import { jsx as D } from "react/jsx-runtime";
4
+ import { a as u, r as g, b as M, e as A } from "./portal-bridge-CvxNt40O.js";
5
+ const h = /* @__PURE__ */ new Set();
6
+ let p = null;
7
+ function S(o) {
8
+ h.has(o) || (h.add(o), p = null);
9
+ }
10
+ function j() {
11
+ return p === null && (p = Object.freeze(Array.from(h))), p;
12
+ }
13
+ const F = [
14
+ "selection",
15
+ "editing",
16
+ "filtering",
17
+ "multiSort",
18
+ "clipboard",
19
+ "contextMenu",
20
+ "reorderColumns",
21
+ // @deprecated v1.x — remove in `@toolbox-web/grid-react` 2.0.0 (gh #261 / #263). Superseded by `rowDragDrop`.
22
+ "reorderRows",
23
+ "rowDragDrop",
24
+ "visibility",
25
+ "undoRedo",
26
+ "tree",
27
+ "groupingRows",
28
+ "groupingColumns",
29
+ "pinnedColumns",
30
+ "pinnedRows",
31
+ "masterDetail",
32
+ "responsive",
33
+ "columnVirtualization",
34
+ "export",
35
+ "print",
36
+ "pivot",
37
+ "serverSide",
38
+ "tooltip"
39
+ ];
40
+ for (const o of F)
41
+ S(o);
42
+ const P = /* @__PURE__ */ new WeakMap(), b = /* @__PURE__ */ new Map();
43
+ function U(o) {
44
+ const e = P.get(o);
8
45
  if (e) return e;
9
46
  const t = o.id;
10
47
  if (t)
11
- return h.get(t);
48
+ return b.get(t);
12
49
  }
13
- function W(o) {
14
- const { id: e, title: t, icon: r, tooltip: n, order: s = 100, children: i } = o, l = k(null), y = E(
50
+ function z(o) {
51
+ const { id: e, title: t, icon: r, tooltip: n, order: s = 100, children: i } = o, l = w(null), y = K(
15
52
  (a) => {
16
- l.current = a, a && (p.set(a, i), e && h.set(e, i));
53
+ l.current = a, a && (P.set(a, i), e && b.set(e, i));
17
54
  },
18
55
  [i, e]
19
56
  );
20
- return w(() => () => {
57
+ return T(() => () => {
21
58
  const a = l.current;
22
- a && (p.delete(a), e && h.delete(e));
23
- }, [e]), /* @__PURE__ */ T(
59
+ a && (P.delete(a), e && b.delete(e));
60
+ }, [e]), /* @__PURE__ */ D(
24
61
  "tbw-grid-tool-panel",
25
62
  {
26
63
  ref: y,
@@ -32,48 +69,48 @@ function W(o) {
32
69
  }
33
70
  );
34
71
  }
35
- let R = null, v = null, P = null;
36
- function I(o) {
37
- R = o;
72
+ let C = null, m = null, R = null;
73
+ function O(o) {
74
+ C = o;
38
75
  }
39
- function N(o) {
40
- v = o;
76
+ function q(o) {
77
+ m = o;
41
78
  }
42
- function j(o) {
43
- P = o;
79
+ function H(o) {
80
+ R = o;
44
81
  }
45
- const c = /* @__PURE__ */ new WeakMap(), d = /* @__PURE__ */ new Map();
46
- function q(o, e) {
47
- const t = o.getAttribute("field"), r = c.get(o) ?? {};
48
- if (r.renderer = e, c.set(o, r), t) {
49
- const n = d.get(t) ?? {};
50
- n.renderer = e, d.set(t, n);
82
+ const d = /* @__PURE__ */ new WeakMap(), c = /* @__PURE__ */ new Map();
83
+ function L(o, e) {
84
+ const t = o.getAttribute("field"), r = d.get(o) ?? {};
85
+ if (r.renderer = e, d.set(o, r), t) {
86
+ const n = c.get(t) ?? {};
87
+ n.renderer = e, c.set(t, n);
51
88
  }
52
89
  }
53
- function H(o, e) {
54
- const t = o.getAttribute("field"), r = c.get(o) ?? {};
55
- if (r.editor = e, c.set(o, r), t) {
56
- const n = d.get(t) ?? {};
57
- n.editor = e, d.set(t, n);
90
+ function V(o, e) {
91
+ const t = o.getAttribute("field"), r = d.get(o) ?? {};
92
+ if (r.editor = e, d.set(o, r), t) {
93
+ const n = c.get(t) ?? {};
94
+ n.editor = e, c.set(t, n);
58
95
  }
59
96
  }
60
- function A(o) {
61
- let e = c.get(o)?.renderer;
97
+ function x(o) {
98
+ let e = d.get(o)?.renderer;
62
99
  if (!e) {
63
100
  const t = o.getAttribute("field");
64
- t && (e = d.get(t)?.renderer);
101
+ t && (e = c.get(t)?.renderer);
65
102
  }
66
103
  return e;
67
104
  }
68
- function U(o) {
69
- let e = c.get(o)?.editor;
105
+ function G(o) {
106
+ let e = d.get(o)?.editor;
70
107
  if (!e) {
71
108
  const t = o.getAttribute("field");
72
- t && (e = d.get(t)?.editor);
109
+ t && (e = c.get(t)?.editor);
73
110
  }
74
111
  return e;
75
112
  }
76
- class z {
113
+ class Y {
77
114
  /** Portal keys for all managed portals (for cleanup on destroy). */
78
115
  allPortalKeys = /* @__PURE__ */ new Set();
79
116
  /** Portal keys for editor-specific portals (for per-cell cleanup via releaseCell). */
@@ -128,7 +165,7 @@ class z {
128
165
  * Converts React renderer/editor functions to DOM-returning functions.
129
166
  */
130
167
  processConfig(e) {
131
- return b(e) ?? e;
168
+ return E(e) ?? e;
132
169
  }
133
170
  /**
134
171
  * Determines if this adapter can handle the given element.
@@ -136,10 +173,10 @@ class z {
136
173
  */
137
174
  canHandle(e) {
138
175
  const t = e.getAttribute("field");
139
- let r = c.get(e);
176
+ let r = d.get(e);
140
177
  if (!r && t) {
141
- const i = d.get(t);
142
- i && (i.renderer || i.editor) && (r = i, c.set(e, r));
178
+ const i = c.get(t);
179
+ i && (i.renderer || i.editor) && (r = i, d.set(e, r));
143
180
  }
144
181
  const n = r?.renderer !== void 0, s = r?.editor !== void 0;
145
182
  return r !== void 0 && (n || s);
@@ -156,10 +193,10 @@ class z {
156
193
  * allowing the grid to use its default rendering.
157
194
  */
158
195
  createRenderer(e) {
159
- const t = A(e);
196
+ const t = x(e);
160
197
  if (!t)
161
198
  return;
162
- const r = e.closest("tbw-grid"), n = /* @__PURE__ */ new WeakMap();
199
+ const r = e.closest("tbw-grid, [data-tbw-grid]"), n = /* @__PURE__ */ new WeakMap();
163
200
  return (s) => {
164
201
  const i = s.cellEl;
165
202
  if (i) {
@@ -171,13 +208,13 @@ class z {
171
208
  }
172
209
  const f = document.createElement("div");
173
210
  f.className = "react-cell-renderer", f.style.display = "contents";
174
- const C = u(
211
+ const v = u(
175
212
  f,
176
213
  t(s),
177
214
  void 0,
178
215
  r ?? void 0
179
216
  );
180
- return n.set(i, { portalKey: C, container: f }), this.trackPortal(C, f, !1), f;
217
+ return n.set(i, { portalKey: v, container: f }), this.trackPortal(v, f, !1), f;
181
218
  }
182
219
  const l = document.createElement("div");
183
220
  l.className = "react-cell-renderer", l.style.display = "contents";
@@ -195,10 +232,10 @@ class z {
195
232
  * with commit/cancel callbacks passed as props.
196
233
  */
197
234
  createEditor(e) {
198
- const t = U(e);
235
+ const t = G(e);
199
236
  if (!t)
200
237
  return () => document.createElement("div");
201
- const r = e.closest("tbw-grid") ?? void 0;
238
+ const r = e.closest("tbw-grid, [data-tbw-grid]") ?? void 0;
202
239
  return (n) => {
203
240
  const s = document.createElement("div");
204
241
  s.className = "react-cell-editor", s.style.display = "contents";
@@ -208,7 +245,7 @@ class z {
208
245
  void 0,
209
246
  r
210
247
  );
211
- return this.trackPortal(i, s, !0), r && this.editorBeforeCloseUnsubs.set(i, m(s, r)), s;
248
+ return this.trackPortal(i, s, !0), r && this.editorBeforeCloseUnsubs.set(i, k(s, r)), s;
212
249
  };
213
250
  }
214
251
  /**
@@ -219,14 +256,14 @@ class z {
219
256
  * was registered for this grid.
220
257
  */
221
258
  createDetailRenderer(e) {
222
- return R?.(e, this.bridgeContext);
259
+ return C?.(e, this.bridgeContext);
223
260
  }
224
261
  /**
225
262
  * Framework adapter hook called by MasterDetailPlugin during attach().
226
263
  * Parses the <tbw-grid-detail> element and returns a React-based renderer.
227
264
  */
228
265
  parseDetailElement(e) {
229
- const t = e.closest("tbw-grid");
266
+ const t = e.closest("tbw-grid, [data-tbw-grid]");
230
267
  if (t)
231
268
  return this.createDetailRenderer(t);
232
269
  }
@@ -238,7 +275,7 @@ class z {
238
275
  * was registered for this grid.
239
276
  */
240
277
  createResponsiveCardRenderer(e) {
241
- return v?.(e, this.bridgeContext);
278
+ return m?.(e, this.bridgeContext);
242
279
  }
243
280
  /**
244
281
  * FrameworkAdapter hook called by ResponsivePlugin during attach().
@@ -249,7 +286,7 @@ class z {
249
286
  * `refreshResponsiveCardRenderer` hook in DataGrid.
250
287
  */
251
288
  parseResponsiveCardElement(e) {
252
- const t = e.closest("tbw-grid");
289
+ const t = e.closest("tbw-grid, [data-tbw-grid]");
253
290
  if (t)
254
291
  return this.createResponsiveCardRenderer(t);
255
292
  }
@@ -258,10 +295,10 @@ class z {
258
295
  * Renders React components into tool panel containers.
259
296
  */
260
297
  createToolPanelRenderer(e) {
261
- const t = M(e);
298
+ const t = U(e);
262
299
  if (!t)
263
300
  return;
264
- const r = e.closest("tbw-grid");
301
+ const r = e.closest("tbw-grid, [data-tbw-grid]");
265
302
  return (n) => {
266
303
  const i = u(n, t({
267
304
  grid: r ?? n
@@ -304,7 +341,7 @@ class z {
304
341
  const n = {
305
342
  editorParams: r.editorParams
306
343
  };
307
- return r.renderer && (n.renderer = this.createTypeRenderer(r.renderer, t)), r.editor && (n.editor = this.createTypeEditor(r.editor, t)), r.filterPanelRenderer && P && (n.filterPanelRenderer = P(
344
+ return r.renderer && (n.renderer = this.createTypeRenderer(r.renderer, t)), r.editor && (n.editor = this.createTypeEditor(r.editor, t)), r.filterPanelRenderer && R && (n.filterPanelRenderer = R(
308
345
  r.filterPanelRenderer,
309
346
  t,
310
347
  this.bridgeContext
@@ -318,7 +355,7 @@ class z {
318
355
  return (r) => {
319
356
  const n = document.createElement("span");
320
357
  n.style.display = "contents";
321
- const s = r.cellEl?.closest("tbw-grid") ?? t, i = u(n, e(r), void 0, s);
358
+ const s = r.cellEl?.closest("tbw-grid, [data-tbw-grid]") ?? t, i = u(n, e(r), void 0, s);
322
359
  return this.trackPortal(i, n, !1), n;
323
360
  };
324
361
  }
@@ -365,7 +402,7 @@ class z {
365
402
  g(e);
366
403
  this.allPortalKeys.clear(), this.editorPortalKeys.clear(), this.keyToContainer.clear();
367
404
  for (const e of this.editorBeforeCloseUnsubs.values()) e();
368
- this.editorBeforeCloseUnsubs.clear(), d.clear();
405
+ this.editorBeforeCloseUnsubs.clear(), c.clear();
369
406
  }
370
407
  /**
371
408
  * Called when a cell's content is about to be wiped.
@@ -395,7 +432,7 @@ class z {
395
432
  const n = this.containerToKey.get(r);
396
433
  n && (g(n, { sync: !0 }), this.untrackPortal(n));
397
434
  }
398
- K(e);
435
+ B(e);
399
436
  }
400
437
  /**
401
438
  * Unmount a specific container (called when cell is recycled).
@@ -413,7 +450,7 @@ class z {
413
450
  * grouping changes (#330).
414
451
  */
415
452
  beginBatch(e) {
416
- B(e);
453
+ M(e);
417
454
  }
418
455
  /**
419
456
  * Close a teardown batch opened by {@link beginBatch}. Caller is
@@ -422,15 +459,17 @@ class z {
422
459
  * filter then prunes them silently.
423
460
  */
424
461
  endBatch(e) {
425
- D(e);
462
+ A(e);
426
463
  }
427
464
  }
428
465
  export {
429
- z as G,
430
- I as a,
431
- N as b,
432
- q as c,
433
- H as d,
434
- W as e,
435
- j as r
466
+ Y as G,
467
+ O as a,
468
+ q as b,
469
+ L as c,
470
+ V as d,
471
+ z as e,
472
+ S as f,
473
+ j as g,
474
+ H as r
436
475
  };
@@ -1,5 +1,5 @@
1
1
  import "@toolbox-web/grid/features/editing";
2
- import { r, m as s } from "../chunks/react-column-config-Dz234dN8.js";
2
+ import { r, m as s } from "../chunks/react-column-config-BOe_PgL1.js";
3
3
  r(({ container: t, gridEl: e }) => {
4
4
  const o = s(t);
5
5
  return e.addEventListener("before-edit-close", o), () => e.removeEventListener("before-edit-close", o);