@pdfme/common 5.5.10-dev.13 → 5.5.10-dev.135

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 (103) hide show
  1. package/package.json +30 -55
  2. package/set-version.js +9 -4
  3. package/src/expression.ts +14 -5
  4. package/src/helper.ts +9 -3
  5. package/src/types.ts +20 -15
  6. package/tsconfig.build.json +14 -0
  7. package/tsconfig.json +14 -4
  8. package/vite.config.mts +33 -0
  9. package/dist/cjs/__tests__/dynamicTemplate.test.js +0 -337
  10. package/dist/cjs/__tests__/dynamicTemplate.test.js.map +0 -1
  11. package/dist/cjs/__tests__/expression.test.js +0 -474
  12. package/dist/cjs/__tests__/expression.test.js.map +0 -1
  13. package/dist/cjs/__tests__/helper.test.js +0 -647
  14. package/dist/cjs/__tests__/helper.test.js.map +0 -1
  15. package/dist/cjs/__tests__/pluginRegistry.test.js +0 -83
  16. package/dist/cjs/__tests__/pluginRegistry.test.js.map +0 -1
  17. package/dist/cjs/src/constants.js +0 -27
  18. package/dist/cjs/src/constants.js.map +0 -1
  19. package/dist/cjs/src/dynamicTemplate.js +0 -230
  20. package/dist/cjs/src/dynamicTemplate.js.map +0 -1
  21. package/dist/cjs/src/expression.js +0 -463
  22. package/dist/cjs/src/expression.js.map +0 -1
  23. package/dist/cjs/src/helper.js +0 -277
  24. package/dist/cjs/src/helper.js.map +0 -1
  25. package/dist/cjs/src/index.js +0 -43
  26. package/dist/cjs/src/index.js.map +0 -1
  27. package/dist/cjs/src/pluginRegistry.js +0 -33
  28. package/dist/cjs/src/pluginRegistry.js.map +0 -1
  29. package/dist/cjs/src/schema.js +0 -190
  30. package/dist/cjs/src/schema.js.map +0 -1
  31. package/dist/cjs/src/types.js +0 -3
  32. package/dist/cjs/src/types.js.map +0 -1
  33. package/dist/cjs/src/version.js +0 -5
  34. package/dist/cjs/src/version.js.map +0 -1
  35. package/dist/esm/__tests__/dynamicTemplate.test.js +0 -302
  36. package/dist/esm/__tests__/dynamicTemplate.test.js.map +0 -1
  37. package/dist/esm/__tests__/expression.test.js +0 -472
  38. package/dist/esm/__tests__/expression.test.js.map +0 -1
  39. package/dist/esm/__tests__/helper.test.js +0 -612
  40. package/dist/esm/__tests__/helper.test.js.map +0 -1
  41. package/dist/esm/__tests__/pluginRegistry.test.js +0 -81
  42. package/dist/esm/__tests__/pluginRegistry.test.js.map +0 -1
  43. package/dist/esm/src/constants.js +0 -24
  44. package/dist/esm/src/constants.js.map +0 -1
  45. package/dist/esm/src/dynamicTemplate.js +0 -226
  46. package/dist/esm/src/dynamicTemplate.js.map +0 -1
  47. package/dist/esm/src/expression.js +0 -426
  48. package/dist/esm/src/expression.js.map +0 -1
  49. package/dist/esm/src/helper.js +0 -252
  50. package/dist/esm/src/helper.js.map +0 -1
  51. package/dist/esm/src/index.js +0 -8
  52. package/dist/esm/src/index.js.map +0 -1
  53. package/dist/esm/src/pluginRegistry.js +0 -29
  54. package/dist/esm/src/pluginRegistry.js.map +0 -1
  55. package/dist/esm/src/schema.js +0 -187
  56. package/dist/esm/src/schema.js.map +0 -1
  57. package/dist/esm/src/types.js +0 -2
  58. package/dist/esm/src/types.js.map +0 -1
  59. package/dist/esm/src/version.js +0 -2
  60. package/dist/esm/src/version.js.map +0 -1
  61. package/dist/node/__tests__/dynamicTemplate.test.js +0 -337
  62. package/dist/node/__tests__/dynamicTemplate.test.js.map +0 -1
  63. package/dist/node/__tests__/expression.test.js +0 -474
  64. package/dist/node/__tests__/expression.test.js.map +0 -1
  65. package/dist/node/__tests__/helper.test.js +0 -647
  66. package/dist/node/__tests__/helper.test.js.map +0 -1
  67. package/dist/node/__tests__/pluginRegistry.test.js +0 -83
  68. package/dist/node/__tests__/pluginRegistry.test.js.map +0 -1
  69. package/dist/node/src/constants.js +0 -27
  70. package/dist/node/src/constants.js.map +0 -1
  71. package/dist/node/src/dynamicTemplate.js +0 -230
  72. package/dist/node/src/dynamicTemplate.js.map +0 -1
  73. package/dist/node/src/expression.js +0 -463
  74. package/dist/node/src/expression.js.map +0 -1
  75. package/dist/node/src/helper.js +0 -277
  76. package/dist/node/src/helper.js.map +0 -1
  77. package/dist/node/src/index.js +0 -43
  78. package/dist/node/src/index.js.map +0 -1
  79. package/dist/node/src/pluginRegistry.js +0 -33
  80. package/dist/node/src/pluginRegistry.js.map +0 -1
  81. package/dist/node/src/schema.js +0 -190
  82. package/dist/node/src/schema.js.map +0 -1
  83. package/dist/node/src/types.js +0 -3
  84. package/dist/node/src/types.js.map +0 -1
  85. package/dist/node/src/version.js +0 -5
  86. package/dist/node/src/version.js.map +0 -1
  87. package/dist/types/__tests__/dynamicTemplate.test.d.ts +0 -1
  88. package/dist/types/__tests__/expression.test.d.ts +0 -1
  89. package/dist/types/__tests__/helper.test.d.ts +0 -1
  90. package/dist/types/__tests__/pluginRegistry.test.d.ts +0 -1
  91. package/dist/types/src/constants.d.ts +0 -20
  92. package/dist/types/src/dynamicTemplate.d.ts +0 -27
  93. package/dist/types/src/expression.d.ts +0 -6
  94. package/dist/types/src/helper.d.ts +0 -36
  95. package/dist/types/src/index.d.ts +0 -9
  96. package/dist/types/src/pluginRegistry.d.ts +0 -5
  97. package/dist/types/src/schema.d.ts +0 -820
  98. package/dist/types/src/types.d.ts +0 -181
  99. package/dist/types/src/version.d.ts +0 -1
  100. package/eslint.config.mjs +0 -22
  101. package/tsconfig.cjs.json +0 -10
  102. package/tsconfig.esm.json +0 -11
  103. package/tsconfig.node.json +0 -11
