@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.
- package/CHANGELOG.md +53 -0
- package/README.md +150 -7
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/dist/{chunk-L6YEIVVD.js → chunk-2KNQVFKW.js} +82 -55
- package/dist/{chunk-L6YEIVVD.js.map → chunk-2KNQVFKW.js.map} +2 -2
- package/dist/{chunk-DXHLIJEY.js → chunk-47ZAKRVN.js} +6 -6
- package/dist/chunk-CCH7CFU5.js +5026 -0
- package/dist/chunk-CCH7CFU5.js.map +6 -0
- package/dist/{chunk-YIX3OJXU.js → chunk-D7S5DL46.js} +4 -4
- package/dist/{chunk-CNDUJ7IV.js → chunk-DVJYE7HZ.js} +9 -6
- package/dist/chunk-DVJYE7HZ.js.map +6 -0
- package/dist/{chunk-BF7GCWZY.js → chunk-GOCWG6FG.js} +15 -15
- package/dist/{chunk-IFYCJZNS.js → chunk-GRYITZPG.js} +30 -30
- package/dist/{chunk-F5EPQTPF.js → chunk-H422SRD3.js} +29 -29
- package/dist/{chunk-FEM2QVOO.js → chunk-JD6EJ3LI.js} +4 -4
- package/dist/{chunk-QFLVVM3H.js → chunk-MS2LQC2O.js} +38 -28
- package/dist/chunk-MS2LQC2O.js.map +6 -0
- package/dist/{chunk-UHHURTSV.js → chunk-NARXO3DB.js} +7 -7
- package/dist/{chunk-TZXEEVKE.js → chunk-OED3YZYP.js} +90 -45
- package/dist/chunk-OED3YZYP.js.map +6 -0
- package/dist/{chunk-EK5CJY22.js → chunk-OMCWZYRI.js} +69 -39
- package/dist/chunk-OMCWZYRI.js.map +6 -0
- package/dist/{chunk-UJL7C2AS.js → chunk-U2ZY2NPQ.js} +4 -4
- package/dist/{chunk-PQNM6ET7.js → chunk-WOBRKNIA.js} +12 -12
- package/dist/designer.js +349 -147
- package/dist/designer.js.map +3 -3
- package/dist/engine.worker.bwip.js +4781 -0
- package/dist/engine.worker.bwip.js.map +6 -0
- package/dist/engine.worker.js +5675 -16781
- package/dist/engine.worker.js.map +3 -3
- package/dist/peer/{chunk-2CD5COHN.js → chunk-6KUUNDNN.js} +57 -30
- package/dist/peer/{chunk-2CD5COHN.js.map → chunk-6KUUNDNN.js.map} +1 -1
- package/dist/peer/{chunk-LWXQX3NJ.js → chunk-A6UXBSTP.js} +29 -29
- package/dist/peer/{chunk-V42KN7HD.js → chunk-CFTFTV2O.js} +6 -6
- package/dist/peer/{chunk-45GVDKP5.js → chunk-FN3FXACD.js} +7 -7
- package/dist/peer/chunk-ILBTPBOA.js +14226 -0
- package/dist/peer/chunk-ILBTPBOA.js.map +6 -0
- package/dist/peer/{chunk-VZHHNQYB.js → chunk-JQDW5OR3.js} +90 -45
- package/dist/peer/chunk-JQDW5OR3.js.map +6 -0
- package/dist/peer/chunk-JQTRDHQP.js +866 -0
- package/dist/peer/chunk-JQTRDHQP.js.map +6 -0
- package/dist/peer/chunk-KD6CDYGE.js +5024 -0
- package/dist/peer/chunk-KD6CDYGE.js.map +6 -0
- package/dist/peer/chunk-MXR6JBMP.js +546 -0
- package/dist/peer/chunk-MXR6JBMP.js.map +6 -0
- package/dist/peer/chunk-N42DCZZA.js +378 -0
- package/dist/peer/chunk-N42DCZZA.js.map +6 -0
- package/dist/peer/{chunk-MKY3SDXU.js → chunk-OUTKMWFM.js} +9 -6
- package/dist/peer/chunk-OUTKMWFM.js.map +6 -0
- package/dist/peer/{chunk-Z5II55QT.js → chunk-VJLMUGUI.js} +4 -4
- package/dist/peer/{chunk-3CBV5SAI.js → chunk-WABYQWMT.js} +12 -12
- package/dist/peer/{chunk-S6LSPHSU.js → chunk-XHCRHVRK.js} +4 -4
- package/dist/peer/{chunk-YITWGAR4.js → chunk-ZS3J4WBH.js} +30 -30
- package/dist/peer/designer.js +335 -134
- package/dist/peer/designer.js.map +3 -3
- package/dist/peer/engine.worker.bwip.js +4781 -0
- package/dist/peer/engine.worker.bwip.js.map +6 -0
- package/dist/peer/engine.worker.js +5675 -16781
- package/dist/peer/engine.worker.js.map +3 -3
- package/dist/peer/viewer.js +44 -12
- package/dist/peer/viewer.js.map +1 -1
- package/dist/viewer.d.ts +2 -0
- package/dist/viewer.js +44 -12
- package/dist/viewer.js.map +1 -1
- package/package.json +1 -2
- package/dist/chunk-CNDUJ7IV.js.map +0 -6
- package/dist/chunk-EK5CJY22.js.map +0 -6
- package/dist/chunk-QFLVVM3H.js.map +0 -6
- package/dist/chunk-TZXEEVKE.js.map +0 -6
- package/dist/peer/chunk-MKY3SDXU.js.map +0 -6
- package/dist/peer/chunk-VZHHNQYB.js.map +0 -6
- /package/dist/{chunk-DXHLIJEY.js.map → chunk-47ZAKRVN.js.map} +0 -0
- /package/dist/{chunk-FEM2QVOO.js.map → chunk-D7S5DL46.js.map} +0 -0
- /package/dist/{chunk-BF7GCWZY.js.map → chunk-GOCWG6FG.js.map} +0 -0
- /package/dist/{chunk-IFYCJZNS.js.map → chunk-GRYITZPG.js.map} +0 -0
- /package/dist/{chunk-F5EPQTPF.js.map → chunk-H422SRD3.js.map} +0 -0
- /package/dist/{chunk-YIX3OJXU.js.map → chunk-JD6EJ3LI.js.map} +0 -0
- /package/dist/{chunk-UHHURTSV.js.map → chunk-NARXO3DB.js.map} +0 -0
- /package/dist/{chunk-UJL7C2AS.js.map → chunk-U2ZY2NPQ.js.map} +0 -0
- /package/dist/{chunk-PQNM6ET7.js.map → chunk-WOBRKNIA.js.map} +0 -0
- /package/dist/peer/{chunk-LWXQX3NJ.js.map → chunk-A6UXBSTP.js.map} +0 -0
- /package/dist/peer/{chunk-V42KN7HD.js.map → chunk-CFTFTV2O.js.map} +0 -0
- /package/dist/peer/{chunk-45GVDKP5.js.map → chunk-FN3FXACD.js.map} +0 -0
- /package/dist/peer/{chunk-S6LSPHSU.js.map → chunk-VJLMUGUI.js.map} +0 -0
- /package/dist/peer/{chunk-3CBV5SAI.js.map → chunk-WABYQWMT.js.map} +0 -0
- /package/dist/peer/{chunk-Z5II55QT.js.map → chunk-XHCRHVRK.js.map} +0 -0
- /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
|
-
|
|
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 (
|
|
12487
|
+
"description": "A ReportWright report definition (reportwright/report@1).",
|
|
12487
12488
|
"type": "object",
|
|
12488
12489
|
"properties": {
|
|
12489
12490
|
"$schema": {
|
|
12490
|
-
"description": "
|
|
12491
|
+
"description": "reportwright/report@1; pagewright/report@1 (deprecated, the name before the rename) is the same format.",
|
|
12491
12492
|
"enum": [
|
|
12492
|
-
"
|
|
12493
|
-
"
|
|
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": "
|
|
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 = "
|
|
12728
|
-
var SCHEMA_ALIAS = "
|
|
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
|
-
|
|
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-
|
|
14226
|
+
//# sourceMappingURL=chunk-OMCWZYRI.js.map
|