@reportwright/viewer 0.13.1 → 0.13.2-rc.2

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 (56) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +146 -5
  3. package/dist/{chunk-B5ZCT3UK.js → chunk-4XZRLUHN.js} +73 -46
  4. package/dist/{chunk-B5ZCT3UK.js.map → chunk-4XZRLUHN.js.map} +2 -2
  5. package/dist/{chunk-XXTAPZO4.js → chunk-D7S5DL46.js} +2 -2
  6. package/dist/{chunk-ES2LYZ6S.js → chunk-DVJYE7HZ.js} +3 -3
  7. package/dist/chunk-GOCWG6FG.js +12 -12
  8. package/dist/chunk-GRYITZPG.js +23 -23
  9. package/dist/chunk-H422SRD3.js +21 -21
  10. package/dist/{chunk-PF4RFKX2.js → chunk-NARXO3DB.js} +3 -3
  11. package/dist/{chunk-PKXTMC4J.js → chunk-OED3YZYP.js} +5 -5
  12. package/dist/{chunk-ZGRJJ6OW.js → chunk-OMCWZYRI.js} +32 -17
  13. package/dist/chunk-OMCWZYRI.js.map +6 -0
  14. package/dist/chunk-U2ZY2NPQ.js +2 -2
  15. package/dist/designer.js +331 -135
  16. package/dist/designer.js.map +3 -3
  17. package/dist/engine.worker.bwip.js +4780 -51421
  18. package/dist/engine.worker.bwip.js.map +3 -3
  19. package/dist/engine.worker.js +5675 -59626
  20. package/dist/engine.worker.js.map +3 -3
  21. package/dist/pdfstreamworker.js +4 -0
  22. package/dist/peer/{chunk-7IP67PA6.js → chunk-4AFSC6JI.js} +48 -21
  23. package/dist/peer/{chunk-7IP67PA6.js.map → chunk-4AFSC6JI.js.map} +1 -1
  24. package/dist/peer/chunk-A6UXBSTP.js +21 -21
  25. package/dist/peer/{chunk-3EYYRJR4.js → chunk-FN3FXACD.js} +3 -3
  26. package/dist/peer/{chunk-WVQQCD4M.js → chunk-ILBTPBOA.js} +32 -17
  27. package/dist/peer/chunk-ILBTPBOA.js.map +6 -0
  28. package/dist/peer/{chunk-3XZY54LM.js → chunk-JQDW5OR3.js} +5 -5
  29. package/dist/peer/chunk-MXR6JBMP.js +2 -2
  30. package/dist/peer/chunk-N42DCZZA.js +12 -12
  31. package/dist/peer/{chunk-RKFP7SDY.js → chunk-OUTKMWFM.js} +3 -3
  32. package/dist/peer/{chunk-5RUNOIS7.js → chunk-VJLMUGUI.js} +2 -2
  33. package/dist/peer/chunk-ZS3J4WBH.js +23 -23
  34. package/dist/peer/designer.js +317 -122
  35. package/dist/peer/designer.js.map +3 -3
  36. package/dist/peer/engine.worker.bwip.js +4780 -51421
  37. package/dist/peer/engine.worker.bwip.js.map +3 -3
  38. package/dist/peer/engine.worker.js +5675 -59626
  39. package/dist/peer/engine.worker.js.map +3 -3
  40. package/dist/peer/pdfstreamworker.js +4 -0
  41. package/dist/peer/viewer.js +41 -9
  42. package/dist/peer/viewer.js.map +1 -1
  43. package/dist/viewer.d.ts +2 -0
  44. package/dist/viewer.js +41 -9
  45. package/dist/viewer.js.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/chunk-ZGRJJ6OW.js.map +0 -6
  48. package/dist/peer/chunk-WVQQCD4M.js.map +0 -6
  49. /package/dist/{chunk-XXTAPZO4.js.map → chunk-D7S5DL46.js.map} +0 -0
  50. /package/dist/{chunk-ES2LYZ6S.js.map → chunk-DVJYE7HZ.js.map} +0 -0
  51. /package/dist/{chunk-PF4RFKX2.js.map → chunk-NARXO3DB.js.map} +0 -0
  52. /package/dist/{chunk-PKXTMC4J.js.map → chunk-OED3YZYP.js.map} +0 -0
  53. /package/dist/peer/{chunk-3EYYRJR4.js.map → chunk-FN3FXACD.js.map} +0 -0
  54. /package/dist/peer/{chunk-3XZY54LM.js.map → chunk-JQDW5OR3.js.map} +0 -0
  55. /package/dist/peer/{chunk-RKFP7SDY.js.map → chunk-OUTKMWFM.js.map} +0 -0
  56. /package/dist/peer/{chunk-5RUNOIS7.js.map → chunk-VJLMUGUI.js.map} +0 -0
