docxodus 3.7.0 → 3.8.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/pagination.bundle.js +239 -8
- package/dist/pagination.d.ts +61 -0
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +275 -16
- package/dist/pagination.js.map +1 -1
- package/dist/wasm/_framework/Docxodus.wasm +0 -0
- package/dist/wasm/_framework/DocxodusWasm.wasm +0 -0
- package/dist/wasm/_framework/blazor.boot.json +3 -3
- package/package.json +1 -1
|
@@ -33,6 +33,7 @@ var DocxodusPagination = (() => {
|
|
|
33
33
|
function ptToPx(pt) {
|
|
34
34
|
return pt / 0.75;
|
|
35
35
|
}
|
|
36
|
+
var DEFAULT_HEADER_FOOTER_HEIGHT = 36;
|
|
36
37
|
function parseDimensions(section) {
|
|
37
38
|
const pageWidth = parseFloat(section.dataset.pageWidth || "") || DEFAULT_PAGE_WIDTH;
|
|
38
39
|
const pageHeight = parseFloat(section.dataset.pageHeight || "") || DEFAULT_PAGE_HEIGHT;
|
|
@@ -42,6 +43,8 @@ var DocxodusPagination = (() => {
|
|
|
42
43
|
const marginRight = parseFloat(section.dataset.marginRight || "") || DEFAULT_MARGIN;
|
|
43
44
|
const marginBottom = parseFloat(section.dataset.marginBottom || "") || DEFAULT_MARGIN;
|
|
44
45
|
const marginLeft = parseFloat(section.dataset.marginLeft || "") || DEFAULT_MARGIN;
|
|
46
|
+
const headerHeight = parseFloat(section.dataset.headerHeight || "") || DEFAULT_HEADER_FOOTER_HEIGHT;
|
|
47
|
+
const footerHeight = parseFloat(section.dataset.footerHeight || "") || DEFAULT_HEADER_FOOTER_HEIGHT;
|
|
45
48
|
return {
|
|
46
49
|
pageWidth,
|
|
47
50
|
pageHeight,
|
|
@@ -50,7 +53,9 @@ var DocxodusPagination = (() => {
|
|
|
50
53
|
marginTop,
|
|
51
54
|
marginRight,
|
|
52
55
|
marginBottom,
|
|
53
|
-
marginLeft
|
|
56
|
+
marginLeft,
|
|
57
|
+
headerHeight,
|
|
58
|
+
footerHeight
|
|
54
59
|
};
|
|
55
60
|
}
|
|
56
61
|
var PaginationEngine = class {
|
|
@@ -74,6 +79,8 @@ var DocxodusPagination = (() => {
|
|
|
74
79
|
this.cssPrefix = options.cssPrefix ?? "page-";
|
|
75
80
|
this.showPageNumbers = options.showPageNumbers ?? true;
|
|
76
81
|
this.pageGap = options.pageGap ?? 20;
|
|
82
|
+
this.hfRegistry = /* @__PURE__ */ new Map();
|
|
83
|
+
this.footnoteRegistry = /* @__PURE__ */ new Map();
|
|
77
84
|
}
|
|
78
85
|
/**
|
|
79
86
|
* Runs the pagination process.
|
|
@@ -83,6 +90,8 @@ var DocxodusPagination = (() => {
|
|
|
83
90
|
paginate() {
|
|
84
91
|
const pages = [];
|
|
85
92
|
let pageNumber = 1;
|
|
93
|
+
this.hfRegistry = this.parseHeaderFooterRegistry();
|
|
94
|
+
this.footnoteRegistry = this.parseFootnoteRegistry();
|
|
86
95
|
const sections = this.stagingElement.querySelectorAll(
|
|
87
96
|
"[data-section-index]"
|
|
88
97
|
);
|
|
@@ -136,23 +145,185 @@ var DocxodusPagination = (() => {
|
|
|
136
145
|
}
|
|
137
146
|
return blocks;
|
|
138
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Parses the header/footer registry from the staging element.
|
|
150
|
+
*/
|
|
151
|
+
parseHeaderFooterRegistry() {
|
|
152
|
+
const registry = /* @__PURE__ */ new Map();
|
|
153
|
+
const registryEl = this.stagingElement.querySelector("#pagination-hf-registry");
|
|
154
|
+
if (!registryEl) return registry;
|
|
155
|
+
const entries = Array.from(registryEl.querySelectorAll("[data-section][data-hf-type]"));
|
|
156
|
+
for (const entry of entries) {
|
|
157
|
+
const sectionIndex = parseInt(entry.dataset.section || "0", 10);
|
|
158
|
+
const hfType = entry.dataset.hfType;
|
|
159
|
+
if (!registry.has(sectionIndex)) {
|
|
160
|
+
registry.set(sectionIndex, {});
|
|
161
|
+
}
|
|
162
|
+
const section = registry.get(sectionIndex);
|
|
163
|
+
const content = entry.cloneNode(true);
|
|
164
|
+
switch (hfType) {
|
|
165
|
+
case "header-default":
|
|
166
|
+
section.headerDefault = content;
|
|
167
|
+
break;
|
|
168
|
+
case "header-first":
|
|
169
|
+
section.headerFirst = content;
|
|
170
|
+
break;
|
|
171
|
+
case "header-even":
|
|
172
|
+
section.headerEven = content;
|
|
173
|
+
break;
|
|
174
|
+
case "footer-default":
|
|
175
|
+
section.footerDefault = content;
|
|
176
|
+
break;
|
|
177
|
+
case "footer-first":
|
|
178
|
+
section.footerFirst = content;
|
|
179
|
+
break;
|
|
180
|
+
case "footer-even":
|
|
181
|
+
section.footerEven = content;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return registry;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Parses the footnote registry from the staging element.
|
|
189
|
+
*/
|
|
190
|
+
parseFootnoteRegistry() {
|
|
191
|
+
const registry = /* @__PURE__ */ new Map();
|
|
192
|
+
const registryEl = this.stagingElement.querySelector("#pagination-footnote-registry");
|
|
193
|
+
if (!registryEl) return registry;
|
|
194
|
+
const entries = Array.from(registryEl.querySelectorAll("[data-footnote-id]"));
|
|
195
|
+
for (const entry of entries) {
|
|
196
|
+
const footnoteId = entry.dataset.footnoteId;
|
|
197
|
+
if (footnoteId) {
|
|
198
|
+
registry.set(footnoteId, entry.cloneNode(true));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return registry;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Extracts footnote reference IDs from an element.
|
|
205
|
+
*/
|
|
206
|
+
extractFootnoteRefs(element) {
|
|
207
|
+
const refs = element.querySelectorAll("[data-footnote-id]");
|
|
208
|
+
const ids = [];
|
|
209
|
+
for (const ref of Array.from(refs)) {
|
|
210
|
+
const id = ref.dataset.footnoteId;
|
|
211
|
+
if (id && !ids.includes(id)) {
|
|
212
|
+
ids.push(id);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return ids;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Measures the height of footnotes for given IDs (in points).
|
|
219
|
+
* Creates a temporary container to measure the footnotes.
|
|
220
|
+
*/
|
|
221
|
+
measureFootnotesHeight(footnoteIds, contentWidth) {
|
|
222
|
+
if (footnoteIds.length === 0 || this.footnoteRegistry.size === 0) {
|
|
223
|
+
return 0;
|
|
224
|
+
}
|
|
225
|
+
const measureContainer = document.createElement("div");
|
|
226
|
+
measureContainer.style.position = "absolute";
|
|
227
|
+
measureContainer.style.visibility = "hidden";
|
|
228
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
229
|
+
measureContainer.style.left = "-9999px";
|
|
230
|
+
const hr = document.createElement("hr");
|
|
231
|
+
measureContainer.appendChild(hr);
|
|
232
|
+
for (const id of footnoteIds) {
|
|
233
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
234
|
+
if (footnote) {
|
|
235
|
+
measureContainer.appendChild(footnote.cloneNode(true));
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
this.stagingElement.appendChild(measureContainer);
|
|
239
|
+
const rect = measureContainer.getBoundingClientRect();
|
|
240
|
+
const heightPt = pxToPt(rect.height);
|
|
241
|
+
this.stagingElement.removeChild(measureContainer);
|
|
242
|
+
return heightPt;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Adds footnotes to a page container.
|
|
246
|
+
*/
|
|
247
|
+
addPageFootnotes(pageBox, footnoteIds, dims) {
|
|
248
|
+
if (footnoteIds.length === 0 || this.footnoteRegistry.size === 0) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const footnotesDiv = document.createElement("div");
|
|
252
|
+
footnotesDiv.className = `${this.cssPrefix}footnotes`;
|
|
253
|
+
footnotesDiv.style.position = "absolute";
|
|
254
|
+
footnotesDiv.style.bottom = `${dims.marginBottom}pt`;
|
|
255
|
+
footnotesDiv.style.left = `${dims.marginLeft}pt`;
|
|
256
|
+
footnotesDiv.style.width = `${dims.contentWidth}pt`;
|
|
257
|
+
footnotesDiv.style.boxSizing = "border-box";
|
|
258
|
+
const hr = document.createElement("hr");
|
|
259
|
+
footnotesDiv.appendChild(hr);
|
|
260
|
+
for (const id of footnoteIds) {
|
|
261
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
262
|
+
if (footnote) {
|
|
263
|
+
footnotesDiv.appendChild(footnote.cloneNode(true));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
pageBox.appendChild(footnotesDiv);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Selects the appropriate header for a page based on section, page position, and page number.
|
|
270
|
+
*/
|
|
271
|
+
selectHeader(sectionIndex, pageInSection, globalPageNumber) {
|
|
272
|
+
const sectionHf = this.hfRegistry.get(sectionIndex);
|
|
273
|
+
if (!sectionHf) return void 0;
|
|
274
|
+
if (pageInSection === 1 && sectionHf.headerFirst) {
|
|
275
|
+
return sectionHf.headerFirst;
|
|
276
|
+
}
|
|
277
|
+
if (globalPageNumber % 2 === 0 && sectionHf.headerEven) {
|
|
278
|
+
return sectionHf.headerEven;
|
|
279
|
+
}
|
|
280
|
+
return sectionHf.headerDefault;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Selects the appropriate footer for a page based on section, page position, and page number.
|
|
284
|
+
*/
|
|
285
|
+
selectFooter(sectionIndex, pageInSection, globalPageNumber) {
|
|
286
|
+
const sectionHf = this.hfRegistry.get(sectionIndex);
|
|
287
|
+
if (!sectionHf) return void 0;
|
|
288
|
+
if (pageInSection === 1 && sectionHf.footerFirst) {
|
|
289
|
+
return sectionHf.footerFirst;
|
|
290
|
+
}
|
|
291
|
+
if (globalPageNumber % 2 === 0 && sectionHf.footerEven) {
|
|
292
|
+
return sectionHf.footerEven;
|
|
293
|
+
}
|
|
294
|
+
return sectionHf.footerDefault;
|
|
295
|
+
}
|
|
139
296
|
/**
|
|
140
297
|
* Flows measured blocks into page containers.
|
|
298
|
+
* Implements a single-pass, forward-only algorithm that is compatible with future lazy loading.
|
|
141
299
|
*/
|
|
142
300
|
flowToPages(blocks, dims, startPageNumber, sectionIndex) {
|
|
143
301
|
const pages = [];
|
|
144
302
|
let currentContent = [];
|
|
145
303
|
let remainingHeight = dims.contentHeight;
|
|
146
304
|
let pageNumber = startPageNumber;
|
|
305
|
+
let pageInSection = 1;
|
|
147
306
|
let prevMarginBottomPt = 0;
|
|
307
|
+
let currentFootnoteIds = [];
|
|
308
|
+
let currentFootnoteHeight = 0;
|
|
148
309
|
const finishPage = () => {
|
|
149
310
|
if (currentContent.length === 0) return;
|
|
150
|
-
const page = this.createPage(
|
|
311
|
+
const page = this.createPage(
|
|
312
|
+
dims,
|
|
313
|
+
pageNumber,
|
|
314
|
+
sectionIndex,
|
|
315
|
+
currentContent,
|
|
316
|
+
pageInSection,
|
|
317
|
+
currentFootnoteIds
|
|
318
|
+
);
|
|
151
319
|
pages.push(page);
|
|
152
320
|
pageNumber++;
|
|
321
|
+
pageInSection++;
|
|
153
322
|
currentContent = [];
|
|
154
323
|
remainingHeight = dims.contentHeight;
|
|
155
324
|
prevMarginBottomPt = 0;
|
|
325
|
+
currentFootnoteIds = [];
|
|
326
|
+
currentFootnoteHeight = 0;
|
|
156
327
|
};
|
|
157
328
|
for (let i = 0; i < blocks.length; i++) {
|
|
158
329
|
const block = blocks[i];
|
|
@@ -164,32 +335,49 @@ var DocxodusPagination = (() => {
|
|
|
164
335
|
if (block.pageBreakBefore && currentContent.length > 0) {
|
|
165
336
|
finishPage();
|
|
166
337
|
}
|
|
338
|
+
const blockFootnoteIds = this.extractFootnoteRefs(block.element);
|
|
339
|
+
const newFootnoteIds = blockFootnoteIds.filter((id) => !currentFootnoteIds.includes(id));
|
|
340
|
+
let additionalFootnoteHeight = 0;
|
|
341
|
+
if (newFootnoteIds.length > 0 && this.footnoteRegistry.size > 0) {
|
|
342
|
+
const combinedFootnoteIds = [...currentFootnoteIds, ...newFootnoteIds];
|
|
343
|
+
const totalFootnoteHeight = this.measureFootnotesHeight(combinedFootnoteIds, dims.contentWidth);
|
|
344
|
+
additionalFootnoteHeight = totalFootnoteHeight - currentFootnoteHeight;
|
|
345
|
+
}
|
|
167
346
|
const isFirstOnPage = currentContent.length === 0;
|
|
168
347
|
let effectiveMarginTop = block.marginTopPt;
|
|
169
348
|
if (!isFirstOnPage) {
|
|
170
349
|
effectiveMarginTop = Math.max(block.marginTopPt, prevMarginBottomPt) - prevMarginBottomPt;
|
|
171
350
|
}
|
|
172
|
-
const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt;
|
|
351
|
+
const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt + additionalFootnoteHeight;
|
|
173
352
|
let neededHeight = blockSpace;
|
|
174
353
|
if (block.keepWithNext && nextBlock && !nextBlock.isPageBreak) {
|
|
175
354
|
const collapsedMargin = Math.max(block.marginBottomPt, nextBlock.marginTopPt);
|
|
176
|
-
neededHeight = effectiveMarginTop + block.heightPt + collapsedMargin + nextBlock.heightPt + nextBlock.marginBottomPt;
|
|
355
|
+
neededHeight = effectiveMarginTop + block.heightPt + collapsedMargin + nextBlock.heightPt + nextBlock.marginBottomPt + additionalFootnoteHeight;
|
|
177
356
|
}
|
|
178
|
-
|
|
357
|
+
const effectiveRemainingHeight = remainingHeight - currentFootnoteHeight;
|
|
358
|
+
if (blockSpace <= effectiveRemainingHeight) {
|
|
179
359
|
currentContent.push(block.element.cloneNode(true));
|
|
180
|
-
remainingHeight -=
|
|
360
|
+
remainingHeight -= effectiveMarginTop + block.heightPt + block.marginBottomPt;
|
|
181
361
|
prevMarginBottomPt = block.marginBottomPt;
|
|
182
|
-
|
|
362
|
+
if (newFootnoteIds.length > 0) {
|
|
363
|
+
currentFootnoteIds.push(...newFootnoteIds);
|
|
364
|
+
currentFootnoteHeight += additionalFootnoteHeight;
|
|
365
|
+
}
|
|
366
|
+
} else if (block.heightPt + block.marginTopPt + block.marginBottomPt + additionalFootnoteHeight <= dims.contentHeight) {
|
|
183
367
|
finishPage();
|
|
368
|
+
const newPageFootnoteHeight = blockFootnoteIds.length > 0 ? this.measureFootnotesHeight(blockFootnoteIds, dims.contentWidth) : 0;
|
|
184
369
|
const newPageSpace = block.marginTopPt + block.heightPt + block.marginBottomPt;
|
|
185
370
|
currentContent.push(block.element.cloneNode(true));
|
|
186
371
|
remainingHeight = dims.contentHeight - newPageSpace;
|
|
187
372
|
prevMarginBottomPt = block.marginBottomPt;
|
|
373
|
+
currentFootnoteIds = [...blockFootnoteIds];
|
|
374
|
+
currentFootnoteHeight = newPageFootnoteHeight;
|
|
188
375
|
} else {
|
|
189
376
|
if (currentContent.length > 0) {
|
|
190
377
|
finishPage();
|
|
191
378
|
}
|
|
192
379
|
currentContent.push(block.element.cloneNode(true));
|
|
380
|
+
currentFootnoteIds = [...blockFootnoteIds];
|
|
193
381
|
finishPage();
|
|
194
382
|
}
|
|
195
383
|
}
|
|
@@ -199,7 +387,7 @@ var DocxodusPagination = (() => {
|
|
|
199
387
|
/**
|
|
200
388
|
* Creates a page container element.
|
|
201
389
|
*/
|
|
202
|
-
createPage(dims, pageNumber, sectionIndex, content) {
|
|
390
|
+
createPage(dims, pageNumber, sectionIndex, content, pageInSection, footnoteIds = []) {
|
|
203
391
|
const pageBox = document.createElement("div");
|
|
204
392
|
pageBox.className = `${this.cssPrefix}box`;
|
|
205
393
|
pageBox.style.width = `${dims.pageWidth}pt`;
|
|
@@ -221,6 +409,26 @@ var DocxodusPagination = (() => {
|
|
|
221
409
|
pageBox.style.contain = "layout paint";
|
|
222
410
|
pageBox.dataset.pageNumber = String(pageNumber);
|
|
223
411
|
pageBox.dataset.sectionIndex = String(sectionIndex);
|
|
412
|
+
const headerSource = this.selectHeader(sectionIndex, pageInSection, pageNumber);
|
|
413
|
+
if (headerSource) {
|
|
414
|
+
const headerDiv = document.createElement("div");
|
|
415
|
+
headerDiv.className = `${this.cssPrefix}header`;
|
|
416
|
+
headerDiv.style.position = "absolute";
|
|
417
|
+
headerDiv.style.top = "0";
|
|
418
|
+
headerDiv.style.left = `${dims.marginLeft}pt`;
|
|
419
|
+
headerDiv.style.width = `${dims.contentWidth}pt`;
|
|
420
|
+
headerDiv.style.height = `${dims.marginTop}pt`;
|
|
421
|
+
headerDiv.style.overflow = "hidden";
|
|
422
|
+
headerDiv.style.boxSizing = "border-box";
|
|
423
|
+
headerDiv.style.display = "flex";
|
|
424
|
+
headerDiv.style.flexDirection = "column";
|
|
425
|
+
headerDiv.style.justifyContent = "flex-end";
|
|
426
|
+
headerDiv.style.paddingBottom = "4pt";
|
|
427
|
+
for (const child of Array.from(headerSource.childNodes)) {
|
|
428
|
+
headerDiv.appendChild(child.cloneNode(true));
|
|
429
|
+
}
|
|
430
|
+
pageBox.appendChild(headerDiv);
|
|
431
|
+
}
|
|
224
432
|
const contentArea = document.createElement("div");
|
|
225
433
|
contentArea.className = `${this.cssPrefix}content`;
|
|
226
434
|
contentArea.style.position = "absolute";
|
|
@@ -233,6 +441,29 @@ var DocxodusPagination = (() => {
|
|
|
233
441
|
contentArea.appendChild(el);
|
|
234
442
|
}
|
|
235
443
|
pageBox.appendChild(contentArea);
|
|
444
|
+
if (footnoteIds.length > 0) {
|
|
445
|
+
this.addPageFootnotes(pageBox, footnoteIds, dims);
|
|
446
|
+
}
|
|
447
|
+
const footerSource = this.selectFooter(sectionIndex, pageInSection, pageNumber);
|
|
448
|
+
if (footerSource) {
|
|
449
|
+
const footerDiv = document.createElement("div");
|
|
450
|
+
footerDiv.className = `${this.cssPrefix}footer`;
|
|
451
|
+
footerDiv.style.position = "absolute";
|
|
452
|
+
footerDiv.style.bottom = "0";
|
|
453
|
+
footerDiv.style.left = `${dims.marginLeft}pt`;
|
|
454
|
+
footerDiv.style.width = `${dims.contentWidth}pt`;
|
|
455
|
+
footerDiv.style.height = `${dims.marginBottom}pt`;
|
|
456
|
+
footerDiv.style.overflow = "hidden";
|
|
457
|
+
footerDiv.style.boxSizing = "border-box";
|
|
458
|
+
footerDiv.style.display = "flex";
|
|
459
|
+
footerDiv.style.flexDirection = "column";
|
|
460
|
+
footerDiv.style.justifyContent = "flex-start";
|
|
461
|
+
footerDiv.style.paddingTop = "4pt";
|
|
462
|
+
for (const child of Array.from(footerSource.childNodes)) {
|
|
463
|
+
footerDiv.appendChild(child.cloneNode(true));
|
|
464
|
+
}
|
|
465
|
+
pageBox.appendChild(footerDiv);
|
|
466
|
+
}
|
|
236
467
|
if (this.showPageNumbers) {
|
|
237
468
|
const pageNum = document.createElement("div");
|
|
238
469
|
pageNum.className = `${this.cssPrefix}number`;
|
package/dist/pagination.d.ts
CHANGED
|
@@ -24,7 +24,32 @@ export interface PageDimensions {
|
|
|
24
24
|
marginBottom: number;
|
|
25
25
|
/** Left margin in points */
|
|
26
26
|
marginLeft: number;
|
|
27
|
+
/** Header distance from top of page in points */
|
|
28
|
+
headerHeight: number;
|
|
29
|
+
/** Footer distance from bottom of page in points */
|
|
30
|
+
footerHeight: number;
|
|
27
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Headers and footers for a specific section.
|
|
34
|
+
*/
|
|
35
|
+
export interface SectionHeaderFooter {
|
|
36
|
+
/** Default header (used for odd pages or all pages) */
|
|
37
|
+
headerDefault?: HTMLElement;
|
|
38
|
+
/** First page header */
|
|
39
|
+
headerFirst?: HTMLElement;
|
|
40
|
+
/** Even page header */
|
|
41
|
+
headerEven?: HTMLElement;
|
|
42
|
+
/** Default footer (used for odd pages or all pages) */
|
|
43
|
+
footerDefault?: HTMLElement;
|
|
44
|
+
/** First page footer */
|
|
45
|
+
footerFirst?: HTMLElement;
|
|
46
|
+
/** Even page footer */
|
|
47
|
+
footerEven?: HTMLElement;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Registry of headers and footers by section index.
|
|
51
|
+
*/
|
|
52
|
+
export type HeaderFooterRegistry = Map<number, SectionHeaderFooter>;
|
|
28
53
|
/**
|
|
29
54
|
* A measured content block with metadata for pagination decisions.
|
|
30
55
|
*/
|
|
@@ -85,6 +110,10 @@ export interface PaginationOptions {
|
|
|
85
110
|
* Pagination engine that converts HTML with pagination metadata
|
|
86
111
|
* into a paginated view with fixed-size page containers.
|
|
87
112
|
*/
|
|
113
|
+
/**
|
|
114
|
+
* Registry of footnotes by ID for per-page distribution.
|
|
115
|
+
*/
|
|
116
|
+
export type FootnoteRegistry = Map<string, HTMLElement>;
|
|
88
117
|
export declare class PaginationEngine {
|
|
89
118
|
private stagingElement;
|
|
90
119
|
private containerElement;
|
|
@@ -92,6 +121,8 @@ export declare class PaginationEngine {
|
|
|
92
121
|
private cssPrefix;
|
|
93
122
|
private showPageNumbers;
|
|
94
123
|
private pageGap;
|
|
124
|
+
private hfRegistry;
|
|
125
|
+
private footnoteRegistry;
|
|
95
126
|
/**
|
|
96
127
|
* Creates a new pagination engine.
|
|
97
128
|
*
|
|
@@ -110,8 +141,38 @@ export declare class PaginationEngine {
|
|
|
110
141
|
* Measures all content blocks in a section.
|
|
111
142
|
*/
|
|
112
143
|
private measureBlocks;
|
|
144
|
+
/**
|
|
145
|
+
* Parses the header/footer registry from the staging element.
|
|
146
|
+
*/
|
|
147
|
+
private parseHeaderFooterRegistry;
|
|
148
|
+
/**
|
|
149
|
+
* Parses the footnote registry from the staging element.
|
|
150
|
+
*/
|
|
151
|
+
private parseFootnoteRegistry;
|
|
152
|
+
/**
|
|
153
|
+
* Extracts footnote reference IDs from an element.
|
|
154
|
+
*/
|
|
155
|
+
private extractFootnoteRefs;
|
|
156
|
+
/**
|
|
157
|
+
* Measures the height of footnotes for given IDs (in points).
|
|
158
|
+
* Creates a temporary container to measure the footnotes.
|
|
159
|
+
*/
|
|
160
|
+
private measureFootnotesHeight;
|
|
161
|
+
/**
|
|
162
|
+
* Adds footnotes to a page container.
|
|
163
|
+
*/
|
|
164
|
+
private addPageFootnotes;
|
|
165
|
+
/**
|
|
166
|
+
* Selects the appropriate header for a page based on section, page position, and page number.
|
|
167
|
+
*/
|
|
168
|
+
private selectHeader;
|
|
169
|
+
/**
|
|
170
|
+
* Selects the appropriate footer for a page based on section, page position, and page number.
|
|
171
|
+
*/
|
|
172
|
+
private selectFooter;
|
|
113
173
|
/**
|
|
114
174
|
* Flows measured blocks into page containers.
|
|
175
|
+
* Implements a single-pass, forward-only algorithm that is compatible with future lazy loading.
|
|
115
176
|
*/
|
|
116
177
|
private flowToPages;
|
|
117
178
|
/**
|
package/dist/pagination.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
|
package/dist/pagination.js
CHANGED
|
@@ -20,6 +20,8 @@ function pxToPt(px) {
|
|
|
20
20
|
function ptToPx(pt) {
|
|
21
21
|
return pt / 0.75;
|
|
22
22
|
}
|
|
23
|
+
// Default header/footer distance (0.5 inch)
|
|
24
|
+
const DEFAULT_HEADER_FOOTER_HEIGHT = 36;
|
|
23
25
|
/**
|
|
24
26
|
* Parses page dimensions from a section element's data attributes.
|
|
25
27
|
*/
|
|
@@ -32,6 +34,8 @@ function parseDimensions(section) {
|
|
|
32
34
|
const marginRight = parseFloat(section.dataset.marginRight || "") || DEFAULT_MARGIN;
|
|
33
35
|
const marginBottom = parseFloat(section.dataset.marginBottom || "") || DEFAULT_MARGIN;
|
|
34
36
|
const marginLeft = parseFloat(section.dataset.marginLeft || "") || DEFAULT_MARGIN;
|
|
37
|
+
const headerHeight = parseFloat(section.dataset.headerHeight || "") || DEFAULT_HEADER_FOOTER_HEIGHT;
|
|
38
|
+
const footerHeight = parseFloat(section.dataset.footerHeight || "") || DEFAULT_HEADER_FOOTER_HEIGHT;
|
|
35
39
|
return {
|
|
36
40
|
pageWidth,
|
|
37
41
|
pageHeight,
|
|
@@ -41,12 +45,10 @@ function parseDimensions(section) {
|
|
|
41
45
|
marginRight,
|
|
42
46
|
marginBottom,
|
|
43
47
|
marginLeft,
|
|
48
|
+
headerHeight,
|
|
49
|
+
footerHeight,
|
|
44
50
|
};
|
|
45
51
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Pagination engine that converts HTML with pagination metadata
|
|
48
|
-
* into a paginated view with fixed-size page containers.
|
|
49
|
-
*/
|
|
50
52
|
export class PaginationEngine {
|
|
51
53
|
/**
|
|
52
54
|
* Creates a new pagination engine.
|
|
@@ -74,6 +76,8 @@ export class PaginationEngine {
|
|
|
74
76
|
this.cssPrefix = options.cssPrefix ?? "page-";
|
|
75
77
|
this.showPageNumbers = options.showPageNumbers ?? true;
|
|
76
78
|
this.pageGap = options.pageGap ?? 20;
|
|
79
|
+
this.hfRegistry = new Map();
|
|
80
|
+
this.footnoteRegistry = new Map();
|
|
77
81
|
}
|
|
78
82
|
/**
|
|
79
83
|
* Runs the pagination process.
|
|
@@ -83,6 +87,10 @@ export class PaginationEngine {
|
|
|
83
87
|
paginate() {
|
|
84
88
|
const pages = [];
|
|
85
89
|
let pageNumber = 1;
|
|
90
|
+
// Parse the header/footer registry if present
|
|
91
|
+
this.hfRegistry = this.parseHeaderFooterRegistry();
|
|
92
|
+
// Parse the footnote registry if present
|
|
93
|
+
this.footnoteRegistry = this.parseFootnoteRegistry();
|
|
86
94
|
// Find all section containers
|
|
87
95
|
const sections = this.stagingElement.querySelectorAll("[data-section-index]");
|
|
88
96
|
// If no sections found, treat the entire staging content as one section
|
|
@@ -147,25 +155,203 @@ export class PaginationEngine {
|
|
|
147
155
|
}
|
|
148
156
|
return blocks;
|
|
149
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Parses the header/footer registry from the staging element.
|
|
160
|
+
*/
|
|
161
|
+
parseHeaderFooterRegistry() {
|
|
162
|
+
const registry = new Map();
|
|
163
|
+
const registryEl = this.stagingElement.querySelector("#pagination-hf-registry");
|
|
164
|
+
if (!registryEl)
|
|
165
|
+
return registry;
|
|
166
|
+
const entries = Array.from(registryEl.querySelectorAll("[data-section][data-hf-type]"));
|
|
167
|
+
for (const entry of entries) {
|
|
168
|
+
const sectionIndex = parseInt(entry.dataset.section || "0", 10);
|
|
169
|
+
const hfType = entry.dataset.hfType;
|
|
170
|
+
if (!registry.has(sectionIndex)) {
|
|
171
|
+
registry.set(sectionIndex, {});
|
|
172
|
+
}
|
|
173
|
+
const section = registry.get(sectionIndex);
|
|
174
|
+
// Clone the first child element (the actual header/footer content)
|
|
175
|
+
const content = entry.cloneNode(true);
|
|
176
|
+
switch (hfType) {
|
|
177
|
+
case "header-default":
|
|
178
|
+
section.headerDefault = content;
|
|
179
|
+
break;
|
|
180
|
+
case "header-first":
|
|
181
|
+
section.headerFirst = content;
|
|
182
|
+
break;
|
|
183
|
+
case "header-even":
|
|
184
|
+
section.headerEven = content;
|
|
185
|
+
break;
|
|
186
|
+
case "footer-default":
|
|
187
|
+
section.footerDefault = content;
|
|
188
|
+
break;
|
|
189
|
+
case "footer-first":
|
|
190
|
+
section.footerFirst = content;
|
|
191
|
+
break;
|
|
192
|
+
case "footer-even":
|
|
193
|
+
section.footerEven = content;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return registry;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Parses the footnote registry from the staging element.
|
|
201
|
+
*/
|
|
202
|
+
parseFootnoteRegistry() {
|
|
203
|
+
const registry = new Map();
|
|
204
|
+
const registryEl = this.stagingElement.querySelector("#pagination-footnote-registry");
|
|
205
|
+
if (!registryEl)
|
|
206
|
+
return registry;
|
|
207
|
+
const entries = Array.from(registryEl.querySelectorAll("[data-footnote-id]"));
|
|
208
|
+
for (const entry of entries) {
|
|
209
|
+
const footnoteId = entry.dataset.footnoteId;
|
|
210
|
+
if (footnoteId) {
|
|
211
|
+
// Clone the footnote element for later use
|
|
212
|
+
registry.set(footnoteId, entry.cloneNode(true));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return registry;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Extracts footnote reference IDs from an element.
|
|
219
|
+
*/
|
|
220
|
+
extractFootnoteRefs(element) {
|
|
221
|
+
const refs = element.querySelectorAll("[data-footnote-id]");
|
|
222
|
+
const ids = [];
|
|
223
|
+
for (const ref of Array.from(refs)) {
|
|
224
|
+
const id = ref.dataset.footnoteId;
|
|
225
|
+
if (id && !ids.includes(id)) {
|
|
226
|
+
ids.push(id);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return ids;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Measures the height of footnotes for given IDs (in points).
|
|
233
|
+
* Creates a temporary container to measure the footnotes.
|
|
234
|
+
*/
|
|
235
|
+
measureFootnotesHeight(footnoteIds, contentWidth) {
|
|
236
|
+
if (footnoteIds.length === 0 || this.footnoteRegistry.size === 0) {
|
|
237
|
+
return 0;
|
|
238
|
+
}
|
|
239
|
+
// Create a temporary measurement container
|
|
240
|
+
const measureContainer = document.createElement("div");
|
|
241
|
+
measureContainer.style.position = "absolute";
|
|
242
|
+
measureContainer.style.visibility = "hidden";
|
|
243
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
244
|
+
measureContainer.style.left = "-9999px";
|
|
245
|
+
// Add separator line (same as will be rendered)
|
|
246
|
+
const hr = document.createElement("hr");
|
|
247
|
+
measureContainer.appendChild(hr);
|
|
248
|
+
// Add footnotes
|
|
249
|
+
for (const id of footnoteIds) {
|
|
250
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
251
|
+
if (footnote) {
|
|
252
|
+
measureContainer.appendChild(footnote.cloneNode(true));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Append to staging for measurement
|
|
256
|
+
this.stagingElement.appendChild(measureContainer);
|
|
257
|
+
// Measure
|
|
258
|
+
const rect = measureContainer.getBoundingClientRect();
|
|
259
|
+
const heightPt = pxToPt(rect.height);
|
|
260
|
+
// Clean up
|
|
261
|
+
this.stagingElement.removeChild(measureContainer);
|
|
262
|
+
return heightPt;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Adds footnotes to a page container.
|
|
266
|
+
*/
|
|
267
|
+
addPageFootnotes(pageBox, footnoteIds, dims) {
|
|
268
|
+
if (footnoteIds.length === 0 || this.footnoteRegistry.size === 0) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const footnotesDiv = document.createElement("div");
|
|
272
|
+
footnotesDiv.className = `${this.cssPrefix}footnotes`;
|
|
273
|
+
footnotesDiv.style.position = "absolute";
|
|
274
|
+
footnotesDiv.style.bottom = `${dims.marginBottom}pt`; // Above footer area
|
|
275
|
+
footnotesDiv.style.left = `${dims.marginLeft}pt`;
|
|
276
|
+
footnotesDiv.style.width = `${dims.contentWidth}pt`;
|
|
277
|
+
footnotesDiv.style.boxSizing = "border-box";
|
|
278
|
+
// Add separator line
|
|
279
|
+
const hr = document.createElement("hr");
|
|
280
|
+
footnotesDiv.appendChild(hr);
|
|
281
|
+
// Clone footnotes in order of appearance
|
|
282
|
+
for (const id of footnoteIds) {
|
|
283
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
284
|
+
if (footnote) {
|
|
285
|
+
footnotesDiv.appendChild(footnote.cloneNode(true));
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
pageBox.appendChild(footnotesDiv);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Selects the appropriate header for a page based on section, page position, and page number.
|
|
292
|
+
*/
|
|
293
|
+
selectHeader(sectionIndex, pageInSection, globalPageNumber) {
|
|
294
|
+
const sectionHf = this.hfRegistry.get(sectionIndex);
|
|
295
|
+
if (!sectionHf)
|
|
296
|
+
return undefined;
|
|
297
|
+
// First page of section uses first header if available
|
|
298
|
+
if (pageInSection === 1 && sectionHf.headerFirst) {
|
|
299
|
+
return sectionHf.headerFirst;
|
|
300
|
+
}
|
|
301
|
+
// Even pages use even header if available
|
|
302
|
+
if (globalPageNumber % 2 === 0 && sectionHf.headerEven) {
|
|
303
|
+
return sectionHf.headerEven;
|
|
304
|
+
}
|
|
305
|
+
// Default (odd) pages
|
|
306
|
+
return sectionHf.headerDefault;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Selects the appropriate footer for a page based on section, page position, and page number.
|
|
310
|
+
*/
|
|
311
|
+
selectFooter(sectionIndex, pageInSection, globalPageNumber) {
|
|
312
|
+
const sectionHf = this.hfRegistry.get(sectionIndex);
|
|
313
|
+
if (!sectionHf)
|
|
314
|
+
return undefined;
|
|
315
|
+
// First page of section uses first footer if available
|
|
316
|
+
if (pageInSection === 1 && sectionHf.footerFirst) {
|
|
317
|
+
return sectionHf.footerFirst;
|
|
318
|
+
}
|
|
319
|
+
// Even pages use even footer if available
|
|
320
|
+
if (globalPageNumber % 2 === 0 && sectionHf.footerEven) {
|
|
321
|
+
return sectionHf.footerEven;
|
|
322
|
+
}
|
|
323
|
+
// Default (odd) pages
|
|
324
|
+
return sectionHf.footerDefault;
|
|
325
|
+
}
|
|
150
326
|
/**
|
|
151
327
|
* Flows measured blocks into page containers.
|
|
328
|
+
* Implements a single-pass, forward-only algorithm that is compatible with future lazy loading.
|
|
152
329
|
*/
|
|
153
330
|
flowToPages(blocks, dims, startPageNumber, sectionIndex) {
|
|
154
331
|
const pages = [];
|
|
155
332
|
let currentContent = [];
|
|
156
333
|
let remainingHeight = dims.contentHeight;
|
|
157
334
|
let pageNumber = startPageNumber;
|
|
335
|
+
// Track page number within this section for first-page header/footer selection
|
|
336
|
+
let pageInSection = 1;
|
|
158
337
|
// Track the previous block's bottom margin for margin collapsing
|
|
159
338
|
let prevMarginBottomPt = 0;
|
|
339
|
+
// Track footnote IDs for the current page
|
|
340
|
+
let currentFootnoteIds = [];
|
|
341
|
+
// Track height consumed by footnotes on current page
|
|
342
|
+
let currentFootnoteHeight = 0;
|
|
160
343
|
const finishPage = () => {
|
|
161
344
|
if (currentContent.length === 0)
|
|
162
345
|
return;
|
|
163
|
-
const page = this.createPage(dims, pageNumber, sectionIndex, currentContent);
|
|
346
|
+
const page = this.createPage(dims, pageNumber, sectionIndex, currentContent, pageInSection, currentFootnoteIds);
|
|
164
347
|
pages.push(page);
|
|
165
348
|
pageNumber++;
|
|
349
|
+
pageInSection++;
|
|
166
350
|
currentContent = [];
|
|
167
351
|
remainingHeight = dims.contentHeight;
|
|
168
352
|
prevMarginBottomPt = 0; // Reset margin tracking for new page
|
|
353
|
+
currentFootnoteIds = []; // Reset footnotes for new page
|
|
354
|
+
currentFootnoteHeight = 0;
|
|
169
355
|
};
|
|
170
356
|
for (let i = 0; i < blocks.length; i++) {
|
|
171
357
|
const block = blocks[i];
|
|
@@ -179,6 +365,18 @@ export class PaginationEngine {
|
|
|
179
365
|
if (block.pageBreakBefore && currentContent.length > 0) {
|
|
180
366
|
finishPage();
|
|
181
367
|
}
|
|
368
|
+
// Extract footnote references from this block
|
|
369
|
+
const blockFootnoteIds = this.extractFootnoteRefs(block.element);
|
|
370
|
+
// Only count new footnotes (not already on this page)
|
|
371
|
+
const newFootnoteIds = blockFootnoteIds.filter(id => !currentFootnoteIds.includes(id));
|
|
372
|
+
// Calculate additional footnote height if this block is added
|
|
373
|
+
let additionalFootnoteHeight = 0;
|
|
374
|
+
if (newFootnoteIds.length > 0 && this.footnoteRegistry.size > 0) {
|
|
375
|
+
// Measure the combined height of all footnotes that would be on this page
|
|
376
|
+
const combinedFootnoteIds = [...currentFootnoteIds, ...newFootnoteIds];
|
|
377
|
+
const totalFootnoteHeight = this.measureFootnotesHeight(combinedFootnoteIds, dims.contentWidth);
|
|
378
|
+
additionalFootnoteHeight = totalFootnoteHeight - currentFootnoteHeight;
|
|
379
|
+
}
|
|
182
380
|
// Calculate the effective height this block will consume
|
|
183
381
|
// Account for margin collapsing: the gap between blocks is max(prevBottom, currTop), not sum
|
|
184
382
|
const isFirstOnPage = currentContent.length === 0;
|
|
@@ -187,32 +385,44 @@ export class PaginationEngine {
|
|
|
187
385
|
// Margin collapsing: use the larger of the two adjacent margins
|
|
188
386
|
effectiveMarginTop = Math.max(block.marginTopPt, prevMarginBottomPt) - prevMarginBottomPt;
|
|
189
387
|
}
|
|
190
|
-
// Total height = top margin gap + content + bottom margin
|
|
191
|
-
|
|
192
|
-
const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt;
|
|
388
|
+
// Total height = top margin gap + content + bottom margin + footnote space
|
|
389
|
+
const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt + additionalFootnoteHeight;
|
|
193
390
|
// Calculate needed height (including keepWithNext)
|
|
194
391
|
let neededHeight = blockSpace;
|
|
195
392
|
if (block.keepWithNext && nextBlock && !nextBlock.isPageBreak) {
|
|
196
393
|
// For keepWithNext, include the next block with collapsed margins
|
|
197
394
|
const collapsedMargin = Math.max(block.marginBottomPt, nextBlock.marginTopPt);
|
|
198
395
|
neededHeight = effectiveMarginTop + block.heightPt + collapsedMargin +
|
|
199
|
-
nextBlock.heightPt + nextBlock.marginBottomPt;
|
|
396
|
+
nextBlock.heightPt + nextBlock.marginBottomPt + additionalFootnoteHeight;
|
|
200
397
|
}
|
|
201
|
-
//
|
|
202
|
-
|
|
398
|
+
// Effective remaining height (content area minus footnotes already on page)
|
|
399
|
+
const effectiveRemainingHeight = remainingHeight - currentFootnoteHeight;
|
|
400
|
+
// Check if block fits on current page (including its footnotes)
|
|
401
|
+
if (blockSpace <= effectiveRemainingHeight) {
|
|
203
402
|
// Block fits
|
|
204
403
|
currentContent.push(block.element.cloneNode(true));
|
|
205
|
-
remainingHeight -=
|
|
404
|
+
remainingHeight -= (effectiveMarginTop + block.heightPt + block.marginBottomPt);
|
|
206
405
|
prevMarginBottomPt = block.marginBottomPt;
|
|
406
|
+
// Add new footnotes to current page
|
|
407
|
+
if (newFootnoteIds.length > 0) {
|
|
408
|
+
currentFootnoteIds.push(...newFootnoteIds);
|
|
409
|
+
currentFootnoteHeight += additionalFootnoteHeight;
|
|
410
|
+
}
|
|
207
411
|
}
|
|
208
|
-
else if (block.heightPt + block.marginTopPt + block.marginBottomPt <= dims.contentHeight) {
|
|
412
|
+
else if (block.heightPt + block.marginTopPt + block.marginBottomPt + additionalFootnoteHeight <= dims.contentHeight) {
|
|
209
413
|
// Block doesn't fit but will fit on a new page
|
|
210
414
|
finishPage();
|
|
211
|
-
// On new page,
|
|
415
|
+
// On new page, recalculate footnote height for just this block's footnotes
|
|
416
|
+
const newPageFootnoteHeight = blockFootnoteIds.length > 0
|
|
417
|
+
? this.measureFootnotesHeight(blockFootnoteIds, dims.contentWidth)
|
|
418
|
+
: 0;
|
|
419
|
+
// Include full top margin
|
|
212
420
|
const newPageSpace = block.marginTopPt + block.heightPt + block.marginBottomPt;
|
|
213
421
|
currentContent.push(block.element.cloneNode(true));
|
|
214
422
|
remainingHeight = dims.contentHeight - newPageSpace;
|
|
215
423
|
prevMarginBottomPt = block.marginBottomPt;
|
|
424
|
+
currentFootnoteIds = [...blockFootnoteIds];
|
|
425
|
+
currentFootnoteHeight = newPageFootnoteHeight;
|
|
216
426
|
}
|
|
217
427
|
else {
|
|
218
428
|
// Block is taller than a page - add it and let it overflow
|
|
@@ -221,6 +431,7 @@ export class PaginationEngine {
|
|
|
221
431
|
finishPage();
|
|
222
432
|
}
|
|
223
433
|
currentContent.push(block.element.cloneNode(true));
|
|
434
|
+
currentFootnoteIds = [...blockFootnoteIds];
|
|
224
435
|
finishPage();
|
|
225
436
|
}
|
|
226
437
|
}
|
|
@@ -231,7 +442,7 @@ export class PaginationEngine {
|
|
|
231
442
|
/**
|
|
232
443
|
* Creates a page container element.
|
|
233
444
|
*/
|
|
234
|
-
createPage(dims, pageNumber, sectionIndex, content) {
|
|
445
|
+
createPage(dims, pageNumber, sectionIndex, content, pageInSection, footnoteIds = []) {
|
|
235
446
|
// Create page box at full size, then scale the entire box
|
|
236
447
|
// This ensures proper clipping and consistent scaling of all elements
|
|
237
448
|
const pageBox = document.createElement("div");
|
|
@@ -264,6 +475,28 @@ export class PaginationEngine {
|
|
|
264
475
|
pageBox.style.contain = "layout paint";
|
|
265
476
|
pageBox.dataset.pageNumber = String(pageNumber);
|
|
266
477
|
pageBox.dataset.sectionIndex = String(sectionIndex);
|
|
478
|
+
// Add header if available for this section/page
|
|
479
|
+
const headerSource = this.selectHeader(sectionIndex, pageInSection, pageNumber);
|
|
480
|
+
if (headerSource) {
|
|
481
|
+
const headerDiv = document.createElement("div");
|
|
482
|
+
headerDiv.className = `${this.cssPrefix}header`;
|
|
483
|
+
headerDiv.style.position = "absolute";
|
|
484
|
+
headerDiv.style.top = "0"; // Start at page top
|
|
485
|
+
headerDiv.style.left = `${dims.marginLeft}pt`;
|
|
486
|
+
headerDiv.style.width = `${dims.contentWidth}pt`;
|
|
487
|
+
headerDiv.style.height = `${dims.marginTop}pt`; // Constrain to top margin area
|
|
488
|
+
headerDiv.style.overflow = "hidden";
|
|
489
|
+
headerDiv.style.boxSizing = "border-box";
|
|
490
|
+
headerDiv.style.display = "flex";
|
|
491
|
+
headerDiv.style.flexDirection = "column";
|
|
492
|
+
headerDiv.style.justifyContent = "flex-end"; // Align content to bottom of header area
|
|
493
|
+
headerDiv.style.paddingBottom = "4pt"; // Small gap before content area
|
|
494
|
+
// Clone the header content (skip the wrapper div's data attributes)
|
|
495
|
+
for (const child of Array.from(headerSource.childNodes)) {
|
|
496
|
+
headerDiv.appendChild(child.cloneNode(true));
|
|
497
|
+
}
|
|
498
|
+
pageBox.appendChild(headerDiv);
|
|
499
|
+
}
|
|
267
500
|
// Create content area at full page margins and dimensions
|
|
268
501
|
const contentArea = document.createElement("div");
|
|
269
502
|
contentArea.className = `${this.cssPrefix}content`;
|
|
@@ -278,7 +511,33 @@ export class PaginationEngine {
|
|
|
278
511
|
contentArea.appendChild(el);
|
|
279
512
|
}
|
|
280
513
|
pageBox.appendChild(contentArea);
|
|
281
|
-
// Add page
|
|
514
|
+
// Add footnotes if any references appear on this page
|
|
515
|
+
if (footnoteIds.length > 0) {
|
|
516
|
+
this.addPageFootnotes(pageBox, footnoteIds, dims);
|
|
517
|
+
}
|
|
518
|
+
// Add footer if available for this section/page
|
|
519
|
+
const footerSource = this.selectFooter(sectionIndex, pageInSection, pageNumber);
|
|
520
|
+
if (footerSource) {
|
|
521
|
+
const footerDiv = document.createElement("div");
|
|
522
|
+
footerDiv.className = `${this.cssPrefix}footer`;
|
|
523
|
+
footerDiv.style.position = "absolute";
|
|
524
|
+
footerDiv.style.bottom = "0"; // Start at page bottom
|
|
525
|
+
footerDiv.style.left = `${dims.marginLeft}pt`;
|
|
526
|
+
footerDiv.style.width = `${dims.contentWidth}pt`;
|
|
527
|
+
footerDiv.style.height = `${dims.marginBottom}pt`; // Constrain to bottom margin area
|
|
528
|
+
footerDiv.style.overflow = "hidden";
|
|
529
|
+
footerDiv.style.boxSizing = "border-box";
|
|
530
|
+
footerDiv.style.display = "flex";
|
|
531
|
+
footerDiv.style.flexDirection = "column";
|
|
532
|
+
footerDiv.style.justifyContent = "flex-start"; // Align content to top of footer area
|
|
533
|
+
footerDiv.style.paddingTop = "4pt"; // Small gap after content area
|
|
534
|
+
// Clone the footer content (skip the wrapper div's data attributes)
|
|
535
|
+
for (const child of Array.from(footerSource.childNodes)) {
|
|
536
|
+
footerDiv.appendChild(child.cloneNode(true));
|
|
537
|
+
}
|
|
538
|
+
pageBox.appendChild(footerDiv);
|
|
539
|
+
}
|
|
540
|
+
// Add page number (will be hidden by CSS if document has footer)
|
|
282
541
|
if (this.showPageNumbers) {
|
|
283
542
|
const pageNum = document.createElement("div");
|
|
284
543
|
pageNum.className = `${this.cssPrefix}number`;
|
package/dist/pagination.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mainAssemblyName": "DocxodusWasm.dll",
|
|
3
3
|
"resources": {
|
|
4
|
-
"hash": "sha256-
|
|
4
|
+
"hash": "sha256-P32xSIvA3tYByp2MpFMtks8DzXj+JZkm9OJj8VGEzOE=",
|
|
5
5
|
"jsModuleNative": {
|
|
6
6
|
"dotnet.native.js": "sha256-YLwjs9CPwrZG7YKULjmqr5bYsmhxwcWJOhQNM4bG6Gc="
|
|
7
7
|
},
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"assembly": {
|
|
18
18
|
"DocumentFormat.OpenXml.wasm": "sha256-edAN2rIA7QQ8K5qp1o5QXplt8M80fEiVmuMgT/MBmLM=",
|
|
19
19
|
"DocumentFormat.OpenXml.Framework.wasm": "sha256-CFdrD1dSpnkcOk0gxZcKb2T5p+q2ck9ivs+TOML6Jmw=",
|
|
20
|
-
"Docxodus.wasm": "sha256-
|
|
21
|
-
"DocxodusWasm.wasm": "sha256-
|
|
20
|
+
"Docxodus.wasm": "sha256-dz1pKwjvSqtjV6Ol4pB7LMny6xgHPUw3U/ruXt0ayAw=",
|
|
21
|
+
"DocxodusWasm.wasm": "sha256-iwUdChc7ew6Xv4XER/NAlFUHkIqyIeuhWB0LKgAn3zM=",
|
|
22
22
|
"SkiaSharp.wasm": "sha256-U6RbqUVBn8Vx8qpghJC5+r/DC1NSBY+EIRDxP8o6dsk=",
|
|
23
23
|
"System.Collections.Concurrent.wasm": "sha256-xXJbJWNeQ2DSYvAGUoUHjF9y4Iajv2ed0eACOxWD19U=",
|
|
24
24
|
"System.Collections.wasm": "sha256-mNLhFaXT8X16KYjUVNFYwcdw0h3BUjgD427TR5IWVKU=",
|