@openpresentation/opf 0.10.1 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/dist/{catalogs-DoVmvDr7.d.ts → catalogs-DJ-B5ZyD.d.ts} +79 -9
  2. package/dist/catalogs.d.ts +2 -2
  3. package/dist/catalogs.js +1 -1
  4. package/dist/{chunk-PQJRDNA6.js → chunk-6UPHKXI5.js} +381 -34
  5. package/dist/{chunk-TU7I3KSB.js → chunk-7LF37SG3.js} +7400 -5422
  6. package/dist/{chunk-EWJNRHXA.js → chunk-BP6WMSSS.js} +3 -3
  7. package/dist/{chunk-FHGJX5QK.js → chunk-KWIOQ3QR.js} +73 -32
  8. package/dist/{chunk-D3GQIREP.js → chunk-LTSDDBNW.js} +558 -52
  9. package/dist/{chunk-ZIL7MGZU.js → chunk-M4GTWRK7.js} +333 -102
  10. package/dist/chunk-NPYN4TZ5.js +3516 -0
  11. package/dist/{chunk-RS5GZ5RW.js → chunk-SDETQV7Y.js} +161 -0
  12. package/dist/composition-DzLwY-Mi.d.ts +887 -0
  13. package/dist/composition.d.ts +1 -676
  14. package/dist/composition.js +1 -1
  15. package/dist/docs.js +80 -20
  16. package/dist/examples.d.ts +1 -1
  17. package/dist/examples.js +11 -11
  18. package/dist/font-policy.d.ts +123 -0
  19. package/dist/font-policy.js +1 -0
  20. package/dist/index.d.ts +184 -4
  21. package/dist/index.js +473 -7
  22. package/dist/lint.d.ts +3 -3
  23. package/dist/lint.js +5 -5
  24. package/dist/pagination.d.ts +6 -2
  25. package/dist/pagination.js +5 -5
  26. package/dist/{presentation-BMTdX6O1.d.ts → presentation-bceTClm8.d.ts} +297 -30
  27. package/dist/repo-readme.js +1 -1
  28. package/dist/{schemas-BYe5y8-i.d.ts → schemas-X_NniU4A.d.ts} +8 -0
  29. package/dist/schemas.d.ts +1 -1
  30. package/dist/schemas.js +1 -1
  31. package/dist/spec/catalogs/audiences/academic.json +24 -0
  32. package/dist/spec/catalogs/audiences/all-hands.json +3 -1
  33. package/dist/spec/catalogs/audiences/board.json +3 -1
  34. package/dist/spec/catalogs/audiences/customer.json +25 -0
  35. package/dist/spec/catalogs/audiences/executive.json +24 -0
  36. package/dist/spec/catalogs/audiences/general-public.json +25 -0
  37. package/dist/spec/catalogs/audiences/index.json +73 -1
  38. package/dist/spec/catalogs/audiences/internal-team.json +25 -0
  39. package/dist/spec/catalogs/audiences/investor.json +25 -0
  40. package/dist/spec/catalogs/audiences/marketing.json +25 -0
  41. package/dist/spec/catalogs/audiences/media.json +24 -0
  42. package/dist/spec/catalogs/audiences/partner.json +25 -0
  43. package/dist/spec/catalogs/audiences/regulatory.json +25 -0
  44. package/dist/spec/catalogs/audiences/sales.json +25 -0
  45. package/dist/spec/catalogs/audiences/technical.json +25 -0
  46. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +5 -0
  47. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +5 -0
  48. package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +5 -0
  49. package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +5 -0
  50. package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +5 -0
  51. package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +5 -0
  52. package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +10 -0
  53. package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +10 -0
  54. package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +6 -1
  55. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +10 -0
  56. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +6 -1
  57. package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +10 -0
  58. package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +6 -1
  59. package/dist/spec/catalogs/chart-types/area.json +5 -0
  60. package/dist/spec/catalogs/chart-types/australia.json +10 -0
  61. package/dist/spec/catalogs/chart-types/bar.json +5 -0
  62. package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +10 -0
  63. package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +10 -0
  64. package/dist/spec/catalogs/chart-types/box-and-whisker.json +5 -0
  65. package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +5 -0
  66. package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +5 -0
  67. package/dist/spec/catalogs/chart-types/bullet-bar.json +5 -0
  68. package/dist/spec/catalogs/chart-types/bullet-column-2x.json +5 -0
  69. package/dist/spec/catalogs/chart-types/bullet-column-3x.json +5 -0
  70. package/dist/spec/catalogs/chart-types/bullet-column.json +5 -0
  71. package/dist/spec/catalogs/chart-types/canada.json +10 -0
  72. package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +10 -0
  73. package/dist/spec/catalogs/chart-types/clustered-column.json +10 -0
  74. package/dist/spec/catalogs/chart-types/column.json +5 -0
  75. package/dist/spec/catalogs/chart-types/dot-plot-2x.json +5 -0
  76. package/dist/spec/catalogs/chart-types/dot-plot-3x.json +5 -0
  77. package/dist/spec/catalogs/chart-types/dot-plot-4x.json +5 -0
  78. package/dist/spec/catalogs/chart-types/dot-plot-5x.json +5 -0
  79. package/dist/spec/catalogs/chart-types/dot-plot-6x.json +5 -0
  80. package/dist/spec/catalogs/chart-types/dot-plot.json +5 -0
  81. package/dist/spec/catalogs/chart-types/doughnut.json +5 -0
  82. package/dist/spec/catalogs/chart-types/dumbbell.json +5 -0
  83. package/dist/spec/catalogs/chart-types/filled-radar.json +5 -0
  84. package/dist/spec/catalogs/chart-types/funnel.json +5 -0
  85. package/dist/spec/catalogs/chart-types/histogram.json +5 -0
  86. package/dist/spec/catalogs/chart-types/index.json +333 -233
  87. package/dist/spec/catalogs/chart-types/line-2x.json +10 -0
  88. package/dist/spec/catalogs/chart-types/line-3x.json +10 -0
  89. package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +5 -0
  90. package/dist/spec/catalogs/chart-types/line-with-high-low.json +5 -0
  91. package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +10 -0
  92. package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +10 -0
  93. package/dist/spec/catalogs/chart-types/line-with-markers.json +5 -0
  94. package/dist/spec/catalogs/chart-types/line.json +5 -0
  95. package/dist/spec/catalogs/chart-types/pareto.json +9 -14
  96. package/dist/spec/catalogs/chart-types/pie.json +5 -0
  97. package/dist/spec/catalogs/chart-types/radar-with-markers.json +5 -0
  98. package/dist/spec/catalogs/chart-types/radar.json +5 -0
  99. package/dist/spec/catalogs/chart-types/scatter.json +5 -0
  100. package/dist/spec/catalogs/chart-types/sparkline-2x.json +5 -0
  101. package/dist/spec/catalogs/chart-types/sparkline-3x.json +5 -0
  102. package/dist/spec/catalogs/chart-types/sparkline-4x.json +5 -0
  103. package/dist/spec/catalogs/chart-types/sparkline-5x.json +5 -0
  104. package/dist/spec/catalogs/chart-types/sparkline-6x.json +5 -0
  105. package/dist/spec/catalogs/chart-types/sparkline.json +5 -0
  106. package/dist/spec/catalogs/chart-types/stacked-area-2x.json +10 -0
  107. package/dist/spec/catalogs/chart-types/stacked-area-3x.json +6 -1
  108. package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +10 -0
  109. package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +6 -1
  110. package/dist/spec/catalogs/chart-types/stacked-column-2x.json +10 -0
  111. package/dist/spec/catalogs/chart-types/stacked-column-3x.json +6 -1
  112. package/dist/spec/catalogs/chart-types/stacked-line-2x.json +10 -0
  113. package/dist/spec/catalogs/chart-types/stacked-line-3x.json +6 -1
  114. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +10 -0
  115. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +6 -1
  116. package/dist/spec/catalogs/chart-types/treemap-2x.json +10 -0
  117. package/dist/spec/catalogs/chart-types/treemap-3x.json +10 -0
  118. package/dist/spec/catalogs/chart-types/treemap.json +5 -0
  119. package/dist/spec/catalogs/chart-types/united-kingdom.json +10 -0
  120. package/dist/spec/catalogs/chart-types/united-states.json +10 -0
  121. package/dist/spec/catalogs/chart-types/waterfall.json +5 -0
  122. package/dist/spec/catalogs/chart-types/world.json +6 -1
  123. package/dist/spec/catalogs/font-schemes/consolas.json +3 -0
  124. package/dist/spec/catalogs/font-schemes/courier-new.json +3 -0
  125. package/dist/spec/catalogs/languages/afrikaans.json +3 -0
  126. package/dist/spec/catalogs/languages/albanian.json +3 -0
  127. package/dist/spec/catalogs/languages/amharic.json +3 -0
  128. package/dist/spec/catalogs/languages/arabic.json +3 -0
  129. package/dist/spec/catalogs/languages/armenian.json +3 -0
  130. package/dist/spec/catalogs/languages/aymara.json +3 -0
  131. package/dist/spec/catalogs/languages/azerbaijani.json +3 -0
  132. package/dist/spec/catalogs/languages/bengali.json +3 -0
  133. package/dist/spec/catalogs/languages/berber-latin.json +3 -0
  134. package/dist/spec/catalogs/languages/bosnian-latin.json +3 -0
  135. package/dist/spec/catalogs/languages/bulgarian.json +3 -0
  136. package/dist/spec/catalogs/languages/catalan.json +3 -0
  137. package/dist/spec/catalogs/languages/cebuano.json +3 -0
  138. package/dist/spec/catalogs/languages/chinese-simplified.json +3 -0
  139. package/dist/spec/catalogs/languages/chinese-traditional.json +3 -0
  140. package/dist/spec/catalogs/languages/chittagonian.json +3 -0
  141. package/dist/spec/catalogs/languages/croatian.json +3 -0
  142. package/dist/spec/catalogs/languages/czech.json +3 -0
  143. package/dist/spec/catalogs/languages/danish.json +3 -0
  144. package/dist/spec/catalogs/languages/dutch.json +3 -0
  145. package/dist/spec/catalogs/languages/english-au.json +3 -0
  146. package/dist/spec/catalogs/languages/english-ca.json +3 -0
  147. package/dist/spec/catalogs/languages/english-gb.json +3 -0
  148. package/dist/spec/catalogs/languages/english-in.json +3 -0
  149. package/dist/spec/catalogs/languages/english-us.json +3 -0
  150. package/dist/spec/catalogs/languages/english.json +3 -0
  151. package/dist/spec/catalogs/languages/estonian.json +3 -0
  152. package/dist/spec/catalogs/languages/filipino.json +3 -0
  153. package/dist/spec/catalogs/languages/finnish.json +3 -0
  154. package/dist/spec/catalogs/languages/french.json +3 -0
  155. package/dist/spec/catalogs/languages/fulfulde.json +3 -0
  156. package/dist/spec/catalogs/languages/galician.json +3 -0
  157. package/dist/spec/catalogs/languages/georgian.json +3 -0
  158. package/dist/spec/catalogs/languages/german.json +3 -0
  159. package/dist/spec/catalogs/languages/greek.json +3 -0
  160. package/dist/spec/catalogs/languages/gujarati.json +3 -0
  161. package/dist/spec/catalogs/languages/hausa.json +3 -0
  162. package/dist/spec/catalogs/languages/hebrew.json +3 -0
  163. package/dist/spec/catalogs/languages/hindi.json +3 -0
  164. package/dist/spec/catalogs/languages/hungarian.json +3 -0
  165. package/dist/spec/catalogs/languages/igbo.json +3 -0
  166. package/dist/spec/catalogs/languages/indonesian.json +3 -0
  167. package/dist/spec/catalogs/languages/italian.json +3 -0
  168. package/dist/spec/catalogs/languages/japanese.json +3 -0
  169. package/dist/spec/catalogs/languages/kannada.json +3 -0
  170. package/dist/spec/catalogs/languages/kazakh.json +3 -0
  171. package/dist/spec/catalogs/languages/khmer.json +3 -0
  172. package/dist/spec/catalogs/languages/kinyarwanda.json +3 -0
  173. package/dist/spec/catalogs/languages/korean.json +3 -0
  174. package/dist/spec/catalogs/languages/kurmanji.json +3 -0
  175. package/dist/spec/catalogs/languages/latvian.json +3 -0
  176. package/dist/spec/catalogs/languages/lithuanian.json +3 -0
  177. package/dist/spec/catalogs/languages/macedonian.json +3 -0
  178. package/dist/spec/catalogs/languages/malagasy.json +3 -0
  179. package/dist/spec/catalogs/languages/malay.json +3 -0
  180. package/dist/spec/catalogs/languages/malayalam.json +3 -0
  181. package/dist/spec/catalogs/languages/maori.json +3 -0
  182. package/dist/spec/catalogs/languages/marathi.json +3 -0
  183. package/dist/spec/catalogs/languages/mongolian.json +3 -0
  184. package/dist/spec/catalogs/languages/nepali.json +3 -0
  185. package/dist/spec/catalogs/languages/norwegian.json +3 -0
  186. package/dist/spec/catalogs/languages/odia.json +3 -0
  187. package/dist/spec/catalogs/languages/oromo.json +3 -0
  188. package/dist/spec/catalogs/languages/pashto.json +3 -0
  189. package/dist/spec/catalogs/languages/persian.json +3 -0
  190. package/dist/spec/catalogs/languages/polish.json +3 -0
  191. package/dist/spec/catalogs/languages/portuguese.json +3 -0
  192. package/dist/spec/catalogs/languages/punjabi-gurmukhi.json +3 -0
  193. package/dist/spec/catalogs/languages/punjabi-shahmukhi.json +3 -0
  194. package/dist/spec/catalogs/languages/romanian.json +3 -0
  195. package/dist/spec/catalogs/languages/russian.json +3 -0
  196. package/dist/spec/catalogs/languages/serbian-cyrillic.json +3 -0
  197. package/dist/spec/catalogs/languages/serbian-latin.json +3 -0
  198. package/dist/spec/catalogs/languages/shona.json +3 -0
  199. package/dist/spec/catalogs/languages/slovak.json +3 -0
  200. package/dist/spec/catalogs/languages/slovenian.json +3 -0
  201. package/dist/spec/catalogs/languages/somali.json +3 -0
  202. package/dist/spec/catalogs/languages/spanish.json +3 -0
  203. package/dist/spec/catalogs/languages/swahili.json +3 -0
  204. package/dist/spec/catalogs/languages/swedish.json +3 -0
  205. package/dist/spec/catalogs/languages/tagalog.json +3 -0
  206. package/dist/spec/catalogs/languages/tajik.json +3 -0
  207. package/dist/spec/catalogs/languages/tamil.json +3 -0
  208. package/dist/spec/catalogs/languages/telugu.json +3 -0
  209. package/dist/spec/catalogs/languages/thai.json +3 -0
  210. package/dist/spec/catalogs/languages/turkish.json +3 -0
  211. package/dist/spec/catalogs/languages/ukrainian.json +3 -0
  212. package/dist/spec/catalogs/languages/urdu.json +3 -0
  213. package/dist/spec/catalogs/languages/uzbek-latin.json +3 -0
  214. package/dist/spec/catalogs/languages/vietnamese-quoc-ngu.json +3 -0
  215. package/dist/spec/catalogs/languages/xhosa.json +3 -0
  216. package/dist/spec/catalogs/languages/yoruba.json +3 -0
  217. package/dist/spec/catalogs/languages/zulu.json +3 -0
  218. package/dist/spec/catalogs/narratives/board-meeting.json +21 -21
  219. package/dist/spec/catalogs/narratives/business-narrative.json +8 -8
  220. package/dist/spec/catalogs/narratives/business-review.json +12 -12
  221. package/dist/spec/catalogs/narratives/capacity-planning.json +8 -8
  222. package/dist/spec/catalogs/narratives/challenge-resolution.json +7 -7
  223. package/dist/spec/catalogs/narratives/change-story.json +64 -0
  224. package/dist/spec/catalogs/narratives/classic-story.json +7 -7
  225. package/dist/spec/catalogs/narratives/company-intro.json +9 -9
  226. package/dist/spec/catalogs/narratives/conference-talk.json +1 -1
  227. package/dist/spec/catalogs/narratives/data-story.json +66 -0
  228. package/dist/spec/catalogs/narratives/early-startup-pitch.json +12 -12
  229. package/dist/spec/catalogs/narratives/educate.json +9 -9
  230. package/dist/spec/catalogs/narratives/employee-review.json +8 -8
  231. package/dist/spec/catalogs/narratives/failure-analysis.json +10 -10
  232. package/dist/spec/catalogs/narratives/focus.json +12 -12
  233. package/dist/spec/catalogs/narratives/golden-circle.json +1 -1
  234. package/dist/spec/catalogs/narratives/heros-journey.json +64 -0
  235. package/dist/spec/catalogs/narratives/index.json +81 -0
  236. package/dist/spec/catalogs/narratives/innovation.json +9 -9
  237. package/dist/spec/catalogs/narratives/justice.json +11 -11
  238. package/dist/spec/catalogs/narratives/marketing-strategy.json +11 -11
  239. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +8 -8
  240. package/dist/spec/catalogs/narratives/performance-review.json +11 -11
  241. package/dist/spec/catalogs/narratives/persuade.json +7 -7
  242. package/dist/spec/catalogs/narratives/persuasive-sales.json +8 -8
  243. package/dist/spec/catalogs/narratives/pitch-deck.json +3 -3
  244. package/dist/spec/catalogs/narratives/problem-solution.json +2 -2
  245. package/dist/spec/catalogs/narratives/product-launch.json +10 -10
  246. package/dist/spec/catalogs/narratives/project-proposal.json +10 -10
  247. package/dist/spec/catalogs/narratives/pyramid-principle.json +48 -0
  248. package/dist/spec/catalogs/narratives/qbr.json +3 -3
  249. package/dist/spec/catalogs/narratives/rags-to-riches.json +7 -7
  250. package/dist/spec/catalogs/narratives/reveal.json +8 -8
  251. package/dist/spec/catalogs/narratives/scqa.json +1 -1
  252. package/dist/spec/catalogs/narratives/situation-complication-resolution.json +56 -0
  253. package/dist/spec/catalogs/narratives/sparkline.json +56 -0
  254. package/dist/spec/catalogs/narratives/star-method.json +56 -0
  255. package/dist/spec/catalogs/narratives/status-update.json +6 -6
  256. package/dist/spec/catalogs/narratives/strategic-advisory.json +7 -7
  257. package/dist/spec/catalogs/narratives/strategic-narrative.json +1 -1
  258. package/dist/spec/catalogs/narratives/survey-analysis.json +10 -10
  259. package/dist/spec/catalogs/narratives/survival-story.json +10 -10
  260. package/dist/spec/catalogs/narratives/transformation-arc.json +1 -1
  261. package/dist/spec/catalogs/narratives/trend-analysis.json +7 -7
  262. package/dist/spec/catalogs/narratives/underdog-victory.json +8 -8
  263. package/dist/spec/catalogs/narratives/venture-pitch.json +12 -12
  264. package/dist/spec/catalogs/narratives/vision-roadmap.json +65 -0
  265. package/dist/spec/catalogs/narratives/weekly-progress.json +10 -10
  266. package/dist/spec/catalogs/narratives/what-so-what-now-what.json +48 -0
  267. package/dist/spec/openapi.yaml +5 -0
  268. package/dist/spec/reference/engine-defaults.json +2 -2
  269. package/dist/spec/reference/font-policy.json +3435 -0
  270. package/dist/spec/reference/font-policy.schema.json +328 -0
  271. package/dist/spec/schemas/chart-type.schema.json +51 -11
  272. package/dist/spec/schemas/font-scheme.schema.json +91 -1
  273. package/dist/spec/schemas/language.schema.json +10 -5
  274. package/dist/spec/schemas/opf.schema.json +241 -32
  275. package/dist/spec-files.d.ts +1 -1
  276. package/dist/spec-files.js +1 -1
  277. package/dist/types.d.ts +3 -3
  278. package/dist/validator.d.ts +7 -4
  279. package/dist/validator.js +4 -4
  280. package/package.json +6 -2
