postext 1.34.0 → 1.35.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 (245) hide show
  1. package/dist/__tests__/bundle.test.js +33 -1
  2. package/dist/__tests__/bundle.test.js.map +1 -1
  3. package/dist/__tests__/codeBlocks.test.js +88 -0
  4. package/dist/__tests__/codeBlocks.test.js.map +1 -1
  5. package/dist/__tests__/composed/fixtures/page8.d.ts +20 -0
  6. package/dist/__tests__/composed/fixtures/page8.d.ts.map +1 -0
  7. package/dist/__tests__/composed/fixtures/page8.js +162 -0
  8. package/dist/__tests__/composed/fixtures/page8.js.map +1 -0
  9. package/dist/__tests__/composed/fixtures/timeline.d.ts +26 -0
  10. package/dist/__tests__/composed/fixtures/timeline.d.ts.map +1 -0
  11. package/dist/__tests__/composed/fixtures/timeline.js +153 -0
  12. package/dist/__tests__/composed/fixtures/timeline.js.map +1 -0
  13. package/dist/__tests__/composed/groups.test.d.ts +2 -0
  14. package/dist/__tests__/composed/groups.test.d.ts.map +1 -0
  15. package/dist/__tests__/composed/groups.test.js +361 -0
  16. package/dist/__tests__/composed/groups.test.js.map +1 -0
  17. package/dist/__tests__/composed/layout.test.d.ts +2 -0
  18. package/dist/__tests__/composed/layout.test.d.ts.map +1 -0
  19. package/dist/__tests__/composed/layout.test.js +387 -0
  20. package/dist/__tests__/composed/layout.test.js.map +1 -0
  21. package/dist/__tests__/composed/outsidePrint.test.d.ts +2 -0
  22. package/dist/__tests__/composed/outsidePrint.test.d.ts.map +1 -0
  23. package/dist/__tests__/composed/outsidePrint.test.js +116 -0
  24. package/dist/__tests__/composed/outsidePrint.test.js.map +1 -0
  25. package/dist/__tests__/composed/slotChecks.test.js +6 -3
  26. package/dist/__tests__/composed/slotChecks.test.js.map +1 -1
  27. package/dist/__tests__/composed/spread.test.d.ts +2 -0
  28. package/dist/__tests__/composed/spread.test.d.ts.map +1 -0
  29. package/dist/__tests__/composed/spread.test.js +475 -0
  30. package/dist/__tests__/composed/spread.test.js.map +1 -0
  31. package/dist/__tests__/composedPaint.test.d.ts +2 -0
  32. package/dist/__tests__/composedPaint.test.d.ts.map +1 -0
  33. package/dist/__tests__/composedPaint.test.js +199 -0
  34. package/dist/__tests__/composedPaint.test.js.map +1 -0
  35. package/dist/__tests__/defaults/stripRoundTrip.test.js +3 -2
  36. package/dist/__tests__/defaults/stripRoundTrip.test.js.map +1 -1
  37. package/dist/__tests__/exports.test.js +25 -0
  38. package/dist/__tests__/exports.test.js.map +1 -1
  39. package/dist/__tests__/highlightMarks.test.d.ts +2 -0
  40. package/dist/__tests__/highlightMarks.test.d.ts.map +1 -0
  41. package/dist/__tests__/highlightMarks.test.js +169 -0
  42. package/dist/__tests__/highlightMarks.test.js.map +1 -0
  43. package/dist/__tests__/tocPartLeader.test.d.ts +2 -0
  44. package/dist/__tests__/tocPartLeader.test.d.ts.map +1 -0
  45. package/dist/__tests__/tocPartLeader.test.js +133 -0
  46. package/dist/__tests__/tocPartLeader.test.js.map +1 -0
  47. package/dist/bundle/api.d.ts +8 -0
  48. package/dist/bundle/api.d.ts.map +1 -1
  49. package/dist/bundle/api.js +6 -3
  50. package/dist/bundle/api.js.map +1 -1
  51. package/dist/bundle/codec.d.ts +5 -0
  52. package/dist/bundle/codec.d.ts.map +1 -1
  53. package/dist/bundle/codec.js +4 -0
  54. package/dist/bundle/codec.js.map +1 -1
  55. package/dist/bundle/index.d.ts +2 -2
  56. package/dist/bundle/index.d.ts.map +1 -1
  57. package/dist/bundle/index.js +1 -1
  58. package/dist/bundle/index.js.map +1 -1
  59. package/dist/bundle/manifest.d.ts +14 -0
  60. package/dist/bundle/manifest.d.ts.map +1 -1
  61. package/dist/bundle/manifest.js +13 -0
  62. package/dist/bundle/manifest.js.map +1 -1
  63. package/dist/bundle/types.d.ts +7 -0
  64. package/dist/bundle/types.d.ts.map +1 -1
  65. package/dist/canvas-backend/annotations.d.ts +6 -0
  66. package/dist/canvas-backend/annotations.d.ts.map +1 -1
  67. package/dist/canvas-backend/annotations.js +39 -0
  68. package/dist/canvas-backend/annotations.js.map +1 -1
  69. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  70. package/dist/canvas-backend/blockRender.js +6 -1
  71. package/dist/canvas-backend/blockRender.js.map +1 -1
  72. package/dist/canvas-backend/composed.d.ts +19 -0
  73. package/dist/canvas-backend/composed.d.ts.map +1 -0
  74. package/dist/canvas-backend/composed.js +68 -0
  75. package/dist/canvas-backend/composed.js.map +1 -0
  76. package/dist/canvas-backend/index.d.ts.map +1 -1
  77. package/dist/canvas-backend/index.js +15 -1
  78. package/dist/canvas-backend/index.js.map +1 -1
  79. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  80. package/dist/canvas-backend/renderResourceBlock.js +4 -1
  81. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  82. package/dist/composed/geometry.d.ts +108 -0
  83. package/dist/composed/geometry.d.ts.map +1 -0
  84. package/dist/composed/geometry.js +241 -0
  85. package/dist/composed/geometry.js.map +1 -0
  86. package/dist/composed/groups.d.ts +95 -0
  87. package/dist/composed/groups.d.ts.map +1 -0
  88. package/dist/composed/groups.js +359 -0
  89. package/dist/composed/groups.js.map +1 -0
  90. package/dist/composed/labelText.d.ts +15 -0
  91. package/dist/composed/labelText.d.ts.map +1 -0
  92. package/dist/composed/labelText.js +16 -0
  93. package/dist/composed/labelText.js.map +1 -0
  94. package/dist/composed/paint.d.ts +64 -0
  95. package/dist/composed/paint.d.ts.map +1 -0
  96. package/dist/composed/paint.js +128 -0
  97. package/dist/composed/paint.js.map +1 -0
  98. package/dist/composed/reflowLog.d.ts +39 -0
  99. package/dist/composed/reflowLog.d.ts.map +1 -0
  100. package/dist/composed/reflowLog.js +123 -0
  101. package/dist/composed/reflowLog.js.map +1 -0
  102. package/dist/composed/slotChecks.d.ts +7 -2
  103. package/dist/composed/slotChecks.d.ts.map +1 -1
  104. package/dist/composed/slotChecks.js +21 -0
  105. package/dist/composed/slotChecks.js.map +1 -1
  106. package/dist/composed/spread.d.ts +106 -0
  107. package/dist/composed/spread.d.ts.map +1 -0
  108. package/dist/composed/spread.js +178 -0
  109. package/dist/composed/spread.js.map +1 -0
  110. package/dist/composed/types.d.ts +1 -44
  111. package/dist/composed/types.d.ts.map +1 -1
  112. package/dist/composed/wrap.d.ts +52 -0
  113. package/dist/composed/wrap.d.ts.map +1 -0
  114. package/dist/composed/wrap.js +234 -0
  115. package/dist/composed/wrap.js.map +1 -0
  116. package/dist/configWarnings.js +1 -1
  117. package/dist/configWarnings.js.map +1 -1
  118. package/dist/defaults/codeStyle.d.ts.map +1 -1
  119. package/dist/defaults/codeStyle.js +1 -0
  120. package/dist/defaults/codeStyle.js.map +1 -1
  121. package/dist/defaults/headerFooter.d.ts.map +1 -1
  122. package/dist/defaults/headerFooter.js +4 -0
  123. package/dist/defaults/headerFooter.js.map +1 -1
  124. package/dist/defaults/index.d.ts +1 -0
  125. package/dist/defaults/index.d.ts.map +1 -1
  126. package/dist/defaults/index.js +9 -0
  127. package/dist/defaults/index.js.map +1 -1
  128. package/dist/defaults/markStyles.d.ts +23 -0
  129. package/dist/defaults/markStyles.d.ts.map +1 -0
  130. package/dist/defaults/markStyles.js +80 -0
  131. package/dist/defaults/markStyles.js.map +1 -0
  132. package/dist/defaults/shared.d.ts.map +1 -1
  133. package/dist/defaults/shared.js +12 -0
  134. package/dist/defaults/shared.js.map +1 -1
  135. package/dist/design/bidiText.d.ts +4 -1
  136. package/dist/design/bidiText.d.ts.map +1 -1
  137. package/dist/design/bidiText.js +5 -2
  138. package/dist/design/bidiText.js.map +1 -1
  139. package/dist/design/layout.d.ts +19 -0
  140. package/dist/design/layout.d.ts.map +1 -1
  141. package/dist/design/layout.js +110 -8
  142. package/dist/design/layout.js.map +1 -1
  143. package/dist/design/placeholders.d.ts +28 -2
  144. package/dist/design/placeholders.d.ts.map +1 -1
  145. package/dist/design/placeholders.js +24 -1
  146. package/dist/design/placeholders.js.map +1 -1
  147. package/dist/design/richText.d.ts +2 -0
  148. package/dist/design/richText.d.ts.map +1 -1
  149. package/dist/design/richText.js.map +1 -1
  150. package/dist/highlightMarks.d.ts +33 -0
  151. package/dist/highlightMarks.d.ts.map +1 -0
  152. package/dist/highlightMarks.js +209 -0
  153. package/dist/highlightMarks.js.map +1 -0
  154. package/dist/html-backend.d.ts.map +1 -1
  155. package/dist/html-backend.js +96 -9
  156. package/dist/html-backend.js.map +1 -1
  157. package/dist/htmlAnnotations.d.ts +5 -0
  158. package/dist/htmlAnnotations.d.ts.map +1 -1
  159. package/dist/htmlAnnotations.js +16 -0
  160. package/dist/htmlAnnotations.js.map +1 -1
  161. package/dist/index.d.ts +13 -4
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +12 -2
  164. package/dist/index.js.map +1 -1
  165. package/dist/knuthPlass/richAdapter.d.ts +3 -0
  166. package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
  167. package/dist/knuthPlass/richAdapter.js +3 -2
  168. package/dist/knuthPlass/richAdapter.js.map +1 -1
  169. package/dist/measure/cache.js +3 -3
  170. package/dist/measure/cache.js.map +1 -1
  171. package/dist/measure/chipEdges.d.ts +13 -1
  172. package/dist/measure/chipEdges.d.ts.map +1 -1
  173. package/dist/measure/chipEdges.js +59 -1
  174. package/dist/measure/chipEdges.js.map +1 -1
  175. package/dist/measure/links.d.ts.map +1 -1
  176. package/dist/measure/links.js +78 -5
  177. package/dist/measure/links.js.map +1 -1
  178. package/dist/measure/rich.d.ts +3 -0
  179. package/dist/measure/rich.d.ts.map +1 -1
  180. package/dist/measure/rich.js +19 -4
  181. package/dist/measure/rich.js.map +1 -1
  182. package/dist/parse/inlineFormatting.d.ts +14 -0
  183. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  184. package/dist/parse/inlineFormatting.js +104 -5
  185. package/dist/parse/inlineFormatting.js.map +1 -1
  186. package/dist/parse/links.js +1 -1
  187. package/dist/parse/links.js.map +1 -1
  188. package/dist/parse/softBreaks.js +1 -1
  189. package/dist/parse/softBreaks.js.map +1 -1
  190. package/dist/parse/sourceMapping.d.ts.map +1 -1
  191. package/dist/parse/sourceMapping.js +19 -3
  192. package/dist/parse/sourceMapping.js.map +1 -1
  193. package/dist/parse/types.d.ts +24 -0
  194. package/dist/parse/types.d.ts.map +1 -1
  195. package/dist/pipeline/build.d.ts.map +1 -1
  196. package/dist/pipeline/build.js +213 -301
  197. package/dist/pipeline/build.js.map +1 -1
  198. package/dist/pipeline/buildMeasurement.d.ts +4 -1
  199. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  200. package/dist/pipeline/buildMeasurement.js +19 -1
  201. package/dist/pipeline/buildMeasurement.js.map +1 -1
  202. package/dist/pipeline/calloutLayout.d.ts +36 -1
  203. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  204. package/dist/pipeline/calloutLayout.js +93 -3
  205. package/dist/pipeline/calloutLayout.js.map +1 -1
  206. package/dist/pipeline/codeInline.d.ts +10 -1
  207. package/dist/pipeline/codeInline.d.ts.map +1 -1
  208. package/dist/pipeline/codeInline.js +96 -15
  209. package/dist/pipeline/codeInline.js.map +1 -1
  210. package/dist/pipeline/composedLayout.d.ts +93 -0
  211. package/dist/pipeline/composedLayout.d.ts.map +1 -0
  212. package/dist/pipeline/composedLayout.js +520 -0
  213. package/dist/pipeline/composedLayout.js.map +1 -0
  214. package/dist/pipeline/config.d.ts.map +1 -1
  215. package/dist/pipeline/config.js +2 -1
  216. package/dist/pipeline/config.js.map +1 -1
  217. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  218. package/dist/pipeline/contentWarnings.js +39 -2
  219. package/dist/pipeline/contentWarnings.js.map +1 -1
  220. package/dist/pipeline/floatSlots.js +1 -1
  221. package/dist/pipeline/floatSlots.js.map +1 -1
  222. package/dist/pipeline/frameLayout.d.ts +120 -0
  223. package/dist/pipeline/frameLayout.d.ts.map +1 -0
  224. package/dist/pipeline/frameLayout.js +279 -0
  225. package/dist/pipeline/frameLayout.js.map +1 -0
  226. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  227. package/dist/pipeline/headerFooter.js +96 -3
  228. package/dist/pipeline/headerFooter.js.map +1 -1
  229. package/dist/pipeline/pageRoles.d.ts +1 -0
  230. package/dist/pipeline/pageRoles.d.ts.map +1 -1
  231. package/dist/pipeline/pageRoles.js +3 -0
  232. package/dist/pipeline/pageRoles.js.map +1 -1
  233. package/dist/pipeline/placement.js +1 -1
  234. package/dist/pipeline/placement.js.map +1 -1
  235. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  236. package/dist/pipeline/resourceLayout.js +5 -3
  237. package/dist/pipeline/resourceLayout.js.map +1 -1
  238. package/dist/pipeline/tabs.js +1 -1
  239. package/dist/pipeline/tabs.js.map +1 -1
  240. package/dist/types.d.ts +89 -3
  241. package/dist/types.d.ts.map +1 -1
  242. package/dist/vdt.d.ts +247 -1
  243. package/dist/vdt.d.ts.map +1 -1
  244. package/dist/vdt.js.map +1 -1
  245. package/package.json +1 -1
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import type { ContentBlock } from '../parse';
6
6
  import type { Resource, ResourceType } from '../types';
