@svgrid/grid-wc 2.6.1 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/{GridMenus-Boz00ms0.js → GridMenus-DE0zNY_3.js} +265 -243
  2. package/dist/{SvDateTimePicker-Ch1Vug8H.js → SvDateTimePicker-BpeEupA2.js} +81 -81
  3. package/dist/SvGrid.helpers-BZPDBcza.js +125 -0
  4. package/dist/SvGridCellEditor-_rqEaig7.js +531 -0
  5. package/dist/{SvGridChart-BztTavvw.js → SvGridChart-yK5Zv85y.js} +158 -158
  6. package/dist/{SvGridChartPanel-Ca5HWIZ3.js → SvGridChartPanel-B38_VjXM.js} +52 -52
  7. package/dist/{SvGridChartView-AcWj_tcs.js → SvGridChartView-ScXTF6t-.js} +4 -4
  8. package/dist/{SvGridDropdown-BXqvR1cs.js → SvGridDropdown-DnAESFDu.js} +29 -29
  9. package/dist/angular/fesm2022/svgrid-grid-wc-angular.mjs +358 -0
  10. package/dist/angular/fesm2022/svgrid-grid-wc-angular.mjs.map +1 -0
  11. package/dist/angular/package.json +25 -0
  12. package/dist/angular/types/svgrid-grid-wc-angular.d.ts +161 -0
  13. package/dist/{client-DoXxrq8q.js → client-DjwUji8D.js} +1 -1
  14. package/dist/column-resize-DvCRUrN3.js +101 -0
  15. package/dist/{dismissable-xj_k_fnZ.js → dismissable-Nx79OIVg.js} +36 -36
  16. package/dist/editor-registry-DxGKqcvx.js +24 -0
  17. package/dist/react/index.d.ts +313 -0
  18. package/dist/react/index.js +72 -0
  19. package/dist/row-drag-touch-Ddaa-QeB.js +91 -0
  20. package/dist/row-resize-D-8s3cqT.js +94 -0
  21. package/dist/shadow/GridMenus-DE0zNY_3.js +1022 -0
  22. package/dist/shadow/SvDateTimePicker-BpeEupA2.js +1885 -0
  23. package/dist/shadow/SvGrid.helpers-BZPDBcza.js +125 -0
  24. package/dist/shadow/SvGridCellEditor-_rqEaig7.js +531 -0
  25. package/dist/shadow/SvGridChart-yK5Zv85y.js +1199 -0
  26. package/dist/shadow/SvGridChartPanel-B38_VjXM.js +584 -0
  27. package/dist/shadow/SvGridChartView-ScXTF6t-.js +50 -0
  28. package/dist/shadow/SvGridDropdown-DnAESFDu.js +256 -0
  29. package/dist/shadow/cell-formatting-C0OsDmi_.js +86 -0
  30. package/dist/shadow/chart-uvs3sFJA.js +1220 -0
  31. package/dist/shadow/client-DjwUji8D.js +2960 -0
  32. package/dist/shadow/column-resize-DvCRUrN3.js +101 -0
  33. package/dist/shadow/dismissable-Nx79OIVg.js +186 -0
  34. package/dist/shadow/editor-contract-peBDxir_.js +22 -0
  35. package/dist/shadow/editor-registry-DxGKqcvx.js +24 -0
  36. package/dist/shadow/export-format-C8kZGZfz.js +161 -0
  37. package/dist/shadow/popover-WsGlvtQv.js +69 -0
  38. package/dist/shadow/row-drag-touch-Ddaa-QeB.js +91 -0
  39. package/dist/shadow/row-resize-D-8s3cqT.js +94 -0
  40. package/dist/shadow/sv-grid-shadow-element.d.ts +246 -0
  41. package/dist/shadow/sv-grid-shadow-element.js +10067 -0
  42. package/dist/{svelte-virtualizer.svelte-ZL3wxPzD.js → shadow/svelte-virtualizer.svelte-DZ9UcyfT.js} +79 -166
  43. package/dist/shadow/validate-CgmAtX1A.js +75 -0
  44. package/dist/sv-grid-element.d.ts +246 -0
  45. package/dist/sv-grid-element.js +3927 -3202
  46. package/dist/svelte-virtualizer.svelte-DZ9UcyfT.js +527 -0
  47. package/dist/validate-CgmAtX1A.js +75 -0
  48. package/dist/vue/index.d.ts +147 -0
  49. package/dist/vue/index.js +72 -0
  50. package/package.json +85 -6
