postext 1.55.0 → 1.57.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.
Files changed (69) hide show
  1. package/dist/__tests__/composed/moduleText.test.d.ts +2 -0
  2. package/dist/__tests__/composed/moduleText.test.d.ts.map +1 -0
  3. package/dist/__tests__/composed/moduleText.test.js +168 -0
  4. package/dist/__tests__/composed/moduleText.test.js.map +1 -0
  5. package/dist/__tests__/defaults/debugFitMarks.test.js +11 -9
  6. package/dist/__tests__/defaults/debugFitMarks.test.js.map +1 -1
  7. package/dist/__tests__/htmlLineBaseline.test.d.ts +2 -0
  8. package/dist/__tests__/htmlLineBaseline.test.d.ts.map +1 -0
  9. package/dist/__tests__/htmlLineBaseline.test.js +86 -0
  10. package/dist/__tests__/htmlLineBaseline.test.js.map +1 -0
  11. package/dist/composed/furniture.d.ts +4 -3
  12. package/dist/composed/furniture.d.ts.map +1 -1
  13. package/dist/composed/furniture.js +5 -4
  14. package/dist/composed/furniture.js.map +1 -1
  15. package/dist/composed/modules.d.ts +36 -0
  16. package/dist/composed/modules.d.ts.map +1 -1
  17. package/dist/composed/modules.js +27 -0
  18. package/dist/composed/modules.js.map +1 -1
  19. package/dist/composed/paint.d.ts +4 -2
  20. package/dist/composed/paint.d.ts.map +1 -1
  21. package/dist/composed/paint.js +3 -2
  22. package/dist/composed/paint.js.map +1 -1
  23. package/dist/composed/types.d.ts +7 -0
  24. package/dist/composed/types.d.ts.map +1 -1
  25. package/dist/configWarnings.d.ts.map +1 -1
  26. package/dist/configWarnings.js +20 -1
  27. package/dist/configWarnings.js.map +1 -1
  28. package/dist/contrast.d.ts.map +1 -1
  29. package/dist/contrast.js +10 -3
  30. package/dist/contrast.js.map +1 -1
  31. package/dist/defaults/debug.d.ts.map +1 -1
  32. package/dist/defaults/debug.js +3 -1
  33. package/dist/defaults/debug.js.map +1 -1
  34. package/dist/design/elementKeys.d.ts +1 -0
  35. package/dist/design/elementKeys.d.ts.map +1 -1
  36. package/dist/design/elementKeys.js +1 -1
  37. package/dist/design/elementKeys.js.map +1 -1
  38. package/dist/design/layout.d.ts +8 -3
  39. package/dist/design/layout.d.ts.map +1 -1
  40. package/dist/design/layout.js +27 -11
  41. package/dist/design/layout.js.map +1 -1
  42. package/dist/html-backend.d.ts.map +1 -1
  43. package/dist/html-backend.js +54 -4
  44. package/dist/html-backend.js.map +1 -1
  45. package/dist/measure/canvas.d.ts +24 -0
  46. package/dist/measure/canvas.d.ts.map +1 -1
  47. package/dist/measure/canvas.js +80 -1
  48. package/dist/measure/canvas.js.map +1 -1
  49. package/dist/measure/fontString.d.ts +4 -0
  50. package/dist/measure/fontString.d.ts.map +1 -1
  51. package/dist/measure/fontString.js +11 -0
  52. package/dist/measure/fontString.js.map +1 -1
  53. package/dist/parse/blockParser.js +2 -2
  54. package/dist/parse/blockParser.js.map +1 -1
  55. package/dist/parse/types.d.ts +4 -0
  56. package/dist/parse/types.d.ts.map +1 -1
  57. package/dist/pipeline/composedLayout.d.ts.map +1 -1
  58. package/dist/pipeline/composedLayout.js +4 -3
  59. package/dist/pipeline/composedLayout.js.map +1 -1
  60. package/dist/pipeline/headerFooter.d.ts +13 -0
  61. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  62. package/dist/pipeline/headerFooter.js +71 -6
  63. package/dist/pipeline/headerFooter.js.map +1 -1
  64. package/dist/types.d.ts +10 -3
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/vdt.d.ts +16 -3
  67. package/dist/vdt.d.ts.map +1 -1
  68. package/dist/vdt.js.map +1 -1
  69. package/package.json +1 -1