7
- import type { ResolvedConfig, VDTBlock, ResolvedResourceBlock } from '../vdt';
7
+ import type { ResolvedConfig, VDTBlock, ResolvedResourceBlock, VDTFigureLabel } from '../vdt';
8
8
  import type { BlockStyle } from './styles';
9
9
  import type { MeasuredBlock, MeasurementCache } from '../measure';
10
10
  import { measureBlock } from '../measure';
@@ -66,5 +66,8 @@ export interface MeasurementResult {
66
66
  /** Height of the caption band set beside the body (`captionAside`). */
67
67
  asideHeight?: number;
68
68
  }
69
+ /** The labels of a `:::figure` block (#854) as the VDT carries them
70
+ * (`ResolvedResourceBlock.labels`); undefined when it has none. */
71
+ export declare function figureLabels(block: Pick<ContentBlock, 'figure'>): VDTFigureLabel[] | undefined;
69
72
  export declare function runMeasurement(input: MeasurementInput): MeasurementResult;
70
73
  //# sourceMappingURL=buildMeasurement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildMeasurement.d.ts","sourceRoot":"","sources":["../../src/pipeline/buildMeasurement.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,YAAY,EAAgE,MAAM,YAAY,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAuB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yEAAyE;IACzE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzD,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;mDAC+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC;+CAC2C;IAC3C,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE;oDACgD;IAChD,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,iBAAiB,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAClD,4EAA4E;IAC5E,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA2FzE"}
