@openpresentation/opf 0.1.0 → 0.2.2

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 (499) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +146 -103
  3. package/dist/catalogs.d.ts +11 -1531
  4. package/dist/catalogs.js +5 -613
  5. package/dist/catalogs.js.map +1 -1
  6. package/dist/index.d.ts +3 -1
  7. package/dist/index.js +3862 -662
  8. package/dist/index.js.map +1 -1
  9. package/dist/previews.d.ts +40 -0
  10. package/dist/previews.js +447 -0
  11. package/dist/previews.js.map +1 -0
  12. package/dist/schemas.d.ts +153 -141
  13. package/dist/schemas.js +57 -48
  14. package/dist/schemas.js.map +1 -1
  15. package/dist/spec/catalogs/audiences/all-hands.json +23 -23
  16. package/dist/spec/catalogs/audiences/board.json +22 -22
  17. package/dist/spec/catalogs/audiences/candidates.json +23 -23
  18. package/dist/spec/catalogs/audiences/customers.json +23 -23
  19. package/dist/spec/catalogs/audiences/engineering-team.json +23 -23
  20. package/dist/spec/catalogs/audiences/executives.json +23 -23
  21. package/dist/spec/catalogs/audiences/index.json +67 -67
  22. package/dist/spec/catalogs/audiences/investors.json +23 -23
  23. package/dist/spec/catalogs/audiences/marketing-team.json +23 -23
  24. package/dist/spec/catalogs/audiences/regulators.json +23 -23
  25. package/dist/spec/catalogs/audiences/sales-team.json +23 -23
  26. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +86 -90
  27. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +98 -102
  28. package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +74 -78
  29. package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +86 -90
  30. package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +98 -102
  31. package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +74 -78
  32. package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +95 -99
  33. package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +96 -100
  34. package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +118 -122
  35. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +79 -83
  36. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +95 -99
  37. package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +85 -89
  38. package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +103 -107
  39. package/dist/spec/catalogs/chart-types/area.json +73 -77
  40. package/dist/spec/catalogs/chart-types/australia.json +66 -70
  41. package/dist/spec/catalogs/chart-types/bar.json +63 -67
  42. package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +126 -130
  43. package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +158 -162
  44. package/dist/spec/catalogs/chart-types/box-and-whisker.json +94 -98
  45. package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +84 -88
  46. package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +96 -100
  47. package/dist/spec/catalogs/chart-types/bullet-bar.json +72 -76
  48. package/dist/spec/catalogs/chart-types/bullet-column-2x.json +84 -88
  49. package/dist/spec/catalogs/chart-types/bullet-column-3x.json +96 -100
  50. package/dist/spec/catalogs/chart-types/bullet-column.json +72 -76
  51. package/dist/spec/catalogs/chart-types/canada.json +76 -80
  52. package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +79 -83
  53. package/dist/spec/catalogs/chart-types/clustered-column.json +85 -89
  54. package/dist/spec/catalogs/chart-types/column.json +67 -71
  55. package/dist/spec/catalogs/chart-types/dot-plot-2x.json +94 -98
  56. package/dist/spec/catalogs/chart-types/dot-plot-3x.json +119 -123
  57. package/dist/spec/catalogs/chart-types/dot-plot-4x.json +144 -148
  58. package/dist/spec/catalogs/chart-types/dot-plot-5x.json +169 -173
  59. package/dist/spec/catalogs/chart-types/dot-plot-6x.json +194 -198
  60. package/dist/spec/catalogs/chart-types/dot-plot.json +69 -73
  61. package/dist/spec/catalogs/chart-types/doughnut.json +53 -57
  62. package/dist/spec/catalogs/chart-types/dumbbell.json +115 -119
  63. package/dist/spec/catalogs/chart-types/filled-radar.json +66 -70
  64. package/dist/spec/catalogs/chart-types/funnel.json +60 -64
  65. package/dist/spec/catalogs/chart-types/histogram.json +141 -145
  66. package/dist/spec/catalogs/chart-types/index.json +539 -843
  67. package/dist/spec/catalogs/chart-types/line-2x.json +95 -99
  68. package/dist/spec/catalogs/chart-types/line-3x.json +117 -121
  69. package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +139 -143
  70. package/dist/spec/catalogs/chart-types/line-with-high-low.json +139 -143
  71. package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +96 -100
  72. package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +118 -122
  73. package/dist/spec/catalogs/chart-types/line-with-markers.json +74 -78
  74. package/dist/spec/catalogs/chart-types/line.json +73 -77
  75. package/dist/spec/catalogs/chart-types/pareto.json +159 -163
  76. package/dist/spec/catalogs/chart-types/pie.json +53 -57
  77. package/dist/spec/catalogs/chart-types/radar-with-markers.json +66 -70
  78. package/dist/spec/catalogs/chart-types/radar.json +66 -70
  79. package/dist/spec/catalogs/chart-types/scatter.json +87 -91
  80. package/dist/spec/catalogs/chart-types/sparkline-2x.json +133 -137
  81. package/dist/spec/catalogs/chart-types/sparkline-3x.json +169 -173
  82. package/dist/spec/catalogs/chart-types/sparkline-4x.json +205 -209
  83. package/dist/spec/catalogs/chart-types/sparkline-5x.json +241 -245
  84. package/dist/spec/catalogs/chart-types/sparkline-6x.json +277 -281
  85. package/dist/spec/catalogs/chart-types/sparkline.json +97 -101
  86. package/dist/spec/catalogs/chart-types/stacked-area-2x.json +96 -100
  87. package/dist/spec/catalogs/chart-types/stacked-area-3x.json +118 -122
  88. package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +79 -83
  89. package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +95 -99
  90. package/dist/spec/catalogs/chart-types/stacked-column-2x.json +85 -89
  91. package/dist/spec/catalogs/chart-types/stacked-column-3x.json +103 -107
  92. package/dist/spec/catalogs/chart-types/stacked-line-2x.json +96 -100
  93. package/dist/spec/catalogs/chart-types/stacked-line-3x.json +118 -122
  94. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +97 -101
  95. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +119 -123
  96. package/dist/spec/catalogs/chart-types/treemap-2x.json +91 -95
  97. package/dist/spec/catalogs/chart-types/treemap-3x.json +112 -116
  98. package/dist/spec/catalogs/chart-types/treemap.json +62 -66
  99. package/dist/spec/catalogs/chart-types/{united-kindom.json → united-kingdom.json} +58 -62
  100. package/dist/spec/catalogs/chart-types/united-states.json +72 -76
  101. package/dist/spec/catalogs/chart-types/waterfall.json +66 -70
  102. package/dist/spec/catalogs/chart-types/world.json +78 -82
  103. package/dist/spec/catalogs/color-schemes/black-and-white.json +17 -17
  104. package/dist/spec/catalogs/color-schemes/bold-red.json +17 -17
  105. package/dist/spec/catalogs/color-schemes/boost.json +17 -17
  106. package/dist/spec/catalogs/color-schemes/burnt-orange.json +17 -17
  107. package/dist/spec/catalogs/color-schemes/cool-horizon.json +17 -17
  108. package/dist/spec/catalogs/color-schemes/corporate-blue.json +17 -17
  109. package/dist/spec/catalogs/color-schemes/deep-purple.json +17 -17
  110. package/dist/spec/catalogs/color-schemes/forest-green.json +17 -17
  111. package/dist/spec/catalogs/color-schemes/golden-yellow.json +17 -17
  112. package/dist/spec/catalogs/color-schemes/index.json +77 -77
  113. package/dist/spec/catalogs/color-schemes/luxury.json +17 -17
  114. package/dist/spec/catalogs/color-schemes/pastel-red.json +17 -17
  115. package/dist/spec/catalogs/color-schemes/slate-gray.json +17 -17
  116. package/dist/spec/catalogs/color-schemes/steel-blue.json +17 -17
  117. package/dist/spec/catalogs/color-schemes/vibes.json +17 -17
  118. package/dist/spec/catalogs/font-schemes/angsana-new.json +14 -14
  119. package/dist/spec/catalogs/font-schemes/aparajita.json +15 -15
  120. package/dist/spec/catalogs/font-schemes/aptos.json +12 -12
  121. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +14 -14
  122. package/dist/spec/catalogs/font-schemes/arial.json +12 -12
  123. package/dist/spec/catalogs/font-schemes/batang.json +14 -14
  124. package/dist/spec/catalogs/font-schemes/bookman.json +12 -12
  125. package/dist/spec/catalogs/font-schemes/calibri.json +12 -12
  126. package/dist/spec/catalogs/font-schemes/century-schoolbook.json +12 -12
  127. package/dist/spec/catalogs/font-schemes/consolas.json +12 -12
  128. package/dist/spec/catalogs/font-schemes/constantia.json +12 -12
  129. package/dist/spec/catalogs/font-schemes/courier-new.json +12 -12
  130. package/dist/spec/catalogs/font-schemes/daunpenh.json +14 -14
  131. package/dist/spec/catalogs/font-schemes/david.json +14 -14
  132. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +14 -14
  133. package/dist/spec/catalogs/font-schemes/fangsong.json +14 -14
  134. package/dist/spec/catalogs/font-schemes/garamond.json +12 -12
  135. package/dist/spec/catalogs/font-schemes/gautami.json +14 -14
  136. package/dist/spec/catalogs/font-schemes/georgia.json +12 -12
  137. package/dist/spec/catalogs/font-schemes/gisha.json +15 -15
  138. package/dist/spec/catalogs/font-schemes/grandview.json +12 -12
  139. package/dist/spec/catalogs/font-schemes/gungsuh.json +14 -14
  140. package/dist/spec/catalogs/font-schemes/impact.json +12 -12
  141. package/dist/spec/catalogs/font-schemes/index.json +452 -452
  142. package/dist/spec/catalogs/font-schemes/kalinga.json +14 -14
  143. package/dist/spec/catalogs/font-schemes/kartika.json +14 -14
  144. package/dist/spec/catalogs/font-schemes/khmer-ui.json +14 -14
  145. package/dist/spec/catalogs/font-schemes/latha.json +14 -14
  146. package/dist/spec/catalogs/font-schemes/lucida-sans.json +12 -12
  147. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +14 -14
  148. package/dist/spec/catalogs/font-schemes/mangal.json +17 -17
  149. package/dist/spec/catalogs/font-schemes/meiryo.json +14 -14
  150. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +14 -14
  151. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +17 -17
  152. package/dist/spec/catalogs/font-schemes/mingliu.json +14 -14
  153. package/dist/spec/catalogs/font-schemes/miriam.json +14 -14
  154. package/dist/spec/catalogs/font-schemes/montserrat.json +12 -12
  155. package/dist/spec/catalogs/font-schemes/ms-mincho.json +14 -14
  156. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +14 -14
  157. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +14 -14
  158. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +15 -15
  159. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +16 -16
  160. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +14 -14
  161. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +15 -15
  162. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +15 -15
  163. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +14 -14
  164. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +14 -14
  165. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +14 -14
  166. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +14 -14
  167. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +14 -14
  168. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +14 -14
  169. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +14 -14
  170. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +14 -14
  171. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +14 -14
  172. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +14 -14
  173. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +14 -14
  174. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +14 -14
  175. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +17 -17
  176. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +14 -14
  177. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +14 -14
  178. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +14 -14
  179. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +14 -14
  180. package/dist/spec/catalogs/font-schemes/noto-sans.json +17 -17
  181. package/dist/spec/catalogs/font-schemes/nyala.json +14 -14
  182. package/dist/spec/catalogs/font-schemes/open-sans.json +12 -12
  183. package/dist/spec/catalogs/font-schemes/pmingliu.json +14 -14
  184. package/dist/spec/catalogs/font-schemes/poppins.json +12 -12
  185. package/dist/spec/catalogs/font-schemes/pt-serif.json +12 -12
  186. package/dist/spec/catalogs/font-schemes/raavi.json +14 -14
  187. package/dist/spec/catalogs/font-schemes/raleway.json +12 -12
  188. package/dist/spec/catalogs/font-schemes/roboto.json +12 -12
  189. package/dist/spec/catalogs/font-schemes/rockwell.json +12 -12
  190. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +16 -16
  191. package/dist/spec/catalogs/font-schemes/seaford.json +12 -12
  192. package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +12 -12
  193. package/dist/spec/catalogs/font-schemes/segoe-ui.json +12 -12
  194. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +15 -15
  195. package/dist/spec/catalogs/font-schemes/shruti.json +14 -14
  196. package/dist/spec/catalogs/font-schemes/simsun.json +14 -14
  197. package/dist/spec/catalogs/font-schemes/skeena.json +12 -12
  198. package/dist/spec/catalogs/font-schemes/sylfaen.json +15 -15
  199. package/dist/spec/catalogs/font-schemes/tahoma.json +12 -12
  200. package/dist/spec/catalogs/font-schemes/tenorite.json +12 -12
  201. package/dist/spec/catalogs/font-schemes/times-new-roman.json +12 -12
  202. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +16 -16
  203. package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +12 -12
  204. package/dist/spec/catalogs/font-schemes/tunga.json +14 -14
  205. package/dist/spec/catalogs/font-schemes/verdana.json +12 -12
  206. package/dist/spec/catalogs/font-schemes/vrinda.json +14 -14
  207. package/dist/spec/catalogs/font-schemes/yu-gothic.json +14 -14
  208. package/dist/spec/catalogs/languages/afrikaans.json +9 -9
  209. package/dist/spec/catalogs/languages/albanian.json +9 -9
  210. package/dist/spec/catalogs/languages/amharic.json +9 -9
  211. package/dist/spec/catalogs/languages/arabic.json +9 -9
  212. package/dist/spec/catalogs/languages/armenian.json +9 -9
  213. package/dist/spec/catalogs/languages/aymara.json +9 -9
  214. package/dist/spec/catalogs/languages/azerbaijani.json +9 -9
  215. package/dist/spec/catalogs/languages/bengali.json +9 -9
  216. package/dist/spec/catalogs/languages/berber-latin.json +9 -9
  217. package/dist/spec/catalogs/languages/bosnian-latin.json +9 -9
  218. package/dist/spec/catalogs/languages/bulgarian.json +9 -9
  219. package/dist/spec/catalogs/languages/catalan.json +9 -9
  220. package/dist/spec/catalogs/languages/cebuano.json +9 -9
  221. package/dist/spec/catalogs/languages/chinese-simplified.json +9 -9
  222. package/dist/spec/catalogs/languages/chinese-traditional.json +9 -9
  223. package/dist/spec/catalogs/languages/chittagonian.json +9 -9
  224. package/dist/spec/catalogs/languages/croatian.json +9 -9
  225. package/dist/spec/catalogs/languages/czech.json +9 -9
  226. package/dist/spec/catalogs/languages/danish.json +9 -9
  227. package/dist/spec/catalogs/languages/dutch.json +9 -9
  228. package/dist/spec/catalogs/languages/english-au.json +9 -9
  229. package/dist/spec/catalogs/languages/english-ca.json +9 -9
  230. package/dist/spec/catalogs/languages/english-gb.json +9 -9
  231. package/dist/spec/catalogs/languages/english-in.json +9 -9
  232. package/dist/spec/catalogs/languages/english-us.json +9 -9
  233. package/dist/spec/catalogs/languages/english.json +9 -9
  234. package/dist/spec/catalogs/languages/estonian.json +9 -9
  235. package/dist/spec/catalogs/languages/filipino.json +9 -9
  236. package/dist/spec/catalogs/languages/finnish.json +9 -9
  237. package/dist/spec/catalogs/languages/french.json +9 -9
  238. package/dist/spec/catalogs/languages/fulfulde.json +9 -9
  239. package/dist/spec/catalogs/languages/galician.json +9 -9
  240. package/dist/spec/catalogs/languages/georgian.json +9 -9
  241. package/dist/spec/catalogs/languages/german.json +9 -9
  242. package/dist/spec/catalogs/languages/greek.json +9 -9
  243. package/dist/spec/catalogs/languages/gujarati.json +9 -9
  244. package/dist/spec/catalogs/languages/hausa.json +9 -9
  245. package/dist/spec/catalogs/languages/hebrew.json +9 -9
  246. package/dist/spec/catalogs/languages/hindi.json +9 -9
  247. package/dist/spec/catalogs/languages/hungarian.json +9 -9
  248. package/dist/spec/catalogs/languages/igbo.json +9 -9
  249. package/dist/spec/catalogs/languages/index.json +565 -565
  250. package/dist/spec/catalogs/languages/indonesian.json +9 -9
  251. package/dist/spec/catalogs/languages/italian.json +9 -9
  252. package/dist/spec/catalogs/languages/japanese.json +9 -9
  253. package/dist/spec/catalogs/languages/kannada.json +9 -9
  254. package/dist/spec/catalogs/languages/kazakh.json +9 -9
  255. package/dist/spec/catalogs/languages/khmer.json +9 -9
  256. package/dist/spec/catalogs/languages/kinyarwanda.json +9 -9
  257. package/dist/spec/catalogs/languages/korean.json +9 -9
  258. package/dist/spec/catalogs/languages/kurmanji.json +9 -9
  259. package/dist/spec/catalogs/languages/latvian.json +9 -9
  260. package/dist/spec/catalogs/languages/lithuanian.json +9 -9
  261. package/dist/spec/catalogs/languages/macedonian.json +9 -9
  262. package/dist/spec/catalogs/languages/malagasy.json +9 -9
  263. package/dist/spec/catalogs/languages/malay.json +9 -9
  264. package/dist/spec/catalogs/languages/malayalam.json +9 -9
  265. package/dist/spec/catalogs/languages/maori.json +9 -9
  266. package/dist/spec/catalogs/languages/marathi.json +9 -9
  267. package/dist/spec/catalogs/languages/mongolian.json +9 -9
  268. package/dist/spec/catalogs/languages/nepali.json +9 -9
  269. package/dist/spec/catalogs/languages/norwegian.json +9 -9
  270. package/dist/spec/catalogs/languages/odia.json +9 -9
  271. package/dist/spec/catalogs/languages/oromo.json +9 -9
  272. package/dist/spec/catalogs/languages/pashto.json +9 -9
  273. package/dist/spec/catalogs/languages/persian.json +9 -9
  274. package/dist/spec/catalogs/languages/polish.json +9 -9
  275. package/dist/spec/catalogs/languages/portuguese.json +9 -9
  276. package/dist/spec/catalogs/languages/punjabi-gurmukhi.json +9 -9
  277. package/dist/spec/catalogs/languages/punjabi-shahmukhi.json +9 -9
  278. package/dist/spec/catalogs/languages/romanian.json +9 -9
  279. package/dist/spec/catalogs/languages/russian.json +9 -9
  280. package/dist/spec/catalogs/languages/serbian-cyrillic.json +9 -9
  281. package/dist/spec/catalogs/languages/serbian-latin.json +9 -9
  282. package/dist/spec/catalogs/languages/shona.json +9 -9
  283. package/dist/spec/catalogs/languages/slovak.json +9 -9
  284. package/dist/spec/catalogs/languages/slovenian.json +9 -9
  285. package/dist/spec/catalogs/languages/somali.json +9 -9
  286. package/dist/spec/catalogs/languages/spanish.json +9 -9
  287. package/dist/spec/catalogs/languages/swahili.json +9 -9
  288. package/dist/spec/catalogs/languages/swedish.json +9 -9
  289. package/dist/spec/catalogs/languages/tagalog.json +9 -9
  290. package/dist/spec/catalogs/languages/tajik.json +9 -9
  291. package/dist/spec/catalogs/languages/tamil.json +9 -9
  292. package/dist/spec/catalogs/languages/telugu.json +9 -9
  293. package/dist/spec/catalogs/languages/thai.json +9 -9
  294. package/dist/spec/catalogs/languages/turkish.json +9 -9
  295. package/dist/spec/catalogs/languages/ukrainian.json +9 -9
  296. package/dist/spec/catalogs/languages/urdu.json +9 -9
  297. package/dist/spec/catalogs/languages/uzbek-latin.json +9 -9
  298. package/dist/spec/catalogs/languages/vietnamese-quoc-ngu.json +9 -9
  299. package/dist/spec/catalogs/languages/xhosa.json +9 -9
  300. package/dist/spec/catalogs/languages/yoruba.json +9 -9
  301. package/dist/spec/catalogs/languages/zulu.json +9 -9
  302. package/dist/spec/catalogs/layouts/blank.json +6 -6
  303. package/dist/spec/catalogs/layouts/chart-1x.json +16 -16
  304. package/dist/spec/catalogs/layouts/chart-2x.json +22 -22
  305. package/dist/spec/catalogs/layouts/chart-3x.json +28 -28
  306. package/dist/spec/catalogs/layouts/code-1x.json +16 -16
  307. package/dist/spec/catalogs/layouts/extract/canonical.json +487 -487
  308. package/dist/spec/catalogs/layouts/image-1x.json +16 -16
  309. package/dist/spec/catalogs/layouts/image-2x.json +22 -22
  310. package/dist/spec/catalogs/layouts/image-3x.json +28 -28
  311. package/dist/spec/catalogs/layouts/image-bleed.json +10 -10
  312. package/dist/spec/catalogs/layouts/index.json +147 -147
  313. package/dist/spec/catalogs/layouts/list-1x.json +13 -13
  314. package/dist/spec/catalogs/layouts/list-2x.json +16 -16
  315. package/dist/spec/catalogs/layouts/list-3x.json +19 -19
  316. package/dist/spec/catalogs/layouts/list-4x.json +22 -22
  317. package/dist/spec/catalogs/layouts/list-5x.json +25 -25
  318. package/dist/spec/catalogs/layouts/list-6x.json +28 -28
  319. package/dist/spec/catalogs/layouts/media-1x.json +16 -16
  320. package/dist/spec/catalogs/layouts/number-1x.json +13 -13
  321. package/dist/spec/catalogs/layouts/number-2x.json +16 -16
  322. package/dist/spec/catalogs/layouts/number-3x.json +19 -19
  323. package/dist/spec/catalogs/layouts/number-4x.json +22 -22
  324. package/dist/spec/catalogs/layouts/number-5x.json +25 -25
  325. package/dist/spec/catalogs/layouts/number-6x.json +28 -28
  326. package/dist/spec/catalogs/layouts/table-1x.json +16 -16
  327. package/dist/spec/catalogs/layouts/text-1x.json +13 -13
  328. package/dist/spec/catalogs/layouts/text-2x.json +16 -16
  329. package/dist/spec/catalogs/layouts/text-3x.json +19 -19
  330. package/dist/spec/catalogs/layouts/title-subtitle.json +13 -13
  331. package/dist/spec/catalogs/layouts/title.json +10 -10
  332. package/dist/spec/catalogs/narratives/board-meeting.json +192 -192
  333. package/dist/spec/catalogs/narratives/business-narrative.json +87 -87
  334. package/dist/spec/catalogs/narratives/business-review.json +119 -119
  335. package/dist/spec/catalogs/narratives/capacity-planning.json +88 -88
  336. package/dist/spec/catalogs/narratives/challenge-resolution.json +80 -80
  337. package/dist/spec/catalogs/narratives/classic-story.json +78 -78
  338. package/dist/spec/catalogs/narratives/company-intro.json +96 -96
  339. package/dist/spec/catalogs/narratives/conference-talk.json +54 -54
  340. package/dist/spec/catalogs/narratives/early-startup-pitch.json +119 -119
  341. package/dist/spec/catalogs/narratives/educate.json +95 -95
  342. package/dist/spec/catalogs/narratives/employee-review.json +87 -87
  343. package/dist/spec/catalogs/narratives/failure-analysis.json +104 -104
  344. package/dist/spec/catalogs/narratives/focus.json +120 -120
  345. package/dist/spec/catalogs/narratives/golden-circle.json +50 -50
  346. package/dist/spec/catalogs/narratives/index.json +358 -358
  347. package/dist/spec/catalogs/narratives/innovation.json +96 -96
  348. package/dist/spec/catalogs/narratives/justice.json +112 -112
  349. package/dist/spec/catalogs/narratives/marketing-strategy.json +111 -111
  350. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +87 -87
  351. package/dist/spec/catalogs/narratives/performance-review.json +111 -111
  352. package/dist/spec/catalogs/narratives/persuade.json +94 -94
  353. package/dist/spec/catalogs/narratives/persuasive-sales.json +87 -87
  354. package/dist/spec/catalogs/narratives/pitch-deck.json +107 -107
  355. package/dist/spec/catalogs/narratives/problem-solution.json +61 -61
  356. package/dist/spec/catalogs/narratives/product-launch.json +104 -104
  357. package/dist/spec/catalogs/narratives/project-proposal.json +104 -104
  358. package/dist/spec/catalogs/narratives/qbr.json +85 -85
  359. package/dist/spec/catalogs/narratives/rags-to-riches.json +80 -80
  360. package/dist/spec/catalogs/narratives/reveal.json +87 -87
  361. package/dist/spec/catalogs/narratives/scqa.json +55 -55
  362. package/dist/spec/catalogs/narratives/status-update.json +72 -72
  363. package/dist/spec/catalogs/narratives/strategic-advisory.json +85 -85
  364. package/dist/spec/catalogs/narratives/strategic-narrative.json +61 -61
  365. package/dist/spec/catalogs/narratives/survey-analysis.json +104 -104
  366. package/dist/spec/catalogs/narratives/survival-story.json +103 -103
  367. package/dist/spec/catalogs/narratives/transformation-arc.json +50 -50
  368. package/dist/spec/catalogs/narratives/trend-analysis.json +79 -79
  369. package/dist/spec/catalogs/narratives/underdog-victory.json +87 -87
  370. package/dist/spec/catalogs/narratives/venture-pitch.json +109 -109
  371. package/dist/spec/catalogs/narratives/weekly-progress.json +103 -103
  372. package/dist/spec/catalogs/purposes/align.json +16 -16
  373. package/dist/spec/catalogs/purposes/decide.json +16 -16
  374. package/dist/spec/catalogs/purposes/educate.json +16 -16
  375. package/dist/spec/catalogs/purposes/index.json +61 -61
  376. package/dist/spec/catalogs/purposes/inform.json +16 -16
  377. package/dist/spec/catalogs/purposes/persuade.json +16 -16
  378. package/dist/spec/catalogs/purposes/pitch.json +16 -16
  379. package/dist/spec/catalogs/purposes/plan.json +16 -16
  380. package/dist/spec/catalogs/purposes/report.json +16 -16
  381. package/dist/spec/catalogs/purposes/sell.json +16 -16
  382. package/dist/spec/catalogs/social-platforms/bluesky.json +14 -14
  383. package/dist/spec/catalogs/social-platforms/facebook.json +14 -14
  384. package/dist/spec/catalogs/social-platforms/github.json +15 -15
  385. package/dist/spec/catalogs/social-platforms/index.json +68 -68
  386. package/dist/spec/catalogs/social-platforms/instagram.json +13 -13
  387. package/dist/spec/catalogs/social-platforms/linkedin.json +15 -15
  388. package/dist/spec/catalogs/social-platforms/mastodon.json +14 -14
  389. package/dist/spec/catalogs/social-platforms/threads.json +13 -13
  390. package/dist/spec/catalogs/social-platforms/tiktok.json +14 -14
  391. package/dist/spec/catalogs/social-platforms/x.json +14 -14
  392. package/dist/spec/catalogs/social-platforms/youtube.json +14 -14
  393. package/dist/spec/catalogs/themes/bold.json +13 -13
  394. package/dist/spec/catalogs/themes/classic.json +13 -13
  395. package/dist/spec/catalogs/themes/dark.json +13 -13
  396. package/dist/spec/catalogs/themes/index.json +31 -31
  397. package/dist/spec/catalogs/themes/minimal.json +13 -13
  398. package/dist/spec/catalogs/tones/authoritative.json +31 -31
  399. package/dist/spec/catalogs/tones/casual.json +31 -31
  400. package/dist/spec/catalogs/tones/conversational.json +31 -31
  401. package/dist/spec/catalogs/tones/formal.json +31 -31
  402. package/dist/spec/catalogs/tones/index.json +49 -49
  403. package/dist/spec/catalogs/tones/inspirational.json +31 -31
  404. package/dist/spec/catalogs/tones/persuasive.json +32 -32
  405. package/dist/spec/catalogs/tones/technical.json +31 -31
  406. package/dist/spec/openapi.yaml +776 -776
  407. package/dist/spec/previews/layouts/action-plan.html +1 -0
  408. package/dist/spec/previews/layouts/agenda.html +1 -0
  409. package/dist/spec/previews/layouts/appendix-index.html +1 -0
  410. package/dist/spec/previews/layouts/architecture-stack.html +1 -0
  411. package/dist/spec/previews/layouts/assumptions-dependencies.html +1 -0
  412. package/dist/spec/previews/layouts/before-after.html +1 -0
  413. package/dist/spec/previews/layouts/benchmark-target-table.html +1 -0
  414. package/dist/spec/previews/layouts/bullet-list.html +1 -0
  415. package/dist/spec/previews/layouts/business-model-canvas.html +1 -0
  416. package/dist/spec/previews/layouts/capability-map.html +1 -0
  417. package/dist/spec/previews/layouts/case-study.html +1 -0
  418. package/dist/spec/previews/layouts/chapter-recap.html +1 -0
  419. package/dist/spec/previews/layouts/circular-lifecycle.html +1 -0
  420. package/dist/spec/previews/layouts/comparison.html +1 -0
  421. package/dist/spec/previews/layouts/competitive-landscape.html +1 -0
  422. package/dist/spec/previews/layouts/customer-journey.html +1 -0
  423. package/dist/spec/previews/layouts/customer-logos.html +1 -0
  424. package/dist/spec/previews/layouts/dashboard.html +1 -0
  425. package/dist/spec/previews/layouts/data-visualization.html +1 -0
  426. package/dist/spec/previews/layouts/decision-tree.html +1 -0
  427. package/dist/spec/previews/layouts/detailed-data-table.html +1 -0
  428. package/dist/spec/previews/layouts/ecosystem-map.html +1 -0
  429. package/dist/spec/previews/layouts/executive-decision.html +1 -0
  430. package/dist/spec/previews/layouts/executive-summary.html +1 -0
  431. package/dist/spec/previews/layouts/faq.html +1 -0
  432. package/dist/spec/previews/layouts/feature-comparison-matrix.html +1 -0
  433. package/dist/spec/previews/layouts/forecast-scenario.html +1 -0
  434. package/dist/spec/previews/layouts/funnel-pyramid.html +1 -0
  435. package/dist/spec/previews/layouts/gantt-project-plan.html +1 -0
  436. package/dist/spec/previews/layouts/geographic-map.html +1 -0
  437. package/dist/spec/previews/layouts/heatmap-cohort.html +1 -0
  438. package/dist/spec/previews/layouts/hub-and-spoke.html +1 -0
  439. package/dist/spec/previews/layouts/icon-grid.html +1 -0
  440. package/dist/spec/previews/layouts/image-focus.html +1 -0
  441. package/dist/spec/previews/layouts/index.json +357 -0
  442. package/dist/spec/previews/layouts/key-takeaway.html +1 -0
  443. package/dist/spec/previews/layouts/kpi-scorecard.html +1 -0
  444. package/dist/spec/previews/layouts/logic-tree.html +1 -0
  445. package/dist/spec/previews/layouts/market-size.html +1 -0
  446. package/dist/spec/previews/layouts/matrix-quadrant.html +1 -0
  447. package/dist/spec/previews/layouts/network-dependency-map.html +1 -0
  448. package/dist/spec/previews/layouts/one-column-explainer.html +1 -0
  449. package/dist/spec/previews/layouts/org-chart.html +1 -0
  450. package/dist/spec/previews/layouts/persona-grid.html +1 -0
  451. package/dist/spec/previews/layouts/photo-grid.html +1 -0
  452. package/dist/spec/previews/layouts/pricing-table.html +1 -0
  453. package/dist/spec/previews/layouts/process-flow.html +1 -0
  454. package/dist/spec/previews/layouts/product-feature.html +1 -0
  455. package/dist/spec/previews/layouts/pros-cons.html +1 -0
  456. package/dist/spec/previews/layouts/qa-discussion.html +1 -0
  457. package/dist/spec/previews/layouts/quote-highlight.html +1 -0
  458. package/dist/spec/previews/layouts/raci-matrix.html +1 -0
  459. package/dist/spec/previews/layouts/risk-heatmap.html +1 -0
  460. package/dist/spec/previews/layouts/roadmap.html +1 -0
  461. package/dist/spec/previews/layouts/screenshot-walkthrough.html +1 -0
  462. package/dist/spec/previews/layouts/section-divider.html +1 -0
  463. package/dist/spec/previews/layouts/single-message-statement.html +1 -0
  464. package/dist/spec/previews/layouts/stats-metrics.html +1 -0
  465. package/dist/spec/previews/layouts/status-rag.html +1 -0
  466. package/dist/spec/previews/layouts/swimlane-process.html +1 -0
  467. package/dist/spec/previews/layouts/swot-analysis.html +1 -0
  468. package/dist/spec/previews/layouts/team-bio.html +1 -0
  469. package/dist/spec/previews/layouts/testimonial-grid.html +1 -0
  470. package/dist/spec/previews/layouts/thank-you-cta.html +1 -0
  471. package/dist/spec/previews/layouts/three-column.html +1 -0
  472. package/dist/spec/previews/layouts/timeline.html +1 -0
  473. package/dist/spec/previews/layouts/title-slide.html +1 -0
  474. package/dist/spec/previews/layouts/two-column.html +1 -0
  475. package/dist/spec/previews/layouts/venn-overlap.html +1 -0
  476. package/dist/spec/previews/layouts/waterfall-bridge.html +1 -0
  477. package/dist/spec/previews/layouts/wheel-radial.html +1 -0
  478. package/dist/spec/reference/engine-defaults.json +35 -35
  479. package/dist/spec/schemas/audience.schema.json +156 -156
  480. package/dist/spec/schemas/chart-type.schema.json +537 -537
  481. package/dist/spec/schemas/color-scheme.schema.json +200 -200
  482. package/dist/spec/schemas/font-scheme.schema.json +174 -174
  483. package/dist/spec/schemas/language.schema.json +158 -158
  484. package/dist/spec/schemas/layout.schema.json +280 -280
  485. package/dist/spec/schemas/narrative.schema.json +207 -207
  486. package/dist/spec/schemas/opf.schema.json +2543 -2537
  487. package/dist/spec/schemas/purpose.schema.json +92 -92
  488. package/dist/spec/schemas/social-platform.schema.json +183 -184
  489. package/dist/spec/schemas/theme.schema.json +168 -168
  490. package/dist/spec/schemas/tone.schema.json +146 -146
  491. package/dist/spec-files.d.ts +2388 -0
  492. package/dist/spec-files.js +3349 -0
  493. package/dist/spec-files.js.map +1 -0
  494. package/dist/types.d.ts +5 -5
  495. package/dist/{validator-Be5EzqAt.d.ts → validator-MwlR2F56.d.ts} +22 -24
  496. package/dist/validator.d.ts +1 -1
  497. package/dist/validator.js +66 -48
  498. package/dist/validator.js.map +1 -1
  499. package/package.json +91 -80
