@openpresentation/opf 0.14.0 → 0.16.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 (360) hide show
  1. package/README.md +28 -38
  2. package/dist/catalog-refs-_anZs-Qz.d.ts +128 -0
  3. package/dist/catalog-schemas-BZCjgAxu.d.ts +12 -0
  4. package/dist/catalog.d.ts +91 -0
  5. package/dist/{chunk-XOZ4KMSR.js → catalog.js} +17018 -8816
  6. package/dist/{chart-data-B_3z9VTb.d.ts → chart-data-BnNqgnC-.d.ts} +1 -1
  7. package/dist/{chunk-BFLVSVA7.js → chunk-3XDRQYWZ.js} +1 -1
  8. package/dist/{chunk-6OXY2CP3.js → chunk-5PDN7BN6.js} +503 -239
  9. package/dist/{chunk-CSQHPVGL.js → chunk-5TO6I3GB.js} +1 -1
  10. package/dist/{chunk-4LDGKLUC.js → chunk-5UEUAW57.js} +4 -2
  11. package/dist/{chunk-5ZU6JAPP.js → chunk-6OR326EA.js} +1 -1
  12. package/dist/{chunk-XIZUK2XM.js → chunk-BSYQDWT4.js} +15 -3
  13. package/dist/{chunk-UPQQD7MA.js → chunk-FQSIIADJ.js} +15 -6
  14. package/dist/{chunk-D3TY4TT6.js → chunk-HXHOZ7AH.js} +1407 -154
  15. package/dist/chunk-K4DQQIT4.js +319 -0
  16. package/dist/chunk-KINQFU6X.js +51 -0
  17. package/dist/{chunk-4VJDTF55.js → chunk-NAWQR7MN.js} +1 -1
  18. package/dist/{chunk-JDJBDYSR.js → chunk-PX5AWL7Y.js} +333 -857
  19. package/dist/{chunk-Q2TCMN56.js → chunk-SMLMI6IZ.js} +5 -2
  20. package/dist/chunk-SPFV27O5.js +210 -0
  21. package/dist/chunk-TRDXRRQK.js +17 -0
  22. package/dist/{chunk-Z65B2B77.js → chunk-UM24JFUE.js} +2 -2
  23. package/dist/{chunk-LS2FMPI5.js → chunk-WEDGVC5W.js} +969 -886
  24. package/dist/{composition-_WEwBe2a.d.ts → composition-D4ADF5c-.d.ts} +319 -115
  25. package/dist/composition.d.ts +3 -2
  26. package/dist/composition.js +2 -2
  27. package/dist/convert.d.ts +14 -17
  28. package/dist/convert.js +36 -39
  29. package/dist/data.d.ts +28 -11
  30. package/dist/data.js +3 -3
  31. package/dist/deck.d.ts +77 -0
  32. package/dist/deck.js +12 -0
  33. package/dist/diff.d.ts +1 -1
  34. package/dist/diff.js +7 -7
  35. package/dist/docs.js +33 -33
  36. package/dist/examples.d.ts +1 -1
  37. package/dist/examples.js +51761 -4783
  38. package/dist/{finding-C_por275.d.ts → finding-CT_f_vbD.d.ts} +2 -2
  39. package/dist/format.js +2 -2
  40. package/dist/index.d.ts +227 -77
  41. package/dist/index.js +343 -258
  42. package/dist/json-BFSdESOE.d.ts +19 -0
  43. package/dist/markdown.d.ts +20 -9
  44. package/dist/markdown.js +9 -9
  45. package/dist/{pagination-BZpXLvFL.d.ts → pagination-DzZPFheM.d.ts} +31 -31
  46. package/dist/pagination.d.ts +4 -5
  47. package/dist/pagination.js +6 -6
  48. package/dist/patch.d.ts +1 -1
  49. package/dist/patch.js +6 -6
  50. package/dist/{presentation-C5eHkevA.d.ts → presentation-COrFuj2g.d.ts} +398 -558
  51. package/dist/repo-readme.js +1 -1
  52. package/dist/schemas.d.ts +298 -1
  53. package/dist/schemas.js +1 -1
  54. package/dist/spec/README.md +1 -1
  55. package/dist/spec/catalogs/font-schemes/angsana-new.json +1 -1
  56. package/dist/spec/catalogs/font-schemes/aparajita.json +2 -2
  57. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +1 -1
  58. package/dist/spec/catalogs/font-schemes/batang.json +1 -1
  59. package/dist/spec/catalogs/font-schemes/daunpenh.json +1 -1
  60. package/dist/spec/catalogs/font-schemes/david.json +1 -1
  61. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +1 -1
  62. package/dist/spec/catalogs/font-schemes/fangsong.json +1 -1
  63. package/dist/spec/catalogs/font-schemes/gautami.json +1 -1
  64. package/dist/spec/catalogs/font-schemes/gisha.json +2 -2
  65. package/dist/spec/catalogs/font-schemes/gungsuh.json +1 -1
  66. package/dist/spec/catalogs/font-schemes/index.json +1 -1
  67. package/dist/spec/catalogs/font-schemes/kalinga.json +1 -1
  68. package/dist/spec/catalogs/font-schemes/kartika.json +1 -1
  69. package/dist/spec/catalogs/font-schemes/khmer-ui.json +1 -1
  70. package/dist/spec/catalogs/font-schemes/latha.json +1 -1
  71. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +1 -1
  72. package/dist/spec/catalogs/font-schemes/mangal.json +3 -3
  73. package/dist/spec/catalogs/font-schemes/meiryo.json +1 -1
  74. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +1 -1
  75. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +4 -4
  76. package/dist/spec/catalogs/font-schemes/mingliu.json +1 -1
  77. package/dist/spec/catalogs/font-schemes/miriam.json +1 -1
  78. package/dist/spec/catalogs/font-schemes/ms-mincho.json +1 -1
  79. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +1 -1
  80. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +1 -1
  81. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +2 -2
  82. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +3 -3
  83. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +1 -1
  84. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +2 -2
  85. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +2 -2
  86. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +1 -1
  87. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +1 -1
  88. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +1 -1
  89. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +1 -1
  90. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +1 -1
  91. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +1 -1
  92. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +1 -1
  93. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +1 -1
  94. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +1 -1
  95. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +1 -1
  96. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +1 -1
  97. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +1 -1
  98. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +4 -4
  99. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +1 -1
  100. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +1 -1
  101. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +1 -1
  102. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +1 -1
  103. package/dist/spec/catalogs/font-schemes/noto-sans.json +4 -4
  104. package/dist/spec/catalogs/font-schemes/nyala.json +1 -1
  105. package/dist/spec/catalogs/font-schemes/pmingliu.json +1 -1
  106. package/dist/spec/catalogs/font-schemes/raavi.json +1 -1
  107. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +3 -3
  108. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +2 -2
  109. package/dist/spec/catalogs/font-schemes/shruti.json +1 -1
  110. package/dist/spec/catalogs/font-schemes/simsun.json +1 -1
  111. package/dist/spec/catalogs/font-schemes/sylfaen.json +2 -2
  112. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +3 -3
  113. package/dist/spec/catalogs/font-schemes/tunga.json +1 -1
  114. package/dist/spec/catalogs/font-schemes/vrinda.json +1 -1
  115. package/dist/spec/catalogs/font-schemes/yu-gothic.json +1 -1
  116. package/dist/spec/catalogs/layouts/business-model-canvas.json +66 -1
  117. package/dist/spec/catalogs/layouts/capability-map.json +53 -6
  118. package/dist/spec/catalogs/layouts/chart-1x-title-center.json +30 -0
  119. package/dist/spec/catalogs/layouts/chart-2x-title-center.json +36 -0
  120. package/dist/spec/catalogs/layouts/chart-2x-vertical-title-left.json +37 -0
  121. package/dist/spec/catalogs/layouts/chart-2x.json +32 -8
  122. package/dist/spec/catalogs/layouts/chart-3x-bottom-vertical-title-left.json +52 -0
  123. package/dist/spec/catalogs/layouts/chart-3x-left-title-center.json +51 -0
  124. package/dist/spec/catalogs/layouts/chart-3x-left.json +46 -0
  125. package/dist/spec/catalogs/layouts/chart-3x-right-title-center.json +51 -0
  126. package/dist/spec/catalogs/layouts/chart-3x-right.json +46 -0
  127. package/dist/spec/catalogs/layouts/chart-3x-title-center.json +39 -0
  128. package/dist/spec/catalogs/layouts/chart-3x-top-vertical-title-left.json +52 -0
  129. package/dist/spec/catalogs/layouts/chart-3x.json +48 -12
  130. package/dist/spec/catalogs/layouts/competitive-landscape.json +1 -4
  131. package/dist/spec/catalogs/layouts/customer-journey.json +1 -4
  132. package/dist/spec/catalogs/layouts/dashboard.json +37 -5
  133. package/dist/spec/catalogs/layouts/decision-tree.json +1 -4
  134. package/dist/spec/catalogs/layouts/ecosystem-map.json +1 -4
  135. package/dist/spec/catalogs/layouts/extract/canonical.json +0 -9
  136. package/dist/spec/catalogs/layouts/geographic-map.json +1 -4
  137. package/dist/spec/catalogs/layouts/icon-grid.json +1 -4
  138. package/dist/spec/catalogs/layouts/image-1x-crop-title-center.json +32 -0
  139. package/dist/spec/catalogs/layouts/image-1x-crop-title-left.json +32 -0
  140. package/dist/spec/catalogs/layouts/image-1x-crop.json +27 -0
  141. package/dist/spec/catalogs/layouts/image-1x-fit-title-center.json +32 -0
  142. package/dist/spec/catalogs/layouts/image-1x.json +3 -0
  143. package/dist/spec/catalogs/layouts/image-2x-crop-title-center.json +38 -0
  144. package/dist/spec/catalogs/layouts/image-2x-crop-vertical-title-left.json +39 -0
  145. package/dist/spec/catalogs/layouts/image-2x-crop-vertical.json +34 -0
  146. package/dist/spec/catalogs/layouts/image-2x-crop.json +33 -0
  147. package/dist/spec/catalogs/layouts/image-2x-fit-title-center.json +38 -0
  148. package/dist/spec/catalogs/layouts/image-2x-fit-vertical-title-left.json +39 -0
  149. package/dist/spec/catalogs/layouts/image-2x-fit-vertical.json +34 -0
  150. package/dist/spec/catalogs/layouts/image-2x.json +35 -8
  151. package/dist/spec/catalogs/layouts/image-3x-crop-title-center.json +41 -0
  152. package/dist/spec/catalogs/layouts/image-3x-crop-vertical-title-left.json +42 -0
  153. package/dist/spec/catalogs/layouts/image-3x-crop-vertical.json +37 -0
  154. package/dist/spec/catalogs/layouts/image-3x-crop.json +36 -0
  155. package/dist/spec/catalogs/layouts/image-3x-fit-title-center.json +41 -0
  156. package/dist/spec/catalogs/layouts/image-3x-fit-vertical-title-left.json +42 -0
  157. package/dist/spec/catalogs/layouts/image-3x-fit-vertical.json +37 -0
  158. package/dist/spec/catalogs/layouts/image-3x-fit.json +36 -0
  159. package/dist/spec/catalogs/layouts/image-3x.json +51 -12
  160. package/dist/spec/catalogs/layouts/image-focus.json +3 -6
  161. package/dist/spec/catalogs/layouts/image-only-1x-crop-title-center.json +31 -0
  162. package/dist/spec/catalogs/layouts/image-only-1x-fit-title-center.json +31 -0
  163. package/dist/spec/catalogs/layouts/image-only-2x-crop-title-center.json +37 -0
  164. package/dist/spec/catalogs/layouts/image-only-2x-crop-vertical-title-left.json +38 -0
  165. package/dist/spec/catalogs/layouts/image-only-2x-crop-vertical.json +33 -0
  166. package/dist/spec/catalogs/layouts/image-only-2x-fit-title-center.json +37 -0
  167. package/dist/spec/catalogs/layouts/image-only-2x-fit-vertical-title-left.json +38 -0
  168. package/dist/spec/catalogs/layouts/image-only-2x-fit-vertical.json +33 -0
  169. package/dist/spec/catalogs/layouts/image-only-3x-crop-title-center.json +40 -0
  170. package/dist/spec/catalogs/layouts/image-only-3x-crop-vertical-title-left.json +41 -0
  171. package/dist/spec/catalogs/layouts/image-only-3x-crop-vertical.json +36 -0
  172. package/dist/spec/catalogs/layouts/image-only-3x-crop.json +35 -0
  173. package/dist/spec/catalogs/layouts/image-only-3x-fit-title-center.json +40 -0
  174. package/dist/spec/catalogs/layouts/image-only-3x-fit-vertical-title-left.json +41 -0
  175. package/dist/spec/catalogs/layouts/image-only-3x-fit-vertical.json +36 -0
  176. package/dist/spec/catalogs/layouts/image-only-3x-fit.json +35 -0
  177. package/dist/spec/catalogs/layouts/index.json +1041 -151
  178. package/dist/spec/catalogs/layouts/kpi-scorecard.json +48 -3
  179. package/dist/spec/catalogs/layouts/list-1x-box-title-center.json +32 -0
  180. package/dist/spec/catalogs/layouts/list-1x-box-vertical-title-center.json +33 -0
  181. package/dist/spec/catalogs/layouts/list-1x-box-vertical-title-left.json +33 -0
  182. package/dist/spec/catalogs/layouts/list-1x-box-vertical.json +28 -0
  183. package/dist/spec/catalogs/layouts/list-1x-box.json +27 -0
  184. package/dist/spec/catalogs/layouts/list-1x-itemimage-title-center.json +32 -0
  185. package/dist/spec/catalogs/layouts/list-1x-itemimage-vertical-title-center.json +33 -0
  186. package/dist/spec/catalogs/layouts/list-1x-title-center.json +31 -0
  187. package/dist/spec/catalogs/layouts/list-1x-vertical-title-center.json +32 -0
  188. package/dist/spec/catalogs/layouts/list-2x-box-title-center.json +38 -0
  189. package/dist/spec/catalogs/layouts/list-2x-box-vertical-title-center.json +39 -0
  190. package/dist/spec/catalogs/layouts/list-2x-box-vertical-title-left.json +39 -0
  191. package/dist/spec/catalogs/layouts/list-2x-box-vertical.json +34 -0
  192. package/dist/spec/catalogs/layouts/list-2x-box.json +33 -0
  193. package/dist/spec/catalogs/layouts/list-2x-itemimage-title-center.json +38 -0
  194. package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical-title-center.json +39 -0
  195. package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical-title-left.json +39 -0
  196. package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical.json +34 -0
  197. package/dist/spec/catalogs/layouts/list-2x-title-center.json +37 -0
  198. package/dist/spec/catalogs/layouts/list-2x-vertical-title-center.json +38 -0
  199. package/dist/spec/catalogs/layouts/list-2x-vertical-title-left.json +38 -0
  200. package/dist/spec/catalogs/layouts/list-2x-vertical.json +33 -0
  201. package/dist/spec/catalogs/layouts/list-3x-box-title-center.json +41 -0
  202. package/dist/spec/catalogs/layouts/list-3x-box-vertical-title-center.json +42 -0
  203. package/dist/spec/catalogs/layouts/list-3x-box-vertical-title-left.json +42 -0
  204. package/dist/spec/catalogs/layouts/list-3x-box-vertical.json +37 -0
  205. package/dist/spec/catalogs/layouts/list-3x-box.json +36 -0
  206. package/dist/spec/catalogs/layouts/list-3x-itemimage-title-center.json +41 -0
  207. package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical-title-center.json +42 -0
  208. package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical-title-left.json +42 -0
  209. package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical.json +37 -0
  210. package/dist/spec/catalogs/layouts/list-3x-itemimage.json +36 -0
  211. package/dist/spec/catalogs/layouts/list-3x-title-center.json +40 -0
  212. package/dist/spec/catalogs/layouts/list-3x-vertical-title-center.json +41 -0
  213. package/dist/spec/catalogs/layouts/list-3x-vertical-title-left.json +41 -0
  214. package/dist/spec/catalogs/layouts/list-3x-vertical.json +36 -0
  215. package/dist/spec/catalogs/layouts/list-4x-box-title-center.json +45 -0
  216. package/dist/spec/catalogs/layouts/list-4x-box-vertical-title-center.json +45 -0
  217. package/dist/spec/catalogs/layouts/list-4x-box-vertical-title-left.json +45 -0
  218. package/dist/spec/catalogs/layouts/list-4x-box-vertical.json +40 -0
  219. package/dist/spec/catalogs/layouts/list-4x-box.json +40 -0
  220. package/dist/spec/catalogs/layouts/list-4x-itemimage-title-center.json +45 -0
  221. package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical-title-center.json +45 -0
  222. package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical-title-left.json +45 -0
  223. package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical.json +40 -0
  224. package/dist/spec/catalogs/layouts/list-4x-title-center.json +44 -0
  225. package/dist/spec/catalogs/layouts/list-4x-vertical-title-center.json +44 -0
  226. package/dist/spec/catalogs/layouts/list-4x-vertical-title-left.json +44 -0
  227. package/dist/spec/catalogs/layouts/list-4x-vertical.json +39 -0
  228. package/dist/spec/catalogs/layouts/list-5x-box-title-center.json +48 -0
  229. package/dist/spec/catalogs/layouts/list-5x-box-vertical-title-center.json +50 -0
  230. package/dist/spec/catalogs/layouts/list-5x-box-vertical-title-left.json +50 -0
  231. package/dist/spec/catalogs/layouts/list-5x-box-vertical.json +45 -0
  232. package/dist/spec/catalogs/layouts/list-5x-box.json +43 -0
  233. package/dist/spec/catalogs/layouts/list-5x-itemimage-title-center.json +48 -0
  234. package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical-title-center.json +48 -0
  235. package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical-title-left.json +48 -0
  236. package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical.json +43 -0
  237. package/dist/spec/catalogs/layouts/list-5x-title-center.json +47 -0
  238. package/dist/spec/catalogs/layouts/list-5x-vertical-title-center.json +47 -0
  239. package/dist/spec/catalogs/layouts/list-5x-vertical-title-left.json +47 -0
  240. package/dist/spec/catalogs/layouts/list-5x-vertical.json +42 -0
  241. package/dist/spec/catalogs/layouts/list-6x-box-title-center.json +51 -0
  242. package/dist/spec/catalogs/layouts/list-6x-box-vertical-title-center.json +53 -0
  243. package/dist/spec/catalogs/layouts/list-6x-box-vertical-title-left.json +53 -0
  244. package/dist/spec/catalogs/layouts/list-6x-box-vertical.json +48 -0
  245. package/dist/spec/catalogs/layouts/list-6x-box.json +46 -0
  246. package/dist/spec/catalogs/layouts/list-6x-itemimage-title-center.json +51 -0
  247. package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical-title-center.json +51 -0
  248. package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical-title-left.json +51 -0
  249. package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical.json +46 -0
  250. package/dist/spec/catalogs/layouts/list-6x-title-center.json +50 -0
  251. package/dist/spec/catalogs/layouts/list-6x-vertical-title-center.json +50 -0
  252. package/dist/spec/catalogs/layouts/list-6x-vertical-title-left.json +50 -0
  253. package/dist/spec/catalogs/layouts/list-6x-vertical.json +45 -0
  254. package/dist/spec/catalogs/layouts/logic-tree.json +69 -0
  255. package/dist/spec/catalogs/layouts/market-size.json +26 -2
  256. package/dist/spec/catalogs/layouts/network-dependency-map.json +1 -4
  257. package/dist/spec/catalogs/layouts/number-1x-box-title-center.json +30 -0
  258. package/dist/spec/catalogs/layouts/number-1x-box.json +25 -0
  259. package/dist/spec/catalogs/layouts/number-1x-title-center.json +29 -0
  260. package/dist/spec/catalogs/layouts/number-2x-box-title-center.json +36 -0
  261. package/dist/spec/catalogs/layouts/number-2x-box.json +31 -0
  262. package/dist/spec/catalogs/layouts/number-2x-title-center.json +35 -0
  263. package/dist/spec/catalogs/layouts/number-3x-box-title-center.json +39 -0
  264. package/dist/spec/catalogs/layouts/number-3x-box.json +34 -0
  265. package/dist/spec/catalogs/layouts/number-3x-title-center.json +38 -0
  266. package/dist/spec/catalogs/layouts/number-4x-box-title-center.json +43 -0
  267. package/dist/spec/catalogs/layouts/number-4x-box.json +38 -0
  268. package/dist/spec/catalogs/layouts/number-4x-title-center.json +42 -0
  269. package/dist/spec/catalogs/layouts/number-5x-box-title-center.json +46 -0
  270. package/dist/spec/catalogs/layouts/number-5x-box.json +41 -0
  271. package/dist/spec/catalogs/layouts/number-5x-title-center.json +45 -0
  272. package/dist/spec/catalogs/layouts/number-6x-box-title-center.json +49 -0
  273. package/dist/spec/catalogs/layouts/number-6x-box.json +44 -0
  274. package/dist/spec/catalogs/layouts/number-6x-title-center.json +48 -0
  275. package/dist/spec/catalogs/layouts/org-chart.json +53 -6
  276. package/dist/spec/catalogs/layouts/persona-grid.json +1 -4
  277. package/dist/spec/catalogs/layouts/photo-grid.json +1 -4
  278. package/dist/spec/catalogs/layouts/product-feature.json +1 -4
  279. package/dist/spec/catalogs/layouts/screenshot-walkthrough.json +1 -4
  280. package/dist/spec/catalogs/layouts/swimlane-process.json +1 -4
  281. package/dist/spec/catalogs/layouts/team-bio.json +1 -4
  282. package/dist/spec/catalogs/layouts/text-1x-box-title-center.json +31 -0
  283. package/dist/spec/catalogs/layouts/text-1x-box-title-left.json +31 -0
  284. package/dist/spec/catalogs/layouts/text-1x-center-box-title-center.json +31 -0
  285. package/dist/spec/catalogs/layouts/text-1x-center-box-title-left.json +31 -0
  286. package/dist/spec/catalogs/layouts/text-1x-center-box.json +26 -0
  287. package/dist/spec/catalogs/layouts/text-1x-center-title-center.json +30 -0
  288. package/dist/spec/catalogs/layouts/text-1x-center-title-left.json +30 -0
  289. package/dist/spec/catalogs/layouts/text-1x-center.json +25 -0
  290. package/dist/spec/catalogs/layouts/text-1x-left-box.json +26 -0
  291. package/dist/spec/catalogs/layouts/text-1x-title-center.json +30 -0
  292. package/dist/spec/catalogs/layouts/text-2x-box-title-center.json +37 -0
  293. package/dist/spec/catalogs/layouts/text-2x-box-vertical-title-left.json +37 -0
  294. package/dist/spec/catalogs/layouts/text-2x-center-box-title-center.json +37 -0
  295. package/dist/spec/catalogs/layouts/text-2x-center-box-vertical-title-left.json +37 -0
  296. package/dist/spec/catalogs/layouts/text-2x-center-box.json +32 -0
  297. package/dist/spec/catalogs/layouts/text-2x-center-title-center.json +36 -0
  298. package/dist/spec/catalogs/layouts/text-2x-center-vertical-title-left.json +36 -0
  299. package/dist/spec/catalogs/layouts/text-2x-center.json +31 -0
  300. package/dist/spec/catalogs/layouts/text-2x-left-box.json +32 -0
  301. package/dist/spec/catalogs/layouts/text-2x-title-center.json +36 -0
  302. package/dist/spec/catalogs/layouts/text-2x-vertical-title-left.json +36 -0
  303. package/dist/spec/catalogs/layouts/text-3x-box-title-center.json +40 -0
  304. package/dist/spec/catalogs/layouts/text-3x-box-vertical-title-left.json +41 -0
  305. package/dist/spec/catalogs/layouts/text-3x-center-box-title-center.json +40 -0
  306. package/dist/spec/catalogs/layouts/text-3x-center-box-vertical-title-left.json +41 -0
  307. package/dist/spec/catalogs/layouts/text-3x-center-box.json +35 -0
  308. package/dist/spec/catalogs/layouts/text-3x-center-title-center.json +39 -0
  309. package/dist/spec/catalogs/layouts/text-3x-center-vertical-title-left.json +40 -0
  310. package/dist/spec/catalogs/layouts/text-3x-center.json +34 -0
  311. package/dist/spec/catalogs/layouts/text-3x-left-box.json +35 -0
  312. package/dist/spec/catalogs/layouts/text-3x-left.json +34 -0
  313. package/dist/spec/catalogs/layouts/text-3x-title-center.json +39 -0
  314. package/dist/spec/catalogs/layouts/text-3x-vertical-title-left.json +40 -0
  315. package/dist/spec/catalogs/layouts/title-center-box.json +27 -0
  316. package/dist/spec/catalogs/layouts/title-center-image-bottom.json +34 -0
  317. package/dist/spec/catalogs/layouts/title-center-image-top.json +34 -0
  318. package/dist/spec/catalogs/layouts/title-center.json +26 -0
  319. package/dist/spec/catalogs/layouts/title-left-image-bottom.json +34 -0
  320. package/dist/spec/catalogs/layouts/title-left-image-left.json +34 -0
  321. package/dist/spec/catalogs/layouts/title-left-image-right.json +34 -0
  322. package/dist/spec/catalogs/layouts/title-left-image-top.json +34 -0
  323. package/dist/spec/catalogs/manifest.json +18 -18
  324. package/dist/spec/catalogs/narratives/heros-journey.json +1 -1
  325. package/dist/spec/catalogs/narratives/index.json +1 -1
  326. package/dist/spec/openapi.yaml +3 -3
  327. package/dist/spec/reference/engine-defaults.json +22 -30
  328. package/dist/spec/reference/engine-vocabularies.json +1577 -0
  329. package/dist/spec/schemas/audience.schema.json +5 -26
  330. package/dist/spec/schemas/catalog-manifest.schema.json +3 -3
  331. package/dist/spec/schemas/chart-type.schema.json +2 -35
  332. package/dist/spec/schemas/color-scheme.schema.json +3 -24
  333. package/dist/spec/schemas/finding.schema.json +1 -1
  334. package/dist/spec/schemas/font-scheme.schema.json +6 -37
  335. package/dist/spec/schemas/language.schema.json +7 -28
  336. package/dist/spec/schemas/layout.schema.json +227 -55
  337. package/dist/spec/schemas/narrative.schema.json +4 -24
  338. package/dist/spec/schemas/opf.schema.json +410 -374
  339. package/dist/spec/schemas/purpose.schema.json +5 -26
  340. package/dist/spec/schemas/social-platform.schema.json +2 -23
  341. package/dist/spec/schemas/theme.schema.json +9 -37
  342. package/dist/spec/schemas/tone.schema.json +4 -25
  343. package/dist/spec-files.d.ts +1 -1
  344. package/dist/spec-files.js +1 -1
  345. package/dist/types.d.ts +1103 -4
  346. package/dist/{validation-types-zh03LeZy.d.ts → validation-types-HxIgJfKx.d.ts} +7 -7
  347. package/dist/validator.d.ts +15 -12
  348. package/dist/validator.js +5 -5
  349. package/dist/yaml.d.ts +22 -7
  350. package/dist/yaml.js +9 -321
  351. package/package.json +9 -9
  352. package/dist/catalogs-D-yyQWCQ.d.ts +0 -1343
  353. package/dist/catalogs.d.ts +0 -2
  354. package/dist/catalogs.js +0 -2
  355. package/dist/chunk-PIQXLBBJ.js +0 -445
  356. package/dist/chunk-S5W34SIJ.js +0 -1
  357. package/dist/previews.d.ts +0 -40
  358. package/dist/previews.js +0 -1
  359. package/dist/schemas-DDpqAgyS.d.ts +0 -284
  360. package/dist/spec/catalogs/layouts/image-bleed.json +0 -20
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Inline audience metadata for the presentation. Use 'id' to reference an audiences catalog record and override selected fields, or use 'name' for a custom inline audience.
2
+ * Inline audience metadata for the presentation. Use 'id' to reference an audiences record (a bare id or 'name:id') and override selected fields, or use 'name' for a custom inline audience.
3
3
  *
