@svgrid/grid 3.0.4 → 3.0.6

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 (176) hide show
  1. package/README.md +32 -11
  2. package/dist/GridMenus.svelte +34 -4
  3. package/dist/SvGrid.controller.svelte.d.ts +33 -5
  4. package/dist/SvGrid.controller.svelte.js +397 -58
  5. package/dist/SvGrid.css +200 -2
  6. package/dist/SvGrid.svelte +350 -40
  7. package/dist/SvGrid.types.d.ts +433 -7
  8. package/dist/SvGridDropdown.svelte +20 -0
  9. package/dist/SvGridDropdown.svelte.d.ts +12 -0
  10. package/dist/SvModal.svelte +22 -0
  11. package/dist/SvModal.svelte.d.ts +7 -0
  12. package/dist/a11y/dismissable.d.ts +10 -0
  13. package/dist/a11y/dismissable.js +24 -2
  14. package/dist/build-api.js +92 -37
  15. package/dist/cdn/{GridMenus-BL7ZgQvU.js → GridMenus-C-NtjlrJ.js} +155 -146
  16. package/dist/cdn/GridMenus-TssHej3q.js +644 -0
  17. package/dist/cdn/{SvChartMenu-FBSMINA6.js → SvChartMenu-BFSTpvB-.js} +1 -1
  18. package/dist/cdn/{SvChartMenu-Bl6PBbkT.js → SvChartMenu-BZ1Iwv0y.js} +1 -1
  19. package/dist/cdn/{SvDateTimePicker-DQwt4UAs.js → SvDateTimePicker-D9u_cOf8.js} +1 -1
  20. package/dist/cdn/{SvDateTimePicker-vNU6bZ-q.js → SvDateTimePicker-s_6IUpI7.js} +1 -1
  21. package/dist/cdn/{SvGridCellEditor-B1p-vCK5.js → SvGridCellEditor-BlyCSp0q.js} +1 -1
  22. package/dist/cdn/{SvGridCellEditor-D_0q4xAu.js → SvGridCellEditor-ClRRA9lW.js} +1 -1
  23. package/dist/cdn/{SvGridChart-DzLkSwCH.js → SvGridChart-B4EV8U6t.js} +4 -4
  24. package/dist/cdn/{SvGridChart-C3EWAZaM.js → SvGridChart-DsmwTyZF.js} +4 -4
  25. package/dist/cdn/{SvGridChartBuilder-CfII62sZ.js → SvGridChartBuilder-cHloHobN.js} +4 -4
  26. package/dist/cdn/{SvGridChartBuilder-BE2T1ykB.js → SvGridChartBuilder-vOl7C0Za.js} +4 -4
  27. package/dist/cdn/{SvGridChartPanel-xf4sWVTo.js → SvGridChartPanel-AcqF-Ll5.js} +5 -5
  28. package/dist/cdn/{SvGridChartPanel-CCX5_Wgd.js → SvGridChartPanel-biMtSBPA.js} +5 -5
  29. package/dist/cdn/{SvGridChartView-DYwabQWj.js → SvGridChartView-Dx_GmZuL.js} +2 -2
  30. package/dist/cdn/{SvGridChartView-CfuXmY5I.js → SvGridChartView-I3rDHXAq.js} +2 -2
  31. package/dist/cdn/{SvGridDropdown-D0VdjeR8.js → SvGridDropdown-BWeM3lMe.js} +46 -46
  32. package/dist/cdn/{SvGridDropdown-D13MtJ2j.js → SvGridDropdown-CJ6QqTxu.js} +67 -67
  33. package/dist/cdn/{SvModal-CIZWCcad.js → SvModal-ClxGmpAc.js} +187 -186
  34. package/dist/cdn/{SvModal-BAE-pjZX.js → SvModal-DhB_VMFR.js} +148 -147
  35. package/dist/cdn/{cell-formatting-C2Hf5gqd.js → cell-formatting-DVVKOSI9.js} +1 -1
  36. package/dist/cdn/{chart-Dz7SqMXH.js → chart-DEZxwC0i.js} +1 -1
  37. package/dist/cdn/{chart-panel-messages-CUbf2R4i.js → chart-panel-messages-D12XcTZJ.js} +1 -1
  38. package/dist/cdn/{chart-panel-messages-CmNrMdsr.js → chart-panel-messages-DguS7gC5.js} +1 -1
  39. package/dist/cdn/{chart-summary-BJW_tg_X.js → chart-summary-CMAXBGY-.js} +1 -1
  40. package/dist/cdn/{chart-trend-CaN9mDEV.js → chart-trend-BkEp61Gj.js} +1 -1
  41. package/dist/cdn/{dismissable-DAHetSNk.js → dismissable-Brc4EZU1.js} +5 -1
  42. package/dist/cdn/{export-format-CUDLy2yn.js → export-format-YzdwBww2.js} +1 -1
  43. package/dist/cdn/{row-resize-niQCp040.js → row-resize-DtOS1KG6.js} +41 -32
  44. package/dist/cdn/server-block-cache-DIqb3VZn.js +241 -0
  45. package/dist/cdn/{src-V1uu8iE9.js → src-CgoeSM8k.js} +5339 -4753
  46. package/dist/cdn/{src-BKhZ6eXd.js → src-DfwxB1TH.js} +9817 -9231
  47. package/dist/cdn/svgrid.js +28 -27
  48. package/dist/cdn/svgrid.svelte-external.js +28 -27
  49. package/dist/cdn/validate-AZoD8BoR.js +80 -0
  50. package/dist/cell-formatting.js +18 -1
  51. package/dist/cell-render.js +25 -6
  52. package/dist/clipboard.d.ts +2 -2
  53. package/dist/clipboard.js +72 -23
  54. package/dist/columns.js +7 -2
  55. package/dist/conditional-formatting.d.ts +2 -0
  56. package/dist/conditional-formatting.js +2 -0
  57. package/dist/core.d.ts +22 -6
  58. package/dist/core.js +401 -38
  59. package/dist/editing.js +34 -0
  60. package/dist/gantt-view.svelte.d.ts +24 -0
  61. package/dist/gantt-view.svelte.js +13 -0
  62. package/dist/grid-icons.d.ts +2 -2
  63. package/dist/grid-icons.js +2 -2
  64. package/dist/grid-messages.d.ts +10 -0
  65. package/dist/grid-messages.js +9 -0
  66. package/dist/headless.d.ts +5 -0
  67. package/dist/headless.js +12 -0
  68. package/dist/history.d.ts +21 -0
  69. package/dist/history.js +34 -4
  70. package/dist/index.d.ts +5 -4
  71. package/dist/index.js +3 -3
  72. package/dist/keyboard-handlers.js +24 -1
  73. package/dist/keyboard.js +4 -0
  74. package/dist/row-drag-touch.d.ts +1 -1
  75. package/dist/row-drag.js +35 -1
  76. package/dist/row-model.d.ts +139 -0
  77. package/dist/row-model.js +16 -0
  78. package/dist/row-resize.js +22 -1
  79. package/dist/selection.d.ts +2 -1
  80. package/dist/selection.js +31 -3
  81. package/dist/server-block-cache.d.ts +219 -0
  82. package/dist/server-block-cache.js +539 -0
  83. package/dist/server-data-source.d.ts +274 -8
  84. package/dist/server-data-source.js +229 -20
  85. package/dist/server.d.ts +13 -0
  86. package/dist/server.js +13 -0
  87. package/dist/sparkline.js +7 -5
  88. package/dist/svgrid-wrapper.types.d.ts +33 -0
  89. package/dist/validate.d.ts +4 -0
  90. package/dist/validate.js +29 -3
  91. package/package.json +11 -1
  92. package/src/GridMenus.svelte +34 -4
  93. package/src/SvGrid.controller.svelte.ts +397 -61
  94. package/src/SvGrid.css +200 -2
  95. package/src/SvGrid.svelte +350 -40
  96. package/src/SvGrid.types.ts +453 -7
  97. package/src/SvGridDropdown.svelte +20 -0
  98. package/src/SvModal.svelte +22 -0
  99. package/src/SvModal.test.ts +30 -1
  100. package/src/a11y/dismissable.test.ts +10 -1
  101. package/src/a11y/dismissable.ts +22 -2
  102. package/src/build-api.ts +96 -31
  103. package/src/cell-formatting.test.ts +17 -0
  104. package/src/cell-formatting.ts +18 -1
  105. package/src/cell-render.test.ts +24 -2
  106. package/src/cell-render.ts +24 -8
  107. package/src/clipboard.test.ts +107 -0
  108. package/src/clipboard.ts +62 -23
  109. package/src/columns.test.ts +4 -4
  110. package/src/columns.ts +7 -2
  111. package/src/conditional-formatting.test.ts +8 -0
  112. package/src/conditional-formatting.ts +3 -0
  113. package/src/core.rowmodel-cache.test.ts +51 -0
  114. package/src/core.tick-repair.test.ts +287 -0
  115. package/src/core.ts +407 -38
  116. package/src/editing.test.ts +52 -0
  117. package/src/editing.ts +33 -0
  118. package/src/gantt-stub.test.svelte +38 -0
  119. package/src/gantt-view.svelte.ts +35 -0
  120. package/src/grid-icons.ts +2 -2
  121. package/src/grid-messages.test.ts +7 -0
  122. package/src/grid-messages.ts +22 -0
  123. package/src/headless.ts +24 -0
  124. package/src/history.test.ts +49 -1
  125. package/src/history.ts +48 -2
  126. package/src/icon-seam.test.ts +2 -4
  127. package/src/index.ts +38 -10
  128. package/src/keyboard-handlers.coverage.test.ts +65 -0
  129. package/src/keyboard-handlers.ts +26 -1
  130. package/src/keyboard.ts +3 -0
  131. package/src/row-drag-touch.ts +2 -2
  132. package/src/row-drag.test.ts +51 -0
  133. package/src/row-drag.ts +35 -2
  134. package/src/row-model.ts +152 -0
  135. package/src/row-resize.ts +24 -1
  136. package/src/selection.test.ts +3 -0
  137. package/src/selection.ts +33 -3
  138. package/src/server-block-cache.test.ts +672 -0
  139. package/src/server-block-cache.ts +690 -0
  140. package/src/server-data-source.infinite.test.ts +405 -0
  141. package/src/server-data-source.test.ts +19 -0
  142. package/src/server-data-source.ts +496 -29
  143. package/src/server.ts +49 -0
  144. package/src/sparkline.test.ts +7 -0
  145. package/src/sparkline.ts +6 -4
  146. package/src/svgrid-wrapper.types.ts +32 -0
  147. package/src/svgrid.api.test.ts +21 -0
  148. package/src/svgrid.charting.test.ts +12 -4
  149. package/src/svgrid.context-menu.test.ts +12 -0
  150. package/src/svgrid.detail-rows.svelte.test.ts +187 -0
  151. package/src/svgrid.filter-menu-scroll.test.ts +9 -0
  152. package/src/svgrid.gantt-seam.test.ts +199 -0
  153. package/src/svgrid.live-update-paths.svelte.test.ts +184 -0
  154. package/src/svgrid.menu-scroll-close.test.ts +10 -0
  155. package/src/svgrid.row-model-prop.svelte.test.ts +352 -0
  156. package/src/svgrid.row-model-seam.svelte.test.ts +305 -0
  157. package/src/svgrid.row-pinning.test.ts +15 -1
  158. package/src/svgrid.selection-bar-seam.test.ts +1 -1
  159. package/src/svgrid.sticky-groups.svelte.test.ts +145 -0
  160. package/src/svgrid.upsell-license.test.ts +8 -5
  161. package/src/test-setup.ts +12 -0
  162. package/src/transaction.test.ts +58 -0
  163. package/src/validate.test.ts +29 -0
  164. package/src/validate.ts +34 -3
  165. package/dist/SvGroupCell.svelte +0 -141
  166. package/dist/SvGroupCell.svelte.d.ts +0 -49
  167. package/dist/SvRowGroupPanel.svelte +0 -186
  168. package/dist/SvRowGroupPanel.svelte.d.ts +0 -25
  169. package/dist/cdn/GridMenus-7kbpnnBW.js +0 -635
  170. package/dist/cdn/validate-_CDJzgIo.js +0 -75
  171. package/dist/server-group-model.d.ts +0 -98
  172. package/dist/server-group-model.js +0 -263
  173. package/src/SvGroupCell.svelte +0 -141
  174. package/src/SvRowGroupPanel.svelte +0 -186
  175. package/src/server-group-model.test.ts +0 -294
  176. package/src/server-group-model.ts +0 -370
