@openpresentation/opf 0.13.0 → 0.14.0
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 +28 -23
- package/dist/{catalogs-ywCamd8C.d.ts → catalogs-D-yyQWCQ.d.ts} +86 -208
- package/dist/catalogs.d.ts +2 -2
- package/dist/catalogs.js +1 -1
- package/dist/{chart-data-Cdr6rRVV.d.ts → chart-data-B_3z9VTb.d.ts} +16 -5
- package/dist/chunk-4LDGKLUC.js +192 -0
- package/dist/{chunk-II5EYKZU.js → chunk-4VJDTF55.js} +2 -92
- package/dist/chunk-5ZU6JAPP.js +83 -0
- package/dist/{chunk-MPM7NRG7.js → chunk-6OXY2CP3.js} +1716 -744
- package/dist/{chunk-IS2CPNVJ.js → chunk-BFLVSVA7.js} +26 -26
- package/dist/chunk-CSQHPVGL.js +94 -0
- package/dist/{chunk-GJKJL4YY.js → chunk-D3TY4TT6.js} +34 -412
- package/dist/chunk-JDJBDYSR.js +4167 -0
- package/dist/{chunk-7QBCWNWL.js → chunk-LS2FMPI5.js} +1086 -1092
- package/dist/{chunk-ATGDDJPX.js → chunk-Q2TCMN56.js} +3 -3
- package/dist/chunk-UPQQD7MA.js +1840 -0
- package/dist/{chunk-RAYB46AB.js → chunk-XIZUK2XM.js} +32 -30
- package/dist/{chunk-E34DJ5LL.js → chunk-XOZ4KMSR.js} +2427 -10820
- package/dist/chunk-Z65B2B77.js +601 -0
- package/dist/{composition-D7we69Tr.d.ts → composition-_WEwBe2a.d.ts} +738 -27
- package/dist/composition.d.ts +2 -2
- package/dist/composition.js +2 -2
- package/dist/convert.d.ts +9 -7
- package/dist/convert.js +33 -19
- package/dist/data.d.ts +4 -4
- package/dist/data.js +3 -3
- package/dist/diff.d.ts +4 -4
- package/dist/diff.js +6 -604
- package/dist/docs.js +54 -42
- package/dist/examples.d.ts +1 -1
- package/dist/examples.js +1366 -2908
- package/dist/finding-C_por275.d.ts +212 -0
- package/dist/format.d.ts +4 -4
- package/dist/format.js +2 -83
- package/dist/index.d.ts +318 -284
- package/dist/index.js +530 -943
- package/dist/markdown.d.ts +28 -27
- package/dist/markdown.js +8 -1940
- package/dist/pagination-BZpXLvFL.d.ts +119 -0
- package/dist/pagination.d.ts +5 -61
- package/dist/pagination.js +5 -5
- package/dist/patch.d.ts +12 -23
- package/dist/patch.js +5 -5
- package/dist/{presentation-mG-IYErQ.d.ts → presentation-C5eHkevA.d.ts} +350 -506
- package/dist/repo-readme.js +1 -1
- package/dist/{schemas-BbPonsTz.d.ts → schemas-DDpqAgyS.d.ts} +31 -17
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.js +1 -1
- package/dist/spec/README.md +10 -5
- 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 +14 -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.json +15 -0
- package/dist/spec/catalogs/layouts/chart-2x.json +15 -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 +14 -16
- package/dist/spec/catalogs/layouts/customer-journey.json +14 -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 +14 -16
- package/dist/spec/catalogs/layouts/detailed-data-table.json +9 -15
- package/dist/spec/catalogs/layouts/ecosystem-map.json +14 -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 +8 -8
- 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 +13 -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 +14 -16
- package/dist/spec/catalogs/layouts/image-1x.json +11 -1
- package/dist/spec/catalogs/layouts/image-2x.json +12 -2
- package/dist/spec/catalogs/layouts/image-3x.json +13 -3
- package/dist/spec/catalogs/layouts/image-bleed.json +12 -2
- package/dist/spec/catalogs/layouts/image-focus.json +14 -16
- package/dist/spec/catalogs/layouts/index.json +1 -1
- 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.json +17 -1
- package/dist/spec/catalogs/layouts/list-2x.json +16 -0
- package/dist/spec/catalogs/layouts/list-3x.json +16 -0
- package/dist/spec/catalogs/layouts/list-4x.json +16 -0
- package/dist/spec/catalogs/layouts/list-5x.json +16 -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 +13 -15
- package/dist/spec/catalogs/layouts/number-1x.json +16 -1
- package/dist/spec/catalogs/layouts/number-2x.json +15 -0
- package/dist/spec/catalogs/layouts/number-3x.json +15 -0
- package/dist/spec/catalogs/layouts/number-4x.json +15 -0
- package/dist/spec/catalogs/layouts/number-5x.json +15 -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 +14 -16
- package/dist/spec/catalogs/layouts/photo-grid.json +17 -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 +14 -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 +14 -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 +14 -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 +14 -16
- package/dist/spec/catalogs/layouts/testimonial-grid.json +9 -15
- package/dist/spec/catalogs/layouts/text-1x.json +11 -1
- package/dist/spec/catalogs/layouts/text-2x.json +10 -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-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 +8 -8
- 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 +2 -5
- package/dist/spec/reference/engine-defaults.json +2 -2
- package/dist/spec/schemas/audience.schema.json +1 -1
- package/dist/spec/schemas/catalog-index.schema.json +2 -2
- package/dist/spec/schemas/chart-type.schema.json +19 -290
- package/dist/spec/schemas/color-scheme.schema.json +20 -12
- package/dist/spec/schemas/finding.schema.json +191 -0
- package/dist/spec/schemas/font-scheme.schema.json +19 -46
- package/dist/spec/schemas/layout.schema.json +100 -159
- package/dist/spec/schemas/narrative.schema.json +17 -25
- package/dist/spec/schemas/opf.schema.json +286 -340
- package/dist/spec/schemas/social-platform.schema.json +1 -26
- package/dist/spec/schemas/theme.schema.json +4 -1
- 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 +4 -4
- package/dist/validation-types-zh03LeZy.d.ts +276 -0
- package/dist/validator.d.ts +60 -4
- package/dist/validator.js +4 -4
- package/dist/yaml.d.ts +87 -0
- package/dist/yaml.js +321 -0
- package/package.json +5 -9
- package/dist/audit.d.ts +0 -35
- package/dist/audit.js +0 -7
- 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/lint-B7azdiuE.d.ts +0 -197
- package/dist/lint.d.ts +0 -7
- package/dist/lint.js +0 -6
- 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/validator-CIylxoIm.d.ts +0 -172
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openpresentation.org/schema/opf-finding/v1",
|
|
4
|
+
"title": "Finding Report",
|
|
5
|
+
"description": "The report format every OPF tool shares. A finding is one thing a checker found at one place in a presentation: a stable rule id, a severity, a category, a JSON Pointer path, a message, and optionally source positions, the measured numbers behind it and suggested fixes as JSON Patch. `validate` in `@openpresentation/opf`, the Markdown and YAML converters, the editor's Review panel and hosted reviewers such as pptx.dev's AI review all produce this shape, so a host shows and applies findings from any of them the same way. A report lists findings, tells whether any has severity `error` (`valid`) and counts them by severity; `validate` adds `schemaValid`, `checks` and variable fields on top of it. Core's checks are deterministic and run locally; findings from other producers use their own rule-id prefix and say so in `source`.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["valid", "findings", "counts"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"valid": {
|
|
10
|
+
"type": "boolean",
|
|
11
|
+
"description": "True when no finding has severity `error`."
|
|
12
|
+
},
|
|
13
|
+
"findings": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"description": "Every finding, in report order.",
|
|
16
|
+
"items": { "$ref": "#/$defs/Finding" }
|
|
17
|
+
},
|
|
18
|
+
"counts": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"description": "How many findings each severity has.",
|
|
21
|
+
"required": ["error", "warning", "info"],
|
|
22
|
+
"additionalProperties": false,
|
|
23
|
+
"properties": {
|
|
24
|
+
"error": { "type": "integer", "minimum": 0 },
|
|
25
|
+
"warning": { "type": "integer", "minimum": 0 },
|
|
26
|
+
"info": { "type": "integer", "minimum": 0 }
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"$defs": {
|
|
31
|
+
"FindingSeverity": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"enum": ["error", "warning", "info"],
|
|
34
|
+
"description": "`error` makes a report invalid. `warning` is a problem the author should fix. `info` is advisory."
|
|
35
|
+
},
|
|
36
|
+
"FindingCategory": {
|
|
37
|
+
"description": "What kind of question the finding answers. Core uses `format` (is it well-formed OPF), `references` (does everything it points at resolve), `policy` (host house rules), `accessibility`, `layout` (will it present as authored) and `content` (is anything left unfinished). Other producers may use their own category names, such as `narrative` or `audience-fit`.",
|
|
38
|
+
"anyOf": [
|
|
39
|
+
{ "type": "string", "enum": ["format", "references", "policy", "accessibility", "layout", "content"] },
|
|
40
|
+
{ "type": "string", "minLength": 1 }
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
"FindingLocation": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"description": "A range in the checked text: UTF-16 offset and length from the start, and the one-based line and column of the start. Present when the finding was produced from text (JSON, Markdown or YAML).",
|
|
46
|
+
"required": ["offset", "length", "line", "column"],
|
|
47
|
+
"additionalProperties": false,
|
|
48
|
+
"properties": {
|
|
49
|
+
"offset": { "type": "integer", "minimum": 0 },
|
|
50
|
+
"length": { "type": "integer", "minimum": 0 },
|
|
51
|
+
"line": { "type": "integer", "minimum": 1 },
|
|
52
|
+
"column": { "type": "integer", "minimum": 1 }
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"JsonPatchOperation": {
|
|
56
|
+
"description": "One RFC 6902 JSON Patch operation. Paths are JSON Pointers into the checked presentation.",
|
|
57
|
+
"oneOf": [
|
|
58
|
+
{
|
|
59
|
+
"type": "object",
|
|
60
|
+
"required": ["op", "path", "value"],
|
|
61
|
+
"additionalProperties": false,
|
|
62
|
+
"properties": {
|
|
63
|
+
"op": { "type": "string", "enum": ["add", "replace", "test"] },
|
|
64
|
+
"path": { "type": "string" },
|
|
65
|
+
"value": {}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"type": "object",
|
|
70
|
+
"required": ["op", "path"],
|
|
71
|
+
"additionalProperties": false,
|
|
72
|
+
"properties": {
|
|
73
|
+
"op": { "type": "string", "const": "remove" },
|
|
74
|
+
"path": { "type": "string" }
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"type": "object",
|
|
79
|
+
"required": ["op", "from", "path"],
|
|
80
|
+
"additionalProperties": false,
|
|
81
|
+
"properties": {
|
|
82
|
+
"op": { "type": "string", "enum": ["move", "copy"] },
|
|
83
|
+
"from": { "type": "string" },
|
|
84
|
+
"path": { "type": "string" }
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"FindingFocus": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"description": "The field an author has to fill in, for a fix that cannot be written as a patch.",
|
|
92
|
+
"required": ["path", "field"],
|
|
93
|
+
"additionalProperties": false,
|
|
94
|
+
"properties": {
|
|
95
|
+
"path": { "type": "string", "description": "JSON Pointer of the field to edit." },
|
|
96
|
+
"field": { "type": "string", "description": "What the field is, such as `alt`, `title`, `text`, `link`, `language` or `fontSize`." },
|
|
97
|
+
"value": { "type": ["string", "number", "boolean", "null", "array", "object"], "description": "The field's current value, when it has one." }
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"FindingFix": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"description": "A suggested repair. Core never applies it: the host shows it and applies it through its own undoable edit path. A `patch` fix carries JSON Patch operations; a `focus` fix only names the field the author has to fill in.",
|
|
103
|
+
"required": ["title"],
|
|
104
|
+
"additionalProperties": false,
|
|
105
|
+
"properties": {
|
|
106
|
+
"title": { "type": "string", "minLength": 1, "description": "What applying the fix does, in a few words." },
|
|
107
|
+
"id": { "type": "string", "description": "Stable id within one finding, such as `focus-alt` or `use-readable-color`." },
|
|
108
|
+
"kind": { "type": "string", "enum": ["patch", "focus"], "default": "patch", "description": "`patch` fixes carry `patch`; `focus` fixes carry `focus`." },
|
|
109
|
+
"safe": { "type": "boolean", "description": "True when applying the fix cannot change what the content says or how it looks beyond the repair, such as switching a failing colour to the one the theme chose. False fixes need a deliberate choice." },
|
|
110
|
+
"patch": {
|
|
111
|
+
"type": "array",
|
|
112
|
+
"description": "RFC 6902 JSON Patch operations that apply the fix to the checked presentation.",
|
|
113
|
+
"items": { "$ref": "#/$defs/JsonPatchOperation" }
|
|
114
|
+
},
|
|
115
|
+
"focus": { "$ref": "#/$defs/FindingFocus" }
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"FindingSuggestion": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"description": "A value the author could use instead, such as a catalog record that exists. Suggestions name records actually present in the checked context and never replace authored values silently.",
|
|
121
|
+
"required": ["value", "label", "origin"],
|
|
122
|
+
"additionalProperties": false,
|
|
123
|
+
"properties": {
|
|
124
|
+
"value": { "type": ["string", "number", "boolean", "null"] },
|
|
125
|
+
"label": { "type": "string" },
|
|
126
|
+
"origin": { "type": "string", "description": "Where the suggestion comes from: `schema`, `built-in`, `loaded`, `document` or `contract`." },
|
|
127
|
+
"definition": { "type": "string", "description": "Where the suggested record or constraint is defined." }
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"ValidationIssue": {
|
|
131
|
+
"type": "object",
|
|
132
|
+
"description": "The raw schema or semantic issue behind a finding, kept with every union alternative so a host can inspect the exact constraint.",
|
|
133
|
+
"required": ["path", "message", "keyword", "schemaPath", "params"],
|
|
134
|
+
"additionalProperties": false,
|
|
135
|
+
"properties": {
|
|
136
|
+
"path": { "type": "string" },
|
|
137
|
+
"message": { "type": "string" },
|
|
138
|
+
"keyword": { "type": "string", "description": "The JSON Schema keyword that failed, or `opf` for a rule the schema cannot express." },
|
|
139
|
+
"schemaPath": { "type": "string" },
|
|
140
|
+
"params": { "type": "object", "additionalProperties": true }
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"Finding": {
|
|
144
|
+
"type": "object",
|
|
145
|
+
"description": "One thing a checker found at one place in a presentation.",
|
|
146
|
+
"required": ["ruleId", "severity", "category", "path", "message"],
|
|
147
|
+
"additionalProperties": false,
|
|
148
|
+
"properties": {
|
|
149
|
+
"ruleId": {
|
|
150
|
+
"type": "string",
|
|
151
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*/[A-Za-z0-9][A-Za-z0-9._-]*$",
|
|
152
|
+
"description": "Stable `<producer>/<rule>` id, such as `opf/text-contrast` for core or `pptx.dev/narrative-gap` for a hosted reviewer. Ids do not change between releases."
|
|
153
|
+
},
|
|
154
|
+
"source": {
|
|
155
|
+
"type": "string",
|
|
156
|
+
"description": "The producer: `opf` (the default) for core, or the name of another tool such as `pptx.dev/review`."
|
|
157
|
+
},
|
|
158
|
+
"severity": { "$ref": "#/$defs/FindingSeverity" },
|
|
159
|
+
"category": { "$ref": "#/$defs/FindingCategory" },
|
|
160
|
+
"path": {
|
|
161
|
+
"type": "string",
|
|
162
|
+
"description": "JSON Pointer to the value the finding is about, such as `/slides/4/title`. Empty for the whole document, or for a value in a supplied context such as a loaded catalog."
|
|
163
|
+
},
|
|
164
|
+
"scope": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"enum": ["document", "context"],
|
|
167
|
+
"description": "`document` (the default) when `path` points into the checked presentation, `context` when it points into host-supplied context such as loaded catalog records."
|
|
168
|
+
},
|
|
169
|
+
"message": { "type": "string", "minLength": 1, "description": "What is wrong, in a sentence." },
|
|
170
|
+
"help": { "type": "string", "description": "What to do about it." },
|
|
171
|
+
"slide": { "type": "integer", "minimum": 0, "description": "Zero-based index of the slide the finding belongs to." },
|
|
172
|
+
"slideId": { "type": "string", "description": "The id of that slide, when it has one." },
|
|
173
|
+
"location": { "$ref": "#/$defs/FindingLocation" },
|
|
174
|
+
"definition": { "type": "string", "description": "A link to the rule's documentation or to the schema constraint or catalog record the finding is about." },
|
|
175
|
+
"lookup": {
|
|
176
|
+
"type": "array",
|
|
177
|
+
"items": { "type": "string" },
|
|
178
|
+
"description": "Arguments for the `opf schema` or `opf catalog` command that shows the definition, as an argument list rather than a shell string."
|
|
179
|
+
},
|
|
180
|
+
"suggestions": { "type": "array", "items": { "$ref": "#/$defs/FindingSuggestion" } },
|
|
181
|
+
"measured": {
|
|
182
|
+
"type": "object",
|
|
183
|
+
"description": "The numbers behind the finding, such as `{ \"ratio\": 2.1, \"needed\": 4.5 }`.",
|
|
184
|
+
"additionalProperties": { "type": ["number", "string", "boolean", "null"] }
|
|
185
|
+
},
|
|
186
|
+
"fixes": { "type": "array", "items": { "$ref": "#/$defs/FindingFix" } },
|
|
187
|
+
"validation": { "$ref": "#/$defs/ValidationIssue" }
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://openpresentation.org/schema/opf-font-scheme/v1",
|
|
4
4
|
"title": "Font Scheme",
|
|
5
|
-
"description": "Schema for font-scheme records in the pptx.gallery library. Each scheme pairs a major (heading) and minor (body) font family in the OOXML majorFont/minorFont sense, scoped to a target app (
|
|
5
|
+
"description": "Schema for font-scheme records in the pptx.gallery library. Each scheme pairs a major (heading) and minor (body) font family in the OOXML majorFont/minorFont sense, scoped to a target app (powerpoint or google-slides) and a language family (Latin, East Asian, or Complex Script). Font schemes are referenced from OPF documents via design.fontScheme or design.fontScheme.id; the engine resolves the reference against catalogs.fontSchemes (inline) → catalogs.fontSchemes.source → the default catalog at https://www.pptx.gallery/font-schemes. Role overrides on design.fontScheme (heading, body, accent, code), each a font family name, take precedence over the resolved scheme.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": [
|
|
8
8
|
"$schema",
|
|
@@ -80,41 +80,11 @@
|
|
|
80
80
|
]
|
|
81
81
|
},
|
|
82
82
|
"code": {
|
|
83
|
-
"type": "
|
|
84
|
-
"description": "Optional monospaced font for code blocks and inline code. It has the same shape as the OPF FontScheme 'code' role, so a record and an inline design.fontScheme override are interchangeable. OOXML has no code slot, so exporters write this family on code runs. When neither design.fontScheme nor the resolved record defines 'code', engines fall back to Roboto Mono.",
|
|
85
|
-
"required": [
|
|
86
|
-
"family"
|
|
87
|
-
],
|
|
88
|
-
"properties": {
|
|
89
|
-
"family": {
|
|
90
|
-
"type": "string",
|
|
91
|
-
"description": "Monospaced font family name.",
|
|
92
|
-
"examples": [
|
|
93
|
-
"Consolas",
|
|
94
|
-
"Courier New"
|
|
95
|
-
]
|
|
96
|
-
},
|
|
97
|
-
"weight": {
|
|
98
|
-
"type": "number",
|
|
99
|
-
"description": "Numeric font weight (e.g., 400 for regular, 700 for bold)."
|
|
100
|
-
},
|
|
101
|
-
"style": {
|
|
102
|
-
"type": "string",
|
|
103
|
-
"enum": [
|
|
104
|
-
"normal",
|
|
105
|
-
"italic"
|
|
106
|
-
],
|
|
107
|
-
"description": "Font style."
|
|
108
|
-
},
|
|
109
|
-
"letterSpacing": {
|
|
110
|
-
"type": "number",
|
|
111
|
-
"description": "Letter spacing (tracking) in ems."
|
|
112
|
-
}
|
|
113
|
-
},
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "Optional monospaced font family name for code blocks and for inline code runs (TextRun.code). It has the same shape as the OPF FontScheme 'code' role, so a record and an inline design.fontScheme override are interchangeable. OOXML has no code slot, so exporters write this family on code runs. When neither design.fontScheme nor the resolved record defines 'code', engines fall back to Roboto Mono.",
|
|
114
85
|
"examples": [
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
86
|
+
"Consolas",
|
|
87
|
+
"Courier New"
|
|
118
88
|
]
|
|
119
89
|
},
|
|
120
90
|
"eastAsian": {
|
|
@@ -181,32 +151,35 @@
|
|
|
181
151
|
"app": {
|
|
182
152
|
"type": "string",
|
|
183
153
|
"enum": [
|
|
184
|
-
"
|
|
185
|
-
"
|
|
154
|
+
"powerpoint",
|
|
155
|
+
"google-slides"
|
|
186
156
|
],
|
|
187
|
-
"description": "Target application this font pairing is intended for."
|
|
157
|
+
"description": "Target application this font pairing is intended for. Metadata for pickers and catalog filters: no engine changes its output by it."
|
|
188
158
|
},
|
|
189
159
|
"languageFamily": {
|
|
190
160
|
"type": "string",
|
|
191
161
|
"enum": [
|
|
192
162
|
"latin",
|
|
193
163
|
"ea",
|
|
194
|
-
"cs"
|
|
164
|
+
"cs",
|
|
165
|
+
"eastAsian",
|
|
166
|
+
"complexScript"
|
|
195
167
|
],
|
|
196
|
-
"description": "
|
|
168
|
+
"description": "Font-language family this scheme is intended for: 'latin' for Latin-script content, 'ea' (or 'eastAsian', the same value) for East Asian scripts, 'cs' (or 'complexScript', the same value) for Complex Scripts. The long names match the 'eastAsian' and 'complexScript' slot keys; the short names match the OOXML a:ea and a:cs elements; core reads both spellings as one value. As the design font scheme, an 'ea'/'eastAsian' or 'cs'/'complexScript' scheme also fills that script slot with its own major/minor families when its languages list is empty or names the presentation language."
|
|
197
169
|
},
|
|
198
170
|
"languages": {
|
|
199
171
|
"type": "array",
|
|
200
172
|
"items": {
|
|
201
|
-
"type": "string"
|
|
173
|
+
"type": "string",
|
|
174
|
+
"pattern": "^[a-z][a-z0-9-]*$"
|
|
202
175
|
},
|
|
203
|
-
"description": "Optional list of
|
|
176
|
+
"description": "Optional list of languages catalog ids (see the languages catalog, https://www.pptx.gallery/languages) this scheme is curated for. Useful for picker UIs that group fonts by language coverage. As the design font scheme, an 'ea' or 'cs' scheme fills its script slot only when this list is empty or names the presentation language by id.",
|
|
204
177
|
"examples": [
|
|
205
178
|
[
|
|
206
|
-
"
|
|
207
|
-
"
|
|
208
|
-
"
|
|
209
|
-
"
|
|
179
|
+
"chinese-simplified",
|
|
180
|
+
"chinese-traditional",
|
|
181
|
+
"japanese",
|
|
182
|
+
"korean"
|
|
210
183
|
]
|
|
211
184
|
]
|
|
212
185
|
},
|
|
@@ -72,157 +72,14 @@
|
|
|
72
72
|
"Two equal-width columns under a left-aligned slide title. Use when comparing two ideas, before/after pairs, or paired text + image content."
|
|
73
73
|
]
|
|
74
74
|
},
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"Title",
|
|
79
|
-
"Text",
|
|
80
|
-
"List",
|
|
81
|
-
"Image",
|
|
82
|
-
"Number",
|
|
83
|
-
"Metric",
|
|
84
|
-
"Chart",
|
|
85
|
-
"Table",
|
|
86
|
-
"Code",
|
|
87
|
-
"Video",
|
|
88
|
-
"Quote",
|
|
89
|
-
"Timeline"
|
|
90
|
-
],
|
|
91
|
-
"description": "Primary kind of content the layout holds. Drives pickers and AI placement decisions. Metric is the canonical numeric/KPI category; Number remains an accepted legacy label."
|
|
92
|
-
},
|
|
93
|
-
"contentMultiple": {
|
|
94
|
-
"type": "string",
|
|
95
|
-
"enum": [
|
|
96
|
-
"None",
|
|
97
|
-
"1x",
|
|
98
|
-
"2x",
|
|
99
|
-
"3x",
|
|
100
|
-
"4x",
|
|
101
|
-
"5x",
|
|
102
|
-
"6x"
|
|
103
|
-
],
|
|
104
|
-
"description": "How many parallel content blocks the layout exposes ('2x' = two-column, '3x' = three-up, etc.)."
|
|
105
|
-
},
|
|
106
|
-
"contentAlignment": {
|
|
107
|
-
"type": "string",
|
|
108
|
-
"enum": [
|
|
109
|
-
"None",
|
|
110
|
-
"Left",
|
|
111
|
-
"Center"
|
|
112
|
-
],
|
|
113
|
-
"description": "Default horizontal alignment of the content area."
|
|
114
|
-
},
|
|
115
|
-
"contentBox": {
|
|
116
|
-
"type": "boolean",
|
|
117
|
-
"description": "Whether the content area is rendered inside a visible box / card.",
|
|
118
|
-
"examples": [
|
|
119
|
-
false,
|
|
120
|
-
true
|
|
121
|
-
]
|
|
122
|
-
},
|
|
123
|
-
"contentTypeChartPrimary": {
|
|
124
|
-
"type": "string",
|
|
125
|
-
"enum": [
|
|
126
|
-
"None",
|
|
127
|
-
"Top",
|
|
128
|
-
"Bottom",
|
|
129
|
-
"Left",
|
|
130
|
-
"Right"
|
|
131
|
-
],
|
|
132
|
-
"description": "For chart layouts, where the primary chart sits relative to the rest of the content."
|
|
133
|
-
},
|
|
134
|
-
"contentTypeImageFill": {
|
|
135
|
-
"type": "string",
|
|
136
|
-
"enum": [
|
|
137
|
-
"None",
|
|
138
|
-
"Crop",
|
|
139
|
-
"Fit"
|
|
140
|
-
],
|
|
141
|
-
"description": "For image layouts, how the image fills its slot."
|
|
142
|
-
},
|
|
143
|
-
"contentTypeListBullet": {
|
|
144
|
-
"type": "string",
|
|
145
|
-
"enum": [
|
|
146
|
-
"None",
|
|
147
|
-
"Character",
|
|
148
|
-
"Image"
|
|
149
|
-
],
|
|
150
|
-
"description": "For list layouts, how bullets are rendered."
|
|
151
|
-
},
|
|
152
|
-
"contentTypeListHeading": {
|
|
153
|
-
"type": "boolean",
|
|
154
|
-
"description": "For list layouts, whether each list item carries a heading.",
|
|
155
|
-
"examples": [
|
|
156
|
-
false,
|
|
157
|
-
true
|
|
158
|
-
]
|
|
159
|
-
},
|
|
160
|
-
"slideTag": {
|
|
161
|
-
"type": "boolean",
|
|
162
|
-
"description": "Whether the layout includes a small slide-level tag / label region above or near the title.",
|
|
163
|
-
"examples": [
|
|
164
|
-
false,
|
|
165
|
-
true
|
|
166
|
-
]
|
|
167
|
-
},
|
|
168
|
-
"slideTitle": {
|
|
169
|
-
"type": "boolean",
|
|
170
|
-
"description": "Whether the layout includes a slide title region.",
|
|
171
|
-
"examples": [
|
|
172
|
-
true,
|
|
173
|
-
false
|
|
174
|
-
]
|
|
175
|
-
},
|
|
176
|
-
"slideSubtitle": {
|
|
177
|
-
"type": "boolean",
|
|
178
|
-
"description": "Whether the layout includes a slide-level subtitle or supporting-description region. When placeholders is present, this is true exactly when the layout exposes a placeholder with type 'subtitle'.",
|
|
179
|
-
"examples": [
|
|
180
|
-
false,
|
|
181
|
-
true
|
|
182
|
-
]
|
|
183
|
-
},
|
|
184
|
-
"slideTitleAlignment": {
|
|
185
|
-
"type": "string",
|
|
186
|
-
"enum": [
|
|
187
|
-
"None",
|
|
188
|
-
"Left",
|
|
189
|
-
"Center"
|
|
190
|
-
],
|
|
191
|
-
"description": "Horizontal alignment of the slide title region."
|
|
192
|
-
},
|
|
193
|
-
"slideImage": {
|
|
194
|
-
"type": "boolean",
|
|
195
|
-
"description": "Whether the layout includes a dedicated slide-level image region (separate from any content image).",
|
|
196
|
-
"examples": [
|
|
197
|
-
false,
|
|
198
|
-
true
|
|
199
|
-
]
|
|
200
|
-
},
|
|
201
|
-
"slideImageAlignment": {
|
|
202
|
-
"type": "string",
|
|
203
|
-
"enum": [
|
|
204
|
-
"None",
|
|
205
|
-
"Top",
|
|
206
|
-
"Bottom",
|
|
207
|
-
"Left",
|
|
208
|
-
"Right",
|
|
209
|
-
"Background"
|
|
210
|
-
],
|
|
211
|
-
"description": "Where the slide-level image sits relative to the content."
|
|
212
|
-
},
|
|
213
|
-
"slideLayoutDirection": {
|
|
214
|
-
"type": "string",
|
|
215
|
-
"enum": [
|
|
216
|
-
"None",
|
|
217
|
-
"Horizontal",
|
|
218
|
-
"Vertical"
|
|
219
|
-
],
|
|
220
|
-
"description": "Axis along which the layout's primary regions are arranged."
|
|
75
|
+
"design": {
|
|
76
|
+
"$ref": "#/$defs/DesignHints",
|
|
77
|
+
"description": "The layout's design hints, with the same keys and values as the deck's design and a slide's design (a slide overrides exactly what its layout sets, by the same name). An absent key means the layout has no opinion. Every key is applied from the record as the lowest-precedence default, per key: the slide's design, then the deck's design, then this record's design, then the engine default, so a layout value nobody overrides is honored without copying it anywhere (a layout's composition.mode still ranks above contentDirection; slideImage.position is the fallback position of a slide image the layout reserves). Composition, the renderer and the PPTX exporter all read the one result."
|
|
221
78
|
},
|
|
222
79
|
"placeholders": {
|
|
223
80
|
"type": "array",
|
|
224
81
|
"items": { "$ref": "#/$defs/Placeholder" },
|
|
225
|
-
"description": "Ordered regions the layout exposes. The engine fills 'title', 'subtitle'
|
|
82
|
+
"description": "Ordered regions the layout exposes. This is the single source of truth for what the layout holds: the content kind, the number of body regions and whether it has a title, subtitle or tag are derived from it (layoutContent in @openpresentation/opf), never stored separately. The engine fills 'title', 'subtitle' and 'tag' placeholders from Slide.title, Slide.subtitle and Slide.tag. The other placeholders are content-kind regions that composition uses to size the body and that pickers use to match layouts. Slide content itself lives either in root payload fields or promoted region keys on Slide. Chrome (slide number, footer, date) is not included here; it is owned by Design.header / Design.footer."
|
|
226
83
|
},
|
|
227
84
|
"tags": {
|
|
228
85
|
"type": "array",
|
|
@@ -254,7 +111,7 @@
|
|
|
254
111
|
"format": "uri",
|
|
255
112
|
"description": "Main preview image (PNG/JPG). Used as the primary visual in picker UIs and previews of the record.",
|
|
256
113
|
"examples": [
|
|
257
|
-
"https://
|
|
114
|
+
"https://example.com/layouts/title-subtitle.png"
|
|
258
115
|
]
|
|
259
116
|
},
|
|
260
117
|
"thumbnailSrc": {
|
|
@@ -262,7 +119,7 @@
|
|
|
262
119
|
"format": "uri",
|
|
263
120
|
"description": "Smaller thumbnail preview suited to dense grid views.",
|
|
264
121
|
"examples": [
|
|
265
|
-
"https://
|
|
122
|
+
"https://example.com/layouts/title-subtitle.thumbnail.png"
|
|
266
123
|
]
|
|
267
124
|
},
|
|
268
125
|
"vectorSrc": {
|
|
@@ -270,7 +127,7 @@
|
|
|
270
127
|
"format": "uri",
|
|
271
128
|
"description": "SVG / vector preview for crisp scaling at any size.",
|
|
272
129
|
"examples": [
|
|
273
|
-
"https://www.pptx.gallery/
|
|
130
|
+
"https://www.pptx.gallery/layout-previews/title-subtitle.svg"
|
|
274
131
|
]
|
|
275
132
|
}
|
|
276
133
|
}
|
|
@@ -285,7 +142,7 @@
|
|
|
285
142
|
"required": [
|
|
286
143
|
"type"
|
|
287
144
|
],
|
|
288
|
-
"description": "A single region inside a slide layout. Title, subtitle, and tag placeholders bind to the corresponding Slide fields; other
|
|
145
|
+
"description": "A single region inside a slide layout. Title, subtitle, and tag placeholders bind to the corresponding Slide fields; every other placeholder describes the content kind that region holds. The array order in the surrounding 'placeholders' field preserves layout region order.",
|
|
289
146
|
"properties": {
|
|
290
147
|
"type": {
|
|
291
148
|
"type": "string",
|
|
@@ -294,18 +151,102 @@
|
|
|
294
151
|
"subtitle",
|
|
295
152
|
"tag",
|
|
296
153
|
"text",
|
|
297
|
-
"metric",
|
|
298
|
-
"quote",
|
|
299
|
-
"timeline",
|
|
300
154
|
"list",
|
|
155
|
+
"image",
|
|
156
|
+
"video",
|
|
301
157
|
"chart",
|
|
302
|
-
"picture",
|
|
303
158
|
"table",
|
|
304
|
-
"
|
|
305
|
-
"
|
|
306
|
-
"
|
|
159
|
+
"code",
|
|
160
|
+
"metric",
|
|
161
|
+
"quote",
|
|
162
|
+
"timeline"
|
|
163
|
+
],
|
|
164
|
+
"description": "The content kind of the region. This is the one OPF content-kind vocabulary: the same words name a slide's payload fields (text, items, image, video, chart, table, code, metric, quote, timeline). 'title', 'subtitle' and 'tag' are the heading kinds and bind to Slide.title, Slide.subtitle and Slide.tag. 'text' holds text and bullets; 'list' holds items. 'image' is filled by an image payload and 'video' by a video payload. 'metric', 'quote', 'timeline', 'chart', 'table' and 'code' are filled by the payload of the same name; a metric region shows the metric payload with its optional label, description, unit, delta, trend and sentiment."
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"DesignHints": {
|
|
169
|
+
"type": "object",
|
|
170
|
+
"additionalProperties": false,
|
|
171
|
+
"description": "Design hints a layout carries. The keys and lowercase values are those of the deck's design and a slide's design in opf.schema.json (Design), so a slide overrides a layout by the same name and layout.design can be copied into slide.design unchanged. An absent key means the layout has no opinion. Only the keys the layout sets are stored. scripts/check-spec-integrity.mjs verifies that every key here has the same type and values as its Design counterpart.",
|
|
172
|
+
"properties": {
|
|
173
|
+
"titleAlignment": {
|
|
174
|
+
"type": "string",
|
|
175
|
+
"enum": [
|
|
176
|
+
"left",
|
|
177
|
+
"center",
|
|
178
|
+
"right"
|
|
179
|
+
],
|
|
180
|
+
"description": "Horizontal alignment of the title placeholder."
|
|
181
|
+
},
|
|
182
|
+
"contentAlignment": {
|
|
183
|
+
"type": "string",
|
|
184
|
+
"enum": [
|
|
185
|
+
"left",
|
|
186
|
+
"center",
|
|
187
|
+
"right"
|
|
188
|
+
],
|
|
189
|
+
"description": "Horizontal alignment of the body regions."
|
|
190
|
+
},
|
|
191
|
+
"contentBox": {
|
|
192
|
+
"type": "boolean",
|
|
193
|
+
"description": "Whether the body regions are drawn inside a visible card or surface."
|
|
194
|
+
},
|
|
195
|
+
"contentDirection": {
|
|
196
|
+
"type": "string",
|
|
197
|
+
"enum": [
|
|
198
|
+
"horizontal",
|
|
199
|
+
"vertical"
|
|
200
|
+
],
|
|
201
|
+
"description": "Axis along which parallel body content is arranged: 'vertical' is a column, 'horizontal' a row. Composition applies it when neither the slide nor this layout's composition sets a mode, below the slide's and the deck's design.contentDirection and above automatic selection."
|
|
202
|
+
},
|
|
203
|
+
"chartPrimary": {
|
|
204
|
+
"type": "string",
|
|
205
|
+
"enum": [
|
|
206
|
+
"none",
|
|
207
|
+
"top",
|
|
208
|
+
"bottom",
|
|
209
|
+
"left",
|
|
210
|
+
"right"
|
|
211
|
+
],
|
|
212
|
+
"description": "Where the primary chart sits relative to the other body content. Composition applies it below the slide's and the deck's design.chartPrimary, with the semantics described there."
|
|
213
|
+
},
|
|
214
|
+
"imageFill": {
|
|
215
|
+
"type": "string",
|
|
216
|
+
"enum": [
|
|
217
|
+
"crop",
|
|
218
|
+
"fit"
|
|
219
|
+
],
|
|
220
|
+
"description": "How images fill their region: 'crop' covers the region, 'fit' shows the whole image."
|
|
221
|
+
},
|
|
222
|
+
"listBullet": {
|
|
223
|
+
"type": "string",
|
|
224
|
+
"enum": [
|
|
225
|
+
"character",
|
|
226
|
+
"image"
|
|
227
|
+
],
|
|
228
|
+
"description": "Marker style of lists: 'character' draws the glyph, 'image' draws the deck's icon logo as a picture bullet."
|
|
229
|
+
},
|
|
230
|
+
"slideImage": {
|
|
231
|
+
"type": "object",
|
|
232
|
+
"additionalProperties": false,
|
|
233
|
+
"required": [
|
|
234
|
+
"position"
|
|
307
235
|
],
|
|
308
|
-
"description": "
|
|
236
|
+
"description": "A slide-level image region the layout reserves, separate from any content image. Its presence is what lets a deck-wide design.slideImage apply to slides on this layout. The image itself comes from the slide or the deck design.",
|
|
237
|
+
"properties": {
|
|
238
|
+
"position": {
|
|
239
|
+
"type": "string",
|
|
240
|
+
"enum": [
|
|
241
|
+
"background",
|
|
242
|
+
"top",
|
|
243
|
+
"bottom",
|
|
244
|
+
"left",
|
|
245
|
+
"right"
|
|
246
|
+
],
|
|
247
|
+
"description": "Where the slide-level image sits relative to the content. 'background' is a full-bleed image behind the content; the other positions give the image a band along that edge. Used when the slide's or deck's design.slideImage gives no position."
|
|
248
|
+
}
|
|
249
|
+
}
|
|
309
250
|
}
|
|
310
251
|
}
|
|
311
252
|
},
|