@toolbox-web/grid-vue 0.7.1 → 0.9.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 (106) hide show
  1. package/features/clipboard.d.ts +0 -19
  2. package/features/clipboard.d.ts.map +1 -1
  3. package/features/clipboard.js +1 -3
  4. package/features/clipboard.js.map +1 -1
  5. package/features/column-virtualization.d.ts +0 -19
  6. package/features/column-virtualization.d.ts.map +1 -1
  7. package/features/column-virtualization.js +1 -3
  8. package/features/column-virtualization.js.map +1 -1
  9. package/features/context-menu.d.ts +0 -19
  10. package/features/context-menu.d.ts.map +1 -1
  11. package/features/context-menu.js +1 -3
  12. package/features/context-menu.js.map +1 -1
  13. package/features/editing.d.ts +0 -19
  14. package/features/editing.d.ts.map +1 -1
  15. package/features/editing.js +1 -3
  16. package/features/editing.js.map +1 -1
  17. package/features/export.d.ts.map +1 -1
  18. package/features/export.js +18 -20
  19. package/features/export.js.map +1 -1
  20. package/features/filtering.js +4 -4
  21. package/features/grouping-columns.d.ts +9 -0
  22. package/features/grouping-columns.d.ts.map +1 -1
  23. package/features/grouping-columns.js +22 -3
  24. package/features/grouping-columns.js.map +1 -1
  25. package/features/grouping-rows.d.ts +9 -0
  26. package/features/grouping-rows.d.ts.map +1 -1
  27. package/features/grouping-rows.js +21 -2
  28. package/features/grouping-rows.js.map +1 -1
  29. package/features/index.js +17 -18
  30. package/features/index.js.map +1 -1
  31. package/features/master-detail.d.ts +0 -22
  32. package/features/master-detail.d.ts.map +1 -1
  33. package/features/master-detail.js +1 -3
  34. package/features/master-detail.js.map +1 -1
  35. package/features/multi-sort.d.ts +0 -19
  36. package/features/multi-sort.d.ts.map +1 -1
  37. package/features/multi-sort.js +1 -4
  38. package/features/multi-sort.js.map +1 -1
  39. package/features/pinned-columns.d.ts +0 -22
  40. package/features/pinned-columns.d.ts.map +1 -1
  41. package/features/pinned-columns.js +1 -3
  42. package/features/pinned-columns.js.map +1 -1
  43. package/features/pinned-rows.d.ts +0 -21
  44. package/features/pinned-rows.d.ts.map +1 -1
  45. package/features/pinned-rows.js +26 -3
  46. package/features/pinned-rows.js.map +1 -1
  47. package/features/pivot.d.ts +0 -23
  48. package/features/pivot.d.ts.map +1 -1
  49. package/features/pivot.js +1 -3
  50. package/features/pivot.js.map +1 -1
  51. package/features/print.d.ts.map +1 -1
  52. package/features/print.js +9 -11
  53. package/features/print.js.map +1 -1
  54. package/features/reorder-columns.d.ts +1 -0
  55. package/features/reorder-columns.d.ts.map +1 -0
  56. package/features/reorder-columns.js +2 -0
  57. package/features/reorder-columns.js.map +1 -0
  58. package/features/reorder-rows.d.ts +1 -0
  59. package/features/reorder-rows.d.ts.map +1 -0
  60. package/features/reorder-rows.js +2 -0
  61. package/features/reorder-rows.js.map +1 -0
  62. package/features/reorder.d.ts +3 -17
  63. package/features/reorder.d.ts.map +1 -1
  64. package/features/reorder.js +1 -3
  65. package/features/reorder.js.map +1 -1
  66. package/features/responsive.d.ts +0 -23
  67. package/features/responsive.d.ts.map +1 -1
  68. package/features/responsive.js +1 -3
  69. package/features/responsive.js.map +1 -1
  70. package/features/row-reorder.d.ts +3 -17
  71. package/features/row-reorder.d.ts.map +1 -1
  72. package/features/row-reorder.js +1 -3
  73. package/features/row-reorder.js.map +1 -1
  74. package/features/selection.d.ts.map +1 -1
  75. package/features/selection.js +20 -22
  76. package/features/selection.js.map +1 -1
  77. package/features/server-side.d.ts +0 -21
  78. package/features/server-side.d.ts.map +1 -1
  79. package/features/server-side.js +1 -3
  80. package/features/server-side.js.map +1 -1
  81. package/features/tree.d.ts +0 -22
  82. package/features/tree.d.ts.map +1 -1
  83. package/features/tree.js +1 -3
  84. package/features/tree.js.map +1 -1
  85. package/features/undo-redo.d.ts.map +1 -1
  86. package/features/undo-redo.js +10 -12
  87. package/features/undo-redo.js.map +1 -1
  88. package/features/visibility.d.ts +0 -19
  89. package/features/visibility.d.ts.map +1 -1
  90. package/features/visibility.js +1 -3
  91. package/features/visibility.js.map +1 -1
  92. package/index.js +545 -395
  93. package/index.js.map +1 -1
  94. package/lib/TbwGrid.vue.d.ts +5 -1
  95. package/lib/TbwGrid.vue.d.ts.map +1 -1
  96. package/lib/feature-props.d.ts +12 -4
  97. package/lib/feature-props.d.ts.map +1 -1
  98. package/lib/feature-registry.d.ts +6 -51
  99. package/lib/feature-registry.d.ts.map +1 -1
  100. package/lib/vue-column-config.d.ts +20 -3
  101. package/lib/vue-column-config.d.ts.map +1 -1
  102. package/lib/vue-grid-adapter.d.ts +34 -0
  103. package/lib/vue-grid-adapter.d.ts.map +1 -1
  104. package/package.json +1 -1
  105. package/chunks/feature-registry-BgEOysSJ.js +0 -38
  106. package/chunks/feature-registry-BgEOysSJ.js.map +0 -1
package/index.js CHANGED
@@ -1,14 +1,14 @@
1
- import { defineComponent as y, provide as L, inject as F, createApp as f, createVNode as k, ref as R, computed as ne, onMounted as T, onBeforeUnmount as q, watch as G, createElementBlock as O, openBlock as P, renderSlot as U, useSlots as B, h as C } from "vue";
2
- import { DataGridElement as re } from "@toolbox-web/grid";
3
- import { c as oe } from "./chunks/feature-registry-BgEOysSJ.js";
4
- import { a as Se, g as ke, b as Le, i as Fe, r as Me } from "./chunks/feature-registry-BgEOysSJ.js";
5
- import { G as H } from "./chunks/use-grid-B59B6XdD.js";
6
- import { u as Ae } from "./chunks/use-grid-B59B6XdD.js";
1
+ import { defineComponent as y, provide as N, inject as k, createApp as u, createVNode as V, ref as O, computed as re, onMounted as P, onBeforeUnmount as q, watch as G, createElementBlock as T, openBlock as j, renderSlot as x, useSlots as B, h as L } from "vue";
2
+ import { DataGridElement as ne } from "@toolbox-web/grid";
3
+ import { createPluginFromFeature as oe } from "@toolbox-web/grid/features/registry";
4
+ import { clearFeatureRegistry as Be, createPluginFromFeature as Se, getFeatureFactory as Ne, getRegisteredFeatures as ke, isFeatureRegistered as Fe, registerFeature as Ae } from "@toolbox-web/grid/features/registry";
5
+ import { G as U } from "./chunks/use-grid-B59B6XdD.js";
6
+ import { u as We } from "./chunks/use-grid-B59B6XdD.js";
7
7
  const K = /* @__PURE__ */ Symbol("grid-icons");
8
8
  function ie() {
9
- return F(K, void 0);
9
+ return k(K, void 0);
10
10
  }
