@endge/ui-vue 0.23.3

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 (79) hide show
  1. package/LICENSE +201 -0
  2. package/dist/domain/core/endge-vue.d.ts +22 -0
  3. package/dist/domain/types/filter-renderer.type.d.ts +5 -0
  4. package/dist/domain/types/sfc-render.type.d.ts +143 -0
  5. package/dist/edit.utils-Dnnbd0xG-D9ndNtVP.js +51 -0
  6. package/dist/events-BvSmBueA-Doh7RyHn.js +23 -0
  7. package/dist/main-CQv-nkoD.js +19453 -0
  8. package/dist/main.d.ts +42 -0
  9. package/dist/model/render/sfc/SFCVueRenderInspection.d.ts +12 -0
  10. package/dist/model/render/sfc/SFCVueRuntimeBridge.d.ts +43 -0
  11. package/dist/model/render/sfc/native-vue-sfc-adapter.d.ts +4 -0
  12. package/dist/model/style/EndgeDOMStyleRuntime.d.ts +10 -0
  13. package/dist/model/style/endge-dom-style.d.ts +17 -0
  14. package/dist/model/style/index.d.ts +2 -0
  15. package/dist/reactive/use-current-environment.d.ts +8 -0
  16. package/dist/reactive/use-current-locale.d.ts +8 -0
  17. package/dist/reactive/use-current-project-filter.d.ts +8 -0
  18. package/dist/reactive/use-current-theme.d.ts +8 -0
  19. package/dist/reactive/use-ui.d.ts +3 -0
  20. package/dist/revo-grid.entry-BAwst49a.js +1615 -0
  21. package/dist/revogr-attribution_7.entry-BMG7pXkt.js +967 -0
  22. package/dist/revogr-clipboard_3.entry-BRLLR59Q.js +334 -0
  23. package/dist/revogr-data_4.entry-D1ndZEok.js +745 -0
  24. package/dist/revogr-filter-panel.entry-C-xzIppO.js +329 -0
  25. package/dist/store/domain.d.ts +91 -0
  26. package/dist/test/overlay/context-menu-manager.test.d.ts +1 -0
  27. package/dist/test/sfc/EndgeVueAdapter.test.d.ts +1 -0
  28. package/dist/test/sfc/SFCRender_Component.test.d.ts +1 -0
  29. package/dist/test/sfc/SFCRender_Evaluator.test.d.ts +1 -0
  30. package/dist/test/sfc/SFCRender_FormControls.test.d.ts +1 -0
  31. package/dist/test/sfc/SFCRender_Grid.test.d.ts +1 -0
  32. package/dist/test/sfc/SFCRender_IntrinsicEvents.test.d.ts +1 -0
  33. package/dist/test/sfc/SFCRender_TableAlignment.test.d.ts +1 -0
  34. package/dist/test/sfc/SFCRender_TableLayout.test.d.ts +1 -0
  35. package/dist/test/sfc/SFCRender_TableVisibility.test.d.ts +1 -0
  36. package/dist/test/sfc/SFCVueRenderInspection.test.d.ts +1 -0
  37. package/dist/test/style/endge-dom-runtime-placement.test.d.ts +1 -0
  38. package/dist/test/style/endge-dom-style-jsdom.test.d.ts +1 -0
  39. package/dist/test/style/endge-dom-style.test.d.ts +1 -0
  40. package/dist/test/style/sfc-style-markers.test.d.ts +1 -0
  41. package/dist/throttle-Cpk1LoGk-5dM_0aHc.js +183 -0
  42. package/dist/ui/filter/EndgeFilterControlRenderer.d.ts +33 -0
  43. package/dist/ui/filter/EndgeFilterField.vue.d.ts +13 -0
  44. package/dist/ui/filter/EndgeFilterRenderer.vue.d.ts +3 -0
  45. package/dist/ui/filter/index.d.ts +2 -0
  46. package/dist/ui/layout/EndgeShell.vue.d.ts +22 -0
  47. package/dist/ui/overlay/EndgeContextMenuRoot.vue.d.ts +4 -0
  48. package/dist/ui/overlay/context-menu-manager.d.ts +46 -0
  49. package/dist/ui/render/entities/EndgePage.vue.d.ts +1852 -0
  50. package/dist/ui/render/sfc/SFCRender_Badge.d.ts +3 -0
  51. package/dist/ui/render/sfc/SFCRender_Base.d.ts +8 -0
  52. package/dist/ui/render/sfc/SFCRender_BoundaryRegistry.d.ts +15 -0
  53. package/dist/ui/render/sfc/SFCRender_Box.d.ts +3 -0
  54. package/dist/ui/render/sfc/SFCRender_Checkbox.d.ts +3 -0
  55. package/dist/ui/render/sfc/SFCRender_Component.d.ts +3 -0
  56. package/dist/ui/render/sfc/SFCRender_Context.d.ts +8 -0
  57. package/dist/ui/render/sfc/SFCRender_DateTime.d.ts +3 -0
  58. package/dist/ui/render/sfc/SFCRender_Divider.d.ts +3 -0
  59. package/dist/ui/render/sfc/SFCRender_Dot.d.ts +3 -0
  60. package/dist/ui/render/sfc/SFCRender_Evaluator.d.ts +19 -0
  61. package/dist/ui/render/sfc/SFCRender_Flex.d.ts +3 -0
  62. package/dist/ui/render/sfc/SFCRender_Grid.d.ts +3 -0
  63. package/dist/ui/render/sfc/SFCRender_Icon.d.ts +3 -0
  64. package/dist/ui/render/sfc/SFCRender_Input.d.ts +3 -0
  65. package/dist/ui/render/sfc/SFCRender_Node.d.ts +6 -0
  66. package/dist/ui/render/sfc/SFCRender_Number.d.ts +3 -0
  67. package/dist/ui/render/sfc/SFCRender_Select.d.ts +3 -0
  68. package/dist/ui/render/sfc/SFCRender_Table.d.ts +9 -0
  69. package/dist/ui/render/sfc/SFCRender_TableAlignment.d.ts +8 -0
  70. package/dist/ui/render/sfc/SFCRender_TableStyle.d.ts +35 -0
  71. package/dist/ui/render/sfc/SFCRender_Text.d.ts +3 -0
  72. package/dist/ui/render/sfc/SFCRender_Textarea.d.ts +3 -0
  73. package/dist/ui/render/sfc/SFC_Renderer.vue.d.ts +3 -0
  74. package/dist/ui/render/sfc/SFC_RuntimeRenderer.vue.d.ts +3 -0
  75. package/dist/ui/table/NativeTablePagination.vue.d.ts +15 -0
  76. package/dist/viewport.helpers-CoCAvmZs-f555rwPU.js +77 -0
  77. package/dist/vue.css +1 -0
  78. package/dist/vue.js +75 -0
  79. package/package.json +77 -0
