@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.
- package/LICENSE +21 -21
- package/README.md +146 -103
- package/dist/catalogs.d.ts +11 -1531
- package/dist/catalogs.js +5 -613
- package/dist/catalogs.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3862 -662
- package/dist/index.js.map +1 -1
- package/dist/previews.d.ts +40 -0
- package/dist/previews.js +447 -0
- package/dist/previews.js.map +1 -0
- package/dist/schemas.d.ts +153 -141
- package/dist/schemas.js +57 -48
- package/dist/schemas.js.map +1 -1
- package/dist/spec/catalogs/audiences/all-hands.json +23 -23
- package/dist/spec/catalogs/audiences/board.json +22 -22
- package/dist/spec/catalogs/audiences/candidates.json +23 -23
- package/dist/spec/catalogs/audiences/customers.json +23 -23
- package/dist/spec/catalogs/audiences/engineering-team.json +23 -23
- package/dist/spec/catalogs/audiences/executives.json +23 -23
- package/dist/spec/catalogs/audiences/index.json +67 -67
- package/dist/spec/catalogs/audiences/investors.json +23 -23
- package/dist/spec/catalogs/audiences/marketing-team.json +23 -23
- package/dist/spec/catalogs/audiences/regulators.json +23 -23
- package/dist/spec/catalogs/audiences/sales-team.json +23 -23
- package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +86 -90
- package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +98 -102
- package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +74 -78
- package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +86 -90
- package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +98 -102
- package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +74 -78
- package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +95 -99
- package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +96 -100
- package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +118 -122
- package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +79 -83
- package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +95 -99
- package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +85 -89
- package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +103 -107
- package/dist/spec/catalogs/chart-types/area.json +73 -77
- package/dist/spec/catalogs/chart-types/australia.json +66 -70
- package/dist/spec/catalogs/chart-types/bar.json +63 -67
- package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +126 -130
- package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +158 -162
- package/dist/spec/catalogs/chart-types/box-and-whisker.json +94 -98
- package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +84 -88
- package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +96 -100
- package/dist/spec/catalogs/chart-types/bullet-bar.json +72 -76
- package/dist/spec/catalogs/chart-types/bullet-column-2x.json +84 -88
- package/dist/spec/catalogs/chart-types/bullet-column-3x.json +96 -100
- package/dist/spec/catalogs/chart-types/bullet-column.json +72 -76
- package/dist/spec/catalogs/chart-types/canada.json +76 -80
- package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +79 -83
- package/dist/spec/catalogs/chart-types/clustered-column.json +85 -89
- package/dist/spec/catalogs/chart-types/column.json +67 -71
- package/dist/spec/catalogs/chart-types/dot-plot-2x.json +94 -98
- package/dist/spec/catalogs/chart-types/dot-plot-3x.json +119 -123
- package/dist/spec/catalogs/chart-types/dot-plot-4x.json +144 -148
- package/dist/spec/catalogs/chart-types/dot-plot-5x.json +169 -173
- package/dist/spec/catalogs/chart-types/dot-plot-6x.json +194 -198
- package/dist/spec/catalogs/chart-types/dot-plot.json +69 -73
- package/dist/spec/catalogs/chart-types/doughnut.json +53 -57
- package/dist/spec/catalogs/chart-types/dumbbell.json +115 -119
- package/dist/spec/catalogs/chart-types/filled-radar.json +66 -70
- package/dist/spec/catalogs/chart-types/funnel.json +60 -64
- package/dist/spec/catalogs/chart-types/histogram.json +141 -145
- package/dist/spec/catalogs/chart-types/index.json +539 -843
- package/dist/spec/catalogs/chart-types/line-2x.json +95 -99
- package/dist/spec/catalogs/chart-types/line-3x.json +117 -121
- package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +139 -143
- package/dist/spec/catalogs/chart-types/line-with-high-low.json +139 -143
- package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +96 -100
- package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +118 -122
- package/dist/spec/catalogs/chart-types/line-with-markers.json +74 -78
- package/dist/spec/catalogs/chart-types/line.json +73 -77
- package/dist/spec/catalogs/chart-types/pareto.json +159 -163
- package/dist/spec/catalogs/chart-types/pie.json +53 -57
- package/dist/spec/catalogs/chart-types/radar-with-markers.json +66 -70
- package/dist/spec/catalogs/chart-types/radar.json +66 -70
- package/dist/spec/catalogs/chart-types/scatter.json +87 -91
- package/dist/spec/catalogs/chart-types/sparkline-2x.json +133 -137
- package/dist/spec/catalogs/chart-types/sparkline-3x.json +169 -173
- package/dist/spec/catalogs/chart-types/sparkline-4x.json +205 -209
- package/dist/spec/catalogs/chart-types/sparkline-5x.json +241 -245
- package/dist/spec/catalogs/chart-types/sparkline-6x.json +277 -281
- package/dist/spec/catalogs/chart-types/sparkline.json +97 -101
- package/dist/spec/catalogs/chart-types/stacked-area-2x.json +96 -100
- package/dist/spec/catalogs/chart-types/stacked-area-3x.json +118 -122
- package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +79 -83
- package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +95 -99
- package/dist/spec/catalogs/chart-types/stacked-column-2x.json +85 -89
- package/dist/spec/catalogs/chart-types/stacked-column-3x.json +103 -107
- package/dist/spec/catalogs/chart-types/stacked-line-2x.json +96 -100
- package/dist/spec/catalogs/chart-types/stacked-line-3x.json +118 -122
- package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +97 -101
- package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +119 -123
- package/dist/spec/catalogs/chart-types/treemap-2x.json +91 -95
- package/dist/spec/catalogs/chart-types/treemap-3x.json +112 -116
- package/dist/spec/catalogs/chart-types/treemap.json +62 -66
- package/dist/spec/catalogs/chart-types/{united-kindom.json → united-kingdom.json} +58 -62
- package/dist/spec/catalogs/chart-types/united-states.json +72 -76
- package/dist/spec/catalogs/chart-types/waterfall.json +66 -70
- package/dist/spec/catalogs/chart-types/world.json +78 -82
- package/dist/spec/catalogs/color-schemes/black-and-white.json +17 -17
- package/dist/spec/catalogs/color-schemes/bold-red.json +17 -17
- package/dist/spec/catalogs/color-schemes/boost.json +17 -17
- package/dist/spec/catalogs/color-schemes/burnt-orange.json +17 -17
- package/dist/spec/catalogs/color-schemes/cool-horizon.json +17 -17
- package/dist/spec/catalogs/color-schemes/corporate-blue.json +17 -17
- package/dist/spec/catalogs/color-schemes/deep-purple.json +17 -17
- package/dist/spec/catalogs/color-schemes/forest-green.json +17 -17
- package/dist/spec/catalogs/color-schemes/golden-yellow.json +17 -17
- package/dist/spec/catalogs/color-schemes/index.json +77 -77
- package/dist/spec/catalogs/color-schemes/luxury.json +17 -17
- package/dist/spec/catalogs/color-schemes/pastel-red.json +17 -17
- package/dist/spec/catalogs/color-schemes/slate-gray.json +17 -17
- package/dist/spec/catalogs/color-schemes/steel-blue.json +17 -17
- package/dist/spec/catalogs/color-schemes/vibes.json +17 -17
- package/dist/spec/catalogs/font-schemes/angsana-new.json +14 -14
- package/dist/spec/catalogs/font-schemes/aparajita.json +15 -15
- package/dist/spec/catalogs/font-schemes/aptos.json +12 -12
- package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +14 -14
- package/dist/spec/catalogs/font-schemes/arial.json +12 -12
- package/dist/spec/catalogs/font-schemes/batang.json +14 -14
- package/dist/spec/catalogs/font-schemes/bookman.json +12 -12
- package/dist/spec/catalogs/font-schemes/calibri.json +12 -12
- package/dist/spec/catalogs/font-schemes/century-schoolbook.json +12 -12
- package/dist/spec/catalogs/font-schemes/consolas.json +12 -12
- package/dist/spec/catalogs/font-schemes/constantia.json +12 -12
- package/dist/spec/catalogs/font-schemes/courier-new.json +12 -12
- package/dist/spec/catalogs/font-schemes/daunpenh.json +14 -14
- package/dist/spec/catalogs/font-schemes/david.json +14 -14
- package/dist/spec/catalogs/font-schemes/dilleniaupc.json +14 -14
- package/dist/spec/catalogs/font-schemes/fangsong.json +14 -14
- package/dist/spec/catalogs/font-schemes/garamond.json +12 -12
- package/dist/spec/catalogs/font-schemes/gautami.json +14 -14
- package/dist/spec/catalogs/font-schemes/georgia.json +12 -12
- package/dist/spec/catalogs/font-schemes/gisha.json +15 -15
- package/dist/spec/catalogs/font-schemes/grandview.json +12 -12
- package/dist/spec/catalogs/font-schemes/gungsuh.json +14 -14
- package/dist/spec/catalogs/font-schemes/impact.json +12 -12
- package/dist/spec/catalogs/font-schemes/index.json +452 -452
- package/dist/spec/catalogs/font-schemes/kalinga.json +14 -14
- package/dist/spec/catalogs/font-schemes/kartika.json +14 -14
- package/dist/spec/catalogs/font-schemes/khmer-ui.json +14 -14
- package/dist/spec/catalogs/font-schemes/latha.json +14 -14
- package/dist/spec/catalogs/font-schemes/lucida-sans.json +12 -12
- package/dist/spec/catalogs/font-schemes/malgun-gothic.json +14 -14
- package/dist/spec/catalogs/font-schemes/mangal.json +17 -17
- package/dist/spec/catalogs/font-schemes/meiryo.json +14 -14
- package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +14 -14
- package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +17 -17
- package/dist/spec/catalogs/font-schemes/mingliu.json +14 -14
- package/dist/spec/catalogs/font-schemes/miriam.json +14 -14
- package/dist/spec/catalogs/font-schemes/montserrat.json +12 -12
- package/dist/spec/catalogs/font-schemes/ms-mincho.json +14 -14
- package/dist/spec/catalogs/font-schemes/nirmala-ui.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +15 -15
- package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +16 -16
- package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +15 -15
- package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +15 -15
- package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +17 -17
- package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +14 -14
- package/dist/spec/catalogs/font-schemes/noto-sans.json +17 -17
- package/dist/spec/catalogs/font-schemes/nyala.json +14 -14
- package/dist/spec/catalogs/font-schemes/open-sans.json +12 -12
- package/dist/spec/catalogs/font-schemes/pmingliu.json +14 -14
- package/dist/spec/catalogs/font-schemes/poppins.json +12 -12
- package/dist/spec/catalogs/font-schemes/pt-serif.json +12 -12
- package/dist/spec/catalogs/font-schemes/raavi.json +14 -14
- package/dist/spec/catalogs/font-schemes/raleway.json +12 -12
- package/dist/spec/catalogs/font-schemes/roboto.json +12 -12
- package/dist/spec/catalogs/font-schemes/rockwell.json +12 -12
- package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +16 -16
- package/dist/spec/catalogs/font-schemes/seaford.json +12 -12
- package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +12 -12
- package/dist/spec/catalogs/font-schemes/segoe-ui.json +12 -12
- package/dist/spec/catalogs/font-schemes/shonar-bangla.json +15 -15
- package/dist/spec/catalogs/font-schemes/shruti.json +14 -14
- package/dist/spec/catalogs/font-schemes/simsun.json +14 -14
- package/dist/spec/catalogs/font-schemes/skeena.json +12 -12
- package/dist/spec/catalogs/font-schemes/sylfaen.json +15 -15
- package/dist/spec/catalogs/font-schemes/tahoma.json +12 -12
- package/dist/spec/catalogs/font-schemes/tenorite.json +12 -12
- package/dist/spec/catalogs/font-schemes/times-new-roman.json +12 -12
- package/dist/spec/catalogs/font-schemes/traditional-arabic.json +16 -16
- package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +12 -12
- package/dist/spec/catalogs/font-schemes/tunga.json +14 -14
- package/dist/spec/catalogs/font-schemes/verdana.json +12 -12
- package/dist/spec/catalogs/font-schemes/vrinda.json +14 -14
- package/dist/spec/catalogs/font-schemes/yu-gothic.json +14 -14
- package/dist/spec/catalogs/languages/afrikaans.json +9 -9
- package/dist/spec/catalogs/languages/albanian.json +9 -9
- package/dist/spec/catalogs/languages/amharic.json +9 -9
- package/dist/spec/catalogs/languages/arabic.json +9 -9
- package/dist/spec/catalogs/languages/armenian.json +9 -9
- package/dist/spec/catalogs/languages/aymara.json +9 -9
- package/dist/spec/catalogs/languages/azerbaijani.json +9 -9
- package/dist/spec/catalogs/languages/bengali.json +9 -9
- package/dist/spec/catalogs/languages/berber-latin.json +9 -9
- package/dist/spec/catalogs/languages/bosnian-latin.json +9 -9
- package/dist/spec/catalogs/languages/bulgarian.json +9 -9
- package/dist/spec/catalogs/languages/catalan.json +9 -9
- package/dist/spec/catalogs/languages/cebuano.json +9 -9
- package/dist/spec/catalogs/languages/chinese-simplified.json +9 -9
- package/dist/spec/catalogs/languages/chinese-traditional.json +9 -9
- package/dist/spec/catalogs/languages/chittagonian.json +9 -9
- package/dist/spec/catalogs/languages/croatian.json +9 -9
- package/dist/spec/catalogs/languages/czech.json +9 -9
- package/dist/spec/catalogs/languages/danish.json +9 -9
- package/dist/spec/catalogs/languages/dutch.json +9 -9
- package/dist/spec/catalogs/languages/english-au.json +9 -9
- package/dist/spec/catalogs/languages/english-ca.json +9 -9
- package/dist/spec/catalogs/languages/english-gb.json +9 -9
- package/dist/spec/catalogs/languages/english-in.json +9 -9
- package/dist/spec/catalogs/languages/english-us.json +9 -9
- package/dist/spec/catalogs/languages/english.json +9 -9
- package/dist/spec/catalogs/languages/estonian.json +9 -9
- package/dist/spec/catalogs/languages/filipino.json +9 -9
- package/dist/spec/catalogs/languages/finnish.json +9 -9
- package/dist/spec/catalogs/languages/french.json +9 -9
- package/dist/spec/catalogs/languages/fulfulde.json +9 -9
- package/dist/spec/catalogs/languages/galician.json +9 -9
- package/dist/spec/catalogs/languages/georgian.json +9 -9
- package/dist/spec/catalogs/languages/german.json +9 -9
- package/dist/spec/catalogs/languages/greek.json +9 -9
- package/dist/spec/catalogs/languages/gujarati.json +9 -9
- package/dist/spec/catalogs/languages/hausa.json +9 -9
- package/dist/spec/catalogs/languages/hebrew.json +9 -9
- package/dist/spec/catalogs/languages/hindi.json +9 -9
- package/dist/spec/catalogs/languages/hungarian.json +9 -9
- package/dist/spec/catalogs/languages/igbo.json +9 -9
- package/dist/spec/catalogs/languages/index.json +565 -565
- package/dist/spec/catalogs/languages/indonesian.json +9 -9
- package/dist/spec/catalogs/languages/italian.json +9 -9
- package/dist/spec/catalogs/languages/japanese.json +9 -9
- package/dist/spec/catalogs/languages/kannada.json +9 -9
- package/dist/spec/catalogs/languages/kazakh.json +9 -9
- package/dist/spec/catalogs/languages/khmer.json +9 -9
- package/dist/spec/catalogs/languages/kinyarwanda.json +9 -9
- package/dist/spec/catalogs/languages/korean.json +9 -9
- package/dist/spec/catalogs/languages/kurmanji.json +9 -9
- package/dist/spec/catalogs/languages/latvian.json +9 -9
- package/dist/spec/catalogs/languages/lithuanian.json +9 -9
- package/dist/spec/catalogs/languages/macedonian.json +9 -9
- package/dist/spec/catalogs/languages/malagasy.json +9 -9
- package/dist/spec/catalogs/languages/malay.json +9 -9
- package/dist/spec/catalogs/languages/malayalam.json +9 -9
- package/dist/spec/catalogs/languages/maori.json +9 -9
- package/dist/spec/catalogs/languages/marathi.json +9 -9
- package/dist/spec/catalogs/languages/mongolian.json +9 -9
- package/dist/spec/catalogs/languages/nepali.json +9 -9
- package/dist/spec/catalogs/languages/norwegian.json +9 -9
- package/dist/spec/catalogs/languages/odia.json +9 -9
- package/dist/spec/catalogs/languages/oromo.json +9 -9
- package/dist/spec/catalogs/languages/pashto.json +9 -9
- package/dist/spec/catalogs/languages/persian.json +9 -9
- package/dist/spec/catalogs/languages/polish.json +9 -9
- package/dist/spec/catalogs/languages/portuguese.json +9 -9
- package/dist/spec/catalogs/languages/punjabi-gurmukhi.json +9 -9
- package/dist/spec/catalogs/languages/punjabi-shahmukhi.json +9 -9
- package/dist/spec/catalogs/languages/romanian.json +9 -9
- package/dist/spec/catalogs/languages/russian.json +9 -9
- package/dist/spec/catalogs/languages/serbian-cyrillic.json +9 -9
- package/dist/spec/catalogs/languages/serbian-latin.json +9 -9
- package/dist/spec/catalogs/languages/shona.json +9 -9
- package/dist/spec/catalogs/languages/slovak.json +9 -9
- package/dist/spec/catalogs/languages/slovenian.json +9 -9
- package/dist/spec/catalogs/languages/somali.json +9 -9
- package/dist/spec/catalogs/languages/spanish.json +9 -9
- package/dist/spec/catalogs/languages/swahili.json +9 -9
- package/dist/spec/catalogs/languages/swedish.json +9 -9
- package/dist/spec/catalogs/languages/tagalog.json +9 -9
- package/dist/spec/catalogs/languages/tajik.json +9 -9
- package/dist/spec/catalogs/languages/tamil.json +9 -9
- package/dist/spec/catalogs/languages/telugu.json +9 -9
- package/dist/spec/catalogs/languages/thai.json +9 -9
- package/dist/spec/catalogs/languages/turkish.json +9 -9
- package/dist/spec/catalogs/languages/ukrainian.json +9 -9
- package/dist/spec/catalogs/languages/urdu.json +9 -9
- package/dist/spec/catalogs/languages/uzbek-latin.json +9 -9
- package/dist/spec/catalogs/languages/vietnamese-quoc-ngu.json +9 -9
- package/dist/spec/catalogs/languages/xhosa.json +9 -9
- package/dist/spec/catalogs/languages/yoruba.json +9 -9
- package/dist/spec/catalogs/languages/zulu.json +9 -9
- package/dist/spec/catalogs/layouts/blank.json +6 -6
- package/dist/spec/catalogs/layouts/chart-1x.json +16 -16
- package/dist/spec/catalogs/layouts/chart-2x.json +22 -22
- package/dist/spec/catalogs/layouts/chart-3x.json +28 -28
- package/dist/spec/catalogs/layouts/code-1x.json +16 -16
- package/dist/spec/catalogs/layouts/extract/canonical.json +487 -487
- package/dist/spec/catalogs/layouts/image-1x.json +16 -16
- package/dist/spec/catalogs/layouts/image-2x.json +22 -22
- package/dist/spec/catalogs/layouts/image-3x.json +28 -28
- package/dist/spec/catalogs/layouts/image-bleed.json +10 -10
- package/dist/spec/catalogs/layouts/index.json +147 -147
- package/dist/spec/catalogs/layouts/list-1x.json +13 -13
- package/dist/spec/catalogs/layouts/list-2x.json +16 -16
- package/dist/spec/catalogs/layouts/list-3x.json +19 -19
- package/dist/spec/catalogs/layouts/list-4x.json +22 -22
- package/dist/spec/catalogs/layouts/list-5x.json +25 -25
- package/dist/spec/catalogs/layouts/list-6x.json +28 -28
- package/dist/spec/catalogs/layouts/media-1x.json +16 -16
- package/dist/spec/catalogs/layouts/number-1x.json +13 -13
- package/dist/spec/catalogs/layouts/number-2x.json +16 -16
- package/dist/spec/catalogs/layouts/number-3x.json +19 -19
- package/dist/spec/catalogs/layouts/number-4x.json +22 -22
- package/dist/spec/catalogs/layouts/number-5x.json +25 -25
- package/dist/spec/catalogs/layouts/number-6x.json +28 -28
- package/dist/spec/catalogs/layouts/table-1x.json +16 -16
- package/dist/spec/catalogs/layouts/text-1x.json +13 -13
- package/dist/spec/catalogs/layouts/text-2x.json +16 -16
- package/dist/spec/catalogs/layouts/text-3x.json +19 -19
- package/dist/spec/catalogs/layouts/title-subtitle.json +13 -13
- package/dist/spec/catalogs/layouts/title.json +10 -10
- package/dist/spec/catalogs/narratives/board-meeting.json +192 -192
- package/dist/spec/catalogs/narratives/business-narrative.json +87 -87
- package/dist/spec/catalogs/narratives/business-review.json +119 -119
- package/dist/spec/catalogs/narratives/capacity-planning.json +88 -88
- package/dist/spec/catalogs/narratives/challenge-resolution.json +80 -80
- package/dist/spec/catalogs/narratives/classic-story.json +78 -78
- package/dist/spec/catalogs/narratives/company-intro.json +96 -96
- package/dist/spec/catalogs/narratives/conference-talk.json +54 -54
- package/dist/spec/catalogs/narratives/early-startup-pitch.json +119 -119
- package/dist/spec/catalogs/narratives/educate.json +95 -95
- package/dist/spec/catalogs/narratives/employee-review.json +87 -87
- package/dist/spec/catalogs/narratives/failure-analysis.json +104 -104
- package/dist/spec/catalogs/narratives/focus.json +120 -120
- package/dist/spec/catalogs/narratives/golden-circle.json +50 -50
- package/dist/spec/catalogs/narratives/index.json +358 -358
- package/dist/spec/catalogs/narratives/innovation.json +96 -96
- package/dist/spec/catalogs/narratives/justice.json +112 -112
- package/dist/spec/catalogs/narratives/marketing-strategy.json +111 -111
- package/dist/spec/catalogs/narratives/performance-improvement-plan.json +87 -87
- package/dist/spec/catalogs/narratives/performance-review.json +111 -111
- package/dist/spec/catalogs/narratives/persuade.json +94 -94
- package/dist/spec/catalogs/narratives/persuasive-sales.json +87 -87
- package/dist/spec/catalogs/narratives/pitch-deck.json +107 -107
- package/dist/spec/catalogs/narratives/problem-solution.json +61 -61
- package/dist/spec/catalogs/narratives/product-launch.json +104 -104
- package/dist/spec/catalogs/narratives/project-proposal.json +104 -104
- package/dist/spec/catalogs/narratives/qbr.json +85 -85
- package/dist/spec/catalogs/narratives/rags-to-riches.json +80 -80
- package/dist/spec/catalogs/narratives/reveal.json +87 -87
- package/dist/spec/catalogs/narratives/scqa.json +55 -55
- package/dist/spec/catalogs/narratives/status-update.json +72 -72
- package/dist/spec/catalogs/narratives/strategic-advisory.json +85 -85
- package/dist/spec/catalogs/narratives/strategic-narrative.json +61 -61
- package/dist/spec/catalogs/narratives/survey-analysis.json +104 -104
- package/dist/spec/catalogs/narratives/survival-story.json +103 -103
- package/dist/spec/catalogs/narratives/transformation-arc.json +50 -50
- package/dist/spec/catalogs/narratives/trend-analysis.json +79 -79
- package/dist/spec/catalogs/narratives/underdog-victory.json +87 -87
- package/dist/spec/catalogs/narratives/venture-pitch.json +109 -109
- package/dist/spec/catalogs/narratives/weekly-progress.json +103 -103
- package/dist/spec/catalogs/purposes/align.json +16 -16
- package/dist/spec/catalogs/purposes/decide.json +16 -16
- package/dist/spec/catalogs/purposes/educate.json +16 -16
- package/dist/spec/catalogs/purposes/index.json +61 -61
- package/dist/spec/catalogs/purposes/inform.json +16 -16
- package/dist/spec/catalogs/purposes/persuade.json +16 -16
- package/dist/spec/catalogs/purposes/pitch.json +16 -16
- package/dist/spec/catalogs/purposes/plan.json +16 -16
- package/dist/spec/catalogs/purposes/report.json +16 -16
- package/dist/spec/catalogs/purposes/sell.json +16 -16
- package/dist/spec/catalogs/social-platforms/bluesky.json +14 -14
- package/dist/spec/catalogs/social-platforms/facebook.json +14 -14
- package/dist/spec/catalogs/social-platforms/github.json +15 -15
- package/dist/spec/catalogs/social-platforms/index.json +68 -68
- package/dist/spec/catalogs/social-platforms/instagram.json +13 -13
- package/dist/spec/catalogs/social-platforms/linkedin.json +15 -15
- package/dist/spec/catalogs/social-platforms/mastodon.json +14 -14
- package/dist/spec/catalogs/social-platforms/threads.json +13 -13
- package/dist/spec/catalogs/social-platforms/tiktok.json +14 -14
- package/dist/spec/catalogs/social-platforms/x.json +14 -14
- package/dist/spec/catalogs/social-platforms/youtube.json +14 -14
- package/dist/spec/catalogs/themes/bold.json +13 -13
- package/dist/spec/catalogs/themes/classic.json +13 -13
- package/dist/spec/catalogs/themes/dark.json +13 -13
- package/dist/spec/catalogs/themes/index.json +31 -31
- package/dist/spec/catalogs/themes/minimal.json +13 -13
- package/dist/spec/catalogs/tones/authoritative.json +31 -31
- package/dist/spec/catalogs/tones/casual.json +31 -31
- package/dist/spec/catalogs/tones/conversational.json +31 -31
- package/dist/spec/catalogs/tones/formal.json +31 -31
- package/dist/spec/catalogs/tones/index.json +49 -49
- package/dist/spec/catalogs/tones/inspirational.json +31 -31
- package/dist/spec/catalogs/tones/persuasive.json +32 -32
- package/dist/spec/catalogs/tones/technical.json +31 -31
- package/dist/spec/openapi.yaml +776 -776
- package/dist/spec/previews/layouts/action-plan.html +1 -0
- package/dist/spec/previews/layouts/agenda.html +1 -0
- package/dist/spec/previews/layouts/appendix-index.html +1 -0
- package/dist/spec/previews/layouts/architecture-stack.html +1 -0
- package/dist/spec/previews/layouts/assumptions-dependencies.html +1 -0
- package/dist/spec/previews/layouts/before-after.html +1 -0
- package/dist/spec/previews/layouts/benchmark-target-table.html +1 -0
- package/dist/spec/previews/layouts/bullet-list.html +1 -0
- package/dist/spec/previews/layouts/business-model-canvas.html +1 -0
- package/dist/spec/previews/layouts/capability-map.html +1 -0
- package/dist/spec/previews/layouts/case-study.html +1 -0
- package/dist/spec/previews/layouts/chapter-recap.html +1 -0
- package/dist/spec/previews/layouts/circular-lifecycle.html +1 -0
- package/dist/spec/previews/layouts/comparison.html +1 -0
- package/dist/spec/previews/layouts/competitive-landscape.html +1 -0
- package/dist/spec/previews/layouts/customer-journey.html +1 -0
- package/dist/spec/previews/layouts/customer-logos.html +1 -0
- package/dist/spec/previews/layouts/dashboard.html +1 -0
- package/dist/spec/previews/layouts/data-visualization.html +1 -0
- package/dist/spec/previews/layouts/decision-tree.html +1 -0
- package/dist/spec/previews/layouts/detailed-data-table.html +1 -0
- package/dist/spec/previews/layouts/ecosystem-map.html +1 -0
- package/dist/spec/previews/layouts/executive-decision.html +1 -0
- package/dist/spec/previews/layouts/executive-summary.html +1 -0
- package/dist/spec/previews/layouts/faq.html +1 -0
- package/dist/spec/previews/layouts/feature-comparison-matrix.html +1 -0
- package/dist/spec/previews/layouts/forecast-scenario.html +1 -0
- package/dist/spec/previews/layouts/funnel-pyramid.html +1 -0
- package/dist/spec/previews/layouts/gantt-project-plan.html +1 -0
- package/dist/spec/previews/layouts/geographic-map.html +1 -0
- package/dist/spec/previews/layouts/heatmap-cohort.html +1 -0
- package/dist/spec/previews/layouts/hub-and-spoke.html +1 -0
- package/dist/spec/previews/layouts/icon-grid.html +1 -0
- package/dist/spec/previews/layouts/image-focus.html +1 -0
- package/dist/spec/previews/layouts/index.json +357 -0
- package/dist/spec/previews/layouts/key-takeaway.html +1 -0
- package/dist/spec/previews/layouts/kpi-scorecard.html +1 -0
- package/dist/spec/previews/layouts/logic-tree.html +1 -0
- package/dist/spec/previews/layouts/market-size.html +1 -0
- package/dist/spec/previews/layouts/matrix-quadrant.html +1 -0
- package/dist/spec/previews/layouts/network-dependency-map.html +1 -0
- package/dist/spec/previews/layouts/one-column-explainer.html +1 -0
- package/dist/spec/previews/layouts/org-chart.html +1 -0
- package/dist/spec/previews/layouts/persona-grid.html +1 -0
- package/dist/spec/previews/layouts/photo-grid.html +1 -0
- package/dist/spec/previews/layouts/pricing-table.html +1 -0
- package/dist/spec/previews/layouts/process-flow.html +1 -0
- package/dist/spec/previews/layouts/product-feature.html +1 -0
- package/dist/spec/previews/layouts/pros-cons.html +1 -0
- package/dist/spec/previews/layouts/qa-discussion.html +1 -0
- package/dist/spec/previews/layouts/quote-highlight.html +1 -0
- package/dist/spec/previews/layouts/raci-matrix.html +1 -0
- package/dist/spec/previews/layouts/risk-heatmap.html +1 -0
- package/dist/spec/previews/layouts/roadmap.html +1 -0
- package/dist/spec/previews/layouts/screenshot-walkthrough.html +1 -0
- package/dist/spec/previews/layouts/section-divider.html +1 -0
- package/dist/spec/previews/layouts/single-message-statement.html +1 -0
- package/dist/spec/previews/layouts/stats-metrics.html +1 -0
- package/dist/spec/previews/layouts/status-rag.html +1 -0
- package/dist/spec/previews/layouts/swimlane-process.html +1 -0
- package/dist/spec/previews/layouts/swot-analysis.html +1 -0
- package/dist/spec/previews/layouts/team-bio.html +1 -0
- package/dist/spec/previews/layouts/testimonial-grid.html +1 -0
- package/dist/spec/previews/layouts/thank-you-cta.html +1 -0
- package/dist/spec/previews/layouts/three-column.html +1 -0
- package/dist/spec/previews/layouts/timeline.html +1 -0
- package/dist/spec/previews/layouts/title-slide.html +1 -0
- package/dist/spec/previews/layouts/two-column.html +1 -0
- package/dist/spec/previews/layouts/venn-overlap.html +1 -0
- package/dist/spec/previews/layouts/waterfall-bridge.html +1 -0
- package/dist/spec/previews/layouts/wheel-radial.html +1 -0
- package/dist/spec/reference/engine-defaults.json +35 -35
- package/dist/spec/schemas/audience.schema.json +156 -156
- package/dist/spec/schemas/chart-type.schema.json +537 -537
- package/dist/spec/schemas/color-scheme.schema.json +200 -200
- package/dist/spec/schemas/font-scheme.schema.json +174 -174
- package/dist/spec/schemas/language.schema.json +158 -158
- package/dist/spec/schemas/layout.schema.json +280 -280
- package/dist/spec/schemas/narrative.schema.json +207 -207
- package/dist/spec/schemas/opf.schema.json +2543 -2537
- package/dist/spec/schemas/purpose.schema.json +92 -92
- package/dist/spec/schemas/social-platform.schema.json +183 -184
- package/dist/spec/schemas/theme.schema.json +168 -168
- package/dist/spec/schemas/tone.schema.json +146 -146
- package/dist/spec-files.d.ts +2388 -0
- package/dist/spec-files.js +3349 -0
- package/dist/spec-files.js.map +1 -0
- package/dist/types.d.ts +5 -5
- package/dist/{validator-Be5EzqAt.d.ts → validator-MwlR2F56.d.ts} +22 -24
- package/dist/validator.d.ts +1 -1
- package/dist/validator.js +66 -48
- package/dist/validator.js.map +1 -1
- package/package.json +91 -80
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { P as Presentation, V as ValidationIssue, a as ValidationResult } from './validator-
|
|
1
|
+
export { P as Presentation, V as ValidationIssue, a as ValidationResult } from './validator-MwlR2F56.js';
|
|
2
2
|
export { CatalogKind } from './catalogs.js';
|
|
3
3
|
export { SchemaName } from './schemas.js';
|
|
4
4
|
|
|
@@ -766,7 +766,7 @@ interface Beat {
|
|
|
766
766
|
}
|
|
767
767
|
|
|
768
768
|
/**
|
|
769
|
-
* Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform
|
|
769
|
+
* Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.
|
|
770
770
|
*/
|
|
771
771
|
interface SocialPlatform {
|
|
772
772
|
/**
|
|
@@ -774,7 +774,7 @@ interface SocialPlatform {
|
|
|
774
774
|
*/
|
|
775
775
|
$schema: "https://openpresentation.org/schema/opf-social-platform/v1";
|
|
776
776
|
/**
|
|
777
|
-
* Stable slug used by OPF documents to reference this platform
|
|
777
|
+
* Stable slug used by OPF documents to reference this platform — appears as a property key on Socials objects. Lowercase kebab-case.
|
|
778
778
|
*/
|
|
779
779
|
id: string;
|
|
780
780
|
/**
|
|
@@ -782,7 +782,7 @@ interface SocialPlatform {
|
|
|
782
782
|
*/
|
|
783
783
|
name: string;
|
|
784
784
|
/**
|
|
785
|
-
* One-sentence positioning of the platform
|
|
785
|
+
* One-sentence positioning of the platform — what it's used for and who's on it.
|
|
786
786
|
*/
|
|
787
787
|
summary?: string;
|
|
788
788
|
/**
|
|
@@ -790,7 +790,7 @@ interface SocialPlatform {
|
|
|
790
790
|
*/
|
|
791
791
|
description?: string;
|
|
792
792
|
/**
|
|
793
|
-
* Canonical base URL of the platform
|
|
793
|
+
* Canonical base URL of the platform — used as the prefix when normalizing handles to full URLs.
|
|
794
794
|
*/
|
|
795
795
|
baseUrl?: string;
|
|
796
796
|
/**
|
|
@@ -514,9 +514,9 @@ type ContentPayload = ({
|
|
|
514
514
|
*/
|
|
515
515
|
type CatalogSource = string;
|
|
516
516
|
/**
|
|
517
|
-
* Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design
|
|
517
|
+
* Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.
|
|
518
518
|
*
|
|
519
|
-
* Fields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document
|
|
519
|
+
* Fields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.
|
|
520
520
|
*
|
|
521
521
|
* Most catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry.
|
|
522
522
|
*/
|
|
@@ -530,7 +530,7 @@ interface Presentation {
|
|
|
530
530
|
*/
|
|
531
531
|
name?: string;
|
|
532
532
|
/**
|
|
533
|
-
* Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File
|
|
533
|
+
* Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File → Properties).
|
|
534
534
|
*/
|
|
535
535
|
description?: string;
|
|
536
536
|
/**
|
|
@@ -550,21 +550,19 @@ interface Presentation {
|
|
|
550
550
|
*/
|
|
551
551
|
author?: (string | [string, ...(string)[]]);
|
|
552
552
|
/**
|
|
553
|
-
* Intended audiences for the presentation.
|
|
554
|
-
* - A string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.
|
|
555
|
-
* - An inline Audience
|
|
553
|
+
* Intended audiences for the presentation. Accepts either:
|
|
554
|
+
* - A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.
|
|
555
|
+
* - An array of string shorthands and/or inline Audience objects for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.
|
|
556
556
|
*
|
|
557
|
-
* Resolution order for catalog ids and references: inline catalogs.audiences.records[]
|
|
558
|
-
*
|
|
559
|
-
* @minItems 1
|
|
557
|
+
* Resolution order for catalog ids and references: inline catalogs.audiences.records[] → catalogs.audiences.source → default catalog at https://www.pptx.gallery/audiences.
|
|
560
558
|
*/
|
|
561
|
-
audience?: [(string | Audience), ...((string | Audience))[]];
|
|
559
|
+
audience?: (string | [(string | Audience), ...((string | Audience))[]]);
|
|
562
560
|
/**
|
|
563
561
|
* Primary goal of the presentation. Accepts either:
|
|
564
562
|
* - A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.
|
|
565
563
|
* - An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.
|
|
566
564
|
*
|
|
567
|
-
* Resolution order for catalog ids and references: inline catalogs.purposes.records[]
|
|
565
|
+
* Resolution order for catalog ids and references: inline catalogs.purposes.records[] → catalogs.purposes.source → default catalog at https://www.pptx.gallery/purposes.
|
|
568
566
|
*/
|
|
569
567
|
purpose?: (string | Purpose);
|
|
570
568
|
/**
|
|
@@ -572,7 +570,7 @@ interface Presentation {
|
|
|
572
570
|
* - A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.
|
|
573
571
|
* - An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.
|
|
574
572
|
*
|
|
575
|
-
* Resolution order for catalog ids and references: inline catalogs.languages.records[]
|
|
573
|
+
* Resolution order for catalog ids and references: inline catalogs.languages.records[] → catalogs.languages.source → default catalog at https://www.pptx.gallery/languages.
|
|
576
574
|
*/
|
|
577
575
|
language?: (string | Language);
|
|
578
576
|
/**
|
|
@@ -580,7 +578,7 @@ interface Presentation {
|
|
|
580
578
|
* - A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.
|
|
581
579
|
* - An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.
|
|
582
580
|
*
|
|
583
|
-
* Resolution order for catalog ids and references: inline catalogs.tones.records[]
|
|
581
|
+
* Resolution order for catalog ids and references: inline catalogs.tones.records[] → catalogs.tones.source → default catalog at https://www.pptx.gallery/tones.
|
|
584
582
|
*/
|
|
585
583
|
tone?: (string | Tone);
|
|
586
584
|
/**
|
|
@@ -603,7 +601,7 @@ interface Presentation {
|
|
|
603
601
|
* - String shorthand for the common case: 'narrative = "classic-story"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package.
|
|
604
602
|
* - Object form for inline overrides or fully custom narratives: 'narrative = { id: "classic-story", beats: [...] }'. The object shape mirrors https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.
|
|
605
603
|
*
|
|
606
|
-
* Resolution order: inline catalogs.narratives.records[]
|
|
604
|
+
* Resolution order: inline catalogs.narratives.records[] → catalogs.narratives.source → default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.
|
|
607
605
|
*
|
|
608
606
|
* Deck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside the narrative object.
|
|
609
607
|
*/
|
|
@@ -624,7 +622,7 @@ interface Presentation {
|
|
|
624
622
|
};
|
|
625
623
|
}
|
|
626
624
|
/**
|
|
627
|
-
* An organization associated with the presentation
|
|
625
|
+
* An organization associated with the presentation — typically the presenting company, but also hosts, partners, clients, or sponsors. Surfaced on cover slides, footers, and brand bars; the primary organization's logo is the default deck logo unless overridden by design.logo.
|
|
628
626
|
*
|
|
629
627
|
* This interface was referenced by `Presentation`'s JSON-Schema
|
|
630
628
|
* via the `definition` "Organization".
|
|
@@ -1046,11 +1044,11 @@ interface FontScheme {
|
|
|
1046
1044
|
*/
|
|
1047
1045
|
id?: string;
|
|
1048
1046
|
/**
|
|
1049
|
-
* Heading (major) font family
|
|
1047
|
+
* Heading (major) font family — mirrors the OOXML majorFont entry. Pairs with 'minor'.
|
|
1050
1048
|
*/
|
|
1051
1049
|
major?: string;
|
|
1052
1050
|
/**
|
|
1053
|
-
* Body (minor) font family
|
|
1051
|
+
* Body (minor) font family — mirrors the OOXML minorFont entry. Pairs with 'major'.
|
|
1054
1052
|
*/
|
|
1055
1053
|
minor?: string;
|
|
1056
1054
|
/**
|
|
@@ -1871,7 +1869,7 @@ interface HeaderFooterItem2 {
|
|
|
1871
1869
|
/**
|
|
1872
1870
|
* Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.
|
|
1873
1871
|
*
|
|
1874
|
-
* Narrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure
|
|
1872
|
+
* Narrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure — validators warn on drift (orphan slides, unused beats) but never error. Slides are the source of truth; narrative is intent that travels with the deck.
|
|
1875
1873
|
*
|
|
1876
1874
|
* When 'id' matches a record in the resolved 'narratives' catalog, the inline fields override matching fields on the catalog record (beats merge by beat 'id'). When 'id' doesn't match, this object defines a fully custom inline narrative.
|
|
1877
1875
|
*
|
|
@@ -1938,7 +1936,7 @@ interface Narrative {
|
|
|
1938
1936
|
[k: string]: unknown;
|
|
1939
1937
|
}
|
|
1940
1938
|
/**
|
|
1941
|
-
* A single narrative beat
|
|
1939
|
+
* A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blueprint hints (slideType, layoutHint, thoughtCues, instructions) that guide the assigned slide.
|
|
1942
1940
|
*
|
|
1943
1941
|
* Mirrors the Beat definition in narrative.schema.json (https://openpresentation.org/schema/opf-narrative/v1) so library entries and inline OPF beats are interchangeable.
|
|
1944
1942
|
*
|
|
@@ -1959,7 +1957,7 @@ interface NarrativeBeat {
|
|
|
1959
1957
|
*/
|
|
1960
1958
|
description?: string;
|
|
1961
1959
|
/**
|
|
1962
|
-
* Short author-facing instruction for the beat
|
|
1960
|
+
* Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.
|
|
1963
1961
|
*/
|
|
1964
1962
|
instructions?: string;
|
|
1965
1963
|
/**
|
|
@@ -1971,7 +1969,7 @@ interface NarrativeBeat {
|
|
|
1971
1969
|
*/
|
|
1972
1970
|
slideType?: ("text" | "list" | "image" | "chart" | "table" | "video" | "code" | "metric" | "quote" | "timeline");
|
|
1973
1971
|
/**
|
|
1974
|
-
* Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout
|
|
1972
|
+
* Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.
|
|
1975
1973
|
*/
|
|
1976
1974
|
layoutHint?: string;
|
|
1977
1975
|
/**
|
|
@@ -2002,7 +2000,7 @@ interface Slide {
|
|
|
2002
2000
|
/**
|
|
2003
2001
|
* Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.
|
|
2004
2002
|
*
|
|
2005
|
-
* Resolution order: inline catalogs.layouts.records[]
|
|
2003
|
+
* Resolution order: inline catalogs.layouts.records[] → catalogs.layouts.source → default catalog at https://www.pptx.gallery/layouts.
|
|
2006
2004
|
*/
|
|
2007
2005
|
layout?: string;
|
|
2008
2006
|
/**
|
|
@@ -2022,7 +2020,7 @@ interface Slide {
|
|
|
2022
2020
|
*/
|
|
2023
2021
|
text?: (string | TextRun[]);
|
|
2024
2022
|
/**
|
|
2025
|
-
* Full-slide generic list payload. Presence of this field infers type 'list'.
|
|
2023
|
+
* Full-slide generic list payload. Presence of this field infers type 'list'. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for layout-agnostic blocks.
|
|
2026
2024
|
*/
|
|
2027
2025
|
items?: ListItem[];
|
|
2028
2026
|
/**
|
|
@@ -2121,7 +2119,7 @@ interface Slide {
|
|
|
2121
2119
|
events: [TimelineEvent, ...(TimelineEvent)[]];
|
|
2122
2120
|
});
|
|
2123
2121
|
/**
|
|
2124
|
-
* Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified.
|
|
2122
|
+
* Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for equivalent blocks.
|
|
2125
2123
|
*/
|
|
2126
2124
|
blocks?: ContentPayload[];
|
|
2127
2125
|
design?: Design1;
|
package/dist/validator.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import './catalogs.js';
|
|
2
|
-
export { O as OPFValidationError, S as SchemaOrKind, V as ValidationIssue, a as ValidationResult, b as assertValid, c as assertValidCatalogRecord, d as assertValidPresentation, v as validate, e as validateCatalogRecord, f as validatePresentation } from './validator-
|
|
2
|
+
export { O as OPFValidationError, S as SchemaOrKind, V as ValidationIssue, a as ValidationResult, b as assertValid, c as assertValidCatalogRecord, d as assertValidPresentation, v as validate, e as validateCatalogRecord, f as validatePresentation } from './validator-MwlR2F56.js';
|
|
3
3
|
import './schemas.js';
|
package/dist/validator.js
CHANGED
|
@@ -20,8 +20,8 @@ var catalogSchemaNames = {
|
|
|
20
20
|
var presentation = {
|
|
21
21
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
22
22
|
"$id": "https://openpresentation.org/schema/opf/v1",
|
|
23
|
-
"title": "
|
|
24
|
-
"description": "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design \
|
|
23
|
+
"title": "Presentation",
|
|
24
|
+
"description": "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design \u2014 the engine handles OOXML complexity.\n\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document \u2192 'catalogs.<kind>.source' on the document \u2192 engine defaults \u2192 the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\n\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry.",
|
|
25
25
|
"type": "object",
|
|
26
26
|
"required": [
|
|
27
27
|
"slides"
|
|
@@ -38,13 +38,13 @@ var presentation = {
|
|
|
38
38
|
"description": "Display name of the presentation for GUI/TUI lists, library/search indexing, OS-level metadata, and default export filenames. This is deck identity, not slide content. Use slides[].title and slides[].subtitle for text that should appear on presented slides.",
|
|
39
39
|
"examples": [
|
|
40
40
|
"Q4 2026 Business Review",
|
|
41
|
-
"Series B Pitch \
|
|
41
|
+
"Series B Pitch \u2014 Acme",
|
|
42
42
|
"The Future of Agentic Workflows"
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
45
|
"description": {
|
|
46
46
|
"type": "string",
|
|
47
|
-
"description": "Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File \
|
|
47
|
+
"description": "Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the 'Comments' field in File \u2192 Properties).",
|
|
48
48
|
"examples": [
|
|
49
49
|
"Quarterly business review covering revenue, product, and hiring milestones for the executive team."
|
|
50
50
|
]
|
|
@@ -110,20 +110,29 @@ var presentation = {
|
|
|
110
110
|
]
|
|
111
111
|
},
|
|
112
112
|
"audience": {
|
|
113
|
-
"
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
113
|
+
"oneOf": [
|
|
114
|
+
{
|
|
115
|
+
"type": "string"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"type": "array",
|
|
119
|
+
"items": {
|
|
120
|
+
"oneOf": [
|
|
121
|
+
{
|
|
122
|
+
"type": "string"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"$ref": "#/$defs/Audience"
|
|
126
|
+
}
|
|
127
|
+
]
|
|
118
128
|
},
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
},
|
|
124
|
-
"minItems": 1,
|
|
125
|
-
"description": "Intended audiences for the presentation. Each item accepts either:\n- A string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Audience object for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.audiences.records[] \xC3\xA2\xE2\u20AC\xA0\xE2\u20AC\u2122 catalogs.audiences.source \xC3\xA2\xE2\u20AC\xA0\xE2\u20AC\u2122 default catalog at https://www.pptx.gallery/audiences.",
|
|
129
|
+
"minItems": 1
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"description": "Intended audiences for the presentation. Accepts either:\n- A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference.\n- An array of string shorthands and/or inline Audience objects for custom audience metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-audience/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.audiences.records[] \u2192 catalogs.audiences.source \u2192 default catalog at https://www.pptx.gallery/audiences.",
|
|
126
133
|
"examples": [
|
|
134
|
+
"executives",
|
|
135
|
+
"Biology Students and Wildlife Enthusiasts",
|
|
127
136
|
[
|
|
128
137
|
"executives"
|
|
129
138
|
],
|
|
@@ -158,7 +167,7 @@ var presentation = {
|
|
|
158
167
|
"$ref": "#/$defs/Purpose"
|
|
159
168
|
}
|
|
160
169
|
],
|
|
161
|
-
"description": "Primary goal of the presentation. Accepts either:\n- A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.purposes.records[] \
|
|
170
|
+
"description": "Primary goal of the presentation. Accepts either:\n- A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Purpose object for custom purpose metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-purpose/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.purposes.records[] \u2192 catalogs.purposes.source \u2192 default catalog at https://www.pptx.gallery/purposes.",
|
|
162
171
|
"examples": [
|
|
163
172
|
"Raise a Series B round of $30M",
|
|
164
173
|
"align",
|
|
@@ -184,7 +193,7 @@ var presentation = {
|
|
|
184
193
|
"$ref": "#/$defs/Language"
|
|
185
194
|
}
|
|
186
195
|
],
|
|
187
|
-
"description": "Language for the presentation content. Accepts either:\n- A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.languages.records[] \
|
|
196
|
+
"description": "Language for the presentation content. Accepts either:\n- A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Language object for custom language metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-language/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.languages.records[] \u2192 catalogs.languages.source \u2192 default catalog at https://www.pptx.gallery/languages.",
|
|
188
197
|
"examples": [
|
|
189
198
|
"en-US",
|
|
190
199
|
"en-GB",
|
|
@@ -218,7 +227,7 @@ var presentation = {
|
|
|
218
227
|
"$ref": "#/$defs/Tone"
|
|
219
228
|
}
|
|
220
229
|
],
|
|
221
|
-
"description": "Desired tone for the presentation. Accepts either:\n- A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.tones.records[] \
|
|
230
|
+
"description": "Desired tone for the presentation. Accepts either:\n- A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference.\n- An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-tone/v1 without '$schema'.\n\nResolution order for catalog ids and references: inline catalogs.tones.records[] \u2192 catalogs.tones.source \u2192 default catalog at https://www.pptx.gallery/tones.",
|
|
222
231
|
"examples": [
|
|
223
232
|
"formal",
|
|
224
233
|
"casual",
|
|
@@ -308,7 +317,7 @@ Accepts two forms:
|
|
|
308
317
|
- String shorthand for the common case: 'narrative = "classic-story"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record file, or a 'pkg:' reference to a locally-installed package.
|
|
309
318
|
- Object form for inline overrides or fully custom narratives: 'narrative = { id: "classic-story", beats: [...] }'. The object shape mirrors https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.
|
|
310
319
|
|
|
311
|
-
Resolution order: inline catalogs.narratives.records[] \
|
|
320
|
+
Resolution order: inline catalogs.narratives.records[] \u2192 catalogs.narratives.source \u2192 default catalog at https://www.pptx.gallery/narratives. Unknown ids produce a validation warning, not an error.
|
|
312
321
|
|
|
313
322
|
Deck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside the narrative object.`,
|
|
314
323
|
"examples": [
|
|
@@ -799,7 +808,7 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
799
808
|
},
|
|
800
809
|
"Organization": {
|
|
801
810
|
"type": "object",
|
|
802
|
-
"description": "An organization associated with the presentation \
|
|
811
|
+
"description": "An organization associated with the presentation \u2014 typically the presenting company, but also hosts, partners, clients, or sponsors. Surfaced on cover slides, footers, and brand bars; the primary organization's logo is the default deck logo unless overridden by design.logo.",
|
|
803
812
|
"required": [
|
|
804
813
|
"id",
|
|
805
814
|
"name"
|
|
@@ -983,7 +992,7 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
983
992
|
},
|
|
984
993
|
"Socials": {
|
|
985
994
|
"type": "object",
|
|
986
|
-
"description": "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string \
|
|
995
|
+
"description": "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string \u2014 either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern, handle prefix, brand color, and themed icons used by renderers.\n\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] \u2192 catalogs.socialPlatforms.source \u2192 default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.",
|
|
987
996
|
"additionalProperties": {
|
|
988
997
|
"type": "string",
|
|
989
998
|
"description": "Handle or URL for the platform identified by the property key."
|
|
@@ -1007,7 +1016,7 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
1007
1016
|
},
|
|
1008
1017
|
"Narrative": {
|
|
1009
1018
|
"type": "object",
|
|
1010
|
-
"description": "Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nNarrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure \
|
|
1019
|
+
"description": "Structured storyline used by AI to shape generated content. Mirrors the OPF Narrative Template record at https://openpresentation.org/schema/opf-narrative/v1 (sans '$schema'), so a library record and an inline narrative are interchangeable.\n\nNarrative declares the deck's intended story arc; slides may opt into beats via Slide.beat. The narrative does not constrain slide structure \u2014 validators warn on drift (orphan slides, unused beats) but never error. Slides are the source of truth; narrative is intent that travels with the deck.\n\nWhen 'id' matches a record in the resolved 'narratives' catalog, the inline fields override matching fields on the catalog record (beats merge by beat 'id'). When 'id' doesn't match, this object defines a fully custom inline narrative.\n\nDeck-level concerns that aren't part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root rather than inside this object.",
|
|
1011
1020
|
"properties": {
|
|
1012
1021
|
"id": {
|
|
1013
1022
|
"type": "string",
|
|
@@ -1028,7 +1037,7 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
1028
1037
|
"description": "Human-readable narrative name.",
|
|
1029
1038
|
"examples": [
|
|
1030
1039
|
"Classic Story",
|
|
1031
|
-
"Problem \
|
|
1040
|
+
"Problem \u2192 Solution",
|
|
1032
1041
|
"SCQA",
|
|
1033
1042
|
"Founder Pitch"
|
|
1034
1043
|
]
|
|
@@ -1118,7 +1127,7 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
1118
1127
|
},
|
|
1119
1128
|
"NarrativeBeat": {
|
|
1120
1129
|
"type": "object",
|
|
1121
|
-
"description": "A single narrative beat \
|
|
1130
|
+
"description": "A single narrative beat \u2014 a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blueprint hints (slideType, layoutHint, thoughtCues, instructions) that guide the assigned slide.\n\nMirrors the Beat definition in narrative.schema.json (https://openpresentation.org/schema/opf-narrative/v1) so library entries and inline OPF beats are interchangeable.",
|
|
1122
1131
|
"required": [
|
|
1123
1132
|
"id",
|
|
1124
1133
|
"name"
|
|
@@ -1155,7 +1164,7 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
1155
1164
|
},
|
|
1156
1165
|
"instructions": {
|
|
1157
1166
|
"type": "string",
|
|
1158
|
-
"description": "Short author-facing instruction for the beat \
|
|
1167
|
+
"description": "Short author-facing instruction for the beat \u2014 typically one phrase. Complements 'description' with a concise directive.",
|
|
1159
1168
|
"examples": [
|
|
1160
1169
|
"Capture audience attention",
|
|
1161
1170
|
"Introduce problem",
|
|
@@ -1186,7 +1195,7 @@ Deck-level concerns that aren't part of the storyline (audience, tone, takeaway,
|
|
|
1186
1195
|
},
|
|
1187
1196
|
"layoutHint": {
|
|
1188
1197
|
"type": "string",
|
|
1189
|
-
"description": "Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout \
|
|
1198
|
+
"description": "Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout \u2014 against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.",
|
|
1190
1199
|
"examples": [
|
|
1191
1200
|
"section-divider",
|
|
1192
1201
|
"title-slide",
|
|
@@ -1842,7 +1851,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1842
1851
|
},
|
|
1843
1852
|
"major": {
|
|
1844
1853
|
"type": "string",
|
|
1845
|
-
"description": "Heading (major) font family \
|
|
1854
|
+
"description": "Heading (major) font family \u2014 mirrors the OOXML majorFont entry. Pairs with 'minor'.",
|
|
1846
1855
|
"examples": [
|
|
1847
1856
|
"Aptos Display",
|
|
1848
1857
|
"Calibri",
|
|
@@ -1852,7 +1861,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1852
1861
|
},
|
|
1853
1862
|
"minor": {
|
|
1854
1863
|
"type": "string",
|
|
1855
|
-
"description": "Body (minor) font family \
|
|
1864
|
+
"description": "Body (minor) font family \u2014 mirrors the OOXML minorFont entry. Pairs with 'major'.",
|
|
1856
1865
|
"examples": [
|
|
1857
1866
|
"Aptos",
|
|
1858
1867
|
"Calibri",
|
|
@@ -2421,7 +2430,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2421
2430
|
},
|
|
2422
2431
|
"layout": {
|
|
2423
2432
|
"type": "string",
|
|
2424
|
-
"description": "Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\n\nResolution order: inline catalogs.layouts.records[] \
|
|
2433
|
+
"description": "Optional slide layout reference. Resolves to the 'id' of a 'layouts' catalog record. When omitted, engines infer a layout from the slide's root payload or promoted region keys. Accepts a bare id (lowercase kebab-case, e.g. 'title-subtitle'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.\n\nResolution order: inline catalogs.layouts.records[] \u2192 catalogs.layouts.source \u2192 default catalog at https://www.pptx.gallery/layouts.",
|
|
2425
2434
|
"examples": [
|
|
2426
2435
|
"title",
|
|
2427
2436
|
"title-subtitle",
|
|
@@ -2478,7 +2487,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2478
2487
|
"items": {
|
|
2479
2488
|
"$ref": "#/$defs/ListItem"
|
|
2480
2489
|
},
|
|
2481
|
-
"description": "Full-slide generic list payload. Presence of this field infers type 'list'."
|
|
2490
|
+
"description": "Full-slide generic list payload. Presence of this field infers type 'list'. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for layout-agnostic blocks."
|
|
2482
2491
|
},
|
|
2483
2492
|
"bullets": {
|
|
2484
2493
|
"type": "array",
|
|
@@ -2548,7 +2557,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2548
2557
|
"items": {
|
|
2549
2558
|
"$ref": "#/$defs/ContentPayload"
|
|
2550
2559
|
},
|
|
2551
|
-
"description": "Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified."
|
|
2560
|
+
"description": "Layout-agnostic content blocks rendered together as a composed payload when exact placement is unspecified. At slide root, multiple content payload kinds with no explicit type, blocks, or regions are accepted as shorthand for equivalent blocks."
|
|
2552
2561
|
},
|
|
2553
2562
|
"design": {
|
|
2554
2563
|
"$ref": "#/$defs/Design",
|
|
@@ -3760,7 +3769,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
3760
3769
|
},
|
|
3761
3770
|
"Catalogs": {
|
|
3762
3771
|
"type": "object",
|
|
3763
|
-
"description": "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] \
|
|
3772
|
+
"description": "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] \u2192 catalogs.<kind>.source \u2192 default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.",
|
|
3764
3773
|
"properties": {
|
|
3765
3774
|
"narratives": {
|
|
3766
3775
|
"$ref": "#/$defs/CatalogEntry",
|
|
@@ -3852,7 +3861,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
3852
3861
|
var audience = {
|
|
3853
3862
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3854
3863
|
"$id": "https://openpresentation.org/schema/opf-audience/v1",
|
|
3855
|
-
"title": "
|
|
3864
|
+
"title": "Audience",
|
|
3856
3865
|
"description": "Schema for audience records in the pptx.gallery library. Each record names an audience archetype (e.g. 'executives', 'engineering-team', 'investors') and carries seniority, technical-fluency, decision-power, and attention-budget hints used by AI-driven generation. Audiences are referenced from OPF documents via audience; the engine resolves the reference against catalogs.audiences (inline) \u2192 catalogs.audiences.source \u2192 the default catalog at https://www.pptx.gallery/audiences. The audience field also accepts free-form strings; this catalog is for engine-aware audience archetypes that carry generation hints.",
|
|
3857
3866
|
"type": "object",
|
|
3858
3867
|
"required": [
|
|
@@ -4024,7 +4033,7 @@ var audience = {
|
|
|
4024
4033
|
var purpose = {
|
|
4025
4034
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4026
4035
|
"$id": "https://openpresentation.org/schema/opf-purpose/v1",
|
|
4027
|
-
"title": "
|
|
4036
|
+
"title": "Purpose",
|
|
4028
4037
|
"description": "Schema for purpose records in the pptx.gallery library. Each record names a presentation objective such as informing, aligning, persuading, driving a decision, or selling. Purposes are referenced from OPF documents via purpose; the engine resolves the reference against catalogs.purposes (inline) \u2192 catalogs.purposes.source \u2192 the default catalog at https://www.pptx.gallery/purposes. The purpose field also accepts free-form strings and inline Purpose objects.",
|
|
4029
4038
|
"type": "object",
|
|
4030
4039
|
"required": [
|
|
@@ -4135,7 +4144,7 @@ var purpose = {
|
|
|
4135
4144
|
var tone = {
|
|
4136
4145
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4137
4146
|
"$id": "https://openpresentation.org/schema/opf-tone/v1",
|
|
4138
|
-
"title": "
|
|
4147
|
+
"title": "Tone",
|
|
4139
4148
|
"description": "Schema for tone records in the pptx.gallery library. Each record names a presentation tone (e.g. 'formal', 'casual', 'inspirational') and carries voice cues, anti-patterns, and sample phrases that AI-driven generation uses to shape output. Tones are referenced from OPF documents via tone; the engine resolves the reference against catalogs.tones (inline) \u2192 catalogs.tones.source \u2192 the default catalog at https://www.pptx.gallery/tones.",
|
|
4140
4149
|
"type": "object",
|
|
4141
4150
|
"required": [
|
|
@@ -4294,7 +4303,7 @@ var tone = {
|
|
|
4294
4303
|
var theme = {
|
|
4295
4304
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4296
4305
|
"$id": "https://openpresentation.org/schema/opf-theme/v1",
|
|
4297
|
-
"title": "
|
|
4306
|
+
"title": "Theme",
|
|
4298
4307
|
"description": "Schema for theme records in the pptx.gallery library. Each theme is a small, named bundle that pairs a color scheme, a font scheme, a default theme-controlled background, and a slide size. Themes are referenced from OPF documents via design.theme or design.theme.id; the engine resolves the reference against catalogs.themes (inline) \u2192 catalogs.themes.source \u2192 the default catalog at https://www.pptx.gallery/themes. Inline overrides on design.colorScheme / design.fontScheme / design.background / design.dimensions take precedence over a resolved theme.",
|
|
4299
4308
|
"type": "object",
|
|
4300
4309
|
"required": [
|
|
@@ -4470,7 +4479,7 @@ var theme = {
|
|
|
4470
4479
|
var layout = {
|
|
4471
4480
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4472
4481
|
"$id": "https://openpresentation.org/schema/opf-layout/v1",
|
|
4473
|
-
"title": "
|
|
4482
|
+
"title": "Slide Layout",
|
|
4474
4483
|
"description": "Schema for slide-layout records in the pptx.gallery library. Each record describes a semantic slide layout \u2014 what regions it exposes and what content kinds those regions are intended to hold. Layouts are referenced from OPF documents via Slide.layout; the engine resolves the reference against catalogs.layouts (inline) \u2192 catalogs.layouts.source \u2192 the default catalog at https://www.pptx.gallery/layouts. Free-form custom layout names that don't resolve through any catalog fall through to engine-defined layouts.",
|
|
4475
4484
|
"type": "object",
|
|
4476
4485
|
"required": [
|
|
@@ -4752,7 +4761,7 @@ var layout = {
|
|
|
4752
4761
|
var chartType = {
|
|
4753
4762
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4754
4763
|
"$id": "https://openpresentation.org/schema/opf-chart-type/v1",
|
|
4755
|
-
"title": "
|
|
4764
|
+
"title": "Chart Type",
|
|
4756
4765
|
"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.",
|
|
4757
4766
|
"type": "object",
|
|
4758
4767
|
"additionalProperties": false,
|
|
@@ -5289,7 +5298,7 @@ var chartType = {
|
|
|
5289
5298
|
var narrative = {
|
|
5290
5299
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5291
5300
|
"$id": "https://openpresentation.org/schema/opf-narrative/v1",
|
|
5292
|
-
"title": "
|
|
5301
|
+
"title": "Narrative Template",
|
|
5293
5302
|
"description": "Schema for narrative template files in the openpresentation.org catalog. Each template describes a named story arc (e.g. 'problem-solution', 'scqa') as an ordered list of beats. Templates are referenced from OPF documents via narrative \u2014 either as a bare id string (e.g. 'classic-story') or as an inline object whose shape matches this schema (sans '$schema').",
|
|
5294
5303
|
"type": "object",
|
|
5295
5304
|
"required": [
|
|
@@ -5496,8 +5505,8 @@ var narrative = {
|
|
|
5496
5505
|
var socialPlatform = {
|
|
5497
5506
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5498
5507
|
"$id": "https://openpresentation.org/schema/opf-social-platform/v1",
|
|
5499
|
-
"title": "
|
|
5500
|
-
"description": "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform \
|
|
5508
|
+
"title": "Social Platform",
|
|
5509
|
+
"description": "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform \u2014 its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) \u2192 catalogs.socialPlatforms.source \u2192 the default catalog at https://www.pptx.gallery/social-platforms.",
|
|
5501
5510
|
"type": "object",
|
|
5502
5511
|
"required": [
|
|
5503
5512
|
"$schema",
|
|
@@ -5513,7 +5522,7 @@ var socialPlatform = {
|
|
|
5513
5522
|
"id": {
|
|
5514
5523
|
"type": "string",
|
|
5515
5524
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
5516
|
-
"description": "Stable slug used by OPF documents to reference this platform \
|
|
5525
|
+
"description": "Stable slug used by OPF documents to reference this platform \u2014 appears as a property key on Socials objects. Lowercase kebab-case.",
|
|
5517
5526
|
"examples": [
|
|
5518
5527
|
"linkedin",
|
|
5519
5528
|
"x",
|
|
@@ -5545,7 +5554,7 @@ var socialPlatform = {
|
|
|
5545
5554
|
},
|
|
5546
5555
|
"summary": {
|
|
5547
5556
|
"type": "string",
|
|
5548
|
-
"description": "One-sentence positioning of the platform \
|
|
5557
|
+
"description": "One-sentence positioning of the platform \u2014 what it's used for and who's on it.",
|
|
5549
5558
|
"examples": [
|
|
5550
5559
|
"Professional social network for individuals and companies.",
|
|
5551
5560
|
"Real-time microblog for news, opinions, and discussion."
|
|
@@ -5561,7 +5570,7 @@ var socialPlatform = {
|
|
|
5561
5570
|
"baseUrl": {
|
|
5562
5571
|
"type": "string",
|
|
5563
5572
|
"format": "uri",
|
|
5564
|
-
"description": "Canonical base URL of the platform \
|
|
5573
|
+
"description": "Canonical base URL of the platform \u2014 used as the prefix when normalizing handles to full URLs.",
|
|
5565
5574
|
"examples": [
|
|
5566
5575
|
"https://linkedin.com",
|
|
5567
5576
|
"https://x.com",
|
|
@@ -5695,7 +5704,7 @@ var socialPlatform = {
|
|
|
5695
5704
|
var language = {
|
|
5696
5705
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5697
5706
|
"$id": "https://openpresentation.org/schema/opf-language/v1",
|
|
5698
|
-
"title": "
|
|
5707
|
+
"title": "Language",
|
|
5699
5708
|
"description": "Schema for language records in the pptx.gallery library. Each record names a presentation language, carries a BCP-47 language tag, and pairs it with sensible default font schemes for PowerPoint and Google Slides output. Languages are referenced from OPF documents via language; the engine resolves the reference against catalogs.languages (inline) \u2192 catalogs.languages.source \u2192 the default catalog at https://www.pptx.gallery/languages. The presentation language field also accepts BCP-47 tags directly or inline Language objects for engine-aware language records that carry default-font hints.",
|
|
5700
5709
|
"type": "object",
|
|
5701
5710
|
"required": [
|
|
@@ -5865,7 +5874,7 @@ var language = {
|
|
|
5865
5874
|
var colorScheme = {
|
|
5866
5875
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5867
5876
|
"$id": "https://openpresentation.org/schema/opf-color-scheme/v1",
|
|
5868
|
-
"title": "
|
|
5877
|
+
"title": "Color Scheme",
|
|
5869
5878
|
"description": "Schema for color-scheme records in the pptx.gallery library. Each scheme is a named palette with the twelve PowerPoint color slots (six accents, two darks, two lights, plus hyperlink and followed-hyperlink), suitable for being mapped directly into OOXML theme XML. Color schemes are referenced from OPF documents via design.colorScheme or design.colorScheme.id; the engine resolves the reference against catalogs.colorSchemes (inline) -> catalogs.colorSchemes.source -> the default catalog at https://www.pptx.gallery/color-schemes. Slot overrides on design.colorScheme take precedence over the resolved scheme.\n\nThe slot fields here mirror the inline-override fields on the in-document ColorScheme type (in opf.schema.json), so library entries and inline OPF overrides are interchangeable.",
|
|
5870
5879
|
"type": "object",
|
|
5871
5880
|
"required": [
|
|
@@ -6065,7 +6074,7 @@ var colorScheme = {
|
|
|
6065
6074
|
var fontScheme = {
|
|
6066
6075
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
6067
6076
|
"$id": "https://openpresentation.org/schema/opf-font-scheme/v1",
|
|
6068
|
-
"title": "
|
|
6077
|
+
"title": "Font Scheme",
|
|
6069
6078
|
"description": "Schema for font-scheme records in the pptx.gallery library. Each scheme pairs a major (heading) and minor (body) font family in the OOXML majorFont/minorFont sense, scoped to a target app (PowerPoint or Google Slides) and a language family (Latin, East Asian, or Complex Script). Font schemes are referenced from OPF documents via design.fontScheme or design.fontScheme.id; the engine resolves the reference against catalogs.fontSchemes (inline) \u2192 catalogs.fontSchemes.source \u2192 the default catalog at https://www.pptx.gallery/font-schemes. Role overrides on design.fontScheme (heading, body, accent, code) take precedence over the resolved scheme.",
|
|
6070
6079
|
"type": "object",
|
|
6071
6080
|
"required": [
|
|
@@ -6484,6 +6493,12 @@ function inferredKinds(value) {
|
|
|
6484
6493
|
if (hasOwn(value, "timeline")) kinds.push("timeline");
|
|
6485
6494
|
return kinds;
|
|
6486
6495
|
}
|
|
6496
|
+
function isImplicitBlocksComposition(value, inferred, options) {
|
|
6497
|
+
if (options.allowBlocks !== true || hasOwn(value, "blocks")) {
|
|
6498
|
+
return false;
|
|
6499
|
+
}
|
|
6500
|
+
return inferred.length > 1;
|
|
6501
|
+
}
|
|
6487
6502
|
function validateContentPayload(value, path, options = {}) {
|
|
6488
6503
|
const issues = [];
|
|
6489
6504
|
const explicitType = value.type;
|
|
@@ -6510,6 +6525,9 @@ function validateContentPayload(value, path, options = {}) {
|
|
|
6510
6525
|
return issues;
|
|
6511
6526
|
}
|
|
6512
6527
|
if (!kind && inferred.length > 1) {
|
|
6528
|
+
if (isImplicitBlocksComposition(value, inferred, options)) {
|
|
6529
|
+
return issues;
|
|
6530
|
+
}
|
|
6513
6531
|
issues.push(semanticIssue(path, "content payload mixes fields from incompatible content types", {
|
|
6514
6532
|
inferredTypes: inferred
|
|
6515
6533
|
}));
|