4
4
  * This interface was referenced by `Presentation`'s JSON-Schema
5
5
  * via the `definition` "Audience".
6
6
  */
7
7
  type Audience = (Audience1 & {
8
8
  /**
9
- * Optional audiences catalog id to resolve before applying inline overrides.
9
+ * Optional audiences reference (a bare id or 'name:id') resolved before applying the inline overrides.
10
10
  */
11
11
  id?: string;
12
12
  /**
@@ -38,11 +38,11 @@ type Audience = (Audience1 & {
38
38
  */
39
39
  attentionBudgetMinutes?: number;
40
40
  /**
41
- * Soft cross-link: narrative-catalog ids that work well for this audience.
41
+ * Soft cross-link: narrative ids that work well for this audience, for picker UIs. Never resolved, embedded or validated as references.
42
42
  */
43
43
  recommendedNarratives?: string[];
44
44
  /**
45
- * Soft cross-link: tone-catalog ids that work well for this audience.
45
+ * Soft cross-link: tone ids that work well for this audience, for picker UIs. Never resolved, embedded or validated as references.
46
46
  */
47
47
  recommendedTones?: string[];
48
48
  /**
@@ -55,14 +55,14 @@ type Audience1 = {
55
55
  [k: string]: unknown;
56
56
  };
57
57
  /**
58
- * Inline purpose metadata for the presentation. Use 'id' to reference a purposes catalog record and override selected fields, or use 'name' for a custom inline purpose.
58
+ * Inline purpose metadata for the presentation. Use 'id' to reference a purposes record (a bare id or 'name:id') and override selected fields, or use 'name' for a custom inline purpose.
59
59
  *
60
60
  * This interface was referenced by `Presentation`'s JSON-Schema
61
61
  * via the `definition` "Purpose".
62
62
  */
63
63
  type Purpose = (Purpose1 & {
64
64
  /**
65
- * Optional purposes catalog id to resolve before applying inline overrides.
65
+ * Optional purposes reference (a bare id or 'name:id') resolved before applying the inline overrides.
66
66
  */
67
67
  id?: string;
68
68
  /**
@@ -86,11 +86,11 @@ type Purpose = (Purpose1 & {
86
86
  */
87
87
  successCriteria?: string[];
88
88
  /**
89
- * Soft cross-link: narrative-catalog ids that work well for this purpose.
89
+ * Soft cross-link: narrative ids that work well for this purpose, for picker UIs. Never resolved, embedded or validated as references.
90
90
  */
91
91
  recommendedNarratives?: string[];
92
92
  /**
93
- * Soft cross-link: tone-catalog ids that work well for this purpose.
93
+ * Soft cross-link: tone ids that work well for this purpose, for picker UIs. Never resolved, embedded or validated as references.
94
94
  */
95
95
  recommendedTones?: string[];
96
96
  /**
@@ -103,74 +103,28 @@ type Purpose1 = {
103
103
  [k: string]: unknown;
104
104
  };
105
105
  /**
106
- * Inline language metadata for the presentation. Use 'id' to reference a languages catalog record and override selected fields, or use 'bcp47' for a custom language tag without a catalog record.
106
+ * A BCP-47 language tag ('en-US', 'ja', 'zh-Hans', 'sr-Latn-ME'), an engine vocabulary. Use 'en-GB' for UK English; 'en-UK' is not a valid region.
107
107
  *
108
108
  * This interface was referenced by `Presentation`'s JSON-Schema
109
- * via the `definition` "Language".
109
+ * via the `definition` "LanguageTag".
110
110
  */
111
- type Language = (Language1 & {
112
- /**
113
- * Optional languages catalog id to resolve before applying inline overrides.
114
- */
115
- id?: string;
116
- /**
117
- * Human-readable language name.
118
- */
119
- name?: string;
120
- /**
121
- * BCP-47 language tag used for locale-aware rendering, proofing, and accessibility metadata. Use 'en-GB' for UK English; 'en-UK' is not a valid BCP-47 region form.
122
- */
123
- bcp47?: string;
124
- /**
125
- * Curated culture tag for OOXML text-run language attributes (a:rPr/@lang, a:endParaRPr/@lang), in the language-[Script-]REGION form Office recognizes (e.g. 'ja-JP', 'ar-SA', 'ms-MY', 'nb-NO', 'fil-PH', 'zh-CN'). Engines emit it instead of 'bcp47' when the document names the language by catalog id or by a tag without a region; a region-bearing tag written by the author is emitted as written. Curated rather than inferred so output does not depend on the runtime's locale data.
126
- */
127
- ooxmlLang?: string;
128
- /**
129
- * ISO 639-3 or 639-2 language code carried for engines that prefer ISO codes.
130
- */
131
- code?: string;
132
- /**
133
- * Base text direction for the language. When omitted, engines derive it from the script: Arabic (Arab), Hebrew (Hebr), Syriac (Syrc), Thaana (Thaa), N'Ko (Nkoo), Adlam (Adlm), Samaritan (Samr), Mandaic (Mand) and Hanifi Rohingya (Rohg) are right-to-left; every other script is left-to-right. Bundled language records state it explicitly.
134
- */
135
- direction?: ("ltr" | "rtl");
136
- /**
137
- * ISO 15924 script code of the language's writing system. The script selects the OOXML font slot the language's text uses: East Asian scripts (Hans, Hant, Hani, Jpan, Kore, Hang, Hira, Kana, Bopo, Yiii) use the eastAsian slot; complex scripts (for example Arab, Hebr, Syrc, Thaa, Deva, Beng, Guru, Gujr, Orya, Taml, Telu, Knda, Mlym, Sinh, Thai, Laoo, Tibt, Mymr, Khmr, Mong) use the complexScript slot; every other script (Latn, Cyrl, Grek, Armn, Geor, Ethi, ...) uses the latin slot. When omitted, engines infer it from the BCP-47 tag. Bundled language records state it explicitly. See docs/programs/font-fidelity-everywhere/script-font-model.md.
138
- */
139
- script?: string;
140
- /**
141
- * Default font-scheme id for this language when targeting PowerPoint output. Resolves against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id does. Its major/minor families fill the language's script slot (eastAsian or complexScript, chosen by 'script') unless the effective design font scheme sets that slot itself; the latin slot always follows the design font scheme.
142
- */
143
- fontScheme?: string;
144
- /**
145
- * Default font-scheme id for this language when targeting Google Slides output. Resolves against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id does. Used in place of 'fontScheme' when resolving script fonts for Google Slides output.
146
- */
147
- googleFontScheme?: string;
148
- /**
149
- * One-sentence note about coverage or font defaults.
150
- */
151
- summary?: string;
152
- /**
153
- * Longer prose describing the language record and any font-pairing rationale.
154
- */
155
- description?: string;
156
- /**
157
- * Free-form labels for filtering and search.
158
- */
159
- tags?: string[];
160
- [k: string]: unknown;
161
- });
162
- type Language1 = {
163
- [k: string]: unknown;
164
- };
111
+ type LanguageTag = string;
165
112
  /**
166
- * Inline tone metadata for the presentation. Use 'id' to reference a tones catalog record and override selected fields, or use 'name' for a custom inline tone.
113
+ * A content reference: a bare id ('two-column') or 'name:id' ('acme:hero'), where the prefix names a group of 'catalogs'. URLs and 'pkg:' strings are not references; a named catalog group replaces them. See Catalogs for the resolution order.
114
+ *
115
+ * This interface was referenced by `Presentation`'s JSON-Schema
116
+ * via the `definition` "CatalogReference".
117
+ */
118
+ type CatalogReference = string;
119
+ /**
120
+ * Inline tone metadata for the presentation. Use 'id' to reference a tones record (a bare id or 'name:id') and override selected fields, or use 'name' for a custom inline tone.
167
121
  *
168
122
  * This interface was referenced by `Presentation`'s JSON-Schema
169
123
  * via the `definition` "Tone".
170
124
  */
171
125
  type Tone = (Tone1 & {
172
126
  /**
173
- * Optional tones catalog id to resolve before applying inline overrides.
127
+ * A content reference: a bare id ('two-column') or 'name:id' ('acme:hero'), where the prefix names a group of 'catalogs'. URLs and 'pkg:' strings are not references; a named catalog group replaces them. See Catalogs for the resolution order.
174
128
  */
175
129
  id?: string;
176
130
  /**
@@ -198,7 +152,7 @@ type Tone = (Tone1 & {
198
152
  */
199
153
  samplePhrases?: string[];
200
154
  /**
201
- * Soft cross-link: narrative-catalog ids this tone pairs well with.
155
+ * Soft cross-link: narrative ids this tone pairs well with, for picker UIs. Never resolved, embedded or validated as references.
202
156
  */
203
157
  recommendedNarratives?: string[];
204
158
  /**
@@ -211,12 +165,19 @@ type Tone1 = {
211
165
  [k: string]: unknown;
212
166
  };
213
167
  /**
214
- * String shorthand for a background. Theme slots ('light1', 'light2', 'dark1', 'dark2') are equivalent to { type: 'theme', slot: value }; hex colors are equivalent to { type: 'solid', color: value }.
168
+ * Named dimension preset; chooses both aspect ratio and physical size. 'widescreen' is an alias for 16:9 in PowerPoint widescreen size; 'standard' is an alias for 4:3 in PowerPoint standard size. The social-feed ratios keep the widescreen short edge of 7.5 in: 1:1 is 7.5 x 7.5 in, 4:5 is 7.5 x 9.375 in and 9:16 is 7.5 x 13.333 in (portrait).
169
+ *
170
+ * This interface was referenced by `Presentation`'s JSON-Schema
171
+ * via the `definition` "DimensionPreset".
172
+ */
173
+ type DimensionPreset = ("16:9" | "4:3" | "16:10" | "1:1" | "4:5" | "9:16" | "letter" | "a4" | "widescreen" | "standard");
174
+ /**
175
+ * String shorthand for a background. Theme slots ('light1', 'light2', 'dark1', 'dark2') are equivalent to { type: 'theme', slot: value }; hex colors are equivalent to { type: 'solid', color: value }; an image source (starting with 'asset:', 'https://', 'data:', './' or '../') is equivalent to { type: 'image', src: value }, a cover image. Any other string is invalid.
215
176
  *
216
177
  * This interface was referenced by `Presentation`'s JSON-Schema
217
178
  * via the `definition` "BackgroundShortcut".
218
179
  */
219
- type BackgroundShortcut = (ThemeBackgroundSlot | HexColor);
180
+ type BackgroundShortcut = (ThemeBackgroundSlot | HexColor | ImageSource);
220
181
  /**
221
182
  * PowerPoint theme-controlled slide background slot from the active color scheme. These are slots, not assumptions about actual colors: light1 is usually white and dark1 is usually black by convention, but the color scheme controls the real values.
222
183
  *
@@ -232,19 +193,19 @@ type ThemeBackgroundSlot = ("light1" | "light2" | "dark1" | "dark2");
232
193
  */
233
194
  type HexColor = string;
234
195
  /**
235
- * Background fill applied to slides. Theme backgrounds preserve PowerPoint's color-scheme background choice; other variants represent fixed background fills.
196
+ * An image source in a string shorthand: an 'asset:<id>' reference, an HTTPS URL, a data URI, or a relative path starting with './' or '../' (resolved against the OPF file location).
236
197
  *
237
198
  * This interface was referenced by `Presentation`'s JSON-Schema
238
- * via the `definition` "Background".
199
+ * via the `definition` "ImageSource".
239
200
  */
240
- type Background = (ThemeBackground | SolidBackground | GradientBackground | ImageBackground | PatternBackground);
201
+ type ImageSource = string;
241
202
  /**
242
- * Named dimension preset; chooses both aspect ratio and physical size. 'widescreen' is an alias for 16:9 in PowerPoint widescreen size; 'standard' is an alias for 4:3 in PowerPoint standard size. The social-feed ratios keep the widescreen short edge of 7.5 in: 1:1 is 7.5 x 7.5 in, 4:5 is 7.5 x 9.375 in and 9:16 is 7.5 x 13.333 in (portrait).
203
+ * Background fill applied to slides. Theme backgrounds preserve PowerPoint's color-scheme background choice; other variants represent fixed background fills.
243
204
  *
244
205
  * This interface was referenced by `Presentation`'s JSON-Schema
245
- * via the `definition` "DimensionPreset".
206
+ * via the `definition` "Background".
246
207
  */
247
- type DimensionPreset = ("16:9" | "4:3" | "16:10" | "1:1" | "4:5" | "9:16" | "letter" | "a4" | "widescreen" | "standard");
208
+ type Background = (ThemeBackground | SolidBackground | GradientBackground | ImageBackground | PatternBackground);
248
209
  /**
249
210
  * Reusable or inline resource. A string is shorthand for { "src": value }. Source strings accept 'asset:<id>' references, HTTPS URLs, data URIs, relative paths resolved against the OPF file location, or local filesystem paths. Use object form when metadata such as alt text, title or mediaType matters.
250
211
  *
@@ -274,7 +235,7 @@ type Asset = (string | {
274
235
  mediaType?: string;
275
236
  });
276
237
  /**
277
- * Decorative watermark: an image ('src') or a text stamp ('text'), exactly one of the two, with its opacity. An image is drawn once per slide, contained and centered in a fixed frame (the middle 40% of the slide width and height, from 30% to 70% on each axis). A text watermark is one line of text in the heading font and the theme text color at the given opacity, centered on the slide and rotated 30 degrees counterclockwise (rising to the right), sized to span at most 70% of the slide width and at most 30% of the shorter slide edge in height; it is drawn behind the slide content and above the background and slide image. There is no option to move, scale, rotate or tile either form. PPTX export writes one native picture (image) or one native text box (text) per slide with the opacity as alpha, and import restores the watermark. A string or Asset (no opacity) is the image watermark at opacity 0.08. A watermark object needs opacity and exactly one of src and text; use a plain string or Asset for an image at the default opacity. Use design.watermark = false to disable an inherited watermark.
238
+ * Decorative watermark: an image ('src') or a text stamp ('text'), exactly one of the two, with its opacity. An image is drawn once per slide, contained and centered in a fixed frame (the middle 40% of the slide width and height, from 30% to 70% on each axis). A text watermark is one line of text in the heading font and the theme text color at the given opacity, centered on the slide and rotated 30 degrees counterclockwise (rising to the right), sized to span at most 70% of the slide width and at most 30% of the shorter slide edge in height; it is drawn behind the slide content and above the background. There is no option to move, scale, rotate or tile either form. PPTX export writes one native picture (image) or one native text box (text) per slide with the opacity as alpha, and import restores the watermark. A string or Asset (no opacity) is the image watermark at opacity 0.08. A watermark object needs opacity and exactly one of src and text; use a plain string or Asset for an image at the default opacity. Use design.watermark = false to disable an inherited watermark.
278
239
  *
279
240
  * This interface was referenced by `Presentation`'s JSON-Schema
280
241
  * via the `definition` "Watermark".
@@ -482,11 +443,11 @@ type ContentPayload = {
482
443
  */
483
444
  text?: (string | TextRun[]);
484
445
  /**
485
- * Generic list payload. Each item is either a plain string, a TextRun[] rich text sequence, or a ListItem object. List nesting uses item.level rather than nested content payloads.
446
+ * Structured list payload (type 'list'). Each item is either a plain string, a TextRun[] rich text sequence, or a ListItem object with optional `description`. List nesting uses item.level rather than nested content payloads. Use `items` when entries share a shape or any entry needs a `description`; use `bullets` for plain talking points. Both draw the same marker, nesting and numbering. A block or region holds `items` or `bullets`, never both, and `items` cannot sit beside `text`.
486
447
  */
487
448
  items?: ListItem[];
488
449
  /**
489
- * Text-style bullet payload. Presence of this field infers type 'text'.
450
+ * Prose bullet payload: short talking points, each standing alone. Presence of this field infers type 'text', so it may sit beside `text` in one payload. Entries have no `description`; use `items` for entries with supporting detail.
490
451
  */
491
452
  bullets?: BulletItem[];
492
453
  /**
@@ -518,6 +479,43 @@ type ContentPayload = {
518
479
  */
519
480
  mediaType?: string;
520
481
  });
482
+ /**
483
+ * Image payloads only. How the picture fills its frame: 'cover' fills it and crops what overflows around focus; 'contain' shows the whole picture centered; 'stretch' scales it to the frame exactly. Default: the effective design.imageFit, else 'cover'.
484
+ */
485
+ fit?: ("cover" | "contain" | "stretch");
486
+ focus?: ImageFocus1;
487
+ /**
488
+ * Image payloads only. Width-to-height ratio of the frame: the frame becomes the largest centered box with this ratio inside the block's region, for example 2.39 for a cinematic letterbox or 0.5 for a phone-shaped frame. shape 'circle' always uses 1.
489
+ */
490
+ aspectRatio?: number;
491
+ /**
492
+ * Image payloads only. Mask applied to the frame, exported as the picture's native preset geometry (rect, roundRect, ellipse, hexagon). 'circle' makes the frame square. Default 'rectangle'.
493
+ */
494
+ shape?: ("rectangle" | "rounded" | "circle" | "hexagon");
495
+ /**
496
+ * Image payloads only. Corner radius for shape 'rounded' as a fraction of the frame's shorter side. Default 0.16667, PowerPoint's roundRect default.
497
+ */
498
+ cornerRadius?: number;
499
+ border?: ImageBorder;
500
+ /**
501
+ * Image payloads only. Picture opacity from 0 to 1, exported as a native alphaModFix. The border and overlay keep their own opacity. Default 1.
502
+ */
503
+ opacity?: number;
504
+ /**
505
+ * Image payloads only. Grayscale or duotone treatment of the picture's pixels.
506
+ */
507
+ recolor?: ("grayscale" | {
508
+ /**
509
+ * Color at luminance 0.
510
+ */
511
+ dark: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
512
+ /**
513
+ * Color at luminance 1.
514
+ */
515
+ light: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
516
+ });
517
+ overlay?: Overlay1;
518
+ placement?: ImagePlacement;
521
519
  /**
522
520
  * Reusable or inline resource. A string is shorthand for { "src": value }. Source strings accept 'asset:<id>' references, HTTPS URLs, data URIs, relative paths resolved against the OPF file location, or local filesystem paths. Use object form when metadata such as alt text, title or mediaType matters.
523
521
  */
@@ -602,12 +600,7 @@ type ContentPayload = {
602
600
  composition?: Composition;
603
601
  };
604
602
  /**
605
- * Catalog source location. Accepts:
606
- * - A bare URL pointing at a catalog directory (e.g. 'https://acme.com/decks/narratives'); record ids resolve to '<base>/<id>.json'.
607
- * - A URL pointing at an index file (e.g. 'https://acme.com/decks/narratives/index.json'); records are resolved relative to the index file's directory and the index entries describe what's available. Index files follow https://openpresentation.org/schema/opf-catalog-index/v1; the default catalog's index is https://www.pptx.gallery/<kind>/index.json.
608
- * - A package reference of the form 'pkg:<package>[/<subpath>]'. 'pkg:@openpresentation/opf/...' resolves from the bundled snapshot; any other package reference needs the host to supply its records in 'catalogSources'.
609
- *
610
- * Engines never fetch or install anything for a source: the host supplies the records of every source other than the bundled default, as a 'catalogSources' map from the source string to its records.
603
+ * Identity of a catalog: an HTTPS URL ('https://www.pptx.gallery') or a package reference ('pkg:@acme/opf-catalog'). It names the catalog; engines never fetch or install it. A host registers the catalog's records under this exact string, and copying slides between documents matches groups by it.
611
604
  *
612
605
  * This interface was referenced by `Presentation`'s JSON-Schema
613
606
  * via the `definition` "CatalogSource".
@@ -616,9 +609,9 @@ type CatalogSource = string;
616
609
  /**
617
610
  * Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.
618
611
  *
619
- * Fields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. The default catalog is published by pptx.gallery: the index at https://www.pptx.gallery/<kind>/index.json (also GET https://www.pptx.gallery/<kind> with Accept: application/json) and each record at https://www.pptx.gallery/<kind>/<id>.json. Engines resolve it from the pinned snapshot bundled in @openpresentation/opf (spec/catalogs, pinned by spec/catalogs/manifest.json) and never fetch it at run time; fetching a document's catalogs.<kind>.source is an explicit opt-in by the caller. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.
612
+ * Content references (Slide.layout, design.theme, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, narrative, audience, purpose and tone, and the colorScheme / fontScheme a theme record names) point at catalog records. Each is a bare 'id' or a 'name:id' whose prefix names a group in 'catalogs'. A bare id resolves in catalogs.custom, then in the records embedded under catalogs.default, then in the catalog the host registered for catalogs.default.source (or the host's default catalog when 'default' is omitted); 'name:id' resolves in catalogs.<name>, then in the catalog the host registered for its source. A reference that resolves nowhere is the warning opf/unresolved-reference, and the slide uses automatic composition or the engine default. Engines never fetch a catalog: a saved document embeds every record it uses, and hosts register any other catalog by its source string. See docs/default-catalog.md.
620
613
  *
621
- * Most catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry, and content color fields (rich-text runs, styled table cells) accept hex values, color-scheme slot/role names, or 'var:<id>' references into the top-level variables map.
614
+ * chart.type, the language tag and the keys of Organization.socials / Speaker.socials are engine vocabularies, validated directly with no catalog lookup. When a document names no theme, colour scheme or font scheme, every engine uses the same small engine defaults (spec/reference/engine-defaults.json). Asset references use 'asset:<id>' strings that point into the top-level assets registry, and content color fields (rich-text runs, styled table cells) accept hex values, color-scheme slot/role names, or 'var:<id>' references into the top-level variables map.
622
615
  */
623
616
  interface Presentation {
624
617
  /**
@@ -651,37 +644,37 @@ interface Presentation {
651
644
  author?: (string | [string, ...(string)[]]);
652
645
  /**
653
646
  * Intended audiences for the presentation. Accepts any of:
654
- * - A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executive'), an HTTPS URL, or a 'pkg:' reference.
655
- * - A single inline Audience object, like purpose and tone, for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.
656
- * - An array of string shorthands and/or inline Audience objects, for more than one audience.
647
+ * - A single string: an audiences reference ('executive', or 'acme:board' for a record of the catalogs.acme group), or free-form text ('Series B investors'). A string that is a bare id or 'name:id' is a reference; any other string is free text and is never looked up.
648
+ * - A single inline Audience object, for custom audience metadata or overrides on a referenced record. Object form has the fields of https://openpresentation.org/schema/opf-audience/v1.
649
+ * - An array of strings and/or inline Audience objects, for more than one audience.
657
650
  *
658
- * Resolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.
651
+ * A reference resolves like every content reference (see catalogs); one that resolves nowhere is the warning opf/unresolved-reference. Nothing is drawn from the audience.
659
652
  */
660
653
  audience?: (string | Audience | [(string | Audience), ...((string | Audience))[]]);
661
654
  /**
662
655
  * Primary goal of the presentation. Accepts either:
663
- * - A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.
664
- * - An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.
656
+ * - A string: a purposes reference ('decide', or 'acme:fundraise' for a record of the catalogs.acme group), or a free-form goal ('Raise a Series B round of $30M'). A string that is a bare id or 'name:id' is a reference; any other string is free text and is never looked up.
657
+ * - An inline Purpose object for custom purpose metadata or overrides on a referenced record. Object form has the fields of https://openpresentation.org/schema/opf-purpose/v1.
665
658
  *
666
- * Resolution order for catalog ids and references: inline catalogs.purposes.records[] → catalogs.purposes.source → default catalog at https://www.pptx.gallery/purposes.
659
+ * A reference resolves like every content reference (see catalogs); one that resolves nowhere is the warning opf/unresolved-reference. Nothing is drawn from the purpose.
667
660
  */
668
661
  purpose?: (string | Purpose);
669
662
  /**
670
- * Language for the presentation content. Accepts either:
671
- * - A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.
672
- * - An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.
663
+ * Language of the presentation content, an engine vocabulary: a BCP-47 language tag, validated directly with no catalog lookup. Accepts either:
664
+ * - A BCP-47 tag ('en-US', 'en-GB', 'ja', 'zh-Hans', 'ar-SA').
665
+ * - An inline Language object: a 'bcp47' tag plus overrides of what engines know about it (name, ooxmlLang, script, direction, the script font schemes).
673
666
  *
674
- * Resolution order for catalog ids and references: inline catalogs.languages.records[] → catalogs.languages.source → default catalog at https://www.pptx.gallery/languages.
667
+ * Engines know the script, base direction, OOXML language tag and default script fonts of the tags in spec/reference/engine-vocabularies.json; any other well-formed tag is accepted and its script is inferred from the tag. Language names and descriptions are catalog display metadata, not part of the document.
675
668
  */
676
- language?: (string | Language);
669
+ language?: (LanguageTag | Language);
677
670
  /**
678
671
  * Desired tone for the presentation. Accepts either:
679
- * - A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.
680
- * - An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.
672
+ * - A tones reference: a bare id ('formal') or 'name:id' for a record of a named catalogs group.
673
+ * - An inline Tone object for custom tone metadata or overrides on a referenced record. Object form has the fields of https://openpresentation.org/schema/opf-tone/v1.
681
674
  *
682
- * Resolution order for catalog ids and references: inline catalogs.tones.records[] → catalogs.tones.source → default catalog at https://www.pptx.gallery/tones.
675
+ * A reference resolves like every content reference (see catalogs); one that resolves nowhere is the warning opf/unresolved-reference. Nothing is drawn from the tone.
683
676
  */
684
- tone?: (string | Tone);
677
+ tone?: (CatalogReference | Tone);
685
678
  /**
686
679
  * Audience-facing takeaway the presentation should leave behind. Array form supports multiple takeaways. Deck-level intent used by AI to seed and pressure-test slide content.
687
680
  */
@@ -701,13 +694,7 @@ interface Presentation {
701
694
  */
702
695
  template?: boolean;
703
696
  /**
704
- * The deck's narrative plan, by reference: the 'id' of a 'narratives' catalog record, an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package. The deck holds only this pointer; the plan (the arc, its beats and what each beat must do) lives in the catalog record, which validates against https://openpresentation.org/schema/opf-narrative/v1. A custom narrative is a record in catalogs.narratives.records, referenced here by its id.
705
- *
706
- * Slides link themselves to beats with slides[].beat. Core validate warns about a slides[].beat id the resolved narrative does not define and about a root 'duration' outside its 'duration' range, and reports a beat that no slide references. The preview and the PPTX export draw nothing from the narrative; opf-pptx stores the reference for round-trip.
707
- *
708
- * Resolution order: inline catalogs.narratives.records[] → catalogs.narratives.source → default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.
709
- *
710
- * Deck-level concerns that are not part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root.
697
+ * A content reference: a bare id ('two-column') or 'name:id' ('acme:hero'), where the prefix names a group of 'catalogs'. URLs and 'pkg:' strings are not references; a named catalog group replaces them. See Catalogs for the resolution order.
711
698
  */
712
699
  narrative?: string;
713
700
  /**
@@ -878,34 +865,81 @@ interface Socials1 {
878
865
  */
879
866
  [k: string]: string;
880
867
  }
868
+ /**
869
+ * Inline language metadata for the presentation: a BCP-47 'bcp47' tag plus overrides of what engines know about it. Languages are an engine vocabulary, not catalog records, so there is no 'id'.
870
+ *
871
+ * This interface was referenced by `Presentation`'s JSON-Schema
872
+ * via the `definition` "Language".
873
+ */
874
+ interface Language {
875
+ /**
876
+ * Human-readable language name.
877
+ */
878
+ name?: string;
879
+ /**
880
+ * A BCP-47 language tag ('en-US', 'ja', 'zh-Hans', 'sr-Latn-ME'), an engine vocabulary. Use 'en-GB' for UK English; 'en-UK' is not a valid region.
881
+ */
882
+ bcp47: string;
883
+ /**
884
+ * Culture tag for OOXML text-run language attributes (a:rPr/@lang, a:endParaRPr/@lang), in the language-[Script-]REGION form Office recognizes (e.g. 'ja-JP', 'ar-SA', 'ms-MY', 'nb-NO', 'fil-PH', 'zh-CN'). Without it, engines emit the curated tag of their language vocabulary (spec/reference/engine-vocabularies.json) for a tag without a region, and a region-bearing tag as written. Curated rather than inferred so output does not depend on the runtime's locale data.
885
+ */
886
+ ooxmlLang?: string;
887
+ /**
888
+ * ISO 639-3 or 639-2 language code carried for engines that prefer ISO codes.
889
+ */
890
+ code?: string;
891
+ /**
892
+ * Base text direction for the language. When omitted, engines derive it from the script: Arabic (Arab), Hebrew (Hebr), Syriac (Syrc), Thaana (Thaa), N'Ko (Nkoo), Adlam (Adlm), Samaritan (Samr), Mandaic (Mand) and Hanifi Rohingya (Rohg) are right-to-left; every other script is left-to-right. The engine language vocabulary (spec/reference/engine-vocabularies.json) states it for the tags it knows.
893
+ */
894
+ direction?: ("ltr" | "rtl");
895
+ /**
896
+ * ISO 15924 script code of the language's writing system. The script selects the OOXML font slot the language's text uses: East Asian scripts (Hans, Hant, Hani, Jpan, Kore, Hang, Hira, Kana, Bopo, Yiii) use the eastAsian slot; complex scripts (for example Arab, Hebr, Syrc, Thaa, Deva, Beng, Guru, Gujr, Orya, Taml, Telu, Knda, Mlym, Sinh, Thai, Laoo, Tibt, Mymr, Khmr, Mong) use the complexScript slot; every other script (Latn, Cyrl, Grek, Armn, Geor, Ethi, ...) uses the latin slot. When omitted, engines infer it from the BCP-47 tag. The engine language vocabulary (spec/reference/engine-vocabularies.json) states it for the tags it knows. See docs/programs/font-fidelity-everywhere/script-font-model.md.
897
+ */
898
+ script?: string;
899
+ /**
900
+ * Font-scheme reference (a bare id or 'name:id') for this language's script slot when targeting PowerPoint output. Its major/minor families fill the language's script slot (eastAsian or complexScript, chosen by 'script') unless the effective design font scheme sets that slot itself; the latin slot always follows the design font scheme. Without it, engines use the default script fonts of their language vocabulary.
901
+ */
902
+ fontScheme?: string;
903
+ /**
904
+ * Font-scheme reference (a bare id or 'name:id') used in place of 'fontScheme' when resolving script fonts for Google Slides output.
905
+ */
906
+ googleFontScheme?: string;
907
+ /**
908
+ * One-sentence note about coverage or font defaults.
909
+ */
910
+ summary?: string;
911
+ /**
912
+ * Longer prose describing the language record and any font-pairing rationale.
913
+ */
914
+ description?: string;
915
+ /**
916
+ * Free-form labels for filtering and search.
917
+ */
918
+ tags?: string[];
919
+ [k: string]: unknown;
920
+ }
881
921
  /**
882
922
  * Optional design system covering theme, color scheme, font scheme, dimensions, background, logo, watermark, header, and footer applied to the deck. When omitted, engines use their default design configuration.
883
923
  */
884
924
  interface Design {
885
925
  /**
886
- * Theme for the deck. Accepts two forms:
887
- * - String shorthand: 'design.theme = "minimal"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'themes' catalog record.
888
- * - Object form: a Theme with an optional 'id' base reference plus theme-level overrides.
889
- *
890
- * Inline overrides on design.colorScheme / design.fontScheme / design.background / design.dimensions take precedence over the resolved theme.
891
- *
892
- * Resolution order: inline catalogs.themes.records[] -> catalogs.themes.source -> default catalog at https://www.pptx.gallery/themes.
926
+ * A content reference: a bare id ('two-column') or 'name:id' ('acme:hero'), where the prefix names a group of 'catalogs'. URLs and 'pkg:' strings are not references; a named catalog group replaces them. See Catalogs for the resolution order.
893
927
  */
894
- theme?: (string | Theme);
928
+ theme?: string;
895
929
  /**
896
930
  * Color scheme for the presentation. Accepts two forms:
897
- * - String shorthand: 'design.colorScheme = "cool-horizon"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'colorSchemes' catalog record.
898
- * - Object form: a ColorScheme with an optional 'id' base reference plus slot/role overrides.
931
+ * - A colorSchemes reference: a bare id ('cool-horizon') or 'name:id' ('acme:ocean').
932
+ * - Object form: a ColorScheme with an optional 'id' reference as the base plus slot/role overrides. Without 'id', the overrides apply on top of the engine default colour scheme.
899
933
  *
900
- * Resolution order: inline catalogs.colorSchemes.records[] -> catalogs.colorSchemes.source -> default catalog at https://www.pptx.gallery/color-schemes.
934
+ * Without either, the theme's colorScheme applies, then the engine default colour scheme.
901
935
  */
902
936
  colorScheme?: (string | ColorScheme);
903
937
  /**
904
938
  * Font scheme for heading, body, accent, and code text. Accepts two forms:
905
- * - String shorthand: 'design.fontScheme = "aptos"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'fontSchemes' catalog record.
906
- * - Object form: a FontScheme with an optional 'id' base reference plus pair/role overrides.
939
+ * - A fontSchemes reference: a bare id ('aptos') or 'name:id' ('acme:inter').
940
+ * - Object form: a FontScheme with an optional 'id' reference as the base plus pair/role overrides.
907
941
  *
908
- * Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.source -> default catalog at https://www.pptx.gallery/font-schemes.
942
+ * Without either, the theme's fontScheme applies, then the engine default font scheme.
909
943
  */
910
944
  fontScheme?: (string | FontScheme);
911
945
  /**
@@ -913,7 +947,7 @@ interface Design {
913
947
  */
914
948
  dimensions?: (DimensionPreset | Dimensions);
915
949
  /**
916
- * Default slide background applied across the deck unless overridden on a slide. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2') or hex colors; object forms support theme, solid, gradient, image, or pattern fills.
950
+ * Default slide background applied across the deck unless overridden on a slide (slides.N.design.background); the resolved theme's background is the fallback. A background is the only canvas fill and never moves content. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2'), hex colors, or an image source starting with 'asset:', 'https://', 'data:', './' or '../' (a cover image); object forms support theme, solid, gradient, image, or pattern fills.
917
951
  */
918
952
  background?: (BackgroundShortcut | Background);
919
953
  /**
@@ -944,163 +978,24 @@ interface Design {
944
978
  * Whether body/content regions are rendered inside a visible card or surface. Effective value: the slide's design, then the deck's design, then the layout record's design.contentBox, then the engine default.
945
979
  */
946
980
  contentBox?: boolean;
947
- /**
948
- * Optional slide-level image, separate from content images. It applies to a slide that sets its own design.slideImage, and to slides whose layout record sets design.slideImage or whose root image is the same source as a deck-level value. A root image with the same source becomes the slide image instead of a content item. Blur, shadows, soft edges, background removal and device artwork are not part of the treatment vocabulary; see docs/image-treatments.md.
949
- */
950
- slideImage?: (Asset | {
951
- /**
952
- * Source for the slide-level image. When omitted in a design override, the object only configures how a slide-level image should be placed when one is supplied by a content payload, asset, or renderer convention.
953
- */
954
- src?: string;
955
- /**
956
- * Where the slide-level image sits relative to the content. 'background' is a full-bleed image behind the content. The other positions give the image a band along that edge (see size) and compose headings and content in the rest of the slide.
957
- */
958
- position: ("background" | "top" | "bottom" | "left" | "right");
959
- /**
960
- * Alternative text for the slide-level image. Overrides the alt text of a referenced asset.
961
- */
962
- alt?: string;
963
- /**
964
- * How the image fills its frame: 'crop' covers the frame from the center; 'fit' shows the whole image centered inside it. Overrides design.imageFill for this image. Default: design.imageFill, else 'crop'.
965
- */
966
- fill?: ("crop" | "fit");
967
- /**
968
- * Share of the slide width (left/right) or height (top/bottom) given to the image band. Ignored for 'background'. Default 0.5.
969
- */
970
- size?: number;
971
- /**
972
- * Place the frame inside the slide padding instead of edge to edge, like a card. Default false.
973
- */
974
- inset?: boolean;
975
- /**
976
- * Width-to-height ratio of the frame. The frame becomes the largest centered box with this ratio inside the band or slide, for example 2.39 for a cinematic letterbox or 0.5 for a phone-shaped frame. 'circle' always uses 1.
977
- */
978
- aspectRatio?: number;
979
- /**
980
- * Mask applied to the frame, exported as the picture's native preset geometry (rect, roundRect, ellipse, hexagon). 'circle' makes the frame square. Default 'rectangle'.
981
- */
982
- shape?: ("rectangle" | "rounded" | "circle" | "hexagon");
983
- /**
984
- * Corner radius for shape 'rounded' as a fraction of the frame's shorter side. Default 0.16667, PowerPoint's roundRect default.
985
- */
986
- cornerRadius?: number;
987
- /**
988
- * Solid line along the frame's shape. A thick dark border on a rounded portrait frame gives a device bezel.
989
- */
990
- border?: {
991
- /**
992
- * Line color: a hex color, a color-scheme slot or role name, or a 'var:<id>' variable reference.
993
- */
994
- color: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
995
- /**
996
- * Line width in reference pixels at a 720-pixel short edge, centered on the frame outline like a native picture line. 0 removes the line.
997
- */
998
- width: number;
999
- };
1000
- /**
1001
- * Image opacity from 0 to 1, exported as a native alphaModFix. The border and overlay keep their own opacity. Default 1.
1002
- */
1003
- opacity?: number;
1004
- /**
1005
- * Color treatment for the image pixels. Luminance uses Rec. 601 weights (0.299, 0.587, 0.114) on sRGB values.
1006
- */
1007
- recolor?: ("grayscale" | {
1008
- /**
1009
- * Color at luminance 0.
1010
- */
1011
- dark: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
1012
- /**
1013
- * Color at luminance 1.
1014
- */
1015
- light: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
1016
- });
1017
- /**
1018
- * Solid scrim drawn over the image in the frame's shape, beneath headings and content, for example to keep overlaid text readable. Exported as a native shape above the picture.
1019
- */
1020
- overlay?: {
1021
- /**
1022
- * Overlay fill color.
1023
- */
1024
- color: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
1025
- /**
1026
- * Overlay fill opacity.
1027
- */
1028
- opacity: number;
1029
- /**
1030
- * Cover only a band along this edge of the frame, for example a caption strip. Rectangle frames only; other shapes report unsupported-image-treatment and draw no overlay. Omit to cover the whole frame.
1031
- */
1032
- edge?: ("top" | "bottom" | "left" | "right");
1033
- /**
1034
- * Band share of the frame for an edge overlay. Default 0.3.
1035
- */
1036
- size?: number;
1037
- };
1038
- });
1039
981
  /**
1040
982
  * Axis along which parallel body content is arranged. Sets the root arrangement mode of blocks and root payloads when no composition.mode is set on the slide or on its layout record: 'vertical' is column, 'horizontal' is row. Precedence: composition.mode (the slide's own, else the layout record's geometry contract), then the effective value (slide design, then deck design, then the layout record's design.contentDirection), then automatic selection. A layout that carries a composition.mode keeps its grid or direction whatever this value says. Promoted regions (left, top:left, ...) keep their explicit geometry and nested groups keep their own composition.
1041
983
  */
1042
984
  contentDirection?: ("horizontal" | "vertical");
1043
985
  /**
1044
- * Where the primary chart sits relative to supporting content. Effective value: slide design, then deck design, then the layout record's design.chartPrimary. When the slide has no promoted regions and no composition.mode of its own, and its root nodes mix at least one chart with other content, the first chart becomes a primary track and the other nodes form one synthetic sub-grid: 'left'/'right' is a two-track row and 'top'/'bottom' a two-track column, weighted 3:2 in favor of the chart; explicit root columns and weights are ignored while it applies. 'none' (the default) keeps the ordinary automatic grid with equal weight.
986
+ * Where the primary chart sits relative to supporting content. Effective value: slide design, then deck design, then the layout record's design.chartPrimary. When the slide has no promoted regions and no composition.mode of its own, and its root nodes mix at least one chart with other content, the first chart becomes a primary track and the other nodes form one synthetic sub-grid: 'left'/'right' is a two-track row and 'top'/'bottom' a two-track column, weighted 3:2 in favor of the chart; explicit root columns and weights are ignored while it applies. 'none' (the default) keeps the ordinary automatic grid with equal weight. It is shorthand for a placeholder group (layout.schema.json PlaceholderGroup): the slide composes exactly as on a layout record whose root composition is that weighted row or column and whose placeholders are the chart and one automatic group of the other content, and while it applies it replaces the layout record's own placeholder groups as well.
1045
987
  */
1046
988
  chartPrimary?: ("none" | "top" | "bottom" | "left" | "right");
1047
989
  /**
1048
- * How images fill their allocated region: crop covers the region, fit shows the whole image. Effective value: the slide's design, then the deck's design, then the layout record's design.imageFill, then the engine default.
990
+ * Default fit of image blocks (and Slide.image) that set no fit of their own: 'cover' fills the frame and crops what overflows around the block's focus, 'contain' shows the whole picture centered in the frame, 'stretch' scales it to the frame exactly. Effective value: the slide's design, then the deck's design, then the layout record's design.imageFit, then 'cover'. Backgrounds set their own fit.
1049
991
  */
1050
- imageFill?: ("crop" | "fit");
992
+ imageFit?: ("cover" | "contain" | "stretch");
1051
993
  /**
1052
994
  * Marker style for items and bullets lists. Effective value: the slide's design, then the deck's design, then the layout record's design.listBullet, then 'character'. 'character' (the default) draws the glyph marker. 'image' draws the deck's icon logo (a slide's design.logo, then design.logo, then the primary organization's logo; light variants on dark backgrounds) as a picture bullet: a square of the marker's font size whose bottom sits on the marker baseline, so list geometry does not change. Without a logo the glyph is drawn and the engine reports unresolved-content at this field.
1053
995
  */
1054
996
  listBullet?: ("character" | "image");
1055
997
  [k: string]: unknown;
1056
998
  }
1057
- /**
1058
- * Theme bundle used by the design system. In design.theme, 'id' resolves a themes catalog record as the base; any sibling fields override the resolved theme. The string shorthand on design.theme is equivalent to setting only 'id'.
1059
- *
1060
- * This interface was referenced by `Presentation`'s JSON-Schema
1061
- * via the `definition` "Theme".
1062
- */
1063
- interface Theme {
1064
- /**
1065
- * Theme reference. Resolves to the 'id' of a 'themes' catalog record. Accepts a bare id (lowercase kebab-case, e.g. 'minimal'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Field overrides on the surrounding Theme object take precedence over the resolved theme.
1066
- *
1067
- * Resolution order: inline catalogs.themes.records[] -> catalogs.themes.source -> default catalog at https://www.pptx.gallery/themes.
1068
- */
1069
- id?: string;
1070
- /**
1071
- * Human-readable theme name shown in pickers.
1072
- */
1073
- name?: string;
1074
- /**
1075
- * One-sentence positioning of the theme - when to reach for it.
1076
- */
1077
- summary?: string;
1078
- /**
1079
- * Longer prose describing what the theme looks and feels like and the kinds of decks it suits.
1080
- */
1081
- description?: string;
1082
- /**
1083
- * Default color scheme for this theme. A string resolves against catalogs.colorSchemes; an object may provide an 'id' base reference plus overrides.
1084
- */
1085
- colorScheme?: (string | ColorScheme);
1086
- /**
1087
- * Default font scheme for this theme. A string resolves against catalogs.fontSchemes; an object may provide an 'id' base reference plus overrides.
1088
- */
1089
- fontScheme?: (string | FontScheme);
1090
- /**
1091
- * Default background for this theme. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2') or hex colors.
1092
- */
1093
- background?: (BackgroundShortcut | Background);
1094
- /**
1095
- * Default slide size for this theme. A string preset is equivalent to { preset: value }.
1096
- */
1097
- dimensions?: (DimensionPreset | Dimensions);
1098
- /**
1099
- * Free-form labels for filtering and search.
1100
- */
1101
- tags?: string[];
1102
- [k: string]: unknown;
1103
- }
1104
999
  /**
1105
1000
  * Color palette used by the design system. Every slot and role is a hex color ('#RGB', '#RRGGBB' or '#RRGGBBAA'); a color-scheme name or a 'var:<id>' reference is not valid here, because those resolve through the scheme. The slot fields (accent1-accent6, dark1, dark2, light1, light2, hyperlink, followedHyperlink) mirror color-scheme.schema.json (https://openpresentation.org/schema/opf-color-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.
1106
1001
  *
@@ -1108,16 +1003,14 @@ interface Theme {
1108
1003
  * - OOXML slots - the 12-slot PowerPoint theme model that round-trips directly to OOXML. Use these for full control over the palette as PowerPoint sees it.
1109
1004
  * - Abstract roles (primary, secondary, accent, background, surface, text, textSecondary) - OPF-specific semantic aliases the engine maps onto the OOXML slots. Convenient for inline overrides without thinking in slot numbers; not part of the catalog record schema.
1110
1005
  *
1111
- * In design.colorScheme, 'id' resolves a colorSchemes catalog record as the base; slot and role overrides on the same object take precedence over the resolved scheme. The string shorthand on design.colorScheme is equivalent to setting only 'id'.
1006
+ * In design.colorScheme, 'id' resolves a colorSchemes record as the base; slot and role overrides on the same object take precedence over the resolved scheme. The string form of design.colorScheme is equivalent to setting only 'id'.
1112
1007
  *
1113
1008
  * This interface was referenced by `Presentation`'s JSON-Schema
1114
1009
  * via the `definition` "ColorScheme".
1115
1010
  */
1116
1011
  interface ColorScheme {
1117
1012
  /**
1118
- * Color scheme reference. Resolves to the 'id' of a 'colorSchemes' catalog record. Accepts a bare id (lowercase kebab-case, e.g. 'cool-horizon'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Slot and role overrides on the surrounding ColorScheme object take precedence over the resolved scheme.
1119
- *
1120
- * Resolution order: inline catalogs.colorSchemes.records[] -> catalogs.colorSchemes.source -> default catalog at https://www.pptx.gallery/color-schemes.
1013
+ * A content reference: a bare id ('two-column') or 'name:id' ('acme:hero'), where the prefix names a group of 'catalogs'. URLs and 'pkg:' strings are not references; a named catalog group replaces them. See Catalogs for the resolution order.
1121
1014
  */
1122
1015
  id?: string;
1123
1016
  /**
@@ -1205,16 +1098,14 @@ interface ColorScheme {
1205
1098
  * - OOXML pairs (major, minor) - heading and body family names that round-trip directly to PowerPoint majorFont/minorFont entries.
1206
1099
  * - Abstract roles (heading, body, accent, code) - OPF-specific font family names the engine maps onto the OOXML pair when serializing. Convenient for inline overrides and for adding accent/code roles that don't have a direct OOXML slot. Catalog records may also carry 'code' (for example the consolas and courier-new records); heading, body and accent are not part of the catalog record schema. A role is a family name only: weight, style and tracking come from the text styles, and PowerPoint has no numeric weight.
1207
1100
  *
1208
- * In design.fontScheme, 'id' resolves a fontSchemes catalog record as the base; pair and role overrides on the same object take precedence over the resolved scheme. The string shorthand on design.fontScheme is equivalent to setting only 'id'.
1101
+ * In design.fontScheme, 'id' resolves a fontSchemes record as the base; pair and role overrides on the same object take precedence over the resolved scheme. The string form of design.fontScheme is equivalent to setting only 'id'.
1209
1102
  *
1210
1103
  * This interface was referenced by `Presentation`'s JSON-Schema
1211
1104
  * via the `definition` "FontScheme".
1212
1105
  */
1213
1106
  interface FontScheme {
1214
1107
  /**
1215
- * Font scheme reference. Resolves to the 'id' of a 'fontSchemes' catalog record. Accepts a bare id (lowercase kebab-case, e.g. 'aptos'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Field overrides on the surrounding FontScheme object take precedence over the resolved scheme.
1216
- *
1217
- * Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.source -> default catalog at https://www.pptx.gallery/font-schemes.
1108
+ * A content reference: a bare id ('two-column') or 'name:id' ('acme:hero'), where the prefix names a group of 'catalogs'. URLs and 'pkg:' strings are not references; a named catalog group replaces them. See Catalogs for the resolution order.
1218
1109
  */
1219
1110
  id?: string;
1220
1111
  /**
@@ -1276,11 +1167,29 @@ interface FontScheme {
1276
1167
  */
1277
1168
  accent?: string;
1278
1169
  /**
1279
- * Abstract role: monospaced font family name used for code blocks and for inline code runs (TextRun.code). No direct OOXML slot. Resolution: this override, then the resolved catalog record's 'code' (for example Consolas for the consolas scheme), then the engine fallback Roboto Mono. Heading and body families are never used as the code fallback.
1170
+ * Abstract role: monospaced font family name used for code blocks and for inline code runs (TextRun.code). No direct OOXML slot. Resolution: this override, then the resolved font-scheme record's 'code' (for example Consolas for the consolas scheme), then the engine fallback Roboto Mono. Heading and body families are never used as the code fallback.
1280
1171
  */
1281
1172
  code?: string;
1282
1173
  [k: string]: unknown;
1283
1174
  }
1175
+ /**
1176
+ * Slide dimensions; either pick a preset or specify custom inches.
1177
+ *
1178
+ * This interface was referenced by `Presentation`'s JSON-Schema
1179
+ * via the `definition` "Dimensions".
1180
+ */
1181
+ interface Dimensions {
1182
+ preset?: DimensionPreset;
1183
+ /**
1184
+ * Custom slide width in inches; overrides the preset width when provided.
1185
+ */
1186
+ widthInches?: number;
1187
+ /**
1188
+ * Custom slide height in inches; overrides the preset height when provided.
1189
+ */
1190
+ heightInches?: number;
1191
+ [k: string]: unknown;
1192
+ }
1284
1193
  /**
1285
1194
  * Theme-controlled PowerPoint slide background. The slot is resolved through the active color scheme and remains theme-aware.
1286
1195
  *
@@ -1386,35 +1295,81 @@ interface GradientBackground {
1386
1295
  [k: string]: unknown;
1387
1296
  }
1388
1297
  /**
1389
- * Fixed image slide background fill.
1298
+ * Picture background: the image fills the whole canvas behind everything and never moves content (to push content aside, use an image block with placement). The string shorthand 'asset:x' (or any image source) is { type: 'image', src: 'asset:x' }, a cover image. Paint order: the colour scheme's default slide background, the picture, then the overlay, then furniture and content.
1390
1299
  *
1391
1300
  * This interface was referenced by `Presentation`'s JSON-Schema
1392
1301
  * via the `definition` "ImageBackground".
1393
1302
  */
1394
1303
  interface ImageBackground {
1395
1304
  /**
1396
- * Fixed image background fill.
1305
+ * Picture background.
1397
1306
  */
1398
1307
  type: "image";
1399
1308
  /**
1400
- * Image fill definition.
1309
+ * Source for the background image: an 'asset:<id>' reference, HTTPS URL, data URI, or a relative path resolved against the OPF file location.
1310
+ */
1311
+ src: string;
1312
+ /**
1313
+ * Alternative text. A background with alt is meaningful: PowerPoint export draws it as a full-slide picture at the back that carries the text, so screen readers see it. Without alt it is decorative and exports as the native slide background; the alt text of a referenced asset does not count, so a background is decorative unless it says otherwise.
1314
+ */
1315
+ alt?: string;
1316
+ /**
1317
+ * How the picture fills the canvas: 'cover' fills it and crops what overflows around focus; 'contain' shows the whole picture centered over the colour scheme's default background; 'stretch' scales it to the canvas exactly; 'tile' repeats it at its own size from the top-left corner. Default 'cover'.
1318
+ */
1319
+ fit?: ("cover" | "contain" | "stretch" | "tile");
1320
+ focus?: ImageFocus;
1321
+ /**
1322
+ * Picture opacity from 0 (fully transparent) to 1 (fully opaque); the overlay keeps its own opacity. Default 1.
1401
1323
  */
1402
- image: {
1324
+ opacity?: number;
1325
+ /**
1326
+ * Grayscale or duotone treatment of the picture's pixels, as on an image block: recolor and opacity apply to the pixels, then the overlay is drawn above.
1327
+ */
1328
+ recolor?: ("grayscale" | {
1403
1329
  /**
1404
- * Source for the background image.
1330
+ * Color at luminance 0.
1405
1331
  */
1406
- src: string;
1332
+ dark: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
1407
1333
  /**
1408
- * How the image fills the slide background.
1334
+ * Color at luminance 1.
1409
1335
  */
1410
- fit?: ("cover" | "contain" | "tile");
1411
- [k: string]: unknown;
1412
- };
1336
+ light: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
1337
+ });
1338
+ overlay?: Overlay;
1339
+ }
1340
+ /**
1341
+ * Point of the picture to keep in view when 'cover' crops it. Ignored by the other fits.
1342
+ */
1343
+ interface ImageFocus {
1413
1344
  /**
1414
- * Background opacity from 0 (fully transparent) to 1 (fully opaque).
1345
+ * Horizontal position, 0 (left edge) to 1 (right edge).
1415
1346
  */
1416
- opacity?: number;
1417
- [k: string]: unknown;
1347
+ x: number;
1348
+ /**
1349
+ * Vertical position, 0 (top edge) to 1 (bottom edge).
1350
+ */
1351
+ y: number;
1352
+ }
1353
+ /**
1354
+ * Scrim over the whole picture or a band along one edge (edge, size), beneath furniture and content, for example to keep a title readable over a busy photo.
1355
+ */
1356
+ interface Overlay {
1357
+ /**
1358
+ * Overlay fill color: a hex color (eight-digit hex keeps its alpha), a color-scheme slot or role name, or a 'var:<id>' variable reference.
1359
+ */
1360
+ color: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
1361
+ /**
1362
+ * Overlay fill opacity.
1363
+ */
1364
+ opacity: number;
1365
+ /**
1366
+ * Cover only a band along this edge of the frame, for example a caption strip. Backgrounds and rectangle image frames only; on another shape the overlay is not drawn and composition reports unsupported-image-treatment. Omit to cover the whole frame. In a right-to-left deck 'left' and 'right' are the start and end sides.
1367
+ */
1368
+ edge?: ("top" | "bottom" | "left" | "right");
1369
+ /**
1370
+ * Band share of the frame for an edge overlay. Default 0.3. Ignored without edge.
1371
+ */
1372
+ size?: number;
1418
1373
  }
1419
1374
  /**
1420
1375
  * Fixed pattern slide background fill.
@@ -1451,24 +1406,6 @@ interface PatternBackground {
1451
1406
  opacity?: number;
1452
1407
  [k: string]: unknown;
1453
1408
  }
1454
- /**
1455
- * Slide dimensions; either pick a preset or specify custom inches.
1456
- *
1457
- * This interface was referenced by `Presentation`'s JSON-Schema
1458
- * via the `definition` "Dimensions".
1459
- */
1460
- interface Dimensions {
1461
- preset?: DimensionPreset;
1462
- /**
1463
- * Custom slide width in inches; overrides the preset width when provided.
1464
- */
1465
- widthInches?: number;
1466
- /**
1467
- * Custom slide height in inches; overrides the preset height when provided.
1468
- */
1469
- heightInches?: number;
1470
- [k: string]: unknown;
1471
- }
1472
1409
  /**
1473
1410
  * Deck logo variants surfaced by covers, section dividers, headers, footers and picture bullets. Organization identity lives in organization; this object only controls visual rendering assets. Engines select one variant per slot and background tone (resolveLogo in @openpresentation/opf): same-tone variants first, neutral ones next, the opposite tone last. Lockup on a dark background: light, default, stackedLight, stacked, wordmarkLight, wordmark, iconLight, icon, then dark, stackedDark, wordmarkDark, iconDark; on a light background: dark, default, stackedDark, stacked, wordmarkDark, wordmark, iconDark, icon, then light, stackedLight, wordmarkLight, iconLight. The icon slot (headers, footers, picture bullets) tries iconLight or iconDark for the tone, then icon, then the lockup chain; the stacked slot tries stackedLight or stackedDark, then stacked, then the lockup chain.
1474
1411
  *
@@ -2302,9 +2239,7 @@ interface Slide {
2302
2239
  */
2303
2240
  beat?: (string | string[]);
2304
2241
  /**
2305
- * Optional. Resolves to the 'id' of a 'layouts' catalog record. When omitted, or when it names an id that no inline record, host catalog or default catalog defines, the slide is composed with no layout record: engines arrange title, subtitle, tag and content automatically, a slide with no body payload is a cover (vertically centered), and design hints apply. A layout never changes what a slide contains. An unresolved id is an `unresolved-layout` diagnostic and a `catalog-reference` warning, never an error. Engines must not substitute a different layout for an omitted one. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference.
2306
- *
2307
- * Resolution order: inline catalogs.layouts.records[] → catalogs.layouts.source → default catalog at https://www.pptx.gallery/layouts.
2242
+ * A content reference: a bare id ('two-column') or 'name:id' ('acme:hero'), where the prefix names a group of 'catalogs'. URLs and 'pkg:' strings are not references; a named catalog group replaces them. See Catalogs for the resolution order.
2308
2243
  */
2309
2244
  layout?: string;
2310
2245
  /**
@@ -2324,11 +2259,11 @@ interface Slide {
2324
2259
  */
2325
2260
  text?: (string | TextRun[]);
2326
2261
  /**
2327
- * Full-slide generic list payload. Presence of this field infers type 'list'. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for layout-agnostic blocks.
2262
+ * Full-slide structured list payload. Presence of this field infers type 'list'. Entries are strings, TextRun[] or objects with `text`, optional `description` (supporting detail under the entry), `level` and `start`. Use `items` when entries share a shape (features, steps, options, risks) or any entry needs a `description`; use `bullets` for plain talking points. Both draw the same marker, nesting and numbering; they differ in the inferred kind and in `description`, which only `items` accepts. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for layout-agnostic blocks, so `items` next to `text` or `bullets` composes as separate blocks side by side.
2328
2263
  */
2329
2264
  items?: ListItem[];
2330
2265
  /**
2331
- * Full-slide text-style bullet payload. Presence of this field infers type 'text'.
2266
+ * Full-slide prose bullet payload: short talking points, each standing alone. Presence of this field infers type 'text', so it may sit beside `text` in one payload. Entries are strings, TextRun[] or objects with `text`, `level` and `start`; there is no `description` (use `items` for entries with supporting detail).
2332
2267
  */
2333
2268
  bullets?: BulletItem[];
2334
2269
  /**
@@ -2536,9 +2471,9 @@ interface Numbering {
2536
2471
  */
2537
2472
  interface Chart {
2538
2473
  /**
2539
- * Chart type id. Resolves to the id of a chartTypes catalog record; renderers map that record through mappings.openxml and any renderer-specific mapping they understand. The bundled catalog covers the chart types Aspose.Slides officially supports, plus 'combo' (clustered columns with line series, see 'line' and 'secondaryAxis').
2474
+ * Chart type, an engine vocabulary validated directly (no catalog lookup): the chart types Aspose.Slides officially supports, plus 'combo' (clustered columns with line series, see 'line' and 'secondaryAxis'). Each engine maps a type to its own chart model; labels and picker groups are catalog display metadata.
2540
2475
  */
2541
- type: string;
2476
+ type: ("100pct-stacked-area" | "100pct-stacked-bar" | "100pct-stacked-column" | "area" | "bar" | "box-and-whisker" | "column" | "combo" | "doughnut" | "filled-radar" | "funnel" | "histogram" | "line" | "line-with-markers" | "pareto" | "pie" | "radar" | "radar-with-markers" | "scatter" | "stacked-area" | "stacked-bar" | "stacked-column" | "stacked-line" | "stacked-line-with-markers" | "treemap" | "waterfall" | "world");
2542
2477
  /**
2543
2478
  * Chart data. Inline data uses a tabular columns/rows shape; renderers convert rows to chart series internally. A DatasetRef ({ "dataset": "<id>" }) plots a top-level dataset instead. Data from a spreadsheet or file is imported into inline columns and rows, and its origin is recorded in data.source.
2544
2479
  */
@@ -2744,6 +2679,10 @@ interface Table {
2744
2679
  */
2745
2680
  dataset?: string;
2746
2681
  fields?: DatasetFields1;
2682
+ /**
2683
+ * Text alternative for the table: what it shows (the point and the key numbers), not 'a table'. The preview exposes it as the table's accessible name (role group with aria-label; the cells stay readable) and the PowerPoint export writes it as the table frame's alternative text (descr); import reads it back. An empty string hides a purely decorative table, with the same meaning as an empty Asset alt. The alt is a summary read before the cells, which stay readable, so it is most useful for a large or dense table; validate does not require one and does not report a missing one.
2684
+ */
2685
+ alt?: string;
2747
2686
  }
2748
2687
  /**
2749
2688
  * A cell with explicit visual style or merged geometry. Its position remains its array column index; use null placeholders for every covered grid position.
@@ -2971,14 +2910,78 @@ interface TimelineEvent {
2971
2910
  */
2972
2911
  status?: ("done" | "current" | "planned");
2973
2912
  }
2913
+ /**
2914
+ * Image payloads only. Point of the picture to keep in view when 'cover' crops it. Ignored by the other fits.
2915
+ */
2916
+ interface ImageFocus1 {
2917
+ /**
2918
+ * Horizontal position, 0 (left edge) to 1 (right edge).
2919
+ */
2920
+ x: number;
2921
+ /**
2922
+ * Vertical position, 0 (top edge) to 1 (bottom edge).
2923
+ */
2924
+ y: number;
2925
+ }
2926
+ /**
2927
+ * Image payloads only. Line along the frame's shape.
2928
+ */
2929
+ interface ImageBorder {
2930
+ /**
2931
+ * Line color: a hex color, a color-scheme slot or role name, or a 'var:<id>' variable reference.
2932
+ */
2933
+ color: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
2934
+ /**
2935
+ * Line width in reference pixels at a 720-pixel short edge. 0 removes the line.
2936
+ */
2937
+ width: number;
2938
+ }
2939
+ /**
2940
+ * Image payloads only. Scrim over the picture in the frame's shape, or a band along one edge of a rectangle frame.
2941
+ */
2942
+ interface Overlay1 {
2943
+ /**
2944
+ * Overlay fill color: a hex color (eight-digit hex keeps its alpha), a color-scheme slot or role name, or a 'var:<id>' variable reference.
2945
+ */
2946
+ color: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
2947
+ /**
2948
+ * Overlay fill opacity.
2949
+ */
2950
+ opacity: number;
2951
+ /**
2952
+ * Cover only a band along this edge of the frame, for example a caption strip. Backgrounds and rectangle image frames only; on another shape the overlay is not drawn and composition reports unsupported-image-treatment. Omit to cover the whole frame. In a right-to-left deck 'left' and 'right' are the start and end sides.
2953
+ */
2954
+ edge?: ("top" | "bottom" | "left" | "right");
2955
+ /**
2956
+ * Band share of the frame for an edge overlay. Default 0.3. Ignored without edge.
2957
+ */
2958
+ size?: number;
2959
+ }
2960
+ /**
2961
+ * Image payloads only, and only on a top-level block (slides.N.blocks.I), at most one per edge. Bleeds the image to one slide edge; the headings and the other blocks compose in the rest of the slide.
2962
+ */
2963
+ interface ImagePlacement {
2964
+ /**
2965
+ * The slide edge the image bleeds to.
2966
+ */
2967
+ edge: ("left" | "right" | "top" | "bottom");
2968
+ /**
2969
+ * Share of the slide width (left, right) or height (top, bottom) given to the band. Default 0.5.
2970
+ */
2971
+ size?: number;
2972
+ /**
2973
+ * Draw the frame inside the slide padding on every side of the band, like a card, instead of edge to edge. Default false.
2974
+ */
2975
+ inset?: boolean;
2976
+ }
2974
2977
  /**
2975
2978
  * Chart payload. Presence of this field infers type 'chart'.
2976
2979
  */
2977
2980
  interface Chart1 {
2978
2981
  /**
2979
- * Chart type id. Resolves to the id of a chartTypes catalog record; renderers map that record through mappings.openxml and any renderer-specific mapping they understand. The bundled catalog covers the chart types Aspose.Slides officially supports, plus 'combo' (clustered columns with line series, see 'line' and 'secondaryAxis').
2982
+ * Chart type, an engine vocabulary validated directly (no catalog lookup): the chart types Aspose.Slides officially supports, plus 'combo' (clustered columns with line series, see 'line' and 'secondaryAxis'). Each engine maps a type to its own chart model; labels and picker groups are catalog display metadata.
2980
2983
  */
2981
- type: string;
2984
+ type: ("100pct-stacked-area" | "100pct-stacked-bar" | "100pct-stacked-column" | "area" | "bar" | "box-and-whisker" | "column" | "combo" | "doughnut" | "filled-radar" | "funnel" | "histogram" | "line" | "line-with-markers" | "pareto" | "pie" | "radar" | "radar-with-markers" | "scatter" | "stacked-area" | "stacked-bar" | "stacked-column" | "stacked-line" | "stacked-line-with-markers" | "treemap" | "waterfall" | "world");
2982
2985
  /**
2983
2986
  * Chart data. Inline data uses a tabular columns/rows shape; renderers convert rows to chart series internally. A DatasetRef ({ "dataset": "<id>" }) plots a top-level dataset instead. Data from a spreadsheet or file is imported into inline columns and rows, and its origin is recorded in data.source.
2984
2987
  */
@@ -3028,6 +3031,10 @@ interface Table1 {
3028
3031
  */
3029
3032
  dataset?: string;
3030
3033
  fields?: DatasetFields1;
3034
+ /**
3035
+ * Text alternative for the table: what it shows (the point and the key numbers), not 'a table'. The preview exposes it as the table's accessible name (role group with aria-label; the cells stay readable) and the PowerPoint export writes it as the table frame's alternative text (descr); import reads it back. An empty string hides a purely decorative table, with the same meaning as an empty Asset alt. The alt is a summary read before the cells, which stay readable, so it is most useful for a large or dense table; validate does not require one and does not report a missing one.
3036
+ */
3037
+ alt?: string;
3031
3038
  }
3032
3039
  /**
3033
3040
  * Arrangement within this group. Only minFontSize and overflow inherit from the parent; strict overflow cannot be weakened.
@@ -3073,29 +3080,23 @@ interface Composition {
3073
3080
  */
3074
3081
  interface Design1 {
3075
3082
  /**
3076
- * Theme for the deck. Accepts two forms:
3077
- * - String shorthand: 'design.theme = "minimal"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'themes' catalog record.
3078
- * - Object form: a Theme with an optional 'id' base reference plus theme-level overrides.
3079
- *
3080
- * Inline overrides on design.colorScheme / design.fontScheme / design.background / design.dimensions take precedence over the resolved theme.
3081
- *
3082
- * Resolution order: inline catalogs.themes.records[] -> catalogs.themes.source -> default catalog at https://www.pptx.gallery/themes.
3083
+ * A content reference: a bare id ('two-column') or 'name:id' ('acme:hero'), where the prefix names a group of 'catalogs'. URLs and 'pkg:' strings are not references; a named catalog group replaces them. See Catalogs for the resolution order.
3083
3084
  */
3084
- theme?: (string | Theme);
3085
+ theme?: string;
3085
3086
  /**
3086
3087
  * Color scheme for the presentation. Accepts two forms:
3087
- * - String shorthand: 'design.colorScheme = "cool-horizon"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'colorSchemes' catalog record.
3088
- * - Object form: a ColorScheme with an optional 'id' base reference plus slot/role overrides.
3088
+ * - A colorSchemes reference: a bare id ('cool-horizon') or 'name:id' ('acme:ocean').
3089
+ * - Object form: a ColorScheme with an optional 'id' reference as the base plus slot/role overrides. Without 'id', the overrides apply on top of the engine default colour scheme.
3089
3090
  *
3090
- * Resolution order: inline catalogs.colorSchemes.records[] -> catalogs.colorSchemes.source -> default catalog at https://www.pptx.gallery/color-schemes.
3091
+ * Without either, the theme's colorScheme applies, then the engine default colour scheme.
3091
3092
  */
3092
3093
  colorScheme?: (string | ColorScheme);
3093
3094
  /**
3094
3095
  * Font scheme for heading, body, accent, and code text. Accepts two forms:
3095
- * - String shorthand: 'design.fontScheme = "aptos"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'fontSchemes' catalog record.
3096
- * - Object form: a FontScheme with an optional 'id' base reference plus pair/role overrides.
3096
+ * - A fontSchemes reference: a bare id ('aptos') or 'name:id' ('acme:inter').
3097
+ * - Object form: a FontScheme with an optional 'id' reference as the base plus pair/role overrides.
3097
3098
  *
3098
- * Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.source -> default catalog at https://www.pptx.gallery/font-schemes.
3099
+ * Without either, the theme's fontScheme applies, then the engine default font scheme.
3099
3100
  */
3100
3101
  fontScheme?: (string | FontScheme);
3101
3102
  /**
@@ -3103,7 +3104,7 @@ interface Design1 {
3103
3104
  */
3104
3105
  dimensions?: (DimensionPreset | Dimensions);
3105
3106
  /**
3106
- * Default slide background applied across the deck unless overridden on a slide. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2') or hex colors; object forms support theme, solid, gradient, image, or pattern fills.
3107
+ * Default slide background applied across the deck unless overridden on a slide (slides.N.design.background); the resolved theme's background is the fallback. A background is the only canvas fill and never moves content. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2'), hex colors, or an image source starting with 'asset:', 'https://', 'data:', './' or '../' (a cover image); object forms support theme, solid, gradient, image, or pattern fills.
3107
3108
  */
3108
3109
  background?: (BackgroundShortcut | Background);
3109
3110
  /**
@@ -3134,110 +3135,18 @@ interface Design1 {
3134
3135
  * Whether body/content regions are rendered inside a visible card or surface. Effective value: the slide's design, then the deck's design, then the layout record's design.contentBox, then the engine default.
3135
3136
  */
3136
3137
  contentBox?: boolean;
3137
- /**
3138
- * Optional slide-level image, separate from content images. It applies to a slide that sets its own design.slideImage, and to slides whose layout record sets design.slideImage or whose root image is the same source as a deck-level value. A root image with the same source becomes the slide image instead of a content item. Blur, shadows, soft edges, background removal and device artwork are not part of the treatment vocabulary; see docs/image-treatments.md.
3139
- */
3140
- slideImage?: (Asset | {
3141
- /**
3142
- * Source for the slide-level image. When omitted in a design override, the object only configures how a slide-level image should be placed when one is supplied by a content payload, asset, or renderer convention.
3143
- */
3144
- src?: string;
3145
- /**
3146
- * Where the slide-level image sits relative to the content. 'background' is a full-bleed image behind the content. The other positions give the image a band along that edge (see size) and compose headings and content in the rest of the slide.
3147
- */
3148
- position: ("background" | "top" | "bottom" | "left" | "right");
3149
- /**
3150
- * Alternative text for the slide-level image. Overrides the alt text of a referenced asset.
3151
- */
3152
- alt?: string;
3153
- /**
3154
- * How the image fills its frame: 'crop' covers the frame from the center; 'fit' shows the whole image centered inside it. Overrides design.imageFill for this image. Default: design.imageFill, else 'crop'.
3155
- */
3156
- fill?: ("crop" | "fit");
3157
- /**
3158
- * Share of the slide width (left/right) or height (top/bottom) given to the image band. Ignored for 'background'. Default 0.5.
3159
- */
3160
- size?: number;
3161
- /**
3162
- * Place the frame inside the slide padding instead of edge to edge, like a card. Default false.
3163
- */
3164
- inset?: boolean;
3165
- /**
3166
- * Width-to-height ratio of the frame. The frame becomes the largest centered box with this ratio inside the band or slide, for example 2.39 for a cinematic letterbox or 0.5 for a phone-shaped frame. 'circle' always uses 1.
3167
- */
3168
- aspectRatio?: number;
3169
- /**
3170
- * Mask applied to the frame, exported as the picture's native preset geometry (rect, roundRect, ellipse, hexagon). 'circle' makes the frame square. Default 'rectangle'.
3171
- */
3172
- shape?: ("rectangle" | "rounded" | "circle" | "hexagon");
3173
- /**
3174
- * Corner radius for shape 'rounded' as a fraction of the frame's shorter side. Default 0.16667, PowerPoint's roundRect default.
3175
- */
3176
- cornerRadius?: number;
3177
- /**
3178
- * Solid line along the frame's shape. A thick dark border on a rounded portrait frame gives a device bezel.
3179
- */
3180
- border?: {
3181
- /**
3182
- * Line color: a hex color, a color-scheme slot or role name, or a 'var:<id>' variable reference.
3183
- */
3184
- color: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
3185
- /**
3186
- * Line width in reference pixels at a 720-pixel short edge, centered on the frame outline like a native picture line. 0 removes the line.
3187
- */
3188
- width: number;
3189
- };
3190
- /**
3191
- * Image opacity from 0 to 1, exported as a native alphaModFix. The border and overlay keep their own opacity. Default 1.
3192
- */
3193
- opacity?: number;
3194
- /**
3195
- * Color treatment for the image pixels. Luminance uses Rec. 601 weights (0.299, 0.587, 0.114) on sRGB values.
3196
- */
3197
- recolor?: ("grayscale" | {
3198
- /**
3199
- * Color at luminance 0.
3200
- */
3201
- dark: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
3202
- /**
3203
- * Color at luminance 1.
3204
- */
3205
- light: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
3206
- });
3207
- /**
3208
- * Solid scrim drawn over the image in the frame's shape, beneath headings and content, for example to keep overlaid text readable. Exported as a native shape above the picture.
3209
- */
3210
- overlay?: {
3211
- /**
3212
- * Overlay fill color.
3213
- */
3214
- color: (HexColor | ("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "dark1" | "dark2" | "light1" | "light2" | "hyperlink" | "followedHyperlink" | "primary" | "secondary" | "accent" | "background" | "surface" | "surfaceAlt" | "text" | "textSecondary") | string);
3215
- /**
3216
- * Overlay fill opacity.
3217
- */
3218
- opacity: number;
3219
- /**
3220
- * Cover only a band along this edge of the frame, for example a caption strip. Rectangle frames only; other shapes report unsupported-image-treatment and draw no overlay. Omit to cover the whole frame.
3221
- */
3222
- edge?: ("top" | "bottom" | "left" | "right");
3223
- /**
3224
- * Band share of the frame for an edge overlay. Default 0.3.
3225
- */
3226
- size?: number;
3227
- };
3228
- });
3229
3138
  /**
3230
3139
  * Axis along which parallel body content is arranged. Sets the root arrangement mode of blocks and root payloads when no composition.mode is set on the slide or on its layout record: 'vertical' is column, 'horizontal' is row. Precedence: composition.mode (the slide's own, else the layout record's geometry contract), then the effective value (slide design, then deck design, then the layout record's design.contentDirection), then automatic selection. A layout that carries a composition.mode keeps its grid or direction whatever this value says. Promoted regions (left, top:left, ...) keep their explicit geometry and nested groups keep their own composition.
3231
3140
  */
3232
3141
  contentDirection?: ("horizontal" | "vertical");
3233
3142
  /**
3234
- * Where the primary chart sits relative to supporting content. Effective value: slide design, then deck design, then the layout record's design.chartPrimary. When the slide has no promoted regions and no composition.mode of its own, and its root nodes mix at least one chart with other content, the first chart becomes a primary track and the other nodes form one synthetic sub-grid: 'left'/'right' is a two-track row and 'top'/'bottom' a two-track column, weighted 3:2 in favor of the chart; explicit root columns and weights are ignored while it applies. 'none' (the default) keeps the ordinary automatic grid with equal weight.
3143
+ * Where the primary chart sits relative to supporting content. Effective value: slide design, then deck design, then the layout record's design.chartPrimary. When the slide has no promoted regions and no composition.mode of its own, and its root nodes mix at least one chart with other content, the first chart becomes a primary track and the other nodes form one synthetic sub-grid: 'left'/'right' is a two-track row and 'top'/'bottom' a two-track column, weighted 3:2 in favor of the chart; explicit root columns and weights are ignored while it applies. 'none' (the default) keeps the ordinary automatic grid with equal weight. It is shorthand for a placeholder group (layout.schema.json PlaceholderGroup): the slide composes exactly as on a layout record whose root composition is that weighted row or column and whose placeholders are the chart and one automatic group of the other content, and while it applies it replaces the layout record's own placeholder groups as well.
3235
3144
  */
3236
3145
  chartPrimary?: ("none" | "top" | "bottom" | "left" | "right");
3237
3146
  /**
3238
- * How images fill their allocated region: crop covers the region, fit shows the whole image. Effective value: the slide's design, then the deck's design, then the layout record's design.imageFill, then the engine default.
3147
+ * Default fit of image blocks (and Slide.image) that set no fit of their own: 'cover' fills the frame and crops what overflows around the block's focus, 'contain' shows the whole picture centered in the frame, 'stretch' scales it to the frame exactly. Effective value: the slide's design, then the deck's design, then the layout record's design.imageFit, then 'cover'. Backgrounds set their own fit.
3239
3148
  */
3240
- imageFill?: ("crop" | "fit");
3149
+ imageFit?: ("cover" | "contain" | "stretch");
3241
3150
  /**
3242
3151
  * Marker style for items and bullets lists. Effective value: the slide's design, then the deck's design, then the layout record's design.listBullet, then 'character'. 'character' (the default) draws the glyph marker. 'image' draws the deck's icon logo (a slide's design.logo, then design.logo, then the primary organization's logo; light variants on dark backgrounds) as a picture bullet: a square of the marker's font size whose bottom sits on the marker baseline, so list geometry does not change. Without a logo the glyph is drawn and the engine reports unresolved-content at this field.
3243
3152
  */
@@ -3245,7 +3154,7 @@ interface Design1 {
3245
3154
  [k: string]: unknown;
3246
3155
  }
3247
3156
  /**
3248
- * Portable dynamic composition. Slide fields override the resolved layout. Nested groups arrange their children independently, inheriting only minFontSize and overflow. Explicit promoted regions retain their positions.
3157
+ * Portable dynamic composition. Slide fields override the resolved layout. Nested groups (content groups here, placeholder groups in a layout record) arrange their children independently, inheriting only minFontSize and overflow. Explicit promoted regions retain their positions.
3249
3158
  *
3250
3159
  * This interface was referenced by `Presentation`'s JSON-Schema
3251
3160
  * via the `definition` "Composition".
@@ -3374,197 +3283,128 @@ interface Assets {
3374
3283
  [k: string]: Asset;
3375
3284
  }
3376
3285
  /**
3377
- * Optional per-kind catalog overrides. Each kind may declare a non-default 'source' and/or inline 'records' that override or supplement the default catalog at https://www.pptx.gallery/<kind>. References elsewhere in the document (e.g. design.theme, narrative) resolve through this section before falling back to the default catalog.
3286
+ * The catalog records this document embeds, grouped by the catalog they came from: 'default' (the catalog bare ids come from), 'custom' (records the document defines itself) and any number of named catalogs ('acme', referenced as 'acme:<id>'). A saved document embeds every record it references, so it renders the same with no catalog registered. See Catalogs.
3378
3287
  */
3379
3288
  interface Catalogs {
3380
- narratives?: CatalogEntry;
3381
- themes?: CatalogEntry1;
3382
- colorSchemes?: CatalogEntry2;
3383
- fontSchemes?: CatalogEntry3;
3384
- languages?: CatalogEntry4;
3385
- layouts?: CatalogEntry5;
3386
- chartTypes?: CatalogEntry6;
3387
- tones?: CatalogEntry7;
3388
- purposes?: CatalogEntry8;
3389
- audiences?: CatalogEntry9;
3390
- socialPlatforms?: CatalogEntry10;
3391
- [k: string]: unknown;
3392
- }
3393
- /**
3394
- * Catalog of narrative templates. Records validate against https://openpresentation.org/schema/opf-narrative/v1. A custom narrative goes in 'catalogs.narratives.records' and is referenced by its id from the root 'narrative'. Default source: https://www.pptx.gallery/narratives.
3395
- */
3396
- interface CatalogEntry {
3397
3289
  /**
3398
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3290
+ * The catalog bare ids come from: its source and the records of it this document embeds. false turns off the catalog fallback for bare ids.
3399
3291
  */
3400
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3292
+ default?: (CatalogGroup | false);
3401
3293
  /**
3402
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3294
+ * Records the document defines itself, referenced by bare id. Checked first for every bare id. Forking a catalog record copies it here under a new id, so the change of ownership is visible.
3403
3295
  */
3404
- records?: {
3405
- [k: string]: unknown;
3406
- }[];
3407
- [k: string]: unknown;
3408
- }
3409
- /**
3410
- * Catalog of themes. Records validate against https://openpresentation.org/schema/opf-theme/v1. Default source: https://www.pptx.gallery/themes.
3411
- */
3412
- interface CatalogEntry1 {
3296
+ custom?: CatalogGroup;
3413
3297
  /**
3414
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3298
+ * A named catalog: its source and the records of it this document embeds. References name it as a prefix ('acme:hero').
3415
3299
  */
3416
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3417
- /**
3418
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3419
- */
3420
- records?: {
3300
+ [k: string]: (CatalogGroup & {
3421
3301
  [k: string]: unknown;
3422
- }[];
3423
- [k: string]: unknown;
3302
+ }) | CatalogGroup | false | undefined;
3424
3303
  }
3425
3304
  /**
3426
- * Catalog of color schemes. Records validate against https://openpresentation.org/schema/opf-color-scheme/v1. Default source: https://www.pptx.gallery/color-schemes.
3305
+ * One catalog group: the catalog's source and the records of it the document embeds, by kind and then by id.
3306
+ *
3307
+ * This interface was referenced by `Presentation`'s JSON-Schema
3308
+ * via the `definition` "CatalogGroup".
3427
3309
  */
3428
- interface CatalogEntry2 {
3429
- /**
3430
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3431
- */
3432
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3433
- /**
3434
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3435
- */
3436
- records?: {
3437
- [k: string]: unknown;
3438
- }[];
3439
- [k: string]: unknown;
3310
+ interface CatalogGroup {
3311
+ source?: CatalogSource;
3312
+ layouts?: CatalogRecords;
3313
+ themes?: CatalogRecords1;
3314
+ colorSchemes?: CatalogRecords2;
3315
+ fontSchemes?: CatalogRecords3;
3316
+ narratives?: CatalogRecords4;
3317
+ audiences?: CatalogRecords5;
3318
+ purposes?: CatalogRecords6;
3319
+ tones?: CatalogRecords7;
3440
3320
  }
3441
3321
  /**
3442
- * Catalog of font schemes. Records validate against https://openpresentation.org/schema/opf-font-scheme/v1. Default source: https://www.pptx.gallery/font-schemes.
3322
+ * Layout records keyed by id, each with the fields of https://openpresentation.org/schema/opf-layout/v1. Referenced from Slide.layout.
3443
3323
  */
3444
- interface CatalogEntry3 {
3445
- /**
3446
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3447
- */
3448
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3324
+ interface CatalogRecords {
3449
3325
  /**
3450
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3326
+ * One embedded record: the fields of the kind's companion schema without '$schema' and 'id'.
3451
3327
  */
3452
- records?: {
3328
+ [k: string]: {
3453
3329
  [k: string]: unknown;
3454
- }[];
3455
- [k: string]: unknown;
3330
+ };
3456
3331
  }
3457
3332
  /**
3458
- * Catalog of languages. Records validate against https://openpresentation.org/schema/opf-language/v1. Default source: https://www.pptx.gallery/languages.
3333
+ * Theme records keyed by id, each with the fields of https://openpresentation.org/schema/opf-theme/v1. Referenced from design.theme.
3459
3334
  */
3460
- interface CatalogEntry4 {
3335
+ interface CatalogRecords1 {
3461
3336
  /**
3462
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3337
+ * One embedded record: the fields of the kind's companion schema without '$schema' and 'id'.
3463
3338
  */
3464
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3465
- /**
3466
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3467
- */
3468
- records?: {
3339
+ [k: string]: {
3469
3340
  [k: string]: unknown;
3470
- }[];
3471
- [k: string]: unknown;
3341
+ };
3472
3342
  }
3473
3343
  /**
3474
- * Catalog of slide layouts. Records validate against https://openpresentation.org/schema/opf-layout/v1. Default source: https://www.pptx.gallery/layouts.
3344
+ * Colour-scheme records keyed by id, each with the fields of https://openpresentation.org/schema/opf-color-scheme/v1. Referenced from design.colorScheme and a theme's colorScheme.
3475
3345
  */
3476
- interface CatalogEntry5 {
3477
- /**
3478
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3479
- */
3480
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3346
+ interface CatalogRecords2 {
3481
3347
  /**
3482
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3348
+ * One embedded record: the fields of the kind's companion schema without '$schema' and 'id'.
3483
3349
  */
3484
- records?: {
3350
+ [k: string]: {
3485
3351
  [k: string]: unknown;
3486
- }[];
3487
- [k: string]: unknown;
3352
+ };
3488
3353
  }
3489
3354
  /**
3490
- * Catalog of chart types. Records validate against https://openpresentation.org/schema/opf-chart-type/v1. Default source: https://www.pptx.gallery/chart-types.
3355
+ * Font-scheme records keyed by id, each with the fields of https://openpresentation.org/schema/opf-font-scheme/v1. Referenced from design.fontScheme, a theme's fontScheme and a language's font schemes.
3491
3356
  */
3492
- interface CatalogEntry6 {
3493
- /**
3494
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3495
- */
3496
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3357
+ interface CatalogRecords3 {
3497
3358
  /**
3498
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3359
+ * One embedded record: the fields of the kind's companion schema without '$schema' and 'id'.
3499
3360
  */
3500
- records?: {
3361
+ [k: string]: {
3501
3362
  [k: string]: unknown;
3502
- }[];
3503
- [k: string]: unknown;
3363
+ };
3504
3364
  }
3505
3365
  /**
3506
- * Catalog of presentation tones. Records validate against https://openpresentation.org/schema/opf-tone/v1. Default source: https://www.pptx.gallery/tones. Referenced from tone.
3366
+ * Narrative records keyed by id, each with the fields of https://openpresentation.org/schema/opf-narrative/v1. Referenced from narrative.
3507
3367
  */
3508
- interface CatalogEntry7 {
3509
- /**
3510
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3511
- */
3512
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3368
+ interface CatalogRecords4 {
3513
3369
  /**
3514
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3370
+ * One embedded record: the fields of the kind's companion schema without '$schema' and 'id'.
3515
3371
  */
3516
- records?: {
3372
+ [k: string]: {
3517
3373
  [k: string]: unknown;
3518
- }[];
3519
- [k: string]: unknown;
3374
+ };
3520
3375
  }
3521
3376
  /**
3522
- * Catalog of presentation purposes. Records validate against https://openpresentation.org/schema/opf-purpose/v1. Default source: https://www.pptx.gallery/purposes. Referenced from purpose.
3377
+ * Audience records keyed by id, each with the fields of https://openpresentation.org/schema/opf-audience/v1. Referenced from audience.
3523
3378
  */
3524
- interface CatalogEntry8 {
3379
+ interface CatalogRecords5 {
3525
3380
  /**
3526
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3381
+ * One embedded record: the fields of the kind's companion schema without '$schema' and 'id'.
3527
3382
  */
3528
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3529
- /**
3530
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3531
- */
3532
- records?: {
3383
+ [k: string]: {
3533
3384
  [k: string]: unknown;
3534
- }[];
3535
- [k: string]: unknown;
3385
+ };
3536
3386
  }
3537
3387
  /**
3538
- * Catalog of presentation audiences. Records validate against https://openpresentation.org/schema/opf-audience/v1. Default source: https://www.pptx.gallery/audiences. Referenced from audience.
3388
+ * Purpose records keyed by id, each with the fields of https://openpresentation.org/schema/opf-purpose/v1. Referenced from purpose.
3539
3389
  */
3540
- interface CatalogEntry9 {
3541
- /**
3542
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3543
- */
3544
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3390
+ interface CatalogRecords6 {
3545
3391
  /**
3546
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3392
+ * One embedded record: the fields of the kind's companion schema without '$schema' and 'id'.
3547
3393
  */
3548
- records?: {
3394
+ [k: string]: {
3549
3395
  [k: string]: unknown;
3550
- }[];
3551
- [k: string]: unknown;
3396
+ };
3552
3397
  }
3553
3398
  /**
3554
- * Catalog of social-media platforms. Records validate against https://openpresentation.org/schema/opf-social-platform/v1. Default source: https://www.pptx.gallery/social-platforms. Referenced via the property keys of any Socials object (Organization.socials, Speaker.socials).
3399
+ * Tone records keyed by id, each with the fields of https://openpresentation.org/schema/opf-tone/v1. Referenced from tone.
3555
3400
  */
3556
- interface CatalogEntry10 {
3557
- /**
3558
- * Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot.
3559
- */
3560
- source?: (CatalogSource | [CatalogSource, ...(CatalogSource)[]]);
3401
+ interface CatalogRecords7 {
3561
3402
  /**
3562
- * Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog.
3403
+ * One embedded record: the fields of the kind's companion schema without '$schema' and 'id'.
3563
3404
  */
3564
- records?: {
3405
+ [k: string]: {
3565
3406
  [k: string]: unknown;
3566
- }[];
3567
- [k: string]: unknown;
3407
+ };
3568
3408
  }
3569
3409
 
3570
- export type { Presentation as P };
3410
+ export type { Chart as C, Presentation as P };