@@ -185,6 +185,19 @@ export interface SlotLayoutExtras {
185
185
  resourceId?: string;
186
186
  known: string[];
187
187
  }[];
188
+ /** The attributes some elements read before `attrs`, with their source
189
+ * ranges, by element id (#1189): a module's elements read its
190
+ * `:::module` fence. */
191
+ elementAttrs?: ReadonlyMap<string, {
192
+ attrs: Record<string, string>;
193
+ attrSources: Record<string, {
194
+ start: number;
195
+ end: number;
196
+ }>;
197
+ }>;
198
+ /** Text elements painted over the frames of a composed page (#1189):
199
+ * their blocks are marked `over`. */
200
+ overTexts?: ReadonlySet<string>;
188
201
  }
189
202
  export declare function layoutSlotToVdt(slot: ResolvedDesignSlot, container: {
190
203
  x: number;
@@ -1 +1 @@
1
- {"version":3,"file":"headerFooter.d.ts","sourceRoot":"","sources":["../../src/pipeline/headerFooter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"headerFooter.d.ts","sourceRoot":"","sources":["../../src/pipeline/headerFooter.ts"],"names":[],"mappings":"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"}
@@ -405,6 +405,39 @@ export function layoutBoxDesign(design, info, band, dpi, metadata, extras) {
405
405
  });
406
406
  return slot?.blocks ?? [];
407
407
  }
408
+ /** A composed page's module elements (#1189): the attributes each reads
409
+ * before the page fence's (its `:::module` fence's, as the laid `pages`
410
+ * record them), by element id, and the indices of every element of a
411
+ * module in the template's decoration. `elements` is the decoration
412
+ * resolved (its ids, in the template's order). */
413
+ function moduleDecoration(template, elements, pages) {
414
+ const elementAttrs = new Map();
415
+ const inModule = new Set();
416
+ const laidModules = new Map(pages.flatMap((p) => p.composed?.modules ?? []).filter((m) => m.attrs).map((m) => [m.name, m]));
417
+ for (const m of template.modules ?? []) {
418
+ if (!m.decoration)
419
+ continue;
420
+ const laid = laidModules.get(m.name);
421
+ for (let i = m.decoration.start; i < m.decoration.end; i++) {
422
+ inModule.add(i);
423
+ const id = elements[i]?.id;
424
+ if (id === undefined || !laid?.attrs)
425
+ continue;
426
+ const attrSources = {};
427
+ for (const [k, v] of Object.entries(laid.attrSources ?? {}))
428
+ attrSources[k] = { start: v.sourceStart, end: v.sourceEnd };
429
+ elementAttrs.set(id, { attrs: laid.attrs, attrSources });
430
+ }
431
+ }
432
+ return { elementAttrs, inModule };
433
+ }
434
+ /** What a composed page's decoration means to draw (`folioMissing`,
435
+ * #1163), a module's elements reading its fence first (#1189). */
436
+ function decorationFurniture(template, page, at, role, pageAttrs) {
437
+ const elements = resolveDesignSlot(template.decoration, 'header').elements;
438
+ const { elementAttrs } = moduleDecoration(template, elements, [page]);
439
+ return expectedFurniture(elements, 'decoration', at, role, pageAttrs, elementAttrs.size > 0 ? new Map([...elementAttrs].map(([id, a]) => [id, a.attrs])) : undefined);
440
+ }
408
441
  /** `{ configPath }` when there is one. */
409
442
  const withPath = (configPath) => (configPath !== undefined ? { configPath } : {});
410
443
  const ATTR_ELEMENT = /^\s*\{attr\.([A-Za-z_][A-Za-z0-9_-]*)\}\s*$/;
@@ -478,13 +511,25 @@ function withMap(range, value) {
478
511
  return range;
479
512
  }
480
513
  export function layoutSlotToVdt(slot, container, pageIndex, placeholders, dpi, extras) {
514
+ const own = extras?.elementAttrs;
481
515
  const result = layoutDesignSlot(slot, {
482
516
  container, dpi, placeholders, frames: extras?.frames, pageRole: extras?.pageRole, resourceById: extras?.resourceById,
483
517
  ...(extras?.direction ? { direction: extras.direction } : {}),
484
518
  ...(extras?.mirrored ? { mirrored: true } : {}),
485
519
  ...(extras?.startRight ? { startRight: true } : {}),
486
520
  ...(extras?.arabicNumbers ? { arabicNumbers: true } : {}),
521
+ ...(own && own.size > 0 ? { elementAttrs: new Map([...own].map(([id, a]) => [id, a.attrs])) } : {}),
487
522
  }, pageIndex);
523
+ /** What element `id` reads (#1189): the slot's extras and placeholders,
524
+ * with a module's fence attributes over the page's. */
525
+ const extrasOf = (id) => {
526
+ const a = own?.get(id);
527
+ return a && extras ? { ...extras, attrs: { ...extras.attrs, ...a.attrs }, attrSources: { ...extras.attrSources, ...a.attrSources } } : extras;
528
+ };
529
+ const placeholdersOf = (id) => {
530
+ const a = own?.get(id);
531
+ return a ? { ...placeholders, pageAttrs: { ...placeholders.pageAttrs, ...a.attrs } } : placeholders;
532
+ };
488
533
  if (extras?.connectorDropped) {
489
534
  for (const issue of result.issues)
490
535
  if (issue.kind === 'connectorDropped')
@@ -506,7 +551,9 @@ export function layoutSlotToVdt(slot, container, pageIndex, placeholders, dpi, e
506
551
  for (const el of slot.elements) {
507
552
  if (el.kind !== 'text')
508
553
  continue;
509
- const src = sourceForElement(el.content, extras);
554
+ const elExtras = extrasOf(el.id);
555
+ const elPlaceholders = placeholdersOf(el.id);
556
+ const src = sourceForElement(el.content, elExtras);
510
557
  if (!src)
511
558
  continue;
512
559
  // Inline marks drop their markers from the printed text. The
@@ -514,10 +561,10 @@ export function layoutSlotToVdt(slot, container, pageIndex, placeholders, dpi, e
514
561
  // written (no markers or escapes of its own); otherwise only the range
515
562
  // maps back.
516
563
  const keepMap = !el.inlineMarks || src.text === undefined
517
- || plainDesignText(resolveDesignText(el.content, placeholders, el.inlineMarks === true)).includes(src.text);
564
+ || plainDesignText(resolveDesignText(el.content, elPlaceholders, el.inlineMarks === true)).includes(src.text);
518
565
  const attr = ATTR_ELEMENT.exec(el.content)?.[1];
519
- const mapped = keepMap ? withPrintedTitle(el, src, placeholders) : { start: src.start, end: src.end };
520
- sourceByElement.set(el.id, attr !== undefined && extras.attrSources?.[attr] ? { ...mapped, attr } : mapped);
566
+ const mapped = keepMap ? withPrintedTitle(el, src, elPlaceholders) : { start: src.start, end: src.end };
567
+ sourceByElement.set(el.id, attr !== undefined && elExtras.attrSources?.[attr] ? { ...mapped, attr } : mapped);
521
568
  }
522
569
  }
523
570
  // The texts cut to fit (#628), flagged on the element's own block (not
@@ -539,7 +586,7 @@ export function layoutSlotToVdt(slot, container, pageIndex, placeholders, dpi, e
539
586
  const imageAttrById = new Map();
540
587
  for (const el of slot.elements) {
541
588
  const attr = el.kind === 'image' ? ATTR_ELEMENT.exec(el.resourceId ?? '')?.[1] : undefined;
542
- if (attr !== undefined && extras?.attrs?.[attr] !== undefined)
589
+ if (attr !== undefined && extrasOf(el.id)?.attrs?.[attr] !== undefined)
543
590
  imageAttrById.set(el.id, attr);
544
591
  }
545
592
  const blocks = result.primitives.map((prim) => {
@@ -569,6 +616,8 @@ export function layoutSlotToVdt(slot, container, pageIndex, placeholders, dpi, e
569
616
  if (src.attr !== undefined)
570
617
  block.attr = src.attr;
571
618
  }
619
+ if (block.kind === 'text' && extras?.overTexts?.has(prim.id))
620
+ block.over = true;
572
621
  return block;
573
622
  });
574
623
  return {
@@ -1694,7 +1743,7 @@ function layoutHeadersAndFooters(doc, resourceById, inputs) {
1694
1743
  ...(furniture ? expectedFurniture(headerSlot.elements, 'header', at, role, pageAttrs) : []),
1695
1744
  ...(furniture ? expectedFurniture(footerSlot.elements, 'footer', at, role, pageAttrs) : []),
1696
1745
  ...(page.composed.spread === undefined && template.decoration.elements.some((el) => el.kind === 'text')
1697
- ? expectedFurniture(resolveDesignSlot(template.decoration, 'header').elements, 'decoration', at, role, pageAttrs)
1746
+ ? decorationFurniture(template, page, at, role, pageAttrs)
1698
1747
  : []),
1699
1748
  ];
1700
1749
  furnitureRecords.push({ pageIndex: page.index, template: page.composed.template, side: recto ? 'recto' : 'verso', expected });
@@ -1833,6 +1882,20 @@ function layoutHeadersAndFooters(doc, resourceById, inputs) {
1833
1882
  collapsed.add(t);
1834
1883
  }
1835
1884
  const slot = resolveDesignSlot(template.decoration, 'header');
1885
+ // A module's elements (#1189): their `{attr.x}` and `when` read the
1886
+ // module's fence first, and its texts are painted over the frames
1887
+ // unless they say `over: false` (a page template's texts only when
1888
+ // they say `over: true`).
1889
+ const { elementAttrs, inModule } = moduleDecoration(template, slot.elements, pair ? [pair.left, pair.right] : [page]);
1890
+ const overTexts = new Set();
1891
+ template.decoration.elements.forEach((el, i) => {
1892
+ if (el.kind !== 'text')
1893
+ return;
1894
+ const over = typeof el.over === 'boolean' ? el.over : inModule.has(i);
1895
+ const id = slot.elements[i]?.id;
1896
+ if (over && id !== undefined)
1897
+ overTexts.add(id);
1898
+ });
1836
1899
  const connectorDropped = [];
1837
1900
  const connectorAnchorUnknown = [];
1838
1901
  // A connector's end at an anchor of the picture its frame holds
@@ -1861,6 +1924,8 @@ function layoutHeadersAndFooters(doc, resourceById, inputs) {
1861
1924
  };
1862
1925
  const laidDecoration = template.decoration.elements.length === 0 ? undefined : withMeasureWritingMode('horizontal-tb', () => layoutSlotToVdt(collapsed.size > 0 ? withoutAnchoredTo(slot, collapsed) : slot, container, page.index + pageIndexOffset, placeholders, dpi, {
1863
1926
  ...sheetExtras, frames: { ...slotFrames, named, declared, ...(absent.size > 0 ? { absent } : {}), anchorPoint }, attrs: page.composed.attrs, attrSources, connectorDropped, connectorAnchorUnknown,
1927
+ ...(elementAttrs.size > 0 ? { elementAttrs } : {}),
1928
+ ...(overTexts.size > 0 ? { overTexts } : {}),
1864
1929
  // Each element's pointer, from the template that sets it (#857).
1865
1930
  elementPaths: new Map(resolveDesignSlot(template.decoration, 'header').elements.map((el, i) => [el.id, template.decorationPaths[i]])),
1866
1931
  }));