@svgrid/grid 3.0.8 → 3.0.9

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 (80) hide show
  1. package/dist/GridMenus.svelte +3 -2
  2. package/dist/SvGrid.controller.svelte.d.ts +60 -8
  3. package/dist/SvGrid.controller.svelte.js +475 -110
  4. package/dist/SvGrid.css +186 -3
  5. package/dist/SvGrid.svelte +281 -163
  6. package/dist/SvGrid.types.d.ts +24 -7
  7. package/dist/cdn/{GridMenus-D15bhpX5.js → GridMenus-B1sipj6y.js} +165 -165
  8. package/dist/cdn/{GridMenus-B8-Gbfq2.js → GridMenus-DlAzfHLk.js} +201 -201
  9. package/dist/cdn/server-block-cache-Dj-KPqEQ.js +1289 -0
  10. package/dist/cdn/{src-Dz625Fhx.js → src-BYsa66I0.js} +9738 -10174
  11. package/dist/cdn/{src-CleI0g9l.js → src-pA4RroLV.js} +10702 -11138
  12. package/dist/cdn/svgrid.js +27 -27
  13. package/dist/cdn/svgrid.svelte-external.js +27 -27
  14. package/dist/cdn/{validate-GEs4ZPSW.js → validate-XuMe4_KR.js} +2 -2
  15. package/dist/cell-render.js +25 -3
  16. package/dist/columns.js +16 -1
  17. package/dist/conditional-formatting.js +9 -2
  18. package/dist/core.d.ts +93 -0
  19. package/dist/core.js +313 -52
  20. package/dist/filtering/excel-filters.js +41 -6
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.js +1 -0
  23. package/dist/selection.d.ts +2 -2
  24. package/dist/selection.js +32 -8
  25. package/dist/server-block-cache.d.ts +7 -32
  26. package/dist/server-block-cache.js +21 -12
  27. package/dist/server-data-source.js +3 -1
  28. package/dist/server.d.ts +1 -0
  29. package/dist/server.js +1 -0
  30. package/dist/spreadsheet.js +7 -0
  31. package/dist/validate.js +3 -11
  32. package/dist/virtualization/column-virtualizer.d.ts +4 -0
  33. package/dist/virtualization/column-virtualizer.js +2 -0
  34. package/dist/virtualization/types.d.ts +20 -0
  35. package/dist/virtualization/virtualizer.js +90 -24
  36. package/dist/windowed-brand.d.ts +22 -0
  37. package/dist/windowed-brand.js +60 -0
  38. package/dist/windowed-data.d.ts +6 -0
  39. package/dist/windowed-data.js +34 -0
  40. package/dist/windowed-row-model.d.ts +1 -0
  41. package/dist/windowed-row-model.js +97 -0
  42. package/package.json +1 -1
  43. package/src/GridMenus.svelte +3 -2
  44. package/src/SvGrid.controller.svelte.ts +469 -114
  45. package/src/SvGrid.css +186 -3
  46. package/src/SvGrid.svelte +281 -163
  47. package/src/SvGrid.types.ts +24 -7
  48. package/src/cell-render.ts +24 -2
  49. package/src/columns.ts +16 -1
  50. package/src/conditional-formatting.ts +6 -4
  51. package/src/core.sort.test.ts +61 -0
  52. package/src/core.ts +309 -52
  53. package/src/counting-cell.test.svelte +11 -0
  54. package/src/filtering/excel-filters.ts +39 -6
  55. package/src/headless.reactivity.svelte.test.ts +1 -1
  56. package/src/index.ts +6 -0
  57. package/src/new-features.test.ts +24 -0
  58. package/src/selection.test.ts +14 -0
  59. package/src/selection.ts +31 -8
  60. package/src/server-block-cache.ts +27 -10
  61. package/src/server-data-source.ts +3 -1
  62. package/src/server.ts +6 -0
  63. package/src/spreadsheet.ts +6 -0
  64. package/src/svgrid.behavior.test.ts +29 -0
  65. package/src/svgrid.column-cell-recycling.test.ts +120 -0
  66. package/src/svgrid.interaction.test.ts +4 -1
  67. package/src/svgrid.new-features.wrapper.test.ts +5 -4
  68. package/src/svgrid.pinned-column-virtualization.test.ts +162 -0
  69. package/src/svgrid.row-model-prop.svelte.test.ts +15 -3
  70. package/src/validate.test.ts +4 -4
  71. package/src/validate.ts +3 -14
  72. package/src/virtualization/column-virtualizer.ts +6 -0
  73. package/src/virtualization/types.ts +20 -0
  74. package/src/virtualization/virtualizer.test.ts +152 -0
  75. package/src/virtualization/virtualizer.ts +93 -27
  76. package/src/windowed-brand.ts +67 -0
  77. package/src/windowed-data.test.ts +105 -0
  78. package/src/windowed-data.ts +36 -0
  79. package/src/windowed-row-model.ts +113 -0
  80. package/dist/cdn/server-block-cache-DIqb3VZn.js +0 -241