@@ -1,9 +1,89 @@
1
- import { MAX_COMPOSITION_DEPTH, tableGrid } from './chunk-PQJRDNA6.js';
2
- import { schemas, schemaEntries } from './chunk-D3GQIREP.js';
3
- import { catalogSchemaNames } from './chunk-TU7I3KSB.js';
1
+ import { MAX_COMPOSITION_DEPTH, tableGrid } from './chunk-6UPHKXI5.js';
2
+ import { schemas, schemaEntries } from './chunk-LTSDDBNW.js';
3
+ import { catalogSchemaNames } from './chunk-7LF37SG3.js';
4
4
  import Ajv2020 from 'ajv/dist/2020.js';
5
5
  import addFormats from 'ajv-formats';
6
6
 
7
+ // src/content-walk.ts
8
+ function isRecord(value) {
9
+ return typeof value === "object" && value !== null && !Array.isArray(value);
10
+ }
11
+ function pathFor(parentPath, key) {
12
+ return parentPath === "/" ? `/${key}` : `${parentPath}/${key.replaceAll("~", "~0").replaceAll("/", "~1")}`;
13
+ }
14
+ var bareIdPattern = /^[a-z0-9][a-z0-9-]*$/;
15
+ var promotedRegionKeys = [
16
+ "left",
17
+ "center",
18
+ "right",
19
+ "left+center",
20
+ "center+right",
21
+ "left+center+right",
22
+ "top",
23
+ "middle",
24
+ "bottom",
25
+ "top+middle",
26
+ "middle+bottom",
27
+ "top+middle+bottom",
28
+ "top:left",
29
+ "top:center",
30
+ "top:right",
31
+ "top:left+center",
32
+ "top:center+right",
33
+ "top:left+center+right",
34
+ "middle:left",
35
+ "middle:center",
36
+ "middle:right",
37
+ "middle:left+center",
38
+ "middle:center+right",
39
+ "middle:left+center+right",
40
+ "bottom:left",
41
+ "bottom:center",
42
+ "bottom:right",
43
+ "bottom:left+center",
44
+ "bottom:center+right",
45
+ "bottom:left+center+right",
46
+ "top+middle:left",
47
+ "top+middle:center",
48
+ "top+middle:right",
49
+ "top+middle:left+center",
50
+ "top+middle:center+right",
51
+ "top+middle:left+center+right",
52
+ "middle+bottom:left",
53
+ "middle+bottom:center",
54
+ "middle+bottom:right",
55
+ "middle+bottom:left+center",
56
+ "middle+bottom:center+right",
57
+ "middle+bottom:left+center+right",
58
+ "top+middle+bottom:left",
59
+ "top+middle+bottom:center",
60
+ "top+middle+bottom:right",
61
+ "top+middle+bottom:left+center",
62
+ "top+middle+bottom:center+right",
63
+ "top+middle+bottom:left+center+right"
64
+ ];
65
+ function visitContentPayloads(slide, slidePath, visit) {
66
+ const walk = (payload, path, depth, ancestors) => {
67
+ visit(payload, path);
68
+ if (!Array.isArray(payload.blocks) || depth >= MAX_COMPOSITION_DEPTH || ancestors.includes(payload)) return;
69
+ const nested = [...ancestors, payload];
70
+ const blocksPath = pathFor(path, "blocks");
71
+ payload.blocks.forEach((block, index) => {
72
+ if (isRecord(block)) walk(block, `${blocksPath}/${index}`, depth + 1, nested);
73
+ });
74
+ };
75
+ if (Array.isArray(slide.blocks)) {
76
+ const blocksPath = pathFor(slidePath, "blocks");
77
+ slide.blocks.forEach((block, index) => {
78
+ if (isRecord(block)) walk(block, `${blocksPath}/${index}`, 0, []);
79
+ });
80
+ }
81
+ for (const key of promotedRegionKeys) {
82
+ const region = slide[key];
83
+ if (isRecord(region)) walk(region, pathFor(slidePath, key), 0, []);
84
+ }
85
+ }
86
+
7
87
  // src/generated/catalog-ids.ts
