postext 1.47.0 → 1.48.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 (332) hide show
  1. package/dist/__tests__/bundle/designOverflowPin.test.js +1 -1
  2. package/dist/__tests__/bundle/gridBreakRulesPin.test.js +2 -2
  3. package/dist/__tests__/bundle/shapingLanguagePin.test.js +3 -3
  4. package/dist/__tests__/bundle/taskBoxPin.test.js +1 -1
  5. package/dist/__tests__/bundle.test.js +1 -1
  6. package/dist/__tests__/codeBlocks.test.js +1 -1
  7. package/dist/__tests__/composed/cardShapes.test.d.ts +2 -0
  8. package/dist/__tests__/composed/cardShapes.test.d.ts.map +1 -0
  9. package/dist/__tests__/composed/cardShapes.test.js +82 -0
  10. package/dist/__tests__/composed/cardShapes.test.js.map +1 -0
  11. package/dist/__tests__/composed/connectors.test.d.ts +2 -0
  12. package/dist/__tests__/composed/connectors.test.d.ts.map +1 -0
  13. package/dist/__tests__/composed/connectors.test.js +349 -0
  14. package/dist/__tests__/composed/connectors.test.js.map +1 -0
  15. package/dist/__tests__/composed/decorationSidePoints.test.d.ts +2 -0
  16. package/dist/__tests__/composed/decorationSidePoints.test.d.ts.map +1 -0
  17. package/dist/__tests__/composed/decorationSidePoints.test.js +164 -0
  18. package/dist/__tests__/composed/decorationSidePoints.test.js.map +1 -0
  19. package/dist/__tests__/composed/fit.test.js +2 -1
  20. package/dist/__tests__/composed/fit.test.js.map +1 -1
  21. package/dist/__tests__/composed/fixtures/connectors.d.ts +33 -0
  22. package/dist/__tests__/composed/fixtures/connectors.d.ts.map +1 -0
  23. package/dist/__tests__/composed/fixtures/connectors.js +142 -0
  24. package/dist/__tests__/composed/fixtures/connectors.js.map +1 -0
  25. package/dist/__tests__/composed/fixtures/grid.d.ts +32 -0
  26. package/dist/__tests__/composed/fixtures/grid.d.ts.map +1 -0
  27. package/dist/__tests__/composed/fixtures/grid.js +53 -0
  28. package/dist/__tests__/composed/fixtures/grid.js.map +1 -0
  29. package/dist/__tests__/composed/fixtures/legendMap.d.ts +24 -0
  30. package/dist/__tests__/composed/fixtures/legendMap.d.ts.map +1 -0
  31. package/dist/__tests__/composed/fixtures/legendMap.js +117 -0
  32. package/dist/__tests__/composed/fixtures/legendMap.js.map +1 -0
  33. package/dist/__tests__/composed/fixtures/mapParts.d.ts +58 -0
  34. package/dist/__tests__/composed/fixtures/mapParts.d.ts.map +1 -0
  35. package/dist/__tests__/composed/fixtures/mapParts.js +192 -0
  36. package/dist/__tests__/composed/fixtures/mapParts.js.map +1 -0
  37. package/dist/__tests__/composed/fixtures/modules.d.ts +55 -0
  38. package/dist/__tests__/composed/fixtures/modules.d.ts.map +1 -0
  39. package/dist/__tests__/composed/fixtures/modules.js +123 -0
  40. package/dist/__tests__/composed/fixtures/modules.js.map +1 -0
  41. package/dist/__tests__/composed/grid.test.d.ts +2 -0
  42. package/dist/__tests__/composed/grid.test.d.ts.map +1 -0
  43. package/dist/__tests__/composed/grid.test.js +357 -0
  44. package/dist/__tests__/composed/grid.test.js.map +1 -0
  45. package/dist/__tests__/composed/groups.test.js +6 -3
  46. package/dist/__tests__/composed/groups.test.js.map +1 -1
  47. package/dist/__tests__/composed/labelLegend.test.d.ts +2 -0
  48. package/dist/__tests__/composed/labelLegend.test.d.ts.map +1 -0
  49. package/dist/__tests__/composed/labelLegend.test.js +268 -0
  50. package/dist/__tests__/composed/labelLegend.test.js.map +1 -0
  51. package/dist/__tests__/composed/labelsChecks.test.js.map +1 -1
  52. package/dist/__tests__/composed/leaders.test.d.ts +2 -0
  53. package/dist/__tests__/composed/leaders.test.d.ts.map +1 -0
  54. package/dist/__tests__/composed/leaders.test.js +372 -0
  55. package/dist/__tests__/composed/leaders.test.js.map +1 -0
  56. package/dist/__tests__/composed/modules.test.d.ts +2 -0
  57. package/dist/__tests__/composed/modules.test.d.ts.map +1 -0
  58. package/dist/__tests__/composed/modules.test.js +352 -0
  59. package/dist/__tests__/composed/modules.test.js.map +1 -0
  60. package/dist/__tests__/composed/overConnectors.test.d.ts +2 -0
  61. package/dist/__tests__/composed/overConnectors.test.d.ts.map +1 -0
  62. package/dist/__tests__/composed/overConnectors.test.js +232 -0
  63. package/dist/__tests__/composed/overConnectors.test.js.map +1 -0
  64. package/dist/__tests__/composed/overlap.test.d.ts +2 -0
  65. package/dist/__tests__/composed/overlap.test.d.ts.map +1 -0
  66. package/dist/__tests__/composed/overlap.test.js +339 -0
  67. package/dist/__tests__/composed/overlap.test.js.map +1 -0
  68. package/dist/__tests__/composedTemplates.test.js +1 -1
  69. package/dist/__tests__/design/boxShape.test.d.ts +2 -0
  70. package/dist/__tests__/design/boxShape.test.d.ts.map +1 -0
  71. package/dist/__tests__/design/boxShape.test.js +126 -0
  72. package/dist/__tests__/design/boxShape.test.js.map +1 -0
  73. package/dist/__tests__/design/boxShapePaint.test.d.ts +2 -0
  74. package/dist/__tests__/design/boxShapePaint.test.d.ts.map +1 -0
  75. package/dist/__tests__/design/boxShapePaint.test.js +130 -0
  76. package/dist/__tests__/design/boxShapePaint.test.js.map +1 -0
  77. package/dist/__tests__/design/openerBottomAnchor.test.js.map +1 -1
  78. package/dist/__tests__/design/pathBlock.test.d.ts +2 -0
  79. package/dist/__tests__/design/pathBlock.test.d.ts.map +1 -0
  80. package/dist/__tests__/design/pathBlock.test.js +194 -0
  81. package/dist/__tests__/design/pathBlock.test.js.map +1 -0
  82. package/dist/__tests__/design/pathElement.test.d.ts +2 -0
  83. package/dist/__tests__/design/pathElement.test.d.ts.map +1 -0
  84. package/dist/__tests__/design/pathElement.test.js +257 -0
  85. package/dist/__tests__/design/pathElement.test.js.map +1 -0
  86. package/dist/__tests__/design/svgPath.test.d.ts +2 -0
  87. package/dist/__tests__/design/svgPath.test.d.ts.map +1 -0
  88. package/dist/__tests__/design/svgPath.test.js +144 -0
  89. package/dist/__tests__/design/svgPath.test.js.map +1 -0
  90. package/dist/__tests__/exports.test.js +52 -0
  91. package/dist/__tests__/exports.test.js.map +1 -1
  92. package/dist/__tests__/hardBreaks.test.js +1 -1
  93. package/dist/__tests__/headingInlineMarks.test.js +1 -1
  94. package/dist/__tests__/labelGlyphPaint.test.d.ts +2 -0
  95. package/dist/__tests__/labelGlyphPaint.test.d.ts.map +1 -0
  96. package/dist/__tests__/labelGlyphPaint.test.js +86 -0
  97. package/dist/__tests__/labelGlyphPaint.test.js.map +1 -0
  98. package/dist/__tests__/mathSizeMigration.test.js +2 -2
  99. package/dist/__tests__/migrate/labelsOnPictures.test.js +1 -1
  100. package/dist/__tests__/migrate/labelsOnPictures.test.js.map +1 -1
  101. package/dist/__tests__/parse/containers.test.js +1 -1
  102. package/dist/__tests__/parse/containers.test.js.map +1 -1
  103. package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
  104. package/dist/__tests__/pipeline/calloutLabelGlyph.test.d.ts +2 -0
  105. package/dist/__tests__/pipeline/calloutLabelGlyph.test.d.ts.map +1 -0
  106. package/dist/__tests__/pipeline/calloutLabelGlyph.test.js +198 -0
  107. package/dist/__tests__/pipeline/calloutLabelGlyph.test.js.map +1 -0
  108. package/dist/__tests__/pipeline/calloutShapes.test.d.ts +2 -0
  109. package/dist/__tests__/pipeline/calloutShapes.test.d.ts.map +1 -0
  110. package/dist/__tests__/pipeline/calloutShapes.test.js +159 -0
  111. package/dist/__tests__/pipeline/calloutShapes.test.js.map +1 -0
  112. package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
  113. package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
  114. package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
  115. package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
  116. package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
  117. package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
  118. package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
  119. package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
  120. package/dist/__tests__/verseLines.test.js +1 -1
  121. package/dist/bundle/configVersion.d.ts +12 -3
  122. package/dist/bundle/configVersion.d.ts.map +1 -1
  123. package/dist/bundle/configVersion.js +16 -5
  124. package/dist/bundle/configVersion.js.map +1 -1
  125. package/dist/canvas-backend/blockRender.js +3 -3
  126. package/dist/canvas-backend/blockRender.js.map +1 -1
  127. package/dist/canvas-backend/composed.d.ts +4 -2
  128. package/dist/canvas-backend/composed.d.ts.map +1 -1
  129. package/dist/canvas-backend/composed.js +12 -7
  130. package/dist/canvas-backend/composed.js.map +1 -1
  131. package/dist/canvas-backend/headerFooter.d.ts +17 -1
  132. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  133. package/dist/canvas-backend/headerFooter.js +64 -1
  134. package/dist/canvas-backend/headerFooter.js.map +1 -1
  135. package/dist/canvas-backend/index.d.ts.map +1 -1
  136. package/dist/canvas-backend/index.js +7 -1
  137. package/dist/canvas-backend/index.js.map +1 -1
  138. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  139. package/dist/canvas-backend/renderResourceBlock.js +17 -6
  140. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  141. package/dist/canvas-backend/swatch.d.ts +20 -1
  142. package/dist/canvas-backend/swatch.d.ts.map +1 -1
  143. package/dist/canvas-backend/swatch.js +51 -1
  144. package/dist/canvas-backend/swatch.js.map +1 -1
  145. package/dist/comics/layoutPage.d.ts.map +1 -1
  146. package/dist/comics/layoutPage.js +6 -1
  147. package/dist/comics/layoutPage.js.map +1 -1
  148. package/dist/composed/continuation.d.ts +10 -2
  149. package/dist/composed/continuation.d.ts.map +1 -1
  150. package/dist/composed/continuation.js +10 -2
  151. package/dist/composed/continuation.js.map +1 -1
  152. package/dist/composed/document.d.ts +45 -1
  153. package/dist/composed/document.d.ts.map +1 -1
  154. package/dist/composed/document.js +76 -17
  155. package/dist/composed/document.js.map +1 -1
  156. package/dist/composed/labelText.d.ts +6 -2
  157. package/dist/composed/labelText.d.ts.map +1 -1
  158. package/dist/composed/labelText.js +19 -3
  159. package/dist/composed/labelText.js.map +1 -1
  160. package/dist/composed/labels.d.ts +57 -3
  161. package/dist/composed/labels.d.ts.map +1 -1
  162. package/dist/composed/labels.js +261 -12
  163. package/dist/composed/labels.js.map +1 -1
  164. package/dist/composed/modules.d.ts +30 -0
  165. package/dist/composed/modules.d.ts.map +1 -0
  166. package/dist/composed/modules.js +194 -0
  167. package/dist/composed/modules.js.map +1 -0
  168. package/dist/composed/overlap.d.ts +52 -0
  169. package/dist/composed/overlap.d.ts.map +1 -0
  170. package/dist/composed/overlap.js +611 -0
  171. package/dist/composed/overlap.js.map +1 -0
  172. package/dist/composed/paint.d.ts +28 -5
  173. package/dist/composed/paint.d.ts.map +1 -1
  174. package/dist/composed/paint.js +26 -5
  175. package/dist/composed/paint.js.map +1 -1
  176. package/dist/composed/reflowLog.d.ts +6 -1
  177. package/dist/composed/reflowLog.d.ts.map +1 -1
  178. package/dist/composed/reflowLog.js +43 -0
  179. package/dist/composed/reflowLog.js.map +1 -1
  180. package/dist/composed/repeat.d.ts +66 -0
  181. package/dist/composed/repeat.d.ts.map +1 -0
  182. package/dist/composed/repeat.js +217 -0
  183. package/dist/composed/repeat.js.map +1 -0
  184. package/dist/composed/slotChecks.d.ts +1 -1
  185. package/dist/composed/slotChecks.d.ts.map +1 -1
  186. package/dist/composed/slotChecks.js +114 -8
  187. package/dist/composed/slotChecks.js.map +1 -1
  188. package/dist/composed/sourceMap.d.ts.map +1 -1
  189. package/dist/composed/sourceMap.js +16 -4
  190. package/dist/composed/sourceMap.js.map +1 -1
  191. package/dist/composed/spread.d.ts.map +1 -1
  192. package/dist/composed/spread.js +6 -2
  193. package/dist/composed/spread.js.map +1 -1
  194. package/dist/composed/templates.d.ts +22 -2
  195. package/dist/composed/templates.d.ts.map +1 -1
  196. package/dist/composed/templates.js +159 -9
  197. package/dist/composed/templates.js.map +1 -1
  198. package/dist/composed/types.d.ts +140 -7
  199. package/dist/composed/types.d.ts.map +1 -1
  200. package/dist/composed/validate.d.ts +1 -1
  201. package/dist/composed/validate.d.ts.map +1 -1
  202. package/dist/composed/validate.js +101 -4
  203. package/dist/composed/validate.js.map +1 -1
  204. package/dist/composed/wrap.d.ts.map +1 -1
  205. package/dist/composed/wrap.js +95 -17
  206. package/dist/composed/wrap.js.map +1 -1
  207. package/dist/configWarnings.d.ts +7 -1
  208. package/dist/configWarnings.d.ts.map +1 -1
  209. package/dist/configWarnings.js +275 -4
  210. package/dist/configWarnings.js.map +1 -1
  211. package/dist/contrast.d.ts.map +1 -1
  212. package/dist/contrast.js +8 -0
  213. package/dist/contrast.js.map +1 -1
  214. package/dist/defaults/calloutStyles.d.ts +10 -1
  215. package/dist/defaults/calloutStyles.d.ts.map +1 -1
  216. package/dist/defaults/calloutStyles.js +46 -7
  217. package/dist/defaults/calloutStyles.js.map +1 -1
  218. package/dist/defaults/headerFooter.d.ts.map +1 -1
  219. package/dist/defaults/headerFooter.js +38 -0
  220. package/dist/defaults/headerFooter.js.map +1 -1
  221. package/dist/design/boxShape.d.ts +101 -0
  222. package/dist/design/boxShape.d.ts.map +1 -0
  223. package/dist/design/boxShape.js +398 -0
  224. package/dist/design/boxShape.js.map +1 -0
  225. package/dist/design/connector.d.ts +75 -0
  226. package/dist/design/connector.d.ts.map +1 -0
  227. package/dist/design/connector.js +325 -0
  228. package/dist/design/connector.js.map +1 -0
  229. package/dist/design/layout.d.ts +56 -3
  230. package/dist/design/layout.d.ts.map +1 -1
  231. package/dist/design/layout.js +214 -12
  232. package/dist/design/layout.js.map +1 -1
  233. package/dist/design/logicalEdges.d.ts +7 -0
  234. package/dist/design/logicalEdges.d.ts.map +1 -1
  235. package/dist/design/logicalEdges.js +28 -0
  236. package/dist/design/logicalEdges.js.map +1 -1
  237. package/dist/design/pathBlock.d.ts +69 -0
  238. package/dist/design/pathBlock.d.ts.map +1 -0
  239. package/dist/design/pathBlock.js +286 -0
  240. package/dist/design/pathBlock.js.map +1 -0
  241. package/dist/design/svgPath.d.ts +48 -0
  242. package/dist/design/svgPath.d.ts.map +1 -0
  243. package/dist/design/svgPath.js +402 -0
  244. package/dist/design/svgPath.js.map +1 -0
  245. package/dist/fonts/usage.d.ts +5 -0
  246. package/dist/fonts/usage.d.ts.map +1 -1
  247. package/dist/fonts/usage.js +36 -3
  248. package/dist/fonts/usage.js.map +1 -1
  249. package/dist/html-backend.d.ts.map +1 -1
  250. package/dist/html-backend.js +127 -22
  251. package/dist/html-backend.js.map +1 -1
  252. package/dist/index.d.ts +19 -9
  253. package/dist/index.d.ts.map +1 -1
  254. package/dist/index.js +13 -5
  255. package/dist/index.js.map +1 -1
  256. package/dist/measure/cache.js +1 -1
  257. package/dist/measure/cache.js.map +1 -1
  258. package/dist/measure/inlineIcon.d.ts +34 -0
  259. package/dist/measure/inlineIcon.d.ts.map +1 -0
  260. package/dist/measure/inlineIcon.js +89 -0
  261. package/dist/measure/inlineIcon.js.map +1 -0
  262. package/dist/measure/rich.d.ts +2 -1
  263. package/dist/measure/rich.d.ts.map +1 -1
  264. package/dist/measure/rich.js +6 -0
  265. package/dist/measure/rich.js.map +1 -1
  266. package/dist/migrate/pageDesign.d.ts.map +1 -1
  267. package/dist/migrate/pageDesign.js +4 -2
  268. package/dist/migrate/pageDesign.js.map +1 -1
  269. package/dist/migrate/textToMarkdown.js +2 -0
  270. package/dist/migrate/textToMarkdown.js.map +1 -1
  271. package/dist/parse/blockParser.d.ts.map +1 -1
  272. package/dist/parse/blockParser.js +171 -20
  273. package/dist/parse/blockParser.js.map +1 -1
  274. package/dist/parse/index.d.ts +1 -1
  275. package/dist/parse/index.d.ts.map +1 -1
  276. package/dist/parse/index.js.map +1 -1
  277. package/dist/parse/inlineFormatting.d.ts +11 -3
  278. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  279. package/dist/parse/inlineFormatting.js +63 -5
  280. package/dist/parse/inlineFormatting.js.map +1 -1
  281. package/dist/parse/inlineSnippet.d.ts +2 -1
  282. package/dist/parse/inlineSnippet.d.ts.map +1 -1
  283. package/dist/parse/inlineSnippet.js +3 -2
  284. package/dist/parse/inlineSnippet.js.map +1 -1
  285. package/dist/parse/sourceMapping.d.ts.map +1 -1
  286. package/dist/parse/sourceMapping.js +8 -1
  287. package/dist/parse/sourceMapping.js.map +1 -1
  288. package/dist/parse/types.d.ts +71 -1
  289. package/dist/parse/types.d.ts.map +1 -1
  290. package/dist/pipeline/build.d.ts.map +1 -1
  291. package/dist/pipeline/build.js +23 -11
  292. package/dist/pipeline/build.js.map +1 -1
  293. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  294. package/dist/pipeline/buildMeasurement.js +23 -11
  295. package/dist/pipeline/buildMeasurement.js.map +1 -1
  296. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  297. package/dist/pipeline/calloutLayout.js +142 -32
  298. package/dist/pipeline/calloutLayout.js.map +1 -1
  299. package/dist/pipeline/composedLayout.d.ts +1 -33
  300. package/dist/pipeline/composedLayout.d.ts.map +1 -1
  301. package/dist/pipeline/composedLayout.js +526 -36
  302. package/dist/pipeline/composedLayout.js.map +1 -1
  303. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  304. package/dist/pipeline/contentWarnings.js +46 -1
  305. package/dist/pipeline/contentWarnings.js.map +1 -1
  306. package/dist/pipeline/continuation.d.ts.map +1 -1
  307. package/dist/pipeline/continuation.js +3 -2
  308. package/dist/pipeline/continuation.js.map +1 -1
  309. package/dist/pipeline/headerFooter.d.ts +19 -1
  310. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  311. package/dist/pipeline/headerFooter.js +145 -5
  312. package/dist/pipeline/headerFooter.js.map +1 -1
  313. package/dist/pipeline/partPalette.d.ts.map +1 -1
  314. package/dist/pipeline/partPalette.js +40 -1
  315. package/dist/pipeline/partPalette.js.map +1 -1
  316. package/dist/pipeline/resourceLayout.d.ts +1 -1
  317. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  318. package/dist/pipeline/resourceLayout.js +44 -15
  319. package/dist/pipeline/resourceLayout.js.map +1 -1
  320. package/dist/preflight.d.ts.map +1 -1
  321. package/dist/preflight.js +36 -1
  322. package/dist/preflight.js.map +1 -1
  323. package/dist/types.d.ts +305 -22
  324. package/dist/types.d.ts.map +1 -1
  325. package/dist/vdt.d.ts +384 -11
  326. package/dist/vdt.d.ts.map +1 -1
  327. package/dist/vdt.js.map +1 -1
  328. package/package.json +1 -1
  329. package/dist/composed/round2Types.d.ts +0 -185
  330. package/dist/composed/round2Types.d.ts.map +0 -1
  331. package/dist/composed/round2Types.js +0 -2
  332. package/dist/composed/round2Types.js.map +0 -1
