@openpresentation/opf 0.14.0 → 0.15.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.
- package/README.md +24 -38
- package/dist/catalog-refs-BSfGELpt.d.ts +128 -0
- package/dist/catalog-schemas-CinPh5WA.d.ts +12 -0
- package/dist/catalog.d.ts +91 -0
- package/dist/{chunk-XOZ4KMSR.js → catalog.js} +16514 -8800
- package/dist/{chart-data-B_3z9VTb.d.ts → chart-data-BnNqgnC-.d.ts} +1 -1
- package/dist/{chunk-LS2FMPI5.js → chunk-2CJPC4HI.js} +760 -851
- package/dist/{chunk-4VJDTF55.js → chunk-374R35TJ.js} +1 -1
- package/dist/{chunk-UPQQD7MA.js → chunk-3JG4YXWF.js} +7 -5
- package/dist/{chunk-4LDGKLUC.js → chunk-3RKB4RDJ.js} +1 -1
- package/dist/{chunk-BFLVSVA7.js → chunk-5FTUIDUH.js} +1 -1
- package/dist/{chunk-D3TY4TT6.js → chunk-HXHOZ7AH.js} +1407 -154
- package/dist/{chunk-6OXY2CP3.js → chunk-O744SXXA.js} +319 -162
- package/dist/{chunk-JDJBDYSR.js → chunk-QDI75P2M.js} +194 -846
- package/dist/chunk-SPFV27O5.js +210 -0
- package/dist/chunk-TRDXRRQK.js +17 -0
- package/dist/{chunk-Z65B2B77.js → chunk-TWQJLI6E.js} +2 -2
- package/dist/{chunk-Q2TCMN56.js → chunk-U4J75TRG.js} +1 -1
- package/dist/{chunk-XIZUK2XM.js → chunk-UBFJ2QHH.js} +5 -3
- package/dist/{chunk-CSQHPVGL.js → chunk-VGAOJEY7.js} +1 -1
- package/dist/{chunk-5ZU6JAPP.js → chunk-ZPU46TFA.js} +1 -1
- package/dist/{composition-_WEwBe2a.d.ts → composition-D2tghM82.d.ts} +233 -108
- package/dist/composition.d.ts +3 -2
- package/dist/composition.js +2 -2
- package/dist/convert.d.ts +14 -17
- package/dist/convert.js +36 -39
- package/dist/data.d.ts +1 -1
- package/dist/data.js +3 -3
- package/dist/diff.d.ts +1 -1
- package/dist/diff.js +7 -7
- package/dist/docs.js +29 -29
- package/dist/examples.d.ts +1 -1
- package/dist/examples.js +48431 -3697
- package/dist/{finding-C_por275.d.ts → finding-CT_f_vbD.d.ts} +2 -2
- package/dist/format.js +2 -2
- package/dist/index.d.ts +225 -76
- package/dist/index.js +341 -258
- package/dist/json-BFSdESOE.d.ts +19 -0
- package/dist/markdown.d.ts +19 -7
- package/dist/markdown.js +9 -9
- package/dist/{pagination-BZpXLvFL.d.ts → pagination-wedbe7eq.d.ts} +31 -31
- package/dist/pagination.d.ts +4 -5
- package/dist/pagination.js +6 -6
- package/dist/patch.d.ts +1 -1
- package/dist/patch.js +6 -6
- package/dist/{presentation-C5eHkevA.d.ts → presentation-CDKQVkyI.d.ts} +382 -550
- package/dist/repo-readme.js +1 -1
- package/dist/schemas.d.ts +284 -1
- package/dist/schemas.js +1 -1
- package/dist/spec/README.md +1 -1
- package/dist/spec/catalogs/font-schemes/angsana-new.json +1 -1
- package/dist/spec/catalogs/font-schemes/aparajita.json +2 -2
- package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +1 -1
- package/dist/spec/catalogs/font-schemes/batang.json +1 -1
- package/dist/spec/catalogs/font-schemes/daunpenh.json +1 -1
- package/dist/spec/catalogs/font-schemes/david.json +1 -1
- package/dist/spec/catalogs/font-schemes/dilleniaupc.json +1 -1
- package/dist/spec/catalogs/font-schemes/fangsong.json +1 -1
- package/dist/spec/catalogs/font-schemes/gautami.json +1 -1
- package/dist/spec/catalogs/font-schemes/gisha.json +2 -2
- package/dist/spec/catalogs/font-schemes/gungsuh.json +1 -1
- package/dist/spec/catalogs/font-schemes/index.json +1 -1
- package/dist/spec/catalogs/font-schemes/kalinga.json +1 -1
- package/dist/spec/catalogs/font-schemes/kartika.json +1 -1
- package/dist/spec/catalogs/font-schemes/khmer-ui.json +1 -1
- package/dist/spec/catalogs/font-schemes/latha.json +1 -1
- package/dist/spec/catalogs/font-schemes/malgun-gothic.json +1 -1
- package/dist/spec/catalogs/font-schemes/mangal.json +3 -3
- package/dist/spec/catalogs/font-schemes/meiryo.json +1 -1
- package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +1 -1
- package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +4 -4
- package/dist/spec/catalogs/font-schemes/mingliu.json +1 -1
- package/dist/spec/catalogs/font-schemes/miriam.json +1 -1
- package/dist/spec/catalogs/font-schemes/ms-mincho.json +1 -1
- package/dist/spec/catalogs/font-schemes/nirmala-ui.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +3 -3
- package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +4 -4
- package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +1 -1
- package/dist/spec/catalogs/font-schemes/noto-sans.json +4 -4
- package/dist/spec/catalogs/font-schemes/nyala.json +1 -1
- package/dist/spec/catalogs/font-schemes/pmingliu.json +1 -1
- package/dist/spec/catalogs/font-schemes/raavi.json +1 -1
- package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +3 -3
- package/dist/spec/catalogs/font-schemes/shonar-bangla.json +2 -2
- package/dist/spec/catalogs/font-schemes/shruti.json +1 -1
- package/dist/spec/catalogs/font-schemes/simsun.json +1 -1
- package/dist/spec/catalogs/font-schemes/sylfaen.json +2 -2
- package/dist/spec/catalogs/font-schemes/traditional-arabic.json +3 -3
- package/dist/spec/catalogs/font-schemes/tunga.json +1 -1
- package/dist/spec/catalogs/font-schemes/vrinda.json +1 -1
- package/dist/spec/catalogs/font-schemes/yu-gothic.json +1 -1
- package/dist/spec/catalogs/layouts/capability-map.json +1 -4
- package/dist/spec/catalogs/layouts/chart-1x-title-center.json +30 -0
- package/dist/spec/catalogs/layouts/chart-2x-title-center.json +36 -0
- package/dist/spec/catalogs/layouts/chart-2x-vertical-title-left.json +37 -0
- package/dist/spec/catalogs/layouts/chart-3x-bottom-vertical-title-left.json +46 -0
- package/dist/spec/catalogs/layouts/chart-3x-left-title-center.json +45 -0
- package/dist/spec/catalogs/layouts/chart-3x-left.json +40 -0
- package/dist/spec/catalogs/layouts/chart-3x-right-title-center.json +45 -0
- package/dist/spec/catalogs/layouts/chart-3x-right.json +40 -0
- package/dist/spec/catalogs/layouts/chart-3x-title-center.json +39 -0
- package/dist/spec/catalogs/layouts/chart-3x-top-vertical-title-left.json +46 -0
- package/dist/spec/catalogs/layouts/competitive-landscape.json +1 -4
- package/dist/spec/catalogs/layouts/customer-journey.json +1 -4
- package/dist/spec/catalogs/layouts/decision-tree.json +1 -4
- package/dist/spec/catalogs/layouts/ecosystem-map.json +1 -4
- package/dist/spec/catalogs/layouts/extract/canonical.json +0 -9
- package/dist/spec/catalogs/layouts/geographic-map.json +1 -4
- package/dist/spec/catalogs/layouts/icon-grid.json +1 -4
- package/dist/spec/catalogs/layouts/image-1x-crop-title-center.json +32 -0
- package/dist/spec/catalogs/layouts/image-1x-crop-title-left.json +32 -0
- package/dist/spec/catalogs/layouts/image-1x-crop.json +27 -0
- package/dist/spec/catalogs/layouts/image-1x-fit-title-center.json +32 -0
- package/dist/spec/catalogs/layouts/image-1x.json +3 -0
- package/dist/spec/catalogs/layouts/image-2x-crop-title-center.json +38 -0
- package/dist/spec/catalogs/layouts/image-2x-crop-vertical-title-left.json +39 -0
- package/dist/spec/catalogs/layouts/image-2x-crop-vertical.json +34 -0
- package/dist/spec/catalogs/layouts/image-2x-crop.json +33 -0
- package/dist/spec/catalogs/layouts/image-2x-fit-title-center.json +38 -0
- package/dist/spec/catalogs/layouts/image-2x-fit-vertical-title-left.json +39 -0
- package/dist/spec/catalogs/layouts/image-2x-fit-vertical.json +34 -0
- package/dist/spec/catalogs/layouts/image-2x.json +3 -0
- package/dist/spec/catalogs/layouts/image-3x-crop-title-center.json +41 -0
- package/dist/spec/catalogs/layouts/image-3x-crop-vertical-title-left.json +42 -0
- package/dist/spec/catalogs/layouts/image-3x-crop-vertical.json +37 -0
- package/dist/spec/catalogs/layouts/image-3x-crop.json +36 -0
- package/dist/spec/catalogs/layouts/image-3x-fit-title-center.json +41 -0
- package/dist/spec/catalogs/layouts/image-3x-fit-vertical-title-left.json +42 -0
- package/dist/spec/catalogs/layouts/image-3x-fit-vertical.json +37 -0
- package/dist/spec/catalogs/layouts/image-3x-fit.json +36 -0
- package/dist/spec/catalogs/layouts/image-3x.json +3 -0
- package/dist/spec/catalogs/layouts/image-focus.json +3 -6
- package/dist/spec/catalogs/layouts/image-only-1x-crop-title-center.json +31 -0
- package/dist/spec/catalogs/layouts/image-only-1x-fit-title-center.json +31 -0
- package/dist/spec/catalogs/layouts/image-only-2x-crop-title-center.json +37 -0
- package/dist/spec/catalogs/layouts/image-only-2x-crop-vertical-title-left.json +38 -0
- package/dist/spec/catalogs/layouts/image-only-2x-crop-vertical.json +33 -0
- package/dist/spec/catalogs/layouts/image-only-2x-fit-title-center.json +37 -0
- package/dist/spec/catalogs/layouts/image-only-2x-fit-vertical-title-left.json +38 -0
- package/dist/spec/catalogs/layouts/image-only-2x-fit-vertical.json +33 -0
- package/dist/spec/catalogs/layouts/image-only-3x-crop-title-center.json +40 -0
- package/dist/spec/catalogs/layouts/image-only-3x-crop-vertical-title-left.json +41 -0
- package/dist/spec/catalogs/layouts/image-only-3x-crop-vertical.json +36 -0
- package/dist/spec/catalogs/layouts/image-only-3x-crop.json +35 -0
- package/dist/spec/catalogs/layouts/image-only-3x-fit-title-center.json +40 -0
- package/dist/spec/catalogs/layouts/image-only-3x-fit-vertical-title-left.json +41 -0
- package/dist/spec/catalogs/layouts/image-only-3x-fit-vertical.json +36 -0
- package/dist/spec/catalogs/layouts/image-only-3x-fit.json +35 -0
- package/dist/spec/catalogs/layouts/index.json +1041 -151
- package/dist/spec/catalogs/layouts/list-1x-box-title-center.json +32 -0
- package/dist/spec/catalogs/layouts/list-1x-box-vertical-title-center.json +33 -0
- package/dist/spec/catalogs/layouts/list-1x-box-vertical-title-left.json +33 -0
- package/dist/spec/catalogs/layouts/list-1x-box-vertical.json +28 -0
- package/dist/spec/catalogs/layouts/list-1x-box.json +27 -0
- package/dist/spec/catalogs/layouts/list-1x-itemimage-title-center.json +32 -0
- package/dist/spec/catalogs/layouts/list-1x-itemimage-vertical-title-center.json +33 -0
- package/dist/spec/catalogs/layouts/list-1x-title-center.json +31 -0
- package/dist/spec/catalogs/layouts/list-1x-vertical-title-center.json +32 -0
- package/dist/spec/catalogs/layouts/list-2x-box-title-center.json +38 -0
- package/dist/spec/catalogs/layouts/list-2x-box-vertical-title-center.json +39 -0
- package/dist/spec/catalogs/layouts/list-2x-box-vertical-title-left.json +39 -0
- package/dist/spec/catalogs/layouts/list-2x-box-vertical.json +34 -0
- package/dist/spec/catalogs/layouts/list-2x-box.json +33 -0
- package/dist/spec/catalogs/layouts/list-2x-itemimage-title-center.json +38 -0
- package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical-title-center.json +39 -0
- package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical-title-left.json +39 -0
- package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical.json +34 -0
- package/dist/spec/catalogs/layouts/list-2x-title-center.json +37 -0
- package/dist/spec/catalogs/layouts/list-2x-vertical-title-center.json +38 -0
- package/dist/spec/catalogs/layouts/list-2x-vertical-title-left.json +38 -0
- package/dist/spec/catalogs/layouts/list-2x-vertical.json +33 -0
- package/dist/spec/catalogs/layouts/list-3x-box-title-center.json +41 -0
- package/dist/spec/catalogs/layouts/list-3x-box-vertical-title-center.json +42 -0
- package/dist/spec/catalogs/layouts/list-3x-box-vertical-title-left.json +42 -0
- package/dist/spec/catalogs/layouts/list-3x-box-vertical.json +37 -0
- package/dist/spec/catalogs/layouts/list-3x-box.json +36 -0
- package/dist/spec/catalogs/layouts/list-3x-itemimage-title-center.json +41 -0
- package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical-title-center.json +42 -0
- package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical-title-left.json +42 -0
- package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical.json +37 -0
- package/dist/spec/catalogs/layouts/list-3x-itemimage.json +36 -0
- package/dist/spec/catalogs/layouts/list-3x-title-center.json +40 -0
- package/dist/spec/catalogs/layouts/list-3x-vertical-title-center.json +41 -0
- package/dist/spec/catalogs/layouts/list-3x-vertical-title-left.json +41 -0
- package/dist/spec/catalogs/layouts/list-3x-vertical.json +36 -0
- package/dist/spec/catalogs/layouts/list-4x-box-title-center.json +45 -0
- package/dist/spec/catalogs/layouts/list-4x-box-vertical-title-center.json +45 -0
- package/dist/spec/catalogs/layouts/list-4x-box-vertical-title-left.json +45 -0
- package/dist/spec/catalogs/layouts/list-4x-box-vertical.json +40 -0
- package/dist/spec/catalogs/layouts/list-4x-box.json +40 -0
- package/dist/spec/catalogs/layouts/list-4x-itemimage-title-center.json +45 -0
- package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical-title-center.json +45 -0
- package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical-title-left.json +45 -0
- package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical.json +40 -0
- package/dist/spec/catalogs/layouts/list-4x-title-center.json +44 -0
- package/dist/spec/catalogs/layouts/list-4x-vertical-title-center.json +44 -0
- package/dist/spec/catalogs/layouts/list-4x-vertical-title-left.json +44 -0
- package/dist/spec/catalogs/layouts/list-4x-vertical.json +39 -0
- package/dist/spec/catalogs/layouts/list-5x-box-title-center.json +48 -0
- package/dist/spec/catalogs/layouts/list-5x-box-vertical-title-center.json +50 -0
- package/dist/spec/catalogs/layouts/list-5x-box-vertical-title-left.json +50 -0
- package/dist/spec/catalogs/layouts/list-5x-box-vertical.json +45 -0
- package/dist/spec/catalogs/layouts/list-5x-box.json +43 -0
- package/dist/spec/catalogs/layouts/list-5x-itemimage-title-center.json +48 -0
- package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical-title-center.json +48 -0
- package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical-title-left.json +48 -0
- package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical.json +43 -0
- package/dist/spec/catalogs/layouts/list-5x-title-center.json +47 -0
- package/dist/spec/catalogs/layouts/list-5x-vertical-title-center.json +47 -0
- package/dist/spec/catalogs/layouts/list-5x-vertical-title-left.json +47 -0
- package/dist/spec/catalogs/layouts/list-5x-vertical.json +42 -0
- package/dist/spec/catalogs/layouts/list-6x-box-title-center.json +51 -0
- package/dist/spec/catalogs/layouts/list-6x-box-vertical-title-center.json +53 -0
- package/dist/spec/catalogs/layouts/list-6x-box-vertical-title-left.json +53 -0
- package/dist/spec/catalogs/layouts/list-6x-box-vertical.json +48 -0
- package/dist/spec/catalogs/layouts/list-6x-box.json +46 -0
- package/dist/spec/catalogs/layouts/list-6x-itemimage-title-center.json +51 -0
- package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical-title-center.json +51 -0
- package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical-title-left.json +51 -0
- package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical.json +46 -0
- package/dist/spec/catalogs/layouts/list-6x-title-center.json +50 -0
- package/dist/spec/catalogs/layouts/list-6x-vertical-title-center.json +50 -0
- package/dist/spec/catalogs/layouts/list-6x-vertical-title-left.json +50 -0
- package/dist/spec/catalogs/layouts/list-6x-vertical.json +45 -0
- package/dist/spec/catalogs/layouts/network-dependency-map.json +1 -4
- package/dist/spec/catalogs/layouts/number-1x-box-title-center.json +30 -0
- package/dist/spec/catalogs/layouts/number-1x-box.json +25 -0
- package/dist/spec/catalogs/layouts/number-1x-title-center.json +29 -0
- package/dist/spec/catalogs/layouts/number-2x-box-title-center.json +36 -0
- package/dist/spec/catalogs/layouts/number-2x-box.json +31 -0
- package/dist/spec/catalogs/layouts/number-2x-title-center.json +35 -0
- package/dist/spec/catalogs/layouts/number-3x-box-title-center.json +39 -0
- package/dist/spec/catalogs/layouts/number-3x-box.json +34 -0
- package/dist/spec/catalogs/layouts/number-3x-title-center.json +38 -0
- package/dist/spec/catalogs/layouts/number-4x-box-title-center.json +43 -0
- package/dist/spec/catalogs/layouts/number-4x-box.json +38 -0
- package/dist/spec/catalogs/layouts/number-4x-title-center.json +42 -0
- package/dist/spec/catalogs/layouts/number-5x-box-title-center.json +46 -0
- package/dist/spec/catalogs/layouts/number-5x-box.json +41 -0
- package/dist/spec/catalogs/layouts/number-5x-title-center.json +45 -0
- package/dist/spec/catalogs/layouts/number-6x-box-title-center.json +49 -0
- package/dist/spec/catalogs/layouts/number-6x-box.json +44 -0
- package/dist/spec/catalogs/layouts/number-6x-title-center.json +48 -0
- package/dist/spec/catalogs/layouts/persona-grid.json +1 -4
- package/dist/spec/catalogs/layouts/photo-grid.json +1 -4
- package/dist/spec/catalogs/layouts/product-feature.json +1 -4
- package/dist/spec/catalogs/layouts/screenshot-walkthrough.json +1 -4
- package/dist/spec/catalogs/layouts/swimlane-process.json +1 -4
- package/dist/spec/catalogs/layouts/team-bio.json +1 -4
- package/dist/spec/catalogs/layouts/text-1x-box-title-center.json +31 -0
- package/dist/spec/catalogs/layouts/text-1x-box-title-left.json +31 -0
- package/dist/spec/catalogs/layouts/text-1x-center-box-title-center.json +31 -0
- package/dist/spec/catalogs/layouts/text-1x-center-box-title-left.json +31 -0
- package/dist/spec/catalogs/layouts/text-1x-center-box.json +26 -0
- package/dist/spec/catalogs/layouts/text-1x-center-title-center.json +30 -0
- package/dist/spec/catalogs/layouts/text-1x-center-title-left.json +30 -0
- package/dist/spec/catalogs/layouts/text-1x-center.json +25 -0
- package/dist/spec/catalogs/layouts/text-1x-left-box.json +26 -0
- package/dist/spec/catalogs/layouts/text-1x-title-center.json +30 -0
- package/dist/spec/catalogs/layouts/text-2x-box-title-center.json +37 -0
- package/dist/spec/catalogs/layouts/text-2x-box-vertical-title-left.json +37 -0
- package/dist/spec/catalogs/layouts/text-2x-center-box-title-center.json +37 -0
- package/dist/spec/catalogs/layouts/text-2x-center-box-vertical-title-left.json +37 -0
- package/dist/spec/catalogs/layouts/text-2x-center-box.json +32 -0
- package/dist/spec/catalogs/layouts/text-2x-center-title-center.json +36 -0
- package/dist/spec/catalogs/layouts/text-2x-center-vertical-title-left.json +36 -0
- package/dist/spec/catalogs/layouts/text-2x-center.json +31 -0
- package/dist/spec/catalogs/layouts/text-2x-left-box.json +32 -0
- package/dist/spec/catalogs/layouts/text-2x-title-center.json +36 -0
- package/dist/spec/catalogs/layouts/text-2x-vertical-title-left.json +36 -0
- package/dist/spec/catalogs/layouts/text-3x-box-title-center.json +40 -0
- package/dist/spec/catalogs/layouts/text-3x-box-vertical-title-left.json +41 -0
- package/dist/spec/catalogs/layouts/text-3x-center-box-title-center.json +40 -0
- package/dist/spec/catalogs/layouts/text-3x-center-box-vertical-title-left.json +41 -0
- package/dist/spec/catalogs/layouts/text-3x-center-box.json +35 -0
- package/dist/spec/catalogs/layouts/text-3x-center-title-center.json +39 -0
- package/dist/spec/catalogs/layouts/text-3x-center-vertical-title-left.json +40 -0
- package/dist/spec/catalogs/layouts/text-3x-center.json +34 -0
- package/dist/spec/catalogs/layouts/text-3x-left-box.json +35 -0
- package/dist/spec/catalogs/layouts/text-3x-left.json +34 -0
- package/dist/spec/catalogs/layouts/text-3x-title-center.json +39 -0
- package/dist/spec/catalogs/layouts/text-3x-vertical-title-left.json +40 -0
- package/dist/spec/catalogs/layouts/title-center-box.json +27 -0
- package/dist/spec/catalogs/layouts/title-center-image-bottom.json +34 -0
- package/dist/spec/catalogs/layouts/title-center-image-top.json +34 -0
- package/dist/spec/catalogs/layouts/title-center.json +26 -0
- package/dist/spec/catalogs/layouts/title-left-image-bottom.json +34 -0
- package/dist/spec/catalogs/layouts/title-left-image-left.json +34 -0
- package/dist/spec/catalogs/layouts/title-left-image-right.json +34 -0
- package/dist/spec/catalogs/layouts/title-left-image-top.json +34 -0
- package/dist/spec/catalogs/manifest.json +18 -18
- package/dist/spec/catalogs/narratives/heros-journey.json +1 -1
- package/dist/spec/catalogs/narratives/index.json +1 -1
- package/dist/spec/openapi.yaml +3 -3
- package/dist/spec/reference/engine-defaults.json +22 -30
- package/dist/spec/reference/engine-vocabularies.json +1577 -0
- package/dist/spec/schemas/audience.schema.json +5 -26
- package/dist/spec/schemas/catalog-manifest.schema.json +3 -3
- package/dist/spec/schemas/chart-type.schema.json +2 -35
- package/dist/spec/schemas/color-scheme.schema.json +3 -24
- package/dist/spec/schemas/finding.schema.json +1 -1
- package/dist/spec/schemas/font-scheme.schema.json +6 -37
- package/dist/spec/schemas/language.schema.json +7 -28
- package/dist/spec/schemas/layout.schema.json +56 -51
- package/dist/spec/schemas/narrative.schema.json +4 -24
- package/dist/spec/schemas/opf.schema.json +399 -368
- package/dist/spec/schemas/purpose.schema.json +5 -26
- package/dist/spec/schemas/social-platform.schema.json +2 -23
- package/dist/spec/schemas/theme.schema.json +9 -37
- package/dist/spec/schemas/tone.schema.json +4 -25
- package/dist/spec-files.d.ts +1 -1
- package/dist/spec-files.js +1 -1
- package/dist/types.d.ts +1125 -4
- package/dist/{validation-types-zh03LeZy.d.ts → validation-types-BOcY9GTs.d.ts} +7 -7
- package/dist/validator.d.ts +15 -12
- package/dist/validator.js +5 -5
- package/dist/yaml.d.ts +22 -7
- package/dist/yaml.js +10 -9
- package/package.json +5 -9
- package/dist/catalogs-D-yyQWCQ.d.ts +0 -1343
- package/dist/catalogs.d.ts +0 -2
- package/dist/catalogs.js +0 -2
- package/dist/chunk-PIQXLBBJ.js +0 -445
- package/dist/chunk-S5W34SIJ.js +0 -1
- package/dist/previews.d.ts +0 -40
- package/dist/previews.js +0 -1
- package/dist/schemas-DDpqAgyS.d.ts +0 -284
- package/dist/spec/catalogs/layouts/image-bleed.json +0 -20
|
@@ -3,7 +3,7 @@ var presentation = {
|
|
|
3
3
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
4
|
"$id": "https://openpresentation.org/schema/opf/v1",
|
|
5
5
|
"title": "Presentation",
|
|
6
|
-
"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\
|
|
6
|
+
"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\nContent references (Slide.layout, design.theme, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, narrative, audience, purpose and tone, and the colorScheme / fontScheme a theme record names) point at catalog records. Each is a bare 'id' or a 'name:id' whose prefix names a group in 'catalogs'. A bare id resolves in catalogs.custom, then in the records embedded under catalogs.default, then in the catalog the host registered for catalogs.default.source (or the host's default catalog when 'default' is omitted); 'name:id' resolves in catalogs.<name>, then in the catalog the host registered for its source. A reference that resolves nowhere is the warning opf/unresolved-reference, and the slide uses automatic composition or the engine default. Engines never fetch a catalog: a saved document embeds every record it uses, and hosts register any other catalog by its source string. See docs/default-catalog.md.\n\nchart.type, the language tag and the keys of Organization.socials / Speaker.socials are engine vocabularies, validated directly with no catalog lookup. When a document names no theme, colour scheme or font scheme, every engine uses the same small engine defaults (spec/reference/engine-defaults.json). Asset references use 'asset:<id>' strings that point into the top-level assets registry, and content color fields (rich-text runs, styled table cells) accept hex values, color-scheme slot/role names, or 'var:<id>' references into the top-level variables map.",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"required": [
|
|
9
9
|
"slides"
|
|
@@ -114,7 +114,7 @@ var presentation = {
|
|
|
114
114
|
"minItems": 1
|
|
115
115
|
}
|
|
116
116
|
],
|
|
117
|
-
"description": "Intended audiences for the presentation. Accepts any of:\n- A single string
|
|
117
|
+
"description": "Intended audiences for the presentation. Accepts any of:\n- A single string: an audiences reference ('executive', or 'acme:board' for a record of the catalogs.acme group), or free-form text ('Series B investors'). A string that is a bare id or 'name:id' is a reference; any other string is free text and is never looked up.\n- A single inline Audience object, for custom audience metadata or overrides on a referenced record. Object form has the fields of https://openpresentation.org/schema/opf-audience/v1.\n- An array of strings and/or inline Audience objects, for more than one audience.\n\nA reference resolves like every content reference (see catalogs); one that resolves nowhere is the warning opf/unresolved-reference. Nothing is drawn from the audience.",
|
|
118
118
|
"examples": [
|
|
119
119
|
"executive",
|
|
120
120
|
"Biology Students and Wildlife Enthusiasts",
|
|
@@ -131,7 +131,7 @@ var presentation = {
|
|
|
131
131
|
},
|
|
132
132
|
[
|
|
133
133
|
"Series B investors",
|
|
134
|
-
"
|
|
134
|
+
"acme:board"
|
|
135
135
|
],
|
|
136
136
|
[
|
|
137
137
|
{
|
|
@@ -156,13 +156,12 @@ var presentation = {
|
|
|
156
156
|
"$ref": "#/$defs/Purpose"
|
|
157
157
|
}
|
|
158
158
|
],
|
|
159
|
-
"description": "Primary goal of the presentation. Accepts either:\n- A string
|
|
159
|
+
"description": "Primary goal of the presentation. Accepts either:\n- A string: a purposes reference ('decide', or 'acme:fundraise' for a record of the catalogs.acme group), or a free-form goal ('Raise a Series B round of $30M'). A string that is a bare id or 'name:id' is a reference; any other string is free text and is never looked up.\n- An inline Purpose object for custom purpose metadata or overrides on a referenced record. Object form has the fields of https://openpresentation.org/schema/opf-purpose/v1.\n\nA reference resolves like every content reference (see catalogs); one that resolves nowhere is the warning opf/unresolved-reference. Nothing is drawn from the purpose.",
|
|
160
160
|
"examples": [
|
|
161
161
|
"Raise a Series B round of $30M",
|
|
162
162
|
"align",
|
|
163
163
|
"educate",
|
|
164
|
-
"
|
|
165
|
-
"pkg:@acme/decks/purposes/fundraise",
|
|
164
|
+
"acme:fundraise",
|
|
166
165
|
{
|
|
167
166
|
"id": "decide",
|
|
168
167
|
"outcome": "Approve the Q4 hiring plan"
|
|
@@ -176,25 +175,20 @@ var presentation = {
|
|
|
176
175
|
"language": {
|
|
177
176
|
"oneOf": [
|
|
178
177
|
{
|
|
179
|
-
"
|
|
178
|
+
"$ref": "#/$defs/LanguageTag"
|
|
180
179
|
},
|
|
181
180
|
{
|
|
182
181
|
"$ref": "#/$defs/Language"
|
|
183
182
|
}
|
|
184
183
|
],
|
|
185
|
-
"description": "Language
|
|
184
|
+
"description": "Language of the presentation content, an engine vocabulary: a BCP-47 language tag, validated directly with no catalog lookup. Accepts either:\n- A BCP-47 tag ('en-US', 'en-GB', 'ja', 'zh-Hans', 'ar-SA').\n- An inline Language object: a 'bcp47' tag plus overrides of what engines know about it (name, ooxmlLang, script, direction, the script font schemes).\n\nEngines know the script, base direction, OOXML language tag and default script fonts of the tags in spec/reference/engine-vocabularies.json; any other well-formed tag is accepted and its script is inferred from the tag. Language names and descriptions are catalog display metadata, not part of the document.",
|
|
186
185
|
"examples": [
|
|
187
186
|
"en-US",
|
|
188
187
|
"en-GB",
|
|
189
188
|
"es-MX",
|
|
190
|
-
"ja
|
|
189
|
+
"ja",
|
|
191
190
|
"fr",
|
|
192
|
-
"english",
|
|
193
|
-
"japanese",
|
|
194
|
-
"https://acme.com/decks/languages/en-acme.json",
|
|
195
|
-
"pkg:@acme/decks/languages/en-acme",
|
|
196
191
|
{
|
|
197
|
-
"id": "english",
|
|
198
192
|
"bcp47": "en-US",
|
|
199
193
|
"fontScheme": "aptos",
|
|
200
194
|
"googleFontScheme": "roboto"
|
|
@@ -210,21 +204,20 @@ var presentation = {
|
|
|
210
204
|
"tone": {
|
|
211
205
|
"oneOf": [
|
|
212
206
|
{
|
|
213
|
-
"
|
|
207
|
+
"$ref": "#/$defs/CatalogReference"
|
|
214
208
|
},
|
|
215
209
|
{
|
|
216
210
|
"$ref": "#/$defs/Tone"
|
|
217
211
|
}
|
|
218
212
|
],
|
|
219
|
-
"description": "Desired tone for the presentation. Accepts either:\n- A
|
|
213
|
+
"description": "Desired tone for the presentation. Accepts either:\n- A tones reference: a bare id ('formal') or 'name:id' for a record of a named catalogs group.\n- An inline Tone object for custom tone metadata or overrides on a referenced record. Object form has the fields of https://openpresentation.org/schema/opf-tone/v1.\n\nA reference resolves like every content reference (see catalogs); one that resolves nowhere is the warning opf/unresolved-reference. Nothing is drawn from the tone.",
|
|
220
214
|
"examples": [
|
|
221
215
|
"formal",
|
|
222
216
|
"casual",
|
|
223
217
|
"inspirational",
|
|
224
218
|
"technical",
|
|
225
219
|
"persuasive",
|
|
226
|
-
"
|
|
227
|
-
"pkg:@acme/decks/tones/acme-voice",
|
|
220
|
+
"acme:house-voice",
|
|
228
221
|
{
|
|
229
222
|
"id": "formal",
|
|
230
223
|
"voiceCues": [
|
|
@@ -301,15 +294,14 @@ var presentation = {
|
|
|
301
294
|
"default": false
|
|
302
295
|
},
|
|
303
296
|
"narrative": {
|
|
304
|
-
"
|
|
305
|
-
"description": "The deck's narrative plan, by reference:
|
|
297
|
+
"$ref": "#/$defs/CatalogReference",
|
|
298
|
+
"description": "The deck's narrative plan, by reference: a bare narratives id ('classic-story') or 'name:id' for a record of a named catalogs group ('acme:founder-pitch'). The deck holds only this pointer; the plan (the arc, its beats and what each beat must do) lives in the record, which has the fields of https://openpresentation.org/schema/opf-narrative/v1. A narrative the document defines itself is a record in catalogs.custom.narratives, referenced here by its key.\n\nSlides link themselves to beats with slides[].beat. Core validate warns about a slides[].beat id the resolved narrative does not define and about a root 'duration' outside its 'duration' range, and reports a beat that no slide references. The preview and the PPTX export draw nothing from the narrative; opf-pptx stores the reference for round-trip.\n\nThe reference resolves like every content reference (see catalogs); one that resolves nowhere is the warning opf/unresolved-reference, never an error.\n\nDeck-level concerns that are not part of the storyline (audience, tone, takeaway, duration) live as siblings on the presentation root.",
|
|
306
299
|
"examples": [
|
|
307
300
|
"classic-story",
|
|
308
301
|
"problem-solution",
|
|
309
302
|
"scqa",
|
|
310
303
|
"pitch-deck",
|
|
311
|
-
"
|
|
312
|
-
"pkg:@acme/decks/narratives/founder-pitch"
|
|
304
|
+
"acme:founder-pitch"
|
|
313
305
|
]
|
|
314
306
|
},
|
|
315
307
|
"slides": {
|
|
@@ -346,7 +338,7 @@ var presentation = {
|
|
|
346
338
|
},
|
|
347
339
|
"catalogs": {
|
|
348
340
|
"$ref": "#/$defs/Catalogs",
|
|
349
|
-
"description": "
|
|
341
|
+
"description": "The catalog records this document embeds, grouped by the catalog they came from: 'default' (the catalog bare ids come from), 'custom' (records the document defines itself) and any number of named catalogs ('acme', referenced as 'acme:<id>'). A saved document embeds every record it references, so it renders the same with no catalog registered. See Catalogs."
|
|
350
342
|
},
|
|
351
343
|
"extensions": {
|
|
352
344
|
"type": "object",
|
|
@@ -435,7 +427,7 @@ var presentation = {
|
|
|
435
427
|
},
|
|
436
428
|
"Audience": {
|
|
437
429
|
"type": "object",
|
|
438
|
-
"description": "Inline audience metadata for the presentation. Use 'id' to reference an audiences
|
|
430
|
+
"description": "Inline audience metadata for the presentation. Use 'id' to reference an audiences record (a bare id or 'name:id') and override selected fields, or use 'name' for a custom inline audience.",
|
|
439
431
|
"anyOf": [
|
|
440
432
|
{
|
|
441
433
|
"required": [
|
|
@@ -450,9 +442,8 @@ var presentation = {
|
|
|
450
442
|
],
|
|
451
443
|
"properties": {
|
|
452
444
|
"id": {
|
|
453
|
-
"
|
|
454
|
-
"
|
|
455
|
-
"description": "Optional audiences catalog id to resolve before applying inline overrides.",
|
|
445
|
+
"$ref": "#/$defs/CatalogReference",
|
|
446
|
+
"description": "Optional audiences reference (a bare id or 'name:id') resolved before applying the inline overrides.",
|
|
456
447
|
"examples": [
|
|
457
448
|
"executive",
|
|
458
449
|
"board",
|
|
@@ -512,14 +503,14 @@ var presentation = {
|
|
|
512
503
|
"items": {
|
|
513
504
|
"type": "string"
|
|
514
505
|
},
|
|
515
|
-
"description": "Soft cross-link: narrative
|
|
506
|
+
"description": "Soft cross-link: narrative ids that work well for this audience, for picker UIs. Never resolved, embedded or validated as references."
|
|
516
507
|
},
|
|
517
508
|
"recommendedTones": {
|
|
518
509
|
"type": "array",
|
|
519
510
|
"items": {
|
|
520
511
|
"type": "string"
|
|
521
512
|
},
|
|
522
|
-
"description": "Soft cross-link: tone
|
|
513
|
+
"description": "Soft cross-link: tone ids that work well for this audience, for picker UIs. Never resolved, embedded or validated as references."
|
|
523
514
|
},
|
|
524
515
|
"tags": {
|
|
525
516
|
"type": "array",
|
|
@@ -532,7 +523,7 @@ var presentation = {
|
|
|
532
523
|
},
|
|
533
524
|
"Purpose": {
|
|
534
525
|
"type": "object",
|
|
535
|
-
"description": "Inline purpose metadata for the presentation. Use 'id' to reference a purposes
|
|
526
|
+
"description": "Inline purpose metadata for the presentation. Use 'id' to reference a purposes record (a bare id or 'name:id') and override selected fields, or use 'name' for a custom inline purpose.",
|
|
536
527
|
"anyOf": [
|
|
537
528
|
{
|
|
538
529
|
"required": [
|
|
@@ -547,9 +538,8 @@ var presentation = {
|
|
|
547
538
|
],
|
|
548
539
|
"properties": {
|
|
549
540
|
"id": {
|
|
550
|
-
"
|
|
551
|
-
"
|
|
552
|
-
"description": "Optional purposes catalog id to resolve before applying inline overrides.",
|
|
541
|
+
"$ref": "#/$defs/CatalogReference",
|
|
542
|
+
"description": "Optional purposes reference (a bare id or 'name:id') resolved before applying the inline overrides.",
|
|
553
543
|
"examples": [
|
|
554
544
|
"inform",
|
|
555
545
|
"decide",
|
|
@@ -586,14 +576,14 @@ var presentation = {
|
|
|
586
576
|
"items": {
|
|
587
577
|
"type": "string"
|
|
588
578
|
},
|
|
589
|
-
"description": "Soft cross-link: narrative
|
|
579
|
+
"description": "Soft cross-link: narrative ids that work well for this purpose, for picker UIs. Never resolved, embedded or validated as references."
|
|
590
580
|
},
|
|
591
581
|
"recommendedTones": {
|
|
592
582
|
"type": "array",
|
|
593
583
|
"items": {
|
|
594
584
|
"type": "string"
|
|
595
585
|
},
|
|
596
|
-
"description": "Soft cross-link: tone
|
|
586
|
+
"description": "Soft cross-link: tone ids that work well for this purpose, for picker UIs. Never resolved, embedded or validated as references."
|
|
597
587
|
},
|
|
598
588
|
"tags": {
|
|
599
589
|
"type": "array",
|
|
@@ -606,31 +596,16 @@ var presentation = {
|
|
|
606
596
|
},
|
|
607
597
|
"Language": {
|
|
608
598
|
"type": "object",
|
|
609
|
-
"description": "Inline language metadata for the presentation
|
|
610
|
-
"
|
|
611
|
-
|
|
612
|
-
"required": [
|
|
613
|
-
"id"
|
|
614
|
-
]
|
|
615
|
-
},
|
|
616
|
-
{
|
|
617
|
-
"required": [
|
|
618
|
-
"bcp47"
|
|
619
|
-
]
|
|
620
|
-
}
|
|
599
|
+
"description": "Inline language metadata for the presentation: a BCP-47 'bcp47' tag plus overrides of what engines know about it. Languages are an engine vocabulary, not catalog records, so there is no 'id'.",
|
|
600
|
+
"required": [
|
|
601
|
+
"bcp47"
|
|
621
602
|
],
|
|
603
|
+
"not": {
|
|
604
|
+
"required": [
|
|
605
|
+
"id"
|
|
606
|
+
]
|
|
607
|
+
},
|
|
622
608
|
"properties": {
|
|
623
|
-
"id": {
|
|
624
|
-
"type": "string",
|
|
625
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
626
|
-
"description": "Optional languages catalog id to resolve before applying inline overrides.",
|
|
627
|
-
"examples": [
|
|
628
|
-
"english",
|
|
629
|
-
"japanese",
|
|
630
|
-
"chinese-simplified",
|
|
631
|
-
"english-uk"
|
|
632
|
-
]
|
|
633
|
-
},
|
|
634
609
|
"name": {
|
|
635
610
|
"type": "string",
|
|
636
611
|
"description": "Human-readable language name.",
|
|
@@ -641,7 +616,7 @@ var presentation = {
|
|
|
641
616
|
]
|
|
642
617
|
},
|
|
643
618
|
"bcp47": {
|
|
644
|
-
"
|
|
619
|
+
"$ref": "#/$defs/LanguageTag",
|
|
645
620
|
"description": "BCP-47 language tag used for locale-aware rendering, proofing, and accessibility metadata. Use 'en-GB' for UK English; 'en-UK' is not a valid BCP-47 region form.",
|
|
646
621
|
"examples": [
|
|
647
622
|
"en",
|
|
@@ -653,7 +628,7 @@ var presentation = {
|
|
|
653
628
|
},
|
|
654
629
|
"ooxmlLang": {
|
|
655
630
|
"type": "string",
|
|
656
|
-
"description": "
|
|
631
|
+
"description": "Culture tag for OOXML text-run language attributes (a:rPr/@lang, a:endParaRPr/@lang), in the language-[Script-]REGION form Office recognizes (e.g. 'ja-JP', 'ar-SA', 'ms-MY', 'nb-NO', 'fil-PH', 'zh-CN'). Without it, engines emit the curated tag of their language vocabulary (spec/reference/engine-vocabularies.json) for a tag without a region, and a region-bearing tag as written. Curated rather than inferred so output does not depend on the runtime's locale data.",
|
|
657
632
|
"examples": [
|
|
658
633
|
"en-US",
|
|
659
634
|
"ja-JP",
|
|
@@ -679,11 +654,11 @@ var presentation = {
|
|
|
679
654
|
"ltr",
|
|
680
655
|
"rtl"
|
|
681
656
|
],
|
|
682
|
-
"description": "Base text direction for the language. When omitted, engines derive it from the script: Arabic (Arab), Hebrew (Hebr), Syriac (Syrc), Thaana (Thaa), N'Ko (Nkoo), Adlam (Adlm), Samaritan (Samr), Mandaic (Mand) and Hanifi Rohingya (Rohg) are right-to-left; every other script is left-to-right.
|
|
657
|
+
"description": "Base text direction for the language. When omitted, engines derive it from the script: Arabic (Arab), Hebrew (Hebr), Syriac (Syrc), Thaana (Thaa), N'Ko (Nkoo), Adlam (Adlm), Samaritan (Samr), Mandaic (Mand) and Hanifi Rohingya (Rohg) are right-to-left; every other script is left-to-right. The engine language vocabulary (spec/reference/engine-vocabularies.json) states it for the tags it knows."
|
|
683
658
|
},
|
|
684
659
|
"script": {
|
|
685
660
|
"type": "string",
|
|
686
|
-
"description": "ISO 15924 script code of the language's writing system. The script selects the OOXML font slot the language's text uses: East Asian scripts (Hans, Hant, Hani, Jpan, Kore, Hang, Hira, Kana, Bopo, Yiii) use the eastAsian slot; complex scripts (for example Arab, Hebr, Syrc, Thaa, Deva, Beng, Guru, Gujr, Orya, Taml, Telu, Knda, Mlym, Sinh, Thai, Laoo, Tibt, Mymr, Khmr, Mong) use the complexScript slot; every other script (Latn, Cyrl, Grek, Armn, Geor, Ethi, ...) uses the latin slot. When omitted, engines infer it from the BCP-47 tag.
|
|
661
|
+
"description": "ISO 15924 script code of the language's writing system. The script selects the OOXML font slot the language's text uses: East Asian scripts (Hans, Hant, Hani, Jpan, Kore, Hang, Hira, Kana, Bopo, Yiii) use the eastAsian slot; complex scripts (for example Arab, Hebr, Syrc, Thaa, Deva, Beng, Guru, Gujr, Orya, Taml, Telu, Knda, Mlym, Sinh, Thai, Laoo, Tibt, Mymr, Khmr, Mong) use the complexScript slot; every other script (Latn, Cyrl, Grek, Armn, Geor, Ethi, ...) uses the latin slot. When omitted, engines infer it from the BCP-47 tag. The engine language vocabulary (spec/reference/engine-vocabularies.json) states it for the tags it knows. See docs/programs/font-fidelity-everywhere/script-font-model.md.",
|
|
687
662
|
"examples": [
|
|
688
663
|
"Latn",
|
|
689
664
|
"Cyrl",
|
|
@@ -699,12 +674,12 @@ var presentation = {
|
|
|
699
674
|
]
|
|
700
675
|
},
|
|
701
676
|
"fontScheme": {
|
|
702
|
-
"
|
|
703
|
-
"description": "
|
|
677
|
+
"$ref": "#/$defs/CatalogReference",
|
|
678
|
+
"description": "Font-scheme reference (a bare id or 'name:id') for this language's script slot when targeting PowerPoint output. Its major/minor families fill the language's script slot (eastAsian or complexScript, chosen by 'script') unless the effective design font scheme sets that slot itself; the latin slot always follows the design font scheme. Without it, engines use the default script fonts of their language vocabulary."
|
|
704
679
|
},
|
|
705
680
|
"googleFontScheme": {
|
|
706
|
-
"
|
|
707
|
-
"description": "
|
|
681
|
+
"$ref": "#/$defs/CatalogReference",
|
|
682
|
+
"description": "Font-scheme reference (a bare id or 'name:id') used in place of 'fontScheme' when resolving script fonts for Google Slides output."
|
|
708
683
|
},
|
|
709
684
|
"summary": {
|
|
710
685
|
"type": "string",
|
|
@@ -725,7 +700,7 @@ var presentation = {
|
|
|
725
700
|
},
|
|
726
701
|
"Tone": {
|
|
727
702
|
"type": "object",
|
|
728
|
-
"description": "Inline tone metadata for the presentation. Use 'id' to reference a tones
|
|
703
|
+
"description": "Inline tone metadata for the presentation. Use 'id' to reference a tones record (a bare id or 'name:id') and override selected fields, or use 'name' for a custom inline tone.",
|
|
729
704
|
"anyOf": [
|
|
730
705
|
{
|
|
731
706
|
"required": [
|
|
@@ -740,9 +715,8 @@ var presentation = {
|
|
|
740
715
|
],
|
|
741
716
|
"properties": {
|
|
742
717
|
"id": {
|
|
743
|
-
"
|
|
744
|
-
"
|
|
745
|
-
"description": "Optional tones catalog id to resolve before applying inline overrides.",
|
|
718
|
+
"$ref": "#/$defs/CatalogReference",
|
|
719
|
+
"description": "Optional tones reference (a bare id or 'name:id') resolved before applying the inline overrides.",
|
|
746
720
|
"examples": [
|
|
747
721
|
"formal",
|
|
748
722
|
"casual",
|
|
@@ -788,7 +762,7 @@ var presentation = {
|
|
|
788
762
|
"items": {
|
|
789
763
|
"type": "string"
|
|
790
764
|
},
|
|
791
|
-
"description": "Soft cross-link: narrative
|
|
765
|
+
"description": "Soft cross-link: narrative ids this tone pairs well with, for picker UIs. Never resolved, embedded or validated as references."
|
|
792
766
|
},
|
|
793
767
|
"tags": {
|
|
794
768
|
"type": "array",
|
|
@@ -985,7 +959,7 @@ var presentation = {
|
|
|
985
959
|
},
|
|
986
960
|
"Socials": {
|
|
987
961
|
"type": "object",
|
|
988
|
-
"description": "Social media handles or URLs, keyed by platform
|
|
962
|
+
"description": "Social media handles or URLs, keyed by platform. The keys are an engine vocabulary validated directly (no catalog lookup): engines link a handle with the platform's URL pattern and handle prefix (spec/reference/engine-vocabularies.json). Each value is a string, either a full URL or a platform handle (e.g., '@acme'). Brand colours and icons are catalog display metadata for authoring UIs; engines render the profile URL, not icons or brand colours. Used both for organization and speaker records.",
|
|
989
963
|
"additionalProperties": {
|
|
990
964
|
"type": "string",
|
|
991
965
|
"description": "Handle or URL for the platform identified by the property key."
|
|
@@ -1003,8 +977,19 @@ var presentation = {
|
|
|
1003
977
|
}
|
|
1004
978
|
],
|
|
1005
979
|
"propertyNames": {
|
|
1006
|
-
"
|
|
1007
|
-
|
|
980
|
+
"enum": [
|
|
981
|
+
"linkedin",
|
|
982
|
+
"x",
|
|
983
|
+
"github",
|
|
984
|
+
"youtube",
|
|
985
|
+
"instagram",
|
|
986
|
+
"facebook",
|
|
987
|
+
"tiktok",
|
|
988
|
+
"threads",
|
|
989
|
+
"mastodon",
|
|
990
|
+
"bluesky"
|
|
991
|
+
],
|
|
992
|
+
"description": "Platform key, one of the engine's social platforms."
|
|
1008
993
|
}
|
|
1009
994
|
},
|
|
1010
995
|
"Design": {
|
|
@@ -1012,35 +997,14 @@ var presentation = {
|
|
|
1012
997
|
"description": "Visual design system applied to the presentation; individual slides may override fields via Slide.design.",
|
|
1013
998
|
"properties": {
|
|
1014
999
|
"theme": {
|
|
1015
|
-
"
|
|
1016
|
-
|
|
1017
|
-
"type": "string"
|
|
1018
|
-
},
|
|
1019
|
-
{
|
|
1020
|
-
"$ref": "#/$defs/Theme"
|
|
1021
|
-
}
|
|
1022
|
-
],
|
|
1023
|
-
"description": `Theme for the deck. Accepts two forms:
|
|
1024
|
-
- String shorthand: 'design.theme = "minimal"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'themes' catalog record.
|
|
1025
|
-
- Object form: a Theme with an optional 'id' base reference plus theme-level overrides.
|
|
1026
|
-
|
|
1027
|
-
Inline overrides on design.colorScheme / design.fontScheme / design.background / design.dimensions take precedence over the resolved theme.
|
|
1028
|
-
|
|
1029
|
-
Resolution order: inline catalogs.themes.records[] -> catalogs.themes.source -> default catalog at https://www.pptx.gallery/themes.`,
|
|
1000
|
+
"$ref": "#/$defs/CatalogReference",
|
|
1001
|
+
"description": "Theme for the deck: a themes reference, a bare id ('minimal') or 'name:id' ('acme:brand'). The theme supplies the default colour scheme, font scheme, background and dimensions; design.colorScheme, design.fontScheme, design.background and design.dimensions override it field by field. A reference that resolves nowhere is the warning opf/unresolved-reference and engines use the engine default theme.",
|
|
1030
1002
|
"examples": [
|
|
1031
1003
|
"minimal",
|
|
1032
1004
|
"classic",
|
|
1033
1005
|
"dark",
|
|
1034
1006
|
"bold",
|
|
1035
|
-
"
|
|
1036
|
-
"ocean-depth",
|
|
1037
|
-
"https://acme.com/decks/themes/acme-brand.json",
|
|
1038
|
-
"pkg:@acme/decks/themes/acme-brand",
|
|
1039
|
-
{
|
|
1040
|
-
"id": "minimal",
|
|
1041
|
-
"background": "dark1",
|
|
1042
|
-
"dimensions": "widescreen"
|
|
1043
|
-
}
|
|
1007
|
+
"acme:brand"
|
|
1044
1008
|
]
|
|
1045
1009
|
},
|
|
1046
1010
|
"colorScheme": {
|
|
@@ -1052,11 +1016,7 @@ Resolution order: inline catalogs.themes.records[] -> catalogs.themes.source ->
|
|
|
1052
1016
|
"$ref": "#/$defs/ColorScheme"
|
|
1053
1017
|
}
|
|
1054
1018
|
],
|
|
1055
|
-
"description":
|
|
1056
|
-
- String shorthand: 'design.colorScheme = "cool-horizon"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'colorSchemes' catalog record.
|
|
1057
|
-
- Object form: a ColorScheme with an optional 'id' base reference plus slot/role overrides.
|
|
1058
|
-
|
|
1059
|
-
Resolution order: inline catalogs.colorSchemes.records[] -> catalogs.colorSchemes.source -> default catalog at https://www.pptx.gallery/color-schemes.`,
|
|
1019
|
+
"description": "Color scheme for the presentation. Accepts two forms:\n- A colorSchemes reference: a bare id ('cool-horizon') or 'name:id' ('acme:ocean').\n- Object form: a ColorScheme with an optional 'id' reference as the base plus slot/role overrides. Without 'id', the overrides apply on top of the engine default colour scheme.\n\nWithout either, the theme's colorScheme applies, then the engine default colour scheme.",
|
|
1060
1020
|
"examples": [
|
|
1061
1021
|
"cool-horizon",
|
|
1062
1022
|
"boost",
|
|
@@ -1076,11 +1036,7 @@ Resolution order: inline catalogs.colorSchemes.records[] -> catalogs.colorScheme
|
|
|
1076
1036
|
"$ref": "#/$defs/FontScheme"
|
|
1077
1037
|
}
|
|
1078
1038
|
],
|
|
1079
|
-
"description":
|
|
1080
|
-
- String shorthand: 'design.fontScheme = "aptos"'. Bare id, HTTPS URL, or 'pkg:' reference resolved as the 'id' of a 'fontSchemes' catalog record.
|
|
1081
|
-
- Object form: a FontScheme with an optional 'id' base reference plus pair/role overrides.
|
|
1082
|
-
|
|
1083
|
-
Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.source -> default catalog at https://www.pptx.gallery/font-schemes.`,
|
|
1039
|
+
"description": "Font scheme for heading, body, accent, and code text. Accepts two forms:\n- A fontSchemes reference: a bare id ('aptos') or 'name:id' ('acme:inter').\n- Object form: a FontScheme with an optional 'id' reference as the base plus pair/role overrides.\n\nWithout either, the theme's fontScheme applies, then the engine default font scheme.",
|
|
1084
1040
|
"examples": [
|
|
1085
1041
|
"aptos",
|
|
1086
1042
|
"tenorite",
|
|
@@ -1117,7 +1073,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1117
1073
|
"$ref": "#/$defs/Background"
|
|
1118
1074
|
}
|
|
1119
1075
|
],
|
|
1120
|
-
"description": "Default slide background applied across the deck unless overridden on a slide. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2') or
|
|
1076
|
+
"description": "Default slide background applied across the deck unless overridden on a slide (slides.N.design.background); the resolved theme's background is the fallback. A background is the only canvas fill and never moves content. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2'), hex colors, or an image source starting with 'asset:', 'https://', 'data:', './' or '../' (a cover image); object forms support theme, solid, gradient, image, or pattern fills.",
|
|
1121
1077
|
"examples": [
|
|
1122
1078
|
"dark1",
|
|
1123
1079
|
"#ffff00",
|
|
@@ -1244,175 +1200,6 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1244
1200
|
"type": "boolean",
|
|
1245
1201
|
"description": "Whether body/content regions are rendered inside a visible card or surface. Effective value: the slide's design, then the deck's design, then the layout record's design.contentBox, then the engine default."
|
|
1246
1202
|
},
|
|
1247
|
-
"slideImage": {
|
|
1248
|
-
"oneOf": [
|
|
1249
|
-
{
|
|
1250
|
-
"$ref": "#/$defs/Asset"
|
|
1251
|
-
},
|
|
1252
|
-
{
|
|
1253
|
-
"type": "object",
|
|
1254
|
-
"additionalProperties": false,
|
|
1255
|
-
"required": [
|
|
1256
|
-
"position"
|
|
1257
|
-
],
|
|
1258
|
-
"properties": {
|
|
1259
|
-
"src": {
|
|
1260
|
-
"type": "string",
|
|
1261
|
-
"description": "Source for the slide-level image. When omitted in a design override, the object only configures how a slide-level image should be placed when one is supplied by a content payload, asset, or renderer convention."
|
|
1262
|
-
},
|
|
1263
|
-
"position": {
|
|
1264
|
-
"type": "string",
|
|
1265
|
-
"enum": [
|
|
1266
|
-
"background",
|
|
1267
|
-
"top",
|
|
1268
|
-
"bottom",
|
|
1269
|
-
"left",
|
|
1270
|
-
"right"
|
|
1271
|
-
],
|
|
1272
|
-
"description": "Where the slide-level image sits relative to the content. 'background' is a full-bleed image behind the content. The other positions give the image a band along that edge (see size) and compose headings and content in the rest of the slide."
|
|
1273
|
-
},
|
|
1274
|
-
"alt": {
|
|
1275
|
-
"type": "string",
|
|
1276
|
-
"description": "Alternative text for the slide-level image. Overrides the alt text of a referenced asset."
|
|
1277
|
-
},
|
|
1278
|
-
"fill": {
|
|
1279
|
-
"type": "string",
|
|
1280
|
-
"enum": [
|
|
1281
|
-
"crop",
|
|
1282
|
-
"fit"
|
|
1283
|
-
],
|
|
1284
|
-
"description": "How the image fills its frame: 'crop' covers the frame from the center; 'fit' shows the whole image centered inside it. Overrides design.imageFill for this image. Default: design.imageFill, else 'crop'."
|
|
1285
|
-
},
|
|
1286
|
-
"size": {
|
|
1287
|
-
"type": "number",
|
|
1288
|
-
"minimum": 0.1,
|
|
1289
|
-
"maximum": 0.9,
|
|
1290
|
-
"description": "Share of the slide width (left/right) or height (top/bottom) given to the image band. Ignored for 'background'. Default 0.5."
|
|
1291
|
-
},
|
|
1292
|
-
"inset": {
|
|
1293
|
-
"type": "boolean",
|
|
1294
|
-
"description": "Place the frame inside the slide padding instead of edge to edge, like a card. Default false."
|
|
1295
|
-
},
|
|
1296
|
-
"aspectRatio": {
|
|
1297
|
-
"type": "number",
|
|
1298
|
-
"exclusiveMinimum": 0,
|
|
1299
|
-
"maximum": 10,
|
|
1300
|
-
"description": "Width-to-height ratio of the frame. The frame becomes the largest centered box with this ratio inside the band or slide, for example 2.39 for a cinematic letterbox or 0.5 for a phone-shaped frame. 'circle' always uses 1."
|
|
1301
|
-
},
|
|
1302
|
-
"shape": {
|
|
1303
|
-
"type": "string",
|
|
1304
|
-
"enum": [
|
|
1305
|
-
"rectangle",
|
|
1306
|
-
"rounded",
|
|
1307
|
-
"circle",
|
|
1308
|
-
"hexagon"
|
|
1309
|
-
],
|
|
1310
|
-
"description": "Mask applied to the frame, exported as the picture's native preset geometry (rect, roundRect, ellipse, hexagon). 'circle' makes the frame square. Default 'rectangle'."
|
|
1311
|
-
},
|
|
1312
|
-
"cornerRadius": {
|
|
1313
|
-
"type": "number",
|
|
1314
|
-
"minimum": 0,
|
|
1315
|
-
"maximum": 0.5,
|
|
1316
|
-
"description": "Corner radius for shape 'rounded' as a fraction of the frame's shorter side. Default 0.16667, PowerPoint's roundRect default."
|
|
1317
|
-
},
|
|
1318
|
-
"border": {
|
|
1319
|
-
"type": "object",
|
|
1320
|
-
"additionalProperties": false,
|
|
1321
|
-
"required": [
|
|
1322
|
-
"color",
|
|
1323
|
-
"width"
|
|
1324
|
-
],
|
|
1325
|
-
"properties": {
|
|
1326
|
-
"color": {
|
|
1327
|
-
"$ref": "#/$defs/ColorRef",
|
|
1328
|
-
"description": "Line color: a hex color, a color-scheme slot or role name, or a 'var:<id>' variable reference."
|
|
1329
|
-
},
|
|
1330
|
-
"width": {
|
|
1331
|
-
"type": "number",
|
|
1332
|
-
"minimum": 0,
|
|
1333
|
-
"maximum": 64,
|
|
1334
|
-
"description": "Line width in reference pixels at a 720-pixel short edge, centered on the frame outline like a native picture line. 0 removes the line."
|
|
1335
|
-
}
|
|
1336
|
-
},
|
|
1337
|
-
"description": "Solid line along the frame's shape. A thick dark border on a rounded portrait frame gives a device bezel."
|
|
1338
|
-
},
|
|
1339
|
-
"opacity": {
|
|
1340
|
-
"type": "number",
|
|
1341
|
-
"minimum": 0,
|
|
1342
|
-
"maximum": 1,
|
|
1343
|
-
"description": "Image opacity from 0 to 1, exported as a native alphaModFix. The border and overlay keep their own opacity. Default 1."
|
|
1344
|
-
},
|
|
1345
|
-
"recolor": {
|
|
1346
|
-
"oneOf": [
|
|
1347
|
-
{
|
|
1348
|
-
"type": "string",
|
|
1349
|
-
"const": "grayscale",
|
|
1350
|
-
"description": "Replace each pixel with its luminance, exported as native a:grayscl."
|
|
1351
|
-
},
|
|
1352
|
-
{
|
|
1353
|
-
"type": "object",
|
|
1354
|
-
"additionalProperties": false,
|
|
1355
|
-
"required": [
|
|
1356
|
-
"dark",
|
|
1357
|
-
"light"
|
|
1358
|
-
],
|
|
1359
|
-
"properties": {
|
|
1360
|
-
"dark": {
|
|
1361
|
-
"$ref": "#/$defs/ColorRef",
|
|
1362
|
-
"description": "Color at luminance 0."
|
|
1363
|
-
},
|
|
1364
|
-
"light": {
|
|
1365
|
-
"$ref": "#/$defs/ColorRef",
|
|
1366
|
-
"description": "Color at luminance 1."
|
|
1367
|
-
}
|
|
1368
|
-
},
|
|
1369
|
-
"description": "Duotone: map each pixel's luminance linearly from dark to light, exported as native a:duotone."
|
|
1370
|
-
}
|
|
1371
|
-
],
|
|
1372
|
-
"description": "Color treatment for the image pixels. Luminance uses Rec. 601 weights (0.299, 0.587, 0.114) on sRGB values."
|
|
1373
|
-
},
|
|
1374
|
-
"overlay": {
|
|
1375
|
-
"type": "object",
|
|
1376
|
-
"additionalProperties": false,
|
|
1377
|
-
"required": [
|
|
1378
|
-
"color",
|
|
1379
|
-
"opacity"
|
|
1380
|
-
],
|
|
1381
|
-
"properties": {
|
|
1382
|
-
"color": {
|
|
1383
|
-
"$ref": "#/$defs/ColorRef",
|
|
1384
|
-
"description": "Overlay fill color."
|
|
1385
|
-
},
|
|
1386
|
-
"opacity": {
|
|
1387
|
-
"type": "number",
|
|
1388
|
-
"minimum": 0,
|
|
1389
|
-
"maximum": 1,
|
|
1390
|
-
"description": "Overlay fill opacity."
|
|
1391
|
-
},
|
|
1392
|
-
"edge": {
|
|
1393
|
-
"type": "string",
|
|
1394
|
-
"enum": [
|
|
1395
|
-
"top",
|
|
1396
|
-
"bottom",
|
|
1397
|
-
"left",
|
|
1398
|
-
"right"
|
|
1399
|
-
],
|
|
1400
|
-
"description": "Cover only a band along this edge of the frame, for example a caption strip. Rectangle frames only; other shapes report unsupported-image-treatment and draw no overlay. Omit to cover the whole frame."
|
|
1401
|
-
},
|
|
1402
|
-
"size": {
|
|
1403
|
-
"type": "number",
|
|
1404
|
-
"minimum": 0.05,
|
|
1405
|
-
"maximum": 1,
|
|
1406
|
-
"description": "Band share of the frame for an edge overlay. Default 0.3."
|
|
1407
|
-
}
|
|
1408
|
-
},
|
|
1409
|
-
"description": "Solid scrim drawn over the image in the frame's shape, beneath headings and content, for example to keep overlaid text readable. Exported as a native shape above the picture."
|
|
1410
|
-
}
|
|
1411
|
-
}
|
|
1412
|
-
}
|
|
1413
|
-
],
|
|
1414
|
-
"description": "Optional slide-level image, separate from content images. It applies to a slide that sets its own design.slideImage, and to slides whose layout record sets design.slideImage or whose root image is the same source as a deck-level value. A root image with the same source becomes the slide image instead of a content item. Blur, shadows, soft edges, background removal and device artwork are not part of the treatment vocabulary; see docs/image-treatments.md."
|
|
1415
|
-
},
|
|
1416
1203
|
"contentDirection": {
|
|
1417
1204
|
"type": "string",
|
|
1418
1205
|
"enum": [
|
|
@@ -1432,13 +1219,14 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1432
1219
|
],
|
|
1433
1220
|
"description": "Where the primary chart sits relative to supporting content. Effective value: slide design, then deck design, then the layout record's design.chartPrimary. When the slide has no promoted regions and no composition.mode of its own, and its root nodes mix at least one chart with other content, the first chart becomes a primary track and the other nodes form one synthetic sub-grid: 'left'/'right' is a two-track row and 'top'/'bottom' a two-track column, weighted 3:2 in favor of the chart; explicit root columns and weights are ignored while it applies. 'none' (the default) keeps the ordinary automatic grid with equal weight."
|
|
1434
1221
|
},
|
|
1435
|
-
"
|
|
1222
|
+
"imageFit": {
|
|
1436
1223
|
"type": "string",
|
|
1437
1224
|
"enum": [
|
|
1438
|
-
"
|
|
1439
|
-
"
|
|
1225
|
+
"cover",
|
|
1226
|
+
"contain",
|
|
1227
|
+
"stretch"
|
|
1440
1228
|
],
|
|
1441
|
-
"description": "
|
|
1229
|
+
"description": "Default fit of image blocks (and Slide.image) that set no fit of their own: 'cover' fills the frame and crops what overflows around the block's focus, 'contain' shows the whole picture centered in the frame, 'stretch' scales it to the frame exactly. Effective value: the slide's design, then the deck's design, then the layout record's design.imageFit, then 'cover'. Backgrounds set their own fit."
|
|
1442
1230
|
},
|
|
1443
1231
|
"listBullet": {
|
|
1444
1232
|
"type": "string",
|
|
@@ -1450,136 +1238,19 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1450
1238
|
}
|
|
1451
1239
|
}
|
|
1452
1240
|
},
|
|
1453
|
-
"Theme": {
|
|
1454
|
-
"type": "object",
|
|
1455
|
-
"description": "Theme bundle used by the design system. In design.theme, 'id' resolves a themes catalog record as the base; any sibling fields override the resolved theme. The string shorthand on design.theme is equivalent to setting only 'id'.",
|
|
1456
|
-
"properties": {
|
|
1457
|
-
"id": {
|
|
1458
|
-
"type": "string",
|
|
1459
|
-
"description": "Theme reference. Resolves to the 'id' of a 'themes' catalog record. Accepts a bare id (lowercase kebab-case, e.g. 'minimal'), an HTTPS URL pointing at a record file, or a 'pkg:' reference. Field overrides on the surrounding Theme object take precedence over the resolved theme.\n\nResolution order: inline catalogs.themes.records[] -> catalogs.themes.source -> default catalog at https://www.pptx.gallery/themes.",
|
|
1460
|
-
"examples": [
|
|
1461
|
-
"minimal",
|
|
1462
|
-
"classic",
|
|
1463
|
-
"dark",
|
|
1464
|
-
"bold",
|
|
1465
|
-
"https://acme.com/decks/themes/acme-brand.json",
|
|
1466
|
-
"pkg:@acme/decks/themes/acme-brand"
|
|
1467
|
-
]
|
|
1468
|
-
},
|
|
1469
|
-
"name": {
|
|
1470
|
-
"type": "string",
|
|
1471
|
-
"description": "Human-readable theme name shown in pickers.",
|
|
1472
|
-
"examples": [
|
|
1473
|
-
"Minimal",
|
|
1474
|
-
"Classic",
|
|
1475
|
-
"Dark",
|
|
1476
|
-
"Bold"
|
|
1477
|
-
]
|
|
1478
|
-
},
|
|
1479
|
-
"summary": {
|
|
1480
|
-
"type": "string",
|
|
1481
|
-
"description": "One-sentence positioning of the theme - when to reach for it."
|
|
1482
|
-
},
|
|
1483
|
-
"description": {
|
|
1484
|
-
"type": "string",
|
|
1485
|
-
"description": "Longer prose describing what the theme looks and feels like and the kinds of decks it suits."
|
|
1486
|
-
},
|
|
1487
|
-
"colorScheme": {
|
|
1488
|
-
"oneOf": [
|
|
1489
|
-
{
|
|
1490
|
-
"type": "string"
|
|
1491
|
-
},
|
|
1492
|
-
{
|
|
1493
|
-
"$ref": "#/$defs/ColorScheme"
|
|
1494
|
-
}
|
|
1495
|
-
],
|
|
1496
|
-
"description": "Default color scheme for this theme. A string resolves against catalogs.colorSchemes; an object may provide an 'id' base reference plus overrides.",
|
|
1497
|
-
"examples": [
|
|
1498
|
-
"cool-horizon",
|
|
1499
|
-
{
|
|
1500
|
-
"id": "cool-horizon",
|
|
1501
|
-
"accent1": "#FF6F61"
|
|
1502
|
-
}
|
|
1503
|
-
]
|
|
1504
|
-
},
|
|
1505
|
-
"fontScheme": {
|
|
1506
|
-
"oneOf": [
|
|
1507
|
-
{
|
|
1508
|
-
"type": "string"
|
|
1509
|
-
},
|
|
1510
|
-
{
|
|
1511
|
-
"$ref": "#/$defs/FontScheme"
|
|
1512
|
-
}
|
|
1513
|
-
],
|
|
1514
|
-
"description": "Default font scheme for this theme. A string resolves against catalogs.fontSchemes; an object may provide an 'id' base reference plus overrides.",
|
|
1515
|
-
"examples": [
|
|
1516
|
-
"aptos",
|
|
1517
|
-
{
|
|
1518
|
-
"id": "aptos",
|
|
1519
|
-
"heading": "Inter"
|
|
1520
|
-
}
|
|
1521
|
-
]
|
|
1522
|
-
},
|
|
1523
|
-
"background": {
|
|
1524
|
-
"oneOf": [
|
|
1525
|
-
{
|
|
1526
|
-
"$ref": "#/$defs/BackgroundShortcut"
|
|
1527
|
-
},
|
|
1528
|
-
{
|
|
1529
|
-
"$ref": "#/$defs/Background"
|
|
1530
|
-
}
|
|
1531
|
-
],
|
|
1532
|
-
"description": "Default background for this theme. String shorthand accepts theme slots ('light1', 'light2', 'dark1', 'dark2') or hex colors.",
|
|
1533
|
-
"examples": [
|
|
1534
|
-
"dark1",
|
|
1535
|
-
"#ffff00",
|
|
1536
|
-
{
|
|
1537
|
-
"type": "theme",
|
|
1538
|
-
"slot": "dark2"
|
|
1539
|
-
}
|
|
1540
|
-
]
|
|
1541
|
-
},
|
|
1542
|
-
"dimensions": {
|
|
1543
|
-
"oneOf": [
|
|
1544
|
-
{
|
|
1545
|
-
"$ref": "#/$defs/DimensionPreset"
|
|
1546
|
-
},
|
|
1547
|
-
{
|
|
1548
|
-
"$ref": "#/$defs/Dimensions"
|
|
1549
|
-
}
|
|
1550
|
-
],
|
|
1551
|
-
"description": "Default slide size for this theme. A string preset is equivalent to { preset: value }.",
|
|
1552
|
-
"examples": [
|
|
1553
|
-
"widescreen",
|
|
1554
|
-
{
|
|
1555
|
-
"preset": "16:9"
|
|
1556
|
-
}
|
|
1557
|
-
]
|
|
1558
|
-
},
|
|
1559
|
-
"tags": {
|
|
1560
|
-
"type": "array",
|
|
1561
|
-
"items": {
|
|
1562
|
-
"type": "string"
|
|
1563
|
-
},
|
|
1564
|
-
"description": "Free-form labels for filtering and search."
|
|
1565
|
-
}
|
|
1566
|
-
}
|
|
1567
|
-
},
|
|
1568
1241
|
"ColorScheme": {
|
|
1569
1242
|
"type": "object",
|
|
1570
|
-
"description": "Color palette used by the design system. Every slot and role is a hex color ('#RGB', '#RRGGBB' or '#RRGGBBAA'); a color-scheme name or a 'var:<id>' reference is not valid here, because those resolve through the scheme. The slot fields (accent1-accent6, dark1, dark2, light1, light2, hyperlink, followedHyperlink) mirror color-scheme.schema.json (https://openpresentation.org/schema/opf-color-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.\n\nTwo parallel models are supported and may be mixed:\n- OOXML slots - the 12-slot PowerPoint theme model that round-trips directly to OOXML. Use these for full control over the palette as PowerPoint sees it.\n- Abstract roles (primary, secondary, accent, background, surface, text, textSecondary) - OPF-specific semantic aliases the engine maps onto the OOXML slots. Convenient for inline overrides without thinking in slot numbers; not part of the catalog record schema.\n\nIn design.colorScheme, 'id' resolves a colorSchemes
|
|
1243
|
+
"description": "Color palette used by the design system. Every slot and role is a hex color ('#RGB', '#RRGGBB' or '#RRGGBBAA'); a color-scheme name or a 'var:<id>' reference is not valid here, because those resolve through the scheme. The slot fields (accent1-accent6, dark1, dark2, light1, light2, hyperlink, followedHyperlink) mirror color-scheme.schema.json (https://openpresentation.org/schema/opf-color-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.\n\nTwo parallel models are supported and may be mixed:\n- OOXML slots - the 12-slot PowerPoint theme model that round-trips directly to OOXML. Use these for full control over the palette as PowerPoint sees it.\n- Abstract roles (primary, secondary, accent, background, surface, text, textSecondary) - OPF-specific semantic aliases the engine maps onto the OOXML slots. Convenient for inline overrides without thinking in slot numbers; not part of the catalog record schema.\n\nIn design.colorScheme, 'id' resolves a colorSchemes record as the base; slot and role overrides on the same object take precedence over the resolved scheme. The string form of design.colorScheme is equivalent to setting only 'id'.",
|
|
1571
1244
|
"properties": {
|
|
1572
1245
|
"id": {
|
|
1573
|
-
"
|
|
1574
|
-
"description": "
|
|
1246
|
+
"$ref": "#/$defs/CatalogReference",
|
|
1247
|
+
"description": "Colour-scheme reference (a bare id or 'name:id') resolved as the base; slot and role overrides on the surrounding ColorScheme object take precedence over the resolved scheme.",
|
|
1575
1248
|
"examples": [
|
|
1576
1249
|
"cool-horizon",
|
|
1577
1250
|
"boost",
|
|
1578
1251
|
"burnt-orange",
|
|
1579
1252
|
"ocean-depth",
|
|
1580
|
-
"corporate-blue"
|
|
1581
|
-
"https://acme.com/decks/color-schemes/acme.json",
|
|
1582
|
-
"pkg:@acme/decks/color-schemes/acme"
|
|
1253
|
+
"corporate-blue"
|
|
1583
1254
|
]
|
|
1584
1255
|
},
|
|
1585
1256
|
"accent1": {
|
|
@@ -1742,20 +1413,18 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1742
1413
|
},
|
|
1743
1414
|
"FontScheme": {
|
|
1744
1415
|
"type": "object",
|
|
1745
|
-
"description": "Typography selections used by the design system. The pair fields (major, minor) and refinement fields (type, app, languageFamily) mirror font-scheme.schema.json (https://openpresentation.org/schema/opf-font-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.\n\nTwo parallel models are supported and may be mixed:\n- OOXML pairs (major, minor) - heading and body family names that round-trip directly to PowerPoint majorFont/minorFont entries.\n- Abstract roles (heading, body, accent, code) - OPF-specific font family names the engine maps onto the OOXML pair when serializing. Convenient for inline overrides and for adding accent/code roles that don't have a direct OOXML slot. Catalog records may also carry 'code' (for example the consolas and courier-new records); heading, body and accent are not part of the catalog record schema. A role is a family name only: weight, style and tracking come from the text styles, and PowerPoint has no numeric weight.\n\nIn design.fontScheme, 'id' resolves a fontSchemes
|
|
1416
|
+
"description": "Typography selections used by the design system. The pair fields (major, minor) and refinement fields (type, app, languageFamily) mirror font-scheme.schema.json (https://openpresentation.org/schema/opf-font-scheme/v1) so library records and inline OPF overrides are interchangeable on those fields.\n\nTwo parallel models are supported and may be mixed:\n- OOXML pairs (major, minor) - heading and body family names that round-trip directly to PowerPoint majorFont/minorFont entries.\n- Abstract roles (heading, body, accent, code) - OPF-specific font family names the engine maps onto the OOXML pair when serializing. Convenient for inline overrides and for adding accent/code roles that don't have a direct OOXML slot. Catalog records may also carry 'code' (for example the consolas and courier-new records); heading, body and accent are not part of the catalog record schema. A role is a family name only: weight, style and tracking come from the text styles, and PowerPoint has no numeric weight.\n\nIn design.fontScheme, 'id' resolves a fontSchemes record as the base; pair and role overrides on the same object take precedence over the resolved scheme. The string form of design.fontScheme is equivalent to setting only 'id'.",
|
|
1746
1417
|
"properties": {
|
|
1747
1418
|
"id": {
|
|
1748
|
-
"
|
|
1749
|
-
"description": "Font
|
|
1419
|
+
"$ref": "#/$defs/CatalogReference",
|
|
1420
|
+
"description": "Font-scheme reference (a bare id or 'name:id') resolved as the base; field overrides on the surrounding FontScheme object take precedence over the resolved scheme.",
|
|
1750
1421
|
"examples": [
|
|
1751
1422
|
"aptos",
|
|
1752
1423
|
"tenorite",
|
|
1753
1424
|
"seaford",
|
|
1754
1425
|
"noto-sans",
|
|
1755
1426
|
"modern-sans",
|
|
1756
|
-
"classic-serif"
|
|
1757
|
-
"https://acme.com/decks/font-schemes/acme.json",
|
|
1758
|
-
"pkg:@acme/decks/font-schemes/acme"
|
|
1427
|
+
"classic-serif"
|
|
1759
1428
|
]
|
|
1760
1429
|
},
|
|
1761
1430
|
"major": {
|
|
@@ -1872,7 +1541,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
1872
1541
|
},
|
|
1873
1542
|
"code": {
|
|
1874
1543
|
"type": "string",
|
|
1875
|
-
"description": "Abstract role: monospaced font family name used for code blocks and for inline code runs (TextRun.code). No direct OOXML slot. Resolution: this override, then the resolved
|
|
1544
|
+
"description": "Abstract role: monospaced font family name used for code blocks and for inline code runs (TextRun.code). No direct OOXML slot. Resolution: this override, then the resolved font-scheme record's 'code' (for example Consolas for the consolas scheme), then the engine fallback Roboto Mono. Heading and body families are never used as the code fallback."
|
|
1876
1545
|
}
|
|
1877
1546
|
}
|
|
1878
1547
|
},
|
|
@@ -2389,13 +2058,28 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2389
2058
|
},
|
|
2390
2059
|
{
|
|
2391
2060
|
"$ref": "#/$defs/HexColor"
|
|
2061
|
+
},
|
|
2062
|
+
{
|
|
2063
|
+
"$ref": "#/$defs/ImageSource"
|
|
2392
2064
|
}
|
|
2393
2065
|
],
|
|
2394
|
-
"description": "String shorthand for a background. Theme slots ('light1', 'light2', 'dark1', 'dark2') are equivalent to { type: 'theme', slot: value }; hex colors are equivalent to { type: 'solid', color: value }.",
|
|
2066
|
+
"description": "String shorthand for a background. Theme slots ('light1', 'light2', 'dark1', 'dark2') are equivalent to { type: 'theme', slot: value }; hex colors are equivalent to { type: 'solid', color: value }; an image source (starting with 'asset:', 'https://', 'data:', './' or '../') is equivalent to { type: 'image', src: value }, a cover image. Any other string is invalid.",
|
|
2395
2067
|
"examples": [
|
|
2396
2068
|
"dark1",
|
|
2397
2069
|
"light2",
|
|
2398
|
-
"#ffff00"
|
|
2070
|
+
"#ffff00",
|
|
2071
|
+
"asset:cover-photo",
|
|
2072
|
+
"./images/harbour.jpg"
|
|
2073
|
+
]
|
|
2074
|
+
},
|
|
2075
|
+
"ImageSource": {
|
|
2076
|
+
"type": "string",
|
|
2077
|
+
"pattern": "^(asset:|https://|data:|\\./|\\.\\./)",
|
|
2078
|
+
"description": "An image source in a string shorthand: an 'asset:<id>' reference, an HTTPS URL, a data URI, or a relative path starting with './' or '../' (resolved against the OPF file location).",
|
|
2079
|
+
"examples": [
|
|
2080
|
+
"asset:cover-photo",
|
|
2081
|
+
"https://cdn.acme.com/backgrounds/cover.jpg",
|
|
2082
|
+
"./images/harbour.jpg"
|
|
2399
2083
|
]
|
|
2400
2084
|
},
|
|
2401
2085
|
"Background": {
|
|
@@ -2528,53 +2212,250 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2528
2212
|
},
|
|
2529
2213
|
"ImageBackground": {
|
|
2530
2214
|
"type": "object",
|
|
2531
|
-
"
|
|
2215
|
+
"additionalProperties": false,
|
|
2216
|
+
"description": "Picture background: the image fills the whole canvas behind everything and never moves content (to push content aside, use an image block with placement). The string shorthand 'asset:x' (or any image source) is { type: 'image', src: 'asset:x' }, a cover image. Paint order: the colour scheme's default slide background, the picture, then the overlay, then furniture and content.",
|
|
2532
2217
|
"required": [
|
|
2533
2218
|
"type",
|
|
2534
|
-
"
|
|
2219
|
+
"src"
|
|
2535
2220
|
],
|
|
2536
2221
|
"properties": {
|
|
2537
2222
|
"type": {
|
|
2538
2223
|
"type": "string",
|
|
2539
2224
|
"const": "image",
|
|
2540
|
-
"description": "
|
|
2225
|
+
"description": "Picture background."
|
|
2541
2226
|
},
|
|
2542
|
-
"
|
|
2543
|
-
"type": "
|
|
2544
|
-
"description": "
|
|
2545
|
-
"
|
|
2546
|
-
"
|
|
2227
|
+
"src": {
|
|
2228
|
+
"type": "string",
|
|
2229
|
+
"description": "Source for the background image: an 'asset:<id>' reference, HTTPS URL, data URI, or a relative path resolved against the OPF file location.",
|
|
2230
|
+
"examples": [
|
|
2231
|
+
"https://cdn.acme.com/backgrounds/cover.jpg",
|
|
2232
|
+
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA...",
|
|
2233
|
+
"./backgrounds/cover.jpg",
|
|
2234
|
+
"asset:bg-cover"
|
|
2235
|
+
]
|
|
2236
|
+
},
|
|
2237
|
+
"alt": {
|
|
2238
|
+
"type": "string",
|
|
2239
|
+
"description": "Alternative text. A background with alt is meaningful: PowerPoint export draws it as a full-slide picture at the back that carries the text, so screen readers see it. Without alt it is decorative and exports as the native slide background; the alt text of a referenced asset does not count, so a background is decorative unless it says otherwise."
|
|
2240
|
+
},
|
|
2241
|
+
"fit": {
|
|
2242
|
+
"type": "string",
|
|
2243
|
+
"enum": [
|
|
2244
|
+
"cover",
|
|
2245
|
+
"contain",
|
|
2246
|
+
"stretch",
|
|
2247
|
+
"tile"
|
|
2547
2248
|
],
|
|
2548
|
-
"
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2249
|
+
"description": "How the picture fills the canvas: 'cover' fills it and crops what overflows around focus; 'contain' shows the whole picture centered over the colour scheme's default background; 'stretch' scales it to the canvas exactly; 'tile' repeats it at its own size from the top-left corner. Default 'cover'."
|
|
2250
|
+
},
|
|
2251
|
+
"focus": {
|
|
2252
|
+
"$ref": "#/$defs/ImageFocus",
|
|
2253
|
+
"description": "Point of the picture to keep in view when 'cover' crops it. Ignored by the other fits."
|
|
2254
|
+
},
|
|
2255
|
+
"opacity": {
|
|
2256
|
+
"type": "number",
|
|
2257
|
+
"minimum": 0,
|
|
2258
|
+
"maximum": 1,
|
|
2259
|
+
"description": "Picture opacity from 0 (fully transparent) to 1 (fully opaque); the overlay keeps its own opacity. Default 1."
|
|
2260
|
+
},
|
|
2261
|
+
"recolor": {
|
|
2262
|
+
"$ref": "#/$defs/ImageRecolor",
|
|
2263
|
+
"description": "Grayscale or duotone treatment of the picture's pixels, as on an image block: recolor and opacity apply to the pixels, then the overlay is drawn above."
|
|
2264
|
+
},
|
|
2265
|
+
"overlay": {
|
|
2266
|
+
"$ref": "#/$defs/Overlay",
|
|
2267
|
+
"description": "Scrim over the whole picture or a band along one edge (edge, size), beneath furniture and content, for example to keep a title readable over a busy photo."
|
|
2268
|
+
}
|
|
2269
|
+
},
|
|
2270
|
+
"examples": [
|
|
2271
|
+
{
|
|
2272
|
+
"type": "image",
|
|
2273
|
+
"src": "asset:cover-photo"
|
|
2274
|
+
},
|
|
2275
|
+
{
|
|
2276
|
+
"type": "image",
|
|
2277
|
+
"src": "./images/harbour.jpg",
|
|
2278
|
+
"alt": "Container ships at dawn",
|
|
2279
|
+
"focus": {
|
|
2280
|
+
"x": 0.5,
|
|
2281
|
+
"y": 0.7
|
|
2282
|
+
},
|
|
2283
|
+
"overlay": {
|
|
2284
|
+
"color": "dark1",
|
|
2285
|
+
"opacity": 0.4
|
|
2568
2286
|
}
|
|
2287
|
+
}
|
|
2288
|
+
]
|
|
2289
|
+
},
|
|
2290
|
+
"ImageFocus": {
|
|
2291
|
+
"type": "object",
|
|
2292
|
+
"additionalProperties": false,
|
|
2293
|
+
"required": [
|
|
2294
|
+
"x",
|
|
2295
|
+
"y"
|
|
2296
|
+
],
|
|
2297
|
+
"description": "A point of a picture as fractions of its width and height, from the top-left corner. A cover fit centers this point in the frame as far as the picture still covers the frame, so it always stays in view: { x: 0.5, y: 0.5 } (the default) is a center crop, { x: 0, y: 0 } keeps the top-left corner.",
|
|
2298
|
+
"properties": {
|
|
2299
|
+
"x": {
|
|
2300
|
+
"type": "number",
|
|
2301
|
+
"minimum": 0,
|
|
2302
|
+
"maximum": 1,
|
|
2303
|
+
"description": "Horizontal position, 0 (left edge) to 1 (right edge)."
|
|
2304
|
+
},
|
|
2305
|
+
"y": {
|
|
2306
|
+
"type": "number",
|
|
2307
|
+
"minimum": 0,
|
|
2308
|
+
"maximum": 1,
|
|
2309
|
+
"description": "Vertical position, 0 (top edge) to 1 (bottom edge)."
|
|
2310
|
+
}
|
|
2311
|
+
},
|
|
2312
|
+
"examples": [
|
|
2313
|
+
{
|
|
2314
|
+
"x": 0.5,
|
|
2315
|
+
"y": 0.7
|
|
2316
|
+
}
|
|
2317
|
+
]
|
|
2318
|
+
},
|
|
2319
|
+
"Overlay": {
|
|
2320
|
+
"type": "object",
|
|
2321
|
+
"additionalProperties": false,
|
|
2322
|
+
"required": [
|
|
2323
|
+
"color",
|
|
2324
|
+
"opacity"
|
|
2325
|
+
],
|
|
2326
|
+
"description": "Solid scrim over a picture: the whole frame in the frame's shape, or a band along one edge. Shared by image backgrounds and image blocks. Drawn directly above its picture and beneath headings and content; PowerPoint export writes one native shape above the picture.",
|
|
2327
|
+
"properties": {
|
|
2328
|
+
"color": {
|
|
2329
|
+
"$ref": "#/$defs/ColorRef",
|
|
2330
|
+
"description": "Overlay fill color: a hex color (eight-digit hex keeps its alpha), a color-scheme slot or role name, or a 'var:<id>' variable reference."
|
|
2569
2331
|
},
|
|
2570
2332
|
"opacity": {
|
|
2571
2333
|
"type": "number",
|
|
2572
2334
|
"minimum": 0,
|
|
2573
2335
|
"maximum": 1,
|
|
2574
|
-
"description": "
|
|
2336
|
+
"description": "Overlay fill opacity."
|
|
2337
|
+
},
|
|
2338
|
+
"edge": {
|
|
2339
|
+
"type": "string",
|
|
2340
|
+
"enum": [
|
|
2341
|
+
"top",
|
|
2342
|
+
"bottom",
|
|
2343
|
+
"left",
|
|
2344
|
+
"right"
|
|
2345
|
+
],
|
|
2346
|
+
"description": "Cover only a band along this edge of the frame, for example a caption strip. Backgrounds and rectangle image frames only; on another shape the overlay is not drawn and composition reports unsupported-image-treatment. Omit to cover the whole frame. In a right-to-left deck 'left' and 'right' are the start and end sides."
|
|
2347
|
+
},
|
|
2348
|
+
"size": {
|
|
2349
|
+
"type": "number",
|
|
2350
|
+
"minimum": 0.05,
|
|
2351
|
+
"maximum": 1,
|
|
2352
|
+
"description": "Band share of the frame for an edge overlay. Default 0.3. Ignored without edge."
|
|
2353
|
+
}
|
|
2354
|
+
},
|
|
2355
|
+
"examples": [
|
|
2356
|
+
{
|
|
2357
|
+
"color": "dark1",
|
|
2358
|
+
"opacity": 0.4
|
|
2359
|
+
},
|
|
2360
|
+
{
|
|
2361
|
+
"color": "#000000",
|
|
2362
|
+
"opacity": 0.75,
|
|
2363
|
+
"edge": "bottom",
|
|
2364
|
+
"size": 0.25
|
|
2365
|
+
}
|
|
2366
|
+
]
|
|
2367
|
+
},
|
|
2368
|
+
"ImagePlacement": {
|
|
2369
|
+
"type": "object",
|
|
2370
|
+
"additionalProperties": false,
|
|
2371
|
+
"required": [
|
|
2372
|
+
"edge"
|
|
2373
|
+
],
|
|
2374
|
+
"description": "Bleeds an image block to one edge of the slide: the image takes a band along that edge, edge to edge, and the headings and other content compose in the rest of the slide at the normal padding. Only top-level blocks (slides.N.blocks.I) can be placed, at most one per edge; a layout's image placeholder may carry the same placement for the slide's image. Bands are taken in block order, each spanning the free area left by earlier ones. Placement is the only mechanism that moves content aside; a background never does. A slide whose only body is placed images is composed like a cover: its headings center in the free area. In a right-to-left deck 'left' is the start side, drawn at the right.",
|
|
2375
|
+
"properties": {
|
|
2376
|
+
"edge": {
|
|
2377
|
+
"type": "string",
|
|
2378
|
+
"enum": [
|
|
2379
|
+
"left",
|
|
2380
|
+
"right",
|
|
2381
|
+
"top",
|
|
2382
|
+
"bottom"
|
|
2383
|
+
],
|
|
2384
|
+
"description": "The slide edge the image bleeds to."
|
|
2385
|
+
},
|
|
2386
|
+
"size": {
|
|
2387
|
+
"type": "number",
|
|
2388
|
+
"minimum": 0.1,
|
|
2389
|
+
"maximum": 0.9,
|
|
2390
|
+
"description": "Share of the slide width (left, right) or height (top, bottom) given to the band. Default 0.5."
|
|
2391
|
+
},
|
|
2392
|
+
"inset": {
|
|
2393
|
+
"type": "boolean",
|
|
2394
|
+
"description": "Draw the frame inside the slide padding on every side of the band, like a card, instead of edge to edge. Default false."
|
|
2395
|
+
}
|
|
2396
|
+
},
|
|
2397
|
+
"examples": [
|
|
2398
|
+
{
|
|
2399
|
+
"edge": "left",
|
|
2400
|
+
"size": 0.45
|
|
2401
|
+
},
|
|
2402
|
+
{
|
|
2403
|
+
"edge": "right",
|
|
2404
|
+
"size": 0.4,
|
|
2405
|
+
"inset": true
|
|
2406
|
+
}
|
|
2407
|
+
]
|
|
2408
|
+
},
|
|
2409
|
+
"ImageBorder": {
|
|
2410
|
+
"type": "object",
|
|
2411
|
+
"additionalProperties": false,
|
|
2412
|
+
"required": [
|
|
2413
|
+
"color",
|
|
2414
|
+
"width"
|
|
2415
|
+
],
|
|
2416
|
+
"description": "Solid line along the image frame's shape, centered on the outline with a miter join, like a native picture line. A thick dark border on a rounded portrait frame gives a device bezel.",
|
|
2417
|
+
"properties": {
|
|
2418
|
+
"color": {
|
|
2419
|
+
"$ref": "#/$defs/ColorRef",
|
|
2420
|
+
"description": "Line color: a hex color, a color-scheme slot or role name, or a 'var:<id>' variable reference."
|
|
2421
|
+
},
|
|
2422
|
+
"width": {
|
|
2423
|
+
"type": "number",
|
|
2424
|
+
"minimum": 0,
|
|
2425
|
+
"maximum": 64,
|
|
2426
|
+
"description": "Line width in reference pixels at a 720-pixel short edge. 0 removes the line."
|
|
2575
2427
|
}
|
|
2576
2428
|
}
|
|
2577
2429
|
},
|
|
2430
|
+
"ImageRecolor": {
|
|
2431
|
+
"oneOf": [
|
|
2432
|
+
{
|
|
2433
|
+
"type": "string",
|
|
2434
|
+
"const": "grayscale",
|
|
2435
|
+
"description": "Replace each pixel with its luminance, exported as native a:grayscl."
|
|
2436
|
+
},
|
|
2437
|
+
{
|
|
2438
|
+
"type": "object",
|
|
2439
|
+
"additionalProperties": false,
|
|
2440
|
+
"required": [
|
|
2441
|
+
"dark",
|
|
2442
|
+
"light"
|
|
2443
|
+
],
|
|
2444
|
+
"properties": {
|
|
2445
|
+
"dark": {
|
|
2446
|
+
"$ref": "#/$defs/ColorRef",
|
|
2447
|
+
"description": "Color at luminance 0."
|
|
2448
|
+
},
|
|
2449
|
+
"light": {
|
|
2450
|
+
"$ref": "#/$defs/ColorRef",
|
|
2451
|
+
"description": "Color at luminance 1."
|
|
2452
|
+
}
|
|
2453
|
+
},
|
|
2454
|
+
"description": "Duotone: map each pixel's luminance linearly from dark to light, exported as native a:duotone."
|
|
2455
|
+
}
|
|
2456
|
+
],
|
|
2457
|
+
"description": "Color treatment for the image pixels. Luminance uses Rec. 601 weights (0.299, 0.587, 0.114) on sRGB values."
|
|
2458
|
+
},
|
|
2578
2459
|
"PatternBackground": {
|
|
2579
2460
|
"type": "object",
|
|
2580
2461
|
"description": "Fixed pattern slide background fill.",
|
|
@@ -2685,7 +2566,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2685
2566
|
},
|
|
2686
2567
|
"Watermark": {
|
|
2687
2568
|
"type": "object",
|
|
2688
|
-
"description": "Decorative watermark: an image ('src') or a text stamp ('text'), exactly one of the two, with its opacity. An image is drawn once per slide, contained and centered in a fixed frame (the middle 40% of the slide width and height, from 30% to 70% on each axis). A text watermark is one line of text in the heading font and the theme text color at the given opacity, centered on the slide and rotated 30 degrees counterclockwise (rising to the right), sized to span at most 70% of the slide width and at most 30% of the shorter slide edge in height; it is drawn behind the slide content and above the background
|
|
2569
|
+
"description": "Decorative watermark: an image ('src') or a text stamp ('text'), exactly one of the two, with its opacity. An image is drawn once per slide, contained and centered in a fixed frame (the middle 40% of the slide width and height, from 30% to 70% on each axis). A text watermark is one line of text in the heading font and the theme text color at the given opacity, centered on the slide and rotated 30 degrees counterclockwise (rising to the right), sized to span at most 70% of the slide width and at most 30% of the shorter slide edge in height; it is drawn behind the slide content and above the background. There is no option to move, scale, rotate or tile either form. PPTX export writes one native picture (image) or one native text box (text) per slide with the opacity as alpha, and import restores the watermark. A string or Asset (no opacity) is the image watermark at opacity 0.08. A watermark object needs opacity and exactly one of src and text; use a plain string or Asset for an image at the default opacity. Use design.watermark = false to disable an inherited watermark.",
|
|
2689
2570
|
"additionalProperties": false,
|
|
2690
2571
|
"required": [
|
|
2691
2572
|
"opacity"
|
|
@@ -2872,17 +2753,15 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2872
2753
|
"description": "Optional reference to one or more beats of the deck's narrative (each value is the id of a beat in the narrative record that the root 'narrative' resolves to). A single string declares the slide's primary beat; an array declares that one slide covers multiple beats. Declares the slide's role in the story arc; does not constrain ordering or structure. Core validate warns about a beat id the resolved narrative does not define, and reports a beat that no slide references. Slides without a beat are valid; multiple slides may share a beat."
|
|
2873
2754
|
},
|
|
2874
2755
|
"layout": {
|
|
2875
|
-
"
|
|
2876
|
-
"description": "Optional
|
|
2756
|
+
"$ref": "#/$defs/CatalogReference",
|
|
2757
|
+
"description": "Optional layout: a layouts reference, a bare id ('title-subtitle') or 'name:id' ('acme:hero'). When omitted, the slide is composed with no layout record: engines arrange title, subtitle, tag and content automatically, a slide with no body payload is a cover (vertically centered), and design hints apply; there is no finding. A reference that resolves nowhere is the warning opf/unresolved-reference (and the 'unresolved-reference' diagnostic of resolveSlideContext), the slide composes automatically, and a strict export fails. A layout never changes what a slide contains, and engines never substitute a different layout.",
|
|
2877
2758
|
"examples": [
|
|
2878
2759
|
"title",
|
|
2879
2760
|
"title-subtitle",
|
|
2880
2761
|
"text-2x",
|
|
2881
2762
|
"chart-3x",
|
|
2882
|
-
"image-bleed",
|
|
2883
2763
|
"blank",
|
|
2884
|
-
"
|
|
2885
|
-
"pkg:@acme/decks/layouts/cover"
|
|
2764
|
+
"acme:hero"
|
|
2886
2765
|
]
|
|
2887
2766
|
},
|
|
2888
2767
|
"title": {
|
|
@@ -2999,7 +2878,7 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
2999
2878
|
},
|
|
3000
2879
|
"image": {
|
|
3001
2880
|
"$ref": "#/$defs/Asset",
|
|
3002
|
-
"description": "
|
|
2881
|
+
"description": "Shorthand for one image block: the picture composes as body content, like { type: 'image', image: value }, with the effective design.imageFit. A layout's image placeholder may place it along an edge (placement). For fit, focus, treatments or an explicit placement use an image block in blocks; for a full-slide picture behind the content use design.background. Presence of this field infers type 'image'."
|
|
3003
2882
|
},
|
|
3004
2883
|
"video": {
|
|
3005
2884
|
"$ref": "#/$defs/Asset",
|
|
@@ -3371,6 +3250,63 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
3371
3250
|
"asset:img-diagram"
|
|
3372
3251
|
]
|
|
3373
3252
|
},
|
|
3253
|
+
"fit": {
|
|
3254
|
+
"type": "string",
|
|
3255
|
+
"enum": [
|
|
3256
|
+
"cover",
|
|
3257
|
+
"contain",
|
|
3258
|
+
"stretch"
|
|
3259
|
+
],
|
|
3260
|
+
"description": "Image payloads only. How the picture fills its frame: 'cover' fills it and crops what overflows around focus; 'contain' shows the whole picture centered; 'stretch' scales it to the frame exactly. Default: the effective design.imageFit, else 'cover'."
|
|
3261
|
+
},
|
|
3262
|
+
"focus": {
|
|
3263
|
+
"$ref": "#/$defs/ImageFocus",
|
|
3264
|
+
"description": "Image payloads only. Point of the picture to keep in view when 'cover' crops it. Ignored by the other fits."
|
|
3265
|
+
},
|
|
3266
|
+
"aspectRatio": {
|
|
3267
|
+
"type": "number",
|
|
3268
|
+
"exclusiveMinimum": 0,
|
|
3269
|
+
"maximum": 10,
|
|
3270
|
+
"description": "Image payloads only. Width-to-height ratio of the frame: the frame becomes the largest centered box with this ratio inside the block's region, for example 2.39 for a cinematic letterbox or 0.5 for a phone-shaped frame. shape 'circle' always uses 1."
|
|
3271
|
+
},
|
|
3272
|
+
"shape": {
|
|
3273
|
+
"type": "string",
|
|
3274
|
+
"enum": [
|
|
3275
|
+
"rectangle",
|
|
3276
|
+
"rounded",
|
|
3277
|
+
"circle",
|
|
3278
|
+
"hexagon"
|
|
3279
|
+
],
|
|
3280
|
+
"description": "Image payloads only. Mask applied to the frame, exported as the picture's native preset geometry (rect, roundRect, ellipse, hexagon). 'circle' makes the frame square. Default 'rectangle'."
|
|
3281
|
+
},
|
|
3282
|
+
"cornerRadius": {
|
|
3283
|
+
"type": "number",
|
|
3284
|
+
"minimum": 0,
|
|
3285
|
+
"maximum": 0.5,
|
|
3286
|
+
"description": "Image payloads only. Corner radius for shape 'rounded' as a fraction of the frame's shorter side. Default 0.16667, PowerPoint's roundRect default."
|
|
3287
|
+
},
|
|
3288
|
+
"border": {
|
|
3289
|
+
"$ref": "#/$defs/ImageBorder",
|
|
3290
|
+
"description": "Image payloads only. Line along the frame's shape."
|
|
3291
|
+
},
|
|
3292
|
+
"opacity": {
|
|
3293
|
+
"type": "number",
|
|
3294
|
+
"minimum": 0,
|
|
3295
|
+
"maximum": 1,
|
|
3296
|
+
"description": "Image payloads only. Picture opacity from 0 to 1, exported as a native alphaModFix. The border and overlay keep their own opacity. Default 1."
|
|
3297
|
+
},
|
|
3298
|
+
"recolor": {
|
|
3299
|
+
"$ref": "#/$defs/ImageRecolor",
|
|
3300
|
+
"description": "Image payloads only. Grayscale or duotone treatment of the picture's pixels."
|
|
3301
|
+
},
|
|
3302
|
+
"overlay": {
|
|
3303
|
+
"$ref": "#/$defs/Overlay",
|
|
3304
|
+
"description": "Image payloads only. Scrim over the picture in the frame's shape, or a band along one edge of a rectangle frame."
|
|
3305
|
+
},
|
|
3306
|
+
"placement": {
|
|
3307
|
+
"$ref": "#/$defs/ImagePlacement",
|
|
3308
|
+
"description": "Image payloads only, and only on a top-level block (slides.N.blocks.I), at most one per edge. Bleeds the image to one slide edge; the headings and the other blocks compose in the rest of the slide."
|
|
3309
|
+
},
|
|
3374
3310
|
"video": {
|
|
3375
3311
|
"$ref": "#/$defs/Asset",
|
|
3376
3312
|
"description": "Source for a video item. Engines do not play video: the preview draws a placeholder (a play badge with the asset's title or source as its caption), and PPTX export draws the same placeholder as native shapes linked to an http(s) source, with no embedded media. Native playback is out of scope (docs/programs/release-readiness).",
|
|
@@ -4545,7 +4481,36 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
4545
4481
|
"properties": {
|
|
4546
4482
|
"type": {
|
|
4547
4483
|
"type": "string",
|
|
4548
|
-
"
|
|
4484
|
+
"enum": [
|
|
4485
|
+
"100pct-stacked-area",
|
|
4486
|
+
"100pct-stacked-bar",
|
|
4487
|
+
"100pct-stacked-column",
|
|
4488
|
+
"area",
|
|
4489
|
+
"bar",
|
|
4490
|
+
"box-and-whisker",
|
|
4491
|
+
"column",
|
|
4492
|
+
"combo",
|
|
4493
|
+
"doughnut",
|
|
4494
|
+
"filled-radar",
|
|
4495
|
+
"funnel",
|
|
4496
|
+
"histogram",
|
|
4497
|
+
"line",
|
|
4498
|
+
"line-with-markers",
|
|
4499
|
+
"pareto",
|
|
4500
|
+
"pie",
|
|
4501
|
+
"radar",
|
|
4502
|
+
"radar-with-markers",
|
|
4503
|
+
"scatter",
|
|
4504
|
+
"stacked-area",
|
|
4505
|
+
"stacked-bar",
|
|
4506
|
+
"stacked-column",
|
|
4507
|
+
"stacked-line",
|
|
4508
|
+
"stacked-line-with-markers",
|
|
4509
|
+
"treemap",
|
|
4510
|
+
"waterfall",
|
|
4511
|
+
"world"
|
|
4512
|
+
],
|
|
4513
|
+
"description": "Chart type, an engine vocabulary validated directly (no catalog lookup): the chart types Aspose.Slides officially supports, plus 'combo' (clustered columns with line series, see 'line' and 'secondaryAxis'). Each engine maps a type to its own chart model; labels and picker groups are catalog display metadata.",
|
|
4549
4514
|
"examples": [
|
|
4550
4515
|
"column",
|
|
4551
4516
|
"bar",
|
|
@@ -5470,96 +5435,274 @@ Resolution order: inline catalogs.fontSchemes.records[] -> catalogs.fontSchemes.
|
|
|
5470
5435
|
],
|
|
5471
5436
|
"description": "Default solid."
|
|
5472
5437
|
}
|
|
5473
|
-
},
|
|
5474
|
-
"description": "One explicit cell border."
|
|
5438
|
+
},
|
|
5439
|
+
"description": "One explicit cell border."
|
|
5440
|
+
},
|
|
5441
|
+
"Catalogs": {
|
|
5442
|
+
"type": "object",
|
|
5443
|
+
"description": "The catalog records a document embeds, grouped by the catalog they came from. Each property is a group; inside a group, records are keyed by kind and then by id.\n- 'default': the catalog bare ids come from. It needs a 'source' when it holds records. Omitted: bare ids fall back to the host's default catalog. false: no catalog fallback, so every bare id must be embedded (under 'custom' or 'default').\n- 'custom': the records the document defines itself. It has no source.\n- any other name ('acme'): an extra catalog, identified by its 'source'. The name is the prefix references use ('acme:hero'). Names are lowercase kebab-case; 'default' and 'custom' are reserved.\n\nResolution, for every kind: a bare id resolves in 'custom', then in the records embedded under 'default', then in the catalog the host registered for default.source (the host's default catalog when 'default' is omitted). 'name:id' resolves in that group's records, then in the catalog the host registered for its source. A reference written inside an embedded record (a theme's colorScheme) resolves in that record's own group first. A prefix that names no group is a validation error; a reference that resolves nowhere is the warning opf/unresolved-reference. Engines never fetch a source: hosts register catalogs by their source string, and authoring tools embed every record a document uses when they save it.",
|
|
5444
|
+
"properties": {
|
|
5445
|
+
"default": {
|
|
5446
|
+
"oneOf": [
|
|
5447
|
+
{
|
|
5448
|
+
"allOf": [
|
|
5449
|
+
{
|
|
5450
|
+
"$ref": "#/$defs/CatalogGroup"
|
|
5451
|
+
},
|
|
5452
|
+
{
|
|
5453
|
+
"if": {
|
|
5454
|
+
"anyOf": [
|
|
5455
|
+
{
|
|
5456
|
+
"required": [
|
|
5457
|
+
"layouts"
|
|
5458
|
+
]
|
|
5459
|
+
},
|
|
5460
|
+
{
|
|
5461
|
+
"required": [
|
|
5462
|
+
"themes"
|
|
5463
|
+
]
|
|
5464
|
+
},
|
|
5465
|
+
{
|
|
5466
|
+
"required": [
|
|
5467
|
+
"colorSchemes"
|
|
5468
|
+
]
|
|
5469
|
+
},
|
|
5470
|
+
{
|
|
5471
|
+
"required": [
|
|
5472
|
+
"fontSchemes"
|
|
5473
|
+
]
|
|
5474
|
+
},
|
|
5475
|
+
{
|
|
5476
|
+
"required": [
|
|
5477
|
+
"narratives"
|
|
5478
|
+
]
|
|
5479
|
+
},
|
|
5480
|
+
{
|
|
5481
|
+
"required": [
|
|
5482
|
+
"audiences"
|
|
5483
|
+
]
|
|
5484
|
+
},
|
|
5485
|
+
{
|
|
5486
|
+
"required": [
|
|
5487
|
+
"purposes"
|
|
5488
|
+
]
|
|
5489
|
+
},
|
|
5490
|
+
{
|
|
5491
|
+
"required": [
|
|
5492
|
+
"tones"
|
|
5493
|
+
]
|
|
5494
|
+
}
|
|
5495
|
+
]
|
|
5496
|
+
},
|
|
5497
|
+
"then": {
|
|
5498
|
+
"required": [
|
|
5499
|
+
"source"
|
|
5500
|
+
]
|
|
5501
|
+
}
|
|
5502
|
+
}
|
|
5503
|
+
]
|
|
5504
|
+
},
|
|
5505
|
+
{
|
|
5506
|
+
"const": false
|
|
5507
|
+
}
|
|
5508
|
+
],
|
|
5509
|
+
"description": "The catalog bare ids come from: its source and the records of it this document embeds. false turns off the catalog fallback for bare ids.",
|
|
5510
|
+
"examples": [
|
|
5511
|
+
{
|
|
5512
|
+
"source": "https://www.pptx.gallery",
|
|
5513
|
+
"layouts": {
|
|
5514
|
+
"two-column": {
|
|
5515
|
+
"name": "Two column",
|
|
5516
|
+
"placeholders": [
|
|
5517
|
+
{
|
|
5518
|
+
"type": "title"
|
|
5519
|
+
},
|
|
5520
|
+
{
|
|
5521
|
+
"type": "text"
|
|
5522
|
+
},
|
|
5523
|
+
{
|
|
5524
|
+
"type": "text"
|
|
5525
|
+
}
|
|
5526
|
+
]
|
|
5527
|
+
}
|
|
5528
|
+
}
|
|
5529
|
+
},
|
|
5530
|
+
false
|
|
5531
|
+
]
|
|
5532
|
+
},
|
|
5533
|
+
"custom": {
|
|
5534
|
+
"allOf": [
|
|
5535
|
+
{
|
|
5536
|
+
"$ref": "#/$defs/CatalogGroup"
|
|
5537
|
+
},
|
|
5538
|
+
{
|
|
5539
|
+
"not": {
|
|
5540
|
+
"required": [
|
|
5541
|
+
"source"
|
|
5542
|
+
]
|
|
5543
|
+
}
|
|
5544
|
+
}
|
|
5545
|
+
],
|
|
5546
|
+
"description": "Records the document defines itself, referenced by bare id. Checked first for every bare id. Forking a catalog record copies it here under a new id, so the change of ownership is visible."
|
|
5547
|
+
}
|
|
5548
|
+
},
|
|
5549
|
+
"propertyNames": {
|
|
5550
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
5551
|
+
"description": "Group name: lowercase kebab-case. 'default' and 'custom' are reserved."
|
|
5552
|
+
},
|
|
5553
|
+
"additionalProperties": {
|
|
5554
|
+
"allOf": [
|
|
5555
|
+
{
|
|
5556
|
+
"$ref": "#/$defs/CatalogGroup"
|
|
5557
|
+
},
|
|
5558
|
+
{
|
|
5559
|
+
"required": [
|
|
5560
|
+
"source"
|
|
5561
|
+
]
|
|
5562
|
+
}
|
|
5563
|
+
],
|
|
5564
|
+
"description": "A named catalog: its source and the records of it this document embeds. References name it as a prefix ('acme:hero')."
|
|
5565
|
+
},
|
|
5566
|
+
"examples": [
|
|
5567
|
+
{
|
|
5568
|
+
"default": {
|
|
5569
|
+
"source": "https://www.pptx.gallery",
|
|
5570
|
+
"themes": {
|
|
5571
|
+
"minimal": {
|
|
5572
|
+
"name": "Minimal",
|
|
5573
|
+
"colorScheme": "cool-horizon",
|
|
5574
|
+
"fontScheme": "aptos"
|
|
5575
|
+
}
|
|
5576
|
+
}
|
|
5577
|
+
},
|
|
5578
|
+
"acme": {
|
|
5579
|
+
"source": "pkg:@acme/opf-catalog",
|
|
5580
|
+
"layouts": {
|
|
5581
|
+
"hero": {
|
|
5582
|
+
"name": "Hero",
|
|
5583
|
+
"placeholders": [
|
|
5584
|
+
{
|
|
5585
|
+
"type": "title"
|
|
5586
|
+
}
|
|
5587
|
+
]
|
|
5588
|
+
}
|
|
5589
|
+
}
|
|
5590
|
+
},
|
|
5591
|
+
"custom": {
|
|
5592
|
+
"layouts": {
|
|
5593
|
+
"q4-special": {
|
|
5594
|
+
"name": "Q4 special",
|
|
5595
|
+
"placeholders": [
|
|
5596
|
+
{
|
|
5597
|
+
"type": "title"
|
|
5598
|
+
},
|
|
5599
|
+
{
|
|
5600
|
+
"type": "chart"
|
|
5601
|
+
}
|
|
5602
|
+
]
|
|
5603
|
+
}
|
|
5604
|
+
}
|
|
5605
|
+
}
|
|
5606
|
+
}
|
|
5607
|
+
]
|
|
5475
5608
|
},
|
|
5476
|
-
"
|
|
5609
|
+
"CatalogGroup": {
|
|
5477
5610
|
"type": "object",
|
|
5478
|
-
"
|
|
5611
|
+
"additionalProperties": false,
|
|
5612
|
+
"description": "One catalog group: the catalog's source and the records of it the document embeds, by kind and then by id.",
|
|
5479
5613
|
"properties": {
|
|
5480
|
-
"
|
|
5481
|
-
"$ref": "#/$defs/
|
|
5482
|
-
|
|
5614
|
+
"source": {
|
|
5615
|
+
"$ref": "#/$defs/CatalogSource"
|
|
5616
|
+
},
|
|
5617
|
+
"layouts": {
|
|
5618
|
+
"$ref": "#/$defs/CatalogRecords",
|
|
5619
|
+
"description": "Layout records keyed by id, each with the fields of https://openpresentation.org/schema/opf-layout/v1. Referenced from Slide.layout."
|
|
5483
5620
|
},
|
|
5484
5621
|
"themes": {
|
|
5485
|
-
"$ref": "#/$defs/
|
|
5486
|
-
"description": "
|
|
5622
|
+
"$ref": "#/$defs/CatalogRecords",
|
|
5623
|
+
"description": "Theme records keyed by id, each with the fields of https://openpresentation.org/schema/opf-theme/v1. Referenced from design.theme."
|
|
5487
5624
|
},
|
|
5488
5625
|
"colorSchemes": {
|
|
5489
|
-
"$ref": "#/$defs/
|
|
5490
|
-
"description": "
|
|
5626
|
+
"$ref": "#/$defs/CatalogRecords",
|
|
5627
|
+
"description": "Colour-scheme records keyed by id, each with the fields of https://openpresentation.org/schema/opf-color-scheme/v1. Referenced from design.colorScheme and a theme's colorScheme."
|
|
5491
5628
|
},
|
|
5492
5629
|
"fontSchemes": {
|
|
5493
|
-
"$ref": "#/$defs/
|
|
5494
|
-
"description": "
|
|
5495
|
-
},
|
|
5496
|
-
"languages": {
|
|
5497
|
-
"$ref": "#/$defs/CatalogEntry",
|
|
5498
|
-
"description": "Catalog of languages. Records validate against https://openpresentation.org/schema/opf-language/v1. Default source: https://www.pptx.gallery/languages."
|
|
5499
|
-
},
|
|
5500
|
-
"layouts": {
|
|
5501
|
-
"$ref": "#/$defs/CatalogEntry",
|
|
5502
|
-
"description": "Catalog of slide layouts. Records validate against https://openpresentation.org/schema/opf-layout/v1. Default source: https://www.pptx.gallery/layouts."
|
|
5630
|
+
"$ref": "#/$defs/CatalogRecords",
|
|
5631
|
+
"description": "Font-scheme records keyed by id, each with the fields of https://openpresentation.org/schema/opf-font-scheme/v1. Referenced from design.fontScheme, a theme's fontScheme and a language's font schemes."
|
|
5503
5632
|
},
|
|
5504
|
-
"
|
|
5505
|
-
"$ref": "#/$defs/
|
|
5506
|
-
"description": "
|
|
5633
|
+
"narratives": {
|
|
5634
|
+
"$ref": "#/$defs/CatalogRecords",
|
|
5635
|
+
"description": "Narrative records keyed by id, each with the fields of https://openpresentation.org/schema/opf-narrative/v1. Referenced from narrative."
|
|
5507
5636
|
},
|
|
5508
|
-
"
|
|
5509
|
-
"$ref": "#/$defs/
|
|
5510
|
-
"description": "
|
|
5637
|
+
"audiences": {
|
|
5638
|
+
"$ref": "#/$defs/CatalogRecords",
|
|
5639
|
+
"description": "Audience records keyed by id, each with the fields of https://openpresentation.org/schema/opf-audience/v1. Referenced from audience."
|
|
5511
5640
|
},
|
|
5512
5641
|
"purposes": {
|
|
5513
|
-
"$ref": "#/$defs/
|
|
5514
|
-
"description": "
|
|
5642
|
+
"$ref": "#/$defs/CatalogRecords",
|
|
5643
|
+
"description": "Purpose records keyed by id, each with the fields of https://openpresentation.org/schema/opf-purpose/v1. Referenced from purpose."
|
|
5515
5644
|
},
|
|
5516
|
-
"
|
|
5517
|
-
"$ref": "#/$defs/
|
|
5518
|
-
"description": "
|
|
5519
|
-
},
|
|
5520
|
-
"socialPlatforms": {
|
|
5521
|
-
"$ref": "#/$defs/CatalogEntry",
|
|
5522
|
-
"description": "Catalog of social-media platforms. Records validate against https://openpresentation.org/schema/opf-social-platform/v1. Default source: https://www.pptx.gallery/social-platforms. Referenced via the property keys of any Socials object (Organization.socials, Speaker.socials)."
|
|
5645
|
+
"tones": {
|
|
5646
|
+
"$ref": "#/$defs/CatalogRecords",
|
|
5647
|
+
"description": "Tone records keyed by id, each with the fields of https://openpresentation.org/schema/opf-tone/v1. Referenced from tone."
|
|
5523
5648
|
}
|
|
5524
5649
|
}
|
|
5525
5650
|
},
|
|
5526
|
-
"
|
|
5651
|
+
"CatalogSource": {
|
|
5652
|
+
"type": "string",
|
|
5653
|
+
"pattern": "^(?:https://[^\\s]+|pkg:[^\\s]+)$",
|
|
5654
|
+
"description": "Identity of a catalog: an HTTPS URL ('https://www.pptx.gallery') or a package reference ('pkg:@acme/opf-catalog'). It names the catalog; engines never fetch or install it. A host registers the catalog's records under this exact string, and copying slides between documents matches groups by it.",
|
|
5655
|
+
"examples": [
|
|
5656
|
+
"https://www.pptx.gallery",
|
|
5657
|
+
"pkg:@acme/opf-catalog"
|
|
5658
|
+
]
|
|
5659
|
+
},
|
|
5660
|
+
"CatalogRecords": {
|
|
5527
5661
|
"type": "object",
|
|
5528
|
-
"description": "
|
|
5529
|
-
"
|
|
5530
|
-
"
|
|
5531
|
-
|
|
5662
|
+
"description": "Embedded records of one kind, keyed by id. The key is the record's id; an embedded record carries no '$schema', 'id', origin or digest. Catalog display metadata ('x-*' members) is stripped when a record is embedded.",
|
|
5663
|
+
"propertyNames": {
|
|
5664
|
+
"pattern": "^[a-z][a-z0-9-]*$"
|
|
5665
|
+
},
|
|
5666
|
+
"additionalProperties": {
|
|
5667
|
+
"type": "object",
|
|
5668
|
+
"not": {
|
|
5669
|
+
"anyOf": [
|
|
5532
5670
|
{
|
|
5533
|
-
"
|
|
5671
|
+
"required": [
|
|
5672
|
+
"$schema"
|
|
5673
|
+
]
|
|
5534
5674
|
},
|
|
5535
5675
|
{
|
|
5536
|
-
"
|
|
5537
|
-
|
|
5538
|
-
|
|
5539
|
-
},
|
|
5540
|
-
"minItems": 1,
|
|
5541
|
-
"description": "Ordered search path of sources. The engine tries each in order; first match wins. The default catalog for the kind is appended implicitly at the end."
|
|
5676
|
+
"required": [
|
|
5677
|
+
"id"
|
|
5678
|
+
]
|
|
5542
5679
|
}
|
|
5543
|
-
]
|
|
5544
|
-
"description": "Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Engines never fetch a source. The host loads the records itself and passes them to the renderer and exporter as a 'catalogSources' map from the source string to its records; a source with no entry in that map contributes no records, except the default catalog's own URL and the '@openpresentation/opf' package, which resolve from the bundled snapshot."
|
|
5680
|
+
]
|
|
5545
5681
|
},
|
|
5546
|
-
"
|
|
5547
|
-
"type": "array",
|
|
5548
|
-
"items": {
|
|
5549
|
-
"type": "object"
|
|
5550
|
-
},
|
|
5551
|
-
"description": "Inline catalog records embedded in this OPF document. Each record validates against the kind's companion schema (e.g. https://openpresentation.org/schema/opf-narrative/v1 for narratives). Inline records win over anything resolved from 'source' and over the default catalog."
|
|
5552
|
-
}
|
|
5682
|
+
"description": "One embedded record: the fields of the kind's companion schema without '$schema' and 'id'."
|
|
5553
5683
|
}
|
|
5554
5684
|
},
|
|
5555
|
-
"
|
|
5685
|
+
"CatalogReference": {
|
|
5686
|
+
"type": "string",
|
|
5687
|
+
"pattern": "^(?:[a-z][a-z0-9-]*:)?[a-z][a-z0-9-]*$",
|
|
5688
|
+
"description": "A content reference: a bare id ('two-column') or 'name:id' ('acme:hero'), where the prefix names a group of 'catalogs'. URLs and 'pkg:' strings are not references; a named catalog group replaces them. See Catalogs for the resolution order.",
|
|
5689
|
+
"examples": [
|
|
5690
|
+
"two-column",
|
|
5691
|
+
"acme:hero",
|
|
5692
|
+
"default:minimal",
|
|
5693
|
+
"custom:q4-special"
|
|
5694
|
+
]
|
|
5695
|
+
},
|
|
5696
|
+
"LanguageTag": {
|
|
5556
5697
|
"type": "string",
|
|
5557
|
-
"
|
|
5698
|
+
"pattern": "^(?:[A-Za-z]{2,3}|[iIxX])(?:-[A-Za-z0-9]{1,8})*$",
|
|
5699
|
+
"description": "A BCP-47 language tag ('en-US', 'ja', 'zh-Hans', 'sr-Latn-ME'), an engine vocabulary. Use 'en-GB' for UK English; 'en-UK' is not a valid region.",
|
|
5558
5700
|
"examples": [
|
|
5559
|
-
"
|
|
5560
|
-
"
|
|
5561
|
-
"
|
|
5562
|
-
"
|
|
5701
|
+
"en-US",
|
|
5702
|
+
"en-GB",
|
|
5703
|
+
"ja",
|
|
5704
|
+
"zh-Hans",
|
|
5705
|
+
"ar-SA"
|
|
5563
5706
|
]
|
|
5564
5707
|
},
|
|
5565
5708
|
"Composition": {
|
|
@@ -5628,7 +5771,7 @@ var audience = {
|
|
|
5628
5771
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5629
5772
|
"$id": "https://openpresentation.org/schema/opf-audience/v1",
|
|
5630
5773
|
"title": "Audience",
|
|
5631
|
-
"description": "Schema for audience records
|
|
5774
|
+
"description": "Schema for audience records. Each record names an audience archetype (e.g. 'executive', 'engineering-team', 'investor') and carries seniority, technical-fluency, decision-power, and attention-budget hints used by AI-driven generation. Documents reference an audience from 'audience', which also accepts free-form text.\n\nA document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.",
|
|
5632
5775
|
"type": "object",
|
|
5633
5776
|
"required": [
|
|
5634
5777
|
"$schema",
|
|
@@ -5639,12 +5782,12 @@ var audience = {
|
|
|
5639
5782
|
"$schema": {
|
|
5640
5783
|
"type": "string",
|
|
5641
5784
|
"const": "https://openpresentation.org/schema/opf-audience/v1",
|
|
5642
|
-
"description": "Identifies
|
|
5785
|
+
"description": "Identifies a published record file as a audience record. Required in a published file; an embedded copy omits it."
|
|
5643
5786
|
},
|
|
5644
5787
|
"id": {
|
|
5645
5788
|
"type": "string",
|
|
5646
5789
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
5647
|
-
"description": "
|
|
5790
|
+
"description": "The audience's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field.",
|
|
5648
5791
|
"examples": [
|
|
5649
5792
|
"executive",
|
|
5650
5793
|
"board",
|
|
@@ -5674,29 +5817,6 @@ var audience = {
|
|
|
5674
5817
|
"Regulators"
|
|
5675
5818
|
]
|
|
5676
5819
|
},
|
|
5677
|
-
"deprecation": {
|
|
5678
|
-
"type": "object",
|
|
5679
|
-
"additionalProperties": false,
|
|
5680
|
-
"required": [
|
|
5681
|
-
"replacedBy"
|
|
5682
|
-
],
|
|
5683
|
-
"description": "Present when this audience is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
5684
|
-
"properties": {
|
|
5685
|
-
"replacedBy": {
|
|
5686
|
-
"type": "string",
|
|
5687
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
5688
|
-
"description": "Id of the non-deprecated audience record that documents should reference instead."
|
|
5689
|
-
},
|
|
5690
|
-
"reason": {
|
|
5691
|
-
"type": "string",
|
|
5692
|
-
"description": "Why the record is deprecated."
|
|
5693
|
-
},
|
|
5694
|
-
"removal": {
|
|
5695
|
-
"type": "string",
|
|
5696
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
5697
|
-
}
|
|
5698
|
-
}
|
|
5699
|
-
},
|
|
5700
5820
|
"summary": {
|
|
5701
5821
|
"type": "string",
|
|
5702
5822
|
"description": "One-sentence positioning of the audience \u2014 who they are and what they care about.",
|
|
@@ -5753,7 +5873,7 @@ var audience = {
|
|
|
5753
5873
|
"items": {
|
|
5754
5874
|
"type": "string"
|
|
5755
5875
|
},
|
|
5756
|
-
"description": "Soft cross-link:
|
|
5876
|
+
"description": "Soft cross-link: ids of narratives in the same catalog that work well for this audience. Used by picker UIs to suggest narratives once an audience is chosen. Never resolved, embedded or validated as references.",
|
|
5757
5877
|
"examples": [
|
|
5758
5878
|
[
|
|
5759
5879
|
"scqa",
|
|
@@ -5767,7 +5887,7 @@ var audience = {
|
|
|
5767
5887
|
"items": {
|
|
5768
5888
|
"type": "string"
|
|
5769
5889
|
},
|
|
5770
|
-
"description": "Soft cross-link:
|
|
5890
|
+
"description": "Soft cross-link: ids of tones in the same catalog that work well for this audience. Never resolved, embedded or validated as references.",
|
|
5771
5891
|
"examples": [
|
|
5772
5892
|
[
|
|
5773
5893
|
"formal",
|
|
@@ -5823,7 +5943,7 @@ var purpose = {
|
|
|
5823
5943
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5824
5944
|
"$id": "https://openpresentation.org/schema/opf-purpose/v1",
|
|
5825
5945
|
"title": "Purpose",
|
|
5826
|
-
"description": "Schema for purpose records
|
|
5946
|
+
"description": "Schema for purpose records. Each record names a presentation objective such as informing, aligning, persuading, driving a decision, or selling. Documents reference a purpose from 'purpose', which also accepts free-form text and inline Purpose objects.\n\nA document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.",
|
|
5827
5947
|
"type": "object",
|
|
5828
5948
|
"required": [
|
|
5829
5949
|
"$schema",
|
|
@@ -5834,12 +5954,12 @@ var purpose = {
|
|
|
5834
5954
|
"$schema": {
|
|
5835
5955
|
"type": "string",
|
|
5836
5956
|
"const": "https://openpresentation.org/schema/opf-purpose/v1",
|
|
5837
|
-
"description": "Identifies
|
|
5957
|
+
"description": "Identifies a published record file as a purpose record. Required in a published file; an embedded copy omits it."
|
|
5838
5958
|
},
|
|
5839
5959
|
"id": {
|
|
5840
5960
|
"type": "string",
|
|
5841
5961
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
5842
|
-
"description": "
|
|
5962
|
+
"description": "The purpose's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field.",
|
|
5843
5963
|
"examples": [
|
|
5844
5964
|
"inform",
|
|
5845
5965
|
"decide",
|
|
@@ -5862,29 +5982,6 @@ var purpose = {
|
|
|
5862
5982
|
"Persuade"
|
|
5863
5983
|
]
|
|
5864
5984
|
},
|
|
5865
|
-
"deprecation": {
|
|
5866
|
-
"type": "object",
|
|
5867
|
-
"additionalProperties": false,
|
|
5868
|
-
"required": [
|
|
5869
|
-
"replacedBy"
|
|
5870
|
-
],
|
|
5871
|
-
"description": "Present when this purpose is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
5872
|
-
"properties": {
|
|
5873
|
-
"replacedBy": {
|
|
5874
|
-
"type": "string",
|
|
5875
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
5876
|
-
"description": "Id of the non-deprecated purpose record that documents should reference instead."
|
|
5877
|
-
},
|
|
5878
|
-
"reason": {
|
|
5879
|
-
"type": "string",
|
|
5880
|
-
"description": "Why the record is deprecated."
|
|
5881
|
-
},
|
|
5882
|
-
"removal": {
|
|
5883
|
-
"type": "string",
|
|
5884
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
5885
|
-
}
|
|
5886
|
-
}
|
|
5887
|
-
},
|
|
5888
5985
|
"summary": {
|
|
5889
5986
|
"type": "string",
|
|
5890
5987
|
"description": "One-sentence positioning of the purpose \u2014 what this deck is trying to accomplish."
|
|
@@ -5914,14 +6011,14 @@ var purpose = {
|
|
|
5914
6011
|
"items": {
|
|
5915
6012
|
"type": "string"
|
|
5916
6013
|
},
|
|
5917
|
-
"description": "Soft cross-link:
|
|
6014
|
+
"description": "Soft cross-link: ids of narratives in the same catalog that work well for this purpose. Never resolved, embedded or validated as references."
|
|
5918
6015
|
},
|
|
5919
6016
|
"recommendedTones": {
|
|
5920
6017
|
"type": "array",
|
|
5921
6018
|
"items": {
|
|
5922
6019
|
"type": "string"
|
|
5923
6020
|
},
|
|
5924
|
-
"description": "Soft cross-link:
|
|
6021
|
+
"description": "Soft cross-link: ids of tones in the same catalog that work well for this purpose. Never resolved, embedded or validated as references."
|
|
5925
6022
|
},
|
|
5926
6023
|
"tags": {
|
|
5927
6024
|
"type": "array",
|
|
@@ -5957,7 +6054,7 @@ var tone = {
|
|
|
5957
6054
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5958
6055
|
"$id": "https://openpresentation.org/schema/opf-tone/v1",
|
|
5959
6056
|
"title": "Tone",
|
|
5960
|
-
"description": "Schema for tone records
|
|
6057
|
+
"description": "Schema for tone records. 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. Documents reference a tone from 'tone'.\n\nA document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.",
|
|
5961
6058
|
"type": "object",
|
|
5962
6059
|
"required": [
|
|
5963
6060
|
"$schema",
|
|
@@ -5968,12 +6065,12 @@ var tone = {
|
|
|
5968
6065
|
"$schema": {
|
|
5969
6066
|
"type": "string",
|
|
5970
6067
|
"const": "https://openpresentation.org/schema/opf-tone/v1",
|
|
5971
|
-
"description": "Identifies
|
|
6068
|
+
"description": "Identifies a published record file as a tone record. Required in a published file; an embedded copy omits it."
|
|
5972
6069
|
},
|
|
5973
6070
|
"id": {
|
|
5974
6071
|
"type": "string",
|
|
5975
6072
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
5976
|
-
"description": "
|
|
6073
|
+
"description": "The tone's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field.",
|
|
5977
6074
|
"examples": [
|
|
5978
6075
|
"formal",
|
|
5979
6076
|
"casual",
|
|
@@ -5997,29 +6094,6 @@ var tone = {
|
|
|
5997
6094
|
"Conversational"
|
|
5998
6095
|
]
|
|
5999
6096
|
},
|
|
6000
|
-
"deprecation": {
|
|
6001
|
-
"type": "object",
|
|
6002
|
-
"additionalProperties": false,
|
|
6003
|
-
"required": [
|
|
6004
|
-
"replacedBy"
|
|
6005
|
-
],
|
|
6006
|
-
"description": "Present when this tone is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
6007
|
-
"properties": {
|
|
6008
|
-
"replacedBy": {
|
|
6009
|
-
"type": "string",
|
|
6010
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
6011
|
-
"description": "Id of the non-deprecated tone record that documents should reference instead."
|
|
6012
|
-
},
|
|
6013
|
-
"reason": {
|
|
6014
|
-
"type": "string",
|
|
6015
|
-
"description": "Why the record is deprecated."
|
|
6016
|
-
},
|
|
6017
|
-
"removal": {
|
|
6018
|
-
"type": "string",
|
|
6019
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
6020
|
-
}
|
|
6021
|
-
}
|
|
6022
|
-
},
|
|
6023
6097
|
"summary": {
|
|
6024
6098
|
"type": "string",
|
|
6025
6099
|
"description": "One-sentence positioning of the tone \u2014 when to reach for it.",
|
|
@@ -6082,7 +6156,7 @@ var tone = {
|
|
|
6082
6156
|
"items": {
|
|
6083
6157
|
"type": "string"
|
|
6084
6158
|
},
|
|
6085
|
-
"description": "Soft cross-link:
|
|
6159
|
+
"description": "Soft cross-link: ids of narratives in the same catalog this tone pairs well with. Used by picker UIs to suggest narratives once a tone is chosen. Never resolved, embedded or validated as references.",
|
|
6086
6160
|
"examples": [
|
|
6087
6161
|
[
|
|
6088
6162
|
"board-meeting",
|
|
@@ -6139,7 +6213,7 @@ var theme = {
|
|
|
6139
6213
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
6140
6214
|
"$id": "https://openpresentation.org/schema/opf-theme/v1",
|
|
6141
6215
|
"title": "Theme",
|
|
6142
|
-
"description": "Schema for theme records
|
|
6216
|
+
"description": "Schema for theme records. Each theme is a small, named bundle that pairs a color scheme, a font scheme, a default theme-controlled background, and a slide size. Documents reference a theme from design.theme; design.colorScheme, design.fontScheme, design.background and design.dimensions take precedence over the resolved theme. The theme's own colorScheme and fontScheme references resolve in the theme's group first, so a catalog's theme finds that catalog's schemes.\n\nA document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.",
|
|
6143
6217
|
"type": "object",
|
|
6144
6218
|
"required": [
|
|
6145
6219
|
"$schema",
|
|
@@ -6150,12 +6224,12 @@ var theme = {
|
|
|
6150
6224
|
"$schema": {
|
|
6151
6225
|
"type": "string",
|
|
6152
6226
|
"const": "https://openpresentation.org/schema/opf-theme/v1",
|
|
6153
|
-
"description": "Identifies
|
|
6227
|
+
"description": "Identifies a published record file as a theme record. Required in a published file; an embedded copy omits it."
|
|
6154
6228
|
},
|
|
6155
6229
|
"id": {
|
|
6156
6230
|
"type": "string",
|
|
6157
6231
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
6158
|
-
"description": "
|
|
6232
|
+
"description": "The theme's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field.",
|
|
6159
6233
|
"examples": [
|
|
6160
6234
|
"minimal",
|
|
6161
6235
|
"classic",
|
|
@@ -6173,29 +6247,6 @@ var theme = {
|
|
|
6173
6247
|
"Bold"
|
|
6174
6248
|
]
|
|
6175
6249
|
},
|
|
6176
|
-
"deprecation": {
|
|
6177
|
-
"type": "object",
|
|
6178
|
-
"additionalProperties": false,
|
|
6179
|
-
"required": [
|
|
6180
|
-
"replacedBy"
|
|
6181
|
-
],
|
|
6182
|
-
"description": "Present when this theme is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
6183
|
-
"properties": {
|
|
6184
|
-
"replacedBy": {
|
|
6185
|
-
"type": "string",
|
|
6186
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
6187
|
-
"description": "Id of the non-deprecated theme record that documents should reference instead."
|
|
6188
|
-
},
|
|
6189
|
-
"reason": {
|
|
6190
|
-
"type": "string",
|
|
6191
|
-
"description": "Why the record is deprecated."
|
|
6192
|
-
},
|
|
6193
|
-
"removal": {
|
|
6194
|
-
"type": "string",
|
|
6195
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
6196
|
-
}
|
|
6197
|
-
}
|
|
6198
|
-
},
|
|
6199
6250
|
"summary": {
|
|
6200
6251
|
"type": "string",
|
|
6201
6252
|
"description": "One-sentence positioning of the theme \u2014 when to reach for it.",
|
|
@@ -6213,7 +6264,8 @@ var theme = {
|
|
|
6213
6264
|
},
|
|
6214
6265
|
"colorScheme": {
|
|
6215
6266
|
"type": "string",
|
|
6216
|
-
"
|
|
6267
|
+
"pattern": "^(?:[a-z][a-z0-9-]*:)?[a-z][a-z0-9-]*$",
|
|
6268
|
+
"description": "The theme's default colour scheme: a reference (a bare id or 'name:id') resolved like design.colorScheme, but in the theme's own catalogs group first.",
|
|
6217
6269
|
"examples": [
|
|
6218
6270
|
"cool-horizon",
|
|
6219
6271
|
"boost",
|
|
@@ -6222,7 +6274,8 @@ var theme = {
|
|
|
6222
6274
|
},
|
|
6223
6275
|
"fontScheme": {
|
|
6224
6276
|
"type": "string",
|
|
6225
|
-
"
|
|
6277
|
+
"pattern": "^(?:[a-z][a-z0-9-]*:)?[a-z][a-z0-9-]*$",
|
|
6278
|
+
"description": "The theme's default font scheme: a reference (a bare id or 'name:id') resolved like design.fontScheme, but in the theme's own catalogs group first.",
|
|
6226
6279
|
"examples": [
|
|
6227
6280
|
"aptos",
|
|
6228
6281
|
"tenorite",
|
|
@@ -6344,7 +6397,7 @@ var layout = {
|
|
|
6344
6397
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
6345
6398
|
"$id": "https://openpresentation.org/schema/opf-layout/v1",
|
|
6346
6399
|
"title": "Slide Layout",
|
|
6347
|
-
"description": "Schema for slide-layout records
|
|
6400
|
+
"description": "Schema for slide-layout records. Each record describes a semantic slide layout: what regions it exposes, what content kinds those regions are intended to hold, how they are arranged (composition) and its design hints. Documents reference a layout from Slide.layout; a slide without a layout, or whose layout resolves nowhere, composes automatically.\n\nA document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.",
|
|
6348
6401
|
"type": "object",
|
|
6349
6402
|
"required": [
|
|
6350
6403
|
"$schema",
|
|
@@ -6355,17 +6408,17 @@ var layout = {
|
|
|
6355
6408
|
"$schema": {
|
|
6356
6409
|
"type": "string",
|
|
6357
6410
|
"const": "https://openpresentation.org/schema/opf-layout/v1",
|
|
6358
|
-
"description": "Identifies
|
|
6411
|
+
"description": "Identifies a published record file as a layout record. Required in a published file; an embedded copy omits it."
|
|
6359
6412
|
},
|
|
6360
6413
|
"id": {
|
|
6361
6414
|
"type": "string",
|
|
6362
6415
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
6363
|
-
"description": "
|
|
6416
|
+
"description": "The layout's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field.",
|
|
6364
6417
|
"examples": [
|
|
6365
6418
|
"title",
|
|
6366
6419
|
"title-subtitle",
|
|
6367
6420
|
"chart-1x",
|
|
6368
|
-
"image-
|
|
6421
|
+
"image-focus"
|
|
6369
6422
|
]
|
|
6370
6423
|
},
|
|
6371
6424
|
"name": {
|
|
@@ -6378,29 +6431,6 @@ var layout = {
|
|
|
6378
6431
|
"Image Bleed"
|
|
6379
6432
|
]
|
|
6380
6433
|
},
|
|
6381
|
-
"deprecation": {
|
|
6382
|
-
"type": "object",
|
|
6383
|
-
"additionalProperties": false,
|
|
6384
|
-
"required": [
|
|
6385
|
-
"replacedBy"
|
|
6386
|
-
],
|
|
6387
|
-
"description": "Present when this layout is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
6388
|
-
"properties": {
|
|
6389
|
-
"replacedBy": {
|
|
6390
|
-
"type": "string",
|
|
6391
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
6392
|
-
"description": "Id of the non-deprecated layout record that documents should reference instead."
|
|
6393
|
-
},
|
|
6394
|
-
"reason": {
|
|
6395
|
-
"type": "string",
|
|
6396
|
-
"description": "Why the record is deprecated."
|
|
6397
|
-
},
|
|
6398
|
-
"removal": {
|
|
6399
|
-
"type": "string",
|
|
6400
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
6401
|
-
}
|
|
6402
|
-
}
|
|
6403
|
-
},
|
|
6404
6434
|
"summary": {
|
|
6405
6435
|
"type": "string",
|
|
6406
6436
|
"description": "One-sentence positioning of the layout \u2014 when to reach for it.",
|
|
@@ -6418,7 +6448,7 @@ var layout = {
|
|
|
6418
6448
|
},
|
|
6419
6449
|
"design": {
|
|
6420
6450
|
"$ref": "#/$defs/DesignHints",
|
|
6421
|
-
"description": "The layout's design hints, with the same keys and values as the deck's design and a slide's design (a slide overrides exactly what its layout sets, by the same name). An absent key means the layout has no opinion. Every key is applied from the record as the lowest-precedence default, per key: the slide's design, then the deck's design, then this record's design, then the engine default, so a layout value nobody overrides is honored without copying it anywhere (a layout's composition.mode still ranks above contentDirection
|
|
6451
|
+
"description": "The layout's design hints, with the same keys and values as the deck's design and a slide's design (a slide overrides exactly what its layout sets, by the same name). An absent key means the layout has no opinion. Every key is applied from the record as the lowest-precedence default, per key: the slide's design, then the deck's design, then this record's design, then the engine default, so a layout value nobody overrides is honored without copying it anywhere (a layout's composition.mode still ranks above contentDirection). Composition, the renderer and the PPTX exporter all read the one result."
|
|
6422
6452
|
},
|
|
6423
6453
|
"placeholders": {
|
|
6424
6454
|
"type": "array",
|
|
@@ -6489,6 +6519,18 @@ var layout = {
|
|
|
6489
6519
|
"type"
|
|
6490
6520
|
],
|
|
6491
6521
|
"description": "A single region inside a slide layout. Title, subtitle, and tag placeholders bind to the corresponding Slide fields; every other placeholder describes the content kind that region holds. The array order in the surrounding 'placeholders' field preserves layout region order.",
|
|
6522
|
+
"if": {
|
|
6523
|
+
"required": [
|
|
6524
|
+
"placement"
|
|
6525
|
+
]
|
|
6526
|
+
},
|
|
6527
|
+
"then": {
|
|
6528
|
+
"properties": {
|
|
6529
|
+
"type": {
|
|
6530
|
+
"const": "image"
|
|
6531
|
+
}
|
|
6532
|
+
}
|
|
6533
|
+
},
|
|
6492
6534
|
"properties": {
|
|
6493
6535
|
"type": {
|
|
6494
6536
|
"type": "string",
|
|
@@ -6508,6 +6550,40 @@ var layout = {
|
|
|
6508
6550
|
"timeline"
|
|
6509
6551
|
],
|
|
6510
6552
|
"description": "The content kind of the region. This is the one OPF content-kind vocabulary: the same words name a slide's payload fields (text, items, image, video, chart, table, code, metric, quote, timeline). 'title', 'subtitle' and 'tag' are the heading kinds and bind to Slide.title, Slide.subtitle and Slide.tag. 'text' holds text and bullets; 'list' holds items. 'image' is filled by an image payload and 'video' by a video payload. 'metric', 'quote', 'timeline', 'chart', 'table' and 'code' are filled by the payload of the same name; a metric region shows the metric payload with its optional label, description, unit, delta, trend and sentiment."
|
|
6553
|
+
},
|
|
6554
|
+
"placement": {
|
|
6555
|
+
"$ref": "#/$defs/ImagePlacement",
|
|
6556
|
+
"description": "Image placeholders only. Bleeds the slide's image for this region to one slide edge, as an image block's placement does: the n-th image placeholder places the slide's n-th top-level image (Slide.image or an image block in blocks) unless that block sets its own placement. The headings and the other content compose in the rest of the slide."
|
|
6557
|
+
}
|
|
6558
|
+
}
|
|
6559
|
+
},
|
|
6560
|
+
"ImagePlacement": {
|
|
6561
|
+
"type": "object",
|
|
6562
|
+
"additionalProperties": false,
|
|
6563
|
+
"required": [
|
|
6564
|
+
"edge"
|
|
6565
|
+
],
|
|
6566
|
+
"description": "The same object as ImagePlacement in opf.schema.json: a band along one slide edge for the image, edge to edge, with the rest of the slide left to the headings and the other content.",
|
|
6567
|
+
"properties": {
|
|
6568
|
+
"edge": {
|
|
6569
|
+
"type": "string",
|
|
6570
|
+
"enum": [
|
|
6571
|
+
"left",
|
|
6572
|
+
"right",
|
|
6573
|
+
"top",
|
|
6574
|
+
"bottom"
|
|
6575
|
+
],
|
|
6576
|
+
"description": "The slide edge the image bleeds to. In a right-to-left deck 'left' is the start side, drawn at the right."
|
|
6577
|
+
},
|
|
6578
|
+
"size": {
|
|
6579
|
+
"type": "number",
|
|
6580
|
+
"minimum": 0.1,
|
|
6581
|
+
"maximum": 0.9,
|
|
6582
|
+
"description": "Share of the slide width (left, right) or height (top, bottom) given to the band. Default 0.5."
|
|
6583
|
+
},
|
|
6584
|
+
"inset": {
|
|
6585
|
+
"type": "boolean",
|
|
6586
|
+
"description": "Draw the frame inside the slide padding on every side of the band instead of edge to edge. Default false."
|
|
6511
6587
|
}
|
|
6512
6588
|
}
|
|
6513
6589
|
},
|
|
@@ -6557,13 +6633,14 @@ var layout = {
|
|
|
6557
6633
|
],
|
|
6558
6634
|
"description": "Where the primary chart sits relative to the other body content. Composition applies it below the slide's and the deck's design.chartPrimary, with the semantics described there."
|
|
6559
6635
|
},
|
|
6560
|
-
"
|
|
6636
|
+
"imageFit": {
|
|
6561
6637
|
"type": "string",
|
|
6562
6638
|
"enum": [
|
|
6563
|
-
"
|
|
6564
|
-
"
|
|
6639
|
+
"cover",
|
|
6640
|
+
"contain",
|
|
6641
|
+
"stretch"
|
|
6565
6642
|
],
|
|
6566
|
-
"description": "
|
|
6643
|
+
"description": "Default fit of the slide's image blocks: 'cover' fills the frame and crops around focus, 'contain' shows the whole picture, 'stretch' scales it to the frame."
|
|
6567
6644
|
},
|
|
6568
6645
|
"listBullet": {
|
|
6569
6646
|
"type": "string",
|
|
@@ -6572,27 +6649,6 @@ var layout = {
|
|
|
6572
6649
|
"image"
|
|
6573
6650
|
],
|
|
6574
6651
|
"description": "Marker style of lists: 'character' draws the glyph, 'image' draws the deck's icon logo as a picture bullet."
|
|
6575
|
-
},
|
|
6576
|
-
"slideImage": {
|
|
6577
|
-
"type": "object",
|
|
6578
|
-
"additionalProperties": false,
|
|
6579
|
-
"required": [
|
|
6580
|
-
"position"
|
|
6581
|
-
],
|
|
6582
|
-
"description": "A slide-level image region the layout reserves, separate from any content image. Its presence is what lets a deck-wide design.slideImage apply to slides on this layout. The image itself comes from the slide or the deck design.",
|
|
6583
|
-
"properties": {
|
|
6584
|
-
"position": {
|
|
6585
|
-
"type": "string",
|
|
6586
|
-
"enum": [
|
|
6587
|
-
"background",
|
|
6588
|
-
"top",
|
|
6589
|
-
"bottom",
|
|
6590
|
-
"left",
|
|
6591
|
-
"right"
|
|
6592
|
-
],
|
|
6593
|
-
"description": "Where the slide-level image sits relative to the content. 'background' is a full-bleed image behind the content; the other positions give the image a band along that edge. Used when the slide's or deck's design.slideImage gives no position."
|
|
6594
|
-
}
|
|
6595
|
-
}
|
|
6596
6652
|
}
|
|
6597
6653
|
}
|
|
6598
6654
|
},
|
|
@@ -6662,7 +6718,7 @@ var chartType = {
|
|
|
6662
6718
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
6663
6719
|
"$id": "https://openpresentation.org/schema/opf-chart-type/v1",
|
|
6664
6720
|
"title": "Chart Type",
|
|
6665
|
-
"description": `Schema for chart-type records
|
|
6721
|
+
"description": `Schema for chart-type records: display metadata for chart pickers (name, group, expected series, complexity) and the Open XML mapping a picker can describe. One record per chart type that Aspose.Slides officially supports (see mappings.renderers["aspose-slides"].chartType), plus the column-and-line combination 'combo'. A document's chart.type is an engine vocabulary validated directly; engines never look a chart-type record up. pptx.gallery publishes these records and @openpresentation/opf/catalog ships them as catalogDisplay.chartTypes.`,
|
|
6666
6722
|
"type": "object",
|
|
6667
6723
|
"additionalProperties": false,
|
|
6668
6724
|
"patternProperties": {
|
|
@@ -6685,7 +6741,7 @@ var chartType = {
|
|
|
6685
6741
|
"id": {
|
|
6686
6742
|
"type": "string",
|
|
6687
6743
|
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
6688
|
-
"description": "
|
|
6744
|
+
"description": "The chart-type value (`chart.type`) this record describes. Lowercase kebab-case; it may start with a digit (e.g., '100pct-stacked-column') to mirror conventional chart naming.",
|
|
6689
6745
|
"examples": [
|
|
6690
6746
|
"column",
|
|
6691
6747
|
"bar",
|
|
@@ -6724,10 +6780,6 @@ var chartType = {
|
|
|
6724
6780
|
"$ref": "#/$defs/ChartTypeMappings",
|
|
6725
6781
|
"description": "Canonical and optional renderer-specific mappings used by engines to render this chart type."
|
|
6726
6782
|
},
|
|
6727
|
-
"deprecation": {
|
|
6728
|
-
"$ref": "#/$defs/ChartTypeDeprecation",
|
|
6729
|
-
"description": "Present when this chart type is deprecated. A deprecated record stays resolvable so existing documents keep validating, validators warn when a document references it, and pickers and generators should not offer it. The bundled default catalog holds no deprecated records; a publisher or an inline `catalogs.chartTypes.records` entry can still use the field."
|
|
6730
|
-
},
|
|
6731
6783
|
"group": {
|
|
6732
6784
|
"type": "string",
|
|
6733
6785
|
"description": "Top-level grouping in the chart picker.",
|
|
@@ -6825,35 +6877,6 @@ var chartType = {
|
|
|
6825
6877
|
}
|
|
6826
6878
|
},
|
|
6827
6879
|
"$defs": {
|
|
6828
|
-
"ChartTypeDeprecation": {
|
|
6829
|
-
"type": "object",
|
|
6830
|
-
"additionalProperties": false,
|
|
6831
|
-
"required": [
|
|
6832
|
-
"replacedBy"
|
|
6833
|
-
],
|
|
6834
|
-
"properties": {
|
|
6835
|
-
"replacedBy": {
|
|
6836
|
-
"type": "string",
|
|
6837
|
-
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
6838
|
-
"description": "Id of the non-deprecated chart type that documents should reference instead.",
|
|
6839
|
-
"examples": [
|
|
6840
|
-
"column",
|
|
6841
|
-
"stacked-column"
|
|
6842
|
-
]
|
|
6843
|
-
},
|
|
6844
|
-
"reason": {
|
|
6845
|
-
"type": "string",
|
|
6846
|
-
"description": "Why the record is deprecated."
|
|
6847
|
-
},
|
|
6848
|
-
"removal": {
|
|
6849
|
-
"type": "string",
|
|
6850
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog.",
|
|
6851
|
-
"examples": [
|
|
6852
|
-
"0.12.0"
|
|
6853
|
-
]
|
|
6854
|
-
}
|
|
6855
|
-
}
|
|
6856
|
-
},
|
|
6857
6880
|
"ChartTypeMappings": {
|
|
6858
6881
|
"type": "object",
|
|
6859
6882
|
"additionalProperties": false,
|
|
@@ -6973,7 +6996,7 @@ var narrative = {
|
|
|
6973
6996
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
6974
6997
|
"$id": "https://openpresentation.org/schema/opf-narrative/v1",
|
|
6975
6998
|
"title": "Narrative Template",
|
|
6976
|
-
"description": "Schema for narrative
|
|
6999
|
+
"description": "Schema for narrative records. A narrative is a plan: a named story arc (e.g. 'problem-solution', 'scqa') as an ordered list of beats, each saying what its slide must do. A document points at one with the string 'narrative' and links its slides to beats with 'slides[].beat'; a narrative the document defines itself is a record in catalogs.custom.narratives. Core validate warns about a 'slides[].beat' id the resolved narrative does not define (opf/unknown-beat) and about a root 'duration' outside this record's 'duration' range (opf/duration-outside-narrative), and reports a beat no slide references (opf/unused-beat).\n\nA document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.",
|
|
6977
7000
|
"type": "object",
|
|
6978
7001
|
"required": [
|
|
6979
7002
|
"$schema",
|
|
@@ -6984,40 +7007,18 @@ var narrative = {
|
|
|
6984
7007
|
"properties": {
|
|
6985
7008
|
"$schema": {
|
|
6986
7009
|
"type": "string",
|
|
6987
|
-
"const": "https://openpresentation.org/schema/opf-narrative/v1"
|
|
7010
|
+
"const": "https://openpresentation.org/schema/opf-narrative/v1",
|
|
7011
|
+
"description": "Identifies a published record file as a narrative record. Required in a published file; an embedded copy omits it."
|
|
6988
7012
|
},
|
|
6989
7013
|
"id": {
|
|
6990
7014
|
"type": "string",
|
|
6991
7015
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
6992
|
-
"description": "
|
|
7016
|
+
"description": "The narrative's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field."
|
|
6993
7017
|
},
|
|
6994
7018
|
"name": {
|
|
6995
7019
|
"type": "string",
|
|
6996
7020
|
"description": "Human-readable template name, e.g. 'Problem \u2192 Solution'."
|
|
6997
7021
|
},
|
|
6998
|
-
"deprecation": {
|
|
6999
|
-
"type": "object",
|
|
7000
|
-
"additionalProperties": false,
|
|
7001
|
-
"required": [
|
|
7002
|
-
"replacedBy"
|
|
7003
|
-
],
|
|
7004
|
-
"description": "Present when this narrative is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
7005
|
-
"properties": {
|
|
7006
|
-
"replacedBy": {
|
|
7007
|
-
"type": "string",
|
|
7008
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
7009
|
-
"description": "Id of the non-deprecated narrative record that documents should reference instead."
|
|
7010
|
-
},
|
|
7011
|
-
"reason": {
|
|
7012
|
-
"type": "string",
|
|
7013
|
-
"description": "Why the record is deprecated."
|
|
7014
|
-
},
|
|
7015
|
-
"removal": {
|
|
7016
|
-
"type": "string",
|
|
7017
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
7018
|
-
}
|
|
7019
|
-
}
|
|
7020
|
-
},
|
|
7021
7022
|
"summary": {
|
|
7022
7023
|
"type": "string",
|
|
7023
7024
|
"description": "One-sentence description of when and why to use this narrative."
|
|
@@ -7195,7 +7196,7 @@ var socialPlatform = {
|
|
|
7195
7196
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
7196
7197
|
"$id": "https://openpresentation.org/schema/opf-social-platform/v1",
|
|
7197
7198
|
"title": "Social Platform",
|
|
7198
|
-
"description": "Schema for social-platform records
|
|
7199
|
+
"description": "Schema for social-platform records: display metadata for authoring UIs (name, brand color, handle example) alongside the URL patterns. The keys of a Socials object are an engine vocabulary validated directly; engines link a handle with the patterns in spec/reference/engine-vocabularies.json and never look a social-platform record up. pptx.gallery publishes these records and @openpresentation/opf/catalog ships them as catalogDisplay.socialPlatforms.",
|
|
7199
7200
|
"type": "object",
|
|
7200
7201
|
"required": [
|
|
7201
7202
|
"$schema",
|
|
@@ -7211,7 +7212,7 @@ var socialPlatform = {
|
|
|
7211
7212
|
"id": {
|
|
7212
7213
|
"type": "string",
|
|
7213
7214
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
7214
|
-
"description": "
|
|
7215
|
+
"description": "The social platform's key, as written in a Socials object. Lowercase kebab-case.",
|
|
7215
7216
|
"examples": [
|
|
7216
7217
|
"linkedin",
|
|
7217
7218
|
"x",
|
|
@@ -7241,29 +7242,6 @@ var socialPlatform = {
|
|
|
7241
7242
|
"Bluesky"
|
|
7242
7243
|
]
|
|
7243
7244
|
},
|
|
7244
|
-
"deprecation": {
|
|
7245
|
-
"type": "object",
|
|
7246
|
-
"additionalProperties": false,
|
|
7247
|
-
"required": [
|
|
7248
|
-
"replacedBy"
|
|
7249
|
-
],
|
|
7250
|
-
"description": "Present when this social platform is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
7251
|
-
"properties": {
|
|
7252
|
-
"replacedBy": {
|
|
7253
|
-
"type": "string",
|
|
7254
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
7255
|
-
"description": "Id of the non-deprecated social platform record that documents should reference instead."
|
|
7256
|
-
},
|
|
7257
|
-
"reason": {
|
|
7258
|
-
"type": "string",
|
|
7259
|
-
"description": "Why the record is deprecated."
|
|
7260
|
-
},
|
|
7261
|
-
"removal": {
|
|
7262
|
-
"type": "string",
|
|
7263
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
7264
|
-
}
|
|
7265
|
-
}
|
|
7266
|
-
},
|
|
7267
7245
|
"summary": {
|
|
7268
7246
|
"type": "string",
|
|
7269
7247
|
"description": "One-sentence positioning of the platform \u2014 what it's used for and who's on it.",
|
|
@@ -7392,7 +7370,7 @@ var language = {
|
|
|
7392
7370
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
7393
7371
|
"$id": "https://openpresentation.org/schema/opf-language/v1",
|
|
7394
7372
|
"title": "Language",
|
|
7395
|
-
"description": "Schema for language records
|
|
7373
|
+
"description": "Schema for language records: display metadata for the language pickers of authoring tools (name, ISO code, the default font schemes a picker suggests). The document's 'language' is an engine vocabulary, a BCP-47 tag validated directly; engines never look a language record up, and their script, direction, OOXML tag and default script fonts come from spec/reference/engine-vocabularies.json. pptx.gallery publishes these records and @openpresentation/opf/catalog ships them as catalogDisplay.languages.",
|
|
7396
7374
|
"type": "object",
|
|
7397
7375
|
"required": [
|
|
7398
7376
|
"$schema",
|
|
@@ -7409,7 +7387,7 @@ var language = {
|
|
|
7409
7387
|
"id": {
|
|
7410
7388
|
"type": "string",
|
|
7411
7389
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
7412
|
-
"description": "
|
|
7390
|
+
"description": "The record's id in the gallery's language catalog, lowercase kebab-case. Documents name a language by its BCP-47 tag ('bcp47'), never by this id.",
|
|
7413
7391
|
"examples": [
|
|
7414
7392
|
"english",
|
|
7415
7393
|
"spanish",
|
|
@@ -7427,29 +7405,6 @@ var language = {
|
|
|
7427
7405
|
"Chinese (simplified)"
|
|
7428
7406
|
]
|
|
7429
7407
|
},
|
|
7430
|
-
"deprecation": {
|
|
7431
|
-
"type": "object",
|
|
7432
|
-
"additionalProperties": false,
|
|
7433
|
-
"required": [
|
|
7434
|
-
"replacedBy"
|
|
7435
|
-
],
|
|
7436
|
-
"description": "Present when this language is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
7437
|
-
"properties": {
|
|
7438
|
-
"replacedBy": {
|
|
7439
|
-
"type": "string",
|
|
7440
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
7441
|
-
"description": "Id of the non-deprecated language record that documents should reference instead."
|
|
7442
|
-
},
|
|
7443
|
-
"reason": {
|
|
7444
|
-
"type": "string",
|
|
7445
|
-
"description": "Why the record is deprecated."
|
|
7446
|
-
},
|
|
7447
|
-
"removal": {
|
|
7448
|
-
"type": "string",
|
|
7449
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
7450
|
-
}
|
|
7451
|
-
}
|
|
7452
|
-
},
|
|
7453
7408
|
"code": {
|
|
7454
7409
|
"type": "string",
|
|
7455
7410
|
"description": "ISO 639-3 (or 639-2) three-letter language code. Carried for engines that prefer ISO codes.",
|
|
@@ -7475,7 +7430,7 @@ var language = {
|
|
|
7475
7430
|
},
|
|
7476
7431
|
"ooxmlLang": {
|
|
7477
7432
|
"type": "string",
|
|
7478
|
-
"description": "Curated culture tag for OOXML text-run language attributes (a:rPr/@lang, a:endParaRPr/@lang), in the language-[Script-]REGION form Office recognizes (e.g. 'ja-JP', 'ar-SA', 'ms-MY', 'nb-NO', 'fil-PH', 'zh-CN'). Engines emit it instead of 'bcp47'
|
|
7433
|
+
"description": "Curated culture tag for OOXML text-run language attributes (a:rPr/@lang, a:endParaRPr/@lang), in the language-[Script-]REGION form Office recognizes (e.g. 'ja-JP', 'ar-SA', 'ms-MY', 'nb-NO', 'fil-PH', 'zh-CN'). Engines emit it instead of 'bcp47' for a tag without a region; a region-bearing tag written by the author is emitted as written. Display metadata here: engines take the curated tag from their language vocabulary. Curated rather than inferred so output does not depend on the runtime's locale data.",
|
|
7479
7434
|
"examples": [
|
|
7480
7435
|
"en-US",
|
|
7481
7436
|
"ja-JP",
|
|
@@ -7491,7 +7446,7 @@ var language = {
|
|
|
7491
7446
|
"ltr",
|
|
7492
7447
|
"rtl"
|
|
7493
7448
|
],
|
|
7494
|
-
"description": "Base text direction for the language. When omitted, engines derive it from the script: Arabic (Arab), Hebrew (Hebr), Syriac (Syrc), Thaana (Thaa), N'Ko (Nkoo), Adlam (Adlm), Samaritan (Samr), Mandaic (Mand) and Hanifi Rohingya (Rohg) are right-to-left; every other script is left-to-right.
|
|
7449
|
+
"description": "Base text direction for the language. When omitted, engines derive it from the script: Arabic (Arab), Hebrew (Hebr), Syriac (Syrc), Thaana (Thaa), N'Ko (Nkoo), Adlam (Adlm), Samaritan (Samr), Mandaic (Mand) and Hanifi Rohingya (Rohg) are right-to-left; every other script is left-to-right. The engine language vocabulary (spec/reference/engine-vocabularies.json) states it for the tags it knows.",
|
|
7495
7450
|
"examples": [
|
|
7496
7451
|
"ltr",
|
|
7497
7452
|
"rtl"
|
|
@@ -7499,7 +7454,7 @@ var language = {
|
|
|
7499
7454
|
},
|
|
7500
7455
|
"script": {
|
|
7501
7456
|
"type": "string",
|
|
7502
|
-
"description": "ISO 15924 script code of the language's writing system. The script selects the OOXML font slot the language's text uses: East Asian scripts (Hans, Hant, Hani, Jpan, Kore, Hang, Hira, Kana, Bopo, Yiii) use the eastAsian slot; complex scripts (for example Arab, Hebr, Syrc, Thaa, Deva, Beng, Guru, Gujr, Orya, Taml, Telu, Knda, Mlym, Sinh, Thai, Laoo, Tibt, Mymr, Khmr, Mong) use the complexScript slot; every other script (Latn, Cyrl, Grek, Armn, Geor, Ethi, ...) uses the latin slot. When omitted, engines infer it from the BCP-47 tag.
|
|
7457
|
+
"description": "ISO 15924 script code of the language's writing system. The script selects the OOXML font slot the language's text uses: East Asian scripts (Hans, Hant, Hani, Jpan, Kore, Hang, Hira, Kana, Bopo, Yiii) use the eastAsian slot; complex scripts (for example Arab, Hebr, Syrc, Thaa, Deva, Beng, Guru, Gujr, Orya, Taml, Telu, Knda, Mlym, Sinh, Thai, Laoo, Tibt, Mymr, Khmr, Mong) use the complexScript slot; every other script (Latn, Cyrl, Grek, Armn, Geor, Ethi, ...) uses the latin slot. When omitted, engines infer it from the BCP-47 tag. The engine language vocabulary (spec/reference/engine-vocabularies.json) states it for the tags it knows. See docs/programs/font-fidelity-everywhere/script-font-model.md.",
|
|
7503
7458
|
"examples": [
|
|
7504
7459
|
"Latn",
|
|
7505
7460
|
"Cyrl",
|
|
@@ -7516,7 +7471,7 @@ var language = {
|
|
|
7516
7471
|
},
|
|
7517
7472
|
"fontScheme": {
|
|
7518
7473
|
"type": "string",
|
|
7519
|
-
"description": "
|
|
7474
|
+
"description": "The font-scheme id a picker suggests for this language when targeting PowerPoint output. Display metadata: engines take a language's default script fonts from their own vocabulary.",
|
|
7520
7475
|
"examples": [
|
|
7521
7476
|
"aptos",
|
|
7522
7477
|
"microsoft-yahei",
|
|
@@ -7525,7 +7480,7 @@ var language = {
|
|
|
7525
7480
|
},
|
|
7526
7481
|
"googleFontScheme": {
|
|
7527
7482
|
"type": "string",
|
|
7528
|
-
"description": "
|
|
7483
|
+
"description": "The font-scheme id a picker suggests for this language when targeting Google Slides output. Display metadata.",
|
|
7529
7484
|
"examples": [
|
|
7530
7485
|
"roboto",
|
|
7531
7486
|
"noto-sans",
|
|
@@ -7603,7 +7558,7 @@ var colorScheme = {
|
|
|
7603
7558
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
7604
7559
|
"$id": "https://openpresentation.org/schema/opf-color-scheme/v1",
|
|
7605
7560
|
"title": "Color Scheme",
|
|
7606
|
-
"description": "Schema for color-scheme records
|
|
7561
|
+
"description": "Schema for color-scheme records. 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. Documents reference a scheme from design.colorScheme (or design.colorScheme.id) and from a theme's colorScheme; 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 records and inline OPF overrides are interchangeable.\n\nA document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.",
|
|
7607
7562
|
"type": "object",
|
|
7608
7563
|
"required": [
|
|
7609
7564
|
"$schema",
|
|
@@ -7626,12 +7581,12 @@ var colorScheme = {
|
|
|
7626
7581
|
"$schema": {
|
|
7627
7582
|
"type": "string",
|
|
7628
7583
|
"const": "https://openpresentation.org/schema/opf-color-scheme/v1",
|
|
7629
|
-
"description": "Identifies
|
|
7584
|
+
"description": "Identifies a published record file as a colour scheme record. Required in a published file; an embedded copy omits it."
|
|
7630
7585
|
},
|
|
7631
7586
|
"id": {
|
|
7632
7587
|
"type": "string",
|
|
7633
7588
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
7634
|
-
"description": "
|
|
7589
|
+
"description": "The colour scheme's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field.",
|
|
7635
7590
|
"examples": [
|
|
7636
7591
|
"cool-horizon",
|
|
7637
7592
|
"boost",
|
|
@@ -7649,29 +7604,6 @@ var colorScheme = {
|
|
|
7649
7604
|
"Forest Green"
|
|
7650
7605
|
]
|
|
7651
7606
|
},
|
|
7652
|
-
"deprecation": {
|
|
7653
|
-
"type": "object",
|
|
7654
|
-
"additionalProperties": false,
|
|
7655
|
-
"required": [
|
|
7656
|
-
"replacedBy"
|
|
7657
|
-
],
|
|
7658
|
-
"description": "Present when this color scheme is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
7659
|
-
"properties": {
|
|
7660
|
-
"replacedBy": {
|
|
7661
|
-
"type": "string",
|
|
7662
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
7663
|
-
"description": "Id of the non-deprecated color scheme record that documents should reference instead."
|
|
7664
|
-
},
|
|
7665
|
-
"reason": {
|
|
7666
|
-
"type": "string",
|
|
7667
|
-
"description": "Why the record is deprecated."
|
|
7668
|
-
},
|
|
7669
|
-
"removal": {
|
|
7670
|
-
"type": "string",
|
|
7671
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
7672
|
-
}
|
|
7673
|
-
}
|
|
7674
|
-
},
|
|
7675
7607
|
"summary": {
|
|
7676
7608
|
"type": "string",
|
|
7677
7609
|
"description": "One-sentence positioning of the palette \u2014 what mood it evokes and where to use it.",
|
|
@@ -7838,7 +7770,7 @@ var fontScheme = {
|
|
|
7838
7770
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
7839
7771
|
"$id": "https://openpresentation.org/schema/opf-font-scheme/v1",
|
|
7840
7772
|
"title": "Font Scheme",
|
|
7841
|
-
"description": "Schema for font-scheme records
|
|
7773
|
+
"description": "Schema for font-scheme records. 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). Documents reference a scheme from design.fontScheme (or design.fontScheme.id), from a theme's fontScheme and from a language's fontScheme / googleFontScheme. Role overrides on design.fontScheme (heading, body, accent, code), each a font family name, take precedence over the resolved scheme.\n\nA document references a record as a bare id or 'name:id' and resolves it in its own catalogs groups first, then in the catalog the host registered for the group's source; engines never fetch a catalog. A published record file carries '$schema' and 'id'; the copy a document embeds under catalogs.<group>.<kind>.<id> carries neither (the key is the id) and no 'x-*' display metadata.",
|
|
7842
7774
|
"type": "object",
|
|
7843
7775
|
"required": [
|
|
7844
7776
|
"$schema",
|
|
@@ -7851,12 +7783,12 @@ var fontScheme = {
|
|
|
7851
7783
|
"$schema": {
|
|
7852
7784
|
"type": "string",
|
|
7853
7785
|
"const": "https://openpresentation.org/schema/opf-font-scheme/v1",
|
|
7854
|
-
"description": "Identifies
|
|
7786
|
+
"description": "Identifies a published record file as a font scheme record. Required in a published file; an embedded copy omits it."
|
|
7855
7787
|
},
|
|
7856
7788
|
"id": {
|
|
7857
7789
|
"type": "string",
|
|
7858
7790
|
"pattern": "^[a-z][a-z0-9-]*$",
|
|
7859
|
-
"description": "
|
|
7791
|
+
"description": "The font scheme's id in its catalog, lowercase kebab-case. Required in a published record file; a document references the record by it (a bare id, or 'name:id' for a named group) and embeds it keyed by it, without this field.",
|
|
7860
7792
|
"examples": [
|
|
7861
7793
|
"aptos",
|
|
7862
7794
|
"tenorite",
|
|
@@ -7876,29 +7808,6 @@ var fontScheme = {
|
|
|
7876
7808
|
"Microsoft Yahei"
|
|
7877
7809
|
]
|
|
7878
7810
|
},
|
|
7879
|
-
"deprecation": {
|
|
7880
|
-
"type": "object",
|
|
7881
|
-
"additionalProperties": false,
|
|
7882
|
-
"required": [
|
|
7883
|
-
"replacedBy"
|
|
7884
|
-
],
|
|
7885
|
-
"description": "Present when this font scheme is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
|
|
7886
|
-
"properties": {
|
|
7887
|
-
"replacedBy": {
|
|
7888
|
-
"type": "string",
|
|
7889
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
7890
|
-
"description": "Id of the non-deprecated font scheme record that documents should reference instead."
|
|
7891
|
-
},
|
|
7892
|
-
"reason": {
|
|
7893
|
-
"type": "string",
|
|
7894
|
-
"description": "Why the record is deprecated."
|
|
7895
|
-
},
|
|
7896
|
-
"removal": {
|
|
7897
|
-
"type": "string",
|
|
7898
|
-
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
7899
|
-
}
|
|
7900
|
-
}
|
|
7901
|
-
},
|
|
7902
7811
|
"major": {
|
|
7903
7812
|
"type": "string",
|
|
7904
7813
|
"description": "Heading (major) font family \u2014 mirrors the OOXML majorFont entry.",
|
|
@@ -8009,15 +7918,15 @@ var fontScheme = {
|
|
|
8009
7918
|
"type": "array",
|
|
8010
7919
|
"items": {
|
|
8011
7920
|
"type": "string",
|
|
8012
|
-
"pattern": "^[
|
|
7921
|
+
"pattern": "^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*$"
|
|
8013
7922
|
},
|
|
8014
|
-
"description": "Optional list of
|
|
7923
|
+
"description": "Optional list of BCP-47 language tags this scheme is curated for. Useful for picker UIs that group fonts by language coverage. As the design font scheme, an 'ea' or 'cs' scheme fills its script slot only when this list is empty or names the presentation language: an entry matches a tag with the same language subtag (and the same script, when the entry names one).",
|
|
8015
7924
|
"examples": [
|
|
8016
7925
|
[
|
|
8017
|
-
"
|
|
8018
|
-
"
|
|
8019
|
-
"
|
|
8020
|
-
"
|
|
7926
|
+
"zh-Hans",
|
|
7927
|
+
"zh-Hant",
|
|
7928
|
+
"ja",
|
|
7929
|
+
"ko"
|
|
8021
7930
|
]
|
|
8022
7931
|
]
|
|
8023
7932
|
},
|
|
@@ -8365,7 +8274,7 @@ var finding = {
|
|
|
8365
8274
|
},
|
|
8366
8275
|
"origin": {
|
|
8367
8276
|
"type": "string",
|
|
8368
|
-
"description": "Where the suggestion comes from: `schema`, `
|
|
8277
|
+
"description": "Where the suggestion comes from: `schema`, `document` (a record the document embeds), `registered` (a catalog the host registered) or `contract`."
|
|
8369
8278
|
},
|
|
8370
8279
|
"definition": {
|
|
8371
8280
|
"type": "string",
|