postext 1.35.1 → 1.37.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 (273) hide show
  1. package/dist/__bench__/composedPage.bench.test.d.ts +2 -0
  2. package/dist/__bench__/composedPage.bench.test.d.ts.map +1 -0
  3. package/dist/__bench__/composedPage.bench.test.js +95 -0
  4. package/dist/__bench__/composedPage.bench.test.js.map +1 -0
  5. package/dist/__tests__/composed/continuation.test.d.ts +2 -0
  6. package/dist/__tests__/composed/continuation.test.d.ts.map +1 -0
  7. package/dist/__tests__/composed/continuation.test.js +352 -0
  8. package/dist/__tests__/composed/continuation.test.js.map +1 -0
  9. package/dist/__tests__/composed/contrast.test.d.ts +2 -0
  10. package/dist/__tests__/composed/contrast.test.d.ts.map +1 -0
  11. package/dist/__tests__/composed/contrast.test.js +124 -0
  12. package/dist/__tests__/composed/contrast.test.js.map +1 -0
  13. package/dist/__tests__/composed/corpus.test.js +7 -1
  14. package/dist/__tests__/composed/corpus.test.js.map +1 -1
  15. package/dist/__tests__/composed/fit.test.d.ts +2 -0
  16. package/dist/__tests__/composed/fit.test.d.ts.map +1 -0
  17. package/dist/__tests__/composed/fit.test.js +408 -0
  18. package/dist/__tests__/composed/fit.test.js.map +1 -0
  19. package/dist/__tests__/composed/groups.test.js +14 -0
  20. package/dist/__tests__/composed/groups.test.js.map +1 -1
  21. package/dist/__tests__/composed/headingDesigns.test.d.ts +2 -0
  22. package/dist/__tests__/composed/headingDesigns.test.d.ts.map +1 -0
  23. package/dist/__tests__/composed/headingDesigns.test.js +262 -0
  24. package/dist/__tests__/composed/headingDesigns.test.js.map +1 -0
  25. package/dist/__tests__/composed/labels.test.d.ts +2 -0
  26. package/dist/__tests__/composed/labels.test.d.ts.map +1 -0
  27. package/dist/__tests__/composed/labels.test.js +326 -0
  28. package/dist/__tests__/composed/labels.test.js.map +1 -0
  29. package/dist/__tests__/composed/layout.test.js +2 -1
  30. package/dist/__tests__/composed/layout.test.js.map +1 -1
  31. package/dist/__tests__/composed/outsidePrint.test.js +5 -2
  32. package/dist/__tests__/composed/outsidePrint.test.js.map +1 -1
  33. package/dist/__tests__/composed/pageMemo.test.d.ts +2 -0
  34. package/dist/__tests__/composed/pageMemo.test.d.ts.map +1 -0
  35. package/dist/__tests__/composed/pageMemo.test.js +128 -0
  36. package/dist/__tests__/composed/pageMemo.test.js.map +1 -0
  37. package/dist/__tests__/composed/sourceMap.test.d.ts +2 -0
  38. package/dist/__tests__/composed/sourceMap.test.d.ts.map +1 -0
  39. package/dist/__tests__/composed/sourceMap.test.js +395 -0
  40. package/dist/__tests__/composed/sourceMap.test.js.map +1 -0
  41. package/dist/__tests__/composed/spreadLabels.test.d.ts +2 -0
  42. package/dist/__tests__/composed/spreadLabels.test.d.ts.map +1 -0
  43. package/dist/__tests__/composed/spreadLabels.test.js +131 -0
  44. package/dist/__tests__/composed/spreadLabels.test.js.map +1 -0
  45. package/dist/__tests__/composed/templateFrameRects.test.d.ts +2 -0
  46. package/dist/__tests__/composed/templateFrameRects.test.d.ts.map +1 -0
  47. package/dist/__tests__/composed/templateFrameRects.test.js +37 -0
  48. package/dist/__tests__/composed/templateFrameRects.test.js.map +1 -0
  49. package/dist/__tests__/design/imageAltText.test.js +2 -1
  50. package/dist/__tests__/design/imageAltText.test.js.map +1 -1
  51. package/dist/__tests__/exports.test.js +33 -0
  52. package/dist/__tests__/exports.test.js.map +1 -1
  53. package/dist/__tests__/migrate/fixtures/textbookPort.d.ts +14 -0
  54. package/dist/__tests__/migrate/fixtures/textbookPort.d.ts.map +1 -0
  55. package/dist/__tests__/migrate/fixtures/textbookPort.js +116 -0
  56. package/dist/__tests__/migrate/fixtures/textbookPort.js.map +1 -0
  57. package/dist/__tests__/migrate/textToMarkdown.test.d.ts +2 -0
  58. package/dist/__tests__/migrate/textToMarkdown.test.d.ts.map +1 -0
  59. package/dist/__tests__/migrate/textToMarkdown.test.js +268 -0
  60. package/dist/__tests__/migrate/textToMarkdown.test.js.map +1 -0
  61. package/dist/__tests__/paragraphStyleLetterSpacing.test.d.ts +2 -0
  62. package/dist/__tests__/paragraphStyleLetterSpacing.test.d.ts.map +1 -0
  63. package/dist/__tests__/paragraphStyleLetterSpacing.test.js +89 -0
  64. package/dist/__tests__/paragraphStyleLetterSpacing.test.js.map +1 -0
  65. package/dist/__tests__/pictureBelowPrintSize.test.d.ts +2 -0
  66. package/dist/__tests__/pictureBelowPrintSize.test.d.ts.map +1 -0
  67. package/dist/__tests__/pictureBelowPrintSize.test.js +82 -0
  68. package/dist/__tests__/pictureBelowPrintSize.test.js.map +1 -0
  69. package/dist/__tests__/pipeline/contourWrap.test.d.ts +2 -0
  70. package/dist/__tests__/pipeline/contourWrap.test.d.ts.map +1 -0
  71. package/dist/__tests__/pipeline/contourWrap.test.js +412 -0
  72. package/dist/__tests__/pipeline/contourWrap.test.js.map +1 -0
  73. package/dist/__tests__/pipeline/paragraphStyleFaces.test.js +1 -1
  74. package/dist/__tests__/pipeline/paragraphStyleFaces.test.js.map +1 -1
  75. package/dist/__tests__/toc.test.js +3 -2
  76. package/dist/__tests__/toc.test.js.map +1 -1
  77. package/dist/bundle/codec.d.ts +16 -0
  78. package/dist/bundle/codec.d.ts.map +1 -1
  79. package/dist/bundle/codec.js +44 -2
  80. package/dist/bundle/codec.js.map +1 -1
  81. package/dist/bundle/index.d.ts +1 -1
  82. package/dist/bundle/index.d.ts.map +1 -1
  83. package/dist/bundle/index.js +1 -1
  84. package/dist/bundle/index.js.map +1 -1
  85. package/dist/canvas-backend/composed.d.ts +5 -2
  86. package/dist/canvas-backend/composed.d.ts.map +1 -1
  87. package/dist/canvas-backend/composed.js +10 -5
  88. package/dist/canvas-backend/composed.js.map +1 -1
  89. package/dist/canvas-backend/index.d.ts.map +1 -1
  90. package/dist/canvas-backend/index.js +37 -19
  91. package/dist/canvas-backend/index.js.map +1 -1
  92. package/dist/canvas-backend/renderResourceBlock.d.ts +5 -1
  93. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  94. package/dist/canvas-backend/renderResourceBlock.js +60 -1
  95. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  96. package/dist/composed/continuation.d.ts +102 -0
  97. package/dist/composed/continuation.d.ts.map +1 -0
  98. package/dist/composed/continuation.js +87 -0
  99. package/dist/composed/continuation.js.map +1 -0
  100. package/dist/composed/contour.d.ts +21 -0
  101. package/dist/composed/contour.d.ts.map +1 -0
  102. package/dist/composed/contour.js +34 -0
  103. package/dist/composed/contour.js.map +1 -0
  104. package/dist/composed/geometry.d.ts +8 -0
  105. package/dist/composed/geometry.d.ts.map +1 -1
  106. package/dist/composed/geometry.js +26 -0
  107. package/dist/composed/geometry.js.map +1 -1
  108. package/dist/composed/ids.d.ts +22 -0
  109. package/dist/composed/ids.d.ts.map +1 -0
  110. package/dist/composed/ids.js +32 -0
  111. package/dist/composed/ids.js.map +1 -0
  112. package/dist/composed/labels.d.ts +154 -0
  113. package/dist/composed/labels.d.ts.map +1 -0
  114. package/dist/composed/labels.js +524 -0
  115. package/dist/composed/labels.js.map +1 -0
  116. package/dist/composed/pageMemo.d.ts +73 -0
  117. package/dist/composed/pageMemo.d.ts.map +1 -0
  118. package/dist/composed/pageMemo.js +289 -0
  119. package/dist/composed/pageMemo.js.map +1 -0
  120. package/dist/composed/paint.d.ts +29 -9
  121. package/dist/composed/paint.d.ts.map +1 -1
  122. package/dist/composed/paint.js +41 -7
  123. package/dist/composed/paint.js.map +1 -1
  124. package/dist/composed/reflowLog.d.ts +14 -2
  125. package/dist/composed/reflowLog.d.ts.map +1 -1
  126. package/dist/composed/reflowLog.js +64 -7
  127. package/dist/composed/reflowLog.js.map +1 -1
  128. package/dist/composed/slotChecks.d.ts.map +1 -1
  129. package/dist/composed/slotChecks.js +3 -1
  130. package/dist/composed/slotChecks.js.map +1 -1
  131. package/dist/composed/sourceMap.d.ts +97 -0
  132. package/dist/composed/sourceMap.d.ts.map +1 -0
  133. package/dist/composed/sourceMap.js +748 -0
  134. package/dist/composed/sourceMap.js.map +1 -0
  135. package/dist/composed/spread.d.ts +3 -0
  136. package/dist/composed/spread.d.ts.map +1 -1
  137. package/dist/composed/spread.js +11 -12
  138. package/dist/composed/spread.js.map +1 -1
  139. package/dist/composed/templates.d.ts +1 -0
  140. package/dist/composed/templates.d.ts.map +1 -1
  141. package/dist/composed/templates.js +4 -0
  142. package/dist/composed/templates.js.map +1 -1
  143. package/dist/composed/types.d.ts +15 -32
  144. package/dist/composed/types.d.ts.map +1 -1
  145. package/dist/composed/validate.d.ts.map +1 -1
  146. package/dist/composed/validate.js +3 -2
  147. package/dist/composed/validate.js.map +1 -1
  148. package/dist/composed/wrap.d.ts.map +1 -1
  149. package/dist/composed/wrap.js +7 -1
  150. package/dist/composed/wrap.js.map +1 -1
  151. package/dist/configWarnings.d.ts +15 -0
  152. package/dist/configWarnings.d.ts.map +1 -1
  153. package/dist/configWarnings.js +29 -17
  154. package/dist/configWarnings.js.map +1 -1
  155. package/dist/contour/index.d.ts +134 -0
  156. package/dist/contour/index.d.ts.map +1 -0
  157. package/dist/contour/index.js +354 -0
  158. package/dist/contour/index.js.map +1 -0
  159. package/dist/contour/png.d.ts +16 -0
  160. package/dist/contour/png.d.ts.map +1 -0
  161. package/dist/contour/png.js +173 -0
  162. package/dist/contour/png.js.map +1 -0
  163. package/dist/contrast.d.ts +5 -3
  164. package/dist/contrast.d.ts.map +1 -1
  165. package/dist/contrast.js +46 -5
  166. package/dist/contrast.js.map +1 -1
  167. package/dist/defaults/paragraphStyles.d.ts +1 -1
  168. package/dist/defaults/paragraphStyles.d.ts.map +1 -1
  169. package/dist/defaults/paragraphStyles.js +5 -1
  170. package/dist/defaults/paragraphStyles.js.map +1 -1
  171. package/dist/design/slots.d.ts +12 -10
  172. package/dist/design/slots.d.ts.map +1 -1
  173. package/dist/design/slots.js +26 -2
  174. package/dist/design/slots.js.map +1 -1
  175. package/dist/fonts/faces.d.ts.map +1 -1
  176. package/dist/fonts/faces.js +6 -0
  177. package/dist/fonts/faces.js.map +1 -1
  178. package/dist/highlightMarks.d.ts.map +1 -1
  179. package/dist/highlightMarks.js +6 -0
  180. package/dist/highlightMarks.js.map +1 -1
  181. package/dist/html-backend.d.ts.map +1 -1
  182. package/dist/html-backend.js +42 -4
  183. package/dist/html-backend.js.map +1 -1
  184. package/dist/index.d.ts +18 -7
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.js +18 -4
  187. package/dist/index.js.map +1 -1
  188. package/dist/measure/rich.d.ts.map +1 -1
  189. package/dist/measure/rich.js +2 -0
  190. package/dist/measure/rich.js.map +1 -1
  191. package/dist/migrate/markdownRuns.d.ts +70 -0
  192. package/dist/migrate/markdownRuns.d.ts.map +1 -0
  193. package/dist/migrate/markdownRuns.js +215 -0
  194. package/dist/migrate/markdownRuns.js.map +1 -0
  195. package/dist/migrate/pageDesign.d.ts +119 -0
  196. package/dist/migrate/pageDesign.d.ts.map +1 -0
  197. package/dist/migrate/pageDesign.js +446 -0
  198. package/dist/migrate/pageDesign.js.map +1 -0
  199. package/dist/migrate/textToMarkdown.d.ts +124 -0
  200. package/dist/migrate/textToMarkdown.d.ts.map +1 -0
  201. package/dist/migrate/textToMarkdown.js +716 -0
  202. package/dist/migrate/textToMarkdown.js.map +1 -0
  203. package/dist/parse/blockParser.d.ts.map +1 -1
  204. package/dist/parse/blockParser.js +44 -3
  205. package/dist/parse/blockParser.js.map +1 -1
  206. package/dist/parse/types.d.ts +20 -0
  207. package/dist/parse/types.d.ts.map +1 -1
  208. package/dist/pipeline/build.d.ts.map +1 -1
  209. package/dist/pipeline/build.js +298 -30
  210. package/dist/pipeline/build.js.map +1 -1
  211. package/dist/pipeline/buildMeasurement.d.ts +7 -2
  212. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  213. package/dist/pipeline/buildMeasurement.js +21 -5
  214. package/dist/pipeline/buildMeasurement.js.map +1 -1
  215. package/dist/pipeline/calloutLayout.d.ts +39 -14
  216. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  217. package/dist/pipeline/calloutLayout.js +50 -4
  218. package/dist/pipeline/calloutLayout.js.map +1 -1
  219. package/dist/pipeline/composedLayout.d.ts +51 -6
  220. package/dist/pipeline/composedLayout.d.ts.map +1 -1
  221. package/dist/pipeline/composedLayout.js +633 -78
  222. package/dist/pipeline/composedLayout.js.map +1 -1
  223. package/dist/pipeline/contentWarnings.d.ts +15 -0
  224. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  225. package/dist/pipeline/contentWarnings.js +98 -4
  226. package/dist/pipeline/contentWarnings.js.map +1 -1
  227. package/dist/pipeline/floatPlacement.d.ts +2 -0
  228. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  229. package/dist/pipeline/floatPlacement.js +1 -0
  230. package/dist/pipeline/floatPlacement.js.map +1 -1
  231. package/dist/pipeline/frameLayout.d.ts +7 -4
  232. package/dist/pipeline/frameLayout.d.ts.map +1 -1
  233. package/dist/pipeline/frameLayout.js +5 -2
  234. package/dist/pipeline/frameLayout.js.map +1 -1
  235. package/dist/pipeline/headerFooter.d.ts +20 -1
  236. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  237. package/dist/pipeline/headerFooter.js +225 -70
  238. package/dist/pipeline/headerFooter.js.map +1 -1
  239. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  240. package/dist/pipeline/measureContentBlock.js +1 -0
  241. package/dist/pipeline/measureContentBlock.js.map +1 -1
  242. package/dist/pipeline/mirrorFrame.d.ts.map +1 -1
  243. package/dist/pipeline/mirrorFrame.js +25 -2
  244. package/dist/pipeline/mirrorFrame.js.map +1 -1
  245. package/dist/pipeline/outline.d.ts.map +1 -1
  246. package/dist/pipeline/outline.js +2 -0
  247. package/dist/pipeline/outline.js.map +1 -1
  248. package/dist/pipeline/resourceLayout.d.ts +28 -0
  249. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  250. package/dist/pipeline/resourceLayout.js +21 -0
  251. package/dist/pipeline/resourceLayout.js.map +1 -1
  252. package/dist/pipeline/styles.d.ts +1 -1
  253. package/dist/pipeline/styles.d.ts.map +1 -1
  254. package/dist/pipeline/styles.js +4 -0
  255. package/dist/pipeline/styles.js.map +1 -1
  256. package/dist/pipeline/textWrap.d.ts +4 -1
  257. package/dist/pipeline/textWrap.d.ts.map +1 -1
  258. package/dist/pipeline/textWrap.js +17 -3
  259. package/dist/pipeline/textWrap.js.map +1 -1
  260. package/dist/pipeline/toc.d.ts.map +1 -1
  261. package/dist/pipeline/toc.js +1 -0
  262. package/dist/pipeline/toc.js.map +1 -1
  263. package/dist/types.d.ts +77 -2
  264. package/dist/types.d.ts.map +1 -1
  265. package/dist/vdt.d.ts +290 -15
  266. package/dist/vdt.d.ts.map +1 -1
  267. package/dist/vdt.js.map +1 -1
  268. package/dist/word/toDocx.d.ts.map +1 -1
  269. package/dist/word/toDocx.js +14 -0
  270. package/dist/word/toDocx.js.map +1 -1
  271. package/dist/word/word.test.js +11 -1
  272. package/dist/word/word.test.js.map +1 -1
  273. package/package.json +1 -1
