docxodus 3.7.1 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pagination.bundle.js +356 -14
- package/dist/pagination.d.ts +41 -0
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +418 -23
- 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
|
@@ -67,6 +67,7 @@ var DocxodusPagination = (() => {
|
|
|
67
67
|
* @param options - Pagination options
|
|
68
68
|
*/
|
|
69
69
|
constructor(staging, container, options = {}) {
|
|
70
|
+
this.pendingFootnoteContinuation = null;
|
|
70
71
|
this.stagingElement = typeof staging === "string" ? document.getElementById(staging) : staging;
|
|
71
72
|
this.containerElement = typeof container === "string" ? document.getElementById(container) : container;
|
|
72
73
|
if (!this.stagingElement) {
|
|
@@ -80,6 +81,7 @@ var DocxodusPagination = (() => {
|
|
|
80
81
|
this.showPageNumbers = options.showPageNumbers ?? true;
|
|
81
82
|
this.pageGap = options.pageGap ?? 20;
|
|
82
83
|
this.hfRegistry = /* @__PURE__ */ new Map();
|
|
84
|
+
this.footnoteRegistry = /* @__PURE__ */ new Map();
|
|
83
85
|
}
|
|
84
86
|
/**
|
|
85
87
|
* Runs the pagination process.
|
|
@@ -90,6 +92,7 @@ var DocxodusPagination = (() => {
|
|
|
90
92
|
const pages = [];
|
|
91
93
|
let pageNumber = 1;
|
|
92
94
|
this.hfRegistry = this.parseHeaderFooterRegistry();
|
|
95
|
+
this.footnoteRegistry = this.parseFootnoteRegistry();
|
|
93
96
|
const sections = this.stagingElement.querySelectorAll(
|
|
94
97
|
"[data-section-index]"
|
|
95
98
|
);
|
|
@@ -182,6 +185,225 @@ var DocxodusPagination = (() => {
|
|
|
182
185
|
}
|
|
183
186
|
return registry;
|
|
184
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Parses the footnote registry from the staging element.
|
|
190
|
+
*/
|
|
191
|
+
parseFootnoteRegistry() {
|
|
192
|
+
const registry = /* @__PURE__ */ new Map();
|
|
193
|
+
const registryEl = this.stagingElement.querySelector("#pagination-footnote-registry");
|
|
194
|
+
if (!registryEl) return registry;
|
|
195
|
+
const entries = Array.from(registryEl.querySelectorAll("[data-footnote-id]"));
|
|
196
|
+
for (const entry of entries) {
|
|
197
|
+
const footnoteId = entry.dataset.footnoteId;
|
|
198
|
+
if (footnoteId) {
|
|
199
|
+
registry.set(footnoteId, entry.cloneNode(true));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return registry;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Extracts footnote reference IDs from an element.
|
|
206
|
+
*/
|
|
207
|
+
extractFootnoteRefs(element) {
|
|
208
|
+
const refs = element.querySelectorAll("[data-footnote-id]");
|
|
209
|
+
const ids = [];
|
|
210
|
+
for (const ref of Array.from(refs)) {
|
|
211
|
+
const id = ref.dataset.footnoteId;
|
|
212
|
+
if (id && !ids.includes(id)) {
|
|
213
|
+
ids.push(id);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return ids;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Measures the height of footnotes for given IDs (in points).
|
|
220
|
+
* Creates a temporary container to measure the footnotes.
|
|
221
|
+
* @param footnoteIds - IDs of footnotes to measure
|
|
222
|
+
* @param contentWidth - Width for measurement
|
|
223
|
+
* @param continuation - Optional continuation content to include first
|
|
224
|
+
*/
|
|
225
|
+
measureFootnotesHeight(footnoteIds, contentWidth, continuation) {
|
|
226
|
+
const hasContinuation = continuation && continuation.remainingElements.length > 0;
|
|
227
|
+
if (footnoteIds.length === 0 && !hasContinuation || this.footnoteRegistry.size === 0) {
|
|
228
|
+
return 0;
|
|
229
|
+
}
|
|
230
|
+
const measureContainer = document.createElement("div");
|
|
231
|
+
measureContainer.style.position = "absolute";
|
|
232
|
+
measureContainer.style.visibility = "hidden";
|
|
233
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
234
|
+
measureContainer.style.left = "-9999px";
|
|
235
|
+
const hr = document.createElement("hr");
|
|
236
|
+
measureContainer.appendChild(hr);
|
|
237
|
+
if (hasContinuation) {
|
|
238
|
+
const contWrapper = document.createElement("div");
|
|
239
|
+
contWrapper.className = "footnote-continuation";
|
|
240
|
+
for (const el of continuation.remainingElements) {
|
|
241
|
+
contWrapper.appendChild(el.cloneNode(true));
|
|
242
|
+
}
|
|
243
|
+
measureContainer.appendChild(contWrapper);
|
|
244
|
+
}
|
|
245
|
+
for (const id of footnoteIds) {
|
|
246
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
247
|
+
if (footnote) {
|
|
248
|
+
measureContainer.appendChild(footnote.cloneNode(true));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
this.stagingElement.appendChild(measureContainer);
|
|
252
|
+
const rect = measureContainer.getBoundingClientRect();
|
|
253
|
+
const heightPt = pxToPt(rect.height);
|
|
254
|
+
this.stagingElement.removeChild(measureContainer);
|
|
255
|
+
return heightPt;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Measures the height of just the continuation content (in points).
|
|
259
|
+
*/
|
|
260
|
+
measureContinuationHeight(continuation, contentWidth) {
|
|
261
|
+
if (!continuation || continuation.remainingElements.length === 0) {
|
|
262
|
+
return 0;
|
|
263
|
+
}
|
|
264
|
+
const measureContainer = document.createElement("div");
|
|
265
|
+
measureContainer.style.position = "absolute";
|
|
266
|
+
measureContainer.style.visibility = "hidden";
|
|
267
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
268
|
+
measureContainer.style.left = "-9999px";
|
|
269
|
+
const hr = document.createElement("hr");
|
|
270
|
+
measureContainer.appendChild(hr);
|
|
271
|
+
for (const el of continuation.remainingElements) {
|
|
272
|
+
measureContainer.appendChild(el.cloneNode(true));
|
|
273
|
+
}
|
|
274
|
+
this.stagingElement.appendChild(measureContainer);
|
|
275
|
+
const rect = measureContainer.getBoundingClientRect();
|
|
276
|
+
const heightPt = pxToPt(rect.height);
|
|
277
|
+
this.stagingElement.removeChild(measureContainer);
|
|
278
|
+
return heightPt;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Splits a footnote element into parts that fit within the available height.
|
|
282
|
+
* Returns the elements that fit and the elements that need to continue.
|
|
283
|
+
*/
|
|
284
|
+
splitFootnoteToFit(footnoteElement, availableHeightPt, contentWidth) {
|
|
285
|
+
const footnoteContent = footnoteElement.querySelector(".footnote-content");
|
|
286
|
+
if (!footnoteContent) {
|
|
287
|
+
return { fits: [footnoteElement.cloneNode(true)], overflow: [] };
|
|
288
|
+
}
|
|
289
|
+
const children = Array.from(footnoteContent.children);
|
|
290
|
+
if (children.length <= 1) {
|
|
291
|
+
return { fits: [footnoteElement.cloneNode(true)], overflow: [] };
|
|
292
|
+
}
|
|
293
|
+
const fits = [];
|
|
294
|
+
const overflow = [];
|
|
295
|
+
let currentHeight = 0;
|
|
296
|
+
const hrMeasure = document.createElement("div");
|
|
297
|
+
hrMeasure.style.position = "absolute";
|
|
298
|
+
hrMeasure.style.visibility = "hidden";
|
|
299
|
+
hrMeasure.style.width = `${contentWidth}pt`;
|
|
300
|
+
hrMeasure.style.left = "-9999px";
|
|
301
|
+
const hr = document.createElement("hr");
|
|
302
|
+
hrMeasure.appendChild(hr);
|
|
303
|
+
this.stagingElement.appendChild(hrMeasure);
|
|
304
|
+
const hrHeight = pxToPt(hrMeasure.getBoundingClientRect().height);
|
|
305
|
+
this.stagingElement.removeChild(hrMeasure);
|
|
306
|
+
currentHeight = hrHeight;
|
|
307
|
+
const footnoteNumber = footnoteElement.querySelector(".footnote-number");
|
|
308
|
+
for (let i = 0; i < children.length; i++) {
|
|
309
|
+
const child = children[i];
|
|
310
|
+
const measureContainer = document.createElement("div");
|
|
311
|
+
measureContainer.style.position = "absolute";
|
|
312
|
+
measureContainer.style.visibility = "hidden";
|
|
313
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
314
|
+
measureContainer.style.left = "-9999px";
|
|
315
|
+
measureContainer.appendChild(child.cloneNode(true));
|
|
316
|
+
this.stagingElement.appendChild(measureContainer);
|
|
317
|
+
const childHeight = pxToPt(measureContainer.getBoundingClientRect().height);
|
|
318
|
+
this.stagingElement.removeChild(measureContainer);
|
|
319
|
+
if (currentHeight + childHeight <= availableHeightPt) {
|
|
320
|
+
fits.push(child.cloneNode(true));
|
|
321
|
+
currentHeight += childHeight;
|
|
322
|
+
} else {
|
|
323
|
+
for (let j = i; j < children.length; j++) {
|
|
324
|
+
overflow.push(children[j].cloneNode(true));
|
|
325
|
+
}
|
|
326
|
+
break;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return { fits, overflow };
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Measures a single footnote's height.
|
|
333
|
+
*/
|
|
334
|
+
measureSingleFootnoteHeight(footnoteId, contentWidth) {
|
|
335
|
+
const footnote = this.footnoteRegistry.get(footnoteId);
|
|
336
|
+
if (!footnote) return 0;
|
|
337
|
+
const measureContainer = document.createElement("div");
|
|
338
|
+
measureContainer.style.position = "absolute";
|
|
339
|
+
measureContainer.style.visibility = "hidden";
|
|
340
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
341
|
+
measureContainer.style.left = "-9999px";
|
|
342
|
+
measureContainer.appendChild(footnote.cloneNode(true));
|
|
343
|
+
this.stagingElement.appendChild(measureContainer);
|
|
344
|
+
const rect = measureContainer.getBoundingClientRect();
|
|
345
|
+
const heightPt = pxToPt(rect.height);
|
|
346
|
+
this.stagingElement.removeChild(measureContainer);
|
|
347
|
+
return heightPt;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Adds footnotes to a page container, including continuation content.
|
|
351
|
+
*/
|
|
352
|
+
addPageFootnotes(pageBox, footnoteIds, dims, continuation, partialFootnotes) {
|
|
353
|
+
const hasContinuation = continuation && continuation.remainingElements.length > 0;
|
|
354
|
+
if (footnoteIds.length === 0 && !hasContinuation) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
if (this.footnoteRegistry.size === 0 && !hasContinuation) {
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
const partialFootnoteIds = new Set(partialFootnotes?.map((p) => p.footnoteId) || []);
|
|
361
|
+
const footnotesDiv = document.createElement("div");
|
|
362
|
+
footnotesDiv.className = `${this.cssPrefix}footnotes`;
|
|
363
|
+
footnotesDiv.style.position = "absolute";
|
|
364
|
+
footnotesDiv.style.bottom = `${dims.marginBottom}pt`;
|
|
365
|
+
footnotesDiv.style.left = `${dims.marginLeft}pt`;
|
|
366
|
+
footnotesDiv.style.width = `${dims.contentWidth}pt`;
|
|
367
|
+
footnotesDiv.style.boxSizing = "border-box";
|
|
368
|
+
const hr = document.createElement("hr");
|
|
369
|
+
footnotesDiv.appendChild(hr);
|
|
370
|
+
if (hasContinuation) {
|
|
371
|
+
const contWrapper = document.createElement("div");
|
|
372
|
+
contWrapper.className = "footnote-continuation";
|
|
373
|
+
for (const el of continuation.remainingElements) {
|
|
374
|
+
contWrapper.appendChild(el.cloneNode(true));
|
|
375
|
+
}
|
|
376
|
+
footnotesDiv.appendChild(contWrapper);
|
|
377
|
+
}
|
|
378
|
+
for (const id of footnoteIds) {
|
|
379
|
+
const partial = partialFootnotes?.find((p) => p.footnoteId === id);
|
|
380
|
+
if (partial) {
|
|
381
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
382
|
+
if (footnote) {
|
|
383
|
+
const partialDiv = document.createElement("div");
|
|
384
|
+
partialDiv.className = "footnote-item";
|
|
385
|
+
partialDiv.dataset.footnoteId = id;
|
|
386
|
+
const numberSpan = footnote.querySelector(".footnote-number");
|
|
387
|
+
if (numberSpan) {
|
|
388
|
+
partialDiv.appendChild(numberSpan.cloneNode(true));
|
|
389
|
+
}
|
|
390
|
+
const contentSpan = document.createElement("span");
|
|
391
|
+
contentSpan.className = "footnote-content";
|
|
392
|
+
for (const el of partial.fittingElements) {
|
|
393
|
+
contentSpan.appendChild(el.cloneNode(true));
|
|
394
|
+
}
|
|
395
|
+
partialDiv.appendChild(contentSpan);
|
|
396
|
+
footnotesDiv.appendChild(partialDiv);
|
|
397
|
+
}
|
|
398
|
+
} else {
|
|
399
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
400
|
+
if (footnote) {
|
|
401
|
+
footnotesDiv.appendChild(footnote.cloneNode(true));
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
pageBox.appendChild(footnotesDiv);
|
|
406
|
+
}
|
|
185
407
|
/**
|
|
186
408
|
* Selects the appropriate header for a page based on section, page position, and page number.
|
|
187
409
|
*/
|
|
@@ -212,6 +434,8 @@ var DocxodusPagination = (() => {
|
|
|
212
434
|
}
|
|
213
435
|
/**
|
|
214
436
|
* Flows measured blocks into page containers.
|
|
437
|
+
* Implements a single-pass, forward-only algorithm that is compatible with future lazy loading.
|
|
438
|
+
* Supports footnote continuation - long footnotes can split across pages.
|
|
215
439
|
*/
|
|
216
440
|
flowToPages(blocks, dims, startPageNumber, sectionIndex) {
|
|
217
441
|
const pages = [];
|
|
@@ -220,15 +444,41 @@ var DocxodusPagination = (() => {
|
|
|
220
444
|
let pageNumber = startPageNumber;
|
|
221
445
|
let pageInSection = 1;
|
|
222
446
|
let prevMarginBottomPt = 0;
|
|
447
|
+
let currentFootnoteIds = [];
|
|
448
|
+
let currentFootnoteHeight = 0;
|
|
449
|
+
let currentContinuation = this.pendingFootnoteContinuation;
|
|
450
|
+
let nextPageContinuation = null;
|
|
451
|
+
let currentPartialFootnotes = [];
|
|
452
|
+
if (currentContinuation && currentContinuation.remainingElements.length > 0) {
|
|
453
|
+
currentFootnoteHeight = this.measureContinuationHeight(currentContinuation, dims.contentWidth);
|
|
454
|
+
}
|
|
223
455
|
const finishPage = () => {
|
|
224
|
-
if (currentContent.length === 0) return;
|
|
225
|
-
const page = this.createPage(
|
|
456
|
+
if (currentContent.length === 0 && !currentContinuation) return;
|
|
457
|
+
const page = this.createPage(
|
|
458
|
+
dims,
|
|
459
|
+
pageNumber,
|
|
460
|
+
sectionIndex,
|
|
461
|
+
currentContent,
|
|
462
|
+
pageInSection,
|
|
463
|
+
currentFootnoteIds,
|
|
464
|
+
currentContinuation,
|
|
465
|
+
currentPartialFootnotes.length > 0 ? currentPartialFootnotes : void 0
|
|
466
|
+
);
|
|
226
467
|
pages.push(page);
|
|
227
468
|
pageNumber++;
|
|
228
469
|
pageInSection++;
|
|
229
470
|
currentContent = [];
|
|
230
471
|
remainingHeight = dims.contentHeight;
|
|
231
472
|
prevMarginBottomPt = 0;
|
|
473
|
+
currentFootnoteIds = [];
|
|
474
|
+
currentPartialFootnotes = [];
|
|
475
|
+
currentContinuation = nextPageContinuation;
|
|
476
|
+
nextPageContinuation = null;
|
|
477
|
+
if (currentContinuation && currentContinuation.remainingElements.length > 0) {
|
|
478
|
+
currentFootnoteHeight = this.measureContinuationHeight(currentContinuation, dims.contentWidth);
|
|
479
|
+
} else {
|
|
480
|
+
currentFootnoteHeight = 0;
|
|
481
|
+
}
|
|
232
482
|
};
|
|
233
483
|
for (let i = 0; i < blocks.length; i++) {
|
|
234
484
|
const block = blocks[i];
|
|
@@ -240,42 +490,118 @@ var DocxodusPagination = (() => {
|
|
|
240
490
|
if (block.pageBreakBefore && currentContent.length > 0) {
|
|
241
491
|
finishPage();
|
|
242
492
|
}
|
|
493
|
+
const blockFootnoteIds = this.extractFootnoteRefs(block.element);
|
|
494
|
+
const newFootnoteIds = blockFootnoteIds.filter((id) => !currentFootnoteIds.includes(id));
|
|
495
|
+
let additionalFootnoteHeight = 0;
|
|
496
|
+
if (newFootnoteIds.length > 0 && this.footnoteRegistry.size > 0) {
|
|
497
|
+
const combinedFootnoteIds = [...currentFootnoteIds, ...newFootnoteIds];
|
|
498
|
+
const totalFootnoteHeight = this.measureFootnotesHeight(
|
|
499
|
+
combinedFootnoteIds,
|
|
500
|
+
dims.contentWidth,
|
|
501
|
+
currentContinuation
|
|
502
|
+
);
|
|
503
|
+
additionalFootnoteHeight = totalFootnoteHeight - currentFootnoteHeight;
|
|
504
|
+
}
|
|
243
505
|
const isFirstOnPage = currentContent.length === 0;
|
|
244
506
|
let effectiveMarginTop = block.marginTopPt;
|
|
245
507
|
if (!isFirstOnPage) {
|
|
246
508
|
effectiveMarginTop = Math.max(block.marginTopPt, prevMarginBottomPt) - prevMarginBottomPt;
|
|
247
509
|
}
|
|
248
|
-
const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt;
|
|
510
|
+
const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt + additionalFootnoteHeight;
|
|
249
511
|
let neededHeight = blockSpace;
|
|
250
512
|
if (block.keepWithNext && nextBlock && !nextBlock.isPageBreak) {
|
|
251
513
|
const collapsedMargin = Math.max(block.marginBottomPt, nextBlock.marginTopPt);
|
|
252
|
-
neededHeight = effectiveMarginTop + block.heightPt + collapsedMargin + nextBlock.heightPt + nextBlock.marginBottomPt;
|
|
514
|
+
neededHeight = effectiveMarginTop + block.heightPt + collapsedMargin + nextBlock.heightPt + nextBlock.marginBottomPt + additionalFootnoteHeight;
|
|
253
515
|
}
|
|
254
|
-
|
|
516
|
+
const effectiveRemainingHeight = remainingHeight - currentFootnoteHeight;
|
|
517
|
+
if (blockSpace <= effectiveRemainingHeight) {
|
|
255
518
|
currentContent.push(block.element.cloneNode(true));
|
|
256
|
-
remainingHeight -=
|
|
519
|
+
remainingHeight -= effectiveMarginTop + block.heightPt + block.marginBottomPt;
|
|
257
520
|
prevMarginBottomPt = block.marginBottomPt;
|
|
521
|
+
if (newFootnoteIds.length > 0) {
|
|
522
|
+
currentFootnoteIds.push(...newFootnoteIds);
|
|
523
|
+
currentFootnoteHeight += additionalFootnoteHeight;
|
|
524
|
+
}
|
|
258
525
|
} else if (block.heightPt + block.marginTopPt + block.marginBottomPt <= dims.contentHeight) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
526
|
+
const blockSpaceWithoutFootnotes = effectiveMarginTop + block.heightPt + block.marginBottomPt;
|
|
527
|
+
if (newFootnoteIds.length > 0 && blockSpaceWithoutFootnotes <= effectiveRemainingHeight) {
|
|
528
|
+
currentContent.push(block.element.cloneNode(true));
|
|
529
|
+
remainingHeight -= effectiveMarginTop + block.heightPt + block.marginBottomPt;
|
|
530
|
+
prevMarginBottomPt = block.marginBottomPt;
|
|
531
|
+
const spaceForFootnotes = remainingHeight - currentFootnoteHeight;
|
|
532
|
+
for (const footnoteId of newFootnoteIds) {
|
|
533
|
+
const footnote = this.footnoteRegistry.get(footnoteId);
|
|
534
|
+
if (!footnote) continue;
|
|
535
|
+
const footnoteHeight = this.measureSingleFootnoteHeight(footnoteId, dims.contentWidth);
|
|
536
|
+
if (footnoteHeight <= spaceForFootnotes - currentFootnoteHeight) {
|
|
537
|
+
currentFootnoteIds.push(footnoteId);
|
|
538
|
+
currentFootnoteHeight += footnoteHeight;
|
|
539
|
+
} else {
|
|
540
|
+
const availableForThisFootnote = spaceForFootnotes;
|
|
541
|
+
if (availableForThisFootnote > 20) {
|
|
542
|
+
const { fits, overflow } = this.splitFootnoteToFit(
|
|
543
|
+
footnote,
|
|
544
|
+
availableForThisFootnote,
|
|
545
|
+
dims.contentWidth
|
|
546
|
+
);
|
|
547
|
+
if (fits.length > 0) {
|
|
548
|
+
currentFootnoteIds.push(footnoteId);
|
|
549
|
+
currentPartialFootnotes.push({
|
|
550
|
+
footnoteId,
|
|
551
|
+
fittingElements: fits
|
|
552
|
+
});
|
|
553
|
+
nextPageContinuation = {
|
|
554
|
+
footnoteId,
|
|
555
|
+
remainingElements: overflow
|
|
556
|
+
};
|
|
557
|
+
currentFootnoteHeight = spaceForFootnotes;
|
|
558
|
+
} else {
|
|
559
|
+
nextPageContinuation = {
|
|
560
|
+
footnoteId,
|
|
561
|
+
remainingElements: Array.from(footnote.querySelectorAll(".footnote-content > *")).map((el) => el.cloneNode(true))
|
|
562
|
+
};
|
|
563
|
+
if (nextPageContinuation.remainingElements.length === 0) {
|
|
564
|
+
nextPageContinuation.remainingElements = [footnote.cloneNode(true)];
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
} else {
|
|
568
|
+
nextPageContinuation = {
|
|
569
|
+
footnoteId,
|
|
570
|
+
remainingElements: Array.from(footnote.querySelectorAll(".footnote-content > *")).map((el) => el.cloneNode(true))
|
|
571
|
+
};
|
|
572
|
+
if (nextPageContinuation.remainingElements.length === 0) {
|
|
573
|
+
nextPageContinuation.remainingElements = [footnote.cloneNode(true)];
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
} else {
|
|
579
|
+
finishPage();
|
|
580
|
+
const newPageFootnoteHeight = blockFootnoteIds.length > 0 ? this.measureFootnotesHeight(blockFootnoteIds, dims.contentWidth, currentContinuation) : currentContinuation ? this.measureContinuationHeight(currentContinuation, dims.contentWidth) : 0;
|
|
581
|
+
const newPageSpace = block.marginTopPt + block.heightPt + block.marginBottomPt;
|
|
582
|
+
currentContent.push(block.element.cloneNode(true));
|
|
583
|
+
remainingHeight = dims.contentHeight - newPageSpace;
|
|
584
|
+
prevMarginBottomPt = block.marginBottomPt;
|
|
585
|
+
currentFootnoteIds = [...blockFootnoteIds];
|
|
586
|
+
currentFootnoteHeight = newPageFootnoteHeight;
|
|
587
|
+
}
|
|
264
588
|
} else {
|
|
265
589
|
if (currentContent.length > 0) {
|
|
266
590
|
finishPage();
|
|
267
591
|
}
|
|
268
592
|
currentContent.push(block.element.cloneNode(true));
|
|
593
|
+
currentFootnoteIds = [...blockFootnoteIds];
|
|
269
594
|
finishPage();
|
|
270
595
|
}
|
|
271
596
|
}
|
|
272
597
|
finishPage();
|
|
598
|
+
this.pendingFootnoteContinuation = nextPageContinuation;
|
|
273
599
|
return pages;
|
|
274
600
|
}
|
|
275
601
|
/**
|
|
276
602
|
* Creates a page container element.
|
|
277
603
|
*/
|
|
278
|
-
createPage(dims, pageNumber, sectionIndex, content, pageInSection) {
|
|
604
|
+
createPage(dims, pageNumber, sectionIndex, content, pageInSection, footnoteIds = [], continuation, partialFootnotes) {
|
|
279
605
|
const pageBox = document.createElement("div");
|
|
280
606
|
pageBox.className = `${this.cssPrefix}box`;
|
|
281
607
|
pageBox.style.width = `${dims.pageWidth}pt`;
|
|
@@ -302,10 +628,16 @@ var DocxodusPagination = (() => {
|
|
|
302
628
|
const headerDiv = document.createElement("div");
|
|
303
629
|
headerDiv.className = `${this.cssPrefix}header`;
|
|
304
630
|
headerDiv.style.position = "absolute";
|
|
305
|
-
headerDiv.style.top =
|
|
631
|
+
headerDiv.style.top = "0";
|
|
306
632
|
headerDiv.style.left = `${dims.marginLeft}pt`;
|
|
307
633
|
headerDiv.style.width = `${dims.contentWidth}pt`;
|
|
634
|
+
headerDiv.style.height = `${dims.marginTop}pt`;
|
|
308
635
|
headerDiv.style.overflow = "hidden";
|
|
636
|
+
headerDiv.style.boxSizing = "border-box";
|
|
637
|
+
headerDiv.style.display = "flex";
|
|
638
|
+
headerDiv.style.flexDirection = "column";
|
|
639
|
+
headerDiv.style.justifyContent = "flex-end";
|
|
640
|
+
headerDiv.style.paddingBottom = "4pt";
|
|
309
641
|
for (const child of Array.from(headerSource.childNodes)) {
|
|
310
642
|
headerDiv.appendChild(child.cloneNode(true));
|
|
311
643
|
}
|
|
@@ -323,15 +655,25 @@ var DocxodusPagination = (() => {
|
|
|
323
655
|
contentArea.appendChild(el);
|
|
324
656
|
}
|
|
325
657
|
pageBox.appendChild(contentArea);
|
|
658
|
+
const hasContinuation = continuation && continuation.remainingElements.length > 0;
|
|
659
|
+
if (footnoteIds.length > 0 || hasContinuation) {
|
|
660
|
+
this.addPageFootnotes(pageBox, footnoteIds, dims, continuation, partialFootnotes);
|
|
661
|
+
}
|
|
326
662
|
const footerSource = this.selectFooter(sectionIndex, pageInSection, pageNumber);
|
|
327
663
|
if (footerSource) {
|
|
328
664
|
const footerDiv = document.createElement("div");
|
|
329
665
|
footerDiv.className = `${this.cssPrefix}footer`;
|
|
330
666
|
footerDiv.style.position = "absolute";
|
|
331
|
-
footerDiv.style.bottom =
|
|
667
|
+
footerDiv.style.bottom = "0";
|
|
332
668
|
footerDiv.style.left = `${dims.marginLeft}pt`;
|
|
333
669
|
footerDiv.style.width = `${dims.contentWidth}pt`;
|
|
670
|
+
footerDiv.style.height = `${dims.marginBottom}pt`;
|
|
334
671
|
footerDiv.style.overflow = "hidden";
|
|
672
|
+
footerDiv.style.boxSizing = "border-box";
|
|
673
|
+
footerDiv.style.display = "flex";
|
|
674
|
+
footerDiv.style.flexDirection = "column";
|
|
675
|
+
footerDiv.style.justifyContent = "flex-start";
|
|
676
|
+
footerDiv.style.paddingTop = "4pt";
|
|
335
677
|
for (const child of Array.from(footerSource.childNodes)) {
|
|
336
678
|
footerDiv.appendChild(child.cloneNode(true));
|
|
337
679
|
}
|
package/dist/pagination.d.ts
CHANGED
|
@@ -110,6 +110,10 @@ export interface PaginationOptions {
|
|
|
110
110
|
* Pagination engine that converts HTML with pagination metadata
|
|
111
111
|
* into a paginated view with fixed-size page containers.
|
|
112
112
|
*/
|
|
113
|
+
/**
|
|
114
|
+
* Registry of footnotes by ID for per-page distribution.
|
|
115
|
+
*/
|
|
116
|
+
export type FootnoteRegistry = Map<string, HTMLElement>;
|
|
113
117
|
export declare class PaginationEngine {
|
|
114
118
|
private stagingElement;
|
|
115
119
|
private containerElement;
|
|
@@ -118,6 +122,8 @@ export declare class PaginationEngine {
|
|
|
118
122
|
private showPageNumbers;
|
|
119
123
|
private pageGap;
|
|
120
124
|
private hfRegistry;
|
|
125
|
+
private footnoteRegistry;
|
|
126
|
+
private pendingFootnoteContinuation;
|
|
121
127
|
/**
|
|
122
128
|
* Creates a new pagination engine.
|
|
123
129
|
*
|
|
@@ -140,6 +146,39 @@ export declare class PaginationEngine {
|
|
|
140
146
|
* Parses the header/footer registry from the staging element.
|
|
141
147
|
*/
|
|
142
148
|
private parseHeaderFooterRegistry;
|
|
149
|
+
/**
|
|
150
|
+
* Parses the footnote registry from the staging element.
|
|
151
|
+
*/
|
|
152
|
+
private parseFootnoteRegistry;
|
|
153
|
+
/**
|
|
154
|
+
* Extracts footnote reference IDs from an element.
|
|
155
|
+
*/
|
|
156
|
+
private extractFootnoteRefs;
|
|
157
|
+
/**
|
|
158
|
+
* Measures the height of footnotes for given IDs (in points).
|
|
159
|
+
* Creates a temporary container to measure the footnotes.
|
|
160
|
+
* @param footnoteIds - IDs of footnotes to measure
|
|
161
|
+
* @param contentWidth - Width for measurement
|
|
162
|
+
* @param continuation - Optional continuation content to include first
|
|
163
|
+
*/
|
|
164
|
+
private measureFootnotesHeight;
|
|
165
|
+
/**
|
|
166
|
+
* Measures the height of just the continuation content (in points).
|
|
167
|
+
*/
|
|
168
|
+
private measureContinuationHeight;
|
|
169
|
+
/**
|
|
170
|
+
* Splits a footnote element into parts that fit within the available height.
|
|
171
|
+
* Returns the elements that fit and the elements that need to continue.
|
|
172
|
+
*/
|
|
173
|
+
private splitFootnoteToFit;
|
|
174
|
+
/**
|
|
175
|
+
* Measures a single footnote's height.
|
|
176
|
+
*/
|
|
177
|
+
private measureSingleFootnoteHeight;
|
|
178
|
+
/**
|
|
179
|
+
* Adds footnotes to a page container, including continuation content.
|
|
180
|
+
*/
|
|
181
|
+
private addPageFootnotes;
|
|
143
182
|
/**
|
|
144
183
|
* Selects the appropriate header for a page based on section, page position, and page number.
|
|
145
184
|
*/
|
|
@@ -150,6 +189,8 @@ export declare class PaginationEngine {
|
|
|
150
189
|
private selectFooter;
|
|
151
190
|
/**
|
|
152
191
|
* Flows measured blocks into page containers.
|
|
192
|
+
* Implements a single-pass, forward-only algorithm that is compatible with future lazy loading.
|
|
193
|
+
* Supports footnote continuation - long footnotes can split across pages.
|
|
153
194
|
*/
|
|
154
195
|
private flowToPages;
|
|
155
196
|
/**
|
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;IACnB,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,wBAAwB;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,uBAAuB;IACvB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,uDAAuD;IACvD,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,wBAAwB;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,uBAAuB;IACvB,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,eAAe,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,UAAU,EAAE,cAAc,CAAC;IAC3B,iCAAiC;IACjC,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAqDD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAuB;
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
|
package/dist/pagination.js
CHANGED
|
@@ -49,10 +49,6 @@ function parseDimensions(section) {
|
|
|
49
49
|
footerHeight,
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
|
-
/**
|
|
53
|
-
* Pagination engine that converts HTML with pagination metadata
|
|
54
|
-
* into a paginated view with fixed-size page containers.
|
|
55
|
-
*/
|
|
56
52
|
export class PaginationEngine {
|
|
57
53
|
/**
|
|
58
54
|
* Creates a new pagination engine.
|
|
@@ -62,6 +58,7 @@ export class PaginationEngine {
|
|
|
62
58
|
* @param options - Pagination options
|
|
63
59
|
*/
|
|
64
60
|
constructor(staging, container, options = {}) {
|
|
61
|
+
this.pendingFootnoteContinuation = null;
|
|
65
62
|
this.stagingElement =
|
|
66
63
|
typeof staging === "string"
|
|
67
64
|
? document.getElementById(staging)
|
|
@@ -81,6 +78,7 @@ export class PaginationEngine {
|
|
|
81
78
|
this.showPageNumbers = options.showPageNumbers ?? true;
|
|
82
79
|
this.pageGap = options.pageGap ?? 20;
|
|
83
80
|
this.hfRegistry = new Map();
|
|
81
|
+
this.footnoteRegistry = new Map();
|
|
84
82
|
}
|
|
85
83
|
/**
|
|
86
84
|
* Runs the pagination process.
|
|
@@ -92,6 +90,8 @@ export class PaginationEngine {
|
|
|
92
90
|
let pageNumber = 1;
|
|
93
91
|
// Parse the header/footer registry if present
|
|
94
92
|
this.hfRegistry = this.parseHeaderFooterRegistry();
|
|
93
|
+
// Parse the footnote registry if present
|
|
94
|
+
this.footnoteRegistry = this.parseFootnoteRegistry();
|
|
95
95
|
// Find all section containers
|
|
96
96
|
const sections = this.stagingElement.querySelectorAll("[data-section-index]");
|
|
97
97
|
// If no sections found, treat the entire staging content as one section
|
|
@@ -197,6 +197,255 @@ export class PaginationEngine {
|
|
|
197
197
|
}
|
|
198
198
|
return registry;
|
|
199
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Parses the footnote registry from the staging element.
|
|
202
|
+
*/
|
|
203
|
+
parseFootnoteRegistry() {
|
|
204
|
+
const registry = new Map();
|
|
205
|
+
const registryEl = this.stagingElement.querySelector("#pagination-footnote-registry");
|
|
206
|
+
if (!registryEl)
|
|
207
|
+
return registry;
|
|
208
|
+
const entries = Array.from(registryEl.querySelectorAll("[data-footnote-id]"));
|
|
209
|
+
for (const entry of entries) {
|
|
210
|
+
const footnoteId = entry.dataset.footnoteId;
|
|
211
|
+
if (footnoteId) {
|
|
212
|
+
// Clone the footnote element for later use
|
|
213
|
+
registry.set(footnoteId, entry.cloneNode(true));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return registry;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Extracts footnote reference IDs from an element.
|
|
220
|
+
*/
|
|
221
|
+
extractFootnoteRefs(element) {
|
|
222
|
+
const refs = element.querySelectorAll("[data-footnote-id]");
|
|
223
|
+
const ids = [];
|
|
224
|
+
for (const ref of Array.from(refs)) {
|
|
225
|
+
const id = ref.dataset.footnoteId;
|
|
226
|
+
if (id && !ids.includes(id)) {
|
|
227
|
+
ids.push(id);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return ids;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Measures the height of footnotes for given IDs (in points).
|
|
234
|
+
* Creates a temporary container to measure the footnotes.
|
|
235
|
+
* @param footnoteIds - IDs of footnotes to measure
|
|
236
|
+
* @param contentWidth - Width for measurement
|
|
237
|
+
* @param continuation - Optional continuation content to include first
|
|
238
|
+
*/
|
|
239
|
+
measureFootnotesHeight(footnoteIds, contentWidth, continuation) {
|
|
240
|
+
const hasContinuation = continuation && continuation.remainingElements.length > 0;
|
|
241
|
+
if ((footnoteIds.length === 0 && !hasContinuation) || this.footnoteRegistry.size === 0) {
|
|
242
|
+
return 0;
|
|
243
|
+
}
|
|
244
|
+
// Create a temporary measurement container
|
|
245
|
+
const measureContainer = document.createElement("div");
|
|
246
|
+
measureContainer.style.position = "absolute";
|
|
247
|
+
measureContainer.style.visibility = "hidden";
|
|
248
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
249
|
+
measureContainer.style.left = "-9999px";
|
|
250
|
+
// Add separator line (same as will be rendered)
|
|
251
|
+
const hr = document.createElement("hr");
|
|
252
|
+
measureContainer.appendChild(hr);
|
|
253
|
+
// Add continuation content first (if any)
|
|
254
|
+
if (hasContinuation) {
|
|
255
|
+
const contWrapper = document.createElement("div");
|
|
256
|
+
contWrapper.className = "footnote-continuation";
|
|
257
|
+
for (const el of continuation.remainingElements) {
|
|
258
|
+
contWrapper.appendChild(el.cloneNode(true));
|
|
259
|
+
}
|
|
260
|
+
measureContainer.appendChild(contWrapper);
|
|
261
|
+
}
|
|
262
|
+
// Add footnotes
|
|
263
|
+
for (const id of footnoteIds) {
|
|
264
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
265
|
+
if (footnote) {
|
|
266
|
+
measureContainer.appendChild(footnote.cloneNode(true));
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Append to staging for measurement
|
|
270
|
+
this.stagingElement.appendChild(measureContainer);
|
|
271
|
+
// Measure
|
|
272
|
+
const rect = measureContainer.getBoundingClientRect();
|
|
273
|
+
const heightPt = pxToPt(rect.height);
|
|
274
|
+
// Clean up
|
|
275
|
+
this.stagingElement.removeChild(measureContainer);
|
|
276
|
+
return heightPt;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Measures the height of just the continuation content (in points).
|
|
280
|
+
*/
|
|
281
|
+
measureContinuationHeight(continuation, contentWidth) {
|
|
282
|
+
if (!continuation || continuation.remainingElements.length === 0) {
|
|
283
|
+
return 0;
|
|
284
|
+
}
|
|
285
|
+
const measureContainer = document.createElement("div");
|
|
286
|
+
measureContainer.style.position = "absolute";
|
|
287
|
+
measureContainer.style.visibility = "hidden";
|
|
288
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
289
|
+
measureContainer.style.left = "-9999px";
|
|
290
|
+
// Add separator line
|
|
291
|
+
const hr = document.createElement("hr");
|
|
292
|
+
measureContainer.appendChild(hr);
|
|
293
|
+
// Add continuation content
|
|
294
|
+
for (const el of continuation.remainingElements) {
|
|
295
|
+
measureContainer.appendChild(el.cloneNode(true));
|
|
296
|
+
}
|
|
297
|
+
this.stagingElement.appendChild(measureContainer);
|
|
298
|
+
const rect = measureContainer.getBoundingClientRect();
|
|
299
|
+
const heightPt = pxToPt(rect.height);
|
|
300
|
+
this.stagingElement.removeChild(measureContainer);
|
|
301
|
+
return heightPt;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Splits a footnote element into parts that fit within the available height.
|
|
305
|
+
* Returns the elements that fit and the elements that need to continue.
|
|
306
|
+
*/
|
|
307
|
+
splitFootnoteToFit(footnoteElement, availableHeightPt, contentWidth) {
|
|
308
|
+
// Get child elements (paragraphs) of the footnote content
|
|
309
|
+
const footnoteContent = footnoteElement.querySelector(".footnote-content");
|
|
310
|
+
if (!footnoteContent) {
|
|
311
|
+
// No content structure, can't split - return whole footnote
|
|
312
|
+
return { fits: [footnoteElement.cloneNode(true)], overflow: [] };
|
|
313
|
+
}
|
|
314
|
+
const children = Array.from(footnoteContent.children);
|
|
315
|
+
if (children.length <= 1) {
|
|
316
|
+
// Single paragraph, can't split at paragraph level
|
|
317
|
+
return { fits: [footnoteElement.cloneNode(true)], overflow: [] };
|
|
318
|
+
}
|
|
319
|
+
const fits = [];
|
|
320
|
+
const overflow = [];
|
|
321
|
+
let currentHeight = 0;
|
|
322
|
+
// Measure separator line height
|
|
323
|
+
const hrMeasure = document.createElement("div");
|
|
324
|
+
hrMeasure.style.position = "absolute";
|
|
325
|
+
hrMeasure.style.visibility = "hidden";
|
|
326
|
+
hrMeasure.style.width = `${contentWidth}pt`;
|
|
327
|
+
hrMeasure.style.left = "-9999px";
|
|
328
|
+
const hr = document.createElement("hr");
|
|
329
|
+
hrMeasure.appendChild(hr);
|
|
330
|
+
this.stagingElement.appendChild(hrMeasure);
|
|
331
|
+
const hrHeight = pxToPt(hrMeasure.getBoundingClientRect().height);
|
|
332
|
+
this.stagingElement.removeChild(hrMeasure);
|
|
333
|
+
currentHeight = hrHeight;
|
|
334
|
+
// Also account for footnote number
|
|
335
|
+
const footnoteNumber = footnoteElement.querySelector(".footnote-number");
|
|
336
|
+
for (let i = 0; i < children.length; i++) {
|
|
337
|
+
const child = children[i];
|
|
338
|
+
// Measure this element
|
|
339
|
+
const measureContainer = document.createElement("div");
|
|
340
|
+
measureContainer.style.position = "absolute";
|
|
341
|
+
measureContainer.style.visibility = "hidden";
|
|
342
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
343
|
+
measureContainer.style.left = "-9999px";
|
|
344
|
+
measureContainer.appendChild(child.cloneNode(true));
|
|
345
|
+
this.stagingElement.appendChild(measureContainer);
|
|
346
|
+
const childHeight = pxToPt(measureContainer.getBoundingClientRect().height);
|
|
347
|
+
this.stagingElement.removeChild(measureContainer);
|
|
348
|
+
if (currentHeight + childHeight <= availableHeightPt) {
|
|
349
|
+
fits.push(child.cloneNode(true));
|
|
350
|
+
currentHeight += childHeight;
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
// This and remaining elements overflow
|
|
354
|
+
for (let j = i; j < children.length; j++) {
|
|
355
|
+
overflow.push(children[j].cloneNode(true));
|
|
356
|
+
}
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return { fits, overflow };
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Measures a single footnote's height.
|
|
364
|
+
*/
|
|
365
|
+
measureSingleFootnoteHeight(footnoteId, contentWidth) {
|
|
366
|
+
const footnote = this.footnoteRegistry.get(footnoteId);
|
|
367
|
+
if (!footnote)
|
|
368
|
+
return 0;
|
|
369
|
+
const measureContainer = document.createElement("div");
|
|
370
|
+
measureContainer.style.position = "absolute";
|
|
371
|
+
measureContainer.style.visibility = "hidden";
|
|
372
|
+
measureContainer.style.width = `${contentWidth}pt`;
|
|
373
|
+
measureContainer.style.left = "-9999px";
|
|
374
|
+
measureContainer.appendChild(footnote.cloneNode(true));
|
|
375
|
+
this.stagingElement.appendChild(measureContainer);
|
|
376
|
+
const rect = measureContainer.getBoundingClientRect();
|
|
377
|
+
const heightPt = pxToPt(rect.height);
|
|
378
|
+
this.stagingElement.removeChild(measureContainer);
|
|
379
|
+
return heightPt;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Adds footnotes to a page container, including continuation content.
|
|
383
|
+
*/
|
|
384
|
+
addPageFootnotes(pageBox, footnoteIds, dims, continuation, partialFootnotes) {
|
|
385
|
+
const hasContinuation = continuation && continuation.remainingElements.length > 0;
|
|
386
|
+
if (footnoteIds.length === 0 && !hasContinuation) {
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
if (this.footnoteRegistry.size === 0 && !hasContinuation) {
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
// Create a set of partial footnote IDs for quick lookup
|
|
393
|
+
const partialFootnoteIds = new Set(partialFootnotes?.map(p => p.footnoteId) || []);
|
|
394
|
+
const footnotesDiv = document.createElement("div");
|
|
395
|
+
footnotesDiv.className = `${this.cssPrefix}footnotes`;
|
|
396
|
+
footnotesDiv.style.position = "absolute";
|
|
397
|
+
footnotesDiv.style.bottom = `${dims.marginBottom}pt`; // Above footer area
|
|
398
|
+
footnotesDiv.style.left = `${dims.marginLeft}pt`;
|
|
399
|
+
footnotesDiv.style.width = `${dims.contentWidth}pt`;
|
|
400
|
+
footnotesDiv.style.boxSizing = "border-box";
|
|
401
|
+
// Add separator line
|
|
402
|
+
const hr = document.createElement("hr");
|
|
403
|
+
footnotesDiv.appendChild(hr);
|
|
404
|
+
// Add continuation content first (if any)
|
|
405
|
+
if (hasContinuation) {
|
|
406
|
+
const contWrapper = document.createElement("div");
|
|
407
|
+
contWrapper.className = "footnote-continuation";
|
|
408
|
+
for (const el of continuation.remainingElements) {
|
|
409
|
+
contWrapper.appendChild(el.cloneNode(true));
|
|
410
|
+
}
|
|
411
|
+
footnotesDiv.appendChild(contWrapper);
|
|
412
|
+
}
|
|
413
|
+
// Clone footnotes in order of appearance
|
|
414
|
+
for (const id of footnoteIds) {
|
|
415
|
+
// Check if this is a partial footnote
|
|
416
|
+
const partial = partialFootnotes?.find(p => p.footnoteId === id);
|
|
417
|
+
if (partial) {
|
|
418
|
+
// Render partial footnote (only the fitting elements)
|
|
419
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
420
|
+
if (footnote) {
|
|
421
|
+
const partialDiv = document.createElement("div");
|
|
422
|
+
partialDiv.className = "footnote-item";
|
|
423
|
+
partialDiv.dataset.footnoteId = id;
|
|
424
|
+
// Add footnote number
|
|
425
|
+
const numberSpan = footnote.querySelector(".footnote-number");
|
|
426
|
+
if (numberSpan) {
|
|
427
|
+
partialDiv.appendChild(numberSpan.cloneNode(true));
|
|
428
|
+
}
|
|
429
|
+
// Add only the fitting content
|
|
430
|
+
const contentSpan = document.createElement("span");
|
|
431
|
+
contentSpan.className = "footnote-content";
|
|
432
|
+
for (const el of partial.fittingElements) {
|
|
433
|
+
contentSpan.appendChild(el.cloneNode(true));
|
|
434
|
+
}
|
|
435
|
+
partialDiv.appendChild(contentSpan);
|
|
436
|
+
footnotesDiv.appendChild(partialDiv);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
// Render full footnote from registry
|
|
441
|
+
const footnote = this.footnoteRegistry.get(id);
|
|
442
|
+
if (footnote) {
|
|
443
|
+
footnotesDiv.appendChild(footnote.cloneNode(true));
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
pageBox.appendChild(footnotesDiv);
|
|
448
|
+
}
|
|
200
449
|
/**
|
|
201
450
|
* Selects the appropriate header for a page based on section, page position, and page number.
|
|
202
451
|
*/
|
|
@@ -235,6 +484,8 @@ export class PaginationEngine {
|
|
|
235
484
|
}
|
|
236
485
|
/**
|
|
237
486
|
* Flows measured blocks into page containers.
|
|
487
|
+
* Implements a single-pass, forward-only algorithm that is compatible with future lazy loading.
|
|
488
|
+
* Supports footnote continuation - long footnotes can split across pages.
|
|
238
489
|
*/
|
|
239
490
|
flowToPages(blocks, dims, startPageNumber, sectionIndex) {
|
|
240
491
|
const pages = [];
|
|
@@ -245,16 +496,42 @@ export class PaginationEngine {
|
|
|
245
496
|
let pageInSection = 1;
|
|
246
497
|
// Track the previous block's bottom margin for margin collapsing
|
|
247
498
|
let prevMarginBottomPt = 0;
|
|
499
|
+
// Track footnote IDs for the current page
|
|
500
|
+
let currentFootnoteIds = [];
|
|
501
|
+
// Track height consumed by footnotes on current page
|
|
502
|
+
let currentFootnoteHeight = 0;
|
|
503
|
+
// Track footnote continuation for current page (from previous page)
|
|
504
|
+
let currentContinuation = this.pendingFootnoteContinuation;
|
|
505
|
+
// Track any new continuation that will carry to next page
|
|
506
|
+
let nextPageContinuation = null;
|
|
507
|
+
// Track partial footnotes for current page (footnotes that were split)
|
|
508
|
+
let currentPartialFootnotes = [];
|
|
509
|
+
// Account for any continuation from previous section/page
|
|
510
|
+
if (currentContinuation && currentContinuation.remainingElements.length > 0) {
|
|
511
|
+
currentFootnoteHeight = this.measureContinuationHeight(currentContinuation, dims.contentWidth);
|
|
512
|
+
}
|
|
248
513
|
const finishPage = () => {
|
|
249
|
-
if (currentContent.length === 0)
|
|
514
|
+
if (currentContent.length === 0 && !currentContinuation)
|
|
250
515
|
return;
|
|
251
|
-
const page = this.createPage(dims, pageNumber, sectionIndex, currentContent, pageInSection);
|
|
516
|
+
const page = this.createPage(dims, pageNumber, sectionIndex, currentContent, pageInSection, currentFootnoteIds, currentContinuation, currentPartialFootnotes.length > 0 ? currentPartialFootnotes : undefined);
|
|
252
517
|
pages.push(page);
|
|
253
518
|
pageNumber++;
|
|
254
519
|
pageInSection++;
|
|
255
520
|
currentContent = [];
|
|
256
521
|
remainingHeight = dims.contentHeight;
|
|
257
522
|
prevMarginBottomPt = 0; // Reset margin tracking for new page
|
|
523
|
+
currentFootnoteIds = []; // Reset footnotes for new page
|
|
524
|
+
currentPartialFootnotes = []; // Reset partial footnotes for new page
|
|
525
|
+
// Carry over continuation to next page
|
|
526
|
+
currentContinuation = nextPageContinuation;
|
|
527
|
+
nextPageContinuation = null;
|
|
528
|
+
// Account for continuation height on new page
|
|
529
|
+
if (currentContinuation && currentContinuation.remainingElements.length > 0) {
|
|
530
|
+
currentFootnoteHeight = this.measureContinuationHeight(currentContinuation, dims.contentWidth);
|
|
531
|
+
}
|
|
532
|
+
else {
|
|
533
|
+
currentFootnoteHeight = 0;
|
|
534
|
+
}
|
|
258
535
|
};
|
|
259
536
|
for (let i = 0; i < blocks.length; i++) {
|
|
260
537
|
const block = blocks[i];
|
|
@@ -268,6 +545,19 @@ export class PaginationEngine {
|
|
|
268
545
|
if (block.pageBreakBefore && currentContent.length > 0) {
|
|
269
546
|
finishPage();
|
|
270
547
|
}
|
|
548
|
+
// Extract footnote references from this block
|
|
549
|
+
const blockFootnoteIds = this.extractFootnoteRefs(block.element);
|
|
550
|
+
// Only count new footnotes (not already on this page)
|
|
551
|
+
const newFootnoteIds = blockFootnoteIds.filter(id => !currentFootnoteIds.includes(id));
|
|
552
|
+
// Calculate additional footnote height if this block is added
|
|
553
|
+
let additionalFootnoteHeight = 0;
|
|
554
|
+
if (newFootnoteIds.length > 0 && this.footnoteRegistry.size > 0) {
|
|
555
|
+
// Measure the combined height of all footnotes that would be on this page
|
|
556
|
+
// (including any continuation)
|
|
557
|
+
const combinedFootnoteIds = [...currentFootnoteIds, ...newFootnoteIds];
|
|
558
|
+
const totalFootnoteHeight = this.measureFootnotesHeight(combinedFootnoteIds, dims.contentWidth, currentContinuation);
|
|
559
|
+
additionalFootnoteHeight = totalFootnoteHeight - currentFootnoteHeight;
|
|
560
|
+
}
|
|
271
561
|
// Calculate the effective height this block will consume
|
|
272
562
|
// Account for margin collapsing: the gap between blocks is max(prevBottom, currTop), not sum
|
|
273
563
|
const isFirstOnPage = currentContent.length === 0;
|
|
@@ -276,32 +566,117 @@ export class PaginationEngine {
|
|
|
276
566
|
// Margin collapsing: use the larger of the two adjacent margins
|
|
277
567
|
effectiveMarginTop = Math.max(block.marginTopPt, prevMarginBottomPt) - prevMarginBottomPt;
|
|
278
568
|
}
|
|
279
|
-
// Total height = top margin gap + content + bottom margin
|
|
280
|
-
|
|
281
|
-
const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt;
|
|
569
|
+
// Total height = top margin gap + content + bottom margin + footnote space
|
|
570
|
+
const blockSpace = effectiveMarginTop + block.heightPt + block.marginBottomPt + additionalFootnoteHeight;
|
|
282
571
|
// Calculate needed height (including keepWithNext)
|
|
283
572
|
let neededHeight = blockSpace;
|
|
284
573
|
if (block.keepWithNext && nextBlock && !nextBlock.isPageBreak) {
|
|
285
574
|
// For keepWithNext, include the next block with collapsed margins
|
|
286
575
|
const collapsedMargin = Math.max(block.marginBottomPt, nextBlock.marginTopPt);
|
|
287
576
|
neededHeight = effectiveMarginTop + block.heightPt + collapsedMargin +
|
|
288
|
-
nextBlock.heightPt + nextBlock.marginBottomPt;
|
|
577
|
+
nextBlock.heightPt + nextBlock.marginBottomPt + additionalFootnoteHeight;
|
|
289
578
|
}
|
|
290
|
-
//
|
|
291
|
-
|
|
579
|
+
// Effective remaining height (content area minus footnotes already on page)
|
|
580
|
+
const effectiveRemainingHeight = remainingHeight - currentFootnoteHeight;
|
|
581
|
+
// Check if block fits on current page (including its footnotes)
|
|
582
|
+
if (blockSpace <= effectiveRemainingHeight) {
|
|
292
583
|
// Block fits
|
|
293
584
|
currentContent.push(block.element.cloneNode(true));
|
|
294
|
-
remainingHeight -=
|
|
585
|
+
remainingHeight -= (effectiveMarginTop + block.heightPt + block.marginBottomPt);
|
|
295
586
|
prevMarginBottomPt = block.marginBottomPt;
|
|
587
|
+
// Add new footnotes to current page
|
|
588
|
+
if (newFootnoteIds.length > 0) {
|
|
589
|
+
currentFootnoteIds.push(...newFootnoteIds);
|
|
590
|
+
currentFootnoteHeight += additionalFootnoteHeight;
|
|
591
|
+
}
|
|
296
592
|
}
|
|
297
593
|
else if (block.heightPt + block.marginTopPt + block.marginBottomPt <= dims.contentHeight) {
|
|
298
|
-
// Block doesn't fit but will fit on a new page
|
|
299
|
-
|
|
300
|
-
//
|
|
301
|
-
const
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
594
|
+
// Block doesn't fit but will fit on a new page (even with footnotes)
|
|
595
|
+
// Check if we need to split any footnotes on the current page first
|
|
596
|
+
// Try to fit the block with partial footnotes using footnote continuation
|
|
597
|
+
const blockSpaceWithoutFootnotes = effectiveMarginTop + block.heightPt + block.marginBottomPt;
|
|
598
|
+
if (newFootnoteIds.length > 0 && blockSpaceWithoutFootnotes <= effectiveRemainingHeight) {
|
|
599
|
+
// Block itself fits, but footnotes don't - try footnote continuation
|
|
600
|
+
currentContent.push(block.element.cloneNode(true));
|
|
601
|
+
remainingHeight -= (effectiveMarginTop + block.heightPt + block.marginBottomPt);
|
|
602
|
+
prevMarginBottomPt = block.marginBottomPt;
|
|
603
|
+
// Calculate space available for footnotes
|
|
604
|
+
const spaceForFootnotes = remainingHeight - currentFootnoteHeight;
|
|
605
|
+
// Try to fit as much of each new footnote as possible
|
|
606
|
+
for (const footnoteId of newFootnoteIds) {
|
|
607
|
+
const footnote = this.footnoteRegistry.get(footnoteId);
|
|
608
|
+
if (!footnote)
|
|
609
|
+
continue;
|
|
610
|
+
const footnoteHeight = this.measureSingleFootnoteHeight(footnoteId, dims.contentWidth);
|
|
611
|
+
if (footnoteHeight <= spaceForFootnotes - currentFootnoteHeight) {
|
|
612
|
+
// Whole footnote fits
|
|
613
|
+
currentFootnoteIds.push(footnoteId);
|
|
614
|
+
currentFootnoteHeight += footnoteHeight;
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
// Footnote needs to be split - try to fit part of it
|
|
618
|
+
const availableForThisFootnote = spaceForFootnotes;
|
|
619
|
+
if (availableForThisFootnote > 20) { // Minimum space to start a footnote (roughly 1 line + separator)
|
|
620
|
+
const { fits, overflow } = this.splitFootnoteToFit(footnote, availableForThisFootnote, dims.contentWidth);
|
|
621
|
+
if (fits.length > 0) {
|
|
622
|
+
// Add partial footnote to current page
|
|
623
|
+
currentFootnoteIds.push(footnoteId);
|
|
624
|
+
// Track this as a partial footnote so we only render the fitting part
|
|
625
|
+
currentPartialFootnotes.push({
|
|
626
|
+
footnoteId,
|
|
627
|
+
fittingElements: fits
|
|
628
|
+
});
|
|
629
|
+
// Store overflow for next page
|
|
630
|
+
nextPageContinuation = {
|
|
631
|
+
footnoteId,
|
|
632
|
+
remainingElements: overflow
|
|
633
|
+
};
|
|
634
|
+
// Update height (approximate - we've added some content)
|
|
635
|
+
currentFootnoteHeight = spaceForFootnotes;
|
|
636
|
+
}
|
|
637
|
+
else {
|
|
638
|
+
// Nothing fits, entire footnote continues to next page
|
|
639
|
+
nextPageContinuation = {
|
|
640
|
+
footnoteId,
|
|
641
|
+
remainingElements: Array.from(footnote.querySelectorAll(".footnote-content > *"))
|
|
642
|
+
.map(el => el.cloneNode(true))
|
|
643
|
+
};
|
|
644
|
+
// If no content elements found, use the whole footnote
|
|
645
|
+
if (nextPageContinuation.remainingElements.length === 0) {
|
|
646
|
+
nextPageContinuation.remainingElements = [footnote.cloneNode(true)];
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
else {
|
|
651
|
+
// Not enough space to start footnote - continue whole thing
|
|
652
|
+
nextPageContinuation = {
|
|
653
|
+
footnoteId,
|
|
654
|
+
remainingElements: Array.from(footnote.querySelectorAll(".footnote-content > *"))
|
|
655
|
+
.map(el => el.cloneNode(true))
|
|
656
|
+
};
|
|
657
|
+
if (nextPageContinuation.remainingElements.length === 0) {
|
|
658
|
+
nextPageContinuation.remainingElements = [footnote.cloneNode(true)];
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
else {
|
|
665
|
+
// Block itself doesn't fit - start new page
|
|
666
|
+
finishPage();
|
|
667
|
+
// On new page, recalculate footnote height for just this block's footnotes
|
|
668
|
+
// (plus any continuation from previous page)
|
|
669
|
+
const newPageFootnoteHeight = blockFootnoteIds.length > 0
|
|
670
|
+
? this.measureFootnotesHeight(blockFootnoteIds, dims.contentWidth, currentContinuation)
|
|
671
|
+
: (currentContinuation ? this.measureContinuationHeight(currentContinuation, dims.contentWidth) : 0);
|
|
672
|
+
// Include full top margin
|
|
673
|
+
const newPageSpace = block.marginTopPt + block.heightPt + block.marginBottomPt;
|
|
674
|
+
currentContent.push(block.element.cloneNode(true));
|
|
675
|
+
remainingHeight = dims.contentHeight - newPageSpace;
|
|
676
|
+
prevMarginBottomPt = block.marginBottomPt;
|
|
677
|
+
currentFootnoteIds = [...blockFootnoteIds];
|
|
678
|
+
currentFootnoteHeight = newPageFootnoteHeight;
|
|
679
|
+
}
|
|
305
680
|
}
|
|
306
681
|
else {
|
|
307
682
|
// Block is taller than a page - add it and let it overflow
|
|
@@ -310,17 +685,20 @@ export class PaginationEngine {
|
|
|
310
685
|
finishPage();
|
|
311
686
|
}
|
|
312
687
|
currentContent.push(block.element.cloneNode(true));
|
|
688
|
+
currentFootnoteIds = [...blockFootnoteIds];
|
|
313
689
|
finishPage();
|
|
314
690
|
}
|
|
315
691
|
}
|
|
316
692
|
// Finish last page
|
|
317
693
|
finishPage();
|
|
694
|
+
// Store any remaining continuation for next section
|
|
695
|
+
this.pendingFootnoteContinuation = nextPageContinuation;
|
|
318
696
|
return pages;
|
|
319
697
|
}
|
|
320
698
|
/**
|
|
321
699
|
* Creates a page container element.
|
|
322
700
|
*/
|
|
323
|
-
createPage(dims, pageNumber, sectionIndex, content, pageInSection) {
|
|
701
|
+
createPage(dims, pageNumber, sectionIndex, content, pageInSection, footnoteIds = [], continuation, partialFootnotes) {
|
|
324
702
|
// Create page box at full size, then scale the entire box
|
|
325
703
|
// This ensures proper clipping and consistent scaling of all elements
|
|
326
704
|
const pageBox = document.createElement("div");
|
|
@@ -359,10 +737,16 @@ export class PaginationEngine {
|
|
|
359
737
|
const headerDiv = document.createElement("div");
|
|
360
738
|
headerDiv.className = `${this.cssPrefix}header`;
|
|
361
739
|
headerDiv.style.position = "absolute";
|
|
362
|
-
headerDiv.style.top =
|
|
740
|
+
headerDiv.style.top = "0"; // Start at page top
|
|
363
741
|
headerDiv.style.left = `${dims.marginLeft}pt`;
|
|
364
742
|
headerDiv.style.width = `${dims.contentWidth}pt`;
|
|
743
|
+
headerDiv.style.height = `${dims.marginTop}pt`; // Constrain to top margin area
|
|
365
744
|
headerDiv.style.overflow = "hidden";
|
|
745
|
+
headerDiv.style.boxSizing = "border-box";
|
|
746
|
+
headerDiv.style.display = "flex";
|
|
747
|
+
headerDiv.style.flexDirection = "column";
|
|
748
|
+
headerDiv.style.justifyContent = "flex-end"; // Align content to bottom of header area
|
|
749
|
+
headerDiv.style.paddingBottom = "4pt"; // Small gap before content area
|
|
366
750
|
// Clone the header content (skip the wrapper div's data attributes)
|
|
367
751
|
for (const child of Array.from(headerSource.childNodes)) {
|
|
368
752
|
headerDiv.appendChild(child.cloneNode(true));
|
|
@@ -383,16 +767,27 @@ export class PaginationEngine {
|
|
|
383
767
|
contentArea.appendChild(el);
|
|
384
768
|
}
|
|
385
769
|
pageBox.appendChild(contentArea);
|
|
770
|
+
// Add footnotes if any references appear on this page (or continuation from previous)
|
|
771
|
+
const hasContinuation = continuation && continuation.remainingElements.length > 0;
|
|
772
|
+
if (footnoteIds.length > 0 || hasContinuation) {
|
|
773
|
+
this.addPageFootnotes(pageBox, footnoteIds, dims, continuation, partialFootnotes);
|
|
774
|
+
}
|
|
386
775
|
// Add footer if available for this section/page
|
|
387
776
|
const footerSource = this.selectFooter(sectionIndex, pageInSection, pageNumber);
|
|
388
777
|
if (footerSource) {
|
|
389
778
|
const footerDiv = document.createElement("div");
|
|
390
779
|
footerDiv.className = `${this.cssPrefix}footer`;
|
|
391
780
|
footerDiv.style.position = "absolute";
|
|
392
|
-
footerDiv.style.bottom =
|
|
781
|
+
footerDiv.style.bottom = "0"; // Start at page bottom
|
|
393
782
|
footerDiv.style.left = `${dims.marginLeft}pt`;
|
|
394
783
|
footerDiv.style.width = `${dims.contentWidth}pt`;
|
|
784
|
+
footerDiv.style.height = `${dims.marginBottom}pt`; // Constrain to bottom margin area
|
|
395
785
|
footerDiv.style.overflow = "hidden";
|
|
786
|
+
footerDiv.style.boxSizing = "border-box";
|
|
787
|
+
footerDiv.style.display = "flex";
|
|
788
|
+
footerDiv.style.flexDirection = "column";
|
|
789
|
+
footerDiv.style.justifyContent = "flex-start"; // Align content to top of footer area
|
|
790
|
+
footerDiv.style.paddingTop = "4pt"; // Small gap after content area
|
|
396
791
|
// Clone the footer content (skip the wrapper div's data attributes)
|
|
397
792
|
for (const child of Array.from(footerSource.childNodes)) {
|
|
398
793
|
footerDiv.appendChild(child.cloneNode(true));
|
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-RxzAbbsN5S15Hyo0OI+2N+bdwmHFby0/QxLF4Ifsfgc=",
|
|
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-OvZl/9HSRpL+1JEJwO0mgaE0j65ablClKKCv9Jd7QoY=",
|
|
21
|
+
"DocxodusWasm.wasm": "sha256-Z25cMxmJXbqKUF/HAmC1MgLELIeCNbdSFxOZc2gIRNs=",
|
|
22
22
|
"SkiaSharp.wasm": "sha256-U6RbqUVBn8Vx8qpghJC5+r/DC1NSBY+EIRDxP8o6dsk=",
|
|
23
23
|
"System.Collections.Concurrent.wasm": "sha256-xXJbJWNeQ2DSYvAGUoUHjF9y4Iajv2ed0eACOxWD19U=",
|
|
24
24
|
"System.Collections.wasm": "sha256-mNLhFaXT8X16KYjUVNFYwcdw0h3BUjgD427TR5IWVKU=",
|