postext 0.3.25 → 0.3.27
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__/columnBalancing.test.js +46 -0
- package/dist/__tests__/columnBalancing.test.js.map +1 -1
- package/dist/__tests__/continuation.test.d.ts +2 -0
- package/dist/__tests__/continuation.test.d.ts.map +1 -0
- package/dist/__tests__/continuation.test.js +124 -0
- package/dist/__tests__/continuation.test.js.map +1 -0
- package/dist/__tests__/defaults/calloutStyles.test.js +58 -1
- package/dist/__tests__/defaults/calloutStyles.test.js.map +1 -1
- package/dist/__tests__/exports.test.js +1 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/pipeline/calloutLayout.test.js +171 -0
- package/dist/__tests__/pipeline/calloutLayout.test.js.map +1 -1
- package/dist/__tests__/pipeline/raggedUrl.test.d.ts +2 -0
- package/dist/__tests__/pipeline/raggedUrl.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/raggedUrl.test.js +22 -0
- package/dist/__tests__/pipeline/raggedUrl.test.js.map +1 -0
- package/dist/__tests__/pipeline/spanBlocks.test.js +1 -1
- package/dist/__tests__/pipeline/spanBlocks.test.js.map +1 -1
- package/dist/__tests__/pipeline/trailingBandZone.test.d.ts +2 -0
- package/dist/__tests__/pipeline/trailingBandZone.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/trailingBandZone.test.js +77 -0
- package/dist/__tests__/pipeline/trailingBandZone.test.js.map +1 -0
- package/dist/canvas-backend/blockRender.js +1 -1
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/defaults/calloutStyles.d.ts +17 -1
- package/dist/defaults/calloutStyles.d.ts.map +1 -1
- package/dist/defaults/calloutStyles.js +74 -1
- package/dist/defaults/calloutStyles.js.map +1 -1
- package/dist/defaults/shared.d.ts.map +1 -1
- package/dist/defaults/shared.js +12 -0
- package/dist/defaults/shared.js.map +1 -1
- package/dist/html-backend.js +1 -1
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/numbering.d.ts +3 -1
- package/dist/numbering.d.ts.map +1 -1
- package/dist/numbering.js +4 -1
- package/dist/numbering.js.map +1 -1
- package/dist/pipeline/bandCaps.d.ts +21 -1
- package/dist/pipeline/bandCaps.d.ts.map +1 -1
- package/dist/pipeline/bandCaps.js +29 -3
- package/dist/pipeline/bandCaps.js.map +1 -1
- package/dist/pipeline/build.d.ts +17 -0
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +58 -20
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildHelpers.d.ts +1 -1
- package/dist/pipeline/buildHelpers.d.ts.map +1 -1
- package/dist/pipeline/buildHelpers.js +2 -2
- package/dist/pipeline/buildHelpers.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts +5 -0
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +147 -44
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/columnBalancing.d.ts.map +1 -1
- package/dist/pipeline/columnBalancing.js +17 -1
- package/dist/pipeline/columnBalancing.js.map +1 -1
- package/dist/pipeline/continuation.d.ts +7 -0
- package/dist/pipeline/continuation.d.ts.map +1 -0
- package/dist/pipeline/continuation.js +26 -0
- package/dist/pipeline/continuation.js.map +1 -0
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +9 -7
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/index.d.ts +2 -1
- package/dist/pipeline/index.d.ts.map +1 -1
- package/dist/pipeline/index.js +1 -0
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/placeholders.d.ts +1 -1
- package/dist/pipeline/placeholders.d.ts.map +1 -1
- package/dist/pipeline/placeholders.js +4 -3
- package/dist/pipeline/placeholders.js.map +1 -1
- package/dist/pipeline/placement.d.ts +2 -2
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +12 -8
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/pipeline/raggedUrl.d.ts +15 -0
- package/dist/pipeline/raggedUrl.d.ts.map +1 -0
- package/dist/pipeline/raggedUrl.js +28 -0
- package/dist/pipeline/raggedUrl.js.map +1 -0
- package/dist/pipeline/resourceNumbering.d.ts +27 -19
- package/dist/pipeline/resourceNumbering.d.ts.map +1 -1
- package/dist/pipeline/resourceNumbering.js +19 -17
- package/dist/pipeline/resourceNumbering.js.map +1 -1
- package/dist/types.d.ts +106 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +13 -0
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/dist/worker/client.d.ts +4 -0
- package/dist/worker/client.d.ts.map +1 -1
- package/dist/worker/client.js +4 -0
- package/dist/worker/client.js.map +1 -1
- package/dist/worker/layout.worker.js +14 -0
- package/dist/worker/layout.worker.js.map +1 -1
- package/dist/worker/protocol.d.ts +5 -0
- package/dist/worker/protocol.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/numbering.js
CHANGED
|
@@ -220,8 +220,11 @@ export function collectPageLabelRuns(labels) {
|
|
|
220
220
|
}
|
|
221
221
|
return runs;
|
|
222
222
|
}
|
|
223
|
-
export function computeHeadingNumbers(blocks, templates) {
|
|
223
|
+
export function computeHeadingNumbers(blocks, templates, start) {
|
|
224
224
|
const counters = [0, 0, 0, 0, 0, 0, 0];
|
|
225
|
+
if (start)
|
|
226
|
+
for (let lvl = 1; lvl <= 6; lvl++)
|
|
227
|
+
counters[lvl] = start[lvl - 1] ?? 0;
|
|
225
228
|
const parsed = {};
|
|
226
229
|
for (let lvl = 1; lvl <= 6; lvl++) {
|
|
227
230
|
const tpl = templates[lvl] ?? '';
|
package/dist/numbering.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numbering.js","sourceRoot":"","sources":["../src/numbering.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"numbering.js","sourceRoot":"","sources":["../src/numbering.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,18 @@ export interface BandCap {
|
|
|
38
38
|
lines: number;
|
|
39
39
|
/** Times the cap has been grown by one line after an overflow. */
|
|
40
40
|
retries: number;
|
|
41
|
+
/** Trailing caps only: the zone a chapter-closing fixed box takes at the
|
|
42
|
+
* bottom of the band. The band's columns it meets (by position in the
|
|
43
|
+
* band) are cut no lower than `top`, so the box fits below them; `lines`
|
|
44
|
+
* is then the height of the other columns, which take the text the cut
|
|
45
|
+
* displaces. */
|
|
46
|
+
zone?: BandCapZone;
|
|
47
|
+
}
|
|
48
|
+
export interface BandCapZone {
|
|
49
|
+
/** Absolute page y of the zone's top edge (grid-snapped). */
|
|
50
|
+
top: number;
|
|
51
|
+
/** Positions, in the band's column list, of the columns the box meets. */
|
|
52
|
+
columns: number[];
|
|
41
53
|
}
|
|
42
54
|
/** Maximum number of extra placement passes the band-cap driver may run on
|
|
43
55
|
* top of the initial pass (proposals + retries). */
|
|
@@ -66,7 +78,7 @@ export declare function bandTop(cols: readonly VDTColumn[]): number;
|
|
|
66
78
|
* column already ending above the cut (bottom float) is left alone. A
|
|
67
79
|
* column that already holds content keeps its used height — the cap then
|
|
68
80
|
* only trims what is left. */
|
|
69
|
-
export declare function applyBandCap(cols: readonly VDTColumn[], capPx: number, uncappedBottoms: Map<VDTColumn, number
|
|
81
|
+
export declare function applyBandCap(cols: readonly VDTColumn[], capPx: number, uncappedBottoms: Map<VDTColumn, number>, zone?: BandCapZone): void;
|
|
70
82
|
/** Give capped columns their true bottom back (the slack below the cap
|
|
71
83
|
* returns to `availableHeight`). */
|
|
72
84
|
export declare function uncapBand(cols: readonly VDTColumn[], uncappedBottoms: Map<VDTColumn, number>): void;
|
|
@@ -77,6 +89,14 @@ export declare function columnBottom(col: VDTColumn, uncappedBottoms: ReadonlyMa
|
|
|
77
89
|
* lines. A column starting under a top float band counts that offset as
|
|
78
90
|
* used, so the cut lands at the same absolute height in every column. */
|
|
79
91
|
export declare function bandCapLines(cols: readonly VDTColumn[], gridPx: number): number;
|
|
92
|
+
/** Grid lines the columns of a closing band NOT under a fixed box's zone
|
|
93
|
+
* need when the columns under it are cut at `zone.top`: the band's content
|
|
94
|
+
* minus what fits above the zone, spread over the other columns and
|
|
95
|
+
* rounded up to whole lines. `null` when no column is left to take the
|
|
96
|
+
* displaced text, or when the level cut already clears the zone (a plain
|
|
97
|
+
* level cap does the job), or when the other columns cannot hold it
|
|
98
|
+
* within their true height (the box would not fit on the page anyway). */
|
|
99
|
+
export declare function bandCapLinesAroundZone(cols: readonly VDTColumn[], gridPx: number, zone: BandCapZone, trueBottom: (col: VDTColumn) => number): number | null;
|
|
80
100
|
/**
|
|
81
101
|
* Drive the band-cap passes. `initial` is the plain first pass; `runPass`
|
|
82
102
|
* re-places the document with the given caps. Returns the layout to carry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bandCaps.d.ts","sourceRoot":"","sources":["../../src/pipeline/bandCaps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC;;uEAEuE;AACvE,MAAM,WAAW,OAAO;IACtB;;;wDAGoD;IACpD,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B;qEACiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"bandCaps.d.ts","sourceRoot":"","sources":["../../src/pipeline/bandCaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,10 +38,12 @@ export function bandTop(cols) {
|
|
|
38
38
|
* column already ending above the cut (bottom float) is left alone. A
|
|
39
39
|
* column that already holds content keeps its used height — the cap then
|
|
40
40
|
* only trims what is left. */
|
|
41
|
-
export function applyBandCap(cols, capPx, uncappedBottoms) {
|
|
41
|
+
export function applyBandCap(cols, capPx, uncappedBottoms, zone) {
|
|
42
42
|
const cut = bandTop(cols) + capPx;
|
|
43
|
-
for (
|
|
44
|
-
const
|
|
43
|
+
for (let i = 0; i < cols.length; i++) {
|
|
44
|
+
const c = cols[i];
|
|
45
|
+
const colCut = zone && zone.columns.includes(i) ? Math.min(cut, zone.top) : cut;
|
|
46
|
+
const height = Math.max(c.bbox.height - c.availableHeight, colCut - c.bbox.y);
|
|
45
47
|
if (c.bbox.height <= height + 0.01)
|
|
46
48
|
continue;
|
|
47
49
|
if (!uncappedBottoms.has(c))
|
|
@@ -79,6 +81,30 @@ export function bandCapLines(cols, gridPx) {
|
|
|
79
81
|
total += (c.bbox.height - c.availableHeight) + (c.bbox.y - top);
|
|
80
82
|
return Math.max(1, Math.ceil((total / cols.length - 0.01) / gridPx));
|
|
81
83
|
}
|
|
84
|
+
/** Grid lines the columns of a closing band NOT under a fixed box's zone
|
|
85
|
+
* need when the columns under it are cut at `zone.top`: the band's content
|
|
86
|
+
* minus what fits above the zone, spread over the other columns and
|
|
87
|
+
* rounded up to whole lines. `null` when no column is left to take the
|
|
88
|
+
* displaced text, or when the level cut already clears the zone (a plain
|
|
89
|
+
* level cap does the job), or when the other columns cannot hold it
|
|
90
|
+
* within their true height (the box would not fit on the page anyway). */
|
|
91
|
+
export function bandCapLinesAroundZone(cols, gridPx, zone, trueBottom) {
|
|
92
|
+
const top = bandTop(cols);
|
|
93
|
+
const level = top + bandCapLines(cols, gridPx) * gridPx;
|
|
94
|
+
if (level <= zone.top + 0.5)
|
|
95
|
+
return null;
|
|
96
|
+
const under = cols.filter((_, i) => zone.columns.includes(i));
|
|
97
|
+
const others = cols.filter((_, i) => !zone.columns.includes(i));
|
|
98
|
+
if (under.length === 0 || others.length === 0)
|
|
99
|
+
return null;
|
|
100
|
+
let total = 0;
|
|
101
|
+
for (const c of cols)
|
|
102
|
+
total += (c.bbox.height - c.availableHeight) + (c.bbox.y - top);
|
|
103
|
+
const aboveZone = under.length * Math.max(0, zone.top - top);
|
|
104
|
+
const lines = Math.max(1, Math.ceil(((total - aboveZone) / others.length - 0.01) / gridPx));
|
|
105
|
+
const room = Math.min(...others.map((c) => trueBottom(c) - top));
|
|
106
|
+
return lines * gridPx <= room + 0.5 ? lines : null;
|
|
107
|
+
}
|
|
82
108
|
const capKey = (spanIndex, cap) => `${spanIndex}:${cap.startContentIndex}:${cap.startPart}:${cap.lines}`;
|
|
83
109
|
/**
|
|
84
110
|
* Drive the band-cap passes. `initial` is the plain first pass; `runPass`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bandCaps.js","sourceRoot":"","sources":["../../src/pipeline/bandCaps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"bandCaps.js","sourceRoot":"","sources":["../../src/pipeline/bandCaps.ts"],"names":[],"mappings":"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"}
|
package/dist/pipeline/build.d.ts
CHANGED
|
@@ -11,6 +11,23 @@ export interface BuildDocumentOptions {
|
|
|
11
11
|
* a newer request has superseded this one.
|
|
12
12
|
*/
|
|
13
13
|
shouldCancel?: () => boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Progress hook, called as placement advances: once per top-level content
|
|
16
|
+
* block of every pass (the engine re-places the document several times —
|
|
17
|
+
* band caps, column balancing — so `pass` counts up and the block counter
|
|
18
|
+
* restarts). A long build can show a bar from it.
|
|
19
|
+
*/
|
|
20
|
+
onProgress?: (progress: BuildProgress) => void;
|
|
21
|
+
}
|
|
22
|
+
export interface BuildProgress {
|
|
23
|
+
/** 1-based placement pass. */
|
|
24
|
+
pass: number;
|
|
25
|
+
/** Top-level content blocks placed so far in this pass, and how many
|
|
26
|
+
* there are in the document. */
|
|
27
|
+
blocks: number;
|
|
28
|
+
totalBlocks: number;
|
|
29
|
+
/** Pages opened so far in this pass. */
|
|
30
|
+
pages: number;
|
|
14
31
|
}
|
|
15
32
|
export declare class BuildCancelledError extends Error {
|
|
16
33
|
constructor();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/pipeline/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAA0E,MAAM,UAAU,CAAC;AAGtI,OAAO,EAIL,KAAK,WAAW,EAMjB,MAAM,QAAQ,CAAC;AAYhB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAsEnD,OAAO,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/pipeline/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAA0E,MAAM,UAAU,CAAC;AAGtI,OAAO,EAIL,KAAK,WAAW,EAMjB,MAAM,QAAQ,CAAC;AAYhB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAsEnD,OAAO,EAAsC,KAAK,WAAW,EAA2C,MAAM,mBAAmB,CAAC;AAClI,OAAO,EAQL,KAAK,OAAO,EACZ,KAAK,cAAc,EAGpB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;qCACiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C;AAWD;yEACyE;AACzE,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C;4EACwE;IACxE,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,GAAG,EAAE,WAAW,CAAC;IACjB;;+DAE2D;IAC3D,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B;;;4EAGwE;IACxE,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAC1C;AAuCD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,EAC9B,KAAK,GAAE,SAAc,GACpB,UAAU,CA4zDZ;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,WAAW,CAuIb"}
|
package/dist/pipeline/build.js
CHANGED
|
@@ -22,8 +22,9 @@ import { enumerateCurrentPageSlots, measureFloatBand, columnHasFloatBand, fitsSt
|
|
|
22
22
|
import { computeHeadingContext, computeResourceNumbering, } from './resourceNumbering';
|
|
23
23
|
import { defaultResourceTypes } from '../defaults/resourceTypes';
|
|
24
24
|
import { buildHeadersAndFooters, measureHeadingAdvancedDesignHeight } from './headerFooter';
|
|
25
|
-
import { totalGapLines, proposeBalanceLines, MAX_BALANCING_PASSES
|
|
26
|
-
import { applyBandCap, uncapBand, columnBottom, bandCapLines, bandTop, resolveBandCaps, resolveTrailingCaps, } from './bandCaps';
|
|
25
|
+
import { totalGapLines, proposeBalanceLines, MAX_BALANCING_PASSES } from './columnBalancing';
|
|
26
|
+
import { applyBandCap, uncapBand, columnBottom, bandCapLines, bandTop, resolveBandCaps, resolveTrailingCaps, bandCapLinesAroundZone, } from './bandCaps';
|
|
27
|
+
import { raggedUrlLines } from './raggedUrl';
|
|
27
28
|
export class BuildCancelledError extends Error {
|
|
28
29
|
constructor() {
|
|
29
30
|
super('Build cancelled');
|
|
@@ -106,13 +107,21 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
106
107
|
const baselineGrid = computeBaselineGrid(resolved);
|
|
107
108
|
// Create document
|
|
108
109
|
const doc = createVDTDocument(resolved, baselineGrid);
|
|
110
|
+
// A chapter laid out after the pages before it: shift parity and carry the
|
|
111
|
+
// counters over (see `PostextContent.continuation`).
|
|
112
|
+
const continuation = content.continuation;
|
|
113
|
+
const pageIndexOffset = Math.max(0, Math.floor(continuation?.pageIndexOffset ?? 0));
|
|
114
|
+
if (pageIndexOffset > 0)
|
|
115
|
+
doc.pageIndexOffset = pageIndexOffset;
|
|
116
|
+
if (continuation?.headings && continuation.headings.h1 > 0)
|
|
117
|
+
doc.chapterOrdinalOffset = continuation.headings.h1;
|
|
109
118
|
const pageMetrics = computePageMetrics(resolved);
|
|
110
119
|
const { pageWidthPx, pageHeightPx, trimOffset, contentArea } = pageMetrics;
|
|
111
120
|
// Page/bleed frames for design elements anchored to `'page'` / `'bleed'`.
|
|
112
121
|
const designFrames = { page: pageMetrics.trimBox, bleed: pageMetrics.bleedBox };
|
|
113
122
|
doc.trimOffset = trimOffset;
|
|
114
123
|
// Create first page
|
|
115
|
-
const firstPage = createPageWithColumns(0, resolved, contentArea, pageWidthPx, pageHeightPx);
|
|
124
|
+
const firstPage = createPageWithColumns(0, resolved, contentArea, pageWidthPx, pageHeightPx, pageIndexOffset);
|
|
116
125
|
doc.pages.push(firstPage);
|
|
117
126
|
// Extract frontmatter, then parse the remaining markdown body
|
|
118
127
|
const { metadata: frontmatterMeta, content: markdownBody, contentOffset: bodyOffset } = extractFrontmatter(content.markdown);
|
|
@@ -124,15 +133,16 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
124
133
|
headingTemplates[lvl.level] = lvl.numberingTemplate;
|
|
125
134
|
}
|
|
126
135
|
}
|
|
127
|
-
const
|
|
136
|
+
const headingStart = continuation?.headings;
|
|
137
|
+
const headingPrefixes = computeHeadingNumbers(contentBlocks, headingTemplates, headingStart ? [headingStart.h1, headingStart.h2, headingStart.h3, headingStart.h4, headingStart.h5, headingStart.h6] : undefined);
|
|
128
138
|
// Resource numbering — computed up front (before the placement loop) so that
|
|
129
139
|
// captions and inline `:ref`s can resolve their rendered number strings
|
|
130
140
|
// before measurement. Numbering follows order of first reference in the
|
|
131
141
|
// document.
|
|
132
142
|
const resourceTypes = config?.resourceTypes ?? defaultResourceTypes();
|
|
133
143
|
const resources = content.resources ?? [];
|
|
134
|
-
const headingContext = computeHeadingContext(contentBlocks);
|
|
135
|
-
const resourceNumbering = computeResourceNumbering(contentBlocks, resourceTypes, resources, headingContext);
|
|
144
|
+
const headingContext = computeHeadingContext(contentBlocks, headingStart);
|
|
145
|
+
const resourceNumbering = computeResourceNumbering(contentBlocks, resourceTypes, resources, headingContext, continuation ? { counters: continuation.resourceCounters, numbered: continuation.resourceNumbers } : undefined);
|
|
136
146
|
// Lookups threaded into block-kind resolution + measurement.
|
|
137
147
|
const resourceById = new Map();
|
|
138
148
|
for (const r of resources)
|
|
@@ -533,7 +543,7 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
533
543
|
for (const [spanIndex, cap] of bandCaps) {
|
|
534
544
|
if (cap.startContentIndex !== contentIndex || cap.startPart !== part)
|
|
535
545
|
continue;
|
|
536
|
-
applyBandCap(bandColumns(page, band), cap.lines * baselineGrid, uncappedBottoms);
|
|
546
|
+
applyBandCap(bandColumns(page, band), cap.lines * baselineGrid, uncappedBottoms, cap.zone);
|
|
537
547
|
activeCap = { spanIndex, pageIndex: page.index, band };
|
|
538
548
|
bandCapsApplied.add(spanIndex);
|
|
539
549
|
break;
|
|
@@ -550,8 +560,14 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
550
560
|
* the cap delivered when it is reached inside the capped band (nothing
|
|
551
561
|
* spilled past the cut); the columns are NOT uncapped afterwards, so
|
|
552
562
|
* column balancing does not stretch them back to the page bottom.
|
|
563
|
+
*
|
|
564
|
+
* A chapter-closing fixed box passes the `zone` it will take at the
|
|
565
|
+
* bottom of the band: when the level cut would run into it, the columns
|
|
566
|
+
* under the box are cut at the zone's top instead and the others take
|
|
567
|
+
* the displaced text (see {@link bandCapLinesAroundZone}) — the box then
|
|
568
|
+
* fits on the page, under its columns, rather than opening a page alone.
|
|
553
569
|
*/
|
|
554
|
-
const proposeTrailingCap = (boundaryIndex) => {
|
|
570
|
+
const proposeTrailingCap = (boundaryIndex, zone) => {
|
|
555
571
|
const balancingCfg = resolved.headings.balancing;
|
|
556
572
|
if (!balancingCfg.enabled || !balancingCfg.trailing)
|
|
557
573
|
return;
|
|
@@ -576,14 +592,16 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
576
592
|
if (!bandStart || !registeredBand || registeredBand.pageIndex !== page.index || registeredBand.band !== band)
|
|
577
593
|
return;
|
|
578
594
|
const bottoms = cols.map((c) => c.bbox.y + (c.bbox.height - c.availableHeight));
|
|
579
|
-
|
|
595
|
+
const aroundZone = zone ? bandCapLinesAroundZone(cols, baselineGrid, zone, (c) => columnBottom(c, uncappedBottoms)) : null;
|
|
596
|
+
if (aroundZone === null && Math.max(...bottoms) - Math.min(...bottoms) <= baselineGrid + 0.5)
|
|
580
597
|
return;
|
|
581
598
|
bandCapProposals.set(boundaryIndex, {
|
|
582
599
|
kind: 'trailing',
|
|
583
600
|
startContentIndex: bandStart.contentIndex,
|
|
584
601
|
startPart: bandStart.part,
|
|
585
|
-
lines: bandCapLines(cols, baselineGrid),
|
|
602
|
+
lines: aroundZone ?? bandCapLines(cols, baselineGrid),
|
|
586
603
|
retries: 0,
|
|
604
|
+
...(aroundZone !== null ? { zone } : {}),
|
|
587
605
|
});
|
|
588
606
|
};
|
|
589
607
|
/** Close the flow at a chapter-level boundary (block `boundaryIndex`):
|
|
@@ -617,11 +635,12 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
617
635
|
// Page-numbering segments. The implicit first segment comes from
|
|
618
636
|
// `cfg.page.pageNumbering`; `:::numbering` directives append more,
|
|
619
637
|
// each applied at the next page boundary.
|
|
638
|
+
// A continued document starts where the previous page left off.
|
|
620
639
|
const pageNumberSegments = [
|
|
621
640
|
{
|
|
622
641
|
startPageIndex: 0,
|
|
623
|
-
format: resolved.page.pageNumbering.format,
|
|
624
|
-
startAt: resolved.page.pageNumbering.startAt,
|
|
642
|
+
format: continuation?.pageNumbering?.format ?? resolved.page.pageNumbering.format,
|
|
643
|
+
startAt: continuation?.pageNumbering?.startAt ?? resolved.page.pageNumbering.startAt,
|
|
625
644
|
},
|
|
626
645
|
];
|
|
627
646
|
let pendingNumberingChange = null;
|
|
@@ -846,7 +865,8 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
846
865
|
};
|
|
847
866
|
const snapDown = (page, v) => page.contentArea.y + Math.floor((v - page.contentArea.y + 0.01) / baselineGrid) * baselineGrid;
|
|
848
867
|
const snapUp = (page, v) => page.contentArea.y + Math.ceil((v - page.contentArea.y - 0.01) / baselineGrid) * baselineGrid;
|
|
849
|
-
|
|
868
|
+
/** The box laid out for `page` and the zone it takes there. */
|
|
869
|
+
const zoneOn = (page) => {
|
|
850
870
|
const ref = anchor.to === 'page' ? designFrames.page
|
|
851
871
|
: anchor.to === 'bleed' ? designFrames.bleed
|
|
852
872
|
: page.contentArea;
|
|
@@ -864,10 +884,14 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
864
884
|
const rect = anchorBox(anchor.edge, ref, result.width, result.totalHeight, offset);
|
|
865
885
|
const zoneTop = snapDown(page, rect.y - result.marginTopPx);
|
|
866
886
|
const zoneBottom = snapUp(page, rect.y + rect.height + result.marginBottomPx);
|
|
887
|
+
const meetsX = (col) => rect.x < col.bbox.x + col.bbox.width - 0.5 && rect.x + rect.width > col.bbox.x + 0.5;
|
|
888
|
+
return { cols, result, rect, zoneTop, zoneBottom, meetsX };
|
|
889
|
+
};
|
|
890
|
+
const attempt = (page, force) => {
|
|
891
|
+
const { cols, result, rect, zoneTop, zoneBottom, meetsX } = zoneOn(page);
|
|
867
892
|
const cuts = [];
|
|
868
893
|
for (const col of cols) {
|
|
869
|
-
|
|
870
|
-
if (!meetsX)
|
|
894
|
+
if (!meetsX(col))
|
|
871
895
|
continue;
|
|
872
896
|
const colTop = col.bbox.y;
|
|
873
897
|
const colBottom = trueBottom(col, uncappedBottoms);
|
|
@@ -903,10 +927,13 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
903
927
|
}
|
|
904
928
|
return { rect, result, cuts };
|
|
905
929
|
};
|
|
906
|
-
// A box that closes the chapter levels the columns above it first
|
|
930
|
+
// A box that closes the chapter levels the columns above it first —
|
|
931
|
+
// around the zone it takes on the current page.
|
|
907
932
|
if (nextIsBarrier(plan.endIdx + 1)) {
|
|
908
933
|
tryPlacePendingFloatsOnCurrentPage();
|
|
909
|
-
|
|
934
|
+
const here = zoneOn(doc.pages[cursor.pageIndex]);
|
|
935
|
+
const columns = here.cols.flatMap((c, i) => (here.meetsX(c) ? [i] : []));
|
|
936
|
+
proposeTrailingCap(startIdx, columns.length > 0 ? { top: here.zoneTop, columns } : undefined);
|
|
910
937
|
}
|
|
911
938
|
let page = doc.pages[cursor.pageIndex];
|
|
912
939
|
let fit = attempt(page, false);
|
|
@@ -1065,6 +1092,7 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
1065
1092
|
for (let blockIdx = 0; blockIdx < contentBlocks.length; blockIdx++) {
|
|
1066
1093
|
if (options?.shouldCancel?.())
|
|
1067
1094
|
throw new BuildCancelledError();
|
|
1095
|
+
options?.onProgress?.({ pass: 1, blocks: blockIdx, totalBlocks: contentBlocks.length, pages: doc.pages.length });
|
|
1068
1096
|
const rawBlock = contentBlocks[blockIdx];
|
|
1069
1097
|
// Floats whose reference landed in an earlier iteration take the first
|
|
1070
1098
|
// free slot of the current page now — after their reference in reading
|
|
@@ -1157,7 +1185,7 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
1157
1185
|
title: plan.title,
|
|
1158
1186
|
titleSourceStart,
|
|
1159
1187
|
titleSourceEnd,
|
|
1160
|
-
});
|
|
1188
|
+
}, pageIndexOffset);
|
|
1161
1189
|
flushPendingNumberingAtBoundary();
|
|
1162
1190
|
continue;
|
|
1163
1191
|
}
|
|
@@ -1380,7 +1408,8 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
1380
1408
|
// List items may split too — orphan/widow protection per-list is gated by
|
|
1381
1409
|
// `avoidOrphansInLists` / `avoidWidowsInLists`; bullet stays on first part.
|
|
1382
1410
|
const canSplit = vdtType === 'paragraph' || vdtType === 'blockquote' || vdtType === 'listItem';
|
|
1383
|
-
|
|
1411
|
+
// A justified line a link leaves with too few spaces is set ragged.
|
|
1412
|
+
let remainingLines = [...raggedUrlLines(measured.lines, style.textAlign, rawBlock.text)];
|
|
1384
1413
|
let partIndex = 0;
|
|
1385
1414
|
// "Keep with next" for colon-introduced lists: a paragraph ending in `:`
|
|
1386
1415
|
// followed directly by a list acts as a lead-in title — the colon-bearing
|
|
@@ -1831,7 +1860,16 @@ export function buildDocumentPass(content, config, cache, options, hints = {}) {
|
|
|
1831
1860
|
return { doc, forcedBreakPages, bandCapProposals, spanPlacedInBand, bandCapsApplied, looseOutcome };
|
|
1832
1861
|
}
|
|
1833
1862
|
export function buildDocument(content, config, cache, options) {
|
|
1834
|
-
|
|
1863
|
+
// Each pass reports its own progress, numbered in build order.
|
|
1864
|
+
let passIndex = 0;
|
|
1865
|
+
const onProgress = options?.onProgress;
|
|
1866
|
+
const passOptions = onProgress
|
|
1867
|
+
? { ...options, onProgress: (p) => onProgress({ ...p, pass: passIndex }) }
|
|
1868
|
+
: options;
|
|
1869
|
+
const runPass = (hints) => {
|
|
1870
|
+
passIndex++;
|
|
1871
|
+
return buildDocumentPass(content, config, cache, passOptions, hints);
|
|
1872
|
+
};
|
|
1835
1873
|
// --- Band caps (page-span blocks mid-page) -----------------------------
|
|
1836
1874
|
// A span block that arrived in an uneven band proposes a cap; the driver
|
|
1837
1875
|
// re-places the document with it (and grows / drops caps whose band
|