1
+ {"version":3,"file":"buildMeasurement.d.ts","sourceRoot":"","sources":["../../src/pipeline/buildMeasurement.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC9F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,YAAY,EAAgE,MAAM,YAAY,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAuB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yEAAyE;IACzE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzD,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;mDAC+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC;+CAC2C;IAC3C,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE;oDACgD;IAChD,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,iBAAiB,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAClD,4EAA4E;IAC5E,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;oEACoE;AACpE,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,cAAc,EAAE,GAAG,SAAS,CAU9F;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA+FzE"}
@@ -5,6 +5,20 @@
5
5
  import { measureBlock, measureRichBlock, cachedMeasureBlock, cachedMeasureRichBlock } from '../measure';
6
6
  import { renderMath } from '../math';
7
7
  import { layoutResourceBlock } from './resourceLayout';
8
+ /** The labels of a `:::figure` block (#854) as the VDT carries them
9
+ * (`ResolvedResourceBlock.labels`); undefined when it has none. */
10
+ export function figureLabels(block) {
11
+ const labels = block.figure?.labels;
12
+ if (!labels || labels.length === 0)
13
+ return undefined;
14
+ return labels.map((l) => ({
15
+ text: l.text,
16
+ at: 'anchor' in l.at ? { anchor: l.at.anchor } : { x: l.at.x, y: l.at.y },
17
+ ...(l.style !== undefined ? { style: l.style } : {}),
18
+ sourceStart: l.textStart,
19
+ sourceEnd: l.textEnd,
20
+ }));
21
+ }
8
22
  export function runMeasurement(input) {
9
23
  const { vdtType, rawBlock, contentBlock, style, measureMaxWidth, measureOptions, mathEnabled, useRich, cache } = input;
10
24
  // Resource block: lay out the image/table + caption as one atomic group.
@@ -44,7 +58,11 @@ export function runMeasurement(input) {
44
58
  }],
45
59
  totalHeight,
46
60
  };