@@ -60,8 +60,8 @@ function chartXml(spec, sheet) {
60
60
  const ser = (s, i, kind) => {
61
61
  const c = i + 2;
62
62
  const line = kind === "line" || kind === "radar";
63
- return `<c:ser><c:idx val="${i}"/><c:order val="${i}"/><c:tx><c:strRef><c:f>${ref(sheet, c, 1, c, 1)}</c:f>${strCache([s.name])}</c:strRef></c:tx>${t === "pie" || t === "donut" ? "" : fill(s.color, line)}${line ? '<c:marker><c:symbol val="none"/></c:marker>' : ""}${cat}<c:val><c:numRef><c:f>${ref(sheet, c, 2, c, n + 1)}</c:f>${numCache(s.values, fmt)}</c:numRef></c:val>${kind === "line" ? '<\
64
- c:smooth val="0"/>' : ""}</c:ser>`;
63
+ return `<c:ser><c:idx val="${i}"/><c:order val="${i}"/><c:tx><c:strRef><c:f>${ref(sheet, c, 1, c, 1)}</c:f>${strCache([s.name])}</c:strRef></c:tx>${t === "pie" || t === "donut" ? "" : fill(s.color, line)}${line ? '<c:marker><c:symbol val="none"/></c:marker>' : ""}${cat}<c:val><c:numRef><c:f>${ref(sheet, c, 2, c, n + 1)}</c:f>${numCache(s.values, fmt)}</c:numRef></c:val>${kind === "line" ? ('<'+
64
+ 'c:smooth val="0"/>') : ""}</c:ser>`;
65
65
  };
66
66
  if (t === "pie" || t === "donut") {
67
67
  const s = spec.series[0];
@@ -94,8 +94,8 @@ c:smooth val="0"/>' : ""}</c:ser>`;
94
94
  const per = t === "bubble" ? 3 : 2;
95
95
  const body = spec.series.map((s, i) => {
96
96
  const c = 1 + i * per, n = s.x.length;
97
- return `<c:ser><c:idx val="${i}"/><c:order val="${i}"/><c:tx><c:strRef><c:f>${ref(sheet, c + 1, 1, c + 1, 1)}</c:f>${strCache([s.name])}</c:strRef></c:tx>${t === "bubble" ? fill(s.color) : `<c:spPr><a:ln w="19050"><a:noFill/></a:ln></c:spPr><c:marker><c:symbol val="circle"/><c:size val="5"/>${fill(s.color)}</c:marker>`}<c:xVal><c:numRef><c:f>${ref(sheet, c, 2, c, n + 1)}</c:f>${numCache(s.x)}\
98
- </c:numRef></c:xVal><c:yVal><c:numRef><c:f>${ref(sheet, c + 1, 2, c + 1, n + 1)}</c:f>${numCache(s.y, fmt)}</c:numRef></c:yVal>` + (t === "bubble" ? `<c:bubbleSize><c:numRef><c:f>${ref(sheet, c + 2, 2, c + 2, n + 1)}</c:f>${numCache(s.size || [])}</c:numRef></c:bubbleSize><c:bubble3D val="0"/>` : '<c:smooth val="0"/>') + "</c:ser>";
97
+ return `<c:ser><c:idx val="${i}"/><c:order val="${i}"/><c:tx><c:strRef><c:f>${ref(sheet, c + 1, 1, c + 1, 1)}</c:f>${strCache([s.name])}</c:strRef></c:tx>${t === "bubble" ? fill(s.color) : `<c:spPr><a:ln w="19050"><a:noFill/></a:ln></c:spPr><c:marker><c:symbol val="circle"/><c:size val="5"/>${fill(s.color)}</c:marker>`}<c:xVal><c:numRef><c:f>${ref(sheet, c, 2, c, n + 1)}</c:f>${numCache(s.x)}${
98
+ ""}</c:numRef></c:xVal><c:yVal><c:numRef><c:f>${ref(sheet, c + 1, 2, c + 1, n + 1)}</c:f>${numCache(s.y, fmt)}</c:numRef></c:yVal>` + (t === "bubble" ? `<c:bubbleSize><c:numRef><c:f>${ref(sheet, c + 2, 2, c + 2, n + 1)}</c:f>${numCache(s.size || [])}</c:numRef></c:bubbleSize><c:bubble3D val="0"/>` : '<c:smooth val="0"/>') + "</c:ser>";
99
99
  }).join("");
100
100
  plot = t === "bubble" ? `<c:bubbleChart><c:varyColors val="0"/>${body}<c:bubbleScale val="100"/>${axIds(false)}</c:bubbleChart>` : `<c:scatterChart><c:scatterStyle val="lineMarker"/><c:varyColors val="0"/>${body}${axIds(false)}</c:scatterChart>`;
101
101
  axes = valAx(AX.cat, AX.val, "b", false, "General", spec.xTitle) + valAx(AX.val, AX.cat, "l", false, fmt, spec.yTitle);
@@ -106,18 +106,18 @@ c:smooth val="0"/>' : ""}</c:ser>`;
106
106
  }
107
107
  var axTitle = (t) => t ? title(t) : "";
108
108
  function catAx(id, cross, pos, second, t) {
109
- return `<c:catAx><c:axId val="${id}"/><c:scaling><c:orientation val="minMax"/></c:scaling><c:delete val="${second ? 1 : 0}"/><c:axPos val="${pos}"/>${axTitle(t)}<c:numFmt formatCode="General" sourceLinked="0"/><c:majorTickMark val="out"/><c:minorTickMark val="none"/><c:tickLblPos val="nextTo"/><c:crossAx val="${cross}"/><c:crosses val="autoZero"/><c:auto val="1"/><c:lblAlgn val="ctr"/><c:lblOffs\
110
- et val="100"/><c:noMultiLvlLbl val="0"/></c:catAx>`;
109
+ return `<c:catAx><c:axId val="${id}"/><c:scaling><c:orientation val="minMax"/></c:scaling><c:delete val="${second ? 1 : 0}"/><c:axPos val="${pos}"/>${axTitle(t)}<c:numFmt formatCode="General" sourceLinked="0"/><c:majorTickMark val="out"/><c:minorTickMark val="none"/><c:tickLblPos val="nextTo"/><c:crossAx val="${cross}"/><c:crosses val="autoZero"/><c:auto val="1"/><c:lblAlgn val="ctr"/><c:lblOffs${
110
+ ""}et val="100"/><c:noMultiLvlLbl val="0"/></c:catAx>`;
111
111
  }
112
112
  function valAx(id, cross, pos, second, fmt, t) {
113
- return `<c:valAx><c:axId val="${id}"/><c:scaling><c:orientation val="minMax"/></c:scaling><c:delete val="0"/><c:axPos val="${pos}"/>${second ? "" : "<c:majorGridlines/>"}${axTitle(t)}<c:numFmt formatCode="${esc(fmt)}" sourceLinked="0"/><c:majorTickMark val="out"/><c:minorTickMark val="none"/><c:tickLblPos val="nextTo"/><c:crossAx val="${cross}"/><c:crosses val="${second ? "max" : "autoZero"}"/><\
114
- c:crossBetween val="between"/></c:valAx>`;
113
+ return `<c:valAx><c:axId val="${id}"/><c:scaling><c:orientation val="minMax"/></c:scaling><c:delete val="0"/><c:axPos val="${pos}"/>${second ? "" : "<c:majorGridlines/>"}${axTitle(t)}<c:numFmt formatCode="${esc(fmt)}" sourceLinked="0"/><c:majorTickMark val="out"/><c:minorTickMark val="none"/><c:tickLblPos val="nextTo"/><c:crossAx val="${cross}"/><c:crosses val="${second ? "max" : "autoZero"}"/><${
114
+ ""}c:crossBetween val="between"/></c:valAx>`;
115
115
  }
116
116
  var PALETTE = ["#2563eb", "#16a34a", "#f59e0b", "#dc2626", "#7c3aed", "#0891b2", "#db2777", "#65a30d", "#ea580c", "#475569"];
117
117
  var drawingXml = (c0, r0, cols, rows) => `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
118
- <xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><xdr:twoCellAnchor editAs="oneCell"><xdr:from><xdr:col>${c0}</xdr:col><xdr:colOff>0</xdr:colOff><xdr:row>${r0}</xdr:row><xdr:rowOff>0</xdr:rowOff></xdr:from><xdr:to><xdr:col>${c0 + cols}</xdr:col><xdr:colOff>0</xdr:colOff><xdr:row>${r0 + rows}</x\
119
- dr:row><xdr:rowOff>0</xdr:rowOff></xdr:to><xdr:graphicFrame macro=""><xdr:nvGraphicFramePr><xdr:cNvPr id="2" name="Chart 1"/><xdr:cNvGraphicFramePr/></xdr:nvGraphicFramePr><xdr:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/></xdr:xfrm><a:graphic><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmln\
120
- s:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId1"/></a:graphicData></a:graphic></xdr:graphicFrame><xdr:clientData/></xdr:twoCellAnchor></xdr:wsDr>`;
118
+ <xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><xdr:twoCellAnchor editAs="oneCell"><xdr:from><xdr:col>${c0}</xdr:col><xdr:colOff>0</xdr:colOff><xdr:row>${r0}</xdr:row><xdr:rowOff>0</xdr:rowOff></xdr:from><xdr:to><xdr:col>${c0 + cols}</xdr:col><xdr:colOff>0</xdr:colOff><xdr:row>${r0 + rows}</x${
119
+ ""}dr:row><xdr:rowOff>0</xdr:rowOff></xdr:to><xdr:graphicFrame macro=""><xdr:nvGraphicFramePr><xdr:cNvPr id="2" name="Chart 1"/><xdr:cNvGraphicFramePr/></xdr:nvGraphicFramePr><xdr:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/></xdr:xfrm><a:graphic><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmln${
120
+ ""}s:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId1"/></a:graphicData></a:graphic></xdr:graphicFrame><xdr:clientData/></xdr:twoCellAnchor></xdr:wsDr>`;
121
121
  var rels = (list) => `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
122
122
  <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">${list.join("")}</Relationships>`;
123
123
  var rel = (id, type, target) => `<Relationship Id="${id}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/${type}" Target="${target}"/>`;
@@ -269,9 +269,9 @@ var Book = class {
269
269
  const [fmt, bold, fill2] = k.split("|").map(Number);
270
270
  return `<xf numFmtId="${fmt || 0}" fontId="${bold ? 1 : 0}" fillId="${fill2 ? 2 : 0}" borderId="0" xfId="0"${fmt ? ' applyNumberFormat="1"' : ""}${bold ? ' applyFont="1"' : ""}${fill2 ? ' applyFill="1"' : ""}/>`;
271
271
  }).join("");
