ooxml-core 1.19.2 → 1.21.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 +47 -1
- package/dist/{PptxHandler-6TNIQ7S5.cjs → PptxHandler-DNSXWTQV.cjs} +3 -3
- package/dist/{PptxHandler-2V4PQL6O.mjs → PptxHandler-FSKKPZZC.mjs} +3 -3
- package/dist/PptxHandler-H7MEWJJJ.mjs +4 -0
- package/dist/{PresentationBuilder-G7MPEGXJ.mjs → PresentationBuilder-7TSENZTX.mjs} +2 -2
- package/dist/{PresentationBuilder-RM52LCVN.cjs → PresentationBuilder-A5NI35VN.cjs} +5 -5
- package/dist/{PresentationBuilder-HQ6C7L4V.mjs → PresentationBuilder-RIJWQSEU.mjs} +3 -3
- package/dist/automation/docx-forms.d.ts +26 -0
- package/dist/automation/docx-forms.d.ts.map +1 -0
- package/dist/automation/index.cjs +6280 -2506
- package/dist/automation/index.d.ts +1 -0
- package/dist/automation/index.d.ts.map +1 -1
- package/dist/automation/index.mjs +6277 -2507
- package/dist/automation/xlsx-read.d.ts +56 -0
- package/dist/automation/xlsx-read.d.ts.map +1 -0
- package/dist/automation/xlsx.d.ts +105 -4
- package/dist/automation/xlsx.d.ts.map +1 -1
- package/dist/chart/axis-range.d.ts.map +1 -1
- package/dist/chart/bubble-radius.d.ts +0 -5
- package/dist/chart/bubble-radius.d.ts.map +1 -1
- package/dist/chart/extent.d.ts +9 -0
- package/dist/chart/extent.d.ts.map +1 -0
- package/dist/chart/histogram-binning.d.ts.map +1 -1
- package/dist/chart/index.cjs +56 -18
- package/dist/chart/index.mjs +56 -18
- package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-legend.d.ts.map +1 -1
- package/dist/chart/render/chart-view-ex.d.ts.map +1 -1
- package/dist/chart/render/chart-view.d.ts.map +1 -1
- package/dist/chart/trendline-fit.d.ts.map +1 -1
- package/dist/{chunk-NYTR4UZ5.cjs → chunk-4LZIUJI3.cjs} +52 -12
- package/dist/{chunk-SLNQNVQM.mjs → chunk-4QPOJCJG.mjs} +45 -8
- package/dist/{chunk-XTSHZGSM.mjs → chunk-6IIMI5RS.mjs} +52 -12
- package/dist/{chunk-TJPUAUWL.mjs → chunk-BA7Z6ATM.mjs} +9 -195
- package/dist/{chunk-JUABSM7C.mjs → chunk-DLFMCZZT.mjs} +1 -1
- package/dist/{chunk-M4XLF4R7.mjs → chunk-GBKBR4CX.mjs} +20 -8
- package/dist/{chunk-R5FIHHGB.cjs → chunk-HL3FBJ6X.cjs} +1648 -1205
- package/dist/{chunk-ZJ2OKIJN.mjs → chunk-LF5E5ZOH.mjs} +642 -199
- package/dist/{chunk-4FTUAD2B.mjs → chunk-Q5PKBQXH.mjs} +766 -202
- package/dist/{chunk-M6GDBVQ7.mjs → chunk-VQF6HQEE.mjs} +1 -1
- package/dist/collab/embedding.d.ts +103 -0
- package/dist/collab/embedding.d.ts.map +1 -0
- package/dist/collab/index.cjs +450 -342
- package/dist/collab/index.d.ts +1 -0
- package/dist/collab/index.d.ts.map +1 -1
- package/dist/collab/index.mjs +443 -343
- package/dist/color/theme-palette.d.ts +5 -1
- package/dist/color/theme-palette.d.ts.map +1 -1
- package/dist/crypto/index.cjs +27 -2
- package/dist/crypto/index.mjs +27 -2
- package/dist/diagram/index.cjs +31 -3
- package/dist/diagram/index.mjs +31 -3
- package/dist/docx/block-parser.d.ts.map +1 -1
- package/dist/docx/cell-blocks.d.ts +7 -1
- package/dist/docx/cell-blocks.d.ts.map +1 -1
- package/dist/docx/content-control-edit.d.ts +14 -0
- package/dist/docx/content-control-edit.d.ts.map +1 -1
- package/dist/docx/content-control-model.d.ts +8 -0
- package/dist/docx/content-control-model.d.ts.map +1 -1
- package/dist/docx/content-control-values.d.ts +20 -0
- package/dist/docx/content-control-values.d.ts.map +1 -0
- package/dist/docx/content-control.d.ts +7 -1
- package/dist/docx/content-control.d.ts.map +1 -1
- package/dist/docx/element-order.d.ts +10 -5
- package/dist/docx/element-order.d.ts.map +1 -1
- package/dist/docx/embedded.cjs +3861 -1379
- package/dist/docx/embedded.mjs +3861 -1379
- package/dist/docx/field-instruction.d.ts +22 -0
- package/dist/docx/field-instruction.d.ts.map +1 -0
- package/dist/docx/form-field-model.d.ts +48 -0
- package/dist/docx/form-field-model.d.ts.map +1 -0
- package/dist/docx/form-fields.d.ts +31 -0
- package/dist/docx/form-fields.d.ts.map +1 -0
- package/dist/docx/form-fill-fields.d.ts +61 -0
- package/dist/docx/form-fill-fields.d.ts.map +1 -0
- package/dist/docx/form-fill-labels.d.ts +8 -0
- package/dist/docx/form-fill-labels.d.ts.map +1 -0
- package/dist/docx/form-fill-sites.d.ts +59 -0
- package/dist/docx/form-fill-sites.d.ts.map +1 -0
- package/dist/docx/form-fill-values.d.ts +28 -0
- package/dist/docx/form-fill-values.d.ts.map +1 -0
- package/dist/docx/form-fill-write.d.ts +26 -0
- package/dist/docx/form-fill-write.d.ts.map +1 -0
- package/dist/docx/glossary.d.ts +15 -0
- package/dist/docx/glossary.d.ts.map +1 -0
- package/dist/docx/index.cjs +5929 -3153
- package/dist/docx/index.d.ts +7 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +5913 -3154
- package/dist/docx/inline-annotations.d.ts +21 -0
- package/dist/docx/inline-annotations.d.ts.map +1 -0
- package/dist/docx/inline-container-markers.d.ts +14 -0
- package/dist/docx/inline-container-markers.d.ts.map +1 -0
- package/dist/docx/inline-containers.d.ts +54 -0
- package/dist/docx/inline-containers.d.ts.map +1 -0
- package/dist/docx/inline-form-field-bookmarks.d.ts +15 -0
- package/dist/docx/inline-form-field-bookmarks.d.ts.map +1 -0
- package/dist/docx/inline-marker-positions.d.ts +15 -0
- package/dist/docx/inline-marker-positions.d.ts.map +1 -0
- package/dist/docx/inline-markers.d.ts +63 -0
- package/dist/docx/inline-markers.d.ts.map +1 -0
- package/dist/docx/inline-slots.d.ts +24 -0
- package/dist/docx/inline-slots.d.ts.map +1 -0
- package/dist/docx/layout/adapter.d.ts.map +1 -1
- package/dist/docx/layout/index.cjs +1176 -563
- package/dist/docx/layout/index.d.ts +2 -1
- package/dist/docx/layout/index.d.ts.map +1 -1
- package/dist/docx/layout/index.mjs +1175 -564
- package/dist/docx/layout/input.d.ts +5 -1
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/layout/page-style-refs.d.ts +21 -0
- package/dist/docx/layout/page-style-refs.d.ts.map +1 -0
- package/dist/docx/layout/paragraph-fragments.d.ts.map +1 -1
- package/dist/docx/layout/result.d.ts +1 -0
- package/dist/docx/layout/result.d.ts.map +1 -1
- package/dist/docx/layout/tab-stops.d.ts +8 -1
- package/dist/docx/layout/tab-stops.d.ts.map +1 -1
- package/dist/docx/load/index.cjs +3969 -1487
- package/dist/docx/load/index.mjs +3969 -1487
- package/dist/docx/model-run.d.ts +24 -2
- package/dist/docx/model-run.d.ts.map +1 -1
- package/dist/docx/model.d.ts +5 -0
- package/dist/docx/model.d.ts.map +1 -1
- package/dist/docx/numbering-format.d.ts.map +1 -1
- package/dist/docx/parse-warnings.d.ts.map +1 -1
- package/dist/docx/parse.d.ts.map +1 -1
- package/dist/docx/run-segmentation.d.ts +11 -0
- package/dist/docx/run-segmentation.d.ts.map +1 -0
- package/dist/docx/save.d.ts.map +1 -1
- package/dist/docx/section-model.d.ts +5 -0
- package/dist/docx/section-model.d.ts.map +1 -1
- package/dist/docx/sections.d.ts +4 -2
- package/dist/docx/sections.d.ts.map +1 -1
- package/dist/docx/settings.d.ts +9 -0
- package/dist/docx/settings.d.ts.map +1 -1
- package/dist/docx/special-characters.d.ts +34 -0
- package/dist/docx/special-characters.d.ts.map +1 -0
- package/dist/docx/style-ref-fields.d.ts +40 -0
- package/dist/docx/style-ref-fields.d.ts.map +1 -0
- package/dist/docx/style-ref.d.ts +85 -0
- package/dist/docx/style-ref.d.ts.map +1 -0
- package/dist/docx/table-model.d.ts +2 -2
- package/dist/docx/table-model.d.ts.map +1 -1
- package/dist/docx/ui/break-note-schema.d.ts.map +1 -1
- package/dist/docx/ui/content-control-commands.d.ts +20 -8
- package/dist/docx/ui/content-control-commands.d.ts.map +1 -1
- package/dist/docx/ui/content-control-guard.d.ts +4 -1
- package/dist/docx/ui/content-control-guard.d.ts.map +1 -1
- package/dist/docx/ui/content-control-paste.d.ts +23 -0
- package/dist/docx/ui/content-control-paste.d.ts.map +1 -0
- package/dist/docx/ui/content-control-rows.d.ts +15 -0
- package/dist/docx/ui/content-control-rows.d.ts.map +1 -0
- package/dist/docx/ui/content-control-sources.d.ts +12 -0
- package/dist/docx/ui/content-control-sources.d.ts.map +1 -0
- package/dist/docx/ui/content-control-spans.d.ts +29 -6
- package/dist/docx/ui/content-control-spans.d.ts.map +1 -1
- package/dist/docx/ui/content-control-temporary.d.ts +10 -0
- package/dist/docx/ui/content-control-temporary.d.ts.map +1 -0
- package/dist/docx/ui/form-field-commands.d.ts +41 -0
- package/dist/docx/ui/form-field-commands.d.ts.map +1 -0
- package/dist/docx/ui/form-field-guard.d.ts +24 -0
- package/dist/docx/ui/form-field-guard.d.ts.map +1 -0
- package/dist/docx/ui/form-text-blank.d.ts +18 -0
- package/dist/docx/ui/form-text-blank.d.ts.map +1 -0
- package/dist/docx/ui/index.cjs +9276 -7132
- package/dist/docx/ui/index.d.ts +5 -0
- package/dist/docx/ui/index.d.ts.map +1 -1
- package/dist/docx/ui/index.mjs +9259 -7137
- package/dist/docx/ui/positional-tab-input.d.ts +7 -0
- package/dist/docx/ui/positional-tab-input.d.ts.map +1 -0
- package/dist/docx/ui/run-compare.d.ts.map +1 -1
- package/dist/docx/ui/run-extra-mark.d.ts +1 -1
- package/dist/docx/ui/run-extra-mark.d.ts.map +1 -1
- package/dist/docx/ui/schema-marks.d.ts +1 -1
- package/dist/docx/ui/schema-marks.d.ts.map +1 -1
- package/dist/docx/ui/symbol-font.d.ts +4 -0
- package/dist/docx/ui/symbol-font.d.ts.map +1 -0
- package/dist/docx/ui/yjs-collaboration.d.ts +12 -1
- package/dist/docx/ui/yjs-collaboration.d.ts.map +1 -1
- package/dist/docx/write-block-placement.d.ts +7 -0
- package/dist/docx/write-block-placement.d.ts.map +1 -1
- package/dist/docx/write-content-control.d.ts +6 -0
- package/dist/docx/write-content-control.d.ts.map +1 -1
- package/dist/docx/write-header-footer.d.ts +6 -2
- package/dist/docx/write-header-footer.d.ts.map +1 -1
- package/dist/docx/write-inline.d.ts +12 -16
- package/dist/docx/write-inline.d.ts.map +1 -1
- package/dist/docx/write-paragraph.d.ts.map +1 -1
- package/dist/docx/write-revisions.d.ts.map +1 -1
- package/dist/docx/write-run.d.ts.map +1 -1
- package/dist/docx/write-section-properties.d.ts +5 -0
- package/dist/docx/write-section-properties.d.ts.map +1 -0
- package/dist/docx/write-sections.d.ts.map +1 -1
- package/dist/docx/write-table-controls.d.ts +15 -0
- package/dist/docx/write-table-controls.d.ts.map +1 -0
- package/dist/docx/write-table-properties.d.ts.map +1 -1
- package/dist/docx/write-table.d.ts.map +1 -1
- package/dist/docx/write.d.ts.map +1 -1
- package/dist/docx/xml.d.ts +6 -0
- package/dist/docx/xml.d.ts.map +1 -1
- package/dist/drawingml/index.cjs +31 -3
- package/dist/drawingml/index.mjs +31 -3
- package/dist/index.cjs +102 -26
- package/dist/index.mjs +102 -26
- package/dist/math/index.cjs +27 -2
- package/dist/math/index.mjs +27 -2
- package/dist/opc/index.cjs +51 -11
- package/dist/opc/index.mjs +51 -11
- package/dist/opc/zip-folders.d.ts +11 -0
- package/dist/opc/zip-folders.d.ts.map +1 -0
- package/dist/opc/zip-limits.d.ts +9 -0
- package/dist/opc/zip-limits.d.ts.map +1 -1
- package/dist/pptx/automation/index.cjs +995 -462
- package/dist/pptx/automation/index.d.ts +2 -2
- package/dist/pptx/automation/index.mjs +6 -6
- package/dist/pptx/chunks/{index-Bqm-jFG-.d.ts → index-CPhsd7Df.d.ts} +7580 -7507
- package/dist/pptx/chunks/index-CPhsd7Df.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-B9x557hr.d.ts → index-Q5mM8kIR.d.ts} +2 -2
- package/dist/pptx/chunks/{index-B9x557hr.d.ts.map → index-Q5mM8kIR.d.ts.map} +1 -1
- package/dist/pptx/cli/index.cjs +770 -238
- package/dist/pptx/cli/index.mjs +5 -5
- package/dist/pptx/converter/index.cjs +12 -3
- package/dist/pptx/converter/index.d.ts +1 -1
- package/dist/pptx/converter/index.mjs +3 -3
- package/dist/pptx/editor/render/find-replace.cjs +14 -14
- package/dist/pptx/editor/render/find-replace.d.ts +1 -1
- package/dist/pptx/editor/render/find-replace.mjs +1 -1
- package/dist/pptx/editor/render/slide-operations.cjs +8 -8
- package/dist/pptx/editor/render/slide-operations.mjs +2 -2
- package/dist/pptx/index.cjs +1099 -628
- package/dist/pptx/index.d.ts +3 -3
- package/dist/pptx/index.mjs +6 -6
- package/dist/pptx/signature-node/index.cjs +20 -8
- package/dist/pptx/signature-node/index.mjs +2 -2
- package/dist/teams/index.cjs +105 -70
- package/dist/teams/index.mjs +105 -70
- package/dist/text/text-diff.d.ts +15 -0
- package/dist/text/text-diff.d.ts.map +1 -0
- package/dist/visio/index.cjs +220 -46
- package/dist/visio/index.mjs +220 -46
- package/dist/visio/ui/contract.d.ts +8 -2
- package/dist/visio/ui/contract.d.ts.map +1 -1
- package/dist/visio/ui/index.cjs +227 -50
- package/dist/visio/ui/index.mjs +227 -50
- package/dist/xlsx/collab/index.cjs +8 -3
- package/dist/xlsx/collab/index.mjs +8 -3
- package/dist/xlsx/compare/cells.d.ts +22 -0
- package/dist/xlsx/compare/cells.d.ts.map +1 -0
- package/dist/xlsx/compare/compare.d.ts +12 -0
- package/dist/xlsx/compare/compare.d.ts.map +1 -0
- package/dist/xlsx/compare/conditional.d.ts +7 -0
- package/dist/xlsx/compare/conditional.d.ts.map +1 -0
- package/dist/xlsx/compare/format-key.d.ts +34 -0
- package/dist/xlsx/compare/format-key.d.ts.map +1 -0
- package/dist/xlsx/compare/group.d.ts +8 -0
- package/dist/xlsx/compare/group.d.ts.map +1 -0
- package/dist/xlsx/compare/index.d.ts +5 -0
- package/dist/xlsx/compare/index.d.ts.map +1 -0
- package/dist/xlsx/compare/rich-text.d.ts +7 -0
- package/dist/xlsx/compare/rich-text.d.ts.map +1 -0
- package/dist/xlsx/compare/sheets.d.ts +22 -0
- package/dist/xlsx/compare/sheets.d.ts.map +1 -0
- package/dist/xlsx/compare/structure.d.ts +11 -0
- package/dist/xlsx/compare/structure.d.ts.map +1 -0
- package/dist/xlsx/compare/text.d.ts +8 -0
- package/dist/xlsx/compare/text.d.ts.map +1 -0
- package/dist/xlsx/compare/types.d.ts +173 -0
- package/dist/xlsx/compare/types.d.ts.map +1 -0
- package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard-html.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard-text.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard.d.ts.map +1 -1
- package/dist/xlsx/edit/clone-cell.d.ts +9 -0
- package/dist/xlsx/edit/clone-cell.d.ts.map +1 -0
- package/dist/xlsx/edit/dimensions.d.ts.map +1 -1
- package/dist/xlsx/edit/history-rows.d.ts +7 -0
- package/dist/xlsx/edit/history-rows.d.ts.map +1 -0
- package/dist/xlsx/edit/history.d.ts +19 -4
- package/dist/xlsx/edit/history.d.ts.map +1 -1
- package/dist/xlsx/edit/outline.d.ts.map +1 -1
- package/dist/xlsx/edit/row-autofit.d.ts.map +1 -1
- package/dist/xlsx/edit/timelines.d.ts.map +1 -1
- package/dist/xlsx/formula/change-areas.d.ts +9 -0
- package/dist/xlsx/formula/change-areas.d.ts.map +1 -0
- package/dist/xlsx/formula/engine-prepare.d.ts +8 -0
- package/dist/xlsx/formula/engine-prepare.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/spill.d.ts +5 -1
- package/dist/xlsx/formula/spill.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +2551 -1208
- package/dist/xlsx/index.d.ts +1 -0
- package/dist/xlsx/index.d.ts.map +1 -1
- package/dist/xlsx/index.mjs +2544 -1209
- package/dist/xlsx/layout/cell-view.d.ts.map +1 -1
- package/dist/xlsx/layout/navigate.d.ts.map +1 -1
- package/dist/xlsx/layout/style-view.d.ts +5 -0
- package/dist/xlsx/layout/style-view.d.ts.map +1 -1
- package/dist/xlsx/load/csv-dates.d.ts +22 -0
- package/dist/xlsx/load/csv-dates.d.ts.map +1 -0
- package/dist/xlsx/load/csv-import.d.ts +64 -0
- package/dist/xlsx/load/csv-import.d.ts.map +1 -0
- package/dist/xlsx/load/csv-separators.d.ts +13 -0
- package/dist/xlsx/load/csv-separators.d.ts.map +1 -0
- package/dist/xlsx/load/csv-traits.d.ts +20 -0
- package/dist/xlsx/load/csv-traits.d.ts.map +1 -0
- package/dist/xlsx/load/csv.d.ts +8 -4
- package/dist/xlsx/load/csv.d.ts.map +1 -1
- package/dist/xlsx/load/detect.d.ts +13 -0
- package/dist/xlsx/load/detect.d.ts.map +1 -1
- package/dist/xlsx/load/errors.d.ts +1 -0
- package/dist/xlsx/load/errors.d.ts.map +1 -1
- package/dist/xlsx/load/index.cjs +598 -98
- package/dist/xlsx/load/index.d.ts +3 -1
- package/dist/xlsx/load/index.d.ts.map +1 -1
- package/dist/xlsx/load/index.mjs +597 -99
- package/dist/xlsx/numfmt/format.d.ts +8 -0
- package/dist/xlsx/numfmt/format.d.ts.map +1 -1
- package/dist/xlsx/numfmt/input-date.d.ts +2 -0
- package/dist/xlsx/numfmt/input-date.d.ts.map +1 -1
- package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/groups.d.ts.map +1 -1
- package/dist/xlsx/read/index.d.ts +2 -1
- package/dist/xlsx/read/index.d.ts.map +1 -1
- package/dist/xlsx/read/limits.d.ts +50 -0
- package/dist/xlsx/read/limits.d.ts.map +1 -0
- package/dist/xlsx/read/load.d.ts +11 -1
- package/dist/xlsx/read/load.d.ts.map +1 -1
- package/dist/xlsx/read/package.d.ts +5 -23
- package/dist/xlsx/read/package.d.ts.map +1 -1
- package/dist/xlsx/read/shared-strings.d.ts +2 -2
- package/dist/xlsx/read/shared-strings.d.ts.map +1 -1
- package/dist/xlsx/read/sheet-data-source.d.ts.map +1 -1
- package/dist/xlsx/read/worksheet.d.ts +2 -0
- package/dist/xlsx/read/worksheet.d.ts.map +1 -1
- package/dist/xlsx/stable-key.d.ts +3 -0
- package/dist/xlsx/stable-key.d.ts.map +1 -0
- package/dist/xlsx/styles.d.ts.map +1 -1
- package/dist/xlsx/ui/index.cjs +795 -388
- package/dist/xlsx/ui/index.d.ts +1 -0
- package/dist/xlsx/ui/index.d.ts.map +1 -1
- package/dist/xlsx/ui/index.mjs +795 -389
- package/dist/xlsx/ui/selection-format.d.ts +13 -0
- package/dist/xlsx/ui/selection-format.d.ts.map +1 -0
- package/dist/xlsx/write/sheet-props.d.ts.map +1 -1
- package/dist/xml/index.cjs +57 -3
- package/dist/xml/index.mjs +57 -4
- package/dist/xml/lite.d.ts.map +1 -1
- package/dist/xml/xml.d.ts +11 -1
- package/dist/xml/xml.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/PptxHandler-HSPKEP5E.mjs +0 -4
- package/dist/pptx/chunks/index-Bqm-jFG-.d.ts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NS, SMART_ART_DEFINITION_PARTS, VML_SHAPE_TAGS, isAlternateContentChoiceXmlSupported, parseVmlElement, unwrapAlternateContent, xmlChild, xmlAttr, parseDrawingMediaReference, cropShapeForPresetGeometry, isHeaderFooterPlaceholder, xmlPath, inheritedPlaceholderFieldType, parseParagraphLevel, xmlHasChild, parseParagraphExtraAttributes, parseParagraphMargins, parseAlignmentAttr, parseParagraphRtl, parseTabStops, resolveParagraphAlignment, xmlText, parseBodyPrBooleanAttrs, selectAlternateContentBranch, parseBulletSizePercent, extractColorChoiceXml, themeColorRefFromColorChoice, formatAutoNumberMarker, cloneXmlObject, parseParagraphSpacingPx, parseOoxmlPercent, createBuiltinVariables, resolveCoordinate, readPathListCommandOrder, parseAdjustmentValues, parseGuideDefinitions, evaluateGuides, orderedPathCommandEntries, ooxmlArcToSvg, inheritCustomGeometryCommandOrder, parseInkMlContent, parseModel3DScene, remapElementShapeIds, parseShapeId, isTemplateElementId, remapShapeIdReferences, reapplyAlternateContentToTree, openPptxZip, buildOle2, SHAPE_TREE_ELEMENT_TAGS, MAX_SHAPE_ID, orderedXmlKey, safeResolveZipPath, parseXml, elements, parseDataUrlToBytes, base64Decode, reorderObjectKeys, encodeCompressedPng, zlibStore, hash, concatArrays, encodePasswordUtf16LE, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, uint32LE, pptxActionToElementAction, buildClrMapOverrideXml, applyActiveXControlsToSlide, BLIP_FILL_ORDER, SP_PR_ORDER, ensureXmlChild, inkElementToStrokes, buildInkMlContent, ensureXmlChildOrCreate, isXmlNode, applyChartLayouts, stripXmlOrderSuffix, serializeTabStop, colorsEqual, generateFontGuid, applyBubbleChartOptions, applyChartUpDownBars, applyDataLabelsRangeToDLbls, applyChartAxisScaling, applyChartAxisLabelFormatting, upsertChartAxisChild, applyChartDateAxisUnits, applyChartAxisDisplayUnitsToXml, writeChartShapeProps, resolveTxPrDefRPr, buildDefRPrTextProperties, buildChartGradFillXml, applySeriesMarkerToXml, applySeriesDataPointsToXml, chartColorHex, applyChartManualLayout, chartTrendlineType, buildTrendlineLabel, serializeColorChoice, replaceOleEmbedding, findKey, collectAllText, buildNodeGuidMap, buildPresentationGuidMap, regenerateSmartArtDrawingShapes, buildFabricatedDrawingXml, buildFabricatedDiagramDataXml, DIAGRAM_DRAWING_CONTENT_TYPE, DIAGRAM_DRAWING_REL_TYPE, applyDiagramRelationshipIds, applyDrawingMediaReference, XML_PROLOG, DGM_XMLNS, xmlEscape, writeBodyPrBooleanAttrs, applyTextBodySp3d, customGeometryPathsToXml, ensureArrayValue, lookupPresetShape, writeShapeEffects, SHAPE_STYLE_ORDER, roundCoordinate, scaleVectorToIntegers, P14_GUIDE_URI, P15_GUIDE_URI, buildGuideListExtension, resetSpPrFormattingForStyleMatrix, restorePathListCommandOrder, fillIsPurelyStyleMatrix, serializeColorChoiceWithRef, createLineStyleGate, applyDrawingLineDash, getSignaturePathsToStrip, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, mergeSmartArtPointXml, mergeSmartArtConnectionXml, applySmartArtLayoutDefinition, obfuscateFont, containsConvertibleStrictNamespaceAttribute, convertXmlToStrict, applySeriesPictureOptionsToXml, findChartExtByUri, findChildByLocalName, regenerateClonedUniqueId, buildChartUniqueIdExtLst, createOfficeGuid, isContentPoint, newSmartArtGuid, parseChartUserShapesDrawing, DEFAULT_ROW_HEIGHT_EMU, createDefaultXmlCell, xmlChildren, applyChartGradientToSpPr, setAutoTitleDeleted, insertAt, replaceFirstText, shouldRebuildFromParagraphs, buildPointFromParagraphs, shouldRebuildFromRuns, buildPointFromRuns, buildPointText, tableCellTextBodyMatches, ensureXmlChildren, TC_PR_BORDERS_ORDER, writeChartColorChoice, openNestedZip, stripParentDirSegments, parseChartUniqueId, buildChartMarkerXml, chartGradientsEqual, chartColorChoiceValue, preservesSpreadsheetXmlWhitespace, buildEffectDagTreeFromXml, syncPictureShapeTypeWithCropShape, buildSrgbColorChoice, fetchUrlToBytes, parseChartWideTextStyle, parseDefRPrTextStyle, parseChartDataLabelOptions, shadowOffsetToDistanceAndDirection, positiveFixedAngleAttribute, xmlAttrNumber, parseCustomShows, parseShapeProps, parseActiveXControlsFromSlide, convertMetafileToDataUrl, first, children, ooxmlGradientAngleToCssDegrees, isAlternateContentChoiceSupported, detectStrictConformance, normalizeStrictXml, relayoutSmartArt, themeColorRefToSolidFillWithOpacity, FONT_ADVANCE_TABLES, DEFAULT_FONT_ADVANCE_TABLE, measureTextWidth, applyDrawingColorTransforms, applyThemeToData, detectFileFormat, parseOle2, EncryptedFileError, decryptPptx, encryptPptx, encodeXmlAttributeValue, encodeXmlTextValue, svgToCustomGeometryPaths, IncorrectPasswordError, parseEncryptionInfo, RC4_ALG_ID, isOle2CompoundFile, ENTRY_TYPE_ROOT, supportsChartGradientFill, DEFAULT_CHART_GRADIENT_ANGLE,
|
|
1
|
+
import { NS, SMART_ART_DEFINITION_PARTS, VML_SHAPE_TAGS, isAlternateContentChoiceXmlSupported, parseVmlElement, unwrapAlternateContent, xmlChild, xmlAttr, parseDrawingMediaReference, cropShapeForPresetGeometry, isHeaderFooterPlaceholder, xmlPath, inheritedPlaceholderFieldType, parseParagraphLevel, xmlHasChild, parseParagraphExtraAttributes, parseParagraphMargins, parseAlignmentAttr, parseParagraphRtl, parseTabStops, resolveParagraphAlignment, xmlText, parseBodyPrBooleanAttrs, selectAlternateContentBranch, parseBulletSizePercent, extractColorChoiceXml, themeColorRefFromColorChoice, formatAutoNumberMarker, cloneXmlObject, parseParagraphSpacingPx, parseOoxmlPercent, createBuiltinVariables, resolveCoordinate, readPathListCommandOrder, parseAdjustmentValues, parseGuideDefinitions, evaluateGuides, orderedPathCommandEntries, ooxmlArcToSvg, inheritCustomGeometryCommandOrder, parseInkMlContent, parseModel3DScene, remapElementShapeIds, parseShapeId, isTemplateElementId, remapShapeIdReferences, reapplyAlternateContentToTree, openPptxZip, buildOle2, SHAPE_TREE_ELEMENT_TAGS, MAX_SHAPE_ID, orderedXmlKey, safeResolveZipPath, parseXml, elements, parseDataUrlToBytes, base64Decode, reorderObjectKeys, encodeCompressedPng, zlibStore, hash, concatArrays, encodePasswordUtf16LE, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, uint32LE, pptxActionToElementAction, buildClrMapOverrideXml, applyActiveXControlsToSlide, BLIP_FILL_ORDER, SP_PR_ORDER, ensureXmlChild, inkElementToStrokes, buildInkMlContent, ensureXmlChildOrCreate, isXmlNode, applyChartLayouts, stripXmlOrderSuffix, serializeTabStop, colorsEqual, generateFontGuid, applyBubbleChartOptions, applyChartUpDownBars, applyDataLabelsRangeToDLbls, applyChartAxisScaling, applyChartAxisLabelFormatting, upsertChartAxisChild, applyChartDateAxisUnits, applyChartAxisDisplayUnitsToXml, writeChartShapeProps, resolveTxPrDefRPr, buildDefRPrTextProperties, buildChartGradFillXml, applySeriesMarkerToXml, applySeriesDataPointsToXml, chartColorHex, applyChartManualLayout, chartTrendlineType, buildTrendlineLabel, serializeColorChoice, replaceOleEmbedding, findKey, collectAllText, buildNodeGuidMap, buildPresentationGuidMap, regenerateSmartArtDrawingShapes, buildFabricatedDrawingXml, buildFabricatedDiagramDataXml, DIAGRAM_DRAWING_CONTENT_TYPE, DIAGRAM_DRAWING_REL_TYPE, applyDiagramRelationshipIds, applyDrawingMediaReference, XML_PROLOG, DGM_XMLNS, xmlEscape, writeBodyPrBooleanAttrs, applyTextBodySp3d, customGeometryPathsToXml, ensureArrayValue, lookupPresetShape, writeShapeEffects, SHAPE_STYLE_ORDER, roundCoordinate, scaleVectorToIntegers, P14_GUIDE_URI, P15_GUIDE_URI, buildGuideListExtension, resetSpPrFormattingForStyleMatrix, restorePathListCommandOrder, fillIsPurelyStyleMatrix, serializeColorChoiceWithRef, createLineStyleGate, applyDrawingLineDash, getSignaturePathsToStrip, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, mergeSmartArtPointXml, mergeSmartArtConnectionXml, applySmartArtLayoutDefinition, obfuscateFont, containsConvertibleStrictNamespaceAttribute, convertXmlToStrict, applySeriesPictureOptionsToXml, findChartExtByUri, findChildByLocalName, regenerateClonedUniqueId, buildChartUniqueIdExtLst, createOfficeGuid, isContentPoint, newSmartArtGuid, parseChartUserShapesDrawing, DEFAULT_ROW_HEIGHT_EMU, createDefaultXmlCell, xmlChildren, applyChartGradientToSpPr, setAutoTitleDeleted, insertAt, replaceFirstText, shouldRebuildFromParagraphs, buildPointFromParagraphs, shouldRebuildFromRuns, buildPointFromRuns, buildPointText, tableCellTextBodyMatches, ensureXmlChildren, TC_PR_BORDERS_ORDER, writeChartColorChoice, openNestedZip, stripParentDirSegments, parseChartUniqueId, buildChartMarkerXml, chartGradientsEqual, chartColorChoiceValue, preservesSpreadsheetXmlWhitespace, buildEffectDagTreeFromXml, syncPictureShapeTypeWithCropShape, buildSrgbColorChoice, fetchUrlToBytes, parseChartWideTextStyle, parseDefRPrTextStyle, parseChartDataLabelOptions, shadowOffsetToDistanceAndDirection, positiveFixedAngleAttribute, xmlAttrNumber, parseCustomShows, parseShapeProps, parseActiveXControlsFromSlide, convertMetafileToDataUrl, first, children, ooxmlGradientAngleToCssDegrees, isAlternateContentChoiceSupported, detectStrictConformance, normalizeStrictXml, relayoutSmartArt, themeColorRefToSolidFillWithOpacity, FONT_ADVANCE_TABLES, DEFAULT_FONT_ADVANCE_TABLE, measureTextWidth, applyDrawingColorTransforms, applyThemeToData, detectFileFormat, parseOle2, EncryptedFileError, decryptPptx, encryptPptx, encodeXmlAttributeValue, encodeXmlTextValue, svgToCustomGeometryPaths, IncorrectPasswordError, parseEncryptionInfo, RC4_ALG_ID, isOle2CompoundFile, ENTRY_TYPE_ROOT, supportsChartGradientFill, DEFAULT_CHART_GRADIENT_ANGLE, decodeXmlEntities, preservesXmlWhitespace, annotateCustomGeometryCommandOrder, annotateSmartArtTextOrder, stripXmlOrderMarkers, normalizeStShapeType, applyCustomShows, applySections, reorderObjectKeysByLocalName, PRESENTATION_CHILD_ORDER, applyKinsokuToXml, normalizeNamespaceUri, backgroundStyleRefIsCurrent, backgroundRefNode, captureStyleBaseline, STYLE_MATRIX_FILL_KEYS, STYLE_MATRIX_LINE_KEYS, STYLE_MATRIX_EFFECT_KEYS, detectOleObjectType, inferOleExtensionFromTarget, backgroundStylePreset, isDarkColorMap, backgroundStyleColorMap, reResolveElementsForColorMapChange, deriveSlideTitles, parseP14DirectChild, parseP14FromExtLst, P14_TRANSITION_TYPES, parseSlideDrawingGuides, slideBackgroundStyleRefFromNode, cloneSlide, parseDrawingFraction, scrgbLinearToSrgb8, parseDrawingHueDegrees, hslToRgb, themeColorRefToXml, effectChild, mergeEffectNode, mergeAttributeEffectNode, findThemeEffectScheme, wrapFormatSchemeXml, effectIsPurelyStyleMatrix, prismFamilyFlags, prismFamilyTypeOfNode, prismFamilyTypeForFlags, P14_DIR_IS_ORIENTATION_TYPE, estimateMediaDurationMs, parseVmlElements, parseDrawingLineDash, parseLineSpacingMultiplier, parseLineSpacingExactPt, loadThemeVariants, parsePresentationDrawingGuides, parsePresentationSmartTags, resolveLayoutDisplayName, DEFAULT_MAX_UNCOMPRESSED_BYTES, guardZip, ZipBombError, MAX_ZIP_ENTRY_COUNT, detectDigitalSignatures, unwrapOleEmbedding, mimeTypeForOleFile, oleBytesToDataUrl, themeColorRefFromSchemeClr, extractGuidFromPartName, deobfuscateFont, detectFontFormat, parseKinsoku, parseLineStyle, parseChartUpDownBars, parseDataTable, parseChart3DSurfaces, parseChartAxes, parseBubbleChartOptions, parseChartLayouts, parseCxChartSeries, parseChartDataPointPictureBlipRel, parseSeriesDataPoints, parseMarker, parseSeriesDataLabels, parseChartDataPointPicture, parseImplicitBlipPictureFill, parseEmbeddedXlsx, relAttr, buildXml, chartTrendlineKind, parseChartManualLayout, parseDiagramRelationshipIds, parseSmartArtTextParagraphs, firstParagraphRuns, smartArtParagraphsText, parseSmartArtLayoutDefinition, parseSmartArtPresLayoutVars, readChartManualLayoutValues, parseSmartArtConnection, projectSmartArtNodeText, resolveSmartArtNodeStyleRoles, resolveSmartArtNodeCoherent3DOff, parseSmartArtDefinitionMetadata, parseSmartArtColorStyleLabels, buildSmartArtColorLists, buildSmartArtColorRoleMap, parseSmartArtQuickStyleLabels, resolveSmartArtEffectIntensity, parseSmartArtStyleLabelRefs, extractStyleReferenceColorXml, withThemePlaceholderColor, blendColorOntoWhite, CHART_ERROR_VALUE_TYPES, CHART_ERROR_BAR_TYPES, CHART_ERROR_BAR_DIRECTIONS } from './chunk-6IIMI5RS.mjs';
|
|
2
2
|
import { hasShapeProperties, hasTextProperties } from './chunk-GXHKNSZX.mjs';
|
|
3
3
|
import { EMU_PER_PX, EMU_PER_PIXEL, SYSTEM_COLOR_MAP, PRESET_COLOR_MAP, OOXML_PERCENT_UNITS, EMU_PER_POINT } from './chunk-CA7KCNL3.mjs';
|
|
4
4
|
import JSZip from 'jszip';
|
|
@@ -4329,6 +4329,153 @@ function materializeInheritedShapeTransform(shape, element) {
|
|
|
4329
4329
|
return transform2;
|
|
4330
4330
|
}
|
|
4331
4331
|
|
|
4332
|
+
// pptx/core/utils/placeholder-xml.ts
|
|
4333
|
+
function findNonVisualProps(rawXml) {
|
|
4334
|
+
for (const container of ["p:nvSpPr", "p:nvPicPr", "p:nvGraphicFramePr"]) {
|
|
4335
|
+
const parent = rawXml[container];
|
|
4336
|
+
const nvPr = parent?.["p:nvPr"];
|
|
4337
|
+
if (nvPr) {
|
|
4338
|
+
return nvPr;
|
|
4339
|
+
}
|
|
4340
|
+
}
|
|
4341
|
+
return void 0;
|
|
4342
|
+
}
|
|
4343
|
+
function retargetPlaceholder(rawXml, target) {
|
|
4344
|
+
const nvPr = findNonVisualProps(rawXml);
|
|
4345
|
+
if (!nvPr) {
|
|
4346
|
+
return;
|
|
4347
|
+
}
|
|
4348
|
+
const ph = nvPr["p:ph"] ?? {};
|
|
4349
|
+
nvPr["p:ph"] = ph;
|
|
4350
|
+
if (target.type) {
|
|
4351
|
+
ph["@_type"] = target.type;
|
|
4352
|
+
} else {
|
|
4353
|
+
delete ph["@_type"];
|
|
4354
|
+
}
|
|
4355
|
+
if (target.idx !== void 0) {
|
|
4356
|
+
ph["@_idx"] = target.idx;
|
|
4357
|
+
} else {
|
|
4358
|
+
delete ph["@_idx"];
|
|
4359
|
+
}
|
|
4360
|
+
}
|
|
4361
|
+
function setRawXmlTransform(rawXml, xEmu, yEmu, cxEmu, cyEmu) {
|
|
4362
|
+
const spPr = rawXml["p:spPr"];
|
|
4363
|
+
if (!spPr) {
|
|
4364
|
+
return;
|
|
4365
|
+
}
|
|
4366
|
+
const xfrm = spPr["a:xfrm"] ?? {};
|
|
4367
|
+
spPr["a:xfrm"] = xfrm;
|
|
4368
|
+
const off = xfrm["a:off"] ?? {};
|
|
4369
|
+
xfrm["a:off"] = off;
|
|
4370
|
+
off["@_x"] = String(xEmu);
|
|
4371
|
+
off["@_y"] = String(yEmu);
|
|
4372
|
+
const ext = xfrm["a:ext"] ?? {};
|
|
4373
|
+
xfrm["a:ext"] = ext;
|
|
4374
|
+
ext["@_cx"] = String(cxEmu);
|
|
4375
|
+
ext["@_cy"] = String(cyEmu);
|
|
4376
|
+
}
|
|
4377
|
+
function createEmptyPlaceholderElement(target, xEmu, yEmu, cxEmu, cyEmu, uniqueId) {
|
|
4378
|
+
if (cxEmu <= 0 || cyEmu <= 0) {
|
|
4379
|
+
return null;
|
|
4380
|
+
}
|
|
4381
|
+
const phNode = {};
|
|
4382
|
+
if (target.type) {
|
|
4383
|
+
phNode["@_type"] = target.type;
|
|
4384
|
+
}
|
|
4385
|
+
if (target.idx !== void 0) {
|
|
4386
|
+
phNode["@_idx"] = target.idx;
|
|
4387
|
+
}
|
|
4388
|
+
const rawXml = {
|
|
4389
|
+
"p:nvSpPr": {
|
|
4390
|
+
"p:cNvPr": {
|
|
4391
|
+
"@_id": uniqueId,
|
|
4392
|
+
"@_name": `Placeholder ${target.type || "content"}`
|
|
4393
|
+
},
|
|
4394
|
+
"p:cNvSpPr": {
|
|
4395
|
+
"a:spLocks": { "@_noGrp": "1" }
|
|
4396
|
+
},
|
|
4397
|
+
"p:nvPr": {
|
|
4398
|
+
"p:ph": phNode
|
|
4399
|
+
}
|
|
4400
|
+
},
|
|
4401
|
+
"p:spPr": {
|
|
4402
|
+
"a:xfrm": {
|
|
4403
|
+
"a:off": { "@_x": String(xEmu), "@_y": String(yEmu) },
|
|
4404
|
+
"a:ext": { "@_cx": String(cxEmu), "@_cy": String(cyEmu) }
|
|
4405
|
+
}
|
|
4406
|
+
},
|
|
4407
|
+
"p:txBody": {
|
|
4408
|
+
"a:bodyPr": {},
|
|
4409
|
+
"a:lstStyle": {},
|
|
4410
|
+
"a:p": { "a:endParaRPr": { "@_lang": "en-US" } }
|
|
4411
|
+
}
|
|
4412
|
+
};
|
|
4413
|
+
return {
|
|
4414
|
+
type: "text",
|
|
4415
|
+
id: `ph-${target.type || "content"}-${target.idx ?? "0"}-${uniqueId}`,
|
|
4416
|
+
x: Math.round(xEmu / EMU_PER_PX),
|
|
4417
|
+
y: Math.round(yEmu / EMU_PER_PX),
|
|
4418
|
+
width: Math.round(cxEmu / EMU_PER_PX),
|
|
4419
|
+
height: Math.round(cyEmu / EMU_PER_PX),
|
|
4420
|
+
text: "",
|
|
4421
|
+
rawXml
|
|
4422
|
+
};
|
|
4423
|
+
}
|
|
4424
|
+
|
|
4425
|
+
// pptx/core/core/runtime/save-geometry-validation.ts
|
|
4426
|
+
var FRAME_FIELDS = ["x", "y", "width", "height"];
|
|
4427
|
+
var OPTIONAL_FIELDS = [
|
|
4428
|
+
"xEmu",
|
|
4429
|
+
"yEmu",
|
|
4430
|
+
"widthEmu",
|
|
4431
|
+
"heightEmu",
|
|
4432
|
+
"rotation",
|
|
4433
|
+
"skewX",
|
|
4434
|
+
"skewY",
|
|
4435
|
+
"chOffXEmu",
|
|
4436
|
+
"chOffYEmu",
|
|
4437
|
+
"chExtWidthEmu",
|
|
4438
|
+
"chExtHeightEmu"
|
|
4439
|
+
];
|
|
4440
|
+
function omitsInheritedFrame(element) {
|
|
4441
|
+
if (!["text", "shape", "picture", "media"].includes(element.type) || !element.rawXml)
|
|
4442
|
+
return false;
|
|
4443
|
+
if (!xmlHasChild(findNonVisualProps(element.rawXml), "p:ph")) return false;
|
|
4444
|
+
if (xmlHasChild(xmlChild(element.rawXml, "p:spPr"), "a:xfrm") || xmlHasChild(element.rawXml, "p:xfrm"))
|
|
4445
|
+
return false;
|
|
4446
|
+
const baseline = element.inheritedTransform;
|
|
4447
|
+
if (!baseline) return FRAME_FIELDS.every((key2) => element[key2] === void 0);
|
|
4448
|
+
return FRAME_FIELDS.every(
|
|
4449
|
+
(key2) => Number.isFinite(baseline[key2]) && (element[key2] === void 0 || element[key2] === baseline[key2])
|
|
4450
|
+
) && ["rotation", "skewX", "skewY", "flipHorizontal", "flipVertical"].every(
|
|
4451
|
+
(key2) => (element[key2] ?? 0) === (baseline[key2] ?? 0)
|
|
4452
|
+
);
|
|
4453
|
+
}
|
|
4454
|
+
function validateElementGeometry(element, context, emuPerPx = 9525) {
|
|
4455
|
+
const inherited = omitsInheritedFrame(element);
|
|
4456
|
+
const record2 = element;
|
|
4457
|
+
const fields = [...inherited ? [] : FRAME_FIELDS, ...OPTIONAL_FIELDS];
|
|
4458
|
+
for (const field of fields) {
|
|
4459
|
+
const value = record2[field];
|
|
4460
|
+
if (OPTIONAL_FIELDS.includes(field) && value === void 0) continue;
|
|
4461
|
+
if (typeof value !== "number" || !Number.isFinite(value) || !Number.isFinite(value * emuPerPx)) {
|
|
4462
|
+
throw new Error(
|
|
4463
|
+
`${context}: element '${element.id}' (${element.name ?? "unnamed"}, type=${element.type}) has invalid ${field}=${String(value)}; expected a finite number`
|
|
4464
|
+
);
|
|
4465
|
+
}
|
|
4466
|
+
}
|
|
4467
|
+
if (element.type === "group") {
|
|
4468
|
+
for (const child16 of element.children) validateElementGeometry(child16, context, emuPerPx);
|
|
4469
|
+
}
|
|
4470
|
+
}
|
|
4471
|
+
function validateSlideGeometry(slides) {
|
|
4472
|
+
for (const slide of slides) {
|
|
4473
|
+
for (const element of slide.elements) {
|
|
4474
|
+
validateElementGeometry(element, `Slide ${slide.slideNumber} (${slide.id})`);
|
|
4475
|
+
}
|
|
4476
|
+
}
|
|
4477
|
+
}
|
|
4478
|
+
|
|
4332
4479
|
// pptx/core/core/builders/PptxElementTransformUpdater.ts
|
|
4333
4480
|
var PptxElementTransformUpdater = class {
|
|
4334
4481
|
applyTransform(shape, element, emuPerPx, enclosingGroupChildSpace) {
|
|
@@ -4337,6 +4484,7 @@ var PptxElementTransformUpdater = class {
|
|
|
4337
4484
|
if (!transform2) {
|
|
4338
4485
|
return;
|
|
4339
4486
|
}
|
|
4487
|
+
validateElementGeometry(element, "Transform writer", emuPerPx);
|
|
4340
4488
|
if (!transform2["a:off"]) {
|
|
4341
4489
|
transform2["a:off"] = {};
|
|
4342
4490
|
}
|
|
@@ -35491,6 +35639,75 @@ var PptxSaveConstantsFactory = class {
|
|
|
35491
35639
|
var defaultPptxSaveConstantsFactory = new PptxSaveConstantsFactory();
|
|
35492
35640
|
var createPptxSaveConstants = (conformance = "transitional") => defaultPptxSaveConstantsFactory.create(conformance);
|
|
35493
35641
|
|
|
35642
|
+
// pptx/core/utils/placeholder-remap.ts
|
|
35643
|
+
var TITLE_ROLE = /* @__PURE__ */ new Set(["title", "ctrtitle"]);
|
|
35644
|
+
var CONTENT_ROLE = /* @__PURE__ */ new Set([
|
|
35645
|
+
"body",
|
|
35646
|
+
"obj",
|
|
35647
|
+
"subtitle",
|
|
35648
|
+
"pic",
|
|
35649
|
+
"chart",
|
|
35650
|
+
"tbl",
|
|
35651
|
+
"media",
|
|
35652
|
+
"clipart",
|
|
35653
|
+
"dgm"
|
|
35654
|
+
]);
|
|
35655
|
+
function placeholderContentRole(type) {
|
|
35656
|
+
const declared = (type ?? "").trim().toLowerCase() || "body";
|
|
35657
|
+
if (TITLE_ROLE.has(declared)) {
|
|
35658
|
+
return "title";
|
|
35659
|
+
}
|
|
35660
|
+
if (CONTENT_ROLE.has(declared)) {
|
|
35661
|
+
return "content";
|
|
35662
|
+
}
|
|
35663
|
+
return declared;
|
|
35664
|
+
}
|
|
35665
|
+
function preferredPlaceholderTypes(element) {
|
|
35666
|
+
switch (element.type) {
|
|
35667
|
+
case "image":
|
|
35668
|
+
case "picture":
|
|
35669
|
+
return ["pic", "obj", "body"];
|
|
35670
|
+
case "chart":
|
|
35671
|
+
return ["chart", "obj", "body"];
|
|
35672
|
+
case "table":
|
|
35673
|
+
return ["tbl", "obj", "body"];
|
|
35674
|
+
case "media":
|
|
35675
|
+
case "model3d":
|
|
35676
|
+
return ["media", "pic", "obj", "body"];
|
|
35677
|
+
case "smartArt":
|
|
35678
|
+
return ["dgm", "obj", "body"];
|
|
35679
|
+
case "text":
|
|
35680
|
+
return ["body", "subtitle", "obj"];
|
|
35681
|
+
default:
|
|
35682
|
+
return ["obj", "body"];
|
|
35683
|
+
}
|
|
35684
|
+
}
|
|
35685
|
+
function scorePlaceholderMatch(element, source, target) {
|
|
35686
|
+
if (placeholderContentRole(source.type) !== placeholderContentRole(target.type)) {
|
|
35687
|
+
return -1;
|
|
35688
|
+
}
|
|
35689
|
+
const sourceType = normalizeType(source.type);
|
|
35690
|
+
const targetType = normalizeType(target.type);
|
|
35691
|
+
let score = 1;
|
|
35692
|
+
if (source.idx !== void 0 && source.idx === target.idx) {
|
|
35693
|
+
score += 100;
|
|
35694
|
+
}
|
|
35695
|
+
if (sourceType === targetType) {
|
|
35696
|
+
score += 50;
|
|
35697
|
+
}
|
|
35698
|
+
const preferred = preferredPlaceholderTypes(element).indexOf(targetType);
|
|
35699
|
+
if (preferred >= 0) {
|
|
35700
|
+
score += 30 - preferred * 5;
|
|
35701
|
+
}
|
|
35702
|
+
if (targetType === "obj") {
|
|
35703
|
+
score += 10;
|
|
35704
|
+
}
|
|
35705
|
+
return score;
|
|
35706
|
+
}
|
|
35707
|
+
function normalizeType(type) {
|
|
35708
|
+
return (type ?? "").trim().toLowerCase() || "body";
|
|
35709
|
+
}
|
|
35710
|
+
|
|
35494
35711
|
// pptx/core/core/runtime/master-save-helpers.ts
|
|
35495
35712
|
function applyHeaderFooterFlagsToNode(root, flags) {
|
|
35496
35713
|
if (!flags || Object.keys(flags).length === 0) {
|
|
@@ -53572,168 +53789,6 @@ function buildChartUserShapesDrawingXml(shapes) {
|
|
|
53572
53789
|
return { "c:userShapes": root };
|
|
53573
53790
|
}
|
|
53574
53791
|
|
|
53575
|
-
// pptx/core/utils/placeholder-remap.ts
|
|
53576
|
-
var TITLE_ROLE = /* @__PURE__ */ new Set(["title", "ctrtitle"]);
|
|
53577
|
-
var CONTENT_ROLE = /* @__PURE__ */ new Set([
|
|
53578
|
-
"body",
|
|
53579
|
-
"obj",
|
|
53580
|
-
"subtitle",
|
|
53581
|
-
"pic",
|
|
53582
|
-
"chart",
|
|
53583
|
-
"tbl",
|
|
53584
|
-
"media",
|
|
53585
|
-
"clipart",
|
|
53586
|
-
"dgm"
|
|
53587
|
-
]);
|
|
53588
|
-
function placeholderContentRole(type) {
|
|
53589
|
-
const declared = (type ?? "").trim().toLowerCase() || "body";
|
|
53590
|
-
if (TITLE_ROLE.has(declared)) {
|
|
53591
|
-
return "title";
|
|
53592
|
-
}
|
|
53593
|
-
if (CONTENT_ROLE.has(declared)) {
|
|
53594
|
-
return "content";
|
|
53595
|
-
}
|
|
53596
|
-
return declared;
|
|
53597
|
-
}
|
|
53598
|
-
function preferredPlaceholderTypes(element) {
|
|
53599
|
-
switch (element.type) {
|
|
53600
|
-
case "image":
|
|
53601
|
-
case "picture":
|
|
53602
|
-
return ["pic", "obj", "body"];
|
|
53603
|
-
case "chart":
|
|
53604
|
-
return ["chart", "obj", "body"];
|
|
53605
|
-
case "table":
|
|
53606
|
-
return ["tbl", "obj", "body"];
|
|
53607
|
-
case "media":
|
|
53608
|
-
case "model3d":
|
|
53609
|
-
return ["media", "pic", "obj", "body"];
|
|
53610
|
-
case "smartArt":
|
|
53611
|
-
return ["dgm", "obj", "body"];
|
|
53612
|
-
case "text":
|
|
53613
|
-
return ["body", "subtitle", "obj"];
|
|
53614
|
-
default:
|
|
53615
|
-
return ["obj", "body"];
|
|
53616
|
-
}
|
|
53617
|
-
}
|
|
53618
|
-
function scorePlaceholderMatch(element, source, target) {
|
|
53619
|
-
if (placeholderContentRole(source.type) !== placeholderContentRole(target.type)) {
|
|
53620
|
-
return -1;
|
|
53621
|
-
}
|
|
53622
|
-
const sourceType = normalizeType(source.type);
|
|
53623
|
-
const targetType = normalizeType(target.type);
|
|
53624
|
-
let score = 1;
|
|
53625
|
-
if (source.idx !== void 0 && source.idx === target.idx) {
|
|
53626
|
-
score += 100;
|
|
53627
|
-
}
|
|
53628
|
-
if (sourceType === targetType) {
|
|
53629
|
-
score += 50;
|
|
53630
|
-
}
|
|
53631
|
-
const preferred = preferredPlaceholderTypes(element).indexOf(targetType);
|
|
53632
|
-
if (preferred >= 0) {
|
|
53633
|
-
score += 30 - preferred * 5;
|
|
53634
|
-
}
|
|
53635
|
-
if (targetType === "obj") {
|
|
53636
|
-
score += 10;
|
|
53637
|
-
}
|
|
53638
|
-
return score;
|
|
53639
|
-
}
|
|
53640
|
-
function normalizeType(type) {
|
|
53641
|
-
return (type ?? "").trim().toLowerCase() || "body";
|
|
53642
|
-
}
|
|
53643
|
-
|
|
53644
|
-
// pptx/core/utils/placeholder-xml.ts
|
|
53645
|
-
function findNonVisualProps(rawXml) {
|
|
53646
|
-
for (const container of ["p:nvSpPr", "p:nvPicPr", "p:nvGraphicFramePr"]) {
|
|
53647
|
-
const parent = rawXml[container];
|
|
53648
|
-
const nvPr = parent?.["p:nvPr"];
|
|
53649
|
-
if (nvPr) {
|
|
53650
|
-
return nvPr;
|
|
53651
|
-
}
|
|
53652
|
-
}
|
|
53653
|
-
return void 0;
|
|
53654
|
-
}
|
|
53655
|
-
function retargetPlaceholder(rawXml, target) {
|
|
53656
|
-
const nvPr = findNonVisualProps(rawXml);
|
|
53657
|
-
if (!nvPr) {
|
|
53658
|
-
return;
|
|
53659
|
-
}
|
|
53660
|
-
const ph = nvPr["p:ph"] ?? {};
|
|
53661
|
-
nvPr["p:ph"] = ph;
|
|
53662
|
-
if (target.type) {
|
|
53663
|
-
ph["@_type"] = target.type;
|
|
53664
|
-
} else {
|
|
53665
|
-
delete ph["@_type"];
|
|
53666
|
-
}
|
|
53667
|
-
if (target.idx !== void 0) {
|
|
53668
|
-
ph["@_idx"] = target.idx;
|
|
53669
|
-
} else {
|
|
53670
|
-
delete ph["@_idx"];
|
|
53671
|
-
}
|
|
53672
|
-
}
|
|
53673
|
-
function setRawXmlTransform(rawXml, xEmu, yEmu, cxEmu, cyEmu) {
|
|
53674
|
-
const spPr = rawXml["p:spPr"];
|
|
53675
|
-
if (!spPr) {
|
|
53676
|
-
return;
|
|
53677
|
-
}
|
|
53678
|
-
const xfrm = spPr["a:xfrm"] ?? {};
|
|
53679
|
-
spPr["a:xfrm"] = xfrm;
|
|
53680
|
-
const off = xfrm["a:off"] ?? {};
|
|
53681
|
-
xfrm["a:off"] = off;
|
|
53682
|
-
off["@_x"] = String(xEmu);
|
|
53683
|
-
off["@_y"] = String(yEmu);
|
|
53684
|
-
const ext = xfrm["a:ext"] ?? {};
|
|
53685
|
-
xfrm["a:ext"] = ext;
|
|
53686
|
-
ext["@_cx"] = String(cxEmu);
|
|
53687
|
-
ext["@_cy"] = String(cyEmu);
|
|
53688
|
-
}
|
|
53689
|
-
function createEmptyPlaceholderElement(target, xEmu, yEmu, cxEmu, cyEmu, uniqueId) {
|
|
53690
|
-
if (cxEmu <= 0 || cyEmu <= 0) {
|
|
53691
|
-
return null;
|
|
53692
|
-
}
|
|
53693
|
-
const phNode = {};
|
|
53694
|
-
if (target.type) {
|
|
53695
|
-
phNode["@_type"] = target.type;
|
|
53696
|
-
}
|
|
53697
|
-
if (target.idx !== void 0) {
|
|
53698
|
-
phNode["@_idx"] = target.idx;
|
|
53699
|
-
}
|
|
53700
|
-
const rawXml = {
|
|
53701
|
-
"p:nvSpPr": {
|
|
53702
|
-
"p:cNvPr": {
|
|
53703
|
-
"@_id": uniqueId,
|
|
53704
|
-
"@_name": `Placeholder ${target.type || "content"}`
|
|
53705
|
-
},
|
|
53706
|
-
"p:cNvSpPr": {
|
|
53707
|
-
"a:spLocks": { "@_noGrp": "1" }
|
|
53708
|
-
},
|
|
53709
|
-
"p:nvPr": {
|
|
53710
|
-
"p:ph": phNode
|
|
53711
|
-
}
|
|
53712
|
-
},
|
|
53713
|
-
"p:spPr": {
|
|
53714
|
-
"a:xfrm": {
|
|
53715
|
-
"a:off": { "@_x": String(xEmu), "@_y": String(yEmu) },
|
|
53716
|
-
"a:ext": { "@_cx": String(cxEmu), "@_cy": String(cyEmu) }
|
|
53717
|
-
}
|
|
53718
|
-
},
|
|
53719
|
-
"p:txBody": {
|
|
53720
|
-
"a:bodyPr": {},
|
|
53721
|
-
"a:lstStyle": {},
|
|
53722
|
-
"a:p": { "a:endParaRPr": { "@_lang": "en-US" } }
|
|
53723
|
-
}
|
|
53724
|
-
};
|
|
53725
|
-
return {
|
|
53726
|
-
type: "text",
|
|
53727
|
-
id: `ph-${target.type || "content"}-${target.idx ?? "0"}-${uniqueId}`,
|
|
53728
|
-
x: Math.round(xEmu / EMU_PER_PX),
|
|
53729
|
-
y: Math.round(yEmu / EMU_PER_PX),
|
|
53730
|
-
width: Math.round(cxEmu / EMU_PER_PX),
|
|
53731
|
-
height: Math.round(cyEmu / EMU_PER_PX),
|
|
53732
|
-
text: "",
|
|
53733
|
-
rawXml
|
|
53734
|
-
};
|
|
53735
|
-
}
|
|
53736
|
-
|
|
53737
53792
|
// pptx/core/utils/text-fill-blip.ts
|
|
53738
53793
|
function resolveTextFillBlip(blipFill, lookupTarget, resolveArchivePath, allowExternal) {
|
|
53739
53794
|
const blip = blipFill["a:blip"];
|
|
@@ -73024,6 +73079,19 @@ var PptxHandlerRuntime54 = class _PptxHandlerRuntime extends PptxHandlerRuntime5
|
|
|
73024
73079
|
return this.isStrictOoxml ? "strict" : "transitional";
|
|
73025
73080
|
}
|
|
73026
73081
|
async save(slides, options) {
|
|
73082
|
+
validateSlideGeometry(slides);
|
|
73083
|
+
const templates = [
|
|
73084
|
+
...options?.slideMasters ?? [],
|
|
73085
|
+
...options?.slideLayouts ?? [],
|
|
73086
|
+
...options?.slideMasters?.flatMap((master) => master.layouts ?? []) ?? [],
|
|
73087
|
+
...options?.notesMaster ? [options.notesMaster] : [],
|
|
73088
|
+
...options?.handoutMaster ? [options.handoutMaster] : []
|
|
73089
|
+
];
|
|
73090
|
+
for (const template of templates) {
|
|
73091
|
+
for (const element of template.elements ?? []) {
|
|
73092
|
+
validateElementGeometry(element, `Template (${template.path})`);
|
|
73093
|
+
}
|
|
73094
|
+
}
|
|
73027
73095
|
if (options?.outputFormat === "ppt") {
|
|
73028
73096
|
return this.saveAsLegacyPpt(
|
|
73029
73097
|
slides,
|
|
@@ -73953,8 +74021,7 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
|
|
|
73953
74021
|
return this.scanPlaceholderBuckets(spTree, (info) => info?.type === type);
|
|
73954
74022
|
}
|
|
73955
74023
|
/** The layout and master counterparts of a placeholder, unmerged. */
|
|
73956
|
-
findPlaceholderContexts(slidePath, expected) {
|
|
73957
|
-
const layoutPath = this.resolveLayoutPathForSlide(slidePath);
|
|
74024
|
+
findPlaceholderContexts(slidePath, expected, layoutPath = this.resolveLayoutPathForSlide(slidePath)) {
|
|
73958
74025
|
if (!layoutPath) {
|
|
73959
74026
|
return {};
|
|
73960
74027
|
}
|
|
@@ -73966,10 +74033,11 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
|
|
|
73966
74033
|
const master = this.findPlaceholderInShapeTree(masterSpTree, expected) ?? this.findSingletonPlaceholderInShapeTree(masterSpTree, expected);
|
|
73967
74034
|
return { layout, master };
|
|
73968
74035
|
}
|
|
73969
|
-
findPlaceholderContext(slidePath, expected) {
|
|
74036
|
+
findPlaceholderContext(slidePath, expected, layoutPath) {
|
|
73970
74037
|
const { layout: layoutContext, master: masterContext } = this.findPlaceholderContexts(
|
|
73971
74038
|
slidePath,
|
|
73972
|
-
expected
|
|
74039
|
+
expected,
|
|
74040
|
+
layoutPath
|
|
73973
74041
|
);
|
|
73974
74042
|
if (!layoutContext) {
|
|
73975
74043
|
return masterContext;
|
|
@@ -73995,8 +74063,8 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
|
|
|
73995
74063
|
* a master `p:sp`), so the layout keeps winning exactly as it does when
|
|
73996
74064
|
* both are shapes.
|
|
73997
74065
|
*/
|
|
73998
|
-
findPlaceholderNode(slidePath, expected) {
|
|
73999
|
-
const { layout, master } = this.findPlaceholderContexts(slidePath, expected);
|
|
74066
|
+
findPlaceholderNode(slidePath, expected, layoutPath) {
|
|
74067
|
+
const { layout, master } = this.findPlaceholderContexts(slidePath, expected, layoutPath);
|
|
74000
74068
|
const firstNode2 = (context) => context?.shape ?? context?.picture ?? context?.graphicFrame;
|
|
74001
74069
|
const layoutNode = firstNode2(layout);
|
|
74002
74070
|
const masterNode = firstNode2(master);
|
|
@@ -74037,8 +74105,7 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
|
|
|
74037
74105
|
* reference. Checks the layout cache first, then the master cache, and
|
|
74038
74106
|
* merges them so that layout values take priority over master values.
|
|
74039
74107
|
*/
|
|
74040
|
-
lookupPlaceholderDefaults(slidePath, phInfo) {
|
|
74041
|
-
const layoutPath = this.resolveLayoutPathForSlide(slidePath);
|
|
74108
|
+
lookupPlaceholderDefaults(slidePath, phInfo, layoutPath = this.resolveLayoutPathForSlide(slidePath)) {
|
|
74042
74109
|
if (!layoutPath) {
|
|
74043
74110
|
return void 0;
|
|
74044
74111
|
}
|
|
@@ -74728,6 +74795,53 @@ var PptxHandlerRuntime61 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
|
|
|
74728
74795
|
return null;
|
|
74729
74796
|
}
|
|
74730
74797
|
}
|
|
74798
|
+
/**
|
|
74799
|
+
* A text-bearing shape whose picture fill is inherited from its layout or
|
|
74800
|
+
* master placeholder (`a:blipFill` absent from its own `spPr`) gets
|
|
74801
|
+
* `fillMode: 'image'` from the merged properties but no image: the blip's
|
|
74802
|
+
* relationship id belongs to the part that authored it, not the slide.
|
|
74803
|
+
* Resolve it against the layout's, then the master's, relationships.
|
|
74804
|
+
*/
|
|
74805
|
+
async resolveInheritedFillImage(element, shape, slidePath) {
|
|
74806
|
+
const style = element?.shapeStyle;
|
|
74807
|
+
if (!element || !style || style.fillMode !== "image" || style.fillImageUrl) {
|
|
74808
|
+
return;
|
|
74809
|
+
}
|
|
74810
|
+
const placeholderInfo = this.extractPlaceholderInfo(xmlPath(shape, "p:nvSpPr", "p:nvPr"));
|
|
74811
|
+
const inherited = placeholderInfo ? this.findPlaceholderContext(slidePath, placeholderInfo) : void 0;
|
|
74812
|
+
const effectiveSpPr = this.mergeXmlObjects(
|
|
74813
|
+
inherited?.shape?.["p:spPr"],
|
|
74814
|
+
xmlChild(shape, "p:spPr")
|
|
74815
|
+
);
|
|
74816
|
+
const blipFill = effectiveSpPr?.["a:blipFill"];
|
|
74817
|
+
const blip = blipFill?.["a:blip"];
|
|
74818
|
+
const relId = String(blip?.["@_r:embed"] ?? blip?.["@_r:link"] ?? "");
|
|
74819
|
+
if (!relId) {
|
|
74820
|
+
return;
|
|
74821
|
+
}
|
|
74822
|
+
const layoutPath = this.resolveLayoutPathForSlide(slidePath);
|
|
74823
|
+
const masterPath = layoutPath ? this.resolveMasterPathForLayout(layoutPath) : void 0;
|
|
74824
|
+
for (const partPath of [layoutPath, masterPath]) {
|
|
74825
|
+
if (!partPath || !this.slideRelsMap.get(partPath)?.has(relId)) {
|
|
74826
|
+
continue;
|
|
74827
|
+
}
|
|
74828
|
+
const fill = await resolveGroupFillImagePure(
|
|
74829
|
+
this,
|
|
74830
|
+
blipFill,
|
|
74831
|
+
partPath
|
|
74832
|
+
);
|
|
74833
|
+
if (fill) {
|
|
74834
|
+
const isUrl = /^(?:data:|blob:|https?:)/u.test(fill.fillImageUrl);
|
|
74835
|
+
const decoded = isUrl ? void 0 : await this.getImageData(fill.fillImageUrl);
|
|
74836
|
+
style.fillImageUrl = decoded ?? fill.fillImageUrl;
|
|
74837
|
+
style.fillImageMode = fill.fillImageMode;
|
|
74838
|
+
if (element.type === "text") {
|
|
74839
|
+
element.type = "shape";
|
|
74840
|
+
}
|
|
74841
|
+
}
|
|
74842
|
+
return;
|
|
74843
|
+
}
|
|
74844
|
+
}
|
|
74731
74845
|
textVerticalAlignFromDrawingValue(value) {
|
|
74732
74846
|
const normalized = String(value ?? "").trim().toLowerCase();
|
|
74733
74847
|
if (normalized.length === 0) {
|
|
@@ -76124,14 +76238,14 @@ var PptxHandlerRuntime66 = class extends PptxHandlerRuntime65 {
|
|
|
76124
76238
|
|
|
76125
76239
|
// pptx/core/core/runtime/PptxHandlerRuntimeShapeParsing.ts
|
|
76126
76240
|
var PptxHandlerRuntime67 = class _PptxHandlerRuntime extends PptxHandlerRuntime66 {
|
|
76127
|
-
parseShape(shape, id, slidePath) {
|
|
76241
|
+
parseShape(shape, id, slidePath, layoutPath) {
|
|
76128
76242
|
try {
|
|
76129
76243
|
const spPr = shape["p:spPr"];
|
|
76130
76244
|
const slideRelationshipMap = slidePath ? this.slideRelsMap.get(slidePath) : void 0;
|
|
76131
76245
|
const placeholderInfo = this.extractPlaceholderInfo(
|
|
76132
76246
|
shape?.["p:nvSpPr"]?.["p:nvPr"]
|
|
76133
76247
|
);
|
|
76134
|
-
const inheritedPlaceholder = slidePath && placeholderInfo ? this.findPlaceholderContext(slidePath, placeholderInfo) : void 0;
|
|
76248
|
+
const inheritedPlaceholder = (slidePath || layoutPath) && placeholderInfo ? this.findPlaceholderContext(slidePath ?? "", placeholderInfo, layoutPath) : void 0;
|
|
76135
76249
|
const inheritedSpPr = inheritedPlaceholder?.shape?.["p:spPr"] || inheritedPlaceholder?.picture?.["p:spPr"];
|
|
76136
76250
|
const effectiveSpPr = spPr ? {
|
|
76137
76251
|
...spPr,
|
|
@@ -76257,7 +76371,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
|
|
|
76257
76371
|
);
|
|
76258
76372
|
const linkedTxbxId = bodyPropResult.linkedTxbxId;
|
|
76259
76373
|
const linkedTxbxSeq = bodyPropResult.linkedTxbxSeq;
|
|
76260
|
-
const phDefaults = slidePath && placeholderInfo ? this.lookupPlaceholderDefaults(slidePath, placeholderInfo) : void 0;
|
|
76374
|
+
const phDefaults = (slidePath || layoutPath) && placeholderInfo ? this.lookupPlaceholderDefaults(slidePath ?? "", placeholderInfo, layoutPath) : void 0;
|
|
76261
76375
|
if (phDefaults) {
|
|
76262
76376
|
this.applyPlaceholderBodyDefaults(textStyle, phDefaults);
|
|
76263
76377
|
}
|
|
@@ -77113,7 +77227,9 @@ var PptxHandlerRuntime69 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
|
|
|
77113
77227
|
slidePath
|
|
77114
77228
|
);
|
|
77115
77229
|
}
|
|
77116
|
-
|
|
77230
|
+
const parsed = this.parseShape(node, `${idPrefix}shape-${indexInType}`, slidePath);
|
|
77231
|
+
await this.resolveInheritedFillImage(parsed, node, slidePath);
|
|
77232
|
+
return parsed;
|
|
77117
77233
|
}
|
|
77118
77234
|
case "p:pic":
|
|
77119
77235
|
return this.parsePicture(node, `${idPrefix}pic-${indexInType}`, slidePath);
|
|
@@ -85226,8 +85342,175 @@ var PptxHandlerRuntime102 = class extends PptxHandlerRuntime101 {
|
|
|
85226
85342
|
}
|
|
85227
85343
|
};
|
|
85228
85344
|
|
|
85229
|
-
// pptx/core/core/runtime/
|
|
85345
|
+
// pptx/core/core/runtime/sdk-placeholder.ts
|
|
85346
|
+
var TEXT_PLACEHOLDER_TYPES = /* @__PURE__ */ new Set([
|
|
85347
|
+
"title",
|
|
85348
|
+
"ctrtitle",
|
|
85349
|
+
"subtitle",
|
|
85350
|
+
"body",
|
|
85351
|
+
"obj",
|
|
85352
|
+
"dt",
|
|
85353
|
+
"ftr",
|
|
85354
|
+
"hdr",
|
|
85355
|
+
"sldnum"
|
|
85356
|
+
]);
|
|
85357
|
+
function selectTextPlaceholder(input, type, options, slots) {
|
|
85358
|
+
if (!TEXT_PLACEHOLDER_TYPES.has(type.toLowerCase())) {
|
|
85359
|
+
throw new Error(`Unsupported text placeholder type: ${type}`);
|
|
85360
|
+
}
|
|
85361
|
+
if (options.idx !== void 0 && (!Number.isInteger(options.idx) || options.idx < 0 || options.idx > 4294967295)) {
|
|
85362
|
+
throw new Error("Placeholder idx must be an unsigned 32-bit integer");
|
|
85363
|
+
}
|
|
85364
|
+
const source = {
|
|
85365
|
+
type: type.toLowerCase(),
|
|
85366
|
+
...options.idx !== void 0 ? { idx: String(options.idx) } : {}
|
|
85367
|
+
};
|
|
85368
|
+
let best;
|
|
85369
|
+
let bestScore = 0;
|
|
85370
|
+
for (const slot of slots) {
|
|
85371
|
+
if (!TEXT_PLACEHOLDER_TYPES.has(slot.phInfo.type ?? "obj")) continue;
|
|
85372
|
+
if (source.idx !== void 0 && source.idx !== (slot.phInfo.idx ?? "0")) continue;
|
|
85373
|
+
const score = scorePlaceholderMatch(input, source, slot.phInfo);
|
|
85374
|
+
if (score > bestScore) {
|
|
85375
|
+
best = slot;
|
|
85376
|
+
bestScore = score;
|
|
85377
|
+
}
|
|
85378
|
+
}
|
|
85379
|
+
return best ? { type: canonicalPlaceholderType(best.phInfo.type ?? "obj"), idx: best.phInfo.idx } : { type: canonicalPlaceholderType(source.type), idx: source.idx };
|
|
85380
|
+
}
|
|
85381
|
+
function withoutFallbackLanguage(properties) {
|
|
85382
|
+
const { "@_lang": language, ...rest } = properties;
|
|
85383
|
+
if (language !== "en-US") return properties;
|
|
85384
|
+
const keys = Object.keys(rest);
|
|
85385
|
+
return keys.length === 0 || keys.length === 1 && rest["@_dirty"] === "0" ? void 0 : rest;
|
|
85386
|
+
}
|
|
85387
|
+
function stripFallbackLanguage(node, key2) {
|
|
85388
|
+
const properties = node[key2];
|
|
85389
|
+
if (!properties || typeof properties !== "object") return node;
|
|
85390
|
+
const next = withoutFallbackLanguage(properties);
|
|
85391
|
+
if (next === properties) return node;
|
|
85392
|
+
const result = {};
|
|
85393
|
+
for (const [name, value] of Object.entries(node)) {
|
|
85394
|
+
if (name !== key2) result[name] = value;
|
|
85395
|
+
else if (next) result[name] = next;
|
|
85396
|
+
}
|
|
85397
|
+
return result;
|
|
85398
|
+
}
|
|
85399
|
+
function withoutFallbackLanguages(paragraphs) {
|
|
85400
|
+
return paragraphs.map((paragraph) => {
|
|
85401
|
+
const next = { ...stripFallbackLanguage(paragraph, "a:endParaRPr") };
|
|
85402
|
+
for (const child16 of ["a:r", "a:br", "a:fld"]) {
|
|
85403
|
+
const nodes = next[child16];
|
|
85404
|
+
if (nodes === void 0) continue;
|
|
85405
|
+
next[child16] = Array.isArray(nodes) ? nodes.map((node) => stripFallbackLanguage(node, "a:rPr")) : stripFallbackLanguage(nodes, "a:rPr");
|
|
85406
|
+
}
|
|
85407
|
+
return next;
|
|
85408
|
+
});
|
|
85409
|
+
}
|
|
85410
|
+
function placeholderShape2(identity, paragraphs) {
|
|
85411
|
+
paragraphs = withoutFallbackLanguages(paragraphs);
|
|
85412
|
+
return {
|
|
85413
|
+
"p:nvSpPr": {
|
|
85414
|
+
"p:cNvPr": { "@_id": "2", "@_name": `Placeholder ${identity.type}` },
|
|
85415
|
+
"p:cNvSpPr": { "a:spLocks": { "@_noGrp": "1" } },
|
|
85416
|
+
"p:nvPr": {
|
|
85417
|
+
"p:ph": {
|
|
85418
|
+
"@_type": identity.type,
|
|
85419
|
+
...identity.idx !== void 0 ? { "@_idx": identity.idx } : {}
|
|
85420
|
+
}
|
|
85421
|
+
}
|
|
85422
|
+
},
|
|
85423
|
+
"p:spPr": {},
|
|
85424
|
+
"p:txBody": { "a:bodyPr": {}, "a:lstStyle": {}, "a:p": paragraphs }
|
|
85425
|
+
};
|
|
85426
|
+
}
|
|
85427
|
+
function applyPlaceholderFrame(shape, inherited, options, emuPerPx, materializeFrame = false) {
|
|
85428
|
+
for (const key2 of ["x", "y", "width", "height"]) {
|
|
85429
|
+
if (options[key2] !== void 0 && !Number.isFinite(options[key2])) {
|
|
85430
|
+
throw new Error(`Invalid placeholder frame for ${key2}: expected a finite number`);
|
|
85431
|
+
}
|
|
85432
|
+
}
|
|
85433
|
+
const off = xmlPath(inherited, "p:spPr", "a:xfrm", "a:off");
|
|
85434
|
+
const ext = xmlPath(inherited, "p:spPr", "a:xfrm", "a:ext");
|
|
85435
|
+
const frame = {
|
|
85436
|
+
x: options.x ?? (off?.["@_x"] !== void 0 ? Number(off["@_x"]) / emuPerPx : void 0),
|
|
85437
|
+
y: options.y ?? (off?.["@_y"] !== void 0 ? Number(off["@_y"]) / emuPerPx : void 0),
|
|
85438
|
+
width: options.width ?? (ext?.["@_cx"] !== void 0 ? Number(ext["@_cx"]) / emuPerPx : void 0),
|
|
85439
|
+
height: options.height ?? (ext?.["@_cy"] !== void 0 ? Number(ext["@_cy"]) / emuPerPx : void 0)
|
|
85440
|
+
};
|
|
85441
|
+
for (const [key2, value] of Object.entries(frame)) {
|
|
85442
|
+
if (!Number.isFinite(value)) {
|
|
85443
|
+
throw new Error(
|
|
85444
|
+
`No matching placeholder frame for ${key2}; supply a complete explicit frame or choose a layout containing this slot`
|
|
85445
|
+
);
|
|
85446
|
+
}
|
|
85447
|
+
}
|
|
85448
|
+
if (materializeFrame || ["x", "y", "width", "height"].some((key2) => options[key2] !== void 0)) {
|
|
85449
|
+
setRawXmlTransform(
|
|
85450
|
+
shape,
|
|
85451
|
+
...["x", "y", "width", "height"].map(
|
|
85452
|
+
(key2) => Math.round(frame[key2] * emuPerPx)
|
|
85453
|
+
)
|
|
85454
|
+
);
|
|
85455
|
+
}
|
|
85456
|
+
}
|
|
85457
|
+
|
|
85458
|
+
// pptx/core/core/runtime/PptxHandlerRuntimeSdkPlaceholders.ts
|
|
85230
85459
|
var PptxHandlerRuntime103 = class _PptxHandlerRuntime extends PptxHandlerRuntime102 {
|
|
85460
|
+
createPlaceholderElement(layoutPath, input, type, options) {
|
|
85461
|
+
if (input.type !== "text") throw new Error("Placeholder input must be text");
|
|
85462
|
+
const layout = this.layoutXmlMap.get(layoutPath);
|
|
85463
|
+
if (!layout) throw new Error(`Unknown layout: ${layoutPath}`);
|
|
85464
|
+
const identity = selectTextPlaceholder(
|
|
85465
|
+
input,
|
|
85466
|
+
type,
|
|
85467
|
+
options,
|
|
85468
|
+
this.extractLayoutPlaceholders(layout, layoutPath)
|
|
85469
|
+
);
|
|
85470
|
+
const shape = placeholderShape2(
|
|
85471
|
+
identity,
|
|
85472
|
+
this.createParagraphsFromTextContent(input.text, void 0, input.textSegments)
|
|
85473
|
+
);
|
|
85474
|
+
const inherited = this.findPlaceholderNode(
|
|
85475
|
+
"",
|
|
85476
|
+
{ type: identity.type.toLowerCase(), idx: identity.idx },
|
|
85477
|
+
layoutPath
|
|
85478
|
+
);
|
|
85479
|
+
const fallback = this.sdkMasterFrame(layoutPath, identity.type, identity.idx, inherited);
|
|
85480
|
+
applyPlaceholderFrame(
|
|
85481
|
+
shape,
|
|
85482
|
+
fallback ?? inherited,
|
|
85483
|
+
options,
|
|
85484
|
+
_PptxHandlerRuntime.EMU_PER_PX,
|
|
85485
|
+
fallback !== void 0
|
|
85486
|
+
);
|
|
85487
|
+
const element = this.parseShape(shape, input.id, void 0, layoutPath);
|
|
85488
|
+
if (!element) throw new Error("Unable to resolve placeholder content");
|
|
85489
|
+
if ((element.type === "text" || element.type === "shape") && !element.textStyle && element.textSegments?.[0]?.style) {
|
|
85490
|
+
element.textStyle = { ...element.textSegments[0].style };
|
|
85491
|
+
}
|
|
85492
|
+
return element;
|
|
85493
|
+
}
|
|
85494
|
+
sdkMasterFrame(layoutPath, type, idx, inherited) {
|
|
85495
|
+
if (!inherited) return void 0;
|
|
85496
|
+
if (xmlPath(inherited, "p:spPr", "a:xfrm", "a:off") && xmlPath(inherited, "p:spPr", "a:xfrm", "a:ext"))
|
|
85497
|
+
return void 0;
|
|
85498
|
+
const masterPath = this.resolveMasterPathForLayout(layoutPath);
|
|
85499
|
+
const tree = masterPath ? xmlPath(this.masterXmlMap.get(masterPath), "p:sldMaster", "p:cSld", "p:spTree") : void 0;
|
|
85500
|
+
const role = placeholderContentRole(type.toLowerCase());
|
|
85501
|
+
const candidates = this.ensureArray(tree?.["p:sp"]).filter((shape) => {
|
|
85502
|
+
const info = this.extractPlaceholderInfo(xmlPath(shape, "p:nvSpPr", "p:nvPr"));
|
|
85503
|
+
return info && placeholderContentRole(info.type) === role;
|
|
85504
|
+
});
|
|
85505
|
+
const master = candidates.find(
|
|
85506
|
+
(shape) => this.extractPlaceholderInfo(xmlPath(shape, "p:nvSpPr", "p:nvPr"))?.idx === idx
|
|
85507
|
+
) ?? candidates[0];
|
|
85508
|
+
return master ? this.mergeXmlObjects(master, inherited) : void 0;
|
|
85509
|
+
}
|
|
85510
|
+
};
|
|
85511
|
+
|
|
85512
|
+
// pptx/core/core/runtime/PptxHandlerRuntimeImplementation.ts
|
|
85513
|
+
var PptxHandlerRuntime104 = class _PptxHandlerRuntime extends PptxHandlerRuntime103 {
|
|
85231
85514
|
constructor(dependencyFactory = new PptxRuntimeDependencyFactory()) {
|
|
85232
85515
|
super();
|
|
85233
85516
|
this.dependencyFactory = dependencyFactory;
|
|
@@ -85365,11 +85648,11 @@ var PptxHandlerRuntime103 = class _PptxHandlerRuntime extends PptxHandlerRuntime
|
|
|
85365
85648
|
};
|
|
85366
85649
|
|
|
85367
85650
|
// pptx/core/core/PptxHandlerRuntime.ts
|
|
85368
|
-
var
|
|
85651
|
+
var PptxHandlerRuntime105 = class extends PptxHandlerRuntime104 {
|
|
85369
85652
|
};
|
|
85370
85653
|
|
|
85371
85654
|
// pptx/core/core/PptxHandlerRuntimeFactory.ts
|
|
85372
|
-
var createDefaultPptxHandlerRuntime = () => new
|
|
85655
|
+
var createDefaultPptxHandlerRuntime = () => new PptxHandlerRuntime105();
|
|
85373
85656
|
|
|
85374
85657
|
// pptx/core/ppt/current-user.ts
|
|
85375
85658
|
var EncryptedPptError = class extends Error {
|
|
@@ -88175,6 +88458,13 @@ var PptxHandlerCore = class {
|
|
|
88175
88458
|
getLayoutOptions() {
|
|
88176
88459
|
return this.runtime.getLayoutOptions();
|
|
88177
88460
|
}
|
|
88461
|
+
/** Resolve a text placeholder in this loaded deck, preserving layout inheritance. */
|
|
88462
|
+
createPlaceholderElement(layoutPath, input, type, options = {}) {
|
|
88463
|
+
if (!this.runtime.createPlaceholderElement) {
|
|
88464
|
+
throw new Error("This runtime does not support creating layout placeholders");
|
|
88465
|
+
}
|
|
88466
|
+
return this.runtime.createPlaceholderElement(layoutPath, input, type, options);
|
|
88467
|
+
}
|
|
88178
88468
|
/**
|
|
88179
88469
|
* Build the artwork thumbnails backing the New Slide / Layout galleries.
|
|
88180
88470
|
*
|
|
@@ -89488,13 +89778,14 @@ function createFreeformElement(pathData, options) {
|
|
|
89488
89778
|
|
|
89489
89779
|
// pptx/core/builders/sdk/SlideBuilder.ts
|
|
89490
89780
|
var SlideBuilder = class {
|
|
89491
|
-
slide;
|
|
89492
89781
|
/**
|
|
89493
89782
|
* @param slideNumber - 1-based slide number.
|
|
89494
89783
|
* @param layoutPath - Optional layout archive path.
|
|
89495
89784
|
* @param layoutName - Optional layout display name.
|
|
89785
|
+
* @param handler - Loaded deck context for placeholder geometry and text styles.
|
|
89496
89786
|
*/
|
|
89497
|
-
constructor(slideNumber, layoutPath, layoutName) {
|
|
89787
|
+
constructor(slideNumber, layoutPath, layoutName, handler) {
|
|
89788
|
+
this.handler = handler;
|
|
89498
89789
|
this.slide = {
|
|
89499
89790
|
id: `slide${slideNumber}`,
|
|
89500
89791
|
rId: `rId${slideNumber + 1}`,
|
|
@@ -89504,11 +89795,52 @@ var SlideBuilder = class {
|
|
|
89504
89795
|
layoutName: layoutName ?? "Title Slide"
|
|
89505
89796
|
};
|
|
89506
89797
|
}
|
|
89798
|
+
handler;
|
|
89799
|
+
slide;
|
|
89507
89800
|
/** Add a text box to the slide. */
|
|
89508
89801
|
addText(text, options) {
|
|
89509
89802
|
this.slide.elements.push(createTextElement(text, options));
|
|
89510
89803
|
return this;
|
|
89511
89804
|
}
|
|
89805
|
+
/**
|
|
89806
|
+
* Fill a layout placeholder, inheriting its frame and text styles.
|
|
89807
|
+
*
|
|
89808
|
+
* Unlike addText, this writes a real p:ph binding, not a free text box.
|
|
89809
|
+
* Use idx to select repeated slots (for example, Two Content's 1 and 2).
|
|
89810
|
+
* Explicit frame fields override the layout; all other fields inherit.
|
|
89811
|
+
* A standalone builder requires the fourth constructor argument (a loaded
|
|
89812
|
+
* handler), even with an explicit frame, so text styles resolve consistently.
|
|
89813
|
+
* Missing slots without a complete frame throw instead of creating a text box.
|
|
89814
|
+
* Master frames requiring compatible-role fallback are materialized locally
|
|
89815
|
+
* for new content only, keeping existing-deck loading unchanged.
|
|
89816
|
+
*
|
|
89817
|
+
* @example
|
|
89818
|
+
* ```ts
|
|
89819
|
+
* createSlide('Title Slide')
|
|
89820
|
+
* .addPlaceholder('ctrTitle', 'Quarterly review')
|
|
89821
|
+
* .addPlaceholder('subTitle', 'October 2026');
|
|
89822
|
+
* createSlide('Two Content').addPlaceholder('body', 'Right column', { idx: 2 });
|
|
89823
|
+
* ```
|
|
89824
|
+
*/
|
|
89825
|
+
addPlaceholder(type, text, options = {}) {
|
|
89826
|
+
const input = createTextElement(text);
|
|
89827
|
+
const context = `Slide ${this.slide.slideNumber} (${this.slide.id}), placeholder ${type} idx=${options.idx ?? "auto"}, layout ${this.slide.layoutName} (${this.slide.layoutPath})`;
|
|
89828
|
+
try {
|
|
89829
|
+
if (!this.handler) {
|
|
89830
|
+
throw new Error(
|
|
89831
|
+
"addPlaceholder requires a loaded handler as the fourth SlideBuilder constructor argument"
|
|
89832
|
+
);
|
|
89833
|
+
}
|
|
89834
|
+
this.slide.elements.push(
|
|
89835
|
+
this.handler.createPlaceholderElement(this.slide.layoutPath, input, type, options)
|
|
89836
|
+
);
|
|
89837
|
+
} catch (error) {
|
|
89838
|
+
throw new Error(`${context}: ${error instanceof Error ? error.message : String(error)}`, {
|
|
89839
|
+
cause: error
|
|
89840
|
+
});
|
|
89841
|
+
}
|
|
89842
|
+
return this;
|
|
89843
|
+
}
|
|
89512
89844
|
/** Add a shape to the slide. */
|
|
89513
89845
|
addShape(shapeType, options) {
|
|
89514
89846
|
this.slide.elements.push(createShapeElement(shapeType, options));
|
|
@@ -89747,6 +90079,125 @@ var SlideBuilder = class {
|
|
|
89747
90079
|
}
|
|
89748
90080
|
};
|
|
89749
90081
|
|
|
90082
|
+
// pptx/core/builders/sdk/layout-operations.ts
|
|
90083
|
+
var EMU_PER_PIXEL4 = 9525;
|
|
90084
|
+
function pxToEmu(px) {
|
|
90085
|
+
return Math.round(px * EMU_PER_PIXEL4);
|
|
90086
|
+
}
|
|
90087
|
+
function placeholderSpXml(ph, shapeId) {
|
|
90088
|
+
const name = ph.name ?? `${ph.type.charAt(0).toUpperCase() + ph.type.slice(1)} Placeholder ${shapeId - 1}`;
|
|
90089
|
+
const x = pxToEmu(ph.x);
|
|
90090
|
+
const y = pxToEmu(ph.y);
|
|
90091
|
+
const cx = pxToEmu(ph.width);
|
|
90092
|
+
const cy = pxToEmu(ph.height);
|
|
90093
|
+
const idxAttr = ph.idx !== void 0 ? ` idx="${Math.max(0, Math.round(ph.idx))}"` : "";
|
|
90094
|
+
return ` <p:sp>
|
|
90095
|
+
<p:nvSpPr>
|
|
90096
|
+
<p:cNvPr id="${shapeId}" name="${escAttr(name)}"/>
|
|
90097
|
+
<p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr>
|
|
90098
|
+
<p:nvPr><p:ph type="${escAttr(ph.type)}"${idxAttr}/></p:nvPr>
|
|
90099
|
+
</p:nvSpPr>
|
|
90100
|
+
<p:spPr>
|
|
90101
|
+
<a:xfrm><a:off x="${x}" y="${y}"/><a:ext cx="${cx}" cy="${cy}"/></a:xfrm>
|
|
90102
|
+
</p:spPr>
|
|
90103
|
+
<p:txBody>
|
|
90104
|
+
<a:bodyPr/>
|
|
90105
|
+
<a:lstStyle/>
|
|
90106
|
+
<a:p><a:endParaRPr lang="en-US"/></a:p>
|
|
90107
|
+
</p:txBody>
|
|
90108
|
+
</p:sp>`;
|
|
90109
|
+
}
|
|
90110
|
+
function normalizeSrgbHex(color2) {
|
|
90111
|
+
if (!color2) {
|
|
90112
|
+
return void 0;
|
|
90113
|
+
}
|
|
90114
|
+
const raw = color2.trim().replace(/^#/, "").toUpperCase();
|
|
90115
|
+
if (/^[0-9A-F]{6}$/.test(raw)) {
|
|
90116
|
+
return raw;
|
|
90117
|
+
}
|
|
90118
|
+
if (/^[0-9A-F]{3}$/.test(raw)) {
|
|
90119
|
+
return raw.replace(/./g, (ch) => ch + ch);
|
|
90120
|
+
}
|
|
90121
|
+
return void 0;
|
|
90122
|
+
}
|
|
90123
|
+
function generateLayoutXml(definition) {
|
|
90124
|
+
const layoutType = definition.type ?? "obj";
|
|
90125
|
+
const placeholders = definition.placeholders ?? [];
|
|
90126
|
+
const phShapes = placeholders.map((ph, i) => placeholderSpXml(ph, i + 2)).join("\n");
|
|
90127
|
+
let bgXml = "";
|
|
90128
|
+
const hex3 = normalizeSrgbHex(definition.backgroundColor);
|
|
90129
|
+
if (hex3) {
|
|
90130
|
+
bgXml = ` <p:bg><p:bgPr><a:solidFill><a:srgbClr val="${hex3}"/></a:solidFill><a:effectLst/></p:bgPr></p:bg>
|
|
90131
|
+
`;
|
|
90132
|
+
}
|
|
90133
|
+
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
90134
|
+
<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
|
|
90135
|
+
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
|
|
90136
|
+
xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"
|
|
90137
|
+
type="${escAttr(layoutType)}" preserve="1">
|
|
90138
|
+
<p:cSld name="${escAttr(definition.name)}">
|
|
90139
|
+
${bgXml} <p:spTree>
|
|
90140
|
+
<p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>
|
|
90141
|
+
<p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr>
|
|
90142
|
+
${phShapes}
|
|
90143
|
+
</p:spTree>
|
|
90144
|
+
</p:cSld>
|
|
90145
|
+
<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>
|
|
90146
|
+
</p:sldLayout>`;
|
|
90147
|
+
}
|
|
90148
|
+
|
|
90149
|
+
// pptx/core/builders/sdk/standard-layout-placeholders.ts
|
|
90150
|
+
function standardLayoutPlaceholders(type, width, height) {
|
|
90151
|
+
if (type === "blank") return [];
|
|
90152
|
+
const box = (type2, idx, x, y, w, h) => ({
|
|
90153
|
+
type: type2,
|
|
90154
|
+
idx,
|
|
90155
|
+
x: x * width,
|
|
90156
|
+
y: y * height,
|
|
90157
|
+
width: w * width,
|
|
90158
|
+
height: h * height
|
|
90159
|
+
});
|
|
90160
|
+
const title = box("title", 0, 0.05, 0.04, 0.9, 0.15);
|
|
90161
|
+
const content2 = box("obj", 1, 0.05, 0.23, 0.9, 0.64);
|
|
90162
|
+
let slots;
|
|
90163
|
+
switch (type) {
|
|
90164
|
+
case "title":
|
|
90165
|
+
slots = [
|
|
90166
|
+
box("ctrTitle", 0, 0.08, 0.24, 0.84, 0.22),
|
|
90167
|
+
box("subTitle", 1, 0.12, 0.49, 0.76, 0.2)
|
|
90168
|
+
];
|
|
90169
|
+
break;
|
|
90170
|
+
case "secHead":
|
|
90171
|
+
slots = [box("title", 0, 0.05, 0.37, 0.9, 0.2), box("body", 1, 0.05, 0.6, 0.9, 0.23)];
|
|
90172
|
+
break;
|
|
90173
|
+
case "twoObj":
|
|
90174
|
+
case "twoTxTwoObj":
|
|
90175
|
+
slots = [title, box("obj", 1, 0.05, 0.27, 0.43, 0.6), box("obj", 2, 0.52, 0.27, 0.43, 0.6)];
|
|
90176
|
+
if (type === "twoTxTwoObj")
|
|
90177
|
+
slots.push(box("body", 3, 0.05, 0.2, 0.43, 0.07), box("body", 4, 0.52, 0.2, 0.43, 0.07));
|
|
90178
|
+
break;
|
|
90179
|
+
case "titleOnly":
|
|
90180
|
+
slots = [title];
|
|
90181
|
+
break;
|
|
90182
|
+
case "objTx":
|
|
90183
|
+
case "picTx":
|
|
90184
|
+
slots = [
|
|
90185
|
+
title,
|
|
90186
|
+
box(type === "picTx" ? "pic" : "obj", 1, 0.36, 0.23, 0.59, 0.64),
|
|
90187
|
+
box("body", 2, 0.05, 0.23, 0.27, 0.64)
|
|
90188
|
+
];
|
|
90189
|
+
break;
|
|
90190
|
+
default:
|
|
90191
|
+
slots = [title, content2];
|
|
90192
|
+
}
|
|
90193
|
+
return [
|
|
90194
|
+
...slots,
|
|
90195
|
+
box("dt", 10, 0.05, 0.92, 0.25, 0.04),
|
|
90196
|
+
box("ftr", 11, 0.33, 0.92, 0.34, 0.04),
|
|
90197
|
+
box("sldNum", 12, 0.75, 0.92, 0.2, 0.04)
|
|
90198
|
+
];
|
|
90199
|
+
}
|
|
90200
|
+
|
|
89750
90201
|
// pptx/core/builders/sdk/PresentationBuilder.ts
|
|
89751
90202
|
var DEFAULT_WIDTH = 12192e3;
|
|
89752
90203
|
var DEFAULT_HEIGHT = 6858e3;
|
|
@@ -89766,7 +90217,7 @@ var DEFAULT_COLORS2 = {
|
|
|
89766
90217
|
};
|
|
89767
90218
|
var DEFAULT_MAJOR_FONT = "Calibri Light";
|
|
89768
90219
|
var DEFAULT_MINOR_FONT = "Calibri";
|
|
89769
|
-
function
|
|
90220
|
+
function normalizeSrgbHex2(color2) {
|
|
89770
90221
|
if (!color2) {
|
|
89771
90222
|
return void 0;
|
|
89772
90223
|
}
|
|
@@ -89782,7 +90233,7 @@ function normalizeSrgbHex(color2) {
|
|
|
89782
90233
|
function resolveThemeColors(overrides) {
|
|
89783
90234
|
const resolved = {};
|
|
89784
90235
|
for (const [key2, fallback] of Object.entries(DEFAULT_COLORS2)) {
|
|
89785
|
-
resolved[key2] =
|
|
90236
|
+
resolved[key2] = normalizeSrgbHex2(overrides?.[key2]) ?? normalizeSrgbHex2(fallback) ?? "000000";
|
|
89786
90237
|
}
|
|
89787
90238
|
return resolved;
|
|
89788
90239
|
}
|
|
@@ -89939,21 +90390,6 @@ ${layoutRels}
|
|
|
89939
90390
|
<Relationship Id="rId${layoutCount + 1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="../theme/theme1.xml"/>
|
|
89940
90391
|
</Relationships>`;
|
|
89941
90392
|
}
|
|
89942
|
-
function slideLayoutXml2(name, layoutType) {
|
|
89943
|
-
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
89944
|
-
<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
|
|
89945
|
-
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
|
|
89946
|
-
xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"
|
|
89947
|
-
type="${escAttr(layoutType)}" preserve="1">
|
|
89948
|
-
<p:cSld name="${escAttr(name)}">
|
|
89949
|
-
<p:spTree>
|
|
89950
|
-
<p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>
|
|
89951
|
-
<p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr>
|
|
89952
|
-
</p:spTree>
|
|
89953
|
-
</p:cSld>
|
|
89954
|
-
<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>
|
|
89955
|
-
</p:sldLayout>`;
|
|
89956
|
-
}
|
|
89957
90393
|
function slideLayoutRelsXml() {
|
|
89958
90394
|
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
89959
90395
|
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
|
@@ -90102,7 +90538,14 @@ async function buildBlankPresentationArchive(options) {
|
|
|
90102
90538
|
zip.file("ppt/slideMasters/_rels/slideMaster1.xml.rels", slideMasterRelsXml(layoutCount));
|
|
90103
90539
|
for (let i = 0; i < layoutCount; i++) {
|
|
90104
90540
|
const layout = STANDARD_LAYOUTS[i];
|
|
90105
|
-
zip.file(
|
|
90541
|
+
zip.file(
|
|
90542
|
+
`ppt/slideLayouts/slideLayout${i + 1}.xml`,
|
|
90543
|
+
generateLayoutXml({
|
|
90544
|
+
name: layout.name,
|
|
90545
|
+
type: layout.type,
|
|
90546
|
+
placeholders: standardLayoutPlaceholders(layout.type, width / 9525, height / 9525)
|
|
90547
|
+
})
|
|
90548
|
+
);
|
|
90106
90549
|
zip.file(`ppt/slideLayouts/_rels/slideLayout${i + 1}.xml.rels`, slideLayoutRelsXml());
|
|
90107
90550
|
}
|
|
90108
90551
|
for (let i = 0; i < initialSlideCount; i++) {
|
|
@@ -90139,7 +90582,7 @@ var PresentationBuilder = class {
|
|
|
90139
90582
|
const layoutIdx = STANDARD_LAYOUTS.findIndex((l) => l.name === layoutName) + 1 || 7;
|
|
90140
90583
|
const layoutPath = `ppt/slideLayouts/slideLayout${layoutIdx}.xml`;
|
|
90141
90584
|
const resolvedName = layoutName ?? STANDARD_LAYOUTS[layoutIdx - 1]?.name ?? "Blank";
|
|
90142
|
-
return new SlideBuilder(slideNum, layoutPath, resolvedName);
|
|
90585
|
+
return new SlideBuilder(slideNum, layoutPath, resolvedName, handler);
|
|
90143
90586
|
};
|
|
90144
90587
|
return { handler, data, createSlide };
|
|
90145
90588
|
}
|