@openpresentation/opf 0.13.0 → 0.15.1

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 (611) hide show
  1. package/README.md +40 -49
  2. package/dist/catalog-refs-BSfGELpt.d.ts +128 -0
  3. package/dist/catalog-schemas-CinPh5WA.d.ts +12 -0
  4. package/dist/catalog.d.ts +91 -0
  5. package/dist/{chunk-E34DJ5LL.js → catalog.js} +16949 -17628
  6. package/dist/{chart-data-Cdr6rRVV.d.ts → chart-data-BnNqgnC-.d.ts} +17 -6
  7. package/dist/{chunk-7QBCWNWL.js → chunk-2CJPC4HI.js} +1807 -1904
  8. package/dist/{chunk-II5EYKZU.js → chunk-374R35TJ.js} +2 -92
  9. package/dist/chunk-3JG4YXWF.js +1842 -0
  10. package/dist/chunk-3RKB4RDJ.js +192 -0
  11. package/dist/{chunk-IS2CPNVJ.js → chunk-5FTUIDUH.js} +26 -26
  12. package/dist/{chunk-GJKJL4YY.js → chunk-HXHOZ7AH.js} +1379 -504
  13. package/dist/{chunk-MPM7NRG7.js → chunk-O744SXXA.js} +2014 -885
  14. package/dist/chunk-QDI75P2M.js +3515 -0
  15. package/dist/chunk-SPFV27O5.js +210 -0
  16. package/dist/chunk-TRDXRRQK.js +17 -0
  17. package/dist/chunk-TWQJLI6E.js +601 -0
  18. package/dist/{chunk-ATGDDJPX.js → chunk-U4J75TRG.js} +3 -3
  19. package/dist/{chunk-RAYB46AB.js → chunk-UBFJ2QHH.js} +34 -30
  20. package/dist/chunk-VGAOJEY7.js +94 -0
  21. package/dist/chunk-ZPU46TFA.js +83 -0
  22. package/dist/{composition-D7we69Tr.d.ts → composition-D2tghM82.d.ts} +947 -111
  23. package/dist/composition.d.ts +3 -2
  24. package/dist/composition.js +2 -2
  25. package/dist/convert.d.ts +18 -19
  26. package/dist/convert.js +61 -50
  27. package/dist/data.d.ts +4 -4
  28. package/dist/data.js +3 -3
  29. package/dist/diff.d.ts +4 -4
  30. package/dist/diff.js +7 -605
  31. package/dist/docs.js +56 -44
  32. package/dist/examples.d.ts +1 -1
  33. package/dist/examples.js +49451 -6259
  34. package/dist/finding-CT_f_vbD.d.ts +212 -0
  35. package/dist/format.d.ts +4 -4
  36. package/dist/format.js +2 -83
  37. package/dist/index.d.ts +492 -309
  38. package/dist/index.js +767 -1097
  39. package/dist/json-BFSdESOE.d.ts +19 -0
  40. package/dist/markdown.d.ts +40 -27
  41. package/dist/markdown.js +9 -1941
  42. package/dist/pagination-wedbe7eq.d.ts +119 -0
  43. package/dist/pagination.d.ts +4 -61
  44. package/dist/pagination.js +6 -6
  45. package/dist/patch.d.ts +12 -23
  46. package/dist/patch.js +6 -6
  47. package/dist/{presentation-mG-IYErQ.d.ts → presentation-CDKQVkyI.d.ts} +702 -1026
  48. package/dist/repo-readme.js +1 -1
  49. package/dist/schemas.d.ts +284 -1
  50. package/dist/schemas.js +1 -1
  51. package/dist/spec/README.md +11 -6
  52. package/dist/spec/catalogs/audiences/index.json +2 -50
  53. package/dist/spec/catalogs/chart-types/100pct-stacked-area.json +21 -0
  54. package/dist/spec/catalogs/chart-types/100pct-stacked-bar.json +22 -0
  55. package/dist/spec/catalogs/chart-types/100pct-stacked-column.json +22 -0
  56. package/dist/spec/catalogs/chart-types/area.json +2 -60
  57. package/dist/spec/catalogs/chart-types/bar.json +2 -48
  58. package/dist/spec/catalogs/chart-types/box-and-whisker.json +2 -132
  59. package/dist/spec/catalogs/chart-types/column.json +2 -52
  60. package/dist/spec/catalogs/chart-types/combo.json +37 -0
  61. package/dist/spec/catalogs/chart-types/doughnut.json +2 -40
  62. package/dist/spec/catalogs/chart-types/filled-radar.json +2 -52
  63. package/dist/spec/catalogs/chart-types/funnel.json +2 -46
  64. package/dist/spec/catalogs/chart-types/histogram.json +2 -149
  65. package/dist/spec/catalogs/chart-types/index.json +50 -520
  66. package/dist/spec/catalogs/chart-types/line-with-markers.json +2 -60
  67. package/dist/spec/catalogs/chart-types/line.json +2 -60
  68. package/dist/spec/catalogs/chart-types/pareto.json +2 -50
  69. package/dist/spec/catalogs/chart-types/pie.json +2 -40
  70. package/dist/spec/catalogs/chart-types/radar-with-markers.json +2 -52
  71. package/dist/spec/catalogs/chart-types/radar.json +2 -52
  72. package/dist/spec/catalogs/chart-types/scatter.json +2 -73
  73. package/dist/spec/catalogs/chart-types/stacked-area.json +21 -0
  74. package/dist/spec/catalogs/chart-types/stacked-bar.json +22 -0
  75. package/dist/spec/catalogs/chart-types/stacked-column.json +22 -0
  76. package/dist/spec/catalogs/chart-types/stacked-line-with-markers.json +22 -0
  77. package/dist/spec/catalogs/chart-types/stacked-line.json +21 -0
  78. package/dist/spec/catalogs/chart-types/treemap.json +2 -48
  79. package/dist/spec/catalogs/chart-types/waterfall.json +2 -52
  80. package/dist/spec/catalogs/chart-types/world.json +2 -64
  81. package/dist/spec/catalogs/font-schemes/angsana-new.json +2 -2
  82. package/dist/spec/catalogs/font-schemes/aparajita.json +3 -3
  83. package/dist/spec/catalogs/font-schemes/aptos.json +1 -1
  84. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +2 -2
  85. package/dist/spec/catalogs/font-schemes/arial.json +1 -1
  86. package/dist/spec/catalogs/font-schemes/batang.json +2 -2
  87. package/dist/spec/catalogs/font-schemes/bookman.json +1 -1
  88. package/dist/spec/catalogs/font-schemes/calibri.json +1 -1
  89. package/dist/spec/catalogs/font-schemes/century-schoolbook.json +1 -1
  90. package/dist/spec/catalogs/font-schemes/consolas.json +2 -4
  91. package/dist/spec/catalogs/font-schemes/constantia.json +1 -1
  92. package/dist/spec/catalogs/font-schemes/courier-new.json +2 -4
  93. package/dist/spec/catalogs/font-schemes/daunpenh.json +2 -2
  94. package/dist/spec/catalogs/font-schemes/david.json +2 -2
  95. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +2 -2
  96. package/dist/spec/catalogs/font-schemes/fangsong.json +2 -2
  97. package/dist/spec/catalogs/font-schemes/garamond.json +1 -1
  98. package/dist/spec/catalogs/font-schemes/gautami.json +2 -2
  99. package/dist/spec/catalogs/font-schemes/georgia.json +1 -1
  100. package/dist/spec/catalogs/font-schemes/gisha.json +3 -3
  101. package/dist/spec/catalogs/font-schemes/grandview.json +1 -1
  102. package/dist/spec/catalogs/font-schemes/gungsuh.json +2 -2
  103. package/dist/spec/catalogs/font-schemes/impact.json +1 -1
  104. package/dist/spec/catalogs/font-schemes/index.json +1 -1
  105. package/dist/spec/catalogs/font-schemes/kalinga.json +2 -2
  106. package/dist/spec/catalogs/font-schemes/kartika.json +2 -2
  107. package/dist/spec/catalogs/font-schemes/khmer-ui.json +2 -2
  108. package/dist/spec/catalogs/font-schemes/latha.json +2 -2
  109. package/dist/spec/catalogs/font-schemes/lucida-sans.json +1 -1
  110. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +2 -2
  111. package/dist/spec/catalogs/font-schemes/mangal.json +4 -5
  112. package/dist/spec/catalogs/font-schemes/meiryo.json +2 -2
  113. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +2 -2
  114. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +5 -5
  115. package/dist/spec/catalogs/font-schemes/mingliu.json +2 -2
  116. package/dist/spec/catalogs/font-schemes/miriam.json +2 -2
  117. package/dist/spec/catalogs/font-schemes/montserrat.json +1 -1
  118. package/dist/spec/catalogs/font-schemes/ms-mincho.json +2 -2
  119. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +2 -2
  120. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +2 -2
  121. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +3 -3
  122. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +4 -4
  123. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +2 -2
  124. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +3 -3
  125. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +3 -3
  126. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +2 -2
  127. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +2 -2
  128. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +2 -2
  129. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +2 -2
  130. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +2 -2
  131. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +2 -2
  132. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +2 -2
  133. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +2 -2
  134. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +2 -2
  135. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +2 -2
  136. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +2 -2
  137. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +2 -2
  138. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +5 -5
  139. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +2 -2
  140. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +2 -2
  141. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +2 -2
  142. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +2 -2
  143. package/dist/spec/catalogs/font-schemes/noto-sans.json +5 -5
  144. package/dist/spec/catalogs/font-schemes/nyala.json +2 -2
  145. package/dist/spec/catalogs/font-schemes/open-sans.json +1 -1
  146. package/dist/spec/catalogs/font-schemes/pmingliu.json +2 -2
  147. package/dist/spec/catalogs/font-schemes/poppins.json +1 -1
  148. package/dist/spec/catalogs/font-schemes/pt-serif.json +1 -1
  149. package/dist/spec/catalogs/font-schemes/raavi.json +2 -2
  150. package/dist/spec/catalogs/font-schemes/raleway.json +1 -1
  151. package/dist/spec/catalogs/font-schemes/roboto.json +1 -1
  152. package/dist/spec/catalogs/font-schemes/rockwell.json +1 -1
  153. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +4 -4
  154. package/dist/spec/catalogs/font-schemes/seaford.json +1 -1
  155. package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +1 -1
  156. package/dist/spec/catalogs/font-schemes/segoe-ui.json +1 -1
  157. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +3 -3
  158. package/dist/spec/catalogs/font-schemes/shruti.json +2 -2
  159. package/dist/spec/catalogs/font-schemes/simsun.json +2 -2
  160. package/dist/spec/catalogs/font-schemes/skeena.json +1 -1
  161. package/dist/spec/catalogs/font-schemes/sylfaen.json +3 -3
  162. package/dist/spec/catalogs/font-schemes/tahoma.json +1 -1
  163. package/dist/spec/catalogs/font-schemes/tenorite.json +1 -1
  164. package/dist/spec/catalogs/font-schemes/times-new-roman.json +1 -1
  165. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +4 -4
  166. package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +1 -1
  167. package/dist/spec/catalogs/font-schemes/tunga.json +2 -2
  168. package/dist/spec/catalogs/font-schemes/verdana.json +1 -1
  169. package/dist/spec/catalogs/font-schemes/vrinda.json +2 -2
  170. package/dist/spec/catalogs/font-schemes/yu-gothic.json +2 -2
  171. package/dist/spec/catalogs/layouts/action-plan.json +9 -15
  172. package/dist/spec/catalogs/layouts/agenda.json +8 -15
  173. package/dist/spec/catalogs/layouts/appendix-index.json +7 -15
  174. package/dist/spec/catalogs/layouts/architecture-stack.json +9 -15
  175. package/dist/spec/catalogs/layouts/assumptions-dependencies.json +9 -15
  176. package/dist/spec/catalogs/layouts/before-after.json +9 -15
  177. package/dist/spec/catalogs/layouts/benchmark-target-table.json +9 -15
  178. package/dist/spec/catalogs/layouts/blank.json +11 -1
  179. package/dist/spec/catalogs/layouts/bullet-list.json +9 -15
  180. package/dist/spec/catalogs/layouts/business-model-canvas.json +9 -15
  181. package/dist/spec/catalogs/layouts/capability-map.json +11 -16
  182. package/dist/spec/catalogs/layouts/case-study.json +9 -15
  183. package/dist/spec/catalogs/layouts/chapter-recap.json +8 -15
  184. package/dist/spec/catalogs/layouts/chart-1x-title-center.json +30 -0
  185. package/dist/spec/catalogs/layouts/chart-1x.json +15 -0
  186. package/dist/spec/catalogs/layouts/chart-2x-title-center.json +36 -0
  187. package/dist/spec/catalogs/layouts/chart-2x-vertical-title-left.json +37 -0
  188. package/dist/spec/catalogs/layouts/chart-2x.json +15 -0
  189. package/dist/spec/catalogs/layouts/chart-3x-bottom-vertical-title-left.json +46 -0
  190. package/dist/spec/catalogs/layouts/chart-3x-left-title-center.json +45 -0
  191. package/dist/spec/catalogs/layouts/chart-3x-left.json +40 -0
  192. package/dist/spec/catalogs/layouts/chart-3x-right-title-center.json +45 -0
  193. package/dist/spec/catalogs/layouts/chart-3x-right.json +40 -0
  194. package/dist/spec/catalogs/layouts/chart-3x-title-center.json +39 -0
  195. package/dist/spec/catalogs/layouts/chart-3x-top-vertical-title-left.json +46 -0
  196. package/dist/spec/catalogs/layouts/chart-3x.json +15 -0
  197. package/dist/spec/catalogs/layouts/circular-lifecycle.json +9 -15
  198. package/dist/spec/catalogs/layouts/code-1x.json +10 -0
  199. package/dist/spec/catalogs/layouts/comparison.json +9 -15
  200. package/dist/spec/catalogs/layouts/competitive-landscape.json +11 -16
  201. package/dist/spec/catalogs/layouts/customer-journey.json +11 -16
  202. package/dist/spec/catalogs/layouts/customer-logos.json +9 -15
  203. package/dist/spec/catalogs/layouts/dashboard.json +9 -15
  204. package/dist/spec/catalogs/layouts/data-visualization.json +9 -15
  205. package/dist/spec/catalogs/layouts/decision-tree.json +11 -16
  206. package/dist/spec/catalogs/layouts/detailed-data-table.json +9 -15
  207. package/dist/spec/catalogs/layouts/ecosystem-map.json +11 -16
  208. package/dist/spec/catalogs/layouts/executive-decision.json +9 -15
  209. package/dist/spec/catalogs/layouts/executive-summary.json +9 -15
  210. package/dist/spec/catalogs/layouts/extract/canonical.json +7 -16
  211. package/dist/spec/catalogs/layouts/faq.json +9 -15
  212. package/dist/spec/catalogs/layouts/feature-comparison-matrix.json +9 -15
  213. package/dist/spec/catalogs/layouts/forecast-scenario.json +9 -15
  214. package/dist/spec/catalogs/layouts/funnel-pyramid.json +9 -15
  215. package/dist/spec/catalogs/layouts/gantt-project-plan.json +9 -15
  216. package/dist/spec/catalogs/layouts/geographic-map.json +10 -15
  217. package/dist/spec/catalogs/layouts/heatmap-cohort.json +9 -15
  218. package/dist/spec/catalogs/layouts/hub-and-spoke.json +9 -15
  219. package/dist/spec/catalogs/layouts/icon-grid.json +11 -16
  220. package/dist/spec/catalogs/layouts/image-1x-crop-title-center.json +32 -0
  221. package/dist/spec/catalogs/layouts/image-1x-crop-title-left.json +32 -0
  222. package/dist/spec/catalogs/layouts/image-1x-crop.json +27 -0
  223. package/dist/spec/catalogs/layouts/image-1x-fit-title-center.json +32 -0
  224. package/dist/spec/catalogs/layouts/image-1x.json +14 -1
  225. package/dist/spec/catalogs/layouts/image-2x-crop-title-center.json +38 -0
  226. package/dist/spec/catalogs/layouts/image-2x-crop-vertical-title-left.json +39 -0
  227. package/dist/spec/catalogs/layouts/image-2x-crop-vertical.json +34 -0
  228. package/dist/spec/catalogs/layouts/image-2x-crop.json +33 -0
  229. package/dist/spec/catalogs/layouts/image-2x-fit-title-center.json +38 -0
  230. package/dist/spec/catalogs/layouts/image-2x-fit-vertical-title-left.json +39 -0
  231. package/dist/spec/catalogs/layouts/image-2x-fit-vertical.json +34 -0
  232. package/dist/spec/catalogs/layouts/image-2x.json +15 -2
  233. package/dist/spec/catalogs/layouts/image-3x-crop-title-center.json +41 -0
  234. package/dist/spec/catalogs/layouts/image-3x-crop-vertical-title-left.json +42 -0
  235. package/dist/spec/catalogs/layouts/image-3x-crop-vertical.json +37 -0
  236. package/dist/spec/catalogs/layouts/image-3x-crop.json +36 -0
  237. package/dist/spec/catalogs/layouts/image-3x-fit-title-center.json +41 -0
  238. package/dist/spec/catalogs/layouts/image-3x-fit-vertical-title-left.json +42 -0
  239. package/dist/spec/catalogs/layouts/image-3x-fit-vertical.json +37 -0
  240. package/dist/spec/catalogs/layouts/image-3x-fit.json +36 -0
  241. package/dist/spec/catalogs/layouts/image-3x.json +16 -3
  242. package/dist/spec/catalogs/layouts/image-focus.json +13 -18
  243. package/dist/spec/catalogs/layouts/image-only-1x-crop-title-center.json +31 -0
  244. package/dist/spec/catalogs/layouts/image-only-1x-fit-title-center.json +31 -0
  245. package/dist/spec/catalogs/layouts/image-only-2x-crop-title-center.json +37 -0
  246. package/dist/spec/catalogs/layouts/image-only-2x-crop-vertical-title-left.json +38 -0
  247. package/dist/spec/catalogs/layouts/image-only-2x-crop-vertical.json +33 -0
  248. package/dist/spec/catalogs/layouts/image-only-2x-fit-title-center.json +37 -0
  249. package/dist/spec/catalogs/layouts/image-only-2x-fit-vertical-title-left.json +38 -0
  250. package/dist/spec/catalogs/layouts/image-only-2x-fit-vertical.json +33 -0
  251. package/dist/spec/catalogs/layouts/image-only-3x-crop-title-center.json +40 -0
  252. package/dist/spec/catalogs/layouts/image-only-3x-crop-vertical-title-left.json +41 -0
  253. package/dist/spec/catalogs/layouts/image-only-3x-crop-vertical.json +36 -0
  254. package/dist/spec/catalogs/layouts/image-only-3x-crop.json +35 -0
  255. package/dist/spec/catalogs/layouts/image-only-3x-fit-title-center.json +40 -0
  256. package/dist/spec/catalogs/layouts/image-only-3x-fit-vertical-title-left.json +41 -0
  257. package/dist/spec/catalogs/layouts/image-only-3x-fit-vertical.json +36 -0
  258. package/dist/spec/catalogs/layouts/image-only-3x-fit.json +35 -0
  259. package/dist/spec/catalogs/layouts/index.json +1041 -151
  260. package/dist/spec/catalogs/layouts/key-takeaway.json +8 -15
  261. package/dist/spec/catalogs/layouts/kpi-scorecard.json +9 -15
  262. package/dist/spec/catalogs/layouts/list-1x-box-title-center.json +32 -0
  263. package/dist/spec/catalogs/layouts/list-1x-box-vertical-title-center.json +33 -0
  264. package/dist/spec/catalogs/layouts/list-1x-box-vertical-title-left.json +33 -0
  265. package/dist/spec/catalogs/layouts/list-1x-box-vertical.json +28 -0
  266. package/dist/spec/catalogs/layouts/list-1x-box.json +27 -0
  267. package/dist/spec/catalogs/layouts/list-1x-itemimage-title-center.json +32 -0
  268. package/dist/spec/catalogs/layouts/list-1x-itemimage-vertical-title-center.json +33 -0
  269. package/dist/spec/catalogs/layouts/list-1x-title-center.json +31 -0
  270. package/dist/spec/catalogs/layouts/list-1x-vertical-title-center.json +32 -0
  271. package/dist/spec/catalogs/layouts/list-1x.json +17 -1
  272. package/dist/spec/catalogs/layouts/list-2x-box-title-center.json +38 -0
  273. package/dist/spec/catalogs/layouts/list-2x-box-vertical-title-center.json +39 -0
  274. package/dist/spec/catalogs/layouts/list-2x-box-vertical-title-left.json +39 -0
  275. package/dist/spec/catalogs/layouts/list-2x-box-vertical.json +34 -0
  276. package/dist/spec/catalogs/layouts/list-2x-box.json +33 -0
  277. package/dist/spec/catalogs/layouts/list-2x-itemimage-title-center.json +38 -0
  278. package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical-title-center.json +39 -0
  279. package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical-title-left.json +39 -0
  280. package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical.json +34 -0
  281. package/dist/spec/catalogs/layouts/list-2x-title-center.json +37 -0
  282. package/dist/spec/catalogs/layouts/list-2x-vertical-title-center.json +38 -0
  283. package/dist/spec/catalogs/layouts/list-2x-vertical-title-left.json +38 -0
  284. package/dist/spec/catalogs/layouts/list-2x-vertical.json +33 -0
  285. package/dist/spec/catalogs/layouts/list-2x.json +16 -0
  286. package/dist/spec/catalogs/layouts/list-3x-box-title-center.json +41 -0
  287. package/dist/spec/catalogs/layouts/list-3x-box-vertical-title-center.json +42 -0
  288. package/dist/spec/catalogs/layouts/list-3x-box-vertical-title-left.json +42 -0
  289. package/dist/spec/catalogs/layouts/list-3x-box-vertical.json +37 -0
  290. package/dist/spec/catalogs/layouts/list-3x-box.json +36 -0
  291. package/dist/spec/catalogs/layouts/list-3x-itemimage-title-center.json +41 -0
  292. package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical-title-center.json +42 -0
  293. package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical-title-left.json +42 -0
  294. package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical.json +37 -0
  295. package/dist/spec/catalogs/layouts/list-3x-itemimage.json +36 -0
  296. package/dist/spec/catalogs/layouts/list-3x-title-center.json +40 -0
  297. package/dist/spec/catalogs/layouts/list-3x-vertical-title-center.json +41 -0
  298. package/dist/spec/catalogs/layouts/list-3x-vertical-title-left.json +41 -0
  299. package/dist/spec/catalogs/layouts/list-3x-vertical.json +36 -0
  300. package/dist/spec/catalogs/layouts/list-3x.json +16 -0
  301. package/dist/spec/catalogs/layouts/list-4x-box-title-center.json +45 -0
  302. package/dist/spec/catalogs/layouts/list-4x-box-vertical-title-center.json +45 -0
  303. package/dist/spec/catalogs/layouts/list-4x-box-vertical-title-left.json +45 -0
  304. package/dist/spec/catalogs/layouts/list-4x-box-vertical.json +40 -0
  305. package/dist/spec/catalogs/layouts/list-4x-box.json +40 -0
  306. package/dist/spec/catalogs/layouts/list-4x-itemimage-title-center.json +45 -0
  307. package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical-title-center.json +45 -0
  308. package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical-title-left.json +45 -0
  309. package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical.json +40 -0
  310. package/dist/spec/catalogs/layouts/list-4x-title-center.json +44 -0
  311. package/dist/spec/catalogs/layouts/list-4x-vertical-title-center.json +44 -0
  312. package/dist/spec/catalogs/layouts/list-4x-vertical-title-left.json +44 -0
  313. package/dist/spec/catalogs/layouts/list-4x-vertical.json +39 -0
  314. package/dist/spec/catalogs/layouts/list-4x.json +16 -0
  315. package/dist/spec/catalogs/layouts/list-5x-box-title-center.json +48 -0
  316. package/dist/spec/catalogs/layouts/list-5x-box-vertical-title-center.json +50 -0
  317. package/dist/spec/catalogs/layouts/list-5x-box-vertical-title-left.json +50 -0
  318. package/dist/spec/catalogs/layouts/list-5x-box-vertical.json +45 -0
  319. package/dist/spec/catalogs/layouts/list-5x-box.json +43 -0
  320. package/dist/spec/catalogs/layouts/list-5x-itemimage-title-center.json +48 -0
  321. package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical-title-center.json +48 -0
  322. package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical-title-left.json +48 -0
  323. package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical.json +43 -0
  324. package/dist/spec/catalogs/layouts/list-5x-title-center.json +47 -0
  325. package/dist/spec/catalogs/layouts/list-5x-vertical-title-center.json +47 -0
  326. package/dist/spec/catalogs/layouts/list-5x-vertical-title-left.json +47 -0
  327. package/dist/spec/catalogs/layouts/list-5x-vertical.json +42 -0
  328. package/dist/spec/catalogs/layouts/list-5x.json +16 -0
  329. package/dist/spec/catalogs/layouts/list-6x-box-title-center.json +51 -0
  330. package/dist/spec/catalogs/layouts/list-6x-box-vertical-title-center.json +53 -0
  331. package/dist/spec/catalogs/layouts/list-6x-box-vertical-title-left.json +53 -0
  332. package/dist/spec/catalogs/layouts/list-6x-box-vertical.json +48 -0
  333. package/dist/spec/catalogs/layouts/list-6x-box.json +46 -0
  334. package/dist/spec/catalogs/layouts/list-6x-itemimage-title-center.json +51 -0
  335. package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical-title-center.json +51 -0
  336. package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical-title-left.json +51 -0
  337. package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical.json +46 -0
  338. package/dist/spec/catalogs/layouts/list-6x-title-center.json +50 -0
  339. package/dist/spec/catalogs/layouts/list-6x-vertical-title-center.json +50 -0
  340. package/dist/spec/catalogs/layouts/list-6x-vertical-title-left.json +50 -0
  341. package/dist/spec/catalogs/layouts/list-6x-vertical.json +45 -0
  342. package/dist/spec/catalogs/layouts/list-6x.json +16 -0
  343. package/dist/spec/catalogs/layouts/logic-tree.json +9 -15
  344. package/dist/spec/catalogs/layouts/market-size.json +9 -15
  345. package/dist/spec/catalogs/layouts/matrix-quadrant.json +9 -15
  346. package/dist/spec/catalogs/layouts/media-1x.json +11 -1
  347. package/dist/spec/catalogs/layouts/network-dependency-map.json +10 -15
  348. package/dist/spec/catalogs/layouts/number-1x-box-title-center.json +30 -0
  349. package/dist/spec/catalogs/layouts/number-1x-box.json +25 -0
  350. package/dist/spec/catalogs/layouts/number-1x-title-center.json +29 -0
  351. package/dist/spec/catalogs/layouts/number-1x.json +16 -1
  352. package/dist/spec/catalogs/layouts/number-2x-box-title-center.json +36 -0
  353. package/dist/spec/catalogs/layouts/number-2x-box.json +31 -0
  354. package/dist/spec/catalogs/layouts/number-2x-title-center.json +35 -0
  355. package/dist/spec/catalogs/layouts/number-2x.json +15 -0
  356. package/dist/spec/catalogs/layouts/number-3x-box-title-center.json +39 -0
  357. package/dist/spec/catalogs/layouts/number-3x-box.json +34 -0
  358. package/dist/spec/catalogs/layouts/number-3x-title-center.json +38 -0
  359. package/dist/spec/catalogs/layouts/number-3x.json +15 -0
  360. package/dist/spec/catalogs/layouts/number-4x-box-title-center.json +43 -0
  361. package/dist/spec/catalogs/layouts/number-4x-box.json +38 -0
  362. package/dist/spec/catalogs/layouts/number-4x-title-center.json +42 -0
  363. package/dist/spec/catalogs/layouts/number-4x.json +15 -0
  364. package/dist/spec/catalogs/layouts/number-5x-box-title-center.json +46 -0
  365. package/dist/spec/catalogs/layouts/number-5x-box.json +41 -0
  366. package/dist/spec/catalogs/layouts/number-5x-title-center.json +45 -0
  367. package/dist/spec/catalogs/layouts/number-5x.json +15 -0
  368. package/dist/spec/catalogs/layouts/number-6x-box-title-center.json +49 -0
  369. package/dist/spec/catalogs/layouts/number-6x-box.json +44 -0
  370. package/dist/spec/catalogs/layouts/number-6x-title-center.json +48 -0
  371. package/dist/spec/catalogs/layouts/number-6x.json +15 -0
  372. package/dist/spec/catalogs/layouts/one-column-explainer.json +9 -15
  373. package/dist/spec/catalogs/layouts/org-chart.json +9 -15
  374. package/dist/spec/catalogs/layouts/persona-grid.json +11 -16
  375. package/dist/spec/catalogs/layouts/photo-grid.json +14 -19
  376. package/dist/spec/catalogs/layouts/pricing-table.json +9 -15
  377. package/dist/spec/catalogs/layouts/process-flow.json +9 -15
  378. package/dist/spec/catalogs/layouts/product-feature.json +11 -16
  379. package/dist/spec/catalogs/layouts/pros-cons.json +9 -15
  380. package/dist/spec/catalogs/layouts/qa-discussion.json +7 -15
  381. package/dist/spec/catalogs/layouts/quote-1x.json +11 -1
  382. package/dist/spec/catalogs/layouts/quote-highlight.json +9 -15
  383. package/dist/spec/catalogs/layouts/raci-matrix.json +9 -15
  384. package/dist/spec/catalogs/layouts/risk-heatmap.json +9 -15
  385. package/dist/spec/catalogs/layouts/roadmap.json +9 -15
  386. package/dist/spec/catalogs/layouts/screenshot-walkthrough.json +11 -16
  387. package/dist/spec/catalogs/layouts/section-divider.json +8 -15
  388. package/dist/spec/catalogs/layouts/single-message-statement.json +8 -15
  389. package/dist/spec/catalogs/layouts/stats-metrics.json +9 -15
  390. package/dist/spec/catalogs/layouts/status-rag.json +9 -15
  391. package/dist/spec/catalogs/layouts/swimlane-process.json +11 -16
  392. package/dist/spec/catalogs/layouts/swot-analysis.json +9 -15
  393. package/dist/spec/catalogs/layouts/table-1x.json +10 -0
  394. package/dist/spec/catalogs/layouts/team-bio.json +11 -16
  395. package/dist/spec/catalogs/layouts/testimonial-grid.json +9 -15
  396. package/dist/spec/catalogs/layouts/text-1x-box-title-center.json +31 -0
  397. package/dist/spec/catalogs/layouts/text-1x-box-title-left.json +31 -0
  398. package/dist/spec/catalogs/layouts/text-1x-center-box-title-center.json +31 -0
  399. package/dist/spec/catalogs/layouts/text-1x-center-box-title-left.json +31 -0
  400. package/dist/spec/catalogs/layouts/text-1x-center-box.json +26 -0
  401. package/dist/spec/catalogs/layouts/text-1x-center-title-center.json +30 -0
  402. package/dist/spec/catalogs/layouts/text-1x-center-title-left.json +30 -0
  403. package/dist/spec/catalogs/layouts/text-1x-center.json +25 -0
  404. package/dist/spec/catalogs/layouts/text-1x-left-box.json +26 -0
  405. package/dist/spec/catalogs/layouts/text-1x-title-center.json +30 -0
  406. package/dist/spec/catalogs/layouts/text-1x.json +11 -1
  407. package/dist/spec/catalogs/layouts/text-2x-box-title-center.json +37 -0
  408. package/dist/spec/catalogs/layouts/text-2x-box-vertical-title-left.json +37 -0
  409. package/dist/spec/catalogs/layouts/text-2x-center-box-title-center.json +37 -0
  410. package/dist/spec/catalogs/layouts/text-2x-center-box-vertical-title-left.json +37 -0
  411. package/dist/spec/catalogs/layouts/text-2x-center-box.json +32 -0
  412. package/dist/spec/catalogs/layouts/text-2x-center-title-center.json +36 -0
  413. package/dist/spec/catalogs/layouts/text-2x-center-vertical-title-left.json +36 -0
  414. package/dist/spec/catalogs/layouts/text-2x-center.json +31 -0
  415. package/dist/spec/catalogs/layouts/text-2x-left-box.json +32 -0
  416. package/dist/spec/catalogs/layouts/text-2x-title-center.json +36 -0
  417. package/dist/spec/catalogs/layouts/text-2x-vertical-title-left.json +36 -0
  418. package/dist/spec/catalogs/layouts/text-2x.json +10 -0
  419. package/dist/spec/catalogs/layouts/text-3x-box-title-center.json +40 -0
  420. package/dist/spec/catalogs/layouts/text-3x-box-vertical-title-left.json +41 -0
  421. package/dist/spec/catalogs/layouts/text-3x-center-box-title-center.json +40 -0
  422. package/dist/spec/catalogs/layouts/text-3x-center-box-vertical-title-left.json +41 -0
  423. package/dist/spec/catalogs/layouts/text-3x-center-box.json +35 -0
  424. package/dist/spec/catalogs/layouts/text-3x-center-title-center.json +39 -0
  425. package/dist/spec/catalogs/layouts/text-3x-center-vertical-title-left.json +40 -0
  426. package/dist/spec/catalogs/layouts/text-3x-center.json +34 -0
  427. package/dist/spec/catalogs/layouts/text-3x-left-box.json +35 -0
  428. package/dist/spec/catalogs/layouts/text-3x-left.json +34 -0
  429. package/dist/spec/catalogs/layouts/text-3x-title-center.json +39 -0
  430. package/dist/spec/catalogs/layouts/text-3x-vertical-title-left.json +40 -0
  431. package/dist/spec/catalogs/layouts/text-3x.json +10 -0
  432. package/dist/spec/catalogs/layouts/thank-you-cta.json +8 -15
  433. package/dist/spec/catalogs/layouts/three-column.json +9 -15
  434. package/dist/spec/catalogs/layouts/timeline-1x.json +11 -1
  435. package/dist/spec/catalogs/layouts/timeline.json +9 -15
  436. package/dist/spec/catalogs/layouts/title-center-box.json +27 -0
  437. package/dist/spec/catalogs/layouts/title-center-image-bottom.json +34 -0
  438. package/dist/spec/catalogs/layouts/title-center-image-top.json +34 -0
  439. package/dist/spec/catalogs/layouts/title-center.json +26 -0
  440. package/dist/spec/catalogs/layouts/title-left-image-bottom.json +34 -0
  441. package/dist/spec/catalogs/layouts/title-left-image-left.json +34 -0
  442. package/dist/spec/catalogs/layouts/title-left-image-right.json +34 -0
  443. package/dist/spec/catalogs/layouts/title-left-image-top.json +34 -0
  444. package/dist/spec/catalogs/layouts/title-slide.json +8 -15
  445. package/dist/spec/catalogs/layouts/title-subtitle.json +11 -1
  446. package/dist/spec/catalogs/layouts/title.json +11 -1
  447. package/dist/spec/catalogs/layouts/two-column.json +9 -15
  448. package/dist/spec/catalogs/layouts/venn-overlap.json +9 -15
  449. package/dist/spec/catalogs/layouts/waterfall-bridge.json +9 -15
  450. package/dist/spec/catalogs/layouts/wheel-radial.json +9 -15
  451. package/dist/spec/catalogs/manifest.json +22 -22
  452. package/dist/spec/catalogs/narratives/board-meeting.json +45 -45
  453. package/dist/spec/catalogs/narratives/business-narrative.json +19 -19
  454. package/dist/spec/catalogs/narratives/business-review.json +27 -27
  455. package/dist/spec/catalogs/narratives/capacity-planning.json +19 -19
  456. package/dist/spec/catalogs/narratives/challenge-resolution.json +17 -17
  457. package/dist/spec/catalogs/narratives/change-story.json +13 -13
  458. package/dist/spec/catalogs/narratives/classic-story.json +17 -17
  459. package/dist/spec/catalogs/narratives/company-intro.json +21 -21
  460. package/dist/spec/catalogs/narratives/conference-talk.json +4 -4
  461. package/dist/spec/catalogs/narratives/data-story.json +13 -14
  462. package/dist/spec/catalogs/narratives/early-startup-pitch.json +27 -27
  463. package/dist/spec/catalogs/narratives/educate.json +21 -21
  464. package/dist/spec/catalogs/narratives/employee-review.json +19 -19
  465. package/dist/spec/catalogs/narratives/failure-analysis.json +23 -23
  466. package/dist/spec/catalogs/narratives/focus.json +27 -27
  467. package/dist/spec/catalogs/narratives/golden-circle.json +4 -4
  468. package/dist/spec/catalogs/narratives/heros-journey.json +13 -13
  469. package/dist/spec/catalogs/narratives/index.json +145 -145
  470. package/dist/spec/catalogs/narratives/innovation.json +21 -21
  471. package/dist/spec/catalogs/narratives/justice.json +25 -25
  472. package/dist/spec/catalogs/narratives/marketing-strategy.json +25 -25
  473. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +19 -19
  474. package/dist/spec/catalogs/narratives/performance-review.json +25 -25
  475. package/dist/spec/catalogs/narratives/persuade.json +17 -17
  476. package/dist/spec/catalogs/narratives/persuasive-sales.json +19 -19
  477. package/dist/spec/catalogs/narratives/pitch-deck.json +6 -6
  478. package/dist/spec/catalogs/narratives/problem-solution.json +5 -5
  479. package/dist/spec/catalogs/narratives/product-launch.json +23 -23
  480. package/dist/spec/catalogs/narratives/project-proposal.json +23 -23
  481. package/dist/spec/catalogs/narratives/pyramid-principle.json +9 -9
  482. package/dist/spec/catalogs/narratives/qbr.json +8 -8
  483. package/dist/spec/catalogs/narratives/rags-to-riches.json +17 -17
  484. package/dist/spec/catalogs/narratives/reveal.json +19 -19
  485. package/dist/spec/catalogs/narratives/scqa.json +4 -4
  486. package/dist/spec/catalogs/narratives/situation-complication-resolution.json +11 -11
  487. package/dist/spec/catalogs/narratives/sparkline.json +11 -11
  488. package/dist/spec/catalogs/narratives/star-method.json +11 -11
  489. package/dist/spec/catalogs/narratives/status-update.json +15 -15
  490. package/dist/spec/catalogs/narratives/strategic-advisory.json +17 -17
  491. package/dist/spec/catalogs/narratives/strategic-narrative.json +4 -4
  492. package/dist/spec/catalogs/narratives/survey-analysis.json +23 -23
  493. package/dist/spec/catalogs/narratives/survival-story.json +23 -23
  494. package/dist/spec/catalogs/narratives/transformation-arc.json +4 -4
  495. package/dist/spec/catalogs/narratives/trend-analysis.json +17 -17
  496. package/dist/spec/catalogs/narratives/underdog-victory.json +19 -19
  497. package/dist/spec/catalogs/narratives/venture-pitch.json +27 -27
  498. package/dist/spec/catalogs/narratives/vision-roadmap.json +13 -13
  499. package/dist/spec/catalogs/narratives/weekly-progress.json +23 -23
  500. package/dist/spec/catalogs/narratives/what-so-what-now-what.json +9 -9
  501. package/dist/spec/openapi.yaml +4 -7
  502. package/dist/spec/reference/engine-defaults.json +22 -30
  503. package/dist/spec/reference/engine-vocabularies.json +1577 -0
  504. package/dist/spec/schemas/audience.schema.json +6 -27
  505. package/dist/spec/schemas/catalog-index.schema.json +2 -2
  506. package/dist/spec/schemas/catalog-manifest.schema.json +3 -3
  507. package/dist/spec/schemas/chart-type.schema.json +17 -321
  508. package/dist/spec/schemas/color-scheme.schema.json +23 -36
  509. package/dist/spec/schemas/finding.schema.json +191 -0
  510. package/dist/spec/schemas/font-scheme.schema.json +17 -75
  511. package/dist/spec/schemas/language.schema.json +7 -28
  512. package/dist/spec/schemas/layout.schema.json +130 -184
  513. package/dist/spec/schemas/narrative.schema.json +20 -48
  514. package/dist/spec/schemas/opf.schema.json +678 -701
  515. package/dist/spec/schemas/purpose.schema.json +5 -26
  516. package/dist/spec/schemas/social-platform.schema.json +2 -48
  517. package/dist/spec/schemas/theme.schema.json +13 -38
  518. package/dist/spec/schemas/tone.schema.json +4 -25
  519. package/dist/spec-files.d.ts +1 -1
  520. package/dist/spec-files.js +1 -1
  521. package/dist/symbol-font-encodings.js +18448 -1
  522. package/dist/types.d.ts +1125 -4
  523. package/dist/validation-types-BOcY9GTs.d.ts +276 -0
  524. package/dist/validator.d.ts +63 -4
  525. package/dist/validator.js +5 -5
  526. package/dist/yaml.d.ts +102 -0
  527. package/dist/yaml.js +322 -0
  528. package/package.json +9 -17
  529. package/dist/audit.d.ts +0 -35
  530. package/dist/audit.js +0 -7
  531. package/dist/catalogs-ywCamd8C.d.ts +0 -1465
  532. package/dist/catalogs.d.ts +0 -2
  533. package/dist/catalogs.js +0 -2
  534. package/dist/chunk-7N4VMAT4.js +0 -1694
  535. package/dist/chunk-FYLJVF7X.js +0 -18448
  536. package/dist/chunk-INU7ZNSB.js +0 -670
  537. package/dist/chunk-IYCJUKWD.js +0 -951
  538. package/dist/chunk-PIQXLBBJ.js +0 -445
  539. package/dist/chunk-S5W34SIJ.js +0 -1
  540. package/dist/lint-B7azdiuE.d.ts +0 -197
  541. package/dist/lint.d.ts +0 -7
  542. package/dist/lint.js +0 -6
  543. package/dist/previews.d.ts +0 -40
  544. package/dist/previews.js +0 -1
  545. package/dist/schemas-BbPonsTz.d.ts +0 -270
  546. package/dist/spec/catalogs/audiences/customers.json +0 -27
  547. package/dist/spec/catalogs/audiences/executives.json +0 -27
  548. package/dist/spec/catalogs/audiences/investors.json +0 -27
  549. package/dist/spec/catalogs/audiences/marketing-team.json +0 -27
  550. package/dist/spec/catalogs/audiences/regulators.json +0 -27
  551. package/dist/spec/catalogs/audiences/sales-team.json +0 -27
  552. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +0 -91
  553. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +0 -103
  554. package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +0 -79
  555. package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +0 -91
  556. package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +0 -103
  557. package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +0 -79
  558. package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +0 -105
  559. package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +0 -106
  560. package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +0 -123
  561. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +0 -89
  562. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +0 -100
  563. package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +0 -95
  564. package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +0 -108
  565. package/dist/spec/catalogs/chart-types/australia.json +0 -76
  566. package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +0 -136
  567. package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +0 -168
  568. package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +0 -89
  569. package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +0 -101
  570. package/dist/spec/catalogs/chart-types/bullet-bar.json +0 -77
  571. package/dist/spec/catalogs/chart-types/bullet-column-2x.json +0 -89
  572. package/dist/spec/catalogs/chart-types/bullet-column-3x.json +0 -101
  573. package/dist/spec/catalogs/chart-types/bullet-column.json +0 -77
  574. package/dist/spec/catalogs/chart-types/canada.json +0 -86
  575. package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +0 -89
  576. package/dist/spec/catalogs/chart-types/clustered-column.json +0 -95
  577. package/dist/spec/catalogs/chart-types/dot-plot-2x.json +0 -99
  578. package/dist/spec/catalogs/chart-types/dot-plot-3x.json +0 -124
  579. package/dist/spec/catalogs/chart-types/dot-plot-4x.json +0 -149
  580. package/dist/spec/catalogs/chart-types/dot-plot-5x.json +0 -174
  581. package/dist/spec/catalogs/chart-types/dot-plot-6x.json +0 -199
  582. package/dist/spec/catalogs/chart-types/dot-plot.json +0 -74
  583. package/dist/spec/catalogs/chart-types/dumbbell.json +0 -120
  584. package/dist/spec/catalogs/chart-types/line-2x.json +0 -105
  585. package/dist/spec/catalogs/chart-types/line-3x.json +0 -127
  586. package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +0 -144
  587. package/dist/spec/catalogs/chart-types/line-with-high-low.json +0 -144
  588. package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +0 -106
  589. package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +0 -128
  590. package/dist/spec/catalogs/chart-types/sparkline-2x.json +0 -138
  591. package/dist/spec/catalogs/chart-types/sparkline-3x.json +0 -174
  592. package/dist/spec/catalogs/chart-types/sparkline-4x.json +0 -210
  593. package/dist/spec/catalogs/chart-types/sparkline-5x.json +0 -246
  594. package/dist/spec/catalogs/chart-types/sparkline-6x.json +0 -282
  595. package/dist/spec/catalogs/chart-types/sparkline.json +0 -102
  596. package/dist/spec/catalogs/chart-types/stacked-area-2x.json +0 -106
  597. package/dist/spec/catalogs/chart-types/stacked-area-3x.json +0 -123
  598. package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +0 -89
  599. package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +0 -100
  600. package/dist/spec/catalogs/chart-types/stacked-column-2x.json +0 -95
  601. package/dist/spec/catalogs/chart-types/stacked-column-3x.json +0 -108
  602. package/dist/spec/catalogs/chart-types/stacked-line-2x.json +0 -106
  603. package/dist/spec/catalogs/chart-types/stacked-line-3x.json +0 -123
  604. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +0 -107
  605. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +0 -124
  606. package/dist/spec/catalogs/chart-types/treemap-2x.json +0 -101
  607. package/dist/spec/catalogs/chart-types/treemap-3x.json +0 -122
  608. package/dist/spec/catalogs/chart-types/united-kingdom.json +0 -68
  609. package/dist/spec/catalogs/chart-types/united-states.json +0 -82
  610. package/dist/spec/catalogs/layouts/image-bleed.json +0 -10
  611. package/dist/validator-CIylxoIm.d.ts +0 -172
