pretext-pdf 0.1.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +242 -0
  2. package/LICENSE +21 -0
  3. package/README.md +402 -0
  4. package/dist/assets.d.ts +14 -0
  5. package/dist/assets.d.ts.map +1 -0
  6. package/dist/assets.js +182 -0
  7. package/dist/assets.js.map +1 -0
  8. package/dist/builder.d.ts +53 -0
  9. package/dist/builder.d.ts.map +1 -0
  10. package/dist/builder.js +129 -0
  11. package/dist/builder.js.map +1 -0
  12. package/dist/errors.d.ts +7 -0
  13. package/dist/errors.d.ts.map +1 -0
  14. package/dist/errors.js +13 -0
  15. package/dist/errors.js.map +1 -0
  16. package/dist/fonts.d.ts +21 -0
  17. package/dist/fonts.d.ts.map +1 -0
  18. package/dist/fonts.js +310 -0
  19. package/dist/fonts.js.map +1 -0
  20. package/dist/index.d.ts +29 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +154 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/measure.d.ts +53 -0
  25. package/dist/measure.d.ts.map +1 -0
  26. package/dist/measure.js +1029 -0
  27. package/dist/measure.js.map +1 -0
  28. package/dist/node-polyfill.d.ts +7 -0
  29. package/dist/node-polyfill.d.ts.map +1 -0
  30. package/dist/node-polyfill.js +82 -0
  31. package/dist/node-polyfill.js.map +1 -0
  32. package/dist/page-sizes.d.ts +13 -0
  33. package/dist/page-sizes.d.ts.map +1 -0
  34. package/dist/page-sizes.js +24 -0
  35. package/dist/page-sizes.js.map +1 -0
  36. package/dist/paginate.d.ts +15 -0
  37. package/dist/paginate.d.ts.map +1 -0
  38. package/dist/paginate.js +395 -0
  39. package/dist/paginate.js.map +1 -0
  40. package/dist/render.d.ts +12 -0
  41. package/dist/render.d.ts.map +1 -0
  42. package/dist/render.js +1028 -0
  43. package/dist/render.js.map +1 -0
  44. package/dist/rich-text.d.ts +14 -0
  45. package/dist/rich-text.d.ts.map +1 -0
  46. package/dist/rich-text.js +183 -0
  47. package/dist/rich-text.js.map +1 -0
  48. package/dist/types.d.ts +697 -0
  49. package/dist/types.d.ts.map +1 -0
  50. package/dist/types.js +2 -0
  51. package/dist/types.js.map +1 -0
  52. package/dist/validate.d.ts +3 -0
  53. package/dist/validate.d.ts.map +1 -0
  54. package/dist/validate.js +786 -0
  55. package/dist/validate.js.map +1 -0
  56. package/package.json +79 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Installs @napi-rs/canvas as OffscreenCanvas for Node.js environments.
