@openpresentation/opf 0.12.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/README.md +28 -23
  2. package/dist/{catalogs-BnI7JKcn.d.ts → catalogs-D-yyQWCQ.d.ts} +86 -208
  3. package/dist/catalogs.d.ts +2 -2
  4. package/dist/catalogs.js +1 -1
  5. package/dist/chart-data-B_3z9VTb.d.ts +188 -0
  6. package/dist/chunk-4LDGKLUC.js +192 -0
  7. package/dist/{chunk-V2537ENL.js → chunk-4VJDTF55.js} +2 -90
  8. package/dist/chunk-5ZU6JAPP.js +83 -0
  9. package/dist/{chunk-HOBSL7AJ.js → chunk-6OXY2CP3.js} +3604 -1644
  10. package/dist/{chunk-RUC7L5DJ.js → chunk-BFLVSVA7.js} +26 -26
  11. package/dist/chunk-CSQHPVGL.js +94 -0
  12. package/dist/{chunk-GJKJL4YY.js → chunk-D3TY4TT6.js} +34 -412
  13. package/dist/chunk-JDJBDYSR.js +4167 -0
  14. package/dist/{chunk-4LAM3N6S.js → chunk-LS2FMPI5.js} +1497 -1097
  15. package/dist/{chunk-SOSOBKQ2.js → chunk-Q2TCMN56.js} +6 -7
  16. package/dist/chunk-UPQQD7MA.js +1840 -0
  17. package/dist/{chunk-AUM5MXBR.js → chunk-XIZUK2XM.js} +36 -32
  18. package/dist/{chunk-E34DJ5LL.js → chunk-XOZ4KMSR.js} +2427 -10820
  19. package/dist/chunk-Z65B2B77.js +601 -0
  20. package/dist/{composition-DWbCiMwF.d.ts → composition-_WEwBe2a.d.ts} +744 -26
  21. package/dist/composition.d.ts +2 -1
  22. package/dist/composition.js +2 -2
  23. package/dist/convert.d.ts +9 -4
  24. package/dist/convert.js +57 -26
  25. package/dist/data.d.ts +5 -4
  26. package/dist/data.js +3 -1
  27. package/dist/diff.d.ts +5 -5
  28. package/dist/diff.js +6 -603
  29. package/dist/docs.js +70 -52
  30. package/dist/examples.d.ts +1 -1
  31. package/dist/examples.js +1466 -2963
  32. package/dist/finding-C_por275.d.ts +212 -0
  33. package/dist/format.d.ts +4 -4
  34. package/dist/format.js +2 -83
  35. package/dist/index.d.ts +318 -281
  36. package/dist/index.js +530 -943
  37. package/dist/markdown.d.ts +28 -25
  38. package/dist/markdown.js +8 -1940
  39. package/dist/pagination-BZpXLvFL.d.ts +119 -0
  40. package/dist/pagination.d.ts +5 -60
  41. package/dist/pagination.js +5 -5
  42. package/dist/patch.d.ts +12 -23
  43. package/dist/patch.js +5 -5
  44. package/dist/{presentation-DcF-MZcz.d.ts → presentation-C5eHkevA.d.ts} +516 -499
  45. package/dist/repo-readme.js +1 -1
  46. package/dist/{schemas-BSjlG8-R.d.ts → schemas-DDpqAgyS.d.ts} +49 -17
  47. package/dist/schemas.d.ts +1 -1
  48. package/dist/schemas.js +1 -1
  49. package/dist/spec/README.md +10 -5
  50. package/dist/spec/catalogs/audiences/index.json +2 -50
  51. package/dist/spec/catalogs/chart-types/100pct-stacked-area.json +21 -0
  52. package/dist/spec/catalogs/chart-types/100pct-stacked-bar.json +22 -0
  53. package/dist/spec/catalogs/chart-types/100pct-stacked-column.json +22 -0
  54. package/dist/spec/catalogs/chart-types/area.json +2 -60
  55. package/dist/spec/catalogs/chart-types/bar.json +2 -48
  56. package/dist/spec/catalogs/chart-types/box-and-whisker.json +2 -132
  57. package/dist/spec/catalogs/chart-types/column.json +2 -52
  58. package/dist/spec/catalogs/chart-types/combo.json +37 -0
  59. package/dist/spec/catalogs/chart-types/doughnut.json +2 -40
  60. package/dist/spec/catalogs/chart-types/filled-radar.json +2 -52
  61. package/dist/spec/catalogs/chart-types/funnel.json +2 -46
  62. package/dist/spec/catalogs/chart-types/histogram.json +2 -149
  63. package/dist/spec/catalogs/chart-types/index.json +50 -520
  64. package/dist/spec/catalogs/chart-types/line-with-markers.json +2 -60
  65. package/dist/spec/catalogs/chart-types/line.json +2 -60
  66. package/dist/spec/catalogs/chart-types/pareto.json +2 -50
  67. package/dist/spec/catalogs/chart-types/pie.json +2 -40
  68. package/dist/spec/catalogs/chart-types/radar-with-markers.json +2 -52
  69. package/dist/spec/catalogs/chart-types/radar.json +2 -52
  70. package/dist/spec/catalogs/chart-types/scatter.json +2 -73
  71. package/dist/spec/catalogs/chart-types/stacked-area.json +21 -0
  72. package/dist/spec/catalogs/chart-types/stacked-bar.json +22 -0
  73. package/dist/spec/catalogs/chart-types/stacked-column.json +22 -0
  74. package/dist/spec/catalogs/chart-types/stacked-line-with-markers.json +22 -0
  75. package/dist/spec/catalogs/chart-types/stacked-line.json +21 -0
  76. package/dist/spec/catalogs/chart-types/treemap.json +2 -48
  77. package/dist/spec/catalogs/chart-types/waterfall.json +2 -52
  78. package/dist/spec/catalogs/chart-types/world.json +2 -64
  79. package/dist/spec/catalogs/font-schemes/angsana-new.json +2 -2
  80. package/dist/spec/catalogs/font-schemes/aparajita.json +3 -3
  81. package/dist/spec/catalogs/font-schemes/aptos.json +1 -1
  82. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +2 -2
  83. package/dist/spec/catalogs/font-schemes/arial.json +1 -1
  84. package/dist/spec/catalogs/font-schemes/batang.json +2 -2
  85. package/dist/spec/catalogs/font-schemes/bookman.json +1 -1
  86. package/dist/spec/catalogs/font-schemes/calibri.json +1 -1
  87. package/dist/spec/catalogs/font-schemes/century-schoolbook.json +1 -1
  88. package/dist/spec/catalogs/font-schemes/consolas.json +2 -4
  89. package/dist/spec/catalogs/font-schemes/constantia.json +1 -1
  90. package/dist/spec/catalogs/font-schemes/courier-new.json +2 -4
  91. package/dist/spec/catalogs/font-schemes/daunpenh.json +2 -2
  92. package/dist/spec/catalogs/font-schemes/david.json +2 -2
  93. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +2 -2
  94. package/dist/spec/catalogs/font-schemes/fangsong.json +2 -2
  95. package/dist/spec/catalogs/font-schemes/garamond.json +1 -1
  96. package/dist/spec/catalogs/font-schemes/gautami.json +2 -2
  97. package/dist/spec/catalogs/font-schemes/georgia.json +1 -1
  98. package/dist/spec/catalogs/font-schemes/gisha.json +3 -3
  99. package/dist/spec/catalogs/font-schemes/grandview.json +1 -1
  100. package/dist/spec/catalogs/font-schemes/gungsuh.json +2 -2
  101. package/dist/spec/catalogs/font-schemes/impact.json +1 -1
  102. package/dist/spec/catalogs/font-schemes/index.json +1 -1
  103. package/dist/spec/catalogs/font-schemes/kalinga.json +2 -2
  104. package/dist/spec/catalogs/font-schemes/kartika.json +2 -2
  105. package/dist/spec/catalogs/font-schemes/khmer-ui.json +2 -2
  106. package/dist/spec/catalogs/font-schemes/latha.json +2 -2
  107. package/dist/spec/catalogs/font-schemes/lucida-sans.json +1 -1
  108. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +2 -2
  109. package/dist/spec/catalogs/font-schemes/mangal.json +4 -5
  110. package/dist/spec/catalogs/font-schemes/meiryo.json +2 -2
  111. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +2 -2
  112. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +5 -5
  113. package/dist/spec/catalogs/font-schemes/mingliu.json +2 -2
  114. package/dist/spec/catalogs/font-schemes/miriam.json +2 -2
  115. package/dist/spec/catalogs/font-schemes/montserrat.json +1 -1
  116. package/dist/spec/catalogs/font-schemes/ms-mincho.json +2 -2
  117. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +2 -2
  118. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +2 -2
  119. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +3 -3
  120. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +4 -4
  121. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +2 -2
  122. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +3 -3
  123. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +3 -3
  124. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +2 -2
  125. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +2 -2
  126. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +2 -2
  127. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +2 -2
  128. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +2 -2
  129. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +2 -2
  130. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +2 -2
  131. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +2 -2
  132. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +2 -2
  133. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +2 -2
  134. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +2 -2
  135. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +2 -2
  136. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +5 -5
  137. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +2 -2
  138. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +2 -2
  139. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +2 -2
  140. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +2 -2
  141. package/dist/spec/catalogs/font-schemes/noto-sans.json +5 -5
  142. package/dist/spec/catalogs/font-schemes/nyala.json +2 -2
  143. package/dist/spec/catalogs/font-schemes/open-sans.json +1 -1
  144. package/dist/spec/catalogs/font-schemes/pmingliu.json +2 -2
  145. package/dist/spec/catalogs/font-schemes/poppins.json +1 -1
  146. package/dist/spec/catalogs/font-schemes/pt-serif.json +1 -1
  147. package/dist/spec/catalogs/font-schemes/raavi.json +2 -2
  148. package/dist/spec/catalogs/font-schemes/raleway.json +1 -1
  149. package/dist/spec/catalogs/font-schemes/roboto.json +1 -1
  150. package/dist/spec/catalogs/font-schemes/rockwell.json +1 -1
  151. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +4 -4
  152. package/dist/spec/catalogs/font-schemes/seaford.json +1 -1
  153. package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +1 -1
  154. package/dist/spec/catalogs/font-schemes/segoe-ui.json +1 -1
  155. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +3 -3
  156. package/dist/spec/catalogs/font-schemes/shruti.json +2 -2
  157. package/dist/spec/catalogs/font-schemes/simsun.json +2 -2
  158. package/dist/spec/catalogs/font-schemes/skeena.json +1 -1
  159. package/dist/spec/catalogs/font-schemes/sylfaen.json +3 -3
  160. package/dist/spec/catalogs/font-schemes/tahoma.json +1 -1
  161. package/dist/spec/catalogs/font-schemes/tenorite.json +1 -1
  162. package/dist/spec/catalogs/font-schemes/times-new-roman.json +1 -1
  163. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +4 -4
  164. package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +1 -1
  165. package/dist/spec/catalogs/font-schemes/tunga.json +2 -2
  166. package/dist/spec/catalogs/font-schemes/verdana.json +1 -1
  167. package/dist/spec/catalogs/font-schemes/vrinda.json +2 -2
  168. package/dist/spec/catalogs/font-schemes/yu-gothic.json +2 -2
  169. package/dist/spec/catalogs/layouts/action-plan.json +9 -15
  170. package/dist/spec/catalogs/layouts/agenda.json +8 -15
  171. package/dist/spec/catalogs/layouts/appendix-index.json +7 -15
  172. package/dist/spec/catalogs/layouts/architecture-stack.json +9 -15
  173. package/dist/spec/catalogs/layouts/assumptions-dependencies.json +9 -15
  174. package/dist/spec/catalogs/layouts/before-after.json +9 -15
  175. package/dist/spec/catalogs/layouts/benchmark-target-table.json +9 -15
  176. package/dist/spec/catalogs/layouts/blank.json +11 -1
  177. package/dist/spec/catalogs/layouts/bullet-list.json +9 -15
  178. package/dist/spec/catalogs/layouts/business-model-canvas.json +9 -15
  179. package/dist/spec/catalogs/layouts/capability-map.json +14 -16
  180. package/dist/spec/catalogs/layouts/case-study.json +9 -15
  181. package/dist/spec/catalogs/layouts/chapter-recap.json +8 -15
  182. package/dist/spec/catalogs/layouts/chart-1x.json +15 -0
  183. package/dist/spec/catalogs/layouts/chart-2x.json +15 -0
  184. package/dist/spec/catalogs/layouts/chart-3x.json +15 -0
  185. package/dist/spec/catalogs/layouts/circular-lifecycle.json +9 -15
  186. package/dist/spec/catalogs/layouts/code-1x.json +10 -0
  187. package/dist/spec/catalogs/layouts/comparison.json +9 -15
  188. package/dist/spec/catalogs/layouts/competitive-landscape.json +14 -16
  189. package/dist/spec/catalogs/layouts/customer-journey.json +14 -16
  190. package/dist/spec/catalogs/layouts/customer-logos.json +9 -15
  191. package/dist/spec/catalogs/layouts/dashboard.json +9 -15
  192. package/dist/spec/catalogs/layouts/data-visualization.json +9 -15
  193. package/dist/spec/catalogs/layouts/decision-tree.json +14 -16
  194. package/dist/spec/catalogs/layouts/detailed-data-table.json +9 -15
  195. package/dist/spec/catalogs/layouts/ecosystem-map.json +14 -16
  196. package/dist/spec/catalogs/layouts/executive-decision.json +9 -15
  197. package/dist/spec/catalogs/layouts/executive-summary.json +9 -15
  198. package/dist/spec/catalogs/layouts/extract/canonical.json +8 -8
  199. package/dist/spec/catalogs/layouts/faq.json +9 -15
  200. package/dist/spec/catalogs/layouts/feature-comparison-matrix.json +9 -15
  201. package/dist/spec/catalogs/layouts/forecast-scenario.json +9 -15
  202. package/dist/spec/catalogs/layouts/funnel-pyramid.json +9 -15
  203. package/dist/spec/catalogs/layouts/gantt-project-plan.json +9 -15
  204. package/dist/spec/catalogs/layouts/geographic-map.json +13 -15
  205. package/dist/spec/catalogs/layouts/heatmap-cohort.json +9 -15
  206. package/dist/spec/catalogs/layouts/hub-and-spoke.json +9 -15
  207. package/dist/spec/catalogs/layouts/icon-grid.json +14 -16
  208. package/dist/spec/catalogs/layouts/image-1x.json +11 -1
  209. package/dist/spec/catalogs/layouts/image-2x.json +12 -2
  210. package/dist/spec/catalogs/layouts/image-3x.json +13 -3
  211. package/dist/spec/catalogs/layouts/image-bleed.json +12 -2
  212. package/dist/spec/catalogs/layouts/image-focus.json +14 -16
  213. package/dist/spec/catalogs/layouts/index.json +1 -1
  214. package/dist/spec/catalogs/layouts/key-takeaway.json +8 -15
  215. package/dist/spec/catalogs/layouts/kpi-scorecard.json +9 -15
  216. package/dist/spec/catalogs/layouts/list-1x.json +17 -1
  217. package/dist/spec/catalogs/layouts/list-2x.json +16 -0
  218. package/dist/spec/catalogs/layouts/list-3x.json +16 -0
  219. package/dist/spec/catalogs/layouts/list-4x.json +16 -0
  220. package/dist/spec/catalogs/layouts/list-5x.json +16 -0
  221. package/dist/spec/catalogs/layouts/list-6x.json +16 -0
  222. package/dist/spec/catalogs/layouts/logic-tree.json +9 -15
  223. package/dist/spec/catalogs/layouts/market-size.json +9 -15
  224. package/dist/spec/catalogs/layouts/matrix-quadrant.json +9 -15
  225. package/dist/spec/catalogs/layouts/media-1x.json +11 -1
  226. package/dist/spec/catalogs/layouts/network-dependency-map.json +13 -15
  227. package/dist/spec/catalogs/layouts/number-1x.json +16 -1
  228. package/dist/spec/catalogs/layouts/number-2x.json +15 -0
  229. package/dist/spec/catalogs/layouts/number-3x.json +15 -0
  230. package/dist/spec/catalogs/layouts/number-4x.json +15 -0
  231. package/dist/spec/catalogs/layouts/number-5x.json +15 -0
  232. package/dist/spec/catalogs/layouts/number-6x.json +15 -0
  233. package/dist/spec/catalogs/layouts/one-column-explainer.json +9 -15
  234. package/dist/spec/catalogs/layouts/org-chart.json +9 -15
  235. package/dist/spec/catalogs/layouts/persona-grid.json +14 -16
  236. package/dist/spec/catalogs/layouts/photo-grid.json +17 -19
  237. package/dist/spec/catalogs/layouts/pricing-table.json +9 -15
  238. package/dist/spec/catalogs/layouts/process-flow.json +9 -15
  239. package/dist/spec/catalogs/layouts/product-feature.json +14 -16
  240. package/dist/spec/catalogs/layouts/pros-cons.json +9 -15
  241. package/dist/spec/catalogs/layouts/qa-discussion.json +7 -15
  242. package/dist/spec/catalogs/layouts/quote-1x.json +11 -1
  243. package/dist/spec/catalogs/layouts/quote-highlight.json +9 -15
  244. package/dist/spec/catalogs/layouts/raci-matrix.json +9 -15
  245. package/dist/spec/catalogs/layouts/risk-heatmap.json +9 -15
  246. package/dist/spec/catalogs/layouts/roadmap.json +9 -15
  247. package/dist/spec/catalogs/layouts/screenshot-walkthrough.json +14 -16
  248. package/dist/spec/catalogs/layouts/section-divider.json +8 -15
  249. package/dist/spec/catalogs/layouts/single-message-statement.json +8 -15
  250. package/dist/spec/catalogs/layouts/stats-metrics.json +9 -15
  251. package/dist/spec/catalogs/layouts/status-rag.json +9 -15
  252. package/dist/spec/catalogs/layouts/swimlane-process.json +14 -16
  253. package/dist/spec/catalogs/layouts/swot-analysis.json +9 -15
  254. package/dist/spec/catalogs/layouts/table-1x.json +10 -0
  255. package/dist/spec/catalogs/layouts/team-bio.json +14 -16
  256. package/dist/spec/catalogs/layouts/testimonial-grid.json +9 -15
  257. package/dist/spec/catalogs/layouts/text-1x.json +11 -1
  258. package/dist/spec/catalogs/layouts/text-2x.json +10 -0
  259. package/dist/spec/catalogs/layouts/text-3x.json +10 -0
  260. package/dist/spec/catalogs/layouts/thank-you-cta.json +8 -15
  261. package/dist/spec/catalogs/layouts/three-column.json +9 -15
  262. package/dist/spec/catalogs/layouts/timeline-1x.json +11 -1
  263. package/dist/spec/catalogs/layouts/timeline.json +9 -15
  264. package/dist/spec/catalogs/layouts/title-slide.json +8 -15
  265. package/dist/spec/catalogs/layouts/title-subtitle.json +11 -1
  266. package/dist/spec/catalogs/layouts/title.json +11 -1
  267. package/dist/spec/catalogs/layouts/two-column.json +9 -15
  268. package/dist/spec/catalogs/layouts/venn-overlap.json +9 -15
  269. package/dist/spec/catalogs/layouts/waterfall-bridge.json +9 -15
  270. package/dist/spec/catalogs/layouts/wheel-radial.json +9 -15
  271. package/dist/spec/catalogs/manifest.json +11 -11
  272. package/dist/spec/catalogs/narratives/board-meeting.json +45 -45
  273. package/dist/spec/catalogs/narratives/business-narrative.json +19 -19
  274. package/dist/spec/catalogs/narratives/business-review.json +27 -27
  275. package/dist/spec/catalogs/narratives/capacity-planning.json +19 -19
  276. package/dist/spec/catalogs/narratives/challenge-resolution.json +17 -17
  277. package/dist/spec/catalogs/narratives/change-story.json +13 -13
  278. package/dist/spec/catalogs/narratives/classic-story.json +17 -17
  279. package/dist/spec/catalogs/narratives/company-intro.json +21 -21
  280. package/dist/spec/catalogs/narratives/conference-talk.json +4 -4
  281. package/dist/spec/catalogs/narratives/data-story.json +13 -14
  282. package/dist/spec/catalogs/narratives/early-startup-pitch.json +27 -27
  283. package/dist/spec/catalogs/narratives/educate.json +21 -21
  284. package/dist/spec/catalogs/narratives/employee-review.json +19 -19
  285. package/dist/spec/catalogs/narratives/failure-analysis.json +23 -23
  286. package/dist/spec/catalogs/narratives/focus.json +27 -27
  287. package/dist/spec/catalogs/narratives/golden-circle.json +4 -4
  288. package/dist/spec/catalogs/narratives/heros-journey.json +13 -13
  289. package/dist/spec/catalogs/narratives/index.json +145 -145
  290. package/dist/spec/catalogs/narratives/innovation.json +21 -21
  291. package/dist/spec/catalogs/narratives/justice.json +25 -25
  292. package/dist/spec/catalogs/narratives/marketing-strategy.json +25 -25
  293. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +19 -19
  294. package/dist/spec/catalogs/narratives/performance-review.json +25 -25
  295. package/dist/spec/catalogs/narratives/persuade.json +17 -17
  296. package/dist/spec/catalogs/narratives/persuasive-sales.json +19 -19
  297. package/dist/spec/catalogs/narratives/pitch-deck.json +6 -6
  298. package/dist/spec/catalogs/narratives/problem-solution.json +5 -5
  299. package/dist/spec/catalogs/narratives/product-launch.json +23 -23
  300. package/dist/spec/catalogs/narratives/project-proposal.json +23 -23
  301. package/dist/spec/catalogs/narratives/pyramid-principle.json +9 -9
  302. package/dist/spec/catalogs/narratives/qbr.json +8 -8
  303. package/dist/spec/catalogs/narratives/rags-to-riches.json +17 -17
  304. package/dist/spec/catalogs/narratives/reveal.json +19 -19
  305. package/dist/spec/catalogs/narratives/scqa.json +4 -4
  306. package/dist/spec/catalogs/narratives/situation-complication-resolution.json +11 -11
  307. package/dist/spec/catalogs/narratives/sparkline.json +11 -11
  308. package/dist/spec/catalogs/narratives/star-method.json +11 -11
  309. package/dist/spec/catalogs/narratives/status-update.json +15 -15
  310. package/dist/spec/catalogs/narratives/strategic-advisory.json +17 -17
  311. package/dist/spec/catalogs/narratives/strategic-narrative.json +4 -4
  312. package/dist/spec/catalogs/narratives/survey-analysis.json +23 -23
  313. package/dist/spec/catalogs/narratives/survival-story.json +23 -23
  314. package/dist/spec/catalogs/narratives/transformation-arc.json +4 -4
  315. package/dist/spec/catalogs/narratives/trend-analysis.json +17 -17
  316. package/dist/spec/catalogs/narratives/underdog-victory.json +19 -19
  317. package/dist/spec/catalogs/narratives/venture-pitch.json +27 -27
  318. package/dist/spec/catalogs/narratives/vision-roadmap.json +13 -13
  319. package/dist/spec/catalogs/narratives/weekly-progress.json +23 -23
  320. package/dist/spec/catalogs/narratives/what-so-what-now-what.json +9 -9
  321. package/dist/spec/openapi.yaml +2 -5
  322. package/dist/spec/reference/engine-defaults.json +2 -2
  323. package/dist/spec/schemas/audience.schema.json +1 -1
  324. package/dist/spec/schemas/catalog-index.schema.json +2 -2
  325. package/dist/spec/schemas/chart-type.schema.json +19 -290
  326. package/dist/spec/schemas/color-scheme.schema.json +20 -12
  327. package/dist/spec/schemas/finding.schema.json +191 -0
  328. package/dist/spec/schemas/font-scheme.schema.json +19 -46
  329. package/dist/spec/schemas/layout.schema.json +100 -159
  330. package/dist/spec/schemas/narrative.schema.json +17 -25
  331. package/dist/spec/schemas/opf.schema.json +503 -339
  332. package/dist/spec/schemas/social-platform.schema.json +1 -26
  333. package/dist/spec/schemas/theme.schema.json +4 -1
  334. package/dist/spec-files.d.ts +1 -1
  335. package/dist/spec-files.js +1 -1
  336. package/dist/symbol-font-encodings.js +18448 -1
  337. package/dist/types.d.ts +4 -4
  338. package/dist/validation-types-zh03LeZy.d.ts +276 -0
  339. package/dist/validator.d.ts +60 -4
  340. package/dist/validator.js +4 -4
  341. package/dist/yaml.d.ts +87 -0
  342. package/dist/yaml.js +321 -0
  343. package/package.json +6 -10
  344. package/dist/audit.d.ts +0 -156
  345. package/dist/audit.js +0 -7
  346. package/dist/chunk-6LZK2IZB.js +0 -1690
  347. package/dist/chunk-FYLJVF7X.js +0 -18448
  348. package/dist/chunk-JKVKYVWL.js +0 -1332
  349. package/dist/chunk-MWPMJE6P.js +0 -622
  350. package/dist/lint.d.ts +0 -70
  351. package/dist/lint.js +0 -6
  352. package/dist/spec/catalogs/audiences/customers.json +0 -27
  353. package/dist/spec/catalogs/audiences/executives.json +0 -27
  354. package/dist/spec/catalogs/audiences/investors.json +0 -27
  355. package/dist/spec/catalogs/audiences/marketing-team.json +0 -27
  356. package/dist/spec/catalogs/audiences/regulators.json +0 -27
  357. package/dist/spec/catalogs/audiences/sales-team.json +0 -27
  358. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +0 -91
  359. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +0 -103
  360. package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +0 -79
  361. package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +0 -91
  362. package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +0 -103
  363. package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +0 -79
  364. package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +0 -105
  365. package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +0 -106
  366. package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +0 -123
  367. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +0 -89
  368. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +0 -100
  369. package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +0 -95
  370. package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +0 -108
  371. package/dist/spec/catalogs/chart-types/australia.json +0 -76
  372. package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +0 -136
  373. package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +0 -168
  374. package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +0 -89
  375. package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +0 -101
  376. package/dist/spec/catalogs/chart-types/bullet-bar.json +0 -77
  377. package/dist/spec/catalogs/chart-types/bullet-column-2x.json +0 -89
  378. package/dist/spec/catalogs/chart-types/bullet-column-3x.json +0 -101
  379. package/dist/spec/catalogs/chart-types/bullet-column.json +0 -77
  380. package/dist/spec/catalogs/chart-types/canada.json +0 -86
  381. package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +0 -89
  382. package/dist/spec/catalogs/chart-types/clustered-column.json +0 -95
  383. package/dist/spec/catalogs/chart-types/dot-plot-2x.json +0 -99
  384. package/dist/spec/catalogs/chart-types/dot-plot-3x.json +0 -124
  385. package/dist/spec/catalogs/chart-types/dot-plot-4x.json +0 -149
  386. package/dist/spec/catalogs/chart-types/dot-plot-5x.json +0 -174
  387. package/dist/spec/catalogs/chart-types/dot-plot-6x.json +0 -199
  388. package/dist/spec/catalogs/chart-types/dot-plot.json +0 -74
  389. package/dist/spec/catalogs/chart-types/dumbbell.json +0 -120
  390. package/dist/spec/catalogs/chart-types/line-2x.json +0 -105
  391. package/dist/spec/catalogs/chart-types/line-3x.json +0 -127
  392. package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +0 -144
  393. package/dist/spec/catalogs/chart-types/line-with-high-low.json +0 -144
  394. package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +0 -106
  395. package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +0 -128
  396. package/dist/spec/catalogs/chart-types/sparkline-2x.json +0 -138
  397. package/dist/spec/catalogs/chart-types/sparkline-3x.json +0 -174
  398. package/dist/spec/catalogs/chart-types/sparkline-4x.json +0 -210
  399. package/dist/spec/catalogs/chart-types/sparkline-5x.json +0 -246
  400. package/dist/spec/catalogs/chart-types/sparkline-6x.json +0 -282
  401. package/dist/spec/catalogs/chart-types/sparkline.json +0 -102
  402. package/dist/spec/catalogs/chart-types/stacked-area-2x.json +0 -106
  403. package/dist/spec/catalogs/chart-types/stacked-area-3x.json +0 -123
  404. package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +0 -89
  405. package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +0 -100
  406. package/dist/spec/catalogs/chart-types/stacked-column-2x.json +0 -95
  407. package/dist/spec/catalogs/chart-types/stacked-column-3x.json +0 -108
  408. package/dist/spec/catalogs/chart-types/stacked-line-2x.json +0 -106
  409. package/dist/spec/catalogs/chart-types/stacked-line-3x.json +0 -123
  410. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +0 -107
  411. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +0 -124
  412. package/dist/spec/catalogs/chart-types/treemap-2x.json +0 -101
  413. package/dist/spec/catalogs/chart-types/treemap-3x.json +0 -122
  414. package/dist/spec/catalogs/chart-types/united-kingdom.json +0 -68
  415. package/dist/spec/catalogs/chart-types/united-states.json +0 -82
  416. package/dist/validator-DfG9yxba.d.ts +0 -172