@@ -0,0 +1,1289 @@
1
+ //#region src/column-id.ts
2
+ function e(e, t, n, r) {
3
+ return e.id ?? e.field ?? `${t ?? "col"}_${n}_${r}`;
4
+ }
5
+ //#endregion
6
+ //#region src/core.ts
7
+ function t(e, t, n) {
8
+ if (e === "count") return n.length;
9
+ if (e === "first") return n.length ? n[0].getCellValueByColumnId(t) : void 0;
10
+ if (e === "countDistinct") {
11
+ let e = /* @__PURE__ */ new Set();
12
+ for (let r of n) e.add(String(r.getCellValueByColumnId(t) ?? ""));
13
+ return e.size;
14
+ }
15
+ if (typeof e == "function") {
16
+ let r = [];
17
+ for (let e of n) {
18
+ let n = Number(e.getCellValueByColumnId(t));
19
+ Number.isFinite(n) && r.push(n);
20
+ }
21
+ return e(r, n.map((e) => e.original));
22
+ }
23
+ let r = 0, i = 0, a = Infinity, o = -Infinity;
24
+ for (let e of n) {
25
+ let n = Number(e.getCellValueByColumnId(t));
26
+ Number.isFinite(n) && (r++, i += n, a = Math.min(a, n), o = Math.max(o, n));
27
+ }
28
+ if (r) switch (e) {
29
+ case "sum": return i;
30
+ case "avg": return i / r;
31
+ case "min": return a;
32
+ case "max": return o;
33
+ case "extent": return `${a} – ${o}`;
34
+ default: return;
35
+ }
36
+ }
37
+ function n(e) {
38
+ let t = e, n = /* @__PURE__ */ new Set();
39
+ return {
40
+ get state() {
41
+ return t;
42
+ },
43
+ setState(e) {
44
+ t = e(t), n.forEach((e) => e());
45
+ },
46
+ subscribe(e) {
47
+ return n.add(e), () => n.delete(e);
48
+ }
49
+ };
50
+ }
51
+ var r = { key: "rowSortingFeature" }, i = { key: "columnFilteringFeature" }, a = { key: "rowPaginationFeature" }, o = { key: "columnGroupingFeature" }, s = { key: "rowSelectionFeature" }, c = { key: "rowExpandingFeature" };
52
+ function l(e) {
53
+ return e;
54
+ }
55
+ var u = {
56
+ auto: (e, t) => m(e, t),
57
+ number: (e, t) => z(f(e), f(t)),
58
+ date: (e, t) => z(p(e), p(t))
59
+ };
60
+ function d(e) {
61
+ return e == null || e === "";
62
+ }
63
+ function f(e) {
64
+ if (d(e)) return -Infinity;
65
+ let t = Number(e);
66
+ return Number.isNaN(t) ? -Infinity : t;
67
+ }
68
+ function p(e) {
69
+ if (d(e)) return -Infinity;
70
+ let t = new Date(e).getTime();
71
+ return Number.isNaN(t) ? -Infinity : t;
72
+ }
73
+ function m(e, t) {
74
+ let n = d(e), r = d(t);
75
+ if (n || r) return n === r ? 0 : n ? -1 : 1;
76
+ let i = typeof e == "number", a = typeof t == "number";
77
+ return i && a ? z(f(e), f(t)) : i === a ? H(String(e), String(t)) : i ? -1 : 1;
78
+ }
79
+ var h = {
80
+ includesString: (e, t) => String(e).toLowerCase().includes(t.toLowerCase()),
81
+ equals: (e, t) => e === t
82
+ }, g = Symbol("svgrid.row.ctx"), _ = Symbol("svgrid.row.values"), v = Symbol("svgrid.row.cells"), y = Symbol("svgrid.row.filterGen"), b = Symbol("svgrid.row.filterPos"), x = Symbol("svgrid.row.sortDropped"), S = Symbol("svgrid.row.sortKey"), C = 0, w = Symbol("svgrid.lazyRows"), T = Symbol("svgrid.lazyRows.fill");
83
+ function E(e, t) {
84
+ let n = Array(e), r = (t) => {
85
+ if (typeof t != "string") return -1;
86
+ let n = t.charCodeAt(0);
87
+ if (n < 48 || n > 57) return -1;
88
+ let r = +t;
89
+ return r < e && (r | 0) === r ? r : -1;
90
+ }, i = () => {
91
+ for (let r = 0; r < e; r++) n[r] === void 0 && (n[r] = t(r));
92
+ return n;
93
+ };
94
+ return new Proxy(n, {
95
+ get(e, n, a) {
96
+ if (n === w) return e;
97
+ if (n === T) return i;
98
+ let o = r(n);
99
+ if (o < 0) return Reflect.get(e, n, a);
100
+ let s = e[o];
101
+ return s === void 0 && (e[o] = s = t(o)), s;
102
+ },
103
+ has(e, t) {
104
+ return t === w || r(t) >= 0 || Reflect.has(e, t);
105
+ },
106
+ getOwnPropertyDescriptor(e, n) {
107
+ let i = r(n);
108
+ if (i < 0) return Reflect.getOwnPropertyDescriptor(e, n);
109
+ let a = e[i];
110
+ return a === void 0 && (e[i] = a = t(i)), {
111
+ value: a,
112
+ writable: !0,
113
+ enumerable: !0,
114
+ configurable: !0
115
+ };
116
+ }
117
+ });
118
+ }
119
+ function D(e) {
120
+ let t = e[T];
121
+ return t ? t() : e;
122
+ }
123
+ function O(e) {
124
+ return e ? e[w] ?? null : null;
125
+ }
126
+ var k = null;
127
+ function A(e) {
128
+ k = e;
129
+ }
130
+ var j = {
131
+ getCanExpand() {
132
+ return !1;
133
+ },
134
+ getIsExpanded() {
135
+ return !!(this[g].store.state.expanded ?? {})[this.id];
136
+ },
137
+ toggleExpanded() {
138
+ let e = this.id;
139
+ this[g].grid.setExpanded((t) => ({
140
+ ...t,
141
+ [e]: !t[e]
142
+ }));
143
+ },
144
+ getIsSelected() {
145
+ return !!(this[g].store.state.rowSelection ?? {})[this.id];
146
+ },
147
+ toggleSelected() {
148
+ let e = this.id;
149
+ this[g].grid.setRowSelection((t) => ({
150
+ ...t,
151
+ [e]: !t[e]
152
+ }));
153
+ },
154
+ getAllCells() {
155
+ return this[v] ?? M(this);
156
+ },
157
+ getCellValueByColumnId(e) {
158
+ let t = this[g].columnIndexById.get(e);
159
+ if (t !== void 0) return this[_] || (this[_] = N(this)), this[_][t];
160
+ }
161
+ };
162
+ function M(e) {
163
+ let { columns: t, columnCount: n, grid: r } = e[g], i = Array(n);
164
+ for (let a = 0; a < n; a++) {
165
+ let n = t[a], o = a, s = {
166
+ id: `${e.id}_${n.id}`,
167
+ row: e,
168
+ column: n,
169
+ getValue: () => (e[_] || (e[_] = N(e)), e[_][o]),
170
+ getContext: () => ({
171
+ cell: s,
172
+ row: e,
173
+ column: n,
174
+ table: r,
175
+ getValue: () => s.getValue()
176
+ })
177
+ };
178
+ i[a] = s;
179
+ }
180
+ return e[v] = i, i;
181
+ }
182
+ function N(e) {
183
+ let { columns: t, columnCount: n } = e[g], r = e.original, i = Array(n);
184
+ for (let e = 0; e < n; e++) {
185
+ let n = t[e].columnDef;
186
+ n.fieldFn ? i[e] = n.fieldFn(r) : n.field ? i[e] = r[n.field] : i[e] = void 0;
187
+ }
188
+ return i;
189
+ }
190
+ function P() {
191
+ return ({ rows: e }) => e;
192
+ }
193
+ function F() {
194
+ let e = null, t = 0;
195
+ return ({ table: n, rows: r }) => {
196
+ let i = n.getState().columnFilters ?? [];
197
+ if (!i.length) return e = null, r;
198
+ let a = n.getAllColumns(), o = i.map((e) => ({
199
+ id: e.id,
200
+ value: e.value,
201
+ fn: e.fn ? h[e.fn] : h.includesString
202
+ })), s = (e) => {
203
+ for (let t = 0; t < o.length; t++) {
204
+ let n = o[t];
205
+ if (!n.fn(e.getCellValueByColumnId(n.id), n.value)) return !1;
206
+ }
207
+ return !0;
208
+ };
209
+ if (e && e.filters === i && e.columns === a) {
210
+ if (e.input === r) return e.output;
211
+ let t = R(n);
212
+ if (t && r.length === e.input.length) {
213
+ let n = null, i = !0;
214
+ for (let a = 0; a < r.length && i; a++) {
215
+ let o = e.input[a], c = r[a];
216
+ if (c === o) continue;
217
+ if (t.get(o) !== c) {
218
+ i = !1;
219
+ break;
220
+ }
221
+ let l = o[y] === e.gen, u = s(c);
222
+ if (l !== u) {
223
+ i = !1;
224
+ break;
225
+ }
226
+ if (!u) continue;
227
+ n ??= e.output.slice();
228
+ let d = o[b];
229
+ n[d] = c, c[y] = e.gen, c[b] = d;
230
+ }
231
+ if (i) {
232
+ let t = n ?? e.output;
233
+ return e = {
234
+ ...e,
235
+ input: r,
236
+ output: t
237
+ }, t;
238
+ }
239
+ }
240
+ }
241
+ let c = ++t, l = [];
242
+ for (let e = 0; e < r.length; e++) {
243
+ let t = r[e];
244
+ s(t) && (t[y] = c, t[b] = l.length, l.push(t));
245
+ }
246
+ return e = {
247
+ input: r,
248
+ output: l,
249
+ filters: i,
250
+ columns: a,
251
+ gen: c
252
+ }, l;
253
+ };
254
+ }
255
+ function I() {
256
+ return ({ table: e, rows: t }) => {
257
+ let n = e.getState().pagination ?? {
258
+ pageIndex: 0,
259
+ pageSize: t.length || 10
260
+ }, r = n.pageIndex * n.pageSize;
261
+ return t.slice(r, r + n.pageSize);
262
+ };
263
+ }
264
+ function ee() {
265
+ return ({ table: e, rows: n }) => {
266
+ let r = e.getState().grouping ?? [];
267
+ if (!r.length) return n;
268
+ let i = e.getAllColumns();
269
+ function a(n, o, s, c, l) {
270
+ if (o >= r.length) return n.map((e) => ({
271
+ ...e,
272
+ depth: s
273
+ }));
274
+ let u = r[o];
275
+ if (!u) return n;
276
+ let d = /* @__PURE__ */ new Map();
277
+ for (let e of n) {
278
+ let t = e.getCellValueByColumnId(u), n = String(t ?? ""), r = d.get(n);
279
+ r ? (r.rows.push(e), !r.mixed && r.raw !== t && (r.mixed = !0)) : d.set(n, {
280
+ rows: [e],
281
+ raw: t,
282
+ mixed: !1
283
+ });
284
+ }
285
+ let f = [], p = 0;
286
+ return d.forEach((n, d) => {
287
+ let m = n.rows, h = `${c}_${u}_${d}`, g = n.mixed ? l : new Map(l).set(u, n.raw), _ = a(m, o + 1, s + 1, h, g), v = o + 1 >= r.length ? _.length : _.reduce((e, t) => e + (t.leafCount ?? 0), 0), y = (e) => {
288
+ if (e === u) return d;
289
+ if (l.has(e)) return l.get(e);
290
+ let t, n = !1;
291
+ for (let r of m) {
292
+ let i = r.getCellValueByColumnId(e);
293
+ if (!n) t = i, n = !0;
294
+ else if (i !== t) return;
295
+ }
296
+ return t;
297
+ }, b = {};
298
+ i.forEach((e) => {
299
+ let n = e.columnDef.field;
300
+ if (!n) return;
301
+ let r = e.columnDef.aggregate;
302
+ b[n] = r ? t(r, e.id, m) : y(e.id);
303
+ });
304
+ let x = {
305
+ id: h,
306
+ index: p++,
307
+ original: b,
308
+ depth: s,
309
+ subRows: _,
310
+ leafCount: v,
311
+ getCanExpand: () => !0,
312
+ getIsExpanded: () => !!(e.getState().expanded ?? {})[h],
313
+ toggleExpanded: () => {
314
+ e.setExpanded((e) => ({
315
+ ...e,
316
+ [h]: !e[h]
317
+ }));
318
+ },
319
+ getIsSelected: () => !!(e.getState().rowSelection ?? {})[h],
320
+ toggleSelected: () => {
321
+ e.setRowSelection((e) => ({
322
+ ...e,
323
+ [h]: !e[h]
324
+ }));
325
+ },
326
+ getAllCells: () => [],
327
+ getCellValueByColumnId: (e) => {
328
+ let t = i.find((t) => t.id === e)?.columnDef.field;
329
+ return t && t in b ? b[t] : y(e);
330
+ }
331
+ };
332
+ f.push(x);
333
+ }), f;
334
+ }
335
+ return a(n, 0, 0, "group", /* @__PURE__ */ new Map());
336
+ };
337
+ }
338
+ function te(e) {
339
+ let { parentField: t, idField: n = "id" } = e;
340
+ return ({ table: e, rows: r }) => {
341
+ if (!r.length) return r;
342
+ let i = (e) => e.original?.[n], a = (e) => e.original?.[t], o = /* @__PURE__ */ new Set();
343
+ for (let e of r) o.add(i(e));
344
+ let s = /* @__PURE__ */ new Map(), c = [];
345
+ for (let e of r) {
346
+ let t = a(e);
347
+ if (t == null || t === i(e) || !o.has(t)) {
348
+ c.push(e);
349
+ continue;
350
+ }
351
+ let n = s.get(t) ?? [];
352
+ n.push(e), s.set(t, n);
353
+ }
354
+ let l = /* @__PURE__ */ new Set(), u = (t, n) => {
355
+ let r = i(t), a = t.id;
356
+ if (l.has(r)) return {
357
+ ...t,
358
+ depth: n,
359
+ subRows: [],
360
+ getCanExpand: () => !1
361
+ };
362
+ l.add(r);
363
+ let o = (s.get(r) ?? []).map((e) => u(e, n + 1));
364
+ return {
365
+ ...t,
366
+ depth: n,
367
+ subRows: o,
368
+ leafCount: o.reduce((e, t) => e + 1 + (t.leafCount ?? 0), 0),
369
+ __treeRow: !0,
370
+ getCanExpand: () => o.length > 0,
371
+ getIsExpanded: () => !!(e.getState().expanded ?? {})[a],
372
+ toggleExpanded: () => {
373
+ e.setExpanded((e) => ({
374
+ ...e,
375
+ [a]: !e[a]
376
+ }));
377
+ }
378
+ };
379
+ };
380
+ return c.map((e) => u(e, 0));
381
+ };
382
+ }
383
+ function ne(e, t) {
384
+ let { childrenField: n, idField: r = "id", parentField: i = "__parentId" } = t, a = [], o = (e, t) => {
385
+ for (let s of e) {
386
+ let e = {
387
+ ...s,
388
+ [i]: t
389
+ };
390
+ a.push(e);
391
+ let c = s[n];
392
+ Array.isArray(c) && c.length && o(c, s[r]);
393
+ }
394
+ };
395
+ return o(e, null), a;
396
+ }
397
+ function re() {
398
+ return ({ table: e, rows: t }) => {
399
+ let n = e.getState().expanded ?? {}, r = !1;
400
+ for (let e in n) if (n[e]) {
401
+ r = !0;
402
+ break;
403
+ }
404
+ if (!r) return t;
405
+ let i = [], a = (e) => {
406
+ if (i.push(e), e.subRows?.length && n[e.id]) for (let t of e.subRows) a(t);
407
+ };
408
+ for (let e of t) a(e);
409
+ return i;
410
+ };
411
+ }
412
+ var L = /* @__PURE__ */ new WeakMap();
413
+ function R(e) {
414
+ return L.get(e) ?? null;
415
+ }
416
+ function ie(e = u) {
417
+ let t = null, n = Symbol("svgrid.sort.missing-key");
418
+ function r(t, r, i) {
419
+ let a = [];
420
+ for (let o of r) {
421
+ let r = i.find((e) => e.id === o.id);
422
+ if (!r) continue;
423
+ let s = r.columnDef.editorType, c = s === "number" ? e.number : s === "date" || s === "datetime" ? e.date : e.auto, l = r.id, h = t.length, g = Array(h), _, v, y, b;
424
+ if (c === u.number) {
425
+ v = (e) => f(e.getCellValueByColumnId(l));
426
+ for (let e = 0; e < h; e++) g[e] = v(t[e]);
427
+ _ = z;
428
+ } else if (c === u.date) {
429
+ v = (e) => p(e.getCellValueByColumnId(l));
430
+ for (let e = 0; e < h; e++) g[e] = v(t[e]);
431
+ _ = z;
432
+ } else if (c === u.auto && (y = ae(t, l)) === "number") {
433
+ v = (e) => {
434
+ let t = e.getCellValueByColumnId(l);
435
+ return typeof t == "number" || d(t) ? f(t) : n;
436
+ };
437
+ for (let e = 0; e < h; e++) g[e] = v(t[e]);
438
+ _ = z;
439
+ } else if (y === "mixed") {
440
+ v = (e) => e.getCellValueByColumnId(l);
441
+ for (let e = 0; e < h; e++) g[e] = v(t[e]);
442
+ _ = m;
443
+ } else if (c === u.auto) {
444
+ let e = Array(h), r = h >> 1, i = null;
445
+ if (h > 0) {
446
+ let e = Math.max(1, Math.floor(h / Math.min(h, 2048))), n = /* @__PURE__ */ new Set(), a = 0;
447
+ for (let r = 0; r < h; r += e) n.add(B(t[r].getCellValueByColumnId(l))), a++;
448
+ let o = a - n.size;
449
+ (e === 1 ? n.size <= r : o * h >= a * a) && (i = /* @__PURE__ */ new Map());
450
+ }
451
+ let a = i ? new Int32Array(h) : null;
452
+ for (let n = 0; n < h; n++) {
453
+ let o = B(t[n].getCellValueByColumnId(l));
454
+ if (e[n] = o, i) {
455
+ let e = i.get(o);
456
+ if (e === void 0 && (e = i.size, i.set(o, e), i.size > r)) {
457
+ i = null;
458
+ continue;
459
+ }
460
+ a[n] = e;
461
+ }
462
+ }
463
+ if (i) {
464
+ let e = Array.from(i.keys()), t = e.map((e, t) => t).sort((t, n) => H(e[t], e[n])), r = new Int32Array(e.length);
465
+ for (let e = 0; e < t.length; e++) r[t[e]] = e;
466
+ for (let e = 0; e < h; e++) g[e] = r[a[e]];
467
+ let o = i;
468
+ b = e.length, _ = z, v = (e) => {
469
+ let t = e.getCellValueByColumnId(l);
470
+ if (typeof t == "number") return n;
471
+ let i = o.get(B(t));
472
+ return i === void 0 ? n : r[i];
473
+ };
474
+ } else g = e, _ = H, v = (e) => {
475
+ let t = e.getCellValueByColumnId(l);
476
+ return typeof t == "number" ? n : B(t);
477
+ };
478
+ } else {
479
+ v = (e) => e.getCellValueByColumnId(l);
480
+ for (let e = 0; e < h; e++) g[e] = v(t[e]);
481
+ _ = c;
482
+ }
483
+ a.push({
484
+ keys: g,
485
+ desc: o.desc,
486
+ compare: _,
487
+ keyOf: v,
488
+ rankCount: b
489
+ });
490
+ }
491
+ if (!a.length) return null;
492
+ let o = Array(t.length);
493
+ for (let e = 0; e < o.length; e++) o[e] = e;
494
+ if (a.length === 1) {
495
+ let { keys: e, compare: n, desc: r, rankCount: i } = a[0];
496
+ i !== void 0 && t.length >= V ? o = oe(e, i, r) : n === z && t.length >= V ? o = ce(e, r) : n === z ? o.sort(r ? function(t, n) {
497
+ return e[n] - e[t];
498
+ } : function(t, n) {
499
+ return e[t] - e[n];
500
+ }) : o.sort(r ? function(t, r) {
501
+ return -n(e[t], e[r]);
502
+ } : function(t, r) {
503
+ return n(e[t], e[r]);
504
+ });
505
+ } else o.sort(function(e, t) {
506
+ for (let n = 0; n < a.length; n++) {
507
+ let r = a[n], i = r.compare(r.keys[e], r.keys[t]);
508
+ if (i !== 0) return r.desc ? -i : i;
509
+ }
510
+ return 0;
511
+ });
512
+ let s = Array(t.length);
513
+ for (let e = 0; e < o.length; e++) s[e] = t[o[e]];
514
+ if (a.length === 1) {
515
+ let e = a[0].keys;
516
+ for (let n = 0; n < t.length; n++) t[n][S] = e[n];
517
+ } else for (let e = 0; e < t.length; e++) {
518
+ let n = Array(a.length);
519
+ for (let t = 0; t < a.length; t++) n[t] = a[t].keys[e];
520
+ t[e][S] = n;
521
+ }
522
+ return {
523
+ sorted: s,
524
+ clauses: a.map(({ desc: e, compare: t, keyOf: n }) => ({
525
+ desc: e,
526
+ compare: t,
527
+ keyOf: n
528
+ }))
529
+ };
530
+ }
531
+ function i(e, r) {
532
+ let i = t;
533
+ if (e.length !== i.input.length) return null;
534
+ let a = ++C, o = [];
535
+ for (let t = 0; t < e.length; t++) {
536
+ let n = i.input[t], s = e[t];
537
+ if (s !== n) {
538
+ if (r.get(n) !== s) return null;
539
+ n[x] = a, o.push(s);
540
+ }
541
+ }
542
+ if (!o.length) return i.output;
543
+ let s = i.clauses, c = s.length === 1;
544
+ for (let e = 0; e < o.length; e++) {
545
+ let t = o[e];
546
+ if (c) {
547
+ let e = s[0].keyOf(t);
548
+ if (e === n) return null;
549
+ t[S] = e;
550
+ } else {
551
+ let e = Array(s.length);
552
+ for (let r = 0; r < s.length; r++) {
553
+ let i = s[r].keyOf(t);
554
+ if (i === n) return null;
555
+ e[r] = i;
556
+ }
557
+ t[S] = e;
558
+ }
559
+ }
560
+ let l = i.output, u = c ? (() => {
561
+ let { compare: e, desc: t } = s[0];
562
+ return (n, r) => {
563
+ let i = e(n[S], r[S]);
564
+ return i === 0 ? n.index - r.index : t ? -i : i;
565
+ };
566
+ })() : (e, t) => {
567
+ let n = e[S], r = t[S];
568
+ for (let e = 0; e < s.length; e++) {
569
+ let t = s[e], i = t.compare(n[e], r[e]);
570
+ if (i !== 0) return t.desc ? -i : i;
571
+ }
572
+ return e.index - t.index;
573
+ };
574
+ o.sort(u);
575
+ let d = l.length, f = Array(o.length), p = 0;
576
+ for (let e = 0; e < o.length; e++) {
577
+ let t = o[e], n = d;
578
+ for (; p < n;) {
579
+ let e = p + n >>> 1;
580
+ u(t, l[e]) < 0 ? n = e : p = e + 1;
581
+ }
582
+ f[e] = p;
583
+ }
584
+ let m = Array(e.length), h = 0, g = 0, _ = f[0] ?? -1;
585
+ for (let e = 0; e < d; e++) {
586
+ for (; _ === e;) m[h++] = o[g++], _ = g < o.length ? f[g] : -1;
587
+ let t = l[e];
588
+ t[x] !== a && (m[h++] = t);
589
+ }
590
+ for (; g < o.length;) m[h++] = o[g++];
591
+ return m;
592
+ }
593
+ return function({ table: e, rows: n }) {
594
+ let a = e.getState().sorting ?? [];
595
+ if (!a.length) return t = null, n;
596
+ let o = e.getAllColumns();
597
+ if (t && t.sorting === a && t.columns === o) {
598
+ if (t.input === n) return t.output;
599
+ let r = R(e);
600
+ if (r) {
601
+ let e = i(n, r);
602
+ if (e) return t = {
603
+ ...t,
604
+ input: n,
605
+ output: e
606
+ }, e;
607
+ }
608
+ }
609
+ let s = r(n, a, o);
610
+ return s ? (t = {
611
+ input: n,
612
+ output: s.sorted,
613
+ sorting: a,
614
+ columns: o,
615
+ clauses: s.clauses
616
+ }, s.sorted) : (t = null, n);
617
+ };
618
+ }
619
+ function z(e, t) {
620
+ return e === t ? 0 : e - t;
621
+ }
622
+ function B(e) {
623
+ return d(e) ? "" : String(e);
624
+ }
625
+ function ae(e, t) {
626
+ let n = !1, r = !1;
627
+ for (let i = 0; i < e.length; i++) {
628
+ let a = e[i].getCellValueByColumnId(t);
629
+ if (!d(a) && (typeof a == "number" ? n = !0 : r = !0, n && r)) return "mixed";
630
+ }
631
+ return n ? "number" : "text";
632
+ }
633
+ var V = 2e4;
634
+ function oe(e, t, n) {
635
+ let r = e.length, i = new Uint32Array(t + 1);
636
+ for (let a = 0; a < r; a++) i[(n ? t - 1 - e[a] : e[a]) + 1]++;
637
+ for (let e = 0; e < t; e++) i[e + 1] += i[e];
638
+ let a = new Uint32Array(r);
639
+ for (let o = 0; o < r; o++) a[i[n ? t - 1 - e[o] : e[o]]++] = o;
640
+ return a;
641
+ }
642
+ var se = new Uint8Array(new Uint32Array([1]).buffer)[0] === 1;
643
+ function ce(e, t) {
644
+ let n = e.length, r = new Float64Array(n);
645
+ for (let t = 0; t < n; t++) r[t] = e[t] + 0;
646
+ let i = new Uint32Array(r.buffer), a = new Uint32Array(n), o = new Uint32Array(n), s = +!se, c = 1 - s;
647
+ for (let e = 0; e < n; e++) {
648
+ let n = i[2 * e + c], r = i[2 * e + s];
649
+ n & 2147483648 ? (n = ~n >>> 0, r = ~r >>> 0) : n = (n | 2147483648) >>> 0, t && (n = ~n >>> 0, r = ~r >>> 0), o[e] = n, a[e] = r;
650
+ }
651
+ let l = new Uint32Array(n);
652
+ for (let e = 0; e < n; e++) l[e] = e;
653
+ let u = new Uint32Array(n), d = /* @__PURE__ */ new Uint32Array(65536);
654
+ for (let e = 0; e < 4; e++) {
655
+ let t = e < 2 ? a : o, r = e % 2 == 0 ? 0 : 16;
656
+ d.fill(0);
657
+ for (let e = 0; e < n; e++) d[t[e] >>> r & 65535]++;
658
+ if (d[t[l[0]] >>> r & 65535] === n) continue;
659
+ let i = 0;
660
+ for (let e = 0; e < 65536; e++) {
661
+ let t = d[e];
662
+ d[e] = i, i += t;
663
+ }
664
+ for (let e = 0; e < n; e++) {
665
+ let n = l[e];
666
+ u[d[t[n] >>> r & 65535]++] = n;
667
+ }
668
+ let s = l;
669
+ l = u, u = s;
670
+ }
671
+ return l;
672
+ }
673
+ function H(e, t) {
674
+ return e.localeCompare(t);
675
+ }
676
+ function le(t) {
677
+ let r = n({
678
+ sorting: [],
679
+ columnFilters: [],
680
+ pagination: {
681
+ pageIndex: 0,
682
+ pageSize: t.data.length || 10
683
+ },
684
+ grouping: [],
685
+ expanded: {},
686
+ rowSelection: {},
687
+ activeCell: {
688
+ rowIndex: 0,
689
+ colIndex: 0,
690
+ cellId: null
691
+ },
692
+ ...t.state ?? {}
693
+ }), i = n(t), a = null, o = [], s = [], c = null, l = null, u = [], d = null, f = null, p = null;
694
+ function m(e) {
695
+ if (f && f.columns === e) return f;
696
+ let t = /* @__PURE__ */ new Map();
697
+ for (let n = 0; n < e.length; n++) t.set(e[n].id, n);
698
+ return f = {
699
+ grid: A,
700
+ store: r,
701
+ columns: e,
702
+ columnCount: e.length,
703
+ columnIndexById: t
704
+ }, f;
705
+ }
706
+ let h = null, C = null, w = t._rowModels, T = null, A = {
707
+ store: r,
708
+ optionsStore: i,
709
+ get state() {
710
+ return r.state;
711
+ },
712
+ getState() {
713
+ return r.state;
714
+ },
715
+ setOptions(e) {
716
+ i.setState((t) => typeof e == "function" ? e(t) : e);
717
+ },
718
+ setColumnFilters(e) {
719
+ r.setState((t) => ({
720
+ ...t,
721
+ columnFilters: typeof e == "function" ? e(t.columnFilters ?? []) : e
722
+ })), t.onColumnFiltersChange?.(e);
723
+ },
724
+ setPagination(e) {
725
+ r.setState((t) => ({
726
+ ...t,
727
+ pagination: typeof e == "function" ? e(t.pagination ?? {
728
+ pageIndex: 0,
729
+ pageSize: 10
730
+ }) : e
731
+ })), t.onPaginationChange?.(e);
732
+ },
733
+ setGrouping(e) {
734
+ r.setState((t) => ({
735
+ ...t,
736
+ grouping: typeof e == "function" ? e(t.grouping ?? []) : e
737
+ })), t.onGroupingChange?.(e);
738
+ },
739
+ setExpanded(e) {
740
+ r.setState((t) => ({
741
+ ...t,
742
+ expanded: typeof e == "function" ? e(t.expanded ?? {}) : e
743
+ })), t.onExpandedChange?.(e);
744
+ },
745
+ setRowSelection(e) {
746
+ r.setState((t) => ({
747
+ ...t,
748
+ rowSelection: typeof e == "function" ? e(t.rowSelection ?? {}) : e
749
+ })), t.onRowSelectionChange?.(e);
750
+ },
751
+ setActiveCell(e) {
752
+ r.setState((t) => {
753
+ let n = t.activeCell ?? {
754
+ rowIndex: 0,
755
+ colIndex: 0,
756
+ cellId: null
757
+ }, r = typeof e == "function" ? e(n) : e;
758
+ return {
759
+ ...t,
760
+ activeCell: r
761
+ };
762
+ }), t.onActiveCellChange?.(e);
763
+ },
764
+ moveActiveCell(e) {
765
+ let t = A.getRowModel().rows, n = A.getAllColumns(), r = Math.max(t.length - 1, 0), i = Math.max(n.length - 1, 0), a = A.getState().activeCell ?? {
766
+ rowIndex: 0,
767
+ colIndex: 0,
768
+ cellId: null
769
+ }, o = Math.min(Math.max(a.rowIndex + (e.rowDelta ?? 0), 0), r), s = Math.min(Math.max(a.colIndex + (e.colDelta ?? 0), 0), i), c = n[s]?.id ?? "col_0";
770
+ A.setActiveCell({
771
+ rowIndex: o,
772
+ colIndex: s,
773
+ cellId: `${o}_${c}`
774
+ });
775
+ },
776
+ getAllColumns() {
777
+ if (a === t.columns && o.length) return o;
778
+ if (a && t.columns.length === a.length && o.length === t.columns.length && t.columns.every((e, t) => {
779
+ let n = a[t];
780
+ return e.field === n.field && e.id === n.id && e.header === n.header && e.editorType === n.editorType;
781
+ })) return a = t.columns, o;
782
+ a = t.columns, s = [];
783
+ let n = (i, a, o) => {
784
+ let s = [];
785
+ return i.forEach((i, c) => {
786
+ let l = e(i, o, a, c);
787
+ if (i.columns?.length) {
788
+ s.push(...n(i.columns, a + 1, l));
789
+ return;
790
+ }
791
+ s.push({
792
+ id: l,
793
+ depth: a,
794
+ parentId: o,
795
+ columnDef: i,
796
+ getCanSort: () => !!t._features.rowSortingFeature && i.sortable !== !1,
797
+ getCanFilter: () => !!t._features.columnFilteringFeature && i.filterable !== !1,
798
+ getIsSorted: () => {
799
+ let e = r.state.sorting?.find((e) => e.id === l);
800
+ return e ? e.desc ? "desc" : "asc" : !1;
801
+ },
802
+ getToggleSortingHandler: () => () => {
803
+ let e = r.state.sorting ?? [], n = e.find((e) => e.id === l), i = n ? n.desc ? e.filter((e) => e.id !== l) : e.map((e) => e.id === l ? {
804
+ ...e,
805
+ desc: !0
806
+ } : e) : [...e, {
807
+ id: l,
808
+ desc: !1
809
+ }];
810
+ r.setState((e) => ({
811
+ ...e,
812
+ sorting: i
813
+ })), t.onSortingChange?.(i);
814
+ }
815
+ });
816
+ }), s;
817
+ };
818
+ return o = n(t.columns, 0), o;
819
+ },
820
+ getHeaderGroups() {
821
+ return s.length || (s = [{
822
+ id: "header_group_0",
823
+ headers: A.getAllColumns().map((e) => {
824
+ let t = {
825
+ id: e.id,
826
+ isPlaceholder: !1,
827
+ colSpan: 1,
828
+ column: e,
829
+ getContext: () => ({
830
+ header: t,
831
+ column: e,
832
+ table: A
833
+ })
834
+ };
835
+ return t;
836
+ })
837
+ }]), s;
838
+ },
839
+ getFooterGroups() {
840
+ return A.getHeaderGroups();
841
+ },
842
+ getRowModel() {
843
+ let e = A.getAllColumns(), n = t.data;
844
+ if (k) {
845
+ p ??= k({
846
+ rowCtxFor: m,
847
+ getRowId: () => t.getRowId
848
+ });
849
+ let r = p(n, e);
850
+ if (r) return r;
851
+ }
852
+ if (c !== n || l !== e) {
853
+ let i = l === e && f ? O(u) ?? u : null, a = c;
854
+ d = i && i.length === n.length ? /* @__PURE__ */ new Map() : null, c = n, l = e;
855
+ let o;
856
+ if (i && f) o = f;
857
+ else {
858
+ let t = /* @__PURE__ */ new Map();
859
+ for (let n = 0; n < e.length; n++) t.set(e[n].id, n);
860
+ o = {
861
+ grid: A,
862
+ store: r,
863
+ columns: e,
864
+ columnCount: e.length,
865
+ columnIndexById: t
866
+ }, f = o;
867
+ }
868
+ let s = t.getRowId, p = j, m = (e) => {
869
+ let t = n[e];
870
+ return {
871
+ id: s ? s(t, e) : String(e),
872
+ index: e,
873
+ original: t,
874
+ depth: 0,
875
+ [g]: o,
876
+ [_]: null,
877
+ [v]: null,
878
+ [y]: 0,
879
+ [b]: -1,
880
+ [x]: 0,
881
+ [S]: void 0,
882
+ getCanExpand: p.getCanExpand,
883
+ getIsExpanded: p.getIsExpanded,
884
+ toggleExpanded: p.toggleExpanded,
885
+ getIsSelected: p.getIsSelected,
886
+ toggleSelected: p.toggleSelected,
887
+ getAllCells: p.getAllCells,
888
+ getCellValueByColumnId: p.getCellValueByColumnId
889
+ };
890
+ };
891
+ u = i ? Array(n.length) : E(n.length, m);
892
+ for (let e = 0; i && e < n.length; e++) {
893
+ let t = n[e], r = i[e];
894
+ if (r && r.original === t) {
895
+ r[_] !== null && (r[_] = null), r[v] !== null && (r[v] = null), u[e] = r;
896
+ continue;
897
+ }
898
+ d && d.size * 4 >= n.length && (d = null);
899
+ let o = m(e);
900
+ r === void 0 && a?.[e] === t && (i[e] = o), u[e] = o, d && r && d.set(r, o);
901
+ }
902
+ d && d.size === 0 && (d = null);
903
+ }
904
+ let i = {
905
+ sorting: r.state.sorting,
906
+ columnFilters: r.state.columnFilters,
907
+ pagination: r.state.pagination,
908
+ grouping: r.state.grouping,
909
+ expanded: r.state.expanded
910
+ };
911
+ if (h && C === u && w === t._rowModels && T?.sorting === i.sorting && T?.columnFilters === i.columnFilters && T?.pagination === i.pagination && T?.grouping === i.grouping && T?.expanded === i.expanded) return h;
912
+ let a = (i.sorting?.length ?? 0) > 0 || (i.columnFilters?.length ?? 0) > 0 || (i.grouping?.length ?? 0) > 0 || i.expanded === !0 || Object.keys(i.expanded ?? {}).length > 0 ? D(u) : u, o = t._rowModels ?? {}, s = [
913
+ o.coreRowModel,
914
+ o.filteredRowModel,
915
+ o.sortedRowModel,
916
+ o.groupedRowModel,
917
+ o.expandedRowModel,
918
+ o.paginatedRowModel
919
+ ];
920
+ L.set(A, d);
921
+ try {
922
+ s.forEach((e) => {
923
+ e && (a = e({
924
+ table: A,
925
+ rows: a
926
+ }));
927
+ });
928
+ } finally {
929
+ L.set(A, null), d = null;
930
+ }
931
+ return w = t._rowModels, T = i, C = u, h = { rows: a }, h;
932
+ }
933
+ };
934
+ return A;
935
+ }
936
+ function ue(e) {
937
+ return typeof e == "function";
938
+ }
939
+ //#endregion
940
+ //#region src/windowed-brand.ts
941
+ var U = Symbol.for("svgrid.windowedData"), W = (e) => typeof e == "string" && e.length > 0 && e.length < 16 && /^(0|[1-9]\d*)$/.test(e);
942
+ function G(e, t) {
943
+ let n = {
944
+ length: e,
945
+ at: t
946
+ };
947
+ return new Proxy([], {
948
+ get(r, i, a) {
949
+ if (i === U) return n;
950
+ if (i === "length") return e;
951
+ if (W(i)) {
952
+ let n = Number(i);
953
+ return n < e ? t(n) : void 0;
954
+ }
955
+ return Reflect.get(r, i, a);
956
+ },
957
+ has(t, n) {
958
+ return n === U ? !0 : W(n) ? Number(n) < e : Reflect.has(t, n);
959
+ },
960
+ set() {
961
+ return !1;
962
+ },
963
+ getOwnPropertyDescriptor(n, r) {
964
+ return W(r) && Number(r) < e ? {
965
+ value: t(Number(r)),
966
+ writable: !1,
967
+ enumerable: !0,
968
+ configurable: !0
969
+ } : r === "length" ? {
970
+ value: e,
971
+ writable: !0,
972
+ enumerable: !1,
973
+ configurable: !1
974
+ } : Reflect.getOwnPropertyDescriptor(n, r);
975
+ }
976
+ });
977
+ }
978
+ function K(e) {
979
+ return typeof e != "object" || !e ? null : e[U] ?? null;
980
+ }
981
+ function de(e) {
982
+ return K(e) !== null;
983
+ }
984
+ //#endregion
985
+ //#region src/windowed-row-model.ts
986
+ var q = Symbol("svgrid.row.windowGen"), J = 2e4, Y = !1;
987
+ function fe() {
988
+ Y || (Y = !0, A((e) => {
989
+ let t = null, n = /* @__PURE__ */ new Map(), r = 0;
990
+ return (i, a) => {
991
+ let o = K(i);
992
+ if (!o) return null;
993
+ if (t && t.input === i && t.columns === a) return t.model;
994
+ (!t || t.columns !== a) && n.clear();
995
+ let s = e.rowCtxFor(a), c = e.getRowId(), l = ++r, u = j, d = { rows: G(o.length, (e) => {
996
+ if (e < 0 || e >= o.length) return;
997
+ let t = o.at(e);
998
+ if (t === void 0) return;
999
+ let r = n.get(e);
1000
+ if (r && r.original === t) return r[q] !== l && (r[_] = null, r[v] = null, r[q] = l), r;
1001
+ let i = {
1002
+ id: c ? c(t, e) : String(e),
1003
+ index: e,
1004
+ original: t,
1005
+ depth: 0,
1006
+ [g]: s,
1007
+ [_]: null,
1008
+ [v]: null,
1009
+ [y]: 0,
1010
+ [b]: -1,
1011
+ [x]: 0,
1012
+ [S]: void 0,
1013
+ [q]: l,
1014
+ getCanExpand: u.getCanExpand,
1015
+ getIsExpanded: u.getIsExpanded,
1016
+ toggleExpanded: u.toggleExpanded,
1017
+ getIsSelected: u.getIsSelected,
1018
+ toggleSelected: u.toggleSelected,
1019
+ getAllCells: u.getAllCells,
1020
+ getCellValueByColumnId: u.getCellValueByColumnId
1021
+ };
1022
+ if (n.set(e, i), n.size > J) {
1023
+ let e = J / 4;
1024
+ for (let t of n.keys()) {
1025
+ if (e-- <= 0) break;
1026
+ n.delete(t);
1027
+ }
1028
+ }
1029
+ return i;
1030
+ }) };
1031
+ return t = {
1032
+ input: i,
1033
+ columns: a,
1034
+ model: d
1035
+ }, d;
1036
+ };
1037
+ }));
1038
+ }
1039
+ //#endregion
1040
+ //#region src/windowed-data.ts
1041
+ function X(e, t) {
1042
+ return fe(), G(e, t);
1043
+ }
1044
+ //#endregion
1045
+ //#region src/server-block-cache.ts
1046
+ var Z = Symbol.for("svgrid.rowPlaceholder"), Q = Object.freeze({ [Z]: "loading" }), $ = Object.freeze({ [Z]: "failed" });
1047
+ function pe(e) {
1048
+ if (typeof e != "object" || !e) return null;
1049
+ let t = e[Z];
1050
+ return t === "loading" || t === "failed" ? t : null;
1051
+ }
1052
+ function me(e, t) {
1053
+ return Object.freeze({
1054
+ ...t,
1055
+ [Z]: e
1056
+ });
1057
+ }
1058
+ var he = (e) => {
1059
+ Promise.resolve().then(e);
1060
+ };
1061
+ function ge(e) {
1062
+ let t = Math.max(1, e.blockSize ?? 100), n = e.maxBlocksInCache ?? Infinity, r = Math.max(1, e.maxConcurrentRequests ?? 2), i = Math.max(0, e.blockLoadDebounceMs ?? 0), a = Math.max(0, e.initialRowCount ?? 1), o = Math.max(0, e.overflowRows ?? 1), s = e.schedule ?? he, c = /* @__PURE__ */ new Map(), l = [], u = 0, d = 0, f = null, p = !1, m = !1, h = 0, g = 0, _ = null, v = !1, y = null, b = null, x = (e) => Math.floor(e / t), S = (e) => e * t;
1063
+ function C() {
1064
+ if (p && f != null) return f;
1065
+ let e = 0, n = !1;
1066
+ for (let e of c.values()) e.status !== "loading" && (n = !0);
1067
+ for (let [r, i] of c) {
1068
+ let a = i.status === "loaded" ? S(r) + i.rows.length : i.status === "failed" ? r === 0 ? 0 : S(r) + t : n ? S(r) + t : 0;
1069
+ a > e && (e = a);
1070
+ }
1071
+ return n ? Math.max(a, e + o) : a;
1072
+ }
1073
+ function w() {
1074
+ let e = [];
1075
+ for (let [t, n] of c) n.status === "failed" && e.push(t);
1076
+ return {
1077
+ rowCount: p ? f : null,
1078
+ lastRowKnown: p,
1079
+ loading: u > 0,
1080
+ failedBlocks: e.sort((e, t) => e - t)
1081
+ };
1082
+ }
1083
+ function T() {
1084
+ y = b = null, !(m || v) && (v = !0, s(() => {
1085
+ v = !1, !m && e.onChange(w());
1086
+ }));
1087
+ }
1088
+ function E(e) {
1089
+ m || c.get(e) || l.includes(e) || (l.push(e), D());
1090
+ }
1091
+ function D() {
1092
+ for (; !m && u < r && l.length > 0;) {
1093
+ let e = l.shift();
1094
+ c.has(e) || O(e);
1095
+ }
1096
+ }
1097
+ async function O(n) {
1098
+ let r = new AbortController(), i = {
1099
+ status: "loading",
1100
+ rows: [],
1101
+ lastTouched: d += 1,
1102
+ controller: r
1103
+ };
1104
+ c.set(n, i), u += 1, T();
1105
+ let a = S(n), o = a + t;
1106
+ try {
1107
+ let t = await e.fetch(a, o, r.signal);
1108
+ if (m || r.signal.aborted || c.get(n) !== i) return;
1109
+ i.rows = [...t.rows], i.status = "loaded", i.controller = null, k(n, i.rows.length, t.rowCount), A();
1110
+ } catch {
1111
+ if (m || r.signal.aborted || c.get(n) !== i) return;
1112
+ i.status = "failed", i.rows = [], i.controller = null;
1113
+ } finally {
1114
+ !m && !r.signal.aborted && (--u, T(), D());
1115
+ }
1116
+ }
1117
+ function k(e, n, r) {
1118
+ if (typeof r == "number" && r >= 0) {
1119
+ f = r, p = !0;
1120
+ return;
1121
+ }
1122
+ n < t && (f = S(e) + n, p = !0);
1123
+ }
1124
+ function A() {
1125
+ if (!Number.isFinite(n)) return;
1126
+ let e = x(h), t = x(Math.max(h, g)), r = [...c.entries()].filter(([n, r]) => r.status === "loaded" && (n < e || n > t)).sort((e, t) => e[1].lastTouched - t[1].lastTouched), i = 0;
1127
+ for (let e of c.values()) e.status === "loaded" && (i += 1);
1128
+ for (let [e] of r) {
1129
+ if (i <= n) break;
1130
+ c.delete(e), --i;
1131
+ }
1132
+ }
1133
+ function j() {
1134
+ if (m) return;
1135
+ let e = x(h), t = x(Math.max(h, g));
1136
+ for (let n = e; n <= t; n += 1) {
1137
+ let e = c.get(n);
1138
+ e ? e.lastTouched = d += 1 : E(n);
1139
+ }
1140
+ }
1141
+ function M(e) {
1142
+ let t = c.get(x(e));
1143
+ return t ? t.status === "failed" ? $ : t.rows[e - S(x(e))] ?? Q : Q;
1144
+ }
1145
+ function N() {
1146
+ for (let e of c.values()) e.controller?.abort();
1147
+ u = 0, l.length = 0;
1148
+ }
1149
+ return {
1150
+ setViewport(e, t) {
1151
+ if (!m) {
1152
+ if (h = Math.max(0, e), g = Math.max(h, t), i === 0) {
1153
+ j();
1154
+ return;
1155
+ }
1156
+ _ && clearTimeout(_), _ = setTimeout(() => {
1157
+ _ = null, j();
1158
+ }, i);
1159
+ }
1160
+ },
1161
+ rows() {
1162
+ if (y) return y;
1163
+ let e = C(), n = Array(e);
1164
+ n.fill(Q);
1165
+ for (let [r, i] of c) {
1166
+ let a = S(r);
1167
+ if (!(a >= e)) {
1168
+ if (i.status === "failed") {
1169
+ let r = Math.min(a + t, e);
1170
+ for (let e = a; e < r; e += 1) n[e] = $;
1171
+ continue;
1172
+ }
1173
+ for (let t = 0; t < i.rows.length && a + t < e; t += 1) n[a + t] = i.rows[t];
1174
+ }
1175
+ }
1176
+ return y = n, n;
1177
+ },
1178
+ windowedRows() {
1179
+ return b || (b = X(C(), (e) => M(e)), b);
1180
+ },
1181
+ getRow: M,
1182
+ rowCount: () => p ? f : null,
1183
+ lastRowKnown: () => p,
1184
+ retryFailed() {
1185
+ let e = !1;
1186
+ for (let [t, n] of [...c]) n.status === "failed" && (c.delete(t), E(t), e = !0);
1187
+ e && T();
1188
+ },
1189
+ retryFailedAt(e) {
1190
+ let t = x(Math.max(0, e));
1191
+ c.get(t)?.status === "failed" && (c.delete(t), E(t), T());
1192
+ },
1193
+ refresh() {
1194
+ for (let [e, t] of [...c]) t.controller?.abort(), c.delete(e), E(e);
1195
+ T();
1196
+ },
1197
+ purge() {
1198
+ N(), c.clear(), f = null, p = !1, y = b = null, j(), T();
1199
+ },
1200
+ setRowCount(e, t = e != null) {
1201
+ f = e, p = t && e != null, T();
1202
+ },
1203
+ applyRows(e, n, r) {
1204
+ if (e % t !== 0) throw Error(`createBlockCache.applyRows: startRow ${e} is not a multiple of blockSize ${t}`);
1205
+ let i = x(e), a = Math.ceil(n.length / t);
1206
+ for (let e = 0; e < a; e += 1) {
1207
+ let r = i + e;
1208
+ c.get(r)?.controller?.abort(), c.set(r, {
1209
+ status: "loaded",
1210
+ rows: n.slice(e * t, (e + 1) * t),
1211
+ lastTouched: d += 1,
1212
+ controller: null
1213
+ });
1214
+ }
1215
+ let o = c.get(i + a - 1);
1216
+ o ? k(i + a - 1, o.rows.length, r) : typeof r == "number" && r >= 0 && (f = r, p = !0), T();
1217
+ },
1218
+ patch(e, t) {
1219
+ let n = c.get(x(e));
1220
+ if (!n || n.status !== "loaded") return !1;
1221
+ let r = e - S(x(e));
1222
+ return r < 0 || r >= n.rows.length ? !1 : (n.rows[r] = t, T(), !0);
1223
+ },
1224
+ findIndex(e) {
1225
+ for (let [t, n] of c) {
1226
+ if (n.status !== "loaded") continue;
1227
+ let r = S(t);
1228
+ for (let t = 0; t < n.rows.length; t += 1) if (e(n.rows[t], r + t)) return r + t;
1229
+ }
1230
+ return -1;
1231
+ },
1232
+ insert(e, t) {
1233
+ if (t.length === 0) return !1;
1234
+ let n = Math.max(0, Math.min(e, C())), r = P(n);
1235
+ return r ? (r.flat.splice(n - S(r.startBlock), 0, ...t), F(r.startBlock, r.flat)) : I(x(n)), p && f != null && (f += t.length), T(), r != null;
1236
+ },
1237
+ remove(e, t = 1) {
1238
+ if (t <= 0) return 0;
1239
+ let n = P(e);
1240
+ if (!n) return 0;
1241
+ let r = n.flat.splice(e - S(n.startBlock), t).length;
1242
+ return F(n.startBlock, n.flat), p && f != null && (f = Math.max(0, f - r)), T(), r;
1243
+ },
1244
+ getCacheState() {
1245
+ return [...c.entries()].map(([e, n]) => ({
1246
+ blockIndex: e,
1247
+ startRow: S(e),
1248
+ endRow: S(e) + t,
1249
+ status: n.status,
1250
+ lastTouched: n.lastTouched
1251
+ })).sort((e, t) => e.blockIndex - t.blockIndex);
1252
+ },
1253
+ dispose() {
1254
+ m = !0, _ && clearTimeout(_), _ = null, N(), c.clear();
1255
+ }
1256
+ };
1257
+ function P(e) {
1258
+ let n = x(e);
1259
+ if (c.get(n)?.status !== "loaded") return null;
1260
+ let r = n;
1261
+ for (; c.get(r - 1)?.status === "loaded";) --r;
1262
+ let i = [];
1263
+ for (let e = r;; e += 1) {
1264
+ let n = c.get(e);
1265
+ if (!n || n.status !== "loaded" || (i.push(...n.rows), n.rows.length < t)) break;
1266
+ }
1267
+ return {
1268
+ startBlock: r,
1269
+ flat: i
1270
+ };
1271
+ }
1272
+ function F(e, n) {
1273
+ let r = Math.ceil(n.length / t);
1274
+ I(e);
1275
+ for (let i = 0; i < r; i += 1) c.set(e + i, {
1276
+ status: "loaded",
1277
+ rows: n.slice(i * t, (i + 1) * t),
1278
+ lastTouched: d += 1,
1279
+ controller: null
1280
+ });
1281
+ y = b = null;
1282
+ }
1283
+ function I(e) {
1284
+ for (let [t, n] of [...c]) t < e || (n.controller?.abort(), c.delete(t));
1285
+ y = b = null;
1286
+ }
1287
+ }
1288
+ //#endregion
1289
+ export { a as C, l as D, u as E, e as O, c as S, r as T, te as _, de as a, ne as b, i as c, re as d, F as f, le as g, ie as h, X as i, o as l, I as m, me as n, K as o, ee as p, pe as r, t as s, ge as t, P as u, D as v, s as w, ue as x, h as y };