@@ -1,230 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDynamicTemplate = void 0;
4
- const helper_js_1 = require("./helper.js");
5
- /** Floating point tolerance for comparisons */
6
- const EPSILON = 0.01;
7
- /** Calculate the content height of a page (drawable area excluding padding) */
8
- const getContentHeight = (basePdf) => basePdf.height - basePdf.padding[0] - basePdf.padding[2];
9
- /** Get the input value for a schema */
10
- const getSchemaValue = (schema, input) => (schema.readOnly ? schema.content : input?.[schema.name]) || '';
11
- /**
12
- * Normalize schemas within a single page into layout items.
13
- * Returns items sorted by Y coordinate with their order preserved.
14
- */
15
- function normalizePageSchemas(pageSchemas, paddingTop) {
16
- const items = [];
17
- const orderMap = new Map();
18
- pageSchemas.forEach((schema, index) => {
19
- // Guard against negative Y position when schema.y < paddingTop
20
- // Prevents "Cannot read properties of undefined (reading 'push')" error
21
- const localY = Math.max(0, schema.position.y - paddingTop);
22
- items.push({
23
- schema: (0, helper_js_1.cloneDeep)(schema),
24
- baseY: localY,
25
- height: schema.height,
26
- dynamicHeights: [schema.height], // Will be updated later
27
- });
28
- orderMap.set(schema.name, index);
29
- });
30
- // Sort by Y coordinate (preserve original order for same position)
31
- items.sort((a, b) => {
32
- if (Math.abs(a.baseY - b.baseY) > EPSILON) {
33
- return a.baseY - b.baseY;
34
- }
35
- return (orderMap.get(a.schema.name) ?? 0) - (orderMap.get(b.schema.name) ?? 0);
36
- });
37
- return { items, orderMap };
38
- }
39
- /**
40
- * Place rows on pages, splitting across pages as needed.
41
- * @returns The final global Y coordinate after placement
42
- */
43
- function placeRowsOnPages(schema, dynamicHeights, startGlobalY, contentHeight, paddingTop, pages) {
44
- let currentRowIndex = 0;
45
- let currentPageIndex = Math.floor(startGlobalY / contentHeight);
46
- let currentYInPage = startGlobalY % contentHeight;
47
- if (currentYInPage < 0)
48
- currentYInPage = 0;
49
- let actualGlobalEndY = 0;
50
- const isSplittable = dynamicHeights.length > 1;
51
- while (currentRowIndex < dynamicHeights.length) {
52
- // Ensure page exists
53
- while (pages.length <= currentPageIndex)
54
- pages.push([]);
55
- const spaceLeft = contentHeight - currentYInPage;
56
- const rowHeight = dynamicHeights[currentRowIndex];
57
- // If row doesn't fit, move to next page
58
- if (rowHeight > spaceLeft + EPSILON) {
59
- const isAtPageStart = Math.abs(spaceLeft - contentHeight) <= EPSILON;
60
- if (!isAtPageStart) {
61
- currentPageIndex++;
62
- currentYInPage = 0;
63
- continue;
64
- }
65
- // Force placement for oversized rows that don't fit even on a fresh page
66
- }
67
- // Pack as many rows as possible on this page
68
- let chunkHeight = 0;
69
- const startRowIndex = currentRowIndex;
70
- while (currentRowIndex < dynamicHeights.length) {
71
- const h = dynamicHeights[currentRowIndex];
72
- if (currentYInPage + chunkHeight + h <= contentHeight + EPSILON) {
73
- chunkHeight += h;
74
- currentRowIndex++;
75
- }
76
- else {
77
- break;
78
- }
79
- }
80
- // Don't leave header alone on a page without any data rows
81
- // If only header fits and there are data rows remaining, move everything to next page
82
- // BUT: if already at page top, don't move (prevents infinite loop when data row is too large)
83
- const isAtPageTop = currentYInPage <= EPSILON;
84
- if (isSplittable &&
85
- startRowIndex === 0 &&
86
- currentRowIndex === 1 &&
87
- dynamicHeights.length > 1 &&
88
- !isAtPageTop) {
89
- currentRowIndex = 0;
90
- currentPageIndex++;
91
- currentYInPage = 0;
92
- continue;
93
- }
94
- // Force at least one row to prevent infinite loop
95
- if (currentRowIndex === startRowIndex) {
96
- chunkHeight += dynamicHeights[currentRowIndex];
97
- currentRowIndex++;
98
- }
99
- // Create schema for this chunk
100
- const newSchema = {
101
- ...schema,
102
- height: chunkHeight,
103
- position: { ...schema.position, y: currentYInPage + paddingTop },
104
- };
105
- // Set bodyRange for splittable elements
106
- // dynamicHeights[0] = header row, dynamicHeights[1] = body[0]
107
- // So subtract 1 to convert to body index
108
- if (isSplittable) {
109
- newSchema.__bodyRange = {
110
- start: startRowIndex === 0 ? 0 : startRowIndex - 1,
111
- end: currentRowIndex - 1,
112
- };
113
- newSchema.__isSplit = startRowIndex > 0;
114
- }
115
- pages[currentPageIndex].push(newSchema);
116
- // Update position
117
- currentYInPage += chunkHeight;
118
- if (currentYInPage >= contentHeight - EPSILON) {
119
- currentPageIndex++;
120
- currentYInPage = 0;
121
- }
122
- actualGlobalEndY = currentPageIndex * contentHeight + currentYInPage;
123
- }
124
- return actualGlobalEndY;
125
- }
126
- /** Sort elements within each page by their original order */
127
- function sortPagesByOrder(pages, orderMap) {
128
- pages.forEach((page) => {
129
- page.sort((a, b) => (orderMap.get(a.name) ?? 0) - (orderMap.get(b.name) ?? 0));
130
- });
131
- }
132
- /** Remove trailing empty pages */
133
- function removeTrailingEmptyPages(pages) {
134
- while (pages.length > 1 && pages[pages.length - 1].length === 0) {
135
- pages.pop();
136
- }
137
- }
138
- /**
139
- * Process a single template page that has dynamic content.
140
- * Uses the same layout algorithm as the original implementation,
141
- * but scoped to a single page's schemas.
142
- */
143
- function processDynamicPage(items, orderMap, contentHeight, paddingTop) {
144
- const pages = [];
145
- let totalYOffset = 0;
146
- for (const item of items) {
147
- const currentGlobalStartY = item.baseY + totalYOffset;
148
- const actualGlobalEndY = placeRowsOnPages(item.schema, item.dynamicHeights, currentGlobalStartY, contentHeight, paddingTop, pages);
149
- // Update offset: difference between actual and original end position
150
- const originalGlobalEndY = item.baseY + item.height;
151
- totalYOffset = actualGlobalEndY - originalGlobalEndY;
152
- }
153
- sortPagesByOrder(pages, orderMap);
154
- removeTrailingEmptyPages(pages);
155
- return pages;
156
- }
157
- /**
158
- * Process a template containing tables with dynamic heights
159
- * and generate a new template with proper page breaks.
160
- *
161
- * Processing is done page-by-page:
162
- * - Pages with height changes are processed with full layout calculations
163
- * - Pages without height changes are copied as-is (no offset propagation between pages)
164
- *
165
- * This reduces computation cost by:
166
- * 1. Limiting layout calculations to pages that need them
167
- * 2. Avoiding cross-page offset propagation for static pages
168
- */
169
- const getDynamicTemplate = async (arg) => {
170
- const { template, input, options, _cache, getDynamicHeights } = arg;
171
- const basePdf = template.basePdf;
172
- if (!(0, helper_js_1.isBlankPdf)(basePdf)) {
173
- return template;
174
- }
175
- const contentHeight = getContentHeight(basePdf);
176
- const paddingTop = basePdf.padding[0];
177
- const resultPages = [];
178
- const PARALLEL_LIMIT = 10;
179
- // Process each template page independently
180
- for (let pageIndex = 0; pageIndex < template.schemas.length; pageIndex++) {
181
- const pageSchemas = template.schemas[pageIndex];
182
- // Normalize this page's schemas
183
- const { items, orderMap } = normalizePageSchemas(pageSchemas, paddingTop);
184
- // Calculate dynamic heights for this page's schemas with concurrency limit
185
- for (let i = 0; i < items.length; i += PARALLEL_LIMIT) {
186
- const chunk = items.slice(i, i + PARALLEL_LIMIT);
187
- const chunkResults = await Promise.all(chunk.map((item) => {
188
- const value = getSchemaValue(item.schema, input);
189
- return getDynamicHeights(value, {
190
- schema: item.schema,
191
- basePdf,
192
- options,
193
- _cache,
194
- }).then((heights) => (heights.length === 0 ? [0] : heights));
195
- }));
196
- // Update items with calculated heights
197
- for (let j = 0; j < chunkResults.length; j++) {
198
- items[i + j].dynamicHeights = chunkResults[j];
199
- }
200
- }
201
- // Process all pages independently (no cross-page offset propagation)
202
- const processedPages = processDynamicPage(items, orderMap, contentHeight, paddingTop);
203
- resultPages.push(...processedPages);
204
- }
205
- removeTrailingEmptyPages(resultPages);
206
- // Check if anything changed - return original template if not
207
- if (resultPages.length === template.schemas.length) {
208
- let unchanged = true;
209
- for (let i = 0; i < resultPages.length && unchanged; i++) {
210
- if (resultPages[i].length !== template.schemas[i].length) {
211
- unchanged = false;
212
- break;
213
- }
214
- for (let j = 0; j < resultPages[i].length && unchanged; j++) {
215
- const orig = template.schemas[i][j];
216
- const result = resultPages[i][j];
217
- if (Math.abs(orig.height - result.height) > EPSILON ||
218
- Math.abs(orig.position.y - result.position.y) > EPSILON) {
219
- unchanged = false;
220
- }
221
- }
222
- }
223
- if (unchanged) {
224
- return template;
225
- }
226
- }
227
- return { basePdf, schemas: resultPages };
228
- };
229
- exports.getDynamicTemplate = getDynamicTemplate;
230
- //# sourceMappingURL=dynamicTemplate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dynamicTemplate.js","sourceRoot":"","sources":["../../../src/dynamicTemplate.ts"],"names":[],"mappings":"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"}