postext 1.22.2 → 1.23.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 (288) hide show
  1. package/dist/__tests__/bundle.test.js +1 -1
  2. package/dist/__tests__/codeBlocks.test.d.ts +2 -0
  3. package/dist/__tests__/codeBlocks.test.d.ts.map +1 -0
  4. package/dist/__tests__/codeBlocks.test.js +550 -0
  5. package/dist/__tests__/codeBlocks.test.js.map +1 -0
  6. package/dist/__tests__/exports.test.js +19 -0
  7. package/dist/__tests__/exports.test.js.map +1 -1
  8. package/dist/__tests__/hardBreaks.test.d.ts +2 -0
  9. package/dist/__tests__/hardBreaks.test.d.ts.map +1 -0
  10. package/dist/__tests__/hardBreaks.test.js +226 -0
  11. package/dist/__tests__/hardBreaks.test.js.map +1 -0
  12. package/dist/__tests__/headingInlineMarks.test.js +1 -1
  13. package/dist/__tests__/headingLetterSpacing.test.js +1 -1
  14. package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
  15. package/dist/__tests__/lineNumbers.test.d.ts +2 -0
  16. package/dist/__tests__/lineNumbers.test.d.ts.map +1 -0
  17. package/dist/__tests__/lineNumbers.test.js +304 -0
  18. package/dist/__tests__/lineNumbers.test.js.map +1 -0
  19. package/dist/__tests__/mathSizeMigration.test.js +2 -2
  20. package/dist/__tests__/paragraphDropCap.test.d.ts +2 -0
  21. package/dist/__tests__/paragraphDropCap.test.d.ts.map +1 -0
  22. package/dist/__tests__/paragraphDropCap.test.js +442 -0
  23. package/dist/__tests__/paragraphDropCap.test.js.map +1 -0
  24. package/dist/__tests__/paragraphStyleIndent.test.js +26 -2
  25. package/dist/__tests__/paragraphStyleIndent.test.js.map +1 -1
  26. package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
  27. package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
  28. package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
  29. package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
  30. package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
  31. package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
  32. package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
  33. package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
  34. package/dist/__tests__/pipeline/paragraphStyleFaces.test.js +7 -1
  35. package/dist/__tests__/pipeline/paragraphStyleFaces.test.js.map +1 -1
  36. package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
  37. package/dist/__tests__/tabStops.test.d.ts +2 -0
  38. package/dist/__tests__/tabStops.test.d.ts.map +1 -0
  39. package/dist/__tests__/tabStops.test.js +394 -0
  40. package/dist/__tests__/tabStops.test.js.map +1 -0
  41. package/dist/__tests__/verseLines.test.d.ts +2 -0
  42. package/dist/__tests__/verseLines.test.d.ts.map +1 -0
  43. package/dist/__tests__/verseLines.test.js +375 -0
  44. package/dist/__tests__/verseLines.test.js.map +1 -0
  45. package/dist/bundle/configVersion.d.ts +77 -7
  46. package/dist/bundle/configVersion.d.ts.map +1 -1
  47. package/dist/bundle/configVersion.js +239 -5
  48. package/dist/bundle/configVersion.js.map +1 -1
  49. package/dist/bundle/index.d.ts +1 -1
  50. package/dist/bundle/index.d.ts.map +1 -1
  51. package/dist/bundle/index.js +1 -1
  52. package/dist/bundle/index.js.map +1 -1
  53. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  54. package/dist/canvas-backend/blockRender.js +39 -5
  55. package/dist/canvas-backend/blockRender.js.map +1 -1
  56. package/dist/canvas-backend/index.d.ts.map +1 -1
  57. package/dist/canvas-backend/index.js +3 -0
  58. package/dist/canvas-backend/index.js.map +1 -1
  59. package/dist/cjkMarks.js +1 -1
  60. package/dist/cjkMarks.js.map +1 -1
  61. package/dist/code/highlight.d.ts +34 -0
  62. package/dist/code/highlight.d.ts.map +1 -0
  63. package/dist/code/highlight.js +406 -0
  64. package/dist/code/highlight.js.map +1 -0
  65. package/dist/configWarnings.d.ts.map +1 -1
  66. package/dist/configWarnings.js +192 -3
  67. package/dist/configWarnings.js.map +1 -1
  68. package/dist/defaults/bodyText.d.ts.map +1 -1
  69. package/dist/defaults/bodyText.js +25 -0
  70. package/dist/defaults/bodyText.js.map +1 -1
  71. package/dist/defaults/calloutStyles.d.ts.map +1 -1
  72. package/dist/defaults/calloutStyles.js +7 -0
  73. package/dist/defaults/calloutStyles.js.map +1 -1
  74. package/dist/defaults/codeStyle.d.ts +29 -0
  75. package/dist/defaults/codeStyle.d.ts.map +1 -0
  76. package/dist/defaults/codeStyle.js +284 -0
  77. package/dist/defaults/codeStyle.js.map +1 -0
  78. package/dist/defaults/dropCap.d.ts +49 -0
  79. package/dist/defaults/dropCap.d.ts.map +1 -0
  80. package/dist/defaults/dropCap.js +66 -0
  81. package/dist/defaults/dropCap.js.map +1 -0
  82. package/dist/defaults/headings.d.ts +1 -1
  83. package/dist/defaults/headings.d.ts.map +1 -1
  84. package/dist/defaults/headings.js +11 -0
  85. package/dist/defaults/headings.js.map +1 -1
  86. package/dist/defaults/index.d.ts +3 -0
  87. package/dist/defaults/index.d.ts.map +1 -1
  88. package/dist/defaults/index.js +19 -0
  89. package/dist/defaults/index.js.map +1 -1
  90. package/dist/defaults/lineNumbers.d.ts +19 -0
  91. package/dist/defaults/lineNumbers.d.ts.map +1 -0
  92. package/dist/defaults/lineNumbers.js +101 -0
  93. package/dist/defaults/lineNumbers.js.map +1 -0
  94. package/dist/defaults/paragraphStyles.d.ts.map +1 -1
  95. package/dist/defaults/paragraphStyles.js +20 -0
  96. package/dist/defaults/paragraphStyles.js.map +1 -1
  97. package/dist/defaults/tabStops.d.ts +29 -0
  98. package/dist/defaults/tabStops.d.ts.map +1 -0
  99. package/dist/defaults/tabStops.js +94 -0
  100. package/dist/defaults/tabStops.js.map +1 -0
  101. package/dist/defaults/verse.d.ts +10 -0
  102. package/dist/defaults/verse.d.ts.map +1 -0
  103. package/dist/defaults/verse.js +52 -0
  104. package/dist/defaults/verse.js.map +1 -0
  105. package/dist/fonts/usage.d.ts +7 -0
  106. package/dist/fonts/usage.d.ts.map +1 -1
  107. package/dist/fonts/usage.js +71 -0
  108. package/dist/fonts/usage.js.map +1 -1
  109. package/dist/html-backend.d.ts.map +1 -1
  110. package/dist/html-backend.js +85 -11
  111. package/dist/html-backend.js.map +1 -1
  112. package/dist/index.d.ts +8 -5
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +4 -2
  115. package/dist/index.js.map +1 -1
  116. package/dist/measure/bidiLines.js +2 -2
  117. package/dist/measure/bidiLines.js.map +1 -1
  118. package/dist/measure/cache.js +2 -2
  119. package/dist/measure/cache.js.map +1 -1
  120. package/dist/measure/cjkCompose.d.ts.map +1 -1
  121. package/dist/measure/cjkCompose.js +5 -5
  122. package/dist/measure/cjkCompose.js.map +1 -1
  123. package/dist/measure/hardBreaks.d.ts +46 -0
  124. package/dist/measure/hardBreaks.d.ts.map +1 -0
  125. package/dist/measure/hardBreaks.js +216 -0
  126. package/dist/measure/hardBreaks.js.map +1 -0
  127. package/dist/measure/index.d.ts +1 -0
  128. package/dist/measure/index.d.ts.map +1 -1
  129. package/dist/measure/index.js +1 -0
  130. package/dist/measure/index.js.map +1 -1
  131. package/dist/measure/leader.d.ts +20 -0
  132. package/dist/measure/leader.d.ts.map +1 -0
  133. package/dist/measure/leader.js +46 -0
  134. package/dist/measure/leader.js.map +1 -0
  135. package/dist/measure/links.js +1 -1
  136. package/dist/measure/links.js.map +1 -1
  137. package/dist/measure/plain.d.ts.map +1 -1
  138. package/dist/measure/plain.js +18 -25
  139. package/dist/measure/plain.js.map +1 -1
  140. package/dist/measure/rich.d.ts +19 -0
  141. package/dist/measure/rich.d.ts.map +1 -1
  142. package/dist/measure/rich.js +211 -38
  143. package/dist/measure/rich.js.map +1 -1
  144. package/dist/measure/tabs.d.ts +103 -0
  145. package/dist/measure/tabs.d.ts.map +1 -0
  146. package/dist/measure/tabs.js +123 -0
  147. package/dist/measure/tabs.js.map +1 -0
  148. package/dist/measure/types.d.ts +26 -2
  149. package/dist/measure/types.d.ts.map +1 -1
  150. package/dist/measure/types.js +23 -3
  151. package/dist/measure/types.js.map +1 -1
  152. package/dist/parse/blockParser.d.ts +13 -6
  153. package/dist/parse/blockParser.d.ts.map +1 -1
  154. package/dist/parse/blockParser.js +457 -87
  155. package/dist/parse/blockParser.js.map +1 -1
  156. package/dist/parse/codeFence.d.ts +18 -0
  157. package/dist/parse/codeFence.d.ts.map +1 -0
  158. package/dist/parse/codeFence.js +52 -0
  159. package/dist/parse/codeFence.js.map +1 -0
  160. package/dist/parse/index.d.ts +1 -1
  161. package/dist/parse/index.d.ts.map +1 -1
  162. package/dist/parse/index.js.map +1 -1
  163. package/dist/parse/indexMarks.d.ts +3 -1
  164. package/dist/parse/indexMarks.d.ts.map +1 -1
  165. package/dist/parse/indexMarks.js +22 -2
  166. package/dist/parse/indexMarks.js.map +1 -1
  167. package/dist/parse/inlineFormatting.d.ts +50 -0
  168. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  169. package/dist/parse/inlineFormatting.js +94 -0
  170. package/dist/parse/inlineFormatting.js.map +1 -1
  171. package/dist/parse/sourceMapping.d.ts.map +1 -1
  172. package/dist/parse/sourceMapping.js +65 -1
  173. package/dist/parse/sourceMapping.js.map +1 -1
  174. package/dist/parse/types.d.ts +144 -9
  175. package/dist/parse/types.d.ts.map +1 -1
  176. package/dist/pipeline/build.d.ts.map +1 -1
  177. package/dist/pipeline/build.js +143 -18
  178. package/dist/pipeline/build.js.map +1 -1
  179. package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
  180. package/dist/pipeline/buildBlockKind.js +60 -1
  181. package/dist/pipeline/buildBlockKind.js.map +1 -1
  182. package/dist/pipeline/buildHelpers.d.ts +3 -0
  183. package/dist/pipeline/buildHelpers.d.ts.map +1 -1
  184. package/dist/pipeline/buildHelpers.js +7 -2
  185. package/dist/pipeline/buildHelpers.js.map +1 -1
  186. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  187. package/dist/pipeline/calloutLayout.js +33 -2
  188. package/dist/pipeline/calloutLayout.js.map +1 -1
  189. package/dist/pipeline/chips.d.ts.map +1 -1
  190. package/dist/pipeline/chips.js +4 -0
  191. package/dist/pipeline/chips.js.map +1 -1
  192. package/dist/pipeline/codeBlocks.d.ts +38 -0
  193. package/dist/pipeline/codeBlocks.d.ts.map +1 -0
  194. package/dist/pipeline/codeBlocks.js +146 -0
  195. package/dist/pipeline/codeBlocks.js.map +1 -0
  196. package/dist/pipeline/codeInline.d.ts +22 -0
  197. package/dist/pipeline/codeInline.d.ts.map +1 -0
  198. package/dist/pipeline/codeInline.js +93 -0
  199. package/dist/pipeline/codeInline.js.map +1 -0
  200. package/dist/pipeline/codeLines.d.ts +91 -0
  201. package/dist/pipeline/codeLines.d.ts.map +1 -0
  202. package/dist/pipeline/codeLines.js +399 -0
  203. package/dist/pipeline/codeLines.js.map +1 -0
  204. package/dist/pipeline/config.d.ts.map +1 -1
  205. package/dist/pipeline/config.js +8 -1
  206. package/dist/pipeline/config.js.map +1 -1
  207. package/dist/pipeline/contentWarnings.d.ts +9 -0
  208. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  209. package/dist/pipeline/contentWarnings.js +60 -2
  210. package/dist/pipeline/contentWarnings.js.map +1 -1
  211. package/dist/pipeline/continuation.d.ts.map +1 -1
  212. package/dist/pipeline/continuation.js +9 -2
  213. package/dist/pipeline/continuation.js.map +1 -1
  214. package/dist/pipeline/dropCap.d.ts +128 -0
  215. package/dist/pipeline/dropCap.d.ts.map +1 -0
  216. package/dist/pipeline/dropCap.js +412 -0
  217. package/dist/pipeline/dropCap.js.map +1 -0
  218. package/dist/pipeline/hardBreaks.d.ts +19 -0
  219. package/dist/pipeline/hardBreaks.d.ts.map +1 -0
  220. package/dist/pipeline/hardBreaks.js +36 -0
  221. package/dist/pipeline/hardBreaks.js.map +1 -0
  222. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  223. package/dist/pipeline/headerFooter.js +4 -1
  224. package/dist/pipeline/headerFooter.js.map +1 -1
  225. package/dist/pipeline/lineNumbers.d.ts +37 -0
  226. package/dist/pipeline/lineNumbers.d.ts.map +1 -0
  227. package/dist/pipeline/lineNumbers.js +441 -0
  228. package/dist/pipeline/lineNumbers.js.map +1 -0
  229. package/dist/pipeline/measureContentBlock.d.ts +31 -5
  230. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  231. package/dist/pipeline/measureContentBlock.js +274 -68
  232. package/dist/pipeline/measureContentBlock.js.map +1 -1
  233. package/dist/pipeline/partPalette.d.ts +1 -1
  234. package/dist/pipeline/partPalette.d.ts.map +1 -1
  235. package/dist/pipeline/partPalette.js +24 -2
  236. package/dist/pipeline/partPalette.js.map +1 -1
  237. package/dist/pipeline/styles.d.ts +18 -2
  238. package/dist/pipeline/styles.d.ts.map +1 -1
  239. package/dist/pipeline/styles.js +15 -3
  240. package/dist/pipeline/styles.js.map +1 -1
  241. package/dist/pipeline/tabs.d.ts +35 -0
  242. package/dist/pipeline/tabs.d.ts.map +1 -0
  243. package/dist/pipeline/tabs.js +99 -0
  244. package/dist/pipeline/tabs.js.map +1 -0
  245. package/dist/pipeline/toc.d.ts.map +1 -1
  246. package/dist/pipeline/toc.js +3 -38
  247. package/dist/pipeline/toc.js.map +1 -1
  248. package/dist/pipeline/verseLines.d.ts +78 -0
  249. package/dist/pipeline/verseLines.d.ts.map +1 -0
  250. package/dist/pipeline/verseLines.js +245 -0
  251. package/dist/pipeline/verseLines.js.map +1 -0
  252. package/dist/preflight.d.ts.map +1 -1
  253. package/dist/preflight.js +1 -0
  254. package/dist/preflight.js.map +1 -1
  255. package/dist/types.d.ts +560 -4
  256. package/dist/types.d.ts.map +1 -1
  257. package/dist/vdt.d.ts +240 -7
  258. package/dist/vdt.d.ts.map +1 -1
  259. package/dist/vdt.js +6 -0
  260. package/dist/vdt.js.map +1 -1
  261. package/dist/word/docxRead.d.ts.map +1 -1
  262. package/dist/word/docxRead.js +15 -0
  263. package/dist/word/docxRead.js.map +1 -1
  264. package/dist/word/inline.d.ts +6 -1
  265. package/dist/word/inline.d.ts.map +1 -1
  266. package/dist/word/inline.js +35 -1
  267. package/dist/word/inline.js.map +1 -1
  268. package/dist/word/model.d.ts +14 -0
  269. package/dist/word/model.d.ts.map +1 -1
  270. package/dist/word/model.js.map +1 -1
  271. package/dist/word/template.d.ts +12 -3
  272. package/dist/word/template.d.ts.map +1 -1
  273. package/dist/word/template.js +13 -3
  274. package/dist/word/template.js.map +1 -1
  275. package/dist/word/toDocx.d.ts.map +1 -1
  276. package/dist/word/toDocx.js +52 -8
  277. package/dist/word/toDocx.js.map +1 -1
  278. package/dist/word/toMarkdown.d.ts +5 -1
  279. package/dist/word/toMarkdown.d.ts.map +1 -1
  280. package/dist/word/toMarkdown.js +117 -6
  281. package/dist/word/toMarkdown.js.map +1 -1
  282. package/dist/word/word.test.js +124 -2
  283. package/dist/word/word.test.js.map +1 -1
  284. package/dist/worker/fonts.d.ts +2 -1
  285. package/dist/worker/fonts.d.ts.map +1 -1
  286. package/dist/worker/fonts.js +6 -2
  287. package/dist/worker/fonts.js.map +1 -1
  288. package/package.json +1 -1
