@zentto/report-core 0.4.0 → 1.0.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.
- package/dist/engine/conditional-format.d.ts +48 -0
- package/dist/engine/conditional-format.d.ts.map +1 -0
- package/dist/engine/conditional-format.js +167 -0
- package/dist/engine/conditional-format.js.map +1 -0
- package/dist/engine/cross-tab.d.ts +68 -0
- package/dist/engine/cross-tab.d.ts.map +1 -0
- package/dist/engine/cross-tab.js +549 -0
- package/dist/engine/cross-tab.js.map +1 -0
- package/dist/engine/expression.d.ts +46 -2
- package/dist/engine/expression.d.ts.map +1 -1
- package/dist/engine/expression.js +1415 -90
- package/dist/engine/expression.js.map +1 -1
- package/dist/engine/multi-pass-engine.d.ts +74 -0
- package/dist/engine/multi-pass-engine.d.ts.map +1 -0
- package/dist/engine/multi-pass-engine.js +1082 -0
- package/dist/engine/multi-pass-engine.js.map +1 -0
- package/dist/engine/running-totals.d.ts +74 -0
- package/dist/engine/running-totals.d.ts.map +1 -0
- package/dist/engine/running-totals.js +247 -0
- package/dist/engine/running-totals.js.map +1 -0
- package/dist/engine/subreport.d.ts +59 -0
- package/dist/engine/subreport.d.ts.map +1 -0
- package/dist/engine/subreport.js +295 -0
- package/dist/engine/subreport.js.map +1 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/schema/report-schema.d.ts +346 -346
- package/dist/serialization/json.d.ts +88 -88
- package/dist/templates/page-sizes.d.ts.map +1 -1
- package/dist/templates/page-sizes.js +95 -3
- package/dist/templates/page-sizes.js.map +1 -1
- package/dist/types.d.ts +38 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
// @zentto/report-core — Subreport engine
|
|
2
|
+
// Supports linked, unlinked, and on-demand subreports (Crystal Reports style)
|
|
3
|
+
import { renderToHtml } from '../render/html-renderer.js';
|
|
4
|
+
// ─── Shared Variables ──────────────────────────────────────────────
|
|
5
|
+
/** Global shared variable store (parent <-> subreport communication) */
|
|
6
|
+
let _sharedVars = new Map();
|
|
7
|
+
/** Set a shared variable (accessible from parent and all subreports) */
|
|
8
|
+
export function setSharedVariable(name, value) {
|
|
9
|
+
_sharedVars.set(name, value);
|
|
10
|
+
}
|
|
11
|
+
/** Get a shared variable */
|
|
12
|
+
export function getSharedVariable(name) {
|
|
13
|
+
return _sharedVars.get(name);
|
|
14
|
+
}
|
|
15
|
+
/** Clear all shared variables (call before a new top-level render) */
|
|
16
|
+
export function clearSharedVariables() {
|
|
17
|
+
_sharedVars = new Map();
|
|
18
|
+
}
|
|
19
|
+
/** Get a snapshot of all shared variables */
|
|
20
|
+
export function getSharedVariables() {
|
|
21
|
+
return new Map(_sharedVars);
|
|
22
|
+
}
|
|
23
|
+
// ─── Depth Guard ───────────────────────────────────────────────────
|
|
24
|
+
const MAX_SUBREPORT_DEPTH = 10;
|
|
25
|
+
// ─── Filter Engine ─────────────────────────────────────────────────
|
|
26
|
+
/**
|
|
27
|
+
* Evaluate a simple filter expression against a data row.
|
|
28
|
+
* Supports: field == value, field != value, field > value, field < value,
|
|
29
|
+
* field >= value, field <= value, field LIKE 'pattern'
|
|
30
|
+
* Multiple conditions with AND / OR.
|
|
31
|
+
*/
|
|
32
|
+
function evaluateFilter(expression, row) {
|
|
33
|
+
if (!expression || expression.trim() === '')
|
|
34
|
+
return true;
|
|
35
|
+
// Split by OR first, then AND
|
|
36
|
+
const orParts = expression.split(/\bOR\b/i);
|
|
37
|
+
for (const orPart of orParts) {
|
|
38
|
+
const andParts = orPart.split(/\bAND\b/i);
|
|
39
|
+
let allTrue = true;
|
|
40
|
+
for (const condition of andParts) {
|
|
41
|
+
if (!evaluateSingleCondition(condition.trim(), row)) {
|
|
42
|
+
allTrue = false;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (allTrue)
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
function evaluateSingleCondition(condition, row) {
|
|
52
|
+
if (!condition)
|
|
53
|
+
return true;
|
|
54
|
+
// Match: field operator value
|
|
55
|
+
const match = condition.match(/^(\w+)\s*(==|!=|>=|<=|>|<|LIKE)\s*['"]?([^'"]*?)['"]?\s*$/i);
|
|
56
|
+
if (!match)
|
|
57
|
+
return true;
|
|
58
|
+
const [, field, operator, rawValue] = match;
|
|
59
|
+
const rowValue = row[field];
|
|
60
|
+
const compareValue = parseFilterValue(rawValue);
|
|
61
|
+
switch (operator.toUpperCase()) {
|
|
62
|
+
case '==':
|
|
63
|
+
return rowValue == compareValue;
|
|
64
|
+
case '!=':
|
|
65
|
+
return rowValue != compareValue;
|
|
66
|
+
case '>':
|
|
67
|
+
return Number(rowValue) > Number(compareValue);
|
|
68
|
+
case '<':
|
|
69
|
+
return Number(rowValue) < Number(compareValue);
|
|
70
|
+
case '>=':
|
|
71
|
+
return Number(rowValue) >= Number(compareValue);
|
|
72
|
+
case '<=':
|
|
73
|
+
return Number(rowValue) <= Number(compareValue);
|
|
74
|
+
case 'LIKE': {
|
|
75
|
+
const pattern = String(compareValue)
|
|
76
|
+
.replace(/%/g, '.*')
|
|
77
|
+
.replace(/_/g, '.');
|
|
78
|
+
return new RegExp(`^${pattern}$`, 'i').test(String(rowValue ?? ''));
|
|
79
|
+
}
|
|
80
|
+
default:
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function parseFilterValue(raw) {
|
|
85
|
+
if (raw === 'true')
|
|
86
|
+
return true;
|
|
87
|
+
if (raw === 'false')
|
|
88
|
+
return false;
|
|
89
|
+
if (raw === 'null')
|
|
90
|
+
return null;
|
|
91
|
+
const num = Number(raw);
|
|
92
|
+
if (!isNaN(num) && raw !== '')
|
|
93
|
+
return num;
|
|
94
|
+
return raw;
|
|
95
|
+
}
|
|
96
|
+
// ─── Data Resolution ───────────────────────────────────────────────
|
|
97
|
+
/**
|
|
98
|
+
* Resolve the data for a subreport based on its type and configuration.
|
|
99
|
+
* For linked subreports, filters data based on parameter links from parent row.
|
|
100
|
+
*/
|
|
101
|
+
function resolveSubreportData(subreportDef, parentContext, parentDataSets) {
|
|
102
|
+
const childDataSets = { ...parentDataSets };
|
|
103
|
+
// If the subreport defines its own data source, use it
|
|
104
|
+
if (subreportDef.dataSource && parentDataSets[subreportDef.dataSource]) {
|
|
105
|
+
let sourceData = parentDataSets[subreportDef.dataSource];
|
|
106
|
+
// For linked subreports, filter based on parameter links
|
|
107
|
+
if (subreportDef.type === 'linked' &&
|
|
108
|
+
subreportDef.parameterLinks &&
|
|
109
|
+
subreportDef.parameterLinks.length > 0 &&
|
|
110
|
+
Array.isArray(sourceData)) {
|
|
111
|
+
sourceData = filterLinkedData(sourceData, subreportDef.parameterLinks, parentContext);
|
|
112
|
+
}
|
|
113
|
+
// Apply filter expression
|
|
114
|
+
if (subreportDef.filterExpression && Array.isArray(sourceData)) {
|
|
115
|
+
sourceData = sourceData.filter((row) => evaluateFilter(subreportDef.filterExpression, row));
|
|
116
|
+
}
|
|
117
|
+
childDataSets[subreportDef.dataSource] = sourceData;
|
|
118
|
+
}
|
|
119
|
+
else if (subreportDef.type === 'linked' &&
|
|
120
|
+
subreportDef.parameterLinks &&
|
|
121
|
+
subreportDef.parameterLinks.length > 0) {
|
|
122
|
+
// For linked subreports without explicit dataSource, filter all array data sources
|
|
123
|
+
for (const [dsId, dsData] of Object.entries(childDataSets)) {
|
|
124
|
+
if (Array.isArray(dsData)) {
|
|
125
|
+
let filtered = filterLinkedData(dsData, subreportDef.parameterLinks, parentContext);
|
|
126
|
+
if (subreportDef.filterExpression) {
|
|
127
|
+
filtered = filtered.filter((row) => evaluateFilter(subreportDef.filterExpression, row));
|
|
128
|
+
}
|
|
129
|
+
childDataSets[dsId] = filtered;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return childDataSets;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Filter data rows based on parameter links from parent context.
|
|
137
|
+
* Each link maps a parentField to a childParameter (field in child data).
|
|
138
|
+
*/
|
|
139
|
+
function filterLinkedData(data, parameterLinks, parentContext) {
|
|
140
|
+
return data.filter((row) => {
|
|
141
|
+
for (const link of parameterLinks) {
|
|
142
|
+
const parentValue = resolveParentFieldValue(link.parentField, parentContext);
|
|
143
|
+
const childValue = row[link.childParameter];
|
|
144
|
+
if (parentValue !== childValue)
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
return true;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Resolve a field value from the parent context.
|
|
152
|
+
* Tries: currentRow -> parameters -> dataSets (first matching field).
|
|
153
|
+
*/
|
|
154
|
+
function resolveParentFieldValue(fieldName, ctx) {
|
|
155
|
+
// Check if field is qualified (dsId.fieldName)
|
|
156
|
+
const dotIdx = fieldName.indexOf('.');
|
|
157
|
+
if (dotIdx > 0) {
|
|
158
|
+
const dsId = fieldName.substring(0, dotIdx);
|
|
159
|
+
const fName = fieldName.substring(dotIdx + 1);
|
|
160
|
+
const ds = ctx.dataSets[dsId];
|
|
161
|
+
if (ds && !Array.isArray(ds)) {
|
|
162
|
+
return ds[fName];
|
|
163
|
+
}
|
|
164
|
+
if (ds && Array.isArray(ds) && ctx.currentIndex !== undefined) {
|
|
165
|
+
return ds[ctx.currentIndex]?.[fName];
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Try current row
|
|
169
|
+
if (ctx.currentRow && fieldName in ctx.currentRow) {
|
|
170
|
+
return ctx.currentRow[fieldName];
|
|
171
|
+
}
|
|
172
|
+
// Try parameters
|
|
173
|
+
if (ctx.parameters && fieldName in ctx.parameters) {
|
|
174
|
+
return ctx.parameters[fieldName];
|
|
175
|
+
}
|
|
176
|
+
// Try all data sources (first match)
|
|
177
|
+
for (const ds of Object.values(ctx.dataSets)) {
|
|
178
|
+
if (!Array.isArray(ds) && fieldName in ds) {
|
|
179
|
+
return ds[fieldName];
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
// ─── Parameter Resolution ──────────────────────────────────────────
|
|
185
|
+
/**
|
|
186
|
+
* Build the parameters object for a subreport from parameter links.
|
|
187
|
+
*/
|
|
188
|
+
function buildSubreportParameters(subreportDef, parentContext) {
|
|
189
|
+
const params = {
|
|
190
|
+
...(parentContext.parameters || {}),
|
|
191
|
+
};
|
|
192
|
+
if (subreportDef.parameterLinks) {
|
|
193
|
+
for (const link of subreportDef.parameterLinks) {
|
|
194
|
+
const value = resolveParentFieldValue(link.parentField, parentContext);
|
|
195
|
+
params[link.childParameter] = value;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return params;
|
|
199
|
+
}
|
|
200
|
+
// ─── Render Subreport ──────────────────────────────────────────────
|
|
201
|
+
/**
|
|
202
|
+
* Render a subreport within the context of a parent report.
|
|
203
|
+
* Handles all three types: linked, unlinked, on-demand.
|
|
204
|
+
*
|
|
205
|
+
* @param subreportDef The subreport definition
|
|
206
|
+
* @param parentContext The binding context of the parent report at the point of insertion
|
|
207
|
+
* @param parentDataSets The full data sets from the parent report
|
|
208
|
+
* @param depth Current recursion depth (internal, for guard)
|
|
209
|
+
* @returns Rendered HTML string
|
|
210
|
+
*/
|
|
211
|
+
export function renderSubreport(subreportDef, parentContext, parentDataSets, depth = 0) {
|
|
212
|
+
// Recursion guard
|
|
213
|
+
if (depth >= MAX_SUBREPORT_DEPTH) {
|
|
214
|
+
return `<div class="zr-subreport-error" style="color:red;font-size:12px;padding:4px;">Error: subreport depth limit (${MAX_SUBREPORT_DEPTH}) exceeded for "${subreportDef.id}"</div>`;
|
|
215
|
+
}
|
|
216
|
+
// ─── On-demand: render placeholder with deferred link ────────
|
|
217
|
+
if (subreportDef.type === 'on-demand') {
|
|
218
|
+
return renderOnDemandPlaceholder(subreportDef, parentContext);
|
|
219
|
+
}
|
|
220
|
+
// ─── Linked & Unlinked: full render ──────────────────────────
|
|
221
|
+
const childDataSets = subreportDef.type === 'unlinked'
|
|
222
|
+
? { ...parentDataSets }
|
|
223
|
+
: resolveSubreportData(subreportDef, parentContext, parentDataSets);
|
|
224
|
+
const childParams = buildSubreportParameters(subreportDef, parentContext);
|
|
225
|
+
// Render the subreport layout using the standard engine
|
|
226
|
+
const result = renderToHtml(subreportDef.layout, childDataSets, {
|
|
227
|
+
parameters: childParams,
|
|
228
|
+
cssPrefix: `zr-sub-${subreportDef.id}`,
|
|
229
|
+
});
|
|
230
|
+
// Combine all pages into one inline block (subreports are embedded)
|
|
231
|
+
const pagesHtml = result.pages.map((p) => p.html).join('');
|
|
232
|
+
// Handle page breaks: subreport pages are separated with a visual break
|
|
233
|
+
const wrappedHtml = `<div class="zr-subreport" data-subreport-id="${escapeAttr(subreportDef.id)}" data-subreport-type="${subreportDef.type}" data-depth="${depth}">${pagesHtml}</div>`;
|
|
234
|
+
return wrappedHtml;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Render an on-demand subreport placeholder.
|
|
238
|
+
* The actual content is deferred — the placeholder contains the data needed to render on click.
|
|
239
|
+
*/
|
|
240
|
+
function renderOnDemandPlaceholder(subreportDef, parentContext) {
|
|
241
|
+
// Serialize parameter link values for the placeholder
|
|
242
|
+
const linkData = {};
|
|
243
|
+
if (subreportDef.parameterLinks) {
|
|
244
|
+
for (const link of subreportDef.parameterLinks) {
|
|
245
|
+
linkData[link.childParameter] = resolveParentFieldValue(link.parentField, parentContext);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
const encodedData = escapeAttr(JSON.stringify(linkData));
|
|
249
|
+
const label = subreportDef.layout.name || subreportDef.id;
|
|
250
|
+
return `<div class="zr-subreport zr-subreport-on-demand" data-subreport-id="${escapeAttr(subreportDef.id)}" data-subreport-type="on-demand" data-link-params="${encodedData}"><a href="#" class="zr-subreport-link" onclick="event.preventDefault();this.parentElement.dispatchEvent(new CustomEvent('subreport-demand',{bubbles:true,detail:{id:'${escapeAttr(subreportDef.id)}',params:${escapeAttr(JSON.stringify(linkData))}}}));" style="color:#0066cc;text-decoration:underline;cursor:pointer;font-size:12px;">[${escapeHtml(label)}]</a></div>`;
|
|
251
|
+
}
|
|
252
|
+
// ─── Batch Rendering (registry) ────────────────────────────────────
|
|
253
|
+
/**
|
|
254
|
+
* Create a subreport registry to manage multiple subreports.
|
|
255
|
+
*/
|
|
256
|
+
export function createSubreportRegistry(subreports) {
|
|
257
|
+
return {
|
|
258
|
+
subreports,
|
|
259
|
+
sharedVariables: _sharedVars,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Find a subreport definition by ID in a registry or array.
|
|
264
|
+
*/
|
|
265
|
+
export function findSubreport(subreports, id) {
|
|
266
|
+
return subreports.find((s) => s.id === id);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Render a subreport element found inside a band.
|
|
270
|
+
* This is the entry point called by the HTML renderer when it encounters a subreport element.
|
|
271
|
+
*/
|
|
272
|
+
export function renderSubreportElement(element, subreports, parentContext, parentDataSets, depth = 0) {
|
|
273
|
+
const def = findSubreport(subreports, element.subreportId);
|
|
274
|
+
if (!def) {
|
|
275
|
+
return `<div class="zr-subreport-error" style="color:red;font-size:12px;padding:4px;">Subreport "${escapeHtml(element.subreportId)}" not found</div>`;
|
|
276
|
+
}
|
|
277
|
+
return renderSubreport(def, parentContext, parentDataSets, depth);
|
|
278
|
+
}
|
|
279
|
+
// ─── Utilities ─────────────────────────────────────────────────────
|
|
280
|
+
function escapeHtml(str) {
|
|
281
|
+
return str
|
|
282
|
+
.replace(/&/g, '&')
|
|
283
|
+
.replace(/</g, '<')
|
|
284
|
+
.replace(/>/g, '>')
|
|
285
|
+
.replace(/"/g, '"');
|
|
286
|
+
}
|
|
287
|
+
function escapeAttr(str) {
|
|
288
|
+
return str
|
|
289
|
+
.replace(/&/g, '&')
|
|
290
|
+
.replace(/"/g, '"')
|
|
291
|
+
.replace(/'/g, ''')
|
|
292
|
+
.replace(/</g, '<')
|
|
293
|
+
.replace(/>/g, '>');
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=subreport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subreport.js","sourceRoot":"","sources":["../../src/engine/subreport.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,8EAA8E;AAU9E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AA4B1D,sEAAsE;AAEtE,wEAAwE;AACxE,IAAI,WAAW,GAAyB,IAAI,GAAG,EAAE,CAAC;AAElD,wEAAwE;AACxE,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,KAAc;IAC5D,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,oBAAoB;IAClC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAC9B,CAAC;AAED,sEAAsE;AAEtE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,sEAAsE;AAEtE;;;;;GAKG;AACH,SAAS,cAAc,CACrB,UAAkB,EAClB,GAA4B;IAE5B,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAEzD,8BAA8B;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;gBACpD,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,OAAO;YAAE,OAAO,IAAI,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAC9B,SAAiB,EACjB,GAA4B;IAE5B,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,8BAA8B;IAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAC3B,4DAA4D,CAC7D,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;IAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEhD,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/B,KAAK,IAAI;YACP,OAAO,QAAQ,IAAI,YAAY,CAAC;QAClC,KAAK,IAAI;YACP,OAAO,QAAQ,IAAI,YAAY,CAAC;QAClC,KAAK,GAAG;YACN,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,KAAK,GAAG;YACN,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;QAClD,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;iBACjC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;iBACnB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtB,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC;IAC1C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sEAAsE;AAEtE;;;GAGG;AACH,SAAS,oBAAoB,CAC3B,YAA0B,EAC1B,aAA6B,EAC7B,cAAuB;IAEvB,MAAM,aAAa,GAAY,EAAE,GAAG,cAAc,EAAE,CAAC;IAErD,uDAAuD;IACvD,IAAI,YAAY,CAAC,UAAU,IAAI,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,IAAI,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzD,yDAAyD;QACzD,IACE,YAAY,CAAC,IAAI,KAAK,QAAQ;YAC9B,YAAY,CAAC,cAAc;YAC3B,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YACtC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EACzB,CAAC;YACD,UAAU,GAAG,gBAAgB,CAC3B,UAAU,EACV,YAAY,CAAC,cAAc,EAC3B,aAAa,CACd,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,IAAI,YAAY,CAAC,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/D,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACrC,cAAc,CAAC,YAAY,CAAC,gBAAiB,EAAE,GAAG,CAAC,CACpD,CAAC;QACJ,CAAC;QAED,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IACtD,CAAC;SAAM,IACL,YAAY,CAAC,IAAI,KAAK,QAAQ;QAC9B,YAAY,CAAC,cAAc;QAC3B,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EACtC,CAAC;QACD,mFAAmF;QACnF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,IAAI,QAAQ,GAAG,gBAAgB,CAC7B,MAAM,EACN,YAAY,CAAC,cAAc,EAC3B,aAAa,CACd,CAAC;gBACF,IAAI,YAAY,CAAC,gBAAgB,EAAE,CAAC;oBAClC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACjC,cAAc,CAAC,YAAY,CAAC,gBAAiB,EAAE,GAAG,CAAC,CACpD,CAAC;gBACJ,CAAC;gBACD,aAAa,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CACvB,IAA+B,EAC/B,cAAiE,EACjE,aAA6B;IAE7B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,uBAAuB,CACzC,IAAI,CAAC,WAAW,EAChB,aAAa,CACd,CAAC;YACF,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5C,IAAI,WAAW,KAAK,UAAU;gBAAE,OAAO,KAAK,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAC9B,SAAiB,EACjB,GAAmB;IAEnB,+CAA+C;IAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,GAAG,CAAC,UAAU,IAAI,SAAS,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,iBAAiB;IACjB,IAAI,GAAG,CAAC,UAAU,IAAI,SAAS,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,qCAAqC;IACrC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sEAAsE;AAEtE;;GAEG;AACH,SAAS,wBAAwB,CAC/B,YAA0B,EAC1B,aAA6B;IAE7B,MAAM,MAAM,GAA4B;QACtC,GAAG,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC;KACpC,CAAC;IAEF,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sEAAsE;AAEtE;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,YAA0B,EAC1B,aAA6B,EAC7B,cAAuB,EACvB,QAAgB,CAAC;IAEjB,kBAAkB;IAClB,IAAI,KAAK,IAAI,mBAAmB,EAAE,CAAC;QACjC,OAAO,+GAA+G,mBAAmB,mBAAmB,YAAY,CAAC,EAAE,SAAS,CAAC;IACvL,CAAC;IAED,gEAAgE;IAChE,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACtC,OAAO,yBAAyB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAChE,CAAC;IAED,gEAAgE;IAChE,MAAM,aAAa,GACjB,YAAY,CAAC,IAAI,KAAK,UAAU;QAC9B,CAAC,CAAC,EAAE,GAAG,cAAc,EAAE;QACvB,CAAC,CAAC,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,wBAAwB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAE1E,wDAAwD;IACxD,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE;QAC9D,UAAU,EAAE,WAAW;QACvB,SAAS,EAAE,UAAU,YAAY,CAAC,EAAE,EAAE;KACvC,CAAC,CAAC;IAEH,oEAAoE;IACpE,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE3D,wEAAwE;IACxE,MAAM,WAAW,GAAG,gDAAgD,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,0BAA0B,YAAY,CAAC,IAAI,iBAAiB,KAAK,KAAK,SAAS,QAAQ,CAAC;IAEvL,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAChC,YAA0B,EAC1B,aAA6B;IAE7B,sDAAsD;IACtD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,uBAAuB,CACrD,IAAI,CAAC,WAAW,EAChB,aAAa,CACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,GACT,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,EAAE,CAAC;IAE9C,OAAO,uEAAuE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,uDAAuD,WAAW,yKAAyK,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,0FAA0F,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC;AAC1hB,CAAC;AAED,sEAAsE;AAEtE;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAA0B;IAE1B,OAAO;QACL,UAAU;QACV,eAAe,EAAE,WAAW;KAC7B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,UAA0B,EAC1B,EAAU;IAEV,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAyB,EACzB,UAA0B,EAC1B,aAA6B,EAC7B,cAAuB,EACvB,QAAgB,CAAC;IAEjB,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,4FAA4F,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC;IACxJ,CAAC;IAED,OAAO,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,sEAAsE;AAEtE,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { Unit, PageSize, Margins, Position, ElementStyle, LineStyle, DataSourceDef, FieldDef, ElementType, BaseElement, TextElement, FieldElement, ImageElement, LineElement, RectElement, BarcodeElement, PageNumberElement, TotalPagesElement, CurrentDateElement, ReportElement, BandType, Band, SortDef, GroupDef, AggregateFunction, ReportLayout, ParameterDef, DataSet, RenderPage, RenderResult, RenderOptions, } from './types.js';
|
|
1
|
+
export type { Unit, PageSize, Margins, Position, ElementStyle, LineStyle, DataSourceDef, FieldDef, ElementType, BaseElement, TextElement, FieldElement, ImageElement, LineElement, RectElement, BarcodeElement, SubreportElement, CrossTabElement, PageNumberElement, TotalPagesElement, CurrentDateElement, ReportElement, BandType, Band, SortDef, GroupDef, AggregateFunction, RunningTotalDef as RunningTotalDefType, ConditionalFormatRule as ConditionalFormatRuleType, ReportLayout, ParameterDef, DataSet, RenderPage, RenderResult, RenderOptions, } from './types.js';
|
|
2
2
|
export { reportLayoutSchema, validateLayout, safeValidateLayout, } from './schema/report-schema.js';
|
|
3
3
|
export { processLayout, mmToPx, inToPx, ptToPx, toPx, } from './engine/band-engine.js';
|
|
4
4
|
export type { RenderedBand, PageContent, } from './engine/band-engine.js';
|
|
@@ -8,7 +8,17 @@ export { evaluateExpression, } from './engine/expression.js';
|
|
|
8
8
|
export { renderToHtml, renderToFullHtml, } from './render/html-renderer.js';
|
|
9
9
|
export { layoutToJson, jsonToLayout, safeJsonToLayout, downloadLayoutJson, createBlankLayout, } from './serialization/json.js';
|
|
10
10
|
export { generateQrSvg, generateBarcodeSvg, } from './visualization/barcode.js';
|
|
11
|
+
export { RunningTotalEngine } from './engine/running-totals.js';
|
|
12
|
+
export type { RunningTotalDef } from './engine/running-totals.js';
|
|
13
|
+
export { evaluateConditionalFormats, resolveRulesForBand, applyConditionalStyle, } from './engine/conditional-format.js';
|
|
14
|
+
export type { ConditionalFormatRule, ConditionalFormatResult, } from './engine/conditional-format.js';
|
|
11
15
|
export { PAGE_SIZES, getPageSizePreset, getPageSizesByCategory, } from './templates/page-sizes.js';
|
|
12
16
|
export type { PageSizePreset, } from './templates/page-sizes.js';
|
|
13
17
|
export { PRODUCT_BARCODE_LABEL, SHIPPING_LABEL, AVERY_5160_ADDRESS, AVERY_5371_BUSINESS_CARD, INVENTORY_QR_TAG, LABEL_TEMPLATES, } from './templates/label-templates.js';
|
|
18
|
+
export { renderSubreport, renderSubreportElement, createSubreportRegistry, findSubreport, setSharedVariable, getSharedVariable, clearSharedVariables, getSharedVariables, } from './engine/subreport.js';
|
|
19
|
+
export type { SubreportDef, SubreportRegistry, } from './engine/subreport.js';
|
|
20
|
+
export { buildCrossTab, renderCrossTabHtml, } from './engine/cross-tab.js';
|
|
21
|
+
export type { CrossTabDef, CrossTabField, CrossTabSummary, CrossTabResult, } from './engine/cross-tab.js';
|
|
22
|
+
export { executePass1, executePass2, executePass3, renderReport, getAggregate, getRunningTotal, } from './engine/multi-pass-engine.js';
|
|
23
|
+
export type { ReportContext, PrintState, } from './engine/multi-pass-engine.js';
|
|
14
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,aAAa,EACb,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,GACL,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,cAAc,GACf,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACL,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,GAChB,MAAM,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,eAAe,IAAI,mBAAmB,EACtC,qBAAqB,IAAI,yBAAyB,EAClD,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,aAAa,EACb,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,GACL,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,cAAc,GACf,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACL,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIlE,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AAExC,YAAY,EACV,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,YAAY,EACZ,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,aAAa,EACb,UAAU,GACX,MAAM,+BAA+B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,17 @@ export { renderToHtml, renderToFullHtml, } from './render/html-renderer.js';
|
|
|
13
13
|
export { layoutToJson, jsonToLayout, safeJsonToLayout, downloadLayoutJson, createBlankLayout, } from './serialization/json.js';
|
|
14
14
|
// ─── Barcode / QR ───────────────────────────────────────────────
|
|
15
15
|
export { generateQrSvg, generateBarcodeSvg, } from './visualization/barcode.js';
|
|
16
|
+
// ─── Running Totals ────────────────────────────────────────────────
|
|
17
|
+
export { RunningTotalEngine } from './engine/running-totals.js';
|
|
18
|
+
// ─── Conditional Formatting ────────────────────────────────────────
|
|
19
|
+
export { evaluateConditionalFormats, resolveRulesForBand, applyConditionalStyle, } from './engine/conditional-format.js';
|
|
16
20
|
// ─── Templates & Presets ────────────────────────────────────────
|
|
17
21
|
export { PAGE_SIZES, getPageSizePreset, getPageSizesByCategory, } from './templates/page-sizes.js';
|
|
18
22
|
export { PRODUCT_BARCODE_LABEL, SHIPPING_LABEL, AVERY_5160_ADDRESS, AVERY_5371_BUSINESS_CARD, INVENTORY_QR_TAG, LABEL_TEMPLATES, } from './templates/label-templates.js';
|
|
23
|
+
// ─── Subreport Engine ────────────────────────────────────────────────
|
|
24
|
+
export { renderSubreport, renderSubreportElement, createSubreportRegistry, findSubreport, setSharedVariable, getSharedVariable, clearSharedVariables, getSharedVariables, } from './engine/subreport.js';
|
|
25
|
+
// ─── Cross-Tab (Pivot Table) Engine ─────────────────────────────────
|
|
26
|
+
export { buildCrossTab, renderCrossTabHtml, } from './engine/cross-tab.js';
|
|
27
|
+
// ─── Multi-Pass Engine (Crystal Reports 3-pass model) ───────────────
|
|
28
|
+
export { executePass1, executePass2, executePass3, renderReport, getAggregate, getRunningTotal, } from './engine/multi-pass-engine.js';
|
|
19
29
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AA0CjE,sEAAsE;AAEtE,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,uEAAuE;AAEvE,OAAO,EACL,aAAa,EACb,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,GACL,MAAM,yBAAyB,CAAC;AAOjC,uEAAuE;AAEvE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAMlC,uEAAuE;AAEvE,OAAO,EACL,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,uEAAuE;AAEvE,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,uEAAuE;AAEvE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,mEAAmE;AAEnE,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAEpC,sEAAsE;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE,sEAAsE;AAEtE,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AAOxC,mEAAmE;AAEnE,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AAExC,wEAAwE;AAExE,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAO/B,uEAAuE;AAEvE,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAS/B,uEAAuE;AAEvE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,GAChB,MAAM,+BAA+B,CAAC"}
|