postext 1.33.11 → 1.34.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 (140) hide show
  1. package/README.md +2 -2
  2. package/dist/__tests__/bundle/designOverflowPin.test.js +1 -1
  3. package/dist/__tests__/bundle/gridBreakRulesPin.test.js +2 -2
  4. package/dist/__tests__/bundle/shapingLanguagePin.test.js +3 -3
  5. package/dist/__tests__/bundle/taskBoxPin.test.js +1 -1
  6. package/dist/__tests__/bundle.test.js +1 -1
  7. package/dist/__tests__/codeBlocks.test.js +1 -1
  8. package/dist/__tests__/composed/corpus.test.d.ts +2 -0
  9. package/dist/__tests__/composed/corpus.test.d.ts.map +1 -0
  10. package/dist/__tests__/composed/corpus.test.js +33 -0
  11. package/dist/__tests__/composed/corpus.test.js.map +1 -0
  12. package/dist/__tests__/composed/slotChecks.test.d.ts +2 -0
  13. package/dist/__tests__/composed/slotChecks.test.d.ts.map +1 -0
  14. package/dist/__tests__/composed/slotChecks.test.js +148 -0
  15. package/dist/__tests__/composed/slotChecks.test.js.map +1 -0
  16. package/dist/__tests__/composedTemplates.test.d.ts +2 -0
  17. package/dist/__tests__/composedTemplates.test.d.ts.map +1 -0
  18. package/dist/__tests__/composedTemplates.test.js +349 -0
  19. package/dist/__tests__/composedTemplates.test.js.map +1 -0
  20. package/dist/__tests__/contentInConfig.test.d.ts +2 -0
  21. package/dist/__tests__/contentInConfig.test.d.ts.map +1 -0
  22. package/dist/__tests__/contentInConfig.test.js +201 -0
  23. package/dist/__tests__/contentInConfig.test.js.map +1 -0
  24. package/dist/__tests__/defaults/stripRoundTrip.test.js +3 -1
  25. package/dist/__tests__/defaults/stripRoundTrip.test.js.map +1 -1
  26. package/dist/__tests__/exports.test.js +22 -0
  27. package/dist/__tests__/exports.test.js.map +1 -1
  28. package/dist/__tests__/hardBreaks.test.js +1 -1
  29. package/dist/__tests__/headingInlineMarks.test.js +1 -1
  30. package/dist/__tests__/mathSizeMigration.test.js +2 -2
  31. package/dist/__tests__/parse/composedPages.test.d.ts +2 -0
  32. package/dist/__tests__/parse/composedPages.test.d.ts.map +1 -0
  33. package/dist/__tests__/parse/composedPages.test.js +323 -0
  34. package/dist/__tests__/parse/composedPages.test.js.map +1 -0
  35. package/dist/__tests__/parse/containers.test.js +2 -2
  36. package/dist/__tests__/parse/containers.test.js.map +1 -1
  37. package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
  38. package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
  39. package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
  40. package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
  41. package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
  42. package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
  43. package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
  44. package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
  45. package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
  46. package/dist/__tests__/tocGroups.test.d.ts +2 -0
  47. package/dist/__tests__/tocGroups.test.d.ts.map +1 -0
  48. package/dist/__tests__/tocGroups.test.js +213 -0
  49. package/dist/__tests__/tocGroups.test.js.map +1 -0
  50. package/dist/__tests__/verseLines.test.js +1 -1
  51. package/dist/bundle/configVersion.d.ts +16 -5
  52. package/dist/bundle/configVersion.d.ts.map +1 -1
  53. package/dist/bundle/configVersion.js +17 -4
  54. package/dist/bundle/configVersion.js.map +1 -1
  55. package/dist/bundle/types.d.ts +4 -3
  56. package/dist/bundle/types.d.ts.map +1 -1
  57. package/dist/composed/document.d.ts +43 -0
  58. package/dist/composed/document.d.ts.map +1 -0
  59. package/dist/composed/document.js +88 -0
  60. package/dist/composed/document.js.map +1 -0
  61. package/dist/composed/slotChecks.d.ts +29 -0
  62. package/dist/composed/slotChecks.d.ts.map +1 -0
  63. package/dist/composed/slotChecks.js +109 -0
  64. package/dist/composed/slotChecks.js.map +1 -0
  65. package/dist/composed/templates.d.ts +133 -0
  66. package/dist/composed/templates.d.ts.map +1 -0
  67. package/dist/composed/templates.js +702 -0
  68. package/dist/composed/templates.js.map +1 -0
  69. package/dist/composed/types.d.ts +404 -0
  70. package/dist/composed/types.d.ts.map +1 -0
  71. package/dist/composed/types.js +2 -0
  72. package/dist/composed/types.js.map +1 -0
  73. package/dist/composed/validate.d.ts +26 -0
  74. package/dist/composed/validate.d.ts.map +1 -0
  75. package/dist/composed/validate.js +276 -0
  76. package/dist/composed/validate.js.map +1 -0
  77. package/dist/configWarnings.d.ts +19 -3
  78. package/dist/configWarnings.d.ts.map +1 -1
  79. package/dist/configWarnings.js +170 -40
  80. package/dist/configWarnings.js.map +1 -1
  81. package/dist/defaults/checks.d.ts +7 -0
  82. package/dist/defaults/checks.d.ts.map +1 -0
  83. package/dist/defaults/checks.js +49 -0
  84. package/dist/defaults/checks.js.map +1 -0
  85. package/dist/defaults/index.d.ts +1 -0
  86. package/dist/defaults/index.d.ts.map +1 -1
  87. package/dist/defaults/index.js +26 -0
  88. package/dist/defaults/index.js.map +1 -1
  89. package/dist/defaults/toc.d.ts +17 -2
  90. package/dist/defaults/toc.d.ts.map +1 -1
  91. package/dist/defaults/toc.js +53 -1
  92. package/dist/defaults/toc.js.map +1 -1
  93. package/dist/design/slots.d.ts +29 -0
  94. package/dist/design/slots.d.ts.map +1 -0
  95. package/dist/design/slots.js +48 -0
  96. package/dist/design/slots.js.map +1 -0
  97. package/dist/index.d.ts +17 -3
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +10 -1
  100. package/dist/index.js.map +1 -1
  101. package/dist/parse/blockParser.d.ts.map +1 -1
  102. package/dist/parse/blockParser.js +295 -36
  103. package/dist/parse/blockParser.js.map +1 -1
  104. package/dist/parse/index.d.ts +1 -1
  105. package/dist/parse/index.d.ts.map +1 -1
  106. package/dist/parse/index.js.map +1 -1
  107. package/dist/parse/indexMarks.d.ts.map +1 -1
  108. package/dist/parse/indexMarks.js +24 -0
  109. package/dist/parse/indexMarks.js.map +1 -1
  110. package/dist/parse/types.d.ts +95 -2
  111. package/dist/parse/types.d.ts.map +1 -1
  112. package/dist/pipeline/build.d.ts.map +1 -1
  113. package/dist/pipeline/build.js +178 -3
  114. package/dist/pipeline/build.js.map +1 -1
  115. package/dist/pipeline/config.d.ts.map +1 -1
  116. package/dist/pipeline/config.js +17 -2
  117. package/dist/pipeline/config.js.map +1 -1
  118. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  119. package/dist/pipeline/contentWarnings.js +73 -0
  120. package/dist/pipeline/contentWarnings.js.map +1 -1
  121. package/dist/pipeline/placeholders.d.ts +7 -0
  122. package/dist/pipeline/placeholders.d.ts.map +1 -1
  123. package/dist/pipeline/placeholders.js +41 -0
  124. package/dist/pipeline/placeholders.js.map +1 -1
  125. package/dist/pipeline/textWrap.js +1 -1
  126. package/dist/pipeline/textWrap.js.map +1 -1
  127. package/dist/pipeline/toc.d.ts +11 -1
  128. package/dist/pipeline/toc.d.ts.map +1 -1
  129. package/dist/pipeline/toc.js +147 -8
  130. package/dist/pipeline/toc.js.map +1 -1
  131. package/dist/types.d.ts +99 -0
  132. package/dist/types.d.ts.map +1 -1
  133. package/dist/util/closestKey.d.ts +4 -0
  134. package/dist/util/closestKey.d.ts.map +1 -0
  135. package/dist/util/closestKey.js +40 -0
  136. package/dist/util/closestKey.js.map +1 -0
  137. package/dist/vdt.d.ts +125 -7
  138. package/dist/vdt.d.ts.map +1 -1
  139. package/dist/vdt.js.map +1 -1
  140. package/package.json +1 -1
