@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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { validate } from './chunk-JDJBDYSR.js';
|
|
2
2
|
|
|
3
3
|
// src/patch.ts
|
|
4
|
-
var
|
|
4
|
+
var OPFPatchError = class extends Error {
|
|
5
5
|
code;
|
|
6
6
|
/** The JSON Pointer the failing operation addressed, when known. */
|
|
7
7
|
path;
|
|
@@ -11,18 +11,18 @@ var PatchError = class extends Error {
|
|
|
11
11
|
operation;
|
|
12
12
|
constructor(code, message, details = {}) {
|
|
13
13
|
super(message);
|
|
14
|
-
this.name = "
|
|
14
|
+
this.name = "OPFPatchError";
|
|
15
15
|
this.code = code;
|
|
16
16
|
if (details.path !== void 0) this.path = details.path;
|
|
17
17
|
if (details.index !== void 0) this.index = details.index;
|
|
18
18
|
if (details.operation !== void 0) this.operation = details.operation;
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
var
|
|
21
|
+
var OPFPatchValidationError = class extends OPFPatchError {
|
|
22
22
|
validation;
|
|
23
23
|
constructor(validation) {
|
|
24
24
|
super("patch-invalid-document", "The patched document is not a valid OPF presentation.");
|
|
25
|
-
this.name = "
|
|
25
|
+
this.name = "OPFPatchValidationError";
|
|
26
26
|
this.validation = validation;
|
|
27
27
|
}
|
|
28
28
|
};
|
|
@@ -49,7 +49,7 @@ function unescapePointerToken(token) {
|
|
|
49
49
|
}
|
|
50
50
|
function parsePointer(pointer) {
|
|
51
51
|
if (typeof pointer !== "string" || pointer !== "" && !pointer.startsWith("/") || /~(?![01])/u.test(pointer)) {
|
|
52
|
-
throw new
|
|
52
|
+
throw new OPFPatchError("invalid-json-pointer", "Expected a JSON Pointer (empty string or /path with ~0 and ~1 escapes).", { path: typeof pointer === "string" ? pointer : void 0 });
|
|
53
53
|
}
|
|
54
54
|
return pointer === "" ? [] : pointer.slice(1).split("/").map(unescapePointerToken);
|
|
55
55
|
}
|
|
@@ -58,7 +58,7 @@ function formatPointer(tokens) {
|
|
|
58
58
|
}
|
|
59
59
|
function pointerFromPath(path) {
|
|
60
60
|
if (Array.isArray(path)) return formatPointer(path);
|
|
61
|
-
if (typeof path !== "string") throw new
|
|
61
|
+
if (typeof path !== "string") throw new OPFPatchError("invalid-json-pointer", "A path must be a string or an array of segments.");
|
|
62
62
|
if (path === "") return "";
|
|
63
63
|
if (path.startsWith("/")) {
|
|
64
64
|
parsePointer(path);
|
|
@@ -68,7 +68,7 @@ function pointerFromPath(path) {
|
|
|
68
68
|
}
|
|
69
69
|
function splitPointer(pointer) {
|
|
70
70
|
const tokens = parsePointer(pointer);
|
|
71
|
-
if (!tokens.length) throw new
|
|
71
|
+
if (!tokens.length) throw new OPFPatchError("invalid-json-pointer", "The root pointer has no parent.", { path: pointer });
|
|
72
72
|
return { parent: formatPointer(tokens.slice(0, -1)), token: tokens[tokens.length - 1] };
|
|
73
73
|
}
|
|
74
74
|
function readPointer(document, pointer) {
|
|
@@ -89,24 +89,24 @@ function getAtPointer(document, pointer) {
|
|
|
89
89
|
const result = readPointer(document, pointer);
|
|
90
90
|
if (!result.found) {
|
|
91
91
|
const shown = typeof pointer === "string" ? pointer : formatPointer(pointer);
|
|
92
|
-
throw new
|
|
92
|
+
throw new OPFPatchError("patch-path-missing", `Patch path does not exist: ${shown || "/"}`, { path: shown });
|
|
93
93
|
}
|
|
94
94
|
return result.value;
|
|
95
95
|
}
|
|
96
96
|
var hasPointer = (document, pointer) => readPointer(document, pointer).found;
|
|
97
97
|
function arrayIndex(token, length, allowEnd, path) {
|
|
98
98
|
if (allowEnd && token === "-") return length;
|
|
99
|
-
if (!/^(0|[1-9][0-9]*)$/.test(token)) throw new
|
|
99
|
+
if (!/^(0|[1-9][0-9]*)$/.test(token)) throw new OPFPatchError("invalid-array-index", `Invalid array index: ${token}`, { path });
|
|
100
100
|
const at = Number(token);
|
|
101
|
-
if (!Number.isSafeInteger(at) || at > length || !allowEnd && at >= length) throw new
|
|
101
|
+
if (!Number.isSafeInteger(at) || at > length || !allowEnd && at >= length) throw new OPFPatchError("invalid-array-index", `Array index out of bounds: ${token}`, { path });
|
|
102
102
|
return at;
|
|
103
103
|
}
|
|
104
104
|
function normalizePatch(patch) {
|
|
105
|
-
if (!Array.isArray(patch)) throw new
|
|
105
|
+
if (!Array.isArray(patch)) throw new OPFPatchError("invalid-patch", "A JSON Patch must be an array of operations.");
|
|
106
106
|
return patch.map((operation, index) => normalizeOperation(operation, index));
|
|
107
107
|
}
|
|
108
108
|
function normalizeOperation(operation, index) {
|
|
109
|
-
const fail = (code, message, path) => new
|
|
109
|
+
const fail = (code, message, path) => new OPFPatchError(code, index === void 0 ? message : `Operation ${index}: ${message}`, { index, operation, path });
|
|
110
110
|
if (!isObject(operation)) throw fail("invalid-patch-operation", "Expected an operation object.");
|
|
111
111
|
const op = operation.op;
|
|
112
112
|
if (typeof op !== "string" || !["add", "remove", "replace", "move", "copy", "test"].includes(op)) {
|
|
@@ -135,7 +135,7 @@ function parentOf(document, tokens, path) {
|
|
|
135
135
|
const key = tokens[tokens.length - 1];
|
|
136
136
|
const found = readPointer(document, tokens.slice(0, -1));
|
|
137
137
|
if (!found.found || !found.value || typeof found.value !== "object") {
|
|
138
|
-
throw new
|
|
138
|
+
throw new OPFPatchError("patch-parent-missing", `Patch parent does not exist for ${path}.`, { path });
|
|
139
139
|
}
|
|
140
140
|
return { parent: found.value, key };
|
|
141
141
|
}
|
|
@@ -165,7 +165,7 @@ function replaceAt(document, path, value) {
|
|
|
165
165
|
parent[at] = clone(value);
|
|
166
166
|
} else {
|
|
167
167
|
const record = parent;
|
|
168
|
-
if (!own(record, key)) throw new
|
|
168
|
+
if (!own(record, key)) throw new OPFPatchError("patch-path-missing", `Patch path does not exist: ${path}.`, { path });
|
|
169
169
|
previous = record[key];
|
|
170
170
|
Object.defineProperty(record, key, { value: clone(value), enumerable: true, configurable: true, writable: true });
|
|
171
171
|
}
|
|
@@ -173,7 +173,7 @@ function replaceAt(document, path, value) {
|
|
|
173
173
|
}
|
|
174
174
|
function removeAt(document, path) {
|
|
175
175
|
const tokens = parsePointer(path);
|
|
176
|
-
if (!tokens.length) throw new
|
|
176
|
+
if (!tokens.length) throw new OPFPatchError("patch-root-remove", "The document root cannot be removed.", { path });
|
|
177
177
|
const { parent, key } = parentOf(document, tokens, path);
|
|
178
178
|
let previous;
|
|
179
179
|
if (Array.isArray(parent)) {
|
|
@@ -183,7 +183,7 @@ function removeAt(document, path) {
|
|
|
183
183
|
return { document, inverse: { op: "add", path: formatPointer([...tokens.slice(0, -1), at]), value: clone(previous) } };
|
|
184
184
|
}
|
|
185
185
|
const record = parent;
|
|
186
|
-
if (!own(record, key)) throw new
|
|
186
|
+
if (!own(record, key)) throw new OPFPatchError("patch-path-missing", `Patch path does not exist: ${path}.`, { path });
|
|
187
187
|
previous = record[key];
|
|
188
188
|
delete record[key];
|
|
189
189
|
return { document, inverse: { op: "add", path, value: clone(previous) } };
|
|
@@ -204,7 +204,7 @@ function applyOne(document, operation) {
|
|
|
204
204
|
}
|
|
205
205
|
case "test": {
|
|
206
206
|
const found = readPointer(document, operation.path);
|
|
207
|
-
if (!found.found || !jsonEqual(found.value, operation.value)) throw new
|
|
207
|
+
if (!found.found || !jsonEqual(found.value, operation.value)) throw new OPFPatchError("patch-test-failed", `Test failed at ${operation.path || "/"}: the value changed.`, { path: operation.path });
|
|
208
208
|
return { document, inverse: [] };
|
|
209
209
|
}
|
|
210
210
|
case "copy": {
|
|
@@ -217,7 +217,7 @@ function applyOne(document, operation) {
|
|
|
217
217
|
const value = clone(getAtPointer(document, from));
|
|
218
218
|
if (from.length === to.length && from.every((token, i) => token === to[i])) return { document, inverse: [] };
|
|
219
219
|
if (to.length > from.length && from.every((token, i) => to[i] === token)) {
|
|
220
|
-
throw new
|
|
220
|
+
throw new OPFPatchError("patch-invalid-move", "Cannot move a value into its descendant.", { path: operation.path });
|
|
221
221
|
}
|
|
222
222
|
const removed = removeAt(document, operation.from);
|
|
223
223
|
const added = addAt(removed.document, operation.path, value);
|
|
@@ -235,27 +235,27 @@ function applyPatchWithInverse(document, patch, options = {}) {
|
|
|
235
235
|
working = step.document;
|
|
236
236
|
inverse.unshift(...step.inverse);
|
|
237
237
|
} catch (error) {
|
|
238
|
-
if (error instanceof
|
|
239
|
-
const wrapped = new
|
|
238
|
+
if (error instanceof OPFPatchError && error.index === void 0) {
|
|
239
|
+
const wrapped = new OPFPatchError(error.code, `Operation ${index}: ${error.message}`, { path: error.path, index, operation });
|
|
240
240
|
throw wrapped;
|
|
241
241
|
}
|
|
242
242
|
throw error;
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
|
-
const result = {
|
|
245
|
+
const result = { presentation: working, inverse, patch: operations };
|
|
246
246
|
if (options.validate) {
|
|
247
|
-
const validator = typeof options.validate === "function" ? options.validate : (value) =>
|
|
247
|
+
const validator = typeof options.validate === "function" ? options.validate : (value) => validate(value, { only: options.strict ? ["format", "references"] : ["format"] });
|
|
248
248
|
const validation = validator(working);
|
|
249
|
-
if (!validation.valid || options.strict &&
|
|
249
|
+
if (!validation.valid || options.strict && validation.findings?.some((entry) => entry.severity === "warning")) throw new OPFPatchValidationError(validation);
|
|
250
250
|
result.validation = validation;
|
|
251
251
|
}
|
|
252
252
|
return result;
|
|
253
253
|
}
|
|
254
254
|
function applyPatch(document, patch, options = {}) {
|
|
255
|
-
return applyPatchWithInverse(document, patch, options).
|
|
255
|
+
return applyPatchWithInverse(document, patch, options).presentation;
|
|
256
256
|
}
|
|
257
257
|
function invertPatch(document, patch) {
|
|
258
258
|
return applyPatchWithInverse(document, patch).inverse;
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
-
export {
|
|
261
|
+
export { OPFPatchError, OPFPatchValidationError, applyPatch, applyPatchWithInverse, escapePointerToken, formatPointer, getAtPointer, hasPointer, invertPatch, jsonEqual, normalizePatch, parsePointer, pointerFromPath, readPointer, splitPointer, unescapePointerToken };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { validate } from './chunk-JDJBDYSR.js';
|
|
2
|
+
|
|
3
|
+
// src/convert/shared.ts
|
|
4
|
+
var CONTENT_KEYS = ["text", "items", "bullets", "image", "video", "chart", "table", "code", "metric", "quote", "timeline"];
|
|
5
|
+
var SLIDE_ONLY_KEYS = ["title", "subtitle", "tag", "layout", "design", "notes", "section", "hidden", "beat"];
|
|
6
|
+
var OPFConversionError = class extends Error {
|
|
7
|
+
code;
|
|
8
|
+
details;
|
|
9
|
+
constructor(code, message, details = {}) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = "OPFConversionError";
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.details = details;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var refuse = (message, details = {}) => new OPFConversionError("not-convertible", message, details);
|
|
17
|
+
var Loss = class {
|
|
18
|
+
list = [];
|
|
19
|
+
note(message) {
|
|
20
|
+
if (!this.list.includes(message)) this.list.push(message);
|
|
21
|
+
}
|
|
22
|
+
merge(other) {
|
|
23
|
+
for (const message of other) this.note(message);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var report = (loss) => ({ lossless: loss.length === 0, loss: [...loss] });
|
|
27
|
+
var isRecord = (value) => !!value && typeof value === "object" && !Array.isArray(value);
|
|
28
|
+
var clone = (value) => structuredClone(value);
|
|
29
|
+
var own = (value, key) => Object.hasOwn(value, key);
|
|
30
|
+
var same = (a, b) => JSON.stringify(canonical(a)) === JSON.stringify(canonical(b));
|
|
31
|
+
function canonical(value) {
|
|
32
|
+
if (Array.isArray(value)) return value.map(canonical);
|
|
33
|
+
if (isRecord(value)) return Object.fromEntries(Object.keys(value).sort().map((key) => [key, canonical(value[key])]));
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
var isSlideLike = (payload) => SLIDE_ONLY_KEYS.some((key) => own(payload, key));
|
|
37
|
+
var contentKeysOf = (payload) => CONTENT_KEYS.filter((key) => payload[key] !== void 0);
|
|
38
|
+
function assertValidOutput(value, as = "block", context = {}) {
|
|
39
|
+
const slides = as === "slides" ? value : as === "slide" ? [value] : [{ blocks: [value] }];
|
|
40
|
+
const datasets = isRecord(context.datasets) ? context.datasets : void 0;
|
|
41
|
+
const report2 = validate({ ...datasets ? { datasets } : {}, slides }, { only: ["format"] });
|
|
42
|
+
const found = report2.findings.filter((entry) => entry.severity === "error");
|
|
43
|
+
const errors = datasets ? found : found.filter((entry) => entry.ruleId !== "opf/dataset-unknown" && entry.ruleId !== "opf/dataset-field-unknown");
|
|
44
|
+
if (errors.length) {
|
|
45
|
+
const first = errors[0];
|
|
46
|
+
throw new OPFConversionError("invalid-output", `The converted content is not valid OPF: ${first?.message ?? "unknown error"}${first?.path ? ` (${first.path})` : ""}.`, { issues: errors });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
var assertValidOwner = (owner, context = {}) => assertValidOutput(owner, isSlideLike(owner) ? "slide" : "block", context);
|
|
50
|
+
var FORMATTING = ["bold", "italic", "underline", "strikethrough", "color", "fontSize", "fontFamily", "link", "superscript", "subscript", "code", "lang"];
|
|
51
|
+
var isPlainRun = (run) => typeof run === "string" || isRecord(run) && !FORMATTING.some((key) => run[key] !== void 0);
|
|
52
|
+
var runText = (run) => typeof run === "string" ? run : run.text ?? "";
|
|
53
|
+
var runsOf = (value) => typeof value === "string" ? [value] : Array.isArray(value) ? value : [];
|
|
54
|
+
var plainOf = (value) => runsOf(value).map(runText).join("");
|
|
55
|
+
var hasFormatting = (value) => runsOf(value).some((run) => !isPlainRun(run));
|
|
56
|
+
var NEWLINE = /\r\n|\r|\n/;
|
|
57
|
+
function splitRuns(runs) {
|
|
58
|
+
const lines = [[]];
|
|
59
|
+
for (const run of runs) {
|
|
60
|
+
const parts = runText(run).split(NEWLINE);
|
|
61
|
+
parts.forEach((part, index) => {
|
|
62
|
+
if (index > 0) lines.push([]);
|
|
63
|
+
if (part === "") return;
|
|
64
|
+
lines[lines.length - 1].push(typeof run === "string" ? part : { ...run, text: part });
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return lines;
|
|
68
|
+
}
|
|
69
|
+
function mergeRuns(runs) {
|
|
70
|
+
const merged = [];
|
|
71
|
+
for (const run of runs) {
|
|
72
|
+
if (typeof run === "string" && typeof merged.at(-1) === "string") merged[merged.length - 1] += run;
|
|
73
|
+
else merged.push(run);
|
|
74
|
+
}
|
|
75
|
+
return merged;
|
|
76
|
+
}
|
|
77
|
+
var linePlain = (line) => line.map(runText).join("");
|
|
78
|
+
var lineIsPlain = (line) => line.every(isPlainRun);
|
|
79
|
+
var lineValue = (line) => lineIsPlain(line) ? linePlain(line) : mergeRuns(line);
|
|
80
|
+
function joinLines(lines) {
|
|
81
|
+
if (lines.every(lineIsPlain)) return lines.map(linePlain).join("\n");
|
|
82
|
+
const runs = [];
|
|
83
|
+
lines.forEach((line, index) => {
|
|
84
|
+
if (index > 0) runs.push("\n");
|
|
85
|
+
runs.push(...line);
|
|
86
|
+
});
|
|
87
|
+
return mergeRuns(runs);
|
|
88
|
+
}
|
|
89
|
+
function concatText(a, b) {
|
|
90
|
+
if (typeof a === "string" && typeof b === "string") return a + b;
|
|
91
|
+
return mergeRuns([...runsOf(a), ...runsOf(b)]);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export { CONTENT_KEYS, FORMATTING, Loss, OPFConversionError, assertValidOutput, assertValidOwner, clone, concatText, contentKeysOf, hasFormatting, isPlainRun, isRecord, isSlideLike, joinLines, lineIsPlain, linePlain, lineValue, plainOf, refuse, report, runText, runsOf, same, splitRuns };
|