11
- const se = y({
11
+ const de = y({
12
12
  name: "GridIconProvider",
13
13
  props: {
14
14
  /**
@@ -19,17 +19,17 @@ const se = y({
19
19
  required: !0
20
20
  }
21
21
  },
22
- setup(i, { slots: e }) {
23
- return L(K, i.icons), () => e.default?.();
22
+ setup(i, { slots: t }) {
23
+ return N(K, i.icons), () => t.default?.();
24
24
  }
25
25
  }), Y = /* @__PURE__ */ Symbol("grid-type-defaults");
26
26
  function J() {
27
- return F(Y, void 0);
27
+ return k(Y, void 0);
28
28
  }
29
29
  function Ce(i) {
30
30
  return J()?.[i];
31
31
  }
32
- const de = y({
32
+ const se = y({
33
33
  name: "GridTypeProvider",
34
34
  props: {
35
35
  /**
@@ -40,60 +40,60 @@ const de = y({
40
40
  required: !0
41
41
  }
42
42
  },
43
- setup(i, { slots: e }) {
44
- return L(Y, i.defaults), () => e.default?.();
43
+ setup(i, { slots: t }) {
44
+ return N(Y, i.defaults), () => t.default?.();
45
45
  }
46
- }), Q = /* @__PURE__ */ new WeakMap(), X = /* @__PURE__ */ new WeakMap(), v = /* @__PURE__ */ new WeakMap(), w = /* @__PURE__ */ new Map();
47
- function le(i, e) {
48
- const t = i.getAttribute("field"), n = v.get(i) ?? {};
49
- if (n.renderer = e, v.set(i, n), t) {
50
- const r = w.get(t) ?? {};
51
- r.renderer = e, w.set(t, r);
46
+ }), Q = /* @__PURE__ */ new WeakMap(), X = /* @__PURE__ */ new WeakMap(), w = /* @__PURE__ */ new WeakMap(), C = /* @__PURE__ */ new Map();
47
+ function ae(i, t) {
48
+ const r = i.getAttribute("field"), e = w.get(i) ?? {};
49
+ if (e.renderer = t, w.set(i, e), r) {
50
+ const n = C.get(r) ?? {};
51
+ n.renderer = t, C.set(r, n);
52
52
  }
53
53
  }
54
- function ae(i, e) {
55
- const t = i.getAttribute("field"), n = v.get(i) ?? {};
56
- if (n.editor = e, v.set(i, n), t) {
57
- const r = w.get(t) ?? {};
58
- r.editor = e, w.set(t, r);
54
+ function le(i, t) {
55
+ const r = i.getAttribute("field"), e = w.get(i) ?? {};
56
+ if (e.editor = t, w.set(i, e), r) {
57
+ const n = C.get(r) ?? {};
58
+ n.editor = t, C.set(r, n);
59
59
  }
60
60
  }
61
61
  function ce(i) {
62
- let e = v.get(i)?.renderer;
63
- if (!e) {
64
- const t = i.getAttribute("field");
65
- t && (e = w.get(t)?.renderer);
62
+ let t = w.get(i)?.renderer;
63
+ if (!t) {
64
+ const r = i.getAttribute("field");
65
+ r && (t = C.get(r)?.renderer);
66
66
  }
67
- return e;
67
+ return t;
68
68
  }
69
69
  function ue(i) {
70
- let e = v.get(i)?.editor;
71
- if (!e) {
72
- const t = i.getAttribute("field");
73
- t && (e = w.get(t)?.editor);
70
+ let t = w.get(i)?.editor;
71
+ if (!t) {
72
+ const r = i.getAttribute("field");
73
+ r && (t = C.get(r)?.editor);
74
74
  }
75
- return e;
75
+ return t;
76
76
  }
77
- function D(i) {
77
+ function v(i) {
78
78
  if (i == null || typeof i == "function" && i.prototype === void 0)
79
79
  return !1;
80
80
  if (typeof i == "object") {
81
- const e = i;
82
- if ("__name" in e || typeof e.setup == "function" || typeof e.render == "function") return !0;
81
+ const t = i;
82
+ if ("__name" in t || typeof t.setup == "function" || typeof t.render == "function") return !0;
83
83
  }
84
84
  if (typeof i == "function") {
85
- const e = Function.prototype.toString.call(i);
86
- if (e.startsWith("class ") || e.startsWith("class{")) return !0;
87
- const t = i;
88
- if ("__name" in t || typeof t.setup == "function") return !0;
85
+ const t = Function.prototype.toString.call(i);
86
+ if (t.startsWith("class ") || t.startsWith("class{")) return !0;
87
+ const r = i;
88
+ if ("__name" in r || typeof r.setup == "function") return !0;
89
89
  }
90
90
  return !1;
91
91
  }
92
- function j(i) {
93
- return typeof i == "function" && !D(i);
92
+ function R(i) {
93
+ return typeof i == "function" && !v(i);
94
94
  }
95
- const E = /* @__PURE__ */ Symbol.for("tbw:vue-processed");
96
- class fe {
95
+ const m = /* @__PURE__ */ Symbol.for("tbw:vue-processed");
96
+ class pe {
97
97
  mountedViews = [];
98
98
  /** Editor-specific views tracked separately for per-cell cleanup via releaseCell. */
99
99
  editorViews = [];
@@ -123,9 +123,13 @@ class fe {
123
123
  * @param config - Vue grid config with possible component/VNode references
124
124
  * @returns Processed config with DOM-returning functions
125
125
  */
126
- processGridConfig(e) {
127
- const t = { ...e };
128
- return e.columns && (t.columns = e.columns.map((n) => this.processColumn(n))), e.typeDefaults && (t.typeDefaults = this.processTypeDefaults(e.typeDefaults)), t;
126
+ processGridConfig(t) {
127
+ const r = { ...t };
128
+ return t.columns && (r.columns = t.columns.map((e) => this.processColumn(e))), t.typeDefaults && (r.typeDefaults = this.processTypeDefaults(t.typeDefaults)), t.loadingRenderer && (v(t.loadingRenderer) ? r.loadingRenderer = this.createComponentLoadingRenderer(
129
+ t.loadingRenderer
130
+ ) : R(t.loadingRenderer) && (r.loadingRenderer = this.createVNodeLoadingRenderer(
131
+ t.loadingRenderer
132
+ ))), r;
129
133
  }
130
134
  /**
131
135
  * Processes typeDefaults, converting Vue component/VNode references
@@ -134,21 +138,21 @@ class fe {
134
138
  * @param typeDefaults - Vue type defaults with possible component references
135
139
  * @returns Processed TypeDefault record
136
140
  */
137
- processTypeDefaults(e) {
138
- const t = {};
139
- for (const [n, r] of Object.entries(e)) {
140
- const s = {
141
- editorParams: r.editorParams
141
+ processTypeDefaults(t) {
142
+ const r = {};
143
+ for (const [e, n] of Object.entries(t)) {
144
+ const d = {
145
+ editorParams: n.editorParams
142
146
  };
143
- r.renderer && (D(r.renderer) ? s.renderer = this.createConfigComponentRenderer(r.renderer) : j(r.renderer) && (s.renderer = this.createTypeRenderer(
144
- r.renderer
145
- ))), r.editor && (D(r.editor) ? s.editor = this.createConfigComponentEditor(
146
- r.editor
147
- ) : j(r.editor) && (s.editor = this.createTypeEditor(
148
- r.editor
149
- ))), r.filterPanelRenderer && (s.filterPanelRenderer = this.createFilterPanelRenderer(r.filterPanelRenderer)), t[n] = s;
147
+ n.renderer && (v(n.renderer) ? d.renderer = this.createConfigComponentRenderer(n.renderer) : R(n.renderer) && (d.renderer = this.createTypeRenderer(
148
+ n.renderer
149
+ ))), n.editor && (v(n.editor) ? d.editor = this.createConfigComponentEditor(
150
+ n.editor
151
+ ) : R(n.editor) && (d.editor = this.createTypeEditor(
152
+ n.editor
153
+ ))), n.filterPanelRenderer && (d.filterPanelRenderer = this.createFilterPanelRenderer(n.filterPanelRenderer)), r[e] = d;
150
154
  }
151
- return t;
155
+ return r;
152
156
  }
153
157
  /**
154
158
  * Processes a single column configuration, converting Vue component references
@@ -157,65 +161,87 @@ class fe {
157
161
  * @param column - Vue column config
158
162
  * @returns Processed ColumnConfig with DOM-returning functions
159
163
  */
160
- processColumn(e) {
161
- const t = { ...e };
162
- if (e.renderer && !e.renderer[E]) {
163
- if (D(e.renderer)) {
164
- const n = this.createConfigComponentRenderer(e.renderer);
165
- n[E] = !0, t.renderer = n;
166
- } else if (j(e.renderer)) {
167
- const n = this.createConfigVNodeRenderer(e.renderer);
168
- n[E] = !0, t.renderer = n;
164
+ processColumn(t) {
165
+ const r = { ...t };
166
+ if (t.renderer && !t.renderer[m]) {
167
+ if (v(t.renderer)) {
168
+ const e = this.createConfigComponentRenderer(t.renderer);
169
+ e[m] = !0, r.renderer = e;
170
+ } else if (R(t.renderer)) {
171
+ const e = this.createConfigVNodeRenderer(t.renderer);
172
+ e[m] = !0, r.renderer = e;
173
+ }
174
+ }
175
+ if (t.editor && !t.editor[m]) {
176
+ if (v(t.editor)) {
177
+ const e = this.createConfigComponentEditor(t.editor);
178
+ e[m] = !0, r.editor = e;
179
+ } else if (R(t.editor)) {
180
+ const e = this.createConfigVNodeEditor(t.editor);
181
+ e[m] = !0, r.editor = e;
169
182
  }
170
183
  }
171
- if (e.editor && !e.editor[E]) {
172
- if (D(e.editor)) {
173
- const n = this.createConfigComponentEditor(e.editor);
174
- n[E] = !0, t.editor = n;
175
- } else if (j(e.editor)) {
176
- const n = this.createConfigVNodeEditor(e.editor);
177
- n[E] = !0, t.editor = n;
184
+ if (t.headerRenderer && !t.headerRenderer[m]) {
185
+ if (v(t.headerRenderer)) {
186
+ const e = this.createConfigComponentHeaderRenderer(t.headerRenderer);
187
+ e[m] = !0, r.headerRenderer = e;
188
+ } else if (R(t.headerRenderer)) {
189
+ const e = this.createConfigVNodeHeaderRenderer(
190
+ t.headerRenderer
191
+ );
192
+ e[m] = !0, r.headerRenderer = e;
178
193
  }
179
194
  }
180
- return t;
195
+ if (t.headerLabelRenderer && !t.headerLabelRenderer[m]) {
196
+ if (v(t.headerLabelRenderer)) {
197
+ const e = this.createConfigComponentHeaderLabelRenderer(t.headerLabelRenderer);
198
+ e[m] = !0, r.headerLabelRenderer = e;
199
+ } else if (R(t.headerLabelRenderer)) {
200
+ const e = this.createConfigVNodeHeaderLabelRenderer(
201
+ t.headerLabelRenderer
202
+ );
203
+ e[m] = !0, r.headerLabelRenderer = e;
204
+ }
205
+ }
206
+ return r;
181
207
  }
182
208
  /**
183
209
  * Creates a DOM-returning renderer from a Vue component class.
184
210
  * Used for config-based renderers (not slot-based).
185
211
  * @internal
186
212
  */
187
- createConfigComponentRenderer(e) {
188
- const t = /* @__PURE__ */ new WeakMap();
189
- return (n) => {
190
- const r = n.cellEl;
191
- if (r) {
192
- const a = t.get(r);
193
- if (a)
194
- return a.update(n), a.container;
213
+ createConfigComponentRenderer(t) {
214
+ const r = /* @__PURE__ */ new WeakMap();
215
+ return (e) => {
216
+ const n = e.cellEl;
217
+ if (n) {
218
+ const l = r.get(n);
219
+ if (l)
220
+ return l.update(e), l.container;
195
221
  const c = document.createElement("div");
196
222
  c.className = "vue-cell-renderer", c.style.display = "contents";
197
- let u = n;
198
- const g = e, h = f({
223
+ let p = e;
224
+ const h = t, b = u({
199
225
  render() {
200
- return k(g, { ...u });
226
+ return V(h, { ...p });
201
227
  }
202
228
  });
203
- return h.mount(c), t.set(r, {
204
- app: h,
229
+ return b.mount(c), r.set(n, {
230
+ app: b,
205
231
  container: c,
206
- update: (V) => {
207
- u = V, h._instance?.update();
232
+ update: (_) => {
233
+ p = _, b._instance?.update();
208
234
  }
209
235
  }), c;
210
236
  }
211
- const s = document.createElement("div");
212
- s.className = "vue-cell-renderer", s.style.display = "contents";
213
- const d = e, l = f({
237
+ const d = document.createElement("div");
238
+ d.className = "vue-cell-renderer", d.style.display = "contents";
239
+ const s = t, a = u({
214
240
  render() {
215
- return k(d, { ...n });
241
+ return V(s, { ...e });
216
242
  }
217
243
  });
218
- return l.mount(s), this.mountedViews.push({ app: l, container: s }), s;
244
+ return a.mount(d), this.mountedViews.push({ app: a, container: d }), d;
219
245
  };
220
246
  }
221
247
  /**
@@ -223,38 +249,38 @@ class fe {
223
249
  * Used for config-based renderers (not slot-based).
224
250
  * @internal
225
251
  */
226
- createConfigVNodeRenderer(e) {
227
- const t = /* @__PURE__ */ new WeakMap();
228
- return (n) => {
229
- const r = n.cellEl;
230
- if (r) {
231
- const l = t.get(r);
232
- if (l)
233
- return l.update(n), l.container;
234
- const a = document.createElement("div");
235
- a.className = "vue-cell-renderer", a.style.display = "contents";
236
- let c = n;
237
- const u = f({
252
+ createConfigVNodeRenderer(t) {
253
+ const r = /* @__PURE__ */ new WeakMap();
254
+ return (e) => {
255
+ const n = e.cellEl;
256
+ if (n) {
257
+ const a = r.get(n);
258
+ if (a)
259
+ return a.update(e), a.container;
260
+ const l = document.createElement("div");
261
+ l.className = "vue-cell-renderer", l.style.display = "contents";
262
+ let c = e;
263
+ const p = u({
238
264
  render() {
239
- return e(c);
265
+ return t(c);
240
266
  }
241
267
  });
242
- return u.mount(a), t.set(r, {
243
- app: u,
244
- container: a,
245
- update: (g) => {
246
- c = g, u._instance?.update();
268
+ return p.mount(l), r.set(n, {
269
+ app: p,
270
+ container: l,
271
+ update: (h) => {
272
+ c = h, p._instance?.update();
247
273
  }
248
- }), a;
274
+ }), l;
249
275
  }
250
- const s = document.createElement("div");
251
- s.className = "vue-cell-renderer", s.style.display = "contents";
252
- const d = f({
276
+ const d = document.createElement("div");
277
+ d.className = "vue-cell-renderer", d.style.display = "contents";
278
+ const s = u({
253
279
  render() {
254
- return e(n);
280
+ return t(e);
255
281
  }
256
282
  });
257
- return d.mount(s), this.mountedViews.push({ app: d, container: s }), s;
283
+ return s.mount(d), this.mountedViews.push({ app: s, container: d }), d;
258
284
  };
259
285
  }
260
286
  /**
@@ -262,16 +288,16 @@ class fe {
262
288
  * Used for config-based editors (not slot-based).
263
289
  * @internal
264
290
  */
265
- createConfigComponentEditor(e) {
266
- return (t) => {
267
- const n = document.createElement("div");
268
- n.className = "vue-cell-editor", n.style.display = "contents";
269
- const r = e, s = f({
291
+ createConfigComponentEditor(t) {
292
+ return (r) => {
293
+ const e = document.createElement("div");
294
+ e.className = "vue-cell-editor", e.style.display = "contents";
295
+ const n = t, d = u({
270
296
  render() {
271
- return k(r, { ...t });
297
+ return V(n, { ...r });
272
298
  }
273
299
  });
274
- return s.mount(n), this.editorViews.push({ app: s, container: n }), n;
300
+ return d.mount(e), this.editorViews.push({ app: d, container: e }), e;
275
301
  };
276
302
  }
277
303
  /**
@@ -279,16 +305,126 @@ class fe {
279
305
  * Used for config-based editors (not slot-based).
280
306
  * @internal
281
307
  */
282
- createConfigVNodeEditor(e) {
283
- return (t) => {
284
- const n = document.createElement("div");
285
- n.className = "vue-cell-editor", n.style.display = "contents";
286
- const r = f({
308
+ createConfigVNodeEditor(t) {
309
+ return (r) => {
310
+ const e = document.createElement("div");
311
+ e.className = "vue-cell-editor", e.style.display = "contents";
312
+ const n = u({
313
+ render() {
314
+ return t(r);
315
+ }
316
+ });
317
+ return n.mount(e), this.editorViews.push({ app: n, container: e }), e;
318
+ };
319
+ }
320
+ /**
321
+ * Creates a DOM-returning header renderer from a Vue component class.
322
+ * Used for config-based headerRenderer (not slot-based).
323
+ * @internal
324
+ */
325
+ createConfigComponentHeaderRenderer(t) {
326
+ return (r) => {
327
+ const e = document.createElement("div");
328
+ e.className = "vue-header-renderer", e.style.display = "contents";
329
+ const n = t, d = u({
330
+ render() {
331
+ return V(n, {
332
+ column: r.column,
333
+ value: r.value,
334
+ sortState: r.sortState,
335
+ filterActive: r.filterActive,
336
+ renderSortIcon: r.renderSortIcon,
337
+ renderFilterButton: r.renderFilterButton
338
+ });
339
+ }
340
+ });
341
+ return d.mount(e), this.mountedViews.push({ app: d, container: e }), e;
342
+ };
343
+ }
344
+ /**
345
+ * Creates a DOM-returning header renderer from a VNode-returning render function.
346
+ * Used for config-based headerRenderer (not slot-based).
347
+ * @internal
348
+ */
349
+ createConfigVNodeHeaderRenderer(t) {
350
+ return (r) => {
351
+ const e = document.createElement("div");
352
+ e.className = "vue-header-renderer", e.style.display = "contents";
353
+ const n = u({
287
354
  render() {
288
- return e(t);
355
+ return t(r);
289
356
  }
290
357
  });
291
- return r.mount(n), this.editorViews.push({ app: r, container: n }), n;
358
+ return n.mount(e), this.mountedViews.push({ app: n, container: e }), e;
359
+ };
360
+ }
361
+ /**
362
+ * Creates a DOM-returning header label renderer from a Vue component class.
363
+ * Used for config-based headerLabelRenderer (not slot-based).
364
+ * @internal
365
+ */
366
+ createConfigComponentHeaderLabelRenderer(t) {
367
+ return (r) => {
368
+ const e = document.createElement("div");
369
+ e.className = "vue-header-label-renderer", e.style.display = "contents";
370
+ const n = t, d = u({
371
+ render() {
372
+ return V(n, {
373
+ column: r.column,
374
+ value: r.value
375
+ });
376
+ }
377
+ });
378
+ return d.mount(e), this.mountedViews.push({ app: d, container: e }), e;
379
+ };
380
+ }
381
+ /**
382
+ * Creates a DOM-returning header label renderer from a VNode-returning render function.
383
+ * Used for config-based headerLabelRenderer (not slot-based).
384
+ * @internal
385
+ */
386
+ createConfigVNodeHeaderLabelRenderer(t) {
387
+ return (r) => {
388
+ const e = document.createElement("div");
389
+ e.className = "vue-header-label-renderer", e.style.display = "contents";
390
+ const n = u({
391
+ render() {
392
+ return t(r);
393
+ }
394
+ });
395
+ return n.mount(e), this.mountedViews.push({ app: n, container: e }), e;
396
+ };
397
+ }
398
+ /**
399
+ * Creates a DOM-returning loading renderer from a Vue component class.
400
+ * @internal
401
+ */
402
+ createComponentLoadingRenderer(t) {
403
+ return (r) => {
404
+ const e = document.createElement("div");
405
+ e.className = "vue-loading-renderer", e.style.display = "contents";
406
+ const n = t, d = u({
407
+ render() {
408
+ return V(n, { size: r.size });
409
+ }
410
+ });
411
+ return d.mount(e), this.mountedViews.push({ app: d, container: e }), e;
412
+ };
413
+ }
414
+ /**
415
+ * Creates a DOM-returning loading renderer from a VNode-returning render function.
416
+ * @internal
417
+ */
418
+ createVNodeLoadingRenderer(t) {
419
+ return (r) => {
420
+ const e = document.createElement("div");
421
+ e.className = "vue-loading-renderer", e.style.display = "contents";
422
+ const n = u({
423
+ render() {
424
+ return t(r);
425
+ }
426
+ });
427
+ return n.mount(e), this.mountedViews.push({ app: n, container: e }), e;
292
428
  };
293
429
  }
294
430
  // #endregion
@@ -298,132 +434,132 @@ class fe {
298
434
  *
299
435
  * @internal
300
436
  */
301
- setTypeDefaults(e) {
302
- this.typeDefaults = e;
437
+ setTypeDefaults(t) {
438
+ this.typeDefaults = t;
303
439
  }
304
440
  /**
305
441
  * Determines if this adapter can handle the given element.
306
442
  * Checks if a renderer or editor is registered for this element.
307
443
  */
308
- canHandle(e) {
309
- const t = e.getAttribute("field");
310
- let n = v.get(e);
311
- if (!n && t) {
312
- const d = w.get(t);
313
- d && (d.renderer || d.editor) && (n = d, v.set(e, n));
444
+ canHandle(t) {
445
+ const r = t.getAttribute("field");
446
+ let e = w.get(t);
447
+ if (!e && r) {
448
+ const s = C.get(r);
449
+ s && (s.renderer || s.editor) && (e = s, w.set(t, e));
314
450
  }
315
- const r = n?.renderer !== void 0, s = n?.editor !== void 0;
316
- return n !== void 0 && (r || s);
451
+ const n = e?.renderer !== void 0, d = e?.editor !== void 0;
452
+ return e !== void 0 && (n || d);
317
453
  }
318
454
  /**
319
455
  * Creates a view renderer function that renders a Vue component
320
456
  * and returns its container DOM element.
321
457
  */
322
- createRenderer(e) {
323
- const t = ce(e);
324
- if (!t)
458
+ createRenderer(t) {
459
+ const r = ce(t);
460
+ if (!r)
325
461
  return;
326
- const n = /* @__PURE__ */ new WeakMap();
327
- return (r) => {
328
- const s = r.cellEl;
329
- if (s) {
330
- const a = n.get(s);
331
- if (a)
332
- return a.update(r), a.container;
462
+ const e = /* @__PURE__ */ new WeakMap();
463
+ return (n) => {
464
+ const d = n.cellEl;
465
+ if (d) {
466
+ const l = e.get(d);
467
+ if (l)
468
+ return l.update(n), l.container;
333
469
  const c = document.createElement("div");
334
470
  c.className = "vue-cell-renderer", c.style.display = "contents";
335
- let u = r;
336
- const g = f({
471
+ let p = n;
472
+ const h = u({
337
473
  render() {
338
- return t(u);
474
+ return r(p);
339
475
  }
340
476
  });
341
- return g.mount(c), n.set(s, {
342
- app: g,
477
+ return h.mount(c), e.set(d, {
478
+ app: h,
343
479
  container: c,
344
- update: (h) => {
345
- u = h, g._instance?.update();
480
+ update: (b) => {
481
+ p = b, h._instance?.update();
346
482
  }
347
483
  }), c;
348
484
  }
349
- const d = document.createElement("div");
350
- d.className = "vue-cell-renderer", d.style.display = "contents";
351
- const l = f({
485
+ const s = document.createElement("div");
486
+ s.className = "vue-cell-renderer", s.style.display = "contents";
487
+ const a = u({
352
488
  render() {
353
- return t(r);
489
+ return r(n);
354
490
  }
355
491
  });
356
- return l.mount(d), this.mountedViews.push({ app: l, container: d }), d;
492
+ return a.mount(s), this.mountedViews.push({ app: a, container: s }), s;
357
493
  };
358
494
  }
359
495
  /**
360
496
  * Creates an editor spec that renders a Vue component for cell editing.
361
497
  * Returns a function that creates the editor DOM element.
362
498
  */
363
- createEditor(e) {
364
- const t = ue(e);
365
- if (t)
366
- return (n) => {
367
- const r = document.createElement("div");
368
- r.className = "vue-cell-editor", r.style.display = "contents";
369
- const s = f({
499
+ createEditor(t) {
500
+ const r = ue(t);
501
+ if (r)
502
+ return (e) => {
503
+ const n = document.createElement("div");
504
+ n.className = "vue-cell-editor", n.style.display = "contents";
505
+ const d = u({
370
506
  render() {
371
- return t(n);
507
+ return r(e);
372
508
  }
373
509
  });
374
- return s.mount(r), this.editorViews.push({ app: s, container: r }), r;
510
+ return d.mount(n), this.editorViews.push({ app: d, container: n }), n;
375
511
  };
376
512
  }
377
513
  /**
378
514
  * Framework adapter hook called by MasterDetailPlugin during attach().
379
515
  * Parses the <tbw-grid-detail> element and returns a Vue-based renderer.
380
516
  */
381
- parseDetailElement(e) {
382
- const t = e.closest("tbw-grid");
383
- if (!t) return;
384
- const n = t.querySelector("tbw-grid-detail");
385
- if (!n) return;
386
- const r = Q.get(n);
387
- if (r)
388
- return (s, d) => {
389
- const l = document.createElement("div");
390
- l.className = "vue-detail-panel";
391
- const c = r({ row: s, rowIndex: d });
517
+ parseDetailElement(t) {
518
+ const r = t.closest("tbw-grid");
519
+ if (!r) return;
520
+ const e = r.querySelector("tbw-grid-detail");
521
+ if (!e) return;
522
+ const n = Q.get(e);
523
+ if (n)
524
+ return (d, s) => {
525
+ const a = document.createElement("div");
526
+ a.className = "vue-detail-panel";
527
+ const c = n({ row: d, rowIndex: s });
392
528
  if (c && c.length > 0) {
393
- const u = f({
529
+ const p = u({
394
530
  render() {
395
531
  return c;
396
532
  }
397
533
  });
398
- u.mount(l), this.mountedViews.push({ app: u, container: l });
534
+ p.mount(a), this.mountedViews.push({ app: p, container: a });
399
535
  }
400
- return l;
536
+ return a;
401
537
  };
402
538
  }
403
539
  /**
404
540
  * Framework adapter hook called by ResponsivePlugin during attach().
405
541
  * Parses the <tbw-grid-responsive-card> element and returns a Vue-based renderer.
406
542
  */
407
- parseResponsiveCardElement(e) {
408
- const t = e.closest("tbw-grid");
409
- if (!t) return;
410
- const n = t.querySelector("tbw-grid-responsive-card");
411
- if (!n) return;
412
- const r = X.get(n);
413
- if (r)
414
- return (s, d) => {
415
- const l = document.createElement("div");
416
- l.className = "vue-responsive-card";
417
- const c = r({ row: s, rowIndex: d });
543
+ parseResponsiveCardElement(t) {
544
+ const r = t.closest("tbw-grid");
545
+ if (!r) return;
546
+ const e = r.querySelector("tbw-grid-responsive-card");
547
+ if (!e) return;
548
+ const n = X.get(e);
549
+ if (n)
550
+ return (d, s) => {
551
+ const a = document.createElement("div");
552
+ a.className = "vue-responsive-card";
553
+ const c = n({ row: d, rowIndex: s });
418
554
  if (c && c.length > 0) {
419
- const u = f({
555
+ const p = u({
420
556
  render() {
421
557
  return c;
422
558
  }
423
559
  });
424
- u.mount(l), this.mountedViews.push({ app: u, container: l });
560
+ p.mount(a), this.mountedViews.push({ app: p, container: a });
425
561
  }
426
- return l;
562
+ return a;
427
563
  };
428
564
  }
429
565
  // #region Type Defaults Support
@@ -455,47 +591,47 @@ class fe {
455
591
  * </template>
456
592
  * ```
457
593
  */
458
- getTypeDefault(e) {
594
+ getTypeDefault(t) {
459
595
  if (!this.typeDefaults)
460
596
  return;
461
- const t = this.typeDefaults[e];
462
- if (!t)
597
+ const r = this.typeDefaults[t];
598
+ if (!r)
463
599
  return;
464
- const n = {
465
- editorParams: t.editorParams
600
+ const e = {
601
+ editorParams: r.editorParams
466
602
  };
467
- return t.renderer && (n.renderer = this.createTypeRenderer(t.renderer)), t.editor && (n.editor = this.createTypeEditor(t.editor)), t.filterPanelRenderer && (n.filterPanelRenderer = this.createFilterPanelRenderer(t.filterPanelRenderer)), n;
603
+ return r.renderer && (e.renderer = this.createTypeRenderer(r.renderer)), r.editor && (e.editor = this.createTypeEditor(r.editor)), r.filterPanelRenderer && (e.filterPanelRenderer = this.createFilterPanelRenderer(r.filterPanelRenderer)), e;
468
604
  }
469
605
  /**
470
606
  * Creates a renderer function from a Vue render function for type defaults.
471
607
  * @internal
472
608
  */
473
- createTypeRenderer(e) {
474
- return (t) => {
475
- const n = document.createElement("span");
476
- n.style.display = "contents";
477
- const r = f({
609
+ createTypeRenderer(t) {
610
+ return (r) => {
611
+ const e = document.createElement("span");
612
+ e.style.display = "contents";
613
+ const n = u({
478
614
  render() {
479
- return e(t);
615
+ return t(r);
480
616
  }
481
617
  });
482
- return r.mount(n), this.mountedViews.push({ app: r, container: n }), n;
618
+ return n.mount(e), this.mountedViews.push({ app: n, container: e }), e;
483
619
  };
484
620
  }
485
621
  /**
486
622
  * Creates an editor function from a Vue render function for type defaults.
487
623
  * @internal
488
624
  */
489
- createTypeEditor(e) {
490
- return (t) => {
491
- const n = document.createElement("span");
492
- n.style.display = "contents";
493
- const r = f({
625
+ createTypeEditor(t) {
626
+ return (r) => {
627
+ const e = document.createElement("span");
628
+ e.style.display = "contents";
629
+ const n = u({
494
630
  render() {
495
- return e(t);
631
+ return t(r);
496
632
  }
497
633
  });
498
- return r.mount(n), this.editorViews.push({ app: r, container: n }), n;
634
+ return n.mount(e), this.editorViews.push({ app: n, container: e }), e;
499
635
  };
500
636
  }
501
637
  /**
@@ -505,16 +641,16 @@ class fe {
505
641
  * imperative `(container, params) => void` signature expected by the core grid.
506
642
  * @internal
507
643
  */
508
- createFilterPanelRenderer(e) {
509
- return (t, n) => {
510
- const r = document.createElement("div");
511
- r.style.display = "contents";
512
- const s = f({
644
+ createFilterPanelRenderer(t) {
645
+ return (r, e) => {
646
+ const n = document.createElement("div");
647
+ n.style.display = "contents";
648
+ const d = u({
513
649
  render() {
514
- return e(n);
650
+ return t(e);
515
651
  }
516
652
  });
517
- s.mount(r), this.mountedViews.push({ app: s, container: r }), t.appendChild(r);
653
+ d.mount(n), this.mountedViews.push({ app: d, container: n }), r.appendChild(n);
518
654
  };
519
655
  }
520
656
  // #endregion
@@ -522,15 +658,15 @@ class fe {
522
658
  * Cleanup all mounted Vue apps.
523
659
  */
524
660
  cleanup() {
525
- for (const { app: e, container: t } of this.mountedViews)
661
+ for (const { app: t, container: r } of this.mountedViews)
526
662
  try {
527
- e.unmount(), t.remove();
663
+ t.unmount(), r.remove();
528
664
  } catch {
529
665
  }
530
666
  this.mountedViews = [];
531
- for (const { app: e, container: t } of this.editorViews)
667
+ for (const { app: t, container: r } of this.editorViews)
532
668
  try {
533
- e.unmount(), t.remove();
669
+ t.unmount(), r.remove();
534
670
  } catch {
535
671
  }
536
672
  this.editorViews = [];
@@ -540,15 +676,15 @@ class fe {
540
676
  * Finds the matching entry in mountedViews by container reference
541
677
  * and properly destroys the Vue app to prevent memory leaks.
542
678
  */
543
- unmount(e) {
544
- for (let t = this.mountedViews.length - 1; t >= 0; t--) {
545
- const n = this.mountedViews[t];
546
- if (n.container === e || e.contains(n.container)) {
679
+ unmount(t) {
680
+ for (let r = this.mountedViews.length - 1; r >= 0; r--) {
681
+ const e = this.mountedViews[r];
682
+ if (e.container === t || t.contains(e.container)) {
547
683
  try {
548
- n.app.unmount();
684
+ e.app.unmount();
549
685
  } catch {
550
686
  }
551
- this.mountedViews.splice(t, 1);
687
+ this.mountedViews.splice(r, 1);
552
688
  return;
553
689
  }
554
690
  }
@@ -557,20 +693,20 @@ class fe {
557
693
  * Called when a cell's content is about to be wiped.
558
694
  * Destroys editor Vue apps whose container is inside the cell.
559
695
  */
560
- releaseCell(e) {
561
- for (let t = this.editorViews.length - 1; t >= 0; t--) {
562
- const { app: n, container: r } = this.editorViews[t];
563
- if (e.contains(r)) {
696
+ releaseCell(t) {
697
+ for (let r = this.editorViews.length - 1; r >= 0; r--) {
698
+ const { app: e, container: n } = this.editorViews[r];
699
+ if (t.contains(n)) {
564
700
  try {
565
- n.unmount(), r.remove();
701
+ e.unmount(), n.remove();
566
702
  } catch {
567
703
  }
568
- this.editorViews.splice(t, 1);
704
+ this.editorViews.splice(r, 1);
569
705
  }
570
706
  }
571
707
  }
572
708
  }
573
- const pe = fe, Re = /* @__PURE__ */ y({
709
+ const fe = pe, Ee = /* @__PURE__ */ y({
574
710
  __name: "TbwGrid",
575
711
  props: {
576
712
  /** Row data to display */
@@ -632,6 +768,11 @@ const pe = fe, Re = /* @__PURE__ */ y({
632
768
  default: void 0
633
769
  },
634
770
  /** Enable column drag-to-reorder */
771
+ reorderColumns: {
772
+ type: [Boolean, Object],
773
+ default: void 0
774
+ },
775
+ /** @deprecated Use `reorderColumns` instead */
635
776
  reorder: {
636
777
  type: [Boolean, Object],
637
778
  default: void 0
@@ -657,6 +798,11 @@ const pe = fe, Re = /* @__PURE__ */ y({
657
798
  default: void 0
658
799
  },
659
800
  /** Enable row drag-to-reorder */
801
+ reorderRows: {
802
+ type: [Boolean, Object],
803
+ default: void 0
804
+ },
805
+ /** @deprecated Use `reorderRows` instead */
660
806
  rowReorder: {
661
807
  type: [Boolean, Object],
662
808
  default: void 0
@@ -713,15 +859,15 @@ const pe = fe, Re = /* @__PURE__ */ y({
713
859
  }
714
860
  },
715
861
  emits: ["cell-commit", "row-commit", "cell-click", "cell-dblclick", "selection-change", "row-toggle", "sort-change", "ready"],
716
- setup(i, { expose: e, emit: t }) {
717
- let n = !1, r = null;
718
- function s() {
719
- return n || (r = new pe(), re.registerAdapter(r), n = !0), r;
862
+ setup(i, { expose: t, emit: r }) {
863
+ let e = !1, n = null;
864
+ function d() {
865
+ return e || (n = new fe(), ne.registerAdapter(n), e = !0), n;
720
866
  }
721
- s();
722
- const d = i, l = t, a = R(null);
723
- L(H, a);
724
- const c = J(), u = ie(), g = [
867
+ d();
868
+ const s = i, a = r, l = O(null);
869
+ N(U, l);
870
+ const c = J(), p = ie(), h = [
725
871
  "selection",
726
872
  "editing",
727
873
  "clipboard",
@@ -729,12 +875,16 @@ const pe = fe, Re = /* @__PURE__ */ y({
729
875
  "multiSort",
730
876
  "sorting",
731
877
  "filtering",
878
+ "reorderColumns",
732
879
  "reorder",
880
+ // deprecated alias for reorderColumns
733
881
  "visibility",
734
882
  "pinnedColumns",
735
883
  "groupingColumns",
736
884
  "columnVirtualization",
885
+ "reorderRows",
737
886
  "rowReorder",
887
+ // deprecated alias for reorderRows
738
888
  "groupingRows",
739
889
  "pinnedRows",
740
890
  "tree",
@@ -746,60 +896,60 @@ const pe = fe, Re = /* @__PURE__ */ y({
746
896
  "pivot",
747
897
  "serverSide"
748
898
  ];
749
- function h() {
899
+ function b() {
750
900
  const o = [];
751
- for (const p of g) {
752
- const b = d[p];
753
- if (b !== void 0) {
754
- const m = oe(p, b);
755
- m && o.push(m);
901
+ for (const f of h) {
902
+ const E = s[f];
903
+ if (E !== void 0) {
904
+ const g = oe(f, E);
905
+ g && o.push(g);
756
906
  }
757
907
  }
758
908
  return o;
759
909
  }
760
- const V = ne(() => {
761
- const o = d.gridConfig ?? {}, p = h(), b = o.plugins ?? [], m = [...p, ...b], _ = u ? { ...o.icons, ...u } : o.icons;
910
+ const _ = re(() => {
911
+ const o = s.gridConfig ?? {}, f = b(), E = o.plugins ?? [], g = [...f, ...E], D = p ? { ...o.icons, ...p } : o.icons;
762
912
  return {
763
913
  ...o,
764
- ...d.columns ? { columns: d.columns } : {},
765
- ...m.length > 0 ? { plugins: m } : {},
766
- ..._ ? { icons: _ } : {}
914
+ ...s.columns ? { columns: s.columns } : {},
915
+ ...g.length > 0 ? { plugins: g } : {},
916
+ ...D ? { icons: D } : {}
767
917
  };
768
918
  });
769
- function M(o) {
770
- l("cell-commit", o);
771
- }
772
- function N(o) {
773
- l("row-commit", o);
919
+ function F(o) {
920
+ a("cell-commit", o);
774
921
  }
775
922
  function A(o) {
776
- l("cell-click", o);
923
+ a("row-commit", o);
924
+ }
925
+ function M(o) {
926
+ a("cell-click", o);
777
927
  }
778
928
  function W(o) {
779
- l("cell-dblclick", o);
929
+ a("cell-dblclick", o);
780
930
  }
781
931
  function I(o) {
782
- l("selection-change", o);
932
+ a("selection-change", o);
783
933
  }
784
- function x(o) {
785
- l("row-toggle", o);
934
+ function H(o) {
935
+ a("row-toggle", o);
786
936
  }
787
937
  function $(o) {
788
- l("sort-change", o);
938
+ a("sort-change", o);
789
939
  }
790
940
  function z(o) {
791
- l("ready", o);
941
+ a("ready", o);
792
942
  }
793
- function Z(o, p) {
794
- const b = Object.getPrototypeOf(o), m = Object.getOwnPropertyDescriptor(b, "gridConfig");
795
- if (!m?.set || !m?.get) return;
796
- const _ = m.set, te = m.get;
943
+ function Z(o, f) {
944
+ const E = Object.getPrototypeOf(o), g = Object.getOwnPropertyDescriptor(E, "gridConfig");
945
+ if (!g?.set || !g?.get) return;
946
+ const D = g.set, te = g.get;
797
947
  Object.defineProperty(o, "gridConfig", {
798
948
  get() {
799
949
  return te.call(this);
800
950
  },
801
951
  set(S) {
802
- S && p ? _.call(this, p.processGridConfig(S)) : _.call(this, S);
952
+ S && f ? D.call(this, f.processGridConfig(S)) : D.call(this, S);
803
953
  },
804
954
  configurable: !0
805
955
  });
@@ -807,54 +957,54 @@ const pe = fe, Re = /* @__PURE__ */ y({
807
957
  function ee(o) {
808
958
  delete o.gridConfig;
809
959
  }
810
- return T(() => {
811
- const o = a.value;
960
+ return P(() => {
961
+ const o = l.value;
812
962
  if (!o) return;
813
- const p = s();
814
- o.__frameworkAdapter = p, p.setTypeDefaults(c ?? null), Z(o, p), o.addEventListener("cell-commit", M), o.addEventListener("row-commit", N), o.addEventListener("cell-click", A), o.addEventListener("cell-dblclick", W), o.addEventListener("selection-change", I), o.addEventListener("row-toggle", x), o.addEventListener("sort-change", $), o.addEventListener("ready", z), d.rows.length > 0 && (o.rows = d.rows), V.value && (o.gridConfig = V.value), d.fitMode && (o.fitMode = d.fitMode);
963
+ const f = d();
964
+ o.__frameworkAdapter = f, f.setTypeDefaults(c ?? null), Z(o, f), o.addEventListener("cell-commit", F), o.addEventListener("row-commit", A), o.addEventListener("cell-click", M), o.addEventListener("cell-dblclick", W), o.addEventListener("selection-change", I), o.addEventListener("row-toggle", H), o.addEventListener("sort-change", $), o.addEventListener("ready", z), s.rows.length > 0 && (o.rows = s.rows), _.value && (o.gridConfig = _.value), s.fitMode && (o.fitMode = s.fitMode);
815
965
  }), q(() => {
816
- const o = a.value;
817
- o && (ee(o), o.removeEventListener("cell-commit", M), o.removeEventListener("row-commit", N), o.removeEventListener("cell-click", A), o.removeEventListener("cell-dblclick", W), o.removeEventListener("selection-change", I), o.removeEventListener("row-toggle", x), o.removeEventListener("sort-change", $), o.removeEventListener("ready", z));
966
+ const o = l.value;
967
+ o && (ee(o), o.removeEventListener("cell-commit", F), o.removeEventListener("row-commit", A), o.removeEventListener("cell-click", M), o.removeEventListener("cell-dblclick", W), o.removeEventListener("selection-change", I), o.removeEventListener("row-toggle", H), o.removeEventListener("sort-change", $), o.removeEventListener("ready", z));
818
968
  }), G(
819
- () => d.rows,
969
+ () => s.rows,
820
970
  (o) => {
821
- a.value && (a.value.rows = o);
971
+ l.value && (l.value.rows = o);
822
972
  },
823
973
  { deep: !0 }
824
974
  ), G(
825
- V,
975
+ _,
826
976
  (o) => {
827
- a.value && o && (a.value.gridConfig = o);
977
+ l.value && o && (l.value.gridConfig = o);
828
978
  },
829
979
  { deep: !0 }
830
980
  ), G(
831
- () => d.fitMode,
981
+ () => s.fitMode,
832
982
  (o) => {
833
- a.value && o && (a.value.fitMode = o);
983
+ l.value && o && (l.value.fitMode = o);
834
984
  }
835
985
  ), G(
836
986
  () => c,
837
987
  (o) => {
838
- s().setTypeDefaults(o ?? null);
988
+ d().setTypeDefaults(o ?? null);
839
989
  },
840
990
  { deep: !0 }
841
- ), e({
991
+ ), t({
842
992
  /** The underlying grid element */
843
- gridElement: a,
993
+ gridElement: l,
844
994
  /** Force a layout recalculation */
845
- forceLayout: () => a.value?.forceLayout(),
995
+ forceLayout: () => l.value?.forceLayout(),
846
996
  /** Get current grid configuration */
847
- getConfig: () => a.value?.getConfig(),
997
+ getConfig: () => l.value?.getConfig(),
848
998
  /** Wait for grid to be ready */
849
- ready: () => a.value?.ready()
850
- }), (o, p) => (P(), O("tbw-grid", {
999
+ ready: () => l.value?.ready()
1000
+ }), (o, f) => (j(), T("tbw-grid", {
851
1001
  ref_key: "gridRef",
852
- ref: a
1002
+ ref: l
853
1003
  }, [
854
- U(o.$slots, "default")
1004
+ x(o.$slots, "default")
855
1005
  ], 512));
856
1006
  }
857
- }), me = ["field", "header", "width", "min-width", "max-width", "sortable", "resizable", "editable", "type", "align", "hidden"], Te = /* @__PURE__ */ y({
1007
+ }), me = ["field", "header", "width", "min-width", "max-width", "sortable", "resizable", "editable", "type", "align", "hidden"], Ve = /* @__PURE__ */ y({
858
1008
  __name: "TbwGridColumn",
859
1009
  props: {
860
1010
  field: {},
@@ -870,39 +1020,39 @@ const pe = fe, Re = /* @__PURE__ */ y({
870
1020
  hidden: { type: Boolean }
871
1021
  },
872
1022
  setup(i) {
873
- const e = B(), t = R(null);
874
- return T(() => {
875
- const n = t.value;
876
- if (!n) return;
877
- const r = !!e.cell, s = !!e.editor;
878
- r && le(n, (d) => {
879
- const l = e.cell;
880
- if (!l) return C("span");
881
- const a = l({
882
- value: d.value,
883
- row: d.row,
884
- column: d.column
1023
+ const t = B(), r = O(null);
1024
+ return P(() => {
1025
+ const e = r.value;
1026
+ if (!e) return;
1027
+ const n = !!t.cell, d = !!t.editor;
1028
+ n && ae(e, (s) => {
1029
+ const a = t.cell;
1030
+ if (!a) return L("span");
1031
+ const l = a({
1032
+ value: s.value,
1033
+ row: s.row,
1034
+ column: s.column
885
1035
  });
886
- return C("div", { style: "display: contents" }, a);
887
- }), s && ae(n, (d) => {
888
- const l = e.editor;
889
- if (!l) return C("span");
890
- const a = l({
891
- value: d.value,
892
- row: d.row,
893
- column: d.column,
894
- field: d.field,
895
- rowId: d.rowId ?? "",
896
- commit: d.commit,
897
- cancel: d.cancel,
898
- updateRow: d.updateRow,
899
- onValueChange: d.onValueChange
1036
+ return L("div", { style: "display: contents" }, l);
1037
+ }), d && le(e, (s) => {
1038
+ const a = t.editor;
1039
+ if (!a) return L("span");
1040
+ const l = a({
1041
+ value: s.value,
1042
+ row: s.row,
1043
+ column: s.column,
1044
+ field: s.field,
1045
+ rowId: s.rowId ?? "",
1046
+ commit: s.commit,
1047
+ cancel: s.cancel,
1048
+ updateRow: s.updateRow,
1049
+ onValueChange: s.onValueChange
900
1050
  });
901
- return C("div", { style: "display: contents" }, a);
1051
+ return L("div", { style: "display: contents" }, l);
902
1052
  });
903
- }), (n, r) => (P(), O("tbw-grid-column", {
1053
+ }), (e, n) => (j(), T("tbw-grid-column", {
904
1054
  ref_key: "columnRef",
905
- ref: t,
1055
+ ref: r,
906
1056
  field: i.field,
907
1057
  header: i.header,
908
1058
  width: i.width,
@@ -916,44 +1066,44 @@ const pe = fe, Re = /* @__PURE__ */ y({
916
1066
  hidden: i.hidden
917
1067
  }, null, 8, me));
918
1068
  }
919
- }), ge = ["show-expand-column", "animation"], Oe = /* @__PURE__ */ y({
1069
+ }), ge = ["show-expand-column", "animation"], Le = /* @__PURE__ */ y({
920
1070
  __name: "TbwGridDetailPanel",
921
1071
  props: {
922
1072
  showExpandColumn: { type: Boolean, default: !0 },
923
1073
  animation: { type: [String, Boolean], default: "slide" }
924
1074
  },
925
1075
  setup(i) {
926
- const e = R(null), t = B();
927
- return T(() => {
928
- const n = e.value;
929
- !n || !t.default || Q.set(n, (r) => t.default?.(r));
930
- }), (n, r) => (P(), O("tbw-grid-detail", {
1076
+ const t = O(null), r = B();
1077
+ return P(() => {
1078
+ const e = t.value;
1079
+ !e || !r.default || Q.set(e, (n) => r.default?.(n));
1080
+ }), (e, n) => (j(), T("tbw-grid-detail", {
931
1081
  ref_key: "detailRef",
932
- ref: e,
1082
+ ref: t,
933
1083
  "show-expand-column": i.showExpandColumn,
934
1084
  animation: i.animation
935
1085
  }, null, 8, ge));
936
1086
  }
937
- }), Pe = /* @__PURE__ */ y({
1087
+ }), Oe = /* @__PURE__ */ y({
938
1088
  __name: "TbwGridResponsiveCard",
939
1089
  setup(i) {
940
- const e = R(null), t = B();
941
- return T(() => {
942
- const n = e.value;
943
- !n || !t.default || X.set(n, (r) => t.default?.(r));
944
- }), (n, r) => (P(), O("tbw-grid-responsive-card", {
1090
+ const t = O(null), r = B();
1091
+ return P(() => {
1092
+ const e = t.value;
1093
+ !e || !r.default || X.set(e, (n) => r.default?.(n));
1094
+ }), (e, n) => (j(), T("tbw-grid-responsive-card", {
945
1095
  ref_key: "cardRef",
946
- ref: e
1096
+ ref: t
947
1097
  }, null, 512));
948
1098
  }
949
- }), Ve = /* @__PURE__ */ y({
1099
+ }), Pe = /* @__PURE__ */ y({
950
1100
  __name: "TbwGridToolButtons",
951
1101
  setup(i) {
952
- return (e, t) => (P(), O("tbw-grid-tool-buttons", null, [
953
- U(e.$slots, "default")
1102
+ return (t, r) => (j(), T("tbw-grid-tool-buttons", null, [
1103
+ x(t.$slots, "default")
954
1104
  ]));
955
1105
  }
956
- }), ye = /* @__PURE__ */ new WeakMap(), ve = ["id", "label", "icon", "position", "width"], _e = /* @__PURE__ */ y({
1106
+ }), he = /* @__PURE__ */ new WeakMap(), ye = ["id", "label", "icon", "position", "width"], Te = /* @__PURE__ */ y({
957
1107
  __name: "TbwGridToolPanel",
958
1108
  props: {
959
1109
  id: {},
@@ -963,34 +1113,34 @@ const pe = fe, Re = /* @__PURE__ */ y({
963
1113
  width: { default: "250px" }
964
1114
  },
965
1115
  setup(i) {
966
- const e = R(null), t = B();
967
- return T(() => {
968
- const n = e.value;
969
- !n || !t.default || ye.set(n, (r) => t.default?.(r));
970
- }), (n, r) => (P(), O("tbw-grid-tool-panel", {
1116
+ const t = O(null), r = B();
1117
+ return P(() => {
1118
+ const e = t.value;
1119
+ !e || !r.default || he.set(e, (n) => r.default?.(n));
1120
+ }), (e, n) => (j(), T("tbw-grid-tool-panel", {
971
1121
  ref_key: "panelRef",
972
- ref: e,
1122
+ ref: t,
973
1123
  id: i.id,
974
1124
  label: i.label,
975
1125
  icon: i.icon,
976
1126
  position: i.position,
977
1127
  width: i.width
978
- }, null, 8, ve));
1128
+ }, null, 8, ye));
979
1129
  }
980
1130
  });
981
- function De(i, e, t) {
982
- const n = t ?? F(H, R(null));
983
- let r = null;
984
- T(() => {
985
- const s = n.value;
986
- if (!s) return;
987
- const d = e;
988
- s.addEventListener(i, d), r = () => s.removeEventListener(i, d);
1131
+ function je(i, t, r) {
1132
+ const e = r ?? k(U, O(null));
1133
+ let n = null;
1134
+ P(() => {
1135
+ const d = e.value;
1136
+ if (!d) return;
1137
+ const s = t;
1138
+ d.addEventListener(i, s), n = () => d.removeEventListener(i, s);
989
1139
  }), q(() => {
990
- r?.();
1140
+ n?.();
991
1141
  });
992
1142
  }
993
- const Ge = y({
1143
+ const _e = y({
994
1144
  name: "GridProvider",
995
1145
  props: {
996
1146
  /**
@@ -1008,37 +1158,37 @@ const Ge = y({
1008
1158
  default: void 0
1009
1159
  }
1010
1160
  },
1011
- setup(i, { slots: e }) {
1161
+ setup(i, { slots: t }) {
1012
1162
  return () => {
1013
- let t = e.default?.();
1014
- return i.typeDefaults && (t = C(de, { defaults: i.typeDefaults }, () => t)), i.icons && (t = C(se, { icons: i.icons }, () => t)), t;
1163
+ let r = t.default?.();
1164
+ return i.typeDefaults && (r = L(se, { defaults: i.typeDefaults }, () => r)), i.icons && (r = L(de, { icons: i.icons }, () => r)), r;
1015
1165
  };
1016
1166
  }
1017
1167
  });
1018
1168
  export {
1019
- H as GRID_ELEMENT_KEY,
1169
+ U as GRID_ELEMENT_KEY,
1020
1170
  K as GRID_ICONS,
1021
1171
  Y as GRID_TYPE_DEFAULTS,
1022
- fe as GridAdapter,
1023
- se as GridIconProvider,
1024
- Ge as GridProvider,
1025
- de as GridTypeProvider,
1026
- Re as TbwGrid,
1027
- Te as TbwGridColumn,
1028
- Oe as TbwGridDetailPanel,
1029
- Pe as TbwGridResponsiveCard,
1030
- Ve as TbwGridToolButtons,
1031
- _e as TbwGridToolPanel,
1032
- pe as VueGridAdapter,
1033
- Se as clearFeatureRegistry,
1034
- oe as createPluginFromFeature,
1035
- ke as getFeatureFactory,
1036
- Le as getRegisteredFeatures,
1172
+ pe as GridAdapter,
1173
+ de as GridIconProvider,
1174
+ _e as GridProvider,
1175
+ se as GridTypeProvider,
1176
+ Ee as TbwGrid,
1177
+ Ve as TbwGridColumn,
1178
+ Le as TbwGridDetailPanel,
1179
+ Oe as TbwGridResponsiveCard,
1180
+ Pe as TbwGridToolButtons,
1181
+ Te as TbwGridToolPanel,
1182
+ fe as VueGridAdapter,
1183
+ Be as clearFeatureRegistry,
1184
+ Se as createPluginFromFeature,
1185
+ Ne as getFeatureFactory,
1186
+ ke as getRegisteredFeatures,
1037
1187
  Fe as isFeatureRegistered,
1038
- D as isVueComponent,
1039
- Me as registerFeature,
1040
- Ae as useGrid,
1041
- De as useGridEvent,
1188
+ v as isVueComponent,
1189
+ Ae as registerFeature,
1190
+ We as useGrid,
1191
+ je as useGridEvent,
1042
1192
  ie as useGridIcons,
1043
1193
  J as useGridTypeDefaults,
1044
1194
  Ce as useTypeDefault