3
+ * Must be called before any Pretext import resolves its canvas context.
4
+ * Safe to call multiple times — only installs once.
5
+ */
6
+ export declare function installNodePolyfill(): Promise<void>;
7
+ //# sourceMappingURL=node-polyfill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-polyfill.d.ts","sourceRoot":"","sources":["../src/node-polyfill.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8EzD"}
@@ -0,0 +1,82 @@
1
+ import { PretextPdfError } from './errors.js';
2
+ import { createRequire } from 'module';
3
+ import { fileURLToPath } from 'url';
4
+ import path from 'path';
5
+ import fs from 'fs';
6
+ const require = createRequire(import.meta.url);
7
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
+ let polyfillInstalled = false;
9
+ /**
10
+ * Installs @napi-rs/canvas as OffscreenCanvas for Node.js environments.
11
+ * Must be called before any Pretext import resolves its canvas context.
12
+ * Safe to call multiple times — only installs once.
13
+ */
14
+ export async function installNodePolyfill() {
15
+ if (polyfillInstalled)
16
+ return;
17
+ // Verify @napi-rs/canvas is available
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ let napiCanvas;
20
+ try {
21
+ napiCanvas = await import('@napi-rs/canvas');
22
+ }
23
+ catch {
24
+ throw new PretextPdfError('CANVAS_UNAVAILABLE', '@napi-rs/canvas is required for Node.js usage. Install it: npm install @napi-rs/canvas');
25
+ }
26
+ const { createCanvas, GlobalFonts } = napiCanvas;
27
+ // Polyfill OffscreenCanvas with @napi-rs/canvas
28
+ class NodeOffscreenCanvas {
29
+ _canvas;
30
+ constructor(width, height) {
31
+ this._canvas = createCanvas(width, height);
32
+ }
33
+ getContext(type) {
34
+ return this._canvas.getContext(type);
35
+ }
36
+ get width() { return this._canvas.width; }
37
+ get height() { return this._canvas.height; }
38
+ }
39
+ // @ts-ignore — OffscreenCanvas is a browser global, not in Node.js types
40
+ global.OffscreenCanvas = NodeOffscreenCanvas;
41
+ // Register bundled Inter fonts so Pretext can measure them accurately
42
+ const fontVariants = [
43
+ {
44
+ family: 'Inter',
45
+ paths: [
46
+ path.join(__dirname, '..', 'node_modules', '@fontsource', 'inter', 'files', 'inter-latin-400-normal.woff2'),
47
+ path.join(__dirname, '..', 'node_modules', '@fontsource', 'inter', 'files', 'inter-all-400-normal.woff2'),
48
+ path.join(__dirname, '..', 'fonts', 'inter-latin-400-normal.woff2'),
49
+ ],
50
+ },
51
+ {
52
+ // Register bold as the same family — @napi-rs/canvas (Skia) uses the
53
+ // bold variant automatically when the CSS font string includes "bold"
54
+ family: 'Inter',
55
+ paths: [
56
+ path.join(__dirname, '..', 'node_modules', '@fontsource', 'inter', 'files', 'inter-latin-700-normal.woff2'),
57
+ path.join(__dirname, '..', 'node_modules', '@fontsource', 'inter', 'files', 'inter-all-700-normal.woff2'),
58
+ path.join(__dirname, '..', 'fonts', 'inter-latin-700-normal.woff2'),
59
+ ],
60
+ },
61
+ ];
62
+ let anyLoaded = false;
63
+ for (const variant of fontVariants) {
64
+ for (const fontPath of variant.paths) {
65
+ if (fs.existsSync(fontPath)) {
66
+ try {
67
+ GlobalFonts.registerFromPath(fontPath, variant.family);
68
+ anyLoaded = true;
69
+ break; // Move to next variant
70
+ }
71
+ catch {
72
+ // Try next candidate path
73
+ }
74
+ }
75
+ }
76
+ }
77
+ if (!anyLoaded) {
78
+ console.warn('[pretext-pdf] Inter font not found for Node.js canvas measurement. Text metrics may differ. Run: npm install @fontsource/inter');
79
+ }
80
+ polyfillInstalled = true;
81
+ }
82
+ //# sourceMappingURL=node-polyfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-polyfill.js","sourceRoot":"","sources":["../src/node-polyfill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Shared page size resolution — single source of truth.
3
+ * Used by both index.ts (render) and validate.ts (margin validation).
4
+ * Adding a new size here automatically works in both places.
5
+ */
6
+ export type NamedPageSize = 'A4' | 'Letter' | 'Legal' | 'A3' | 'A5' | 'Tabloid';
7
+ export type PageSizeInput = NamedPageSize | [number, number] | undefined;
8
+ /**
9
+ * Resolve any page size input to [width, height] in points.
10
+ * Default: A4 (595 × 842 pt)
11
+ */
12
+ export declare function resolvePageDimensions(pageSize: PageSizeInput): [number, number];
13
+ //# sourceMappingURL=page-sizes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-sizes.d.ts","sourceRoot":"","sources":["../src/page-sizes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAA;AAY/E,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;AAExE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAG/E"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Shared page size resolution — single source of truth.
3
+ * Used by both index.ts (render) and validate.ts (margin validation).
4
+ * Adding a new size here automatically works in both places.
5
+ */
6
+ /** All named page sizes in [width, height] points (72pt = 1 inch) */
7
+ const PAGE_SIZES = {
8
+ 'A4': [595, 842], // 210 × 297 mm
9
+ 'Letter': [612, 792], // 8.5 × 11 in
10
+ 'Legal': [612, 1008], // 8.5 × 14 in
11
+ 'A3': [842, 1191], // 297 × 420 mm
12
+ 'A5': [420, 595], // 148 × 210 mm
13
+ 'Tabloid': [792, 1224], // 11 × 17 in
14
+ };
15
+ /**
16
+ * Resolve any page size input to [width, height] in points.
17
+ * Default: A4 (595 × 842 pt)
18
+ */
19
+ export function resolvePageDimensions(pageSize) {
20
+ if (Array.isArray(pageSize))
21
+ return [pageSize[0], pageSize[1]];
22
+ return PAGE_SIZES[pageSize ?? 'A4'] ?? PAGE_SIZES['A4'];
23
+ }
24
+ //# sourceMappingURL=page-sizes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-sizes.js","sourceRoot":"","sources":["../src/page-sizes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,qEAAqE;AACrE,MAAM,UAAU,GAA4C;IAC1D,IAAI,EAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAK,eAAe;IACzC,QAAQ,EAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAK,cAAc;IACxC,OAAO,EAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAI,cAAc;IACxC,IAAI,EAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAI,eAAe;IACzC,IAAI,EAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAK,eAAe;IACzC,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAI,aAAa;CACxC,CAAA;AAID;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAA;IAChE,OAAO,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAE,CAAA;AAC1D,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { MeasuredBlock, RenderedPage, PaginatedDocument } from './types.js';
2
+ interface PaginateConfig {
3
+ minOrphanLines: number;
4
+ minWidowLines: number;
5
+ }
6
+ /**
7
+ * Stage 4: Paginate — pure function.
8
+ * Takes measured blocks + page content height → distributes blocks across pages.
9
+ * No I/O, no side effects, fully unit-testable.
10
+ */
11
+ export declare function paginate(blocks: MeasuredBlock[], pageContentHeight: number, config?: PaginateConfig): PaginatedDocument;
12
+ /** Get the Y position after all blocks on the current last page */
13
+ export declare function getCurrentY(pages: RenderedPage[]): number;
14
+ export {};
15
+ //# sourceMappingURL=paginate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginate.d.ts","sourceRoot":"","sources":["../src/paginate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAAc,YAAY,EAAE,iBAAiB,EAC3D,MAAM,YAAY,CAAA;AAQnB,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,aAAa,EAAE,EACvB,iBAAiB,EAAE,MAAM,EACzB,MAAM,GAAE,cAAwD,GAC/D,iBAAiB,CAyEnB;AA8RD,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAmEzD"}
@@ -0,0 +1,395 @@
1
+ import { PretextPdfError } from './errors.js';
2
+ const MAX_PAGES = 10_000;
3
+ /** Floating-point tolerance for height comparisons. Prevents off-by-one-pixel "spill" caused by
4
+ * sub-point rounding when measured heights are computed via floating-point multiplication. */
5
+ const EPSILON = 0.01;
6
+ /**
7
+ * Stage 4: Paginate — pure function.
8
+ * Takes measured blocks + page content height → distributes blocks across pages.
9
+ * No I/O, no side effects, fully unit-testable.
10
+ */
11
+ export function paginate(blocks, pageContentHeight, config = { minOrphanLines: 2, minWidowLines: 2 }) {
12
+ if (pageContentHeight <= 0) {
13
+ throw new PretextPdfError('PAGE_TOO_SMALL', `pageContentHeight is ${pageContentHeight}pt — nothing can be rendered. Check margins and page size.`);
14
+ }
15
+ const pages = [newPage(0)];
16
+ let currentY = 0;
17
+ for (let blockIndex = 0; blockIndex < blocks.length; blockIndex++) {
18
+ const block = blocks[blockIndex];
19
+ // Cap spacer height so it can never cause infinite pagination
20
+ const blockHeight = block.element.type === 'spacer'
21
+ ? Math.min(block.height, pageContentHeight)
22
+ : block.height;
23
+ const effectiveBlock = blockHeight !== block.height
24
+ ? { ...block, height: blockHeight }
25
+ : block;
26
+ // Apply spaceBefore (only if not at the top of a page)
27
+ if (effectiveBlock.spaceBefore > 0 && currentY > 0) {
28
+ currentY += effectiveBlock.spaceBefore;
29
+ if (currentY >= pageContentHeight) {
30
+ pushNewPage(pages);
31
+ currentY = 0;
32
+ }
33
+ }
34
+ // Route to appropriate paginator based on element type
35
+ if (effectiveBlock.element.type === 'page-break') {
36
+ // Push a new page only if we're not already at the top of a fresh page
37
+ if (currentY > 0) {
38
+ pushNewPage(pages);
39
+ currentY = 0;
40
+ }
41
+ continue;
42
+ }
43
+ else if (effectiveBlock.element.type === 'table') {
44
+ paginateTable(effectiveBlock, pages, currentY, pageContentHeight);
45
+ }
46
+ else {
47
+ placeBlock(effectiveBlock, pages, currentY, pageContentHeight, config);
48
+ }
49
+ currentY = getCurrentY(pages);
50
+ if (pages.length > MAX_PAGES) {
51
+ throw new PretextPdfError('PAGE_LIMIT_EXCEEDED', `Document exceeded ${MAX_PAGES} pages. Split into multiple render() calls.`);
52
+ }
53
+ }
54
+ // Remove trailing empty pages (e.g. page-break as last element)
55
+ while (pages.length > 1 && pages[pages.length - 1].blocks.length === 0) {
56
+ pages.pop();
57
+ }
58
+ // Collect headings for bookmark generation
59
+ const headings = [];
60
+ for (const page of pages) {
61
+ for (const block of page.blocks) {
62
+ if (block.measuredBlock.element.type === 'heading') {
63
+ const el = block.measuredBlock.element;
64
+ if (el.bookmark !== false) {
65
+ headings.push({ text: el.text, level: el.level, pageIndex: page.pageIndex });
66
+ }
67
+ }
68
+ }
69
+ }
70
+ return {
71
+ pages,
72
+ totalPages: pages.length,
73
+ headings,
74
+ };
75
+ }
76
+ // ─── Table pagination ─────────────────────────────────────────────────────────
77
+ /**
78
+ * Paginate a table by rows. Never splits within a row.
79
+ * On continuation pages, header rows are re-drawn at the top (handled in renderer).
80
+ * The paginator tracks startRow/endRow into the BODY rows (non-header rows).
81
+ */
82
+ function paginateTable(block, pages, currentY, pageContentHeight) {
83
+ const tableData = block.tableData;
84
+ const bodyRows = tableData.rows.slice(tableData.headerRowCount);
85
+ if (bodyRows.length === 0) {
86
+ // Validator should have caught this — if we're here, it's a bug
87
+ throw new PretextPdfError('VALIDATION_ERROR', 'Table has no body rows. This is a bug — validation should have caught this.');
88
+ }
89
+ let startRow = 0;
90
+ let pageY = currentY;
91
+ while (startRow < bodyRows.length) {
92
+ const available = pageContentHeight - pageY;
93
+ // Always reserve space for header rows (drawn on every page chunk, including the first)
94
+ const usableHeight = available - tableData.headerRowHeight;
95
+ // Count body rows that fit in usable height
96
+ let rowsFit = 0;
97
+ let heightUsed = 0;
98
+ for (let ri = startRow; ri < bodyRows.length; ri++) {
99
+ const row = bodyRows[ri];
100
+ if (heightUsed + row.height <= usableHeight + EPSILON) {
101
+ rowsFit++;
102
+ heightUsed += row.height;
103
+ }
104
+ else {
105
+ break;
106
+ }
107
+ }
108
+ if (rowsFit === 0) {
109
+ if (pageY > 0) {
110
+ // Nothing fits — move to next page and retry
111
+ pushNewPage(pages);
112
+ pageY = 0;
113
+ continue;
114
+ }
115
+ else {
116
+ // Row is taller than the full page — force-place 1 row to prevent infinite loop
117
+ rowsFit = 1;
118
+ heightUsed = bodyRows[startRow].height;
119
+ }
120
+ }
121
+ const endRow = startRow + rowsFit;
122
+ addToCurrentPage(pages, {
123
+ measuredBlock: block,
124
+ startLine: 0,
125
+ endLine: 0,
126
+ startRow,
127
+ endRow,
128
+ yFromTop: pageY,
129
+ });
130
+ startRow = endRow;
131
+ // pageY advances by header rows + body rows placed
132
+ pageY += tableData.headerRowHeight + heightUsed + block.spaceAfter;
133
+ if (startRow < bodyRows.length) {
134
+ // More rows to place — start a new page
135
+ pushNewPage(pages);
136
+ pageY = 0;
137
+ }
138
+ }
139
+ }
140
+ // ─── Block placement (text elements, images, hr, spacers) ────────────────────
141
+ /**
142
+ * Place a single block onto pages, potentially splitting it across multiple pages.
143
+ * Mutates the pages array.
144
+ */
145
+ function placeBlock(block, pages, currentY, pageContentHeight, config) {
146
+ const remainingSpace = pageContentHeight - currentY;
147
+ const spaceAfter = block.spaceAfter;
148
+ const totalHeight = block.height + spaceAfter;
149
+ // ── Fast path: block fits entirely on current page ──────────────────────────
150
+ if (totalHeight <= remainingSpace + EPSILON) {
151
+ addToCurrentPage(pages, {
152
+ measuredBlock: block,
153
+ startLine: 0,
154
+ endLine: block.lines.length,
155
+ yFromTop: currentY,
156
+ });
157
+ return;
158
+ }
159
+ // ── Spacer overflow: just start a new page ───────────────────────────────────
160
+ if (block.element.type === 'spacer') {
161
+ pushNewPage(pages);
162
+ addToCurrentPage(pages, {
163
+ measuredBlock: block,
164
+ startLine: 0,
165
+ endLine: 0,
166
+ yFromTop: 0,
167
+ });
168
+ return;
169
+ }
170
+ // ── Images and HR: never split ───────────────────────────────────────────────
171
+ if (block.element.type === 'image' || block.element.type === 'svg' || block.element.type === 'hr') {
172
+ if (currentY > 0) {
173
+ pushNewPage(pages);
174
+ }
175
+ addToCurrentPage(pages, {
176
+ measuredBlock: block,
177
+ startLine: 0,
178
+ endLine: 0,
179
+ yFromTop: 0,
180
+ });
181
+ return;
182
+ }
183
+ // ── keepTogether or headings: move to next page if they don't fit ────────────
184
+ // At this point block.element is paragraph | heading | list-item | code | blockquote
185
+ const el = block.element;
186
+ // List items use the parent ListElement — keepTogether not applicable (always false)
187
+ // Multi-column blocks are always keepTogether — no mid-column page breaks in Phase 5B
188
+ const keepTogether = (block.columnData !== undefined)
189
+ ? true // Force keepTogether for multi-column blocks
190
+ : el.type === 'heading'
191
+ ? (el.keepTogether ?? true)
192
+ : (el.type === 'paragraph' || el.type === 'rich-paragraph' || el.type === 'code' || el.type === 'blockquote')
193
+ ? (el.keepTogether ?? false)
194
+ : false; // list items (el.type === 'list') — never keepTogether
195
+ if (keepTogether) {
196
+ if (currentY > 0) {
197
+ pushNewPage(pages);
198
+ }
199
+ if (block.height <= pageContentHeight) {
200
+ addToCurrentPage(pages, {
201
+ measuredBlock: block,
202
+ startLine: 0,
203
+ endLine: block.lines.length,
204
+ yFromTop: 0,
205
+ });
206
+ return;
207
+ }
208
+ // Falls through: keepTogether block is larger than one page — must split
209
+ }
210
+ // ── Must split: block spans more than one page ───────────────────────────────
211
+ splitBlock(block, pages, currentY, pageContentHeight, config);
212
+ }
213
+ /**
214
+ * Split a block across the current page and subsequent pages.
215
+ * Applies orphan/widow control.
216
+ */
217
+ function splitBlock(block, pages, currentY, pageContentHeight, config) {
218
+ let remainingLines = [...block.lines];
219
+ let remainingStartIndex = 0;
220
+ let isFirstChunk = true;
221
+ let currentPageY = currentY;
222
+ // Code blocks have visual padding that must be reserved when computing line capacity.
223
+ // Reserve topPad on the first chunk, bottomPad on the last chunk only.
224
+ // Middle chunks have no padding drawn, so we don't reserve any.
225
+ // We don't know if a chunk is "last" until we count lines, so we always reserve bottomPad
226
+ // unless this is provably not the last chunk (remaining > linesInChunk after computation).
227
+ // Both code and blockquote have visual padding that must be reserved when computing line capacity.
228
+ const codePad = block.element.type === 'code'
229
+ ? (block.codePadding ?? 0)
230
+ : block.element.type === 'blockquote'
231
+ ? (block.blockquotePaddingV ?? 0)
232
+ : 0;
233
+ while (remainingLines.length > 0) {
234
+ const available = pageContentHeight - currentPageY;
235
+ const topPad = (codePad > 0 && isFirstChunk) ? codePad : 0;
236
+ // Reserve bottom padding only if there are potentially lines remaining after this chunk.
237
+ // Use codePad as reservation — if it turns out this IS the last chunk, the padding fits.
238
+ // If it's a middle chunk, we conservatively reserve it to avoid overflow, then correct below.
239
+ const bottomPadReserve = codePad;
240
+ const availableForLines = available - topPad - bottomPadReserve;
241
+ // Phase 5B.4: rich-paragraph may have variable line heights (per-span fontSize)
242
+ let linesInChunk;
243
+ if (block.element.type === 'rich-paragraph' && block.richLines) {
244
+ linesInChunk = countRichLinesInHeight(block.richLines, remainingStartIndex, availableForLines);
245
+ }
246
+ else {
247
+ linesInChunk = countLinesInHeight(block.lineHeight, availableForLines);
248
+ }
249
+ if (linesInChunk <= 0) {
250
+ pushNewPage(pages);
251
+ currentPageY = 0;
252
+ continue;
253
+ }
254
+ const totalRemainingLines = remainingLines.length;
255
+ // ── Orphan check: too few lines on this page ─────────────────────────────
256
+ if (linesInChunk < config.minOrphanLines && totalRemainingLines > linesInChunk) {
257
+ if (isFirstChunk && currentPageY > 0) {
258
+ pushNewPage(pages);
259
+ currentPageY = 0;
260
+ // isFirstChunk stays true — no lines placed yet, topPad must still be reserved
261
+ continue;
262
+ }
263
+ }
264
+ // ── Widow check: too few lines would carry to next page ──────────────────
265
+ const linesAfterChunk = totalRemainingLines - linesInChunk;
266
+ if (linesAfterChunk > 0 &&
267
+ linesAfterChunk < config.minWidowLines &&
268
+ linesInChunk > config.minWidowLines) {
269
+ linesInChunk = linesInChunk - (config.minWidowLines - linesAfterChunk);
270
+ linesInChunk = Math.max(linesInChunk, config.minOrphanLines);
271
+ }
272
+ linesInChunk = Math.min(linesInChunk, totalRemainingLines);
273
+ if (linesInChunk > 0) {
274
+ addToCurrentPage(pages, {
275
+ measuredBlock: block,
276
+ startLine: remainingStartIndex,
277
+ endLine: remainingStartIndex + linesInChunk,
278
+ yFromTop: currentPageY,
279
+ });
280
+ }
281
+ remainingStartIndex += linesInChunk;
282
+ remainingLines = remainingLines.slice(linesInChunk);
283
+ if (remainingLines.length > 0) {
284
+ pushNewPage(pages);
285
+ currentPageY = 0;
286
+ isFirstChunk = false;
287
+ }
288
+ }
289
+ }
290
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
291
+ function newPage(pageIndex) {
292
+ return { pageIndex, blocks: [] };
293
+ }
294
+ function pushNewPage(pages) {
295
+ pages.push(newPage(pages.length));
296
+ }
297
+ function addToCurrentPage(pages, block) {
298
+ const currentPage = pages[pages.length - 1];
299
+ if (currentPage) {
300
+ currentPage.blocks.push(block);
301
+ }
302
+ }
303
+ /** Count how many lines of a given lineHeight fit in availableHeight */
304
+ function countLinesInHeight(lineHeight, availableHeight) {
305
+ if (lineHeight <= 0)
306
+ return 0;
307
+ return Math.floor(availableHeight / lineHeight);
308
+ }
309
+ /** Get the Y position after all blocks on the current last page */
310
+ export function getCurrentY(pages) {
311
+ const lastPage = pages[pages.length - 1];
312
+ if (!lastPage || lastPage.blocks.length === 0)
313
+ return 0;
314
+ let maxY = 0;
315
+ for (const pagedBlock of lastPage.blocks) {
316
+ const block = pagedBlock.measuredBlock;
317
+ const el = block.element;
318
+ let blockBottom;
319
+ if (el.type === 'table' && block.tableData && pagedBlock.startRow !== undefined && pagedBlock.endRow !== undefined) {
320
+ // Table block: height = header rows + body rows placed (headers drawn on every chunk)
321
+ const bodyRows = block.tableData.rows.slice(block.tableData.headerRowCount);
322
+ const placedRows = bodyRows.slice(pagedBlock.startRow, pagedBlock.endRow);
323
+ const bodyHeight = placedRows.reduce((sum, r) => sum + r.height, 0);
324
+ blockBottom = pagedBlock.yFromTop + block.tableData.headerRowHeight + bodyHeight + block.spaceAfter;
325
+ }
326
+ else if (el.type === 'spacer') {
327
+ blockBottom = pagedBlock.yFromTop + block.height;
328
+ }
329
+ else if (el.type === 'image' || el.type === 'svg' || el.type === 'hr') {
330
+ blockBottom = pagedBlock.yFromTop + block.height + block.spaceAfter;
331
+ }
332
+ else if (el.type === 'code') {
333
+ // Code blocks include padding in their height
334
+ const lineCount = pagedBlock.endLine - pagedBlock.startLine;
335
+ const padding = block.codePadding ?? 8;
336
+ const isFirstChunk = pagedBlock.startLine === 0;
337
+ const isLastChunk = pagedBlock.endLine === block.lines.length;
338
+ const paddingTop = isFirstChunk ? padding : 0;
339
+ const paddingBottom = isLastChunk ? padding : 0;
340
+ blockBottom = pagedBlock.yFromTop +
341
+ lineCount * block.lineHeight +
342
+ paddingTop + paddingBottom +
343
+ block.spaceAfter;
344
+ }
345
+ else if (el.type === 'blockquote') {
346
+ // Blockquote blocks include vertical padding in their height (same pattern as code)
347
+ const lineCount = pagedBlock.endLine - pagedBlock.startLine;
348
+ const paddingV = block.blockquotePaddingV ?? 10;
349
+ const isFirstChunk = pagedBlock.startLine === 0;
350
+ const isLastChunk = pagedBlock.endLine === block.lines.length;
351
+ const paddingTop = isFirstChunk ? paddingV : 0;
352
+ const paddingBottom = isLastChunk ? paddingV : 0;
353
+ blockBottom = pagedBlock.yFromTop +
354
+ lineCount * block.lineHeight +
355
+ paddingTop + paddingBottom +
356
+ block.spaceAfter;
357
+ }
358
+ else if (el.type === 'rich-paragraph' && block.richLines) {
359
+ // Phase 5B.4: rich-paragraph may have variable line heights (per-span fontSize)
360
+ const visibleRichLines = block.richLines.slice(pagedBlock.startLine, pagedBlock.endLine);
361
+ const contentHeight = visibleRichLines.reduce((sum, rl) => sum + rl.lineHeight, 0);
362
+ blockBottom = pagedBlock.yFromTop + contentHeight + block.spaceAfter;
363
+ }
364
+ else {
365
+ // Text elements (paragraph, heading, list items)
366
+ const lineCount = pagedBlock.endLine - pagedBlock.startLine;
367
+ blockBottom = pagedBlock.yFromTop +
368
+ lineCount * block.lineHeight +
369
+ block.spaceAfter;
370
+ }
371
+ if (blockBottom > maxY)
372
+ maxY = blockBottom;
373
+ }
374
+ return maxY;
375
+ }
376
+ // ─── Phase 5B.4: Per-line height counting for rich-paragraph ──────────────────
377
+ /**
378
+ * Count how many lines from richLines array fit in the available height.
379
+ * Uses greedy accumulation of per-line heights (which may vary due to per-span fontSize).
380
+ */
381
+ function countRichLinesInHeight(richLines, startIdx, available) {
382
+ let count = 0;
383
+ let used = 0;
384
+ for (let i = startIdx; i < richLines.length; i++) {
385
+ const h = richLines[i].lineHeight;
386
+ if (used + h <= available + EPSILON) {
387
+ count++;
388
+ used += h;
389
+ }
390
+ else
391
+ break;
392
+ }
393
+ return count;
394
+ }
395
+ //# sourceMappingURL=paginate.js.map