@@ -1,4 +1,4 @@
1
- import { R as e, X as t, Z as n } from "./client-DoXxrq8q.js";
1
+ import { R as e, X as t, Z as n } from "./client-DjwUji8D.js";
2
2
  //#region ../grid/dist/sv-grid-scrollbar.js
3
3
  var r = 16, i = 280, a = 50, o = "http://www.w3.org/2000/svg";
4
4
  function s() {
@@ -220,132 +220,29 @@ var c = `
220
220
  };
221
221
  typeof window < "u" && !customElements.get("sv-grid-scrollbar") && customElements.define("sv-grid-scrollbar", u);
222
222
  //#endregion
223
- //#region ../grid/dist/SvGrid.helpers.js
224
- function d(e) {
225
- let t = "";
226
- return e.color && (t += `color:${e.color};`), e.fontWeight != null && (t += `font-weight:${e.fontWeight};`), t;
227
- }
228
- function f(e) {
229
- return Number.isInteger(e) ? e.toLocaleString() : e.toLocaleString(void 0, { maximumFractionDigits: 2 });
230
- }
231
- function p(e, t) {
232
- return `${e}:${t}`;
233
- }
234
- function m(e) {
235
- if (!e) return "";
236
- if (typeof e == "string") return e;
237
- if (Array.isArray(e)) return e.filter(Boolean).join(" ");
238
- if (typeof e == "object") {
239
- let t = [];
240
- for (let [n, r] of Object.entries(e)) r && t.push(n);
241
- return t.join(" ");
242
- }
243
- return "";
244
- }
245
- function h(e) {
246
- if (e == null || e === "") return "";
247
- if (typeof e == "string" && /^\d{4}-\d{2}-\d{2}$/.test(e)) return e;
248
- let t = e instanceof Date ? e : new Date(e);
249
- return Number.isNaN(t.getTime()) ? "" : t.toISOString().slice(0, 10);
250
- }
251
- function g(e) {
252
- if (e == null || e === "") return "";
253
- if (typeof e == "string" && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/.test(e)) return e;
254
- let t = e instanceof Date ? e : new Date(e);
255
- return Number.isNaN(t.getTime()) ? "" : t.toISOString().slice(0, 16);
256
- }
257
- function _(e) {
258
- return String(e).replace(/-native$/, "");
259
- }
260
- function v(e) {
261
- if (e instanceof Date) return e;
262
- if (typeof e == "string") {
263
- let t = e.match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?/);
264
- if (t) {
265
- let e = /* @__PURE__ */ new Date();
266
- return e.setHours(Math.min(23, +t[1]), Math.min(59, +t[2]), t[3] ? +t[3] : 0, 0), e;
267
- }
268
- }
269
- return null;
270
- }
271
- function y(e) {
272
- return e ? `${String(e.getHours()).padStart(2, "0")}:${String(e.getMinutes()).padStart(2, "0")}` : null;
273
- }
274
- function b(e, t) {
275
- let n = _(e);
276
- return n === "date" ? h(t) : n === "datetime" ? g(t) : String(t ?? "");
277
- }
278
- function x(e) {
279
- let t = _(e);
280
- return t === "number" ? "number" : t === "date" ? "date" : t === "datetime" ? "datetime-local" : t === "time" ? "time" : t === "password" ? "password" : t === "color" ? "color" : "text";
281
- }
282
- function S(e) {
283
- return e == null || e === "" ? [] : Array.isArray(e) ? e.filter((e) => e != null && e !== "") : [e];
284
- }
285
- function C(e, t) {
286
- let n = e.find((e) => e.value === t || String(e.value) === String(t));
287
- return n ? n.label : String(t ?? "");
288
- }
289
- function w(e, t) {
290
- return e.find((e) => e.value === t || String(e.value) === String(t))?.color;
291
- }
292
- function T(e) {
293
- return e ? `background: color-mix(in srgb, ${e} 22%, transparent);border-color: color-mix(in srgb, ${e} 45%, transparent);color: color-mix(in srgb, ${e} 80%, var(--sg-fg, #0f172a));` : "";
294
- }
295
- function E(e) {
296
- let t = _(e);
297
- return t === "number" ? "sv-grid-cell-editor sv-grid-cell-editor-number" : t === "date" ? "sv-grid-cell-editor sv-grid-cell-editor-date" : t === "datetime" ? "sv-grid-cell-editor sv-grid-cell-editor-datetime" : t === "color" ? "sv-grid-cell-editor sv-grid-cell-editor-color" : "sv-grid-cell-editor";
298
- }
299
- function D(e) {
300
- if (e == null || e === "") return null;
301
- let t = e instanceof Date ? e : new Date(e);
302
- return Number.isNaN(t.getTime()) ? null : t;
303
- }
304
- function O(e, t) {
305
- return Math.max(8, Math.min(e, window.innerWidth - t - 8));
306
- }
307
- function k(e) {
308
- return typeof CSS < "u" && CSS.escape ? CSS.escape(e) : e.replace(/"/g, "\\\"");
309
- }
310
- function A(e, t) {
311
- if (e == null || e === "") return NaN;
312
- if (t) {
313
- let t = (e instanceof Date ? e : new Date(String(e))).getTime();
314
- return Number.isFinite(t) ? t : NaN;
315
- }
316
- let n = typeof e == "number" ? e : Number(e);
317
- return Number.isFinite(n) ? n : NaN;
318
- }
319
- function j(e) {
320
- let t = Math.abs(e), n = t >= 1e3 ? 0 : t >= 100 ? 1 : t >= 1 ? 2 : 4;
321
- return e.toLocaleString(void 0, { maximumFractionDigits: n });
322
- }
323
- function M(e) {
324
- return new Date(e).toLocaleDateString(void 0, {
325
- year: "numeric",
326
- month: "short",
327
- day: "numeric"
328
- });
329
- }
330
- //#endregion
331
223
  //#region ../grid/dist/filtering/excel-filters.js
332
- var N = /[̀-ͯ]/g;
333
- function P(e, t) {
224
+ var d = /[̀-ͯ]/g;
225
+ function f(e, t) {
334
226
  if (!e) return "";
335
- let n = e.normalize("NFD").replace(N, "");
227
+ if (p(e)) return t ? e.toLocaleLowerCase(t) : e.toLowerCase();
228
+ let n = e.normalize("NFD").replace(d, "");
336
229
  return t ? n.toLocaleLowerCase(t) : n.toLowerCase();
337
230
  }
338
- function F(e) {
339
- let { tokens: t, trailing: n } = R(e);
231
+ function p(e) {
232
+ for (let t = 0; t < e.length; t++) if (e.charCodeAt(t) > 127) return !1;
233
+ return !0;
234
+ }
235
+ function m(e) {
236
+ let { tokens: t, trailing: n } = _(e);
340
237
  return n && t.push(n), t;
341
238
  }
342
- function I(e) {
239
+ function h(e) {
343
240
  return e.map((e) => e.trim()).filter((e) => e.length > 0).map((e) => /["\n,]/.test(e) ? `"${e.replace(/"/g, "\"\"")}"` : e).join(", ");
344
241
  }
345
- function L(e) {
346
- return R(e).trailing;
242
+ function g(e) {
243
+ return _(e).trailing;
347
244
  }
348
- function R(e) {
245
+ function _(e) {
349
246
  let t = String(e ?? ""), n = [], r = "", i = !1, a = !1, o = !1, s = () => {
350
247
  let e = a ? r : r.trim();
351
248
  return r = "", a = !1, o = !1, e;
@@ -380,58 +277,69 @@ function R(e) {
380
277
  trailing: s()
381
278
  };
382
279
  }
383
- function z(e, t, n) {
384
- let r = String(e ?? ""), i = P(r, n?.locale), a = P(String(t.value ?? ""), n?.locale);
385
- switch (t.operator) {
386
- case "contains": return i.includes(a);
387
- case "notContains": return a === "" || !i.includes(a);
388
- case "equals": return i === a;
389
- case "notEquals": return a === "" || i !== a;
390
- case "startsWith": return i.startsWith(a);
391
- case "endsWith": return i.endsWith(a);
280
+ function v(e, t) {
281
+ let n = t?.locale, r = (e) => f(String(e ?? ""), n), i = r(e.value);
282
+ switch (e.operator) {
283
+ case "contains": return (e) => r(e).includes(i);
284
+ case "notContains": return i === "" ? () => !0 : (e) => !r(e).includes(i);
285
+ case "equals": return (e) => r(e) === i;
286
+ case "notEquals": return i === "" ? () => !0 : (e) => r(e) !== i;
287
+ case "startsWith": return (e) => r(e).startsWith(i);
288
+ case "endsWith": return (e) => r(e).endsWith(i);
392
289
  case "regex": {
393
- let e = String(t.value ?? "");
394
- if (!e) return !0;
290
+ let t = String(e.value ?? "");
291
+ if (!t) return () => !0;
292
+ let n;
395
293
  try {
396
- return new RegExp(e, "i").test(r);
294
+ n = new RegExp(t, "i");
397
295
  } catch {
398
- return !1;
296
+ return () => !1;
399
297
  }
298
+ return (e) => n.test(String(e ?? ""));
400
299
  }
401
300
  case "in":
402
301
  case "notIn": {
403
- let e = F(t.value);
404
- if (e.length === 0) return !0;
405
- let r = e.some((e) => P(e, n?.locale) === i);
406
- return t.operator === "in" ? r : !r;
302
+ let t = m(e.value);
303
+ if (t.length === 0) return () => !0;
304
+ let i = new Set(t.map((e) => f(e, n)));
305
+ return e.operator === "in" ? (e) => i.has(r(e)) : (e) => !i.has(r(e));
407
306
  }
408
307
  case "greaterThan": {
409
- let n = Number(e), r = Number(t.value);
410
- return Number.isFinite(n) && Number.isFinite(r) ? n > r : String(e ?? "") > String(t.value ?? "");
308
+ let t = Number(e.value), n = Number.isFinite(t), r = String(e.value ?? "");
309
+ return (e) => {
310
+ let i = Number(e);
311
+ return n && Number.isFinite(i) ? i > t : String(e ?? "") > r;
312
+ };
411
313
  }
412
314
  case "lessThan": {
413
- let n = Number(e), r = Number(t.value);
414
- return Number.isFinite(n) && Number.isFinite(r) ? n < r : String(e ?? "") < String(t.value ?? "");
315
+ let t = Number(e.value), n = Number.isFinite(t), r = String(e.value ?? "");
316
+ return (e) => {
317
+ let i = Number(e);
318
+ return n && Number.isFinite(i) ? i < t : String(e ?? "") < r;
319
+ };
415
320
  }
416
321
  case "between": {
417
- let n = t.value == null ? 0 : Number(t.value), r = t.valueTo == null ? 0 : Number(t.valueTo), i = Number(e ?? 0);
418
- if (Number.isFinite(i) && Number.isFinite(n) && Number.isFinite(r)) return i >= n && i <= r;
419
- let a = String(e ?? ""), o = String(t.value ?? ""), s = String(t.valueTo ?? "");
420
- return a >= o && a <= s;
322
+ let t = e.value == null ? 0 : Number(e.value), n = e.valueTo == null ? 0 : Number(e.valueTo), r = Number.isFinite(t) && Number.isFinite(n), i = String(e.value ?? ""), a = String(e.valueTo ?? "");
323
+ return (e) => {
324
+ let o = Number(e ?? 0);
325
+ if (r && Number.isFinite(o)) return o >= t && o <= n;
326
+ let s = String(e ?? "");
327
+ return s >= i && s <= a;
328
+ };
421
329
  }
422
- case "isBlank": return r.trim().length === 0;
423
- case "isNotBlank": return r.trim().length > 0;
330
+ case "isBlank": return (e) => String(e ?? "").trim().length === 0;
331
+ case "isNotBlank": return (e) => String(e ?? "").trim().length > 0;
424
332
  }
425
333
  }
426
334
  //#endregion
427
335
  //#region ../grid/dist/virtualization/virtualizer.js
428
- function B(e, t, n) {
336
+ function y(e, t, n) {
429
337
  return Math.min(Math.max(e, t), n);
430
338
  }
431
- function V(e, t) {
339
+ function b(e, t) {
432
340
  return e.count === t.count && e.estimateSize === t.estimateSize && (e.overscan ?? 6) === (t.overscan ?? 6) && e.viewportHeight === t.viewportHeight && (e.scrollOffset ?? 0) === (t.scrollOffset ?? 0);
433
341
  }
434
- function H(e, t) {
342
+ function x(e, t) {
435
343
  if (e.totalSize !== t.totalSize || e.startIndex !== t.startIndex || e.endIndex !== t.endIndex || e.viewportHeight !== t.viewportHeight || e.items.length !== t.items.length) return !1;
436
344
  for (let n = 0; n < e.items.length; n += 1) {
437
345
  let r = e.items[n], i = t.items[n];
@@ -439,7 +347,7 @@ function H(e, t) {
439
347
  }
440
348
  return !0;
441
349
  }
442
- function U(e, t, n) {
350
+ function S(e, t, n) {
443
351
  let r = [];
444
352
  for (let i = e; i <= t; i += 1) {
445
353
  let t = i * n;
@@ -453,7 +361,12 @@ function U(e, t, n) {
453
361
  }
454
362
  return r;
455
363
  }
456
- function W(e, t, n) {
364
+ function C(e, t, n, r) {
365
+ if (e <= 0) return [];
366
+ let i = Math.max(t, 1), a = Math.ceil(Math.max(n, 0) / i), o = Math.min(a + Math.max(r, 0), e - 1);
367
+ return S(0, Math.max(o, 0), i);
368
+ }
369
+ function w(e, t, n) {
457
370
  let r = [];
458
371
  for (let i = e; i <= t; i += 1) {
459
372
  let t = n[i] ?? 0, a = n[i + 1] ?? t;
@@ -467,10 +380,10 @@ function W(e, t, n) {
467
380
  }
468
381
  return r;
469
382
  }
470
- function G(e, t) {
383
+ function T(e, t) {
471
384
  let n = Math.max(e.count, 0), r = Math.max(e.overscan ?? 6, 0), i = Math.max(e.viewportHeight, 0);
472
385
  if (typeof e.estimateSize == "function" && t) {
473
- let a = t[n] ?? 0, o = Math.max(a - i, 0), s = B(e.scrollOffset ?? 0, 0, o), c = 0, l = n;
386
+ let a = t[n] ?? 0, o = Math.max(a - i, 0), s = y(e.scrollOffset ?? 0, 0, o), c = 0, l = n;
474
387
  for (; c < l;) {
475
388
  let e = c + l >>> 1;
476
389
  (t[e + 1] ?? 0) <= s ? c = e + 1 : l = e;
@@ -480,9 +393,9 @@ function G(e, t) {
480
393
  let e = c + l >>> 1;
481
394
  (t[e] ?? 0) < d ? c = e + 1 : l = e;
482
395
  }
483
- let f = Math.max(c - 1, u), p = n === 0 ? 0 : B(u - r, 0, n - 1), m = n === 0 ? -1 : B(f + r, 0, n - 1);
396
+ let f = Math.max(c - 1, u), p = n === 0 ? 0 : y(u - r, 0, n - 1), m = n === 0 ? -1 : y(f + r, 0, n - 1);
484
397
  return {
485
- items: m >= p ? W(p, m, t) : [],
398
+ items: m >= p ? w(p, m, t) : [],
486
399
  totalSize: a,
487
400
  startIndex: p,
488
401
  endIndex: m,
@@ -490,9 +403,9 @@ function G(e, t) {
490
403
  viewportHeight: i
491
404
  };
492
405
  }
493
- let a = Math.max(typeof e.estimateSize == "number" ? e.estimateSize : 1, 1), o = n * a, s = Math.max(o - i, 0), c = B(e.scrollOffset ?? 0, 0, s), l = Math.floor(c / a), u = Math.ceil(i / a), d = Math.min(l + u, Math.max(n - 1, 0)), f = n === 0 ? 0 : B(l - r, 0, n - 1), p = n === 0 ? -1 : B(d + r, 0, n - 1);
406
+ let a = Math.max(typeof e.estimateSize == "number" ? e.estimateSize : 1, 1), o = n * a, s = Math.max(o - i, 0), c = y(e.scrollOffset ?? 0, 0, s), l = Math.floor(c / a), u = Math.ceil(i / a), d = Math.min(l + u, Math.max(n - 1, 0)), f = n === 0 ? 0 : y(l - r, 0, n - 1), p = n === 0 ? -1 : y(d + r, 0, n - 1);
494
407
  return {
495
- items: p >= f ? U(f, p, a) : [],
408
+ items: p >= f ? S(f, p, a) : [],
496
409
  totalSize: o,
497
410
  startIndex: f,
498
411
  endIndex: p,
@@ -500,7 +413,7 @@ function G(e, t) {
500
413
  viewportHeight: i
501
414
  };
502
415
  }
503
- function K(e) {
416
+ function E(e) {
504
417
  let t = e, n = null;
505
418
  function r() {
506
419
  if (typeof t.estimateSize != "function") return null;
@@ -515,13 +428,13 @@ function K(e) {
515
428
  offsets: i
516
429
  }, i;
517
430
  }
518
- let i = G(t, r()), a = /* @__PURE__ */ new Set();
431
+ let i = T(t, r()), a = /* @__PURE__ */ new Set();
519
432
  function o() {
520
433
  a.forEach((e) => e());
521
434
  }
522
435
  function s() {
523
- let e = G(t, r());
524
- H(i, e) || (i = e, o());
436
+ let e = T(t, r());
437
+ x(i, e) || (i = e, o());
525
438
  }
526
439
  return {
527
440
  setOptions(e) {
@@ -529,7 +442,7 @@ function K(e) {
529
442
  ...t,
530
443
  ...e
531
444
  };
532
- V(t, n) || (t = n, s());
445
+ b(t, n) || (t = n, s());
533
446
  },
534
447
  setScrollOffset(e) {
535
448
  (t.scrollOffset ?? 0) !== e && (t = {
@@ -544,7 +457,7 @@ function K(e) {
544
457
  }, s());
545
458
  },
546
459
  scrollToIndex(e) {
547
- let n = B(e, 0, Math.max(t.count - 1, 0)), a = i.totalSize, o;
460
+ let n = y(e, 0, Math.max(t.count - 1, 0)), a = i.totalSize, o;
548
461
  if (typeof t.estimateSize == "function") {
549
462
  let e = r();
550
463
  if (e) o = e[n] ?? 0;
@@ -554,7 +467,7 @@ function K(e) {
554
467
  o = e;
555
468
  }
556
469
  } else o = n * Math.max(t.estimateSize, 1);
557
- let c = Math.max(a - t.viewportHeight, 0), l = B(o, 0, c);
470
+ let c = Math.max(a - t.viewportHeight, 0), l = y(o, 0, c);
558
471
  (t.scrollOffset ?? 0) !== l && (t = {
559
472
  ...t,
560
473
  scrollOffset: l
@@ -591,8 +504,8 @@ function K(e) {
591
504
  }
592
505
  //#endregion
593
506
  //#region ../grid/dist/virtualization/svelte-virtualizer.svelte.js
594
- function q(r) {
595
- let i = K(r), a = n(0);
507
+ function D(r) {
508
+ let i = E(r), a = n(0);
596
509
  return i.subscribe(() => {
597
510
  t(a, e(a) + 1);
598
511
  }), {
@@ -611,4 +524,4 @@ function q(r) {
611
524
  };
612
525
  }
613
526
  //#endregion
614
- export { A as C, S as E, C as S, v as T, p as _, P as a, x as b, D as c, T as d, k as f, j as g, M as h, I as i, d as l, f as m, K as n, F as o, y as p, z as r, L as s, q as t, O as u, b as v, m as w, w as x, E as y };
527
+ export { h as a, g as c, v as i, C as n, f as o, E as r, m as s, D as t };
@@ -0,0 +1,75 @@
1
+ //#region ../grid/dist/validate.js
2
+ var e = "https://svgrid.com/docs/getting-started/3-data-and-columns/";
3
+ function t(e, n = []) {
4
+ for (let r of e) r.columns?.length ? t(r.columns, n) : n.push(r);
5
+ return n;
6
+ }
7
+ function n(n) {
8
+ let i = [], a = t(n.columns ?? []), o = (n.data ?? []).slice(0, 10);
9
+ if (o.length) {
10
+ let t = /* @__PURE__ */ new Set();
11
+ for (let e of o) if (e && typeof e == "object") for (let n of Object.keys(e)) t.add(n);
12
+ for (let n of a) {
13
+ let a = n.field;
14
+ if (!a || n.fieldFn || t.has(a)) continue;
15
+ let o = r(a, [...t]);
16
+ i.push(`[svgrid] Column field "${a}" does not exist on your row data, so that column renders empty.${o ? ` Did you mean "${o}"?` : ""} Available keys: ${[...t].slice(0, 12).join(", ")}. See ${e}`);
17
+ }
18
+ }
19
+ let s = /* @__PURE__ */ new Map();
20
+ for (let e of a) {
21
+ let t = e.id ?? e.field;
22
+ t && s.set(t, (s.get(t) ?? 0) + 1);
23
+ }
24
+ for (let [t, n] of s) n > 1 && i.push(`[svgrid] ${n} columns share the id "${t}". Column state (sorting, filtering, pinning, width) is keyed by id, so they will act as one. Give each an explicit \`id\`. See ${e}`);
25
+ let c = n.pageable === void 0 && n.showPagination === void 0;
26
+ n.pageSize !== void 0 && c && i.push("[svgrid] `pageSize` is set but pagination was never turned on, so it has no effect and every row renders. Add `pageable` to switch the pager on."), !(n.sortable === !0 || n.features?.rowSortingFeature) && a.some((e) => e.sortable === !0) && i.push("[svgrid] A column sets `sortable: true`, but sorting is not enabled on the grid, so its header does nothing. Add `sortable` to <SvGrid> (it registers the sorting feature for you).");
27
+ let l = /* @__PURE__ */ new Set();
28
+ for (let e of a) {
29
+ let t = e.id ?? e.field;
30
+ t && l.add(t);
31
+ }
32
+ for (let e of n.groupBy ?? []) {
33
+ if (l.has(e)) continue;
34
+ let t = r(e, [...l]);
35
+ i.push(`[svgrid] \`groupBy\` refers to column "${e}", which does not exist, so that grouping level is ignored.${t ? ` Did you mean "${t}"?` : ""} Column ids: ${[...l].slice(0, 12).join(", ")}`);
36
+ }
37
+ let u = n.treeData?.column;
38
+ if (u && !l.has(u) && i.push(`[svgrid] \`treeData.column\` refers to column "${u}", which does not exist, so the expander falls back to the first visible column.`), o.length && n.treeData) {
39
+ let e = /* @__PURE__ */ new Set();
40
+ for (let t of o) if (t && typeof t == "object") for (let n of Object.keys(t)) e.add(n);
41
+ let t = n.treeData.parentField;
42
+ if (t && !e.has(t)) {
43
+ let n = r(t, [...e]);
44
+ i.push(`[svgrid] \`treeData.parentField\` is "${t}", which is not on your row data, so every row becomes a root and no hierarchy appears.${n ? ` Did you mean "${n}"?` : ""}`);
45
+ }
46
+ let a = n.treeData.idField;
47
+ a && !e.has(a) && i.push(`[svgrid] \`treeData.idField\` is "${a}", which is not on your row data, so parent lookups cannot match and the tree stays flat.`);
48
+ }
49
+ return (n.initialColumnPinning?.left?.length ?? 0) + (n.initialColumnPinning?.right?.length ?? 0) > 0 && n.columnVirtualization !== !1 && i.push("[svgrid] `initialColumnPinning` is set while column virtualization is on (its default), so the pinned columns will not stick - the virtualizer recycles column nodes. Add `columnVirtualization={false}`."), n.externalPagination === !0 && n.rowCount === void 0 && i.push("[svgrid] `externalPagination` is on but `rowCount` is not set, so the pager cannot know how many pages exist. Pass the server total as `rowCount`."), n.externalSort === !0 && !n.onSortingChange && i.push("[svgrid] `externalSort` is on but there is no `onSortingChange` handler, so clicking a header changes nothing - the grid stopped sorting and nobody is listening. Add `onSortingChange` and re-fetch in your handler."), n.externalFilter === !0 && !n.onFiltersChange && i.push("[svgrid] `externalFilter` is on but there is no `onFiltersChange` handler, so filtering the grid changes nothing. Add `onFiltersChange` and re-fetch in your handler."), i;
50
+ }
51
+ function r(e, t) {
52
+ let n, r = Infinity;
53
+ for (let a of t) {
54
+ let t = i(e.toLowerCase(), a.toLowerCase());
55
+ t < r && (r = t, n = a);
56
+ }
57
+ let a = Math.min(3, Math.floor(e.length / 3) + 1);
58
+ return r <= a ? n : void 0;
59
+ }
60
+ function i(e, t) {
61
+ if (e === t) return 0;
62
+ let n = Array(t.length + 1);
63
+ for (let e = 0; e <= t.length; e++) n[e] = e;
64
+ for (let r = 1; r <= e.length; r++) {
65
+ let i = n[0];
66
+ n[0] = r;
67
+ for (let a = 1; a <= t.length; a++) {
68
+ let o = Math.min(n[a] + 1, n[a - 1] + 1, i + (e[r - 1] === t[a - 1] ? 0 : 1));
69
+ i = n[a], n[a] = o;
70
+ }
71
+ }
72
+ return n[t.length];
73
+ }
74
+ //#endregion
75
+ export { n as validateGridConfig };