@@ -0,0 +1,375 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { parseMarkdown } from '../parse';
3
+ import { buildDocument } from '../pipeline';
4
+ import { renderToHtml } from '../html-backend';
5
+ import { CONFIG_VERSION, migrateConfig, migrateBundleConfig, pinLegacyPairedIndents, pinLegacyVerseLayout } from '../bundle/configVersion';
6
+ import { resolveVerseConfig, stripVerseDefaults, DEFAULT_VERSE_CONFIG } from '../defaults/verse';
7
+ import { stripBodyTextDefaults } from '../defaults/bodyText';
8
+ // #620: verse line by line — kept line breaks, indents, stanzas and
9
+ // hanging turnovers. The stub font: 7 px a character, a space 4 px.
10
+ class StubCtx {
11
+ font = '';
12
+ measureText(s) {
13
+ let w = 0;
14
+ for (const c of s)
15
+ w += c === ' ' ? 4 : 7;
16
+ return { width: w };
17
+ }
18
+ }
19
+ globalThis.OffscreenCanvas = class {
20
+ getContext() {
21
+ return new StubCtx();
22
+ }
23
+ };
24
+ const pt = (value) => ({ value, unit: 'pt' });
25
+ const em = (value) => ({ value, unit: 'em' });
26
+ // 72 dpi, a 20 pt body on 30 pt leading, a 360 pt measure from x = 20.
27
+ const config = (extra = {}, width = 400, height = 600) => ({
28
+ page: { dpi: 72, width: pt(width), height: pt(height), margins: { top: pt(20), bottom: pt(20), left: pt(20), right: pt(20) } },
29
+ layout: { layoutType: 'single' },
30
+ header: { elements: [] },
31
+ footer: { elements: [] },
32
+ ...extra,
33
+ bodyText: { fontSize: pt(20), lineHeight: { value: 1.5, unit: 'em' }, firstLineIndent: pt(0), hyphenation: { enabled: false }, ...extra.bodyText },
34
+ });
35
+ const verseLines = (doc) => doc.blocks.flatMap((b) => b.lines.filter((l) => l.verseLine));
36
+ const stanzaBlocks = (doc) => doc.blocks.filter((b) => b.lines.some((l) => l.verseLine));
37
+ const pageOf = (doc, line) => doc.pages.findIndex((p) => p.columns.some((c) => c.blocks.some((b) => b.lines.includes(line))));
38
+ const POEM = [
39
+ 'Before the poem.',
40
+ '',
41
+ ':::verse{align=start}',
42
+ 'Whose woods these are I think I know.',
43
+ ' His house is in the village though;',
44
+ '',
45
+ '',
46
+ 'He will not see me *stopping* here',
47
+ '\tTo watch his woods fill up with snow.',
48
+ ':::',
49
+ '',
50
+ 'After the poem.',
51
+ ].join('\n');
52
+ describe(':::verse line by line: the markup', () => {
53
+ const blocks = parseMarkdown(POEM);
54
+ const stanzas = blocks.filter((b) => b.verse);
55
+ it('reads a stanza a block, a line of verse a line, the indent out of the text', () => {
56
+ expect(stanzas.map((b) => b.text)).toEqual([
57
+ 'Whose woods these are I think I know.\nHis house is in the village though;',
58
+ 'He will not see me stopping here\nTo watch his woods fill up with snow.',
59
+ ]);
60
+ expect(stanzas.map((b) => b.verse.stanza.lines.map((l) => l.indent))).toEqual([[0, 2], [0, 4]]);
61
+ expect(stanzas.map((b) => [b.verse.stanza.index, b.verse.stanza.last, b.verse.stanza.firstLine])).toEqual([[0, false, 0], [1, true, 2]]);
62
+ expect(stanzas.every((b) => b.verse.stanza.poem === stanzas[0].verse.stanza.poem && b.verse.stanza.auto)).toBe(true);
63
+ expect(stanzas[1].spans.find((s) => s.italic)?.text).toBe('stopping');
64
+ expect(blocks.map((b) => b.text)).toEqual(['Before the poem.', stanzas[0].text, stanzas[1].text, 'After the poem.']);
65
+ });
66
+ it('maps every character to its source, a line feed to the line end, the first stanza from the fence and the last to its close', () => {
67
+ for (const b of stanzas) {
68
+ for (let i = 0; i < b.text.length; i++) {
69
+ const at = b.sourceMap[i];
70
+ expect(POEM[at], `${b.text[i]} at ${i}`).toBe(b.text[i]);
71
+ }
72
+ }
73
+ expect(stanzas[0].sourceStart).toBe(POEM.indexOf(':::verse'));
74
+ expect(stanzas[1].sourceStart).toBe(POEM.indexOf('He will'));
75
+ expect(stanzas[0].sourceEnd).toBe(POEM.indexOf(' though;') + ' though;'.length);
76
+ expect(stanzas[1].sourceEnd).toBe(POEM.indexOf(':::\n\nAfter') + 3);
77
+ // The poem as written: a line feed between lines, two between stanzas.
78
+ expect(stanzas.map((b) => b.text).join('\n\n')).toBe('Whose woods these are I think I know.\nHis house is in the village though;\n\nHe will not see me stopping here\nTo watch his woods fill up with snow.');
79
+ });
80
+ it('keeps the bayt layout when a line carries a separator, and follows the fence', () => {
81
+ const bayts = parseMarkdown(':::verse\nOne line || its half\nA single line\n:::').filter((b) => b.verse);
82
+ expect(bayts).toHaveLength(1);
83
+ expect(bayts[0].verse.stanza).toBeUndefined();
84
+ expect(bayts[0].text).toBe('One line\tits half\nA single line');
85
+ const forced = parseMarkdown(':::verse{layout=bayt}\nA single line\n:::').filter((b) => b.verse);
86
+ expect(forced[0].verse.stanza).toBeUndefined();
87
+ const lines = parseMarkdown(':::verse{layout=lines}\nA || B\n:::').filter((b) => b.verse);
88
+ expect(lines[0].verse.stanza).toBeDefined();
89
+ expect(lines[0].verse.stanza.auto).toBeUndefined();
90
+ expect(lines[0].text).toBe('A || B');
91
+ });
92
+ it('reads a stepped line, an ideographic indent and a caesura kept with keepSpaces', () => {
93
+ const [st] = parseMarkdown(':::verse{keepSpaces}\nWho is there?\n+ Nay, answer me.\n  Stand, and unfold\n:::').filter((b) => b.verse);
94
+ expect(st.verse.stanza.lines).toEqual([{ indent: 0 }, { indent: 0, stepped: true }, { indent: 4 }]);
95
+ expect(st.text).toBe('Who is there?\nNay, answer me.\nStand, and unfold');
96
+ const gap = st.spans.find((s) => s.fixedSpace);
97
+ expect(gap.text).toBe(' ');
98
+ // Without keepSpaces a run of spaces collapses.
99
+ const [plain] = parseMarkdown(':::verse\nStand, and unfold\n:::').filter((b) => b.verse);
100
+ expect(plain.text).toBe('Stand, and unfold');
101
+ });
102
+ it('drops an empty poem and runs an unclosed one to the end', () => {
103
+ expect(parseMarkdown(':::verse\n\n\n:::\n\nText.').map((b) => b.text)).toEqual(['Text.']);
104
+ const open = parseMarkdown(':::verse\nOne\n\nTwo');
105
+ expect(open.map((b) => b.text)).toEqual(['One', 'Two']);
106
+ expect(open[1].verse.stanza.last).toBe(true);
107
+ });
108
+ });
109
+ describe(':::verse line by line: the layout', () => {
110
+ const doc = buildDocument({ markdown: POEM }, config());
111
+ const lines = verseLines(doc);
112
+ it('sets one line a line of verse, a stanza space at the blank lines', () => {
113
+ expect(lines.map((l) => l.text)).toEqual([
114
+ 'Whose woods these are I think I know.',
115
+ 'His house is in the village though;',
116
+ 'He will not see me stopping here',
117
+ 'To watch his woods fill up with snow.',
118
+ ]);
119
+ expect(lines.map((l) => l.verseLine)).toEqual([
120
+ { stanza: 0, line: 0, turnover: false },
121
+ { stanza: 0, line: 1, turnover: false, indent: 20, stanzaEnd: true },
122
+ { stanza: 1, line: 2, turnover: false },
123
+ { stanza: 1, line: 3, turnover: false, indent: 40 },
124
+ ]);
125
+ expect(lines[1].baseline - lines[0].baseline).toBeCloseTo(30, 6);
126
+ // One line of the poem's leading between the stanzas.
127
+ expect(lines[2].baseline - lines[1].baseline).toBeCloseTo(60, 6);
128
+ expect(stanzaBlocks(doc)).toHaveLength(2);
129
+ });
130
+ it('indents a line by its leading spaces: two spaces one em, a tab four spaces', () => {
131
+ expect(lines[0].bbox.x).toBeCloseTo(20, 6);
132
+ expect(lines[1].bbox.x - lines[0].bbox.x).toBeCloseTo(20, 6);
133
+ expect(lines[3].bbox.x - lines[2].bbox.x).toBeCloseTo(40, 6);
134
+ const step = verseLines(buildDocument({ markdown: POEM.replace('{align=start}', '{align=start indentStep=1em}') }, config()));
135
+ expect(step[1].bbox.x - step[0].bbox.x).toBeCloseTo(40, 6);
136
+ const cfg = verseLines(buildDocument({ markdown: POEM }, config({ bodyText: { verse: { indentStep: pt(5) } } })));
137
+ expect(cfg[1].bbox.x - cfg[0].bbox.x).toBeCloseTo(10, 6);
138
+ });
139
+ it('centres the poem on its longest line, every line flush with its start', () => {
140
+ const centred = verseLines(buildDocument({ markdown: POEM.replace('{align=start}', '') }, config()));
141
+ const right = Math.max(...centred.map((l) => l.bbox.x + l.bbox.width));
142
+ const left = Math.min(...centred.map((l) => l.bbox.x));
143
+ expect(left - 20).toBeCloseTo(380 - right, 6);
144
+ expect(centred[0].bbox.x).toBeCloseTo(centred[2].bbox.x, 6);
145
+ });
146
+ it('copies line by line: a newline after a line, a blank line between stanzas', () => {
147
+ const html = renderToHtml(doc);
148
+ const text = html.replace(/<[^>]+>/g, '').replace(/&#39;/g, "'");
149
+ expect(text).toContain('I think I know.\nHis house is in the village though;\n\nHe will not see me stopping here\nTo watch');
150
+ });
151
+ it('maps each line to its source line', () => {
152
+ for (const line of lines) {
153
+ const source = POEM.slice(line.sourceStart, line.sourceEnd).replace(/^:::verse\{align=start\}\n/, '').replace(/\n:::$/, '');
154
+ expect(source.trim().replace(/\*/g, '')).toBe(line.text);
155
+ }
156
+ });
157
+ it('sets a poem with no separator as single hemistichs under a configuration stored before #620', () => {
158
+ const legacy = buildDocument({ markdown: POEM }, config({ bodyText: { verse: { layout: 'bayt' } } }));
159
+ expect(verseLines(legacy)).toHaveLength(0);
160
+ const bayts = legacy.blocks.flatMap((b) => b.lines.filter((l) => l.verse));
161
+ expect(bayts).toHaveLength(4);
162
+ // Centred in the measure, no space between the stanzas, as 1.22 set it.
163
+ for (const l of bayts)
164
+ expect((l.bbox.x - 20) * 2 + l.bbox.width).toBeCloseTo(360, 6);
165
+ for (let i = 1; i < 4; i++)
166
+ expect(bayts[i].baseline - bayts[i - 1].baseline).toBeCloseTo(30, 6);
167
+ // A layout named on the fence is read as written.
168
+ expect(verseLines(buildDocument({ markdown: POEM.replace('{align=start}', '{layout=lines}') }, config({ bodyText: { verse: { layout: 'bayt' } } })))).toHaveLength(4);
169
+ });
170
+ it('takes a paragraph style: its face, leading, indent and margins', () => {
171
+ const cfg = config({ paragraphStyles: [{ id: 'poem', name: 'Poem', fontSize: pt(10), lineHeight: pt(20), indent: pt(30), marginTop: pt(15) }] });
172
+ const styled = buildDocument({ markdown: POEM.replace('{align=start}', '{style=poem align=start}') }, cfg);
173
+ const ls = verseLines(styled);
174
+ expect(ls[1].baseline - ls[0].baseline).toBeCloseTo(20, 6);
175
+ expect(ls[0].bbox.x).toBeCloseTo(50, 6);
176
+ // Half an em of the style's size a space.
177
+ expect(ls[1].bbox.x - ls[0].bbox.x).toBeCloseTo(10, 6);
178
+ expect(ls[2].baseline - ls[1].baseline).toBeGreaterThanOrEqual(40 - 1e-6);
179
+ });
180
+ });
181
+ describe(':::verse line by line: turnovers', () => {
182
+ const LONG = 'And miles to go before I sleep, and miles to go before I sleep again tonight';
183
+ const md = (attrs, line = LONG) => `:::verse{align=start ${attrs}}\nShort line.\n ${line}\nShort again.\n:::`;
184
+ it('hangs a turnover two ems in from its line\'s own start', () => {
185
+ const ls = verseLines(buildDocument({ markdown: md('') }, config()));
186
+ const turn = ls.filter((l) => l.verseLine.turnover);
187
+ expect(turn.length).toBeGreaterThan(0);
188
+ const [first] = ls.filter((l) => l.verseLine.line === 1);
189
+ expect(first.bbox.x).toBeCloseTo(40, 6);
190
+ for (const l of turn) {
191
+ expect(l.bbox.x).toBeCloseTo(80, 6);
192
+ expect(l.verseLine.line).toBe(1);
193
+ expect(l.bbox.x + l.bbox.width).toBeLessThanOrEqual(380 + 0.01);
194
+ }
195
+ // The line and its turnover read as one line when copied.
196
+ const html = renderToHtml(buildDocument({ markdown: md('') }, config())).replace(/<[^>]+>/g, '');
197
+ expect(html).toContain(`${LONG}\nShort again.`);
198
+ });
199
+ it('takes the hang from the fence, the paragraph style, or bodyText.verse.hang', () => {
200
+ const at = (markdown, extra = {}) => verseLines(buildDocument({ markdown }, config(extra))).find((l) => l.verseLine.turnover).bbox.x;
201
+ expect(at(md('hang=1em'))).toBeCloseTo(60, 6);
202
+ expect(at(md('style=v'), { paragraphStyles: [{ id: 'v', hangingIndent: em(3) }] })).toBeCloseTo(100, 6);
203
+ expect(at(md(''), { bodyText: { verse: { hang: em(4) } } })).toBeCloseTo(120, 6);
204
+ });
205
+ it('sets a turnover flush right behind a bracket with turnover=right', () => {
206
+ const ls = verseLines(buildDocument({ markdown: md('turnover=right') }, config()));
207
+ const turn = ls.filter((l) => l.verseLine.turnover);
208
+ expect(turn.length).toBeGreaterThan(0);
209
+ for (const l of turn) {
210
+ expect(l.bbox.x + l.bbox.width).toBeCloseTo(380, 6);
211
+ expect(l.segments[0].text).toBe('[');
212
+ expect(l.segments[0].inserted).toBe(true);
213
+ expect(l.text.startsWith('[')).toBe(false);
214
+ }
215
+ const mark = verseLines(buildDocument({ markdown: md('turnover=right turnoverMark="⟨"') }, config())).find((l) => l.verseLine.turnover);
216
+ expect(mark.segments[0].text).toBe('⟨');
217
+ });
218
+ it('turns over at word spaces, never hyphenated unless the style asks itself', () => {
219
+ const word = 'Unimaginably incomprehensibly uncharacteristically overcomplicated';
220
+ const hyph = { bodyText: { hyphenation: { enabled: true, ragged: true } } };
221
+ const ls = verseLines(buildDocument({ markdown: md('', word) }, config(hyph)));
222
+ expect(ls.some((l) => l.hyphenated)).toBe(false);
223
+ });
224
+ it('starts a stepped line where the line above ended', () => {
225
+ const ls = verseLines(buildDocument({ markdown: ':::verse{align=start}\nWho is there?\n+ Nay, answer me.\n:::' }, config()));
226
+ expect(ls[1].bbox.x).toBeCloseTo(ls[0].bbox.x + ls[0].bbox.width + 4, 6);
227
+ });
228
+ it('keeps a caesura at the width of its spaces', () => {
229
+ const [kept] = verseLines(buildDocument({ markdown: ':::verse{align=start keepSpaces}\nStand, and unfold\n:::' }, config()));
230
+ const [plain] = verseLines(buildDocument({ markdown: ':::verse{align=start}\nStand, and unfold\n:::' }, config()));
231
+ expect(kept.bbox.width - plain.bbox.width).toBeCloseTo(12, 6);
232
+ });
233
+ });
234
+ describe(':::verse line by line: columns and pages', () => {
235
+ const page = (stanza, n) => `${'Some words of running text here. '.repeat(n)}\n\n:::verse\n${stanza.join('\n')}\n:::`;
236
+ const TANKA = ['the first line', 'the second line', 'the third line', 'the fourth line', 'the fifth line'];
237
+ it('keeps a stanza keepStanzas covers whole', () => {
238
+ let moved = 0;
239
+ for (let n = 30; n <= 60; n += 2) {
240
+ const split = buildDocument({ markdown: page(TANKA, n) }, config({}, 400, 300));
241
+ const kept = buildDocument({ markdown: page(TANKA, n).replace(':::verse', ':::verse{keepStanzas=5}') }, config({}, 400, 300));
242
+ const pagesOf = (d) => new Set(verseLines(d).map((l) => pageOf(d, l)));
243
+ expect(pagesOf(kept).size, `${n}`).toBe(1);
244
+ if (pagesOf(split).size > 1)
245
+ moved++;
246
+ }
247
+ // Without it the stanza splits at some foot (by the orphan and widow rules).
248
+ expect(moved).toBeGreaterThan(0);
249
+ const cfg = buildDocument({ markdown: page(TANKA, 40) }, config({ bodyText: { verse: { keepStanzas: 5 } } }, 400, 300));
250
+ expect(new Set(verseLines(cfg).map((l) => pageOf(cfg, l))).size).toBe(1);
251
+ });
252
+ it('splits inside a stanza leaving at least two lines on each side', () => {
253
+ const STANZA = Array.from({ length: 6 }, (_, i) => `line number ${i} of it`);
254
+ for (let n = 30; n <= 60; n += 2) {
255
+ const d = buildDocument({ markdown: page(STANZA, n) }, config({}, 400, 300));
256
+ const counts = new Map();
257
+ for (const l of verseLines(d))
258
+ counts.set(pageOf(d, l), (counts.get(pageOf(d, l)) ?? 0) + 1);
259
+ for (const c of counts.values())
260
+ expect(c, `${n}`).toBeGreaterThanOrEqual(2);
261
+ }
262
+ });
263
+ it('never parts a line from its turnover', () => {
264
+ const LONG = 'and this line of verse runs far past the measure of the column it is set in';
265
+ const lines = Array.from({ length: 12 }, (_, i) => (i % 2 ? `${LONG} ${i}` : `short ${i}`));
266
+ for (let height = 200; height <= 320; height += 10) {
267
+ const d = buildDocument({ markdown: `:::verse\n${lines.join('\n')}\n:::` }, config({}, 300, height));
268
+ for (const b of stanzaBlocks(d)) {
269
+ const next = d.blocks[d.blocks.indexOf(b) + 1];
270
+ if (next?.lines[0]?.verseLine)
271
+ expect(next.lines[0].verseLine.turnover, `${height}`).toBe(false);
272
+ }
273
+ }
274
+ });
275
+ it('breaks between stanzas, the space between them dropped at the top of a page', () => {
276
+ const stanza = (k) => [`stanza ${k} line one`, `stanza ${k} line two`, `stanza ${k} line three`].join('\n');
277
+ const d = buildDocument({ markdown: `:::verse{align=start}\n${[0, 1, 2, 3, 4, 5].map(stanza).join('\n\n')}\n:::` }, config({}, 400, 300));
278
+ expect(d.pages.length).toBeGreaterThan(1);
279
+ for (const p of d.pages) {
280
+ const first = p.columns[0].blocks[0].lines[0];
281
+ expect(first.bbox.y).toBeCloseTo(20, 6);
282
+ }
283
+ });
284
+ it('keeps the paragraph that introduces the poem with its first lines', () => {
285
+ for (let height = 220; height <= 330; height += 10) {
286
+ const text = `${'Running words here. '.repeat(40)}He said:\n\n:::verse\nthe first line of it\nthe second line of it\nthe third\n:::`;
287
+ const d = buildDocument({ markdown: text }, config({}, 400, height));
288
+ const intro = d.blocks.filter((b) => b.type === 'paragraph' && !b.lines.some((l) => l.verseLine)).at(-1);
289
+ expect(pageOf(d, intro.lines.at(-1)), `${height}`).toBe(pageOf(d, verseLines(d)[0]));
290
+ }
291
+ });
292
+ });
293
+ describe(':::verse line by line: directions and writing modes', () => {
294
+ it('measures a Latin poem in an Arabic book from its own start side', () => {
295
+ const md = 'نص عربي قبل القصيدة.\n\n:::verse{dir=ltr lang=en align=start}\nFirst line here\n Indented line\n:::';
296
+ const doc = buildDocument({ markdown: md }, config({ locale: 'ar' }));
297
+ const [a, b] = verseLines(doc);
298
+ // The flow frame of a right-to-left page runs from the right: a
299
+ // left-to-right poem starts at its far end.
300
+ expect(a.bbox.x + a.bbox.width).toBeCloseTo(380, 6);
301
+ expect(b.bbox.x + b.bbox.width).toBeCloseTo(360, 6);
302
+ expect(stanzaBlocks(doc)[0].lines.length).toBe(2);
303
+ });
304
+ it('indents an Arabic poem from its start in an Arabic book', () => {
305
+ const doc = buildDocument({ markdown: ':::verse{align=start}\nسطر أول هنا\n سطر ثان\n:::' }, config({ locale: 'ar' }));
306
+ const [a, b] = verseLines(doc);
307
+ expect(a.bbox.x).toBeCloseTo(20, 6);
308
+ expect(b.bbox.x).toBeCloseTo(40, 6);
309
+ });
310
+ it('indents a vertical Japanese poem from the head', () => {
311
+ const md = ':::verse\n古池や\n  蛙飛び込む\n 水の音\n:::';
312
+ const cfg = config({ locale: 'ja', layout: { layoutType: 'single', writingMode: 'vertical-rl' } });
313
+ const ls = verseLines(buildDocument({ markdown: md }, cfg));
314
+ expect(ls).toHaveLength(3);
315
+ // An ideographic space counts two leading spaces, one em at the
316
+ // default step; two spaces are one em too.
317
+ expect(ls[1].bbox.x - ls[0].bbox.x).toBeCloseTo(40, 6);
318
+ expect(ls[2].bbox.x - ls[0].bbox.x).toBeCloseTo(20, 6);
319
+ });
320
+ it('indents a vertical Traditional Chinese poem from the head', () => {
321
+ const md = ':::verse\n床前明月光\n 疑是地上霜\n:::';
322
+ const cfg = config({ locale: 'zh-Hant', layout: { layoutType: 'single', writingMode: 'vertical-rl' } });
323
+ const ls = verseLines(buildDocument({ markdown: md }, cfg));
324
+ expect(ls).toHaveLength(2);
325
+ expect(ls[1].bbox.x - ls[0].bbox.x).toBeCloseTo(20, 6);
326
+ });
327
+ });
328
+ describe('bodyText.verse and the configurations stored before #620', () => {
329
+ it('resolves and strips its defaults', () => {
330
+ expect(resolveVerseConfig()).toEqual(DEFAULT_VERSE_CONFIG);
331
+ expect(resolveVerseConfig({ turnover: 'right', keepStanzas: 5.7, stanzaSpace: -1 })).toEqual({ ...DEFAULT_VERSE_CONFIG, turnover: 'right', keepStanzas: 5 });
332
+ expect(stripVerseDefaults({ ...DEFAULT_VERSE_CONFIG })).toBeUndefined();
333
+ expect(stripVerseDefaults({ indentStep: em(0.5), stanzaSpace: 2 })).toEqual({ stanzaSpace: 2 });
334
+ expect(stripBodyTextDefaults({ verse: { turnover: 'hang', keepStanzas: 3 } })).toEqual({ verse: { keepStanzas: 3 } });
335
+ });
336
+ const PLAIN = ':::verse\nA line\nAnother\n:::';
337
+ const BAYT = ':::verse\nA || B\n:::';
338
+ it('pins the 1.22 verse layout when the text holds a poem with no separator', () => {
339
+ expect(CONFIG_VERSION).toBe(9);
340
+ const stored = { bodyText: { fontFamily: 'Georgia' } };
341
+ for (const version of [undefined, 3, 7, 8]) {
342
+ expect(migrateConfig(stored, version, { content: PLAIN }).bodyText?.verse, `${version}`).toEqual({ layout: 'bayt' });
343
+ }
344
+ expect(migrateConfig(stored, 8).bodyText?.verse).toEqual({ layout: 'bayt' });
345
+ for (const content of [BAYT, 'No poem.', ':::verse{layout=lines}\nA line\n:::', [BAYT, 'Text.']]) {
346
+ expect(migrateConfig(stored, 8, { content }), JSON.stringify(content)).toBe(stored);
347
+ }
348
+ expect(migrateConfig(stored, CONFIG_VERSION, { content: PLAIN })).toBe(stored);
349
+ const named = { bodyText: { verse: { layout: 'auto' } } };
350
+ expect(pinLegacyVerseLayout(named)).toBe(named);
351
+ const merged = migrateBundleConfig({}, [{ bodyText: { fontFamily: 'Georgia' } }], 8, { content: [PLAIN] });
352
+ expect(merged.bodyText).toEqual({ fontFamily: 'Georgia', verse: { layout: 'bayt' } });
353
+ });
354
+ it('pins a style\'s first-line indent away when it sets a hanging one too', () => {
355
+ const stored = {
356
+ paragraphStyles: [
357
+ { id: 'both', firstLineIndent: em(1), hangingIndent: em(3) },
358
+ { id: 'first', firstLineIndent: em(1) },
359
+ { id: 'zero', firstLineIndent: em(1), hangingIndent: em(0) },
360
+ ],
361
+ };
362
+ const pinned = migrateConfig(stored, 8, { content: 'Text.' });
363
+ expect(pinned.paragraphStyles).toEqual([
364
+ { id: 'both', hangingIndent: em(3) },
365
+ { id: 'first', firstLineIndent: em(1) },
366
+ { id: 'zero', firstLineIndent: em(1), hangingIndent: em(0) },
367
+ ]);
368
+ const none = { paragraphStyles: [{ id: 'first', firstLineIndent: em(1) }] };
369
+ expect(pinLegacyPairedIndents(none)).toBe(none);
370
+ expect(migrateConfig(stored, CONFIG_VERSION)).toBe(stored);
371
+ const viewer = pinLegacyPairedIndents({ htmlViewer: { overrides: { paragraphStyles: [{ id: 'b', firstLineIndent: em(1), hangingIndent: em(2) }] } } });
372
+ expect(viewer.htmlViewer.overrides.paragraphStyles).toEqual([{ id: 'b', hangingIndent: em(2) }]);
373
+ });
374
+ });
375
+ //# sourceMappingURL=verseLines.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verseLines.test.js","sourceRoot":"","sources":["../../src/__tests__/verseLines.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import type { PostextConfig } from '../types';
2
2
  /**
3
- * The configuration rules this engine writes: 8 since postext 1.5. Thirteen
4
- * rules changed in that release, and a configuration stored under an older
3
+ * The configuration rules this engine writes: 9 since #620 (8 from postext
4
+ * 1.5). Thirteen rules changed in 1.5 and two since, and a configuration
5
+ * stored under an older
5
6
  * number (or none) is read through {@link migrateConfig}:
6
7
  * - 3: a heading level's `breakBefore` (and a heading style's) merges field
7
8
  * by field onto the level's default — H1's being `always-odd`
@@ -52,6 +53,22 @@ import type { PostextConfig } from '../types';
52
53
  * paragraph (`bodyText.breakAfterHyphens`), where up to 1.4 a justified
53
54
  * paragraph with no inline formatting never broke there ({@link
54
55
  * pinLegacyHyphenBreaks}).
56
+ * - 9 (#620, #624), four rules:
57
+ * - a `:::verse` poem whose fence names no layout and whose lines carry
58
+ * no hemistich separator is set line by line (`bodyText.verse.layout:
59
+ * 'auto'`), where up to 1.22 its lines were single hemistichs centred
60
+ * in the measure ({@link pinLegacyVerseLayout});
61
+ * - a paragraph style that sets `firstLineIndent` itself and a non-zero
62
+ * `hangingIndent` indents its first line by the one and its turnovers
63
+ * by the other, where up to 1.22 the hanging indent replaced the
64
+ * first-line indent ({@link pinLegacyPairedIndents});
65
+ * - a backslash that ends a line of a paragraph, a quotation or a list
66
+ * item, and `\\` in one, is a forced line break
67
+ * (`bodyText.hardLineBreaks`), where up to 1.22 it printed ({@link
68
+ * pinLegacyHardBreaks});
69
+ * - a ```` ``` ```` or `~~~` fence opens a code block (#624,
70
+ * `codeStyle.blocks`), where up to 1.22 its lines were read as
71
+ * Markdown ({@link pinLegacyCodeBlocks}).
55
72
  *
56
73
  * A configuration stored without a version was written for postext 1.4 or
57
74
  * earlier. One stored under 3 to 7 was written by a 1.5 prerelease, and
@@ -59,9 +76,11 @@ import type { PostextConfig } from '../types';
59
76
  * inline-gap, version-6, version-7 and version-8 pins, under 4 the
60
77
  * inline-gap, version-6, version-7 and version-8 pins, under 5 the
61
78
  * version-6, version-7 and version-8 pins, under 6 the version-7 and
62
- * version-8 pins, under 7 the version-8 pins.
79
+ * version-8 pins, under 7 the version-8 pins. One stored under 8 was
80
+ * written by postext 1.5 to 1.22 and gets the version-9 pins (which every
81
+ * older one gets too).
63
82
  */
64
- export declare const CONFIG_VERSION = 8;
83
+ export declare const CONFIG_VERSION = 9;
65
84
  /**
66
85
  * How much larger postext 1.4 set maths than the size it documents:
67
86
  * MathJax gives a formula's box in `ex`, one `ex` of its TeX font is
@@ -186,6 +205,43 @@ export declare function pinLegacyParagraphContainerSpacing<T extends Partial<Pos
186
205
  * as it is (the same object).
187
206
  */
188
207
  export declare function pinLegacyHyphenBreaks<T extends Partial<PostextConfig>>(config: T): T;
208
+ /**
209
+ * A configuration written before #620 (postext 1.22 or earlier), pinned to
210
+ * the way it set a `:::verse` poem with no hemistich separator:
211
+ * `bodyText.verse.layout: 'bayt'`, every line a single hemistich centred in
212
+ * the measure, where today such a poem is set line by line. A
213
+ * configuration that names the setting already is returned as it is (the
214
+ * same object).
215
+ */
216
+ export declare function pinLegacyVerseLayout<T extends Partial<PostextConfig>>(config: T): T;
217
+ /**
218
+ * A configuration written before #620 (postext 1.22 or earlier), pinned to
219
+ * the indents of its paragraph styles: a style that sets both
220
+ * `firstLineIndent` and a non-zero `hangingIndent` loses the
221
+ * `firstLineIndent`, which up to 1.22 the hanging indent replaced (today
222
+ * the first line starts at it). The styles of its HTML viewer's overrides
223
+ * are pinned the same way. A configuration with no such style is returned
224
+ * as it is (the same object).
225
+ */
226
+ export declare function pinLegacyPairedIndents<T extends Partial<PostextConfig>>(config: T): T;
227
+ /**
228
+ * A configuration written before #620 (postext 1.22 or earlier), pinned to
229
+ * the way it read a backslash that ends a line of a paragraph, a quotation
230
+ * or a list item, and `\\` in one: `bodyText.hardLineBreaks: false`, the
231
+ * backslashes printed and the lines joined with a space, where today they
232
+ * are forced line breaks. A configuration that names the setting already
233
+ * is returned as it is (the same object).
234
+ */
235
+ export declare function pinLegacyHardBreaks<T extends Partial<PostextConfig>>(config: T): T;
236
+ /**
237
+ * A configuration written before #624 (postext 1.22 or earlier), pinned to
238
+ * the way it read a ```` ``` ```` or `~~~` fence: `codeStyle.blocks: false`,
239
+ * the fence and the lines inside it read as Markdown (paragraphs, headings,
240
+ * lists…), where today they are a code block set as written. A
241
+ * configuration that names the setting already is returned as it is (the
242
+ * same object).
243
+ */
244
+ export declare function pinLegacyCodeBlocks<T extends Partial<PostextConfig>>(config: T): T;
189
245
  /**
190
246
  * A configuration written before postext 1.5, pinned to the headings it
191
247
  * laid out then: `headings.inlineMarks: false`, where 1.4 printed the text
@@ -231,10 +287,18 @@ export interface MigrateConfigOptions {
231
287
  * `:::paragraphs` container is not given the 1.4 space under containers
232
288
  * (see {@link pinLegacyParagraphContainerSpacing}); and text with no
233
289
  * hyphen between two letters is not given the 1.4 compound breaks (see
234
- * {@link pinLegacyHyphenBreaks}). That keeps a stored configuration as
290
+ * {@link pinLegacyHyphenBreaks}); and text with no `:::verse` poem whose
291
+ * lines carry no hemistich separator is not given the 1.22 verse layout
292
+ * (see {@link pinLegacyVerseLayout}); and text with no backslash ending a
293
+ * line a paragraph goes on after, and no `\\` in running text, is not
294
+ * given the 1.22 literal backslashes (see {@link pinLegacyHardBreaks});
295
+ * and text with no ```` ``` ```` or `~~~` fence is not given the 1.22
296
+ * reading of fences (see {@link pinLegacyCodeBlocks}).
297
+ * That keeps a stored configuration as
235
298
  * short as it was. Without it the size is pinned whenever maths is on,
236
299
  * and the gaps, the room, the heading marks, the box cut, the dash
237
- * breaks, the split under a heading and the compound breaks always, and
300
+ * breaks, the split under a heading, the compound breaks, the verse
301
+ * layout and the literal backslashes always, and
238
302
  * the container space always when the configuration declares a paragraph
239
303
  * style.
240
304
  * Any iterable of texts will do, a generator or a Map's `values()`
@@ -267,7 +331,13 @@ export interface MigrateConfigOptions {
267
331
  * pinLegacyParagraphContainerSpacing}, when it declares a paragraph style,
268
332
  * unless `options.content` shows no such container, and its compound
269
333
  * breaks by {@link pinLegacyHyphenBreaks}, unless `options.content` shows
270
- * no compound. A current one is returned as it is (the same object).
334
+ * no compound; one older than 9 has its poems with no hemistich separator
335
+ * pinned by {@link pinLegacyVerseLayout}, unless `options.content` shows
336
+ * none, its paragraph styles' indents by {@link pinLegacyPairedIndents},
337
+ * its forced line breaks by {@link pinLegacyHardBreaks}, unless
338
+ * `options.content` shows none, and its code fences by {@link
339
+ * pinLegacyCodeBlocks}, unless `options.content` shows none. A current one
340
+ * is returned as it is (the same object).
271
341
  * Migrate a stored configuration once and store it again under
272
342
  * `CONFIG_VERSION`: the maths pin multiplies a scale, so a configuration
273
343
  * read twice under its old number would grow twice.
@@ -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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"}