272
- return `${XML}<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">${fmts ? `<numFmts count="${this.numFmts.size}">${fmts}</numFmts>` : ""}<fonts count="2"><font><sz val="11"/><name val="Calibri"/><family val="2"/></font><font><b/><sz val="11"/><name val="Calibri"/><family val="2"/></font></fonts><fills count="3"><fill><patternFill patternType="none"/></fill><fill><pat\
273
- ternFill patternType="gray125"/></fill><fill><patternFill patternType="solid"><fgColor rgb="${HEADER_FILL}"/><bgColor indexed="64"/></patternFill></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="${this.styles.size}">${xfs}</cellXfs><cellSt\
274
- yles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles></styleSheet>`;
272
+ return `${XML}<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">${fmts ? `<numFmts count="${this.numFmts.size}">${fmts}</numFmts>` : ""}<fonts count="2"><font><sz val="11"/><name val="Calibri"/><family val="2"/></font><font><b/><sz val="11"/><name val="Calibri"/><family val="2"/></font></fonts><fills count="3"><fill><patternFill patternType="none"/></fill><fill><pat${
273
+ ""}ternFill patternType="gray125"/></fill><fill><patternFill patternType="solid"><fgColor rgb="${HEADER_FILL}"/><bgColor indexed="64"/></patternFill></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="${this.styles.size}">${xfs}</cellXfs><cellSt${
274
+ ""}yles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles></styleSheet>`;
275
275
  }