47
- return { measured, resourceBlock: block, ...(tableRows ? { tableRows } : {}), ...(asideHeight !== undefined ? { asideHeight } : {}) };
61
+ // A `:::figure`'s labels (#862) ride on its block: a copy, so a
62
+ // cached layout of the same resource keeps none of them.
63
+ const labels = figureLabels(contentBlock);
64
+ const resourceBlock = labels ? { ...block, labels } : block;
65
+ return { measured, resourceBlock, ...(tableRows ? { tableRows } : {}), ...(asideHeight !== undefined ? { asideHeight } : {}) };
48
66
  }
49
67
  // Math display block: bypass text layout entirely. Produce a single
50
68
  // VDTLine whose bbox is the math render's pixel box, centred later.
@@ -1 +1 @@
1
- {"version":3,"file":"buildMeasurement.js","sourceRoot":"","sources":["../../src/pipeline/buildMeasurement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildMeasurement.js","sourceRoot":"","sources":["../../src/pipeline/buildMeasurement.ts"],"names":[],"mappings":"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"}
@@ -40,10 +40,11 @@
40
40
  */
41
41
  import type { ContentBlock, DirectiveAttrs } from '../parse';
42
42
  import type { CalloutPlacement, CalloutSpan, ResolvedCalloutStyleConfig } from '../types';
43
- import { type ResolvedConfig, type VDTBlock } from '../vdt';
43
+ import { type ResolvedConfig, type VDTBlock, type VDTDesignBlock } from '../vdt';
44
44
  import { type BlockMeasureContext } from './measureContentBlock';
45
45
  import { type ParagraphContainerPlan } from './paragraphContainers';
46
46
  import { type GalleyItem } from './columnsGroup';
47
+ import type { LineInsetStep } from '../measure/types';
47
48
  export interface PlannedCallout {
48
49
  /** Index of the matching `containerEnd` marker. */
49
50
  endIdx: number;
@@ -151,6 +152,25 @@ export interface CalloutLayoutInput {
151
152
  * relative to its box, or undefined to leave it out. Without it strips
152
153
  * are left out, as other directives are. */
153
154
  stripBlock?: (raw: ContentBlock, blockIdx: number, width: number) => VDTBlock | undefined;
155
+ /** A frame of a composed page (#855): the block's exact height (its tab
156
+ * included). The box is drawn this tall; content shorter than it sits
157
+ * as `verticalAlign` says, content taller runs past the box's foot
158
+ * (`CalloutLayoutResult.overflowPx`, clipped by the backends). */
159
+ boxHeight?: number;
160
+ /** Where the content sits in a `boxHeight` taller than it. Default
161
+ * `'top'`; `'justify'` spreads the space between the box's items. */
162
+ verticalAlign?: 'top' | 'middle' | 'bottom' | 'justify';
163
+ /** Rectangles, in the block's coordinates (its origin at the top-left of
164
+ * its marker column and tab), that the box's text runs round (#855,
165
+ * `exclude: 'push'` frames): a line meeting one is set short on the
166
+ * side the rectangle covers. Applied to the text children that open in
167
+ * the range laid out; a figure or a formula is not moved. */
168
+ exclusions?: readonly {
169
+ x: number;
170
+ y: number;
171
+ width: number;
172
+ height: number;
173
+ }[];
154
174
  }
155
175
  /** A box width the first child of a continuation was counted at (see
156
176
  * `CalloutLayoutInput.lineWidths`). */
@@ -203,6 +223,9 @@ export interface CalloutLayoutResult {
203
223
  * on (`continuesMarkerEnabled`); 0 without one. The split code ranks its
204
224
  * cuts with it. */
205
225
  continuesMarkerPx: number;
226
+ /** With `boxHeight`: the height of the content that runs past the box's
227
+ * foot (0 when it fits). */
228
+ overflowPx?: number;
206
229
  /** The `:::columns` groups among the box's own children (not a nested
207
230
  * box's), as laid out: where a fragment may cut inside them (#634). */
208
231
  groups?: CalloutGroupLayout[];
@@ -273,6 +296,8 @@ export declare function resolveCalloutAttrs(style: ResolvedCalloutStyleConfig, a
273
296
  };
274
297
  /** Shift one block (lines, bullet, resource geometry) by `(ox, oy)`. */
275
298
  export declare function offsetBlock(blk: VDTBlock, ox: number, oy: number): void;
299
+ /** Shift one block of a design slot by `(ox, oy)`. */
300
+ export declare function offsetDesignBlock(b: VDTDesignBlock, ox: number, oy: number): void;
276
301
  /** Move a laid-out callout from frame-relative to absolute page coordinates
277
302
  * with the frame's top-left at `(x, y)`. */
278
303
  export declare function offsetCalloutToAbsolute(result: CalloutLayoutResult, x: number, y: number): void;
@@ -281,4 +306,14 @@ export declare function offsetCalloutToAbsolute(result: CalloutLayoutResult, x:
281
306
  * {@link offsetCalloutToAbsolute}.
282
307
  */
283
308
  export declare function layoutCallout(input: CalloutLayoutInput): CalloutLayoutResult;
309
+ /** The line insets of a text set from `y0` in `[x, x + width]` with lines
310
+ * `lineHeight` apart, beside the rectangles of `exclusions` (#855): a line
311
+ * that meets one, even in part, is set short on the side the rectangle
312
+ * covers (the wider side left free when it stands inside the measure). */
313
+ export declare function exclusionInsets(exclusions: readonly {
314
+ x: number;
315
+ y: number;
316
+ width: number;
317
+ height: number;
318
+ }[], x: number, width: number, y0: number, lineHeight: number): LineInsetStep[];
284
319
  //# sourceMappingURL=calloutLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calloutLayout.d.ts","sourceRoot":"","sources":["../../src/pipeline/calloutLayout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calloutLayout.d.ts","sourceRoot":"","sources":["../../src/pipeline/calloutLayout.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,7 @@ import { getMeasureArabicNumbers, getMeasureDirection, shiftLineX } from '../mea
63
63
  import { resolvedCodeStyle } from '../defaults/codeStyle';
64
64
  import { parseLengthText } from '../defaults/tabStops';
65
65
  import { isFlowColumnsStyle } from './flowColumns';
66
+ import { FRAME_STYLE_ID } from '../composed/wrap';
66
67
  import { fillGalley, galleyBreaks, minFillHeight } from './columnsGroup';
67
68
  /** Map every `containerStart{callout}` index to its range. Resolved up front
68
69
  * (like `:::paragraphs`) because keep-with-next rollbacks rewind the
@@ -187,7 +188,9 @@ export function deriveCalloutResolvedConfig(resolved, style) {
187
188
  * metrics (number widths) are kept from the document context — they were
188
189
  * measured with the document's list font, a close-enough approximation. */
189
190
  export function deriveCalloutMeasureContext(ctx, style) {
190
- if (isFlowColumnsStyle(style.id))
191
+ // A main-flow group's box and a composed page's frameless story (#855)
192
+ // lend their children nothing: they are set as the text around them.
193
+ if (isFlowColumnsStyle(style.id) || style.id === FRAME_STYLE_ID)
191
194
  return ctx;
192
195
  const resolved = deriveCalloutResolvedConfig(ctx.resolved, style);
193
196
  const bodyStyle = resolveBodyStyle(resolved);
@@ -322,7 +325,8 @@ export function offsetBlock(blk, ox, oy) {
322
325
  offsetDesignBlock(b, ox, oy);
323
326
  }
324
327
  }
325
- function offsetDesignBlock(b, ox, oy) {
328
+ /** Shift one block of a design slot by `(ox, oy)`. */
329
+ export function offsetDesignBlock(b, ox, oy) {
326
330
  b.bbox.x += ox;
327
331
  b.bbox.y += oy;
328
332
  if (b.kind === 'text') {
@@ -440,6 +444,10 @@ export function layoutCallout(input) {
440
444
  const cornerIconW = cornerIcon && iconOn ? iconFootprintWidth(style.icon, iconSize, iconBoxW, ctx) : iconSize;
441
445
  const innerX = (stripeLeft ? stripeW : 0) + padL + iconColumn;
442
446
  const innerTop = (topStripe ? stripeW : 0) + padT;
447
+ // The label tab's rise (see "Label tab" below), known here so a frame's
448
+ // exclusions and exact height (#855) are read in box coordinates.
449
+ const riseAhead = style.label && !input.continuation && labelText.trim().length > 0 ? Math.max(0, px(style.label.offset)) : 0;
450
+ const exclusions = (input.exclusions ?? []).map((e) => ({ x: e.x - markerColumn, y: e.y - riseAhead, width: e.width, height: e.height }));
443
451
  // --- Title -----------------------------------------------------------------
444
452
  // A continuation repeats the title, with its suffix, only when the style
445
453
  // asks for it (`repeatTitle`); the repeat is pagination furniture.
@@ -705,7 +713,8 @@ export function layoutCallout(input) {
705
713
  ?? measureContentBlock(raw, blockIdx, width, derivedCtx, { styleOverride });
706
714
  if (!measuredBlock)
707
715
  return undefined;
708
- const { kind, measured, prefixLen, absoluteSourceMap, mathDisplayRender, resourceBlock, letterSpacingPx, runtTracking, code } = measuredBlock;
716
+ const { kind, mathDisplayRender, resourceBlock, code } = measuredBlock;
717
+ let { measured, prefixLen, absoluteSourceMap, letterSpacingPx, runtTracking } = measuredBlock;
709
718
  const { vdtType, headingLevel, numberPrefix, numberSeparator, headingNumber, listBullet, listDepth, listKind, bulletXOffsetInColumn, strikethroughText } = kind;
710
719
  // A structural heading (`hidden`) keeps its lines' text but prints
711
720
  // nothing and takes no room: no line height, no margins, and the
@@ -739,6 +748,18 @@ export function layoutCallout(input) {
739
748
  spacing = Math.max(st.prevMarginBottom, marginTopPx);
740
749
  }
741
750
  st.cursorY += spacing;
751
+ // A frame's text runs round the frames that push it (#855): set again
752
+ // with its lines short beside them. A child the range opens inside
753
+ // keeps the lines it was counted with.
754
+ const opensInside = lineCut ? lineCut.from > 0 : isFirstRealOf(k) && (input.lineFrom ?? 0) > 0;
755
+ if (exclusions.length > 0 && !opensInside && !(vdtType === 'resource' && resourceBlock) && !(vdtType === 'mathDisplay' && mathDisplayRender)) {
756
+ const lineInsets = exclusionInsets(exclusions, x, width, st.cursorY, kind.style.lineHeightPx);
757
+ if (lineInsets.length > 0) {
758
+ const again = measureContentBlock(raw, blockIdx, width, derivedCtx, { styleOverride, lineInsets });
759
+ if (again)
760
+ ({ measured, prefixLen, absoluteSourceMap, letterSpacingPx, runtTracking } = again);
761
+ }
762
+ }
742
763
  const blk = createVDTBlock(input.nextChildId(), vdtType, bs.fontString, bs.color, bs.textAlign);
743
764
  applyStyleAttrs(blk, bs);
744
765
  // The tracking the lines were measured with (a runt set one line
@@ -1424,6 +1445,42 @@ export function layoutCallout(input) {
1424
1445
  }
1425
1446
  contentBottom += extra;
1426
1447
  }
1448
+ // A frame's exact height (#855): the box is drawn that tall, the
1449
+ // content placed in it as `verticalAlign` says; content taller than the
1450
+ // room runs past the foot.
1451
+ let overflowPx;
1452
+ if (input.boxHeight !== undefined) {
1453
+ const room = Math.max(innerTop, input.boxHeight - riseAhead - padB);
1454
+ if (contentBottom < room - 0.01) {
1455
+ const extra = room - contentBottom;
1456
+ const align = input.verticalAlign ?? 'top';
1457
+ if (align === 'middle' || align === 'bottom') {
1458
+ const dy = align === 'middle' ? extra / 2 : extra;
1459
+ for (const blk of childBlocks)
1460
+ offsetBlock(blk, 0, dy);
1461
+ for (const r of groupRules)
1462
+ offsetDesignBlock(r, 0, dy);
1463
+ for (const g of groupLayouts)
1464
+ g.top += dy;
1465
+ if (continuesBlock)
1466
+ offsetDesignBlock(continuesBlock, 0, dy);
1467
+ }
1468
+ else if (align === 'justify' && units.length > 1) {
1469
+ units.forEach((u, i) => {
1470
+ const dy = (extra * i) / (units.length - 1);
1471
+ if (dy <= 0)
1472
+ return;
1473
+ const moved = u.kind === 'block' ? [u.block] : [u.box.result.frame, ...u.box.result.children];
1474
+ for (const blk of moved)
1475
+ offsetBlock(blk, 0, dy);
1476
+ });
1477
+ }
1478
+ }
1479
+ else if (contentBottom > room + 0.01) {
1480
+ overflowPx = contentBottom - room;
1481
+ }
1482
+ contentBottom = room;
1483
+ }
1427
1484
  const boxHeight = contentBottom + padB;
1428
1485
  const innerRect = createBoundingBox(innerX, innerTop, innerWidth, Math.max(0, contentBottom - innerTop));
1429
1486
  // --- Box decoration (paint order: background, stripe, icon, title) ---------
@@ -1662,6 +1719,7 @@ export function layoutCallout(input) {
1662
1719
  marginTopPx: (flowGroupBox ? fenceMarginPx(attrs.marginTop, em, dpi) : undefined) ?? px(style.marginTop),
1663
1720
  marginBottomPx: (flowGroupBox ? fenceMarginPx(attrs.marginBottom, em, dpi) : undefined) ?? px(style.marginBottom),
1664
1721
  continuesMarkerPx,
1722
+ ...(overflowPx !== undefined ? { overflowPx } : {}),
1665
1723
  ...(groupLayouts.length > 0 ? { groups: groupLayouts } : {}),
1666
1724
  };
1667
1725
  }
@@ -1737,4 +1795,36 @@ function buildIconBlock(spec, x, y, size, ctx, boxWidth = size) {
1737
1795
  },
1738
1796
  };
1739
1797
  }
1798
+ /** The line insets of a text set from `y0` in `[x, x + width]` with lines
1799
+ * `lineHeight` apart, beside the rectangles of `exclusions` (#855): a line
1800
+ * that meets one, even in part, is set short on the side the rectangle
1801
+ * covers (the wider side left free when it stands inside the measure). */
1802
+ export function exclusionInsets(exclusions, x, width, y0, lineHeight) {
1803
+ const steps = [];
1804
+ if (!(lineHeight > 0))
1805
+ return steps;
1806
+ const right = x + width;
1807
+ for (const ex of exclusions) {
1808
+ const exRight = ex.x + ex.width;
1809
+ if (exRight <= x + 0.01 || ex.x >= right - 0.01)
1810
+ continue;
1811
+ const bottom = ex.y + ex.height;
1812
+ if (bottom <= y0 + 0.01)
1813
+ continue;
1814
+ const from = Math.max(0, Math.floor((ex.y - y0 + 0.01) / lineHeight));
1815
+ const to = Math.ceil((bottom - y0 - 0.01) / lineHeight) - 1;
1816
+ if (to < from)
1817
+ continue;
1818
+ const roomLeft = ex.x - x;
1819
+ const roomRight = right - exRight;
1820
+ const coversLeft = roomLeft <= roomRight;
1821
+ steps.push({
1822
+ fromLine: from,
1823
+ toLine: to,
1824
+ startInsetPx: coversLeft ? Math.min(width, exRight - x) : 0,
1825
+ endInsetPx: coversLeft ? 0 : Math.min(width, right - ex.x),
1826
+ });
1827
+ }
1828
+ return steps;
1829
+ }
1740
1830
  //# sourceMappingURL=calloutLayout.js.map