@@ -1,4 +1,5 @@
1
- import './chart-data-Cdr6rRVV.js';
1
+ import { b as CatalogOptions } from './catalog-refs-BSfGELpt.js';
2
+ import './chart-data-BnNqgnC-.js';
2
3
 
3
4
  /** Canonical table grid. No renderer, fonts, DOM or network dependencies. */
4
5
  interface TableBorder {
@@ -43,6 +44,110 @@ declare function tableGrid(value: unknown, path?: string): TableGrid;
43
44
  /** Row boundaries that preserve every vertical merge, used by pagination. */
44
45
  declare function tableRowBoundaries(value: unknown): number[];
45
46
 
47
+ /** The `design` keys that a layout record, the deck and a slide all share and that composition resolves per key. */
48
+ declare const DESIGN_HINT_KEYS: readonly ["titleAlignment", "contentAlignment", "contentBox", "contentDirection", "chartPrimary", "imageFit", "listBullet"];
49
+ type DesignHintKey = typeof DESIGN_HINT_KEYS[number];
50
+ /** Where an effective design hint came from: the slide's own `design`, the deck's `design`, or the slide's layout record. */
51
+ type DesignHintSource = 'slide' | 'deck' | 'layout';
52
+ /** The effective value of every shared design key. A key nobody sets is absent, so the engine default applies. */
53
+ interface DesignHints {
54
+ titleAlignment?: 'left' | 'center' | 'right';
55
+ contentAlignment?: 'left' | 'center' | 'right';
56
+ contentBox?: boolean;
57
+ contentDirection?: 'horizontal' | 'vertical';
58
+ chartPrimary?: 'none' | 'top' | 'bottom' | 'left' | 'right';
59
+ imageFit?: 'cover' | 'contain' | 'stretch';
60
+ listBullet?: 'character' | 'image';
61
+ }
62
+ /** The effective hints plus which level supplied each key and the document path that names it. */
63
+ interface ResolvedDesignHints extends DesignHints {
64
+ /** The level that supplied each key that is set. */
65
+ sources: {
66
+ [K in DesignHintKey]?: DesignHintSource;
67
+ };
68
+ /** Path of the supplying value: `slides.N.design.key`, `design.key`, or for a layout `slides.N.layout` (the reference that selected the record). */
69
+ paths: {
70
+ [K in DesignHintKey]?: string;
71
+ };
72
+ }
73
+ interface ResolveDesignHintsOptions {
74
+ /** The slide, for its own `design`. */
75
+ slide?: unknown;
76
+ /** The slide's resolved layout record, for its `design`. */
77
+ layout?: unknown;
78
+ /** The document, for the deck's `design`. */
79
+ presentation?: unknown;
80
+ /** Index used in the reported paths; defaults to 0. */
81
+ slideIndex?: number;
82
+ /** Host-resolved deck-level values. They rank with the deck's `design`, above it, and below the slide's. */
83
+ deck?: DesignHints;
84
+ }
85
+ /**
86
+ * Resolves the shared design keys with one merge, per key, the slide winning: the slide's `design`, then the
87
+ * deck's `design` (or the host's `deck` values), then the resolved layout record's `design`. A key none of them
88
+ * sets stays absent. A value the schema does not allow for its key is skipped, so the next level answers. Composition, the renderer, the PPTX exporter and the audit all take their values from here
89
+ * (`SlideComposition.design`), so they cannot disagree.
90
+ */
91
+ declare function resolveDesignHints(options?: ResolveDesignHintsOptions): ResolvedDesignHints;
92
+
93
+ /**
94
+ * Metric trend mark (RR-07, FA-06): the arrow and colour that show `metric.trend` and
95
+ * `metric.sentiment` in the SVG preview and the PPTX export. Core's metric layout places the trend word (up, down, flat) as ordinary
96
+ * text; this derives, from that accepted line geometry, one arrow beside it so both engines draw
97
+ * the same shape in the same place and colour. The word stays the text alternative: the arrow
98
+ * adds a visual cue and an `ariaLabel`, never rewritten source text. The arrow always points the
99
+ * way the trend does; its colour (and the trend and delta text colour) follows the sentiment, which
100
+ * defaults to the conventional reading of the trend (up positive, down negative, flat neutral).
101
+ */
102
+
103
+ type MetricTrend = 'up' | 'down' | 'flat';
104
+ /** Whether a change is good news: the colour of the trend mark. */
105
+ type MetricSentiment = 'positive' | 'negative' | 'neutral';
106
+ /** The DrawingML preset geometry that draws each trend (`a:prstGeom prst`). */
107
+ declare const METRIC_TREND_SHAPES: Readonly<Record<MetricTrend, 'upArrow' | 'downArrow' | 'rightArrow'>>;
108
+ declare const METRIC_TREND_MIN_CONTRAST = 4.5;
109
+ interface MetricTrendColorOptions {
110
+ /** The slide background the metric text sits on. */
111
+ background: string;
112
+ /** Neutral colour for a neutral sentiment (the deck's muted text). */
113
+ neutral?: string;
114
+ /** Whether the change is good news; absent, the trend's default (up positive, down negative, flat neutral). */
115
+ sentiment?: MetricSentiment;
116
+ }
117
+ /** The colour of a trend (or, with `options.sentiment`, of its sentiment), kept at >= 4.5:1 against the slide background. */
118
+ declare function metricTrendColor(trend: MetricTrend, options: MetricTrendColorOptions): string;
119
+ interface MetricTrendMark {
120
+ trend: MetricTrend;
121
+ /** The sentiment the colour follows: the metric's own, else the default for the trend. */
122
+ sentiment: MetricSentiment;
123
+ /** DrawingML preset name for native export. */
124
+ shape: 'upArrow' | 'downArrow' | 'rightArrow';
125
+ /** Arrow bounding box in layout pixels (96 per inch). */
126
+ box: {
127
+ x: number;
128
+ y: number;
129
+ width: number;
130
+ height: number;
131
+ };
132
+ /** The arrow outline as polygon points in layout pixels: the preset geometry at default adjustments. */
133
+ points: [number, number][];
134
+ color: string;
135
+ /** Text alternative for the arrow. */
136
+ ariaLabel: string;
137
+ /** Path of the trend field the mark belongs to. */
138
+ path: string;
139
+ }
140
+ /** Outline of the DrawingML upArrow, downArrow or rightArrow preset (adj1 = adj2 = 50000) in `box`. */
141
+ declare function metricTrendPoints(shape: MetricTrendMark['shape'], box: MetricTrendMark['box']): [number, number][];
142
+ /**
143
+ * The arrow for a laid-out metric, or undefined when the metric has no (visible) trend or the
144
+ * arrow has no room. It is square, as tall as the trend word's capitals, on the baseline, and
145
+ * sits after the word for left-aligned metrics and before it for centred or right-aligned ones,
146
+ * so it grows away from the alignment edge. It never leaves the trend field's box. The colour
147
+ * follows `options.sentiment`, else the layout's own (`metric.sentiment`), else the trend's default.
148
+ */
149
+ declare function metricTrendMark(layout: MetricLayout, options: MetricTrendColorOptions): MetricTrendMark | undefined;
150
+
46
151
  /** A positioned thing whose reading position is wanted. */
47
152
  interface ReadingBox {
48
153
  box: {
@@ -62,11 +167,34 @@ interface ReadingBox {
62
167
  * The boxes are read as given: pass them in logical (unmirrored) coordinates and the order is the reading
63
168
  * order of both a left-to-right and a right-to-left deck, because mirroring a deck moves where an item is
64
169
  * drawn and where a line starts together. For boxes that are already mirrored, pass `direction: 'rtl'` to
65
- * order each row from right to left. composeSlide uses this for promoted regions and `opf audit` uses it to
170
+ * order each row from right to left. composeSlide uses this for promoted regions and `opf/reading-order` uses it to
66
171
  * check the composed order, so the two cannot drift apart.
67
172
  */
68
173
  declare function visualReadingOrder<T extends ReadingBox>(items: readonly T[], direction?: 'ltr' | 'rtl'): T[];
69
174
 
175
+ /**
176
+ * Intrinsic aspect ratio (width / height) of an image source, read without fetching: an embedded
177
+ * `data:` URI (PNG, JPEG, GIF, WebP, SVG), or an `asset:<id>` reference to one in `assets`.
178
+ * Any other source (a URL or file path) has no readable dimensions here and returns undefined;
179
+ * hosts resolve those themselves.
180
+ *
181
+ * Only a bounded prefix of the payload is decoded (never the whole of a multi-megabyte logo): 64 KiB, which
182
+ * holds every PNG, GIF and WebP header and the root `<svg>` tag of any real SVG, then 1 MiB for a JPEG whose
183
+ * start-of-frame segment sits behind large EXIF or ICC data. A JPEG whose frame header is still not inside
184
+ * 1 MiB, or an SVG whose root tag is not inside 64 KiB, has no readable proportions (undefined, so a square
185
+ * box). Results are memoized per source string, so a deck's repeated header image is read once.
186
+ */
187
+ type Dimensions = {
188
+ width: number;
189
+ height: number;
190
+ };
191
+ /** Whether the value is an embedded raster or SVG image whose size is readable, and its pixel size (SVG: its user-unit size). */
192
+ declare function intrinsicImageSize(value: unknown, assets?: unknown): (Dimensions & {
193
+ svg: boolean;
194
+ }) | undefined;
195
+ /** Width / height of an embedded image, following `asset:<id>` references through `assets`; undefined when unreadable. */
196
+ declare function intrinsicImageAspect(value: unknown, assets?: unknown): number | undefined;
197
+
70
198
  /**
71
199
  * Text direction primitives shared by composition, the renderer and the PPTX exporter (RR-05).
72
200
  * Pure: no fonts, DOM or catalogs. Deck direction comes from the presentation language's script
@@ -104,6 +232,58 @@ declare function physicalAlignment(alignment: PhysicalAlignment | undefined, dir
104
232
  */
105
233
  declare function paragraphDirectionAt(text: string, deckDirection: TextDirection | string | undefined): (offset: number) => TextDirection;
106
234
 
235
+ /**
236
+ * Engine defaults and engine vocabularies (OPF 0.15, FA-20/21). Small tables of values every engine must know to
237
+ * draw, compiled from spec/reference/engine-defaults.json and spec/reference/engine-vocabularies.json. None of
238
+ * this is catalog data: a document never references these records, and no catalog lookup reaches them.
239
+ */
240
+ type Rec = Readonly<Record<string, unknown>>;
241
+ /** The drawing fields of the theme engines use when a document names none, or its theme resolves nowhere. */
242
+ declare const ENGINE_DEFAULT_THEME: Rec;
243
+ /** The twelve slots engines use when neither the design nor the theme names a resolvable colour scheme. */
244
+ declare const ENGINE_DEFAULT_COLOR_SCHEME: Rec;
245
+ /** The font pair engines use when neither the design nor the theme names a resolvable font scheme. */
246
+ declare const ENGINE_DEFAULT_FONT_SCHEME: Rec;
247
+ /** Chart types in the order an engine offers them when it must pick one. */
248
+ declare const ENGINE_DEFAULT_CHART_TYPES: readonly string[];
249
+ /** Every `chart.type` value: an engine vocabulary, validated directly. */
250
+ declare const CHART_TYPES: readonly string[];
251
+ /** How an engine links a handle on one social platform. */
252
+ interface SocialPlatformVocabulary {
253
+ readonly baseUrl?: string;
254
+ /** URL of a person's profile, with `{handle}` standing for the handle. */
255
+ readonly profileUrlPattern?: string;
256
+ /** URL of an organization's page, when the platform has a separate one. */
257
+ readonly companyUrlPattern?: string;
258
+ /** Prefix a handle is written with (`@` on X). */
259
+ readonly handlePrefix?: string;
260
+ }
261
+ /** The keys of `Organization.socials` and `Speaker.socials`: an engine vocabulary, validated directly. */
262
+ declare const SOCIAL_PLATFORMS: Readonly<Record<string, SocialPlatformVocabulary>>;
263
+ /** What engines know about one language tag. */
264
+ interface LanguageVocabulary {
265
+ /** BCP-47 tag, canonically cased. */
266
+ readonly tag: string;
267
+ /** ISO 15924 script. */
268
+ readonly script: string;
269
+ readonly direction: 'ltr' | 'rtl';
270
+ /** Curated OOXML culture tag (`ja-JP` for `ja`). */
271
+ readonly ooxmlLang: string;
272
+ /** Default script fonts (major/minor) per target application. */
273
+ readonly fonts: {
274
+ readonly powerpoint: {
275
+ readonly major: string;
276
+ readonly minor: string;
277
+ };
278
+ readonly google: {
279
+ readonly major: string;
280
+ readonly minor: string;
281
+ };
282
+ };
283
+ }
284
+ /** The language tags engines know the script, direction, OOXML tag and default script fonts of. */
285
+ declare const LANGUAGES: readonly LanguageVocabulary[];
286
+
107
287
  /**
108
288
  * Numbered lists: the `numbering` field of `items` and `bullets` payloads.
109
289
  *
@@ -218,7 +398,7 @@ declare function formatSlideNumber(format: string, current: number, total: numbe
218
398
 
219
399
  /** Normalize a literal hex color to uppercase #RRGGBB. */
220
400
  declare function normalizeHexColor(value: unknown): string | undefined;
221
- type ResolveColorRefRoles = Partial<Record<'primary' | 'secondary' | 'accent' | 'background' | 'surface' | 'text' | 'textSecondary', string>>;
401
+ type ResolveColorRefRoles = Partial<Record<'primary' | 'secondary' | 'accent' | 'background' | 'surface' | 'surfaceAlt' | 'text' | 'textSecondary', string>>;
222
402
  interface ResolveColorRefOptions {
223
403
  /** Effective color scheme after design resolution (OOXML slots plus optional role hex overrides). */
224
404
  colorScheme: Record<string, unknown>;
@@ -231,6 +411,52 @@ interface ResolveColorRefOptions {
231
411
  }
232
412
  /** Resolve a ColorRef or TextRun.color string to a literal hex color. */
233
413
  declare function resolveColorRef(reference: string, options: ResolveColorRefOptions): string;
414
+ /** WCAG relative luminance below which a slide background counts as dark (the point where white and black text contrast equally). */
415
+ declare const DARK_BACKGROUND_LUMINANCE = 0.179;
416
+ /** True when text on this color should be light: its relative luminance is under {@link DARK_BACKGROUND_LUMINANCE}. An unreadable color is not dark. */
417
+ declare function isDarkColor(color: unknown): boolean;
418
+ /**
419
+ * The slide background a color scheme implies when the design names no single-color background: the scheme's
420
+ * `background` role override, else its light1 slot, else white. Gradient and picture backgrounds use it too.
421
+ */
422
+ declare function defaultSlideBackground(colorScheme: Record<string, unknown>): string;
423
+ interface ResolvedColorRoles {
424
+ /** Role override, else accent1. */
425
+ primary: string;
426
+ /** Role override, else accent2. */
427
+ secondary: string;
428
+ /** Role override, else accent3. */
429
+ accent: string;
430
+ /** The slide background: the resolved single-color background of the slide, else {@link defaultSlideBackground}. */
431
+ background: string;
432
+ /** Role override, else dark2 on a dark background and light2 on a light one. */
433
+ surface: string;
434
+ /** The alternate surface of banded table rows: {@link surfaceAltColor} of `surface` and `text`, always distinguishable from `surface`. */
435
+ surfaceAlt: string;
436
+ /** Default text. On a dark background light1. On a light background the `text` role override, else dark1. */
437
+ text: string;
438
+ /** Role override, else light2 on a dark background and dark2 on a light one. */
439
+ textSecondary: string;
440
+ /** The color of a link run that sets no color of its own: the scheme's hyperlink slot (OOXML hlink), unless that has under 4.5:1 contrast against the slide background, then the slide `text` color. */
441
+ hyperlink: string;
442
+ /** Followed-hyperlink slot (OOXML folHlink). */
443
+ followedHyperlink: string;
444
+ /** Whether the slide background is dark; text, surface and textSecondary defaults follow it. */
445
+ dark: boolean;
446
+ }
447
+ interface ResolveColorRolesOptions {
448
+ /** The slide's resolved single-color background (solid, theme-slot or pattern background color). Omit for a gradient, picture or no background. */
449
+ background?: string | null;
450
+ }
451
+ /**
452
+ * Resolve a color scheme's abstract roles for one slide: the single definition the opf-render preview, the
453
+ * PPTX export and the audit share, so the same deck draws the same colors in all three. Role overrides on the
454
+ * scheme (`primary`, `secondary`, `accent`, `background`, `surface`, `text`, `textSecondary`) win over the slots they
455
+ * default to. The background-dependent roles follow {@link isDarkColor} of the slide background; a `text`
456
+ * override applies only on a light background, so a dark slide always gets readable light1 text.
457
+ * Values are uppercase #RRGGBB, or #RRGGBBAA where the scheme color carries an alpha byte.
458
+ */
459
+ declare function resolveColorRoles(colorScheme: Record<string, unknown>, options?: ResolveColorRolesOptions): ResolvedColorRoles;
234
460
  declare function colorContrast(foreground: string, background: string): number | undefined;
235
461
  /** Keep an inherited text color at >=4.5:1; otherwise select black or white.
236
462
  * Callers must preserve explicit text-color overrides before using this fallback.
@@ -274,12 +500,422 @@ declare const CHART_SERIES_MIN_DIFFERENCE = 12;
274
500
  * and preview and export (which both call this function) draw the same ones.
275
501
  */
276
502
  declare function chartPaletteForFill(fill: string, palette: readonly string[]): string[];
503
+ /** Share of the text colour mixed into the surface to make the muted colour of a highlighted chart. */
504
+ declare const CHART_HIGHLIGHT_MUTED_MIX = 0.3;
505
+ /** Smallest contrast the muted colour keeps against the surface: recessive, but still a visible mark. */
506
+ declare const CHART_HIGHLIGHT_MUTED_MIN_CONTRAST = 1.6;
507
+ /**
508
+ * The two colours of a chart that highlights marks (`chart.highlight`), derived from the theme only: `accent` for the highlighted
509
+ * marks, `muted` for every other mark.
510
+ *
511
+ * - `accent` is the deck's primary colour, kept at >= 3:1 against the surface by `chartColorForFill` (a primary that already has
512
+ * that contrast is returned unchanged).
513
+ * - `muted` is the surface mixed {@link CHART_HIGHLIGHT_MUTED_MIX} of the way towards the text colour: a light grey on a light surface
514
+ * and a dim grey on a dark one, in the surface's own hue. When that falls below {@link CHART_HIGHLIGHT_MUTED_MIN_CONTRAST} against
515
+ * the surface (a surface and text that are close together) the mix moves towards the text colour until it holds.
516
+ *
517
+ * Pure arithmetic on opaque colours: the preview and the PPTX export both call it with the chart panel, the primary and the label
518
+ * colour, so they draw and write the same two colours. An unresolved colour is replaced by white (surface), the surface's own
519
+ * best contrast partner (text) or black (primary).
520
+ */
521
+ declare function chartHighlightColors(surface: string, primary: string, text: string): {
522
+ accent: string;
523
+ muted: string;
524
+ };
525
+ /** Share of the text colour mixed into the surface for the `surfaceAlt` role. */
526
+ declare const SURFACE_ALT_MIX = 0.1;
527
+ /** Smallest contrast `surfaceAlt` keeps against `surface`, so a band is visible next to a plain row. */
528
+ declare const SURFACE_ALT_MIN_CONTRAST = 1.1;
529
+ /**
530
+ * The `surfaceAlt` colour role: the fill of the banded rows of a table whose other body rows take `surface`. It is the surface
531
+ * mixed {@link SURFACE_ALT_MIX} of the way towards the text colour (a slightly darker band on a light table, a slightly lighter one
532
+ * on a dark table), moved further until it differs from the surface by {@link SURFACE_ALT_MIN_CONTRAST}, while the text keeps
533
+ * 4.5:1 on it. When mixing towards the text cannot keep both (a surface and text that are close together), the band moves the
534
+ * other way, away from the text, which only raises the text contrast. Pure arithmetic on opaque colours, so the preview and
535
+ * the PPTX export, which both resolve the `surfaceAlt` ColorRef from their own `surface` and `text` roles, draw and write the
536
+ * same colour. An unresolved surface is white; an unresolved text colour is the surface's best contrast partner.
537
+ */
538
+ declare function surfaceAltColor(surface: string, text: string): string;
539
+
540
+ /**
541
+ * Language/script font model (font-fidelity-everywhere FF-18).
542
+ *
543
+ * Resolves, for a presentation's language and effective font scheme, the font
544
+ * family for each OOXML script slot (`a:latin`, `a:ea`, `a:cs`) of the major
545
+ * (heading) and minor (body) theme fonts, plus the language tags and base
546
+ * direction. Pure: no DOM, fonts, network or mutation. Font-scheme references
547
+ * resolve like every content reference (the document's catalogs groups, then the
548
+ * registered catalogs); nothing is fetched.
549
+ *
550
+ * The language is an engine vocabulary: tags the vocabulary knows resolve
551
+ * deterministically from vendored tables. Only a tag outside it may consult the
552
+ * runtime's ICU likely subtags (`Intl.Locale#maximize`) to find its script.
553
+ *
554
+ * Design: docs/programs/font-fidelity-everywhere/script-font-model.md.
555
+ */
556
+ /** OOXML script slot a writing system uses: `a:latin`, `a:ea` or `a:cs`. */
557
+ type ScriptRole = "latin" | "eastAsian" | "complexScript";
558
+ /** FontScheme.languageFamily as written: the short OOXML names and the long slot names are one value. */
559
+ type LanguageFamilyName = "latin" | "ea" | "cs" | "eastAsian" | "complexScript";
560
+ /**
561
+ * Read a FontScheme `languageFamily` as one of three values. `eastAsian` is `ea` and `complexScript` is
562
+ * `cs`; anything that is not one of the five names returns undefined.
563
+ */
564
+ declare function normalizeLanguageFamily(value: unknown): "latin" | "ea" | "cs" | undefined;
565
+ /** Target application whose language font-scheme defaults apply. */
566
+ type ScriptFontApp = "powerpoint" | "google-slides";
567
+ /** Font family per OOXML script slot for one theme font (major or minor). */
568
+ interface ScriptFontSlots {
569
+ latin: string;
570
+ eastAsian: string;
571
+ complexScript: string;
572
+ }
573
+ /**
574
+ * Where a resolved eastAsian/complexScript family came from:
575
+ * - `fontScheme`: an explicit `eastAsian`/`complexScript` slot on the effective design font scheme.
576
+ * - `schemeFamily`: the design font scheme's own major/minor, because its `languageFamily` names this
577
+ * slot and its `languages` list is empty or names the presentation language.
578
+ * - `language`: the presentation language's font scheme (`fontScheme`, or `googleFontScheme` for Google Slides).
579
+ * - `latin`: no script-specific choice exists, so the slot repeats the latin family.
580
+ */
581
+ type ScriptFontSource = "fontScheme" | "schemeFamily" | "language" | "latin";
582
+ /** A per-script supplemental theme font, as in OOXML `<a:font script="Jpan" typeface="..."/>`. */
583
+ interface ScriptFontSupplement {
584
+ /** OOXML theme script tag (ISO 15924, except Korean uses `Hang`). */
585
+ script: string;
586
+ heading: string;
587
+ body: string;
588
+ }
589
+ interface ResolveScriptFontsOptions extends CatalogOptions {
590
+ /** Which language font default applies. Defaults to `powerpoint` (`language.fontScheme`, else the vocabulary default); `google-slides` prefers `language.googleFontScheme`. */
591
+ app?: ScriptFontApp;
592
+ /** Merge `slides[slideIndex].design` over the deck design, per field, before resolving the font scheme. */
593
+ slideIndex?: number;
594
+ /** Language to resolve instead of the document's `language` (a BCP-47 tag or a Language object). */
595
+ language?: unknown;
596
+ /** Language tag used when neither the document nor `options.language` names a resolvable language. Defaults to `en-US`. */
597
+ defaultLanguage?: string;
598
+ }
599
+ interface ResolvedScriptFonts extends ScriptFontSlots {
600
+ /**
601
+ * Tag for OOXML `a:rPr/@lang` (and `a:endParaRPr/@lang`): an authored tag that carries a region,
602
+ * else the curated `ooxmlLang` of the language vocabulary, else the canonical BCP-47 tag.
603
+ */
604
+ lang: string;
605
+ /** Canonically cased BCP-47 tag for HTML/SVG `lang`: the authored tag. */
606
+ bcp47: string;
607
+ /** `default` when the tag came from `defaultLanguage` because no language resolved. */
608
+ languageSource: "document" | "option" | "default";
609
+ /** ISO 15924 script (`Zzzz` when it cannot be determined). */
610
+ script: string;
611
+ /** Script slot the language's own text uses. */
612
+ scriptRole: ScriptRole;
613
+ direction: "ltr" | "rtl";
614
+ rtl: boolean;
615
+ /** Major (heading) theme font slots. */
616
+ heading: ScriptFontSlots;
617
+ /** Minor (body) theme font slots. The top-level latin/eastAsian/complexScript repeat these. */
618
+ body: ScriptFontSlots;
619
+ /**
620
+ * Supplemental theme font for the language's script. Present only when an explicit slot, the
621
+ * design scheme's own script family or the language's font scheme supplies one; absent for
622
+ * Latin, Cyrillic, Greek and for scripts with no script font. For Armenian, Georgian and
623
+ * Ethiopic (latin slot) an explicit `complexScript` slot or a design `cs` scheme that serves the
624
+ * language replaces the language's own font scheme.
625
+ */
626
+ supplement?: ScriptFontSupplement;
627
+ sources: {
628
+ eastAsian: ScriptFontSource;
629
+ complexScript: ScriptFontSource;
630
+ };
631
+ }
632
+
633
+ /** The OOXML script slot for an ISO 15924 script code. Unknown scripts use the latin slot. */
634
+ declare function scriptFontRole(script: string): ScriptRole;
635
+ /**
636
+ * Resolve the per-script theme fonts, language tags and direction for a
637
+ * presentation (or a `{ design, language, catalogs }` subset of one).
638
+ *
639
+ * The latin slot follows the effective design font scheme exactly as
640
+ * `resolveFontFamilies` does; when nothing names a font scheme it falls back to
641
+ * the engine default font scheme. Each of the eastAsian and complexScript slots
642
+ * takes, in order: the design font scheme's explicit slot; the scheme's own
643
+ * families when its `languageFamily` names the slot and its `languages` list
644
+ * is empty or names the language; the language's font scheme when the
645
+ * language's script uses the slot; otherwise the latin family.
646
+ */
647
+ declare function resolveScriptFonts(input: unknown, options?: ResolveScriptFontsOptions): ResolvedScriptFonts;
648
+ /**
649
+ * The deck base direction composition lays a slide out in: the direction of the presentation language's script
650
+ * (`rtl` for Arabic, Hebrew and the other right-to-left scripts), `ltr` when the document names no language or
651
+ * the language does not resolve. Layout, preview and export all read this one value (RR-05).
652
+ */
653
+ declare function resolveSlideDirection(presentation: unknown, slideIndex?: number): "ltr" | "rtl";
654
+
655
+ /**
656
+ * Deterministic syntax highlighting shared by the SVG preview and the PPTX export (RR-07).
657
+ *
658
+ * `tokenizeCode(source, language)` returns coloured token ranges over the exact source
659
+ * string; everything between tokens is plain. `codeSyntaxPalette` derives one colour per
660
+ * token kind from the deck theme and keeps each at WCAG contrast >= 4.5:1 against the code
661
+ * panel. The scanner is a small hand-written one (no dependency, no network, no locale or
662
+ * clock input): it recognises comments, strings, numbers, keywords, definition names, calls,
663
+ * capitalised types and the structure of JSON, YAML, TOML, HTML/XML and CSS. It never edits
664
+ * the text: callers colour ranges of `code.source` and the concatenated runs equal the source.
665
+ * An unknown or missing language yields no tokens (plain text).
666
+ */
667
+ type CodeTokenKind = 'comment' | 'keyword' | 'string' | 'number' | 'function' | 'type' | 'property';
668
+ interface CodeToken {
669
+ start: number;
670
+ end: number;
671
+ kind: CodeTokenKind;
672
+ }
673
+ /** A slice of one source line: `kind` is absent for plain text. */
674
+ interface CodeRun {
675
+ start: number;
676
+ end: number;
677
+ kind?: CodeTokenKind;
678
+ }
679
+ type CodeSyntaxPalette = Record<CodeTokenKind | 'plain', string>;
680
+ /** Source longer than this is left plain: highlighting must stay bounded. */
681
+ declare const CODE_HIGHLIGHT_MAX_LENGTH = 200000;
682
+ /** Contrast the palette keeps against the code panel. */
683
+ declare const CODE_SYNTAX_MIN_CONTRAST = 4.5;
684
+ /** The code panel colour the preview and the PPTX export both draw. */
685
+ declare const CODE_PANEL_BACKGROUND = "#111827";
686
+ declare const CODE_PANEL_FOREGROUND = "#E5E7EB";
687
+ /** Language ids with a scanner (the keys the aliases resolve to). */
688
+ declare const CODE_HIGHLIGHT_LANGUAGES: readonly string[];
689
+ /** The scanner id for a `code.language` value, or undefined when the language is not highlighted. */
690
+ declare function resolveCodeLanguage(language: unknown): string | undefined;
691
+ /**
692
+ * Token ranges of `source` for a `code.language` value, sorted and non-overlapping. Empty for
693
+ * an unknown language, a missing language, or source longer than CODE_HIGHLIGHT_MAX_LENGTH.
694
+ */
695
+ declare function tokenizeCode(source: string, language?: unknown): CodeToken[];
696
+ /**
697
+ * The runs of one source line `[start, end)`: consecutive slices that cover the line exactly.
698
+ * A token that crosses the line boundary is clipped, so each native text line can be coloured
699
+ * on its own while concatenating the runs returns the line text unchanged. With `source`, a tab
700
+ * character is always its own plain run, as in the preview where a tab is a measured segment: a
701
+ * token (a multi-line string, say) never colours a tab stop.
702
+ */
703
+ declare function codeLineRuns(tokens: readonly CodeToken[], start: number, end: number, source?: string): CodeRun[];
704
+ interface CodeSyntaxPaletteOptions {
705
+ background?: string;
706
+ foreground?: string;
707
+ minimumContrast?: number;
708
+ }
709
+ interface CodeSyntaxPaletteTheme {
710
+ primary?: string;
711
+ secondary?: string;
712
+ accent?: string;
713
+ mutedText?: string;
714
+ }
715
+ /**
716
+ * One colour per token kind from the deck theme: keyword = primary, string = accent,
717
+ * number = secondary, comment = a fixed slate; function, type and property take fixed hues
718
+ * (blue, cyan, pink) rotated away from any theme colour they would collide with. Every
719
+ * colour is lightened until it keeps `minimumContrast` (4.5:1) against the code panel, so a
720
+ * dark theme colour is raised rather than dropped. Deterministic for a given theme.
721
+ */
722
+ declare function codeSyntaxPalette(theme?: CodeSyntaxPaletteTheme, options?: CodeSyntaxPaletteOptions): CodeSyntaxPalette;
723
+ /**
724
+ * The palette for a resolved colour scheme record (`primary`, `secondary`, `accent`, or the
725
+ * `accent1` to `accent3` slots they default to). The preview and the PPTX export both call this
726
+ * with the scheme they resolved, so they cannot disagree on the inputs.
727
+ */
728
+ declare function codeSyntaxPaletteForScheme(scheme: unknown, options?: CodeSyntaxPaletteOptions): CodeSyntaxPalette;
729
+
730
+ /**
731
+ * Timeline event status (FA-11): how a `done`, `current` or `planned` event looks in the SVG
732
+ * preview and in the PPTX export. Core's timeline layout places the markers and the text and
733
+ * records each event's status on them (see `TimelineLayout.markers` and `TimelineTextPart.status`).
734
+ * This derives, from that geometry and the deck's colors, the shapes and text colors to draw, so
735
+ * both engines draw the same marker in the same place and colors.
736
+ *
737
+ * - no status, `done`: a filled marker in the primary color, normal text (today's marker).
738
+ * - `current` ("we are here"): the same filled marker inside a ring, and the label is bold
739
+ * (layout sets the weight, so the measured line breaks already include it).
740
+ * - `planned`: a hollow marker (primary-color outline over the slide background) and muted text.
741
+ *
742
+ * Text colors are kept at 4.5:1 against the slide background, outlines and rings at 3:1.
743
+ */
744
+
745
+ declare const TIMELINE_STATUSES: readonly ["done", "current", "planned"];
746
+ declare const TIMELINE_TEXT_MIN_CONTRAST = 4.5;
747
+ declare const TIMELINE_OUTLINE_MIN_CONTRAST = 3;
748
+ interface TimelineStatusColors {
749
+ /** The slide background the timeline sits on. */
750
+ background: string;
751
+ /** The marker color (the deck's primary color). */
752
+ primary: string;
753
+ /** The color of normal timeline text. */
754
+ text: string;
755
+ /** The muted color of planned events' text (the deck's secondary text). */
756
+ mutedText: string;
757
+ }
758
+ interface TimelineMarkerShape {
759
+ /** `marker` is the event's dot (or hollow circle), `ring` the circle around a current event's dot. */
760
+ role: 'marker' | 'ring';
761
+ /** DrawingML preset name for native export. */
762
+ shape: 'ellipse';
763
+ cx: number;
764
+ cy: number;
765
+ /** Radius of the drawn ellipse (the marker's `radius`, or the ring's `ring.radius`, 1.6 times it). An outline is centered on the edge, so it reaches half its width beyond. */
766
+ radius: number;
767
+ /** Fill color; undefined means no fill (nothing draws inside the shape). */
768
+ fill?: string;
769
+ /** Outline; undefined means no outline. */
770
+ stroke?: {
771
+ color: string;
772
+ width: number;
773
+ };
774
+ }
775
+ /** The shapes of one marker from `layout.markers`, back to front: the ring (current only), then the marker. */
776
+ declare function timelineMarkerShapes(marker: TimelineLayout['markers'][number], colors: TimelineStatusColors): TimelineMarkerShape[];
777
+ /** The color of one timeline text part: muted for a planned event, the normal text color otherwise, kept at >= 4.5:1. */
778
+ declare function timelineTextColor(part: Pick<TimelineTextPart, 'status'>, colors: TimelineStatusColors): string;
779
+
780
+ /**
781
+ * Line emphasis for code blocks (`code.highlight`), shared by the SVG preview, the PPTX export and the
782
+ * validator so they cannot disagree.
783
+ *
784
+ * `code.highlight` lists 1-based source lines: a line number or an inclusive `[start, end]` range.
785
+ * Lines are counted by line break in `code.source`, so a soft-wrapped line is still one line and every
786
+ * displayed line of it takes the same number (`codeLineNumbers`). Engines draw one band behind each
787
+ * run of marked displayed lines (`codeHighlightBands`) and set the unmarked lines in a slightly dimmed
788
+ * colour (`codeHighlightColors`); both colour sets keep WCAG contrast >= 4.5:1 against what they sit on.
789
+ * Everything here is deterministic: no clock, locale or network.
790
+ */
791
+
792
+ /** One `code.highlight` entry: a line number or an inclusive `[start, end]` range. */
793
+ type CodeHighlightEntry = number | [number, number];
794
+ interface CodeHighlightIssue {
795
+ code: 'code-highlight-out-of-range' | 'code-highlight-range-reversed' | 'code-highlight-invalid';
796
+ /** Index of the entry in `code.highlight`. */
797
+ index: number;
798
+ message: string;
799
+ }
800
+ interface CodeHighlightLines {
801
+ /** Lines in the source (a final empty line after a trailing line break is not counted). */
802
+ lineCount: number;
803
+ /** The marked lines inside the source, ascending and unique. Empty when nothing is marked. */
804
+ lines: number[];
805
+ /** Entries that are ignored: past the last line, written end before start, or not line numbers. */
806
+ issues: CodeHighlightIssue[];
807
+ }
808
+ /** Resolve `code.highlight` against its source: the marked lines, and the entries that are ignored. */
809
+ declare function codeHighlightLines(highlight: unknown, source: string): CodeHighlightLines;
810
+ /** The source line number (from 1) of every displayed line; wrapped lines repeat their line's number. */
811
+ declare function codeLineNumbers(sourceLines: readonly {
812
+ boundary: 'soft' | 'hard' | 'end';
813
+ }[]): number[];
814
+ /** A run of consecutive displayed lines (indexes into `sourceLines`, inclusive) whose source lines are marked. */
815
+ interface CodeHighlightBand {
816
+ first: number;
817
+ last: number;
818
+ }
819
+ /** One band per run of consecutive displayed lines that belong to a marked line. */
820
+ declare function codeHighlightBands(sourceLines: readonly {
821
+ boundary: 'soft' | 'hard' | 'end';
822
+ }[], lines: readonly number[]): CodeHighlightBand[];
823
+ interface CodeHighlightColors {
824
+ /** The band behind marked lines: the panel colour tinted with the theme's primary colour. */
825
+ band: string;
826
+ /** Marked lines: the syntax palette, each colour at least 4.5:1 on `band`. */
827
+ lit: CodeSyntaxPalette;
828
+ /** Unmarked lines: the syntax palette moved toward the panel, never below 4.5:1 on it. */
829
+ dim: CodeSyntaxPalette;
830
+ }
831
+ /**
832
+ * The highlight colours for a resolved colour scheme record. The band takes the scheme's `primary`
833
+ * (or `accent1`); the palette is `codeSyntaxPaletteForScheme(scheme)` so highlighted lines keep their syntax
834
+ * colours. Preview and export call this with the scheme they resolved.
835
+ */
836
+ declare function codeHighlightColors(scheme: unknown, palette?: CodeSyntaxPalette): CodeHighlightColors;
837
+
838
+ /**
839
+ * Geometry of a text watermark (`design.watermark = { text, opacity }`), shared by the SVG preview and the
840
+ * PPTX export so both draw the same stamp.
841
+ *
842
+ * The stamp is one line of text, centered on the slide and rotated 30 degrees counterclockwise (rising to
843
+ * the right), the usual diagonal DRAFT or CONFIDENTIAL mark. It is sized so the line spans at most 70% of the
844
+ * slide width and its height is at most 30% of the shorter slide edge, which keeps the rotated line inside
845
+ * every preset from 9:16 portrait to 16:9 widescreen.
846
+ */
847
+
848
+ interface WatermarkTextOptions {
849
+ /** The heading family of the design. Defaults to `sans-serif`. */
850
+ fontFamily?: string;
851
+ /** Defaults to 700. */
852
+ fontWeight?: number;
853
+ textMeasurement?: TextMeasurement;
854
+ }
855
+ interface WatermarkTextLayout {
856
+ /** The text as drawn: line breaks become spaces and the ends are trimmed. */
857
+ text: string;
858
+ fontFamily: string;
859
+ fontWeight: number;
860
+ /** The resolved text style (the host's font registry may rename the family). */
861
+ style: TextStyle;
862
+ /** In the unit of the size passed in (reference pixels for a composed slide). */
863
+ fontSize: number;
864
+ /** Measured width of the line at `fontSize`. */
865
+ textWidth: number;
866
+ /** The unrotated text box, centered on the slide; PPTX rotates it about its center. */
867
+ box: {
868
+ x: number;
869
+ y: number;
870
+ width: number;
871
+ height: number;
872
+ };
873
+ /** Rotation about the slide center in degrees, clockwise positive. */
874
+ rotation: number;
875
+ }
876
+ /** Lay out a text watermark on a slide of `size`; undefined when the text is empty. */
877
+ declare function layoutWatermark(text: unknown, size: {
878
+ width: number;
879
+ height: number;
880
+ }, options?: WatermarkTextOptions): WatermarkTextLayout | undefined;
881
+
882
+ /**
883
+ * DrawingML preset pattern fills (ECMA-376 20.1.10.51 ST_PresetPatternVal) as 8x8 bitmaps,
884
+ * shared by the SVG preview (RR-07) and the PPTX export, which writes the same names as native
885
+ * `a:pattFill prst="..."`.
886
+ *
887
+ * ECMA-376 names the 54 presets but does not define their pixels. These tiles are MEASURED from
888
+ * desktop PowerPoint (Office 365, Windows, 2026-10-01): each preset was exported as a full-slide
889
+ * pattern background (black on white) to a 1280 x 720 PNG and opf-render's
890
+ * `scripts/derive-pattern-bitmaps.mjs` voted every pixel into its (x mod 8, y mod 8) cell; every
891
+ * tile was uniform across all repeats (confidence 1.00) at one image pixel per pattern pixel, so a
892
+ * pattern pixel is one 1/96 inch unit. The tile is anchored at the slide's top-left corner (the
893
+ * phase of the line, grid and diagonal presets matched at no shift). Measured pixel data is
894
+ * committed as data; no third-party table was used. A tile is one row per line, '#' = foreground,
895
+ * '.' = background, top to bottom, left to right.
896
+ */
897
+ /** ST_PresetPatternVal, in specification order. */
898
+ declare const PATTERN_PRESETS: readonly string[];
899
+ /** Engine ids that are not DrawingML names, with the preset they draw and export as. */
900
+ declare const PATTERN_PRESET_ALIASES: Readonly<Record<string, string>>;
901
+ /** The pattern size PowerPoint tiles: 8 x 8 units, one unit per 1/96 inch. */
902
+ declare const PATTERN_TILE_SIZE = 8;
903
+ /** The DrawingML preset a pattern id draws as: a preset name, an alias (diagStripe), or undefined. */
904
+ declare function resolvePatternPreset(preset: unknown): string | undefined;
905
+ /** Eight row bytes, top to bottom, most significant bit = leftmost pixel; undefined for an unknown id. */
906
+ declare function patternBitmap(preset: unknown): readonly number[] | undefined;
907
+ /** Horizontal runs of set pixels (`x`, `y`, `width` in tile units), in reading order. */
908
+ declare function patternRuns(preset: unknown): {
909
+ x: number;
910
+ y: number;
911
+ width: number;
912
+ }[] | undefined;
277
913
 
278
914
  /**
279
915
  * Footnotes, citations and captions (RR-34).
280
916
  *
281
917
  * - A TextRun may `cite` one or more ids of the deck's top-level `references`, or carry an inline
282
- * `footnote`. Markers are numbered per deck in reading order of first use (slides, then regions,
918
+ * `footnote`. Markers are numbered per deck in reading order of first use (slides: the heading group tag, title, subtitle, then regions,
283
919
  * blocks and runs); the same reference id keeps its number, every footnote takes a new one. A run's
284
920
  * marker is a superscript fragment drawn directly after the run (`1`, or `1,2` for several ids);
285
921
  * `richTextLayouter` emits it from `RichTextOptions.citationMarker`, so it wraps with its word and
@@ -345,8 +981,9 @@ interface AnnotatedRun {
345
981
  footnote?: RichText;
346
982
  }
347
983
  /**
348
- * Visit every rich-text run of a slide that can carry a citation (text, bullets and list item runs),
349
- * in reading order: promoted regions (sorted keys), then blocks (recursively), then the root payload.
984
+ * Visit every rich-text run of a slide that can carry a citation (the slide tag, title and subtitle, then
985
+ * text, bullets, list item and quote runs), in reading order: the heading group first (tag, title, subtitle),
986
+ * then promoted regions (sorted keys), then blocks (recursively), then the root payload.
350
987
  * `basePath` is the slide's dotted path (`slides.3`).
351
988
  */
352
989
  declare function walkCitationRuns(slide: unknown, basePath: string, visit: (entry: AnnotatedRun) => void): void;
@@ -490,7 +1127,8 @@ interface ReferencesSlideOptions {
490
1127
  declare function referencesSlide(presentation: unknown, options?: ReferencesSlideOptions): Record<string, unknown>;
491
1128
 
492
1129
  /** The chart constructs the engines draw. Every catalog chart type id resolves to one (see `chartOptionTarget`). */
493
- type ChartOptionKind = 'bar' | 'line' | 'area' | 'pie' | 'doughnut' | 'scatter' | 'radar' | 'treemap' | 'histogram' | 'pareto' | 'box' | 'waterfall' | 'funnel' | 'map';
1130
+ /** `combo` (FA-15) draws clustered columns and line series in one plot, the lines optionally on a secondary value axis. */
1131
+ type ChartOptionKind = 'bar' | 'line' | 'area' | 'pie' | 'doughnut' | 'scatter' | 'radar' | 'treemap' | 'histogram' | 'pareto' | 'box' | 'waterfall' | 'funnel' | 'map' | 'combo';
494
1132
  interface ChartOptionTarget {
495
1133
  kind: ChartOptionKind;
496
1134
  /** Stacked and 100% stacked columns, bars, lines and areas: their data labels have no outside-end position. */
@@ -501,7 +1139,7 @@ type ChartLabelContent = 'category' | 'value' | 'percent';
501
1139
  type ChartLabelPosition = 'center' | 'inside-end' | 'inside-base' | 'outside-end' | 'above' | 'below' | 'left' | 'right';
502
1140
  interface ChartOptionDiagnostic {
503
1141
  code: 'chart-option-adapted';
504
- /** The option that was adapted: `axisTitles.category`, `axisTitles.value`, `legend`, `dataLabels`, `dataLabels.content`, `dataLabels.position` or `dataLabels.separator`. */
1142
+ /** The option that was adapted: `axisTitles.category`, `axisTitles.value`, `axisTitles.secondary`, `legend`, `dataLabels`, `dataLabels.content`, `dataLabels.position`, `dataLabels.separator`, `line`, `secondaryAxis`, `highlight.series` or `highlight.categories`. */
505
1143
  option: string;
506
1144
  reason: 'unsupported-type' | 'unsupported-content' | 'unsupported-position';
507
1145
  message: string;
@@ -509,34 +1147,57 @@ interface ChartOptionDiagnostic {
509
1147
  interface ResolvedChartDataLabels {
510
1148
  /** Canonical order: category, value, percent. Never empty. */
511
1149
  content: ChartLabelContent[];
512
- /** The concrete position, or null for a construct whose labels have no position choice (area, doughnut, radar, treemap). */
1150
+ /** The concrete position, or null for a construct whose labels have no position choice (area, doughnut, radar, treemap). On a combo chart, the column series' position. */
513
1151
  position: ChartLabelPosition | null;
1152
+ /** Combo charts only: the concrete position of the line series' labels (`position` is the column series' one). */
1153
+ linePosition?: ChartLabelPosition;
514
1154
  separator: string;
515
1155
  }
1156
+ /** FA-14: the series and category names `chart.highlight` keeps for a chart type (what the type cannot highlight is dropped, with a diagnostic). */
1157
+ interface ResolvedChartHighlight {
1158
+ /** Series (column) names whose marks take the accent colour. */
1159
+ series: string[];
1160
+ /** Category (row label) names whose marks take the accent colour. */
1161
+ categories: string[];
1162
+ }
516
1163
  interface ResolvedChartOptions {
517
1164
  /** True when the chart carries at least one option (after adaptation); false means every engine keeps today's output. */
518
1165
  active: boolean;
1166
+ /** `secondary` titles the secondary value axis of a combo chart. */
519
1167
  axisTitles: {
520
1168
  category?: string;
521
1169
  value?: string;
1170
+ secondary?: string;
522
1171
  };
523
1172
  /** Undefined = no legend option: each engine keeps its default (a right legend on multi-series, pie and doughnut charts). */
524
1173
  legend?: ChartLegendPosition;
525
1174
  dataLabels?: ResolvedChartDataLabels;
526
1175
  /** True when `dataLabels: false` switches off the labels a construct draws by default (funnel values, treemap category names). */
527
1176
  dataLabelsOff?: boolean;
1177
+ /**
1178
+ * FA-14: the names `chart.highlight` keeps; undefined when the chart has no highlight or its type can highlight nothing it names.
1179
+ * It does not make `active` true: a highlight changes the colours of marks, never the geometry or the reserved space.
1180
+ */
1181
+ highlight?: ResolvedChartHighlight;
528
1182
  diagnostics: ChartOptionDiagnostic[];
529
1183
  }
530
1184
  interface ChartOptionSupport {
1185
+ /** `secondary`: the construct can have a secondary value axis (a combo chart whose `secondaryAxis` names a line series). */
531
1186
  axisTitles: {
532
1187
  category: boolean;
533
1188
  value: boolean;
1189
+ secondary: boolean;
534
1190
  };
535
1191
  legend: boolean;
1192
+ /** FA-14: what `chart.highlight` can name: series (a whole series' marks) and categories (one category's marks, or a pie slice). */
1193
+ highlight: {
1194
+ series: boolean;
1195
+ categories: boolean;
1196
+ };
536
1197
  dataLabels: {
537
1198
  supported: boolean;
538
1199
  content: readonly ChartLabelContent[];
539
- /** Empty when labels have no position choice. */
1200
+ /** Empty when labels have no position choice. A combo chart lists the column positions, then the line-only ones. */
540
1201
  positions: readonly ChartLabelPosition[];
541
1202
  /** The position `auto` resolves to; null with no positions. */
542
1203
  defaultPosition: ChartLabelPosition | null;
@@ -546,7 +1207,7 @@ interface ChartOptionSupport {
546
1207
  }
547
1208
  /** What a chart construct can show. The table the docs, the validator, the preview and the exporter all follow. */
548
1209
  declare function chartOptionSupport(target: ChartOptionTarget): ChartOptionSupport;
549
- /** The option target for a catalog chart type id (deprecated ids resolve to their replacement); undefined for an id outside the catalog. */
1210
+ /** The option target for a catalog chart type id; undefined for an id outside the catalog. */
550
1211
  declare function chartOptionTarget(typeId: unknown): ChartOptionTarget | undefined;
551
1212
  declare const DEFAULT_CHART_LABEL_SEPARATOR = ", ";
552
1213
  /**
@@ -564,6 +1225,53 @@ declare function chartLabelText(parts: {
564
1225
  value?: string;
565
1226
  percent?: string;
566
1227
  }, content: readonly ChartLabelContent[], separator?: string): string;
1228
+ /** Which marks of a chart a highlight names, in the order of the resolved chart data. */
1229
+ interface ChartHighlightMarks {
1230
+ /** One flag per plotted series (the columns after the category and X columns): its marks are highlighted. */
1231
+ series: boolean[];
1232
+ /** One flag per data row: the marks of that category are highlighted. */
1233
+ categories: boolean[];
1234
+ }
1235
+ /**
1236
+ * FA-14: which series and categories of a chart are highlighted. `highlight` is `resolveChartOptions(...).highlight` and `data` the
1237
+ * chart's `resolveChartData` result (its `columns`, `hasX` and `rows`). A mark is highlighted when its series OR its category is
1238
+ * named: a column or bar of series s in row i takes the accent colour when `series[s] || categories[i]`; every other mark takes the muted
1239
+ * colour (`chartHighlightColors`). Category names match the row labels as text (a number label `2024` matches `"2024"`, an empty label
1240
+ * matches `""`), every row that carries the label. Returns undefined when there is no highlight or it names nothing the chart plots (a
1241
+ * name that matches no column or label is the `chart-highlight-unknown-name` validation error), so the engines then draw the chart as if
1242
+ * it had none.
1243
+ */
1244
+ declare function chartHighlightMarks(highlight: ResolvedChartHighlight | undefined, data: {
1245
+ columns: readonly string[];
1246
+ hasX?: boolean;
1247
+ rows: readonly (readonly unknown[])[];
1248
+ }): ChartHighlightMarks | undefined;
1249
+
1250
+ /** Placeholder kinds that hold slide content (everything except the three heading kinds). */
1251
+ declare const LAYOUT_BODY_KINDS: readonly ["text", "list", "image", "video", "chart", "table", "code", "metric", "quote", "timeline"];
1252
+ type LayoutBodyKind = typeof LAYOUT_BODY_KINDS[number];
1253
+ /** What a layout record holds, derived from its placeholders. */
1254
+ interface LayoutContent {
1255
+ /** The most frequent body placeholder kind (a tie goes to the kind that appears first in placeholder order), or 'title' when the layout has no body placeholder. */
1256
+ kind: LayoutBodyKind | 'title';
1257
+ /** The number of body placeholders. */
1258
+ count: number;
1259
+ /** Which heading placeholders the layout has. */
1260
+ heading: {
1261
+ title: boolean;
1262
+ subtitle: boolean;
1263
+ tag: boolean;
1264
+ };
1265
+ }
1266
+ /**
1267
+ * Derives what a layout holds from its `placeholders`, which are the single source of truth: the content kind,
1268
+ * the number of body regions and which headings it has are never stored on the record.
1269
+ */
1270
+ declare function layoutContent(record: {
1271
+ placeholders?: ReadonlyArray<{
1272
+ type?: string;
1273
+ } | null | undefined>;
1274
+ } | null | undefined): LayoutContent;
567
1275
 
568
1276
  /** Portable layout geometry. No fonts, DOM, renderer, or network dependencies. */
569
1277
  interface Composition {
@@ -599,6 +1307,8 @@ interface TextStyle {
599
1307
  italic?: boolean;
600
1308
  path?: string;
601
1309
  fontFace?: FontFaceSelection;
1310
+ /** BCP-47 tag of a run that overrides the deck language (`TextRun.lang`); absent when the deck language applies. */
1311
+ lang?: string;
602
1312
  }
603
1313
  /** Role families. `accent` is present only when the scheme defines an accent role; the slide tag and quote body use it. */
604
1314
  interface FontFamilies {
@@ -607,37 +1317,11 @@ interface FontFamilies {
607
1317
  code: string;
608
1318
  accent?: string;
609
1319
  }
610
- /** Shared last-resort font-scheme id when neither the slide, the deck nor the resolved theme names one.
611
- * One default for every engine, so preview matches export (font-fidelity-everywhere owner decision). */
612
- declare const DEFAULT_FONT_SCHEME = "aptos";
613
- /** Reported when a font-scheme id matches no inline or bundled record. Every engine then uses the
614
- * DEFAULT_FONT_SCHEME record as the base, with any sibling overrides on top. */
615
- interface FontSchemeDiagnostic {
616
- code: "unresolved-font-scheme";
617
- /** Where the unresolved id is written: `slides.N.design.fontScheme`, `design.fontScheme`, or the
618
- * `design.theme` reference whose record names it. */
619
- path: string;
620
- message: string;
621
- /** The unresolved font-scheme id. */
622
- id: string;
623
- /** The font scheme used instead (DEFAULT_FONT_SCHEME). */
624
- fallback: string;
625
- }
626
- interface ResolvedFontScheme {
627
- scheme: Record<string, unknown>;
628
- diagnostic?: FontSchemeDiagnostic;
629
- }
630
- /** Resolve a font-scheme reference the same way in every engine. A string id, or the `id` of an object
631
- * reference, resolves through `lookup` (inline records, then bundled or host catalogs). An unresolved id
632
- * returns a diagnostic, and the DEFAULT_FONT_SCHEME record becomes the base, so preview and export use
633
- * the same families. An object without `id` is an inline scheme on the same base. Sibling fields on an
634
- * object reference override the base per key. */
635
- declare function resolveFontSchemeReference(reference: unknown, lookup: (id: string) => unknown, path?: string): ResolvedFontScheme;
636
- /** Resolve role families from an already-merged font scheme (catalog record plus design overrides).
637
- * A scheme that names no heading or body family gets the DEFAULT_FONT_SCHEME families (Aptos Display, Aptos).
1320
+ /** Resolve role families from an already-merged font scheme (the resolved record plus design overrides).
1321
+ * A scheme that names no heading or body family gets the engine default families (Aptos Display, Aptos).
638
1322
  * `code` comes from the scheme's `code` role, which catalog records such as consolas and courier-new
639
1323
  * carry; otherwise it is Roboto Mono. Heading and body families are never reused for code.
640
- * `accent` is returned only when the scheme defines an `accent` role (a family string or Font object);
1324
+ * `accent` is returned only when the scheme defines an `accent` role (a family name string);
641
1325
  * the slide tag and the quote body use it in place of the body and heading families. */
642
1326
  declare function resolveFontFamilies(input: unknown): FontFamilies;
643
1327
  interface TextMeasurement {
@@ -647,6 +1331,14 @@ interface TextMeasurement {
647
1331
  * Null means no outline. These are not hinted/antialiased raster bounds. */
648
1332
  outlineBounds?: (text: string, fontSize: number, style: TextStyle) => LayoutBox | null;
649
1333
  }
1334
+ /**
1335
+ * The fonts handle every deck-level verb takes as `{ fonts }`. Core reads only `textMeasurement`: how wide the
1336
+ * host's real fonts draw a string. The renderer's `loadFonts()` returns a richer handle (embedded fonts, font
1337
+ * files, registry, manifest) that extends this one, so the same object goes to every verb.
1338
+ */
1339
+ interface Fonts {
1340
+ textMeasurement?: TextMeasurement;
1341
+ }
650
1342
  type MeasureTextWidth = (text: string, fontSize: number) => number;
651
1343
  declare function resolveTextStyle(style: TextStyle, measurement?: TextMeasurement): TextStyle;
652
1344
  declare function textWidthMeasurer(style: TextStyle, measurement?: TextMeasurement): MeasureTextWidth;
@@ -721,47 +1413,96 @@ interface ComposedItem {
721
1413
  * the media box after the band is reserved; `caption.box` is the band inside the same region.
722
1414
  */
723
1415
  caption?: ComposedCaption;
1416
+ /** Picture geometry and treatments of an image item (`field` image); absent on every other item. */
1417
+ image?: ComposedImage;
724
1418
  /** Effective container settings, including inherited readability constraints. */
725
1419
  composition: Composition;
726
1420
  /**
727
1421
  * Resolved horizontal text alignment for this item: titleAlignment for the
728
- * title, contentAlignment for every other item (slide design, then host
729
- * option, then left). Engines anchor native and preview text to this value.
1422
+ * title, contentAlignment for every other item (slide design, deck design, layout design,
1423
+ * then left). Engines anchor native and preview text to this value.
730
1424
  */
731
1425
  alignment: 'left' | 'center' | 'right';
732
1426
  }
1427
+ /** How a picture fills its frame: cover crops around the focus, contain shows all of it, stretch scales it to the frame. */
1428
+ type ImageFit = 'cover' | 'contain' | 'stretch';
1429
+ /** A background also tiles: the picture repeats at its own size from the canvas's top-left corner. */
1430
+ type BackgroundImageFit = ImageFit | 'tile';
1431
+ /** A slide or frame edge, physical (already mirrored in a right-to-left deck). */
1432
+ type ImageEdge = 'left' | 'right' | 'top' | 'bottom';
1433
+ /** A point of a picture as fractions of its width and height from the top-left corner; the default is { x: 0.5, y: 0.5 }. */
1434
+ interface ImageFocus {
1435
+ x: number;
1436
+ y: number;
1437
+ }
1438
+ /** A frame mask. path follows the ECMA-376 preset formula for preset/adjust exactly, in reference pixels. */
1439
+ interface ImageShape {
1440
+ kind: 'rectangle' | 'rounded' | 'circle' | 'hexagon';
1441
+ preset: 'rect' | 'roundRect' | 'ellipse' | 'hexagon';
1442
+ /** DrawingML avLst guide values (for example adj and vf), in 1/100000 units. */
1443
+ adjust: Record<string, number>;
1444
+ path: string;
1445
+ }
1446
+ /** One overlay, shared by image backgrounds and image blocks: drawn directly above its picture, beneath content. */
1447
+ interface ComposedOverlay {
1448
+ /** OPF path of the overlay value, for example `slides.3.design.background.overlay` or `slides.3.blocks.0.overlay`. */
1449
+ path: string;
1450
+ /** ColorRef as authored (hex, eight-digit hex alpha, scheme slot or role, `var:<id>`); engines resolve it. */
1451
+ color: unknown;
1452
+ /** Fill opacity, 0 to 1, multiplied with any eight-digit hex alpha. */
1453
+ opacity: number;
1454
+ /** Physical edge of a band overlay; absent when the overlay covers the whole frame. */
1455
+ edge?: ImageEdge;
1456
+ /** Area covered: the whole frame, or the edge band. */
1457
+ box: LayoutBox;
1458
+ /** Outline to fill: the frame's shape for a whole-frame overlay, a rectangle for a band. */
1459
+ shape: ImageShape;
1460
+ }
1461
+ /** Where the whole picture lands for a fit, for a picture whose aspect ratio is known (see `fitImage`). */
1462
+ interface ImageFitPlacement {
1463
+ /** The whole picture's rectangle in slide coordinates: past the frame for cover, inside it for contain, the frame for stretch. */
1464
+ image: LayoutBox;
1465
+ /** DrawingML srcRect insets as fractions of the picture (positive crops, negative pads); all 0 for stretch. */
1466
+ crop: {
1467
+ left: number;
1468
+ top: number;
1469
+ right: number;
1470
+ bottom: number;
1471
+ };
1472
+ }
1473
+ /** A placed image block's band (FA-22): the image bleeds to `edge` and the rest of the slide composes beside it. */
1474
+ interface ComposedPlacement {
1475
+ /** Physical edge: in a right-to-left deck an authored `left` (the start side) is `right` here. */
1476
+ edge: ImageEdge;
1477
+ /** Share of the slide width (left, right) or height (top, bottom), 0.1 to 0.9. */
1478
+ size: number;
1479
+ /** True when the frame sits inside the slide padding instead of edge to edge. */
1480
+ inset: boolean;
1481
+ /** Where the placement is written: `slides.N.blocks.I.placement`, or `layout.placeholders.P.placement` for a layout image placeholder's. */
1482
+ path: string;
1483
+ }
733
1484
  /**
734
- * Slide-level image resolved from design.slideImage. It is active when the slide sets its own
735
- * design.slideImage, or when the deck sets one and either the slide's layout record declares
736
- * slideImage: true or the slide's root image is the same source.
737
- * Content composes in the part of the slide the image does not occupy; 'background' leaves the whole slide.
1485
+ * Resolved picture geometry of an image item (FA-22): every composed item with `field` 'image' carries one. Engines
1486
+ * draw the picture in `box` with `fit` and `focus`, clipped to `shape`, with `recolor` and `opacity` on its pixels
1487
+ * only, then the `border` on the shape outline, then the `overlay`. This is the paint order and the treatment code
1488
+ * 0.14's slide image used.
738
1489
  */
739
- interface ComposedSlideImage {
740
- /** The design value that configured the image: 'design.slideImage' or 'slides.N.design.slideImage'. */
741
- path: string;
742
- /** Path of the drawn asset value: the design value, or the slide's root image payload it replaced. */
743
- sourcePath: string;
744
- /** Asset value (string or Asset object) that engines resolve like any other image. */
745
- value: unknown;
746
- position: 'background' | 'top' | 'bottom' | 'left' | 'right';
747
- /** crop covers the frame (centered); fit shows the whole image centered inside it. */
748
- fill: 'crop' | 'fit';
749
- /** Band allocated to the image. */
1490
+ interface ComposedImage {
1491
+ /** Allocated region, equal to the item's box: the flow cell (after any card padding and caption band) or the placement band. */
750
1492
  region: LayoutBox;
751
- /** Image frame inside the region. */
1493
+ /** Picture frame inside the region: the band inside the slide padding for an inset placement, then the largest centered box with `aspectRatio` (a circle uses 1). */
752
1494
  box: LayoutBox;
753
- /** True when the slide's root image payload became this slide image instead of a content item. */
754
- replacesContent: boolean;
755
- /** Treatment alt text; engines fall back to the asset's own alt text. */
756
- alt?: string;
1495
+ /** The block's own fit, else the effective design.imageFit, else cover. */
1496
+ fit: ImageFit;
1497
+ focus: ImageFocus;
757
1498
  /** Mask on the frame: a DrawingML preset with its guide values, and the same outline as an SVG path. */
758
- shape: SlideImageShape;
759
- /** Line centered on the shape outline; width in reference pixels (already scaled to the canvas). */
1499
+ shape: ImageShape;
1500
+ /** Line centered on the shape outline; width in reference pixels, already scaled to the canvas. */
760
1501
  border?: {
761
1502
  color: unknown;
762
1503
  width: number;
763
1504
  };
764
- /** Image opacity below 1; the border and overlay are not affected. */
1505
+ /** Picture opacity below 1; the border and overlay are not affected. */
765
1506
  opacity?: number;
766
1507
  /** Luminance-based recolor (Rec. 601 weights on sRGB values). */
767
1508
  recolor?: {
@@ -771,21 +1512,41 @@ interface ComposedSlideImage {
771
1512
  dark: unknown;
772
1513
  light: unknown;
773
1514
  };
774
- /** Scrim over the frame (same shape) or over an edge band of a rectangle frame. */
775
- overlay?: {
776
- color: unknown;
777
- opacity: number;
778
- box: LayoutBox;
779
- shape: SlideImageShape;
780
- };
1515
+ overlay?: ComposedOverlay;
1516
+ /** Present on a placed block: the band along a slide edge that `region` is. */
1517
+ placement?: ComposedPlacement;
1518
+ /** Present when core reads the picture's aspect ratio (a data URI, or an `asset:` reference to one); otherwise call `fitImage` with the host's. */
1519
+ picture?: ImageFitPlacement;
781
1520
  }
782
- /** A frame mask. path follows the ECMA-376 preset formula for preset/adjust exactly, in reference pixels. */
783
- interface SlideImageShape {
784
- kind: 'rectangle' | 'rounded' | 'circle' | 'hexagon';
785
- preset: 'rect' | 'roundRect' | 'ellipse' | 'hexagon';
786
- /** DrawingML avLst guide values (for example adj and vf), in 1/100000 units. */
787
- adjust: Record<string, number>;
1521
+ /**
1522
+ * The slide's picture background (FA-22): the effective `design.background` (the slide's, then the deck's, then
1523
+ * `ComposeSlideOptions.themeBackground`) when it is an image, in object form or as an image-source string. It fills
1524
+ * the whole canvas behind everything and never moves content. Paint order: the colour scheme's default slide
1525
+ * background, the picture (with `recolor` and `opacity` on its pixels), the overlay, then furniture and content.
1526
+ */
1527
+ interface ComposedBackgroundImage {
1528
+ /** Where the background is written: `slides.N.design.background`, `design.background`, or `theme` (ComposeSlideOptions.themeBackground). */
788
1529
  path: string;
1530
+ /** Image source as authored: `asset:<id>`, an https URL, a data URI or a relative path. */
1531
+ src: string;
1532
+ alt?: string;
1533
+ fit: BackgroundImageFit;
1534
+ focus: ImageFocus;
1535
+ /** The whole canvas. */
1536
+ box: LayoutBox;
1537
+ /** Picture opacity below 1; the overlay keeps its own. */
1538
+ opacity?: number;
1539
+ /** Luminance-based recolor of the pixels (Rec. 601 weights on sRGB values), as on an image block. */
1540
+ recolor?: {
1541
+ type: 'grayscale';
1542
+ } | {
1543
+ type: 'duotone';
1544
+ dark: unknown;
1545
+ light: unknown;
1546
+ };
1547
+ overlay?: ComposedOverlay;
1548
+ /** Present when core reads the picture's aspect ratio and the fit is not tile; otherwise call `fitImage` with the host's. */
1549
+ picture?: ImageFitPlacement;
789
1550
  }
790
1551
  /** Which logo variant family a consumer asks for: the full lockup, a square mark, or a stacked lockup. */
791
1552
  type LogoSlot = 'lockup' | 'icon' | 'stacked';
@@ -882,8 +1643,14 @@ interface SlideComposition {
882
1643
  composition: Composition;
883
1644
  /** Repeated furniture is measured separately from body pagination leaves. */
884
1645
  furniture?: FurnitureLayout;
885
- /** Active slide-level image; absent when design.slideImage does not apply to this slide. */
886
- slideImage?: ComposedSlideImage;
1646
+ /**
1647
+ * Effective shared design hints of this slide: slide design, then deck design, then the layout record's design,
1648
+ * per key. Renderers and exporters read titleAlignment, contentAlignment, contentBox and
1649
+ * listBullet here instead of re-deriving them from the document; image items carry their resolved fit in `image.fit`.
1650
+ */
1651
+ design: ResolvedDesignHints;
1652
+ /** Picture background of this slide; absent when the effective background is not an image. */
1653
+ backgroundImage?: ComposedBackgroundImage;
887
1654
  /** Deck logo on a cover or section slide; absent on content slides and when no logo resolves. */
888
1655
  logo?: ComposedLogo;
889
1656
  /**
@@ -902,14 +1669,18 @@ interface ComposeSlideOptions {
902
1669
  design?: {
903
1670
  header?: unknown;
904
1671
  footer?: unknown;
905
- slideImage?: unknown;
906
- imageFill?: unknown;
1672
+ background?: unknown;
1673
+ imageFit?: unknown;
907
1674
  logo?: unknown;
908
1675
  contentDirection?: unknown;
909
1676
  chartPrimary?: unknown;
910
1677
  listBullet?: unknown;
1678
+ titleAlignment?: unknown;
1679
+ contentAlignment?: unknown;
1680
+ contentBox?: unknown;
911
1681
  };
912
1682
  organization?: unknown;
1683
+ speaker?: unknown;
913
1684
  slides?: unknown;
914
1685
  catalogs?: unknown;
915
1686
  references?: unknown;
@@ -921,12 +1692,11 @@ interface ComposeSlideOptions {
921
1692
  */
922
1693
  darkBackground?: boolean;
923
1694
  /**
924
- * Host-resolved social-platform records for generated `socials` furniture.
925
- * Inline `presentation.catalogs.socialPlatforms.records` take precedence. Hosts
926
- * normally pass the bundled catalog; without a matching record a handle renders
927
- * as its raw value, as the Socials contract specifies.
1695
+ * The resolved theme's `background`, the lowest level of the background chain (the slide's design.background, then
1696
+ * the deck's, then this). Only an image background produces geometry (`SlideComposition.backgroundImage`).
1697
+ * `resolveSlideContext` passes it.
928
1698
  */
929
- socialPlatforms?: readonly SocialPlatformRecord[];
1699
+ themeBackground?: unknown;
930
1700
  /** One-based displayed number; source paths still use slideIndex. */
931
1701
  slideNumber?: number;
932
1702
  /** Displayed slide count for `{total}` in slideNumberFormat. Defaults to `presentation.slides.length`. */
@@ -936,7 +1706,7 @@ interface ComposeSlideOptions {
936
1706
  * consults a clock; without this option a current date is reported as unresolved content.
937
1707
  */
938
1708
  date?: string;
939
- fonts?: Partial<FontFamilies>;
1709
+ fontFamilies?: Partial<FontFamilies>;
940
1710
  /**
941
1711
  * Deck base direction (RR-05). Defaults to the direction of the presentation language's script. In a right-to-left deck
942
1712
  * composition mirrors the arrangement (the first column or `left` region is drawn at the right, slide images, logos and
@@ -944,12 +1714,12 @@ interface ComposeSlideOptions {
944
1714
  * reports each paragraph's direction. Alignment stays logical: `left` is the start edge.
945
1715
  */
946
1716
  direction?: TextDirection;
947
- /** Host-resolved alignment for shared content; slide design can override it. */
1717
+ /** Deck-level alignment a host resolved itself. It ranks with `presentation.design`, above the layout record's design and below the slide's own design; hosts normally omit it because composition reads `presentation.design` and the layout. */
948
1718
  contentAlignment?: 'left' | 'center' | 'right';
949
1719
  titleAlignment?: 'left' | 'center' | 'right';
950
1720
  /** Unscaled reference pixels around provided vector outlines; defaults to 1 for body text and 2 for furniture. Explicit values apply to both. */
951
1721
  textRasterPadding?: number;
952
- /** Host-resolved body cards. A slide's explicit design.contentBox overrides this value. */
1722
+ /** Deck-level body cards a host resolved itself, ranked like contentAlignment. A slide's explicit design.contentBox overrides this value. */
953
1723
  contentBox?: boolean;
954
1724
  textMeasurement?: TextMeasurement;
955
1725
  width?: number;
@@ -969,7 +1739,25 @@ declare class OPFCompositionError extends Error {
969
1739
  * Outline of a DrawingML preset in a box, following the ECMA-376 presetShapeDefinitions formulas:
970
1740
  * roundRect (adj; ss = min(w,h), radius = ss*adj/100000), ellipse, and hexagon (adj, vf).
971
1741
  */
972
- declare function slideImageShape(kind: SlideImageShape['kind'], box: LayoutBox, cornerRadius?: number): SlideImageShape;
1742
+ declare function imageShape(kind: ImageShape['kind'], box: LayoutBox, cornerRadius?: number): ImageShape;
1743
+ /**
1744
+ * The shared fit math every engine uses (FA-22). `aspect` is the picture's width / height. cover scales the picture
1745
+ * to cover the frame and centers the focus point in the frame as far as the picture still covers it, so the focus
1746
+ * point always stays in view ({0.5, 0.5} is a center crop, {0, 0} keeps the top-left corner). contain scales it to
1747
+ * fit and centers it; stretch fills the frame exactly. Focus applies to cover only. `crop` holds the DrawingML
1748
+ * srcRect insets as fractions of the picture: positive insets crop, negative insets pad.
1749
+ */
1750
+ declare function fitImage(frame: LayoutBox, fit: ImageFit, aspect: number, focus?: ImageFocus): ImageFitPlacement;
1751
+ /** The background a value describes when it is an image: the object form, or an image-source string (a cover image). */
1752
+ declare function imageBackground(value: unknown): {
1753
+ src: string;
1754
+ alt?: string;
1755
+ fit: BackgroundImageFit;
1756
+ focus: ImageFocus;
1757
+ opacity?: number;
1758
+ recolor?: unknown;
1759
+ overlay?: unknown;
1760
+ } | undefined;
973
1761
  interface ResolveLogoOptions {
974
1762
  /** Variant family to prefer; defaults to the full lockup. */
975
1763
  slot?: LogoSlot;
@@ -993,7 +1781,7 @@ declare function resolveLogo(presentation: unknown, slide: unknown, options?: Re
993
1781
  interface FurniturePartBase {
994
1782
  kind: 'header' | 'footer';
995
1783
  zone: 'left' | 'center' | 'right';
996
- field: 'text' | 'image' | 'logo' | 'organization' | 'socials' | 'section' | 'slideNumber' | 'date';
1784
+ field: 'text' | 'image' | 'logo' | 'organization' | 'speaker' | 'socials' | 'section' | 'slideNumber' | 'date';
997
1785
  /** Literal field or controlling flag, with the actual inherited/local path. */
998
1786
  path: string;
999
1787
  /** String/asset source, when different from a generated field's flag. */
@@ -1027,21 +1815,12 @@ interface FurnitureTextExtras {
1027
1815
  fields?: FurnitureField[];
1028
1816
  links?: FurnitureSocialLink[];
1029
1817
  }
1030
- /** Social-platform catalog fields used to format a profile. */
1031
- interface SocialPlatformRecord {
1032
- id: string;
1033
- name?: string;
1034
- baseUrl?: string;
1035
- profileUrlPattern?: string;
1036
- companyUrlPattern?: string;
1037
- handlePrefix?: string;
1038
- }
1039
1818
  interface SocialProfile {
1040
1819
  /** Single-line display text: the profile URL without an `https://` scheme, or the raw value. */
1041
1820
  text: string;
1042
1821
  /** Full http(s) URL when the value is one or its platform record formats one. */
1043
1822
  href?: string;
1044
- /** Whether a socialPlatforms record formatted a handle. */
1823
+ /** Whether the platform's URL pattern formatted a handle. */
1045
1824
  resolved: boolean;
1046
1825
  }
1047
1826
  interface FurnitureSocialLink extends SocialProfile {
@@ -1051,11 +1830,11 @@ interface FurnitureSocialLink extends SocialProfile {
1051
1830
  sourcePath: string;
1052
1831
  }
1053
1832
  /**
1054
- * Format one Socials value through its platform record, deterministically and
1833
+ * Format one Socials value through the engine's social-platform vocabulary (SOCIAL_PLATFORMS), deterministically and
1055
1834
  * without network access. `owner` selects companyUrlPattern for organizations.
1056
1835
  * URLs pass through; unknown platforms and unformattable values stay raw.
1057
1836
  */
1058
- declare function resolveSocialProfile(platform: string, value: string, records?: readonly SocialPlatformRecord[], owner?: 'organization' | 'speaker'): SocialProfile;
1837
+ declare function resolveSocialProfile(platform: string, value: string, owner?: 'organization' | 'speaker'): SocialProfile;
1059
1838
  interface FurnitureImagePart extends FurniturePartBase {
1060
1839
  type: 'image';
1061
1840
  image: unknown;
@@ -1091,9 +1870,12 @@ declare const FONT_SIZE_GRID_PER_PX = 75;
1091
1870
  declare function snapFontSizeDown(px: number): number;
1092
1871
  /** Smallest grid size not below `px`. Used for readability floors, so a floor is never undercut. */
1093
1872
  declare function snapFontSizeUp(px: number): number;
1873
+ /** `text` is a string or TextRun[] (FA-10); attribution, role and source stay plain strings. */
1094
1874
  interface QuoteContent {
1095
- text: string;
1875
+ text: string | readonly (string | RichTextRun)[];
1096
1876
  attribution?: string;
1877
+ role?: string;
1878
+ photo?: unknown;
1097
1879
  source?: string;
1098
1880
  }
1099
1881
  /** Source and displayed-text ranges are half-open UTF-16 offsets. Added punctuation has no source range. */
@@ -1115,24 +1897,46 @@ interface QuoteTextPart {
1115
1897
  minFontSize: number;
1116
1898
  requestedStyle: TextStyle;
1117
1899
  style: TextStyle;
1118
- /** Absent when the available box is invalid; never fit against an invented one-pixel box. */
1119
- fit?: TextFit;
1900
+ /**
1901
+ * The displayed runs of a rich quote body (FA-10): the quote's TextRun[] with the quotation marks joined to its first and
1902
+ * last run, so a run's index and a citation marker's position never shift. Absent for a string body and for the footer.
1903
+ */
1904
+ runs?: (string | RichTextRun)[];
1905
+ /** Absent when the available box is invalid; never fit against an invented one-pixel box. A rich body reports a RichTextFit. */
1906
+ fit?: TextFit | RichTextFit;
1120
1907
  }
1121
1908
  interface QuoteLayoutDiagnostic extends LayoutDiagnostic {
1122
- reason: 'invalid-part-box' | 'part-outside-cell' | 'text-fit' | 'part-overlap';
1909
+ reason: 'invalid-part-box' | 'part-outside-cell' | 'text-fit' | 'part-overlap' | 'photo-fit';
1123
1910
  parts: QuoteTextPart['role'][];
1124
1911
  }
1912
+ /**
1913
+ * The attributed person's headshot (FA-12): a circle at the start edge of the footer row, beside the
1914
+ * attribution and role lines (the left in a left-to-right deck, the right in a right-to-left one). Its diameter is
1915
+ * three times the footer font size, so it follows the text when the footer shrinks toward the readability floor.
1916
+ */
1917
+ interface QuotePhoto {
1918
+ /** Path of the photo value, `<quote path>.photo`. */
1919
+ path: string;
1920
+ /** Asset value (string or Asset object) that engines resolve like any other image; crop to cover the frame. */
1921
+ value: unknown;
1922
+ /** Square frame, in reference pixels. */
1923
+ box: LayoutBox;
1924
+ /** Circle mask: the `ellipse` DrawingML preset and the same outline as an SVG path, as an image block's shape 'circle'. */
1925
+ shape: ImageShape;
1926
+ }
1125
1927
  interface QuoteLayout {
1126
1928
  algorithm: 'quote-flow-v1';
1127
1929
  textMeasurement: 'estimated' | 'provided';
1128
1930
  parts: QuoteTextPart[];
1931
+ /** Present when the quote has a photo; absent otherwise, and then the layout is the footer-only layout. */
1932
+ photo?: QuotePhoto;
1129
1933
  diagnostics: QuoteLayoutDiagnostic[];
1130
1934
  overflow: boolean;
1131
1935
  }
1132
1936
  interface QuoteLayoutOptions {
1133
1937
  /** Canvas short edge divided by 720. Insets retain the current 18 reference-pixel contract. */
1134
1938
  scale?: number;
1135
- fonts?: Partial<FontFamilies>;
1939
+ fontFamilies?: Partial<FontFamilies>;
1136
1940
  /** Readability floor in reference pixels, before canvas scaling. */
1137
1941
  minFontSize?: number;
1138
1942
  overflow?: Composition['overflow'];
@@ -1140,6 +1944,8 @@ interface QuoteLayoutOptions {
1140
1944
  textMeasurement?: TextMeasurement;
1141
1945
  /** Deck direction; in a right-to-left deck every part fit reports its paragraphs' directions (RR-05). */
1142
1946
  direction?: TextDirection;
1947
+ /** Marker text for a rich body run by its dotted path (`<path>.text.<runIndex>`); composeSlide supplies the deck numbering. */
1948
+ citationMarker?: (runPath: string) => string | undefined;
1143
1949
  }
1144
1950
  /**
1145
1951
  * Allocate and measure quote body/footer space for composition, rendering and export. Callers must
@@ -1153,7 +1959,11 @@ interface MetricContent {
1153
1959
  unit?: string;
1154
1960
  delta?: string | number;
1155
1961
  trend?: 'up' | 'down' | 'flat';
1962
+ /** Whether the change is good news; colours the trend arrow, trend word and delta text (see metricTrendColor). */
1963
+ sentiment?: MetricSentiment;
1156
1964
  }
1965
+ /** The text fields of a metric, each laid out as its own part. `sentiment` is metadata, not text. */
1966
+ type MetricTextRole = Exclude<keyof MetricContent, 'sentiment'>;
1157
1967
  /** Ranges address String(sourceValue), not the numeric token spelling in serialized JSON. */
1158
1968
  interface MetricTextSource {
1159
1969
  path: string;
@@ -1162,7 +1972,7 @@ interface MetricTextSource {
1162
1972
  end: number;
1163
1973
  }
1164
1974
  interface MetricTextPart {
1165
- role: keyof MetricContent;
1975
+ role: MetricTextRole;
1166
1976
  path: string;
1167
1977
  text: string;
1168
1978
  sources: MetricTextSource[];
@@ -1190,6 +2000,8 @@ interface MetricLayout {
1190
2000
  alignment: 'left' | 'center' | 'right';
1191
2001
  textMeasurement: 'estimated' | 'provided';
1192
2002
  arrangement: 'inline-unit' | 'stacked';
2003
+ /** The metric's `sentiment`, passed through for metricTrendMark; omitted when the content has none. */
2004
+ sentiment?: MetricSentiment;
1193
2005
  /** At most 48 arrangements; value fitting is bounded by 77 reference-size trials per arrangement. */
1194
2006
  attempts: number;
1195
2007
  parts: MetricTextPart[];
@@ -1208,10 +2020,13 @@ interface MetricLayoutOptions extends QuoteLayoutOptions {
1208
2020
  * beside it from these accepted parts. Consumers must reuse these accepted parts and source ranges.
1209
2021
  */
1210
2022
  declare function layoutMetric(value: string | number | MetricContent, box: LayoutBox, options?: MetricLayoutOptions): MetricLayout;
2023
+ /** Progress of a timeline event (FA-11). Engines draw it from the deck's colors; see `timelineMarkerShapes`. */
2024
+ type TimelineStatus = 'done' | 'current' | 'planned';
1211
2025
  interface TimelineEvent {
1212
2026
  when?: string;
1213
2027
  what: string;
1214
2028
  description?: string;
2029
+ status?: TimelineStatus;
1215
2030
  }
1216
2031
  interface TimelineContent {
1217
2032
  name?: string;
@@ -1221,6 +2036,8 @@ interface TimelineContent {
1221
2036
  interface TimelineTextPart {
1222
2037
  role: 'name' | 'description' | 'when' | 'what' | 'event-description';
1223
2038
  eventIndex?: number;
2039
+ /** The event's status; absent for metadata parts and for events without a status. */
2040
+ status?: TimelineStatus;
1224
2041
  path: string;
1225
2042
  text: string;
1226
2043
  sources: {
@@ -1247,12 +2064,23 @@ interface TimelineLayout {
1247
2064
  textMeasurement: 'provided' | 'estimated';
1248
2065
  textOutlines: 'provided' | 'unavailable';
1249
2066
  parts: TimelineTextPart[];
2067
+ /**
2068
+ * One marker per event. `radius` is the marker's own radius; `status` repeats the event's status
2069
+ * (absent without one). A 'current' marker also has `ring.radius`, 1.6 times `radius`, and a
2070
+ * 'current' or 'planned' marker has the `strokeWidth` of its outline and ring. Every radius is that
2071
+ * of the drawn ellipse; an outline is centered on the ellipse edge, so it reaches half a stroke beyond.
2072
+ */
1250
2073
  markers: {
1251
2074
  path: string;
1252
2075
  eventIndex: number;
1253
2076
  x: number;
1254
2077
  y: number;
1255
2078
  radius: number;
2079
+ status?: TimelineStatus;
2080
+ ring?: {
2081
+ radius: number;
2082
+ };
2083
+ strokeWidth?: number;
1256
2084
  }[];
1257
2085
  connector: {
1258
2086
  x1: number;
@@ -1347,6 +2175,10 @@ interface RichTextRun {
1347
2175
  link?: string;
1348
2176
  superscript?: boolean;
1349
2177
  subscript?: boolean;
2178
+ /** Inline code: the run takes the design's code font (`RichTextOptions.codeFontFamily`) unless it names its own `fontFamily`. */
2179
+ code?: boolean;
2180
+ /** BCP-47 tag that overrides the deck language for this run; it reaches the fragment style as `style.lang`. */
2181
+ lang?: string;
1350
2182
  /** RR-34: reference ids this run cites (a marker follows the run; the deck's `references` list resolves them). */
1351
2183
  cite?: string | string[];
1352
2184
  /** RR-34: an inline footnote for this run (a marker follows the run; the note is listed in the slide's footnote area). */
@@ -1385,6 +2217,8 @@ interface RichTextFit extends TextFit {
1385
2217
  }
1386
2218
  interface RichTextOptions {
1387
2219
  style: TextStyle;
2220
+ /** The design's code family for runs with `code: true`; `monospace` when absent. */
2221
+ codeFontFamily?: string;
1388
2222
  textMeasurement?: TextMeasurement;
1389
2223
  /** Use one measured line advance for every line, as native table cells do. */
1390
2224
  uniformLineHeight?: boolean;
@@ -1472,6 +2306,8 @@ interface TableLayoutOptions {
1472
2306
  scale?: number;
1473
2307
  minFontSize?: number;
1474
2308
  fontFamily?: string;
2309
+ /** The design's code family for cell runs with `code: true`. */
2310
+ codeFontFamily?: string;
1475
2311
  textMeasurement?: TextMeasurement;
1476
2312
  path?: string;
1477
2313
  /** RR-54: the document, for a dataset-backed table (`{ dataset }`): its headers, rows and column formats come from `datasets`. */
@@ -1527,4 +2363,4 @@ declare function resolveCanvasDimensions(input: unknown): {
1527
2363
  height: number;
1528
2364
  };
1529
2365
 
1530
- export { DEFAULT_FURNITURE_DATE_FORMAT as $, type AnnotatedRun as A, type CodeLayoutOptions as B, type ComposeSlideOptions as C, type CodeLineSegment as D, type CodeLineSource as E, type FontSchemeDiagnostic as F, type CodeTextFit as G, type CodeTextPart as H, type ComposedCaption as I, type ComposedFlow as J, type ComposedFootnoteEntry as K, type LayoutDiagnostic as L, type MetricLayout as M, type ComposedFootnotes as N, type ComposedGroup as O, type ComposedItem as P, type ComposedLogo as Q, type ComposedSlideImage as R, type Composition as S, type TextMeasurement as T, type CompositionCandidate as U, type CompositionDecision as V, type CompositionExplanation as W, type CompositionPenalties as X, type CompositionTrack as Y, DEFAULT_CHART_LABEL_SEPARATOR as Z, DEFAULT_FONT_SCHEME as _, type AnnotationFitter as a, type RichTextRun as a$, DEFAULT_SLIDE_NUMBER_FORMAT as a0, type DeckCitations as a1, FONT_SIZE_GRID_PER_PX as a2, FOOTNOTE_MAX_RATIO as a3, type FontFamilies as a4, type FootnoteLayoutOptions as a5, type FurnitureField as a6, type FurnitureImagePart as a7, type FurnitureLayout as a8, type FurniturePart as a9, type NumberingInput as aA, type NumberingStyleName as aB, type NumberingSuffix as aC, OPFCompositionError as aD, PICTURE_BULLET_SCALE as aE, type PhysicalAlignment as aF, type QuoteContent as aG, type QuoteLayout as aH, type QuoteLayoutDiagnostic as aI, type QuoteLayoutOptions as aJ, type QuoteTextPart as aK, type QuoteTextSource as aL, type Reference as aM, type ReferencesSlideOptions as aN, type ResolveColorRefOptions as aO, type ResolveColorRefRoles as aP, type ResolveLogoOptions as aQ, type ResolvedChartDataLabels as aR, type ResolvedChartOptions as aS, type ResolvedFontScheme as aT, type ResolvedLogo as aU, type ResolvedNumbering as aV, type RichText as aW, type RichTextFit as aX, type RichTextFragment as aY, type RichTextLine as aZ, type RichTextOptions as a_, type FurniturePartBase as aa, type FurnitureSocialLink as ab, type FurnitureTextExtras as ac, type FurnitureTextPart as ad, type LayoutBox as ae, type ListBulletImage as af, type ListEntryLayout as ag, type ListFit as ah, type ListFitOptions as ai, type ListNumber as aj, type ListText as ak, type ListValue as al, type LogoSlot as am, MAX_COMPOSITION_DEPTH as an, MAX_NUMBERING_LEVELS as ao, MAX_NUMBERING_VALUE as ap, MAX_ROMAN_VALUE as aq, type MeasureTextWidth as ar, type MetricContent as as, type MetricLayoutDiagnostic as at, type MetricLayoutOptions as au, type MetricTextPart as av, type MetricTextSource as aw, NUMBERING_STYLES as ax, NUMBERING_SUFFIXES as ay, type Numbering as az, type AnnotationLayoutOptions as b, sliceNumberedItems as b$, type SlideCitations as b0, type SlideComposition as b1, type SlideImageShape as b2, type SocialPlatformRecord as b3, type SocialProfile as b4, type TextDirection as b5, type TextFit as b6, type TextLineInk as b7, type TextPlacement as b8, type TextPlacementLine as b9, layoutCaption as bA, layoutCode as bB, layoutFootnotes as bC, layoutFurniture as bD, layoutMetric as bE, layoutQuote as bF, layoutTimeline as bG, listNumbers as bH, measureText as bI, measureTextOutline as bJ, normalizeHexColor as bK, numberingAtLevel as bL, numberingStyleDraws as bM, paragraphDirection as bN, paragraphDirectionAt as bO, physicalAlignment as bP, placeTextLines as bQ, referencesSlide as bR, resolveCanvasDimensions as bS, resolveChartOptions as bT, resolveColorRef as bU, resolveFontFamilies as bV, resolveFontSchemeReference as bW, resolveLogo as bX, resolveNumbering as bY, resolveSocialProfile as bZ, resolveTextStyle as b_, type TextStyle as ba, type TimelineContent as bb, type TimelineEvent as bc, type TimelineLayout as bd, type TimelineLayoutDiagnostic as be, type TimelineLayoutOptions as bf, type TimelineTextPart as bg, annotationText as bh, captionSettings as bi, chartColorForFill as bj, chartLabelText as bk, chartOptionSupport as bl, chartOptionTarget as bm, chartPaletteForFill as bn, citationMarkerText as bo, collectCitations as bp, colorContrast as bq, composeSlide as br, fitList as bs, fitRichText as bt, fitText as bu, formatChartLabelNumber as bv, formatChartLabelPercent as bw, formatFurnitureDate as bx, formatListNumber as by, formatSlideNumber as bz, CAPTIONABLE_FIELDS as c, slideCitations as c0, snapFontSizeDown as c1, snapFontSizeUp as c2, textColorForFill as c3, textWidthMeasurer as c4, walkCitationRuns as c5, wrapText as c6, type FontFaceSelection as c7, type ReadingBox as c8, type SourceTextFit as c9, type TableBorder as ca, type TableCellLayout as cb, type TableCellStyle as cc, type TableGrid as cd, type TableGridCell as ce, type TableGridIssue as cf, type TableLayout as cg, type TableLayoutOptions as ch, type TableRowLayout as ci, type TextLineSegment as cj, type TextLineSource as ck, layoutTable as cl, slideImageShape as cm, tableGrid as cn, tableRowBoundaries as co, visualReadingOrder as cp, CAPTION_FONT_RATIO as d, CAPTION_MAX_RATIO as e, CHART_SERIES_MIN_DIFFERENCE as f, CHART_SERIES_MIN_LIGHTNESS_STEP as g, CITATION_MARKER_RAISE as h, CITATION_MARKER_SCALE as i, type Caption as j, type CaptionAlignment as k, type CaptionObject as l, type CaptionPosition as m, type CaptionSettings as n, type ChartLabelContent as o, type ChartLabelPosition as p, type ChartLegendPosition as q, type ChartOptionDiagnostic as r, type ChartOptionKind as s, type ChartOptionSupport as t, type ChartOptionTarget as u, type CitationMarker as v, type CitationNote as w, type CodeContent as x, type CodeLayout as y, type CodeLayoutDiagnostic as z };
2366
+ export { type CodeHighlightColors as $, type AnnotatedRun as A, type BackgroundImageFit as B, type ComposeSlideOptions as C, CODE_SYNTAX_MIN_CONTRAST as D, ENGINE_DEFAULT_CHART_TYPES as E, type Fonts as F, type Caption as G, type CaptionAlignment as H, type CaptionObject as I, type CaptionPosition as J, type CaptionSettings as K, type LayoutDiagnostic as L, type MeasureTextWidth as M, type ChartHighlightMarks as N, type ChartLabelContent as O, type ChartLabelPosition as P, type ChartLegendPosition as Q, type ChartOptionDiagnostic as R, SOCIAL_PLATFORMS as S, type TextMeasurement as T, type ChartOptionKind as U, type ChartOptionSupport as V, type ChartOptionTarget as W, type CitationMarker as X, type CitationNote as Y, type CodeContent as Z, type CodeHighlightBand as _, CHART_TYPES as a, type ListBulletImage as a$, type CodeHighlightEntry as a0, type CodeHighlightIssue as a1, type CodeHighlightLines as a2, type CodeLayout as a3, type CodeLayoutDiagnostic as a4, type CodeLayoutOptions as a5, type CodeLineSegment as a6, type CodeLineSource as a7, type CodeRun as a8, type CodeSyntaxPalette as a9, DEFAULT_SLIDE_NUMBER_FORMAT as aA, DESIGN_HINT_KEYS as aB, type DeckCitations as aC, type DesignHintKey as aD, type DesignHintSource as aE, type DesignHints as aF, FONT_SIZE_GRID_PER_PX as aG, FOOTNOTE_MAX_RATIO as aH, type FontFaceSelection as aI, type FootnoteLayoutOptions as aJ, type FurnitureField as aK, type FurnitureImagePart as aL, type FurnitureLayout as aM, type FurniturePart as aN, type FurniturePartBase as aO, type FurnitureSocialLink as aP, type FurnitureTextExtras as aQ, type FurnitureTextPart as aR, type ImageEdge as aS, type ImageFit as aT, type ImageFitPlacement as aU, type ImageFocus as aV, type ImageShape as aW, LAYOUT_BODY_KINDS as aX, type LayoutBodyKind as aY, type LayoutBox as aZ, type LayoutContent as a_, type CodeSyntaxPaletteOptions as aa, type CodeSyntaxPaletteTheme as ab, type CodeTextFit as ac, type CodeTextPart as ad, type CodeToken as ae, type CodeTokenKind as af, type ComposedBackgroundImage as ag, type ComposedCaption as ah, type ComposedFlow as ai, type ComposedFootnoteEntry as aj, type ComposedFootnotes as ak, type ComposedGroup as al, type ComposedImage as am, type ComposedItem as an, type ComposedLogo as ao, type ComposedOverlay as ap, type ComposedPlacement as aq, type Composition as ar, type CompositionCandidate as as, type CompositionDecision as at, type CompositionExplanation as au, type CompositionPenalties as av, type CompositionTrack as aw, DARK_BACKGROUND_LUMINANCE as ax, DEFAULT_CHART_LABEL_SEPARATOR as ay, DEFAULT_FURNITURE_DATE_FORMAT as az, ENGINE_DEFAULT_COLOR_SCHEME as b, type RichTextOptions as b$, type ListEntryLayout as b0, type ListFit as b1, type ListFitOptions as b2, type ListNumber as b3, type ListText as b4, type ListValue as b5, type LogoSlot as b6, MAX_COMPOSITION_DEPTH as b7, MAX_NUMBERING_LEVELS as b8, MAX_NUMBERING_VALUE as b9, type QuoteLayout as bA, type QuoteLayoutDiagnostic as bB, type QuoteLayoutOptions as bC, type QuotePhoto as bD, type QuoteTextPart as bE, type QuoteTextSource as bF, type ReadingBox as bG, type Reference as bH, type ReferencesSlideOptions as bI, type ResolveColorRefOptions as bJ, type ResolveColorRefRoles as bK, type ResolveColorRolesOptions as bL, type ResolveDesignHintsOptions as bM, type ResolveLogoOptions as bN, type ResolveScriptFontsOptions as bO, type ResolvedChartDataLabels as bP, type ResolvedChartHighlight as bQ, type ResolvedChartOptions as bR, type ResolvedColorRoles as bS, type ResolvedDesignHints as bT, type ResolvedLogo as bU, type ResolvedNumbering as bV, type ResolvedScriptFonts as bW, type RichText as bX, type RichTextFit as bY, type RichTextFragment as bZ, type RichTextLine as b_, MAX_ROMAN_VALUE as ba, METRIC_TREND_MIN_CONTRAST as bb, METRIC_TREND_SHAPES as bc, type MetricContent as bd, type MetricLayout as be, type MetricLayoutDiagnostic as bf, type MetricLayoutOptions as bg, type MetricSentiment as bh, type MetricTextPart as bi, type MetricTextSource as bj, type MetricTrend as bk, type MetricTrendColorOptions as bl, type MetricTrendMark as bm, NUMBERING_STYLES as bn, NUMBERING_SUFFIXES as bo, type Numbering as bp, type NumberingInput as bq, type NumberingStyleName as br, type NumberingSuffix as bs, OPFCompositionError as bt, PATTERN_PRESETS as bu, PATTERN_PRESET_ALIASES as bv, PATTERN_TILE_SIZE as bw, PICTURE_BULLET_SCALE as bx, type PhysicalAlignment as by, type QuoteContent as bz, ENGINE_DEFAULT_FONT_SCHEME as c, fitImage as c$, type RichTextRun as c0, SURFACE_ALT_MIN_CONTRAST as c1, SURFACE_ALT_MIX as c2, type ScriptFontApp as c3, type ScriptFontSlots as c4, type ScriptFontSource as c5, type ScriptFontSupplement as c6, type ScriptRole as c7, type SlideCitations as c8, type SlideComposition as c9, type TimelineMarkerShape as cA, type TimelineStatus as cB, type TimelineStatusColors as cC, type TimelineTextPart as cD, type WatermarkTextLayout as cE, type WatermarkTextOptions as cF, annotationText as cG, captionSettings as cH, chartColorForFill as cI, chartHighlightColors as cJ, chartHighlightMarks as cK, chartLabelText as cL, chartOptionSupport as cM, chartOptionTarget as cN, chartPaletteForFill as cO, citationMarkerText as cP, codeHighlightBands as cQ, codeHighlightColors as cR, codeHighlightLines as cS, codeLineNumbers as cT, codeLineRuns as cU, codeSyntaxPalette as cV, codeSyntaxPaletteForScheme as cW, collectCitations as cX, colorContrast as cY, composeSlide as cZ, defaultSlideBackground as c_, type SocialProfile as ca, type SourceTextFit as cb, TIMELINE_OUTLINE_MIN_CONTRAST as cc, TIMELINE_STATUSES as cd, TIMELINE_TEXT_MIN_CONTRAST as ce, type TableBorder as cf, type TableCellLayout as cg, type TableCellStyle as ch, type TableGrid as ci, type TableGridCell as cj, type TableGridIssue as ck, type TableLayout as cl, type TableLayoutOptions as cm, type TableRowLayout as cn, type TextDirection as co, type TextFit as cp, type TextLineInk as cq, type TextLineSegment as cr, type TextLineSource as cs, type TextPlacement as ct, type TextPlacementLine as cu, type TimelineContent as cv, type TimelineEvent as cw, type TimelineLayout as cx, type TimelineLayoutDiagnostic as cy, type TimelineLayoutOptions as cz, ENGINE_DEFAULT_THEME as d, textWidthMeasurer as d$, fitList as d0, fitRichText as d1, fitText as d2, formatChartLabelNumber as d3, formatChartLabelPercent as d4, formatFurnitureDate as d5, formatListNumber as d6, formatSlideNumber as d7, imageBackground as d8, imageShape as d9, patternRuns as dA, physicalAlignment as dB, placeTextLines as dC, referencesSlide as dD, resolveCanvasDimensions as dE, resolveChartOptions as dF, resolveCodeLanguage as dG, resolveColorRef as dH, resolveColorRoles as dI, resolveDesignHints as dJ, resolveFontFamilies as dK, resolveLogo as dL, resolveNumbering as dM, resolvePatternPreset as dN, resolveScriptFonts as dO, resolveSlideDirection as dP, resolveSocialProfile as dQ, resolveTextStyle as dR, scriptFontRole as dS, sliceNumberedItems as dT, slideCitations as dU, snapFontSizeDown as dV, snapFontSizeUp as dW, surfaceAltColor as dX, tableGrid as dY, tableRowBoundaries as dZ, textColorForFill as d_, intrinsicImageAspect as da, intrinsicImageSize as db, isDarkColor as dc, layoutCaption as dd, layoutCode as de, layoutContent as df, layoutFootnotes as dg, layoutFurniture as dh, layoutMetric as di, layoutQuote as dj, layoutTable as dk, layoutTimeline as dl, layoutWatermark as dm, listNumbers as dn, measureText as dp, measureTextOutline as dq, metricTrendColor as dr, metricTrendMark as ds, metricTrendPoints as dt, normalizeHexColor as du, numberingAtLevel as dv, numberingStyleDraws as dw, paragraphDirection as dx, paragraphDirectionAt as dy, patternBitmap as dz, type FontFamilies as e, timelineMarkerShapes as e0, timelineTextColor as e1, tokenizeCode as e2, visualReadingOrder as e3, walkCitationRuns as e4, wrapText as e5, LANGUAGES as f, type LanguageFamilyName as g, type LanguageVocabulary as h, type SocialPlatformVocabulary as i, type TextStyle as j, type AnnotationFitter as k, type AnnotationLayoutOptions as l, CAPTIONABLE_FIELDS as m, normalizeLanguageFamily as n, CAPTION_FONT_RATIO as o, CAPTION_MAX_RATIO as p, CHART_HIGHLIGHT_MUTED_MIN_CONTRAST as q, CHART_HIGHLIGHT_MUTED_MIX as r, CHART_SERIES_MIN_DIFFERENCE as s, CHART_SERIES_MIN_LIGHTNESS_STEP as t, CITATION_MARKER_RAISE as u, CITATION_MARKER_SCALE as v, CODE_HIGHLIGHT_LANGUAGES as w, CODE_HIGHLIGHT_MAX_LENGTH as x, CODE_PANEL_BACKGROUND as y, CODE_PANEL_FOREGROUND as z };