276
276
  /** The .xlsx bytes. */
277
277
  write() {
@@ -291,8 +291,8 @@ yles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles></s
291
291
  const anchors = sh.images.map((im, k) => {
292
292
  img++;
293
293
  put(`xl/media/image${img}.${im.ext}`, im.bytes);
294
- return `<xdr:oneCellAnchor><xdr:from><xdr:col>${im.col}</xdr:col><xdr:colOff>0</xdr:colOff><xdr:row>${im.row}</xdr:row><xdr:rowOff>0</xdr:rowOff></xdr:from><xdr:ext cx="${Math.round(im.w * 9525)}" cy="${Math.round(im.h * 9525)}"/><xdr:pic><xdr:nvPicPr><xdr:cNvPr id="${k + 2}" name="Picture ${k + 1}"/><xdr:cNvPicPr><a:picLocks noChangeAspect="1"/></xdr:cNvPicPr></xdr:nvPicPr><xdr:blipFill><\
295
- a:blip r:embed="rId${k + 1}"/><a:stretch><a:fillRect/></a:stretch></xdr:blipFill><xdr:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="${Math.round(im.w * 9525)}" cy="${Math.round(im.h * 9525)}"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></xdr:spPr></xdr:pic><xdr:clientData/></xdr:oneCellAnchor>`;
294
+ return `<xdr:oneCellAnchor><xdr:from><xdr:col>${im.col}</xdr:col><xdr:colOff>0</xdr:colOff><xdr:row>${im.row}</xdr:row><xdr:rowOff>0</xdr:rowOff></xdr:from><xdr:ext cx="${Math.round(im.w * 9525)}" cy="${Math.round(im.h * 9525)}"/><xdr:pic><xdr:nvPicPr><xdr:cNvPr id="${k + 2}" name="Picture ${k + 1}"/><xdr:cNvPicPr><a:picLocks noChangeAspect="1"/></xdr:cNvPicPr></xdr:nvPicPr><xdr:blipFill><${
295
+ ""}a:blip r:embed="rId${k + 1}"/><a:stretch><a:fillRect/></a:stretch></xdr:blipFill><xdr:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="${Math.round(im.w * 9525)}" cy="${Math.round(im.h * 9525)}"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></xdr:spPr></xdr:pic><xdr:clientData/></xdr:oneCellAnchor>`;
296
296
  });
297
297
  let first = img - sh.images.length;
298
298
  put(`xl/drawings/_rels/drawing${n}.xml.rels`, rels2(sh.images.map((im, k) => [`rId${k + 1}`, "image", `../media/image${++first}.${im.ext}`])));
@@ -313,12 +313,12 @@ a:blip r:embed="rId${k + 1}"/><a:stretch><a:fillRect/></a:stretch></xdr:blipFill
313
313
  put("xl/styles.xml", this.stylesXml());
314
314
  put("xl/workbook.xml", `${XML}<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="${R}"><bookViews><workbookView/></bookViews><sheets>${this.sheets.map((s, i) => `<sheet name="${esc(s.name)}" sheetId="${i + 1}" r:id="rId${i + 1}"/>`).join("")}</sheets><calcPr calcId="171027"${this.fullCalcOnLoad ? ' fullCalcOnLoad="1"' : ""}/></workbook>`);
315
315
  put("xl/_rels/workbook.xml.rels", rels2([...this.sheets.map((s, i) => [`rId${i + 1}`, "worksheet", `worksheets/sheet${i + 1}.xml`]), [`rId${this.sheets.length + 1}`, "styles", "styles.xml"]]));
316
- put("docProps/core.xml", `${XML}<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dc:title>${esc(this.title)}</dc:title><dc:creator>${esc(this.creator)}</dc:creator><dcterms:created xsi:type="dcterms:W3C\
317
- DTF">${(/* @__PURE__ */ new Date()).toISOString().replace(/\.\d+Z$/, "Z")}</dcterms:created></cp:coreProperties>`);
316
+ put("docProps/core.xml", `${XML}<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dc:title>${esc(this.title)}</dc:title><dc:creator>${esc(this.creator)}</dc:creator><dcterms:created xsi:type="dcterms:W3C${
317
+ ""}DTF">${(/* @__PURE__ */ new Date()).toISOString().replace(/\.\d+Z$/, "Z")}</dcterms:created></cp:coreProperties>`);
318
318
  put("_rels/.rels", rels2([["rId1", "officeDocument", "xl/workbook.xml"], ["rId2", "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties", "docProps/core.xml"]]));
319
- put("[Content_Types].xml", `${XML}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Default Extension="png" ContentType="image/png"/><Default Extension="jpeg" ContentType="image/jpeg"/><Override PartName="/xl/workbo\
320
- ok.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>${over.map(([p, t]) => `<Override PartName="${p}" ContentType="${t}\
321
- "/>`).join("")}</Types>`);
319
+ put("[Content_Types].xml", `${XML}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Default Extension="png" ContentType="image/png"/><Default Extension="jpeg" ContentType="image/jpeg"/><Override PartName="/xl/workbo${
320
+ ""}ok.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>${over.map(([p, t]) => `<Override PartName="${p}" ContentType="${t}${
321
+ ""}"/>`).join("")}</Types>`);
322
322
  return out;
323
323
  }
324
324
  };
@@ -5,13 +5,13 @@ import {
5
5
  origin,
6
6
  pruneSnapshot,
7
7
  reportFetch
8
- } from "./chunk-RKFP7SDY.js";
8
+ } from "./chunk-OUTKMWFM.js";
9
9
  import {
10
10
  drillRefs,
11
11
  loadSources,
12
12
  resolveParameters,
13
13
  reuseRefs
14
- } from "./chunk-WVQQCD4M.js";
14
+ } from "./chunk-ILBTPBOA.js";
15
15
  import "../chunk-BR5K6SBL.js";
16
16
  import {
17
17
  fontKeysOf
@@ -155,4 +155,4 @@ export {
155
155
  exportInteractiveHtml,
156
156
  reachableReportIds
157
157
  };
158
- //# sourceMappingURL=chunk-3EYYRJR4.js.map
158
+ //# sourceMappingURL=chunk-FN3FXACD.js.map
@@ -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`);
@@ -14208,4 +14223,4 @@ export {
14208
14223
  parameterOptions,
14209
14224
  resolveParameters
14210
14225
  };
14211
- //# sourceMappingURL=chunk-WVQQCD4M.js.map
14226
+ //# sourceMappingURL=chunk-ILBTPBOA.js.map