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,5 +1,5 @@
|
|
|
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, formatAutoNumberMarker, parseParagraphSpacingPx, createBuiltinVariables, resolveCoordinate, readPathListCommandOrder, parseStructuredCustomGeometry, parseAdjustmentValues, parseGuideDefinitions, evaluateGuides, evaluateGeometryPaths, inheritCustomGeometryCommandOrder, parseInkMlContent, parseModel3DScene, remapElementShapeIds, parseShapeId, isTemplateElementId, remapShapeIdReferences, reapplyAlternateContentToTree, buildOle2, SHAPE_TREE_ELEMENT_TAGS, MAX_SHAPE_ID, orderedXmlKey, safeResolveZipPath, parseXml, elements, parseDataUrlToBytes, base64Decode, EMU_PER_PX, reorderObjectKeys, encodeCompressedPng, zlibStore, hash, concatArrays, encodePasswordUtf16LE, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, uint32LE, pptxActionToElementAction, buildClrMapOverrideXml, applyActiveXControlsToSlide, BLIP_FILL_ORDER, SP_PR_ORDER, hasShapeProperties, ensureXmlChild, hasTextProperties, 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, buildSaveTimeCustomGeometryXml, applyCustomGeometryGuideOverrides, avLstForPreset, filterValidShapeAdjustmentEntries, applyDrawingMediaReference, XML_PROLOG, DGM_XMLNS, xmlEscape, writeBodyPrBooleanAttrs, applyTextBodySp3d, writeShapeEffects, SHAPE_STYLE_ORDER, roundCoordinate, scaleVectorToIntegers, EMU_PER_PIXEL, P14_GUIDE_URI, P15_GUIDE_URI, buildGuideListExtension, resetSpPrFormattingForStyleMatrix, fillIsPurelyStyleMatrix, serializeColorChoiceWithRef, createLineStyleGate, applyDrawingLineDash, getSignaturePathsToStrip, mergeSmartArtPointXml, mergeSmartArtConnectionXml, obfuscateFont, containsConvertibleStrictNamespaceAttribute, convertXmlToStrict, applySeriesPictureOptionsToXml, findChartExtByUri, findChildByLocalName, regenerateClonedUniqueId, buildChartUniqueIdExtLst, createOfficeGuid, isContentPoint, newSmartArtGuid, parseChartUserShapesDrawing, xmlChildren, applyChartGradientToSpPr, setAutoTitleDeleted, insertAt, replaceFirstText, shouldRebuildFromParagraphs, buildPointFromParagraphs, shouldRebuildFromRuns, buildPointFromRuns, buildPointText, ensureXmlChildren, TC_PR_BORDERS_ORDER, writeChartColorChoice, parseChartFormulaRange, expandRangeAddresses, applyCellWritesToWorksheet, stripParentDirSegments, parseChartUniqueId, buildChartMarkerXml, chartGradientsEqual, chartColorChoiceValue, preservesSpreadsheetXmlWhitespace, buildEffectDagTreeFromXml, syncPictureShapeTypeWithCropShape, buildSrgbColorChoice, fetchUrlToBytes, parseChartWideTextStyle, parseDefRPrTextStyle, parseChartDataLabelOptions, shadowOffsetToDistanceAndDirection, positiveFixedAngleAttribute, xmlAttrNumber, parseCustomShows, parseShapeProps, parseActiveXControlsFromSlide, convertMetafileToDataUrl, blobUrlToDataUrl, first, children, ooxmlGradientAngleToCssDegrees, isAlternateContentChoiceSupported, SvgExporter, detectStrictConformance, normalizeStrictXml, 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, deriveSlideTitles, parseSlideDrawingGuides, slideBackgroundStyleRefFromNode, parseP14DirectChild, parseP14FromExtLst, P14_TRANSITION_TYPES, decodeXmlEntities, preservesXmlWhitespace, annotateCustomGeometryCommandOrder, annotateSmartArtTextOrder, encodeXmlAttributeValue, encodeXmlTextValue, stripXmlOrderMarkers, MIN_ELEMENT_SIZE, createDrawingObjectId, DEFAULT_TEXT_FONT_SIZE, EncryptedFileError, decodePptxJsonText, deserializePptxFromJson, applyImportedPptxData, DEFAULT_CHART_GRADIENT_ANGLE, supportsChartGradientFill, svgToCustomGeometryPaths, MIN_TABLE_DIMENSION, MAX_TABLE_DIMENSION, SYSTEM_COLOR_MAP, PRESET_COLOR_MAP, effectChild, mergeEffectNode, mergeAttributeEffectNode, estimateMediaDurationMs, parseVmlElements, prismFamilyFlags, prismFamilyTypeOfNode, prismFamilyTypeForFlags, P14_DIR_IS_ORIENTATION_TYPE, IncorrectPasswordError, applyThemeToData, detectFileFormat, parseOle2, decryptPptx, encryptPptx,
|
|
2
|
-
import { openPptxZip, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, openNestedZip, DEFAULT_MAX_UNCOMPRESSED_BYTES, guardZip, ZipBombError, MAX_ZIP_ENTRY_COUNT } from './chunk-
|
|
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, formatAutoNumberMarker, parseParagraphSpacingPx, createBuiltinVariables, resolveCoordinate, readPathListCommandOrder, parseStructuredCustomGeometry, parseAdjustmentValues, parseGuideDefinitions, evaluateGuides, evaluateGeometryPaths, inheritCustomGeometryCommandOrder, parseInkMlContent, parseModel3DScene, remapElementShapeIds, parseShapeId, isTemplateElementId, remapShapeIdReferences, reapplyAlternateContentToTree, buildOle2, SHAPE_TREE_ELEMENT_TAGS, MAX_SHAPE_ID, orderedXmlKey, safeResolveZipPath, parseXml, elements, parseDataUrlToBytes, base64Decode, EMU_PER_PX, reorderObjectKeys, encodeCompressedPng, zlibStore, hash, concatArrays, encodePasswordUtf16LE, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, uint32LE, pptxActionToElementAction, buildClrMapOverrideXml, applyActiveXControlsToSlide, BLIP_FILL_ORDER, SP_PR_ORDER, hasShapeProperties, ensureXmlChild, hasTextProperties, 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, buildSaveTimeCustomGeometryXml, applyCustomGeometryGuideOverrides, avLstForPreset, filterValidShapeAdjustmentEntries, applyDrawingMediaReference, XML_PROLOG, DGM_XMLNS, xmlEscape, writeBodyPrBooleanAttrs, applyTextBodySp3d, writeShapeEffects, SHAPE_STYLE_ORDER, roundCoordinate, scaleVectorToIntegers, EMU_PER_PIXEL, P14_GUIDE_URI, P15_GUIDE_URI, buildGuideListExtension, resetSpPrFormattingForStyleMatrix, fillIsPurelyStyleMatrix, serializeColorChoiceWithRef, createLineStyleGate, applyDrawingLineDash, getSignaturePathsToStrip, mergeSmartArtPointXml, mergeSmartArtConnectionXml, obfuscateFont, containsConvertibleStrictNamespaceAttribute, convertXmlToStrict, applySeriesPictureOptionsToXml, findChartExtByUri, findChildByLocalName, regenerateClonedUniqueId, buildChartUniqueIdExtLst, createOfficeGuid, isContentPoint, newSmartArtGuid, parseChartUserShapesDrawing, xmlChildren, applyChartGradientToSpPr, setAutoTitleDeleted, insertAt, replaceFirstText, shouldRebuildFromParagraphs, buildPointFromParagraphs, shouldRebuildFromRuns, buildPointFromRuns, buildPointText, ensureXmlChildren, TC_PR_BORDERS_ORDER, writeChartColorChoice, parseChartFormulaRange, expandRangeAddresses, applyCellWritesToWorksheet, stripParentDirSegments, parseChartUniqueId, buildChartMarkerXml, chartGradientsEqual, chartColorChoiceValue, preservesSpreadsheetXmlWhitespace, buildEffectDagTreeFromXml, syncPictureShapeTypeWithCropShape, buildSrgbColorChoice, fetchUrlToBytes, parseChartWideTextStyle, parseDefRPrTextStyle, parseChartDataLabelOptions, shadowOffsetToDistanceAndDirection, positiveFixedAngleAttribute, xmlAttrNumber, parseCustomShows, parseShapeProps, parseActiveXControlsFromSlide, convertMetafileToDataUrl, blobUrlToDataUrl, first, children, ooxmlGradientAngleToCssDegrees, isAlternateContentChoiceSupported, SvgExporter, detectStrictConformance, normalizeStrictXml, 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, deriveSlideTitles, parseSlideDrawingGuides, slideBackgroundStyleRefFromNode, parseP14DirectChild, parseP14FromExtLst, P14_TRANSITION_TYPES, decodeXmlEntities, preservesXmlWhitespace, annotateCustomGeometryCommandOrder, annotateSmartArtTextOrder, encodeXmlAttributeValue, encodeXmlTextValue, stripXmlOrderMarkers, MIN_ELEMENT_SIZE, createDrawingObjectId, DEFAULT_TEXT_FONT_SIZE, EncryptedFileError, decodePptxJsonText, deserializePptxFromJson, applyImportedPptxData, DEFAULT_CHART_GRADIENT_ANGLE, supportsChartGradientFill, svgToCustomGeometryPaths, escAttr, MIN_TABLE_DIMENSION, MAX_TABLE_DIMENSION, SYSTEM_COLOR_MAP, PRESET_COLOR_MAP, effectChild, mergeEffectNode, mergeAttributeEffectNode, estimateMediaDurationMs, parseVmlElements, prismFamilyFlags, prismFamilyTypeOfNode, prismFamilyTypeForFlags, P14_DIR_IS_ORIENTATION_TYPE, IncorrectPasswordError, applyThemeToData, detectFileFormat, parseOle2, decryptPptx, encryptPptx, escText, parseDrawingLineDash, parseLineSpacingMultiplier, parseLineSpacingExactPt, parseEncryptionInfo, RC4_ALG_ID, isOle2CompoundFile, ENTRY_TYPE_ROOT, PML_XMLNS, solidFill, esc, OOXML_PERCENT_UNITS, backgroundStylePreset, isDarkColorMap, backgroundStyleColorMap, reResolveElementsForColorMapChange, findThemeEffectScheme, wrapFormatSchemeXml, effectIsPurelyStyleMatrix, emu, gradFill, loadThemeVariants, parsePresentationDrawingGuides, parsePresentationSmartTags, resolveLayoutDisplayName, detectDigitalSignatures, unwrapOleEmbedding, mimeTypeForOleFile, oleBytesToDataUrl, extractGuidFromPartName, deobfuscateFont, detectFontFormat, parseKinsoku, parseLineStyle, parseChartUpDownBars, parseDataTable, parseChart3DSurfaces, parseChartAxes, parseBubbleChartOptions, parseChartLayouts, parseCxChartSeries, parseChartDataPointPictureBlipRel, parseSeriesDataPoints, parseMarker, parseSeriesDataLabels, parseChartDataPointPicture, parseImplicitBlipPictureFill, parseEmbeddedXlsx, relAttr, buildXml, EMU_PER_POINT, chartTrendlineKind, parseChartManualLayout, parseDiagramRelationshipIds, parseSmartArtTextParagraphs, firstParagraphRuns, smartArtParagraphsText, parseSmartArtPresLayoutVars, readChartManualLayoutValues, parseSmartArtConnection, projectSmartArtNodeText, resolveSmartArtNodeStyleRoles, resolveSmartArtNodeCoherent3DOff, parseSmartArtDefinitionMetadata, parseSmartArtColorStyleLabels, buildSmartArtColorLists, buildSmartArtColorRoleMap, parseSmartArtQuickStyleLabels, resolveSmartArtEffectIntensity, parseSmartArtStyleLabelRefs, extractStyleReferenceColorXml, withThemePlaceholderColor, getElementOrientationMatrix, isTextOrientationMatrix, TEXT_ORIENTATION_IDENTITY, multiplyTextOrientationMatrices, CHART_ERROR_VALUE_TYPES, CHART_ERROR_BAR_TYPES, CHART_ERROR_BAR_DIRECTIONS } from './chunk-4QPOJCJG.mjs';
|
|
2
|
+
import { openPptxZip, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, openNestedZip, DEFAULT_MAX_UNCOMPRESSED_BYTES, guardZip, ZipBombError, MAX_ZIP_ENTRY_COUNT } from './chunk-GBKBR4CX.mjs';
|
|
3
3
|
import { resolveSmartArtLayoutCategory } from './chunk-3GXV5MPC.mjs';
|
|
4
4
|
import { cloneXmlObject, applySmartArtLayoutDefinition, cloneSlide, parseSmartArtLayoutDefinition } from './chunk-54S5A5PZ.mjs';
|
|
5
5
|
import { themeColorRefFromColorChoice, parseOoxmlPercent, themeColorRefToSolidFillWithOpacity, applyDrawingColorTransforms, parseDrawingFraction, scrgbLinearToSrgb8, parseDrawingHueDegrees, hslToRgb, themeColorRefToXml, themeColorRefFromSchemeClr, blendColorOntoWhite } from './chunk-KII4AAYH.mjs';
|
|
@@ -3236,6 +3236,153 @@ function materializeInheritedShapeTransform(shape, element) {
|
|
|
3236
3236
|
return transform2;
|
|
3237
3237
|
}
|
|
3238
3238
|
|
|
3239
|
+
// pptx/core/utils/placeholder-xml.ts
|
|
3240
|
+
function findNonVisualProps(rawXml) {
|
|
3241
|
+
for (const container of ["p:nvSpPr", "p:nvPicPr", "p:nvGraphicFramePr"]) {
|
|
3242
|
+
const parent = rawXml[container];
|
|
3243
|
+
const nvPr = parent?.["p:nvPr"];
|
|
3244
|
+
if (nvPr) {
|
|
3245
|
+
return nvPr;
|
|
3246
|
+
}
|
|
3247
|
+
}
|
|
3248
|
+
return void 0;
|
|
3249
|
+
}
|
|
3250
|
+
function retargetPlaceholder(rawXml, target) {
|
|
3251
|
+
const nvPr = findNonVisualProps(rawXml);
|
|
3252
|
+
if (!nvPr) {
|
|
3253
|
+
return;
|
|
3254
|
+
}
|
|
3255
|
+
const ph = nvPr["p:ph"] ?? {};
|
|
3256
|
+
nvPr["p:ph"] = ph;
|
|
3257
|
+
if (target.type) {
|
|
3258
|
+
ph["@_type"] = target.type;
|
|
3259
|
+
} else {
|
|
3260
|
+
delete ph["@_type"];
|
|
3261
|
+
}
|
|
3262
|
+
if (target.idx !== void 0) {
|
|
3263
|
+
ph["@_idx"] = target.idx;
|
|
3264
|
+
} else {
|
|
3265
|
+
delete ph["@_idx"];
|
|
3266
|
+
}
|
|
3267
|
+
}
|
|
3268
|
+
function setRawXmlTransform(rawXml, xEmu, yEmu, cxEmu, cyEmu) {
|
|
3269
|
+
const spPr = rawXml["p:spPr"];
|
|
3270
|
+
if (!spPr) {
|
|
3271
|
+
return;
|
|
3272
|
+
}
|
|
3273
|
+
const xfrm = spPr["a:xfrm"] ?? {};
|
|
3274
|
+
spPr["a:xfrm"] = xfrm;
|
|
3275
|
+
const off = xfrm["a:off"] ?? {};
|
|
3276
|
+
xfrm["a:off"] = off;
|
|
3277
|
+
off["@_x"] = String(xEmu);
|
|
3278
|
+
off["@_y"] = String(yEmu);
|
|
3279
|
+
const ext = xfrm["a:ext"] ?? {};
|
|
3280
|
+
xfrm["a:ext"] = ext;
|
|
3281
|
+
ext["@_cx"] = String(cxEmu);
|
|
3282
|
+
ext["@_cy"] = String(cyEmu);
|
|
3283
|
+
}
|
|
3284
|
+
function createEmptyPlaceholderElement(target, xEmu, yEmu, cxEmu, cyEmu, uniqueId) {
|
|
3285
|
+
if (cxEmu <= 0 || cyEmu <= 0) {
|
|
3286
|
+
return null;
|
|
3287
|
+
}
|
|
3288
|
+
const phNode = {};
|
|
3289
|
+
if (target.type) {
|
|
3290
|
+
phNode["@_type"] = target.type;
|
|
3291
|
+
}
|
|
3292
|
+
if (target.idx !== void 0) {
|
|
3293
|
+
phNode["@_idx"] = target.idx;
|
|
3294
|
+
}
|
|
3295
|
+
const rawXml = {
|
|
3296
|
+
"p:nvSpPr": {
|
|
3297
|
+
"p:cNvPr": {
|
|
3298
|
+
"@_id": uniqueId,
|
|
3299
|
+
"@_name": `Placeholder ${target.type || "content"}`
|
|
3300
|
+
},
|
|
3301
|
+
"p:cNvSpPr": {
|
|
3302
|
+
"a:spLocks": { "@_noGrp": "1" }
|
|
3303
|
+
},
|
|
3304
|
+
"p:nvPr": {
|
|
3305
|
+
"p:ph": phNode
|
|
3306
|
+
}
|
|
3307
|
+
},
|
|
3308
|
+
"p:spPr": {
|
|
3309
|
+
"a:xfrm": {
|
|
3310
|
+
"a:off": { "@_x": String(xEmu), "@_y": String(yEmu) },
|
|
3311
|
+
"a:ext": { "@_cx": String(cxEmu), "@_cy": String(cyEmu) }
|
|
3312
|
+
}
|
|
3313
|
+
},
|
|
3314
|
+
"p:txBody": {
|
|
3315
|
+
"a:bodyPr": {},
|
|
3316
|
+
"a:lstStyle": {},
|
|
3317
|
+
"a:p": { "a:endParaRPr": { "@_lang": "en-US" } }
|
|
3318
|
+
}
|
|
3319
|
+
};
|
|
3320
|
+
return {
|
|
3321
|
+
type: "text",
|
|
3322
|
+
id: `ph-${target.type || "content"}-${target.idx ?? "0"}-${uniqueId}`,
|
|
3323
|
+
x: Math.round(xEmu / EMU_PER_PX),
|
|
3324
|
+
y: Math.round(yEmu / EMU_PER_PX),
|
|
3325
|
+
width: Math.round(cxEmu / EMU_PER_PX),
|
|
3326
|
+
height: Math.round(cyEmu / EMU_PER_PX),
|
|
3327
|
+
text: "",
|
|
3328
|
+
rawXml
|
|
3329
|
+
};
|
|
3330
|
+
}
|
|
3331
|
+
|
|
3332
|
+
// pptx/core/core/runtime/save-geometry-validation.ts
|
|
3333
|
+
var FRAME_FIELDS = ["x", "y", "width", "height"];
|
|
3334
|
+
var OPTIONAL_FIELDS = [
|
|
3335
|
+
"xEmu",
|
|
3336
|
+
"yEmu",
|
|
3337
|
+
"widthEmu",
|
|
3338
|
+
"heightEmu",
|
|
3339
|
+
"rotation",
|
|
3340
|
+
"skewX",
|
|
3341
|
+
"skewY",
|
|
3342
|
+
"chOffXEmu",
|
|
3343
|
+
"chOffYEmu",
|
|
3344
|
+
"chExtWidthEmu",
|
|
3345
|
+
"chExtHeightEmu"
|
|
3346
|
+
];
|
|
3347
|
+
function omitsInheritedFrame(element) {
|
|
3348
|
+
if (!["text", "shape", "picture", "media"].includes(element.type) || !element.rawXml)
|
|
3349
|
+
return false;
|
|
3350
|
+
if (!xmlHasChild(findNonVisualProps(element.rawXml), "p:ph")) return false;
|
|
3351
|
+
if (xmlHasChild(xmlChild(element.rawXml, "p:spPr"), "a:xfrm") || xmlHasChild(element.rawXml, "p:xfrm"))
|
|
3352
|
+
return false;
|
|
3353
|
+
const baseline = element.inheritedTransform;
|
|
3354
|
+
if (!baseline) return FRAME_FIELDS.every((key2) => element[key2] === void 0);
|
|
3355
|
+
return FRAME_FIELDS.every(
|
|
3356
|
+
(key2) => Number.isFinite(baseline[key2]) && (element[key2] === void 0 || element[key2] === baseline[key2])
|
|
3357
|
+
) && ["rotation", "skewX", "skewY", "flipHorizontal", "flipVertical"].every(
|
|
3358
|
+
(key2) => (element[key2] ?? 0) === (baseline[key2] ?? 0)
|
|
3359
|
+
);
|
|
3360
|
+
}
|
|
3361
|
+
function validateElementGeometry(element, context, emuPerPx = 9525) {
|
|
3362
|
+
const inherited = omitsInheritedFrame(element);
|
|
3363
|
+
const record2 = element;
|
|
3364
|
+
const fields = [...inherited ? [] : FRAME_FIELDS, ...OPTIONAL_FIELDS];
|
|
3365
|
+
for (const field of fields) {
|
|
3366
|
+
const value = record2[field];
|
|
3367
|
+
if (OPTIONAL_FIELDS.includes(field) && value === void 0) continue;
|
|
3368
|
+
if (typeof value !== "number" || !Number.isFinite(value) || !Number.isFinite(value * emuPerPx)) {
|
|
3369
|
+
throw new Error(
|
|
3370
|
+
`${context}: element '${element.id}' (${element.name ?? "unnamed"}, type=${element.type}) has invalid ${field}=${String(value)}; expected a finite number`
|
|
3371
|
+
);
|
|
3372
|
+
}
|
|
3373
|
+
}
|
|
3374
|
+
if (element.type === "group") {
|
|
3375
|
+
for (const child16 of element.children) validateElementGeometry(child16, context, emuPerPx);
|
|
3376
|
+
}
|
|
3377
|
+
}
|
|
3378
|
+
function validateSlideGeometry(slides) {
|
|
3379
|
+
for (const slide of slides) {
|
|
3380
|
+
for (const element of slide.elements) {
|
|
3381
|
+
validateElementGeometry(element, `Slide ${slide.slideNumber} (${slide.id})`);
|
|
3382
|
+
}
|
|
3383
|
+
}
|
|
3384
|
+
}
|
|
3385
|
+
|
|
3239
3386
|
// pptx/core/core/builders/PptxElementTransformUpdater.ts
|
|
3240
3387
|
var PptxElementTransformUpdater = class {
|
|
3241
3388
|
applyTransform(shape, element, emuPerPx, enclosingGroupChildSpace) {
|
|
@@ -3244,6 +3391,7 @@ var PptxElementTransformUpdater = class {
|
|
|
3244
3391
|
if (!transform2) {
|
|
3245
3392
|
return;
|
|
3246
3393
|
}
|
|
3394
|
+
validateElementGeometry(element, "Transform writer", emuPerPx);
|
|
3247
3395
|
if (!transform2["a:off"]) {
|
|
3248
3396
|
transform2["a:off"] = {};
|
|
3249
3397
|
}
|
|
@@ -34871,6 +35019,75 @@ var PptxSaveConstantsFactory = class {
|
|
|
34871
35019
|
var defaultPptxSaveConstantsFactory = new PptxSaveConstantsFactory();
|
|
34872
35020
|
var createPptxSaveConstants = (conformance = "transitional") => defaultPptxSaveConstantsFactory.create(conformance);
|
|
34873
35021
|
|
|
35022
|
+
// pptx/core/utils/placeholder-remap.ts
|
|
35023
|
+
var TITLE_ROLE = /* @__PURE__ */ new Set(["title", "ctrtitle"]);
|
|
35024
|
+
var CONTENT_ROLE = /* @__PURE__ */ new Set([
|
|
35025
|
+
"body",
|
|
35026
|
+
"obj",
|
|
35027
|
+
"subtitle",
|
|
35028
|
+
"pic",
|
|
35029
|
+
"chart",
|
|
35030
|
+
"tbl",
|
|
35031
|
+
"media",
|
|
35032
|
+
"clipart",
|
|
35033
|
+
"dgm"
|
|
35034
|
+
]);
|
|
35035
|
+
function placeholderContentRole(type) {
|
|
35036
|
+
const declared = (type ?? "").trim().toLowerCase() || "body";
|
|
35037
|
+
if (TITLE_ROLE.has(declared)) {
|
|
35038
|
+
return "title";
|
|
35039
|
+
}
|
|
35040
|
+
if (CONTENT_ROLE.has(declared)) {
|
|
35041
|
+
return "content";
|
|
35042
|
+
}
|
|
35043
|
+
return declared;
|
|
35044
|
+
}
|
|
35045
|
+
function preferredPlaceholderTypes(element) {
|
|
35046
|
+
switch (element.type) {
|
|
35047
|
+
case "image":
|
|
35048
|
+
case "picture":
|
|
35049
|
+
return ["pic", "obj", "body"];
|
|
35050
|
+
case "chart":
|
|
35051
|
+
return ["chart", "obj", "body"];
|
|
35052
|
+
case "table":
|
|
35053
|
+
return ["tbl", "obj", "body"];
|
|
35054
|
+
case "media":
|
|
35055
|
+
case "model3d":
|
|
35056
|
+
return ["media", "pic", "obj", "body"];
|
|
35057
|
+
case "smartArt":
|
|
35058
|
+
return ["dgm", "obj", "body"];
|
|
35059
|
+
case "text":
|
|
35060
|
+
return ["body", "subtitle", "obj"];
|
|
35061
|
+
default:
|
|
35062
|
+
return ["obj", "body"];
|
|
35063
|
+
}
|
|
35064
|
+
}
|
|
35065
|
+
function scorePlaceholderMatch(element, source, target) {
|
|
35066
|
+
if (placeholderContentRole(source.type) !== placeholderContentRole(target.type)) {
|
|
35067
|
+
return -1;
|
|
35068
|
+
}
|
|
35069
|
+
const sourceType = normalizeType(source.type);
|
|
35070
|
+
const targetType = normalizeType(target.type);
|
|
35071
|
+
let score = 1;
|
|
35072
|
+
if (source.idx !== void 0 && source.idx === target.idx) {
|
|
35073
|
+
score += 100;
|
|
35074
|
+
}
|
|
35075
|
+
if (sourceType === targetType) {
|
|
35076
|
+
score += 50;
|
|
35077
|
+
}
|
|
35078
|
+
const preferred = preferredPlaceholderTypes(element).indexOf(targetType);
|
|
35079
|
+
if (preferred >= 0) {
|
|
35080
|
+
score += 30 - preferred * 5;
|
|
35081
|
+
}
|
|
35082
|
+
if (targetType === "obj") {
|
|
35083
|
+
score += 10;
|
|
35084
|
+
}
|
|
35085
|
+
return score;
|
|
35086
|
+
}
|
|
35087
|
+
function normalizeType(type) {
|
|
35088
|
+
return (type ?? "").trim().toLowerCase() || "body";
|
|
35089
|
+
}
|
|
35090
|
+
|
|
34874
35091
|
// pptx/core/core/runtime/master-save-helpers.ts
|
|
34875
35092
|
function applyHeaderFooterFlagsToNode(root, flags) {
|
|
34876
35093
|
if (!flags || Object.keys(flags).length === 0) {
|
|
@@ -52902,168 +53119,6 @@ function buildChartUserShapesDrawingXml(shapes) {
|
|
|
52902
53119
|
return { "c:userShapes": root };
|
|
52903
53120
|
}
|
|
52904
53121
|
|
|
52905
|
-
// pptx/core/utils/placeholder-remap.ts
|
|
52906
|
-
var TITLE_ROLE = /* @__PURE__ */ new Set(["title", "ctrtitle"]);
|
|
52907
|
-
var CONTENT_ROLE = /* @__PURE__ */ new Set([
|
|
52908
|
-
"body",
|
|
52909
|
-
"obj",
|
|
52910
|
-
"subtitle",
|
|
52911
|
-
"pic",
|
|
52912
|
-
"chart",
|
|
52913
|
-
"tbl",
|
|
52914
|
-
"media",
|
|
52915
|
-
"clipart",
|
|
52916
|
-
"dgm"
|
|
52917
|
-
]);
|
|
52918
|
-
function placeholderContentRole(type) {
|
|
52919
|
-
const declared = (type ?? "").trim().toLowerCase() || "body";
|
|
52920
|
-
if (TITLE_ROLE.has(declared)) {
|
|
52921
|
-
return "title";
|
|
52922
|
-
}
|
|
52923
|
-
if (CONTENT_ROLE.has(declared)) {
|
|
52924
|
-
return "content";
|
|
52925
|
-
}
|
|
52926
|
-
return declared;
|
|
52927
|
-
}
|
|
52928
|
-
function preferredPlaceholderTypes(element) {
|
|
52929
|
-
switch (element.type) {
|
|
52930
|
-
case "image":
|
|
52931
|
-
case "picture":
|
|
52932
|
-
return ["pic", "obj", "body"];
|
|
52933
|
-
case "chart":
|
|
52934
|
-
return ["chart", "obj", "body"];
|
|
52935
|
-
case "table":
|
|
52936
|
-
return ["tbl", "obj", "body"];
|
|
52937
|
-
case "media":
|
|
52938
|
-
case "model3d":
|
|
52939
|
-
return ["media", "pic", "obj", "body"];
|
|
52940
|
-
case "smartArt":
|
|
52941
|
-
return ["dgm", "obj", "body"];
|
|
52942
|
-
case "text":
|
|
52943
|
-
return ["body", "subtitle", "obj"];
|
|
52944
|
-
default:
|
|
52945
|
-
return ["obj", "body"];
|
|
52946
|
-
}
|
|
52947
|
-
}
|
|
52948
|
-
function scorePlaceholderMatch(element, source, target) {
|
|
52949
|
-
if (placeholderContentRole(source.type) !== placeholderContentRole(target.type)) {
|
|
52950
|
-
return -1;
|
|
52951
|
-
}
|
|
52952
|
-
const sourceType = normalizeType(source.type);
|
|
52953
|
-
const targetType = normalizeType(target.type);
|
|
52954
|
-
let score = 1;
|
|
52955
|
-
if (source.idx !== void 0 && source.idx === target.idx) {
|
|
52956
|
-
score += 100;
|
|
52957
|
-
}
|
|
52958
|
-
if (sourceType === targetType) {
|
|
52959
|
-
score += 50;
|
|
52960
|
-
}
|
|
52961
|
-
const preferred = preferredPlaceholderTypes(element).indexOf(targetType);
|
|
52962
|
-
if (preferred >= 0) {
|
|
52963
|
-
score += 30 - preferred * 5;
|
|
52964
|
-
}
|
|
52965
|
-
if (targetType === "obj") {
|
|
52966
|
-
score += 10;
|
|
52967
|
-
}
|
|
52968
|
-
return score;
|
|
52969
|
-
}
|
|
52970
|
-
function normalizeType(type) {
|
|
52971
|
-
return (type ?? "").trim().toLowerCase() || "body";
|
|
52972
|
-
}
|
|
52973
|
-
|
|
52974
|
-
// pptx/core/utils/placeholder-xml.ts
|
|
52975
|
-
function findNonVisualProps(rawXml) {
|
|
52976
|
-
for (const container of ["p:nvSpPr", "p:nvPicPr", "p:nvGraphicFramePr"]) {
|
|
52977
|
-
const parent = rawXml[container];
|
|
52978
|
-
const nvPr = parent?.["p:nvPr"];
|
|
52979
|
-
if (nvPr) {
|
|
52980
|
-
return nvPr;
|
|
52981
|
-
}
|
|
52982
|
-
}
|
|
52983
|
-
return void 0;
|
|
52984
|
-
}
|
|
52985
|
-
function retargetPlaceholder(rawXml, target) {
|
|
52986
|
-
const nvPr = findNonVisualProps(rawXml);
|
|
52987
|
-
if (!nvPr) {
|
|
52988
|
-
return;
|
|
52989
|
-
}
|
|
52990
|
-
const ph = nvPr["p:ph"] ?? {};
|
|
52991
|
-
nvPr["p:ph"] = ph;
|
|
52992
|
-
if (target.type) {
|
|
52993
|
-
ph["@_type"] = target.type;
|
|
52994
|
-
} else {
|
|
52995
|
-
delete ph["@_type"];
|
|
52996
|
-
}
|
|
52997
|
-
if (target.idx !== void 0) {
|
|
52998
|
-
ph["@_idx"] = target.idx;
|
|
52999
|
-
} else {
|
|
53000
|
-
delete ph["@_idx"];
|
|
53001
|
-
}
|
|
53002
|
-
}
|
|
53003
|
-
function setRawXmlTransform(rawXml, xEmu, yEmu, cxEmu, cyEmu) {
|
|
53004
|
-
const spPr = rawXml["p:spPr"];
|
|
53005
|
-
if (!spPr) {
|
|
53006
|
-
return;
|
|
53007
|
-
}
|
|
53008
|
-
const xfrm = spPr["a:xfrm"] ?? {};
|
|
53009
|
-
spPr["a:xfrm"] = xfrm;
|
|
53010
|
-
const off = xfrm["a:off"] ?? {};
|
|
53011
|
-
xfrm["a:off"] = off;
|
|
53012
|
-
off["@_x"] = String(xEmu);
|
|
53013
|
-
off["@_y"] = String(yEmu);
|
|
53014
|
-
const ext = xfrm["a:ext"] ?? {};
|
|
53015
|
-
xfrm["a:ext"] = ext;
|
|
53016
|
-
ext["@_cx"] = String(cxEmu);
|
|
53017
|
-
ext["@_cy"] = String(cyEmu);
|
|
53018
|
-
}
|
|
53019
|
-
function createEmptyPlaceholderElement(target, xEmu, yEmu, cxEmu, cyEmu, uniqueId) {
|
|
53020
|
-
if (cxEmu <= 0 || cyEmu <= 0) {
|
|
53021
|
-
return null;
|
|
53022
|
-
}
|
|
53023
|
-
const phNode = {};
|
|
53024
|
-
if (target.type) {
|
|
53025
|
-
phNode["@_type"] = target.type;
|
|
53026
|
-
}
|
|
53027
|
-
if (target.idx !== void 0) {
|
|
53028
|
-
phNode["@_idx"] = target.idx;
|
|
53029
|
-
}
|
|
53030
|
-
const rawXml = {
|
|
53031
|
-
"p:nvSpPr": {
|
|
53032
|
-
"p:cNvPr": {
|
|
53033
|
-
"@_id": uniqueId,
|
|
53034
|
-
"@_name": `Placeholder ${target.type || "content"}`
|
|
53035
|
-
},
|
|
53036
|
-
"p:cNvSpPr": {
|
|
53037
|
-
"a:spLocks": { "@_noGrp": "1" }
|
|
53038
|
-
},
|
|
53039
|
-
"p:nvPr": {
|
|
53040
|
-
"p:ph": phNode
|
|
53041
|
-
}
|
|
53042
|
-
},
|
|
53043
|
-
"p:spPr": {
|
|
53044
|
-
"a:xfrm": {
|
|
53045
|
-
"a:off": { "@_x": String(xEmu), "@_y": String(yEmu) },
|
|
53046
|
-
"a:ext": { "@_cx": String(cxEmu), "@_cy": String(cyEmu) }
|
|
53047
|
-
}
|
|
53048
|
-
},
|
|
53049
|
-
"p:txBody": {
|
|
53050
|
-
"a:bodyPr": {},
|
|
53051
|
-
"a:lstStyle": {},
|
|
53052
|
-
"a:p": { "a:endParaRPr": { "@_lang": "en-US" } }
|
|
53053
|
-
}
|
|
53054
|
-
};
|
|
53055
|
-
return {
|
|
53056
|
-
type: "text",
|
|
53057
|
-
id: `ph-${target.type || "content"}-${target.idx ?? "0"}-${uniqueId}`,
|
|
53058
|
-
x: Math.round(xEmu / EMU_PER_PX),
|
|
53059
|
-
y: Math.round(yEmu / EMU_PER_PX),
|
|
53060
|
-
width: Math.round(cxEmu / EMU_PER_PX),
|
|
53061
|
-
height: Math.round(cyEmu / EMU_PER_PX),
|
|
53062
|
-
text: "",
|
|
53063
|
-
rawXml
|
|
53064
|
-
};
|
|
53065
|
-
}
|
|
53066
|
-
|
|
53067
53122
|
// pptx/core/utils/text-fill-blip.ts
|
|
53068
53123
|
function resolveTextFillBlip(blipFill, lookupTarget, resolveArchivePath, allowExternal) {
|
|
53069
53124
|
const blip = blipFill["a:blip"];
|
|
@@ -71966,6 +72021,19 @@ var PptxHandlerRuntime54 = class _PptxHandlerRuntime extends PptxHandlerRuntime5
|
|
|
71966
72021
|
return this.isStrictOoxml ? "strict" : "transitional";
|
|
71967
72022
|
}
|
|
71968
72023
|
async save(slides, options) {
|
|
72024
|
+
validateSlideGeometry(slides);
|
|
72025
|
+
const templates = [
|
|
72026
|
+
...options?.slideMasters ?? [],
|
|
72027
|
+
...options?.slideLayouts ?? [],
|
|
72028
|
+
...options?.slideMasters?.flatMap((master) => master.layouts ?? []) ?? [],
|
|
72029
|
+
...options?.notesMaster ? [options.notesMaster] : [],
|
|
72030
|
+
...options?.handoutMaster ? [options.handoutMaster] : []
|
|
72031
|
+
];
|
|
72032
|
+
for (const template of templates) {
|
|
72033
|
+
for (const element of template.elements ?? []) {
|
|
72034
|
+
validateElementGeometry(element, `Template (${template.path})`);
|
|
72035
|
+
}
|
|
72036
|
+
}
|
|
71969
72037
|
if (options?.outputFormat === "ppt") {
|
|
71970
72038
|
return this.saveAsLegacyPpt(
|
|
71971
72039
|
slides,
|
|
@@ -72895,8 +72963,7 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
|
|
|
72895
72963
|
return this.scanPlaceholderBuckets(spTree, (info) => info?.type === type);
|
|
72896
72964
|
}
|
|
72897
72965
|
/** The layout and master counterparts of a placeholder, unmerged. */
|
|
72898
|
-
findPlaceholderContexts(slidePath, expected) {
|
|
72899
|
-
const layoutPath = this.resolveLayoutPathForSlide(slidePath);
|
|
72966
|
+
findPlaceholderContexts(slidePath, expected, layoutPath = this.resolveLayoutPathForSlide(slidePath)) {
|
|
72900
72967
|
if (!layoutPath) {
|
|
72901
72968
|
return {};
|
|
72902
72969
|
}
|
|
@@ -72908,10 +72975,11 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
|
|
|
72908
72975
|
const master = this.findPlaceholderInShapeTree(masterSpTree, expected) ?? this.findSingletonPlaceholderInShapeTree(masterSpTree, expected);
|
|
72909
72976
|
return { layout, master };
|
|
72910
72977
|
}
|
|
72911
|
-
findPlaceholderContext(slidePath, expected) {
|
|
72978
|
+
findPlaceholderContext(slidePath, expected, layoutPath) {
|
|
72912
72979
|
const { layout: layoutContext, master: masterContext } = this.findPlaceholderContexts(
|
|
72913
72980
|
slidePath,
|
|
72914
|
-
expected
|
|
72981
|
+
expected,
|
|
72982
|
+
layoutPath
|
|
72915
72983
|
);
|
|
72916
72984
|
if (!layoutContext) {
|
|
72917
72985
|
return masterContext;
|
|
@@ -72937,8 +73005,8 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
|
|
|
72937
73005
|
* a master `p:sp`), so the layout keeps winning exactly as it does when
|
|
72938
73006
|
* both are shapes.
|
|
72939
73007
|
*/
|
|
72940
|
-
findPlaceholderNode(slidePath, expected) {
|
|
72941
|
-
const { layout, master } = this.findPlaceholderContexts(slidePath, expected);
|
|
73008
|
+
findPlaceholderNode(slidePath, expected, layoutPath) {
|
|
73009
|
+
const { layout, master } = this.findPlaceholderContexts(slidePath, expected, layoutPath);
|
|
72942
73010
|
const firstNode2 = (context) => context?.shape ?? context?.picture ?? context?.graphicFrame;
|
|
72943
73011
|
const layoutNode = firstNode2(layout);
|
|
72944
73012
|
const masterNode = firstNode2(master);
|
|
@@ -72979,8 +73047,7 @@ var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
|
|
|
72979
73047
|
* reference. Checks the layout cache first, then the master cache, and
|
|
72980
73048
|
* merges them so that layout values take priority over master values.
|
|
72981
73049
|
*/
|
|
72982
|
-
lookupPlaceholderDefaults(slidePath, phInfo) {
|
|
72983
|
-
const layoutPath = this.resolveLayoutPathForSlide(slidePath);
|
|
73050
|
+
lookupPlaceholderDefaults(slidePath, phInfo, layoutPath = this.resolveLayoutPathForSlide(slidePath)) {
|
|
72984
73051
|
if (!layoutPath) {
|
|
72985
73052
|
return void 0;
|
|
72986
73053
|
}
|
|
@@ -73670,6 +73737,53 @@ var PptxHandlerRuntime61 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
|
|
|
73670
73737
|
return null;
|
|
73671
73738
|
}
|
|
73672
73739
|
}
|
|
73740
|
+
/**
|
|
73741
|
+
* A text-bearing shape whose picture fill is inherited from its layout or
|
|
73742
|
+
* master placeholder (`a:blipFill` absent from its own `spPr`) gets
|
|
73743
|
+
* `fillMode: 'image'` from the merged properties but no image: the blip's
|
|
73744
|
+
* relationship id belongs to the part that authored it, not the slide.
|
|
73745
|
+
* Resolve it against the layout's, then the master's, relationships.
|
|
73746
|
+
*/
|
|
73747
|
+
async resolveInheritedFillImage(element, shape, slidePath) {
|
|
73748
|
+
const style = element?.shapeStyle;
|
|
73749
|
+
if (!element || !style || style.fillMode !== "image" || style.fillImageUrl) {
|
|
73750
|
+
return;
|
|
73751
|
+
}
|
|
73752
|
+
const placeholderInfo = this.extractPlaceholderInfo(xmlPath(shape, "p:nvSpPr", "p:nvPr"));
|
|
73753
|
+
const inherited = placeholderInfo ? this.findPlaceholderContext(slidePath, placeholderInfo) : void 0;
|
|
73754
|
+
const effectiveSpPr = this.mergeXmlObjects(
|
|
73755
|
+
inherited?.shape?.["p:spPr"],
|
|
73756
|
+
xmlChild(shape, "p:spPr")
|
|
73757
|
+
);
|
|
73758
|
+
const blipFill = effectiveSpPr?.["a:blipFill"];
|
|
73759
|
+
const blip = blipFill?.["a:blip"];
|
|
73760
|
+
const relId = String(blip?.["@_r:embed"] ?? blip?.["@_r:link"] ?? "");
|
|
73761
|
+
if (!relId) {
|
|
73762
|
+
return;
|
|
73763
|
+
}
|
|
73764
|
+
const layoutPath = this.resolveLayoutPathForSlide(slidePath);
|
|
73765
|
+
const masterPath = layoutPath ? this.resolveMasterPathForLayout(layoutPath) : void 0;
|
|
73766
|
+
for (const partPath of [layoutPath, masterPath]) {
|
|
73767
|
+
if (!partPath || !this.slideRelsMap.get(partPath)?.has(relId)) {
|
|
73768
|
+
continue;
|
|
73769
|
+
}
|
|
73770
|
+
const fill = await resolveGroupFillImagePure(
|
|
73771
|
+
this,
|
|
73772
|
+
blipFill,
|
|
73773
|
+
partPath
|
|
73774
|
+
);
|
|
73775
|
+
if (fill) {
|
|
73776
|
+
const isUrl = /^(?:data:|blob:|https?:)/u.test(fill.fillImageUrl);
|
|
73777
|
+
const decoded = isUrl ? void 0 : await this.getImageData(fill.fillImageUrl);
|
|
73778
|
+
style.fillImageUrl = decoded ?? fill.fillImageUrl;
|
|
73779
|
+
style.fillImageMode = fill.fillImageMode;
|
|
73780
|
+
if (element.type === "text") {
|
|
73781
|
+
element.type = "shape";
|
|
73782
|
+
}
|
|
73783
|
+
}
|
|
73784
|
+
return;
|
|
73785
|
+
}
|
|
73786
|
+
}
|
|
73673
73787
|
textVerticalAlignFromDrawingValue(value) {
|
|
73674
73788
|
const normalized = String(value ?? "").trim().toLowerCase();
|
|
73675
73789
|
if (normalized.length === 0) {
|
|
@@ -75066,14 +75180,14 @@ var PptxHandlerRuntime66 = class extends PptxHandlerRuntime65 {
|
|
|
75066
75180
|
|
|
75067
75181
|
// pptx/core/core/runtime/PptxHandlerRuntimeShapeParsing.ts
|
|
75068
75182
|
var PptxHandlerRuntime67 = class _PptxHandlerRuntime extends PptxHandlerRuntime66 {
|
|
75069
|
-
parseShape(shape, id, slidePath) {
|
|
75183
|
+
parseShape(shape, id, slidePath, layoutPath) {
|
|
75070
75184
|
try {
|
|
75071
75185
|
const spPr = shape["p:spPr"];
|
|
75072
75186
|
const slideRelationshipMap = slidePath ? this.slideRelsMap.get(slidePath) : void 0;
|
|
75073
75187
|
const placeholderInfo = this.extractPlaceholderInfo(
|
|
75074
75188
|
shape?.["p:nvSpPr"]?.["p:nvPr"]
|
|
75075
75189
|
);
|
|
75076
|
-
const inheritedPlaceholder = slidePath && placeholderInfo ? this.findPlaceholderContext(slidePath, placeholderInfo) : void 0;
|
|
75190
|
+
const inheritedPlaceholder = (slidePath || layoutPath) && placeholderInfo ? this.findPlaceholderContext(slidePath ?? "", placeholderInfo, layoutPath) : void 0;
|
|
75077
75191
|
const inheritedSpPr = inheritedPlaceholder?.shape?.["p:spPr"] || inheritedPlaceholder?.picture?.["p:spPr"];
|
|
75078
75192
|
const effectiveSpPr = spPr ? {
|
|
75079
75193
|
...spPr,
|
|
@@ -75199,7 +75313,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
|
|
|
75199
75313
|
);
|
|
75200
75314
|
const linkedTxbxId = bodyPropResult.linkedTxbxId;
|
|
75201
75315
|
const linkedTxbxSeq = bodyPropResult.linkedTxbxSeq;
|
|
75202
|
-
const phDefaults = slidePath && placeholderInfo ? this.lookupPlaceholderDefaults(slidePath, placeholderInfo) : void 0;
|
|
75316
|
+
const phDefaults = (slidePath || layoutPath) && placeholderInfo ? this.lookupPlaceholderDefaults(slidePath ?? "", placeholderInfo, layoutPath) : void 0;
|
|
75203
75317
|
if (phDefaults) {
|
|
75204
75318
|
this.applyPlaceholderBodyDefaults(textStyle, phDefaults);
|
|
75205
75319
|
}
|
|
@@ -76055,7 +76169,9 @@ var PptxHandlerRuntime69 = class _PptxHandlerRuntime extends PptxHandlerRuntime6
|
|
|
76055
76169
|
slidePath
|
|
76056
76170
|
);
|
|
76057
76171
|
}
|
|
76058
|
-
|
|
76172
|
+
const parsed = this.parseShape(node, `${idPrefix}shape-${indexInType}`, slidePath);
|
|
76173
|
+
await this.resolveInheritedFillImage(parsed, node, slidePath);
|
|
76174
|
+
return parsed;
|
|
76059
76175
|
}
|
|
76060
76176
|
case "p:pic":
|
|
76061
76177
|
return this.parsePicture(node, `${idPrefix}pic-${indexInType}`, slidePath);
|
|
@@ -84163,8 +84279,175 @@ var PptxHandlerRuntime102 = class extends PptxHandlerRuntime101 {
|
|
|
84163
84279
|
}
|
|
84164
84280
|
};
|
|
84165
84281
|
|
|
84166
|
-
// pptx/core/core/runtime/
|
|
84282
|
+
// pptx/core/core/runtime/sdk-placeholder.ts
|
|
84283
|
+
var TEXT_PLACEHOLDER_TYPES = /* @__PURE__ */ new Set([
|
|
84284
|
+
"title",
|
|
84285
|
+
"ctrtitle",
|
|
84286
|
+
"subtitle",
|
|
84287
|
+
"body",
|
|
84288
|
+
"obj",
|
|
84289
|
+
"dt",
|
|
84290
|
+
"ftr",
|
|
84291
|
+
"hdr",
|
|
84292
|
+
"sldnum"
|
|
84293
|
+
]);
|
|
84294
|
+
function selectTextPlaceholder(input, type, options, slots) {
|
|
84295
|
+
if (!TEXT_PLACEHOLDER_TYPES.has(type.toLowerCase())) {
|
|
84296
|
+
throw new Error(`Unsupported text placeholder type: ${type}`);
|
|
84297
|
+
}
|
|
84298
|
+
if (options.idx !== void 0 && (!Number.isInteger(options.idx) || options.idx < 0 || options.idx > 4294967295)) {
|
|
84299
|
+
throw new Error("Placeholder idx must be an unsigned 32-bit integer");
|
|
84300
|
+
}
|
|
84301
|
+
const source = {
|
|
84302
|
+
type: type.toLowerCase(),
|
|
84303
|
+
...options.idx !== void 0 ? { idx: String(options.idx) } : {}
|
|
84304
|
+
};
|
|
84305
|
+
let best;
|
|
84306
|
+
let bestScore = 0;
|
|
84307
|
+
for (const slot of slots) {
|
|
84308
|
+
if (!TEXT_PLACEHOLDER_TYPES.has(slot.phInfo.type ?? "obj")) continue;
|
|
84309
|
+
if (source.idx !== void 0 && source.idx !== (slot.phInfo.idx ?? "0")) continue;
|
|
84310
|
+
const score = scorePlaceholderMatch(input, source, slot.phInfo);
|
|
84311
|
+
if (score > bestScore) {
|
|
84312
|
+
best = slot;
|
|
84313
|
+
bestScore = score;
|
|
84314
|
+
}
|
|
84315
|
+
}
|
|
84316
|
+
return best ? { type: canonicalPlaceholderType(best.phInfo.type ?? "obj"), idx: best.phInfo.idx } : { type: canonicalPlaceholderType(source.type), idx: source.idx };
|
|
84317
|
+
}
|
|
84318
|
+
function withoutFallbackLanguage(properties) {
|
|
84319
|
+
const { "@_lang": language, ...rest } = properties;
|
|
84320
|
+
if (language !== "en-US") return properties;
|
|
84321
|
+
const keys = Object.keys(rest);
|
|
84322
|
+
return keys.length === 0 || keys.length === 1 && rest["@_dirty"] === "0" ? void 0 : rest;
|
|
84323
|
+
}
|
|
84324
|
+
function stripFallbackLanguage(node, key2) {
|
|
84325
|
+
const properties = node[key2];
|
|
84326
|
+
if (!properties || typeof properties !== "object") return node;
|
|
84327
|
+
const next = withoutFallbackLanguage(properties);
|
|
84328
|
+
if (next === properties) return node;
|
|
84329
|
+
const result = {};
|
|
84330
|
+
for (const [name, value] of Object.entries(node)) {
|
|
84331
|
+
if (name !== key2) result[name] = value;
|
|
84332
|
+
else if (next) result[name] = next;
|
|
84333
|
+
}
|
|
84334
|
+
return result;
|
|
84335
|
+
}
|
|
84336
|
+
function withoutFallbackLanguages(paragraphs) {
|
|
84337
|
+
return paragraphs.map((paragraph) => {
|
|
84338
|
+
const next = { ...stripFallbackLanguage(paragraph, "a:endParaRPr") };
|
|
84339
|
+
for (const child16 of ["a:r", "a:br", "a:fld"]) {
|
|
84340
|
+
const nodes = next[child16];
|
|
84341
|
+
if (nodes === void 0) continue;
|
|
84342
|
+
next[child16] = Array.isArray(nodes) ? nodes.map((node) => stripFallbackLanguage(node, "a:rPr")) : stripFallbackLanguage(nodes, "a:rPr");
|
|
84343
|
+
}
|
|
84344
|
+
return next;
|
|
84345
|
+
});
|
|
84346
|
+
}
|
|
84347
|
+
function placeholderShape2(identity, paragraphs) {
|
|
84348
|
+
paragraphs = withoutFallbackLanguages(paragraphs);
|
|
84349
|
+
return {
|
|
84350
|
+
"p:nvSpPr": {
|
|
84351
|
+
"p:cNvPr": { "@_id": "2", "@_name": `Placeholder ${identity.type}` },
|
|
84352
|
+
"p:cNvSpPr": { "a:spLocks": { "@_noGrp": "1" } },
|
|
84353
|
+
"p:nvPr": {
|
|
84354
|
+
"p:ph": {
|
|
84355
|
+
"@_type": identity.type,
|
|
84356
|
+
...identity.idx !== void 0 ? { "@_idx": identity.idx } : {}
|
|
84357
|
+
}
|
|
84358
|
+
}
|
|
84359
|
+
},
|
|
84360
|
+
"p:spPr": {},
|
|
84361
|
+
"p:txBody": { "a:bodyPr": {}, "a:lstStyle": {}, "a:p": paragraphs }
|
|
84362
|
+
};
|
|
84363
|
+
}
|
|
84364
|
+
function applyPlaceholderFrame(shape, inherited, options, emuPerPx, materializeFrame = false) {
|
|
84365
|
+
for (const key2 of ["x", "y", "width", "height"]) {
|
|
84366
|
+
if (options[key2] !== void 0 && !Number.isFinite(options[key2])) {
|
|
84367
|
+
throw new Error(`Invalid placeholder frame for ${key2}: expected a finite number`);
|
|
84368
|
+
}
|
|
84369
|
+
}
|
|
84370
|
+
const off = xmlPath(inherited, "p:spPr", "a:xfrm", "a:off");
|
|
84371
|
+
const ext = xmlPath(inherited, "p:spPr", "a:xfrm", "a:ext");
|
|
84372
|
+
const frame = {
|
|
84373
|
+
x: options.x ?? (off?.["@_x"] !== void 0 ? Number(off["@_x"]) / emuPerPx : void 0),
|
|
84374
|
+
y: options.y ?? (off?.["@_y"] !== void 0 ? Number(off["@_y"]) / emuPerPx : void 0),
|
|
84375
|
+
width: options.width ?? (ext?.["@_cx"] !== void 0 ? Number(ext["@_cx"]) / emuPerPx : void 0),
|
|
84376
|
+
height: options.height ?? (ext?.["@_cy"] !== void 0 ? Number(ext["@_cy"]) / emuPerPx : void 0)
|
|
84377
|
+
};
|
|
84378
|
+
for (const [key2, value] of Object.entries(frame)) {
|
|
84379
|
+
if (!Number.isFinite(value)) {
|
|
84380
|
+
throw new Error(
|
|
84381
|
+
`No matching placeholder frame for ${key2}; supply a complete explicit frame or choose a layout containing this slot`
|
|
84382
|
+
);
|
|
84383
|
+
}
|
|
84384
|
+
}
|
|
84385
|
+
if (materializeFrame || ["x", "y", "width", "height"].some((key2) => options[key2] !== void 0)) {
|
|
84386
|
+
setRawXmlTransform(
|
|
84387
|
+
shape,
|
|
84388
|
+
...["x", "y", "width", "height"].map(
|
|
84389
|
+
(key2) => Math.round(frame[key2] * emuPerPx)
|
|
84390
|
+
)
|
|
84391
|
+
);
|
|
84392
|
+
}
|
|
84393
|
+
}
|
|
84394
|
+
|
|
84395
|
+
// pptx/core/core/runtime/PptxHandlerRuntimeSdkPlaceholders.ts
|
|
84167
84396
|
var PptxHandlerRuntime103 = class _PptxHandlerRuntime extends PptxHandlerRuntime102 {
|
|
84397
|
+
createPlaceholderElement(layoutPath, input, type, options) {
|
|
84398
|
+
if (input.type !== "text") throw new Error("Placeholder input must be text");
|
|
84399
|
+
const layout = this.layoutXmlMap.get(layoutPath);
|
|
84400
|
+
if (!layout) throw new Error(`Unknown layout: ${layoutPath}`);
|
|
84401
|
+
const identity = selectTextPlaceholder(
|
|
84402
|
+
input,
|
|
84403
|
+
type,
|
|
84404
|
+
options,
|
|
84405
|
+
this.extractLayoutPlaceholders(layout, layoutPath)
|
|
84406
|
+
);
|
|
84407
|
+
const shape = placeholderShape2(
|
|
84408
|
+
identity,
|
|
84409
|
+
this.createParagraphsFromTextContent(input.text, void 0, input.textSegments)
|
|
84410
|
+
);
|
|
84411
|
+
const inherited = this.findPlaceholderNode(
|
|
84412
|
+
"",
|
|
84413
|
+
{ type: identity.type.toLowerCase(), idx: identity.idx },
|
|
84414
|
+
layoutPath
|
|
84415
|
+
);
|
|
84416
|
+
const fallback = this.sdkMasterFrame(layoutPath, identity.type, identity.idx, inherited);
|
|
84417
|
+
applyPlaceholderFrame(
|
|
84418
|
+
shape,
|
|
84419
|
+
fallback ?? inherited,
|
|
84420
|
+
options,
|
|
84421
|
+
_PptxHandlerRuntime.EMU_PER_PX,
|
|
84422
|
+
fallback !== void 0
|
|
84423
|
+
);
|
|
84424
|
+
const element = this.parseShape(shape, input.id, void 0, layoutPath);
|
|
84425
|
+
if (!element) throw new Error("Unable to resolve placeholder content");
|
|
84426
|
+
if ((element.type === "text" || element.type === "shape") && !element.textStyle && element.textSegments?.[0]?.style) {
|
|
84427
|
+
element.textStyle = { ...element.textSegments[0].style };
|
|
84428
|
+
}
|
|
84429
|
+
return element;
|
|
84430
|
+
}
|
|
84431
|
+
sdkMasterFrame(layoutPath, type, idx, inherited) {
|
|
84432
|
+
if (!inherited) return void 0;
|
|
84433
|
+
if (xmlPath(inherited, "p:spPr", "a:xfrm", "a:off") && xmlPath(inherited, "p:spPr", "a:xfrm", "a:ext"))
|
|
84434
|
+
return void 0;
|
|
84435
|
+
const masterPath = this.resolveMasterPathForLayout(layoutPath);
|
|
84436
|
+
const tree = masterPath ? xmlPath(this.masterXmlMap.get(masterPath), "p:sldMaster", "p:cSld", "p:spTree") : void 0;
|
|
84437
|
+
const role = placeholderContentRole(type.toLowerCase());
|
|
84438
|
+
const candidates = this.ensureArray(tree?.["p:sp"]).filter((shape) => {
|
|
84439
|
+
const info = this.extractPlaceholderInfo(xmlPath(shape, "p:nvSpPr", "p:nvPr"));
|
|
84440
|
+
return info && placeholderContentRole(info.type) === role;
|
|
84441
|
+
});
|
|
84442
|
+
const master = candidates.find(
|
|
84443
|
+
(shape) => this.extractPlaceholderInfo(xmlPath(shape, "p:nvSpPr", "p:nvPr"))?.idx === idx
|
|
84444
|
+
) ?? candidates[0];
|
|
84445
|
+
return master ? this.mergeXmlObjects(master, inherited) : void 0;
|
|
84446
|
+
}
|
|
84447
|
+
};
|
|
84448
|
+
|
|
84449
|
+
// pptx/core/core/runtime/PptxHandlerRuntimeImplementation.ts
|
|
84450
|
+
var PptxHandlerRuntime104 = class _PptxHandlerRuntime extends PptxHandlerRuntime103 {
|
|
84168
84451
|
constructor(dependencyFactory = new PptxRuntimeDependencyFactory()) {
|
|
84169
84452
|
super();
|
|
84170
84453
|
this.dependencyFactory = dependencyFactory;
|
|
@@ -84302,7 +84585,7 @@ var PptxHandlerRuntime103 = class _PptxHandlerRuntime extends PptxHandlerRuntime
|
|
|
84302
84585
|
};
|
|
84303
84586
|
|
|
84304
84587
|
// pptx/core/core/PptxHandlerRuntime.ts
|
|
84305
|
-
var
|
|
84588
|
+
var PptxHandlerRuntime105 = class extends PptxHandlerRuntime104 {
|
|
84306
84589
|
};
|
|
84307
84590
|
|
|
84308
84591
|
// pptx/core/core/PptxHandlerRuntimeFactory.ts
|
|
@@ -84313,10 +84596,10 @@ var PptxHandlerRuntimeFactory = class {
|
|
|
84313
84596
|
* @returns A freshly constructed runtime ready for loading a PPTX file.
|
|
84314
84597
|
*/
|
|
84315
84598
|
createRuntime() {
|
|
84316
|
-
return new
|
|
84599
|
+
return new PptxHandlerRuntime105();
|
|
84317
84600
|
}
|
|
84318
84601
|
};
|
|
84319
|
-
var createDefaultPptxHandlerRuntime = () => new
|
|
84602
|
+
var createDefaultPptxHandlerRuntime = () => new PptxHandlerRuntime105();
|
|
84320
84603
|
|
|
84321
84604
|
// pptx/core/core/runtime/table-style-editor.ts
|
|
84322
84605
|
function deepClone(value) {
|
|
@@ -87263,6 +87546,13 @@ var PptxHandlerCore = class {
|
|
|
87263
87546
|
getLayoutOptions() {
|
|
87264
87547
|
return this.runtime.getLayoutOptions();
|
|
87265
87548
|
}
|
|
87549
|
+
/** Resolve a text placeholder in this loaded deck, preserving layout inheritance. */
|
|
87550
|
+
createPlaceholderElement(layoutPath, input, type, options = {}) {
|
|
87551
|
+
if (!this.runtime.createPlaceholderElement) {
|
|
87552
|
+
throw new Error("This runtime does not support creating layout placeholders");
|
|
87553
|
+
}
|
|
87554
|
+
return this.runtime.createPlaceholderElement(layoutPath, input, type, options);
|
|
87555
|
+
}
|
|
87266
87556
|
/**
|
|
87267
87557
|
* Build the artwork thumbnails backing the New Slide / Layout galleries.
|
|
87268
87558
|
*
|
|
@@ -88935,13 +89225,14 @@ function createFreeformElement(pathData, options) {
|
|
|
88935
89225
|
|
|
88936
89226
|
// pptx/core/builders/sdk/SlideBuilder.ts
|
|
88937
89227
|
var SlideBuilder = class {
|
|
88938
|
-
slide;
|
|
88939
89228
|
/**
|
|
88940
89229
|
* @param slideNumber - 1-based slide number.
|
|
88941
89230
|
* @param layoutPath - Optional layout archive path.
|
|
88942
89231
|
* @param layoutName - Optional layout display name.
|
|
89232
|
+
* @param handler - Loaded deck context for placeholder geometry and text styles.
|
|
88943
89233
|
*/
|
|
88944
|
-
constructor(slideNumber, layoutPath, layoutName) {
|
|
89234
|
+
constructor(slideNumber, layoutPath, layoutName, handler) {
|
|
89235
|
+
this.handler = handler;
|
|
88945
89236
|
this.slide = {
|
|
88946
89237
|
id: `slide${slideNumber}`,
|
|
88947
89238
|
rId: `rId${slideNumber + 1}`,
|
|
@@ -88951,11 +89242,52 @@ var SlideBuilder = class {
|
|
|
88951
89242
|
layoutName: layoutName ?? "Title Slide"
|
|
88952
89243
|
};
|
|
88953
89244
|
}
|
|
89245
|
+
handler;
|
|
89246
|
+
slide;
|
|
88954
89247
|
/** Add a text box to the slide. */
|
|
88955
89248
|
addText(text, options) {
|
|
88956
89249
|
this.slide.elements.push(createTextElement(text, options));
|
|
88957
89250
|
return this;
|
|
88958
89251
|
}
|
|
89252
|
+
/**
|
|
89253
|
+
* Fill a layout placeholder, inheriting its frame and text styles.
|
|
89254
|
+
*
|
|
89255
|
+
* Unlike addText, this writes a real p:ph binding, not a free text box.
|
|
89256
|
+
* Use idx to select repeated slots (for example, Two Content's 1 and 2).
|
|
89257
|
+
* Explicit frame fields override the layout; all other fields inherit.
|
|
89258
|
+
* A standalone builder requires the fourth constructor argument (a loaded
|
|
89259
|
+
* handler), even with an explicit frame, so text styles resolve consistently.
|
|
89260
|
+
* Missing slots without a complete frame throw instead of creating a text box.
|
|
89261
|
+
* Master frames requiring compatible-role fallback are materialized locally
|
|
89262
|
+
* for new content only, keeping existing-deck loading unchanged.
|
|
89263
|
+
*
|
|
89264
|
+
* @example
|
|
89265
|
+
* ```ts
|
|
89266
|
+
* createSlide('Title Slide')
|
|
89267
|
+
* .addPlaceholder('ctrTitle', 'Quarterly review')
|
|
89268
|
+
* .addPlaceholder('subTitle', 'October 2026');
|
|
89269
|
+
* createSlide('Two Content').addPlaceholder('body', 'Right column', { idx: 2 });
|
|
89270
|
+
* ```
|
|
89271
|
+
*/
|
|
89272
|
+
addPlaceholder(type, text, options = {}) {
|
|
89273
|
+
const input = createTextElement(text);
|
|
89274
|
+
const context = `Slide ${this.slide.slideNumber} (${this.slide.id}), placeholder ${type} idx=${options.idx ?? "auto"}, layout ${this.slide.layoutName} (${this.slide.layoutPath})`;
|
|
89275
|
+
try {
|
|
89276
|
+
if (!this.handler) {
|
|
89277
|
+
throw new Error(
|
|
89278
|
+
"addPlaceholder requires a loaded handler as the fourth SlideBuilder constructor argument"
|
|
89279
|
+
);
|
|
89280
|
+
}
|
|
89281
|
+
this.slide.elements.push(
|
|
89282
|
+
this.handler.createPlaceholderElement(this.slide.layoutPath, input, type, options)
|
|
89283
|
+
);
|
|
89284
|
+
} catch (error) {
|
|
89285
|
+
throw new Error(`${context}: ${error instanceof Error ? error.message : String(error)}`, {
|
|
89286
|
+
cause: error
|
|
89287
|
+
});
|
|
89288
|
+
}
|
|
89289
|
+
return this;
|
|
89290
|
+
}
|
|
88959
89291
|
/** Add a shape to the slide. */
|
|
88960
89292
|
addShape(shapeType, options) {
|
|
88961
89293
|
this.slide.elements.push(createShapeElement(shapeType, options));
|
|
@@ -89194,6 +89526,246 @@ var SlideBuilder = class {
|
|
|
89194
89526
|
}
|
|
89195
89527
|
};
|
|
89196
89528
|
|
|
89529
|
+
// pptx/core/builders/sdk/layout-operations.ts
|
|
89530
|
+
var EMU_PER_PIXEL4 = 9525;
|
|
89531
|
+
function pxToEmu(px) {
|
|
89532
|
+
return Math.round(px * EMU_PER_PIXEL4);
|
|
89533
|
+
}
|
|
89534
|
+
function placeholderSpXml(ph, shapeId) {
|
|
89535
|
+
const name = ph.name ?? `${ph.type.charAt(0).toUpperCase() + ph.type.slice(1)} Placeholder ${shapeId - 1}`;
|
|
89536
|
+
const x = pxToEmu(ph.x);
|
|
89537
|
+
const y = pxToEmu(ph.y);
|
|
89538
|
+
const cx = pxToEmu(ph.width);
|
|
89539
|
+
const cy = pxToEmu(ph.height);
|
|
89540
|
+
const idxAttr = ph.idx !== void 0 ? ` idx="${Math.max(0, Math.round(ph.idx))}"` : "";
|
|
89541
|
+
return ` <p:sp>
|
|
89542
|
+
<p:nvSpPr>
|
|
89543
|
+
<p:cNvPr id="${shapeId}" name="${escAttr(name)}"/>
|
|
89544
|
+
<p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr>
|
|
89545
|
+
<p:nvPr><p:ph type="${escAttr(ph.type)}"${idxAttr}/></p:nvPr>
|
|
89546
|
+
</p:nvSpPr>
|
|
89547
|
+
<p:spPr>
|
|
89548
|
+
<a:xfrm><a:off x="${x}" y="${y}"/><a:ext cx="${cx}" cy="${cy}"/></a:xfrm>
|
|
89549
|
+
</p:spPr>
|
|
89550
|
+
<p:txBody>
|
|
89551
|
+
<a:bodyPr/>
|
|
89552
|
+
<a:lstStyle/>
|
|
89553
|
+
<a:p><a:endParaRPr lang="en-US"/></a:p>
|
|
89554
|
+
</p:txBody>
|
|
89555
|
+
</p:sp>`;
|
|
89556
|
+
}
|
|
89557
|
+
function normalizeSrgbHex(color) {
|
|
89558
|
+
if (!color) {
|
|
89559
|
+
return void 0;
|
|
89560
|
+
}
|
|
89561
|
+
const raw = color.trim().replace(/^#/, "").toUpperCase();
|
|
89562
|
+
if (/^[0-9A-F]{6}$/.test(raw)) {
|
|
89563
|
+
return raw;
|
|
89564
|
+
}
|
|
89565
|
+
if (/^[0-9A-F]{3}$/.test(raw)) {
|
|
89566
|
+
return raw.replace(/./g, (ch) => ch + ch);
|
|
89567
|
+
}
|
|
89568
|
+
return void 0;
|
|
89569
|
+
}
|
|
89570
|
+
function generateLayoutXml(definition) {
|
|
89571
|
+
const layoutType = definition.type ?? "obj";
|
|
89572
|
+
const placeholders = definition.placeholders ?? [];
|
|
89573
|
+
const phShapes = placeholders.map((ph, i) => placeholderSpXml(ph, i + 2)).join("\n");
|
|
89574
|
+
let bgXml = "";
|
|
89575
|
+
const hex3 = normalizeSrgbHex(definition.backgroundColor);
|
|
89576
|
+
if (hex3) {
|
|
89577
|
+
bgXml = ` <p:bg><p:bgPr><a:solidFill><a:srgbClr val="${hex3}"/></a:solidFill><a:effectLst/></p:bgPr></p:bg>
|
|
89578
|
+
`;
|
|
89579
|
+
}
|
|
89580
|
+
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
89581
|
+
<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
|
|
89582
|
+
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
|
|
89583
|
+
xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"
|
|
89584
|
+
type="${escAttr(layoutType)}" preserve="1">
|
|
89585
|
+
<p:cSld name="${escAttr(definition.name)}">
|
|
89586
|
+
${bgXml} <p:spTree>
|
|
89587
|
+
<p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>
|
|
89588
|
+
<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>
|
|
89589
|
+
${phShapes}
|
|
89590
|
+
</p:spTree>
|
|
89591
|
+
</p:cSld>
|
|
89592
|
+
<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>
|
|
89593
|
+
</p:sldLayout>`;
|
|
89594
|
+
}
|
|
89595
|
+
function layoutRelsXml(masterIndex = 1) {
|
|
89596
|
+
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
89597
|
+
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
|
89598
|
+
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" Target="../slideMasters/slideMaster${masterIndex}.xml"/>
|
|
89599
|
+
</Relationships>`;
|
|
89600
|
+
}
|
|
89601
|
+
function countExistingLayouts(zip) {
|
|
89602
|
+
let count = 0;
|
|
89603
|
+
zip.forEach((relativePath) => {
|
|
89604
|
+
if (/^ppt\/slideLayouts\/slideLayout\d+\.xml$/.test(relativePath)) {
|
|
89605
|
+
count++;
|
|
89606
|
+
}
|
|
89607
|
+
});
|
|
89608
|
+
return count;
|
|
89609
|
+
}
|
|
89610
|
+
async function addLayoutToSlideMaster(zip, layoutIndex, masterIndex = 1) {
|
|
89611
|
+
const masterRelsPath = `ppt/slideMasters/_rels/slideMaster${masterIndex}.xml.rels`;
|
|
89612
|
+
const masterRelsContent = await zip.file(masterRelsPath)?.async("string");
|
|
89613
|
+
if (!masterRelsContent) {
|
|
89614
|
+
throw new Error(`Slide master rels not found at ${masterRelsPath}`);
|
|
89615
|
+
}
|
|
89616
|
+
const rIdMatches = [...masterRelsContent.matchAll(/rId(\d+)/g)];
|
|
89617
|
+
const maxRId = rIdMatches.reduce((max, m) => Math.max(max, parseInt(m[1], 10)), 0);
|
|
89618
|
+
const newRId = `rId${maxRId + 1}`;
|
|
89619
|
+
const newRel = ` <Relationship Id="${newRId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" Target="../slideLayouts/slideLayout${layoutIndex}.xml"/>`;
|
|
89620
|
+
const updatedRels = masterRelsContent.replace("</Relationships>", `${newRel}
|
|
89621
|
+
</Relationships>`);
|
|
89622
|
+
zip.file(masterRelsPath, updatedRels);
|
|
89623
|
+
const masterPath = `ppt/slideMasters/slideMaster${masterIndex}.xml`;
|
|
89624
|
+
const masterContent = await zip.file(masterPath)?.async("string");
|
|
89625
|
+
if (!masterContent) {
|
|
89626
|
+
throw new Error(`Slide master not found at ${masterPath}`);
|
|
89627
|
+
}
|
|
89628
|
+
const idMatches = [...masterContent.matchAll(/sldLayoutId\s+id="(\d+)"/g)];
|
|
89629
|
+
const maxLayoutId = idMatches.reduce((max, m) => Math.max(max, parseInt(m[1], 10)), 2147483648);
|
|
89630
|
+
const newLayoutId = maxLayoutId + 1;
|
|
89631
|
+
const newLayoutIdEntry = ` <p:sldLayoutId id="${newLayoutId}" r:id="${newRId}"/>`;
|
|
89632
|
+
const updatedMaster = masterContent.replace(
|
|
89633
|
+
"</p:sldLayoutIdLst>",
|
|
89634
|
+
`${newLayoutIdEntry}
|
|
89635
|
+
</p:sldLayoutIdLst>`
|
|
89636
|
+
);
|
|
89637
|
+
zip.file(masterPath, updatedMaster);
|
|
89638
|
+
}
|
|
89639
|
+
async function addLayoutContentType(zip, layoutIndex) {
|
|
89640
|
+
const ctPath = "[Content_Types].xml";
|
|
89641
|
+
const ctContent = await zip.file(ctPath)?.async("string");
|
|
89642
|
+
if (!ctContent) {
|
|
89643
|
+
throw new Error("Content types file not found");
|
|
89644
|
+
}
|
|
89645
|
+
const override = ` <Override PartName="/ppt/slideLayouts/slideLayout${layoutIndex}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml"/>`;
|
|
89646
|
+
const updatedCt = ctContent.replace("</Types>", `${override}
|
|
89647
|
+
</Types>`);
|
|
89648
|
+
zip.file(ctPath, updatedCt);
|
|
89649
|
+
}
|
|
89650
|
+
async function createLayout(handler, data, definition, masterIndex = 1) {
|
|
89651
|
+
const bytes = await handler.save(data.slides);
|
|
89652
|
+
const zip = await openPptxZip(bytes);
|
|
89653
|
+
const existingCount = countExistingLayouts(zip);
|
|
89654
|
+
const newIndex = existingCount + 1;
|
|
89655
|
+
const layoutPath = `ppt/slideLayouts/slideLayout${newIndex}.xml`;
|
|
89656
|
+
zip.file(layoutPath, generateLayoutXml(definition));
|
|
89657
|
+
zip.file(`ppt/slideLayouts/_rels/slideLayout${newIndex}.xml.rels`, layoutRelsXml(masterIndex));
|
|
89658
|
+
await addLayoutToSlideMaster(zip, newIndex, masterIndex);
|
|
89659
|
+
await addLayoutContentType(zip, newIndex);
|
|
89660
|
+
const updatedBuffer = await zip.generateAsync({ type: "arraybuffer" });
|
|
89661
|
+
const newHandler = new PptxHandler();
|
|
89662
|
+
const newData = await newHandler.load(updatedBuffer);
|
|
89663
|
+
return {
|
|
89664
|
+
layoutPath,
|
|
89665
|
+
layoutName: definition.name,
|
|
89666
|
+
handler: newHandler,
|
|
89667
|
+
data: newData
|
|
89668
|
+
};
|
|
89669
|
+
}
|
|
89670
|
+
async function createLayouts(handler, data, definitions, masterIndex = 1) {
|
|
89671
|
+
if (definitions.length === 0) {
|
|
89672
|
+
return { layoutPaths: [], handler, data };
|
|
89673
|
+
}
|
|
89674
|
+
const bytes = await handler.save(data.slides);
|
|
89675
|
+
const zip = await openPptxZip(bytes);
|
|
89676
|
+
const existingCount = countExistingLayouts(zip);
|
|
89677
|
+
const layoutPaths = [];
|
|
89678
|
+
for (let i = 0; i < definitions.length; i++) {
|
|
89679
|
+
const def = definitions[i];
|
|
89680
|
+
const newIndex = existingCount + i + 1;
|
|
89681
|
+
const layoutPath = `ppt/slideLayouts/slideLayout${newIndex}.xml`;
|
|
89682
|
+
zip.file(layoutPath, generateLayoutXml(def));
|
|
89683
|
+
zip.file(`ppt/slideLayouts/_rels/slideLayout${newIndex}.xml.rels`, layoutRelsXml(masterIndex));
|
|
89684
|
+
await addLayoutToSlideMaster(zip, newIndex, masterIndex);
|
|
89685
|
+
await addLayoutContentType(zip, newIndex);
|
|
89686
|
+
layoutPaths.push(layoutPath);
|
|
89687
|
+
}
|
|
89688
|
+
const updatedBuffer = await zip.generateAsync({ type: "arraybuffer" });
|
|
89689
|
+
const newHandler = new PptxHandler();
|
|
89690
|
+
const newData = await newHandler.load(updatedBuffer);
|
|
89691
|
+
return { layoutPaths, handler: newHandler, data: newData };
|
|
89692
|
+
}
|
|
89693
|
+
function findLayoutByName(data, name) {
|
|
89694
|
+
const lowerName = name.toLowerCase();
|
|
89695
|
+
const fromOptions = data.layoutOptions?.find((l) => l.name.toLowerCase() === lowerName);
|
|
89696
|
+
if (fromOptions) {
|
|
89697
|
+
return fromOptions;
|
|
89698
|
+
}
|
|
89699
|
+
if (data.slideMasters) {
|
|
89700
|
+
for (const master of data.slideMasters) {
|
|
89701
|
+
const layout = master.layouts?.find((l) => l.name?.toLowerCase() === lowerName);
|
|
89702
|
+
if (layout) {
|
|
89703
|
+
return { path: layout.path, name: layout.name ?? name };
|
|
89704
|
+
}
|
|
89705
|
+
}
|
|
89706
|
+
}
|
|
89707
|
+
return void 0;
|
|
89708
|
+
}
|
|
89709
|
+
function findLayoutByType(data, type) {
|
|
89710
|
+
const fromOptions = data.layoutOptions?.find((l) => l.type === type);
|
|
89711
|
+
if (fromOptions) {
|
|
89712
|
+
return fromOptions;
|
|
89713
|
+
}
|
|
89714
|
+
return void 0;
|
|
89715
|
+
}
|
|
89716
|
+
|
|
89717
|
+
// pptx/core/builders/sdk/standard-layout-placeholders.ts
|
|
89718
|
+
function standardLayoutPlaceholders(type, width, height) {
|
|
89719
|
+
if (type === "blank") return [];
|
|
89720
|
+
const box = (type2, idx, x, y, w, h) => ({
|
|
89721
|
+
type: type2,
|
|
89722
|
+
idx,
|
|
89723
|
+
x: x * width,
|
|
89724
|
+
y: y * height,
|
|
89725
|
+
width: w * width,
|
|
89726
|
+
height: h * height
|
|
89727
|
+
});
|
|
89728
|
+
const title = box("title", 0, 0.05, 0.04, 0.9, 0.15);
|
|
89729
|
+
const content2 = box("obj", 1, 0.05, 0.23, 0.9, 0.64);
|
|
89730
|
+
let slots;
|
|
89731
|
+
switch (type) {
|
|
89732
|
+
case "title":
|
|
89733
|
+
slots = [
|
|
89734
|
+
box("ctrTitle", 0, 0.08, 0.24, 0.84, 0.22),
|
|
89735
|
+
box("subTitle", 1, 0.12, 0.49, 0.76, 0.2)
|
|
89736
|
+
];
|
|
89737
|
+
break;
|
|
89738
|
+
case "secHead":
|
|
89739
|
+
slots = [box("title", 0, 0.05, 0.37, 0.9, 0.2), box("body", 1, 0.05, 0.6, 0.9, 0.23)];
|
|
89740
|
+
break;
|
|
89741
|
+
case "twoObj":
|
|
89742
|
+
case "twoTxTwoObj":
|
|
89743
|
+
slots = [title, box("obj", 1, 0.05, 0.27, 0.43, 0.6), box("obj", 2, 0.52, 0.27, 0.43, 0.6)];
|
|
89744
|
+
if (type === "twoTxTwoObj")
|
|
89745
|
+
slots.push(box("body", 3, 0.05, 0.2, 0.43, 0.07), box("body", 4, 0.52, 0.2, 0.43, 0.07));
|
|
89746
|
+
break;
|
|
89747
|
+
case "titleOnly":
|
|
89748
|
+
slots = [title];
|
|
89749
|
+
break;
|
|
89750
|
+
case "objTx":
|
|
89751
|
+
case "picTx":
|
|
89752
|
+
slots = [
|
|
89753
|
+
title,
|
|
89754
|
+
box(type === "picTx" ? "pic" : "obj", 1, 0.36, 0.23, 0.59, 0.64),
|
|
89755
|
+
box("body", 2, 0.05, 0.23, 0.27, 0.64)
|
|
89756
|
+
];
|
|
89757
|
+
break;
|
|
89758
|
+
default:
|
|
89759
|
+
slots = [title, content2];
|
|
89760
|
+
}
|
|
89761
|
+
return [
|
|
89762
|
+
...slots,
|
|
89763
|
+
box("dt", 10, 0.05, 0.92, 0.25, 0.04),
|
|
89764
|
+
box("ftr", 11, 0.33, 0.92, 0.34, 0.04),
|
|
89765
|
+
box("sldNum", 12, 0.75, 0.92, 0.2, 0.04)
|
|
89766
|
+
];
|
|
89767
|
+
}
|
|
89768
|
+
|
|
89197
89769
|
// pptx/core/builders/sdk/PresentationBuilder.ts
|
|
89198
89770
|
var DEFAULT_WIDTH = 12192e3;
|
|
89199
89771
|
var DEFAULT_HEIGHT = 6858e3;
|
|
@@ -89213,7 +89785,7 @@ var DEFAULT_COLORS = {
|
|
|
89213
89785
|
};
|
|
89214
89786
|
var DEFAULT_MAJOR_FONT = "Calibri Light";
|
|
89215
89787
|
var DEFAULT_MINOR_FONT = "Calibri";
|
|
89216
|
-
function
|
|
89788
|
+
function normalizeSrgbHex2(color) {
|
|
89217
89789
|
if (!color) {
|
|
89218
89790
|
return void 0;
|
|
89219
89791
|
}
|
|
@@ -89229,7 +89801,7 @@ function normalizeSrgbHex(color) {
|
|
|
89229
89801
|
function resolveThemeColors(overrides) {
|
|
89230
89802
|
const resolved = {};
|
|
89231
89803
|
for (const [key2, fallback] of Object.entries(DEFAULT_COLORS)) {
|
|
89232
|
-
resolved[key2] =
|
|
89804
|
+
resolved[key2] = normalizeSrgbHex2(overrides?.[key2]) ?? normalizeSrgbHex2(fallback) ?? "000000";
|
|
89233
89805
|
}
|
|
89234
89806
|
return resolved;
|
|
89235
89807
|
}
|
|
@@ -89386,21 +89958,6 @@ ${layoutRels}
|
|
|
89386
89958
|
<Relationship Id="rId${layoutCount + 1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="../theme/theme1.xml"/>
|
|
89387
89959
|
</Relationships>`;
|
|
89388
89960
|
}
|
|
89389
|
-
function slideLayoutXml2(name, layoutType) {
|
|
89390
|
-
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
89391
|
-
<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
|
|
89392
|
-
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
|
|
89393
|
-
xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"
|
|
89394
|
-
type="${escAttr(layoutType)}" preserve="1">
|
|
89395
|
-
<p:cSld name="${escAttr(name)}">
|
|
89396
|
-
<p:spTree>
|
|
89397
|
-
<p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>
|
|
89398
|
-
<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>
|
|
89399
|
-
</p:spTree>
|
|
89400
|
-
</p:cSld>
|
|
89401
|
-
<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>
|
|
89402
|
-
</p:sldLayout>`;
|
|
89403
|
-
}
|
|
89404
89961
|
function slideLayoutRelsXml() {
|
|
89405
89962
|
return `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
89406
89963
|
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
|
@@ -89549,7 +90106,14 @@ async function buildBlankPresentationArchive(options) {
|
|
|
89549
90106
|
zip.file("ppt/slideMasters/_rels/slideMaster1.xml.rels", slideMasterRelsXml(layoutCount));
|
|
89550
90107
|
for (let i = 0; i < layoutCount; i++) {
|
|
89551
90108
|
const layout = STANDARD_LAYOUTS[i];
|
|
89552
|
-
zip.file(
|
|
90109
|
+
zip.file(
|
|
90110
|
+
`ppt/slideLayouts/slideLayout${i + 1}.xml`,
|
|
90111
|
+
generateLayoutXml({
|
|
90112
|
+
name: layout.name,
|
|
90113
|
+
type: layout.type,
|
|
90114
|
+
placeholders: standardLayoutPlaceholders(layout.type, width / 9525, height / 9525)
|
|
90115
|
+
})
|
|
90116
|
+
);
|
|
89553
90117
|
zip.file(`ppt/slideLayouts/_rels/slideLayout${i + 1}.xml.rels`, slideLayoutRelsXml());
|
|
89554
90118
|
}
|
|
89555
90119
|
for (let i = 0; i < initialSlideCount; i++) {
|
|
@@ -89586,7 +90150,7 @@ var PresentationBuilder = class {
|
|
|
89586
90150
|
const layoutIdx = STANDARD_LAYOUTS.findIndex((l) => l.name === layoutName) + 1 || 7;
|
|
89587
90151
|
const layoutPath = `ppt/slideLayouts/slideLayout${layoutIdx}.xml`;
|
|
89588
90152
|
const resolvedName = layoutName ?? STANDARD_LAYOUTS[layoutIdx - 1]?.name ?? "Blank";
|
|
89589
|
-
return new SlideBuilder(slideNum, layoutPath, resolvedName);
|
|
90153
|
+
return new SlideBuilder(slideNum, layoutPath, resolvedName, handler);
|
|
89590
90154
|
};
|
|
89591
90155
|
return { handler, data, createSlide };
|
|
89592
90156
|
}
|
|
@@ -89643,4 +90207,4 @@ var PresentationBuilder = class {
|
|
|
89643
90207
|
* `<p:extLst>` (optional)
|
|
89644
90208
|
*/
|
|
89645
90209
|
|
|
89646
|
-
export { AFTER_ANIMATION_VALUES, ConnectorXmlFactory, DEFAULT_AFTER_ANIMATION_DIM_COLOR, DEFAULT_ANIMATION_DURATION_MS, DEFAULT_ANIMATION_TRIGGER, DEFAULT_POWERPOINT_TABLE_STYLE_ID, ELEMENT_PARAGRAPH_GEOMETRY_KEYS, EncryptedPptError, MediaGraphicFrameXmlFactory, OOXML_TO_PRESET_EMPH, OOXML_TO_PRESET_ENTR, OOXML_TO_PRESET_EXIT, PRESET_TO_OOXML, PictureXmlFactory, PptxAnimationWriteService, PptxColorStyleCodec, PptxCommentAuthorsXmlFactory, PptxCommentXmlFactoryProvider, PptxCompatibilityService, PptxConnectorParser, PptxContentTypesBuilder, PptxDocumentPropertiesUpdater, PptxEditorAnimationService, PptxElementTransformUpdater, PptxElementXmlBuilder, PptxGraphicFrameParser, PptxHandler,
|
|
90210
|
+
export { AFTER_ANIMATION_VALUES, ConnectorXmlFactory, DEFAULT_AFTER_ANIMATION_DIM_COLOR, DEFAULT_ANIMATION_DURATION_MS, DEFAULT_ANIMATION_TRIGGER, DEFAULT_POWERPOINT_TABLE_STYLE_ID, ELEMENT_PARAGRAPH_GEOMETRY_KEYS, EncryptedPptError, MediaGraphicFrameXmlFactory, OOXML_TO_PRESET_EMPH, OOXML_TO_PRESET_ENTR, OOXML_TO_PRESET_EXIT, PRESET_TO_OOXML, PictureXmlFactory, PptxAnimationWriteService, PptxColorStyleCodec, PptxCommentAuthorsXmlFactory, PptxCommentXmlFactoryProvider, PptxCompatibilityService, PptxConnectorParser, PptxContentTypesBuilder, PptxDocumentPropertiesUpdater, PptxEditorAnimationService, PptxElementTransformUpdater, PptxElementXmlBuilder, PptxGraphicFrameParser, PptxHandler, PptxHandlerRuntime105 as PptxHandlerRuntime, PptxHandlerRuntimeFactory, PptxLoadDataBuilder, PptxMediaDataParser, PptxNativeAnimationService, PptxPresentationSaveBuilder, PptxPresentationSlidesReconciler, PptxRuntimeDependencyFactory, PptxSaveConstantsFactory, PptxSaveState, PptxSaveStateBuilder, PptxShapeIdValidator, PptxShapeStyleExtractor, PptxSlideBackgroundBuilder, PptxSlideBuilder, PptxSlideCommentPartWriter, PptxSlideCommentsXmlFactory, PptxSlideElementsBuilder, PptxSlideLoaderService, PptxSlideMediaRelationshipBuilder, PptxSlideNotesBuilder, PptxSlideNotesPartUpdater, PptxSlideRelationshipRegistry, PptxSlideTransitionService, PptxTableDataParser, PptxTemplateBackgroundService, PptxXmlBuilder, PptxXmlFactoryProvider, PptxXmlLookupService, PresentationBuilder, STANDARD_LAYOUTS, SlideBuilder, TABLE_STYLE_PART_SEQUENCE, TextShapeXmlFactory, addChartCategory, addChartSeries, addLayoutContentType, addLayoutToSlideMaster, addTableStyleToMap, animationFor, applyAfterAnimationBehavior, applyAfterAnimationFromEditorList, applyChartGroupOptionsInput, applyConnectorShapeIds, applySoundToEffectCTn, applySpeedToDuration, applyTableCellTextAndStyle, assertChartGradientSupported, breakAutoNumberRun, buildBlankPresentationArchive, buildRelationshipsXml, buildSingleEffectNode, buildSlideReferenceRemap, capturedPresetIds, capturedPresetNativeAnimation, capturedSubtypes, chartFormatTargetKey, clonePartGraph, convertPptToPptx, countExistingLayouts, createAutoNumberSequence, createChartElement, createConnectorElement, createDefaultPptxHandlerRuntime, createFreeformElement, createGroupElement, createImageElement, createLayout, createLayouts, createMediaElement, createPptxSaveConstants, createShapeElement, createTableCellXml, createTableElement, createTableGraphicFrameRawXml, createTableStyleEntry, createTextElement, deleteTableStyleFromMap, ensureChartData, ensureDataPoint, extractAfterAnimationFromSubTnLst, extractGraphicBuilds, extractTableCellTextRuns, findLayoutByName, findLayoutByType, generateLayoutXml, generateTableStyleGuid, getAfterAnimation, getAfterAnimationState, getCapturedPreset, getCapturedTree, hasAnimation, isEncryptedLegacyPpt, isLegacyPpt, isLineDrawnChartType, isNativeAfterAnimationOnly, layoutRelsXml, mergeNativeAfterAnimationIntoEditorAnimations, mergeNativeSoundIntoEditorAnimations, nextAutoNumber, nextRelationshipId, normalizeTableStyleGuid, ooxmlToPresetName, parseAnimEffectFilter, parseChartFormatTargetKey, parseCondition, parseConditionList, parseFilterToken, parseRelationships, parseTimeTargetElement, rebuildTableStructureInRawXml, reconcileAnimationTargets, relationshipsPartFor, relativePartTarget, remapEditorAnimationsToShapeIds, removeChartCategory, removeChartSeries, removeEmptyDataPoint, resetIdCounter, resolveConnectorShapeIds, resolveDirectionSubtype, resolveEffectTiming, resolveIterationCount, resolveOoxmlPresetMapping, resolveOpacitySet, resolvePartPath, resolveTableBackgroundFillRef, resolveTableStyleLineRef, resolveTableStyleLineRefColor, resolveVisibilitySetTiming, serializeCondition, serializeConditionList, serializeGraphicBuild, serializeTimeTargetElement, setAfterAnimation, setAfterAnimationColor, setChartAreaFormat, setChartAxis, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategories, setChartDataLabels, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartGroupOptions, setChartGrouping, setChartLegend, setChartSeriesChartType, setChartSeriesColor, setChartSeriesErrorBars, setChartSeriesMarker, setChartSeriesTrendline, setChartTitle, setChartType, shouldHoldEndState, timingCurveToAccelDecel, toChartGradientFill, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateChartDataPoint, updateChartSeriesValues, updateMergeAttrsInRawXml, upsert, validateSeriesIndex };
|