@@ -0,0 +1,1615 @@
1
+ import { r as V, c as g, g as z, t as E, a as T, b as F, d as S, G as L, S as D, i as A, A as N, F as X, E as M, e as $, C as Y, T as U, h as v, H as G, f as W, B as O, j as R, k as w, l as q, R as K, D as Z, m as J, n as Q, o as ee, p as H, q as y, s as re, u as I, v as te, w as oe, x as P, y as _, z as ie, I as se, V as ne } from "./main-CQv-nkoD.js";
2
+ import { H as k, D as le, g as ae, v as de, F as ce, C as ge } from "./viewport.helpers-CoCAvmZs-f555rwPU.js";
3
+ import { g as x } from "./events-BvSmBueA-Doh7RyHn.js";
4
+ /*!
5
+ * Built by Revolist OU ❤️
6
+ */
7
+ class he {
8
+ get stores() {
9
+ return this.dataSources;
10
+ }
11
+ constructor() {
12
+ this.collection = null, this.dataSources = w.reduce((e, r) => (e[r] = new H(r), e), {});
13
+ }
14
+ column(e, r = "rgCol") {
15
+ return this.getColumn(e, r);
16
+ }
17
+ getColumn(e, r) {
18
+ return y(this.dataSources[r].store, e);
19
+ }
20
+ getRawColumns() {
21
+ return R(this.dataSources, (e, r, t) => (e[t] = r.store.get("source"), e), {
22
+ rgCol: [],
23
+ colPinStart: [],
24
+ colPinEnd: []
25
+ });
26
+ }
27
+ getColumns(e = "all") {
28
+ const r = this.getRawColumns();
29
+ return e !== "all" ? r[e] : w.reduce((t, i) => [...t, ...r[i]], []);
30
+ }
31
+ getColumnIndexByProp(e, r) {
32
+ return re(this.dataSources[r].store, e);
33
+ }
34
+ getColumnByProp(e) {
35
+ var r;
36
+ return (r = this.collection) === null || r === void 0 ? void 0 : r.columnByProp[e];
37
+ }
38
+ refreshByType(e) {
39
+ this.dataSources[e].refresh();
40
+ }
41
+ /**
42
+ * Main method to set columns
43
+ */
44
+ setColumns(e) {
45
+ return w.forEach((r) => {
46
+ this.dataSources[r].updateData(e.columns[r], {
47
+ // max depth level
48
+ depth: e.maxLevel,
49
+ // groups
50
+ groups: e.columnGrouping[r].reduce((t, i) => (t[i.level] || (t[i.level] = []), t[i.level].push(i), t), {})
51
+ });
52
+ }), this.collection = e, e;
53
+ }
54
+ /**
55
+ * Used in plugins
56
+ * Modify columns in store
57
+ */
58
+ updateColumns(e) {
59
+ const r = e.reduce((i, s) => {
60
+ const n = I(s);
61
+ return i[n] || (i[n] = {}), i[n][s.prop] = s, i;
62
+ }, {}), t = {};
63
+ for (const i in r) {
64
+ if (!r.hasOwnProperty(i))
65
+ continue;
66
+ const s = i, n = r[s], d = this.dataSources[s].store.get("source");
67
+ t[s] = {};
68
+ for (let a = 0; a < d.length; a++) {
69
+ const c = d[a], l = n == null ? void 0 : n[c.prop];
70
+ l && (t[s][a] = l);
71
+ }
72
+ }
73
+ for (const i in t) {
74
+ if (!t.hasOwnProperty(i))
75
+ continue;
76
+ const s = i;
77
+ te(this.dataSources[s].store, t[s] || {});
78
+ }
79
+ }
80
+ updateColumn(e, r) {
81
+ const t = I(e);
82
+ oe(this.dataSources[t].store, { [r]: e });
83
+ }
84
+ }
85
+ class ve {
86
+ constructor(e) {
87
+ this.dimensionProvider = e, this.stores = R(S, (r, t) => (r[t] = new H(t), r), {});
88
+ }
89
+ /**
90
+ * Replaces the data source for a row type and synchronizes the related dimension metadata.
91
+ *
92
+ * `rgRow` updates also refresh the virtual row model unless `disableVirtualRows` is set.
93
+ * Pinned row types skip virtual row recalculation because they are rendered directly.
94
+ *
95
+ * @param data Full source data assigned to the target row store.
96
+ * @param type Row collection to update. Defaults to the main body rows.
97
+ * @param disableVirtualRows Prevents recalculating virtual rows for the main row store.
98
+ * @param grouping Optional grouping metadata applied together with the new data set.
99
+ * @param silent Preserves the current trimmed state instead of resetting it during the update.
100
+ * @param preserveTrimmed Re-applies current trimmed indexes after a silent update.
101
+ * @returns The same `data` array that was provided to the method.
102
+ */
103
+ setData(e, r = "rgRow", t = !1, i, s = !1, n = !1) {
104
+ this.stores[r].updateData([...e], i, s, n);
105
+ const d = r !== "rgRow" || t;
106
+ return this.dimensionProvider.setData(e.length, r, d), e;
107
+ }
108
+ getModel(e, r = "rgRow") {
109
+ const t = this.stores[r].store;
110
+ return y(t, e);
111
+ }
112
+ changeOrder({ rowType: e = "rgRow", from: r, to: t }) {
113
+ const i = this.stores[e], s = [...i.store.get("proxyItems")], n = i.store.get("items"), d = s.splice(
114
+ s.indexOf(n[r]),
115
+ // get index in proxy
116
+ 1
117
+ ), a = n[r < t ? t + 1 : t], c = a === void 0 ? s.length : s.indexOf(a);
118
+ s.splice(c, 0, ...d), i.setData({
119
+ proxyItems: s
120
+ });
121
+ const l = i.store.get("items");
122
+ this.dimensionProvider.updateSizesPositionByNewDataIndexes(e, l, n);
123
+ }
124
+ setCellData({ type: e, rowIndex: r, prop: t, val: i }, s = !0) {
125
+ const n = this.getModel(r, e);
126
+ n[t] = i, this.stores[e].setSourceData({ [r]: n }, s);
127
+ }
128
+ setRangeData(e, r) {
129
+ const t = {};
130
+ for (let i in e) {
131
+ const s = t[i] = y(this.stores[r].store, parseInt(i, 10));
132
+ if (s)
133
+ for (let n in e[i])
134
+ s[n] = e[i][n];
135
+ }
136
+ this.stores[r].setSourceData(t);
137
+ }
138
+ refresh(e = "all") {
139
+ se(e) && this.refreshItems(e), S.forEach((r) => this.refreshItems(r));
140
+ }
141
+ refreshItems(e = "rgRow") {
142
+ const r = this.stores[e].store.get("items");
143
+ this.stores[e].setData({ items: [...r] });
144
+ }
145
+ setGrouping({ depth: e }, r = "rgRow") {
146
+ this.stores[r].setData({ groupingDepth: e });
147
+ }
148
+ setTrimmed(e, r = "rgRow") {
149
+ const t = this.stores[r];
150
+ t.addTrimmed(e), this.dimensionProvider.setTrimmed(e, r), r === "rgRow" && this.dimensionProvider.setData(T(t.store).length, r);
151
+ }
152
+ }
153
+ const B = ["rgCol"];
154
+ function j(o, e = !1, r = B) {
155
+ return !e && r.includes(o);
156
+ }
157
+ class ue {
158
+ constructor(e, r) {
159
+ this.viewports = e;
160
+ const t = q((i) => r.realSizeChanged(i), K);
161
+ this.stores = [...S, ...w].reduce((i, s) => (i[s] = new Z(s), i[s].store.onChange("realSize", () => t(s)), i), {});
162
+ }
163
+ /**
164
+ * Clear old sizes from dimension and viewports
165
+ * @param type - dimension type
166
+ * @param count - count of items
167
+ */
168
+ clearSize(e, r) {
169
+ this.stores[e].drop(), this.viewports.stores[e].setOriginalSizes(this.stores[e].store.get("originItemSize")), this.setItemCount(r, e);
170
+ }
171
+ /**
172
+ * Apply new custom sizes to dimension and view port
173
+ * @param type - dimension type
174
+ * @param sizes - new custom sizes
175
+ * @param keepOld - keep old sizes merge new with old
176
+ */
177
+ setCustomSizes(e, r, t = !1) {
178
+ let i = r;
179
+ if (t) {
180
+ const s = this.stores[e].store.get("sizes");
181
+ i = Object.assign(Object.assign({}, s), r);
182
+ }
183
+ this.stores[e].setDimensionSize(i), this.setViewPortCoordinate({
184
+ type: e,
185
+ force: !0
186
+ });
187
+ }
188
+ setItemCount(e, r) {
189
+ this.viewports.stores[r].setViewport({ realCount: e }), this.stores[r].setStore({ count: e });
190
+ }
191
+ /**
192
+ * Apply trimmed items
193
+ * @param trimmed - trimmed items
194
+ * @param type
195
+ */
196
+ setTrimmed(e, r) {
197
+ const t = J(e);
198
+ this.stores[r].setStore({ trimmed: t }), this.setViewPortCoordinate({
199
+ type: r,
200
+ force: !0
201
+ });
202
+ }
203
+ /**
204
+ * Sets dimension data and viewport coordinate
205
+ * @param itemCount
206
+ * @param type - dimension type
207
+ * @param noVirtual - disable virtual data
208
+ */
209
+ setData(e, r, t = !1) {
210
+ if (this.setItemCount(e, r), t) {
211
+ const i = this.stores[r].getCurrentState();
212
+ this.viewports.stores[r].setViewport({
213
+ virtualSize: i.realSize
214
+ });
215
+ }
216
+ this.setViewPortCoordinate({
217
+ type: r
218
+ });
219
+ }
220
+ /**
221
+ * Applies new columns to the dimension provider
222
+ * @param columns - new columns data
223
+ * @param disableVirtualX - disable virtual data for X axis
224
+ * @param virtualX - column dimensions that should use virtual data
225
+ */
226
+ applyNewColumns(e, r, t = !1, i = B) {
227
+ for (let s of w) {
228
+ t || this.stores[s].drop();
229
+ const n = e[s], d = !j(s, r, i);
230
+ this.stores[s].setStore({ count: n.length });
231
+ const a = Q(n);
232
+ this.stores[s].setDimensionSize(a);
233
+ const c = {
234
+ // This triggers drop on realCount change
235
+ realCount: n.length
236
+ };
237
+ d && (c.virtualSize = this.stores[s].getCurrentState().realSize), this.viewports.stores[s].setViewport(c), this.setViewPortCoordinate({
238
+ type: s
239
+ });
240
+ }
241
+ }
242
+ /**
243
+ * Gets the full size of the grid by summing up the sizes of all dimensions
244
+ * Goes through all dimensions columnTypes (x) and rowTypes (y) and sums up their sizes
245
+ */
246
+ getFullSize() {
247
+ var e, r;
248
+ let t = 0, i = 0;
249
+ for (let s of w)
250
+ t += ((e = this.stores[s]) === null || e === void 0 ? void 0 : e.store.get("realSize")) || 0;
251
+ for (let s of S)
252
+ i += ((r = this.stores[s]) === null || r === void 0 ? void 0 : r.store.get("realSize")) || 0;
253
+ return { y: i, x: t };
254
+ }
255
+ setViewPortCoordinate({ type: e, coordinate: r = this.viewports.stores[e].lastCoordinate, force: t = !1 }) {
256
+ const i = this.stores[e].getCurrentState(), s = this.viewports.stores[e].store, n = s.get("clientSize"), d = s.get("virtualSize"), a = ae({
257
+ contentSize: i.realSize,
258
+ clientSize: n,
259
+ virtualSize: d
260
+ }), c = Math.min(
261
+ Math.max(0, r),
262
+ // prevents negative scroll positions
263
+ a.logicalScrollSize
264
+ ), l = n && d ? a.getRenderOffset(c) : 0;
265
+ this.stores[e].setStore({ renderOffset: l }), this.viewports.stores[e].setViewport({ renderOffset: l }), this.viewports.stores[e].setViewPortCoordinate(r, i, t);
266
+ }
267
+ getViewPortPos(e) {
268
+ const r = this.stores[e.dimension].getCurrentState();
269
+ return ee(r, e.coordinate).start;
270
+ }
271
+ setSettings(e, r) {
272
+ let t = [];
273
+ switch (r) {
274
+ case "rgCol":
275
+ t = w;
276
+ break;
277
+ case "rgRow":
278
+ t = S;
279
+ break;
280
+ }
281
+ for (let i of t)
282
+ this.stores[i].setStore(e);
283
+ }
284
+ updateSizesPositionByNewDataIndexes(e, r, t = []) {
285
+ this.stores[e].updateSizesPositionByIndexes(r, t), this.setViewPortCoordinate({
286
+ type: e,
287
+ force: !0
288
+ });
289
+ }
290
+ }
291
+ class pe {
292
+ constructor() {
293
+ this.stores = R([...S, ...w], (e, r) => (e[r] = new ne(r), e), {});
294
+ }
295
+ setViewport(e, r) {
296
+ this.stores[e].setViewport(r);
297
+ }
298
+ }
299
+ function fe(o, e) {
300
+ return e === "rgCol" ? o : e;
301
+ }
302
+ function me(o) {
303
+ const e = o.dimensions[o.colType].store, r = e.get("realSize"), t = {
304
+ contentWidth: r,
305
+ class: o.colType,
306
+ contentHeight: o.contentHeight,
307
+ key: o.colType,
308
+ colType: o.colType,
309
+ noHorizontalScrollTransfer: o.noHorizontalScrollTransfer,
310
+ onResizeviewport: o.onResizeviewport,
311
+ // set viewport size to real size
312
+ style: o.fixWidth ? { minWidth: `${r}px` } : void 0
313
+ }, i = {
314
+ colData: T(o.colStore),
315
+ dimensionCol: e,
316
+ type: o.colType,
317
+ groups: o.colStore.get("groups"),
318
+ groupingDepth: o.colStore.get("groupingDepth"),
319
+ resizeHandler: o.colType === "colPinEnd" ? ["l"] : void 0,
320
+ onHeaderresize: o.onHeaderresize
321
+ };
322
+ return {
323
+ prop: t,
324
+ type: o.colType,
325
+ position: o.position,
326
+ headerProp: i,
327
+ viewportCol: o.viewports[o.colType].store
328
+ };
329
+ }
330
+ class we {
331
+ constructor(e, r) {
332
+ var t;
333
+ this.config = e;
334
+ const i = [];
335
+ let s = 0;
336
+ w.forEach((n) => {
337
+ const d = e.columnProvider.stores[n].store;
338
+ if (!d.get("items").length)
339
+ return;
340
+ const a = {
341
+ colType: n,
342
+ position: { x: s, y: 1 },
343
+ contentHeight: r,
344
+ // only central column has dynamic width
345
+ fixWidth: n !== "rgCol",
346
+ viewports: e.viewportProvider.stores,
347
+ dimensions: e.dimensionProvider.stores,
348
+ rowStores: e.dataProvider.stores,
349
+ noHorizontalScrollTransfer: e.noHorizontalScrollTransfer,
350
+ colStore: d,
351
+ onHeaderresize: (f) => this.onColumnResize(n, f, d)
352
+ };
353
+ a.onResizeviewport = (f) => {
354
+ var h;
355
+ const C = {
356
+ clientSize: f.detail.size
357
+ }, b = fe(n, f.detail.dimension), p = w.includes(b) && j(b, e.disableVirtualX, e.virtualX);
358
+ (b === "rgRow" && !e.disableVirtualY || p) && (C.virtualSize = f.detail.size), (h = e.viewportProvider) === null || h === void 0 || h.setViewport(b, C);
359
+ };
360
+ const c = me(a), l = this.registerCol(c.position.x, n), u = this.dataViewPort(a).reduce((f, h) => {
361
+ const C = this.registerSegment(h.position, h.lastCell), b = this.registerRow(h.position.y, h.type), p = Object.assign(Object.assign({ colType: n }, h), { rowSelectionStore: b, selectionStore: C.store, onSetrange: (m) => {
362
+ C.setRangeArea(m.detail);
363
+ }, onSettemprange: (m) => C.setTempArea(m.detail), onFocuscell: (m) => {
364
+ C.clearFocus(), e.selectionStoreConnector.focus(C, m.detail);
365
+ } });
366
+ return f.push(p), f;
367
+ }, []);
368
+ i.push(Object.assign(Object.assign({}, c), {
369
+ columnSelectionStore: l,
370
+ dataPorts: u
371
+ })), s++;
372
+ }), this.columns = i, (t = this.config.scrollingService) === null || t === void 0 || t.unregister();
373
+ }
374
+ onColumnResize(e, { detail: r }, t) {
375
+ var i;
376
+ (i = this.config.dimensionProvider) === null || i === void 0 || i.setCustomSizes(e, r, !0);
377
+ const s = {};
378
+ for (const n of Object.keys(r || {})) {
379
+ const d = r[n], a = parseInt(n, 10), c = y(t, a);
380
+ c && (s[a] = Object.assign(Object.assign({}, c), { size: d }));
381
+ }
382
+ this.config.resize(s);
383
+ }
384
+ /** register selection store for Segment */
385
+ registerSegment(e, r) {
386
+ const t = this.config.selectionStoreConnector.register(e);
387
+ return t.setLastCell(r), t;
388
+ }
389
+ /** register selection store for Row */
390
+ registerRow(e, r) {
391
+ return this.config.selectionStoreConnector.registerRow(e, r).store;
392
+ }
393
+ /** register selection store for Column */
394
+ registerCol(e, r) {
395
+ return this.config.selectionStoreConnector.registerColumn(e, r).store;
396
+ }
397
+ /** Collect Row data */
398
+ dataViewPort(e) {
399
+ const r = {
400
+ rowPinStart: k,
401
+ rgRow: ge,
402
+ rowPinEnd: ce
403
+ };
404
+ let t = 0;
405
+ return S.reduce((i, s) => {
406
+ const n = Object.assign(Object.assign({}, e), { position: Object.assign(Object.assign({}, e.position), { y: t }) }), d = de(n, s, r[s], s !== "rgRow");
407
+ return i.push(d), t++, i;
408
+ }, []);
409
+ }
410
+ scrollToCell(e) {
411
+ for (let r in e) {
412
+ const t = e[r];
413
+ typeof t == "number" && this.config.scrollingService.proxyScroll({
414
+ dimension: r === "x" ? "rgCol" : "rgRow",
415
+ coordinate: t
416
+ });
417
+ }
418
+ }
419
+ /**
420
+ * Clear current grid focus
421
+ */
422
+ clearFocused() {
423
+ this.config.selectionStoreConnector.clearAll();
424
+ }
425
+ clearEdit() {
426
+ this.config.selectionStoreConnector.setEdit(!1);
427
+ }
428
+ /**
429
+ * Collect focused element data
430
+ */
431
+ getFocused() {
432
+ const e = this.config.selectionStoreConnector.focusedStore;
433
+ if (!e)
434
+ return null;
435
+ const r = this.config.selectionStoreConnector.storesXToType[e.position.x], t = this.config.columnProvider.getColumn(e.cell.x, r), i = this.config.selectionStoreConnector.storesYToType[e.position.y], s = this.config.dataProvider.getModel(e.cell.y, i);
436
+ return {
437
+ column: t,
438
+ model: s,
439
+ cell: e.cell,
440
+ colType: r,
441
+ rowType: i
442
+ };
443
+ }
444
+ getStoreCoordinateByType(e, r) {
445
+ const t = this.config.selectionStoreConnector.storesByType;
446
+ if (!(typeof t[e] > "u" || typeof t[r] > "u"))
447
+ return {
448
+ x: t[e],
449
+ y: t[r]
450
+ };
451
+ }
452
+ setFocus(e, r, t, i) {
453
+ var s;
454
+ const n = this.getStoreCoordinateByType(e, r);
455
+ n && ((s = this.config.selectionStoreConnector) === null || s === void 0 || s.focusByCell(n, t, i));
456
+ }
457
+ getSelectedRange() {
458
+ const e = this.config.selectionStoreConnector.focusedStore;
459
+ if (!e)
460
+ return null;
461
+ const r = this.config.selectionStoreConnector.storesXToType[e.position.x], t = this.config.selectionStoreConnector.storesYToType[e.position.y], i = e.entity.store.get("range");
462
+ return i ? Object.assign(Object.assign({}, i), {
463
+ colType: r,
464
+ rowType: t
465
+ }) : null;
466
+ }
467
+ setEdit(e, r, t, i) {
468
+ var s;
469
+ const n = this.getStoreCoordinateByType(t, i);
470
+ n && ((s = this.config.selectionStoreConnector) === null || s === void 0 || s.setEditByCell(n, { x: r, y: e }));
471
+ }
472
+ }
473
+ class Ce {
474
+ constructor(e) {
475
+ this.setViewport = e, this.elements = {};
476
+ }
477
+ async proxyScroll(e, r, t) {
478
+ var i;
479
+ let s, n = e;
480
+ for (let a in t ? {} : this.elements)
481
+ if (!(e.dimension === "rgCol" && a === "headerRow"))
482
+ if (this.isPinnedColumn(r) && e.dimension === "rgCol") {
483
+ if (a === r || !e.delta)
484
+ continue;
485
+ for (let c of this.elements[a])
486
+ c.changeScroll && (s = c.changeScroll(e));
487
+ } else
488
+ for (let c of this.elements[a])
489
+ await ((i = c.setScroll) === null || i === void 0 ? void 0 : i.call(c, e));
490
+ const d = await s;
491
+ d && (n = d), this.setViewport(t && this.isPinnedColumn(r) ? Object.assign(Object.assign({}, n), { dimension: r }) : n);
492
+ }
493
+ /**
494
+ * Silent scroll update for mobile devices when we have negative scroll top
495
+ */
496
+ async scrollSilentService(e, r) {
497
+ var t;
498
+ for (let i in this.elements)
499
+ if (i !== r && w.includes(r) && (i === "headerRow" || w.includes(i))) {
500
+ for (let s of this.elements[i])
501
+ await ((t = s.changeScroll) === null || t === void 0 ? void 0 : t.call(s, e, !0));
502
+ continue;
503
+ }
504
+ }
505
+ isPinnedColumn(e) {
506
+ return !!e && ["colPinStart", "colPinEnd"].indexOf(e) > -1;
507
+ }
508
+ registerElements(e) {
509
+ this.elements = e;
510
+ }
511
+ /**
512
+ * Register new element for farther scroll support
513
+ * @param el - can be null if holder removed
514
+ * @param key - element key
515
+ */
516
+ registerElement(e, r) {
517
+ this.elements[r] || (this.elements[r] = []), e ? this.elements[r].push(e) : this.elements[r] && delete this.elements[r];
518
+ }
519
+ unregister() {
520
+ this.elements = {};
521
+ }
522
+ }
523
+ class be {
524
+ constructor() {
525
+ this.stores = {}, this.columnStores = {}, this.rowStores = {}, this.storesByType = {}, this.storesXToType = {}, this.storesYToType = {};
526
+ }
527
+ get focusedStore() {
528
+ var e;
529
+ for (let r in this.stores)
530
+ for (let t in this.stores[r]) {
531
+ const i = (e = this.stores[r][t]) === null || e === void 0 ? void 0 : e.store.get("focus");
532
+ if (i)
533
+ return {
534
+ entity: this.stores[r][t],
535
+ cell: i,
536
+ position: {
537
+ x: parseInt(t, 10),
538
+ y: parseInt(r, 10)
539
+ }
540
+ };
541
+ }
542
+ return null;
543
+ }
544
+ get edit() {
545
+ var e;
546
+ return (e = this.focusedStore) === null || e === void 0 ? void 0 : e.entity.store.get("edit");
547
+ }
548
+ get focused() {
549
+ var e;
550
+ return (e = this.focusedStore) === null || e === void 0 ? void 0 : e.entity.store.get("focus");
551
+ }
552
+ get selectedRange() {
553
+ var e;
554
+ return (e = this.focusedStore) === null || e === void 0 ? void 0 : e.entity.store.get("range");
555
+ }
556
+ registerColumn(e, r) {
557
+ return this.updateColumnTypeMapping(e, r), this.columnStores[e] ? this.columnStores[e] : (this.columnStores[e] = new P(), this.columnStores[e]);
558
+ }
559
+ registerRow(e, r) {
560
+ return this.rowStores[e] ? this.rowStores[e] : (this.rowStores[e] = new P(), this.storesByType[r] = e, this.storesYToType[e] = r, this.rowStores[e]);
561
+ }
562
+ /**
563
+ * Cross store proxy, based on multiple dimensions
564
+ */
565
+ register({ x: e, y: r }) {
566
+ this.stores[r] || (this.stores[r] = {});
567
+ let t = this.stores[r][e];
568
+ return t || (this.stores[r][e] = t = new P(), t.onChange("range", (i) => {
569
+ this.columnStores[e].setRangeArea(i), this.rowStores[r].setRangeArea(i);
570
+ }), t.store.on("dispose", () => this.destroy(e, r)), t);
571
+ }
572
+ destroy(e, r) {
573
+ var t, i;
574
+ if ((t = this.columnStores[e]) === null || t === void 0 || t.dispose(), (i = this.rowStores[r]) === null || i === void 0 || i.dispose(), delete this.rowStores[r], delete this.columnStores[e], this.storesXToType[e]) {
575
+ const s = this.storesXToType[e];
576
+ delete this.storesXToType[e], delete this.storesByType[s];
577
+ }
578
+ if (this.storesYToType[r]) {
579
+ const s = this.storesYToType[r];
580
+ delete this.storesYToType[r], delete this.storesByType[s];
581
+ }
582
+ this.stores[r] && delete this.stores[r][e], Object.keys(this.stores[r] || {}).length || delete this.stores[r];
583
+ }
584
+ setEditByCell(e, r) {
585
+ this.focusByCell(e, r, r), this.setEdit("");
586
+ }
587
+ /**
588
+ * Sets the next focus cell before the current one.
589
+ *
590
+ * @param focus - The cell to set as the next focus.
591
+ */
592
+ beforeNextFocusCell(e) {
593
+ var r;
594
+ if (!this.focusedStore)
595
+ return;
596
+ const t = this.focusedStore.entity.store.get("lastCell"), i = t && this.getNextStore(e, this.focusedStore.position, t);
597
+ (r = i == null ? void 0 : i.store) === null || r === void 0 || r.setNextFocus(Object.assign(Object.assign({}, e), i.item));
598
+ }
599
+ focusByCell(e, r, t) {
600
+ const i = this.stores[e.y][e.x];
601
+ this.focus(i, { focus: r, end: t });
602
+ }
603
+ focus(e, { focus: r, end: t }) {
604
+ const i = this.getCurrentStorePointer(e);
605
+ if (!i)
606
+ return null;
607
+ const s = e.store.get("lastCell"), n = s && this.getNextStore(r, i, s);
608
+ if (n != null && n.store) {
609
+ const d = Object.assign(Object.assign({}, r), n.item);
610
+ return this.focus(n.store, { focus: d, end: d }), null;
611
+ }
612
+ return s && (r = _(r, s), t = _(t, s)), e.setFocus(r, t), r;
613
+ }
614
+ /**
615
+ * Retrieves the current store pointer based on the active store.
616
+ * Clears focus from all stores except the active one.
617
+ */
618
+ getCurrentStorePointer(e) {
619
+ let r;
620
+ for (let t in this.stores)
621
+ for (let i in this.stores[t]) {
622
+ const s = this.stores[t][i];
623
+ s !== e ? s.clearFocus() : r = {
624
+ x: parseInt(i, 10),
625
+ y: parseInt(t, 10)
626
+ };
627
+ }
628
+ return r;
629
+ }
630
+ /**
631
+ * Retrieves the next store based on the focus cell and current store pointer.
632
+ * If the next store exists, returns an object with the next store and the item in the new store.
633
+ * If the next store does not exist, returns null.
634
+ */
635
+ getNextStore(e, r, t) {
636
+ const i = ie(e, t);
637
+ let s;
638
+ i && Object.keys(i).forEach((d) => {
639
+ var a;
640
+ const c = d, l = (a = i[c]) !== null && a !== void 0 ? a : 0;
641
+ let u;
642
+ switch (c) {
643
+ case "x":
644
+ u = this.getXStores(r.y);
645
+ break;
646
+ case "y":
647
+ u = this.getYStores(r.x);
648
+ break;
649
+ }
650
+ if (l >= 0)
651
+ s = u[++r[c]];
652
+ else {
653
+ s = u[--r[c]];
654
+ const f = s == null ? void 0 : s.store.get("lastCell");
655
+ f && (i[c] = f[c] + l);
656
+ }
657
+ });
658
+ const n = s == null ? void 0 : s.store.get("lastCell");
659
+ return (!(n != null && n.x) || !(n != null && n.y)) && (s = void 0), {
660
+ store: s,
661
+ item: i
662
+ };
663
+ }
664
+ clearAll() {
665
+ var e;
666
+ for (let r in this.stores)
667
+ for (let t in this.stores[r])
668
+ (e = this.stores[r][t]) === null || e === void 0 || e.clearFocus();
669
+ }
670
+ setEdit(e) {
671
+ this.focusedStore && this.focusedStore.entity.setEdit(e);
672
+ }
673
+ /**
674
+ * Select all cells across all stores
675
+ */
676
+ selectAll() {
677
+ for (let e in this.stores)
678
+ for (let r in this.stores[e]) {
679
+ const t = this.stores[e][r];
680
+ if (!t)
681
+ continue;
682
+ const i = t.store.get("lastCell");
683
+ i && t.setRange({ x: 0, y: 0 }, { x: i.x - 1, y: i.y - 1 });
684
+ }
685
+ }
686
+ getXStores(e) {
687
+ return this.stores[e];
688
+ }
689
+ getYStores(e) {
690
+ const r = {};
691
+ for (let t in this.stores)
692
+ r[t] = this.stores[t][e];
693
+ return r;
694
+ }
695
+ /**
696
+ * Keep column viewport positions and types in sync across pin/unpin rerenders.
697
+ * Regression case: when a selected rgCol cell was pinned left, colPinStart
698
+ * could take over x=0 and render the stale rgCol focus store in the pinned area.
699
+ */
700
+ updateColumnTypeMapping(e, r) {
701
+ const t = this.storesXToType[e], i = this.storesByType[r];
702
+ let s = !1;
703
+ this.storesByType[r] = e, this.storesXToType[e] = r, t && t !== r && (s = !0, this.storesByType[t] === e && delete this.storesByType[t]), typeof i == "number" && i !== e && this.storesXToType[i] === r && (delete this.storesXToType[i], s = !0), s && this.clearAll();
704
+ }
705
+ }
706
+ class Se {
707
+ constructor() {
708
+ this.parentY = 0;
709
+ }
710
+ start(e, { pos: r, text: t, event: i }) {
711
+ var s;
712
+ const { top: n } = e.getBoundingClientRect();
713
+ this.parentY = n, this.text && (this.text.innerText = t), this.move(r), this.moveTip({ x: i.x, y: i.y }), (s = this.el) === null || s === void 0 || s.classList.remove("hidden");
714
+ }
715
+ end() {
716
+ var e;
717
+ (e = this.el) === null || e === void 0 || e.classList.add("hidden");
718
+ }
719
+ move(e) {
720
+ this.moveElement(e.end - this.parentY);
721
+ }
722
+ moveTip({ x: e, y: r }) {
723
+ this.draggable && (this.draggable.style.left = `${e}px`, this.draggable.style.top = `${r}px`);
724
+ }
725
+ moveElement(e) {
726
+ this.rgRow && (this.rgRow.style.transform = `translateY(${e}px)`);
727
+ }
728
+ }
729
+ const xe = ({ ref: o }) => {
730
+ const e = new Se();
731
+ return o(e), v("div", { class: "draggable-wrapper hidden", ref: (r) => e.el = r }, v("div", { class: "draggable", ref: (r) => e.draggable = r }, v("span", { class: "revo-alt-icon" }), v("span", { ref: (r) => e.text = r })), v("div", { class: "drag-position", ref: (r) => e.rgRow = r }));
732
+ }, ye = (o = []) => {
733
+ const e = {};
734
+ for (const r of o) {
735
+ let t = e[r.type];
736
+ t || (t = e[r.type] = {}), typeof r.size == "number" && (t.sizes || (t.sizes = {}), t.sizes[r.index] = r.size);
737
+ }
738
+ return e;
739
+ }, Pe = (o = []) => {
740
+ const e = {};
741
+ for (const r of o) {
742
+ let t = e[r.type];
743
+ t || (t = e[r.type] = []), typeof r.size == "number" && t.push(r.index);
744
+ }
745
+ return e;
746
+ };
747
+ function Te() {
748
+ return /Mobi/i.test(navigator.userAgent) || /Android/i.test(navigator.userAgent) || navigator.maxTouchPoints > 0;
749
+ }
750
+ class Re extends O {
751
+ constructor(e, r) {
752
+ super(e, r), e.setAttribute("role", "treegrid"), e.setAttribute("aria-keyshortcuts", "Enter"), e.setAttribute("aria-multiselectable", "true"), e.setAttribute("tabindex", "0"), this.addEventListener("beforecolumnsset", ({ detail: t }) => {
753
+ const i = [
754
+ ...t.columns.colPinStart,
755
+ ...t.columns.rgCol,
756
+ ...t.columns.colPinEnd
757
+ ];
758
+ e.setAttribute("aria-colcount", `${i.length}`), i.forEach((s, n) => {
759
+ const { columnProperties: d, cellProperties: a } = s;
760
+ s.columnProperties = (...c) => {
761
+ const l = (d == null ? void 0 : d(...c)) || {};
762
+ return l.role = "columnheader", l["aria-colindex"] = `${n}`, l;
763
+ }, s.cellProperties = (...c) => {
764
+ const l = {
765
+ role: "gridcell",
766
+ "aria-colindex": `${n}`,
767
+ "aria-rowindex": `${c[0].rowIndex}`,
768
+ tabindex: -1
769
+ }, u = (a == null ? void 0 : a(...c)) || {};
770
+ return Object.assign(Object.assign({}, l), u);
771
+ };
772
+ });
773
+ }), this.addEventListener("beforesourceset", ({ detail: t }) => {
774
+ e.setAttribute("aria-rowcount", `${t.source.length}`);
775
+ }), this.addEventListener("beforerowrender", ({ detail: t }) => {
776
+ t.node.$attrs$ = Object.assign(Object.assign({}, t.node.$attrs$), { role: "row", "aria-rowindex": t.item.itemIndex });
777
+ }), this.addEventListener("afterfocus", async (t) => {
778
+ if (t.defaultPrevented)
779
+ return;
780
+ const i = this.revogrid.querySelector(`revogr-data[type="${t.detail.rowType}"][col-type="${t.detail.colType}"] [data-rgrow="${t.detail.rowIndex}"][data-rgcol="${t.detail.colIndex}"]`);
781
+ i instanceof HTMLElement && i.focus();
782
+ });
783
+ }
784
+ }
785
+ class ze {
786
+ constructor() {
787
+ this.internalPlugins = [];
788
+ }
789
+ /**
790
+ * Get all plugins
791
+ */
792
+ get() {
793
+ return [...this.internalPlugins];
794
+ }
795
+ /**
796
+ * Add plugin to collection
797
+ */
798
+ add(e) {
799
+ this.internalPlugins.push(e);
800
+ }
801
+ /**
802
+ * Add user plugins and create
803
+ */
804
+ addUserPluginsAndCreate(e, r = [], t, i) {
805
+ if (!i)
806
+ return;
807
+ ((t == null ? void 0 : t.filter((n) => !r.some((d) => d === n))) || []).forEach((n) => {
808
+ var d, a;
809
+ const c = this.internalPlugins.findIndex((l) => l instanceof n);
810
+ c !== -1 && ((a = (d = this.internalPlugins[c]).destroy) === null || a === void 0 || a.call(d), this.internalPlugins.splice(c, 1));
811
+ }), r == null || r.forEach((n) => {
812
+ this.internalPlugins.find((a) => a instanceof n) || this.add(new n(e, i));
813
+ });
814
+ }
815
+ /**
816
+ * Get plugin by class
817
+ */
818
+ getByClass(e) {
819
+ return this.internalPlugins.find((r) => r instanceof e);
820
+ }
821
+ /**
822
+ * Remove plugin
823
+ */
824
+ remove(e) {
825
+ var r, t;
826
+ const i = this.internalPlugins.indexOf(e);
827
+ i > -1 && ((t = (r = this.internalPlugins[i]).destroy) === null || t === void 0 || t.call(r), this.internalPlugins.splice(i, 1));
828
+ }
829
+ /**
830
+ * Remove all plugins
831
+ */
832
+ destroy() {
833
+ this.internalPlugins.forEach((e) => {
834
+ var r;
835
+ return (r = e.destroy) === null || r === void 0 ? void 0 : r.call(e);
836
+ }), this.internalPlugins = [];
837
+ }
838
+ }
839
+ class Ee extends O {
840
+ constructor(e, r) {
841
+ super(e, r), this.isRTLEnabled = !1, this.init();
842
+ }
843
+ init() {
844
+ this.addEventListener("beforecolumnsset", (e) => {
845
+ this.handleBeforeColumnsSet(e);
846
+ }), this.addEventListener("aftergridinit", () => {
847
+ this.updateRTLState();
848
+ }), this.watch("rtl", (e) => {
849
+ this.isRTLEnabled = e, this.emit("rtlstatechanged", { rtl: this.isRTLEnabled });
850
+ }, { immediate: !0 });
851
+ }
852
+ /**
853
+ * Handle the beforecolumnsset event to apply RTL transformation
854
+ */
855
+ handleBeforeColumnsSet(e) {
856
+ if (!this.isRTLEnabled)
857
+ return;
858
+ const r = e.detail, t = this.applyRTLTransformationToCollection(r);
859
+ e.detail.columns = t.columns, e.detail.columnByProp = t.columnByProp, e.detail.columnGrouping = t.columnGrouping;
860
+ }
861
+ /**
862
+ * Apply RTL transformation to the entire column collection
863
+ */
864
+ applyRTLTransformationToCollection(e) {
865
+ const r = {
866
+ columns: {
867
+ rgCol: [],
868
+ colPinStart: [],
869
+ colPinEnd: []
870
+ },
871
+ columnByProp: Object.assign({}, e.columnByProp),
872
+ columnGrouping: {
873
+ rgCol: [],
874
+ colPinStart: [],
875
+ colPinEnd: []
876
+ },
877
+ maxLevel: e.maxLevel,
878
+ sort: Object.assign({}, e.sort)
879
+ };
880
+ return Object.keys(e.columns).forEach((t) => {
881
+ const i = t, s = e.columns[i], n = [...s].reverse();
882
+ r.columns[i] = n, r.columnGrouping[i] = this.applyRTLTransformationToGroups(e.columnGrouping[i], s.length);
883
+ }), r;
884
+ }
885
+ /**
886
+ * Apply RTL transformation to column groups
887
+ */
888
+ applyRTLTransformationToGroups(e, r) {
889
+ return e.map((t) => {
890
+ const i = t.indexes.map((s) => r - 1 - s).reverse();
891
+ return Object.assign(Object.assign({}, t), { indexes: i });
892
+ }).reverse();
893
+ }
894
+ /**
895
+ * Update RTL state based on the grid's rtl property
896
+ */
897
+ updateRTLState() {
898
+ const e = this.revogrid;
899
+ e && typeof e.rtl == "boolean" && (this.isRTLEnabled = e.rtl);
900
+ }
901
+ /**
902
+ * Get current RTL state
903
+ */
904
+ getRTLState() {
905
+ return this.isRTLEnabled;
906
+ }
907
+ /**
908
+ * Clean up the plugin
909
+ */
910
+ destroy() {
911
+ super.destroy();
912
+ }
913
+ }
914
+ const Le = () => `revo-grid[theme=default],revo-grid:not([theme]){border:1px solid var(--revo-grid-header-border);font-size:12px}revo-grid[theme=default] .rowHeaders revogr-header,revo-grid:not([theme]) .rowHeaders revogr-header{box-shadow:-1px 0 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] revogr-header,revo-grid:not([theme]) revogr-header{text-align:center;line-height:30px;background-color:var(--revo-grid-header-bg)}revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{box-shadow:none}revo-grid[theme=default] revogr-header .group-rgRow .rgHeaderCell,revo-grid:not([theme]) revogr-header .group-rgRow .rgHeaderCell{box-shadow:-1px 0 0 0 var(--revo-grid-header-border), -1px 0 0 0 var(--revo-grid-header-border) inset, 0 -1px 0 0 var(--revo-grid-header-border), 0 -1px 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{text-transform:uppercase;font-size:12px;color:var(--revo-grid-header-color)}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow{height:30px;box-shadow:0 -1px 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] revogr-header .rgHeaderCell,revo-grid:not([theme]) revogr-header .rgHeaderCell{box-shadow:-1px 0 0 0 var(--revo-grid-header-border) inset, 0 -1px 0 0 var(--revo-grid-header-border), 0 -1px 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] .rowHeaders,revo-grid:not([theme]) .rowHeaders{background-color:var(--revo-grid-header-bg)}revo-grid[theme=default] .rowHeaders revogr-data .rgCell,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell{color:var(--revo-grid-header-color)}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:first-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:first-child{box-shadow:0 -1px 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:not(:first-child),revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:not(:first-child){box-shadow:0 -1px 0 0 var(--revo-grid-header-border) inset, 1px 0 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:last-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:last-child{border-right:1px solid var(--revo-grid-header-border)}revo-grid[theme=default] .rowHeaders revogr-data revogr-header,revo-grid:not([theme]) .rowHeaders revogr-data revogr-header{box-shadow:0 -1px 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child{box-shadow:0 -1px 0 0 var(--revo-grid-cell-border) inset, -1px 0 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 var(--revo-grid-header-border) inset, -1px 0 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] revogr-viewport-scroll.colPinEnd,revo-grid[theme=default] revogr-viewport-scroll.colPinEnd revogr-header,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd revogr-header{box-shadow:1px 0 0 var(--revo-grid-header-border) inset}revo-grid[theme=default] .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 var(--revo-grid-cell-border) inset, -1px 0 0 0 var(--revo-grid-cell-border) inset, 0 -1px 0 0 var(--revo-grid-cell-border) inset}revo-grid[theme=default] revogr-data,revo-grid:not([theme]) revogr-data{text-align:center}revo-grid[theme=default] revogr-data .revo-draggable,revo-grid:not([theme]) revogr-data .revo-draggable{float:left}revo-grid[theme=default] revogr-data .rgRow,revo-grid:not([theme]) revogr-data .rgRow{line-height:27px}revo-grid[theme=default] revogr-data .rgCell,revo-grid:not([theme]) revogr-data .rgCell{box-shadow:0 -1px 0 0 var(--revo-grid-cell-border) inset, -1px 0 0 0 var(--revo-grid-cell-border) inset}revo-grid[theme=material]{font-family:Nunito, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"}revo-grid[theme=material] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=material] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=material] revogr-header .header-rgRow{height:50px}revo-grid[theme=material] revogr-data{text-align:left}revo-grid[theme=material] revogr-data .rgRow{line-height:42px}revo-grid[theme=material] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkMaterial]{font-family:Nunito, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"}revo-grid[theme=darkMaterial] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkMaterial] revogr-header .header-rgRow{height:50px}revo-grid[theme=darkMaterial] revogr-data{text-align:left}revo-grid[theme=darkMaterial] revogr-data .rgRow{line-height:42px}revo-grid[theme=darkMaterial] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkCompact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"}revo-grid[theme=darkCompact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkCompact] revogr-header .header-rgRow{height:45px}revo-grid[theme=darkCompact] revogr-data{text-align:left}revo-grid[theme=darkCompact] revogr-data .rgRow{line-height:32px}revo-grid[theme=darkCompact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=compact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"}revo-grid[theme=compact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=compact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=compact] revogr-header .header-rgRow{height:45px}revo-grid[theme=compact] revogr-data{text-align:left}revo-grid[theme=compact] revogr-data .rgRow{line-height:32px}revo-grid[theme=compact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=compact] revo-dropdown .rv-dr-root{padding:0px 9px}revo-grid[dir=rtl] .viewports{flex-direction:row-reverse}revo-grid[dir=rtl] revogr-header .rgHeaderCell{text-align:right}revo-grid[dir=rtl] revogr-data .rgCell{text-align:right}revo-grid[dir=rtl] .rowHeaders revogr-data .rgCell{text-align:right}revo-grid[dir=rtl] revogr-filter-panel{direction:rtl}revo-grid[dir=rtl] revo-dropdown .rv-dr-root{text-align:right}revo-grid[dir=rtl] .drag-position{right:0;left:auto}revo-grid[dir=rtl] .drag-auto-scroll-y{right:0;left:auto}revo-grid[dir=rtl] .clipboard{right:0;left:auto}revo-grid[dir=rtl] .draggable{margin-left:-20px;margin-right:0;padding-right:20px;padding-left:5px}revo-grid[dir=rtl] .draggable .revo-alt-icon{right:5px;left:auto}revo-grid[dir=rtl] .focused-cell{border-right:2px solid var(--revo-grid-primary);border-left:none}revo-grid[dir=rtl] .selection-range{border-right:2px solid var(--revo-grid-primary);border-left:none}revo-grid[dir=rtl] .resize-handle{right:0;left:auto}revo-grid[dir=rtl] .sort-indicator{margin-left:0;margin-right:5px}revo-grid[dir=rtl] .filter-button{margin-left:0;margin-right:5px}revo-grid[dir=rtl] .group-expand{margin-right:0;margin-left:2px;padding-right:5px;padding-left:0}revo-grid[dir=rtl] .rgCell,revo-grid[dir=rtl] .rgHeaderCell{padding-left:5px;padding-right:5px}revo-grid[dir=rtl] revogr-edit{direction:rtl}revo-grid[dir=rtl] .rgHeaderCell{direction:rtl}revo-grid[dir=rtl][theme=material] revogr-header,revo-grid[dir=rtl][theme=darkMaterial] revogr-header{text-align:right}revo-grid[dir=rtl][theme=material] revogr-data,revo-grid[dir=rtl][theme=darkMaterial] revogr-data{text-align:right}revo-grid[dir=rtl][theme=default] .rowHeaders,revo-grid[dir=rtl]:not([theme]) .rowHeaders{background-color:var(--revo-grid-header-bg)}revo-grid[dir=rtl][theme=default] .rowHeaders revogr-data .rgCell,revo-grid[dir=rtl]:not([theme]) .rowHeaders revogr-data .rgCell{color:var(--revo-grid-header-color)}revo-grid[dir=rtl][theme=default] .rowHeaders revogr-data .rgCell:first-child,revo-grid[dir=rtl]:not([theme]) .rowHeaders revogr-data .rgCell:first-child{box-shadow:0 -1px 0 0 var(--revo-grid-header-border) inset}revo-grid[dir=rtl][theme=default] .rowHeaders revogr-data .rgCell:not(:first-child),revo-grid[dir=rtl]:not([theme]) .rowHeaders revogr-data .rgCell:not(:first-child){box-shadow:0 -1px 0 0 var(--revo-grid-header-border) inset, 1px 0 0 0 var(--revo-grid-header-border) inset}revo-grid[dir=rtl][theme=default] .rowHeaders revogr-data .rgCell:last-child,revo-grid[dir=rtl]:not([theme]) .rowHeaders revogr-data .rgCell:last-child{border-left:1px solid var(--revo-grid-header-border);border-right:none}revo-grid[dir=rtl][theme=default] .rowHeaders revogr-data revogr-header,revo-grid[dir=rtl]:not([theme]) .rowHeaders revogr-data revogr-header{box-shadow:0 -1px 0 0 var(--revo-grid-header-border) inset}revo-grid[dir=rtl][theme=default] revogr-header,revo-grid[dir=rtl]:not([theme]) revogr-header{text-align:right}revo-grid[dir=rtl][theme=default] revogr-data,revo-grid[dir=rtl]:not([theme]) revogr-data{text-align:right}revo-grid[dir=rtl][theme=compact] revogr-header,revo-grid[dir=rtl][theme=darkCompact] revogr-header{text-align:right}revo-grid[dir=rtl][theme=compact] revogr-data,revo-grid[dir=rtl][theme=darkCompact] revogr-data{text-align:right}.revo-drag-icon{width:11px;opacity:0.8}.revo-drag-icon::before{content:"::";display:inline-block}.revo-alt-icon{-webkit-mask-image:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}revo-grid{--revo-grid-primary:#266ae8;--revo-grid-primary-transparent:rgba(38, 106, 232, 0.9);--revo-grid-background:#fff;--revo-grid-foreground:black;--revo-grid-divider:gray;--revo-grid-shadow:rgba(0, 0, 0, 0.15);--revo-grid-text:black;--revo-grid-border:rgba(0, 0, 0, 0.2);--revo-grid-filter-panel-bg:#fff;--revo-grid-filter-panel-border:#d9d9d9;--revo-grid-filter-panel-shadow:rgba(0, 0, 0, 0.15);--revo-grid-filter-panel-input-bg:#eaeaeb;--revo-grid-filter-panel-divider:#d9d9d9;--revo-grid-filter-panel-select-border:transparent;--revo-grid-filter-panel-select-border-hover:transparent;--revo-grid-header-bg:#f8f9fa;--revo-grid-header-color:#000;--revo-grid-header-border:#cecece;--revo-grid-cell-border:#e2e3e3;--revo-grid-focused-bg:rgba(233, 234, 237, 0.5);--revo-grid-row-hover:#f1f1f1;--revo-grid-row-headers-bg:#f7faff;--revo-grid-row-headers-color:#757a82;--revo-grid-cell-disabled-bg:rgba(0, 0, 0, 0.07);direction:ltr !important;display:flex !important;height:100%;min-height:300px;font-family:Helvetica, Arial, Sans-Serif, serif;font-size:14px;position:relative;color:var(--revo-grid-text);-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;width:100%;height:100%}revo-grid[theme*=dark]{--revo-grid-background:#212529;--revo-grid-foreground:#fff;--revo-grid-text:rgba(255, 255, 255, 0.9);--revo-grid-divider:#505050;--revo-grid-border:rgba(255, 255, 255, 0.2);--revo-grid-filter-panel-bg:#212529;--revo-grid-filter-panel-border:#505050;--revo-grid-filter-panel-input-bg:#343a40;--revo-grid-filter-panel-divider:#505050;--revo-grid-header-bg:#343a40;--revo-grid-header-color:#fff;--revo-grid-header-border:#505050;--revo-grid-cell-border:#424242;--revo-grid-focused-bg:rgba(52, 58, 64, 0.5);--revo-grid-row-hover:rgba(80, 80, 80, 0.5);--revo-grid-row-headers-bg:rgba(52, 58, 64, 0.8);--revo-grid-row-headers-color:rgba(255, 255, 255, 0.8);--revo-grid-cell-disabled-bg:rgba(255, 255, 255, 0.07)}revo-grid revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 var(--revo-grid-header-border) inset}revo-grid revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 var(--revo-grid-header-border), 0 -1px 0 0 var(--revo-grid-header-border) inset}revo-grid revogr-header .rgHeaderCell.sortable:hover{background-color:var(--revo-grid-row-hover)}revo-grid revogr-header .rgHeaderCell.focused-cell{background:var(--revo-grid-focused-bg)}revo-grid .footer-wrapper revogr-data{box-shadow:0 -1px 0 var(--revo-grid-cell-border)}revo-grid revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 var(--revo-grid-cell-border) inset}revo-grid revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 var(--revo-grid-cell-border)}revo-grid revogr-data .rgRow{box-shadow:0 -1px 0 0 var(--revo-grid-cell-border) inset}revo-grid revogr-data .rgRow.focused-rgRow{background-color:var(--revo-grid-focused-bg)}revo-grid revogr-data .rgCell{color:var(--revo-grid-text)}revo-grid revogr-data .rgCell.disabled{background-color:var(--revo-grid-cell-disabled-bg)}revo-grid .attribution{position:absolute;bottom:0;left:0;right:0;z-index:1000;width:0;height:0;border-left:4px solid var(--revo-grid-primary-transparent);border-bottom:4px solid var(--revo-grid-primary-transparent);border-top:4px solid transparent;border-right:4px solid transparent;cursor:pointer}revo-grid .attribution .value{position:absolute;bottom:0;left:0;background-color:var(--revo-grid-background);padding:4px;border-radius:4px;box-shadow:0 1px 10px var(--revo-grid-border);white-space:nowrap;text-decoration:none;color:var(--revo-grid-text);letter-spacing:0.3px;font-size:11px;opacity:0;width:4px;overflow:hidden;transition:opacity 0.5s ease-in-out, width 0.3s ease-in-out}revo-grid .attribution:hover .value{width:63px;opacity:1}revo-grid.column-draggable.column-drag-start:hover,revo-grid.column-draggable.column-drag-start *:hover{cursor:grabbing}revo-grid .footer-wrapper,revo-grid .header-wrapper{width:100%}revo-grid .footer-wrapper revogr-data,revo-grid .header-wrapper revogr-data{z-index:3}revo-grid revo-dropdown{width:100%}revo-grid revo-dropdown .rv-dr-root{max-height:100%}revo-grid revo-dropdown.shrink label{opacity:0}revo-grid .viewports{max-width:100%;display:flex;flex-direction:row;align-items:flex-start;flex-grow:1}revo-grid .main-viewport{flex-grow:1;height:0;display:flex;justify-content:space-between;flex-direction:row}revo-grid .draggable{position:fixed;height:30px;line-height:30px;background:var(--revo-grid-background);border-radius:3px;display:block;z-index:100;margin-top:5px;margin-right:-20px;box-shadow:0 4px 20px 0 var(--revo-grid-shadow);padding-left:20px;padding-right:5px}revo-grid .draggable.hidden{display:none}revo-grid .draggable .revo-alt-icon{background-color:var(--revo-grid-foreground);position:absolute;left:5px;top:10px}revo-grid .draggable-wrapper.hidden{display:none}revo-grid .drag-position{position:absolute;left:0;right:0;height:1px;z-index:2;background:var(--revo-grid-divider);pointer-events:none}revo-grid .drag-position-y{position:absolute;top:0;left:0;bottom:0;width:1px;z-index:2;background:var(--revo-grid-divider);pointer-events:none}revo-grid .drag-auto-scroll-y{pointer-events:none;position:absolute;left:0;top:0;height:50px;width:1px}revo-grid .clipboard{position:absolute;left:0;top:0}revo-grid revogr-scroll-virtual{position:relative}revo-grid revogr-scroll-virtual.vertical,revo-grid revogr-scroll-virtual.horizontal{z-index:3}`, De = class {
915
+ constructor(o) {
916
+ V(this, o), this.contentsizechanged = g(this, "contentsizechanged", 7), this.beforeedit = g(this, "beforeedit", 7), this.beforerangeedit = g(this, "beforerangeedit", 7), this.afteredit = g(this, "afteredit", 7), this.beforeautofill = g(this, "beforeautofill", 7), this.beforerange = g(this, "beforerange", 7), this.afterfocus = g(this, "afterfocus", 7), this.roworderchanged = g(this, "roworderchanged", 7), this.beforesorting = g(this, "beforesorting", 7), this.beforesourcesortingapply = g(this, "beforesourcesortingapply", 7), this.beforesortingapply = g(this, "beforesortingapply", 7), this.aftersortingapply = g(this, "aftersortingapply", 7), this.rowdragstart = g(this, "rowdragstart", 7), this.headerclick = g(this, "headerclick", 7), this.beforecellfocus = g(this, "beforecellfocus", 7), this.beforefocuslost = g(this, "beforefocuslost", 7), this.beforesourceset = g(this, "beforesourceset", 7), this.beforeanysource = g(this, "beforeanysource", 7), this.aftersourceset = g(this, "aftersourceset", 7), this.afteranysource = g(this, "afteranysource", 7), this.beforecolumnsgather = g(this, "beforecolumnsgather", 7), this.beforecolumnsset = g(this, "beforecolumnsset", 7), this.beforecolumnapplied = g(this, "beforecolumnapplied", 7), this.aftercolumnsset = g(this, "aftercolumnsset", 7), this.beforefilterapply = g(this, "beforefilterapply", 7), this.beforefiltertrimmed = g(this, "beforefiltertrimmed", 7), this.beforetrimmed = g(this, "beforetrimmed", 7), this.aftertrimmed = g(this, "aftertrimmed", 7), this.viewportscroll = g(this, "viewportscroll", 7), this.beforeexport = g(this, "beforeexport", 7), this.beforeeditstart = g(this, "beforeeditstart", 7), this.aftercolumnresize = g(this, "aftercolumnresize", 7), this.beforerowdefinition = g(this, "beforerowdefinition", 7), this.filterconfigchanged = g(this, "filterconfigchanged", 7), this.sortingconfigchanged = g(this, "sortingconfigchanged", 7), this.rowheaderschanged = g(this, "rowheaderschanged", 7), this.beforegridrender = g(this, "beforegridrender", 7), this.aftergridrender = g(this, "aftergridrender", 7), this.aftergridinit = g(this, "aftergridinit", 7), this.additionaldatachanged = g(this, "additionaldatachanged", 7), this.afterthemechanged = g(this, "afterthemechanged", 7), this.created = g(this, "created", 7), this.frameSize = 1, this.rowSize = 0, this.colSize = 100, this.range = !1, this.readonly = !1, this.resize = !1, this.noHorizontalScrollTransfer = !1, this.canFocus = !0, this.useClipboard = !0, this.columns = [], this.source = [], this.pinnedTopSource = [], this.pinnedBottomSource = [], this.rowDefinitions = [], this.editors = {}, this.applyOnClose = !1, this.plugins = [], this.columnTypes = {}, this.theme = "default", this.rowClass = "", this.autoSizeColumn = !1, this.filter = !1, this.canMoveColumns = !1, this.trimmedRows = {}, this.exporting = !1, this.stretch = !1, this.additionalData = {}, this.disableVirtualX = !1, this.virtualX = ["rgCol"], this.disableVirtualY = !1, this.hideAttribution = !1, this.jobsBeforeRender = [], this.registerVNode = [], this.accessible = !0, this.rtl = !1, this.canDrag = !0, this.extraElements = [], this.pluginService = new ze(), this.viewport = null, this.isInited = !1;
917
+ }
918
+ // #endregion
919
+ // #region Methods
920
+ /**
921
+ * Refreshes data viewport.
922
+ * Can be specific part as rgRow or pinned rgRow or 'all' by default.
923
+ */
924
+ async refresh(o = "all") {
925
+ if (!this.dataProvider)
926
+ throw new Error("Not connected");
927
+ this.dataProvider.refresh(o);
928
+ }
929
+ /**
930
+ * Refreshes data at specified cell.
931
+ * Useful for performance optimization.
932
+ * No viewport update will be triggered.
933
+ *
934
+ * @example
935
+ * const grid = document.querySelector('revo-grid');
936
+ * grid.setDataAt({ row: 0, col: 0, val: 'test' }); // refresh
937
+ */
938
+ async setDataAt({ row: o, col: e, colType: r = "rgCol", rowType: t = "rgRow", val: i, skipDataUpdate: s = !1 }) {
939
+ var n;
940
+ if (this.dataProvider && this.columnProvider && !s) {
941
+ const a = (n = this.columnProvider.getColumn(e, r)) === null || n === void 0 ? void 0 : n.prop;
942
+ typeof a < "u" && this.dataProvider.setCellData({
943
+ type: t,
944
+ rowIndex: o,
945
+ prop: a,
946
+ val: i
947
+ }, !1);
948
+ }
949
+ const d = this.element.querySelector(`revogr-data[type="${t}"][col-type="${r}"]`);
950
+ return d == null ? void 0 : d.updateCell({
951
+ row: o,
952
+ col: e
953
+ });
954
+ }
955
+ /**
956
+ * Scrolls viewport to specified row by index.
957
+ */
958
+ async scrollToRow(o = 0) {
959
+ if (!this.dimensionProvider)
960
+ throw new Error("Not connected");
961
+ const e = this.dimensionProvider.getViewPortPos({
962
+ coordinate: o,
963
+ dimension: "rgRow"
964
+ });
965
+ await this.scrollToCoordinate({ y: e });
966
+ }
967
+ /**
968
+ * Scrolls viewport to specified column by index.
969
+ */
970
+ async scrollToColumnIndex(o = 0) {
971
+ if (!this.dimensionProvider)
972
+ throw new Error("Not connected");
973
+ const e = this.dimensionProvider.getViewPortPos({
974
+ coordinate: o,
975
+ dimension: "rgCol"
976
+ });
977
+ await this.scrollToCoordinate({ x: e });
978
+ }
979
+ /**
980
+ * Scrolls viewport to specified column by prop
981
+ */
982
+ async scrollToColumnProp(o, e = "rgCol") {
983
+ if (!this.dimensionProvider || !this.columnProvider)
984
+ throw new Error("Not connected");
985
+ const r = this.columnProvider.getColumnIndexByProp(o, e);
986
+ if (r < 0)
987
+ return;
988
+ const t = this.dimensionProvider.getViewPortPos({
989
+ coordinate: r,
990
+ dimension: e
991
+ });
992
+ await this.scrollToCoordinate({ x: t });
993
+ }
994
+ /** Update columns */
995
+ async updateColumns(o) {
996
+ var e;
997
+ (e = this.columnProvider) === null || e === void 0 || e.updateColumns(o);
998
+ }
999
+ /** Add trimmed by type */
1000
+ async addTrimmed(o, e = "external", r = "rgRow") {
1001
+ if (!this.dataProvider)
1002
+ throw new Error("Not connected");
1003
+ const t = this.beforetrimmed.emit({
1004
+ trimmed: o,
1005
+ trimmedType: e,
1006
+ type: r
1007
+ });
1008
+ return t.defaultPrevented || (this.dataProvider.setTrimmed({ [e]: t.detail.trimmed }, r), this.aftertrimmed.emit()), t;
1009
+ }
1010
+ /** Scrolls view port to coordinate */
1011
+ async scrollToCoordinate(o) {
1012
+ var e;
1013
+ (e = this.viewport) === null || e === void 0 || e.scrollToCell(o);
1014
+ }
1015
+ /** Open editor for cell. */
1016
+ async setCellEdit(o, e, r = "rgRow") {
1017
+ var t;
1018
+ const i = z(this.columns, e);
1019
+ if (!i)
1020
+ return;
1021
+ await E();
1022
+ const s = i.pin || "rgCol";
1023
+ if (!this.columnProvider)
1024
+ throw new Error("Not connected");
1025
+ (t = this.viewport) === null || t === void 0 || t.setEdit(o, this.columnProvider.getColumnIndexByProp(e, s), s, r);
1026
+ }
1027
+ /** Set focus range. */
1028
+ async setCellsFocus(o = { x: 0, y: 0 }, e = { x: 0, y: 0 }, r = "rgCol", t = "rgRow") {
1029
+ var i;
1030
+ (i = this.viewport) === null || i === void 0 || i.setFocus(r, t, o, e);
1031
+ }
1032
+ /** Get data from source */
1033
+ async getSource(o = "rgRow") {
1034
+ if (!this.dataProvider)
1035
+ throw new Error("Not connected");
1036
+ return this.dataProvider.stores[o].store.get("source");
1037
+ }
1038
+ /**
1039
+ * Get data from visible part of source
1040
+ * Trimmed/filtered rows will be excluded
1041
+ * @param type - type of source
1042
+ */
1043
+ async getVisibleSource(o = "rgRow") {
1044
+ if (!this.dataProvider)
1045
+ throw new Error("Not connected");
1046
+ return T(this.dataProvider.stores[o].store);
1047
+ }
1048
+ /**
1049
+ * Provides access to rows internal store observer
1050
+ * Can be used for plugin support
1051
+ * @param type - type of source
1052
+ */
1053
+ async getSourceStore(o = "rgRow") {
1054
+ if (!this.dataProvider)
1055
+ throw new Error("Not connected");
1056
+ return this.dataProvider.stores[o].store;
1057
+ }
1058
+ /**
1059
+ * Provides access to column internal store observer
1060
+ * Can be used for plugin support
1061
+ * @param type - type of column
1062
+ */
1063
+ async getColumnStore(o = "rgCol") {
1064
+ if (!this.columnProvider)
1065
+ throw new Error("Not connected");
1066
+ return this.columnProvider.stores[o].store;
1067
+ }
1068
+ /**
1069
+ * Update column sorting
1070
+ * @param column - column prop and cellCompare
1071
+ * @param order - order to apply
1072
+ * @param additive - if false will replace current order
1073
+ *
1074
+ * later passed to SortingPlugin
1075
+ */
1076
+ async updateColumnSorting(o, e, r) {
1077
+ this.sortingconfigchanged.emit({
1078
+ columns: [{
1079
+ prop: o.prop,
1080
+ order: e,
1081
+ cellCompare: o.cellCompare
1082
+ }],
1083
+ additive: r
1084
+ });
1085
+ }
1086
+ /**
1087
+ * Clears column sorting
1088
+ */
1089
+ async clearSorting() {
1090
+ this.sortingconfigchanged.emit({
1091
+ columns: []
1092
+ });
1093
+ }
1094
+ /**
1095
+ * Receive all columns in data source
1096
+ */
1097
+ async getColumns() {
1098
+ if (!this.columnProvider)
1099
+ throw new Error("Not connected");
1100
+ return this.columnProvider.getColumns();
1101
+ }
1102
+ /**
1103
+ * Clear current grid focus. Grid has no longer focus on it.
1104
+ */
1105
+ async clearFocus() {
1106
+ var o, e;
1107
+ const r = (o = this.viewport) === null || o === void 0 ? void 0 : o.getFocused();
1108
+ this.beforefocuslost.emit(r).defaultPrevented || (e = this.selectionStoreConnector) === null || e === void 0 || e.clearAll();
1109
+ }
1110
+ /**
1111
+ * Get all active plugins instances
1112
+ */
1113
+ async getPlugins() {
1114
+ return this.pluginService.get();
1115
+ }
1116
+ /**
1117
+ * Get the currently focused cell.
1118
+ */
1119
+ async getFocused() {
1120
+ var o, e;
1121
+ return (e = (o = this.viewport) === null || o === void 0 ? void 0 : o.getFocused()) !== null && e !== void 0 ? e : null;
1122
+ }
1123
+ /**
1124
+ * Get size of content
1125
+ * Including all pinned data
1126
+ */
1127
+ async getContentSize() {
1128
+ var o;
1129
+ if (!this.dimensionProvider)
1130
+ throw new Error("Not connected");
1131
+ return (o = this.dimensionProvider) === null || o === void 0 ? void 0 : o.getFullSize();
1132
+ }
1133
+ /**
1134
+ * Get the currently selected Range.
1135
+ */
1136
+ async getSelectedRange() {
1137
+ var o, e;
1138
+ return (e = (o = this.viewport) === null || o === void 0 ? void 0 : o.getSelectedRange()) !== null && e !== void 0 ? e : null;
1139
+ }
1140
+ /**
1141
+ * Refresh extra elements. Triggers re-rendering of extra elements and functions.
1142
+ * Part of extraElements and registerVNode methods.
1143
+ * Useful for plugins.
1144
+ */
1145
+ async refreshExtraElements() {
1146
+ var o;
1147
+ (o = this.extraService) === null || o === void 0 || o.refresh();
1148
+ }
1149
+ /**
1150
+ * Get all providers for grid
1151
+ * Useful for external grid integration
1152
+ */
1153
+ async getProviders() {
1154
+ return this.getPluginData();
1155
+ }
1156
+ mousedownHandle(o) {
1157
+ const e = x(o, "screenX"), r = x(o, "screenY");
1158
+ e === null || r === null || (this.clickTrackForFocusClear = e + r);
1159
+ }
1160
+ /**
1161
+ * To keep your elements from losing focus use mouseup/touchend e.preventDefault();
1162
+ */
1163
+ async mouseupHandle(o) {
1164
+ var e;
1165
+ const r = x(o, "screenX"), t = x(o, "screenY");
1166
+ if (r === null || t === null || o.defaultPrevented)
1167
+ return;
1168
+ const i = r + t;
1169
+ if (Math.abs(((e = this.clickTrackForFocusClear) !== null && e !== void 0 ? e : 0) - i) > 10)
1170
+ return;
1171
+ const s = o.composedPath();
1172
+ !s.includes(this.element) && !(this.element.shadowRoot && s.includes(this.element.shadowRoot)) && await this.clearFocus();
1173
+ }
1174
+ // #endregion
1175
+ // #region Listeners
1176
+ /** Drag events */
1177
+ onRowDragStarted(o) {
1178
+ var e;
1179
+ const r = this.rowdragstart.emit(o.detail);
1180
+ if (r.defaultPrevented) {
1181
+ o.preventDefault();
1182
+ return;
1183
+ }
1184
+ (e = this.orderService) === null || e === void 0 || e.start(this.element, Object.assign(Object.assign({}, o.detail), r.detail));
1185
+ }
1186
+ onRowDragEnd() {
1187
+ var o;
1188
+ (o = this.orderService) === null || o === void 0 || o.end();
1189
+ }
1190
+ onRowOrderChange(o) {
1191
+ var e;
1192
+ (e = this.dataProvider) === null || e === void 0 || e.changeOrder(o.detail);
1193
+ }
1194
+ onRowDrag({ detail: o }) {
1195
+ var e;
1196
+ (e = this.orderService) === null || e === void 0 || e.move(o);
1197
+ }
1198
+ onRowMouseMove(o) {
1199
+ var e;
1200
+ (e = this.orderService) === null || e === void 0 || e.moveTip(o.detail);
1201
+ }
1202
+ async onCellEdit(o) {
1203
+ var e;
1204
+ const { defaultPrevented: r, detail: t } = this.beforeedit.emit(o.detail);
1205
+ await E(), r || ((e = this.dataProvider) === null || e === void 0 || e.setCellData(t), this.afteredit.emit(t));
1206
+ }
1207
+ onRangeEdit(o) {
1208
+ if (!this.dataProvider)
1209
+ throw new Error("Not connected");
1210
+ const { defaultPrevented: e, detail: r } = this.beforerangeedit.emit(o.detail);
1211
+ if (e) {
1212
+ o.preventDefault();
1213
+ return;
1214
+ }
1215
+ this.dataProvider.setRangeData(r.data, r.type), this.afteredit.emit(r);
1216
+ }
1217
+ onRangeChanged(o) {
1218
+ const e = this.beforerange.emit(o.detail);
1219
+ e.defaultPrevented && o.preventDefault(), this.beforeautofill.emit(e.detail).defaultPrevented && o.preventDefault();
1220
+ }
1221
+ onRowDropped(o) {
1222
+ const { defaultPrevented: e } = this.roworderchanged.emit(o.detail);
1223
+ e && o.preventDefault();
1224
+ }
1225
+ onHeaderClick(o) {
1226
+ const { defaultPrevented: e } = this.headerclick.emit(Object.assign(Object.assign({}, o.detail.column), { originalEvent: o.detail.originalEvent }));
1227
+ e && o.preventDefault();
1228
+ }
1229
+ onCellFocus(o) {
1230
+ const { defaultPrevented: e } = this.beforecellfocus.emit(o.detail);
1231
+ (!this.canFocus || e) && o.preventDefault();
1232
+ }
1233
+ // #endregion
1234
+ // #region Watchers
1235
+ columnTypesChanged() {
1236
+ this.columnChanged(this.columns);
1237
+ }
1238
+ columnChanged(o = [], e = void 0, r = "columns", t = !1) {
1239
+ if (!this.dimensionProvider || !this.columnProvider)
1240
+ return;
1241
+ const i = t ? void 0 : this.getColumnFocusRestore(), s = this.beforecolumnsgather.emit({
1242
+ columns: [...o]
1243
+ });
1244
+ if (s.defaultPrevented)
1245
+ return;
1246
+ const n = F(s.detail.columns, 0, this.columnTypes), d = this.beforecolumnsset.emit(n);
1247
+ if (d.defaultPrevented)
1248
+ return;
1249
+ this.dimensionProvider.applyNewColumns(d.detail.columns, this.disableVirtualX, t, this.virtualX);
1250
+ const a = this.beforecolumnapplied.emit(n);
1251
+ if (a.defaultPrevented)
1252
+ return;
1253
+ const c = this.columnProvider.setColumns(a.detail);
1254
+ i && (this.pendingColumnFocusRestore = i);
1255
+ const l = {};
1256
+ for (const u of Object.keys(a.detail.sort))
1257
+ l[u] = a.detail.sort[u].order;
1258
+ this.aftercolumnsset.emit({
1259
+ columns: c,
1260
+ order: l
1261
+ });
1262
+ }
1263
+ /**
1264
+ * Capture logical focus before columns are repartitioned by pin state.
1265
+ * Regression case: selecting a regular cell, then pinning that column left,
1266
+ * used to let the new pinned viewport reuse the old rgCol selection store.
1267
+ */
1268
+ getColumnFocusRestore() {
1269
+ var o, e, r, t;
1270
+ const i = (o = this.viewport) === null || o === void 0 ? void 0 : o.getFocused(), s = (r = (e = this.selectionStoreConnector) === null || e === void 0 ? void 0 : e.focusedStore) === null || r === void 0 ? void 0 : r.position.x, n = (t = i == null ? void 0 : i.column) === null || t === void 0 ? void 0 : t.prop;
1271
+ if (!(!i || n === void 0 || s === void 0))
1272
+ return {
1273
+ prop: n,
1274
+ colType: i.colType,
1275
+ colIndex: i.cell.x,
1276
+ prevStoreX: s,
1277
+ rowType: i.rowType,
1278
+ rowIndex: i.cell.y
1279
+ };
1280
+ }
1281
+ /**
1282
+ * Reapply focus by column prop after render, once pinning has moved the
1283
+ * column to its new viewport and virtual index.
1284
+ */
1285
+ restoreColumnFocusAfterRender() {
1286
+ var o, e, r, t;
1287
+ const i = this.pendingColumnFocusRestore;
1288
+ if (!i || (this.pendingColumnFocusRestore = void 0, !this.viewport || !this.columnProvider))
1289
+ return;
1290
+ const s = (e = (o = this.columnProvider.getColumnByProp(i.prop)) === null || o === void 0 ? void 0 : o[0]) !== null && e !== void 0 ? e : z(this.columns, i.prop);
1291
+ if (!s)
1292
+ return;
1293
+ const n = s.pin || "rgCol", d = this.columnProvider.getColumnIndexByProp(i.prop, n);
1294
+ if (d < 0 || n === i.colType && d === i.colIndex && i.prevStoreX === ((t = (r = this.selectionStoreConnector) === null || r === void 0 ? void 0 : r.focusedStore) === null || t === void 0 ? void 0 : t.position.x))
1295
+ return;
1296
+ const a = {
1297
+ x: d,
1298
+ y: i.rowIndex
1299
+ };
1300
+ this.viewport.setFocus(n, i.rowType, a, a);
1301
+ }
1302
+ refreshColumnsOnConfigChange(o, e) {
1303
+ o !== e && this.columnChanged(this.columns);
1304
+ }
1305
+ disableVirtualXChanged(o = !1, e = !1) {
1306
+ this.refreshColumnsOnConfigChange(o, e);
1307
+ }
1308
+ virtualXChanged(o = ["rgCol"], e = ["rgCol"]) {
1309
+ this.refreshColumnsOnConfigChange(o, e);
1310
+ }
1311
+ rowSizeChanged(o) {
1312
+ this.dimensionProvider && (this.dimensionProvider.setSettings({ originItemSize: o }, "rgRow"), this.rowDefChanged(this.rowDefinitions, this.rowDefinitions, "rowSize", !0));
1313
+ }
1314
+ themeChanged(o, e, r = "theme", t = !1) {
1315
+ this.dimensionProvider && (this.themeService.register(o), this.dimensionProvider.setSettings({ originItemSize: this.themeService.rowSize }, "rgRow"), this.dimensionProvider.setSettings({ originItemSize: this.colSize }, "rgCol"), t || (this.dimensionProvider.setSettings({ originItemSize: this.themeService.rowSize }, "rgRow"), this.rowDefChanged(
1316
+ // for cases when some custom size present and not
1317
+ this.rowDefinitions,
1318
+ this.rowDefinitions,
1319
+ "theme",
1320
+ !0
1321
+ )), this.afterthemechanged.emit(o));
1322
+ }
1323
+ dataSourceChanged(o = [], e, r) {
1324
+ if (!this.dataProvider)
1325
+ return;
1326
+ let t = "rgRow";
1327
+ switch (r) {
1328
+ case "pinnedBottomSource":
1329
+ t = "rowPinEnd";
1330
+ break;
1331
+ case "pinnedTopSource":
1332
+ t = "rowPinStart";
1333
+ break;
1334
+ case "source":
1335
+ t = "rgRow", o = this.beforesourceset.emit({
1336
+ type: t,
1337
+ source: o
1338
+ }).detail.source;
1339
+ break;
1340
+ }
1341
+ const s = [...this.beforeanysource.emit({
1342
+ type: t,
1343
+ source: o
1344
+ }).detail.source];
1345
+ this.dataProvider.setData(s, t, this.disableVirtualY), r === "source" && this.aftersourceset.emit({
1346
+ type: t,
1347
+ source: o
1348
+ }), this.afteranysource.emit({
1349
+ type: t,
1350
+ source: o
1351
+ });
1352
+ }
1353
+ disableVirtualYChanged(o = !1, e = !1) {
1354
+ o !== e && this.dataSourceChanged(this.source, this.source, "source");
1355
+ }
1356
+ rowDefChanged(o, e, r, t = !0) {
1357
+ if (!this.dimensionProvider || !this.dataProvider)
1358
+ return;
1359
+ const { detail: { vals: i, oldVals: s } } = this.beforerowdefinition.emit({
1360
+ vals: o,
1361
+ oldVals: e
1362
+ }), n = ye(i);
1363
+ if (s) {
1364
+ const d = Pe(s);
1365
+ for (const a in d)
1366
+ if (d.hasOwnProperty(a)) {
1367
+ const c = a, u = this.dataProvider.stores[c].store.get("source").length;
1368
+ this.dimensionProvider.clearSize(c, u);
1369
+ }
1370
+ }
1371
+ S.forEach((d) => {
1372
+ var a;
1373
+ const c = n[d];
1374
+ (c || t) && ((a = this.dimensionProvider) === null || a === void 0 || a.setCustomSizes(d, (c == null ? void 0 : c.sizes) || {}));
1375
+ });
1376
+ }
1377
+ trimmedRowsChanged(o = {}) {
1378
+ this.addTrimmed(o);
1379
+ }
1380
+ /**
1381
+ * Grouping
1382
+ */
1383
+ groupingChanged(o = {}) {
1384
+ var e;
1385
+ (e = this.pluginService.getByClass(L)) === null || e === void 0 || e.setGrouping(o || {});
1386
+ }
1387
+ /**
1388
+ * Stretch Plugin Apply
1389
+ */
1390
+ applyStretch(o) {
1391
+ if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider)
1392
+ return;
1393
+ o === "false" && (o = !1);
1394
+ const e = this.getPluginData();
1395
+ if (!e)
1396
+ return;
1397
+ const r = this.pluginService.getByClass(D);
1398
+ typeof o == "boolean" && o || o === "true" ? r ? A(r) && r.applyStretch(this.columnProvider.getRawColumns()) : this.pluginService.add(new D(this.element, e)) : r && this.pluginService.remove(r);
1399
+ }
1400
+ applyFilter(o) {
1401
+ this.filterconfigchanged.emit(o);
1402
+ }
1403
+ applySorting(o) {
1404
+ this.sortingconfigchanged.emit(o);
1405
+ }
1406
+ rowHeadersChange(o) {
1407
+ this.rowheaderschanged.emit(o);
1408
+ }
1409
+ /**
1410
+ * Register external VNodes
1411
+ */
1412
+ registerOutsideVNodes(o = []) {
1413
+ this.extraElements = o;
1414
+ }
1415
+ additionalDataChanged(o) {
1416
+ this.additionaldatachanged.emit(o);
1417
+ }
1418
+ /**
1419
+ * Watch for RTL changes and reapply column ordering
1420
+ */
1421
+ rtlChanged() {
1422
+ this.columnChanged(this.columns);
1423
+ }
1424
+ /**
1425
+ * User can add plugins via plugins property
1426
+ */
1427
+ pluginsChanged(o = [], e) {
1428
+ this.pluginService.addUserPluginsAndCreate(this.element, o, e, this.getPluginData());
1429
+ }
1430
+ // #endregion
1431
+ // #region Plugins
1432
+ setPlugins() {
1433
+ this.removePlugins();
1434
+ const o = this.getPluginData();
1435
+ o && (this.setCorePlugins(o), this.pluginsChanged(this.plugins));
1436
+ }
1437
+ setCorePlugins(o) {
1438
+ this.accessible && this.pluginService.add(new Re(this.element, o)), this.pluginService.add(new Ee(this.element, o)), this.autoSizeColumn && this.pluginService.add(new N(this.element, o, typeof this.autoSizeColumn == "object" ? this.autoSizeColumn : void 0)), this.filter && this.pluginService.add(new X(this.element, o, typeof this.filter == "object" ? this.filter : void 0)), this.exporting && this.pluginService.add(new M(this.element, o)), this.pluginService.add(new $(this.element, o)), this.pluginService.add(new L(this.element, o)), this.canMoveColumns && this.pluginService.add(new Y(this.element, o));
1439
+ }
1440
+ getPluginData() {
1441
+ return !this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider || !this.selectionStoreConnector ? void 0 : {
1442
+ data: this.dataProvider,
1443
+ column: this.columnProvider,
1444
+ dimension: this.dimensionProvider,
1445
+ viewport: this.viewportProvider,
1446
+ selection: this.selectionStoreConnector,
1447
+ plugins: this.pluginService
1448
+ };
1449
+ }
1450
+ removePlugins() {
1451
+ this.pluginService.destroy();
1452
+ }
1453
+ // #endregion
1454
+ // if reconnect to dom we need to set up plugins
1455
+ connectedCallback() {
1456
+ this.isInited && this.setPlugins(), this.created.emit();
1457
+ }
1458
+ /**
1459
+ * Called once just after the component is first connected to the DOM.
1460
+ * Since this method is only called once, it's a good place to load data asynchronously and to setup the state
1461
+ * without triggering extra re-renders.
1462
+ * A promise can be returned, that can be used to wait for the first render().
1463
+ */
1464
+ componentWillLoad() {
1465
+ var o;
1466
+ this.viewportProvider = new pe(), this.themeService = new U({
1467
+ rowSize: this.rowSize
1468
+ }), this.dimensionProvider = new ue(this.viewportProvider, {
1469
+ realSizeChanged: (e) => this.contentsizechanged.emit(e)
1470
+ }), this.columnProvider = new he(), this.selectionStoreConnector = new be(), this.dataProvider = new ve(this.dimensionProvider), this.registerOutsideVNodes(this.registerVNode), this.setPlugins(), this.applyStretch(this.stretch), this.themeChanged(this.theme, void 0, void 0, !0), this.columnChanged(this.columns, void 0, void 0, !0), this.dataSourceChanged(this.source, void 0, "source"), this.dataSourceChanged(this.pinnedTopSource, void 0, "pinnedTopSource"), this.dataSourceChanged(this.pinnedBottomSource, void 0, "pinnedBottomSource"), Object.keys((o = this.trimmedRows) !== null && o !== void 0 ? o : {}).length > 0 && this.trimmedRowsChanged(this.trimmedRows), this.rowDefChanged(this.rowDefinitions, void 0, void 0, !1), this.grouping && Object.keys(this.grouping).length > 0 && this.groupingChanged(this.grouping), this.scrollingService = new Ce((e) => {
1471
+ var r;
1472
+ (r = this.dimensionProvider) === null || r === void 0 || r.setViewPortCoordinate({
1473
+ coordinate: e.coordinate,
1474
+ type: e.dimension
1475
+ }), this.viewportscroll.emit(e);
1476
+ }), this.aftergridinit.emit(), this.isInited = !0;
1477
+ }
1478
+ componentWillRender() {
1479
+ return this.beforegridrender.emit().defaultPrevented ? !1 : Promise.all(this.jobsBeforeRender);
1480
+ }
1481
+ componentDidRender() {
1482
+ this.restoreColumnFocusAfterRender(), this.aftergridrender.emit();
1483
+ }
1484
+ render() {
1485
+ if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider || !this.selectionStoreConnector)
1486
+ return;
1487
+ const o = this.dimensionProvider.stores.rgRow.store.get("realSize");
1488
+ this.viewport = new we({
1489
+ columnProvider: this.columnProvider,
1490
+ dataProvider: this.dataProvider,
1491
+ dimensionProvider: this.dimensionProvider,
1492
+ viewportProvider: this.viewportProvider,
1493
+ scrollingService: this.scrollingService,
1494
+ orderService: this.orderService,
1495
+ selectionStoreConnector: this.selectionStoreConnector,
1496
+ noHorizontalScrollTransfer: this.noHorizontalScrollTransfer,
1497
+ disableVirtualX: this.disableVirtualX,
1498
+ virtualX: this.virtualX,
1499
+ disableVirtualY: this.disableVirtualY,
1500
+ resize: (l) => this.aftercolumnresize.emit(l)
1501
+ }, o);
1502
+ const e = [];
1503
+ if (this.rowHeaders && this.viewport.columns.length) {
1504
+ const l = this.viewport.columns[0];
1505
+ e.push(v("revogr-row-headers", { additionalData: this.additionalData, height: o, rowClass: this.rowClass, resize: this.resize, dataPorts: l.dataPorts, headerProp: l.headerProp, jobsBeforeRender: this.jobsBeforeRender, rowHeaderColumn: typeof this.rowHeaders == "object" ? this.rowHeaders : void 0, onScrollview: ({ detail: u }) => this.scrollingService.proxyScroll(u, "headerRow"), onRef: ({ detail: u }) => this.scrollingService.registerElement(u, "headerRow") }));
1506
+ }
1507
+ const r = Te(), t = [];
1508
+ for (let l of this.viewport.columns) {
1509
+ const u = Object.assign(Object.assign({}, l.headerProp), { type: l.type, additionalData: this.additionalData, viewportCol: l.viewportCol, selectionStore: l.columnSelectionStore, canResize: this.resize, readonly: this.readonly, columnFilter: !!this.filter }), f = [
1510
+ v("revogr-header", Object.assign({}, u, { slot: k }))
1511
+ ];
1512
+ l.dataPorts.forEach((h) => {
1513
+ const C = `${h.type}_${l.type}`, b = v("revogr-overlay-selection", Object.assign({}, h, { canDrag: this.canDrag && h.canDrag, isMobileDevice: r, onSelectall: () => {
1514
+ var p;
1515
+ return (p = this.selectionStoreConnector) === null || p === void 0 ? void 0 : p.selectAll();
1516
+ }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: h.slot, onBeforenextvpfocus: (p) => {
1517
+ var m;
1518
+ return (m = this.selectionStoreConnector) === null || m === void 0 ? void 0 : m.beforeNextFocusCell(p.detail);
1519
+ }, onCanceledit: () => {
1520
+ var p;
1521
+ return (p = this.selectionStoreConnector) === null || p === void 0 ? void 0 : p.setEdit(!1);
1522
+ }, onSetedit: ({ detail: p }) => {
1523
+ var m;
1524
+ this.beforeeditstart.emit(p).defaultPrevented || (m = this.selectionStoreConnector) === null || m === void 0 || m.setEdit(p.val);
1525
+ } }), v("revogr-data", Object.assign({}, h, { colType: l.type, key: C, readonly: this.readonly, range: this.range, rowClass: this.rowClass, rowSelectionStore: h.rowSelectionStore, additionalData: this.additionalData, jobsBeforeRender: this.jobsBeforeRender, slot: le }), v("slot", { name: `data-${l.type}-${h.type}` })), v("revogr-temp-range", { selectionStore: h.selectionStore, dimensionRow: h.dimensionRow, dimensionCol: h.dimensionCol }), v("revogr-focus", { colData: h.colData, dataStore: h.dataStore, focusTemplate: this.focusTemplate, rowType: h.type, colType: l.type, selectionStore: h.selectionStore, dimensionRow: h.dimensionRow, dimensionCol: h.dimensionCol }, v("slot", { name: `focus-${l.type}-${h.type}` })));
1526
+ f.push(b);
1527
+ }), t.push(v("revogr-viewport-scroll", Object.assign({}, l.prop, { ref: (h) => this.scrollingService.registerElement(h, `${l.prop.key}`), onScrollviewport: (h) => {
1528
+ this.scrollingService.proxyScroll(h.detail, `${l.prop.key}`, this.noHorizontalScrollTransfer && h.detail.dimension === "rgCol");
1529
+ }, onScrollviewportsilent: (h) => this.scrollingService.scrollSilentService(h.detail, `${l.prop.key}`) }), f));
1530
+ }
1531
+ e.push(t);
1532
+ const i = "rgRow", s = "rgCol", n = this.viewportProvider.stores, d = this.dimensionProvider.stores, a = v("revogr-scroll-virtual", { class: "vertical", dimension: i, clientSize: n[i].store.get("clientSize"), virtualSize: n[i].store.get("virtualSize"), realSize: d[i].store.get("realSize"), ref: (l) => this.scrollingService.registerElement(l, "rowScroll"), onScrollvirtual: (l) => this.scrollingService.proxyScroll(l.detail) }), c = v("revogr-scroll-virtual", { class: "horizontal", dimension: s, clientSize: n[s].store.get("clientSize"), virtualSize: n[s].store.get("virtualSize"), realSize: d[s].store.get("realSize"), ref: (l) => this.scrollingService.registerElement(l, "colScroll"), onScrollvirtual: (l) => this.scrollingService.proxyScroll(l.detail) });
1533
+ return v(G, { dir: this.rtl ? "rtl" : "ltr" }, this.hideAttribution ? null : v("revogr-attribution", { class: "attribution" }), v("slot", { name: "header" }), v("div", { class: "main-viewport", onClick: (l) => {
1534
+ var u;
1535
+ l.currentTarget === l.target && ((u = this.viewport) === null || u === void 0 || u.clearEdit());
1536
+ } }, v("div", { class: "viewports" }, v("slot", { name: "viewport" }), e, a, v(xe, { ref: (l) => this.orderService = l }))), c, v("revogr-extra", { ref: (l) => this.extraService = l, nodes: this.extraElements }), v("slot", { name: "footer" }));
1537
+ }
1538
+ disconnectedCallback() {
1539
+ this.removePlugins();
1540
+ }
1541
+ get element() {
1542
+ return W(this);
1543
+ }
1544
+ static get watchers() {
1545
+ return {
1546
+ columnTypes: [{
1547
+ columnTypesChanged: 0
1548
+ }],
1549
+ columns: [{
1550
+ columnChanged: 0
1551
+ }],
1552
+ disableVirtualX: [{
1553
+ disableVirtualXChanged: 0
1554
+ }],
1555
+ virtualX: [{
1556
+ virtualXChanged: 0
1557
+ }],
1558
+ rowSize: [{
1559
+ rowSizeChanged: 0
1560
+ }],
1561
+ theme: [{
1562
+ themeChanged: 0
1563
+ }],
1564
+ source: [{
1565
+ dataSourceChanged: 0
1566
+ }],
1567
+ pinnedBottomSource: [{
1568
+ dataSourceChanged: 0
1569
+ }],
1570
+ pinnedTopSource: [{
1571
+ dataSourceChanged: 0
1572
+ }],
1573
+ disableVirtualY: [{
1574
+ disableVirtualYChanged: 0
1575
+ }],
1576
+ rowDefinitions: [{
1577
+ rowDefChanged: 0
1578
+ }],
1579
+ trimmedRows: [{
1580
+ trimmedRowsChanged: 0
1581
+ }],
1582
+ grouping: [{
1583
+ groupingChanged: 0
1584
+ }],
1585
+ stretch: [{
1586
+ applyStretch: 0
1587
+ }],
1588
+ filter: [{
1589
+ applyFilter: 0
1590
+ }],
1591
+ sorting: [{
1592
+ applySorting: 0
1593
+ }],
1594
+ rowHeaders: [{
1595
+ rowHeadersChange: 0
1596
+ }],
1597
+ registerVNode: [{
1598
+ registerOutsideVNodes: 0
1599
+ }],
1600
+ additionalData: [{
1601
+ additionalDataChanged: 0
1602
+ }],
1603
+ rtl: [{
1604
+ rtlChanged: 0
1605
+ }],
1606
+ plugins: [{
1607
+ pluginsChanged: 0
1608
+ }]
1609
+ };
1610
+ }
1611
+ };
1612
+ De.style = Le();
1613
+ export {
1614
+ De as revo_grid
1615
+ };