js.documents 1.57.0 → 1.58.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 +38 -0
- package/dist/blr-types-CYYC3yYU.d.cts +35 -0
- package/dist/blr-types-CYYC3yYU.d.ts +35 -0
- package/dist/cell-CNHPsDEk.d.cts +17 -0
- package/dist/cell-CNHPsDEk.d.ts +17 -0
- package/dist/color-71eoF1Up.d.cts +2 -0
- package/dist/color-Bo228AY2.d.ts +2 -0
- package/dist/convert/codec.cjs +51 -0
- package/dist/convert/codec.d.cts +13 -0
- package/dist/convert/codec.d.ts +13 -0
- package/dist/convert/codec.js +42 -0
- package/dist/convert/convert.cjs +443 -0
- package/dist/convert/convert.d.cts +55 -0
- package/dist/convert/convert.d.ts +55 -0
- package/dist/convert/convert.js +419 -0
- package/dist/convert/local.cjs +393 -0
- package/dist/convert/local.d.cts +5 -0
- package/dist/convert/local.d.ts +5 -0
- package/dist/convert/local.js +392 -0
- package/dist/convert/port.cjs +0 -0
- package/dist/convert/port.d.cts +34 -0
- package/dist/convert/port.d.ts +34 -0
- package/dist/convert/port.js +0 -0
- package/dist/edit/docx/content.cjs +71 -0
- package/dist/edit/docx/content.d.cts +6 -0
- package/dist/edit/docx/content.d.ts +6 -0
- package/dist/edit/docx/content.js +70 -0
- package/dist/edit/docx/editor.cjs +116 -0
- package/dist/edit/docx/editor.d.cts +23 -0
- package/dist/edit/docx/editor.d.ts +23 -0
- package/dist/edit/docx/editor.js +113 -0
- package/dist/edit/docx/image.cjs +74 -0
- package/dist/edit/docx/image.d.cts +2 -0
- package/dist/edit/docx/image.d.ts +2 -0
- package/dist/edit/docx/image.js +72 -0
- package/dist/edit/docx/paragraph.cjs +132 -0
- package/dist/edit/docx/paragraph.d.cts +40 -0
- package/dist/edit/docx/paragraph.d.ts +40 -0
- package/dist/edit/docx/paragraph.js +130 -0
- package/dist/edit/docx/props.cjs +132 -0
- package/dist/edit/docx/props.d.cts +20 -0
- package/dist/edit/docx/props.d.ts +20 -0
- package/dist/edit/docx/props.js +117 -0
- package/dist/edit/docx/run.cjs +143 -0
- package/dist/edit/docx/run.d.cts +2 -0
- package/dist/edit/docx/run.d.ts +2 -0
- package/dist/edit/docx/run.js +141 -0
- package/dist/edit/docx/scaffold.cjs +97 -0
- package/dist/edit/docx/scaffold.d.cts +5 -0
- package/dist/edit/docx/scaffold.d.ts +5 -0
- package/dist/edit/docx/scaffold.js +96 -0
- package/dist/edit/docx/table.cjs +99 -0
- package/dist/edit/docx/table.d.cts +34 -0
- package/dist/edit/docx/table.d.ts +34 -0
- package/dist/edit/docx/table.js +95 -0
- package/dist/edit/odg/content.cjs +65 -0
- package/dist/edit/odg/content.d.cts +6 -0
- package/dist/edit/odg/content.d.ts +6 -0
- package/dist/edit/odg/content.js +64 -0
- package/dist/edit/odg/editor.cjs +96 -0
- package/dist/edit/odg/editor.d.cts +19 -0
- package/dist/edit/odg/editor.d.ts +19 -0
- package/dist/edit/odg/editor.js +93 -0
- package/dist/edit/odg/page.cjs +70 -0
- package/dist/edit/odg/page.d.cts +34 -0
- package/dist/edit/odg/page.d.ts +34 -0
- package/dist/edit/odg/page.js +69 -0
- package/dist/edit/odg/scaffold.cjs +106 -0
- package/dist/edit/odg/scaffold.d.cts +7 -0
- package/dist/edit/odg/scaffold.d.ts +7 -0
- package/dist/edit/odg/scaffold.js +103 -0
- package/dist/edit/odg/style.cjs +83 -0
- package/dist/edit/odg/style.d.cts +14 -0
- package/dist/edit/odg/style.d.ts +14 -0
- package/dist/edit/odg/style.js +78 -0
- package/dist/edit/odg/svg-path.cjs +30 -0
- package/dist/edit/odg/svg-path.d.cts +7 -0
- package/dist/edit/odg/svg-path.d.ts +7 -0
- package/dist/edit/odg/svg-path.js +27 -0
- package/dist/edit/odg/vector.cjs +208 -0
- package/dist/edit/odg/vector.d.cts +2 -0
- package/dist/edit/odg/vector.d.ts +2 -0
- package/dist/edit/odg/vector.js +201 -0
- package/dist/edit/odp/content.cjs +42 -0
- package/dist/edit/odp/content.d.cts +6 -0
- package/dist/edit/odp/content.d.ts +6 -0
- package/dist/edit/odp/content.js +41 -0
- package/dist/edit/odp/editor.cjs +113 -0
- package/dist/edit/odp/editor.d.cts +20 -0
- package/dist/edit/odp/editor.d.ts +20 -0
- package/dist/edit/odp/editor.js +110 -0
- package/dist/edit/odp/image.cjs +10 -0
- package/dist/edit/odp/image.d.cts +2 -0
- package/dist/edit/odp/image.d.ts +2 -0
- package/dist/edit/odp/image.js +9 -0
- package/dist/edit/odp/scaffold.cjs +108 -0
- package/dist/edit/odp/scaffold.d.cts +7 -0
- package/dist/edit/odp/scaffold.d.ts +7 -0
- package/dist/edit/odp/scaffold.js +105 -0
- package/dist/edit/odp/shape.cjs +133 -0
- package/dist/edit/odp/shape.d.cts +2 -0
- package/dist/edit/odp/shape.d.ts +2 -0
- package/dist/edit/odp/shape.js +130 -0
- package/dist/edit/odp/slide.cjs +80 -0
- package/dist/edit/odp/slide.d.cts +31 -0
- package/dist/edit/odp/slide.d.ts +31 -0
- package/dist/edit/odp/slide.js +79 -0
- package/dist/edit/ods/address.cjs +108 -0
- package/dist/edit/ods/address.d.cts +15 -0
- package/dist/edit/ods/address.d.ts +15 -0
- package/dist/edit/ods/address.js +97 -0
- package/dist/edit/ods/cell.cjs +177 -0
- package/dist/edit/ods/cell.d.cts +2 -0
- package/dist/edit/ods/cell.d.ts +2 -0
- package/dist/edit/ods/cell.js +176 -0
- package/dist/edit/ods/content.cjs +26 -0
- package/dist/edit/ods/content.d.cts +6 -0
- package/dist/edit/ods/content.d.ts +6 -0
- package/dist/edit/ods/content.js +25 -0
- package/dist/edit/ods/editor.cjs +84 -0
- package/dist/edit/ods/editor.d.cts +17 -0
- package/dist/edit/ods/editor.d.ts +17 -0
- package/dist/edit/ods/editor.js +81 -0
- package/dist/edit/ods/print-settings.cjs +90 -0
- package/dist/edit/ods/print-settings.d.cts +7 -0
- package/dist/edit/ods/print-settings.d.ts +7 -0
- package/dist/edit/ods/print-settings.js +88 -0
- package/dist/edit/ods/scaffold.cjs +129 -0
- package/dist/edit/ods/scaffold.d.cts +9 -0
- package/dist/edit/ods/scaffold.d.ts +9 -0
- package/dist/edit/ods/scaffold.js +124 -0
- package/dist/edit/ods/sheet.cjs +70 -0
- package/dist/edit/ods/sheet.d.cts +22 -0
- package/dist/edit/ods/sheet.d.ts +22 -0
- package/dist/edit/ods/sheet.js +69 -0
- package/dist/edit/odt/automatic-styles.cjs +49 -0
- package/dist/edit/odt/automatic-styles.d.cts +8 -0
- package/dist/edit/odt/automatic-styles.d.ts +8 -0
- package/dist/edit/odt/automatic-styles.js +45 -0
- package/dist/edit/odt/content.cjs +110 -0
- package/dist/edit/odt/content.d.cts +9 -0
- package/dist/edit/odt/content.d.ts +9 -0
- package/dist/edit/odt/content.js +108 -0
- package/dist/edit/odt/editor.cjs +98 -0
- package/dist/edit/odt/editor.d.cts +25 -0
- package/dist/edit/odt/editor.d.ts +25 -0
- package/dist/edit/odt/editor.js +95 -0
- package/dist/edit/odt/list.cjs +82 -0
- package/dist/edit/odt/list.d.cts +2 -0
- package/dist/edit/odt/list.d.ts +2 -0
- package/dist/edit/odt/list.js +79 -0
- package/dist/edit/odt/paragraph.cjs +84 -0
- package/dist/edit/odt/paragraph.d.cts +2 -0
- package/dist/edit/odt/paragraph.d.ts +2 -0
- package/dist/edit/odt/paragraph.js +82 -0
- package/dist/edit/odt/props.cjs +26 -0
- package/dist/edit/odt/props.d.cts +7 -0
- package/dist/edit/odt/props.d.ts +7 -0
- package/dist/edit/odt/props.js +23 -0
- package/dist/edit/odt/run.cjs +82 -0
- package/dist/edit/odt/run.d.cts +2 -0
- package/dist/edit/odt/run.d.ts +2 -0
- package/dist/edit/odt/run.js +80 -0
- package/dist/edit/odt/scaffold.cjs +109 -0
- package/dist/edit/odt/scaffold.d.cts +5 -0
- package/dist/edit/odt/scaffold.d.ts +5 -0
- package/dist/edit/odt/scaffold.js +108 -0
- package/dist/edit/odt/table.cjs +123 -0
- package/dist/edit/odt/table.d.cts +37 -0
- package/dist/edit/odt/table.d.ts +37 -0
- package/dist/edit/odt/table.js +119 -0
- package/dist/edit/pptx/content.cjs +49 -0
- package/dist/edit/pptx/content.d.cts +6 -0
- package/dist/edit/pptx/content.d.ts +6 -0
- package/dist/edit/pptx/content.js +48 -0
- package/dist/edit/pptx/editor.cjs +187 -0
- package/dist/edit/pptx/editor.d.cts +20 -0
- package/dist/edit/pptx/editor.d.ts +20 -0
- package/dist/edit/pptx/editor.js +184 -0
- package/dist/edit/pptx/image.cjs +27 -0
- package/dist/edit/pptx/image.d.cts +2 -0
- package/dist/edit/pptx/image.d.ts +2 -0
- package/dist/edit/pptx/image.js +26 -0
- package/dist/edit/pptx/scaffold.cjs +292 -0
- package/dist/edit/pptx/scaffold.d.cts +13 -0
- package/dist/edit/pptx/scaffold.d.ts +13 -0
- package/dist/edit/pptx/scaffold.js +283 -0
- package/dist/edit/pptx/shape.cjs +182 -0
- package/dist/edit/pptx/shape.d.cts +2 -0
- package/dist/edit/pptx/shape.d.ts +2 -0
- package/dist/edit/pptx/shape.js +179 -0
- package/dist/edit/pptx/slide.cjs +146 -0
- package/dist/edit/pptx/slide.d.cts +33 -0
- package/dist/edit/pptx/slide.d.ts +33 -0
- package/dist/edit/pptx/slide.js +145 -0
- package/dist/firebird/backup.cjs +150 -0
- package/dist/firebird/backup.d.cts +21 -0
- package/dist/firebird/backup.d.ts +21 -0
- package/dist/firebird/backup.js +145 -0
- package/dist/firebird/blr-types.cjs +118 -0
- package/dist/firebird/blr-types.d.cts +2 -0
- package/dist/firebird/blr-types.d.ts +2 -0
- package/dist/firebird/blr-types.js +90 -0
- package/dist/firebird/data.cjs +231 -0
- package/dist/firebird/data.d.cts +17 -0
- package/dist/firebird/data.d.ts +17 -0
- package/dist/firebird/data.js +228 -0
- package/dist/firebird/date.cjs +63 -0
- package/dist/firebird/date.d.cts +17 -0
- package/dist/firebird/date.d.ts +17 -0
- package/dist/firebird/date.js +58 -0
- package/dist/firebird/reader.cjs +157 -0
- package/dist/firebird/reader.d.cts +2 -0
- package/dist/firebird/reader.d.ts +2 -0
- package/dist/firebird/reader.js +154 -0
- package/dist/firebird/schema.cjs +91 -0
- package/dist/firebird/schema.d.cts +2 -0
- package/dist/firebird/schema.d.ts +2 -0
- package/dist/firebird/schema.js +89 -0
- package/dist/geometry-DvwdrIij.d.cts +5 -0
- package/dist/geometry-DvwdrIij.d.ts +5 -0
- package/dist/hsqldb/cache.cjs +88 -0
- package/dist/hsqldb/cache.d.cts +13 -0
- package/dist/hsqldb/cache.d.ts +13 -0
- package/dist/hsqldb/cache.js +84 -0
- package/dist/hsqldb/rowformat.cjs +222 -0
- package/dist/hsqldb/rowformat.d.cts +21 -0
- package/dist/hsqldb/rowformat.d.ts +21 -0
- package/dist/hsqldb/rowformat.js +218 -0
- package/dist/hsqldb/script.cjs +450 -0
- package/dist/hsqldb/script.d.cts +19 -0
- package/dist/hsqldb/script.d.ts +19 -0
- package/dist/hsqldb/script.js +447 -0
- package/dist/image-B-xQWYYS.d.ts +16 -0
- package/dist/image-BZDy72Jb.d.cts +16 -0
- package/dist/image-BfRLAD9B.d.cts +18 -0
- package/dist/image-BfRLAD9B.d.ts +18 -0
- package/dist/image-CeqwL-Qs.d.ts +14 -0
- package/dist/image-DWX6cNOD.d.cts +14 -0
- package/dist/index.cjs +201 -10863
- package/dist/index.d.cts +71 -1406
- package/dist/index.d.ts +71 -1406
- package/dist/index.js +67 -10727
- package/dist/layout/drawing.cjs +117 -0
- package/dist/layout/drawing.d.cts +13 -0
- package/dist/layout/drawing.d.ts +13 -0
- package/dist/layout/drawing.js +116 -0
- package/dist/layout/engine.cjs +216 -0
- package/dist/layout/engine.d.cts +19 -0
- package/dist/layout/engine.d.ts +19 -0
- package/dist/layout/engine.js +215 -0
- package/dist/layout/reconstruct.cjs +809 -0
- package/dist/layout/reconstruct.d.cts +12 -0
- package/dist/layout/reconstruct.d.ts +12 -0
- package/dist/layout/reconstruct.js +805 -0
- package/dist/layout/shared.cjs +104 -0
- package/dist/layout/shared.d.cts +15 -0
- package/dist/layout/shared.d.ts +15 -0
- package/dist/layout/shared.js +96 -0
- package/dist/layout/sheets.cjs +413 -0
- package/dist/layout/sheets.d.cts +14 -0
- package/dist/layout/sheets.d.ts +14 -0
- package/dist/layout/sheets.js +414 -0
- package/dist/layout/slides.cjs +194 -0
- package/dist/layout/slides.d.cts +25 -0
- package/dist/layout/slides.d.ts +25 -0
- package/dist/layout/slides.js +192 -0
- package/dist/list-BuBM9rwQ.d.cts +24 -0
- package/dist/list-CvKxhy3y.d.ts +24 -0
- package/dist/mathml/compose.cjs +53 -0
- package/dist/mathml/compose.d.cts +8 -0
- package/dist/mathml/compose.d.ts +8 -0
- package/dist/mathml/compose.js +49 -0
- package/dist/mathml/layout-types.cjs +0 -0
- package/dist/mathml/layout-types.d.cts +50 -0
- package/dist/mathml/layout-types.d.ts +50 -0
- package/dist/mathml/layout-types.js +0 -0
- package/dist/mathml/layout.cjs +373 -0
- package/dist/mathml/layout.d.cts +24 -0
- package/dist/mathml/layout.d.ts +24 -0
- package/dist/mathml/layout.js +371 -0
- package/dist/mathml/length.cjs +41 -0
- package/dist/mathml/length.d.cts +4 -0
- package/dist/mathml/length.d.ts +4 -0
- package/dist/mathml/length.js +40 -0
- package/dist/mathml/metrics.cjs +0 -0
- package/dist/mathml/metrics.d.cts +44 -0
- package/dist/mathml/metrics.d.ts +44 -0
- package/dist/mathml/metrics.js +0 -0
- package/dist/mathml/nodes.cjs +39 -0
- package/dist/mathml/nodes.d.cts +2 -0
- package/dist/mathml/nodes.d.ts +2 -0
- package/dist/mathml/nodes.js +32 -0
- package/dist/mathml/operators.cjs +189 -0
- package/dist/mathml/operators.d.cts +13 -0
- package/dist/mathml/operators.d.ts +13 -0
- package/dist/mathml/operators.js +188 -0
- package/dist/mathml/radical.cjs +46 -0
- package/dist/mathml/radical.d.cts +10 -0
- package/dist/mathml/radical.d.ts +10 -0
- package/dist/mathml/radical.js +45 -0
- package/dist/mathml/variant.cjs +1160 -0
- package/dist/mathml/variant.d.cts +7 -0
- package/dist/mathml/variant.d.ts +7 -0
- package/dist/mathml/variant.js +1157 -0
- package/dist/model/bytes.cjs +88 -0
- package/dist/model/bytes.d.cts +12 -0
- package/dist/model/bytes.d.ts +12 -0
- package/dist/model/bytes.js +80 -0
- package/dist/model/color.cjs +26 -0
- package/dist/model/color.d.cts +2 -0
- package/dist/model/color.d.ts +2 -0
- package/dist/model/color.js +2 -0
- package/dist/model/content.cjs +34 -0
- package/dist/model/content.d.cts +362 -0
- package/dist/model/content.d.ts +362 -0
- package/dist/model/content.js +32 -0
- package/dist/model/formula.cjs +0 -0
- package/dist/model/formula.d.cts +8 -0
- package/dist/model/formula.d.ts +8 -0
- package/dist/model/formula.js +0 -0
- package/dist/model/geometry.cjs +55 -0
- package/dist/model/geometry.d.cts +2 -0
- package/dist/model/geometry.d.ts +2 -0
- package/dist/model/geometry.js +12 -0
- package/dist/model/style.cjs +20 -0
- package/dist/model/style.d.cts +2 -0
- package/dist/model/style.d.ts +2 -0
- package/dist/model/style.js +2 -0
- package/dist/model/units.cjs +55 -0
- package/dist/model/units.d.cts +20 -0
- package/dist/model/units.d.ts +20 -0
- package/dist/model/units.js +38 -0
- package/dist/nodes-pArN9ilm.d.cts +27 -0
- package/dist/nodes-pArN9ilm.d.ts +27 -0
- package/dist/odb/csv.cjs +48 -0
- package/dist/odb/csv.d.cts +14 -0
- package/dist/odb/csv.d.ts +14 -0
- package/dist/odb/csv.js +45 -0
- package/dist/odb/read.cjs +87 -0
- package/dist/odb/read.d.cts +15 -0
- package/dist/odb/read.d.ts +15 -0
- package/dist/odb/read.js +85 -0
- package/dist/odb/spreadsheet.cjs +68 -0
- package/dist/odb/spreadsheet.d.cts +6 -0
- package/dist/odb/spreadsheet.d.ts +6 -0
- package/dist/odb/spreadsheet.js +67 -0
- package/dist/odf/formula/detect.cjs +29 -0
- package/dist/odf/formula/detect.d.cts +12 -0
- package/dist/odf/formula/detect.d.ts +12 -0
- package/dist/odf/formula/detect.js +28 -0
- package/dist/odf/formula/placeholder.cjs +37 -0
- package/dist/odf/formula/placeholder.d.cts +14 -0
- package/dist/odf/formula/placeholder.d.ts +14 -0
- package/dist/odf/formula/placeholder.js +36 -0
- package/dist/odf/formula/read.cjs +32 -0
- package/dist/odf/formula/read.d.cts +11 -0
- package/dist/odf/formula/read.d.ts +11 -0
- package/dist/odf/formula/read.js +30 -0
- package/dist/odf/odg/read.cjs +15 -0
- package/dist/odf/odg/read.d.cts +6 -0
- package/dist/odf/odg/read.d.ts +6 -0
- package/dist/odf/odg/read.js +14 -0
- package/dist/odf/odp/read.cjs +45 -0
- package/dist/odf/odp/read.d.cts +11 -0
- package/dist/odf/odp/read.d.ts +11 -0
- package/dist/odf/odp/read.js +44 -0
- package/dist/odf/ods/read.cjs +15 -0
- package/dist/odf/ods/read.d.cts +6 -0
- package/dist/odf/ods/read.d.ts +6 -0
- package/dist/odf/ods/read.js +14 -0
- package/dist/odf/odt/read.cjs +43 -0
- package/dist/odf/odt/read.d.cts +11 -0
- package/dist/odf/odt/read.d.ts +11 -0
- package/dist/odf/odt/read.js +42 -0
- package/dist/odf-package/manifest.cjs +62 -0
- package/dist/odf-package/manifest.d.cts +2 -0
- package/dist/odf-package/manifest.d.ts +2 -0
- package/dist/odf-package/manifest.js +2 -0
- package/dist/odf-package/media.cjs +34 -0
- package/dist/odf-package/media.d.cts +8 -0
- package/dist/odf-package/media.d.ts +8 -0
- package/dist/odf-package/media.js +34 -0
- package/dist/ooxml/docx/read.cjs +15 -0
- package/dist/ooxml/docx/read.d.cts +6 -0
- package/dist/ooxml/docx/read.d.ts +6 -0
- package/dist/ooxml/docx/read.js +14 -0
- package/dist/ooxml/pptx/read.cjs +15 -0
- package/dist/ooxml/pptx/read.d.cts +6 -0
- package/dist/ooxml/pptx/read.d.ts +6 -0
- package/dist/ooxml/pptx/read.js +14 -0
- package/dist/opc/content-types.cjs +47 -0
- package/dist/opc/content-types.d.cts +7 -0
- package/dist/opc/content-types.d.ts +7 -0
- package/dist/opc/content-types.js +44 -0
- package/dist/opc/media.cjs +45 -0
- package/dist/opc/media.d.cts +10 -0
- package/dist/opc/media.d.ts +10 -0
- package/dist/opc/media.js +44 -0
- package/dist/opc/paths.cjs +28 -0
- package/dist/opc/paths.d.cts +5 -0
- package/dist/opc/paths.d.ts +5 -0
- package/dist/opc/paths.js +26 -0
- package/dist/opc/rels.cjs +47 -0
- package/dist/opc/rels.d.cts +10 -0
- package/dist/opc/rels.d.ts +10 -0
- package/dist/opc/rels.js +46 -0
- package/dist/paragraph-BXbXKPy3.d.cts +30 -0
- package/dist/paragraph-CoUi_88j.d.ts +30 -0
- package/dist/ports/abort.cjs +7 -0
- package/dist/ports/abort.d.cts +4 -0
- package/dist/ports/abort.d.ts +4 -0
- package/dist/ports/abort.js +6 -0
- package/dist/ports/clock.cjs +9 -0
- package/dist/ports/clock.d.cts +8 -0
- package/dist/ports/clock.d.ts +8 -0
- package/dist/ports/clock.js +7 -0
- package/dist/reader-DP0Mbaj4.d.cts +41 -0
- package/dist/reader-DP0Mbaj4.d.ts +41 -0
- package/dist/run-B3GNScJH.d.cts +38 -0
- package/dist/run-CJfh8rv3.d.ts +38 -0
- package/dist/run-D2rTWHbt.d.ts +38 -0
- package/dist/run-F8JN7Vy4.d.cts +38 -0
- package/dist/schema-Acco3Ezi.d.cts +22 -0
- package/dist/schema-VkAA6pF5.d.ts +22 -0
- package/dist/shape-BUfjw5eZ.d.cts +35 -0
- package/dist/shape-BfN3m52m.d.ts +30 -0
- package/dist/shape-CN2ycxOo.d.cts +30 -0
- package/dist/shape-CTkl6kt8.d.ts +35 -0
- package/dist/style-DkamR3aY.d.cts +2 -0
- package/dist/style-DkamR3aY.d.ts +2 -0
- package/dist/vector-ClohqsOe.d.cts +76 -0
- package/dist/vector-ClohqsOe.d.ts +76 -0
- package/dist/xml/edit.cjs +65 -0
- package/dist/xml/edit.d.cts +12 -0
- package/dist/xml/edit.d.ts +12 -0
- package/dist/xml/edit.js +57 -0
- package/dist/xml/entities.cjs +12 -0
- package/dist/xml/entities.d.cts +5 -0
- package/dist/xml/entities.d.ts +5 -0
- package/dist/xml/entities.js +10 -0
- package/dist/xml/fragment.cjs +22 -0
- package/dist/xml/fragment.d.cts +6 -0
- package/dist/xml/fragment.d.ts +6 -0
- package/dist/xml/fragment.js +20 -0
- package/dist/xml/odf-text.cjs +53 -0
- package/dist/xml/odf-text.d.cts +6 -0
- package/dist/xml/odf-text.d.ts +6 -0
- package/dist/xml/odf-text.js +51 -0
- package/dist/xml/query.cjs +33 -0
- package/dist/xml/query.d.cts +12 -0
- package/dist/xml/query.d.ts +12 -0
- package/dist/xml/query.js +29 -0
- package/package.json +9 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { el } from "../../xml/fragment.js";
|
|
2
|
+
import { removeChild } from "../../xml/edit.js";
|
|
3
|
+
import { ensureAutomaticStyles, nextStyleName } from "./automatic-styles.js";
|
|
4
|
+
import { OdtParagraph, buildParagraph } from "./paragraph.js";
|
|
5
|
+
import { attr } from "ooxml.js";
|
|
6
|
+
import { formatOdfLength } from "odf.js";
|
|
7
|
+
//#region src/edit/odt/table.ts
|
|
8
|
+
const DEFAULT_TABLE_WIDTH_PT = 468;
|
|
9
|
+
const TABLE_COLUMN_STYLE_PREFIX = "OdtCol";
|
|
10
|
+
function internTableColumnWidth(pkg, widthPt) {
|
|
11
|
+
const automaticStyles = ensureAutomaticStyles(pkg);
|
|
12
|
+
const formatted = formatOdfLength(widthPt, "pt");
|
|
13
|
+
for (const child of automaticStyles.children) {
|
|
14
|
+
if (child.type !== "element" || child.tag !== "style:style" || attr(child, "style:family") !== "table-column") continue;
|
|
15
|
+
const props = child.children.find((c) => c.type === "element" && c.tag === "style:table-column-properties");
|
|
16
|
+
if (props !== void 0 && attr(props, "style:column-width") === formatted) {
|
|
17
|
+
const existingName = attr(child, "style:name");
|
|
18
|
+
if (existingName !== void 0) return existingName;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const name = nextStyleName(automaticStyles, "style:style", TABLE_COLUMN_STYLE_PREFIX);
|
|
22
|
+
automaticStyles.children.push(el("style:style", {
|
|
23
|
+
"style:name": name,
|
|
24
|
+
"style:family": "table-column"
|
|
25
|
+
}, [el("style:table-column-properties", { "style:column-width": formatted })]));
|
|
26
|
+
return name;
|
|
27
|
+
}
|
|
28
|
+
var OdtTableCell = class {
|
|
29
|
+
node;
|
|
30
|
+
pkg;
|
|
31
|
+
constructor(node, pkg) {
|
|
32
|
+
this.node = node;
|
|
33
|
+
this.pkg = pkg;
|
|
34
|
+
}
|
|
35
|
+
paragraphs() {
|
|
36
|
+
const out = [];
|
|
37
|
+
for (const child of this.node.children) if (child.type === "element" && child.tag === "text:p") out.push(new OdtParagraph(this.node.children, child, this.pkg));
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
appendParagraph(init) {
|
|
41
|
+
const paragraphElement = buildParagraph(this.pkg, init);
|
|
42
|
+
this.node.children.push(paragraphElement);
|
|
43
|
+
return new OdtParagraph(this.node.children, paragraphElement, this.pkg);
|
|
44
|
+
}
|
|
45
|
+
get text() {
|
|
46
|
+
return this.paragraphs().map((p) => p.text).join("\n");
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var OdtTableRow = class {
|
|
50
|
+
node;
|
|
51
|
+
pkg;
|
|
52
|
+
constructor(node, pkg) {
|
|
53
|
+
this.node = node;
|
|
54
|
+
this.pkg = pkg;
|
|
55
|
+
}
|
|
56
|
+
cells() {
|
|
57
|
+
const out = [];
|
|
58
|
+
for (const child of this.node.children) if (child.type === "element" && child.tag === "table:table-cell") out.push(new OdtTableCell(child, this.pkg));
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
function buildCell(pkg) {
|
|
63
|
+
return el("table:table-cell", {}, [buildParagraph(pkg)]);
|
|
64
|
+
}
|
|
65
|
+
function buildRow(pkg, columnCount) {
|
|
66
|
+
const cells = [];
|
|
67
|
+
for (let i = 0; i < columnCount; i++) cells.push(buildCell(pkg));
|
|
68
|
+
return el("table:table-row", {}, cells);
|
|
69
|
+
}
|
|
70
|
+
var OdtTable = class {
|
|
71
|
+
container;
|
|
72
|
+
node;
|
|
73
|
+
pkg;
|
|
74
|
+
removed = false;
|
|
75
|
+
constructor(container, node, pkg) {
|
|
76
|
+
this.container = container;
|
|
77
|
+
this.node = node;
|
|
78
|
+
this.pkg = pkg;
|
|
79
|
+
}
|
|
80
|
+
live() {
|
|
81
|
+
if (this.removed) throw new Error("this OdtTable has been removed and can no longer be used");
|
|
82
|
+
return this.node;
|
|
83
|
+
}
|
|
84
|
+
rows() {
|
|
85
|
+
const out = [];
|
|
86
|
+
for (const child of this.live().children) if (child.type === "element" && child.tag === "table:table-row") out.push(new OdtTableRow(child, this.pkg));
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
cell(rowIndex, columnIndex) {
|
|
90
|
+
const row = this.rows()[rowIndex];
|
|
91
|
+
if (row === void 0) throw new Error(`row ${rowIndex} does not exist in this table`);
|
|
92
|
+
const cell = row.cells()[columnIndex];
|
|
93
|
+
if (cell === void 0) throw new Error(`column ${columnIndex} does not exist in row ${rowIndex}`);
|
|
94
|
+
return cell;
|
|
95
|
+
}
|
|
96
|
+
appendRow(columnCount) {
|
|
97
|
+
const node = this.live();
|
|
98
|
+
const row = buildRow(this.pkg, columnCount);
|
|
99
|
+
node.children.push(row);
|
|
100
|
+
return new OdtTableRow(row, this.pkg);
|
|
101
|
+
}
|
|
102
|
+
remove() {
|
|
103
|
+
removeChild(this.container, this.live());
|
|
104
|
+
this.removed = true;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
function buildTable(pkg, init) {
|
|
108
|
+
const defaultWidth = DEFAULT_TABLE_WIDTH_PT / init.columns;
|
|
109
|
+
const columns = [];
|
|
110
|
+
for (let i = 0; i < init.columns; i++) {
|
|
111
|
+
const widthPt = init.columnWidthsPt?.[i] ?? defaultWidth;
|
|
112
|
+
columns.push(el("table:table-column", { "table:style-name": internTableColumnWidth(pkg, widthPt) }));
|
|
113
|
+
}
|
|
114
|
+
const rows = [];
|
|
115
|
+
for (let r = 0; r < init.rows; r++) rows.push(buildRow(pkg, init.columns));
|
|
116
|
+
return el("table:table", {}, [...columns, ...rows]);
|
|
117
|
+
}
|
|
118
|
+
//#endregion
|
|
119
|
+
export { OdtTable, OdtTableCell, OdtTableRow, buildTable };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_edit_pptx_editor = require("./editor.cjs");
|
|
3
|
+
let ooxml_js = require("ooxml.js");
|
|
4
|
+
//#region src/edit/pptx/content.ts
|
|
5
|
+
function buildPptxPackage(content) {
|
|
6
|
+
if (content.kind !== "presentation") throw new Error("buildPptxPackage requires a presentation ContentDocument");
|
|
7
|
+
const editor = require_edit_pptx_editor.createPptx();
|
|
8
|
+
const firstSlide = content.slides[0];
|
|
9
|
+
if (firstSlide !== void 0) editor.slideSize = firstSlide.size;
|
|
10
|
+
for (const slide of content.slides) {
|
|
11
|
+
const pptxSlide = editor.addSlide();
|
|
12
|
+
for (const shape of slide.shapes) appendShape(pptxSlide, shape);
|
|
13
|
+
if (slide.notes.length > 0) pptxSlide.notes = slide.notes;
|
|
14
|
+
}
|
|
15
|
+
return editor.toPackage();
|
|
16
|
+
}
|
|
17
|
+
function appendShape(slide, shape) {
|
|
18
|
+
const [onlyBlock] = shape.blocks;
|
|
19
|
+
if (shape.blocks.length === 1 && onlyBlock?.kind === "image") {
|
|
20
|
+
slide.addImage({
|
|
21
|
+
frame: shape.frame,
|
|
22
|
+
format: onlyBlock.format,
|
|
23
|
+
bytes: (0, ooxml_js.base64ToBytes)(onlyBlock.base64),
|
|
24
|
+
altText: onlyBlock.altText
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const paragraphs = [];
|
|
29
|
+
for (const block of shape.blocks) {
|
|
30
|
+
if (block.kind !== "paragraph") continue;
|
|
31
|
+
paragraphs.push({
|
|
32
|
+
alignment: block.alignment,
|
|
33
|
+
runs: block.runs.map((run) => ({
|
|
34
|
+
text: run.text,
|
|
35
|
+
bold: run.bold,
|
|
36
|
+
italic: run.italic,
|
|
37
|
+
fontFamily: run.fontFamily,
|
|
38
|
+
sizePt: run.sizePt,
|
|
39
|
+
color: run.color
|
|
40
|
+
}))
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
slide.addTextBox({
|
|
44
|
+
frame: shape.frame,
|
|
45
|
+
text: ""
|
|
46
|
+
}).setParagraphs(paragraphs);
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
exports.buildPptxPackage = buildPptxPackage;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { createPptx } from "./editor.js";
|
|
2
|
+
import { base64ToBytes } from "ooxml.js";
|
|
3
|
+
//#region src/edit/pptx/content.ts
|
|
4
|
+
function buildPptxPackage(content) {
|
|
5
|
+
if (content.kind !== "presentation") throw new Error("buildPptxPackage requires a presentation ContentDocument");
|
|
6
|
+
const editor = createPptx();
|
|
7
|
+
const firstSlide = content.slides[0];
|
|
8
|
+
if (firstSlide !== void 0) editor.slideSize = firstSlide.size;
|
|
9
|
+
for (const slide of content.slides) {
|
|
10
|
+
const pptxSlide = editor.addSlide();
|
|
11
|
+
for (const shape of slide.shapes) appendShape(pptxSlide, shape);
|
|
12
|
+
if (slide.notes.length > 0) pptxSlide.notes = slide.notes;
|
|
13
|
+
}
|
|
14
|
+
return editor.toPackage();
|
|
15
|
+
}
|
|
16
|
+
function appendShape(slide, shape) {
|
|
17
|
+
const [onlyBlock] = shape.blocks;
|
|
18
|
+
if (shape.blocks.length === 1 && onlyBlock?.kind === "image") {
|
|
19
|
+
slide.addImage({
|
|
20
|
+
frame: shape.frame,
|
|
21
|
+
format: onlyBlock.format,
|
|
22
|
+
bytes: base64ToBytes(onlyBlock.base64),
|
|
23
|
+
altText: onlyBlock.altText
|
|
24
|
+
});
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const paragraphs = [];
|
|
28
|
+
for (const block of shape.blocks) {
|
|
29
|
+
if (block.kind !== "paragraph") continue;
|
|
30
|
+
paragraphs.push({
|
|
31
|
+
alignment: block.alignment,
|
|
32
|
+
runs: block.runs.map((run) => ({
|
|
33
|
+
text: run.text,
|
|
34
|
+
bold: run.bold,
|
|
35
|
+
italic: run.italic,
|
|
36
|
+
fontFamily: run.fontFamily,
|
|
37
|
+
sizePt: run.sizePt,
|
|
38
|
+
color: run.color
|
|
39
|
+
}))
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
slide.addTextBox({
|
|
43
|
+
frame: shape.frame,
|
|
44
|
+
text: ""
|
|
45
|
+
}).setParagraphs(paragraphs);
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { buildPptxPackage };
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_xml_fragment = require("../../xml/fragment.cjs");
|
|
3
|
+
const require_model_units = require("../../model/units.cjs");
|
|
4
|
+
const require_opc_paths = require("../../opc/paths.cjs");
|
|
5
|
+
const require_opc_rels = require("../../opc/rels.cjs");
|
|
6
|
+
const require_opc_content_types = require("../../opc/content-types.cjs");
|
|
7
|
+
const require_edit_pptx_scaffold = require("./scaffold.cjs");
|
|
8
|
+
const require_edit_pptx_slide = require("./slide.cjs");
|
|
9
|
+
let ooxml_js = require("ooxml.js");
|
|
10
|
+
//#region src/edit/pptx/editor.ts
|
|
11
|
+
const PRESENTATION_PART_PATH = "ppt/presentation.xml";
|
|
12
|
+
const MEDIA_DIR = "ppt/media";
|
|
13
|
+
const SLIDE_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.presentationml.slide+xml";
|
|
14
|
+
const SLIDE_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide";
|
|
15
|
+
function directChild(parent, tag) {
|
|
16
|
+
for (const child of parent.children) if (child.type === "element" && child.tag === tag) return child;
|
|
17
|
+
}
|
|
18
|
+
function attrValue(element, name) {
|
|
19
|
+
for (const a of element.attributes) if (a.name === name) return a.value;
|
|
20
|
+
}
|
|
21
|
+
function findPresentationRoot(pkg) {
|
|
22
|
+
const root = (0, ooxml_js.rootElement)(pkg.parts[PRESENTATION_PART_PATH]);
|
|
23
|
+
if (root === void 0) throw new Error(`package has no root element at ${PRESENTATION_PART_PATH}`);
|
|
24
|
+
return root;
|
|
25
|
+
}
|
|
26
|
+
function findSldIdLst(presentationRoot) {
|
|
27
|
+
const sldIdLst = directChild(presentationRoot, "p:sldIdLst");
|
|
28
|
+
if (sldIdLst === void 0) throw new Error(`${PRESENTATION_PART_PATH} has no p:sldIdLst element`);
|
|
29
|
+
return sldIdLst;
|
|
30
|
+
}
|
|
31
|
+
function findSldSz(presentationRoot) {
|
|
32
|
+
const sldSz = directChild(presentationRoot, "p:sldSz");
|
|
33
|
+
if (sldSz === void 0) throw new Error(`${PRESENTATION_PART_PATH} has no p:sldSz element`);
|
|
34
|
+
return sldSz;
|
|
35
|
+
}
|
|
36
|
+
function nextSlideId(sldIdLst) {
|
|
37
|
+
let max = 255;
|
|
38
|
+
for (const child of sldIdLst.children) {
|
|
39
|
+
if (child.type !== "element" || child.tag !== "p:sldId") continue;
|
|
40
|
+
const id = attrValue(child, "id");
|
|
41
|
+
if (id === void 0) continue;
|
|
42
|
+
const n = Number.parseInt(id, 10);
|
|
43
|
+
if (!Number.isNaN(n) && n > max) max = n;
|
|
44
|
+
}
|
|
45
|
+
return max + 1;
|
|
46
|
+
}
|
|
47
|
+
function nextSlidePartIndex(pkg) {
|
|
48
|
+
const pattern = /^ppt\/slides\/slide(\d+)\.xml$/;
|
|
49
|
+
let max = 0;
|
|
50
|
+
for (const path of Object.keys(pkg.parts)) {
|
|
51
|
+
const match = pattern.exec(path);
|
|
52
|
+
if (match === null) continue;
|
|
53
|
+
const digits = match[1];
|
|
54
|
+
if (digits === void 0) continue;
|
|
55
|
+
const n = Number.parseInt(digits, 10);
|
|
56
|
+
if (n > max) max = n;
|
|
57
|
+
}
|
|
58
|
+
return max + 1;
|
|
59
|
+
}
|
|
60
|
+
function buildEmptySlideRoot() {
|
|
61
|
+
return require_xml_fragment.el("p:sld", {
|
|
62
|
+
"xmlns:p": require_edit_pptx_scaffold.PML_NS,
|
|
63
|
+
"xmlns:a": require_edit_pptx_scaffold.DML_NS,
|
|
64
|
+
"xmlns:r": require_edit_pptx_scaffold.R_NS
|
|
65
|
+
}, [require_xml_fragment.el("p:cSld", {}, [require_edit_pptx_scaffold.buildEmptyGroupSpTree()])]);
|
|
66
|
+
}
|
|
67
|
+
var PptxEditor = class {
|
|
68
|
+
pkg;
|
|
69
|
+
constructor(pkg) {
|
|
70
|
+
this.pkg = pkg;
|
|
71
|
+
}
|
|
72
|
+
slides() {
|
|
73
|
+
const sldIdLst = findSldIdLst(findPresentationRoot(this.pkg));
|
|
74
|
+
const presentationRels = (0, ooxml_js.resolveRelationships)(this.pkg, PRESENTATION_PART_PATH);
|
|
75
|
+
const out = [];
|
|
76
|
+
for (const child of sldIdLst.children) {
|
|
77
|
+
if (child.type !== "element" || child.tag !== "p:sldId") continue;
|
|
78
|
+
const rId = attrValue(child, "r:id");
|
|
79
|
+
if (rId === void 0) continue;
|
|
80
|
+
const rel = presentationRels.get(rId);
|
|
81
|
+
if (rel === void 0) continue;
|
|
82
|
+
const slideRoot = (0, ooxml_js.rootElement)(this.pkg.parts[rel.target]);
|
|
83
|
+
if (slideRoot === void 0) continue;
|
|
84
|
+
const context = {
|
|
85
|
+
pkg: this.pkg,
|
|
86
|
+
slidePartPath: rel.target,
|
|
87
|
+
mediaDir: MEDIA_DIR
|
|
88
|
+
};
|
|
89
|
+
out.push(new require_edit_pptx_slide.PptxSlide(sldIdLst.children, slideRoot, context));
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
addSlide() {
|
|
94
|
+
const sldIdLst = findSldIdLst(findPresentationRoot(this.pkg));
|
|
95
|
+
const partIndex = nextSlidePartIndex(this.pkg);
|
|
96
|
+
const slidePartPath = `ppt/slides/slide${partIndex}.xml`;
|
|
97
|
+
const slideRoot = buildEmptySlideRoot();
|
|
98
|
+
this.pkg.parts[slidePartPath] = {
|
|
99
|
+
kind: "xml",
|
|
100
|
+
nodes: [slideRoot]
|
|
101
|
+
};
|
|
102
|
+
require_opc_content_types.ensureContentTypeOverride(this.pkg, slidePartPath, SLIDE_CONTENT_TYPE);
|
|
103
|
+
const relationshipId = require_opc_rels.addRelationship(this.pkg, PRESENTATION_PART_PATH, {
|
|
104
|
+
type: SLIDE_RELATIONSHIP_TYPE,
|
|
105
|
+
target: `slides/slide${partIndex}.xml`
|
|
106
|
+
});
|
|
107
|
+
require_opc_rels.addRelationship(this.pkg, slidePartPath, {
|
|
108
|
+
type: require_edit_pptx_scaffold.SLIDE_LAYOUT_REL_TYPE,
|
|
109
|
+
target: require_opc_paths.buildRelativeTarget(slidePartPath, require_edit_pptx_scaffold.SLIDE_LAYOUT_PART_PATH)
|
|
110
|
+
});
|
|
111
|
+
const slideId = nextSlideId(sldIdLst);
|
|
112
|
+
sldIdLst.children.push(require_xml_fragment.el("p:sldId", {
|
|
113
|
+
id: String(slideId),
|
|
114
|
+
"r:id": relationshipId
|
|
115
|
+
}));
|
|
116
|
+
const context = {
|
|
117
|
+
pkg: this.pkg,
|
|
118
|
+
slidePartPath,
|
|
119
|
+
mediaDir: MEDIA_DIR
|
|
120
|
+
};
|
|
121
|
+
return new require_edit_pptx_slide.PptxSlide(sldIdLst.children, slideRoot, context);
|
|
122
|
+
}
|
|
123
|
+
removeSlideAt(index) {
|
|
124
|
+
const sldIdLst = findSldIdLst(findPresentationRoot(this.pkg));
|
|
125
|
+
const target = sldIdLst.children.filter((c) => c.type === "element" && c.tag === "p:sldId")[index];
|
|
126
|
+
if (target?.type !== "element") throw new Error(`slide index ${index} does not exist`);
|
|
127
|
+
const rId = attrValue(target, "r:id");
|
|
128
|
+
const listIndex = sldIdLst.children.indexOf(target);
|
|
129
|
+
sldIdLst.children.splice(listIndex, 1);
|
|
130
|
+
if (rId !== void 0) {
|
|
131
|
+
const rel = (0, ooxml_js.resolveRelationships)(this.pkg, PRESENTATION_PART_PATH).get(rId);
|
|
132
|
+
if (rel !== void 0) delete this.pkg.parts[rel.target];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
moveSlide(from, to) {
|
|
136
|
+
const sldIdLst = findSldIdLst(findPresentationRoot(this.pkg));
|
|
137
|
+
const sldIdIndices = [];
|
|
138
|
+
sldIdLst.children.forEach((child, i) => {
|
|
139
|
+
if (child.type === "element" && child.tag === "p:sldId") sldIdIndices.push(i);
|
|
140
|
+
});
|
|
141
|
+
const fromChildIndex = sldIdIndices[from];
|
|
142
|
+
if (fromChildIndex === void 0) throw new Error(`slide index ${from} does not exist`);
|
|
143
|
+
const [moved] = sldIdLst.children.splice(fromChildIndex, 1);
|
|
144
|
+
if (moved === void 0) throw new Error(`slide index ${from} does not exist`);
|
|
145
|
+
const updatedIndices = [];
|
|
146
|
+
sldIdLst.children.forEach((child, i) => {
|
|
147
|
+
if (child.type === "element" && child.tag === "p:sldId") updatedIndices.push(i);
|
|
148
|
+
});
|
|
149
|
+
const insertAt = to < updatedIndices.length ? updatedIndices[to] ?? sldIdLst.children.length : sldIdLst.children.length;
|
|
150
|
+
sldIdLst.children.splice(insertAt, 0, moved);
|
|
151
|
+
}
|
|
152
|
+
get slideSize() {
|
|
153
|
+
const sldSz = findSldSz(findPresentationRoot(this.pkg));
|
|
154
|
+
const cx = attrValue(sldSz, "cx");
|
|
155
|
+
const cy = attrValue(sldSz, "cy");
|
|
156
|
+
return {
|
|
157
|
+
widthPt: cx === void 0 ? 0 : require_model_units.emuToPt(Number.parseInt(cx, 10)),
|
|
158
|
+
heightPt: cy === void 0 ? 0 : require_model_units.emuToPt(Number.parseInt(cy, 10))
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
set slideSize(size) {
|
|
162
|
+
const sldSz = findSldSz(findPresentationRoot(this.pkg));
|
|
163
|
+
sldSz.attributes = [{
|
|
164
|
+
name: "cx",
|
|
165
|
+
value: String(require_model_units.ptToEmu(size.widthPt))
|
|
166
|
+
}, {
|
|
167
|
+
name: "cy",
|
|
168
|
+
value: String(require_model_units.ptToEmu(size.heightPt))
|
|
169
|
+
}];
|
|
170
|
+
}
|
|
171
|
+
toPackage() {
|
|
172
|
+
return this.pkg;
|
|
173
|
+
}
|
|
174
|
+
toBytes() {
|
|
175
|
+
return (0, ooxml_js.encodePackage)(this.pkg);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
function openPptx(bytes) {
|
|
179
|
+
return new PptxEditor((0, ooxml_js.decodePackage)(bytes));
|
|
180
|
+
}
|
|
181
|
+
function createPptx() {
|
|
182
|
+
return new PptxEditor(require_edit_pptx_scaffold.createEmptyPptxPackage());
|
|
183
|
+
}
|
|
184
|
+
//#endregion
|
|
185
|
+
exports.PptxEditor = PptxEditor;
|
|
186
|
+
exports.createPptx = createPptx;
|
|
187
|
+
exports.openPptx = openPptx;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { s as PageSize } from "../../geometry-DvwdrIij.cjs";
|
|
2
|
+
import { PptxSlide } from "./slide.cjs";
|
|
3
|
+
import { Package } from "ooxml.js";
|
|
4
|
+
//#region src/edit/pptx/editor.d.ts
|
|
5
|
+
declare class PptxEditor {
|
|
6
|
+
private readonly pkg;
|
|
7
|
+
constructor(pkg: Package);
|
|
8
|
+
slides(): PptxSlide[];
|
|
9
|
+
addSlide(): PptxSlide;
|
|
10
|
+
removeSlideAt(index: number): void;
|
|
11
|
+
moveSlide(from: number, to: number): void;
|
|
12
|
+
get slideSize(): PageSize;
|
|
13
|
+
set slideSize(size: PageSize);
|
|
14
|
+
toPackage(): Package;
|
|
15
|
+
toBytes(): Uint8Array<ArrayBuffer>;
|
|
16
|
+
}
|
|
17
|
+
declare function openPptx(bytes: Uint8Array<ArrayBuffer>): PptxEditor;
|
|
18
|
+
declare function createPptx(): PptxEditor;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { PptxEditor, createPptx, openPptx };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { s as PageSize } from "../../geometry-DvwdrIij.js";
|
|
2
|
+
import { PptxSlide } from "./slide.js";
|
|
3
|
+
import { Package } from "ooxml.js";
|
|
4
|
+
//#region src/edit/pptx/editor.d.ts
|
|
5
|
+
declare class PptxEditor {
|
|
6
|
+
private readonly pkg;
|
|
7
|
+
constructor(pkg: Package);
|
|
8
|
+
slides(): PptxSlide[];
|
|
9
|
+
addSlide(): PptxSlide;
|
|
10
|
+
removeSlideAt(index: number): void;
|
|
11
|
+
moveSlide(from: number, to: number): void;
|
|
12
|
+
get slideSize(): PageSize;
|
|
13
|
+
set slideSize(size: PageSize);
|
|
14
|
+
toPackage(): Package;
|
|
15
|
+
toBytes(): Uint8Array<ArrayBuffer>;
|
|
16
|
+
}
|
|
17
|
+
declare function openPptx(bytes: Uint8Array<ArrayBuffer>): PptxEditor;
|
|
18
|
+
declare function createPptx(): PptxEditor;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { PptxEditor, createPptx, openPptx };
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { el } from "../../xml/fragment.js";
|
|
2
|
+
import { emuToPt, ptToEmu } from "../../model/units.js";
|
|
3
|
+
import { buildRelativeTarget } from "../../opc/paths.js";
|
|
4
|
+
import { addRelationship } from "../../opc/rels.js";
|
|
5
|
+
import { ensureContentTypeOverride } from "../../opc/content-types.js";
|
|
6
|
+
import { DML_NS, PML_NS, R_NS, SLIDE_LAYOUT_PART_PATH, SLIDE_LAYOUT_REL_TYPE, buildEmptyGroupSpTree, createEmptyPptxPackage } from "./scaffold.js";
|
|
7
|
+
import { PptxSlide } from "./slide.js";
|
|
8
|
+
import { decodePackage, encodePackage, resolveRelationships, rootElement } from "ooxml.js";
|
|
9
|
+
//#region src/edit/pptx/editor.ts
|
|
10
|
+
const PRESENTATION_PART_PATH = "ppt/presentation.xml";
|
|
11
|
+
const MEDIA_DIR = "ppt/media";
|
|
12
|
+
const SLIDE_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.presentationml.slide+xml";
|
|
13
|
+
const SLIDE_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide";
|
|
14
|
+
function directChild(parent, tag) {
|
|
15
|
+
for (const child of parent.children) if (child.type === "element" && child.tag === tag) return child;
|
|
16
|
+
}
|
|
17
|
+
function attrValue(element, name) {
|
|
18
|
+
for (const a of element.attributes) if (a.name === name) return a.value;
|
|
19
|
+
}
|
|
20
|
+
function findPresentationRoot(pkg) {
|
|
21
|
+
const root = rootElement(pkg.parts[PRESENTATION_PART_PATH]);
|
|
22
|
+
if (root === void 0) throw new Error(`package has no root element at ${PRESENTATION_PART_PATH}`);
|
|
23
|
+
return root;
|
|
24
|
+
}
|
|
25
|
+
function findSldIdLst(presentationRoot) {
|
|
26
|
+
const sldIdLst = directChild(presentationRoot, "p:sldIdLst");
|
|
27
|
+
if (sldIdLst === void 0) throw new Error(`${PRESENTATION_PART_PATH} has no p:sldIdLst element`);
|
|
28
|
+
return sldIdLst;
|
|
29
|
+
}
|
|
30
|
+
function findSldSz(presentationRoot) {
|
|
31
|
+
const sldSz = directChild(presentationRoot, "p:sldSz");
|
|
32
|
+
if (sldSz === void 0) throw new Error(`${PRESENTATION_PART_PATH} has no p:sldSz element`);
|
|
33
|
+
return sldSz;
|
|
34
|
+
}
|
|
35
|
+
function nextSlideId(sldIdLst) {
|
|
36
|
+
let max = 255;
|
|
37
|
+
for (const child of sldIdLst.children) {
|
|
38
|
+
if (child.type !== "element" || child.tag !== "p:sldId") continue;
|
|
39
|
+
const id = attrValue(child, "id");
|
|
40
|
+
if (id === void 0) continue;
|
|
41
|
+
const n = Number.parseInt(id, 10);
|
|
42
|
+
if (!Number.isNaN(n) && n > max) max = n;
|
|
43
|
+
}
|
|
44
|
+
return max + 1;
|
|
45
|
+
}
|
|
46
|
+
function nextSlidePartIndex(pkg) {
|
|
47
|
+
const pattern = /^ppt\/slides\/slide(\d+)\.xml$/;
|
|
48
|
+
let max = 0;
|
|
49
|
+
for (const path of Object.keys(pkg.parts)) {
|
|
50
|
+
const match = pattern.exec(path);
|
|
51
|
+
if (match === null) continue;
|
|
52
|
+
const digits = match[1];
|
|
53
|
+
if (digits === void 0) continue;
|
|
54
|
+
const n = Number.parseInt(digits, 10);
|
|
55
|
+
if (n > max) max = n;
|
|
56
|
+
}
|
|
57
|
+
return max + 1;
|
|
58
|
+
}
|
|
59
|
+
function buildEmptySlideRoot() {
|
|
60
|
+
return el("p:sld", {
|
|
61
|
+
"xmlns:p": PML_NS,
|
|
62
|
+
"xmlns:a": DML_NS,
|
|
63
|
+
"xmlns:r": R_NS
|
|
64
|
+
}, [el("p:cSld", {}, [buildEmptyGroupSpTree()])]);
|
|
65
|
+
}
|
|
66
|
+
var PptxEditor = class {
|
|
67
|
+
pkg;
|
|
68
|
+
constructor(pkg) {
|
|
69
|
+
this.pkg = pkg;
|
|
70
|
+
}
|
|
71
|
+
slides() {
|
|
72
|
+
const sldIdLst = findSldIdLst(findPresentationRoot(this.pkg));
|
|
73
|
+
const presentationRels = resolveRelationships(this.pkg, PRESENTATION_PART_PATH);
|
|
74
|
+
const out = [];
|
|
75
|
+
for (const child of sldIdLst.children) {
|
|
76
|
+
if (child.type !== "element" || child.tag !== "p:sldId") continue;
|
|
77
|
+
const rId = attrValue(child, "r:id");
|
|
78
|
+
if (rId === void 0) continue;
|
|
79
|
+
const rel = presentationRels.get(rId);
|
|
80
|
+
if (rel === void 0) continue;
|
|
81
|
+
const slideRoot = rootElement(this.pkg.parts[rel.target]);
|
|
82
|
+
if (slideRoot === void 0) continue;
|
|
83
|
+
const context = {
|
|
84
|
+
pkg: this.pkg,
|
|
85
|
+
slidePartPath: rel.target,
|
|
86
|
+
mediaDir: MEDIA_DIR
|
|
87
|
+
};
|
|
88
|
+
out.push(new PptxSlide(sldIdLst.children, slideRoot, context));
|
|
89
|
+
}
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
addSlide() {
|
|
93
|
+
const sldIdLst = findSldIdLst(findPresentationRoot(this.pkg));
|
|
94
|
+
const partIndex = nextSlidePartIndex(this.pkg);
|
|
95
|
+
const slidePartPath = `ppt/slides/slide${partIndex}.xml`;
|
|
96
|
+
const slideRoot = buildEmptySlideRoot();
|
|
97
|
+
this.pkg.parts[slidePartPath] = {
|
|
98
|
+
kind: "xml",
|
|
99
|
+
nodes: [slideRoot]
|
|
100
|
+
};
|
|
101
|
+
ensureContentTypeOverride(this.pkg, slidePartPath, SLIDE_CONTENT_TYPE);
|
|
102
|
+
const relationshipId = addRelationship(this.pkg, PRESENTATION_PART_PATH, {
|
|
103
|
+
type: SLIDE_RELATIONSHIP_TYPE,
|
|
104
|
+
target: `slides/slide${partIndex}.xml`
|
|
105
|
+
});
|
|
106
|
+
addRelationship(this.pkg, slidePartPath, {
|
|
107
|
+
type: SLIDE_LAYOUT_REL_TYPE,
|
|
108
|
+
target: buildRelativeTarget(slidePartPath, SLIDE_LAYOUT_PART_PATH)
|
|
109
|
+
});
|
|
110
|
+
const slideId = nextSlideId(sldIdLst);
|
|
111
|
+
sldIdLst.children.push(el("p:sldId", {
|
|
112
|
+
id: String(slideId),
|
|
113
|
+
"r:id": relationshipId
|
|
114
|
+
}));
|
|
115
|
+
const context = {
|
|
116
|
+
pkg: this.pkg,
|
|
117
|
+
slidePartPath,
|
|
118
|
+
mediaDir: MEDIA_DIR
|
|
119
|
+
};
|
|
120
|
+
return new PptxSlide(sldIdLst.children, slideRoot, context);
|
|
121
|
+
}
|
|
122
|
+
removeSlideAt(index) {
|
|
123
|
+
const sldIdLst = findSldIdLst(findPresentationRoot(this.pkg));
|
|
124
|
+
const target = sldIdLst.children.filter((c) => c.type === "element" && c.tag === "p:sldId")[index];
|
|
125
|
+
if (target?.type !== "element") throw new Error(`slide index ${index} does not exist`);
|
|
126
|
+
const rId = attrValue(target, "r:id");
|
|
127
|
+
const listIndex = sldIdLst.children.indexOf(target);
|
|
128
|
+
sldIdLst.children.splice(listIndex, 1);
|
|
129
|
+
if (rId !== void 0) {
|
|
130
|
+
const rel = resolveRelationships(this.pkg, PRESENTATION_PART_PATH).get(rId);
|
|
131
|
+
if (rel !== void 0) delete this.pkg.parts[rel.target];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
moveSlide(from, to) {
|
|
135
|
+
const sldIdLst = findSldIdLst(findPresentationRoot(this.pkg));
|
|
136
|
+
const sldIdIndices = [];
|
|
137
|
+
sldIdLst.children.forEach((child, i) => {
|
|
138
|
+
if (child.type === "element" && child.tag === "p:sldId") sldIdIndices.push(i);
|
|
139
|
+
});
|
|
140
|
+
const fromChildIndex = sldIdIndices[from];
|
|
141
|
+
if (fromChildIndex === void 0) throw new Error(`slide index ${from} does not exist`);
|
|
142
|
+
const [moved] = sldIdLst.children.splice(fromChildIndex, 1);
|
|
143
|
+
if (moved === void 0) throw new Error(`slide index ${from} does not exist`);
|
|
144
|
+
const updatedIndices = [];
|
|
145
|
+
sldIdLst.children.forEach((child, i) => {
|
|
146
|
+
if (child.type === "element" && child.tag === "p:sldId") updatedIndices.push(i);
|
|
147
|
+
});
|
|
148
|
+
const insertAt = to < updatedIndices.length ? updatedIndices[to] ?? sldIdLst.children.length : sldIdLst.children.length;
|
|
149
|
+
sldIdLst.children.splice(insertAt, 0, moved);
|
|
150
|
+
}
|
|
151
|
+
get slideSize() {
|
|
152
|
+
const sldSz = findSldSz(findPresentationRoot(this.pkg));
|
|
153
|
+
const cx = attrValue(sldSz, "cx");
|
|
154
|
+
const cy = attrValue(sldSz, "cy");
|
|
155
|
+
return {
|
|
156
|
+
widthPt: cx === void 0 ? 0 : emuToPt(Number.parseInt(cx, 10)),
|
|
157
|
+
heightPt: cy === void 0 ? 0 : emuToPt(Number.parseInt(cy, 10))
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
set slideSize(size) {
|
|
161
|
+
const sldSz = findSldSz(findPresentationRoot(this.pkg));
|
|
162
|
+
sldSz.attributes = [{
|
|
163
|
+
name: "cx",
|
|
164
|
+
value: String(ptToEmu(size.widthPt))
|
|
165
|
+
}, {
|
|
166
|
+
name: "cy",
|
|
167
|
+
value: String(ptToEmu(size.heightPt))
|
|
168
|
+
}];
|
|
169
|
+
}
|
|
170
|
+
toPackage() {
|
|
171
|
+
return this.pkg;
|
|
172
|
+
}
|
|
173
|
+
toBytes() {
|
|
174
|
+
return encodePackage(this.pkg);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
function openPptx(bytes) {
|
|
178
|
+
return new PptxEditor(decodePackage(bytes));
|
|
179
|
+
}
|
|
180
|
+
function createPptx() {
|
|
181
|
+
return new PptxEditor(createEmptyPptxPackage());
|
|
182
|
+
}
|
|
183
|
+
//#endregion
|
|
184
|
+
export { PptxEditor, createPptx, openPptx };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_opc_media = require("../../opc/media.cjs");
|
|
3
|
+
const require_edit_pptx_shape = require("./shape.cjs");
|
|
4
|
+
//#region src/edit/pptx/image.ts
|
|
5
|
+
function nextShapeId(slideRoot) {
|
|
6
|
+
let max = 0;
|
|
7
|
+
const stack = [slideRoot];
|
|
8
|
+
while (stack.length > 0) {
|
|
9
|
+
const node = stack.pop();
|
|
10
|
+
if (node === void 0) continue;
|
|
11
|
+
if (node.tag === "p:cNvPr") {
|
|
12
|
+
for (const a of node.attributes) if (a.name === "id") {
|
|
13
|
+
const n = Number.parseInt(a.value, 10);
|
|
14
|
+
if (!Number.isNaN(n) && n > max) max = n;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
for (const child of node.children) if (child.type === "element") stack.push(child);
|
|
18
|
+
}
|
|
19
|
+
return max + 1;
|
|
20
|
+
}
|
|
21
|
+
function insertPictureShapeMedia(context, slideRoot, frame, image) {
|
|
22
|
+
const { relationshipId } = require_opc_media.addImageMedia(context.pkg, context.partPath, context.mediaDir, image.format, image.bytes);
|
|
23
|
+
const id = nextShapeId(slideRoot);
|
|
24
|
+
return require_edit_pptx_shape.buildPictureShape(frame, relationshipId, id);
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
exports.insertPictureShapeMedia = insertPictureShapeMedia;
|