@@ -1,537 +1,537 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://openpresentation.org/schema/opf-chart-type/v1",
4
- "title": "OPF Chart Type",
5
- "description": "Schema for chart-type records in the pptx.gallery catalog. Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, and a small sample dataset suitable for previews. Chart types are referenced from OPF chart content payloads; the engine resolves the reference against catalogs.chartTypes (inline) -> catalogs.chartTypes.source -> the default catalog at https://www.pptx.gallery/chart-types.",
6
- "type": "object",
7
- "additionalProperties": false,
8
- "required": [
9
- "$schema",
10
- "id",
11
- "name",
12
- "mappings"
13
- ],
14
- "properties": {
15
- "$schema": {
16
- "type": "string",
17
- "const": "https://openpresentation.org/schema/opf-chart-type/v1",
18
- "description": "Identifies this record as a chart type in the open presentation catalog."
19
- },
20
- "id": {
21
- "type": "string",
22
- "pattern": "^[a-z0-9][a-z0-9-]*$",
23
- "description": "Stable slug used by OPF documents to reference this chart type. Lowercase kebab-case. Chart type ids may start with a digit (e.g., '100pct-stacked-column', '3d-column') to mirror conventional chart naming.",
24
- "examples": [
25
- "column",
26
- "clustered-column",
27
- "stacked-column",
28
- "doughnut",
29
- "bullet-column",
30
- "100pct-stacked-column"
31
- ]
32
- },
33
- "name": {
34
- "type": "string",
35
- "description": "Stable display/programmatic name for this chart type.",
36
- "examples": [
37
- "COLUMN",
38
- "CLUSTERED_COLUMN",
39
- "DOUGHNUT",
40
- "BULLET_COLUMN"
41
- ]
42
- },
43
- "label": {
44
- "type": "string",
45
- "description": "Human-readable label shown in chart pickers.",
46
- "examples": [
47
- "Column",
48
- "Clustered Column",
49
- "Doughnut",
50
- "Bullet Column"
51
- ]
52
- },
53
- "summary": {
54
- "type": "string",
55
- "description": "One-sentence positioning: when to reach for this chart variant.",
56
- "examples": [
57
- "Single-series vertical column chart for comparing values across categories.",
58
- "Bullet chart that benchmarks one value against ranked threshold bands."
59
- ]
60
- },
61
- "description": {
62
- "type": "string",
63
- "description": "Longer prose describing the chart and ideal use cases.",
64
- "examples": [
65
- "Use a clustered column when you want to compare a small number of series across the same categories — e.g., revenue by quarter for two product lines. Best with 2–4 series and ≤12 categories."
66
- ]
67
- },
68
- "mappings": {
69
- "$ref": "#/$defs/ChartTypeMappings",
70
- "description": "Canonical and optional renderer-specific mappings used by engines to render this chart type."
71
- },
72
- "group": {
73
- "type": "string",
74
- "description": "Top-level grouping in the chart picker (column, bar, line, area, pie, radar, etc.).",
75
- "examples": [
76
- "Column",
77
- "Bar",
78
- "Line",
79
- "Area",
80
- "Pie",
81
- "Radar",
82
- "Histogram",
83
- "XY (Scatter)",
84
- "Treemap",
85
- "Bullet",
86
- "Sparkline",
87
- "Map",
88
- "Other"
89
- ]
90
- },
91
- "groupSort": {
92
- "type": "integer",
93
- "minimum": 0,
94
- "description": "Display ordering hint within the chart group.",
95
- "examples": [
96
- 1,
97
- 2,
98
- 10
99
- ]
100
- },
101
- "complexity": {
102
- "type": "string",
103
- "enum": [
104
- "simple",
105
- "calculated",
106
- "hierarchical",
107
- "normalized"
108
- ],
109
- "description": "Shape of the underlying data: a flat series ('simple'), one with engine-side calculation ('calculated'), parent-child rows ('hierarchical'), or pre-normalized rows ('normalized')."
110
- },
111
- "series": {
112
- "type": "integer",
113
- "minimum": 0,
114
- "description": "Number of data series this chart type expects.",
115
- "examples": [
116
- 1,
117
- 2,
118
- 3,
119
- 4
120
- ]
121
- },
122
- "categories": {
123
- "type": "integer",
124
- "minimum": 0,
125
- "description": "Number of category labels this chart type expects on the primary axis.",
126
- "examples": [
127
- 4,
128
- 6,
129
- 8,
130
- 12
131
- ]
132
- },
133
- "seriesGroups": {
134
- "type": "integer",
135
- "minimum": 1,
136
- "description": "Number of series groups (axis bands) this chart type uses; >1 for combo or banded charts.",
137
- "examples": [
138
- 1,
139
- 2,
140
- 3
141
- ]
142
- },
143
- "useSecondaryCategories": {
144
- "type": "boolean",
145
- "description": "Whether the chart type uses a secondary category axis.",
146
- "examples": [
147
- false,
148
- true
149
- ]
150
- },
151
- "workbookRange": {
152
- "type": "string",
153
- "description": "A1 reference to the source range in the embedded workbook.",
154
- "examples": [
155
- "Sheet1!$A$1:$I$2",
156
- "Sheet1!$A$1:$G$3"
157
- ]
158
- },
159
- "columns": {
160
- "type": "array",
161
- "items": {
162
- "type": "string"
163
- },
164
- "description": "Column header names of the embedded workbook, in left-to-right order.",
165
- "examples": [
166
- [
167
- "Series 1",
168
- "Value"
169
- ],
170
- [
171
- "Series 1",
172
- "Value 1",
173
- "Value 2"
174
- ]
175
- ]
176
- },
177
- "dataColumns": {
178
- "type": "array",
179
- "items": {
180
- "$ref": "#/$defs/ChartDataColumn"
181
- },
182
- "description": "Per-column metadata describing the role and position of each column in the workbook source.",
183
- "examples": [
184
- [
185
- {
186
- "name": "Series 1",
187
- "role": "categoryLabel",
188
- "type": "string",
189
- "position": "row0_col0"
190
- },
191
- {
192
- "name": "Value 1",
193
- "role": "series",
194
- "type": "number",
195
- "position": "row1_col0"
196
- },
197
- {
198
- "name": "Value 2",
199
- "role": "series",
200
- "type": "number",
201
- "position": "row2_col0"
202
- }
203
- ]
204
- ]
205
- },
206
- "helperColumns": {
207
- "type": "array",
208
- "items": {
209
- "type": "string"
210
- },
211
- "description": "Optional auxiliary column names used by calculated or banded charts (e.g., 'Excellent', 'Good', 'Fair', 'Poor' for a bullet chart).",
212
- "examples": [
213
- [
214
- "Excellent",
215
- "Good",
216
- "Fair",
217
- "Poor"
218
- ],
219
- [
220
- "Band"
221
- ]
222
- ]
223
- },
224
- "sampleData": {
225
- "$ref": "#/$defs/ChartSampleData",
226
- "description": "Inline sample dataset for previews and pickers.",
227
- "examples": [
228
- {
229
- "headers": [
230
- "Series 1",
231
- "Q1 2024",
232
- "Q2 2024",
233
- "Q3 2024",
234
- "Q4 2024"
235
- ],
236
- "rows": [
237
- [
238
- "Value",
239
- 93810,
240
- 24592,
241
- 13278,
242
- 46048
243
- ]
244
- ]
245
- }
246
- ]
247
- },
248
- "slideNumber": {
249
- "type": "integer",
250
- "minimum": 1,
251
- "description": "Source slide number in the original chart-gallery deck. Carried for traceability.",
252
- "examples": [
253
- 1,
254
- 2,
255
- 48
256
- ]
257
- },
258
- "tags": {
259
- "type": "array",
260
- "items": {
261
- "type": "string"
262
- },
263
- "description": "Free-form labels for filtering and search.",
264
- "examples": [
265
- [
266
- "column",
267
- "comparison"
268
- ],
269
- [
270
- "bullet",
271
- "kpi",
272
- "benchmark"
273
- ]
274
- ]
275
- },
276
- "preview": {
277
- "type": "object",
278
- "description": "Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.",
279
- "properties": {
280
- "src": {
281
- "type": "string",
282
- "format": "uri",
283
- "description": "Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.",
284
- "examples": [
285
- "https://www.pptx.gallery/chart-types/clustered-column.png"
286
- ]
287
- },
288
- "thumbnailSrc": {
289
- "type": "string",
290
- "format": "uri",
291
- "description": "Smaller thumbnail preview suited to dense grid views.",
292
- "examples": [
293
- "https://www.pptx.gallery/chart-types/clustered-column.thumbnail.png"
294
- ]
295
- },
296
- "vectorSrc": {
297
- "type": "string",
298
- "format": "uri",
299
- "description": "SVG / vector preview for crisp scaling at any size.",
300
- "examples": [
301
- "https://www.pptx.gallery/chart-types/clustered-column.svg"
302
- ]
303
- }
304
- }
305
- }
306
- },
307
- "$defs": {
308
- "ChartTypeMappings": {
309
- "type": "object",
310
- "additionalProperties": false,
311
- "required": [
312
- "openxml"
313
- ],
314
- "properties": {
315
- "openxml": {
316
- "$ref": "#/$defs/OpenXmlChartMapping",
317
- "description": "Canonical mapping to Open XML chart structures."
318
- },
319
- "renderers": {
320
- "type": "object",
321
- "description": "Optional renderer-specific mappings. Keys are renderer ids; values are intentionally opaque to OPF.",
322
- "additionalProperties": {
323
- "type": "object",
324
- "additionalProperties": true
325
- }
326
- }
327
- }
328
- },
329
- "OpenXmlChartMapping": {
330
- "type": "object",
331
- "additionalProperties": false,
332
- "properties": {
333
- "element": {
334
- "type": "string",
335
- "description": "Primary Open XML chart element or extension chart element, such as 'barChart', 'lineChart', 'pieChart', 'treemapChart', or 'waterfallChart'.",
336
- "examples": [
337
- "barChart",
338
- "lineChart",
339
- "pieChart"
340
- ]
341
- },
342
- "barDir": {
343
- "type": "string",
344
- "enum": [
345
- "bar",
346
- "col"
347
- ],
348
- "description": "Bar direction for Open XML barChart mappings."
349
- },
350
- "grouping": {
351
- "type": "string",
352
- "enum": [
353
- "standard",
354
- "clustered",
355
- "stacked",
356
- "percentStacked"
357
- ],
358
- "description": "Open XML chart grouping value when the chart family supports grouping."
359
- },
360
- "marker": {
361
- "type": "boolean",
362
- "description": "Whether the chart type expects visible data markers."
363
- },
364
- "radarStyle": {
365
- "type": "string",
366
- "enum": [
367
- "standard",
368
- "marker",
369
- "filled"
370
- ],
371
- "description": "Open XML radarStyle value for radarChart mappings."
372
- },
373
- "scatterStyle": {
374
- "type": "string",
375
- "enum": [
376
- "line",
377
- "lineMarker",
378
- "marker",
379
- "smooth",
380
- "smoothMarker"
381
- ],
382
- "description": "Open XML scatterStyle value for scatterChart mappings."
383
- },
384
- "composition": {
385
- "type": "string",
386
- "enum": [
387
- "single",
388
- "mixed",
389
- "extension"
390
- ],
391
- "description": "Whether the chart maps to one standard chart element, multiple combined chart elements, or an Open XML extension chart."
392
- },
393
- "extension": {
394
- "type": "string",
395
- "description": "Optional Open XML extension namespace or element hint for extension charts.",
396
- "examples": [
397
- "cx:treemapChart",
398
- "cx:waterfallChart"
399
- ]
400
- },
401
- "series": {
402
- "type": "array",
403
- "items": {
404
- "$ref": "#/$defs/OpenXmlChartMapping"
405
- },
406
- "description": "Open XML chart elements used by mixed/composite chart types."
407
- },
408
- "notes": {
409
- "type": "string",
410
- "description": "Short implementation note for mappings that need renderer interpretation."
411
- }
412
- }
413
- },
414
- "ChartDataColumn": {
415
- "type": "object",
416
- "description": "One column of the embedded chart workbook, annotated with its role and grid position.",
417
- "required": [
418
- "name",
419
- "role",
420
- "type"
421
- ],
422
- "properties": {
423
- "name": {
424
- "type": "string",
425
- "description": "Column header name (e.g. 'Series 1', 'Value', 'Level1', 'Level2').",
426
- "examples": [
427
- "Series 1",
428
- "Value",
429
- "Level1",
430
- "Level2"
431
- ]
432
- },
433
- "role": {
434
- "type": "string",
435
- "enum": [
436
- "categoryLabel",
437
- "series",
438
- "helper"
439
- ],
440
- "description": "Role this column plays: a category label (axis tick), a series (plotted values), or a helper (calculated/auxiliary)."
441
- },
442
- "type": {
443
- "type": "string",
444
- "enum": [
445
- "string",
446
- "number"
447
- ],
448
- "description": "Cell value type for the column."
449
- },
450
- "position": {
451
- "type": "string",
452
- "pattern": "^row[0-9]+_col[0-9]+$",
453
- "description": "Grid position of the column header in the source workbook, as 'row<N>_col<M>' (zero-indexed).",
454
- "examples": [
455
- "row0_col0",
456
- "row1_col0",
457
- "row2_col0"
458
- ]
459
- }
460
- }
461
- },
462
- "ChartSampleData": {
463
- "type": "object",
464
- "description": "Inline sample dataset for previews. Mirrors a small workbook with header row plus data rows.",
465
- "required": [
466
- "headers",
467
- "rows"
468
- ],
469
- "properties": {
470
- "headers": {
471
- "type": "array",
472
- "items": {
473
- "type": "string"
474
- },
475
- "description": "Header row labels. The first cell typically labels the series column; the rest are category labels.",
476
- "examples": [
477
- [
478
- "Series 1",
479
- "Q1 2024",
480
- "Q2 2024",
481
- "Q3 2024",
482
- "Q4 2024",
483
- "Q1 2025",
484
- "Q2 2025",
485
- "Q3 2025",
486
- "Q4 2025"
487
- ]
488
- ]
489
- },
490
- "rows": {
491
- "type": "array",
492
- "items": {
493
- "type": "array",
494
- "items": {
495
- "type": [
496
- "string",
497
- "number"
498
- ]
499
- }
500
- },
501
- "description": "Two-dimensional sample data. Each row aligns by index with the headers — first cell is the row label, remaining cells are values.",
502
- "examples": [
503
- [
504
- [
505
- "Value",
506
- 93810,
507
- 24592,
508
- 13278,
509
- 46048,
510
- 42098,
511
- 39256,
512
- 28289,
513
- 23434
514
- ]
515
- ],
516
- [
517
- [
518
- "Value 1",
519
- 98696,
520
- 81482,
521
- 21395,
522
- 87397
523
- ],
524
- [
525
- "Value 2",
526
- 38657,
527
- 40495,
528
- 76237,
529
- 88907
530
- ]
531
- ]
532
- ]
533
- }
534
- }
535
- }
536
- }
537
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openpresentation.org/schema/opf-chart-type/v1",
4
+ "title": "Chart Type",
5
+ "description": "Schema for chart-type records in the pptx.gallery catalog. Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, and a small sample dataset suitable for previews. Chart types are referenced from OPF chart content payloads; the engine resolves the reference against catalogs.chartTypes (inline) -> catalogs.chartTypes.source -> the default catalog at https://www.pptx.gallery/chart-types.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "$schema",
10
+ "id",
11
+ "name",
12
+ "mappings"
13
+ ],
14
+ "properties": {
15
+ "$schema": {
16
+ "type": "string",
17
+ "const": "https://openpresentation.org/schema/opf-chart-type/v1",
18
+ "description": "Identifies this record as a chart type in the open presentation catalog."
19
+ },
20
+ "id": {
21
+ "type": "string",
22
+ "pattern": "^[a-z0-9][a-z0-9-]*$",
23
+ "description": "Stable slug used by OPF documents to reference this chart type. Lowercase kebab-case. Chart type ids may start with a digit (e.g., '100pct-stacked-column', '3d-column') to mirror conventional chart naming.",
24
+ "examples": [
25
+ "column",
26
+ "clustered-column",
27
+ "stacked-column",
28
+ "doughnut",
29
+ "bullet-column",
30
+ "100pct-stacked-column"
31
+ ]
32
+ },
33
+ "name": {
34
+ "type": "string",
35
+ "description": "Stable display/programmatic name for this chart type.",
36
+ "examples": [
37
+ "COLUMN",
38
+ "CLUSTERED_COLUMN",
39
+ "DOUGHNUT",
40
+ "BULLET_COLUMN"
41
+ ]
42
+ },
43
+ "label": {
44
+ "type": "string",
45
+ "description": "Human-readable label shown in chart pickers.",
46
+ "examples": [
47
+ "Column",
48
+ "Clustered Column",
49
+ "Doughnut",
50
+ "Bullet Column"
51
+ ]
52
+ },
53
+ "summary": {
54
+ "type": "string",
55
+ "description": "One-sentence positioning: when to reach for this chart variant.",
56
+ "examples": [
57
+ "Single-series vertical column chart for comparing values across categories.",
58
+ "Bullet chart that benchmarks one value against ranked threshold bands."
59
+ ]
60
+ },
61
+ "description": {
62
+ "type": "string",
63
+ "description": "Longer prose describing the chart and ideal use cases.",
64
+ "examples": [
65
+ "Use a clustered column when you want to compare a small number of series across the same categories — e.g., revenue by quarter for two product lines. Best with 2–4 series and ≤12 categories."
66
+ ]
67
+ },
68
+ "mappings": {
69
+ "$ref": "#/$defs/ChartTypeMappings",
70
+ "description": "Canonical and optional renderer-specific mappings used by engines to render this chart type."
71
+ },
72
+ "group": {
73
+ "type": "string",
74
+ "description": "Top-level grouping in the chart picker (column, bar, line, area, pie, radar, etc.).",
75
+ "examples": [
76
+ "Column",
77
+ "Bar",
78
+ "Line",
79
+ "Area",
80
+ "Pie",
81
+ "Radar",
82
+ "Histogram",
83
+ "XY (Scatter)",
84
+ "Treemap",
85
+ "Bullet",
86
+ "Sparkline",
87
+ "Map",
88
+ "Other"
89
+ ]
90
+ },
91
+ "groupSort": {
92
+ "type": "integer",
93
+ "minimum": 0,
94
+ "description": "Display ordering hint within the chart group.",
95
+ "examples": [
96
+ 1,
97
+ 2,
98
+ 10
99
+ ]
100
+ },
101
+ "complexity": {
102
+ "type": "string",
103
+ "enum": [
104
+ "simple",
105
+ "calculated",
106
+ "hierarchical",
107
+ "normalized"
108
+ ],
109
+ "description": "Shape of the underlying data: a flat series ('simple'), one with engine-side calculation ('calculated'), parent-child rows ('hierarchical'), or pre-normalized rows ('normalized')."
110
+ },
111
+ "series": {
112
+ "type": "integer",
113
+ "minimum": 0,
114
+ "description": "Number of data series this chart type expects.",
115
+ "examples": [
116
+ 1,
117
+ 2,
118
+ 3,
119
+ 4
120
+ ]
121
+ },
122
+ "categories": {
123
+ "type": "integer",
124
+ "minimum": 0,
125
+ "description": "Number of category labels this chart type expects on the primary axis.",
126
+ "examples": [
127
+ 4,
128
+ 6,
129
+ 8,
130
+ 12
131
+ ]
132
+ },
133
+ "seriesGroups": {
134
+ "type": "integer",
135
+ "minimum": 1,
136
+ "description": "Number of series groups (axis bands) this chart type uses; >1 for combo or banded charts.",
137
+ "examples": [
138
+ 1,
139
+ 2,
140
+ 3
141
+ ]
142
+ },
143
+ "useSecondaryCategories": {
144
+ "type": "boolean",
145
+ "description": "Whether the chart type uses a secondary category axis.",
146
+ "examples": [
147
+ false,
148
+ true
149
+ ]
150
+ },
151
+ "workbookRange": {
152
+ "type": "string",
153
+ "description": "A1 reference to the source range in the embedded workbook.",
154
+ "examples": [
155
+ "Sheet1!$A$1:$I$2",
156
+ "Sheet1!$A$1:$G$3"
157
+ ]
158
+ },
159
+ "columns": {
160
+ "type": "array",
161
+ "items": {
162
+ "type": "string"
163
+ },
164
+ "description": "Column header names of the embedded workbook, in left-to-right order.",
165
+ "examples": [
166
+ [
167
+ "Series 1",
168
+ "Value"
169
+ ],
170
+ [
171
+ "Series 1",
172
+ "Value 1",
173
+ "Value 2"
174
+ ]
175
+ ]
176
+ },
177
+ "dataColumns": {
178
+ "type": "array",
179
+ "items": {
180
+ "$ref": "#/$defs/ChartDataColumn"
181
+ },
182
+ "description": "Per-column metadata describing the role and position of each column in the workbook source.",
183
+ "examples": [
184
+ [
185
+ {
186
+ "name": "Series 1",
187
+ "role": "categoryLabel",
188
+ "type": "string",
189
+ "position": "row0_col0"
190
+ },
191
+ {
192
+ "name": "Value 1",
193
+ "role": "series",
194
+ "type": "number",
195
+ "position": "row1_col0"
196
+ },
197
+ {
198
+ "name": "Value 2",
199
+ "role": "series",
200
+ "type": "number",
201
+ "position": "row2_col0"
202
+ }
203
+ ]
204
+ ]
205
+ },
206
+ "helperColumns": {
207
+ "type": "array",
208
+ "items": {
209
+ "type": "string"
210
+ },
211
+ "description": "Optional auxiliary column names used by calculated or banded charts (e.g., 'Excellent', 'Good', 'Fair', 'Poor' for a bullet chart).",
212
+ "examples": [
213
+ [
214
+ "Excellent",
215
+ "Good",
216
+ "Fair",
217
+ "Poor"
218
+ ],
219
+ [
220
+ "Band"
221
+ ]
222
+ ]
223
+ },
224
+ "sampleData": {
225
+ "$ref": "#/$defs/ChartSampleData",
226
+ "description": "Inline sample dataset for previews and pickers.",
227
+ "examples": [
228
+ {
229
+ "headers": [
230
+ "Series 1",
231
+ "Q1 2024",
232
+ "Q2 2024",
233
+ "Q3 2024",
234
+ "Q4 2024"
235
+ ],
236
+ "rows": [
237
+ [
238
+ "Value",
239
+ 93810,
240
+ 24592,
241
+ 13278,
242
+ 46048
243
+ ]
244
+ ]
245
+ }
246
+ ]
247
+ },
248
+ "slideNumber": {
249
+ "type": "integer",
250
+ "minimum": 1,
251
+ "description": "Source slide number in the original chart-gallery deck. Carried for traceability.",
252
+ "examples": [
253
+ 1,
254
+ 2,
255
+ 48
256
+ ]
257
+ },
258
+ "tags": {
259
+ "type": "array",
260
+ "items": {
261
+ "type": "string"
262
+ },
263
+ "description": "Free-form labels for filtering and search.",
264
+ "examples": [
265
+ [
266
+ "column",
267
+ "comparison"
268
+ ],
269
+ [
270
+ "bullet",
271
+ "kpi",
272
+ "benchmark"
273
+ ]
274
+ ]
275
+ },
276
+ "preview": {
277
+ "type": "object",
278
+ "description": "Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.",
279
+ "properties": {
280
+ "src": {
281
+ "type": "string",
282
+ "format": "uri",
283
+ "description": "Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.",
284
+ "examples": [
285
+ "https://www.pptx.gallery/chart-types/clustered-column.png"
286
+ ]
287
+ },
288
+ "thumbnailSrc": {
289
+ "type": "string",
290
+ "format": "uri",
291
+ "description": "Smaller thumbnail preview suited to dense grid views.",
292
+ "examples": [
293
+ "https://www.pptx.gallery/chart-types/clustered-column.thumbnail.png"
294
+ ]
295
+ },
296
+ "vectorSrc": {
297
+ "type": "string",
298
+ "format": "uri",
299
+ "description": "SVG / vector preview for crisp scaling at any size.",
300
+ "examples": [
301
+ "https://www.pptx.gallery/chart-types/clustered-column.svg"
302
+ ]
303
+ }
304
+ }
305
+ }
306
+ },
307
+ "$defs": {
308
+ "ChartTypeMappings": {
309
+ "type": "object",
310
+ "additionalProperties": false,
311
+ "required": [
312
+ "openxml"
313
+ ],
314
+ "properties": {
315
+ "openxml": {
316
+ "$ref": "#/$defs/OpenXmlChartMapping",
317
+ "description": "Canonical mapping to Open XML chart structures."
318
+ },
319
+ "renderers": {
320
+ "type": "object",
321
+ "description": "Optional renderer-specific mappings. Keys are renderer ids; values are intentionally opaque to OPF.",
322
+ "additionalProperties": {
323
+ "type": "object",
324
+ "additionalProperties": true
325
+ }
326
+ }
327
+ }
328
+ },
329
+ "OpenXmlChartMapping": {
330
+ "type": "object",
331
+ "additionalProperties": false,
332
+ "properties": {
333
+ "element": {
334
+ "type": "string",
335
+ "description": "Primary Open XML chart element or extension chart element, such as 'barChart', 'lineChart', 'pieChart', 'treemapChart', or 'waterfallChart'.",
336
+ "examples": [
337
+ "barChart",
338
+ "lineChart",
339
+ "pieChart"
340
+ ]
341
+ },
342
+ "barDir": {
343
+ "type": "string",
344
+ "enum": [
345
+ "bar",
346
+ "col"
347
+ ],
348
+ "description": "Bar direction for Open XML barChart mappings."
349
+ },
350
+ "grouping": {
351
+ "type": "string",
352
+ "enum": [
353
+ "standard",
354
+ "clustered",
355
+ "stacked",
356
+ "percentStacked"
357
+ ],
358
+ "description": "Open XML chart grouping value when the chart family supports grouping."
359
+ },
360
+ "marker": {
361
+ "type": "boolean",
362
+ "description": "Whether the chart type expects visible data markers."
363
+ },
364
+ "radarStyle": {
365
+ "type": "string",
366
+ "enum": [
367
+ "standard",
368
+ "marker",
369
+ "filled"
370
+ ],
371
+ "description": "Open XML radarStyle value for radarChart mappings."
372
+ },
373
+ "scatterStyle": {
374
+ "type": "string",
375
+ "enum": [
376
+ "line",
377
+ "lineMarker",
378
+ "marker",
379
+ "smooth",
380
+ "smoothMarker"
381
+ ],
382
+ "description": "Open XML scatterStyle value for scatterChart mappings."
383
+ },
384
+ "composition": {
385
+ "type": "string",
386
+ "enum": [
387
+ "single",
388
+ "mixed",
389
+ "extension"
390
+ ],
391
+ "description": "Whether the chart maps to one standard chart element, multiple combined chart elements, or an Open XML extension chart."
392
+ },
393
+ "extension": {
394
+ "type": "string",
395
+ "description": "Optional Open XML extension namespace or element hint for extension charts.",
396
+ "examples": [
397
+ "cx:treemapChart",
398
+ "cx:waterfallChart"
399
+ ]
400
+ },
401
+ "series": {
402
+ "type": "array",
403
+ "items": {
404
+ "$ref": "#/$defs/OpenXmlChartMapping"
405
+ },
406
+ "description": "Open XML chart elements used by mixed/composite chart types."
407
+ },
408
+ "notes": {
409
+ "type": "string",
410
+ "description": "Short implementation note for mappings that need renderer interpretation."
411
+ }
412
+ }
413
+ },
414
+ "ChartDataColumn": {
415
+ "type": "object",
416
+ "description": "One column of the embedded chart workbook, annotated with its role and grid position.",
417
+ "required": [
418
+ "name",
419
+ "role",
420
+ "type"
421
+ ],
422
+ "properties": {
423
+ "name": {
424
+ "type": "string",
425
+ "description": "Column header name (e.g. 'Series 1', 'Value', 'Level1', 'Level2').",
426
+ "examples": [
427
+ "Series 1",
428
+ "Value",
429
+ "Level1",
430
+ "Level2"
431
+ ]
432
+ },
433
+ "role": {
434
+ "type": "string",
435
+ "enum": [
436
+ "categoryLabel",
437
+ "series",
438
+ "helper"
439
+ ],
440
+ "description": "Role this column plays: a category label (axis tick), a series (plotted values), or a helper (calculated/auxiliary)."
441
+ },
442
+ "type": {
443
+ "type": "string",
444
+ "enum": [
445
+ "string",
446
+ "number"
447
+ ],
448
+ "description": "Cell value type for the column."
449
+ },
450
+ "position": {
451
+ "type": "string",
452
+ "pattern": "^row[0-9]+_col[0-9]+$",
453
+ "description": "Grid position of the column header in the source workbook, as 'row<N>_col<M>' (zero-indexed).",
454
+ "examples": [
455
+ "row0_col0",
456
+ "row1_col0",
457
+ "row2_col0"
458
+ ]
459
+ }
460
+ }
461
+ },
462
+ "ChartSampleData": {
463
+ "type": "object",
464
+ "description": "Inline sample dataset for previews. Mirrors a small workbook with header row plus data rows.",
465
+ "required": [
466
+ "headers",
467
+ "rows"
468
+ ],
469
+ "properties": {
470
+ "headers": {
471
+ "type": "array",
472
+ "items": {
473
+ "type": "string"
474
+ },
475
+ "description": "Header row labels. The first cell typically labels the series column; the rest are category labels.",
476
+ "examples": [
477
+ [
478
+ "Series 1",
479
+ "Q1 2024",
480
+ "Q2 2024",
481
+ "Q3 2024",
482
+ "Q4 2024",
483
+ "Q1 2025",
484
+ "Q2 2025",
485
+ "Q3 2025",
486
+ "Q4 2025"
487
+ ]
488
+ ]
489
+ },
490
+ "rows": {
491
+ "type": "array",
492
+ "items": {
493
+ "type": "array",
494
+ "items": {
495
+ "type": [
496
+ "string",
497
+ "number"
498
+ ]
499
+ }
500
+ },
501
+ "description": "Two-dimensional sample data. Each row aligns by index with the headers — first cell is the row label, remaining cells are values.",
502
+ "examples": [
503
+ [
504
+ [
505
+ "Value",
506
+ 93810,
507
+ 24592,
508
+ 13278,
509
+ 46048,
510
+ 42098,
511
+ 39256,
512
+ 28289,
513
+ 23434
514
+ ]
515
+ ],
516
+ [
517
+ [
518
+ "Value 1",
519
+ 98696,
520
+ 81482,
521
+ 21395,
522
+ 87397
523
+ ],
524
+ [
525
+ "Value 2",
526
+ 38657,
527
+ 40495,
528
+ 76237,
529
+ 88907
530
+ ]
531
+ ]
532
+ ]
533
+ }
534
+ }
535
+ }
536
+ }
537
+ }