postext 1.56.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.
- package/dist/__tests__/composed/moduleText.test.d.ts +2 -0
- package/dist/__tests__/composed/moduleText.test.d.ts.map +1 -0
- package/dist/__tests__/composed/moduleText.test.js +168 -0
- package/dist/__tests__/composed/moduleText.test.js.map +1 -0
- package/dist/__tests__/defaults/debugFitMarks.test.js +11 -9
- package/dist/__tests__/defaults/debugFitMarks.test.js.map +1 -1
- package/dist/__tests__/htmlLineBaseline.test.d.ts +2 -0
- package/dist/__tests__/htmlLineBaseline.test.d.ts.map +1 -0
- package/dist/__tests__/htmlLineBaseline.test.js +86 -0
- package/dist/__tests__/htmlLineBaseline.test.js.map +1 -0
- package/dist/composed/furniture.d.ts +4 -3
- package/dist/composed/furniture.d.ts.map +1 -1
- package/dist/composed/furniture.js +5 -4
- package/dist/composed/furniture.js.map +1 -1
- package/dist/composed/modules.d.ts +36 -0
- package/dist/composed/modules.d.ts.map +1 -1
- package/dist/composed/modules.js +27 -0
- package/dist/composed/modules.js.map +1 -1
- package/dist/composed/paint.d.ts +4 -2
- package/dist/composed/paint.d.ts.map +1 -1
- package/dist/composed/paint.js +3 -2
- package/dist/composed/paint.js.map +1 -1
- package/dist/composed/types.d.ts +7 -0
- package/dist/composed/types.d.ts.map +1 -1
- package/dist/configWarnings.d.ts.map +1 -1
- package/dist/configWarnings.js +20 -1
- package/dist/configWarnings.js.map +1 -1
- package/dist/contrast.d.ts.map +1 -1
- package/dist/contrast.js +10 -3
- package/dist/contrast.js.map +1 -1
- package/dist/defaults/debug.d.ts.map +1 -1
- package/dist/defaults/debug.js +3 -1
- package/dist/defaults/debug.js.map +1 -1
- package/dist/design/elementKeys.d.ts +1 -0
- package/dist/design/elementKeys.d.ts.map +1 -1
- package/dist/design/elementKeys.js +1 -1
- package/dist/design/elementKeys.js.map +1 -1
- package/dist/design/layout.d.ts +8 -3
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +27 -11
- package/dist/design/layout.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +54 -4
- package/dist/html-backend.js.map +1 -1
- package/dist/measure/canvas.d.ts +24 -0
- package/dist/measure/canvas.d.ts.map +1 -1
- package/dist/measure/canvas.js +80 -1
- package/dist/measure/canvas.js.map +1 -1
- package/dist/measure/fontString.d.ts +4 -0
- package/dist/measure/fontString.d.ts.map +1 -1
- package/dist/measure/fontString.js +11 -0
- package/dist/measure/fontString.js.map +1 -1
- package/dist/parse/blockParser.js +2 -2
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/types.d.ts +4 -0
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/composedLayout.d.ts.map +1 -1
- package/dist/pipeline/composedLayout.js +4 -3
- package/dist/pipeline/composedLayout.js.map +1 -1
- package/dist/pipeline/headerFooter.d.ts +13 -0
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +71 -6
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/types.d.ts +10 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +16 -3
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- 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":"AAGA,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAA0C,gBAAgB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,kBAAkB,EAA6B,uBAAuB,EAAE,0BAA0B,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACjR,OAAO,EAKL,KAAK,cAAc,EAEnB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EAOnB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EAEZ,KAAK,QAAQ,EAEd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAsN,KAAK,UAAU,EAAkB,MAAM,mBAAmB,CAAC;
|
|
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
|
|
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,
|
|
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,
|
|
520
|
-
sourceByElement.set(el.id, attr !== undefined &&
|
|
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 &&
|
|
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
|
-
?
|
|
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
|
}));
|