@@ -1,3 +1,5 @@
1
+ import './chart-data-B_3z9VTb.js';
2
+
1
3
  /** Canonical table grid. No renderer, fonts, DOM or network dependencies. */
2
4
  interface TableBorder {
3
5
  color: string;
@@ -41,6 +43,110 @@ declare function tableGrid(value: unknown, path?: string): TableGrid;
41
43
  /** Row boundaries that preserve every vertical merge, used by pagination. */
42
44
  declare function tableRowBoundaries(value: unknown): number[];
43
45
 
46
+ /** The `design` keys that a layout record, the deck and a slide all share and that composition resolves per key. */
47
+ declare const DESIGN_HINT_KEYS: readonly ["titleAlignment", "contentAlignment", "contentBox", "contentDirection", "chartPrimary", "imageFill", "listBullet"];
48
+ type DesignHintKey = typeof DESIGN_HINT_KEYS[number];
49
+ /** Where an effective design hint came from: the slide's own `design`, the deck's `design`, or the slide's layout record. */
50
+ type DesignHintSource = 'slide' | 'deck' | 'layout';
51
+ /** The effective value of every shared design key. A key nobody sets is absent, so the engine default applies. */
52
+ interface DesignHints {
53
+ titleAlignment?: 'left' | 'center' | 'right';
54
+ contentAlignment?: 'left' | 'center' | 'right';
55
+ contentBox?: boolean;
56
+ contentDirection?: 'horizontal' | 'vertical';
57
+ chartPrimary?: 'none' | 'top' | 'bottom' | 'left' | 'right';
58
+ imageFill?: 'crop' | 'fit';
59
+ listBullet?: 'character' | 'image';
60
+ }
61
+ /** The effective hints plus which level supplied each key and the document path that names it. */
62
+ interface ResolvedDesignHints extends DesignHints {
63
+ /** The level that supplied each key that is set. */
64
+ sources: {
65
+ [K in DesignHintKey]?: DesignHintSource;
66
+ };
67
+ /** Path of the supplying value: `slides.N.design.key`, `design.key`, or for a layout `slides.N.layout` (the reference that selected the record). */
68
+ paths: {
69
+ [K in DesignHintKey]?: string;
70
+ };
71
+ }
72
+ interface ResolveDesignHintsOptions {
73
+ /** The slide, for its own `design`. */
74
+ slide?: unknown;
75
+ /** The slide's resolved layout record, for its `design`. */
76
+ layout?: unknown;
77
+ /** The document, for the deck's `design`. */
78
+ presentation?: unknown;
79
+ /** Index used in the reported paths; defaults to 0. */
80
+ slideIndex?: number;
81
+ /** Host-resolved deck-level values. They rank with the deck's `design`, above it, and below the slide's. */
82
+ deck?: DesignHints;
83
+ }
84
+ /**
85
+ * Resolves the shared design keys with one merge, per key, the slide winning: the slide's `design`, then the
86
+ * deck's `design` (or the host's `deck` values), then the resolved layout record's `design`. A key none of them
87
+ * 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
88
+ * (`SlideComposition.design`), so they cannot disagree.
89
+ */
90
+ declare function resolveDesignHints(options?: ResolveDesignHintsOptions): ResolvedDesignHints;
91
+
92
+ /**
93
+ * Metric trend mark (RR-07, FA-06): the arrow and colour that show `metric.trend` and
94
+ * `metric.sentiment` in the SVG preview and the PPTX export. Core's metric layout places the trend word (up, down, flat) as ordinary
95
+ * text; this derives, from that accepted line geometry, one arrow beside it so both engines draw
96
+ * the same shape in the same place and colour. The word stays the text alternative: the arrow
97
+ * adds a visual cue and an `ariaLabel`, never rewritten source text. The arrow always points the
98
+ * way the trend does; its colour (and the trend and delta text colour) follows the sentiment, which
99
+ * defaults to the conventional reading of the trend (up positive, down negative, flat neutral).
100
+ */
101
+
102
+ type MetricTrend = 'up' | 'down' | 'flat';
103
+ /** Whether a change is good news: the colour of the trend mark. */
104
+ type MetricSentiment = 'positive' | 'negative' | 'neutral';
105
+ /** The DrawingML preset geometry that draws each trend (`a:prstGeom prst`). */
106
+ declare const METRIC_TREND_SHAPES: Readonly<Record<MetricTrend, 'upArrow' | 'downArrow' | 'rightArrow'>>;
107
+ declare const METRIC_TREND_MIN_CONTRAST = 4.5;
108
+ interface MetricTrendColorOptions {
109
+ /** The slide background the metric text sits on. */
110
+ background: string;
111
+ /** Neutral colour for a neutral sentiment (the deck's muted text). */
112
+ neutral?: string;
113
+ /** Whether the change is good news; absent, the trend's default (up positive, down negative, flat neutral). */
114
+ sentiment?: MetricSentiment;
115
+ }
116
+ /** The colour of a trend (or, with `options.sentiment`, of its sentiment), kept at >= 4.5:1 against the slide background. */
117
+ declare function metricTrendColor(trend: MetricTrend, options: MetricTrendColorOptions): string;
118
+ interface MetricTrendMark {
119
+ trend: MetricTrend;
120
+ /** The sentiment the colour follows: the metric's own, else the default for the trend. */
121
+ sentiment: MetricSentiment;
122
+ /** DrawingML preset name for native export. */
123
+ shape: 'upArrow' | 'downArrow' | 'rightArrow';
124
+ /** Arrow bounding box in layout pixels (96 per inch). */
125
+ box: {
126
+ x: number;
127
+ y: number;
128
+ width: number;
129
+ height: number;
130
+ };
131
+ /** The arrow outline as polygon points in layout pixels: the preset geometry at default adjustments. */
132
+ points: [number, number][];
133
+ color: string;
134
+ /** Text alternative for the arrow. */
135
+ ariaLabel: string;
136
+ /** Path of the trend field the mark belongs to. */
137
+ path: string;
138
+ }
139
+ /** Outline of the DrawingML upArrow, downArrow or rightArrow preset (adj1 = adj2 = 50000) in `box`. */
140
+ declare function metricTrendPoints(shape: MetricTrendMark['shape'], box: MetricTrendMark['box']): [number, number][];
141
+ /**
142
+ * The arrow for a laid-out metric, or undefined when the metric has no (visible) trend or the
143
+ * arrow has no room. It is square, as tall as the trend word's capitals, on the baseline, and
144
+ * sits after the word for left-aligned metrics and before it for centred or right-aligned ones,
145
+ * so it grows away from the alignment edge. It never leaves the trend field's box. The colour
146
+ * follows `options.sentiment`, else the layout's own (`metric.sentiment`), else the trend's default.
147
+ */
148
+ declare function metricTrendMark(layout: MetricLayout, options: MetricTrendColorOptions): MetricTrendMark | undefined;
149
+
44
150
  /** A positioned thing whose reading position is wanted. */
45
151
  interface ReadingBox {
46
152
  box: {
@@ -60,7 +166,7 @@ interface ReadingBox {
60
166
  * The boxes are read as given: pass them in logical (unmirrored) coordinates and the order is the reading
61
167
  * order of both a left-to-right and a right-to-left deck, because mirroring a deck moves where an item is
62
168
  * drawn and where a line starts together. For boxes that are already mirrored, pass `direction: 'rtl'` to
63
- * order each row from right to left. composeSlide uses this for promoted regions and `opf audit` uses it to
169
+ * order each row from right to left. composeSlide uses this for promoted regions and `opf/reading-order` uses it to
64
170
  * check the composed order, so the two cannot drift apart.
65
171
  */
66
172
  declare function visualReadingOrder<T extends ReadingBox>(items: readonly T[], direction?: 'ltr' | 'rtl'): T[];
@@ -216,7 +322,7 @@ declare function formatSlideNumber(format: string, current: number, total: numbe
216
322
 
217
323
  /** Normalize a literal hex color to uppercase #RRGGBB. */
218
324
  declare function normalizeHexColor(value: unknown): string | undefined;
219
- type ResolveColorRefRoles = Partial<Record<'primary' | 'secondary' | 'accent' | 'background' | 'surface' | 'text' | 'textSecondary', string>>;
325
+ type ResolveColorRefRoles = Partial<Record<'primary' | 'secondary' | 'accent' | 'background' | 'surface' | 'surfaceAlt' | 'text' | 'textSecondary', string>>;
220
326
  interface ResolveColorRefOptions {
221
327
  /** Effective color scheme after design resolution (OOXML slots plus optional role hex overrides). */
222
328
  colorScheme: Record<string, unknown>;
@@ -229,6 +335,52 @@ interface ResolveColorRefOptions {
229
335
  }
230
336
  /** Resolve a ColorRef or TextRun.color string to a literal hex color. */
231
337
  declare function resolveColorRef(reference: string, options: ResolveColorRefOptions): string;
338
+ /** WCAG relative luminance below which a slide background counts as dark (the point where white and black text contrast equally). */
339
+ declare const DARK_BACKGROUND_LUMINANCE = 0.179;
340
+ /** True when text on this color should be light: its relative luminance is under {@link DARK_BACKGROUND_LUMINANCE}. An unreadable color is not dark. */
341
+ declare function isDarkColor(color: unknown): boolean;
342
+ /**
343
+ * The slide background a color scheme implies when the design names no single-color background: the scheme's
344
+ * `background` role override, else its light1 slot, else white. Gradient and picture backgrounds use it too.
345
+ */
346
+ declare function defaultSlideBackground(colorScheme: Record<string, unknown>): string;
347
+ interface ResolvedColorRoles {
348
+ /** Role override, else accent1. */
349
+ primary: string;
350
+ /** Role override, else accent2. */
351
+ secondary: string;
352
+ /** Role override, else accent3. */
353
+ accent: string;
354
+ /** The slide background: the resolved single-color background of the slide, else {@link defaultSlideBackground}. */
355
+ background: string;
356
+ /** Role override, else dark2 on a dark background and light2 on a light one. */
357
+ surface: string;
358
+ /** The alternate surface of banded table rows: {@link surfaceAltColor} of `surface` and `text`, always distinguishable from `surface`. */
359
+ surfaceAlt: string;
360
+ /** Default text. On a dark background light1. On a light background the `text` role override, else dark1. */
361
+ text: string;
362
+ /** Role override, else light2 on a dark background and dark2 on a light one. */
363
+ textSecondary: string;
364
+ /** 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. */
365
+ hyperlink: string;
366
+ /** Followed-hyperlink slot (OOXML folHlink). */
367
+ followedHyperlink: string;
368
+ /** Whether the slide background is dark; text, surface and textSecondary defaults follow it. */
369
+ dark: boolean;
370
+ }
371
+ interface ResolveColorRolesOptions {
372
+ /** The slide's resolved single-color background (solid, theme-slot or pattern background color). Omit for a gradient, picture or no background. */
373
+ background?: string | null;
374
+ }
375
+ /**
376
+ * Resolve a color scheme's abstract roles for one slide: the single definition the opf-render preview, the
377
+ * PPTX export and the audit share, so the same deck draws the same colors in all three. Role overrides on the
378
+ * scheme (`primary`, `secondary`, `accent`, `background`, `surface`, `text`, `textSecondary`) win over the slots they
379
+ * default to. The background-dependent roles follow {@link isDarkColor} of the slide background; a `text`
380
+ * override applies only on a light background, so a dark slide always gets readable light1 text.
381
+ * Values are uppercase #RRGGBB, or #RRGGBBAA where the scheme color carries an alpha byte.
382
+ */
383
+ declare function resolveColorRoles(colorScheme: Record<string, unknown>, options?: ResolveColorRolesOptions): ResolvedColorRoles;
232
384
  declare function colorContrast(foreground: string, background: string): number | undefined;
233
385
  /** Keep an inherited text color at >=4.5:1; otherwise select black or white.
234
386
  * Callers must preserve explicit text-color overrides before using this fallback.
@@ -272,12 +424,424 @@ declare const CHART_SERIES_MIN_DIFFERENCE = 12;
272
424
  * and preview and export (which both call this function) draw the same ones.
273
425
  */
274
426
  declare function chartPaletteForFill(fill: string, palette: readonly string[]): string[];
427
+ /** Share of the text colour mixed into the surface to make the muted colour of a highlighted chart. */
428
+ declare const CHART_HIGHLIGHT_MUTED_MIX = 0.3;
429
+ /** Smallest contrast the muted colour keeps against the surface: recessive, but still a visible mark. */
430
+ declare const CHART_HIGHLIGHT_MUTED_MIN_CONTRAST = 1.6;
431
+ /**
432
+ * The two colours of a chart that highlights marks (`chart.highlight`), derived from the theme only: `accent` for the highlighted
433
+ * marks, `muted` for every other mark.
434
+ *
435
+ * - `accent` is the deck's primary colour, kept at >= 3:1 against the surface by `chartColorForFill` (a primary that already has
436
+ * that contrast is returned unchanged).
437
+ * - `muted` is the surface mixed {@link CHART_HIGHLIGHT_MUTED_MIX} of the way towards the text colour: a light grey on a light surface
438
+ * 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
439
+ * the surface (a surface and text that are close together) the mix moves towards the text colour until it holds.
440
+ *
441
+ * Pure arithmetic on opaque colours: the preview and the PPTX export both call it with the chart panel, the primary and the label
442
+ * colour, so they draw and write the same two colours. An unresolved colour is replaced by white (surface), the surface's own
443
+ * best contrast partner (text) or black (primary).
444
+ */
445
+ declare function chartHighlightColors(surface: string, primary: string, text: string): {
446
+ accent: string;
447
+ muted: string;
448
+ };
449
+ /** Share of the text colour mixed into the surface for the `surfaceAlt` role. */
450
+ declare const SURFACE_ALT_MIX = 0.1;
451
+ /** Smallest contrast `surfaceAlt` keeps against `surface`, so a band is visible next to a plain row. */
452
+ declare const SURFACE_ALT_MIN_CONTRAST = 1.1;
453
+ /**
454
+ * The `surfaceAlt` colour role: the fill of the banded rows of a table whose other body rows take `surface`. It is the surface
455
+ * mixed {@link SURFACE_ALT_MIX} of the way towards the text colour (a slightly darker band on a light table, a slightly lighter one
456
+ * on a dark table), moved further until it differs from the surface by {@link SURFACE_ALT_MIN_CONTRAST}, while the text keeps
457
+ * 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
458
+ * other way, away from the text, which only raises the text contrast. Pure arithmetic on opaque colours, so the preview and
459
+ * the PPTX export, which both resolve the `surfaceAlt` ColorRef from their own `surface` and `text` roles, draw and write the
460
+ * same colour. An unresolved surface is white; an unresolved text colour is the surface's best contrast partner.
461
+ */
462
+ declare function surfaceAltColor(surface: string, text: string): string;
463
+
464
+ /**
465
+ * Language/script font model (font-fidelity-everywhere FF-18).
466
+ *
467
+ * Resolves, for a presentation's language and effective font scheme, the font
468
+ * family for each OOXML script slot (`a:latin`, `a:ea`, `a:cs`) of the major
469
+ * (heading) and minor (body) theme fonts, plus the language tags and base
470
+ * direction. Pure: no DOM, fonts, network or mutation. Catalog references
471
+ * resolve against inline `catalogs.<kind>.records[]` first and the bundled
472
+ * catalogs second; a custom `source` is not fetched.
473
+ *
474
+ * Catalog ids and catalog tags resolve deterministically from vendored tables.
475
+ * Only a tag that matches no catalog record may consult the runtime's ICU
476
+ * likely subtags (`Intl.Locale#maximize`) to find its script.
477
+ *
478
+ * Design: docs/programs/font-fidelity-everywhere/script-font-model.md.
479
+ */
480
+ /** OOXML script slot a writing system uses: `a:latin`, `a:ea` or `a:cs`. */
481
+ type ScriptRole = "latin" | "eastAsian" | "complexScript";
482
+ /** FontScheme.languageFamily as written: the short OOXML names and the long slot names are one value. */
483
+ type LanguageFamilyName = "latin" | "ea" | "cs" | "eastAsian" | "complexScript";
484
+ /**
485
+ * Read a FontScheme `languageFamily` as one of three values. `eastAsian` is `ea` and `complexScript` is
486
+ * `cs`; anything that is not one of the five names returns undefined.
487
+ */
488
+ declare function normalizeLanguageFamily(value: unknown): "latin" | "ea" | "cs" | undefined;
489
+ /** Target application whose language font-scheme defaults apply. */
490
+ type ScriptFontApp = "powerpoint" | "google-slides";
491
+ /** Font family per OOXML script slot for one theme font (major or minor). */
492
+ interface ScriptFontSlots {
493
+ latin: string;
494
+ eastAsian: string;
495
+ complexScript: string;
496
+ }
497
+ /**
498
+ * Where a resolved eastAsian/complexScript family came from:
499
+ * - `fontScheme`: an explicit `eastAsian`/`complexScript` slot on the effective design font scheme.
500
+ * - `schemeFamily`: the design font scheme's own major/minor, because its `languageFamily` names this
501
+ * slot and its `languages` list is empty or names the presentation language.
502
+ * - `language`: the presentation language's font scheme (`fontScheme`, or `googleFontScheme` for Google Slides).
503
+ * - `latin`: no script-specific choice exists, so the slot repeats the latin family.
504
+ */
505
+ type ScriptFontSource = "fontScheme" | "schemeFamily" | "language" | "latin";
506
+ /** A per-script supplemental theme font, as in OOXML `<a:font script="Jpan" typeface="..."/>`. */
507
+ interface ScriptFontSupplement {
508
+ /** OOXML theme script tag (ISO 15924, except Korean uses `Hang`). */
509
+ script: string;
510
+ heading: string;
511
+ body: string;
512
+ }
513
+ interface ResolveScriptFontsOptions {
514
+ /** Which language font-scheme default applies. Defaults to `powerpoint` (`language.fontScheme`); `google-slides` prefers `language.googleFontScheme`. */
515
+ app?: ScriptFontApp;
516
+ /** Merge `slides[slideIndex].design` over the deck design, per field, before resolving the font scheme. */
517
+ slideIndex?: number;
518
+ /** Language reference to resolve instead of the document's `language` (catalog id, BCP-47 tag or Language object). */
519
+ language?: unknown;
520
+ /** Language tag used when neither the document nor `options.language` names a resolvable language. Defaults to `en-US`. */
521
+ defaultLanguage?: string;
522
+ }
523
+ interface ResolvedScriptFonts extends ScriptFontSlots {
524
+ /**
525
+ * Tag for OOXML `a:rPr/@lang` (and `a:endParaRPr/@lang`): an authored tag that carries a region,
526
+ * else the language record's curated `ooxmlLang`, else the canonical BCP-47 tag.
527
+ */
528
+ lang: string;
529
+ /** Canonically cased BCP-47 tag for HTML/SVG `lang`: the authored tag, else the record's `bcp47`. */
530
+ bcp47: string;
531
+ /** Matched languages catalog record id, when one matched. */
532
+ languageId?: string;
533
+ /** `default` when the tag came from `defaultLanguage` because no language resolved. */
534
+ languageSource: "document" | "option" | "default";
535
+ /** ISO 15924 script (`Zzzz` when it cannot be determined). */
536
+ script: string;
537
+ /** Script slot the language's own text uses. */
538
+ scriptRole: ScriptRole;
539
+ direction: "ltr" | "rtl";
540
+ rtl: boolean;
541
+ /** Major (heading) theme font slots. */
542
+ heading: ScriptFontSlots;
543
+ /** Minor (body) theme font slots. The top-level latin/eastAsian/complexScript repeat these. */
544
+ body: ScriptFontSlots;
545
+ /**
546
+ * Supplemental theme font for the language's script. Present only when an explicit slot, the
547
+ * design scheme's own script family or the language's font scheme supplies one; absent for
548
+ * Latin, Cyrillic, Greek and for scripts with no script font. For Armenian, Georgian and
549
+ * Ethiopic (latin slot) an explicit `complexScript` slot or a design `cs` scheme that serves the
550
+ * language replaces the language's own font scheme.
551
+ */
552
+ supplement?: ScriptFontSupplement;
553
+ sources: {
554
+ eastAsian: ScriptFontSource;
555
+ complexScript: ScriptFontSource;
556
+ };
557
+ }
558
+
559
+ /** The OOXML script slot for an ISO 15924 script code. Unknown scripts use the latin slot. */
560
+ declare function scriptFontRole(script: string): ScriptRole;
561
+ /**
562
+ * Resolve the per-script theme fonts, language tags and direction for a
563
+ * presentation (or a `{ design, language, catalogs }` subset of one).
564
+ *
565
+ * The latin slot follows the effective design font scheme exactly as
566
+ * `resolveFontFamilies` does; when nothing names a font scheme it falls back to
567
+ * the shared `DEFAULT_FONT_SCHEME`. Each of the eastAsian and complexScript slots
568
+ * takes, in order: the design font scheme's explicit slot; the scheme's own
569
+ * families when its `languageFamily` names the slot and its `languages` list
570
+ * is empty or names the language; the language's font scheme when the
571
+ * language's script uses the slot; otherwise the latin family.
572
+ */
573
+ declare function resolveScriptFonts(input: unknown, options?: ResolveScriptFontsOptions): ResolvedScriptFonts;
574
+ /**
575
+ * The deck base direction composition lays a slide out in: the direction of the presentation language's script
576
+ * (`rtl` for Arabic, Hebrew and the other right-to-left scripts), `ltr` when the document names no language or
577
+ * the language does not resolve. Layout, preview and export all read this one value (RR-05).
578
+ */
579
+ declare function resolveSlideDirection(presentation: unknown, slideIndex?: number): "ltr" | "rtl";
580
+
581
+ /**
582
+ * Deterministic syntax highlighting shared by the SVG preview and the PPTX export (RR-07).
583
+ *
584
+ * `tokenizeCode(source, language)` returns coloured token ranges over the exact source
585
+ * string; everything between tokens is plain. `codeSyntaxPalette` derives one colour per
586
+ * token kind from the deck theme and keeps each at WCAG contrast >= 4.5:1 against the code
587
+ * panel. The scanner is a small hand-written one (no dependency, no network, no locale or
588
+ * clock input): it recognises comments, strings, numbers, keywords, definition names, calls,
589
+ * capitalised types and the structure of JSON, YAML, TOML, HTML/XML and CSS. It never edits
590
+ * the text: callers colour ranges of `code.source` and the concatenated runs equal the source.
591
+ * An unknown or missing language yields no tokens (plain text).
592
+ */
593
+ type CodeTokenKind = 'comment' | 'keyword' | 'string' | 'number' | 'function' | 'type' | 'property';
594
+ interface CodeToken {
595
+ start: number;
596
+ end: number;
597
+ kind: CodeTokenKind;
598
+ }
599
+ /** A slice of one source line: `kind` is absent for plain text. */
600
+ interface CodeRun {
601
+ start: number;
602
+ end: number;
603
+ kind?: CodeTokenKind;
604
+ }
605
+ type CodeSyntaxPalette = Record<CodeTokenKind | 'plain', string>;
606
+ /** Source longer than this is left plain: highlighting must stay bounded. */
607
+ declare const CODE_HIGHLIGHT_MAX_LENGTH = 200000;
608
+ /** Contrast the palette keeps against the code panel. */
609
+ declare const CODE_SYNTAX_MIN_CONTRAST = 4.5;
610
+ /** The code panel colour the preview and the PPTX export both draw. */
611
+ declare const CODE_PANEL_BACKGROUND = "#111827";
612
+ declare const CODE_PANEL_FOREGROUND = "#E5E7EB";
613
+ /** Language ids with a scanner (the keys the aliases resolve to). */
614
+ declare const CODE_HIGHLIGHT_LANGUAGES: readonly string[];
615
+ /** The scanner id for a `code.language` value, or undefined when the language is not highlighted. */
616
+ declare function resolveCodeLanguage(language: unknown): string | undefined;
617
+ /**
618
+ * Token ranges of `source` for a `code.language` value, sorted and non-overlapping. Empty for
619
+ * an unknown language, a missing language, or source longer than CODE_HIGHLIGHT_MAX_LENGTH.
620
+ */
621
+ declare function tokenizeCode(source: string, language?: unknown): CodeToken[];
622
+ /**
623
+ * The runs of one source line `[start, end)`: consecutive slices that cover the line exactly.
624
+ * A token that crosses the line boundary is clipped, so each native text line can be coloured
625
+ * on its own while concatenating the runs returns the line text unchanged. With `source`, a tab
626
+ * character is always its own plain run, as in the preview where a tab is a measured segment: a
627
+ * token (a multi-line string, say) never colours a tab stop.
628
+ */
629
+ declare function codeLineRuns(tokens: readonly CodeToken[], start: number, end: number, source?: string): CodeRun[];
630
+ interface CodeSyntaxPaletteOptions {
631
+ background?: string;
632
+ foreground?: string;
633
+ minimumContrast?: number;
634
+ }
635
+ interface CodeSyntaxPaletteTheme {
636
+ primary?: string;
637
+ secondary?: string;
638
+ accent?: string;
639
+ mutedText?: string;
640
+ }
641
+ /**
642
+ * One colour per token kind from the deck theme: keyword = primary, string = accent,
643
+ * number = secondary, comment = a fixed slate; function, type and property take fixed hues
644
+ * (blue, cyan, pink) rotated away from any theme colour they would collide with. Every
645
+ * colour is lightened until it keeps `minimumContrast` (4.5:1) against the code panel, so a
646
+ * dark theme colour is raised rather than dropped. Deterministic for a given theme.
647
+ */
648
+ declare function codeSyntaxPalette(theme?: CodeSyntaxPaletteTheme, options?: CodeSyntaxPaletteOptions): CodeSyntaxPalette;
649
+ /**
650
+ * The palette for a resolved colour scheme record (`primary`, `secondary`, `accent`, or the
651
+ * `accent1` to `accent3` slots they default to). The preview and the PPTX export both call this
652
+ * with the scheme they resolved, so they cannot disagree on the inputs.
653
+ */
654
+ declare function codeSyntaxPaletteForScheme(scheme: unknown, options?: CodeSyntaxPaletteOptions): CodeSyntaxPalette;
655
+
656
+ /**
657
+ * Timeline event status (FA-11): how a `done`, `current` or `planned` event looks in the SVG
658
+ * preview and in the PPTX export. Core's timeline layout places the markers and the text and
659
+ * records each event's status on them (see `TimelineLayout.markers` and `TimelineTextPart.status`).
660
+ * This derives, from that geometry and the deck's colors, the shapes and text colors to draw, so
661
+ * both engines draw the same marker in the same place and colors.
662
+ *
663
+ * - no status, `done`: a filled marker in the primary color, normal text (today's marker).
664
+ * - `current` ("we are here"): the same filled marker inside a ring, and the label is bold
665
+ * (layout sets the weight, so the measured line breaks already include it).
666
+ * - `planned`: a hollow marker (primary-color outline over the slide background) and muted text.
667
+ *
668
+ * Text colors are kept at 4.5:1 against the slide background, outlines and rings at 3:1.
669
+ */
670
+
671
+ declare const TIMELINE_STATUSES: readonly ["done", "current", "planned"];
672
+ declare const TIMELINE_TEXT_MIN_CONTRAST = 4.5;
673
+ declare const TIMELINE_OUTLINE_MIN_CONTRAST = 3;
674
+ interface TimelineStatusColors {
675
+ /** The slide background the timeline sits on. */
676
+ background: string;
677
+ /** The marker color (the deck's primary color). */
678
+ primary: string;
679
+ /** The color of normal timeline text. */
680
+ text: string;
681
+ /** The muted color of planned events' text (the deck's secondary text). */
682
+ mutedText: string;
683
+ }
684
+ interface TimelineMarkerShape {
685
+ /** `marker` is the event's dot (or hollow circle), `ring` the circle around a current event's dot. */
686
+ role: 'marker' | 'ring';
687
+ /** DrawingML preset name for native export. */
688
+ shape: 'ellipse';
689
+ cx: number;
690
+ cy: number;
691
+ /** 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. */
692
+ radius: number;
693
+ /** Fill color; undefined means no fill (nothing draws inside the shape). */
694
+ fill?: string;
695
+ /** Outline; undefined means no outline. */
696
+ stroke?: {
697
+ color: string;
698
+ width: number;
699
+ };
700
+ }
701
+ /** The shapes of one marker from `layout.markers`, back to front: the ring (current only), then the marker. */
702
+ declare function timelineMarkerShapes(marker: TimelineLayout['markers'][number], colors: TimelineStatusColors): TimelineMarkerShape[];
703
+ /** The color of one timeline text part: muted for a planned event, the normal text color otherwise, kept at >= 4.5:1. */
704
+ declare function timelineTextColor(part: Pick<TimelineTextPart, 'status'>, colors: TimelineStatusColors): string;
705
+
706
+ /**
707
+ * Line emphasis for code blocks (`code.highlight`), shared by the SVG preview, the PPTX export and the
708
+ * validator so they cannot disagree.
709
+ *
710
+ * `code.highlight` lists 1-based source lines: a line number or an inclusive `[start, end]` range.
711
+ * Lines are counted by line break in `code.source`, so a soft-wrapped line is still one line and every
712
+ * displayed line of it takes the same number (`codeLineNumbers`). Engines draw one band behind each
713
+ * run of marked displayed lines (`codeHighlightBands`) and set the unmarked lines in a slightly dimmed
714
+ * colour (`codeHighlightColors`); both colour sets keep WCAG contrast >= 4.5:1 against what they sit on.
715
+ * Everything here is deterministic: no clock, locale or network.
716
+ */
717
+
718
+ /** One `code.highlight` entry: a line number or an inclusive `[start, end]` range. */
719
+ type CodeHighlightEntry = number | [number, number];
720
+ interface CodeHighlightIssue {
721
+ code: 'code-highlight-out-of-range' | 'code-highlight-range-reversed' | 'code-highlight-invalid';
722
+ /** Index of the entry in `code.highlight`. */
723
+ index: number;
724
+ message: string;
725
+ }
726
+ interface CodeHighlightLines {
727
+ /** Lines in the source (a final empty line after a trailing line break is not counted). */
728
+ lineCount: number;
729
+ /** The marked lines inside the source, ascending and unique. Empty when nothing is marked. */
730
+ lines: number[];
731
+ /** Entries that are ignored: past the last line, written end before start, or not line numbers. */
732
+ issues: CodeHighlightIssue[];
733
+ }
734
+ /** Resolve `code.highlight` against its source: the marked lines, and the entries that are ignored. */
735
+ declare function codeHighlightLines(highlight: unknown, source: string): CodeHighlightLines;
736
+ /** The source line number (from 1) of every displayed line; wrapped lines repeat their line's number. */
737
+ declare function codeLineNumbers(sourceLines: readonly {
738
+ boundary: 'soft' | 'hard' | 'end';
739
+ }[]): number[];
740
+ /** A run of consecutive displayed lines (indexes into `sourceLines`, inclusive) whose source lines are marked. */
741
+ interface CodeHighlightBand {
742
+ first: number;
743
+ last: number;
744
+ }
745
+ /** One band per run of consecutive displayed lines that belong to a marked line. */
746
+ declare function codeHighlightBands(sourceLines: readonly {
747
+ boundary: 'soft' | 'hard' | 'end';
748
+ }[], lines: readonly number[]): CodeHighlightBand[];
749
+ interface CodeHighlightColors {
750
+ /** The band behind marked lines: the panel colour tinted with the theme's primary colour. */
751
+ band: string;
752
+ /** Marked lines: the syntax palette, each colour at least 4.5:1 on `band`. */
753
+ lit: CodeSyntaxPalette;
754
+ /** Unmarked lines: the syntax palette moved toward the panel, never below 4.5:1 on it. */
755
+ dim: CodeSyntaxPalette;
756
+ }
757
+ /**
758
+ * The highlight colours for a resolved colour scheme record. The band takes the scheme's `primary`
759
+ * (or `accent1`); the palette is `codeSyntaxPaletteForScheme(scheme)` so highlighted lines keep their syntax
760
+ * colours. Preview and export call this with the scheme they resolved.
761
+ */
762
+ declare function codeHighlightColors(scheme: unknown, palette?: CodeSyntaxPalette): CodeHighlightColors;
763
+
764
+ /**
765
+ * Geometry of a text watermark (`design.watermark = { text, opacity }`), shared by the SVG preview and the
766
+ * PPTX export so both draw the same stamp.
767
+ *
768
+ * The stamp is one line of text, centered on the slide and rotated 30 degrees counterclockwise (rising to
769
+ * the right), the usual diagonal DRAFT or CONFIDENTIAL mark. It is sized so the line spans at most 70% of the
770
+ * slide width and its height is at most 30% of the shorter slide edge, which keeps the rotated line inside
771
+ * every preset from 9:16 portrait to 16:9 widescreen.
772
+ */
773
+
774
+ interface WatermarkTextOptions {
775
+ /** The heading family of the design. Defaults to `sans-serif`. */
776
+ fontFamily?: string;
777
+ /** Defaults to 700. */
778
+ fontWeight?: number;
779
+ textMeasurement?: TextMeasurement;
780
+ }
781
+ interface WatermarkTextLayout {
782
+ /** The text as drawn: line breaks become spaces and the ends are trimmed. */
783
+ text: string;
784
+ fontFamily: string;
785
+ fontWeight: number;
786
+ /** The resolved text style (the host's font registry may rename the family). */
787
+ style: TextStyle;
788
+ /** In the unit of the size passed in (reference pixels for a composed slide). */
789
+ fontSize: number;
790
+ /** Measured width of the line at `fontSize`. */
791
+ textWidth: number;
792
+ /** The unrotated text box, centered on the slide; PPTX rotates it about its center. */
793
+ box: {
794
+ x: number;
795
+ y: number;
796
+ width: number;
797
+ height: number;
798
+ };
799
+ /** Rotation about the slide center in degrees, clockwise positive. */
800
+ rotation: number;
801
+ }
802
+ /** Lay out a text watermark on a slide of `size`; undefined when the text is empty. */
803
+ declare function layoutWatermark(text: unknown, size: {
804
+ width: number;
805
+ height: number;
806
+ }, options?: WatermarkTextOptions): WatermarkTextLayout | undefined;
807
+
808
+ /**
809
+ * DrawingML preset pattern fills (ECMA-376 20.1.10.51 ST_PresetPatternVal) as 8x8 bitmaps,
810
+ * shared by the SVG preview (RR-07) and the PPTX export, which writes the same names as native
811
+ * `a:pattFill prst="..."`.
812
+ *
813
+ * ECMA-376 names the 54 presets but does not define their pixels. These tiles are MEASURED from
814
+ * desktop PowerPoint (Office 365, Windows, 2026-10-01): each preset was exported as a full-slide
815
+ * pattern background (black on white) to a 1280 x 720 PNG and opf-render's
816
+ * `scripts/derive-pattern-bitmaps.mjs` voted every pixel into its (x mod 8, y mod 8) cell; every
817
+ * tile was uniform across all repeats (confidence 1.00) at one image pixel per pattern pixel, so a
818
+ * pattern pixel is one 1/96 inch unit. The tile is anchored at the slide's top-left corner (the
819
+ * phase of the line, grid and diagonal presets matched at no shift). Measured pixel data is
820
+ * committed as data; no third-party table was used. A tile is one row per line, '#' = foreground,
821
+ * '.' = background, top to bottom, left to right.
822
+ */
823
+ /** ST_PresetPatternVal, in specification order. */
824
+ declare const PATTERN_PRESETS: readonly string[];
825
+ /** Engine ids that are not DrawingML names, with the preset they draw and export as. */
826
+ declare const PATTERN_PRESET_ALIASES: Readonly<Record<string, string>>;
827
+ /** The pattern size PowerPoint tiles: 8 x 8 units, one unit per 1/96 inch. */
828
+ declare const PATTERN_TILE_SIZE = 8;
829
+ /** The DrawingML preset a pattern id draws as: a preset name, an alias (diagStripe), or undefined. */
830
+ declare function resolvePatternPreset(preset: unknown): string | undefined;
831
+ /** Eight row bytes, top to bottom, most significant bit = leftmost pixel; undefined for an unknown id. */
832
+ declare function patternBitmap(preset: unknown): readonly number[] | undefined;
833
+ /** Horizontal runs of set pixels (`x`, `y`, `width` in tile units), in reading order. */
834
+ declare function patternRuns(preset: unknown): {
835
+ x: number;
836
+ y: number;
837
+ width: number;
838
+ }[] | undefined;
275
839
 
276
840
  /**
277
841
  * Footnotes, citations and captions (RR-34).
278
842
  *
279
843
  * - A TextRun may `cite` one or more ids of the deck's top-level `references`, or carry an inline
280
- * `footnote`. Markers are numbered per deck in reading order of first use (slides, then regions,
844
+ * `footnote`. Markers are numbered per deck in reading order of first use (slides: the heading group tag, title, subtitle, then regions,
281
845
  * blocks and runs); the same reference id keeps its number, every footnote takes a new one. A run's
282
846
  * marker is a superscript fragment drawn directly after the run (`1`, or `1,2` for several ids);
283
847
  * `richTextLayouter` emits it from `RichTextOptions.citationMarker`, so it wraps with its word and
@@ -343,8 +907,9 @@ interface AnnotatedRun {
343
907
  footnote?: RichText;
344
908
  }
345
909
  /**
346
- * Visit every rich-text run of a slide that can carry a citation (text, bullets and list item runs),
347
- * in reading order: promoted regions (sorted keys), then blocks (recursively), then the root payload.
910
+ * Visit every rich-text run of a slide that can carry a citation (the slide tag, title and subtitle, then
911
+ * text, bullets, list item and quote runs), in reading order: the heading group first (tag, title, subtitle),
912
+ * then promoted regions (sorted keys), then blocks (recursively), then the root payload.
348
913
  * `basePath` is the slide's dotted path (`slides.3`).
349
914
  */
350
915
  declare function walkCitationRuns(slide: unknown, basePath: string, visit: (entry: AnnotatedRun) => void): void;
@@ -488,7 +1053,8 @@ interface ReferencesSlideOptions {
488
1053
  declare function referencesSlide(presentation: unknown, options?: ReferencesSlideOptions): Record<string, unknown>;
489
1054
 
490
1055
  /** The chart constructs the engines draw. Every catalog chart type id resolves to one (see `chartOptionTarget`). */
491
- type ChartOptionKind = 'bar' | 'line' | 'area' | 'pie' | 'doughnut' | 'scatter' | 'radar' | 'treemap' | 'histogram' | 'pareto' | 'box' | 'waterfall' | 'funnel' | 'map';
1056
+ /** `combo` (FA-15) draws clustered columns and line series in one plot, the lines optionally on a secondary value axis. */
1057
+ type ChartOptionKind = 'bar' | 'line' | 'area' | 'pie' | 'doughnut' | 'scatter' | 'radar' | 'treemap' | 'histogram' | 'pareto' | 'box' | 'waterfall' | 'funnel' | 'map' | 'combo';
492
1058
  interface ChartOptionTarget {
493
1059
  kind: ChartOptionKind;
494
1060
  /** Stacked and 100% stacked columns, bars, lines and areas: their data labels have no outside-end position. */
@@ -499,7 +1065,7 @@ type ChartLabelContent = 'category' | 'value' | 'percent';
499
1065
  type ChartLabelPosition = 'center' | 'inside-end' | 'inside-base' | 'outside-end' | 'above' | 'below' | 'left' | 'right';
500
1066
  interface ChartOptionDiagnostic {
501
1067
  code: 'chart-option-adapted';
502
- /** The option that was adapted: `axisTitles.category`, `axisTitles.value`, `legend`, `dataLabels`, `dataLabels.content`, `dataLabels.position` or `dataLabels.separator`. */
1068
+ /** 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`. */
503
1069
  option: string;
504
1070
  reason: 'unsupported-type' | 'unsupported-content' | 'unsupported-position';
505
1071
  message: string;
@@ -507,34 +1073,57 @@ interface ChartOptionDiagnostic {
507
1073
  interface ResolvedChartDataLabels {
508
1074
  /** Canonical order: category, value, percent. Never empty. */
509
1075
  content: ChartLabelContent[];
510
- /** The concrete position, or null for a construct whose labels have no position choice (area, doughnut, radar, treemap). */
1076
+ /** 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. */
511
1077
  position: ChartLabelPosition | null;
1078
+ /** Combo charts only: the concrete position of the line series' labels (`position` is the column series' one). */
1079
+ linePosition?: ChartLabelPosition;
512
1080
  separator: string;
513
1081
  }
1082
+ /** FA-14: the series and category names `chart.highlight` keeps for a chart type (what the type cannot highlight is dropped, with a diagnostic). */
1083
+ interface ResolvedChartHighlight {
1084
+ /** Series (column) names whose marks take the accent colour. */
1085
+ series: string[];
1086
+ /** Category (row label) names whose marks take the accent colour. */
1087
+ categories: string[];
1088
+ }
514
1089
  interface ResolvedChartOptions {
515
1090
  /** True when the chart carries at least one option (after adaptation); false means every engine keeps today's output. */
516
1091
  active: boolean;
1092
+ /** `secondary` titles the secondary value axis of a combo chart. */
517
1093
  axisTitles: {
518
1094
  category?: string;
519
1095
  value?: string;
1096
+ secondary?: string;
520
1097
  };
521
1098
  /** Undefined = no legend option: each engine keeps its default (a right legend on multi-series, pie and doughnut charts). */
522
1099
  legend?: ChartLegendPosition;
523
1100
  dataLabels?: ResolvedChartDataLabels;
524
1101
  /** True when `dataLabels: false` switches off the labels a construct draws by default (funnel values, treemap category names). */
525
1102
  dataLabelsOff?: boolean;
1103
+ /**
1104
+ * FA-14: the names `chart.highlight` keeps; undefined when the chart has no highlight or its type can highlight nothing it names.
1105
+ * It does not make `active` true: a highlight changes the colours of marks, never the geometry or the reserved space.
1106
+ */
1107
+ highlight?: ResolvedChartHighlight;
526
1108
  diagnostics: ChartOptionDiagnostic[];
527
1109
  }
528
1110
  interface ChartOptionSupport {
1111
+ /** `secondary`: the construct can have a secondary value axis (a combo chart whose `secondaryAxis` names a line series). */
529
1112
  axisTitles: {
530
1113
  category: boolean;
531
1114
  value: boolean;
1115
+ secondary: boolean;
532
1116
  };
533
1117
  legend: boolean;
1118
+ /** FA-14: what `chart.highlight` can name: series (a whole series' marks) and categories (one category's marks, or a pie slice). */
1119
+ highlight: {
1120
+ series: boolean;
1121
+ categories: boolean;
1122
+ };
534
1123
  dataLabels: {
535
1124
  supported: boolean;
536
1125
  content: readonly ChartLabelContent[];
537
- /** Empty when labels have no position choice. */
1126
+ /** Empty when labels have no position choice. A combo chart lists the column positions, then the line-only ones. */
538
1127
  positions: readonly ChartLabelPosition[];
539
1128
  /** The position `auto` resolves to; null with no positions. */
540
1129
  defaultPosition: ChartLabelPosition | null;
@@ -544,7 +1133,7 @@ interface ChartOptionSupport {
544
1133
  }
545
1134
  /** What a chart construct can show. The table the docs, the validator, the preview and the exporter all follow. */
546
1135
  declare function chartOptionSupport(target: ChartOptionTarget): ChartOptionSupport;
547
- /** The option target for a catalog chart type id (deprecated ids resolve to their replacement); undefined for an id outside the catalog. */
1136
+ /** The option target for a catalog chart type id; undefined for an id outside the catalog. */
548
1137
  declare function chartOptionTarget(typeId: unknown): ChartOptionTarget | undefined;
549
1138
  declare const DEFAULT_CHART_LABEL_SEPARATOR = ", ";
550
1139
  /**
@@ -562,6 +1151,53 @@ declare function chartLabelText(parts: {
562
1151
  value?: string;
563
1152
  percent?: string;
564
1153
  }, content: readonly ChartLabelContent[], separator?: string): string;
1154
+ /** Which marks of a chart a highlight names, in the order of the resolved chart data. */
1155
+ interface ChartHighlightMarks {
1156
+ /** One flag per plotted series (the columns after the category and X columns): its marks are highlighted. */
1157
+ series: boolean[];
1158
+ /** One flag per data row: the marks of that category are highlighted. */
1159
+ categories: boolean[];
1160
+ }
1161
+ /**
1162
+ * FA-14: which series and categories of a chart are highlighted. `highlight` is `resolveChartOptions(...).highlight` and `data` the
1163
+ * chart's `resolveChartData` result (its `columns`, `hasX` and `rows`). A mark is highlighted when its series OR its category is
1164
+ * 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
1165
+ * colour (`chartHighlightColors`). Category names match the row labels as text (a number label `2024` matches `"2024"`, an empty label
1166
+ * matches `""`), every row that carries the label. Returns undefined when there is no highlight or it names nothing the chart plots (a
1167
+ * name that matches no column or label is the `chart-highlight-unknown-name` validation error), so the engines then draw the chart as if
1168
+ * it had none.
1169
+ */
1170
+ declare function chartHighlightMarks(highlight: ResolvedChartHighlight | undefined, data: {
1171
+ columns: readonly string[];
1172
+ hasX?: boolean;
1173
+ rows: readonly (readonly unknown[])[];
1174
+ }): ChartHighlightMarks | undefined;
1175
+
1176
+ /** Placeholder kinds that hold slide content (everything except the three heading kinds). */
1177
+ declare const LAYOUT_BODY_KINDS: readonly ["text", "list", "image", "video", "chart", "table", "code", "metric", "quote", "timeline"];
1178
+ type LayoutBodyKind = typeof LAYOUT_BODY_KINDS[number];
1179
+ /** What a layout record holds, derived from its placeholders. */
1180
+ interface LayoutContent {
1181
+ /** 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. */
1182
+ kind: LayoutBodyKind | 'title';
1183
+ /** The number of body placeholders. */
1184
+ count: number;
1185
+ /** Which heading placeholders the layout has. */
1186
+ heading: {
1187
+ title: boolean;
1188
+ subtitle: boolean;
1189
+ tag: boolean;
1190
+ };
1191
+ }
1192
+ /**
1193
+ * Derives what a layout holds from its `placeholders`, which are the single source of truth: the content kind,
1194
+ * the number of body regions and which headings it has are never stored on the record.
1195
+ */
1196
+ declare function layoutContent(record: {
1197
+ placeholders?: ReadonlyArray<{
1198
+ type?: string;
1199
+ } | null | undefined>;
1200
+ } | null | undefined): LayoutContent;
565
1201
 
566
1202
  /** Portable layout geometry. No fonts, DOM, renderer, or network dependencies. */
567
1203
  interface Composition {
@@ -597,6 +1233,8 @@ interface TextStyle {
597
1233
  italic?: boolean;
598
1234
  path?: string;
599
1235
  fontFace?: FontFaceSelection;
1236
+ /** BCP-47 tag of a run that overrides the deck language (`TextRun.lang`); absent when the deck language applies. */
1237
+ lang?: string;
600
1238
  }
601
1239
  /** Role families. `accent` is present only when the scheme defines an accent role; the slide tag and quote body use it. */
602
1240
  interface FontFamilies {
@@ -635,7 +1273,7 @@ declare function resolveFontSchemeReference(reference: unknown, lookup: (id: str
635
1273
  * A scheme that names no heading or body family gets the DEFAULT_FONT_SCHEME families (Aptos Display, Aptos).
636
1274
  * `code` comes from the scheme's `code` role, which catalog records such as consolas and courier-new
637
1275
  * carry; otherwise it is Roboto Mono. Heading and body families are never reused for code.
638
- * `accent` is returned only when the scheme defines an `accent` role (a family string or Font object);
1276
+ * `accent` is returned only when the scheme defines an `accent` role (a family name string);
639
1277
  * the slide tag and the quote body use it in place of the body and heading families. */
640
1278
  declare function resolveFontFamilies(input: unknown): FontFamilies;
641
1279
  interface TextMeasurement {
@@ -645,6 +1283,14 @@ interface TextMeasurement {
645
1283
  * Null means no outline. These are not hinted/antialiased raster bounds. */
646
1284
  outlineBounds?: (text: string, fontSize: number, style: TextStyle) => LayoutBox | null;
647
1285
  }
1286
+ /**
1287
+ * The fonts handle every deck-level verb takes as `{ fonts }`. Core reads only `textMeasurement`: how wide the
1288
+ * host's real fonts draw a string. The renderer's `loadFonts()` returns a richer handle (embedded fonts, font
1289
+ * files, registry, manifest) that extends this one, so the same object goes to every verb.
1290
+ */
1291
+ interface Fonts {
1292
+ textMeasurement?: TextMeasurement;
1293
+ }
648
1294
  type MeasureTextWidth = (text: string, fontSize: number) => number;
649
1295
  declare function resolveTextStyle(style: TextStyle, measurement?: TextMeasurement): TextStyle;
650
1296
  declare function textWidthMeasurer(style: TextStyle, measurement?: TextMeasurement): MeasureTextWidth;
@@ -723,15 +1369,15 @@ interface ComposedItem {
723
1369
  composition: Composition;
724
1370
  /**
725
1371
  * Resolved horizontal text alignment for this item: titleAlignment for the
726
- * title, contentAlignment for every other item (slide design, then host
727
- * option, then left). Engines anchor native and preview text to this value.
1372
+ * title, contentAlignment for every other item (slide design, deck design, layout design,
1373
+ * then left). Engines anchor native and preview text to this value.
728
1374
  */
729
1375
  alignment: 'left' | 'center' | 'right';
730
1376
  }
731
1377
  /**
732
1378
  * Slide-level image resolved from design.slideImage. It is active when the slide sets its own
733
- * design.slideImage, or when the deck sets one and either the slide's layout record declares
734
- * slideImage: true or the slide's root image is the same source.
1379
+ * design.slideImage, or when the deck sets one and either the slide's layout record sets
1380
+ * design.slideImage, or the slide's root image is the same source.
735
1381
  * Content composes in the part of the slide the image does not occupy; 'background' leaves the whole slide.
736
1382
  */
737
1383
  interface ComposedSlideImage {
@@ -880,6 +1526,12 @@ interface SlideComposition {
880
1526
  composition: Composition;
881
1527
  /** Repeated furniture is measured separately from body pagination leaves. */
882
1528
  furniture?: FurnitureLayout;
1529
+ /**
1530
+ * Effective shared design hints of this slide: slide design, then deck design, then the layout record's design,
1531
+ * per key. Renderers and exporters read titleAlignment, contentAlignment, contentBox, imageFill and
1532
+ * listBullet here instead of re-deriving them from the document.
1533
+ */
1534
+ design: ResolvedDesignHints;
883
1535
  /** Active slide-level image; absent when design.slideImage does not apply to this slide. */
884
1536
  slideImage?: ComposedSlideImage;
885
1537
  /** Deck logo on a cover or section slide; absent on content slides and when no logo resolves. */
@@ -906,11 +1558,16 @@ interface ComposeSlideOptions {
906
1558
  contentDirection?: unknown;
907
1559
  chartPrimary?: unknown;
908
1560
  listBullet?: unknown;
1561
+ titleAlignment?: unknown;
1562
+ contentAlignment?: unknown;
1563
+ contentBox?: unknown;
909
1564
  };
910
1565
  organization?: unknown;
1566
+ speaker?: unknown;
911
1567
  slides?: unknown;
912
1568
  catalogs?: unknown;
913
1569
  references?: unknown;
1570
+ datasets?: unknown;
914
1571
  };
915
1572
  /**
916
1573
  * Whether the slide background is dark, by the host's own luminance test. Selects the light logo
@@ -933,7 +1590,7 @@ interface ComposeSlideOptions {
933
1590
  * consults a clock; without this option a current date is reported as unresolved content.
934
1591
  */
935
1592
  date?: string;
936
- fonts?: Partial<FontFamilies>;
1593
+ fontFamilies?: Partial<FontFamilies>;
937
1594
  /**
938
1595
  * Deck base direction (RR-05). Defaults to the direction of the presentation language's script. In a right-to-left deck
939
1596
  * composition mirrors the arrangement (the first column or `left` region is drawn at the right, slide images, logos and
@@ -941,12 +1598,12 @@ interface ComposeSlideOptions {
941
1598
  * reports each paragraph's direction. Alignment stays logical: `left` is the start edge.
942
1599
  */
943
1600
  direction?: TextDirection;
944
- /** Host-resolved alignment for shared content; slide design can override it. */
1601
+ /** 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. */
945
1602
  contentAlignment?: 'left' | 'center' | 'right';
946
1603
  titleAlignment?: 'left' | 'center' | 'right';
947
1604
  /** Unscaled reference pixels around provided vector outlines; defaults to 1 for body text and 2 for furniture. Explicit values apply to both. */
948
1605
  textRasterPadding?: number;
949
- /** Host-resolved body cards. A slide's explicit design.contentBox overrides this value. */
1606
+ /** Deck-level body cards a host resolved itself, ranked like contentAlignment. A slide's explicit design.contentBox overrides this value. */
950
1607
  contentBox?: boolean;
951
1608
  textMeasurement?: TextMeasurement;
952
1609
  width?: number;
@@ -990,7 +1647,7 @@ declare function resolveLogo(presentation: unknown, slide: unknown, options?: Re
990
1647
  interface FurniturePartBase {
991
1648
  kind: 'header' | 'footer';
992
1649
  zone: 'left' | 'center' | 'right';
993
- field: 'text' | 'image' | 'logo' | 'organization' | 'socials' | 'section' | 'slideNumber' | 'date';
1650
+ field: 'text' | 'image' | 'logo' | 'organization' | 'speaker' | 'socials' | 'section' | 'slideNumber' | 'date';
994
1651
  /** Literal field or controlling flag, with the actual inherited/local path. */
995
1652
  path: string;
996
1653
  /** String/asset source, when different from a generated field's flag. */
@@ -1088,9 +1745,12 @@ declare const FONT_SIZE_GRID_PER_PX = 75;
1088
1745
  declare function snapFontSizeDown(px: number): number;
1089
1746
  /** Smallest grid size not below `px`. Used for readability floors, so a floor is never undercut. */
1090
1747
  declare function snapFontSizeUp(px: number): number;
1748
+ /** `text` is a string or TextRun[] (FA-10); attribution, role and source stay plain strings. */
1091
1749
  interface QuoteContent {
1092
- text: string;
1750
+ text: string | readonly (string | RichTextRun)[];
1093
1751
  attribution?: string;
1752
+ role?: string;
1753
+ photo?: unknown;
1094
1754
  source?: string;
1095
1755
  }
1096
1756
  /** Source and displayed-text ranges are half-open UTF-16 offsets. Added punctuation has no source range. */
@@ -1112,24 +1772,46 @@ interface QuoteTextPart {
1112
1772
  minFontSize: number;
1113
1773
  requestedStyle: TextStyle;
1114
1774
  style: TextStyle;
1115
- /** Absent when the available box is invalid; never fit against an invented one-pixel box. */
1116
- fit?: TextFit;
1775
+ /**
1776
+ * The displayed runs of a rich quote body (FA-10): the quote's TextRun[] with the quotation marks joined to its first and
1777
+ * last run, so a run's index and a citation marker's position never shift. Absent for a string body and for the footer.
1778
+ */
1779
+ runs?: (string | RichTextRun)[];
1780
+ /** Absent when the available box is invalid; never fit against an invented one-pixel box. A rich body reports a RichTextFit. */
1781
+ fit?: TextFit | RichTextFit;
1117
1782
  }
1118
1783
  interface QuoteLayoutDiagnostic extends LayoutDiagnostic {
1119
- reason: 'invalid-part-box' | 'part-outside-cell' | 'text-fit' | 'part-overlap';
1784
+ reason: 'invalid-part-box' | 'part-outside-cell' | 'text-fit' | 'part-overlap' | 'photo-fit';
1120
1785
  parts: QuoteTextPart['role'][];
1121
1786
  }
1787
+ /**
1788
+ * The attributed person's headshot (FA-12): a circle at the start edge of the footer row, beside the
1789
+ * attribution and role lines (the left in a left-to-right deck, the right in a right-to-left one). Its diameter is
1790
+ * three times the footer font size, so it follows the text when the footer shrinks toward the readability floor.
1791
+ */
1792
+ interface QuotePhoto {
1793
+ /** Path of the photo value, `<quote path>.photo`. */
1794
+ path: string;
1795
+ /** Asset value (string or Asset object) that engines resolve like any other image; crop to cover the frame. */
1796
+ value: unknown;
1797
+ /** Square frame, in reference pixels. */
1798
+ box: LayoutBox;
1799
+ /** Circle mask: the `ellipse` DrawingML preset and the same outline as an SVG path, as design.slideImage shape 'circle'. */
1800
+ shape: SlideImageShape;
1801
+ }
1122
1802
  interface QuoteLayout {
1123
1803
  algorithm: 'quote-flow-v1';
1124
1804
  textMeasurement: 'estimated' | 'provided';
1125
1805
  parts: QuoteTextPart[];
1806
+ /** Present when the quote has a photo; absent otherwise, and then the layout is the footer-only layout. */
1807
+ photo?: QuotePhoto;
1126
1808
  diagnostics: QuoteLayoutDiagnostic[];
1127
1809
  overflow: boolean;
1128
1810
  }
1129
1811
  interface QuoteLayoutOptions {
1130
1812
  /** Canvas short edge divided by 720. Insets retain the current 18 reference-pixel contract. */
1131
1813
  scale?: number;
1132
- fonts?: Partial<FontFamilies>;
1814
+ fontFamilies?: Partial<FontFamilies>;
1133
1815
  /** Readability floor in reference pixels, before canvas scaling. */
1134
1816
  minFontSize?: number;
1135
1817
  overflow?: Composition['overflow'];
@@ -1137,6 +1819,8 @@ interface QuoteLayoutOptions {
1137
1819
  textMeasurement?: TextMeasurement;
1138
1820
  /** Deck direction; in a right-to-left deck every part fit reports its paragraphs' directions (RR-05). */
1139
1821
  direction?: TextDirection;
1822
+ /** Marker text for a rich body run by its dotted path (`<path>.text.<runIndex>`); composeSlide supplies the deck numbering. */
1823
+ citationMarker?: (runPath: string) => string | undefined;
1140
1824
  }
1141
1825
  /**
1142
1826
  * Allocate and measure quote body/footer space for composition, rendering and export. Callers must
@@ -1150,7 +1834,11 @@ interface MetricContent {
1150
1834
  unit?: string;
1151
1835
  delta?: string | number;
1152
1836
  trend?: 'up' | 'down' | 'flat';
1837
+ /** Whether the change is good news; colours the trend arrow, trend word and delta text (see metricTrendColor). */
1838
+ sentiment?: MetricSentiment;
1153
1839
  }
1840
+ /** The text fields of a metric, each laid out as its own part. `sentiment` is metadata, not text. */
1841
+ type MetricTextRole = Exclude<keyof MetricContent, 'sentiment'>;
1154
1842
  /** Ranges address String(sourceValue), not the numeric token spelling in serialized JSON. */
1155
1843
  interface MetricTextSource {
1156
1844
  path: string;
@@ -1159,7 +1847,7 @@ interface MetricTextSource {
1159
1847
  end: number;
1160
1848
  }
1161
1849
  interface MetricTextPart {
1162
- role: keyof MetricContent;
1850
+ role: MetricTextRole;
1163
1851
  path: string;
1164
1852
  text: string;
1165
1853
  sources: MetricTextSource[];
@@ -1187,6 +1875,8 @@ interface MetricLayout {
1187
1875
  alignment: 'left' | 'center' | 'right';
1188
1876
  textMeasurement: 'estimated' | 'provided';
1189
1877
  arrangement: 'inline-unit' | 'stacked';
1878
+ /** The metric's `sentiment`, passed through for metricTrendMark; omitted when the content has none. */
1879
+ sentiment?: MetricSentiment;
1190
1880
  /** At most 48 arrangements; value fitting is bounded by 77 reference-size trials per arrangement. */
1191
1881
  attempts: number;
1192
1882
  parts: MetricTextPart[];
@@ -1205,10 +1895,13 @@ interface MetricLayoutOptions extends QuoteLayoutOptions {
1205
1895
  * beside it from these accepted parts. Consumers must reuse these accepted parts and source ranges.
1206
1896
  */
1207
1897
  declare function layoutMetric(value: string | number | MetricContent, box: LayoutBox, options?: MetricLayoutOptions): MetricLayout;
1898
+ /** Progress of a timeline event (FA-11). Engines draw it from the deck's colors; see `timelineMarkerShapes`. */
1899
+ type TimelineStatus = 'done' | 'current' | 'planned';
1208
1900
  interface TimelineEvent {
1209
1901
  when?: string;
1210
1902
  what: string;
1211
1903
  description?: string;
1904
+ status?: TimelineStatus;
1212
1905
  }
1213
1906
  interface TimelineContent {
1214
1907
  name?: string;
@@ -1218,6 +1911,8 @@ interface TimelineContent {
1218
1911
  interface TimelineTextPart {
1219
1912
  role: 'name' | 'description' | 'when' | 'what' | 'event-description';
1220
1913
  eventIndex?: number;
1914
+ /** The event's status; absent for metadata parts and for events without a status. */
1915
+ status?: TimelineStatus;
1221
1916
  path: string;
1222
1917
  text: string;
1223
1918
  sources: {
@@ -1244,12 +1939,23 @@ interface TimelineLayout {
1244
1939
  textMeasurement: 'provided' | 'estimated';
1245
1940
  textOutlines: 'provided' | 'unavailable';
1246
1941
  parts: TimelineTextPart[];
1942
+ /**
1943
+ * One marker per event. `radius` is the marker's own radius; `status` repeats the event's status
1944
+ * (absent without one). A 'current' marker also has `ring.radius`, 1.6 times `radius`, and a
1945
+ * 'current' or 'planned' marker has the `strokeWidth` of its outline and ring. Every radius is that
1946
+ * of the drawn ellipse; an outline is centered on the ellipse edge, so it reaches half a stroke beyond.
1947
+ */
1247
1948
  markers: {
1248
1949
  path: string;
1249
1950
  eventIndex: number;
1250
1951
  x: number;
1251
1952
  y: number;
1252
1953
  radius: number;
1954
+ status?: TimelineStatus;
1955
+ ring?: {
1956
+ radius: number;
1957
+ };
1958
+ strokeWidth?: number;
1253
1959
  }[];
1254
1960
  connector: {
1255
1961
  x1: number;
@@ -1344,6 +2050,10 @@ interface RichTextRun {
1344
2050
  link?: string;
1345
2051
  superscript?: boolean;
1346
2052
  subscript?: boolean;
2053
+ /** Inline code: the run takes the design's code font (`RichTextOptions.codeFontFamily`) unless it names its own `fontFamily`. */
2054
+ code?: boolean;
2055
+ /** BCP-47 tag that overrides the deck language for this run; it reaches the fragment style as `style.lang`. */
2056
+ lang?: string;
1347
2057
  /** RR-34: reference ids this run cites (a marker follows the run; the deck's `references` list resolves them). */
1348
2058
  cite?: string | string[];
1349
2059
  /** RR-34: an inline footnote for this run (a marker follows the run; the note is listed in the slide's footnote area). */
@@ -1382,6 +2092,8 @@ interface RichTextFit extends TextFit {
1382
2092
  }
1383
2093
  interface RichTextOptions {
1384
2094
  style: TextStyle;
2095
+ /** The design's code family for runs with `code: true`; `monospace` when absent. */
2096
+ codeFontFamily?: string;
1385
2097
  textMeasurement?: TextMeasurement;
1386
2098
  /** Use one measured line advance for every line, as native table cells do. */
1387
2099
  uniformLineHeight?: boolean;
@@ -1469,8 +2181,14 @@ interface TableLayoutOptions {
1469
2181
  scale?: number;
1470
2182
  minFontSize?: number;
1471
2183
  fontFamily?: string;
2184
+ /** The design's code family for cell runs with `code: true`. */
2185
+ codeFontFamily?: string;
1472
2186
  textMeasurement?: TextMeasurement;
1473
2187
  path?: string;
2188
+ /** RR-54: the document, for a dataset-backed table (`{ dataset }`): its headers, rows and column formats come from `datasets`. */
2189
+ presentation?: {
2190
+ datasets?: unknown;
2191
+ };
1474
2192
  /**
1475
2193
  * Deck direction. A right-to-left deck lays the columns out right to left: the first column is the rightmost
1476
2194
  * and each cell's text reports its paragraph direction (RR-05).
@@ -1520,4 +2238,4 @@ declare function resolveCanvasDimensions(input: unknown): {
1520
2238
  height: number;
1521
2239
  };
1522
2240
 
1523
- 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 };
2241
+ export { type CodeRun as $, type AnnotatedRun as A, type ChartHighlightMarks as B, type ComposeSlideOptions as C, type ChartLabelContent as D, type ChartLabelPosition as E, type FontFamilies as F, type ChartLegendPosition as G, type ChartOptionDiagnostic as H, type ChartOptionKind as I, type ChartOptionSupport as J, type ChartOptionTarget as K, type LanguageFamilyName as L, type MeasureTextWidth as M, type CitationMarker as N, type CitationNote as O, type CodeContent as P, type CodeHighlightBand as Q, type CodeHighlightColors as R, type CodeHighlightEntry as S, type TextMeasurement as T, type CodeHighlightIssue as U, type CodeHighlightLines as V, type CodeLayout as W, type CodeLayoutDiagnostic as X, type CodeLayoutOptions as Y, type CodeLineSegment as Z, type CodeLineSource as _, type FontSchemeDiagnostic as a, type MetricLayoutDiagnostic as a$, type CodeSyntaxPalette as a0, type CodeSyntaxPaletteOptions as a1, type CodeSyntaxPaletteTheme as a2, type CodeTextFit as a3, type CodeTextPart as a4, type CodeToken as a5, type CodeTokenKind as a6, type ComposedCaption as a7, type ComposedFlow as a8, type ComposedFootnoteEntry as a9, type FurnitureImagePart as aA, type FurnitureLayout as aB, type FurniturePart as aC, type FurniturePartBase as aD, type FurnitureSocialLink as aE, type FurnitureTextExtras as aF, type FurnitureTextPart as aG, LAYOUT_BODY_KINDS as aH, type LayoutBodyKind as aI, type LayoutBox as aJ, type LayoutContent as aK, type ListBulletImage as aL, type ListEntryLayout as aM, type ListFit as aN, type ListFitOptions as aO, type ListNumber as aP, type ListText as aQ, type ListValue as aR, type LogoSlot as aS, MAX_COMPOSITION_DEPTH as aT, MAX_NUMBERING_LEVELS as aU, MAX_NUMBERING_VALUE as aV, MAX_ROMAN_VALUE as aW, METRIC_TREND_MIN_CONTRAST as aX, METRIC_TREND_SHAPES as aY, type MetricContent as aZ, type MetricLayout as a_, type ComposedFootnotes as aa, type ComposedGroup as ab, type ComposedItem as ac, type ComposedLogo as ad, type ComposedSlideImage as ae, type Composition as af, type CompositionCandidate as ag, type CompositionDecision as ah, type CompositionExplanation as ai, type CompositionPenalties as aj, type CompositionTrack as ak, DARK_BACKGROUND_LUMINANCE as al, DEFAULT_CHART_LABEL_SEPARATOR as am, DEFAULT_FONT_SCHEME as an, DEFAULT_FURNITURE_DATE_FORMAT as ao, DEFAULT_SLIDE_NUMBER_FORMAT as ap, DESIGN_HINT_KEYS as aq, type DeckCitations as ar, type DesignHintKey as as, type DesignHintSource as at, type DesignHints as au, FONT_SIZE_GRID_PER_PX as av, FOOTNOTE_MAX_RATIO as aw, type FontFaceSelection as ax, type FootnoteLayoutOptions as ay, type FurnitureField as az, type Fonts as b, TIMELINE_OUTLINE_MIN_CONTRAST as b$, type MetricLayoutOptions as b0, type MetricSentiment as b1, type MetricTextPart as b2, type MetricTextSource as b3, type MetricTrend as b4, type MetricTrendColorOptions as b5, type MetricTrendMark as b6, NUMBERING_STYLES as b7, NUMBERING_SUFFIXES as b8, type Numbering as b9, type ResolvedChartHighlight as bA, type ResolvedChartOptions as bB, type ResolvedColorRoles as bC, type ResolvedDesignHints as bD, type ResolvedFontScheme as bE, type ResolvedLogo as bF, type ResolvedNumbering as bG, type ResolvedScriptFonts as bH, type RichText as bI, type RichTextFit as bJ, type RichTextFragment as bK, type RichTextLine as bL, type RichTextOptions as bM, type RichTextRun as bN, SURFACE_ALT_MIN_CONTRAST as bO, SURFACE_ALT_MIX as bP, type ScriptFontApp as bQ, type ScriptFontSlots as bR, type ScriptFontSource as bS, type ScriptFontSupplement as bT, type ScriptRole as bU, type SlideCitations as bV, type SlideComposition as bW, type SlideImageShape as bX, type SocialPlatformRecord as bY, type SocialProfile as bZ, type SourceTextFit as b_, type NumberingInput as ba, type NumberingStyleName as bb, type NumberingSuffix as bc, OPFCompositionError as bd, PATTERN_PRESETS as be, PATTERN_PRESET_ALIASES as bf, PATTERN_TILE_SIZE as bg, PICTURE_BULLET_SCALE as bh, type PhysicalAlignment as bi, type QuoteContent as bj, type QuoteLayout as bk, type QuoteLayoutDiagnostic as bl, type QuoteLayoutOptions as bm, type QuotePhoto as bn, type QuoteTextPart as bo, type QuoteTextSource as bp, type ReadingBox as bq, type Reference as br, type ReferencesSlideOptions as bs, type ResolveColorRefOptions as bt, type ResolveColorRefRoles as bu, type ResolveColorRolesOptions as bv, type ResolveDesignHintsOptions as bw, type ResolveLogoOptions as bx, type ResolveScriptFontsOptions as by, type ResolvedChartDataLabels as bz, type LayoutDiagnostic as c, layoutFurniture as c$, TIMELINE_STATUSES as c0, TIMELINE_TEXT_MIN_CONTRAST as c1, type TableBorder as c2, type TableCellLayout as c3, type TableCellStyle as c4, type TableGrid as c5, type TableGridCell as c6, type TableGridIssue as c7, type TableLayout as c8, type TableLayoutOptions as c9, chartOptionTarget as cA, chartPaletteForFill as cB, citationMarkerText as cC, codeHighlightBands as cD, codeHighlightColors as cE, codeHighlightLines as cF, codeLineNumbers as cG, codeLineRuns as cH, codeSyntaxPalette as cI, codeSyntaxPaletteForScheme as cJ, collectCitations as cK, colorContrast as cL, composeSlide as cM, defaultSlideBackground as cN, fitList as cO, fitRichText as cP, fitText as cQ, formatChartLabelNumber as cR, formatChartLabelPercent as cS, formatFurnitureDate as cT, formatListNumber as cU, formatSlideNumber as cV, isDarkColor as cW, layoutCaption as cX, layoutCode as cY, layoutContent as cZ, layoutFootnotes as c_, type TableRowLayout as ca, type TextDirection as cb, type TextFit as cc, type TextLineInk as cd, type TextLineSegment as ce, type TextLineSource as cf, type TextPlacement as cg, type TextPlacementLine as ch, type TimelineContent as ci, type TimelineEvent as cj, type TimelineLayout as ck, type TimelineLayoutDiagnostic as cl, type TimelineLayoutOptions as cm, type TimelineMarkerShape as cn, type TimelineStatus as co, type TimelineStatusColors as cp, type TimelineTextPart as cq, type WatermarkTextLayout as cr, type WatermarkTextOptions as cs, annotationText as ct, captionSettings as cu, chartColorForFill as cv, chartHighlightColors as cw, chartHighlightMarks as cx, chartLabelText as cy, chartOptionSupport as cz, type TextStyle as d, layoutMetric as d0, layoutQuote as d1, layoutTable as d2, layoutTimeline as d3, layoutWatermark as d4, listNumbers as d5, measureText as d6, measureTextOutline as d7, metricTrendColor as d8, metricTrendMark as d9, resolveTextStyle as dA, scriptFontRole as dB, sliceNumberedItems as dC, slideCitations as dD, slideImageShape as dE, snapFontSizeDown as dF, snapFontSizeUp as dG, surfaceAltColor as dH, tableGrid as dI, tableRowBoundaries as dJ, textColorForFill as dK, textWidthMeasurer as dL, timelineMarkerShapes as dM, timelineTextColor as dN, tokenizeCode as dO, visualReadingOrder as dP, walkCitationRuns as dQ, wrapText as dR, metricTrendPoints as da, normalizeHexColor as db, numberingAtLevel as dc, numberingStyleDraws as dd, paragraphDirection as de, paragraphDirectionAt as df, patternBitmap as dg, patternRuns as dh, physicalAlignment as di, placeTextLines as dj, referencesSlide as dk, resolveCanvasDimensions as dl, resolveChartOptions as dm, resolveCodeLanguage as dn, resolveColorRef as dp, resolveColorRoles as dq, resolveDesignHints as dr, resolveFontFamilies as ds, resolveFontSchemeReference as dt, resolveLogo as du, resolveNumbering as dv, resolvePatternPreset as dw, resolveScriptFonts as dx, resolveSlideDirection as dy, resolveSocialProfile as dz, type AnnotationFitter as e, type AnnotationLayoutOptions as f, CAPTIONABLE_FIELDS as g, CAPTION_FONT_RATIO as h, CAPTION_MAX_RATIO as i, CHART_HIGHLIGHT_MUTED_MIN_CONTRAST as j, CHART_HIGHLIGHT_MUTED_MIX as k, CHART_SERIES_MIN_DIFFERENCE as l, CHART_SERIES_MIN_LIGHTNESS_STEP as m, normalizeLanguageFamily as n, CITATION_MARKER_RAISE as o, CITATION_MARKER_SCALE as p, CODE_HIGHLIGHT_LANGUAGES as q, CODE_HIGHLIGHT_MAX_LENGTH as r, CODE_PANEL_BACKGROUND as s, CODE_PANEL_FOREGROUND as t, CODE_SYNTAX_MIN_CONTRAST as u, type Caption as v, type CaptionAlignment as w, type CaptionObject as x, type CaptionPosition as y, type CaptionSettings as z };