@softwear/latestcollectioncore 1.0.185 → 1.0.187

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/reports.js CHANGED
@@ -16,7 +16,7 @@ exports.genPDF = void 0;
16
16
  const jspdf_1 = require("jspdf");
17
17
  const date_fns_1 = require("date-fns");
18
18
  const deepCopy_1 = __importDefault(require("./deepCopy"));
19
- /** Measurement never advances jsPDF sheet count; rendering uses the active canvas page (1-based). */
19
+ /** Measurement uses context `currentPageNumber` (1-based). Rendering uses jsPDF’s `getCurrentPageInfo().pageNumber`, which is already 1-based (first page is 1). */
20
20
  function getCurrentPageNumber(doc, context) {
21
21
  var _a;
22
22
  if (context.mode === 'measurement') {
@@ -507,9 +507,14 @@ addObjectToPDF = function (originX, originY, doc, object, printBuffer, paperSize
507
507
  const layoutXtenths = originX + object.x;
508
508
  const layoutYtenths = originY + object.y;
509
509
  const rawPrintOnlyAtStartOffset = printOnlyAtStartContainersOffset !== null && printOnlyAtStartContainersOffset !== void 0 ? printOnlyAtStartContainersOffset : 0;
510
- const effectivePrintOnlyAtStartContainersOffset = containerChain.length === 0 && rawPrintOnlyAtStartOffset > 0 && getCurrentPageNumber(doc, context) === 1 ? rawPrintOnlyAtStartOffset : 0;
510
+ /** Must consult current page on every read: `addPage` can move to page 2+ mid-invocation while this call stays open. */
511
+ const effectivePrintOnlyAtStartContainersOffsetNow = () => containerChain.length === 0 &&
512
+ rawPrintOnlyAtStartOffset > 0 &&
513
+ getCurrentPageNumber(doc, context) === 1
514
+ ? rawPrintOnlyAtStartOffset
515
+ : 0;
511
516
  const x = layoutXtenths / 10;
512
- const y = (layoutYtenths + effectivePrintOnlyAtStartContainersOffset) / 10;
517
+ const y = (layoutYtenths + effectivePrintOnlyAtStartContainersOffsetNow()) / 10;
513
518
  const width = object.width / 10;
514
519
  const height = object.height / 10;
515
520
  // Keep track of the lower righthandside of all objects in this container
@@ -530,7 +535,7 @@ addObjectToPDF = function (originX, originY, doc, object, printBuffer, paperSize
530
535
  }
531
536
  const nrContainers = source.length;
532
537
  let originX = layoutXtenths;
533
- let originY = layoutYtenths + effectivePrintOnlyAtStartContainersOffset;
538
+ let originY = layoutYtenths + effectivePrintOnlyAtStartContainersOffsetNow();
534
539
  for (let containerIndex = 0; containerIndex < nrContainers; containerIndex++) {
535
540
  const newContainerChain = containerChain.filter(function () {
536
541
  return true;
@@ -542,7 +547,8 @@ addObjectToPDF = function (originX, originY, doc, object, printBuffer, paperSize
542
547
  if (useOrphanCheck && (object.pageBreak || originY + minHeightMm > paperSize.height - paperSize.footerHeight)) {
543
548
  // We ran out of paper
544
549
  originX = layoutXtenths;
545
- originY = layoutYtenths + effectivePrintOnlyAtStartContainersOffset;
550
+ // Continuation sheets must not reuse the page-1-only overlap bump: addPage hasn't run yet so getCurrentPageNumber is still 1.
551
+ originY = layoutYtenths;
546
552
  const newOrigin = addPage(originX, originY, doc, layout, rootPrintBuffer, paperSize, options, newContainerChain, context);
547
553
  originX = newOrigin.originX;
548
554
  originY = newOrigin.originY;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softwear/latestcollectioncore",
3
- "version": "1.0.185",
3
+ "version": "1.0.187",
4
4
  "description": "Core functions for LatestCollections applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/reports.ts CHANGED
@@ -42,7 +42,7 @@ interface RenderContext {
42
42
  mode: RenderMode
43
43
  /** Total pages from measurement pass; used for field sources like `pageCount` / `page`. */
44
44
  pageCount?: number
45
- /** During measurement, logical printable page (starts at 1); incremented when {@link addPage} runs. In rendering use {@link getCurrentPageNumber} (jsPDF). */
45
+ /** During measurement, logical printable page (starts at 1); incremented when {@link addPage} runs. Rendering: see {@link getCurrentPageNumber} (1-based, matches pdf page fields). */
46
46
  currentPageNumber?: number
47
47
  measureOnly?: boolean // When true, skip drawing to measure bounds (for fillContainer rectangles)
48
48
  imageAssets?: Map<string, PdfImageAsset>
@@ -50,7 +50,7 @@ interface RenderContext {
50
50
  defaultFontFamily?: string
51
51
  }
52
52
 
53
- /** Measurement never advances jsPDF sheet count; rendering uses the active canvas page (1-based). */
53
+ /** Measurement uses context `currentPageNumber` (1-based). Rendering uses jsPDF’s `getCurrentPageInfo().pageNumber`, which is already 1-based (first page is 1). */
54
54
  function getCurrentPageNumber(doc: jsPDF, context: RenderContext): number {
55
55
  if (context.mode === 'measurement') {
56
56
  return context.currentPageNumber ?? 1
@@ -585,11 +585,16 @@ addObjectToPDF = function (
585
585
  const layoutXtenths = originX + object.x
586
586
  const layoutYtenths = originY + object.y
587
587
  const rawPrintOnlyAtStartOffset = printOnlyAtStartContainersOffset ?? 0
588
- const effectivePrintOnlyAtStartContainersOffset =
589
- containerChain.length === 0 && rawPrintOnlyAtStartOffset > 0 && getCurrentPageNumber(doc, context) === 1 ? rawPrintOnlyAtStartOffset : 0
588
+ /** Must consult current page on every read: `addPage` can move to page 2+ mid-invocation while this call stays open. */
589
+ const effectivePrintOnlyAtStartContainersOffsetNow = (): number =>
590
+ containerChain.length === 0 &&
591
+ rawPrintOnlyAtStartOffset > 0 &&
592
+ getCurrentPageNumber(doc, context) === 1
593
+ ? rawPrintOnlyAtStartOffset
594
+ : 0
590
595
 
591
596
  const x = layoutXtenths / 10
592
- const y = (layoutYtenths + effectivePrintOnlyAtStartContainersOffset) / 10
597
+ const y = (layoutYtenths + effectivePrintOnlyAtStartContainersOffsetNow()) / 10
593
598
  const width = object.width / 10
594
599
  const height = object.height / 10
595
600
  // Keep track of the lower righthandside of all objects in this container
@@ -613,7 +618,7 @@ addObjectToPDF = function (
613
618
  const nrContainers = source.length
614
619
 
615
620
  let originX = layoutXtenths
616
- let originY = layoutYtenths + effectivePrintOnlyAtStartContainersOffset
621
+ let originY = layoutYtenths + effectivePrintOnlyAtStartContainersOffsetNow()
617
622
 
618
623
  for (let containerIndex = 0; containerIndex < nrContainers; containerIndex++) {
619
624
  const newContainerChain = containerChain.filter(function () {
@@ -626,7 +631,8 @@ addObjectToPDF = function (
626
631
  if (useOrphanCheck && (object.pageBreak || originY + minHeightMm > paperSize.height - paperSize.footerHeight)) {
627
632
  // We ran out of paper
628
633
  originX = layoutXtenths
629
- originY = layoutYtenths + effectivePrintOnlyAtStartContainersOffset
634
+ // Continuation sheets must not reuse the page-1-only overlap bump: addPage hasn't run yet so getCurrentPageNumber is still 1.
635
+ originY = layoutYtenths
630
636
  const newOrigin = addPage(originX, originY, doc, layout, rootPrintBuffer, paperSize, options, newContainerChain, context)
631
637
  originX = newOrigin.originX
632
638
  originY = newOrigin.originY