@reportwright/viewer 0.13.0 → 0.13.2-rc.1

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 (87) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +150 -7
  3. package/THIRD-PARTY-NOTICES.md +1 -1
  4. package/dist/{chunk-L6YEIVVD.js → chunk-2KNQVFKW.js} +82 -55
  5. package/dist/{chunk-L6YEIVVD.js.map → chunk-2KNQVFKW.js.map} +2 -2
  6. package/dist/{chunk-DXHLIJEY.js → chunk-47ZAKRVN.js} +6 -6
  7. package/dist/chunk-CCH7CFU5.js +5026 -0
  8. package/dist/chunk-CCH7CFU5.js.map +6 -0
  9. package/dist/{chunk-YIX3OJXU.js → chunk-D7S5DL46.js} +4 -4
  10. package/dist/{chunk-CNDUJ7IV.js → chunk-DVJYE7HZ.js} +9 -6
  11. package/dist/chunk-DVJYE7HZ.js.map +6 -0
  12. package/dist/{chunk-BF7GCWZY.js → chunk-GOCWG6FG.js} +15 -15
  13. package/dist/{chunk-IFYCJZNS.js → chunk-GRYITZPG.js} +30 -30
  14. package/dist/{chunk-F5EPQTPF.js → chunk-H422SRD3.js} +29 -29
  15. package/dist/{chunk-FEM2QVOO.js → chunk-JD6EJ3LI.js} +4 -4
  16. package/dist/{chunk-QFLVVM3H.js → chunk-MS2LQC2O.js} +38 -28
  17. package/dist/chunk-MS2LQC2O.js.map +6 -0
  18. package/dist/{chunk-UHHURTSV.js → chunk-NARXO3DB.js} +7 -7
  19. package/dist/{chunk-TZXEEVKE.js → chunk-OED3YZYP.js} +90 -45
  20. package/dist/chunk-OED3YZYP.js.map +6 -0
  21. package/dist/{chunk-EK5CJY22.js → chunk-OMCWZYRI.js} +69 -39
  22. package/dist/chunk-OMCWZYRI.js.map +6 -0
  23. package/dist/{chunk-UJL7C2AS.js → chunk-U2ZY2NPQ.js} +4 -4
  24. package/dist/{chunk-PQNM6ET7.js → chunk-WOBRKNIA.js} +12 -12
  25. package/dist/designer.js +349 -147
  26. package/dist/designer.js.map +3 -3
  27. package/dist/engine.worker.bwip.js +4781 -0
  28. package/dist/engine.worker.bwip.js.map +6 -0
  29. package/dist/engine.worker.js +5675 -16781
  30. package/dist/engine.worker.js.map +3 -3
  31. package/dist/peer/{chunk-2CD5COHN.js → chunk-6KUUNDNN.js} +57 -30
  32. package/dist/peer/{chunk-2CD5COHN.js.map → chunk-6KUUNDNN.js.map} +1 -1
  33. package/dist/peer/{chunk-LWXQX3NJ.js → chunk-A6UXBSTP.js} +29 -29
  34. package/dist/peer/{chunk-V42KN7HD.js → chunk-CFTFTV2O.js} +6 -6
  35. package/dist/peer/{chunk-45GVDKP5.js → chunk-FN3FXACD.js} +7 -7
  36. package/dist/peer/chunk-ILBTPBOA.js +14226 -0
  37. package/dist/peer/chunk-ILBTPBOA.js.map +6 -0
  38. package/dist/peer/{chunk-VZHHNQYB.js → chunk-JQDW5OR3.js} +90 -45
  39. package/dist/peer/chunk-JQDW5OR3.js.map +6 -0
  40. package/dist/peer/chunk-JQTRDHQP.js +866 -0
  41. package/dist/peer/chunk-JQTRDHQP.js.map +6 -0
  42. package/dist/peer/chunk-KD6CDYGE.js +5024 -0
  43. package/dist/peer/chunk-KD6CDYGE.js.map +6 -0
  44. package/dist/peer/chunk-MXR6JBMP.js +546 -0
  45. package/dist/peer/chunk-MXR6JBMP.js.map +6 -0
  46. package/dist/peer/chunk-N42DCZZA.js +378 -0
  47. package/dist/peer/chunk-N42DCZZA.js.map +6 -0
  48. package/dist/peer/{chunk-MKY3SDXU.js → chunk-OUTKMWFM.js} +9 -6
  49. package/dist/peer/chunk-OUTKMWFM.js.map +6 -0
  50. package/dist/peer/{chunk-Z5II55QT.js → chunk-VJLMUGUI.js} +4 -4
  51. package/dist/peer/{chunk-3CBV5SAI.js → chunk-WABYQWMT.js} +12 -12
  52. package/dist/peer/{chunk-S6LSPHSU.js → chunk-XHCRHVRK.js} +4 -4
  53. package/dist/peer/{chunk-YITWGAR4.js → chunk-ZS3J4WBH.js} +30 -30
  54. package/dist/peer/designer.js +335 -134
  55. package/dist/peer/designer.js.map +3 -3
  56. package/dist/peer/engine.worker.bwip.js +4781 -0
  57. package/dist/peer/engine.worker.bwip.js.map +6 -0
  58. package/dist/peer/engine.worker.js +5675 -16781
  59. package/dist/peer/engine.worker.js.map +3 -3
  60. package/dist/peer/viewer.js +44 -12
  61. package/dist/peer/viewer.js.map +1 -1
  62. package/dist/viewer.d.ts +2 -0
  63. package/dist/viewer.js +44 -12
  64. package/dist/viewer.js.map +1 -1
  65. package/package.json +1 -2
  66. package/dist/chunk-CNDUJ7IV.js.map +0 -6
  67. package/dist/chunk-EK5CJY22.js.map +0 -6
  68. package/dist/chunk-QFLVVM3H.js.map +0 -6
  69. package/dist/chunk-TZXEEVKE.js.map +0 -6
  70. package/dist/peer/chunk-MKY3SDXU.js.map +0 -6
  71. package/dist/peer/chunk-VZHHNQYB.js.map +0 -6
  72. /package/dist/{chunk-DXHLIJEY.js.map → chunk-47ZAKRVN.js.map} +0 -0
  73. /package/dist/{chunk-FEM2QVOO.js.map → chunk-D7S5DL46.js.map} +0 -0
  74. /package/dist/{chunk-BF7GCWZY.js.map → chunk-GOCWG6FG.js.map} +0 -0
  75. /package/dist/{chunk-IFYCJZNS.js.map → chunk-GRYITZPG.js.map} +0 -0
  76. /package/dist/{chunk-F5EPQTPF.js.map → chunk-H422SRD3.js.map} +0 -0
  77. /package/dist/{chunk-YIX3OJXU.js.map → chunk-JD6EJ3LI.js.map} +0 -0
  78. /package/dist/{chunk-UHHURTSV.js.map → chunk-NARXO3DB.js.map} +0 -0
  79. /package/dist/{chunk-UJL7C2AS.js.map → chunk-U2ZY2NPQ.js.map} +0 -0
  80. /package/dist/{chunk-PQNM6ET7.js.map → chunk-WOBRKNIA.js.map} +0 -0
  81. /package/dist/peer/{chunk-LWXQX3NJ.js.map → chunk-A6UXBSTP.js.map} +0 -0
  82. /package/dist/peer/{chunk-V42KN7HD.js.map → chunk-CFTFTV2O.js.map} +0 -0
  83. /package/dist/peer/{chunk-45GVDKP5.js.map → chunk-FN3FXACD.js.map} +0 -0
  84. /package/dist/peer/{chunk-S6LSPHSU.js.map → chunk-VJLMUGUI.js.map} +0 -0
  85. /package/dist/peer/{chunk-3CBV5SAI.js.map → chunk-WABYQWMT.js.map} +0 -0
  86. /package/dist/peer/{chunk-Z5II55QT.js.map → chunk-XHCRHVRK.js.map} +0 -0
  87. /package/dist/peer/{chunk-YITWGAR4.js.map → chunk-ZS3J4WBH.js.map} +0 -0