@@ -0,0 +1,446 @@
1
+ import { stripPlaceholders } from '../pipeline/placeholders';
2
+ import { stableStringify } from '../util/stableHash';
3
+ const MM_PER = { mm: 1, cm: 10, in: 25.4, pt: 25.4 / 72, px: 25.4 / 96 };
4
+ /** A length in mm; `em` against `emMm`. */
5
+ export function toMm(d, emMm = 0) {
6
+ if (!d || typeof d !== 'object' || typeof d.value !== 'number')
7
+ return undefined;
8
+ if (d.unit === 'em' || d.unit === 'rem')
9
+ return d.value * emMm;
10
+ const f = MM_PER[d.unit];
11
+ return f === undefined ? undefined : d.value * f;
12
+ }
13
+ function lineHeightOf(el) {
14
+ const lh = el.lineHeight;
15
+ if (typeof lh === 'number')
16
+ return lh > 0 ? lh : 1.2;
17
+ if (lh && typeof lh === 'object') {
18
+ if (lh.unit === 'em' || lh.unit === 'rem')
19
+ return lh.value > 0 ? lh.value : 1.2;
20
+ const size = toMm(el.fontSize) ?? 0;
21
+ const abs = toMm(lh);
22
+ if (abs && size > 0)
23
+ return abs / size;
24
+ }
25
+ return 1.2;
26
+ }
27
+ /** A design text's look. */
28
+ export function lookOf(el) {
29
+ return {
30
+ ...(el.fontFamily ? { fontFamily: el.fontFamily } : {}),
31
+ fontSize: el.fontSize,
32
+ fontWeight: el.fontWeight ?? 400,
33
+ italic: el.italic === true,
34
+ ...(el.color ? { color: el.color } : {}),
35
+ align: (el.align ?? 'center'),
36
+ lineHeight: Math.round(lineHeightOf(el) * 100) / 100,
37
+ uppercase: el.textTransform === 'uppercase',
38
+ hyphenate: el.hyphenate === true,
39
+ ...(el.direction === 'rtl' || el.direction === 'ltr' ? { direction: el.direction } : {}),
40
+ ...(el.writingMode === 'vertical-rl' ? { writingMode: 'vertical-rl' } : {}),
41
+ ...trackingOf(el),
42
+ };
43
+ }
44
+ /** A design text's tracking as ems of its size, the unit a paragraph
45
+ * style reads it in (#907): `{ letterSpacing }`, or nothing when it sets
46
+ * none. */
47
+ function trackingOf(el) {
48
+ const ls = el.letterSpacing;
49
+ if (!ls || typeof ls !== 'object' || typeof ls.value !== 'number' || ls.value === 0)
50
+ return {};
51
+ if (ls.unit === 'em')
52
+ return { letterSpacing: { value: ls.value, unit: 'em' } };
53
+ const sizeMm = toMm(el.fontSize);
54
+ const mm = toMm(ls, sizeMm ?? 0);
55
+ if (!sizeMm || mm === undefined || mm === 0)
56
+ return {};
57
+ return { letterSpacing: { value: Math.round((mm / sizeMm) * 10000) / 10000, unit: 'em' } };
58
+ }
59
+ /** Whether a design text holds a placeholder (`{pageNumber}`, `{attr.x}`). */
60
+ export function hasPlaceholder(content) {
61
+ const plain = content.replace(/\{\{/g, '{').replace(/\}\}/g, '}').replace(/\\n/g, '\n');
62
+ return stripPlaceholders(content) !== plain;
63
+ }
64
+ const sideOf = (el) => el.parity === 'odd' ? 'recto' : el.parity === 'even' ? 'verso' : undefined;
65
+ const isTopLeftPage = (el) => el.placement?.anchor?.to === 'page' && (el.placement.anchor.edge ?? 'top-left') === 'top-left';
66
+ function rectOf(el) {
67
+ if (!isTopLeftPage(el))
68
+ return undefined;
69
+ const p = el.placement;
70
+ const w = typeof p.size?.width === 'object' ? toMm(p.size.width) : undefined;
71
+ const h = typeof p.size?.height === 'object' ? toMm(p.size.height) : undefined;
72
+ return { x: toMm(p.offset?.x) ?? 0, y: toMm(p.offset?.y) ?? 0, ...(w !== undefined ? { w } : {}), ...(h !== undefined ? { h } : {}) };
73
+ }
74
+ /** The lines of a design text: a newline, or the two characters `\n`,
75
+ * starts one; runs of them count once. */
76
+ function contentLines(content) {
77
+ return content.replace(/\{\{/g, '{').replace(/\}\}/g, '}').replace(/\\n/g, '\n').split(/\n+/).map((l) => l.trim());
78
+ }
79
+ function boldRuns(lines) {
80
+ // Per bold run, its piece on each line it crosses.
81
+ const runs = [];
82
+ let open = null;
83
+ lines.forEach((text, line) => {
84
+ let from = 0;
85
+ if (open)
86
+ open.push({ line, start: 0, end: text.length });
87
+ for (let i = 0; i < text.length; i++) {
88
+ if (text[i] === '\\') {
89
+ i++;
90
+ continue;
91
+ }
92
+ if (text[i] === '*' && text[i + 1] === '*') {
93
+ if (!open) {
94
+ open = [];
95
+ from = i + 2;
96
+ open.push({ line, start: from, end: text.length });
97
+ }
98
+ else {
99
+ const last = open[open.length - 1];
100
+ if (last.line === line)
101
+ last.end = i;
102
+ runs.push(open);
103
+ open = null;
104
+ }
105
+ i++;
106
+ }
107
+ }
108
+ });
109
+ return { runs };
110
+ }
111
+ /** Characters with a meaning in Postext Markdown escaped, so the text
112
+ * prints as the design printed it. With `marks`, the inline marks of the
113
+ * design (`**`, `*`, `_`, `^`, `~`) stay marks. */
114
+ function escapeText(text, marks) {
115
+ // One pass over the characters. A backslash before a character that gets
116
+ // escaped is doubled (`\\*` prints a backslash and an escaped asterisk);
117
+ // any other prints as it is. With inline marks a backslash before a
118
+ // marker is the design's own escape (`\*`) and stays, and the markers
119
+ // are left alone.
120
+ const escaped = marks ? '$`' : '*_^~$`';
121
+ let out = '';
122
+ for (let i = 0; i < text.length; i++) {
123
+ const ch = text[i];
124
+ if (ch === '\\') {
125
+ const next = text[i + 1];
126
+ const doubles = next !== undefined && (escaped.includes(next) || (!marks && next === '\\'));
127
+ out += doubles ? '\\\\' : ch;
128
+ continue;
129
+ }
130
+ out += escaped.includes(ch) ? `\\${ch}` : ch;
131
+ }
132
+ return out;
133
+ }
134
+ /** A line that the block parser would read as a list item, a heading, a
135
+ * quotation or a fence. */
136
+ const BLOCK_START = /^([-*+][ \t]|\d+[.)][ \t]|#{1,6}[ \t]|>|:::|\||`{3}|~{3}|\[\^)/;
137
+ /** The Markdown of a frame's paragraph: the lines joined by forced breaks
138
+ * (a backslash at the end of the line; ` \\ ` on the same line when the
139
+ * next one would start a block). */
140
+ export function joinLines(lines) {
141
+ let out = '';
142
+ lines.forEach((l, i) => {
143
+ if (i === 0) {
144
+ out = BLOCK_START.test(l) ? `\u200B${l}` : l;
145
+ return;
146
+ }
147
+ out += BLOCK_START.test(l) ? ` \\\\ ${l}` : `\\\n${l}`;
148
+ });
149
+ return out;
150
+ }
151
+ const hexOf = (c) => {
152
+ const h = c?.hex;
153
+ return typeof h === 'string' ? h.toLowerCase() : undefined;
154
+ };
155
+ /** A box that only fills a colour: a highlight under words. */
156
+ function highlightColour(el) {
157
+ if (el.kind !== 'box')
158
+ return undefined;
159
+ const st = el.style ?? {};
160
+ if (!st.backgroundColor)
161
+ return undefined;
162
+ if (st.borderColor && (toMm(st.borderWidth) ?? 0) > 0)
163
+ return undefined;
164
+ return st.backgroundColor;
165
+ }
166
+ /** The chip style a highlight of colour `c` becomes: the book's own, else a
167
+ * new one (bold, no padding, as the boxes were drawn). */
168
+ function chipStyleFor(c, existing, fresh) {
169
+ const hex = hexOf(c);
170
+ const own = existing.find((s) => s.backgroundEnabled !== false && hexOf(s.background) === hex);
171
+ if (own)
172
+ return own.id;
173
+ const id = `highlight-${(hex ?? 'colour').replace('#', '')}`;
174
+ if (!fresh.has(id)) {
175
+ fresh.set(id, {
176
+ id,
177
+ name: `Highlight ${hex ?? ''}`.trim(),
178
+ backgroundEnabled: true,
179
+ background: c,
180
+ borderWidth: { value: 0, unit: 'pt' },
181
+ borderRadius: { value: 0, unit: 'em' },
182
+ paddingX: { value: 0, unit: 'em' },
183
+ paddingY: { value: 0.04, unit: 'em' },
184
+ bold: true,
185
+ });
186
+ }
187
+ return id;
188
+ }
189
+ /** The pieces' estimated height: their lines, wrapped at the width at about
190
+ * half an em a character. */
191
+ function estimateLines(lines, widthMm, sizeMm) {
192
+ if (!widthMm || widthMm <= 0)
193
+ return Math.max(1, lines.length);
194
+ const perLine = Math.max(1, Math.floor(widthMm / (sizeMm * 0.5)));
195
+ return lines.reduce((n, l) => n + Math.max(1, Math.ceil(l.replace(/\*\*|[*_^~]/g, '').length / perLine)), 0);
196
+ }
197
+ /** Split one page design. */
198
+ export function planDesign(input) {
199
+ const { elements, page } = input;
200
+ const notes = [];
201
+ const kept = [];
202
+ const movedIds = new Set();
203
+ const pieces = [];
204
+ const newChipStyles = new Map();
205
+ for (const el of elements) {
206
+ if (el.kind !== 'text' || typeof el.content !== 'string')
207
+ continue;
208
+ if (!input.isContent(el.content))
209
+ continue;
210
+ if (hasPlaceholder(el.content)) {
211
+ kept.push({ id: el.id, reason: 'placeholder' });
212
+ continue;
213
+ }
214
+ const to = el.placement?.anchor?.to;
215
+ if (to !== 'page' && to !== 'bleed') {
216
+ kept.push({ id: el.id, reason: 'anchor' });
217
+ continue;
218
+ }
219
+ const look = lookOf(el);
220
+ const sizeMm = toMm(el.fontSize) ?? 4.2;
221
+ const lineMm = sizeMm * look.lineHeight;
222
+ const r = rectOf(el);
223
+ const lines = contentLines(el.content);
224
+ const pieceNotes = [];
225
+ if (el.box)
226
+ pieceNotes.push('box');
227
+ if (el.stroke)
228
+ pieceNotes.push('stroke');
229
+ if (el.dropCap)
230
+ pieceNotes.push('dropCap');
231
+ if (el.paragraphIndent)
232
+ pieceNotes.push('paragraphIndent');
233
+ if (typeof el.placement?.size?.height === 'object')
234
+ pieceNotes.push('height');
235
+ const chars = (el.content.match(/[\p{L}\p{N}]/gu) ?? []).length;
236
+ const n = estimateLines(lines, r?.w, sizeMm);
237
+ const sure = n === lines.length;
238
+ pieces.push({
239
+ id: el.id,
240
+ ...(sideOf(el) ? { side: sideOf(el) } : {}),
241
+ ...(r ? { x: r.x, y: r.y, ...(r.w !== undefined ? { width: r.w } : {}), height: n * lineMm, heightSure: sure } : {}),
242
+ lineMm,
243
+ look,
244
+ lookKey: stableStringify(look),
245
+ element: el,
246
+ lines,
247
+ chars,
248
+ notes: pieceNotes,
249
+ });
250
+ movedIds.add(el.id);
251
+ }
252
+ // Highlights: a filled box on a line of a moved text that carries a bold
253
+ // run is that run's chip.
254
+ const usedBoxes = new Set();
255
+ let chips = 0;
256
+ for (const p of pieces) {
257
+ const marks = p.element.inlineMarks === true;
258
+ let lines = p.lines.map((l) => escapeText(l, marks));
259
+ if (input.highlightsToChips && marks && p.x !== undefined && p.y !== undefined && p.width !== undefined && p.height !== undefined) {
260
+ const onLine = new Map();
261
+ const boxes = [];
262
+ for (const el of elements) {
263
+ const colour = highlightColour(el);
264
+ if (!colour || usedBoxes.has(el.id) || sideOf(el) !== p.side)
265
+ continue;
266
+ const r = rectOf(el);
267
+ if (!r || r.w === undefined || r.h === undefined)
268
+ continue;
269
+ if (r.h > p.lineMm * 1.6)
270
+ continue;
271
+ const cy = r.y + r.h / 2;
272
+ if (r.x < p.x - 1 || r.x + r.w > p.x + p.width + 1 || cy < p.y || cy > p.y + p.height)
273
+ continue;
274
+ const line = Math.floor((cy - p.y) / p.lineMm);
275
+ if (line < 0 || line >= p.lines.length)
276
+ continue;
277
+ onLine.set(line, colour);
278
+ boxes.push(el.id);
279
+ }
280
+ if (onLine.size > 0) {
281
+ const { runs } = boldRuns(lines);
282
+ const covered = new Set();
283
+ // Replace from the end so earlier offsets hold.
284
+ const edits = [];
285
+ for (const run of runs) {
286
+ if (!run.some((seg) => onLine.has(seg.line)))
287
+ continue;
288
+ const text = run.map((seg) => lines[seg.line].slice(seg.start, seg.end)).join('');
289
+ if (/[[\]*_]/.test(text))
290
+ continue;
291
+ const colour = onLine.get(run.find((seg) => onLine.has(seg.line)).line);
292
+ const style = chipStyleFor(colour, input.chipStyles, newChipStyles);
293
+ for (const seg of run) {
294
+ edits.push({ line: seg.line, start: seg.start, end: seg.end, style });
295
+ covered.add(seg.line);
296
+ }
297
+ }
298
+ edits.sort((a, b) => b.line - a.line || b.start - a.start);
299
+ lines = lines.slice();
300
+ for (const e of edits) {
301
+ const l = lines[e.line];
302
+ const opens = l.slice(Math.max(0, e.start - 2), e.start) === '**';
303
+ const closes = l.slice(e.end, e.end + 2) === '**';
304
+ const inner = l.slice(e.start, e.end);
305
+ const chip = inner.trim() === '' ? inner : `:chip[${inner}]{style="${e.style}"}`;
306
+ lines[e.line] = l.slice(0, opens ? e.start - 2 : e.start) + chip + l.slice(closes ? e.end + 2 : e.end);
307
+ }
308
+ // A boxed line without a bold run keeps its box.
309
+ for (const id of boxes) {
310
+ const el = elements.find((x) => x.id === id);
311
+ const r = rectOf(el);
312
+ const line = Math.floor((r.y + (r.h ?? 0) / 2 - p.y) / p.lineMm);
313
+ if (covered.has(line))
314
+ usedBoxes.add(id);
315
+ }
316
+ chips += edits.length;
317
+ }
318
+ }
319
+ p.lines = lines;
320
+ }
321
+ // Frames: pieces of one look under one another, at one spacing.
322
+ const ordered = pieces.slice().sort((a, b) => (a.y ?? Infinity) - (b.y ?? Infinity) || (a.x ?? 0) - (b.x ?? 0));
323
+ const frames = [];
324
+ for (const p of ordered) {
325
+ let target;
326
+ if (input.merge && p.x !== undefined && p.y !== undefined) {
327
+ target = frames.find((f) => {
328
+ const last = f.pieces[f.pieces.length - 1];
329
+ if (f.side !== p.side || f.lookKey !== p.lookKey || last.x === undefined || last.y === undefined || last.height === undefined)
330
+ return false;
331
+ if (Math.abs(last.x - p.x) > 0.6)
332
+ return false;
333
+ if (Math.abs((last.width ?? 0) - (p.width ?? 0)) > 2)
334
+ return false;
335
+ // Where the last piece ends must be known, not guessed from a wrap.
336
+ if (!last.heightSure)
337
+ return false;
338
+ const gap = p.y - (last.y + last.height);
339
+ if (gap < -0.35 * p.lineMm || gap > 1.6 * p.lineMm)
340
+ return false;
341
+ if (f.pieces.length > 1 && Math.abs(gap - f.gap) > 0.5)
342
+ return false;
343
+ // Nothing in between: no other text, no edge of a box.
344
+ const top = last.y + last.height - 0.2;
345
+ const bottom = p.y + 0.2;
346
+ const left = Math.min(last.x, p.x);
347
+ const right = Math.max(last.x + (last.width ?? 0), p.x + (p.width ?? 0));
348
+ const across = (x, w) => x < right && x + w > left;
349
+ if (pieces.some((q) => q !== last && q !== p && q.y !== undefined && q.x !== undefined && q.y > top && q.y < bottom && across(q.x, q.width ?? 0)))
350
+ return false;
351
+ if (elements.some((e) => {
352
+ if (e.kind !== 'box' && e.kind !== 'rule')
353
+ return false;
354
+ const r = rectOf(e);
355
+ if (!r)
356
+ return false;
357
+ const edges = [r.y, r.y + (r.h ?? 0)];
358
+ return across(r.x, r.w ?? 0) && edges.some((y) => y > top && y < bottom) && (e.kind === 'rule' || (r.h ?? 0) > p.lineMm * 1.6);
359
+ }))
360
+ return false;
361
+ return true;
362
+ });
363
+ }
364
+ if (target) {
365
+ const last = target.pieces[target.pieces.length - 1];
366
+ if (target.pieces.length === 1)
367
+ target.gap = Math.max(0, Math.round((p.y - (last.y + last.height)) * 10) / 10);
368
+ target.pieces.push(p);
369
+ target.width = Math.max(target.width ?? 0, p.width ?? 0) || undefined;
370
+ continue;
371
+ }
372
+ frames.push({ ...(p.side ? { side: p.side } : {}), pieces: [p], look: p.look, lookKey: p.lookKey, gap: 0, ...(p.width !== undefined ? { width: p.width } : {}), key: '' });
373
+ }
374
+ for (const f of frames) {
375
+ const first = f.pieces[0];
376
+ const round = (v) => (v === undefined ? '-' : (Math.round(v * 2) / 2).toFixed(1));
377
+ f.key = [f.side ?? '', f.lookKey, round(first.x), round(first.y), round(f.width), first.x === undefined ? stableStringify(first.element.placement) : ''].join('|');
378
+ for (const p of f.pieces)
379
+ notes.push(...p.notes.map((n) => `${p.id}:${n}`));
380
+ }
381
+ const movedTo = new Map();
382
+ frames.forEach((f, i) => f.pieces.forEach((p) => movedTo.set(p.id, i)));
383
+ // What did not move: in the template's running heads when it hangs from
384
+ // the slot's own container, else in the decoration, with the full-page
385
+ // picture read from the page's attribute.
386
+ const inSlot = new Set();
387
+ const byId = new Map(elements.map((e) => [e.id, e]));
388
+ for (let changed = true; changed;) {
389
+ changed = false;
390
+ for (const el of elements) {
391
+ if (inSlot.has(el.id))
392
+ continue;
393
+ const to = el.placement?.anchor?.to;
394
+ const slotBound = to === 'container' || to === 'outer' || to === undefined
395
+ || (typeof to === 'string' && to.startsWith('#') && byId.has(to.slice(1)) && inSlot.has(to.slice(1)) && !movedIds.has(to.slice(1)));
396
+ if (slotBound) {
397
+ inSlot.add(el.id);
398
+ changed = true;
399
+ }
400
+ }
401
+ }
402
+ let background;
403
+ const decoration = [];
404
+ const header = [];
405
+ const footer = [];
406
+ elements.forEach((el, i) => {
407
+ if (movedIds.has(el.id) || usedBoxes.has(el.id))
408
+ return;
409
+ const copy = { ...el };
410
+ delete copy.reserve;
411
+ if (inSlot.has(el.id)) {
412
+ (input.origins[i] === 'footer' ? footer : header).push(copy);
413
+ return;
414
+ }
415
+ if (el.kind === 'image' && background === undefined && coversPage(el, page)) {
416
+ background = el.resourceId;
417
+ copy.resourceId = '{attr.background}';
418
+ }
419
+ decoration.push(copy);
420
+ });
421
+ const movedChars = pieces.reduce((n, p) => n + p.chars, 0);
422
+ return { key: input.key, frames, decoration, header, footer, movedTo, ...(background !== undefined ? { background } : {}), kept, chips, newChipStyles, notes, movedChars, movedElements: pieces.length };
423
+ }
424
+ /** An image that covers (nearly) the whole page: the page's art. */
425
+ function coversPage(el, page) {
426
+ const r = rectOf(el);
427
+ if (!r || r.w === undefined || r.h === undefined || page.width <= 0 || page.height <= 0)
428
+ return false;
429
+ if (typeof el.resourceId !== 'string' || el.resourceId.includes('{'))
430
+ return false;
431
+ return r.w * r.h >= 0.8 * page.width * page.height;
432
+ }
433
+ /** Decoration anchors that named a text now in a frame name the frame. */
434
+ export function remapDecorationAnchors(decoration, movedTo, frames) {
435
+ return decoration.map((el) => {
436
+ const to = el.placement?.anchor?.to;
437
+ if (typeof to !== 'string' || !to.startsWith('#'))
438
+ return el;
439
+ const i = movedTo.get(to.slice(1));
440
+ const name = i !== undefined ? frames[i]?.name : undefined;
441
+ if (!name)
442
+ return el;
443
+ return { ...el, placement: { ...el.placement, anchor: { ...el.placement.anchor, to: `#${name}` } } };
444
+ });
445
+ }
446
+ //# sourceMappingURL=pageDesign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageDesign.js","sourceRoot":"","sources":["../../src/migrate/pageDesign.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * «Move the text to the Markdown» (#874): rescue a book that keeps its
3
+ * content in heading styles — the pattern of the 1.33 ports, a hidden
4
+ * heading style per page whose running head holds dozens of text elements
5
+ * placed on the page — by turning each page design into a page template
6
+ * whose frames take the text elements' boxes, and each page of the chapter
7
+ * into a `::::page{template}` fence whose `:::frame{slot}` blocks hold the
8
+ * text. The design's boxes and pictures become the template's decoration;
9
+ * the text's face, size and colour a paragraph style (one the book has when
10
+ * it matches); highlight boxes under bold words become chips. Similar pages
11
+ * share a template and extend it.
12
+ *
13
+ * Pure: a configuration and the chapters' Markdown in, the new ones and a
14
+ * report out. The Sandbox runs it from its migration dialog; the CLI and the
15
+ * agent skill can call it as it is.
16
+ */
17
+ import type { DocumentMetadata, PostextConfig } from '../types';
18
+ import type { PageSide } from '../composed/types';
19
+ export interface TextMigrationChapter {
20
+ id: string;
21
+ markdown: string;
22
+ }
23
+ export interface TextMigrationInput {
24
+ config: PostextConfig;
25
+ chapters: readonly TextMigrationChapter[];
26
+ /** The book's metadata: its title, author… are allowed in a design, as
27
+ * the `contentInConfig` check allows them, and stay there. */
28
+ metadata?: DocumentMetadata;
29
+ }
30
+ export interface TextMigrationOptions {
31
+ /** Join text elements of one look set under one another at an even
32
+ * spacing into one frame. Default `true`. */
33
+ merge?: boolean;
34
+ /** Pages whose frames stand in the same places share a template that
35
+ * their own ones extend. Default `true`. */
36
+ shareTemplates?: boolean;
37
+ /** A filled box under the bold words of a moved text becomes a chip of
38
+ * the book's chip style of that colour (else a new one). Default `true`. */
39
+ highlightsToChips?: boolean;
40
+ /** Heading styles that hold content and that no heading uses: `'keep'`
41
+ * (default) leaves them, `'remove'` deletes them. */
42
+ unusedStyles?: 'keep' | 'remove';
43
+ /** The side of the page a run's page falls on, when the caller laid the
44
+ * book out: the chapter and the offset of the page's first line in its
45
+ * Markdown as it was. Without it the side comes from the opening
46
+ * heading's `breakBefore.parity`, when it has one. */
47
+ sideOf?: (chapterId: string, offset: number) => PageSide | undefined;
48
+ }
49
+ export interface ContentInConfigCount {
50
+ /** `contentInConfig` warnings (one per owner). */
51
+ warnings: number;
52
+ /** Design texts at fault. */
53
+ elements: number;
54
+ /** Their letters and digits. */
55
+ chars: number;
56
+ }
57
+ /** One `::::page` fence the migration wrote. */
58
+ export interface MigratedPage {
59
+ chapterId: string;
60
+ /** 0-based index among the chapter's fences. */
61
+ fence: number;
62
+ template: string;
63
+ /** The heading styles of the headings on the page, as they were. */
64
+ styles: string[];
65
+ side?: PageSide;
66
+ frames: number;
67
+ elements: number;
68
+ chars: number;
69
+ /** Where the page may look different, by code: `box`, `stroke`, `dropCap`,
70
+ * `paragraphIndent`, `height` (the text's own box), `side` (the side of
71
+ * the page is not known: the text of both sides' frames was written),
72
+ * `flow` (the page has running text, now set in the template's flow
73
+ * frame), `repeated` (a text the running head printed on each page of a
74
+ * section is written on each page). */
75
+ differences: string[];
76
+ }
77
+ export interface TextMigrationReport {
78
+ pages: MigratedPage[];
79
+ templates: {
80
+ id: string;
81
+ extends?: string;
82
+ frames: number;
83
+ pages: number;
84
+ }[];
85
+ /** Text elements moved, and their letters and digits. */
86
+ movedElements: number;
87
+ movedChars: number;
88
+ /** Highlight boxes that became chips. */
89
+ chips: number;
90
+ frames: number;
91
+ paragraphStylesCreated: string[];
92
+ paragraphStylesReused: string[];
93
+ chipStylesCreated: string[];
94
+ /** Heading styles merged into one once their running heads moved out
95
+ * (`into` keeps; `from` are gone), and those deleted unused. */
96
+ headingStylesMerged: {
97
+ into: string;
98
+ from: string[];
99
+ }[];
100
+ headingStylesRemoved: string[];
101
+ /** Heading styles holding content that no heading uses (kept). */
102
+ unusedStyles: string[];
103
+ /** Hidden headings that only switched the running head, dropped. */
104
+ headingsDropped: number;
105
+ /** Text left in the configuration, and why. */
106
+ left: {
107
+ path: string;
108
+ reason: 'placeholder' | 'anchor' | 'unused' | 'notPage';
109
+ }[];
110
+ configBytesBefore: number;
111
+ configBytesAfter: number;
112
+ contentInConfigBefore: ContentInConfigCount;
113
+ contentInConfigAfter: ContentInConfigCount;
114
+ }
115
+ export interface TextMigrationResult {
116
+ config: PostextConfig;
117
+ chapters: TextMigrationChapter[];
118
+ report: TextMigrationReport;
119
+ /** Nothing to move: the result is the input. */
120
+ unchanged: boolean;
121
+ }
122
+ /** Run the migration. */
123
+ export declare function moveTextToMarkdown(input: TextMigrationInput, options?: TextMigrationOptions): TextMigrationResult;
124
+ //# sourceMappingURL=textToMarkdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textToMarkdown.d.ts","sourceRoot":"","sources":["../../src/migrate/textToMarkdown.ts"],"names":[],"mappings":"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"}