@openpresentation/opf 0.13.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 +40 -49
- 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-E34DJ5LL.js → catalog.js} +16949 -17628
- package/dist/{chart-data-Cdr6rRVV.d.ts → chart-data-BnNqgnC-.d.ts} +17 -6
- package/dist/{chunk-7QBCWNWL.js → chunk-2CJPC4HI.js} +1807 -1904
- package/dist/{chunk-II5EYKZU.js → chunk-374R35TJ.js} +2 -92
- package/dist/chunk-3JG4YXWF.js +1842 -0
- package/dist/chunk-3RKB4RDJ.js +192 -0
- package/dist/{chunk-IS2CPNVJ.js → chunk-5FTUIDUH.js} +26 -26
- package/dist/{chunk-GJKJL4YY.js → chunk-HXHOZ7AH.js} +1379 -504
- package/dist/{chunk-MPM7NRG7.js → chunk-O744SXXA.js} +2014 -885
- package/dist/chunk-QDI75P2M.js +3515 -0
- package/dist/chunk-SPFV27O5.js +210 -0
- package/dist/chunk-TRDXRRQK.js +17 -0
- package/dist/chunk-TWQJLI6E.js +601 -0
- package/dist/{chunk-ATGDDJPX.js → chunk-U4J75TRG.js} +3 -3
- package/dist/{chunk-RAYB46AB.js → chunk-UBFJ2QHH.js} +34 -30
- package/dist/chunk-VGAOJEY7.js +94 -0
- package/dist/chunk-ZPU46TFA.js +83 -0
- package/dist/{composition-D7we69Tr.d.ts → composition-D2tghM82.d.ts} +947 -111
- package/dist/composition.d.ts +3 -2
- package/dist/composition.js +2 -2
- package/dist/convert.d.ts +18 -19
- package/dist/convert.js +61 -50
- package/dist/data.d.ts +4 -4
- package/dist/data.js +3 -3
- package/dist/diff.d.ts +4 -4
- package/dist/diff.js +7 -605
- package/dist/docs.js +56 -44
- package/dist/examples.d.ts +1 -1
- package/dist/examples.js +49451 -6259
- package/dist/finding-CT_f_vbD.d.ts +212 -0
- package/dist/format.d.ts +4 -4
- package/dist/format.js +2 -83
- package/dist/index.d.ts +492 -309
- package/dist/index.js +767 -1097
- package/dist/json-BFSdESOE.d.ts +19 -0
- package/dist/markdown.d.ts +40 -27
- package/dist/markdown.js +9 -1941
- package/dist/pagination-wedbe7eq.d.ts +119 -0
- package/dist/pagination.d.ts +4 -61
- package/dist/pagination.js +6 -6
- package/dist/patch.d.ts +12 -23
- package/dist/patch.js +6 -6
- package/dist/{presentation-mG-IYErQ.d.ts → presentation-CDKQVkyI.d.ts} +702 -1026
- 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 +11 -6
- package/dist/spec/catalogs/audiences/index.json +2 -50
- package/dist/spec/catalogs/chart-types/100pct-stacked-area.json +21 -0
- package/dist/spec/catalogs/chart-types/100pct-stacked-bar.json +22 -0
- package/dist/spec/catalogs/chart-types/100pct-stacked-column.json +22 -0
- package/dist/spec/catalogs/chart-types/area.json +2 -60
- package/dist/spec/catalogs/chart-types/bar.json +2 -48
- package/dist/spec/catalogs/chart-types/box-and-whisker.json +2 -132
- package/dist/spec/catalogs/chart-types/column.json +2 -52
- package/dist/spec/catalogs/chart-types/combo.json +37 -0
- package/dist/spec/catalogs/chart-types/doughnut.json +2 -40
- package/dist/spec/catalogs/chart-types/filled-radar.json +2 -52
- package/dist/spec/catalogs/chart-types/funnel.json +2 -46
- package/dist/spec/catalogs/chart-types/histogram.json +2 -149
- package/dist/spec/catalogs/chart-types/index.json +50 -520
- package/dist/spec/catalogs/chart-types/line-with-markers.json +2 -60
- package/dist/spec/catalogs/chart-types/line.json +2 -60
- package/dist/spec/catalogs/chart-types/pareto.json +2 -50
- package/dist/spec/catalogs/chart-types/pie.json +2 -40
- package/dist/spec/catalogs/chart-types/radar-with-markers.json +2 -52
- package/dist/spec/catalogs/chart-types/radar.json +2 -52
- package/dist/spec/catalogs/chart-types/scatter.json +2 -73
- package/dist/spec/catalogs/chart-types/stacked-area.json +21 -0
- package/dist/spec/catalogs/chart-types/stacked-bar.json +22 -0
- package/dist/spec/catalogs/chart-types/stacked-column.json +22 -0
- package/dist/spec/catalogs/chart-types/stacked-line-with-markers.json +22 -0
- package/dist/spec/catalogs/chart-types/stacked-line.json +21 -0
- package/dist/spec/catalogs/chart-types/treemap.json +2 -48
- package/dist/spec/catalogs/chart-types/waterfall.json +2 -52
- package/dist/spec/catalogs/chart-types/world.json +2 -64
- package/dist/spec/catalogs/font-schemes/angsana-new.json +2 -2
- package/dist/spec/catalogs/font-schemes/aparajita.json +3 -3
- package/dist/spec/catalogs/font-schemes/aptos.json +1 -1
- package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +2 -2
- package/dist/spec/catalogs/font-schemes/arial.json +1 -1
- package/dist/spec/catalogs/font-schemes/batang.json +2 -2
- package/dist/spec/catalogs/font-schemes/bookman.json +1 -1
- package/dist/spec/catalogs/font-schemes/calibri.json +1 -1
- package/dist/spec/catalogs/font-schemes/century-schoolbook.json +1 -1
- package/dist/spec/catalogs/font-schemes/consolas.json +2 -4
- package/dist/spec/catalogs/font-schemes/constantia.json +1 -1
- package/dist/spec/catalogs/font-schemes/courier-new.json +2 -4
- package/dist/spec/catalogs/font-schemes/daunpenh.json +2 -2
- package/dist/spec/catalogs/font-schemes/david.json +2 -2
- package/dist/spec/catalogs/font-schemes/dilleniaupc.json +2 -2
- package/dist/spec/catalogs/font-schemes/fangsong.json +2 -2
- package/dist/spec/catalogs/font-schemes/garamond.json +1 -1
- package/dist/spec/catalogs/font-schemes/gautami.json +2 -2
- package/dist/spec/catalogs/font-schemes/georgia.json +1 -1
- package/dist/spec/catalogs/font-schemes/gisha.json +3 -3
- package/dist/spec/catalogs/font-schemes/grandview.json +1 -1
- package/dist/spec/catalogs/font-schemes/gungsuh.json +2 -2
- package/dist/spec/catalogs/font-schemes/impact.json +1 -1
- package/dist/spec/catalogs/font-schemes/index.json +1 -1
- package/dist/spec/catalogs/font-schemes/kalinga.json +2 -2
- package/dist/spec/catalogs/font-schemes/kartika.json +2 -2
- package/dist/spec/catalogs/font-schemes/khmer-ui.json +2 -2
- package/dist/spec/catalogs/font-schemes/latha.json +2 -2
- package/dist/spec/catalogs/font-schemes/lucida-sans.json +1 -1
- package/dist/spec/catalogs/font-schemes/malgun-gothic.json +2 -2
- package/dist/spec/catalogs/font-schemes/mangal.json +4 -5
- package/dist/spec/catalogs/font-schemes/meiryo.json +2 -2
- package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +2 -2
- package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +5 -5
- package/dist/spec/catalogs/font-schemes/mingliu.json +2 -2
- package/dist/spec/catalogs/font-schemes/miriam.json +2 -2
- package/dist/spec/catalogs/font-schemes/montserrat.json +1 -1
- package/dist/spec/catalogs/font-schemes/ms-mincho.json +2 -2
- package/dist/spec/catalogs/font-schemes/nirmala-ui.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +3 -3
- package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +4 -4
- package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +3 -3
- package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +3 -3
- package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +5 -5
- package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +2 -2
- package/dist/spec/catalogs/font-schemes/noto-sans.json +5 -5
- package/dist/spec/catalogs/font-schemes/nyala.json +2 -2
- package/dist/spec/catalogs/font-schemes/open-sans.json +1 -1
- package/dist/spec/catalogs/font-schemes/pmingliu.json +2 -2
- package/dist/spec/catalogs/font-schemes/poppins.json +1 -1
- package/dist/spec/catalogs/font-schemes/pt-serif.json +1 -1
- package/dist/spec/catalogs/font-schemes/raavi.json +2 -2
- package/dist/spec/catalogs/font-schemes/raleway.json +1 -1
- package/dist/spec/catalogs/font-schemes/roboto.json +1 -1
- package/dist/spec/catalogs/font-schemes/rockwell.json +1 -1
- package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +4 -4
- package/dist/spec/catalogs/font-schemes/seaford.json +1 -1
- package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +1 -1
- package/dist/spec/catalogs/font-schemes/segoe-ui.json +1 -1
- package/dist/spec/catalogs/font-schemes/shonar-bangla.json +3 -3
- package/dist/spec/catalogs/font-schemes/shruti.json +2 -2
- package/dist/spec/catalogs/font-schemes/simsun.json +2 -2
- package/dist/spec/catalogs/font-schemes/skeena.json +1 -1
- package/dist/spec/catalogs/font-schemes/sylfaen.json +3 -3
- package/dist/spec/catalogs/font-schemes/tahoma.json +1 -1
- package/dist/spec/catalogs/font-schemes/tenorite.json +1 -1
- package/dist/spec/catalogs/font-schemes/times-new-roman.json +1 -1
- package/dist/spec/catalogs/font-schemes/traditional-arabic.json +4 -4
- package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +1 -1
- package/dist/spec/catalogs/font-schemes/tunga.json +2 -2
- package/dist/spec/catalogs/font-schemes/verdana.json +1 -1
- package/dist/spec/catalogs/font-schemes/vrinda.json +2 -2
- package/dist/spec/catalogs/font-schemes/yu-gothic.json +2 -2
- package/dist/spec/catalogs/layouts/action-plan.json +9 -15
- package/dist/spec/catalogs/layouts/agenda.json +8 -15
- package/dist/spec/catalogs/layouts/appendix-index.json +7 -15
- package/dist/spec/catalogs/layouts/architecture-stack.json +9 -15
- package/dist/spec/catalogs/layouts/assumptions-dependencies.json +9 -15
- package/dist/spec/catalogs/layouts/before-after.json +9 -15
- package/dist/spec/catalogs/layouts/benchmark-target-table.json +9 -15
- package/dist/spec/catalogs/layouts/blank.json +11 -1
- package/dist/spec/catalogs/layouts/bullet-list.json +9 -15
- package/dist/spec/catalogs/layouts/business-model-canvas.json +9 -15
- package/dist/spec/catalogs/layouts/capability-map.json +11 -16
- package/dist/spec/catalogs/layouts/case-study.json +9 -15
- package/dist/spec/catalogs/layouts/chapter-recap.json +8 -15
- package/dist/spec/catalogs/layouts/chart-1x-title-center.json +30 -0
- package/dist/spec/catalogs/layouts/chart-1x.json +15 -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-2x.json +15 -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/chart-3x.json +15 -0
- package/dist/spec/catalogs/layouts/circular-lifecycle.json +9 -15
- package/dist/spec/catalogs/layouts/code-1x.json +10 -0
- package/dist/spec/catalogs/layouts/comparison.json +9 -15
- package/dist/spec/catalogs/layouts/competitive-landscape.json +11 -16
- package/dist/spec/catalogs/layouts/customer-journey.json +11 -16
- package/dist/spec/catalogs/layouts/customer-logos.json +9 -15
- package/dist/spec/catalogs/layouts/dashboard.json +9 -15
- package/dist/spec/catalogs/layouts/data-visualization.json +9 -15
- package/dist/spec/catalogs/layouts/decision-tree.json +11 -16
- package/dist/spec/catalogs/layouts/detailed-data-table.json +9 -15
- package/dist/spec/catalogs/layouts/ecosystem-map.json +11 -16
- package/dist/spec/catalogs/layouts/executive-decision.json +9 -15
- package/dist/spec/catalogs/layouts/executive-summary.json +9 -15
- package/dist/spec/catalogs/layouts/extract/canonical.json +7 -16
- package/dist/spec/catalogs/layouts/faq.json +9 -15
- package/dist/spec/catalogs/layouts/feature-comparison-matrix.json +9 -15
- package/dist/spec/catalogs/layouts/forecast-scenario.json +9 -15
- package/dist/spec/catalogs/layouts/funnel-pyramid.json +9 -15
- package/dist/spec/catalogs/layouts/gantt-project-plan.json +9 -15
- package/dist/spec/catalogs/layouts/geographic-map.json +10 -15
- package/dist/spec/catalogs/layouts/heatmap-cohort.json +9 -15
- package/dist/spec/catalogs/layouts/hub-and-spoke.json +9 -15
- package/dist/spec/catalogs/layouts/icon-grid.json +11 -16
- 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 +14 -1
- 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 +15 -2
- 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 +16 -3
- package/dist/spec/catalogs/layouts/image-focus.json +13 -18
- 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/key-takeaway.json +8 -15
- package/dist/spec/catalogs/layouts/kpi-scorecard.json +9 -15
- 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-1x.json +17 -1
- 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-2x.json +16 -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-3x.json +16 -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-4x.json +16 -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-5x.json +16 -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/list-6x.json +16 -0
- package/dist/spec/catalogs/layouts/logic-tree.json +9 -15
- package/dist/spec/catalogs/layouts/market-size.json +9 -15
- package/dist/spec/catalogs/layouts/matrix-quadrant.json +9 -15
- package/dist/spec/catalogs/layouts/media-1x.json +11 -1
- package/dist/spec/catalogs/layouts/network-dependency-map.json +10 -15
- 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-1x.json +16 -1
- 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-2x.json +15 -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-3x.json +15 -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-4x.json +15 -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-5x.json +15 -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/number-6x.json +15 -0
- package/dist/spec/catalogs/layouts/one-column-explainer.json +9 -15
- package/dist/spec/catalogs/layouts/org-chart.json +9 -15
- package/dist/spec/catalogs/layouts/persona-grid.json +11 -16
- package/dist/spec/catalogs/layouts/photo-grid.json +14 -19
- package/dist/spec/catalogs/layouts/pricing-table.json +9 -15
- package/dist/spec/catalogs/layouts/process-flow.json +9 -15
- package/dist/spec/catalogs/layouts/product-feature.json +11 -16
- package/dist/spec/catalogs/layouts/pros-cons.json +9 -15
- package/dist/spec/catalogs/layouts/qa-discussion.json +7 -15
- package/dist/spec/catalogs/layouts/quote-1x.json +11 -1
- package/dist/spec/catalogs/layouts/quote-highlight.json +9 -15
- package/dist/spec/catalogs/layouts/raci-matrix.json +9 -15
- package/dist/spec/catalogs/layouts/risk-heatmap.json +9 -15
- package/dist/spec/catalogs/layouts/roadmap.json +9 -15
- package/dist/spec/catalogs/layouts/screenshot-walkthrough.json +11 -16
- package/dist/spec/catalogs/layouts/section-divider.json +8 -15
- package/dist/spec/catalogs/layouts/single-message-statement.json +8 -15
- package/dist/spec/catalogs/layouts/stats-metrics.json +9 -15
- package/dist/spec/catalogs/layouts/status-rag.json +9 -15
- package/dist/spec/catalogs/layouts/swimlane-process.json +11 -16
- package/dist/spec/catalogs/layouts/swot-analysis.json +9 -15
- package/dist/spec/catalogs/layouts/table-1x.json +10 -0
- package/dist/spec/catalogs/layouts/team-bio.json +11 -16
- package/dist/spec/catalogs/layouts/testimonial-grid.json +9 -15
- 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-1x.json +11 -1
- 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-2x.json +10 -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/text-3x.json +10 -0
- package/dist/spec/catalogs/layouts/thank-you-cta.json +8 -15
- package/dist/spec/catalogs/layouts/three-column.json +9 -15
- package/dist/spec/catalogs/layouts/timeline-1x.json +11 -1
- package/dist/spec/catalogs/layouts/timeline.json +9 -15
- 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/layouts/title-slide.json +8 -15
- package/dist/spec/catalogs/layouts/title-subtitle.json +11 -1
- package/dist/spec/catalogs/layouts/title.json +11 -1
- package/dist/spec/catalogs/layouts/two-column.json +9 -15
- package/dist/spec/catalogs/layouts/venn-overlap.json +9 -15
- package/dist/spec/catalogs/layouts/waterfall-bridge.json +9 -15
- package/dist/spec/catalogs/layouts/wheel-radial.json +9 -15
- package/dist/spec/catalogs/manifest.json +22 -22
- package/dist/spec/catalogs/narratives/board-meeting.json +45 -45
- package/dist/spec/catalogs/narratives/business-narrative.json +19 -19
- package/dist/spec/catalogs/narratives/business-review.json +27 -27
- package/dist/spec/catalogs/narratives/capacity-planning.json +19 -19
- package/dist/spec/catalogs/narratives/challenge-resolution.json +17 -17
- package/dist/spec/catalogs/narratives/change-story.json +13 -13
- package/dist/spec/catalogs/narratives/classic-story.json +17 -17
- package/dist/spec/catalogs/narratives/company-intro.json +21 -21
- package/dist/spec/catalogs/narratives/conference-talk.json +4 -4
- package/dist/spec/catalogs/narratives/data-story.json +13 -14
- package/dist/spec/catalogs/narratives/early-startup-pitch.json +27 -27
- package/dist/spec/catalogs/narratives/educate.json +21 -21
- package/dist/spec/catalogs/narratives/employee-review.json +19 -19
- package/dist/spec/catalogs/narratives/failure-analysis.json +23 -23
- package/dist/spec/catalogs/narratives/focus.json +27 -27
- package/dist/spec/catalogs/narratives/golden-circle.json +4 -4
- package/dist/spec/catalogs/narratives/heros-journey.json +13 -13
- package/dist/spec/catalogs/narratives/index.json +145 -145
- package/dist/spec/catalogs/narratives/innovation.json +21 -21
- package/dist/spec/catalogs/narratives/justice.json +25 -25
- package/dist/spec/catalogs/narratives/marketing-strategy.json +25 -25
- package/dist/spec/catalogs/narratives/performance-improvement-plan.json +19 -19
- package/dist/spec/catalogs/narratives/performance-review.json +25 -25
- package/dist/spec/catalogs/narratives/persuade.json +17 -17
- package/dist/spec/catalogs/narratives/persuasive-sales.json +19 -19
- package/dist/spec/catalogs/narratives/pitch-deck.json +6 -6
- package/dist/spec/catalogs/narratives/problem-solution.json +5 -5
- package/dist/spec/catalogs/narratives/product-launch.json +23 -23
- package/dist/spec/catalogs/narratives/project-proposal.json +23 -23
- package/dist/spec/catalogs/narratives/pyramid-principle.json +9 -9
- package/dist/spec/catalogs/narratives/qbr.json +8 -8
- package/dist/spec/catalogs/narratives/rags-to-riches.json +17 -17
- package/dist/spec/catalogs/narratives/reveal.json +19 -19
- package/dist/spec/catalogs/narratives/scqa.json +4 -4
- package/dist/spec/catalogs/narratives/situation-complication-resolution.json +11 -11
- package/dist/spec/catalogs/narratives/sparkline.json +11 -11
- package/dist/spec/catalogs/narratives/star-method.json +11 -11
- package/dist/spec/catalogs/narratives/status-update.json +15 -15
- package/dist/spec/catalogs/narratives/strategic-advisory.json +17 -17
- package/dist/spec/catalogs/narratives/strategic-narrative.json +4 -4
- package/dist/spec/catalogs/narratives/survey-analysis.json +23 -23
- package/dist/spec/catalogs/narratives/survival-story.json +23 -23
- package/dist/spec/catalogs/narratives/transformation-arc.json +4 -4
- package/dist/spec/catalogs/narratives/trend-analysis.json +17 -17
- package/dist/spec/catalogs/narratives/underdog-victory.json +19 -19
- package/dist/spec/catalogs/narratives/venture-pitch.json +27 -27
- package/dist/spec/catalogs/narratives/vision-roadmap.json +13 -13
- package/dist/spec/catalogs/narratives/weekly-progress.json +23 -23
- package/dist/spec/catalogs/narratives/what-so-what-now-what.json +9 -9
- package/dist/spec/openapi.yaml +4 -7
- 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 +6 -27
- package/dist/spec/schemas/catalog-index.schema.json +2 -2
- package/dist/spec/schemas/catalog-manifest.schema.json +3 -3
- package/dist/spec/schemas/chart-type.schema.json +17 -321
- package/dist/spec/schemas/color-scheme.schema.json +23 -36
- package/dist/spec/schemas/finding.schema.json +191 -0
- package/dist/spec/schemas/font-scheme.schema.json +17 -75
- package/dist/spec/schemas/language.schema.json +7 -28
- package/dist/spec/schemas/layout.schema.json +130 -184
- package/dist/spec/schemas/narrative.schema.json +20 -48
- package/dist/spec/schemas/opf.schema.json +678 -701
- package/dist/spec/schemas/purpose.schema.json +5 -26
- package/dist/spec/schemas/social-platform.schema.json +2 -48
- package/dist/spec/schemas/theme.schema.json +13 -38
- 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/symbol-font-encodings.js +18448 -1
- package/dist/types.d.ts +1125 -4
- package/dist/validation-types-BOcY9GTs.d.ts +276 -0
- package/dist/validator.d.ts +63 -4
- package/dist/validator.js +5 -5
- package/dist/yaml.d.ts +102 -0
- package/dist/yaml.js +322 -0
- package/package.json +9 -17
- package/dist/audit.d.ts +0 -35
- package/dist/audit.js +0 -7
- package/dist/catalogs-ywCamd8C.d.ts +0 -1465
- package/dist/catalogs.d.ts +0 -2
- package/dist/catalogs.js +0 -2
- package/dist/chunk-7N4VMAT4.js +0 -1694
- package/dist/chunk-FYLJVF7X.js +0 -18448
- package/dist/chunk-INU7ZNSB.js +0 -670
- package/dist/chunk-IYCJUKWD.js +0 -951
- package/dist/chunk-PIQXLBBJ.js +0 -445
- package/dist/chunk-S5W34SIJ.js +0 -1
- package/dist/lint-B7azdiuE.d.ts +0 -197
- package/dist/lint.d.ts +0 -7
- package/dist/lint.js +0 -6
- package/dist/previews.d.ts +0 -40
- package/dist/previews.js +0 -1
- package/dist/schemas-BbPonsTz.d.ts +0 -270
- package/dist/spec/catalogs/audiences/customers.json +0 -27
- package/dist/spec/catalogs/audiences/executives.json +0 -27
- package/dist/spec/catalogs/audiences/investors.json +0 -27
- package/dist/spec/catalogs/audiences/marketing-team.json +0 -27
- package/dist/spec/catalogs/audiences/regulators.json +0 -27
- package/dist/spec/catalogs/audiences/sales-team.json +0 -27
- package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +0 -91
- package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +0 -103
- package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +0 -79
- package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +0 -91
- package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +0 -103
- package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +0 -79
- package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +0 -105
- package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +0 -106
- package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +0 -123
- package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +0 -89
- package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +0 -100
- package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +0 -95
- package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +0 -108
- package/dist/spec/catalogs/chart-types/australia.json +0 -76
- package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +0 -136
- package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +0 -168
- package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +0 -89
- package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +0 -101
- package/dist/spec/catalogs/chart-types/bullet-bar.json +0 -77
- package/dist/spec/catalogs/chart-types/bullet-column-2x.json +0 -89
- package/dist/spec/catalogs/chart-types/bullet-column-3x.json +0 -101
- package/dist/spec/catalogs/chart-types/bullet-column.json +0 -77
- package/dist/spec/catalogs/chart-types/canada.json +0 -86
- package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +0 -89
- package/dist/spec/catalogs/chart-types/clustered-column.json +0 -95
- package/dist/spec/catalogs/chart-types/dot-plot-2x.json +0 -99
- package/dist/spec/catalogs/chart-types/dot-plot-3x.json +0 -124
- package/dist/spec/catalogs/chart-types/dot-plot-4x.json +0 -149
- package/dist/spec/catalogs/chart-types/dot-plot-5x.json +0 -174
- package/dist/spec/catalogs/chart-types/dot-plot-6x.json +0 -199
- package/dist/spec/catalogs/chart-types/dot-plot.json +0 -74
- package/dist/spec/catalogs/chart-types/dumbbell.json +0 -120
- package/dist/spec/catalogs/chart-types/line-2x.json +0 -105
- package/dist/spec/catalogs/chart-types/line-3x.json +0 -127
- package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +0 -144
- package/dist/spec/catalogs/chart-types/line-with-high-low.json +0 -144
- package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +0 -106
- package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +0 -128
- package/dist/spec/catalogs/chart-types/sparkline-2x.json +0 -138
- package/dist/spec/catalogs/chart-types/sparkline-3x.json +0 -174
- package/dist/spec/catalogs/chart-types/sparkline-4x.json +0 -210
- package/dist/spec/catalogs/chart-types/sparkline-5x.json +0 -246
- package/dist/spec/catalogs/chart-types/sparkline-6x.json +0 -282
- package/dist/spec/catalogs/chart-types/sparkline.json +0 -102
- package/dist/spec/catalogs/chart-types/stacked-area-2x.json +0 -106
- package/dist/spec/catalogs/chart-types/stacked-area-3x.json +0 -123
- package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +0 -89
- package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +0 -100
- package/dist/spec/catalogs/chart-types/stacked-column-2x.json +0 -95
- package/dist/spec/catalogs/chart-types/stacked-column-3x.json +0 -108
- package/dist/spec/catalogs/chart-types/stacked-line-2x.json +0 -106
- package/dist/spec/catalogs/chart-types/stacked-line-3x.json +0 -123
- package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +0 -107
- package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +0 -124
- package/dist/spec/catalogs/chart-types/treemap-2x.json +0 -101
- package/dist/spec/catalogs/chart-types/treemap-3x.json +0 -122
- package/dist/spec/catalogs/chart-types/united-kingdom.json +0 -68
- package/dist/spec/catalogs/chart-types/united-states.json +0 -82
- package/dist/spec/catalogs/layouts/image-bleed.json +0 -10
- package/dist/validator-CIylxoIm.d.ts +0 -172
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import './
|
|
1
|
+
import { b as CatalogOptions } from './catalog-refs-BSfGELpt.js';
|
|
2
|
+
import './chart-data-BnNqgnC-.js';
|
|
2
3
|
|
|
3
4
|
/** Canonical table grid. No renderer, fonts, DOM or network dependencies. */
|
|
4
5
|
interface TableBorder {
|
|
@@ -43,6 +44,110 @@ declare function tableGrid(value: unknown, path?: string): TableGrid;
|
|
|
43
44
|
/** Row boundaries that preserve every vertical merge, used by pagination. */
|
|
44
45
|
declare function tableRowBoundaries(value: unknown): number[];
|
|
45
46
|
|
|
47
|
+
/** The `design` keys that a layout record, the deck and a slide all share and that composition resolves per key. */
|
|
48
|
+
declare const DESIGN_HINT_KEYS: readonly ["titleAlignment", "contentAlignment", "contentBox", "contentDirection", "chartPrimary", "imageFit", "listBullet"];
|
|
49
|
+
type DesignHintKey = typeof DESIGN_HINT_KEYS[number];
|
|
50
|
+
/** Where an effective design hint came from: the slide's own `design`, the deck's `design`, or the slide's layout record. */
|
|
51
|
+
type DesignHintSource = 'slide' | 'deck' | 'layout';
|
|
52
|
+
/** The effective value of every shared design key. A key nobody sets is absent, so the engine default applies. */
|
|
53
|
+
interface DesignHints {
|
|
54
|
+
titleAlignment?: 'left' | 'center' | 'right';
|
|
55
|
+
contentAlignment?: 'left' | 'center' | 'right';
|
|
56
|
+
contentBox?: boolean;
|
|
57
|
+
contentDirection?: 'horizontal' | 'vertical';
|
|
58
|
+
chartPrimary?: 'none' | 'top' | 'bottom' | 'left' | 'right';
|
|
59
|
+
imageFit?: 'cover' | 'contain' | 'stretch';
|
|
60
|
+
listBullet?: 'character' | 'image';
|
|
61
|
+
}
|
|
62
|
+
/** The effective hints plus which level supplied each key and the document path that names it. */
|
|
63
|
+
interface ResolvedDesignHints extends DesignHints {
|
|
64
|
+
/** The level that supplied each key that is set. */
|
|
65
|
+
sources: {
|
|
66
|
+
[K in DesignHintKey]?: DesignHintSource;
|
|
67
|
+
};
|
|
68
|
+
/** Path of the supplying value: `slides.N.design.key`, `design.key`, or for a layout `slides.N.layout` (the reference that selected the record). */
|
|
69
|
+
paths: {
|
|
70
|
+
[K in DesignHintKey]?: string;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
interface ResolveDesignHintsOptions {
|
|
74
|
+
/** The slide, for its own `design`. */
|
|
75
|
+
slide?: unknown;
|
|
76
|
+
/** The slide's resolved layout record, for its `design`. */
|
|
77
|
+
layout?: unknown;
|
|
78
|
+
/** The document, for the deck's `design`. */
|
|
79
|
+
presentation?: unknown;
|
|
80
|
+
/** Index used in the reported paths; defaults to 0. */
|
|
81
|
+
slideIndex?: number;
|
|
82
|
+
/** Host-resolved deck-level values. They rank with the deck's `design`, above it, and below the slide's. */
|
|
83
|
+
deck?: DesignHints;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Resolves the shared design keys with one merge, per key, the slide winning: the slide's `design`, then the
|
|
87
|
+
* deck's `design` (or the host's `deck` values), then the resolved layout record's `design`. A key none of them
|
|
88
|
+
* sets stays absent. A value the schema does not allow for its key is skipped, so the next level answers. Composition, the renderer, the PPTX exporter and the audit all take their values from here
|
|
89
|
+
* (`SlideComposition.design`), so they cannot disagree.
|
|
90
|
+
*/
|
|
91
|
+
declare function resolveDesignHints(options?: ResolveDesignHintsOptions): ResolvedDesignHints;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Metric trend mark (RR-07, FA-06): the arrow and colour that show `metric.trend` and
|
|
95
|
+
* `metric.sentiment` in the SVG preview and the PPTX export. Core's metric layout places the trend word (up, down, flat) as ordinary
|
|
96
|
+
* text; this derives, from that accepted line geometry, one arrow beside it so both engines draw
|
|
97
|
+
* the same shape in the same place and colour. The word stays the text alternative: the arrow
|
|
98
|
+
* adds a visual cue and an `ariaLabel`, never rewritten source text. The arrow always points the
|
|
99
|
+
* way the trend does; its colour (and the trend and delta text colour) follows the sentiment, which
|
|
100
|
+
* defaults to the conventional reading of the trend (up positive, down negative, flat neutral).
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
type MetricTrend = 'up' | 'down' | 'flat';
|
|
104
|
+
/** Whether a change is good news: the colour of the trend mark. */
|
|
105
|
+
type MetricSentiment = 'positive' | 'negative' | 'neutral';
|
|
106
|
+
/** The DrawingML preset geometry that draws each trend (`a:prstGeom prst`). */
|
|
107
|
+
declare const METRIC_TREND_SHAPES: Readonly<Record<MetricTrend, 'upArrow' | 'downArrow' | 'rightArrow'>>;
|
|
108
|
+
declare const METRIC_TREND_MIN_CONTRAST = 4.5;
|
|
109
|
+
interface MetricTrendColorOptions {
|
|
110
|
+
/** The slide background the metric text sits on. */
|
|
111
|
+
background: string;
|
|
112
|
+
/** Neutral colour for a neutral sentiment (the deck's muted text). */
|
|
113
|
+
neutral?: string;
|
|
114
|
+
/** Whether the change is good news; absent, the trend's default (up positive, down negative, flat neutral). */
|
|
115
|
+
sentiment?: MetricSentiment;
|
|
116
|
+
}
|
|
117
|
+
/** The colour of a trend (or, with `options.sentiment`, of its sentiment), kept at >= 4.5:1 against the slide background. */
|
|
118
|
+
declare function metricTrendColor(trend: MetricTrend, options: MetricTrendColorOptions): string;
|
|
119
|
+
interface MetricTrendMark {
|
|
120
|
+
trend: MetricTrend;
|
|
121
|
+
/** The sentiment the colour follows: the metric's own, else the default for the trend. */
|
|
122
|
+
sentiment: MetricSentiment;
|
|
123
|
+
/** DrawingML preset name for native export. */
|
|
124
|
+
shape: 'upArrow' | 'downArrow' | 'rightArrow';
|
|
125
|
+
/** Arrow bounding box in layout pixels (96 per inch). */
|
|
126
|
+
box: {
|
|
127
|
+
x: number;
|
|
128
|
+
y: number;
|
|
129
|
+
width: number;
|
|
130
|
+
height: number;
|
|
131
|
+
};
|
|
132
|
+
/** The arrow outline as polygon points in layout pixels: the preset geometry at default adjustments. */
|
|
133
|
+
points: [number, number][];
|
|
134
|
+
color: string;
|
|
135
|
+
/** Text alternative for the arrow. */
|
|
136
|
+
ariaLabel: string;
|
|
137
|
+
/** Path of the trend field the mark belongs to. */
|
|
138
|
+
path: string;
|
|
139
|
+
}
|
|
140
|
+
/** Outline of the DrawingML upArrow, downArrow or rightArrow preset (adj1 = adj2 = 50000) in `box`. */
|
|
141
|
+
declare function metricTrendPoints(shape: MetricTrendMark['shape'], box: MetricTrendMark['box']): [number, number][];
|
|
142
|
+
/**
|
|
143
|
+
* The arrow for a laid-out metric, or undefined when the metric has no (visible) trend or the
|
|
144
|
+
* arrow has no room. It is square, as tall as the trend word's capitals, on the baseline, and
|
|
145
|
+
* sits after the word for left-aligned metrics and before it for centred or right-aligned ones,
|
|
146
|
+
* so it grows away from the alignment edge. It never leaves the trend field's box. The colour
|
|
147
|
+
* follows `options.sentiment`, else the layout's own (`metric.sentiment`), else the trend's default.
|
|
148
|
+
*/
|
|
149
|
+
declare function metricTrendMark(layout: MetricLayout, options: MetricTrendColorOptions): MetricTrendMark | undefined;
|
|
150
|
+
|
|
46
151
|
/** A positioned thing whose reading position is wanted. */
|
|
47
152
|
interface ReadingBox {
|
|
48
153
|
box: {
|
|
@@ -62,11 +167,34 @@ interface ReadingBox {
|
|
|
62
167
|
* The boxes are read as given: pass them in logical (unmirrored) coordinates and the order is the reading
|
|
63
168
|
* order of both a left-to-right and a right-to-left deck, because mirroring a deck moves where an item is
|
|
64
169
|
* drawn and where a line starts together. For boxes that are already mirrored, pass `direction: 'rtl'` to
|
|
65
|
-
* order each row from right to left. composeSlide uses this for promoted regions and `opf
|
|
170
|
+
* order each row from right to left. composeSlide uses this for promoted regions and `opf/reading-order` uses it to
|
|
66
171
|
* check the composed order, so the two cannot drift apart.
|
|
67
172
|
*/
|
|
68
173
|
declare function visualReadingOrder<T extends ReadingBox>(items: readonly T[], direction?: 'ltr' | 'rtl'): T[];
|
|
69
174
|
|
|
175
|
+
/**
|
|
176
|
+
* Intrinsic aspect ratio (width / height) of an image source, read without fetching: an embedded
|
|
177
|
+
* `data:` URI (PNG, JPEG, GIF, WebP, SVG), or an `asset:<id>` reference to one in `assets`.
|
|
178
|
+
* Any other source (a URL or file path) has no readable dimensions here and returns undefined;
|
|
179
|
+
* hosts resolve those themselves.
|
|
180
|
+
*
|
|
181
|
+
* Only a bounded prefix of the payload is decoded (never the whole of a multi-megabyte logo): 64 KiB, which
|
|
182
|
+
* holds every PNG, GIF and WebP header and the root `<svg>` tag of any real SVG, then 1 MiB for a JPEG whose
|
|
183
|
+
* start-of-frame segment sits behind large EXIF or ICC data. A JPEG whose frame header is still not inside
|
|
184
|
+
* 1 MiB, or an SVG whose root tag is not inside 64 KiB, has no readable proportions (undefined, so a square
|
|
185
|
+
* box). Results are memoized per source string, so a deck's repeated header image is read once.
|
|
186
|
+
*/
|
|
187
|
+
type Dimensions = {
|
|
188
|
+
width: number;
|
|
189
|
+
height: number;
|
|
190
|
+
};
|
|
191
|
+
/** Whether the value is an embedded raster or SVG image whose size is readable, and its pixel size (SVG: its user-unit size). */
|
|
192
|
+
declare function intrinsicImageSize(value: unknown, assets?: unknown): (Dimensions & {
|
|
193
|
+
svg: boolean;
|
|
194
|
+
}) | undefined;
|
|
195
|
+
/** Width / height of an embedded image, following `asset:<id>` references through `assets`; undefined when unreadable. */
|
|
196
|
+
declare function intrinsicImageAspect(value: unknown, assets?: unknown): number | undefined;
|
|
197
|
+
|
|
70
198
|
/**
|
|
71
199
|
* Text direction primitives shared by composition, the renderer and the PPTX exporter (RR-05).
|
|
72
200
|
* Pure: no fonts, DOM or catalogs. Deck direction comes from the presentation language's script
|
|
@@ -104,6 +232,58 @@ declare function physicalAlignment(alignment: PhysicalAlignment | undefined, dir
|
|
|
104
232
|
*/
|
|
105
233
|
declare function paragraphDirectionAt(text: string, deckDirection: TextDirection | string | undefined): (offset: number) => TextDirection;
|
|
106
234
|
|
|
235
|
+
/**
|
|
236
|
+
* Engine defaults and engine vocabularies (OPF 0.15, FA-20/21). Small tables of values every engine must know to
|
|
237
|
+
* draw, compiled from spec/reference/engine-defaults.json and spec/reference/engine-vocabularies.json. None of
|
|
238
|
+
* this is catalog data: a document never references these records, and no catalog lookup reaches them.
|
|
239
|
+
*/
|
|
240
|
+
type Rec = Readonly<Record<string, unknown>>;
|
|
241
|
+
/** The drawing fields of the theme engines use when a document names none, or its theme resolves nowhere. */
|
|
242
|
+
declare const ENGINE_DEFAULT_THEME: Rec;
|
|
243
|
+
/** The twelve slots engines use when neither the design nor the theme names a resolvable colour scheme. */
|
|
244
|
+
declare const ENGINE_DEFAULT_COLOR_SCHEME: Rec;
|
|
245
|
+
/** The font pair engines use when neither the design nor the theme names a resolvable font scheme. */
|
|
246
|
+
declare const ENGINE_DEFAULT_FONT_SCHEME: Rec;
|
|
247
|
+
/** Chart types in the order an engine offers them when it must pick one. */
|
|
248
|
+
declare const ENGINE_DEFAULT_CHART_TYPES: readonly string[];
|
|
249
|
+
/** Every `chart.type` value: an engine vocabulary, validated directly. */
|
|
250
|
+
declare const CHART_TYPES: readonly string[];
|
|
251
|
+
/** How an engine links a handle on one social platform. */
|
|
252
|
+
interface SocialPlatformVocabulary {
|
|
253
|
+
readonly baseUrl?: string;
|
|
254
|
+
/** URL of a person's profile, with `{handle}` standing for the handle. */
|
|
255
|
+
readonly profileUrlPattern?: string;
|
|
256
|
+
/** URL of an organization's page, when the platform has a separate one. */
|
|
257
|
+
readonly companyUrlPattern?: string;
|
|
258
|
+
/** Prefix a handle is written with (`@` on X). */
|
|
259
|
+
readonly handlePrefix?: string;
|
|
260
|
+
}
|
|
261
|
+
/** The keys of `Organization.socials` and `Speaker.socials`: an engine vocabulary, validated directly. */
|
|
262
|
+
declare const SOCIAL_PLATFORMS: Readonly<Record<string, SocialPlatformVocabulary>>;
|
|
263
|
+
/** What engines know about one language tag. */
|
|
264
|
+
interface LanguageVocabulary {
|
|
265
|
+
/** BCP-47 tag, canonically cased. */
|
|
266
|
+
readonly tag: string;
|
|
267
|
+
/** ISO 15924 script. */
|
|
268
|
+
readonly script: string;
|
|
269
|
+
readonly direction: 'ltr' | 'rtl';
|
|
270
|
+
/** Curated OOXML culture tag (`ja-JP` for `ja`). */
|
|
271
|
+
readonly ooxmlLang: string;
|
|
272
|
+
/** Default script fonts (major/minor) per target application. */
|
|
273
|
+
readonly fonts: {
|
|
274
|
+
readonly powerpoint: {
|
|
275
|
+
readonly major: string;
|
|
276
|
+
readonly minor: string;
|
|
277
|
+
};
|
|
278
|
+
readonly google: {
|
|
279
|
+
readonly major: string;
|
|
280
|
+
readonly minor: string;
|
|
281
|
+
};
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/** The language tags engines know the script, direction, OOXML tag and default script fonts of. */
|
|
285
|
+
declare const LANGUAGES: readonly LanguageVocabulary[];
|
|
286
|
+
|
|
107
287
|
/**
|
|
108
288
|
* Numbered lists: the `numbering` field of `items` and `bullets` payloads.
|
|
109
289
|
*
|
|
@@ -218,7 +398,7 @@ declare function formatSlideNumber(format: string, current: number, total: numbe
|
|
|
218
398
|
|
|
219
399
|
/** Normalize a literal hex color to uppercase #RRGGBB. */
|
|
220
400
|
declare function normalizeHexColor(value: unknown): string | undefined;
|
|
221
|
-
type ResolveColorRefRoles = Partial<Record<'primary' | 'secondary' | 'accent' | 'background' | 'surface' | 'text' | 'textSecondary', string>>;
|
|
401
|
+
type ResolveColorRefRoles = Partial<Record<'primary' | 'secondary' | 'accent' | 'background' | 'surface' | 'surfaceAlt' | 'text' | 'textSecondary', string>>;
|
|
222
402
|
interface ResolveColorRefOptions {
|
|
223
403
|
/** Effective color scheme after design resolution (OOXML slots plus optional role hex overrides). */
|
|
224
404
|
colorScheme: Record<string, unknown>;
|
|
@@ -231,6 +411,52 @@ interface ResolveColorRefOptions {
|
|
|
231
411
|
}
|
|
232
412
|
/** Resolve a ColorRef or TextRun.color string to a literal hex color. */
|
|
233
413
|
declare function resolveColorRef(reference: string, options: ResolveColorRefOptions): string;
|
|
414
|
+
/** WCAG relative luminance below which a slide background counts as dark (the point where white and black text contrast equally). */
|
|
415
|
+
declare const DARK_BACKGROUND_LUMINANCE = 0.179;
|
|
416
|
+
/** True when text on this color should be light: its relative luminance is under {@link DARK_BACKGROUND_LUMINANCE}. An unreadable color is not dark. */
|
|
417
|
+
declare function isDarkColor(color: unknown): boolean;
|
|
418
|
+
/**
|
|
419
|
+
* The slide background a color scheme implies when the design names no single-color background: the scheme's
|
|
420
|
+
* `background` role override, else its light1 slot, else white. Gradient and picture backgrounds use it too.
|
|
421
|
+
*/
|
|
422
|
+
declare function defaultSlideBackground(colorScheme: Record<string, unknown>): string;
|
|
423
|
+
interface ResolvedColorRoles {
|
|
424
|
+
/** Role override, else accent1. */
|
|
425
|
+
primary: string;
|
|
426
|
+
/** Role override, else accent2. */
|
|
427
|
+
secondary: string;
|
|
428
|
+
/** Role override, else accent3. */
|
|
429
|
+
accent: string;
|
|
430
|
+
/** The slide background: the resolved single-color background of the slide, else {@link defaultSlideBackground}. */
|
|
431
|
+
background: string;
|
|
432
|
+
/** Role override, else dark2 on a dark background and light2 on a light one. */
|
|
433
|
+
surface: string;
|
|
434
|
+
/** The alternate surface of banded table rows: {@link surfaceAltColor} of `surface` and `text`, always distinguishable from `surface`. */
|
|
435
|
+
surfaceAlt: string;
|
|
436
|
+
/** Default text. On a dark background light1. On a light background the `text` role override, else dark1. */
|
|
437
|
+
text: string;
|
|
438
|
+
/** Role override, else light2 on a dark background and dark2 on a light one. */
|
|
439
|
+
textSecondary: string;
|
|
440
|
+
/** The color of a link run that sets no color of its own: the scheme's hyperlink slot (OOXML hlink), unless that has under 4.5:1 contrast against the slide background, then the slide `text` color. */
|
|
441
|
+
hyperlink: string;
|
|
442
|
+
/** Followed-hyperlink slot (OOXML folHlink). */
|
|
443
|
+
followedHyperlink: string;
|
|
444
|
+
/** Whether the slide background is dark; text, surface and textSecondary defaults follow it. */
|
|
445
|
+
dark: boolean;
|
|
446
|
+
}
|
|
447
|
+
interface ResolveColorRolesOptions {
|
|
448
|
+
/** The slide's resolved single-color background (solid, theme-slot or pattern background color). Omit for a gradient, picture or no background. */
|
|
449
|
+
background?: string | null;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Resolve a color scheme's abstract roles for one slide: the single definition the opf-render preview, the
|
|
453
|
+
* PPTX export and the audit share, so the same deck draws the same colors in all three. Role overrides on the
|
|
454
|
+
* scheme (`primary`, `secondary`, `accent`, `background`, `surface`, `text`, `textSecondary`) win over the slots they
|
|
455
|
+
* default to. The background-dependent roles follow {@link isDarkColor} of the slide background; a `text`
|
|
456
|
+
* override applies only on a light background, so a dark slide always gets readable light1 text.
|
|
457
|
+
* Values are uppercase #RRGGBB, or #RRGGBBAA where the scheme color carries an alpha byte.
|
|
458
|
+
*/
|
|
459
|
+
declare function resolveColorRoles(colorScheme: Record<string, unknown>, options?: ResolveColorRolesOptions): ResolvedColorRoles;
|
|
234
460
|
declare function colorContrast(foreground: string, background: string): number | undefined;
|
|
235
461
|
/** Keep an inherited text color at >=4.5:1; otherwise select black or white.
|
|
236
462
|
* Callers must preserve explicit text-color overrides before using this fallback.
|
|
@@ -274,12 +500,422 @@ declare const CHART_SERIES_MIN_DIFFERENCE = 12;
|
|
|
274
500
|
* and preview and export (which both call this function) draw the same ones.
|
|
275
501
|
*/
|
|
276
502
|
declare function chartPaletteForFill(fill: string, palette: readonly string[]): string[];
|
|
503
|
+
/** Share of the text colour mixed into the surface to make the muted colour of a highlighted chart. */
|
|
504
|
+
declare const CHART_HIGHLIGHT_MUTED_MIX = 0.3;
|
|
505
|
+
/** Smallest contrast the muted colour keeps against the surface: recessive, but still a visible mark. */
|
|
506
|
+
declare const CHART_HIGHLIGHT_MUTED_MIN_CONTRAST = 1.6;
|
|
507
|
+
/**
|
|
508
|
+
* The two colours of a chart that highlights marks (`chart.highlight`), derived from the theme only: `accent` for the highlighted
|
|
509
|
+
* marks, `muted` for every other mark.
|
|
510
|
+
*
|
|
511
|
+
* - `accent` is the deck's primary colour, kept at >= 3:1 against the surface by `chartColorForFill` (a primary that already has
|
|
512
|
+
* that contrast is returned unchanged).
|
|
513
|
+
* - `muted` is the surface mixed {@link CHART_HIGHLIGHT_MUTED_MIX} of the way towards the text colour: a light grey on a light surface
|
|
514
|
+
* and a dim grey on a dark one, in the surface's own hue. When that falls below {@link CHART_HIGHLIGHT_MUTED_MIN_CONTRAST} against
|
|
515
|
+
* the surface (a surface and text that are close together) the mix moves towards the text colour until it holds.
|
|
516
|
+
*
|
|
517
|
+
* Pure arithmetic on opaque colours: the preview and the PPTX export both call it with the chart panel, the primary and the label
|
|
518
|
+
* colour, so they draw and write the same two colours. An unresolved colour is replaced by white (surface), the surface's own
|
|
519
|
+
* best contrast partner (text) or black (primary).
|
|
520
|
+
*/
|
|
521
|
+
declare function chartHighlightColors(surface: string, primary: string, text: string): {
|
|
522
|
+
accent: string;
|
|
523
|
+
muted: string;
|
|
524
|
+
};
|
|
525
|
+
/** Share of the text colour mixed into the surface for the `surfaceAlt` role. */
|
|
526
|
+
declare const SURFACE_ALT_MIX = 0.1;
|
|
527
|
+
/** Smallest contrast `surfaceAlt` keeps against `surface`, so a band is visible next to a plain row. */
|
|
528
|
+
declare const SURFACE_ALT_MIN_CONTRAST = 1.1;
|
|
529
|
+
/**
|
|
530
|
+
* The `surfaceAlt` colour role: the fill of the banded rows of a table whose other body rows take `surface`. It is the surface
|
|
531
|
+
* mixed {@link SURFACE_ALT_MIX} of the way towards the text colour (a slightly darker band on a light table, a slightly lighter one
|
|
532
|
+
* on a dark table), moved further until it differs from the surface by {@link SURFACE_ALT_MIN_CONTRAST}, while the text keeps
|
|
533
|
+
* 4.5:1 on it. When mixing towards the text cannot keep both (a surface and text that are close together), the band moves the
|
|
534
|
+
* other way, away from the text, which only raises the text contrast. Pure arithmetic on opaque colours, so the preview and
|
|
535
|
+
* the PPTX export, which both resolve the `surfaceAlt` ColorRef from their own `surface` and `text` roles, draw and write the
|
|
536
|
+
* same colour. An unresolved surface is white; an unresolved text colour is the surface's best contrast partner.
|
|
537
|
+
*/
|
|
538
|
+
declare function surfaceAltColor(surface: string, text: string): string;
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Language/script font model (font-fidelity-everywhere FF-18).
|
|
542
|
+
*
|
|
543
|
+
* Resolves, for a presentation's language and effective font scheme, the font
|
|
544
|
+
* family for each OOXML script slot (`a:latin`, `a:ea`, `a:cs`) of the major
|
|
545
|
+
* (heading) and minor (body) theme fonts, plus the language tags and base
|
|
546
|
+
* direction. Pure: no DOM, fonts, network or mutation. Font-scheme references
|
|
547
|
+
* resolve like every content reference (the document's catalogs groups, then the
|
|
548
|
+
* registered catalogs); nothing is fetched.
|
|
549
|
+
*
|
|
550
|
+
* The language is an engine vocabulary: tags the vocabulary knows resolve
|
|
551
|
+
* deterministically from vendored tables. Only a tag outside it may consult the
|
|
552
|
+
* runtime's ICU likely subtags (`Intl.Locale#maximize`) to find its script.
|
|
553
|
+
*
|
|
554
|
+
* Design: docs/programs/font-fidelity-everywhere/script-font-model.md.
|
|
555
|
+
*/
|
|
556
|
+
/** OOXML script slot a writing system uses: `a:latin`, `a:ea` or `a:cs`. */
|
|
557
|
+
type ScriptRole = "latin" | "eastAsian" | "complexScript";
|
|
558
|
+
/** FontScheme.languageFamily as written: the short OOXML names and the long slot names are one value. */
|
|
559
|
+
type LanguageFamilyName = "latin" | "ea" | "cs" | "eastAsian" | "complexScript";
|
|
560
|
+
/**
|
|
561
|
+
* Read a FontScheme `languageFamily` as one of three values. `eastAsian` is `ea` and `complexScript` is
|
|
562
|
+
* `cs`; anything that is not one of the five names returns undefined.
|
|
563
|
+
*/
|
|
564
|
+
declare function normalizeLanguageFamily(value: unknown): "latin" | "ea" | "cs" | undefined;
|
|
565
|
+
/** Target application whose language font-scheme defaults apply. */
|
|
566
|
+
type ScriptFontApp = "powerpoint" | "google-slides";
|
|
567
|
+
/** Font family per OOXML script slot for one theme font (major or minor). */
|
|
568
|
+
interface ScriptFontSlots {
|
|
569
|
+
latin: string;
|
|
570
|
+
eastAsian: string;
|
|
571
|
+
complexScript: string;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Where a resolved eastAsian/complexScript family came from:
|
|
575
|
+
* - `fontScheme`: an explicit `eastAsian`/`complexScript` slot on the effective design font scheme.
|
|
576
|
+
* - `schemeFamily`: the design font scheme's own major/minor, because its `languageFamily` names this
|
|
577
|
+
* slot and its `languages` list is empty or names the presentation language.
|
|
578
|
+
* - `language`: the presentation language's font scheme (`fontScheme`, or `googleFontScheme` for Google Slides).
|
|
579
|
+
* - `latin`: no script-specific choice exists, so the slot repeats the latin family.
|
|
580
|
+
*/
|
|
581
|
+
type ScriptFontSource = "fontScheme" | "schemeFamily" | "language" | "latin";
|
|
582
|
+
/** A per-script supplemental theme font, as in OOXML `<a:font script="Jpan" typeface="..."/>`. */
|
|
583
|
+
interface ScriptFontSupplement {
|
|
584
|
+
/** OOXML theme script tag (ISO 15924, except Korean uses `Hang`). */
|
|
585
|
+
script: string;
|
|
586
|
+
heading: string;
|
|
587
|
+
body: string;
|
|
588
|
+
}
|
|
589
|
+
interface ResolveScriptFontsOptions extends CatalogOptions {
|
|
590
|
+
/** Which language font default applies. Defaults to `powerpoint` (`language.fontScheme`, else the vocabulary default); `google-slides` prefers `language.googleFontScheme`. */
|
|
591
|
+
app?: ScriptFontApp;
|
|
592
|
+
/** Merge `slides[slideIndex].design` over the deck design, per field, before resolving the font scheme. */
|
|
593
|
+
slideIndex?: number;
|
|
594
|
+
/** Language to resolve instead of the document's `language` (a BCP-47 tag or a Language object). */
|
|
595
|
+
language?: unknown;
|
|
596
|
+
/** Language tag used when neither the document nor `options.language` names a resolvable language. Defaults to `en-US`. */
|
|
597
|
+
defaultLanguage?: string;
|
|
598
|
+
}
|
|
599
|
+
interface ResolvedScriptFonts extends ScriptFontSlots {
|
|
600
|
+
/**
|
|
601
|
+
* Tag for OOXML `a:rPr/@lang` (and `a:endParaRPr/@lang`): an authored tag that carries a region,
|
|
602
|
+
* else the curated `ooxmlLang` of the language vocabulary, else the canonical BCP-47 tag.
|
|
603
|
+
*/
|
|
604
|
+
lang: string;
|
|
605
|
+
/** Canonically cased BCP-47 tag for HTML/SVG `lang`: the authored tag. */
|
|
606
|
+
bcp47: string;
|
|
607
|
+
/** `default` when the tag came from `defaultLanguage` because no language resolved. */
|
|
608
|
+
languageSource: "document" | "option" | "default";
|
|
609
|
+
/** ISO 15924 script (`Zzzz` when it cannot be determined). */
|
|
610
|
+
script: string;
|
|
611
|
+
/** Script slot the language's own text uses. */
|
|
612
|
+
scriptRole: ScriptRole;
|
|
613
|
+
direction: "ltr" | "rtl";
|
|
614
|
+
rtl: boolean;
|
|
615
|
+
/** Major (heading) theme font slots. */
|
|
616
|
+
heading: ScriptFontSlots;
|
|
617
|
+
/** Minor (body) theme font slots. The top-level latin/eastAsian/complexScript repeat these. */
|
|
618
|
+
body: ScriptFontSlots;
|
|
619
|
+
/**
|
|
620
|
+
* Supplemental theme font for the language's script. Present only when an explicit slot, the
|
|
621
|
+
* design scheme's own script family or the language's font scheme supplies one; absent for
|
|
622
|
+
* Latin, Cyrillic, Greek and for scripts with no script font. For Armenian, Georgian and
|
|
623
|
+
* Ethiopic (latin slot) an explicit `complexScript` slot or a design `cs` scheme that serves the
|
|
624
|
+
* language replaces the language's own font scheme.
|
|
625
|
+
*/
|
|
626
|
+
supplement?: ScriptFontSupplement;
|
|
627
|
+
sources: {
|
|
628
|
+
eastAsian: ScriptFontSource;
|
|
629
|
+
complexScript: ScriptFontSource;
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/** The OOXML script slot for an ISO 15924 script code. Unknown scripts use the latin slot. */
|
|
634
|
+
declare function scriptFontRole(script: string): ScriptRole;
|
|
635
|
+
/**
|
|
636
|
+
* Resolve the per-script theme fonts, language tags and direction for a
|
|
637
|
+
* presentation (or a `{ design, language, catalogs }` subset of one).
|
|
638
|
+
*
|
|
639
|
+
* The latin slot follows the effective design font scheme exactly as
|
|
640
|
+
* `resolveFontFamilies` does; when nothing names a font scheme it falls back to
|
|
641
|
+
* the engine default font scheme. Each of the eastAsian and complexScript slots
|
|
642
|
+
* takes, in order: the design font scheme's explicit slot; the scheme's own
|
|
643
|
+
* families when its `languageFamily` names the slot and its `languages` list
|
|
644
|
+
* is empty or names the language; the language's font scheme when the
|
|
645
|
+
* language's script uses the slot; otherwise the latin family.
|
|
646
|
+
*/
|
|
647
|
+
declare function resolveScriptFonts(input: unknown, options?: ResolveScriptFontsOptions): ResolvedScriptFonts;
|
|
648
|
+
/**
|
|
649
|
+
* The deck base direction composition lays a slide out in: the direction of the presentation language's script
|
|
650
|
+
* (`rtl` for Arabic, Hebrew and the other right-to-left scripts), `ltr` when the document names no language or
|
|
651
|
+
* the language does not resolve. Layout, preview and export all read this one value (RR-05).
|
|
652
|
+
*/
|
|
653
|
+
declare function resolveSlideDirection(presentation: unknown, slideIndex?: number): "ltr" | "rtl";
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* Deterministic syntax highlighting shared by the SVG preview and the PPTX export (RR-07).
|
|
657
|
+
*
|
|
658
|
+
* `tokenizeCode(source, language)` returns coloured token ranges over the exact source
|
|
659
|
+
* string; everything between tokens is plain. `codeSyntaxPalette` derives one colour per
|
|
660
|
+
* token kind from the deck theme and keeps each at WCAG contrast >= 4.5:1 against the code
|
|
661
|
+
* panel. The scanner is a small hand-written one (no dependency, no network, no locale or
|
|
662
|
+
* clock input): it recognises comments, strings, numbers, keywords, definition names, calls,
|
|
663
|
+
* capitalised types and the structure of JSON, YAML, TOML, HTML/XML and CSS. It never edits
|
|
664
|
+
* the text: callers colour ranges of `code.source` and the concatenated runs equal the source.
|
|
665
|
+
* An unknown or missing language yields no tokens (plain text).
|
|
666
|
+
*/
|
|
667
|
+
type CodeTokenKind = 'comment' | 'keyword' | 'string' | 'number' | 'function' | 'type' | 'property';
|
|
668
|
+
interface CodeToken {
|
|
669
|
+
start: number;
|
|
670
|
+
end: number;
|
|
671
|
+
kind: CodeTokenKind;
|
|
672
|
+
}
|
|
673
|
+
/** A slice of one source line: `kind` is absent for plain text. */
|
|
674
|
+
interface CodeRun {
|
|
675
|
+
start: number;
|
|
676
|
+
end: number;
|
|
677
|
+
kind?: CodeTokenKind;
|
|
678
|
+
}
|
|
679
|
+
type CodeSyntaxPalette = Record<CodeTokenKind | 'plain', string>;
|
|
680
|
+
/** Source longer than this is left plain: highlighting must stay bounded. */
|
|
681
|
+
declare const CODE_HIGHLIGHT_MAX_LENGTH = 200000;
|
|
682
|
+
/** Contrast the palette keeps against the code panel. */
|
|
683
|
+
declare const CODE_SYNTAX_MIN_CONTRAST = 4.5;
|
|
684
|
+
/** The code panel colour the preview and the PPTX export both draw. */
|
|
685
|
+
declare const CODE_PANEL_BACKGROUND = "#111827";
|
|
686
|
+
declare const CODE_PANEL_FOREGROUND = "#E5E7EB";
|
|
687
|
+
/** Language ids with a scanner (the keys the aliases resolve to). */
|
|
688
|
+
declare const CODE_HIGHLIGHT_LANGUAGES: readonly string[];
|
|
689
|
+
/** The scanner id for a `code.language` value, or undefined when the language is not highlighted. */
|
|
690
|
+
declare function resolveCodeLanguage(language: unknown): string | undefined;
|
|
691
|
+
/**
|
|
692
|
+
* Token ranges of `source` for a `code.language` value, sorted and non-overlapping. Empty for
|
|
693
|
+
* an unknown language, a missing language, or source longer than CODE_HIGHLIGHT_MAX_LENGTH.
|
|
694
|
+
*/
|
|
695
|
+
declare function tokenizeCode(source: string, language?: unknown): CodeToken[];
|
|
696
|
+
/**
|
|
697
|
+
* The runs of one source line `[start, end)`: consecutive slices that cover the line exactly.
|
|
698
|
+
* A token that crosses the line boundary is clipped, so each native text line can be coloured
|
|
699
|
+
* on its own while concatenating the runs returns the line text unchanged. With `source`, a tab
|
|
700
|
+
* character is always its own plain run, as in the preview where a tab is a measured segment: a
|
|
701
|
+
* token (a multi-line string, say) never colours a tab stop.
|
|
702
|
+
*/
|
|
703
|
+
declare function codeLineRuns(tokens: readonly CodeToken[], start: number, end: number, source?: string): CodeRun[];
|
|
704
|
+
interface CodeSyntaxPaletteOptions {
|
|
705
|
+
background?: string;
|
|
706
|
+
foreground?: string;
|
|
707
|
+
minimumContrast?: number;
|
|
708
|
+
}
|
|
709
|
+
interface CodeSyntaxPaletteTheme {
|
|
710
|
+
primary?: string;
|
|
711
|
+
secondary?: string;
|
|
712
|
+
accent?: string;
|
|
713
|
+
mutedText?: string;
|
|
714
|
+
}
|
|
715
|
+
/**
|
|
716
|
+
* One colour per token kind from the deck theme: keyword = primary, string = accent,
|
|
717
|
+
* number = secondary, comment = a fixed slate; function, type and property take fixed hues
|
|
718
|
+
* (blue, cyan, pink) rotated away from any theme colour they would collide with. Every
|
|
719
|
+
* colour is lightened until it keeps `minimumContrast` (4.5:1) against the code panel, so a
|
|
720
|
+
* dark theme colour is raised rather than dropped. Deterministic for a given theme.
|
|
721
|
+
*/
|
|
722
|
+
declare function codeSyntaxPalette(theme?: CodeSyntaxPaletteTheme, options?: CodeSyntaxPaletteOptions): CodeSyntaxPalette;
|
|
723
|
+
/**
|
|
724
|
+
* The palette for a resolved colour scheme record (`primary`, `secondary`, `accent`, or the
|
|
725
|
+
* `accent1` to `accent3` slots they default to). The preview and the PPTX export both call this
|
|
726
|
+
* with the scheme they resolved, so they cannot disagree on the inputs.
|
|
727
|
+
*/
|
|
728
|
+
declare function codeSyntaxPaletteForScheme(scheme: unknown, options?: CodeSyntaxPaletteOptions): CodeSyntaxPalette;
|
|
729
|
+
|
|
730
|
+
/**
|
|
731
|
+
* Timeline event status (FA-11): how a `done`, `current` or `planned` event looks in the SVG
|
|
732
|
+
* preview and in the PPTX export. Core's timeline layout places the markers and the text and
|
|
733
|
+
* records each event's status on them (see `TimelineLayout.markers` and `TimelineTextPart.status`).
|
|
734
|
+
* This derives, from that geometry and the deck's colors, the shapes and text colors to draw, so
|
|
735
|
+
* both engines draw the same marker in the same place and colors.
|
|
736
|
+
*
|
|
737
|
+
* - no status, `done`: a filled marker in the primary color, normal text (today's marker).
|
|
738
|
+
* - `current` ("we are here"): the same filled marker inside a ring, and the label is bold
|
|
739
|
+
* (layout sets the weight, so the measured line breaks already include it).
|
|
740
|
+
* - `planned`: a hollow marker (primary-color outline over the slide background) and muted text.
|
|
741
|
+
*
|
|
742
|
+
* Text colors are kept at 4.5:1 against the slide background, outlines and rings at 3:1.
|
|
743
|
+
*/
|
|
744
|
+
|
|
745
|
+
declare const TIMELINE_STATUSES: readonly ["done", "current", "planned"];
|
|
746
|
+
declare const TIMELINE_TEXT_MIN_CONTRAST = 4.5;
|
|
747
|
+
declare const TIMELINE_OUTLINE_MIN_CONTRAST = 3;
|
|
748
|
+
interface TimelineStatusColors {
|
|
749
|
+
/** The slide background the timeline sits on. */
|
|
750
|
+
background: string;
|
|
751
|
+
/** The marker color (the deck's primary color). */
|
|
752
|
+
primary: string;
|
|
753
|
+
/** The color of normal timeline text. */
|
|
754
|
+
text: string;
|
|
755
|
+
/** The muted color of planned events' text (the deck's secondary text). */
|
|
756
|
+
mutedText: string;
|
|
757
|
+
}
|
|
758
|
+
interface TimelineMarkerShape {
|
|
759
|
+
/** `marker` is the event's dot (or hollow circle), `ring` the circle around a current event's dot. */
|
|
760
|
+
role: 'marker' | 'ring';
|
|
761
|
+
/** DrawingML preset name for native export. */
|
|
762
|
+
shape: 'ellipse';
|
|
763
|
+
cx: number;
|
|
764
|
+
cy: number;
|
|
765
|
+
/** Radius of the drawn ellipse (the marker's `radius`, or the ring's `ring.radius`, 1.6 times it). An outline is centered on the edge, so it reaches half its width beyond. */
|
|
766
|
+
radius: number;
|
|
767
|
+
/** Fill color; undefined means no fill (nothing draws inside the shape). */
|
|
768
|
+
fill?: string;
|
|
769
|
+
/** Outline; undefined means no outline. */
|
|
770
|
+
stroke?: {
|
|
771
|
+
color: string;
|
|
772
|
+
width: number;
|
|
773
|
+
};
|
|
774
|
+
}
|
|
775
|
+
/** The shapes of one marker from `layout.markers`, back to front: the ring (current only), then the marker. */
|
|
776
|
+
declare function timelineMarkerShapes(marker: TimelineLayout['markers'][number], colors: TimelineStatusColors): TimelineMarkerShape[];
|
|
777
|
+
/** The color of one timeline text part: muted for a planned event, the normal text color otherwise, kept at >= 4.5:1. */
|
|
778
|
+
declare function timelineTextColor(part: Pick<TimelineTextPart, 'status'>, colors: TimelineStatusColors): string;
|
|
779
|
+
|
|
780
|
+
/**
|
|
781
|
+
* Line emphasis for code blocks (`code.highlight`), shared by the SVG preview, the PPTX export and the
|
|
782
|
+
* validator so they cannot disagree.
|
|
783
|
+
*
|
|
784
|
+
* `code.highlight` lists 1-based source lines: a line number or an inclusive `[start, end]` range.
|
|
785
|
+
* Lines are counted by line break in `code.source`, so a soft-wrapped line is still one line and every
|
|
786
|
+
* displayed line of it takes the same number (`codeLineNumbers`). Engines draw one band behind each
|
|
787
|
+
* run of marked displayed lines (`codeHighlightBands`) and set the unmarked lines in a slightly dimmed
|
|
788
|
+
* colour (`codeHighlightColors`); both colour sets keep WCAG contrast >= 4.5:1 against what they sit on.
|
|
789
|
+
* Everything here is deterministic: no clock, locale or network.
|
|
790
|
+
*/
|
|
791
|
+
|
|
792
|
+
/** One `code.highlight` entry: a line number or an inclusive `[start, end]` range. */
|
|
793
|
+
type CodeHighlightEntry = number | [number, number];
|
|
794
|
+
interface CodeHighlightIssue {
|
|
795
|
+
code: 'code-highlight-out-of-range' | 'code-highlight-range-reversed' | 'code-highlight-invalid';
|
|
796
|
+
/** Index of the entry in `code.highlight`. */
|
|
797
|
+
index: number;
|
|
798
|
+
message: string;
|
|
799
|
+
}
|
|
800
|
+
interface CodeHighlightLines {
|
|
801
|
+
/** Lines in the source (a final empty line after a trailing line break is not counted). */
|
|
802
|
+
lineCount: number;
|
|
803
|
+
/** The marked lines inside the source, ascending and unique. Empty when nothing is marked. */
|
|
804
|
+
lines: number[];
|
|
805
|
+
/** Entries that are ignored: past the last line, written end before start, or not line numbers. */
|
|
806
|
+
issues: CodeHighlightIssue[];
|
|
807
|
+
}
|
|
808
|
+
/** Resolve `code.highlight` against its source: the marked lines, and the entries that are ignored. */
|
|
809
|
+
declare function codeHighlightLines(highlight: unknown, source: string): CodeHighlightLines;
|
|
810
|
+
/** The source line number (from 1) of every displayed line; wrapped lines repeat their line's number. */
|
|
811
|
+
declare function codeLineNumbers(sourceLines: readonly {
|
|
812
|
+
boundary: 'soft' | 'hard' | 'end';
|
|
813
|
+
}[]): number[];
|
|
814
|
+
/** A run of consecutive displayed lines (indexes into `sourceLines`, inclusive) whose source lines are marked. */
|
|
815
|
+
interface CodeHighlightBand {
|
|
816
|
+
first: number;
|
|
817
|
+
last: number;
|
|
818
|
+
}
|
|
819
|
+
/** One band per run of consecutive displayed lines that belong to a marked line. */
|
|
820
|
+
declare function codeHighlightBands(sourceLines: readonly {
|
|
821
|
+
boundary: 'soft' | 'hard' | 'end';
|
|
822
|
+
}[], lines: readonly number[]): CodeHighlightBand[];
|
|
823
|
+
interface CodeHighlightColors {
|
|
824
|
+
/** The band behind marked lines: the panel colour tinted with the theme's primary colour. */
|
|
825
|
+
band: string;
|
|
826
|
+
/** Marked lines: the syntax palette, each colour at least 4.5:1 on `band`. */
|
|
827
|
+
lit: CodeSyntaxPalette;
|
|
828
|
+
/** Unmarked lines: the syntax palette moved toward the panel, never below 4.5:1 on it. */
|
|
829
|
+
dim: CodeSyntaxPalette;
|
|
830
|
+
}
|
|
831
|
+
/**
|
|
832
|
+
* The highlight colours for a resolved colour scheme record. The band takes the scheme's `primary`
|
|
833
|
+
* (or `accent1`); the palette is `codeSyntaxPaletteForScheme(scheme)` so highlighted lines keep their syntax
|
|
834
|
+
* colours. Preview and export call this with the scheme they resolved.
|
|
835
|
+
*/
|
|
836
|
+
declare function codeHighlightColors(scheme: unknown, palette?: CodeSyntaxPalette): CodeHighlightColors;
|
|
837
|
+
|
|
838
|
+
/**
|
|
839
|
+
* Geometry of a text watermark (`design.watermark = { text, opacity }`), shared by the SVG preview and the
|
|
840
|
+
* PPTX export so both draw the same stamp.
|
|
841
|
+
*
|
|
842
|
+
* The stamp is one line of text, centered on the slide and rotated 30 degrees counterclockwise (rising to
|
|
843
|
+
* the right), the usual diagonal DRAFT or CONFIDENTIAL mark. It is sized so the line spans at most 70% of the
|
|
844
|
+
* slide width and its height is at most 30% of the shorter slide edge, which keeps the rotated line inside
|
|
845
|
+
* every preset from 9:16 portrait to 16:9 widescreen.
|
|
846
|
+
*/
|
|
847
|
+
|
|
848
|
+
interface WatermarkTextOptions {
|
|
849
|
+
/** The heading family of the design. Defaults to `sans-serif`. */
|
|
850
|
+
fontFamily?: string;
|
|
851
|
+
/** Defaults to 700. */
|
|
852
|
+
fontWeight?: number;
|
|
853
|
+
textMeasurement?: TextMeasurement;
|
|
854
|
+
}
|
|
855
|
+
interface WatermarkTextLayout {
|
|
856
|
+
/** The text as drawn: line breaks become spaces and the ends are trimmed. */
|
|
857
|
+
text: string;
|
|
858
|
+
fontFamily: string;
|
|
859
|
+
fontWeight: number;
|
|
860
|
+
/** The resolved text style (the host's font registry may rename the family). */
|
|
861
|
+
style: TextStyle;
|
|
862
|
+
/** In the unit of the size passed in (reference pixels for a composed slide). */
|
|
863
|
+
fontSize: number;
|
|
864
|
+
/** Measured width of the line at `fontSize`. */
|
|
865
|
+
textWidth: number;
|
|
866
|
+
/** The unrotated text box, centered on the slide; PPTX rotates it about its center. */
|
|
867
|
+
box: {
|
|
868
|
+
x: number;
|
|
869
|
+
y: number;
|
|
870
|
+
width: number;
|
|
871
|
+
height: number;
|
|
872
|
+
};
|
|
873
|
+
/** Rotation about the slide center in degrees, clockwise positive. */
|
|
874
|
+
rotation: number;
|
|
875
|
+
}
|
|
876
|
+
/** Lay out a text watermark on a slide of `size`; undefined when the text is empty. */
|
|
877
|
+
declare function layoutWatermark(text: unknown, size: {
|
|
878
|
+
width: number;
|
|
879
|
+
height: number;
|
|
880
|
+
}, options?: WatermarkTextOptions): WatermarkTextLayout | undefined;
|
|
881
|
+
|
|
882
|
+
/**
|
|
883
|
+
* DrawingML preset pattern fills (ECMA-376 20.1.10.51 ST_PresetPatternVal) as 8x8 bitmaps,
|
|
884
|
+
* shared by the SVG preview (RR-07) and the PPTX export, which writes the same names as native
|
|
885
|
+
* `a:pattFill prst="..."`.
|
|
886
|
+
*
|
|
887
|
+
* ECMA-376 names the 54 presets but does not define their pixels. These tiles are MEASURED from
|
|
888
|
+
* desktop PowerPoint (Office 365, Windows, 2026-10-01): each preset was exported as a full-slide
|
|
889
|
+
* pattern background (black on white) to a 1280 x 720 PNG and opf-render's
|
|
890
|
+
* `scripts/derive-pattern-bitmaps.mjs` voted every pixel into its (x mod 8, y mod 8) cell; every
|
|
891
|
+
* tile was uniform across all repeats (confidence 1.00) at one image pixel per pattern pixel, so a
|
|
892
|
+
* pattern pixel is one 1/96 inch unit. The tile is anchored at the slide's top-left corner (the
|
|
893
|
+
* phase of the line, grid and diagonal presets matched at no shift). Measured pixel data is
|
|
894
|
+
* committed as data; no third-party table was used. A tile is one row per line, '#' = foreground,
|
|
895
|
+
* '.' = background, top to bottom, left to right.
|
|
896
|
+
*/
|
|
897
|
+
/** ST_PresetPatternVal, in specification order. */
|
|
898
|
+
declare const PATTERN_PRESETS: readonly string[];
|
|
899
|
+
/** Engine ids that are not DrawingML names, with the preset they draw and export as. */
|
|
900
|
+
declare const PATTERN_PRESET_ALIASES: Readonly<Record<string, string>>;
|
|
901
|
+
/** The pattern size PowerPoint tiles: 8 x 8 units, one unit per 1/96 inch. */
|
|
902
|
+
declare const PATTERN_TILE_SIZE = 8;
|
|
903
|
+
/** The DrawingML preset a pattern id draws as: a preset name, an alias (diagStripe), or undefined. */
|
|
904
|
+
declare function resolvePatternPreset(preset: unknown): string | undefined;
|
|
905
|
+
/** Eight row bytes, top to bottom, most significant bit = leftmost pixel; undefined for an unknown id. */
|
|
906
|
+
declare function patternBitmap(preset: unknown): readonly number[] | undefined;
|
|
907
|
+
/** Horizontal runs of set pixels (`x`, `y`, `width` in tile units), in reading order. */
|
|
908
|
+
declare function patternRuns(preset: unknown): {
|
|
909
|
+
x: number;
|
|
910
|
+
y: number;
|
|
911
|
+
width: number;
|
|
912
|
+
}[] | undefined;
|
|
277
913
|
|
|
278
914
|
/**
|
|
279
915
|
* Footnotes, citations and captions (RR-34).
|
|
280
916
|
*
|
|
281
917
|
* - A TextRun may `cite` one or more ids of the deck's top-level `references`, or carry an inline
|
|
282
|
-
* `footnote`. Markers are numbered per deck in reading order of first use (slides, then regions,
|
|
918
|
+
* `footnote`. Markers are numbered per deck in reading order of first use (slides: the heading group tag, title, subtitle, then regions,
|
|
283
919
|
* blocks and runs); the same reference id keeps its number, every footnote takes a new one. A run's
|
|
284
920
|
* marker is a superscript fragment drawn directly after the run (`1`, or `1,2` for several ids);
|
|
285
921
|
* `richTextLayouter` emits it from `RichTextOptions.citationMarker`, so it wraps with its word and
|
|
@@ -345,8 +981,9 @@ interface AnnotatedRun {
|
|
|
345
981
|
footnote?: RichText;
|
|
346
982
|
}
|
|
347
983
|
/**
|
|
348
|
-
* Visit every rich-text run of a slide that can carry a citation (
|
|
349
|
-
* in reading order:
|
|
984
|
+
* Visit every rich-text run of a slide that can carry a citation (the slide tag, title and subtitle, then
|
|
985
|
+
* text, bullets, list item and quote runs), in reading order: the heading group first (tag, title, subtitle),
|
|
986
|
+
* then promoted regions (sorted keys), then blocks (recursively), then the root payload.
|
|
350
987
|
* `basePath` is the slide's dotted path (`slides.3`).
|
|
351
988
|
*/
|
|
352
989
|
declare function walkCitationRuns(slide: unknown, basePath: string, visit: (entry: AnnotatedRun) => void): void;
|
|
@@ -490,7 +1127,8 @@ interface ReferencesSlideOptions {
|
|
|
490
1127
|
declare function referencesSlide(presentation: unknown, options?: ReferencesSlideOptions): Record<string, unknown>;
|
|
491
1128
|
|
|
492
1129
|
/** The chart constructs the engines draw. Every catalog chart type id resolves to one (see `chartOptionTarget`). */
|
|
493
|
-
|
|
1130
|
+
/** `combo` (FA-15) draws clustered columns and line series in one plot, the lines optionally on a secondary value axis. */
|
|
1131
|
+
type ChartOptionKind = 'bar' | 'line' | 'area' | 'pie' | 'doughnut' | 'scatter' | 'radar' | 'treemap' | 'histogram' | 'pareto' | 'box' | 'waterfall' | 'funnel' | 'map' | 'combo';
|
|
494
1132
|
interface ChartOptionTarget {
|
|
495
1133
|
kind: ChartOptionKind;
|
|
496
1134
|
/** Stacked and 100% stacked columns, bars, lines and areas: their data labels have no outside-end position. */
|
|
@@ -501,7 +1139,7 @@ type ChartLabelContent = 'category' | 'value' | 'percent';
|
|
|
501
1139
|
type ChartLabelPosition = 'center' | 'inside-end' | 'inside-base' | 'outside-end' | 'above' | 'below' | 'left' | 'right';
|
|
502
1140
|
interface ChartOptionDiagnostic {
|
|
503
1141
|
code: 'chart-option-adapted';
|
|
504
|
-
/** The option that was adapted: `axisTitles.category`, `axisTitles.value`, `legend`, `dataLabels`, `dataLabels.content`, `dataLabels.position` or `
|
|
1142
|
+
/** The option that was adapted: `axisTitles.category`, `axisTitles.value`, `axisTitles.secondary`, `legend`, `dataLabels`, `dataLabels.content`, `dataLabels.position`, `dataLabels.separator`, `line`, `secondaryAxis`, `highlight.series` or `highlight.categories`. */
|
|
505
1143
|
option: string;
|
|
506
1144
|
reason: 'unsupported-type' | 'unsupported-content' | 'unsupported-position';
|
|
507
1145
|
message: string;
|
|
@@ -509,34 +1147,57 @@ interface ChartOptionDiagnostic {
|
|
|
509
1147
|
interface ResolvedChartDataLabels {
|
|
510
1148
|
/** Canonical order: category, value, percent. Never empty. */
|
|
511
1149
|
content: ChartLabelContent[];
|
|
512
|
-
/** The concrete position, or null for a construct whose labels have no position choice (area, doughnut, radar, treemap). */
|
|
1150
|
+
/** The concrete position, or null for a construct whose labels have no position choice (area, doughnut, radar, treemap). On a combo chart, the column series' position. */
|
|
513
1151
|
position: ChartLabelPosition | null;
|
|
1152
|
+
/** Combo charts only: the concrete position of the line series' labels (`position` is the column series' one). */
|
|
1153
|
+
linePosition?: ChartLabelPosition;
|
|
514
1154
|
separator: string;
|
|
515
1155
|
}
|
|
1156
|
+
/** FA-14: the series and category names `chart.highlight` keeps for a chart type (what the type cannot highlight is dropped, with a diagnostic). */
|
|
1157
|
+
interface ResolvedChartHighlight {
|
|
1158
|
+
/** Series (column) names whose marks take the accent colour. */
|
|
1159
|
+
series: string[];
|
|
1160
|
+
/** Category (row label) names whose marks take the accent colour. */
|
|
1161
|
+
categories: string[];
|
|
1162
|
+
}
|
|
516
1163
|
interface ResolvedChartOptions {
|
|
517
1164
|
/** True when the chart carries at least one option (after adaptation); false means every engine keeps today's output. */
|
|
518
1165
|
active: boolean;
|
|
1166
|
+
/** `secondary` titles the secondary value axis of a combo chart. */
|
|
519
1167
|
axisTitles: {
|
|
520
1168
|
category?: string;
|
|
521
1169
|
value?: string;
|
|
1170
|
+
secondary?: string;
|
|
522
1171
|
};
|
|
523
1172
|
/** Undefined = no legend option: each engine keeps its default (a right legend on multi-series, pie and doughnut charts). */
|
|
524
1173
|
legend?: ChartLegendPosition;
|
|
525
1174
|
dataLabels?: ResolvedChartDataLabels;
|
|
526
1175
|
/** True when `dataLabels: false` switches off the labels a construct draws by default (funnel values, treemap category names). */
|
|
527
1176
|
dataLabelsOff?: boolean;
|
|
1177
|
+
/**
|
|
1178
|
+
* FA-14: the names `chart.highlight` keeps; undefined when the chart has no highlight or its type can highlight nothing it names.
|
|
1179
|
+
* It does not make `active` true: a highlight changes the colours of marks, never the geometry or the reserved space.
|
|
1180
|
+
*/
|
|
1181
|
+
highlight?: ResolvedChartHighlight;
|
|
528
1182
|
diagnostics: ChartOptionDiagnostic[];
|
|
529
1183
|
}
|
|
530
1184
|
interface ChartOptionSupport {
|
|
1185
|
+
/** `secondary`: the construct can have a secondary value axis (a combo chart whose `secondaryAxis` names a line series). */
|
|
531
1186
|
axisTitles: {
|
|
532
1187
|
category: boolean;
|
|
533
1188
|
value: boolean;
|
|
1189
|
+
secondary: boolean;
|
|
534
1190
|
};
|
|
535
1191
|
legend: boolean;
|
|
1192
|
+
/** FA-14: what `chart.highlight` can name: series (a whole series' marks) and categories (one category's marks, or a pie slice). */
|
|
1193
|
+
highlight: {
|
|
1194
|
+
series: boolean;
|
|
1195
|
+
categories: boolean;
|
|
1196
|
+
};
|
|
536
1197
|
dataLabels: {
|
|
537
1198
|
supported: boolean;
|
|
538
1199
|
content: readonly ChartLabelContent[];
|
|
539
|
-
/** Empty when labels have no position choice. */
|
|
1200
|
+
/** Empty when labels have no position choice. A combo chart lists the column positions, then the line-only ones. */
|
|
540
1201
|
positions: readonly ChartLabelPosition[];
|
|
541
1202
|
/** The position `auto` resolves to; null with no positions. */
|
|
542
1203
|
defaultPosition: ChartLabelPosition | null;
|
|
@@ -546,7 +1207,7 @@ interface ChartOptionSupport {
|
|
|
546
1207
|
}
|
|
547
1208
|
/** What a chart construct can show. The table the docs, the validator, the preview and the exporter all follow. */
|
|
548
1209
|
declare function chartOptionSupport(target: ChartOptionTarget): ChartOptionSupport;
|
|
549
|
-
/** The option target for a catalog chart type id
|
|
1210
|
+
/** The option target for a catalog chart type id; undefined for an id outside the catalog. */
|
|
550
1211
|
declare function chartOptionTarget(typeId: unknown): ChartOptionTarget | undefined;
|
|
551
1212
|
declare const DEFAULT_CHART_LABEL_SEPARATOR = ", ";
|
|
552
1213
|
/**
|
|
@@ -564,6 +1225,53 @@ declare function chartLabelText(parts: {
|
|
|
564
1225
|
value?: string;
|
|
565
1226
|
percent?: string;
|
|
566
1227
|
}, content: readonly ChartLabelContent[], separator?: string): string;
|
|
1228
|
+
/** Which marks of a chart a highlight names, in the order of the resolved chart data. */
|
|
1229
|
+
interface ChartHighlightMarks {
|
|
1230
|
+
/** One flag per plotted series (the columns after the category and X columns): its marks are highlighted. */
|
|
1231
|
+
series: boolean[];
|
|
1232
|
+
/** One flag per data row: the marks of that category are highlighted. */
|
|
1233
|
+
categories: boolean[];
|
|
1234
|
+
}
|
|
1235
|
+
/**
|
|
1236
|
+
* FA-14: which series and categories of a chart are highlighted. `highlight` is `resolveChartOptions(...).highlight` and `data` the
|
|
1237
|
+
* chart's `resolveChartData` result (its `columns`, `hasX` and `rows`). A mark is highlighted when its series OR its category is
|
|
1238
|
+
* named: a column or bar of series s in row i takes the accent colour when `series[s] || categories[i]`; every other mark takes the muted
|
|
1239
|
+
* colour (`chartHighlightColors`). Category names match the row labels as text (a number label `2024` matches `"2024"`, an empty label
|
|
1240
|
+
* matches `""`), every row that carries the label. Returns undefined when there is no highlight or it names nothing the chart plots (a
|
|
1241
|
+
* name that matches no column or label is the `chart-highlight-unknown-name` validation error), so the engines then draw the chart as if
|
|
1242
|
+
* it had none.
|
|
1243
|
+
*/
|
|
1244
|
+
declare function chartHighlightMarks(highlight: ResolvedChartHighlight | undefined, data: {
|
|
1245
|
+
columns: readonly string[];
|
|
1246
|
+
hasX?: boolean;
|
|
1247
|
+
rows: readonly (readonly unknown[])[];
|
|
1248
|
+
}): ChartHighlightMarks | undefined;
|
|
1249
|
+
|
|
1250
|
+
/** Placeholder kinds that hold slide content (everything except the three heading kinds). */
|
|
1251
|
+
declare const LAYOUT_BODY_KINDS: readonly ["text", "list", "image", "video", "chart", "table", "code", "metric", "quote", "timeline"];
|
|
1252
|
+
type LayoutBodyKind = typeof LAYOUT_BODY_KINDS[number];
|
|
1253
|
+
/** What a layout record holds, derived from its placeholders. */
|
|
1254
|
+
interface LayoutContent {
|
|
1255
|
+
/** The most frequent body placeholder kind (a tie goes to the kind that appears first in placeholder order), or 'title' when the layout has no body placeholder. */
|
|
1256
|
+
kind: LayoutBodyKind | 'title';
|
|
1257
|
+
/** The number of body placeholders. */
|
|
1258
|
+
count: number;
|
|
1259
|
+
/** Which heading placeholders the layout has. */
|
|
1260
|
+
heading: {
|
|
1261
|
+
title: boolean;
|
|
1262
|
+
subtitle: boolean;
|
|
1263
|
+
tag: boolean;
|
|
1264
|
+
};
|
|
1265
|
+
}
|
|
1266
|
+
/**
|
|
1267
|
+
* Derives what a layout holds from its `placeholders`, which are the single source of truth: the content kind,
|
|
1268
|
+
* the number of body regions and which headings it has are never stored on the record.
|
|
1269
|
+
*/
|
|
1270
|
+
declare function layoutContent(record: {
|
|
1271
|
+
placeholders?: ReadonlyArray<{
|
|
1272
|
+
type?: string;
|
|
1273
|
+
} | null | undefined>;
|
|
1274
|
+
} | null | undefined): LayoutContent;
|
|
567
1275
|
|
|
568
1276
|
/** Portable layout geometry. No fonts, DOM, renderer, or network dependencies. */
|
|
569
1277
|
interface Composition {
|
|
@@ -599,6 +1307,8 @@ interface TextStyle {
|
|
|
599
1307
|
italic?: boolean;
|
|
600
1308
|
path?: string;
|
|
601
1309
|
fontFace?: FontFaceSelection;
|
|
1310
|
+
/** BCP-47 tag of a run that overrides the deck language (`TextRun.lang`); absent when the deck language applies. */
|
|
1311
|
+
lang?: string;
|
|
602
1312
|
}
|
|
603
1313
|
/** Role families. `accent` is present only when the scheme defines an accent role; the slide tag and quote body use it. */
|
|
604
1314
|
interface FontFamilies {
|
|
@@ -607,37 +1317,11 @@ interface FontFamilies {
|
|
|
607
1317
|
code: string;
|
|
608
1318
|
accent?: string;
|
|
609
1319
|
}
|
|
610
|
-
/**
|
|
611
|
-
*
|
|
612
|
-
declare const DEFAULT_FONT_SCHEME = "aptos";
|
|
613
|
-
/** Reported when a font-scheme id matches no inline or bundled record. Every engine then uses the
|
|
614
|
-
* DEFAULT_FONT_SCHEME record as the base, with any sibling overrides on top. */
|
|
615
|
-
interface FontSchemeDiagnostic {
|
|
616
|
-
code: "unresolved-font-scheme";
|
|
617
|
-
/** Where the unresolved id is written: `slides.N.design.fontScheme`, `design.fontScheme`, or the
|
|
618
|
-
* `design.theme` reference whose record names it. */
|
|
619
|
-
path: string;
|
|
620
|
-
message: string;
|
|
621
|
-
/** The unresolved font-scheme id. */
|
|
622
|
-
id: string;
|
|
623
|
-
/** The font scheme used instead (DEFAULT_FONT_SCHEME). */
|
|
624
|
-
fallback: string;
|
|
625
|
-
}
|
|
626
|
-
interface ResolvedFontScheme {
|
|
627
|
-
scheme: Record<string, unknown>;
|
|
628
|
-
diagnostic?: FontSchemeDiagnostic;
|
|
629
|
-
}
|
|
630
|
-
/** Resolve a font-scheme reference the same way in every engine. A string id, or the `id` of an object
|
|
631
|
-
* reference, resolves through `lookup` (inline records, then bundled or host catalogs). An unresolved id
|
|
632
|
-
* returns a diagnostic, and the DEFAULT_FONT_SCHEME record becomes the base, so preview and export use
|
|
633
|
-
* the same families. An object without `id` is an inline scheme on the same base. Sibling fields on an
|
|
634
|
-
* object reference override the base per key. */
|
|
635
|
-
declare function resolveFontSchemeReference(reference: unknown, lookup: (id: string) => unknown, path?: string): ResolvedFontScheme;
|
|
636
|
-
/** Resolve role families from an already-merged font scheme (catalog record plus design overrides).
|
|
637
|
-
* A scheme that names no heading or body family gets the DEFAULT_FONT_SCHEME families (Aptos Display, Aptos).
|
|
1320
|
+
/** Resolve role families from an already-merged font scheme (the resolved record plus design overrides).
|
|
1321
|
+
* A scheme that names no heading or body family gets the engine default families (Aptos Display, Aptos).
|
|
638
1322
|
* `code` comes from the scheme's `code` role, which catalog records such as consolas and courier-new
|
|
639
1323
|
* carry; otherwise it is Roboto Mono. Heading and body families are never reused for code.
|
|
640
|
-
* `accent` is returned only when the scheme defines an `accent` role (a family string
|
|
1324
|
+
* `accent` is returned only when the scheme defines an `accent` role (a family name string);
|
|
641
1325
|
* the slide tag and the quote body use it in place of the body and heading families. */
|
|
642
1326
|
declare function resolveFontFamilies(input: unknown): FontFamilies;
|
|
643
1327
|
interface TextMeasurement {
|
|
@@ -647,6 +1331,14 @@ interface TextMeasurement {
|
|
|
647
1331
|
* Null means no outline. These are not hinted/antialiased raster bounds. */
|
|
648
1332
|
outlineBounds?: (text: string, fontSize: number, style: TextStyle) => LayoutBox | null;
|
|
649
1333
|
}
|
|
1334
|
+
/**
|
|
1335
|
+
* The fonts handle every deck-level verb takes as `{ fonts }`. Core reads only `textMeasurement`: how wide the
|
|
1336
|
+
* host's real fonts draw a string. The renderer's `loadFonts()` returns a richer handle (embedded fonts, font
|
|
1337
|
+
* files, registry, manifest) that extends this one, so the same object goes to every verb.
|
|
1338
|
+
*/
|
|
1339
|
+
interface Fonts {
|
|
1340
|
+
textMeasurement?: TextMeasurement;
|
|
1341
|
+
}
|
|
650
1342
|
type MeasureTextWidth = (text: string, fontSize: number) => number;
|
|
651
1343
|
declare function resolveTextStyle(style: TextStyle, measurement?: TextMeasurement): TextStyle;
|
|
652
1344
|
declare function textWidthMeasurer(style: TextStyle, measurement?: TextMeasurement): MeasureTextWidth;
|
|
@@ -721,47 +1413,96 @@ interface ComposedItem {
|
|
|
721
1413
|
* the media box after the band is reserved; `caption.box` is the band inside the same region.
|
|
722
1414
|
*/
|
|
723
1415
|
caption?: ComposedCaption;
|
|
1416
|
+
/** Picture geometry and treatments of an image item (`field` image); absent on every other item. */
|
|
1417
|
+
image?: ComposedImage;
|
|
724
1418
|
/** Effective container settings, including inherited readability constraints. */
|
|
725
1419
|
composition: Composition;
|
|
726
1420
|
/**
|
|
727
1421
|
* Resolved horizontal text alignment for this item: titleAlignment for the
|
|
728
|
-
* title, contentAlignment for every other item (slide design,
|
|
729
|
-
*
|
|
1422
|
+
* title, contentAlignment for every other item (slide design, deck design, layout design,
|
|
1423
|
+
* then left). Engines anchor native and preview text to this value.
|
|
730
1424
|
*/
|
|
731
1425
|
alignment: 'left' | 'center' | 'right';
|
|
732
1426
|
}
|
|
1427
|
+
/** How a picture fills its frame: cover crops around the focus, contain shows all of it, stretch scales it to the frame. */
|
|
1428
|
+
type ImageFit = 'cover' | 'contain' | 'stretch';
|
|
1429
|
+
/** A background also tiles: the picture repeats at its own size from the canvas's top-left corner. */
|
|
1430
|
+
type BackgroundImageFit = ImageFit | 'tile';
|
|
1431
|
+
/** A slide or frame edge, physical (already mirrored in a right-to-left deck). */
|
|
1432
|
+
type ImageEdge = 'left' | 'right' | 'top' | 'bottom';
|
|
1433
|
+
/** A point of a picture as fractions of its width and height from the top-left corner; the default is { x: 0.5, y: 0.5 }. */
|
|
1434
|
+
interface ImageFocus {
|
|
1435
|
+
x: number;
|
|
1436
|
+
y: number;
|
|
1437
|
+
}
|
|
1438
|
+
/** A frame mask. path follows the ECMA-376 preset formula for preset/adjust exactly, in reference pixels. */
|
|
1439
|
+
interface ImageShape {
|
|
1440
|
+
kind: 'rectangle' | 'rounded' | 'circle' | 'hexagon';
|
|
1441
|
+
preset: 'rect' | 'roundRect' | 'ellipse' | 'hexagon';
|
|
1442
|
+
/** DrawingML avLst guide values (for example adj and vf), in 1/100000 units. */
|
|
1443
|
+
adjust: Record<string, number>;
|
|
1444
|
+
path: string;
|
|
1445
|
+
}
|
|
1446
|
+
/** One overlay, shared by image backgrounds and image blocks: drawn directly above its picture, beneath content. */
|
|
1447
|
+
interface ComposedOverlay {
|
|
1448
|
+
/** OPF path of the overlay value, for example `slides.3.design.background.overlay` or `slides.3.blocks.0.overlay`. */
|
|
1449
|
+
path: string;
|
|
1450
|
+
/** ColorRef as authored (hex, eight-digit hex alpha, scheme slot or role, `var:<id>`); engines resolve it. */
|
|
1451
|
+
color: unknown;
|
|
1452
|
+
/** Fill opacity, 0 to 1, multiplied with any eight-digit hex alpha. */
|
|
1453
|
+
opacity: number;
|
|
1454
|
+
/** Physical edge of a band overlay; absent when the overlay covers the whole frame. */
|
|
1455
|
+
edge?: ImageEdge;
|
|
1456
|
+
/** Area covered: the whole frame, or the edge band. */
|
|
1457
|
+
box: LayoutBox;
|
|
1458
|
+
/** Outline to fill: the frame's shape for a whole-frame overlay, a rectangle for a band. */
|
|
1459
|
+
shape: ImageShape;
|
|
1460
|
+
}
|
|
1461
|
+
/** Where the whole picture lands for a fit, for a picture whose aspect ratio is known (see `fitImage`). */
|
|
1462
|
+
interface ImageFitPlacement {
|
|
1463
|
+
/** The whole picture's rectangle in slide coordinates: past the frame for cover, inside it for contain, the frame for stretch. */
|
|
1464
|
+
image: LayoutBox;
|
|
1465
|
+
/** DrawingML srcRect insets as fractions of the picture (positive crops, negative pads); all 0 for stretch. */
|
|
1466
|
+
crop: {
|
|
1467
|
+
left: number;
|
|
1468
|
+
top: number;
|
|
1469
|
+
right: number;
|
|
1470
|
+
bottom: number;
|
|
1471
|
+
};
|
|
1472
|
+
}
|
|
1473
|
+
/** A placed image block's band (FA-22): the image bleeds to `edge` and the rest of the slide composes beside it. */
|
|
1474
|
+
interface ComposedPlacement {
|
|
1475
|
+
/** Physical edge: in a right-to-left deck an authored `left` (the start side) is `right` here. */
|
|
1476
|
+
edge: ImageEdge;
|
|
1477
|
+
/** Share of the slide width (left, right) or height (top, bottom), 0.1 to 0.9. */
|
|
1478
|
+
size: number;
|
|
1479
|
+
/** True when the frame sits inside the slide padding instead of edge to edge. */
|
|
1480
|
+
inset: boolean;
|
|
1481
|
+
/** Where the placement is written: `slides.N.blocks.I.placement`, or `layout.placeholders.P.placement` for a layout image placeholder's. */
|
|
1482
|
+
path: string;
|
|
1483
|
+
}
|
|
733
1484
|
/**
|
|
734
|
-
*
|
|
735
|
-
*
|
|
736
|
-
*
|
|
737
|
-
*
|
|
1485
|
+
* Resolved picture geometry of an image item (FA-22): every composed item with `field` 'image' carries one. Engines
|
|
1486
|
+
* draw the picture in `box` with `fit` and `focus`, clipped to `shape`, with `recolor` and `opacity` on its pixels
|
|
1487
|
+
* only, then the `border` on the shape outline, then the `overlay`. This is the paint order and the treatment code
|
|
1488
|
+
* 0.14's slide image used.
|
|
738
1489
|
*/
|
|
739
|
-
interface
|
|
740
|
-
/**
|
|
741
|
-
path: string;
|
|
742
|
-
/** Path of the drawn asset value: the design value, or the slide's root image payload it replaced. */
|
|
743
|
-
sourcePath: string;
|
|
744
|
-
/** Asset value (string or Asset object) that engines resolve like any other image. */
|
|
745
|
-
value: unknown;
|
|
746
|
-
position: 'background' | 'top' | 'bottom' | 'left' | 'right';
|
|
747
|
-
/** crop covers the frame (centered); fit shows the whole image centered inside it. */
|
|
748
|
-
fill: 'crop' | 'fit';
|
|
749
|
-
/** Band allocated to the image. */
|
|
1490
|
+
interface ComposedImage {
|
|
1491
|
+
/** Allocated region, equal to the item's box: the flow cell (after any card padding and caption band) or the placement band. */
|
|
750
1492
|
region: LayoutBox;
|
|
751
|
-
/**
|
|
1493
|
+
/** Picture frame inside the region: the band inside the slide padding for an inset placement, then the largest centered box with `aspectRatio` (a circle uses 1). */
|
|
752
1494
|
box: LayoutBox;
|
|
753
|
-
/**
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
alt?: string;
|
|
1495
|
+
/** The block's own fit, else the effective design.imageFit, else cover. */
|
|
1496
|
+
fit: ImageFit;
|
|
1497
|
+
focus: ImageFocus;
|
|
757
1498
|
/** Mask on the frame: a DrawingML preset with its guide values, and the same outline as an SVG path. */
|
|
758
|
-
shape:
|
|
759
|
-
/** Line centered on the shape outline; width in reference pixels
|
|
1499
|
+
shape: ImageShape;
|
|
1500
|
+
/** Line centered on the shape outline; width in reference pixels, already scaled to the canvas. */
|
|
760
1501
|
border?: {
|
|
761
1502
|
color: unknown;
|
|
762
1503
|
width: number;
|
|
763
1504
|
};
|
|
764
|
-
/**
|
|
1505
|
+
/** Picture opacity below 1; the border and overlay are not affected. */
|
|
765
1506
|
opacity?: number;
|
|
766
1507
|
/** Luminance-based recolor (Rec. 601 weights on sRGB values). */
|
|
767
1508
|
recolor?: {
|
|
@@ -771,21 +1512,41 @@ interface ComposedSlideImage {
|
|
|
771
1512
|
dark: unknown;
|
|
772
1513
|
light: unknown;
|
|
773
1514
|
};
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
shape: SlideImageShape;
|
|
780
|
-
};
|
|
1515
|
+
overlay?: ComposedOverlay;
|
|
1516
|
+
/** Present on a placed block: the band along a slide edge that `region` is. */
|
|
1517
|
+
placement?: ComposedPlacement;
|
|
1518
|
+
/** Present when core reads the picture's aspect ratio (a data URI, or an `asset:` reference to one); otherwise call `fitImage` with the host's. */
|
|
1519
|
+
picture?: ImageFitPlacement;
|
|
781
1520
|
}
|
|
782
|
-
/**
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
1521
|
+
/**
|
|
1522
|
+
* The slide's picture background (FA-22): the effective `design.background` (the slide's, then the deck's, then
|
|
1523
|
+
* `ComposeSlideOptions.themeBackground`) when it is an image, in object form or as an image-source string. It fills
|
|
1524
|
+
* the whole canvas behind everything and never moves content. Paint order: the colour scheme's default slide
|
|
1525
|
+
* background, the picture (with `recolor` and `opacity` on its pixels), the overlay, then furniture and content.
|
|
1526
|
+
*/
|
|
1527
|
+
interface ComposedBackgroundImage {
|
|
1528
|
+
/** Where the background is written: `slides.N.design.background`, `design.background`, or `theme` (ComposeSlideOptions.themeBackground). */
|
|
788
1529
|
path: string;
|
|
1530
|
+
/** Image source as authored: `asset:<id>`, an https URL, a data URI or a relative path. */
|
|
1531
|
+
src: string;
|
|
1532
|
+
alt?: string;
|
|
1533
|
+
fit: BackgroundImageFit;
|
|
1534
|
+
focus: ImageFocus;
|
|
1535
|
+
/** The whole canvas. */
|
|
1536
|
+
box: LayoutBox;
|
|
1537
|
+
/** Picture opacity below 1; the overlay keeps its own. */
|
|
1538
|
+
opacity?: number;
|
|
1539
|
+
/** Luminance-based recolor of the pixels (Rec. 601 weights on sRGB values), as on an image block. */
|
|
1540
|
+
recolor?: {
|
|
1541
|
+
type: 'grayscale';
|
|
1542
|
+
} | {
|
|
1543
|
+
type: 'duotone';
|
|
1544
|
+
dark: unknown;
|
|
1545
|
+
light: unknown;
|
|
1546
|
+
};
|
|
1547
|
+
overlay?: ComposedOverlay;
|
|
1548
|
+
/** Present when core reads the picture's aspect ratio and the fit is not tile; otherwise call `fitImage` with the host's. */
|
|
1549
|
+
picture?: ImageFitPlacement;
|
|
789
1550
|
}
|
|
790
1551
|
/** Which logo variant family a consumer asks for: the full lockup, a square mark, or a stacked lockup. */
|
|
791
1552
|
type LogoSlot = 'lockup' | 'icon' | 'stacked';
|
|
@@ -882,8 +1643,14 @@ interface SlideComposition {
|
|
|
882
1643
|
composition: Composition;
|
|
883
1644
|
/** Repeated furniture is measured separately from body pagination leaves. */
|
|
884
1645
|
furniture?: FurnitureLayout;
|
|
885
|
-
/**
|
|
886
|
-
|
|
1646
|
+
/**
|
|
1647
|
+
* Effective shared design hints of this slide: slide design, then deck design, then the layout record's design,
|
|
1648
|
+
* per key. Renderers and exporters read titleAlignment, contentAlignment, contentBox and
|
|
1649
|
+
* listBullet here instead of re-deriving them from the document; image items carry their resolved fit in `image.fit`.
|
|
1650
|
+
*/
|
|
1651
|
+
design: ResolvedDesignHints;
|
|
1652
|
+
/** Picture background of this slide; absent when the effective background is not an image. */
|
|
1653
|
+
backgroundImage?: ComposedBackgroundImage;
|
|
887
1654
|
/** Deck logo on a cover or section slide; absent on content slides and when no logo resolves. */
|
|
888
1655
|
logo?: ComposedLogo;
|
|
889
1656
|
/**
|
|
@@ -902,14 +1669,18 @@ interface ComposeSlideOptions {
|
|
|
902
1669
|
design?: {
|
|
903
1670
|
header?: unknown;
|
|
904
1671
|
footer?: unknown;
|
|
905
|
-
|
|
906
|
-
|
|
1672
|
+
background?: unknown;
|
|
1673
|
+
imageFit?: unknown;
|
|
907
1674
|
logo?: unknown;
|
|
908
1675
|
contentDirection?: unknown;
|
|
909
1676
|
chartPrimary?: unknown;
|
|
910
1677
|
listBullet?: unknown;
|
|
1678
|
+
titleAlignment?: unknown;
|
|
1679
|
+
contentAlignment?: unknown;
|
|
1680
|
+
contentBox?: unknown;
|
|
911
1681
|
};
|
|
912
1682
|
organization?: unknown;
|
|
1683
|
+
speaker?: unknown;
|
|
913
1684
|
slides?: unknown;
|
|
914
1685
|
catalogs?: unknown;
|
|
915
1686
|
references?: unknown;
|
|
@@ -921,12 +1692,11 @@ interface ComposeSlideOptions {
|
|
|
921
1692
|
*/
|
|
922
1693
|
darkBackground?: boolean;
|
|
923
1694
|
/**
|
|
924
|
-
*
|
|
925
|
-
*
|
|
926
|
-
*
|
|
927
|
-
* as its raw value, as the Socials contract specifies.
|
|
1695
|
+
* The resolved theme's `background`, the lowest level of the background chain (the slide's design.background, then
|
|
1696
|
+
* the deck's, then this). Only an image background produces geometry (`SlideComposition.backgroundImage`).
|
|
1697
|
+
* `resolveSlideContext` passes it.
|
|
928
1698
|
*/
|
|
929
|
-
|
|
1699
|
+
themeBackground?: unknown;
|
|
930
1700
|
/** One-based displayed number; source paths still use slideIndex. */
|
|
931
1701
|
slideNumber?: number;
|
|
932
1702
|
/** Displayed slide count for `{total}` in slideNumberFormat. Defaults to `presentation.slides.length`. */
|
|
@@ -936,7 +1706,7 @@ interface ComposeSlideOptions {
|
|
|
936
1706
|
* consults a clock; without this option a current date is reported as unresolved content.
|
|
937
1707
|
*/
|
|
938
1708
|
date?: string;
|
|
939
|
-
|
|
1709
|
+
fontFamilies?: Partial<FontFamilies>;
|
|
940
1710
|
/**
|
|
941
1711
|
* Deck base direction (RR-05). Defaults to the direction of the presentation language's script. In a right-to-left deck
|
|
942
1712
|
* composition mirrors the arrangement (the first column or `left` region is drawn at the right, slide images, logos and
|
|
@@ -944,12 +1714,12 @@ interface ComposeSlideOptions {
|
|
|
944
1714
|
* reports each paragraph's direction. Alignment stays logical: `left` is the start edge.
|
|
945
1715
|
*/
|
|
946
1716
|
direction?: TextDirection;
|
|
947
|
-
/**
|
|
1717
|
+
/** Deck-level alignment a host resolved itself. It ranks with `presentation.design`, above the layout record's design and below the slide's own design; hosts normally omit it because composition reads `presentation.design` and the layout. */
|
|
948
1718
|
contentAlignment?: 'left' | 'center' | 'right';
|
|
949
1719
|
titleAlignment?: 'left' | 'center' | 'right';
|
|
950
1720
|
/** Unscaled reference pixels around provided vector outlines; defaults to 1 for body text and 2 for furniture. Explicit values apply to both. */
|
|
951
1721
|
textRasterPadding?: number;
|
|
952
|
-
/**
|
|
1722
|
+
/** Deck-level body cards a host resolved itself, ranked like contentAlignment. A slide's explicit design.contentBox overrides this value. */
|
|
953
1723
|
contentBox?: boolean;
|
|
954
1724
|
textMeasurement?: TextMeasurement;
|
|
955
1725
|
width?: number;
|
|
@@ -969,7 +1739,25 @@ declare class OPFCompositionError extends Error {
|
|
|
969
1739
|
* Outline of a DrawingML preset in a box, following the ECMA-376 presetShapeDefinitions formulas:
|
|
970
1740
|
* roundRect (adj; ss = min(w,h), radius = ss*adj/100000), ellipse, and hexagon (adj, vf).
|
|
971
1741
|
*/
|
|
972
|
-
declare function
|
|
1742
|
+
declare function imageShape(kind: ImageShape['kind'], box: LayoutBox, cornerRadius?: number): ImageShape;
|
|
1743
|
+
/**
|
|
1744
|
+
* The shared fit math every engine uses (FA-22). `aspect` is the picture's width / height. cover scales the picture
|
|
1745
|
+
* to cover the frame and centers the focus point in the frame as far as the picture still covers it, so the focus
|
|
1746
|
+
* point always stays in view ({0.5, 0.5} is a center crop, {0, 0} keeps the top-left corner). contain scales it to
|
|
1747
|
+
* fit and centers it; stretch fills the frame exactly. Focus applies to cover only. `crop` holds the DrawingML
|
|
1748
|
+
* srcRect insets as fractions of the picture: positive insets crop, negative insets pad.
|
|
1749
|
+
*/
|
|
1750
|
+
declare function fitImage(frame: LayoutBox, fit: ImageFit, aspect: number, focus?: ImageFocus): ImageFitPlacement;
|
|
1751
|
+
/** The background a value describes when it is an image: the object form, or an image-source string (a cover image). */
|
|
1752
|
+
declare function imageBackground(value: unknown): {
|
|
1753
|
+
src: string;
|
|
1754
|
+
alt?: string;
|
|
1755
|
+
fit: BackgroundImageFit;
|
|
1756
|
+
focus: ImageFocus;
|
|
1757
|
+
opacity?: number;
|
|
1758
|
+
recolor?: unknown;
|
|
1759
|
+
overlay?: unknown;
|
|
1760
|
+
} | undefined;
|
|
973
1761
|
interface ResolveLogoOptions {
|
|
974
1762
|
/** Variant family to prefer; defaults to the full lockup. */
|
|
975
1763
|
slot?: LogoSlot;
|
|
@@ -993,7 +1781,7 @@ declare function resolveLogo(presentation: unknown, slide: unknown, options?: Re
|
|
|
993
1781
|
interface FurniturePartBase {
|
|
994
1782
|
kind: 'header' | 'footer';
|
|
995
1783
|
zone: 'left' | 'center' | 'right';
|
|
996
|
-
field: 'text' | 'image' | 'logo' | 'organization' | 'socials' | 'section' | 'slideNumber' | 'date';
|
|
1784
|
+
field: 'text' | 'image' | 'logo' | 'organization' | 'speaker' | 'socials' | 'section' | 'slideNumber' | 'date';
|
|
997
1785
|
/** Literal field or controlling flag, with the actual inherited/local path. */
|
|
998
1786
|
path: string;
|
|
999
1787
|
/** String/asset source, when different from a generated field's flag. */
|
|
@@ -1027,21 +1815,12 @@ interface FurnitureTextExtras {
|
|
|
1027
1815
|
fields?: FurnitureField[];
|
|
1028
1816
|
links?: FurnitureSocialLink[];
|
|
1029
1817
|
}
|
|
1030
|
-
/** Social-platform catalog fields used to format a profile. */
|
|
1031
|
-
interface SocialPlatformRecord {
|
|
1032
|
-
id: string;
|
|
1033
|
-
name?: string;
|
|
1034
|
-
baseUrl?: string;
|
|
1035
|
-
profileUrlPattern?: string;
|
|
1036
|
-
companyUrlPattern?: string;
|
|
1037
|
-
handlePrefix?: string;
|
|
1038
|
-
}
|
|
1039
1818
|
interface SocialProfile {
|
|
1040
1819
|
/** Single-line display text: the profile URL without an `https://` scheme, or the raw value. */
|
|
1041
1820
|
text: string;
|
|
1042
1821
|
/** Full http(s) URL when the value is one or its platform record formats one. */
|
|
1043
1822
|
href?: string;
|
|
1044
|
-
/** Whether
|
|
1823
|
+
/** Whether the platform's URL pattern formatted a handle. */
|
|
1045
1824
|
resolved: boolean;
|
|
1046
1825
|
}
|
|
1047
1826
|
interface FurnitureSocialLink extends SocialProfile {
|
|
@@ -1051,11 +1830,11 @@ interface FurnitureSocialLink extends SocialProfile {
|
|
|
1051
1830
|
sourcePath: string;
|
|
1052
1831
|
}
|
|
1053
1832
|
/**
|
|
1054
|
-
* Format one Socials value through
|
|
1833
|
+
* Format one Socials value through the engine's social-platform vocabulary (SOCIAL_PLATFORMS), deterministically and
|
|
1055
1834
|
* without network access. `owner` selects companyUrlPattern for organizations.
|
|
1056
1835
|
* URLs pass through; unknown platforms and unformattable values stay raw.
|
|
1057
1836
|
*/
|
|
1058
|
-
declare function resolveSocialProfile(platform: string, value: string,
|
|
1837
|
+
declare function resolveSocialProfile(platform: string, value: string, owner?: 'organization' | 'speaker'): SocialProfile;
|
|
1059
1838
|
interface FurnitureImagePart extends FurniturePartBase {
|
|
1060
1839
|
type: 'image';
|
|
1061
1840
|
image: unknown;
|
|
@@ -1091,9 +1870,12 @@ declare const FONT_SIZE_GRID_PER_PX = 75;
|
|
|
1091
1870
|
declare function snapFontSizeDown(px: number): number;
|
|
1092
1871
|
/** Smallest grid size not below `px`. Used for readability floors, so a floor is never undercut. */
|
|
1093
1872
|
declare function snapFontSizeUp(px: number): number;
|
|
1873
|
+
/** `text` is a string or TextRun[] (FA-10); attribution, role and source stay plain strings. */
|
|
1094
1874
|
interface QuoteContent {
|
|
1095
|
-
text: string;
|
|
1875
|
+
text: string | readonly (string | RichTextRun)[];
|
|
1096
1876
|
attribution?: string;
|
|
1877
|
+
role?: string;
|
|
1878
|
+
photo?: unknown;
|
|
1097
1879
|
source?: string;
|
|
1098
1880
|
}
|
|
1099
1881
|
/** Source and displayed-text ranges are half-open UTF-16 offsets. Added punctuation has no source range. */
|
|
@@ -1115,24 +1897,46 @@ interface QuoteTextPart {
|
|
|
1115
1897
|
minFontSize: number;
|
|
1116
1898
|
requestedStyle: TextStyle;
|
|
1117
1899
|
style: TextStyle;
|
|
1118
|
-
/**
|
|
1119
|
-
|
|
1900
|
+
/**
|
|
1901
|
+
* The displayed runs of a rich quote body (FA-10): the quote's TextRun[] with the quotation marks joined to its first and
|
|
1902
|
+
* last run, so a run's index and a citation marker's position never shift. Absent for a string body and for the footer.
|
|
1903
|
+
*/
|
|
1904
|
+
runs?: (string | RichTextRun)[];
|
|
1905
|
+
/** Absent when the available box is invalid; never fit against an invented one-pixel box. A rich body reports a RichTextFit. */
|
|
1906
|
+
fit?: TextFit | RichTextFit;
|
|
1120
1907
|
}
|
|
1121
1908
|
interface QuoteLayoutDiagnostic extends LayoutDiagnostic {
|
|
1122
|
-
reason: 'invalid-part-box' | 'part-outside-cell' | 'text-fit' | 'part-overlap';
|
|
1909
|
+
reason: 'invalid-part-box' | 'part-outside-cell' | 'text-fit' | 'part-overlap' | 'photo-fit';
|
|
1123
1910
|
parts: QuoteTextPart['role'][];
|
|
1124
1911
|
}
|
|
1912
|
+
/**
|
|
1913
|
+
* The attributed person's headshot (FA-12): a circle at the start edge of the footer row, beside the
|
|
1914
|
+
* attribution and role lines (the left in a left-to-right deck, the right in a right-to-left one). Its diameter is
|
|
1915
|
+
* three times the footer font size, so it follows the text when the footer shrinks toward the readability floor.
|
|
1916
|
+
*/
|
|
1917
|
+
interface QuotePhoto {
|
|
1918
|
+
/** Path of the photo value, `<quote path>.photo`. */
|
|
1919
|
+
path: string;
|
|
1920
|
+
/** Asset value (string or Asset object) that engines resolve like any other image; crop to cover the frame. */
|
|
1921
|
+
value: unknown;
|
|
1922
|
+
/** Square frame, in reference pixels. */
|
|
1923
|
+
box: LayoutBox;
|
|
1924
|
+
/** Circle mask: the `ellipse` DrawingML preset and the same outline as an SVG path, as an image block's shape 'circle'. */
|
|
1925
|
+
shape: ImageShape;
|
|
1926
|
+
}
|
|
1125
1927
|
interface QuoteLayout {
|
|
1126
1928
|
algorithm: 'quote-flow-v1';
|
|
1127
1929
|
textMeasurement: 'estimated' | 'provided';
|
|
1128
1930
|
parts: QuoteTextPart[];
|
|
1931
|
+
/** Present when the quote has a photo; absent otherwise, and then the layout is the footer-only layout. */
|
|
1932
|
+
photo?: QuotePhoto;
|
|
1129
1933
|
diagnostics: QuoteLayoutDiagnostic[];
|
|
1130
1934
|
overflow: boolean;
|
|
1131
1935
|
}
|
|
1132
1936
|
interface QuoteLayoutOptions {
|
|
1133
1937
|
/** Canvas short edge divided by 720. Insets retain the current 18 reference-pixel contract. */
|
|
1134
1938
|
scale?: number;
|
|
1135
|
-
|
|
1939
|
+
fontFamilies?: Partial<FontFamilies>;
|
|
1136
1940
|
/** Readability floor in reference pixels, before canvas scaling. */
|
|
1137
1941
|
minFontSize?: number;
|
|
1138
1942
|
overflow?: Composition['overflow'];
|
|
@@ -1140,6 +1944,8 @@ interface QuoteLayoutOptions {
|
|
|
1140
1944
|
textMeasurement?: TextMeasurement;
|
|
1141
1945
|
/** Deck direction; in a right-to-left deck every part fit reports its paragraphs' directions (RR-05). */
|
|
1142
1946
|
direction?: TextDirection;
|
|
1947
|
+
/** Marker text for a rich body run by its dotted path (`<path>.text.<runIndex>`); composeSlide supplies the deck numbering. */
|
|
1948
|
+
citationMarker?: (runPath: string) => string | undefined;
|
|
1143
1949
|
}
|
|
1144
1950
|
/**
|
|
1145
1951
|
* Allocate and measure quote body/footer space for composition, rendering and export. Callers must
|
|
@@ -1153,7 +1959,11 @@ interface MetricContent {
|
|
|
1153
1959
|
unit?: string;
|
|
1154
1960
|
delta?: string | number;
|
|
1155
1961
|
trend?: 'up' | 'down' | 'flat';
|
|
1962
|
+
/** Whether the change is good news; colours the trend arrow, trend word and delta text (see metricTrendColor). */
|
|
1963
|
+
sentiment?: MetricSentiment;
|
|
1156
1964
|
}
|
|
1965
|
+
/** The text fields of a metric, each laid out as its own part. `sentiment` is metadata, not text. */
|
|
1966
|
+
type MetricTextRole = Exclude<keyof MetricContent, 'sentiment'>;
|
|
1157
1967
|
/** Ranges address String(sourceValue), not the numeric token spelling in serialized JSON. */
|
|
1158
1968
|
interface MetricTextSource {
|
|
1159
1969
|
path: string;
|
|
@@ -1162,7 +1972,7 @@ interface MetricTextSource {
|
|
|
1162
1972
|
end: number;
|
|
1163
1973
|
}
|
|
1164
1974
|
interface MetricTextPart {
|
|
1165
|
-
role:
|
|
1975
|
+
role: MetricTextRole;
|
|
1166
1976
|
path: string;
|
|
1167
1977
|
text: string;
|
|
1168
1978
|
sources: MetricTextSource[];
|
|
@@ -1190,6 +2000,8 @@ interface MetricLayout {
|
|
|
1190
2000
|
alignment: 'left' | 'center' | 'right';
|
|
1191
2001
|
textMeasurement: 'estimated' | 'provided';
|
|
1192
2002
|
arrangement: 'inline-unit' | 'stacked';
|
|
2003
|
+
/** The metric's `sentiment`, passed through for metricTrendMark; omitted when the content has none. */
|
|
2004
|
+
sentiment?: MetricSentiment;
|
|
1193
2005
|
/** At most 48 arrangements; value fitting is bounded by 77 reference-size trials per arrangement. */
|
|
1194
2006
|
attempts: number;
|
|
1195
2007
|
parts: MetricTextPart[];
|
|
@@ -1208,10 +2020,13 @@ interface MetricLayoutOptions extends QuoteLayoutOptions {
|
|
|
1208
2020
|
* beside it from these accepted parts. Consumers must reuse these accepted parts and source ranges.
|
|
1209
2021
|
*/
|
|
1210
2022
|
declare function layoutMetric(value: string | number | MetricContent, box: LayoutBox, options?: MetricLayoutOptions): MetricLayout;
|
|
2023
|
+
/** Progress of a timeline event (FA-11). Engines draw it from the deck's colors; see `timelineMarkerShapes`. */
|
|
2024
|
+
type TimelineStatus = 'done' | 'current' | 'planned';
|
|
1211
2025
|
interface TimelineEvent {
|
|
1212
2026
|
when?: string;
|
|
1213
2027
|
what: string;
|
|
1214
2028
|
description?: string;
|
|
2029
|
+
status?: TimelineStatus;
|
|
1215
2030
|
}
|
|
1216
2031
|
interface TimelineContent {
|
|
1217
2032
|
name?: string;
|
|
@@ -1221,6 +2036,8 @@ interface TimelineContent {
|
|
|
1221
2036
|
interface TimelineTextPart {
|
|
1222
2037
|
role: 'name' | 'description' | 'when' | 'what' | 'event-description';
|
|
1223
2038
|
eventIndex?: number;
|
|
2039
|
+
/** The event's status; absent for metadata parts and for events without a status. */
|
|
2040
|
+
status?: TimelineStatus;
|
|
1224
2041
|
path: string;
|
|
1225
2042
|
text: string;
|
|
1226
2043
|
sources: {
|
|
@@ -1247,12 +2064,23 @@ interface TimelineLayout {
|
|
|
1247
2064
|
textMeasurement: 'provided' | 'estimated';
|
|
1248
2065
|
textOutlines: 'provided' | 'unavailable';
|
|
1249
2066
|
parts: TimelineTextPart[];
|
|
2067
|
+
/**
|
|
2068
|
+
* One marker per event. `radius` is the marker's own radius; `status` repeats the event's status
|
|
2069
|
+
* (absent without one). A 'current' marker also has `ring.radius`, 1.6 times `radius`, and a
|
|
2070
|
+
* 'current' or 'planned' marker has the `strokeWidth` of its outline and ring. Every radius is that
|
|
2071
|
+
* of the drawn ellipse; an outline is centered on the ellipse edge, so it reaches half a stroke beyond.
|
|
2072
|
+
*/
|
|
1250
2073
|
markers: {
|
|
1251
2074
|
path: string;
|
|
1252
2075
|
eventIndex: number;
|
|
1253
2076
|
x: number;
|
|
1254
2077
|
y: number;
|
|
1255
2078
|
radius: number;
|
|
2079
|
+
status?: TimelineStatus;
|
|
2080
|
+
ring?: {
|
|
2081
|
+
radius: number;
|
|
2082
|
+
};
|
|
2083
|
+
strokeWidth?: number;
|
|
1256
2084
|
}[];
|
|
1257
2085
|
connector: {
|
|
1258
2086
|
x1: number;
|
|
@@ -1347,6 +2175,10 @@ interface RichTextRun {
|
|
|
1347
2175
|
link?: string;
|
|
1348
2176
|
superscript?: boolean;
|
|
1349
2177
|
subscript?: boolean;
|
|
2178
|
+
/** Inline code: the run takes the design's code font (`RichTextOptions.codeFontFamily`) unless it names its own `fontFamily`. */
|
|
2179
|
+
code?: boolean;
|
|
2180
|
+
/** BCP-47 tag that overrides the deck language for this run; it reaches the fragment style as `style.lang`. */
|
|
2181
|
+
lang?: string;
|
|
1350
2182
|
/** RR-34: reference ids this run cites (a marker follows the run; the deck's `references` list resolves them). */
|
|
1351
2183
|
cite?: string | string[];
|
|
1352
2184
|
/** RR-34: an inline footnote for this run (a marker follows the run; the note is listed in the slide's footnote area). */
|
|
@@ -1385,6 +2217,8 @@ interface RichTextFit extends TextFit {
|
|
|
1385
2217
|
}
|
|
1386
2218
|
interface RichTextOptions {
|
|
1387
2219
|
style: TextStyle;
|
|
2220
|
+
/** The design's code family for runs with `code: true`; `monospace` when absent. */
|
|
2221
|
+
codeFontFamily?: string;
|
|
1388
2222
|
textMeasurement?: TextMeasurement;
|
|
1389
2223
|
/** Use one measured line advance for every line, as native table cells do. */
|
|
1390
2224
|
uniformLineHeight?: boolean;
|
|
@@ -1472,6 +2306,8 @@ interface TableLayoutOptions {
|
|
|
1472
2306
|
scale?: number;
|
|
1473
2307
|
minFontSize?: number;
|
|
1474
2308
|
fontFamily?: string;
|
|
2309
|
+
/** The design's code family for cell runs with `code: true`. */
|
|
2310
|
+
codeFontFamily?: string;
|
|
1475
2311
|
textMeasurement?: TextMeasurement;
|
|
1476
2312
|
path?: string;
|
|
1477
2313
|
/** RR-54: the document, for a dataset-backed table (`{ dataset }`): its headers, rows and column formats come from `datasets`. */
|
|
@@ -1527,4 +2363,4 @@ declare function resolveCanvasDimensions(input: unknown): {
|
|
|
1527
2363
|
height: number;
|
|
1528
2364
|
};
|
|
1529
2365
|
|
|
1530
|
-
export {
|
|
2366
|
+
export { type CodeHighlightColors as $, type AnnotatedRun as A, type BackgroundImageFit as B, type ComposeSlideOptions as C, CODE_SYNTAX_MIN_CONTRAST as D, ENGINE_DEFAULT_CHART_TYPES as E, type Fonts as F, type Caption as G, type CaptionAlignment as H, type CaptionObject as I, type CaptionPosition as J, type CaptionSettings as K, type LayoutDiagnostic as L, type MeasureTextWidth as M, type ChartHighlightMarks as N, type ChartLabelContent as O, type ChartLabelPosition as P, type ChartLegendPosition as Q, type ChartOptionDiagnostic as R, SOCIAL_PLATFORMS as S, type TextMeasurement as T, type ChartOptionKind as U, type ChartOptionSupport as V, type ChartOptionTarget as W, type CitationMarker as X, type CitationNote as Y, type CodeContent as Z, type CodeHighlightBand as _, CHART_TYPES as a, type ListBulletImage as a$, type CodeHighlightEntry as a0, type CodeHighlightIssue as a1, type CodeHighlightLines as a2, type CodeLayout as a3, type CodeLayoutDiagnostic as a4, type CodeLayoutOptions as a5, type CodeLineSegment as a6, type CodeLineSource as a7, type CodeRun as a8, type CodeSyntaxPalette as a9, DEFAULT_SLIDE_NUMBER_FORMAT as aA, DESIGN_HINT_KEYS as aB, type DeckCitations as aC, type DesignHintKey as aD, type DesignHintSource as aE, type DesignHints as aF, FONT_SIZE_GRID_PER_PX as aG, FOOTNOTE_MAX_RATIO as aH, type FontFaceSelection as aI, type FootnoteLayoutOptions as aJ, type FurnitureField as aK, type FurnitureImagePart as aL, type FurnitureLayout as aM, type FurniturePart as aN, type FurniturePartBase as aO, type FurnitureSocialLink as aP, type FurnitureTextExtras as aQ, type FurnitureTextPart as aR, type ImageEdge as aS, type ImageFit as aT, type ImageFitPlacement as aU, type ImageFocus as aV, type ImageShape as aW, LAYOUT_BODY_KINDS as aX, type LayoutBodyKind as aY, type LayoutBox as aZ, type LayoutContent as a_, type CodeSyntaxPaletteOptions as aa, type CodeSyntaxPaletteTheme as ab, type CodeTextFit as ac, type CodeTextPart as ad, type CodeToken as ae, type CodeTokenKind as af, type ComposedBackgroundImage as ag, type ComposedCaption as ah, type ComposedFlow as ai, type ComposedFootnoteEntry as aj, type ComposedFootnotes as ak, type ComposedGroup as al, type ComposedImage as am, type ComposedItem as an, type ComposedLogo as ao, type ComposedOverlay as ap, type ComposedPlacement as aq, type Composition as ar, type CompositionCandidate as as, type CompositionDecision as at, type CompositionExplanation as au, type CompositionPenalties as av, type CompositionTrack as aw, DARK_BACKGROUND_LUMINANCE as ax, DEFAULT_CHART_LABEL_SEPARATOR as ay, DEFAULT_FURNITURE_DATE_FORMAT as az, ENGINE_DEFAULT_COLOR_SCHEME as b, type RichTextOptions as b$, type ListEntryLayout as b0, type ListFit as b1, type ListFitOptions as b2, type ListNumber as b3, type ListText as b4, type ListValue as b5, type LogoSlot as b6, MAX_COMPOSITION_DEPTH as b7, MAX_NUMBERING_LEVELS as b8, MAX_NUMBERING_VALUE as b9, type QuoteLayout as bA, type QuoteLayoutDiagnostic as bB, type QuoteLayoutOptions as bC, type QuotePhoto as bD, type QuoteTextPart as bE, type QuoteTextSource as bF, type ReadingBox as bG, type Reference as bH, type ReferencesSlideOptions as bI, type ResolveColorRefOptions as bJ, type ResolveColorRefRoles as bK, type ResolveColorRolesOptions as bL, type ResolveDesignHintsOptions as bM, type ResolveLogoOptions as bN, type ResolveScriptFontsOptions as bO, type ResolvedChartDataLabels as bP, type ResolvedChartHighlight as bQ, type ResolvedChartOptions as bR, type ResolvedColorRoles as bS, type ResolvedDesignHints as bT, type ResolvedLogo as bU, type ResolvedNumbering as bV, type ResolvedScriptFonts as bW, type RichText as bX, type RichTextFit as bY, type RichTextFragment as bZ, type RichTextLine as b_, MAX_ROMAN_VALUE as ba, METRIC_TREND_MIN_CONTRAST as bb, METRIC_TREND_SHAPES as bc, type MetricContent as bd, type MetricLayout as be, type MetricLayoutDiagnostic as bf, type MetricLayoutOptions as bg, type MetricSentiment as bh, type MetricTextPart as bi, type MetricTextSource as bj, type MetricTrend as bk, type MetricTrendColorOptions as bl, type MetricTrendMark as bm, NUMBERING_STYLES as bn, NUMBERING_SUFFIXES as bo, type Numbering as bp, type NumberingInput as bq, type NumberingStyleName as br, type NumberingSuffix as bs, OPFCompositionError as bt, PATTERN_PRESETS as bu, PATTERN_PRESET_ALIASES as bv, PATTERN_TILE_SIZE as bw, PICTURE_BULLET_SCALE as bx, type PhysicalAlignment as by, type QuoteContent as bz, ENGINE_DEFAULT_FONT_SCHEME as c, fitImage as c$, type RichTextRun as c0, SURFACE_ALT_MIN_CONTRAST as c1, SURFACE_ALT_MIX as c2, type ScriptFontApp as c3, type ScriptFontSlots as c4, type ScriptFontSource as c5, type ScriptFontSupplement as c6, type ScriptRole as c7, type SlideCitations as c8, type SlideComposition as c9, type TimelineMarkerShape as cA, type TimelineStatus as cB, type TimelineStatusColors as cC, type TimelineTextPart as cD, type WatermarkTextLayout as cE, type WatermarkTextOptions as cF, annotationText as cG, captionSettings as cH, chartColorForFill as cI, chartHighlightColors as cJ, chartHighlightMarks as cK, chartLabelText as cL, chartOptionSupport as cM, chartOptionTarget as cN, chartPaletteForFill as cO, citationMarkerText as cP, codeHighlightBands as cQ, codeHighlightColors as cR, codeHighlightLines as cS, codeLineNumbers as cT, codeLineRuns as cU, codeSyntaxPalette as cV, codeSyntaxPaletteForScheme as cW, collectCitations as cX, colorContrast as cY, composeSlide as cZ, defaultSlideBackground as c_, type SocialProfile as ca, type SourceTextFit as cb, TIMELINE_OUTLINE_MIN_CONTRAST as cc, TIMELINE_STATUSES as cd, TIMELINE_TEXT_MIN_CONTRAST as ce, type TableBorder as cf, type TableCellLayout as cg, type TableCellStyle as ch, type TableGrid as ci, type TableGridCell as cj, type TableGridIssue as ck, type TableLayout as cl, type TableLayoutOptions as cm, type TableRowLayout as cn, type TextDirection as co, type TextFit as cp, type TextLineInk as cq, type TextLineSegment as cr, type TextLineSource as cs, type TextPlacement as ct, type TextPlacementLine as cu, type TimelineContent as cv, type TimelineEvent as cw, type TimelineLayout as cx, type TimelineLayoutDiagnostic as cy, type TimelineLayoutOptions as cz, ENGINE_DEFAULT_THEME as d, textWidthMeasurer as d$, fitList as d0, fitRichText as d1, fitText as d2, formatChartLabelNumber as d3, formatChartLabelPercent as d4, formatFurnitureDate as d5, formatListNumber as d6, formatSlideNumber as d7, imageBackground as d8, imageShape as d9, patternRuns as dA, physicalAlignment as dB, placeTextLines as dC, referencesSlide as dD, resolveCanvasDimensions as dE, resolveChartOptions as dF, resolveCodeLanguage as dG, resolveColorRef as dH, resolveColorRoles as dI, resolveDesignHints as dJ, resolveFontFamilies as dK, resolveLogo as dL, resolveNumbering as dM, resolvePatternPreset as dN, resolveScriptFonts as dO, resolveSlideDirection as dP, resolveSocialProfile as dQ, resolveTextStyle as dR, scriptFontRole as dS, sliceNumberedItems as dT, slideCitations as dU, snapFontSizeDown as dV, snapFontSizeUp as dW, surfaceAltColor as dX, tableGrid as dY, tableRowBoundaries as dZ, textColorForFill as d_, intrinsicImageAspect as da, intrinsicImageSize as db, isDarkColor as dc, layoutCaption as dd, layoutCode as de, layoutContent as df, layoutFootnotes as dg, layoutFurniture as dh, layoutMetric as di, layoutQuote as dj, layoutTable as dk, layoutTimeline as dl, layoutWatermark as dm, listNumbers as dn, measureText as dp, measureTextOutline as dq, metricTrendColor as dr, metricTrendMark as ds, metricTrendPoints as dt, normalizeHexColor as du, numberingAtLevel as dv, numberingStyleDraws as dw, paragraphDirection as dx, paragraphDirectionAt as dy, patternBitmap as dz, type FontFamilies as e, timelineMarkerShapes as e0, timelineTextColor as e1, tokenizeCode as e2, visualReadingOrder as e3, walkCitationRuns as e4, wrapText as e5, LANGUAGES as f, type LanguageFamilyName as g, type LanguageVocabulary as h, type SocialPlatformVocabulary as i, type TextStyle as j, type AnnotationFitter as k, type AnnotationLayoutOptions as l, CAPTIONABLE_FIELDS as m, normalizeLanguageFamily as n, CAPTION_FONT_RATIO as o, CAPTION_MAX_RATIO as p, CHART_HIGHLIGHT_MUTED_MIN_CONTRAST as q, CHART_HIGHLIGHT_MUTED_MIX as r, CHART_SERIES_MIN_DIFFERENCE as s, CHART_SERIES_MIN_LIGHTNESS_STEP as t, CITATION_MARKER_RAISE as u, CITATION_MARKER_SCALE as v, CODE_HIGHLIGHT_LANGUAGES as w, CODE_HIGHLIGHT_MAX_LENGTH as x, CODE_PANEL_BACKGROUND as y, CODE_PANEL_FOREGROUND as z };
|