@@ -3,25 +3,29 @@ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
3
3
  var t = /* @__PURE__ */ e({ rowResize: () => r }), n = "sv-grid-row-resize-handle";
4
4
  function r(e, t) {
5
5
  let r = t, i = null, a = null;
6
- function o(e) {
6
+ function o(e, t) {
7
+ let n = r.min ?? 20, i = r.max ?? 320;
8
+ e.setAttribute("aria-valuemin", String(n)), e.setAttribute("aria-valuemax", String(i)), e.setAttribute("aria-valuenow", String(Math.round(Math.max(n, Math.min(i, t || n)))));
9
+ }
10
+ function s(e) {
7
11
  let t = e.querySelector("[data-svgrid-row]")?.dataset.svgridRow;
8
12
  return t == null ? NaN : Number(t);
9
13
  }
10
- function s(e) {
14
+ function c(e) {
11
15
  if (!i) return;
12
16
  let t = r.min ?? 20, n = r.max ?? 320, a = Math.max(t, Math.min(n, i.startHeight + (e.clientY - i.startY)));
13
- i.trEl.style.height = `${Math.round(a)}px`, r.onResizeMove?.(i.rowIndex, Math.round(a));
17
+ i.trEl.style.height = `${Math.round(a)}px`, o(i.strip, a), r.onResizeMove?.(i.rowIndex, Math.round(a));
14
18
  }
15
- function c(e) {
19
+ function l(e) {
16
20
  if (!i) return;
17
21
  let t = r.min ?? 20, n = r.max ?? 320, a = Math.max(t, Math.min(n, i.startHeight + (e.clientY - i.startY)));
18
22
  r.onResize(i.rowIndex, Math.round(a)), i.strip.classList.remove("is-resizing");
19
23
  try {
20
24
  i.trEl.releasePointerCapture(e.pointerId);
21
25
  } catch {}
22
- i = null, window.removeEventListener("pointermove", s), window.removeEventListener("pointerup", c), document.body.style.cursor = "";
26
+ i = null, window.removeEventListener("pointermove", c), window.removeEventListener("pointerup", l), document.body.style.cursor = "";
23
27
  }
24
- function l(e) {
28
+ function u(e) {
25
29
  if (r.disabled) return;
26
30
  let t = e.target;
27
31
  if (!t?.classList.contains(n)) return;
@@ -29,21 +33,21 @@ function r(e, t) {
29
33
  if (e.key === "ArrowUp") a = -i;
30
34
  else if (e.key === "ArrowDown") a = i;
31
35
  else return;
32
- let s = t.closest("tr.sv-grid-row");
33
- if (!s) return;
34
- let c = o(s);
35
- if (!Number.isFinite(c)) return;
36
+ let c = t.closest("tr.sv-grid-row");
37
+ if (!c) return;
38
+ let l = s(c);
39
+ if (!Number.isFinite(l)) return;
36
40
  e.preventDefault(), e.stopPropagation();
37
- let l = r.min ?? 20, u = r.max ?? 320, d = Math.round(Math.max(l, Math.min(u, s.getBoundingClientRect().height + a)));
38
- s.style.height = `${d}px`, r.onResizeMove?.(c, d), r.onResize(c, d);
41
+ let u = r.min ?? 20, d = r.max ?? 320, f = Math.round(Math.max(u, Math.min(d, c.getBoundingClientRect().height + a)));
42
+ c.style.height = `${f}px`, o(t, f), r.onResizeMove?.(l, f), r.onResize(l, f);
39
43
  }
40
- function u(e) {
44
+ function d(e) {
41
45
  if (r.disabled) return;
42
46
  let t = e.target;
43
47
  if (!t?.classList.contains(n)) return;
44
- let l = t.closest("tr.sv-grid-row");
45
- if (!l) return;
46
- let u = o(l);
48
+ let o = t.closest("tr.sv-grid-row");
49
+ if (!o) return;
50
+ let u = s(o);
47
51
  if (!Number.isFinite(u)) return;
48
52
  e.preventDefault(), e.stopPropagation();
49
53
  let d = e.timeStamp, f = a !== null && a.rowIndex === u && d - a.at < 400;
@@ -57,45 +61,50 @@ function r(e, t) {
57
61
  t.classList.add("is-resizing"), i = {
58
62
  rowIndex: u,
59
63
  startY: e.clientY,
60
- startHeight: l.getBoundingClientRect().height,
61
- trEl: l,
64
+ startHeight: o.getBoundingClientRect().height,
65
+ trEl: o,
62
66
  strip: t
63
67
  };
64
68
  try {
65
- l.setPointerCapture(e.pointerId);
69
+ o.setPointerCapture(e.pointerId);
66
70
  } catch {}
67
- document.body.style.cursor = "row-resize", window.addEventListener("pointermove", s), window.addEventListener("pointerup", c);
71
+ document.body.style.cursor = "row-resize", window.addEventListener("pointermove", c), window.addEventListener("pointerup", l);
68
72
  }
69
- function d() {
73
+ function f() {
70
74
  if (r.disabled) {
71
- f();
75
+ p();
72
76
  return;
73
77
  }
74
78
  let t = e.querySelectorAll("tr.sv-grid-row");
75
79
  for (let e of t) {
76
80
  if (e.classList.contains("sv-grid-header-row") || e.classList.contains("sv-grid-row-spacer")) continue;
77
81
  let t = e.querySelector(".sv-grid-cell.sv-row-gutter, .sv-grid-cell.sv-grid-row-number-cell") ?? (r.anchor === "row" ? e.querySelector(".sv-grid-cell") : null);
78
- if (!t || t.querySelector(`:scope > .${n}`)) continue;
82
+ if (!t) continue;
83
+ let i = t.querySelector(`:scope > .${n}`);
84
+ if (i) {
85
+ o(i, e.getBoundingClientRect().height);
86
+ continue;
87
+ }
79
88
  getComputedStyle(t).position === "static" && (t.style.position = "relative"), t.style.overflow = "visible";
80
- let i = document.createElement("div");
81
- i.className = n, i.setAttribute("role", "separator"), i.setAttribute("aria-orientation", "horizontal"), i.setAttribute("aria-label", "Resize row"), i.tabIndex = 0, i.style.cssText = "position:absolute;left:0;right:0;bottom:0;height:5px;cursor:row-resize;user-select:none;z-index:60;pointer-events:auto;", t.appendChild(i);
89
+ let a = document.createElement("div");
90
+ a.className = n, a.setAttribute("role", "separator"), a.setAttribute("aria-orientation", "horizontal"), a.setAttribute("aria-label", "Resize row"), a.tabIndex = 0, o(a, e.getBoundingClientRect().height), a.style.cssText = "position:absolute;left:0;right:0;bottom:0;height:5px;cursor:row-resize;user-select:none;z-index:60;pointer-events:auto;", t.appendChild(a);
82
91
  }
83
92
  }
84
- function f() {
93
+ function p() {
85
94
  e.querySelectorAll(`.${n}`).forEach((e) => e.remove());
86
95
  }
87
- e.addEventListener("pointerdown", u, { capture: !0 }), e.addEventListener("keydown", l, { capture: !0 });
88
- let p = new MutationObserver(() => d());
89
- return p.observe(e, {
96
+ e.addEventListener("pointerdown", d, { capture: !0 }), e.addEventListener("keydown", u, { capture: !0 });
97
+ let m = new MutationObserver(() => f());
98
+ return m.observe(e, {
90
99
  childList: !0,
91
100
  subtree: !0
92
- }), d(), {
101
+ }), f(), {
93
102
  update(e) {
94
103
  let t = r.disabled;
95
- r = e, t !== r.disabled && d();
104
+ r = e, t !== r.disabled && f();
96
105
  },
97
106
  destroy() {
98
- e.removeEventListener("pointerdown", u, { capture: !0 }), e.removeEventListener("keydown", l, { capture: !0 }), window.removeEventListener("pointermove", s), window.removeEventListener("pointerup", c), p.disconnect(), f();
107
+ e.removeEventListener("pointerdown", d, { capture: !0 }), e.removeEventListener("keydown", u, { capture: !0 }), window.removeEventListener("pointermove", c), window.removeEventListener("pointerup", l), m.disconnect(), p();
99
108
  }
100
109
  };
101
110
  }
@@ -0,0 +1,241 @@
1
+ //#region src/server-block-cache.ts
2
+ var e = Symbol.for("svgrid.rowPlaceholder"), t = Object.freeze({ [e]: "loading" }), n = Object.freeze({ [e]: "failed" });
3
+ function r(t) {
4
+ if (typeof t != "object" || !t) return null;
5
+ let n = t[e];
6
+ return n === "loading" || n === "failed" ? n : null;
7
+ }
8
+ function i(t, n) {
9
+ return Object.freeze({
10
+ ...n,
11
+ [e]: t
12
+ });
13
+ }
14
+ var a = (e) => {
15
+ Promise.resolve().then(e);
16
+ };
17
+ function o(e) {
18
+ let r = Math.max(1, e.blockSize ?? 100), i = e.maxBlocksInCache ?? Infinity, o = Math.max(1, e.maxConcurrentRequests ?? 2), s = Math.max(0, e.blockLoadDebounceMs ?? 0), c = Math.max(0, e.initialRowCount ?? 1), l = Math.max(0, e.overflowRows ?? 1), u = e.schedule ?? a, d = /* @__PURE__ */ new Map(), f = [], p = 0, m = 0, h = null, g = !1, _ = !1, v = 0, y = 0, b = null, x = !1, S = null, C = (e) => Math.floor(e / r), w = (e) => e * r;
19
+ function T() {
20
+ if (g && h != null) return h;
21
+ let e = 0, t = !1;
22
+ for (let e of d.values()) e.status !== "loading" && (t = !0);
23
+ for (let [n, i] of d) {
24
+ let a = i.status === "loaded" ? w(n) + i.rows.length : i.status === "failed" ? n === 0 ? 0 : w(n) + r : t ? w(n) + r : 0;
25
+ a > e && (e = a);
26
+ }
27
+ return t ? Math.max(c, e + l) : c;
28
+ }
29
+ function E() {
30
+ let e = [];
31
+ for (let [t, n] of d) n.status === "failed" && e.push(t);
32
+ return {
33
+ rowCount: g ? h : null,
34
+ lastRowKnown: g,
35
+ loading: p > 0,
36
+ failedBlocks: e.sort((e, t) => e - t)
37
+ };
38
+ }
39
+ function D() {
40
+ S = null, !(_ || x) && (x = !0, u(() => {
41
+ x = !1, !_ && e.onChange(E());
42
+ }));
43
+ }
44
+ function O(e) {
45
+ _ || d.get(e) || f.includes(e) || (f.push(e), k());
46
+ }
47
+ function k() {
48
+ for (; !_ && p < o && f.length > 0;) {
49
+ let e = f.shift();
50
+ d.has(e) || A(e);
51
+ }
52
+ }
53
+ async function A(t) {
54
+ let n = new AbortController(), i = {
55
+ status: "loading",
56
+ rows: [],
57
+ lastTouched: m += 1,
58
+ controller: n
59
+ };
60
+ d.set(t, i), p += 1, D();
61
+ let a = w(t), o = a + r;
62
+ try {
63
+ let r = await e.fetch(a, o, n.signal);
64
+ if (_ || n.signal.aborted || d.get(t) !== i) return;
65
+ i.rows = [...r.rows], i.status = "loaded", i.controller = null, j(t, i.rows.length, r.rowCount), M();
66
+ } catch {
67
+ if (_ || n.signal.aborted || d.get(t) !== i) return;
68
+ i.status = "failed", i.rows = [], i.controller = null;
69
+ } finally {
70
+ !_ && !n.signal.aborted && (--p, D(), k());
71
+ }
72
+ }
73
+ function j(e, t, n) {
74
+ if (typeof n == "number" && n >= 0) {
75
+ h = n, g = !0;
76
+ return;
77
+ }
78
+ t < r && (h = w(e) + t, g = !0);
79
+ }
80
+ function M() {
81
+ if (!Number.isFinite(i)) return;
82
+ let e = C(v), t = C(Math.max(v, y)), n = [...d.entries()].filter(([n, r]) => r.status === "loaded" && (n < e || n > t)).sort((e, t) => e[1].lastTouched - t[1].lastTouched), r = 0;
83
+ for (let e of d.values()) e.status === "loaded" && (r += 1);
84
+ for (let [e] of n) {
85
+ if (r <= i) break;
86
+ d.delete(e), --r;
87
+ }
88
+ }
89
+ function N() {
90
+ if (_) return;
91
+ let e = C(v), t = C(Math.max(v, y));
92
+ for (let n = e; n <= t; n += 1) {
93
+ let e = d.get(n);
94
+ e ? e.lastTouched = m += 1 : O(n);
95
+ }
96
+ }
97
+ function P() {
98
+ for (let e of d.values()) e.controller?.abort();
99
+ p = 0, f.length = 0;
100
+ }
101
+ return {
102
+ setViewport(e, t) {
103
+ if (!_) {
104
+ if (v = Math.max(0, e), y = Math.max(v, t), s === 0) {
105
+ N();
106
+ return;
107
+ }
108
+ b && clearTimeout(b), b = setTimeout(() => {
109
+ b = null, N();
110
+ }, s);
111
+ }
112
+ },
113
+ rows() {
114
+ if (S) return S;
115
+ let e = T(), i = Array(e);
116
+ i.fill(t);
117
+ for (let [t, a] of d) {
118
+ let o = w(t);
119
+ if (!(o >= e)) {
120
+ if (a.status === "failed") {
121
+ let t = Math.min(o + r, e);
122
+ for (let e = o; e < t; e += 1) i[e] = n;
123
+ continue;
124
+ }
125
+ for (let t = 0; t < a.rows.length && o + t < e; t += 1) i[o + t] = a.rows[t];
126
+ }
127
+ }
128
+ return S = i, i;
129
+ },
130
+ getRow(e) {
131
+ let r = d.get(C(e));
132
+ return r ? r.status === "failed" ? n : r.rows[e - w(C(e))] ?? t : t;
133
+ },
134
+ rowCount: () => g ? h : null,
135
+ lastRowKnown: () => g,
136
+ retryFailed() {
137
+ let e = !1;
138
+ for (let [t, n] of [...d]) n.status === "failed" && (d.delete(t), O(t), e = !0);
139
+ e && D();
140
+ },
141
+ retryFailedAt(e) {
142
+ let t = C(Math.max(0, e));
143
+ d.get(t)?.status === "failed" && (d.delete(t), O(t), D());
144
+ },
145
+ refresh() {
146
+ for (let [e, t] of [...d]) t.controller?.abort(), d.delete(e), O(e);
147
+ D();
148
+ },
149
+ purge() {
150
+ P(), d.clear(), h = null, g = !1, S = null, N(), D();
151
+ },
152
+ setRowCount(e, t = e != null) {
153
+ h = e, g = t && e != null, D();
154
+ },
155
+ applyRows(e, t, n) {
156
+ if (e % r !== 0) throw Error(`createBlockCache.applyRows: startRow ${e} is not a multiple of blockSize ${r}`);
157
+ let i = C(e), a = Math.ceil(t.length / r);
158
+ for (let e = 0; e < a; e += 1) {
159
+ let n = i + e;
160
+ d.get(n)?.controller?.abort(), d.set(n, {
161
+ status: "loaded",
162
+ rows: t.slice(e * r, (e + 1) * r),
163
+ lastTouched: m += 1,
164
+ controller: null
165
+ });
166
+ }
167
+ let o = d.get(i + a - 1);
168
+ o ? j(i + a - 1, o.rows.length, n) : typeof n == "number" && n >= 0 && (h = n, g = !0), D();
169
+ },
170
+ patch(e, t) {
171
+ let n = d.get(C(e));
172
+ if (!n || n.status !== "loaded") return !1;
173
+ let r = e - w(C(e));
174
+ return r < 0 || r >= n.rows.length ? !1 : (n.rows[r] = t, D(), !0);
175
+ },
176
+ findIndex(e) {
177
+ for (let [t, n] of d) {
178
+ if (n.status !== "loaded") continue;
179
+ let r = w(t);
180
+ for (let t = 0; t < n.rows.length; t += 1) if (e(n.rows[t], r + t)) return r + t;
181
+ }
182
+ return -1;
183
+ },
184
+ insert(e, t) {
185
+ if (t.length === 0) return !1;
186
+ let n = Math.max(0, Math.min(e, T())), r = F(n);
187
+ return r ? (r.flat.splice(n - w(r.startBlock), 0, ...t), I(r.startBlock, r.flat)) : L(C(n)), g && h != null && (h += t.length), D(), r != null;
188
+ },
189
+ remove(e, t = 1) {
190
+ if (t <= 0) return 0;
191
+ let n = F(e);
192
+ if (!n) return 0;
193
+ let r = n.flat.splice(e - w(n.startBlock), t).length;
194
+ return I(n.startBlock, n.flat), g && h != null && (h = Math.max(0, h - r)), D(), r;
195
+ },
196
+ getCacheState() {
197
+ return [...d.entries()].map(([e, t]) => ({
198
+ blockIndex: e,
199
+ startRow: w(e),
200
+ endRow: w(e) + r,
201
+ status: t.status,
202
+ lastTouched: t.lastTouched
203
+ })).sort((e, t) => e.blockIndex - t.blockIndex);
204
+ },
205
+ dispose() {
206
+ _ = !0, b && clearTimeout(b), b = null, P(), d.clear();
207
+ }
208
+ };
209
+ function F(e) {
210
+ let t = C(e);
211
+ if (d.get(t)?.status !== "loaded") return null;
212
+ let n = t;
213
+ for (; d.get(n - 1)?.status === "loaded";) --n;
214
+ let i = [];
215
+ for (let e = n;; e += 1) {
216
+ let t = d.get(e);
217
+ if (!t || t.status !== "loaded" || (i.push(...t.rows), t.rows.length < r)) break;
218
+ }
219
+ return {
220
+ startBlock: n,
221
+ flat: i
222
+ };
223
+ }
224
+ function I(e, t) {
225
+ let n = Math.ceil(t.length / r);
226
+ L(e);
227
+ for (let i = 0; i < n; i += 1) d.set(e + i, {
228
+ status: "loaded",
229
+ rows: t.slice(i * r, (i + 1) * r),
230
+ lastTouched: m += 1,
231
+ controller: null
232
+ });
233
+ S = null;
234
+ }
235
+ function L(e) {
236
+ for (let [t, n] of [...d]) t < e || (n.controller?.abort(), d.delete(t));
237
+ S = null;
238
+ }
239
+ }
240
+ //#endregion
241
+ export { i as n, r, o as t };