@@ -11,6 +11,25 @@ import {
11
11
  import {
12
12
  safeUrl
13
13
  } from "./chunk-72S6DETS.js";
14
+ import {
15
+ CORE_FONT_KEY,
16
+ DEFAULT_FAMILY,
17
+ FontStore,
18
+ OPTIONAL_KEYS,
19
+ PRELOAD_KEYS,
20
+ PX,
21
+ SHAPER,
22
+ embeddedFace,
23
+ fallbackKey,
24
+ familyOf,
25
+ fontCss,
26
+ fontsFor,
27
+ fontsForDef,
28
+ imageInfo,
29
+ isStandard,
30
+ resolveFontKey,
31
+ resolveImageSrc
32
+ } from "./chunk-MS2LQC2O.js";
14
33
  import {
15
34
  ExprError,
16
35
  capText,
@@ -31,25 +50,6 @@ import {
31
50
  toWall,
32
51
  validTimeZone
33
52
  } from "./chunk-GJS242RR.js";
34
- import {
35
- CORE_FONT_KEY,
36
- DEFAULT_FAMILY,
37
- FontStore,
38
- OPTIONAL_KEYS,
39
- PRELOAD_KEYS,
40
- PX,
41
- SHAPER,
42
- embeddedFace,
43
- fallbackKey,
44
- familyOf,
45
- fontCss,
46
- fontsFor,
47
- fontsForDef,
48
- imageInfo,
49
- isStandard,
50
- resolveFontKey,
51
- resolveImageSrc
52
- } from "./chunk-QFLVVM3H.js";
53
53
 
54
54
  // src/engine/text/measure.js
55
55
  import bidiFactory from "bidi-js";
@@ -295,7 +295,7 @@ var TextMeasurer = class {
295
295
  * character), exactly as before. Others also break between CJK characters (kinsoku applied), never
296
296
  * inside a grapheme cluster (a conjunct, a letter and its marks), and remember their direction.
297
297
  * @param {string} text @param {string} key @param {number} size @param {number} maxWidth
298
- * @returns {{text: string, width: number, dir?: 'ltr'|'rtl'}[]}
298
+ * @returns {{text: string, width: number, dir?: 'ltr'|'rtl', end?: boolean}[]}
299
299
  */
300
300
  wrap(text, key, size, maxWidth) {
301
301
  if (text === "") return [{ text: "", width: 0, end: true }];
@@ -2349,7 +2349,8 @@ function parseXml(src, limits = {}) {
2349
2349
  const L = { ...XML_LIMITS, ...limits };
2350
2350
  if (typeof src !== "string") throw new XmlError("The file is not text");
2351
2351
  if (src.length > L.maxChars) throw new XmlError(`The file is too large (more than ${L.maxChars} characters)`);
2352
- if (src.charCodeAt(0) === 65279) src = src.slice(1);
2352
+ const bom = src.charCodeAt(0) === 65279 ? 1 : 0;
2353
+ if (bom) src = src.slice(1);
2353
2354
  const stack2 = [];
2354
2355
  const nsStack = [Object.assign(/* @__PURE__ */ Object.create(null), { xml: "http://www.w3.org/XML/1998/namespace" })];
2355
2356
  let root = null;
@@ -2465,7 +2466,7 @@ function parseXml(src, limits = {}) {
2465
2466
  const colon = qname.indexOf(":");
2466
2467
  const prefix = colon < 0 ? "" : qname.slice(0, colon);
2467
2468
  const ns = scope[prefix] ?? (prefix ? fail(`The prefix "${prefix}" is not declared`) : "");
2468
- const el = { name: colon < 0 ? qname : qname.slice(colon + 1), ns, attrs: attrsOut, children: [], text: "" };
2469
+ const el = { name: colon < 0 ? qname : qname.slice(colon + 1), ns, attrs: attrsOut, children: [], text: "", pos: i + bom };
2469
2470
  if (stack2.length) stack2[stack2.length - 1].children.push(el);
2470
2471
  else root = el;
2471
2472
  if (!selfClose) {
@@ -5844,8 +5845,8 @@ function paintXY(type, g) {
5844
5845
  out.push(tag2(e, anim && { k: anim === "grow" ? "scale" : "fade", i: j }));
5845
5846
  const isClipped = clipped && beyond(p) || pastAxis(p);
5846
5847
  if (isClipped) out.push({ t: "ellipse", cx: e.cx, cy: e.cy, rx: r + 1.6, ry: r + 1.6, fill: "none", stroke: col, strokeWidth: 0.9 });
5847
- if (item.tooltips !== false && (type === "bubble" || multi || isClipped)) g.links.push({ t: "link", x: e.cx - r, y: e.cy - r, w: r * 2, h: r * 2, action: null, tip: `${multi ? `${s.name}: ` : ""}${fmtX(p.x)}, ${fmtY(p.y)}${type === "bubble" ? ` (${toText(p.size, null, ctx)})` : ""}${isClipped ? clipped && beyond(p) ? " (outlier, drawn at the edge)" : " (outside the axis range you set, drawn \
5848
- at the edge)" : ""}` });
5848
+ if (item.tooltips !== false && (type === "bubble" || multi || isClipped)) g.links.push({ t: "link", x: e.cx - r, y: e.cy - r, w: r * 2, h: r * 2, action: null, tip: `${multi ? `${s.name}: ` : ""}${fmtX(p.x)}, ${fmtY(p.y)}${type === "bubble" ? ` (${toText(p.size, null, ctx)})` : ""}${isClipped ? clipped && beyond(p) ? " (outlier, drawn at the edge)" : (" (outside the axis range you set, drawn "+
5849
+ "at the edge)") : ""}` });
5849
5850
  if (labelsOn) {
5850
5851
  const str = item.labelTemplate ? String(item.labelTemplate).slice(0, 500).replace(/\{(\w+)\}/g, (all, k) => ({ value: fmtY(p.y), x: fmtX(p.x), series: s.name, size: toText(p.size, null, ctx) })[k.toLowerCase()] ?? all) : fmtY(p.y);
5851
5852
  label(str, e.cx, e.cy - r - 2, { size: fs * 0.85 });
@@ -12483,14 +12484,14 @@ var REPORT_SCHEMA = {
12483
12484
  "additionalProperties": true
12484
12485
  },
12485
12486
  "Report": {
12486
- "description": "A ReportWright report definition (pagewright/report@1).",
12487
+ "description": "A ReportWright report definition (reportwright/report@1).",
12487
12488
  "type": "object",
12488
12489
  "properties": {
12489
12490
  "$schema": {
12490
- "description": "pagewright/report@1; reportwright/report@1 is the same format under the new name.",
12491
+ "description": "reportwright/report@1; pagewright/report@1 (deprecated, the name before the rename) is the same format.",
12491
12492
  "enum": [
12492
- "pagewright/report@1",
12493
- "reportwright/report@1"
12493
+ "reportwright/report@1",
12494
+ "pagewright/report@1"
12494
12495
  ]
12495
12496
  },
12496
12497
  "name": {
@@ -12608,7 +12609,7 @@ var REPORT_SCHEMA = {
12608
12609
  ],
12609
12610
  "examples": [
12610
12611
  {
12611
- "$schema": "pagewright/report@1",
12612
+ "$schema": "reportwright/report@1",
12612
12613
  "name": "Invoice",
12613
12614
  "page": {
12614
12615
  "size": "A4",
@@ -12724,11 +12725,11 @@ var REPORT_SCHEMA = {
12724
12725
  };
12725
12726
 
12726
12727
  // src/engine/schema/validate.js
12727
- var SCHEMA_ID = "pagewright/report@1";
12728
- var SCHEMA_ALIAS = "reportwright/report@1";
12729
- var ITEM_KEYS = new Set("id type name x y w h style styleName items hidden layer locked label alt value dataSet canGrow canShrink action bookmark tooltip keepTogether pageBreakBefore pageBreakAfter pageBreakBetween newSection filters sort groups groupBy groupAdjacent inheritRows columns header detail footer repeatHeader widowControl noRowsText pageBreakEvery cells rows rowGroup rowGroups columnGro\
12730
- up columnGroups values value valueFormat rowSort columnSort rowTotals columnTotals cellStyle headerStyle totalStyle corner partProps library part properties overflow overflowTo src fit headingLevel rotate shrinkToFit minFontSize shrinkStep tocDots tocLink tocPage format chartType series seriesGroup category title legend palette stacked valueAxis xTitle maxCategories outliers categorySort categoryF\
12731
- ormat showValues labelPosition symbology quietZone report params text toggle initiallyCollapsed collapsible expandLevels repeatColumns columnGap rowHeaderWidth anim animation visual comment notes description".split(" "));
12728
+ var SCHEMA_ID = "reportwright/report@1";
12729
+ var SCHEMA_ALIAS = "pagewright/report@1";
12730
+ var ITEM_KEYS = new Set(("id type name x y w h style styleName items hidden layer locked label alt value dataSet canGrow canShrink action bookmark tooltip keepTogether pageBreakBefore pageBreakAfter pageBreakBetween newSection filters sort groups groupBy groupAdjacent inheritRows columns header detail footer repeatHeader widowControl noRowsText pageBreakEvery cells rows rowGroup rowGroups columnGro"+
12731
+ "up columnGroups values value valueFormat rowSort columnSort rowTotals columnTotals cellStyle headerStyle totalStyle corner partProps library part properties overflow overflowTo src fit headingLevel rotate shrinkToFit minFontSize shrinkStep tocDots tocLink tocPage format chartType series seriesGroup category title legend palette stacked valueAxis xTitle maxCategories outliers categorySort categoryF"+
12732
+ "ormat showValues labelPosition symbology quietZone report params text toggle initiallyCollapsed collapsible expandLevels repeatColumns columnGap rowHeaderWidth anim animation visual comment notes description").split(" "));
12732
12733
  var NO_SERIES_CHARTS = /* @__PURE__ */ new Set(["gantt"]);
12733
12734
  function looksLikeLink(it) {
12734
12735
  if (it.type !== "textbox" || it.action && it.action.type && it.action.type !== "none") return false;
@@ -12739,8 +12740,8 @@ function looksLikeLink(it) {
12739
12740
  const [r, g, b] = m.slice(1).map((h) => parseInt(h, 16));
12740
12741
  return b > 150 && b > r + 60 && b > g + 30;
12741
12742
  }
12742
- var DEF_KEYS = new Set("$schema name description locale currency timeZone page parameters dataSources dataSets styles sections functions layers images theme themeDef master nullPropagation caseSensitive naturalSort nullOrder collation arithmetic bandRows version id tags author folder stylesheet parts partProperties dashboard comment notes customCode libraries liveParameters parameterLayout drafts \
12743
- history nonFinite".split(" "));
12743
+ var DEF_KEYS = new Set(("$schema name description locale currency timeZone page parameters dataSources dataSets styles sections functions layers images theme themeDef master nullPropagation caseSensitive naturalSort nullOrder collation arithmetic bandRows version id tags author folder stylesheet parts partProperties dashboard comment notes customCode libraries liveParameters parameterLayout drafts "+
12744
+ "history nonFinite").split(" "));
12744
12745
  for (const k of Object.keys(REPORT_SCHEMA.$defs.Report.properties)) DEF_KEYS.add(k);
12745
12746
  var lev = (a, b) => {
12746
12747
  if (Math.abs(a.length - b.length) > 2) return 3;
@@ -12803,6 +12804,18 @@ function sortIssues(sort, label, out) {
12803
12804
  if (s.dir != null && !["asc", "desc"].includes(s.dir)) out.push(`${at}: "dir" is ${JSON.stringify(s.dir)}; expected "asc" or "desc"`);
12804
12805
  });
12805
12806
  }
12807
+ var FILTER_KEYS = ["expr", "op", "value", "value2", "skipBlank"];
12808
+ var FILTER_ALIAS = { expression: "expr", field: "expr", by: "expr", operator: "op", comparison: "op", values: "value", value1: "value" };
12809
+ function filterIssues(filters, label, out) {
12810
+ filters.forEach((f4, i) => {
12811
+ if (!f4 || typeof f4 !== "object" || Array.isArray(f4)) return;
12812
+ for (const k of Object.keys(f4)) {
12813
+ if (FILTER_KEYS.includes(k) || k.startsWith("_")) continue;
12814
+ const g = FILTER_ALIAS[k] || didYouMean(k, FILTER_KEYS);
12815
+ out.push(`${label}, filter ${i + 1}: "${k}" is ignored; a filter is {${FILTER_KEYS.join(", ")}}${g ? ` (did you mean "${g}"?)` : ""}`);
12816
+ }
12817
+ });
12818
+ }
12806
12819
  var SCHEMA_ITEMS = (() => {
12807
12820
  const defs = (
12808
12821
  /** @type {Record<string, any>} */
@@ -12885,6 +12898,7 @@ function validate(def) {
12885
12898
  } else if (!srcNames.has(d.source)) errors.push(`Data set "${d.name}" uses the source "${d.source}", which does not exist`);
12886
12899
  dsNames.add(d.name);
12887
12900
  if (Array.isArray(d.sort)) sortIssues(d.sort, `Data set "${d.name}"`, warnings);
12901
+ if (Array.isArray(d.filters)) filterIssues(d.filters, `Data set "${d.name}"`, warnings);
12888
12902
  }
12889
12903
  const names = /* @__PURE__ */ new Set();
12890
12904
  const check = (where, v, label) => {
@@ -12947,6 +12961,7 @@ function validate(def) {
12947
12961
  warnings.push(`${label}: there is no named style "${it.styleName}"${g ? ` (did you mean "${g}"?)` : ""}; it is ignored`);
12948
12962
  }
12949
12963
  if (Array.isArray(it.sort)) sortIssues(it.sort, label, warnings);
12964
+ if (Array.isArray(it.filters)) filterIssues(it.filters, label, warnings);
12950
12965
  if (it.type === "chart" && it.legend != null && it.legend !== "bottom" && it.legend !== "none") {
12951
12966
  const shown = typeof it.legend === "object" ? `is an object (${JSON.stringify(it.legend).slice(0, 60)})` : `is ${JSON.stringify(it.legend)}`;
12952
12967
  warnings.push(`${label}: "legend" ${shown}; only "bottom" (show the legend) or "none" (hide it) is supported, and the legend is drawn at the bottom`);
@@ -13086,7 +13101,22 @@ function validate(def) {
13086
13101
  } catch {
13087
13102
  }
13088
13103
  }
13089
- return { errors, warnings, exprErrors, checkOnly };
13104
+ const renderSays = [];
13105
+ const band = (own, shared) => !own || typeof own !== "object" || Array.isArray(own) ? Number(shared?.height) || 0 : own.hidden ? 0 : Number(own.height) || 0;
13106
+ for (const b of Array.isArray(body) ? body : body ? [body] : []) {
13107
+ if (!b || typeof b !== "object") continue;
13108
+ const pg = resolvePage({ ...def.page || {}, ...b.page && typeof b.page === "object" ? b.page : {} });
13109
+ if (pg.pageless) continue;
13110
+ const room = pg.height - pg.margins.top - pg.margins.bottom - band(b.pageHeader, def.sections?.pageHeader) - band(b.pageFooter, def.sections?.pageFooter);
13111
+ for (const it of Array.isArray(b.items) ? b.items : []) {
13112
+ if (!it || typeof it !== "object" || ["table", "matrix", "list", "subreport", "toc"].includes(it.type) || !(Number(it.h) > room + 0.5)) continue;
13113
+ const text = it.type === "textbox" || it.type === "richtext";
13114
+ const msg = `${it.name || it.type}: it is ${Math.round(it.h)} pt tall, taller than the ${Math.round(room)} pt the page has for the body (the page less its margins, page header and footer). ${text ? "Its text of more than one line continues on the next page; otherwise the lower part of the box is cut at the page bottom" : "Its lower part is cut at the page bottom"}; make it shorter.`;
13115
+ warnings.push(msg);
13116
+ renderSays.push(msg);
13117
+ }
13118
+ }
13119
+ return { errors, warnings, exprErrors, checkOnly, renderSays };
13090
13120
  }
13091
13121
  var TEMPLATE_KEYS = /* @__PURE__ */ new Set(["value", "text", "label", "tooltip", "title", "noRowsText"]);
13092
13122
  function inlineFields(def) {
@@ -13532,7 +13562,7 @@ async function render(def0, opts = {}) {
13532
13562
  const fatal = v.errors.filter((e) => !cellErrors.has(e));
13533
13563
  if (fatal.length) throw new ReportError(fatal[0], { errors: v.errors });
13534
13564
  const checkOnly = new Set(v.checkOnly);
13535
- const warnings = [.../* @__PURE__ */ new Set([...v.warnings, ...[...cellErrors].filter((e) => !checkOnly.has(e)).slice(0, 100), ...reuseWarnings])].slice(0, 200);
13565
+ const warnings = [.../* @__PURE__ */ new Set([...v.warnings.filter((w) => !v.renderSays.includes(w)), ...[...cellErrors].filter((e) => !checkOnly.has(e)).slice(0, 100), ...reuseWarnings])].slice(0, 200);
13536
13566
  const clips = /* @__PURE__ */ new Set();
13537
13567
  const warn = (msg, clip) => {
13538
13568
  if (warnings.length < 200 && !warnings.includes(msg)) warnings.push(msg);
@@ -14193,4 +14223,4 @@ export {
14193
14223
  parameterOptions,
14194
14224
  resolveParameters
14195
14225
  };
14196
- //# sourceMappingURL=chunk-EK5CJY22.js.map
14226
+ //# sourceMappingURL=chunk-OMCWZYRI.js.map