8
88
  var catalogIds = {
9
89
  audiences: [
@@ -16,7 +96,19 @@ var catalogIds = {
16
96
  "marketing-team",
17
97
  "all-hands",
18
98
  "candidates",
19
- "regulators"
99
+ "regulators",
100
+ "executive",
101
+ "investor",
102
+ "technical",
103
+ "sales",
104
+ "marketing",
105
+ "academic",
106
+ "internal-team",
107
+ "customer",
108
+ "general-public",
109
+ "media",
110
+ "partner",
111
+ "regulatory"
20
112
  ],
21
113
  purposes: [
22
114
  "inform",
@@ -77,6 +169,32 @@ var catalogIds = {
77
169
  "title-subtitle"
78
170
  ],
79
171
  chartTypes: [
172
+ "100pct-stacked-area-3x",
173
+ "100pct-stacked-bar-3x",
174
+ "100pct-stacked-column-3x",
175
+ "area",
176
+ "bar",
177
+ "box-and-whisker",
178
+ "column",
179
+ "doughnut",
180
+ "filled-radar",
181
+ "funnel",
182
+ "histogram",
183
+ "line",
184
+ "line-with-markers",
185
+ "pareto",
186
+ "pie",
187
+ "radar",
188
+ "radar-with-markers",
189
+ "scatter",
190
+ "stacked-area-3x",
191
+ "stacked-bar-3x",
192
+ "stacked-column-3x",
193
+ "stacked-line-3x",
194
+ "stacked-line-with-markers-3x",
195
+ "treemap",
196
+ "waterfall",
197
+ "world",
80
198
  "100pct-bullet-bar",
81
199
  "100pct-bullet-bar-2x",
82
200
  "100pct-bullet-bar-3x",
@@ -85,15 +203,9 @@ var catalogIds = {
85
203
  "100pct-bullet-column-3x",
86
204
  "100pct-progress-bar",
87
205
  "100pct-stacked-area-2x",
88
- "100pct-stacked-area-3x",
89
206
  "100pct-stacked-bar-2x",
90
- "100pct-stacked-bar-3x",
91
207
  "100pct-stacked-column-2x",
92
- "100pct-stacked-column-3x",
93
- "area",
94
208
  "australia",
95
- "bar",
96
- "box-and-whisker",
97
209
  "box-and-whisker-2x",
98
210
  "box-and-whisker-3x",
99
211
  "bullet-bar",
@@ -105,31 +217,19 @@ var catalogIds = {
105
217
  "canada",
106
218
  "clustered-bar-2x",
107
219
  "clustered-column",
108
- "column",
109
220
  "dot-plot",
110
221
  "dot-plot-2x",
111
222
  "dot-plot-3x",
112
223
  "dot-plot-4x",
113
224
  "dot-plot-5x",
114
225
  "dot-plot-6x",
115
- "doughnut",
116
226
  "dumbbell",
117
- "filled-radar",
118
- "funnel",
119
- "histogram",
120
- "line",
121
227
  "line-2x",
122
228
  "line-3x",
123
229
  "line-with-high-low",
124
230
  "line-with-high-low-and-markers",
125
- "line-with-markers",
126
231
  "line-with-markers-2x",
127
232
  "line-with-markers-3x",
128
- "pareto",
129
- "pie",
130
- "radar",
131
- "radar-with-markers",
132
- "scatter",
133
233
  "sparkline",
134
234
  "sparkline-2x",
135
235
  "sparkline-3x",
@@ -137,26 +237,21 @@ var catalogIds = {
137
237
  "sparkline-5x",
138
238
  "sparkline-6x",
139
239
  "stacked-area-2x",
140
- "stacked-area-3x",
141
240
  "stacked-bar-2x",
142
- "stacked-bar-3x",
143
241
  "stacked-column-2x",
144
- "stacked-column-3x",
145
242
  "stacked-line-2x",
146
- "stacked-line-3x",
147
243
  "stacked-line-with-markers-2x",
148
- "stacked-line-with-markers-3x",
149
- "treemap",
150
244
  "treemap-2x",
151
245
  "treemap-3x",
152
246
  "united-kingdom",
153
- "united-states",
154
- "waterfall",
155
- "world"
247
+ "united-states"
156
248
  ],
157
249
  narratives: [
158
250
  "problem-solution",
159
251
  "scqa",
252
+ "pyramid-principle",
253
+ "situation-complication-resolution",
254
+ "what-so-what-now-what",
160
255
  "strategic-narrative",
161
256
  "golden-circle",
162
257
  "conference-talk",
@@ -165,15 +260,20 @@ var catalogIds = {
165
260
  "early-startup-pitch",
166
261
  "venture-pitch",
167
262
  "persuasive-sales",
263
+ "sparkline",
168
264
  "company-intro",
169
265
  "marketing-strategy",
170
266
  "product-launch",
171
267
  "strategic-advisory",
172
268
  "challenge-resolution",
173
269
  "project-proposal",
270
+ "vision-roadmap",
174
271
  "failure-analysis",
272
+ "star-method",
175
273
  "classic-story",
274
+ "heros-journey",
176
275
  "business-narrative",
276
+ "change-story",
177
277
  "rags-to-riches",
178
278
  "underdog-victory",
179
279
  "survival-story",
@@ -191,6 +291,7 @@ var catalogIds = {
191
291
  "performance-review",
192
292
  "survey-analysis",
193
293
  "trend-analysis",
294
+ "data-story",
194
295
  "employee-review",
195
296
  "performance-improvement-plan",
196
297
  "capacity-planning"
@@ -410,6 +511,58 @@ var catalogIds = {
410
511
  "yu-gothic"
411
512
  ]
412
513
  };
514
+ var deprecatedCatalogIds = {
515
+ "chartTypes/100pct-bullet-bar": "100pct-stacked-bar-3x",
516
+ "chartTypes/100pct-bullet-bar-2x": "100pct-stacked-bar-3x",
517
+ "chartTypes/100pct-bullet-bar-3x": "100pct-stacked-bar-3x",
518
+ "chartTypes/100pct-bullet-column": "100pct-stacked-column-3x",
519
+ "chartTypes/100pct-bullet-column-2x": "100pct-stacked-column-3x",
520
+ "chartTypes/100pct-bullet-column-3x": "100pct-stacked-column-3x",
521
+ "chartTypes/100pct-progress-bar": "100pct-stacked-bar-3x",
522
+ "chartTypes/100pct-stacked-area-2x": "100pct-stacked-area-3x",
523
+ "chartTypes/100pct-stacked-bar-2x": "100pct-stacked-bar-3x",
524
+ "chartTypes/100pct-stacked-column-2x": "100pct-stacked-column-3x",
525
+ "chartTypes/australia": "world",
526
+ "chartTypes/box-and-whisker-2x": "box-and-whisker",
527
+ "chartTypes/box-and-whisker-3x": "box-and-whisker",
528
+ "chartTypes/bullet-bar": "bar",
529
+ "chartTypes/bullet-bar-2x": "bar",
530
+ "chartTypes/bullet-bar-3x": "bar",
531
+ "chartTypes/bullet-column": "column",
532
+ "chartTypes/bullet-column-2x": "column",
533
+ "chartTypes/bullet-column-3x": "column",
534
+ "chartTypes/canada": "world",
535
+ "chartTypes/clustered-bar-2x": "bar",
536
+ "chartTypes/clustered-column": "column",
537
+ "chartTypes/dot-plot": "scatter",
538
+ "chartTypes/dot-plot-2x": "scatter",
539
+ "chartTypes/dot-plot-3x": "scatter",
540
+ "chartTypes/dot-plot-4x": "scatter",
541
+ "chartTypes/dot-plot-5x": "scatter",
542
+ "chartTypes/dot-plot-6x": "scatter",
543
+ "chartTypes/dumbbell": "scatter",
544
+ "chartTypes/line-2x": "line",
545
+ "chartTypes/line-3x": "line",
546
+ "chartTypes/line-with-high-low": "line",
547
+ "chartTypes/line-with-high-low-and-markers": "line-with-markers",
548
+ "chartTypes/line-with-markers-2x": "line-with-markers",
549
+ "chartTypes/line-with-markers-3x": "line-with-markers",
550
+ "chartTypes/sparkline": "line",
551
+ "chartTypes/sparkline-2x": "line",
552
+ "chartTypes/sparkline-3x": "line",
553
+ "chartTypes/sparkline-4x": "line",
554
+ "chartTypes/sparkline-5x": "line",
555
+ "chartTypes/sparkline-6x": "line",
556
+ "chartTypes/stacked-area-2x": "stacked-area-3x",
557
+ "chartTypes/stacked-bar-2x": "stacked-bar-3x",
558
+ "chartTypes/stacked-column-2x": "stacked-column-3x",
559
+ "chartTypes/stacked-line-2x": "stacked-line-3x",
560
+ "chartTypes/stacked-line-with-markers-2x": "stacked-line-with-markers-3x",
561
+ "chartTypes/treemap-2x": "treemap",
562
+ "chartTypes/treemap-3x": "treemap",
563
+ "chartTypes/united-kingdom": "world",
564
+ "chartTypes/united-states": "world"
565
+ };
413
566
 
414
567
  // src/validation-definitions.ts
415
568
  var schemaLocations;
@@ -466,56 +619,6 @@ var OPFValidationError = class extends Error {
466
619
  var schemaNameByCatalogKind = catalogSchemaNames;
467
620
  var ajv;
468
621
  var dynamicSchemaCache = /* @__PURE__ */ new WeakMap();
469
- var promotedRegionKeys = [
470
- "left",
471
- "center",
472
- "right",
473
- "left+center",
474
- "center+right",
475
- "left+center+right",
476
- "top",
477
- "middle",
478
- "bottom",
479
- "top+middle",
480
- "middle+bottom",
481
- "top+middle+bottom",
482
- "top:left",
483
- "top:center",
484
- "top:right",
485
- "top:left+center",
486
- "top:center+right",
487
- "top:left+center+right",
488
- "middle:left",
489
- "middle:center",
490
- "middle:right",
491
- "middle:left+center",
492
- "middle:center+right",
493
- "middle:left+center+right",
494
- "bottom:left",
495
- "bottom:center",
496
- "bottom:right",
497
- "bottom:left+center",
498
- "bottom:center+right",
499
- "bottom:left+center+right",
500
- "top+middle:left",
501
- "top+middle:center",
502
- "top+middle:right",
503
- "top+middle:left+center",
504
- "top+middle:center+right",
505
- "top+middle:left+center+right",
506
- "middle+bottom:left",
507
- "middle+bottom:center",
508
- "middle+bottom:right",
509
- "middle+bottom:left+center",
510
- "middle+bottom:center+right",
511
- "middle+bottom:left+center+right",
512
- "top+middle+bottom:left",
513
- "top+middle+bottom:center",
514
- "top+middle+bottom:right",
515
- "top+middle+bottom:left+center",
516
- "top+middle+bottom:center+right",
517
- "top+middle+bottom:left+center+right"
518
- ];
519
622
  var promotedRegionKeySet = new Set(promotedRegionKeys);
520
623
  var rootPayloadFields = [
521
624
  "type",
@@ -655,18 +758,12 @@ function semanticIssue(path, message, params = {}) {
655
758
  params
656
759
  };
657
760
  }
658
- function isRecord(value) {
659
- return typeof value === "object" && value !== null && !Array.isArray(value);
660
- }
661
761
  function hasOwn(value, key) {
662
762
  return Object.hasOwn(value, key);
663
763
  }
664
764
  function isEnUkTag(value) {
665
765
  return typeof value === "string" && value.toLowerCase() === "en-uk";
666
766
  }
667
- function pathFor(parentPath, key) {
668
- return parentPath === "/" ? `/${key}` : `${parentPath}/${key.replaceAll("~", "~0").replaceAll("/", "~1")}`;
669
- }
670
767
  function presentFields(value, fields) {
671
768
  return fields.filter((field) => hasOwn(value, field));
672
769
  }
@@ -839,27 +936,32 @@ function validatePresentationSemantics(value) {
839
936
  replacement: "en-GB"
840
937
  }));
841
938
  }
842
- const slideIds = /* @__PURE__ */ new Set();
939
+ const documentIds = /* @__PURE__ */ new Map();
843
940
  value.slides.forEach((slide, index) => {
844
941
  if (isRecord(slide)) {
942
+ const slidePath = `/slides/${index}`;
845
943
  if (typeof slide.id === "string") {
846
- if (slideIds.has(slide.id)) issues.push(semanticIssue(`/slides/${index}/id`, "slide ids must be unique within a presentation", { id: slide.id }));
847
- slideIds.add(slide.id);
944
+ const seen = documentIds.get(slide.id);
945
+ if (seen === "slide") issues.push(semanticIssue(`${slidePath}/id`, "slide ids must be unique within a presentation", { id: slide.id }));
946
+ else if (seen === "payload") issues.push(semanticIssue(`${slidePath}/id`, "slide id duplicates a content payload id; ids must be unique among slide and payload ids within a presentation", { id: slide.id }));
947
+ else documentIds.set(slide.id, "slide");
848
948
  }
849
- issues.push(...validateSlideRegions(slide, `/slides/${index}`));
850
- const visitTables = (node, path) => {
851
- if (isRecord(node.table)) for (const issue of tableGrid(node.table).issues) issues.push(semanticIssue(pathFor(path, "table") + issue.path.slice(5).replaceAll(".", "/"), issue.message));
852
- if (Array.isArray(node.blocks)) node.blocks.forEach((block, i) => {
853
- if (isRecord(block)) visitTables(block, `${path}/blocks/${i}`);
854
- });
855
- for (const key of promotedRegionKeys) if (isRecord(node[key])) visitTables(node[key], pathFor(path, key));
949
+ visitContentPayloads(slide, slidePath, (payload, path) => {
950
+ if (typeof payload.id === "string") {
951
+ if (documentIds.has(payload.id)) issues.push(semanticIssue(`${path}/id`, "content payload ids must be unique among slide and payload ids within a presentation", { id: payload.id }));
952
+ else documentIds.set(payload.id, "payload");
953
+ }
954
+ });
955
+ issues.push(...validateSlideRegions(slide, slidePath));
956
+ const payloadTableIssues = (payload, path) => {
957
+ if (isRecord(payload.table)) for (const issue of tableGrid(payload.table).issues) issues.push(semanticIssue(pathFor(path, "table") + issue.path.slice(5).replaceAll(".", "/"), issue.message));
856
958
  };
857
- visitTables(slide, `/slides/${index}`);
959
+ payloadTableIssues(slide, slidePath);
960
+ visitContentPayloads(slide, slidePath, payloadTableIssues);
858
961
  }
859
962
  });
860
963
  return issues;
861
964
  }
862
- var bareIdPattern = /^[a-z0-9][a-z0-9-]*$/;
863
965
  function inlineCatalogEntry(context, kind) {
864
966
  const catalogsField = context.document.catalogs;
865
967
  if (!isRecord(catalogsField)) {
@@ -878,13 +980,14 @@ function unknownIdWarning(kind, value, path, context) {
878
980
  if (Array.isArray(entry.records) && entry.records.some((record) => isRecord(record) && record.id === value)) {
879
981
  return void 0;
880
982
  }
881
- if (typeof entry.source === "string") {
983
+ if (typeof entry.source === "string" || Array.isArray(entry.source) && entry.source.length > 0) {
882
984
  return void 0;
883
985
  }
884
986
  }
885
987
  }
886
988
  if (catalogIds[kind].includes(value)) {
887
- return void 0;
989
+ const replacedBy = deprecatedCatalogIds[`${kind}/${value}`];
990
+ return replacedBy === void 0 ? void 0 : semanticIssue(path, `deprecated ${kind} catalog id '${value}'; use '${replacedBy}'`, { kind, id: value, replacedBy });
888
991
  }
889
992
  return semanticIssue(path, `unknown ${kind} catalog id '${value}'`, { kind, id: value });
890
993
  }
@@ -932,6 +1035,126 @@ function chartTypeWarnings(payload, path, context) {
932
1035
  }
933
1036
  return issues;
934
1037
  }
1038
+ var cellBorderEdges = ["top", "right", "bottom", "left"];
1039
+ var variableIdPattern = /^[a-z][a-z0-9-]*$/;
1040
+ var hexColorPattern = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;
1041
+ var schemeColorNames = /* @__PURE__ */ new Set([
1042
+ "accent1",
1043
+ "accent2",
1044
+ "accent3",
1045
+ "accent4",
1046
+ "accent5",
1047
+ "accent6",
1048
+ "dark1",
1049
+ "dark2",
1050
+ "light1",
1051
+ "light2",
1052
+ "hyperlink",
1053
+ "followedHyperlink",
1054
+ "primary",
1055
+ "secondary",
1056
+ "accent",
1057
+ "background",
1058
+ "surface",
1059
+ "text",
1060
+ "textSecondary"
1061
+ ]);
1062
+ function variableReferenceWarnings(value) {
1063
+ if (!Array.isArray(value.slides)) {
1064
+ return [];
1065
+ }
1066
+ const variables = isRecord(value.variables) ? value.variables : {};
1067
+ const issues = [];
1068
+ const colorRef = (entry, path) => {
1069
+ if (typeof entry !== "string" || !entry.startsWith("var:")) return;
1070
+ const id = entry.slice("var:".length);
1071
+ if (!variableIdPattern.test(id) || hasOwn(variables, id)) return;
1072
+ issues.push(semanticIssue(path, `unknown variable '${id}'; declare it in the top-level variables map`, { id }));
1073
+ };
1074
+ const runColor = (entry, path) => {
1075
+ if (typeof entry !== "string") return;
1076
+ if (hexColorPattern.test(entry) || schemeColorNames.has(entry)) return;
1077
+ if (entry.startsWith("var:") && variableIdPattern.test(entry.slice("var:".length))) {
1078
+ colorRef(entry, path);
1079
+ return;
1080
+ }
1081
+ issues.push(semanticIssue(
1082
+ path,
1083
+ `run color '${entry}' is not a hex color, a color-scheme name, or a 'var:' reference; renderers fall back to the theme color`,
1084
+ { color: entry }
1085
+ ));
1086
+ };
1087
+ const richText = (entry, path) => {
1088
+ if (!Array.isArray(entry)) return;
1089
+ entry.forEach((run, index) => {
1090
+ if (isRecord(run)) runColor(run.color, `${path}/${index}/color`);
1091
+ });
1092
+ };
1093
+ const cellStyle = (style, path) => {
1094
+ if (!isRecord(style)) return;
1095
+ colorRef(style.fill, pathFor(path, "fill"));
1096
+ colorRef(style.color, pathFor(path, "color"));
1097
+ if (!isRecord(style.borders)) return;
1098
+ const bordersPath = pathFor(path, "borders");
1099
+ for (const edge of cellBorderEdges) {
1100
+ const border = style.borders[edge];
1101
+ if (isRecord(border)) colorRef(border.color, `${pathFor(bordersPath, edge)}/color`);
1102
+ }
1103
+ };
1104
+ const tableCell = (cell, path) => {
1105
+ if (Array.isArray(cell)) {
1106
+ richText(cell, path);
1107
+ return;
1108
+ }
1109
+ if (!isRecord(cell)) return;
1110
+ richText(cell.value, pathFor(path, "value"));
1111
+ cellStyle(cell.style, pathFor(path, "style"));
1112
+ };
1113
+ const table = (node, path) => {
1114
+ if (!isRecord(node)) return;
1115
+ if (Array.isArray(node.columns)) {
1116
+ const columnsPath = pathFor(path, "columns");
1117
+ node.columns.forEach((column, index) => {
1118
+ tableCell(column, `${columnsPath}/${index}`);
1119
+ });
1120
+ }
1121
+ if (Array.isArray(node.rows)) {
1122
+ const rowsPath = pathFor(path, "rows");
1123
+ node.rows.forEach((row, rowIndex) => {
1124
+ if (!Array.isArray(row)) return;
1125
+ row.forEach((cell, cellIndex) => {
1126
+ tableCell(cell, `${rowsPath}/${rowIndex}/${cellIndex}`);
1127
+ });
1128
+ });
1129
+ }
1130
+ };
1131
+ const textEntries = (entries, path) => {
1132
+ if (!Array.isArray(entries)) return;
1133
+ entries.forEach((entry, index) => {
1134
+ const entryPath = `${path}/${index}`;
1135
+ if (Array.isArray(entry)) {
1136
+ richText(entry, entryPath);
1137
+ return;
1138
+ }
1139
+ if (!isRecord(entry)) return;
1140
+ richText(entry.text, pathFor(entryPath, "text"));
1141
+ richText(entry.description, pathFor(entryPath, "description"));
1142
+ });
1143
+ };
1144
+ const payload = (node, path) => {
1145
+ richText(node.text, pathFor(path, "text"));
1146
+ textEntries(node.items, pathFor(path, "items"));
1147
+ textEntries(node.bullets, pathFor(path, "bullets"));
1148
+ table(node.table, pathFor(path, "table"));
1149
+ };
1150
+ value.slides.forEach((slide, index) => {
1151
+ if (!isRecord(slide)) return;
1152
+ const slidePath = `/slides/${index}`;
1153
+ payload(slide, slidePath);
1154
+ visitContentPayloads(slide, slidePath, payload);
1155
+ });
1156
+ return issues;
1157
+ }
935
1158
  function presentationReferenceWarnings(value) {
936
1159
  if (!isRecord(value) || !Array.isArray(value.slides)) {
937
1160
  return [];
@@ -941,7 +1164,15 @@ function presentationReferenceWarnings(value) {
941
1164
  if (typeof value.narrative === "string") {
942
1165
  pushIfDefined(issues, unknownIdWarning("narratives", value.narrative, "/narrative", context));
943
1166
  }
1167
+ if (Array.isArray(value.audience)) {
1168
+ value.audience.forEach((entry, index) => {
1169
+ pushIfDefined(issues, referenceObjectWarning("audiences", entry, `/audience/${index}`, context));
1170
+ });
1171
+ } else {
1172
+ pushIfDefined(issues, unknownIdWarning("audiences", value.audience, "/audience", context));
1173
+ }
944
1174
  issues.push(...designReferenceWarnings(value.design, "/design", context));
1175
+ issues.push(...variableReferenceWarnings(value));
945
1176
  value.slides.forEach((slide, index) => {
946
1177
  if (!isRecord(slide)) {
947
1178
  return;
@@ -1057,4 +1288,4 @@ function assertValidCatalogRecord(kind, value) {
1057
1288
  assertValid(value, kind);
1058
1289
  }
1059
1290
 
1060
- export { OPFValidationError, assertValid, assertValidCatalogRecord, assertValidPresentation, validate, validateCatalogRecord, validatePresentation, validationDefinition };
1291
+ export { OPFValidationError, assertValid, assertValidCatalogRecord, assertValidPresentation, bareIdPattern, isRecord, promotedRegionKeys, validate, validateCatalogRecord, validatePresentation, validationDefinition, visitContentPayloads };