package/dist/vdt.d.ts CHANGED
@@ -205,6 +205,38 @@ export interface VDTChip {
205
205
  * small capitals is still mapped; one cut by direction is not). */
206
206
  sourceOffsets?: number[];
207
207
  }
208
+ /**
209
+ * An inline symbol (`:icon[alt]{…}`, #1058) as painted: carried by a
210
+ * `'swatch'` segment (`swatch.icon`), whose `width` is its advance. The
211
+ * symbol's box is `widthPx` × `heightPx`, standing on the baseline,
212
+ * `insetPx` in from the segment's left edge (a legend's symbol centred in
213
+ * its column). A painter that does not know icons paints a swatch's empty
214
+ * square in its place.
215
+ */
216
+ export interface VDTInlineIcon {
217
+ kind: 'resource' | 'glyph' | 'line';
218
+ /** What it stands for (may be empty). */
219
+ alt: string;
220
+ widthPx: number;
221
+ heightPx: number;
222
+ /** From the segment's left edge to the box's; absent = 0. */
223
+ insetPx?: number;
224
+ /** Resolved colour (hex): a glyph's or a line's ink, a picture's tint.
225
+ * Absent: the text's colour (a picture keeps its own). */
226
+ color?: string;
227
+ /** `kind: 'resource'`: the resource and its picture. A resource that is
228
+ * not known has no `fileId`: an empty outline is painted. */
229
+ resourceId?: string;
230
+ fileId?: string;
231
+ format?: string;
232
+ svg?: boolean;
233
+ /** `kind: 'glyph'`: the characters and the CSS font they are set in. */
234
+ glyph?: string;
235
+ fontString?: string;
236
+ /** `kind: 'line'`: the stroke's pattern and width. */
237
+ line?: 'solid' | 'dashed' | 'dotted';
238
+ strokePx?: number;
239
+ }
208
240
  export interface VDTLineSegment {
209
241
  kind: 'text' | 'space' | 'math' | 'swatch' | 'chip';
210
242
  text: string;
@@ -234,6 +266,7 @@ export interface VDTLineSegment {
234
266
  * on the baseline and outlined in the text colour. */
235
267
  swatch?: {
236
268
  color?: string;
269
+ icon?: VDTInlineIcon;
237
270
  };
238
271
  /** Present when `kind === 'chip'`: an inline chip (`:chip[…]`), painted
239
272
  * as a box with its own text runs. The segment's `text` is the one-char
@@ -1378,6 +1411,18 @@ export interface VDTFigureLabel {
1378
1411
  start: number;
1379
1412
  end: number;
1380
1413
  };
1414
+ /** The inline symbols of its text (`:icon[alt]{…}`, #1058): the index
1415
+ * of each one's placeholder in `text` and what it stands for, so the
1416
+ * outputs that read a label as words read `[alt]` in its place (none
1417
+ * when `alt` is empty). Absent when it has none. */
1418
+ icons?: {
1419
+ at: number;
1420
+ alt: string;
1421
+ }[];
1422
+ /** The label's `leader` attribute (#1057): `true` for `leader` (any
1423
+ * value but `none`), `false` for `leader="none"`. Absent: as its anchor
1424
+ * and style say. */
1425
+ leader?: boolean;
1381
1426
  /** Where the label is painted: the upright box round its text (and
1382
1427
  * background), in the coordinates of the block's own frame (a page's
1383
1428
  * flow, or the frame of a composed page its block stands in), stamped
@@ -1418,12 +1463,23 @@ export interface VDTFigureLabelLayout {
1418
1463
  color: string;
1419
1464
  widthPx: number;
1420
1465
  };
1421
- /** A fill behind the text: `rect` is the box grown by the style's
1422
- * padding. */
1466
+ /** A plate behind the text: `rect` is the box grown by the style's
1467
+ * padding, filled with `color` and outlined by `border` (#1058), its
1468
+ * corners rounded by `radiusPx`. A plate has a fill, a border or both. */
1423
1469
  background?: {
1424
- color: string;
1470
+ color?: string;
1425
1471
  rect: BoundingBox;
1472
+ border?: {
1473
+ color: string;
1474
+ widthPx: number;
1475
+ };
1476
+ radiusPx?: number;
1426
1477
  };
1478
+ /** Set in a `kind: 'legend'` label style (#1058): each line is a row of
1479
+ * the key, the first symbol of each row hung in a column as wide as the
1480
+ * widest (`VDTInlineIcon.insetPx`). Read row by row (a list in the
1481
+ * tagged PDF). */
1482
+ legend?: true;
1427
1483
  /** The scale the label was set at to fit its width (`minScale` at
1428
1484
  * least); absent at 1. */
1429
1485
  scale?: number;
@@ -1446,6 +1502,30 @@ export interface VDTFigureLabelLayout {
1446
1502
  * paints the layout as {@link unmirrorLabelLayout} gives it back and
1447
1503
  * the label reads down its columns as on any page. */
1448
1504
  mirrored?: true;
1505
+ /** The line from the label's box to its anchor's point (#1057): drawn
1506
+ * with the labels, under them, by {@link figureLabelLeaderPath}. */
1507
+ leader?: VDTFigureLabelLeader;
1508
+ }
1509
+ /**
1510
+ * A figure label's leader (#1057, DESIGN §12.4). The point is in the frame
1511
+ * of the label's `x` / `y` (px from the top-left corner of the picture's
1512
+ * body); the line leaves the label's box (its plate, else its lines' box,
1513
+ * `gapPx` out) from the middle of the side that faces the point, so it
1514
+ * never crosses the label's own words, and is laid when painted, so a label
1515
+ * moved off a spread's spine or mirrored keeps its leader on the point.
1516
+ */
1517
+ export interface VDTFigureLabelLeader {
1518
+ x: number;
1519
+ y: number;
1520
+ routing: 'straight' | 'elbow';
1521
+ stroke: VDTPathStroke;
1522
+ /** At the label's end. Absent: none. */
1523
+ startCap?: 'dot' | 'arrow';
1524
+ /** At the point. Absent: none. */
1525
+ endCap?: 'dot' | 'arrow';
1526
+ capSizePx: number;
1527
+ /** Room between the label's box and the line. */
1528
+ gapPx: number;
1449
1529
  }
1450
1530
  /**
1451
1531
  * A paragraph's drop cap (#623, {@link VDTBlock.dropCap}), in page
@@ -2108,9 +2188,23 @@ export interface VDTTextDots {
2108
2188
  /** Rounded-rectangle box style resolved to absolute px / hex values. */
2109
2189
  export interface VDTDesignBoxStyle {
2110
2190
  backgroundColor?: string;
2191
+ /** The border's colour; with {@link borderSides}, the colour of the
2192
+ * first side that has one (read by checks that want one colour). */
2111
2193
  borderColor?: string;
2194
+ /** The border's width; with {@link borderSides}, the widest side. */
2112
2195
  borderWidthPx: number;
2196
+ /** The corners' radius; with {@link borderRadiiPx}, the largest. */
2113
2197
  borderRadiusPx: number;
2198
+ /** One radius per corner, top-left, top-right, bottom-right,
2199
+ * bottom-left (#1059). Absent: `borderRadiusPx` on every corner. */
2200
+ borderRadiiPx?: [number, number, number, number];
2201
+ /** The border per side (#1059), `null` for a side without one. Absent:
2202
+ * `borderColor` / `borderWidthPx` on every side. The painters read it
2203
+ * over those two. */
2204
+ borderSides?: Record<'top' | 'right' | 'bottom' | 'left', {
2205
+ color: string;
2206
+ widthPx: number;
2207
+ } | null>;
2114
2208
  }
2115
2209
  /** Text block rendered inside a design slot (header / footer / heading). */
2116
2210
  /** Where a design block comes from in the configuration (#857): the
@@ -2281,7 +2375,87 @@ export interface VDTDesignImageBlock extends VDTDesignBlockOrigin {
2281
2375
  * browser. Wins over `diagramStyle.singleInk`. */
2282
2376
  tint?: string;
2283
2377
  }
2284
- export type VDTDesignBlock = VDTDesignTextBlock | VDTDesignRuleBlock | VDTDesignBoxBlock | VDTDesignImageBlock;
2378
+ /** One command of a {@link VDTDesignPathBlock}'s outline, in absolute page
2379
+ * px (y down): move, line, cubic (`C`, two control points) and quadratic
2380
+ * (`Q`, one) Bézier curves, and close. */
2381
+ export type VDTPathCommand = {
2382
+ op: 'M' | 'L';
2383
+ x: number;
2384
+ y: number;
2385
+ } | {
2386
+ op: 'C';
2387
+ x1: number;
2388
+ y1: number;
2389
+ x2: number;
2390
+ y2: number;
2391
+ x: number;
2392
+ y: number;
2393
+ } | {
2394
+ op: 'Q';
2395
+ x1: number;
2396
+ y1: number;
2397
+ x: number;
2398
+ y: number;
2399
+ } | {
2400
+ op: 'Z';
2401
+ };
2402
+ /** How a {@link VDTDesignPathBlock}'s outline is stroked: colour (`#rrggbb`
2403
+ * or `#rrggbbaa`), width in px, dash pattern in px (on, off, …), line
2404
+ * caps and joins. Absent cap: `'butt'`; absent join: `'miter'`. */
2405
+ export interface VDTPathStroke {
2406
+ color: string;
2407
+ widthPx: number;
2408
+ dash?: number[];
2409
+ cap?: 'butt' | 'round' | 'square';
2410
+ join?: 'miter' | 'round' | 'bevel';
2411
+ }
2412
+ /** A mark at a point of a path (the end of a connector): a filled dot
2413
+ * `sizePx` across centred on the point, or a filled arrowhead whose tip is
2414
+ * the point, `sizePx` long, pointing along `angle` (see
2415
+ * `pathMarkerOutline`). */
2416
+ export interface VDTPathMarker {
2417
+ kind: 'dot' | 'arrow';
2418
+ x: number;
2419
+ y: number;
2420
+ /** Radians, the direction the line arrives in (arrows point along it). */
2421
+ angle: number;
2422
+ sizePx: number;
2423
+ color: string;
2424
+ }
2425
+ /** A vector shape a design draws (DESIGN §12.1, #1055): lines, curves and
2426
+ * closed outlines, filled and/or stroked, with dots or arrowheads at
2427
+ * points of it. Connectors, path elements and the shapes a rounded
2428
+ * rectangle cannot draw paint through it. Coordinates are absolute page
2429
+ * px like every other design block's; `bbox` holds the whole ink (stroke
2430
+ * and markers included), for hit tests and clips. Decoration, never
2431
+ * content: a tagged PDF marks it a Layout artifact, the HTML hides it from
2432
+ * assistive technology, the contrast check does not read it. */
2433
+ export interface VDTDesignPathBlock extends VDTDesignBlockOrigin {
2434
+ kind: 'path';
2435
+ bbox: BoundingBox;
2436
+ subpaths: VDTPathCommand[][];
2437
+ /** Fill colour; absent = no fill. */
2438
+ fill?: string;
2439
+ /** Absent: `'nonzero'`. */
2440
+ fillRule?: 'nonzero' | 'evenodd';
2441
+ /** Absent = no stroke. */
2442
+ stroke?: VDTPathStroke;
2443
+ markers?: VDTPathMarker[];
2444
+ /** The part of a box's shape the path paints (#1059: a card joined to
2445
+ * its tab): `'fill'` its background, which the contrast check reads as
2446
+ * the ground of the text over it; `'border'` its border, drawn as a
2447
+ * fill {@link borderWidthPx} wide, which part palettes recolour as the
2448
+ * box's border and preflight checks as a rule. Absent on other paths. */
2449
+ boxPart?: 'fill' | 'border';
2450
+ /** The widest side of a `boxPart: 'border'` path. */
2451
+ borderWidthPx?: number;
2452
+ /** A connector painted over the frames (#1076, `DesignConnectorElement.over`):
2453
+ * the block stays in its decoration slot, but the backends paint it
2454
+ * after every frame of the page (`composedPaintOrder`'s `'over'` item),
2455
+ * not with the slot's other blocks. Absent: painted with the slot. */
2456
+ over?: true;
2457
+ }
2458
+ export type VDTDesignBlock = VDTDesignTextBlock | VDTDesignRuleBlock | VDTDesignBoxBlock | VDTDesignImageBlock | VDTDesignPathBlock;
2285
2459
  export interface VDTDesignSlot {
2286
2460
  bbox: BoundingBox;
2287
2461
  blocks: VDTDesignBlock[];
@@ -2453,8 +2627,11 @@ export interface VDTComicBalloon {
2453
2627
  /** What happened to a frame while its page was composed (DESIGN §5.5),
2454
2628
  * against the box its template declares (`VDTFrame.declaredRect`):
2455
2629
  * `grew` / `resized` (smaller) and `moved` from groups and anchors (#856),
2456
- * `overflow` (#855); the reflow ladder (#858) adds the rest. */
2457
- export type ReflowEventKind = 'grew' | 'moved' | 'resized' | 'imageScaled' | 'textScaled' | 'continued' | 'overflow';
2630
+ * `overflow` (#855); the reflow ladder (#858) adds the rest.
2631
+ * `connectorDropped` (#1056, information): a connector of the decoration
2632
+ * (`cause`, its id) left out its end on `frame`, a box the page does not
2633
+ * show (collapsed, empty and optional, or missing). */
2634
+ export type ReflowEventKind = 'grew' | 'moved' | 'resized' | 'imageScaled' | 'textScaled' | 'continued' | 'overflow' | 'covered' | 'outside' | 'connectorDropped';
2458
2635
  export interface ReflowEvent {
2459
2636
  /** The frame's name in its template. */
2460
2637
  frame: string;
@@ -2480,6 +2657,13 @@ export interface ReflowEvent {
2480
2657
  * position in the book. `toPage` and `toFrame` are there once the host
2481
2658
  * has both chapters. */
2482
2659
  toChapter?: number;
2660
+ /** `covered` (#1053): how much of the frame's ink lies under `cause`, the
2661
+ * frame painted over it, in mm². */
2662
+ areaMm2?: number;
2663
+ /** `outside` (#1053): what the frame runs past, `toMm` being by how much
2664
+ * (its largest side): the trim, the bleed, or the frame or group it is
2665
+ * anchored inside (`'#name'`). */
2666
+ past?: 'trim' | 'bleed' | `#${string}`;
2483
2667
  }
2484
2668
  /** One frame of a composed page, in sheet coordinates. Its box and its
2485
2669
  * content are ordinary callout blocks in `page.floats` (and
@@ -2494,8 +2678,15 @@ export interface VDTFrame {
2494
2678
  * the page before is named by the frame of the fence's own page that
2495
2679
  * first sent it on (`cp0:dinero~1`). */
2496
2680
  id: string;
2497
- /** The frame's name in its template (the slot it receives). */
2681
+ /** The frame's name in its template (the slot it receives); for an
2682
+ * instance of a frame a grid repeats (#1061), `<frame>[n]`. */
2498
2683
  name: string;
2684
+ /** An instance of a frame a grid repeats (#1061): the template's frame
2685
+ * (`configPath` is its entry) and the item, 1-based. */
2686
+ repeat?: {
2687
+ frame: string;
2688
+ item: number;
2689
+ };
2499
2690
  /** The frame's box, label tab included, before any turn. */
2500
2691
  rect: {
2501
2692
  x: number;
@@ -2664,12 +2855,30 @@ export interface VDTComposedPage {
2664
2855
  /** In template order. */
2665
2856
  frames: VDTFrame[];
2666
2857
  /** The template's decoration, laid with the frames' final boxes
2667
- * (`buildHeadersAndFooters`); painted at layer 0. */
2858
+ * (`buildHeadersAndFooters`); painted at layer 0, its path blocks marked
2859
+ * `over` after every frame (#1076). */
2668
2860
  decoration?: VDTDesignSlot;
2669
2861
  /** What the layout changed (DESIGN §5.5). */
2670
2862
  log: ReflowEvent[];
2671
2863
  /** JSON pointer of the template (`/pageTemplates/3`). */
2672
2864
  configPath: string;
2865
+ /** The modules the page lays in its modules group (#1062), in order:
2866
+ * the instance name its frames are scoped by (`<name>.<frame>`), the
2867
+ * module template and its pointer, and the module's box (page px, in
2868
+ * the frame the frames are in) when it was laid here (one that went on
2869
+ * whole has none). `resolvePageTemplate(config, template, { modules })`
2870
+ * gives the template the page was laid with. */
2871
+ modules?: {
2872
+ name: string;
2873
+ template: string;
2874
+ configPath: string;
2875
+ rect?: {
2876
+ x: number;
2877
+ y: number;
2878
+ width: number;
2879
+ height: number;
2880
+ };
2881
+ }[];
2673
2882
  /** The page fence, opening line to closing fence (absolute offsets). */
2674
2883
  sourceStart: number;
2675
2884
  sourceEnd: number;
@@ -2910,8 +3119,11 @@ export interface ConfigWarning {
2910
3119
  * lettering's `writingMode`, `textTransform`, `dropFinalStop` and
2911
3120
  * `joinSameSpeaker`, a balloon style's `shape`, `tail`, `target`,
2912
3121
  * `position`, `align` and `textTransform` — the value it resolved to:
2913
- * the default, or that of the style it is laid over), and `suggestion`
2914
- * the word it is closest to, when one is close.
3122
+ * the default, or that of the style it is laid over; a box style's
3123
+ * `label.icon.kind`, `placement` and `scale`, #1054 — the kind, `beside`,
3124
+ * `1`), and `suggestion` the word it is closest to, when one is close.
3125
+ * A key a box style's `label.icon` does not have is an
3126
+ * `unknownConfigKey` too.
2915
3127
  * `unknownNumerals`: a `numerals` value that is not `'auto'`,
2916
3128
  * `'latn'`, `'arab'` or `'arabext'`; the digits follow the document
2917
3129
  * language, and `used` is the digit system that gives.
@@ -3046,6 +3258,53 @@ export type FrameOverflowProposal = {
3046
3258
  sourceStart?: number;
3047
3259
  sourceEnd?: number;
3048
3260
  };
3261
+ /** A change that would uncover a frame's ink (#1053, `frameCovered`):
3262
+ * data, as {@link FrameOverflowProposal}. `layer` paints the covering
3263
+ * frame (`coveredBy`) under the covered one; `exclude` makes the covering
3264
+ * frame push the covered frame's text round it; `move` is the smallest
3265
+ * shift of the covering frame along one axis that clears what it covers,
3266
+ * in mm (data only: no config path says where the frame is). */
3267
+ export type FrameCoverProposal = {
3268
+ kind: 'layer';
3269
+ path: string;
3270
+ value: number;
3271
+ } | {
3272
+ kind: 'exclude';
3273
+ path: string;
3274
+ value: 'push';
3275
+ } | {
3276
+ kind: 'move';
3277
+ frame: string;
3278
+ dxMm: number;
3279
+ dyMm: number;
3280
+ };
3281
+ /** A change that would bring a frame back inside what it runs past
3282
+ * (#1053, `frameOutsideArea`): `maxHeight` of the frame itself (the room
3283
+ * it has there, in whole millimetres; not for a frame its placement holds
3284
+ * by its foot), `minHeight` of the frame it is anchored inside (`frame`),
3285
+ * for a frame of text held to a smaller height `overflow.continueIn:
3286
+ * 'next-page'`, so what no longer fits goes on instead of shrinking, and
3287
+ * `move`, the shift that brings it in when it runs past one side of an
3288
+ * axis (data only). */
3289
+ export type FrameOutsideProposal = {
3290
+ kind: 'maxHeight';
3291
+ path: string;
3292
+ value: Dimension;
3293
+ } | {
3294
+ kind: 'minHeight';
3295
+ path: string;
3296
+ value: Dimension;
3297
+ frame: string;
3298
+ } | {
3299
+ kind: 'continueNextPage';
3300
+ path: string;
3301
+ value: 'next-page';
3302
+ } | {
3303
+ kind: 'move';
3304
+ frame: string;
3305
+ dxMm: number;
3306
+ dyMm: number;
3307
+ };
3049
3308
  /** The kinds of {@link ConfigWarning} a page template gives (#853). */
3050
3309
  export type PageTemplateWarningKind = 'templateDuplicate' | 'templateExtendsCycle' | 'templateExtendsUnknown' | 'frameDuplicate' | 'frameStyleUnknown' | 'frameAnchorUnknown' | 'frameMinMax' | 'groupFrameUnknown' | 'groupFrameTwice' | 'frameChainLoop' | 'overflowTargetUnknown' | 'labelStyleUnknown';
3051
3310
  /** Where a content warning points: the source range of the construct in
@@ -3166,6 +3425,62 @@ export type ContentWarning = ContentWarningBase & (
3166
3425
  frame: string;
3167
3426
  fenceIndex: number;
3168
3427
  }
3428
+ /** A grid that repeats a frame set (#1061) holds `max` items, and the
3429
+ * page gives it more: item `item` (and every one after it) goes to the
3430
+ * flow frame (`flowFrame`, when the template has one), or after the
3431
+ * page. Points at the item's `slot="…"`. */
3432
+ | {
3433
+ kind: 'repeatOverflow';
3434
+ template: string;
3435
+ group: string;
3436
+ frame: string;
3437
+ item: number;
3438
+ max: number;
3439
+ flowFrame?: string;
3440
+ fenceIndex: number;
3441
+ }
3442
+ /** A `:::module{template="…"}` of a composed page (#1062) that the page
3443
+ * does not lay: `module` names no template (`'unknown'`), a template
3444
+ * whose `role` is not `'module'` (`'notModule'`), or the page's template
3445
+ * has no modules group (`'noGroup'`). Its content goes to the flow
3446
+ * frame. Points at its `template="…"`. */
3447
+ | {
3448
+ kind: 'moduleUnknown';
3449
+ template: string;
3450
+ module: string;
3451
+ name: string;
3452
+ reason: 'unknown' | 'notModule' | 'noGroup';
3453
+ fenceIndex: number;
3454
+ }
3455
+ /** A page fence names a module template (#1062): a module is laid in a
3456
+ * page's modules group, never as a page. The fence's content is set in
3457
+ * the flow. Points at its `template="…"`. */
3458
+ | {
3459
+ kind: 'moduleAsPage';
3460
+ template: string;
3461
+ fenceIndex: number;
3462
+ }
3463
+ /** A `:::module` inside another module (#1062): not supported; its
3464
+ * blocks are the outer module's. Points at its `template="…"`. */
3465
+ | {
3466
+ kind: 'moduleNested';
3467
+ template: string;
3468
+ module: string;
3469
+ fenceIndex: number;
3470
+ }
3471
+ /** A module's `name="…"` (#1062) that another module of the page took
3472
+ * (`'taken'`), or that holds a space, `.`, `#`, `[` or `]`
3473
+ * (`'invalid'`): the module is named `used` (`<template>[n]`). Its
3474
+ * slots are addressed under that name. */
3475
+ | {
3476
+ kind: 'moduleNameRejected';
3477
+ template: string;
3478
+ module: string;
3479
+ name: string;
3480
+ used: string;
3481
+ reason: 'taken' | 'invalid';
3482
+ fenceIndex: number;
3483
+ }
3169
3484
  /** A three-colon `:::page` carries `template=`: a composed page needs
3170
3485
  * four colons (`::::page{template=…}` … `::::`). It is read as a comic
3171
3486
  * page, as before. */
@@ -3199,6 +3514,58 @@ export type ContentWarning = ContentWarningBase & (
3199
3514
  * out from the shortfall (each tried on the page where it can be). */
3200
3515
  proposals: FrameOverflowProposal[];
3201
3516
  }
3517
+ /** Ink of a frame lies under another frame painted over it (#1053): a
3518
+ * later `layer`, or the same layer later in template order. A frame
3519
+ * covers where it is opaque: its fill (the callout style's background,
3520
+ * `look.background`, a label tab, a stripe), its pictures and its text;
3521
+ * a frame with no fill covers nothing between its pictures and lines. What
3522
+ * is covered: the frame's lines (their boxes), its tab and title, its
3523
+ * pictures (by a fill or a picture: words over a picture hide a hairline
3524
+ * of it). `text` is the first words covered (40 characters), `picture`
3525
+ * the resource id of the first picture covered, `overlapMm2` the area
3526
+ * covered. One warning per pair of frames; `overlap: 'allow'` on either
3527
+ * frame leaves the pair out. The source range is the covered frame's
3528
+ * content. */
3529
+ | {
3530
+ kind: 'frameCovered';
3531
+ template: string;
3532
+ frame: string;
3533
+ coveredBy: string;
3534
+ fenceIndex: number;
3535
+ configPath: string;
3536
+ /** The covering frame's config path. */
3537
+ coveredByPath: string;
3538
+ overlapMm2: number;
3539
+ text?: string;
3540
+ picture?: string;
3541
+ locale?: string;
3542
+ proposals: FrameCoverProposal[];
3543
+ }
3544
+ /** A frame's ink runs past what holds it (#1053): its text past the trim,
3545
+ * its fill or pictures past the bleed (`past: 'trim' | 'bleed'`), or
3546
+ * any of it past the frame or group it is anchored inside (a nine-point
3547
+ * anchor on `'#name'` whose point lies in that box: `past: 'frame' |
3548
+ * 'group'`, `target` its name). What runs past is cut at the trim, and
3549
+ * reads as escaping its card. `excessMm` is the largest overrun, `sides`
3550
+ * each side's. `overlap: 'allow'` on the frame leaves it out. */
3551
+ | {
3552
+ kind: 'frameOutsideArea';
3553
+ template: string;
3554
+ frame: string;
3555
+ fenceIndex: number;
3556
+ configPath: string;
3557
+ past: 'trim' | 'bleed' | 'frame' | 'group';
3558
+ target?: string;
3559
+ excessMm: number;
3560
+ sides: {
3561
+ top?: number;
3562
+ right?: number;
3563
+ bottom?: number;
3564
+ left?: number;
3565
+ };
3566
+ locale?: string;
3567
+ proposals: FrameOutsideProposal[];
3568
+ }
3202
3569
  /** A frame's content went on to other pages (#859) as many times as a
3203
3570
  * composed page may add (`pages`, 16) and still does not fit: what is
3204
3571
  * left is cut at the foot of the frame on the last page added
@@ -3245,7 +3612,11 @@ export type ContentWarning = ContentWarningBase & (
3245
3612
  /** A `::label[…]{at="…"}` of a `:::figure` (#860) names an anchor its
3246
3613
  * resource does not have: the label is not drawn (the reflowable
3247
3614
  * output still lists it). `known` lists the resource's anchor ids. The
3248
- * source range is the label's text. */
3615
+ * source range is the label's text. With `connector` (#1057), a
3616
+ * connector of a composed page's decoration ends at that anchor of the
3617
+ * picture of `frame`, which lacks it: that end is left out; there is no
3618
+ * source range, `resourceId` is the frame's first picture (empty when
3619
+ * it holds none). */
3249
3620
  | {
3250
3621
  kind: 'labelAnchorUnknown';
3251
3622
  resourceId: string;
@@ -3253,6 +3624,8 @@ export type ContentWarning = ContentWarningBase & (
3253
3624
  known: string[];
3254
3625
  locale?: string;
3255
3626
  labelId?: string;
3627
+ connector?: string;
3628
+ frame?: string;
3256
3629
  }
3257
3630
  /** An anchor of a figure's resource names a label `style` but no
3258
3631
  * `::label` of the figure stands at it in this locale (#860): a note,