@@ -0,0 +1,213 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { buildDocument } from '../pipeline';
3
+ import { resolveAllConfig } from '../pipeline/config';
4
+ import { parseTocLevelsAttr, tocKeepOf } from '../pipeline/toc';
5
+ import { resolveTocConfig, stripTocDefaults } from '../defaults/toc';
6
+ import { resolveBodyTextConfig } from '../defaults/bodyText';
7
+ import { collectConfigWarnings } from '../configWarnings';
8
+ import { formatWarning } from '../pipeline/contentWarnings';
9
+ class StubCtx {
10
+ font = '';
11
+ measureText(s) {
12
+ return { width: s.length * 7 };
13
+ }
14
+ }
15
+ globalThis.OffscreenCanvas = class {
16
+ getContext() {
17
+ return new StubCtx();
18
+ }
19
+ };
20
+ const pt = (value) => ({ value, unit: 'pt' });
21
+ const base = {
22
+ page: {
23
+ width: pt(360),
24
+ height: pt(260),
25
+ margins: { top: pt(18), bottom: pt(18), left: pt(18), right: pt(18) },
26
+ },
27
+ layout: { layoutType: 'single' },
28
+ headings: { levels: [{ level: 1, breakBefore: { enabled: false } }] },
29
+ headingStyles: [{ id: 'front', numbered: false }],
30
+ };
31
+ const withToc = (toc, extra = {}) => ({ ...base, ...extra, toc });
32
+ const part = (n, title, chapters, sections = 0) => `:::part{number="${n}" title="${title}"}
33
+ :::
34
+
35
+ ${Array.from({ length: chapters }, (_, i) => `# ${title} chapter ${i + 1}\n\nText.${Array.from({ length: sections }, (_, j) => `\n\n## ${title} ${i + 1}.${j + 1}\n\nText.`).join('')}`).join('\n\n')}`;
36
+ const SHORT = [['I', 'Alpha', 3], ['II', 'Beta', 5], ['III', 'Gamma', 4]];
37
+ const TALL = [['I', 'Alpha', 3], ['II', 'Beta', 30], ['III', 'Gamma', 2]];
38
+ const book = (toc = ':::toc', parts = SHORT) => `# Contents {style="front" toc="false"}
39
+
40
+ ${toc}
41
+
42
+ ${parts.map(([n, t, c, s]) => part(n, t, c, s)).join('\n\n')}`;
43
+ /** The contents rows of `doc`, as `page:text` (`P` marks a part row). */
44
+ const rows = (doc) => {
45
+ const out = [];
46
+ for (const page of doc.pages) {
47
+ for (const c of page.columns) {
48
+ for (const b of c.blocks) {
49
+ if (b.tocPart)
50
+ out.push(`${page.index}:P ${b.tocPart.title}`);
51
+ else if (b.tocEntry)
52
+ out.push(`${page.index}:${b.lines.map((l) => l.text).join(' ')}`);
53
+ }
54
+ }
55
+ }
56
+ return out;
57
+ };
58
+ const pageOf = (r, text) => Number(r.find((x) => x.endsWith(text) || x.includes(`${text} `)).split(':')[0]);
59
+ const splits = (d) => (d.contentWarnings ?? []).filter((w) => w.kind === 'tocGroupSplit');
60
+ describe('toc.groups (#850)', () => {
61
+ it('changes nothing when the blocks are not kept together', () => {
62
+ const plain = buildDocument({ markdown: book() }, base);
63
+ const off = buildDocument({ markdown: book() }, withToc({ groups: { keepTogether: false, head: 1, minEntriesAfterHead: 5 } }));
64
+ expect(rows(off)).toEqual(rows(plain));
65
+ // The plain contents cuts Gamma between its two pages.
66
+ expect(pageOf(rows(plain), 'P Gamma')).toBe(0);
67
+ expect(pageOf(rows(plain), 'Gamma chapter 4')).toBe(1);
68
+ expect(splits(plain)).toEqual([]);
69
+ });
70
+ it('moves a block that does not fit to the next page whole, with its head row', () => {
71
+ for (const doc of [
72
+ buildDocument({ markdown: book(':::toc{keep="part"}') }, base),
73
+ buildDocument({ markdown: book() }, withToc({ groups: { keepTogether: true } })),
74
+ ]) {
75
+ const r = rows(doc);
76
+ expect(pageOf(r, 'P Beta')).toBe(0);
77
+ expect(pageOf(r, 'Beta chapter 5')).toBe(0);
78
+ expect(pageOf(r, 'P Gamma')).toBe(1);
79
+ for (let i = 1; i <= 4; i++)
80
+ expect(pageOf(r, `Gamma chapter ${i}`)).toBe(1);
81
+ expect(r.some((x) => x.includes('(cont.)'))).toBe(false);
82
+ expect(splits(doc)).toEqual([]);
83
+ }
84
+ });
85
+ it('moves a block to the next column of the page', () => {
86
+ const two = { ...base, page: { ...base.page, width: pt(520) }, layout: { layoutType: 'double' } };
87
+ const colOf = (doc, text) => {
88
+ for (const page of doc.pages)
89
+ for (const c of page.columns)
90
+ for (const b of c.blocks) {
91
+ const t = b.tocPart ? `P ${b.tocPart.title}` : b.lines.map((l) => l.text).join(' ');
92
+ if (b.contentIndex !== undefined && (b.tocPart || b.tocEntry) && t.startsWith(text))
93
+ return `${page.index}:${c.index}`;
94
+ }
95
+ return '';
96
+ };
97
+ const parts = [['I', 'Alpha', 8], ['II', 'Beta', 8], ['III', 'Gamma', 8]];
98
+ const plain = buildDocument({ markdown: book(':::toc', parts) }, two);
99
+ const kept = buildDocument({ markdown: book(':::toc{keep="part"}', parts) }, two);
100
+ const cut = ['Alpha', 'Beta', 'Gamma'].find((t) => colOf(plain, `P ${t}`) !== colOf(plain, `${t} chapter 8`));
101
+ expect(cut).toBeDefined();
102
+ for (const t of ['Alpha', 'Beta', 'Gamma']) {
103
+ for (let i = 1; i <= 8; i++)
104
+ expect(colOf(kept, `${t} chapter ${i}`), `${t} ${i}`).toBe(colOf(kept, `P ${t}`));
105
+ }
106
+ expect(splits(kept)).toEqual([]);
107
+ });
108
+ it('cuts a block taller than a page, repeating its head row with the mark on every page it goes on to', () => {
109
+ const doc = buildDocument({ markdown: book(':::toc{keep="part"}', TALL) }, base);
110
+ const r = rows(doc);
111
+ // Beta starts under Alpha: a tall block keeps its head with two
112
+ // entries, and the head with two entries fits there.
113
+ expect(pageOf(r, 'P Beta')).toBe(0);
114
+ const cont = r.filter((x) => x.includes('Beta (cont.)'));
115
+ expect(cont.length).toBe(2);
116
+ // Each repeat opens its page, and the entries go on under it in order.
117
+ for (const c of cont) {
118
+ const page = c.split(':')[0];
119
+ expect(r.find((x) => x.startsWith(`${page}:`))).toBe(c);
120
+ }
121
+ expect(r.filter((x) => /Beta chapter \d+ /.test(x)).length).toBe(30);
122
+ const w = splits(doc);
123
+ expect(w).toEqual([expect.objectContaining({ kind: 'tocGroupSplit', title: 'Beta', columns: 3, pageIndex: 0 })]);
124
+ expect(formatWarning(w[0])).toContain('"Beta"');
125
+ // EPUB and the other readings leave the repeats out.
126
+ const continued = doc.blocks.filter((b) => b.tocPart?.continued);
127
+ expect(continued.length).toBe(2);
128
+ expect(continued.every((b) => b.tocPart.pageLabel === '')).toBe(true);
129
+ });
130
+ it('keeps minEntriesAfterHead entries with the head of a cut block', () => {
131
+ const doc = buildDocument({ markdown: book(':::toc{keep="part"}', TALL) }, withToc({ groups: { minEntriesAfterHead: 12 } }));
132
+ const r = rows(doc);
133
+ // Head and twelve entries do not fit under Alpha: the head moves on.
134
+ expect(pageOf(r, 'P Beta')).toBe(1);
135
+ expect(r.find((x) => x.startsWith('1:'))).toBe('1:P Beta');
136
+ });
137
+ it('sets the continuation mark from the config or the language, or no repeat at all', () => {
138
+ const fr = rows(buildDocument({ markdown: book(':::toc{keep="part"}', TALL) }, { ...base, locale: 'fr' }));
139
+ expect(fr.some((x) => x.endsWith('Beta (suite)'))).toBe(true);
140
+ const own = rows(buildDocument({ markdown: book(':::toc{keep="part"}', TALL) }, withToc({ groups: { continuation: { mark: '— continued' } } })));
141
+ expect(own.some((x) => x.endsWith('Beta — continued'))).toBe(true);
142
+ const none = buildDocument({ markdown: book(':::toc{keep="part"}', TALL) }, withToc({ groups: { continuation: { enabled: false } } }));
143
+ expect(rows(none).some((x) => x.includes('Beta ('))).toBe(false);
144
+ expect(rows(none).filter((x) => x.includes('P Beta')).length).toBe(1);
145
+ expect(splits(none).length).toBe(1);
146
+ });
147
+ it('lets the directive override the config: keep="none", keep="1" with levels="1-2"', () => {
148
+ const plain = rows(buildDocument({ markdown: book() }, base));
149
+ const none = rows(buildDocument({ markdown: book(':::toc{keep="none"}') }, withToc({ groups: { keepTogether: true } })));
150
+ expect(none).toEqual(plain);
151
+ const parts = [['I', 'Alpha', 2, 2], ['II', 'Beta', 3, 2]];
152
+ const flat = rows(buildDocument({ markdown: book(':::toc{levels="1-2"}', parts) }, base));
153
+ expect(flat.some((x) => x.includes('Alpha 1.2'))).toBe(true);
154
+ const kept = rows(buildDocument({ markdown: book(':::toc{keep="1" levels="1-2"}', parts) }, base));
155
+ // Every chapter stands on the page of its sections.
156
+ for (const [, t, c] of parts) {
157
+ for (let i = 1; i <= c; i++) {
158
+ const page = pageOf(kept, `${t} chapter ${i}`);
159
+ expect(pageOf(kept, `${t} ${i}.1`), `${t} ${i}`).toBe(page);
160
+ expect(pageOf(kept, `${t} ${i}.2`), `${t} ${i}`).toBe(page);
161
+ }
162
+ }
163
+ // A part row right above a chapter goes with the chapter's block.
164
+ expect(pageOf(kept, 'P Beta')).toBe(pageOf(kept, 'Beta chapter 1'));
165
+ });
166
+ it('reads levels="…" as a range, a level or a list', () => {
167
+ expect([...parseTocLevelsAttr('1-2')]).toEqual([1, 2]);
168
+ expect([...parseTocLevelsAttr('2')]).toEqual([2]);
169
+ expect([...parseTocLevelsAttr('1,3')]).toEqual([1, 3]);
170
+ expect(parseTocLevelsAttr('x')).toBeUndefined();
171
+ expect(parseTocLevelsAttr(undefined)).toBeUndefined();
172
+ const parts = [['I', 'Alpha', 2, 1]];
173
+ const only2 = rows(buildDocument({ markdown: book(':::toc{levels="2"}', parts) }, base));
174
+ expect(only2.filter((x) => !x.includes(':P ')).map((x) => x.replace(/ \d+$/, '').split(':')[1])).toEqual(['Alpha 1.1', 'Alpha 2.1']);
175
+ const resolved = resolveAllConfig(withToc({ groups: { keepTogether: true, head: 2 } }));
176
+ expect(tocKeepOf(undefined, resolved)).toBe(2);
177
+ expect(tocKeepOf({ keep: 'part' }, resolved)).toBe('part');
178
+ expect(tocKeepOf({ keep: 'none' }, resolved)).toBeUndefined();
179
+ expect(tocKeepOf({ keep: '3' }, resolveAllConfig(base))).toBe(3);
180
+ expect(tocKeepOf(undefined, resolveAllConfig(base))).toBeUndefined();
181
+ });
182
+ it('prints the pages the headings land on once the contents settles', () => {
183
+ const doc = buildDocument({ markdown: book(':::toc{keep="part"}', TALL) }, base);
184
+ const landed = new Map();
185
+ for (const page of doc.pages) {
186
+ for (const c of page.columns) {
187
+ for (const b of c.blocks) {
188
+ if (b.type === 'heading' && !b.tocEntry)
189
+ landed.set(b.lines.map((l) => l.text).join(' '), page.pageLabel);
190
+ }
191
+ }
192
+ }
193
+ for (const r of rows(doc)) {
194
+ const m = /^\d+:(.+ chapter \d+) (\S+)$/.exec(r);
195
+ if (m)
196
+ expect(m[2], m[1]).toBe(landed.get(m[1]));
197
+ }
198
+ });
199
+ it('resolves, strips and checks the groups config', () => {
200
+ const body = resolveBodyTextConfig({});
201
+ expect(resolveTocConfig(undefined, body).groups).toEqual({
202
+ keepTogether: false, head: 'part', minEntriesAfterHead: 2, continuation: { enabled: true, mark: '(cont.)' },
203
+ });
204
+ expect(resolveTocConfig(undefined, body, 'ja').groups.continuation.mark).toBe('(続き)');
205
+ expect(resolveTocConfig({ groups: { head: '3' } }, body).groups.head).toBe(3);
206
+ expect(stripTocDefaults({ groups: { keepTogether: false, head: 'part', minEntriesAfterHead: 2, continuation: { enabled: true } } })).toBeUndefined();
207
+ expect(stripTocDefaults({ groups: { keepTogether: true, head: 1, continuation: { mark: '(suite)' } } })).toEqual({
208
+ groups: { keepTogether: true, head: 1, continuation: { mark: '(suite)' } },
209
+ });
210
+ expect(collectConfigWarnings(withToc({ groups: { head: 'chapter' } }))).toContainEqual(expect.objectContaining({ kind: 'unknownConfigValue', path: 'toc.groups.head', used: 'part' }));
211
+ });
212
+ });
213
+ //# sourceMappingURL=tocGroups.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tocGroups.test.js","sourceRoot":"","sources":["../../src/__tests__/tocGroups.test.ts"],"names":[],"mappings":"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"}
@@ -438,7 +438,7 @@ describe('bodyText.verse and the configurations stored before #620', () => {
438
438
  const PLAIN = ':::verse\nA line\nAnother\n:::';
439
439
  const BAYT = ':::verse\nA || B\n:::';
440
440
  it('pins the 1.22 verse layout when the text holds a poem with no separator', () => {
441
- expect(CONFIG_VERSION).toBe(14);
441
+ expect(CONFIG_VERSION).toBe(15);
442
442
  const stored = { bodyText: { fontFamily: 'Georgia' } };
443
443
  for (const version of [undefined, 3, 7, 8]) {
444
444
  expect(migrateConfig(stored, version, { content: PLAIN }).bodyText?.verse, `${version}`).toEqual({ layout: 'bayt' });
@@ -1,7 +1,7 @@
1
1
  import type { PostextConfig } from '../types';
2
2
  /**
3
- * The configuration rules this engine writes: 14 since #770 (13 from
4
- * postext 1.29, 12 from 1.28, 11 from 1.25, 10 from 1.24, 9 from 1.23, 8 from 1.5). Thirteen rules changed in 1.5 and
3
+ * The configuration rules this engine writes: 15 since #853 (14 from
4
+ * postext 1.30, 13 from 1.29, 12 from 1.28, 11 from 1.25, 10 from 1.24, 9 from 1.23, 8 from 1.5). Thirteen rules changed in 1.5 and
5
5
  * more since, and a configuration
6
6
  * stored under an older
7
7
  * number (or none) is read through {@link migrateConfig}:
@@ -173,6 +173,12 @@ import type { PostextConfig } from '../types';
173
173
  * and the runs of a design text measured as they are painted, and in
174
174
  * the PDF the shaping word by word and each character from the file
175
175
  * the browser took it from.
176
+ * - 15 (#853), composed pages: the configuration may hold page templates
177
+ * (`pageTemplates`) and label styles (`labelStyles`), which an engine
178
+ * that reads 14 or less ignores. Nothing an older configuration says
179
+ * changes meaning, so one stored under 14 is read as it is (no pin): the
180
+ * number marks a configuration that may hold templates, so an older
181
+ * reader can say it lays out without them.
176
182
  *
177
183
  * A configuration stored without a version was written for postext 1.4 or
178
184
  * earlier. One stored under 3 to 7 was written by a 1.5 prerelease, and
@@ -190,9 +196,14 @@ import type { PostextConfig } from '../types';
190
196
  * too); one stored under 12 was written by postext 1.28 and gets the
191
197
  * version-13 pins (which every older one gets too); one stored under 13
192
198
  * was written by postext 1.29 and gets the version-14 pin (which every
193
- * older one gets too).
194
- */
195
- export declare const CONFIG_VERSION = 14;
199
+ * older one gets too); one stored under 14 was written by postext 1.30 to
200
+ * 1.33 and gets nothing.
201
+ */
202
+ export declare const CONFIG_VERSION = 15;
203
+ /** The rules that read page templates and label styles (#853). They add
204
+ * keys and change no older one, so they pin nothing: kept to say where
205
+ * the number came from. */
206
+ export declare const COMPOSED_PAGES_RULES = 15;
196
207
  /**
197
208
  * How much larger postext 1.4 set maths than the size it documents:
198
209
  * MathJax gives a formula's box in `ex`, one `ex` of its TeX font is
@@ -1 +1 @@
1
- {"version":3,"file":"configVersion.d.ts","sourceRoot":"","sources":["../../src/bundle/configVersion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configVersion.d.ts","sourceRoot":"","sources":["../../src/bundle/configVersion.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,8 @@ import { KNOWN_CONTAINERS } from '../parse/blockParser';
14
14
  import { codeFenceOpen } from '../parse/codeFence';
15
15
  import { hasCJK } from '../measure/cjk';
16
16
  /**
17
- * The configuration rules this engine writes: 14 since #770 (13 from
18
- * postext 1.29, 12 from 1.28, 11 from 1.25, 10 from 1.24, 9 from 1.23, 8 from 1.5). Thirteen rules changed in 1.5 and
17
+ * The configuration rules this engine writes: 15 since #853 (14 from
18
+ * postext 1.30, 13 from 1.29, 12 from 1.28, 11 from 1.25, 10 from 1.24, 9 from 1.23, 8 from 1.5). Thirteen rules changed in 1.5 and
19
19
  * more since, and a configuration
20
20
  * stored under an older
21
21
  * number (or none) is read through {@link migrateConfig}:
@@ -187,6 +187,12 @@ import { hasCJK } from '../measure/cjk';
187
187
  * and the runs of a design text measured as they are painted, and in
188
188
  * the PDF the shaping word by word and each character from the file
189
189
  * the browser took it from.
190
+ * - 15 (#853), composed pages: the configuration may hold page templates
191
+ * (`pageTemplates`) and label styles (`labelStyles`), which an engine
192
+ * that reads 14 or less ignores. Nothing an older configuration says
193
+ * changes meaning, so one stored under 14 is read as it is (no pin): the
194
+ * number marks a configuration that may hold templates, so an older
195
+ * reader can say it lays out without them.
190
196
  *
191
197
  * A configuration stored without a version was written for postext 1.4 or
192
198
  * earlier. One stored under 3 to 7 was written by a 1.5 prerelease, and
@@ -204,9 +210,10 @@ import { hasCJK } from '../measure/cjk';
204
210
  * too); one stored under 12 was written by postext 1.28 and gets the
205
211
  * version-13 pins (which every older one gets too); one stored under 13
206
212
  * was written by postext 1.29 and gets the version-14 pin (which every
207
- * older one gets too).
213
+ * older one gets too); one stored under 14 was written by postext 1.30 to
214
+ * 1.33 and gets nothing.
208
215
  */
209
- export const CONFIG_VERSION = 14;
216
+ export const CONFIG_VERSION = 15;
210
217
  /** The rules that merge a partial heading break onto its level's. */
211
218
  const HEADING_BREAK_RULES = 3;
212
219
  /** The rules that set a formula's em at the documented size. */
@@ -308,6 +315,10 @@ const SCRIPT_CONTEXT_RULES = 12;
308
315
  const SHAPING_LANGUAGE_RULES = 14;
309
316
  /** The rules that draw the box of a task item (#765). */
310
317
  const TASK_BOX_RULES = 13;
318
+ /** The rules that read page templates and label styles (#853). They add
319
+ * keys and change no older one, so they pin nothing: kept to say where
320
+ * the number came from. */
321
+ export const COMPOSED_PAGES_RULES = 15;
311
322
  /** Up to 1.4 a drop cap with no `fontSize` was as tall as the line boxes it
312
323
  * spans divided by this, the share of a letter's size its capitals take. */
313
324
  const CAP_HEIGHT = 0.72;
@@ -1849,6 +1860,7 @@ export function migrateConfig(config, configVersion, options = {}) {
1849
1860
  out = pinLegacyShapingLanguage(out);
1850
1861
  if (rules < TASK_BOX_RULES && mayHaveTaskItems(content))
1851
1862
  out = pinLegacyTaskBox(out);
1863
+ // COMPOSED_PAGES_RULES (15, #853): new keys only, nothing to pin.
1852
1864
  return out;
1853
1865
  }
1854
1866
  /**
@@ -1972,6 +1984,7 @@ export function migrateBundleConfig(base, layers, configVersion, options = {}) {
1972
1984
  merged = pinLegacyShapingLanguage(merged);
1973
1985
  if (rules < TASK_BOX_RULES && mayHaveTaskItems(content))
1974
1986
  merged = pinLegacyTaskBox(merged);
1987
+ // COMPOSED_PAGES_RULES (15, #853): new keys only, nothing to pin.
1975
1988
  return merged;
1976
1989
  }
1977
1990
  //# sourceMappingURL=configVersion.js.map