documents.js 1.57.1 → 1.59.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 +19 -7
- 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/capability.cjs +198 -0
- package/dist/convert/capability.d.cts +42 -0
- package/dist/convert/capability.d.ts +42 -0
- package/dist/convert/capability.js +195 -0
- package/dist/convert/codec.cjs +56 -0
- package/dist/convert/codec.d.cts +14 -0
- package/dist/convert/codec.d.ts +14 -0
- package/dist/convert/codec.js +46 -0
- package/dist/convert/convert.cjs +467 -0
- package/dist/convert/convert.d.cts +57 -0
- package/dist/convert/convert.d.ts +57 -0
- package/dist/convert/convert.js +441 -0
- package/dist/convert/local.cjs +84 -0
- package/dist/convert/local.d.cts +5 -0
- package/dist/convert/local.d.ts +5 -0
- package/dist/convert/local.js +83 -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/column-row.cjs +31 -0
- package/dist/edit/ods/column-row.d.cts +6 -0
- package/dist/edit/ods/column-row.d.ts +6 -0
- package/dist/edit/ods/column-row.js +29 -0
- package/dist/edit/ods/content.cjs +28 -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 +27 -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 +77 -0
- package/dist/edit/ods/sheet.d.cts +24 -0
- package/dist/edit/ods/sheet.d.ts +24 -0
- package/dist/edit/ods/sheet.js +76 -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 +204 -10863
- package/dist/index.d.cts +72 -1407
- package/dist/index.d.ts +72 -1407
- package/dist/index.js +68 -10728
- 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,80 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_xml_fragment = require("../../xml/fragment.cjs");
|
|
3
|
+
const require_xml_edit = require("../../xml/edit.cjs");
|
|
4
|
+
const require_xml_odf_text = require("../../xml/odf-text.cjs");
|
|
5
|
+
const require_edit_odt_paragraph = require("../odt/paragraph.cjs");
|
|
6
|
+
const require_edit_odp_shape = require("./shape.cjs");
|
|
7
|
+
const require_edit_odp_image = require("./image.cjs");
|
|
8
|
+
let ooxml_js = require("ooxml.js");
|
|
9
|
+
let odf_js = require("odf.js");
|
|
10
|
+
//#region src/edit/odp/slide.ts
|
|
11
|
+
function directChild(parent, tag) {
|
|
12
|
+
for (const child of parent.children) if (child.type === "element" && child.tag === tag) return child;
|
|
13
|
+
}
|
|
14
|
+
const NOTES_FRAME_X_PT = 20;
|
|
15
|
+
const NOTES_FRAME_Y_PT = 400;
|
|
16
|
+
const NOTES_FRAME_WIDTH_PT = 300;
|
|
17
|
+
const NOTES_FRAME_HEIGHT_PT = 100;
|
|
18
|
+
function buildNotesElement(pkg, value) {
|
|
19
|
+
const paragraphs = value.split("\n").map((line) => require_edit_odt_paragraph.buildParagraph(pkg, { text: line }));
|
|
20
|
+
const textBox = require_xml_fragment.el("draw:text-box", {}, paragraphs);
|
|
21
|
+
const frame = require_xml_fragment.el("draw:frame", {
|
|
22
|
+
"svg:x": (0, odf_js.formatOdfLength)(NOTES_FRAME_X_PT),
|
|
23
|
+
"svg:y": (0, odf_js.formatOdfLength)(NOTES_FRAME_Y_PT),
|
|
24
|
+
"svg:width": (0, odf_js.formatOdfLength)(NOTES_FRAME_WIDTH_PT),
|
|
25
|
+
"svg:height": (0, odf_js.formatOdfLength)(NOTES_FRAME_HEIGHT_PT)
|
|
26
|
+
}, [textBox]);
|
|
27
|
+
return require_xml_fragment.el("presentation:notes", {}, [frame]);
|
|
28
|
+
}
|
|
29
|
+
var OdpSlide = class {
|
|
30
|
+
container;
|
|
31
|
+
node;
|
|
32
|
+
context;
|
|
33
|
+
removed = false;
|
|
34
|
+
constructor(container, node, context) {
|
|
35
|
+
this.container = container;
|
|
36
|
+
this.node = node;
|
|
37
|
+
this.context = context;
|
|
38
|
+
}
|
|
39
|
+
live() {
|
|
40
|
+
if (this.removed) throw new Error("this OdpSlide has been removed from the presentation and can no longer be used");
|
|
41
|
+
return this.node;
|
|
42
|
+
}
|
|
43
|
+
shapes() {
|
|
44
|
+
const node = this.live();
|
|
45
|
+
const out = [];
|
|
46
|
+
for (const child of node.children) if (child.type === "element" && child.tag === "draw:frame") out.push(new require_edit_odp_shape.OdpShape(node.children, child, this.context.pkg));
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
addTextBox(init) {
|
|
50
|
+
const node = this.live();
|
|
51
|
+
const frameElement = require_edit_odp_shape.buildTextBoxFrame(this.context.pkg, init.frame, init.text);
|
|
52
|
+
node.children.push(frameElement);
|
|
53
|
+
return new require_edit_odp_shape.OdpShape(node.children, frameElement, this.context.pkg);
|
|
54
|
+
}
|
|
55
|
+
addImage(init) {
|
|
56
|
+
const node = this.live();
|
|
57
|
+
const media = { pkg: this.context.pkg };
|
|
58
|
+
const frameElement = require_edit_odp_image.insertImageFrameMedia(media, init.frame, init);
|
|
59
|
+
node.children.push(frameElement);
|
|
60
|
+
return new require_edit_odp_shape.OdpShape(node.children, frameElement, this.context.pkg);
|
|
61
|
+
}
|
|
62
|
+
get notes() {
|
|
63
|
+
const notesElement = directChild(this.live(), "presentation:notes");
|
|
64
|
+
if (notesElement === void 0) return "";
|
|
65
|
+
return (0, ooxml_js.elementsWithTag)(notesElement.children, "text:p").map((p) => require_xml_odf_text.decodeOdfText(p.children)).join("\n");
|
|
66
|
+
}
|
|
67
|
+
set notes(value) {
|
|
68
|
+
const node = this.live();
|
|
69
|
+
const existing = directChild(node, "presentation:notes");
|
|
70
|
+
const notesElement = buildNotesElement(this.context.pkg, value);
|
|
71
|
+
if (existing === void 0) node.children.push(notesElement);
|
|
72
|
+
else existing.children = notesElement.children;
|
|
73
|
+
}
|
|
74
|
+
remove() {
|
|
75
|
+
require_xml_edit.removeChild(this.container, this.live());
|
|
76
|
+
this.removed = true;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
//#endregion
|
|
80
|
+
exports.OdpSlide = OdpSlide;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { t as Box } from "../../geometry-DvwdrIij.cjs";
|
|
2
|
+
import { t as ImageInit } from "../../image-DWX6cNOD.cjs";
|
|
3
|
+
import { t as OdpShape } from "../../shape-CN2ycxOo.cjs";
|
|
4
|
+
import { Package, XmlElement, XmlNode } from "odf.js";
|
|
5
|
+
//#region src/edit/odp/slide.d.ts
|
|
6
|
+
interface TextBoxInit {
|
|
7
|
+
readonly frame: Box;
|
|
8
|
+
readonly text: string;
|
|
9
|
+
}
|
|
10
|
+
interface SlideImageInit extends ImageInit {
|
|
11
|
+
readonly frame: Box;
|
|
12
|
+
}
|
|
13
|
+
interface SlideContext {
|
|
14
|
+
readonly pkg: Package;
|
|
15
|
+
}
|
|
16
|
+
declare class OdpSlide {
|
|
17
|
+
private readonly container;
|
|
18
|
+
private readonly node;
|
|
19
|
+
private readonly context;
|
|
20
|
+
private removed;
|
|
21
|
+
constructor(container: XmlNode[], node: XmlElement, context: SlideContext);
|
|
22
|
+
private live;
|
|
23
|
+
shapes(): OdpShape[];
|
|
24
|
+
addTextBox(init: TextBoxInit): OdpShape;
|
|
25
|
+
addImage(init: SlideImageInit): OdpShape;
|
|
26
|
+
get notes(): string;
|
|
27
|
+
set notes(value: string);
|
|
28
|
+
remove(): void;
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { OdpSlide, SlideContext, SlideImageInit, TextBoxInit };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { t as Box } from "../../geometry-DvwdrIij.js";
|
|
2
|
+
import { t as ImageInit } from "../../image-CeqwL-Qs.js";
|
|
3
|
+
import { t as OdpShape } from "../../shape-BfN3m52m.js";
|
|
4
|
+
import { Package, XmlElement, XmlNode } from "odf.js";
|
|
5
|
+
//#region src/edit/odp/slide.d.ts
|
|
6
|
+
interface TextBoxInit {
|
|
7
|
+
readonly frame: Box;
|
|
8
|
+
readonly text: string;
|
|
9
|
+
}
|
|
10
|
+
interface SlideImageInit extends ImageInit {
|
|
11
|
+
readonly frame: Box;
|
|
12
|
+
}
|
|
13
|
+
interface SlideContext {
|
|
14
|
+
readonly pkg: Package;
|
|
15
|
+
}
|
|
16
|
+
declare class OdpSlide {
|
|
17
|
+
private readonly container;
|
|
18
|
+
private readonly node;
|
|
19
|
+
private readonly context;
|
|
20
|
+
private removed;
|
|
21
|
+
constructor(container: XmlNode[], node: XmlElement, context: SlideContext);
|
|
22
|
+
private live;
|
|
23
|
+
shapes(): OdpShape[];
|
|
24
|
+
addTextBox(init: TextBoxInit): OdpShape;
|
|
25
|
+
addImage(init: SlideImageInit): OdpShape;
|
|
26
|
+
get notes(): string;
|
|
27
|
+
set notes(value: string);
|
|
28
|
+
remove(): void;
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { OdpSlide, SlideContext, SlideImageInit, TextBoxInit };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { el } from "../../xml/fragment.js";
|
|
2
|
+
import { removeChild } from "../../xml/edit.js";
|
|
3
|
+
import { decodeOdfText as decodeOdfText$1 } from "../../xml/odf-text.js";
|
|
4
|
+
import { buildParagraph } from "../odt/paragraph.js";
|
|
5
|
+
import { OdpShape, buildTextBoxFrame } from "./shape.js";
|
|
6
|
+
import { insertImageFrameMedia } from "./image.js";
|
|
7
|
+
import { elementsWithTag } from "ooxml.js";
|
|
8
|
+
import { formatOdfLength } from "odf.js";
|
|
9
|
+
//#region src/edit/odp/slide.ts
|
|
10
|
+
function directChild(parent, tag) {
|
|
11
|
+
for (const child of parent.children) if (child.type === "element" && child.tag === tag) return child;
|
|
12
|
+
}
|
|
13
|
+
const NOTES_FRAME_X_PT = 20;
|
|
14
|
+
const NOTES_FRAME_Y_PT = 400;
|
|
15
|
+
const NOTES_FRAME_WIDTH_PT = 300;
|
|
16
|
+
const NOTES_FRAME_HEIGHT_PT = 100;
|
|
17
|
+
function buildNotesElement(pkg, value) {
|
|
18
|
+
const paragraphs = value.split("\n").map((line) => buildParagraph(pkg, { text: line }));
|
|
19
|
+
const textBox = el("draw:text-box", {}, paragraphs);
|
|
20
|
+
const frame = el("draw:frame", {
|
|
21
|
+
"svg:x": formatOdfLength(NOTES_FRAME_X_PT),
|
|
22
|
+
"svg:y": formatOdfLength(NOTES_FRAME_Y_PT),
|
|
23
|
+
"svg:width": formatOdfLength(NOTES_FRAME_WIDTH_PT),
|
|
24
|
+
"svg:height": formatOdfLength(NOTES_FRAME_HEIGHT_PT)
|
|
25
|
+
}, [textBox]);
|
|
26
|
+
return el("presentation:notes", {}, [frame]);
|
|
27
|
+
}
|
|
28
|
+
var OdpSlide = class {
|
|
29
|
+
container;
|
|
30
|
+
node;
|
|
31
|
+
context;
|
|
32
|
+
removed = false;
|
|
33
|
+
constructor(container, node, context) {
|
|
34
|
+
this.container = container;
|
|
35
|
+
this.node = node;
|
|
36
|
+
this.context = context;
|
|
37
|
+
}
|
|
38
|
+
live() {
|
|
39
|
+
if (this.removed) throw new Error("this OdpSlide has been removed from the presentation and can no longer be used");
|
|
40
|
+
return this.node;
|
|
41
|
+
}
|
|
42
|
+
shapes() {
|
|
43
|
+
const node = this.live();
|
|
44
|
+
const out = [];
|
|
45
|
+
for (const child of node.children) if (child.type === "element" && child.tag === "draw:frame") out.push(new OdpShape(node.children, child, this.context.pkg));
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
addTextBox(init) {
|
|
49
|
+
const node = this.live();
|
|
50
|
+
const frameElement = buildTextBoxFrame(this.context.pkg, init.frame, init.text);
|
|
51
|
+
node.children.push(frameElement);
|
|
52
|
+
return new OdpShape(node.children, frameElement, this.context.pkg);
|
|
53
|
+
}
|
|
54
|
+
addImage(init) {
|
|
55
|
+
const node = this.live();
|
|
56
|
+
const media = { pkg: this.context.pkg };
|
|
57
|
+
const frameElement = insertImageFrameMedia(media, init.frame, init);
|
|
58
|
+
node.children.push(frameElement);
|
|
59
|
+
return new OdpShape(node.children, frameElement, this.context.pkg);
|
|
60
|
+
}
|
|
61
|
+
get notes() {
|
|
62
|
+
const notesElement = directChild(this.live(), "presentation:notes");
|
|
63
|
+
if (notesElement === void 0) return "";
|
|
64
|
+
return elementsWithTag(notesElement.children, "text:p").map((p) => decodeOdfText$1(p.children)).join("\n");
|
|
65
|
+
}
|
|
66
|
+
set notes(value) {
|
|
67
|
+
const node = this.live();
|
|
68
|
+
const existing = directChild(node, "presentation:notes");
|
|
69
|
+
const notesElement = buildNotesElement(this.context.pkg, value);
|
|
70
|
+
if (existing === void 0) node.children.push(notesElement);
|
|
71
|
+
else existing.children = notesElement.children;
|
|
72
|
+
}
|
|
73
|
+
remove() {
|
|
74
|
+
removeChild(this.container, this.live());
|
|
75
|
+
this.removed = true;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
export { OdpSlide };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_xml_fragment = require("../../xml/fragment.cjs");
|
|
3
|
+
//#region src/edit/ods/address.ts
|
|
4
|
+
const ROW_TAG = "table:table-row";
|
|
5
|
+
const COLUMN_TAG = "table:table-column";
|
|
6
|
+
const CELL_TAG = "table:table-cell";
|
|
7
|
+
const COVERED_CELL_TAG = "table:covered-table-cell";
|
|
8
|
+
const ROW_REPEAT_ATTR = "table:number-rows-repeated";
|
|
9
|
+
const COLUMN_REPEAT_ATTR = "table:number-columns-repeated";
|
|
10
|
+
function isElementWithTag(tag) {
|
|
11
|
+
return (node) => node.type === "element" && node.tag === tag;
|
|
12
|
+
}
|
|
13
|
+
function isCellOrCoveredCell(node) {
|
|
14
|
+
return node.type === "element" && (node.tag === "table:table-cell" || node.tag === "table:covered-table-cell");
|
|
15
|
+
}
|
|
16
|
+
function validateIndex(value, label) {
|
|
17
|
+
if (!Number.isInteger(value) || value < 0) throw new Error(`${label} must be a non-negative integer, got ${value}`);
|
|
18
|
+
}
|
|
19
|
+
function readRepeatCount(node, attrName) {
|
|
20
|
+
const raw = node.attributes.find((attribute) => attribute.name === attrName)?.value;
|
|
21
|
+
if (raw === void 0) return 1;
|
|
22
|
+
const parsed = Number.parseInt(raw, 10);
|
|
23
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : 1;
|
|
24
|
+
}
|
|
25
|
+
function withRepeatCount(node, attrName, count) {
|
|
26
|
+
const clone = structuredClone(node);
|
|
27
|
+
clone.attributes = clone.attributes.filter((attribute) => attribute.name !== attrName);
|
|
28
|
+
if (count > 1) clone.attributes.push({
|
|
29
|
+
name: attrName,
|
|
30
|
+
value: String(count)
|
|
31
|
+
});
|
|
32
|
+
return clone;
|
|
33
|
+
}
|
|
34
|
+
function replaceRun(children, isMember, targetIndex, repeatAttr, buildEmpty) {
|
|
35
|
+
validateIndex(targetIndex, "targetIndex");
|
|
36
|
+
const members = [];
|
|
37
|
+
children.forEach((node, position) => {
|
|
38
|
+
if (isMember(node)) members.push({
|
|
39
|
+
node,
|
|
40
|
+
position
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
let cursor = 0;
|
|
44
|
+
for (const member of members) {
|
|
45
|
+
const count = readRepeatCount(member.node, repeatAttr);
|
|
46
|
+
if (targetIndex < cursor + count) {
|
|
47
|
+
const offset = targetIndex - cursor;
|
|
48
|
+
if (count === 1) return member.node;
|
|
49
|
+
const before = offset > 0 ? withRepeatCount(member.node, repeatAttr, offset) : void 0;
|
|
50
|
+
const target = withRepeatCount(member.node, repeatAttr, 1);
|
|
51
|
+
const replacement = [
|
|
52
|
+
before,
|
|
53
|
+
target,
|
|
54
|
+
count - offset - 1 > 0 ? withRepeatCount(member.node, repeatAttr, count - offset - 1) : void 0
|
|
55
|
+
].filter((candidate) => candidate !== void 0);
|
|
56
|
+
children.splice(member.position, 1, ...replacement);
|
|
57
|
+
return target;
|
|
58
|
+
}
|
|
59
|
+
cursor += count;
|
|
60
|
+
}
|
|
61
|
+
const gap = targetIndex - cursor;
|
|
62
|
+
const lastMember = members[members.length - 1];
|
|
63
|
+
const insertAt = lastMember === void 0 ? children.length : lastMember.position + 1;
|
|
64
|
+
const toInsert = [];
|
|
65
|
+
if (gap > 0) toInsert.push(withRepeatCount(buildEmpty(), repeatAttr, gap));
|
|
66
|
+
const target = buildEmpty();
|
|
67
|
+
toInsert.push(target);
|
|
68
|
+
children.splice(insertAt, 0, ...toInsert);
|
|
69
|
+
return target;
|
|
70
|
+
}
|
|
71
|
+
function ensureColumnCoverage(tableElement, minCount) {
|
|
72
|
+
if (minCount <= 0) return;
|
|
73
|
+
const columnMembers = [];
|
|
74
|
+
tableElement.children.forEach((node, position) => {
|
|
75
|
+
if (isElementWithTag("table:table-column")(node)) columnMembers.push({
|
|
76
|
+
node,
|
|
77
|
+
position
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
const covered = columnMembers.reduce((sum, member) => sum + readRepeatCount(member.node, COLUMN_REPEAT_ATTR), 0);
|
|
81
|
+
if (covered >= minCount) return;
|
|
82
|
+
const additional = minCount - covered;
|
|
83
|
+
const newColumn = withRepeatCount(require_xml_fragment.el(COLUMN_TAG), COLUMN_REPEAT_ATTR, additional);
|
|
84
|
+
const lastColumn = columnMembers[columnMembers.length - 1];
|
|
85
|
+
if (lastColumn === void 0) {
|
|
86
|
+
const firstRowPosition = tableElement.children.findIndex(isElementWithTag(ROW_TAG));
|
|
87
|
+
const insertAt = firstRowPosition === -1 ? tableElement.children.length : firstRowPosition;
|
|
88
|
+
tableElement.children.splice(insertAt, 0, newColumn);
|
|
89
|
+
} else tableElement.children.splice(lastColumn.position + 1, 0, newColumn);
|
|
90
|
+
}
|
|
91
|
+
function resolveCellNode(tableElement, row, column) {
|
|
92
|
+
validateIndex(row, "row");
|
|
93
|
+
validateIndex(column, "column");
|
|
94
|
+
ensureColumnCoverage(tableElement, column + 1);
|
|
95
|
+
return replaceRun(replaceRun(tableElement.children, isElementWithTag(ROW_TAG), row, ROW_REPEAT_ATTR, () => require_xml_fragment.el(ROW_TAG)).children, isCellOrCoveredCell, column, COLUMN_REPEAT_ATTR, () => require_xml_fragment.el(CELL_TAG));
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
98
|
+
exports.CELL_TAG = CELL_TAG;
|
|
99
|
+
exports.COLUMN_REPEAT_ATTR = COLUMN_REPEAT_ATTR;
|
|
100
|
+
exports.COLUMN_TAG = COLUMN_TAG;
|
|
101
|
+
exports.COVERED_CELL_TAG = COVERED_CELL_TAG;
|
|
102
|
+
exports.ROW_REPEAT_ATTR = ROW_REPEAT_ATTR;
|
|
103
|
+
exports.ROW_TAG = ROW_TAG;
|
|
104
|
+
exports.ensureColumnCoverage = ensureColumnCoverage;
|
|
105
|
+
exports.isCellOrCoveredCell = isCellOrCoveredCell;
|
|
106
|
+
exports.isElementWithTag = isElementWithTag;
|
|
107
|
+
exports.replaceRun = replaceRun;
|
|
108
|
+
exports.resolveCellNode = resolveCellNode;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { XmlElement, XmlNode } from "odf.js";
|
|
2
|
+
//#region src/edit/ods/address.d.ts
|
|
3
|
+
declare const ROW_TAG = "table:table-row";
|
|
4
|
+
declare const COLUMN_TAG = "table:table-column";
|
|
5
|
+
declare const CELL_TAG = "table:table-cell";
|
|
6
|
+
declare const COVERED_CELL_TAG = "table:covered-table-cell";
|
|
7
|
+
declare const ROW_REPEAT_ATTR = "table:number-rows-repeated";
|
|
8
|
+
declare const COLUMN_REPEAT_ATTR = "table:number-columns-repeated";
|
|
9
|
+
declare function isElementWithTag(tag: string): (node: XmlNode) => node is XmlElement;
|
|
10
|
+
declare function isCellOrCoveredCell(node: XmlNode): node is XmlElement;
|
|
11
|
+
declare function replaceRun(children: XmlNode[], isMember: (node: XmlNode) => node is XmlElement, targetIndex: number, repeatAttr: string, buildEmpty: () => XmlElement): XmlElement;
|
|
12
|
+
declare function ensureColumnCoverage(tableElement: XmlElement, minCount: number): void;
|
|
13
|
+
declare function resolveCellNode(tableElement: XmlElement, row: number, column: number): XmlElement;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { CELL_TAG, COLUMN_REPEAT_ATTR, COLUMN_TAG, COVERED_CELL_TAG, ROW_REPEAT_ATTR, ROW_TAG, ensureColumnCoverage, isCellOrCoveredCell, isElementWithTag, replaceRun, resolveCellNode };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { XmlElement, XmlNode } from "odf.js";
|
|
2
|
+
//#region src/edit/ods/address.d.ts
|
|
3
|
+
declare const ROW_TAG = "table:table-row";
|
|
4
|
+
declare const COLUMN_TAG = "table:table-column";
|
|
5
|
+
declare const CELL_TAG = "table:table-cell";
|
|
6
|
+
declare const COVERED_CELL_TAG = "table:covered-table-cell";
|
|
7
|
+
declare const ROW_REPEAT_ATTR = "table:number-rows-repeated";
|
|
8
|
+
declare const COLUMN_REPEAT_ATTR = "table:number-columns-repeated";
|
|
9
|
+
declare function isElementWithTag(tag: string): (node: XmlNode) => node is XmlElement;
|
|
10
|
+
declare function isCellOrCoveredCell(node: XmlNode): node is XmlElement;
|
|
11
|
+
declare function replaceRun(children: XmlNode[], isMember: (node: XmlNode) => node is XmlElement, targetIndex: number, repeatAttr: string, buildEmpty: () => XmlElement): XmlElement;
|
|
12
|
+
declare function ensureColumnCoverage(tableElement: XmlElement, minCount: number): void;
|
|
13
|
+
declare function resolveCellNode(tableElement: XmlElement, row: number, column: number): XmlElement;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { CELL_TAG, COLUMN_REPEAT_ATTR, COLUMN_TAG, COVERED_CELL_TAG, ROW_REPEAT_ATTR, ROW_TAG, ensureColumnCoverage, isCellOrCoveredCell, isElementWithTag, replaceRun, resolveCellNode };
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { el } from "../../xml/fragment.js";
|
|
2
|
+
//#region src/edit/ods/address.ts
|
|
3
|
+
const ROW_TAG = "table:table-row";
|
|
4
|
+
const COLUMN_TAG = "table:table-column";
|
|
5
|
+
const CELL_TAG = "table:table-cell";
|
|
6
|
+
const COVERED_CELL_TAG = "table:covered-table-cell";
|
|
7
|
+
const ROW_REPEAT_ATTR = "table:number-rows-repeated";
|
|
8
|
+
const COLUMN_REPEAT_ATTR = "table:number-columns-repeated";
|
|
9
|
+
function isElementWithTag(tag) {
|
|
10
|
+
return (node) => node.type === "element" && node.tag === tag;
|
|
11
|
+
}
|
|
12
|
+
function isCellOrCoveredCell(node) {
|
|
13
|
+
return node.type === "element" && (node.tag === "table:table-cell" || node.tag === "table:covered-table-cell");
|
|
14
|
+
}
|
|
15
|
+
function validateIndex(value, label) {
|
|
16
|
+
if (!Number.isInteger(value) || value < 0) throw new Error(`${label} must be a non-negative integer, got ${value}`);
|
|
17
|
+
}
|
|
18
|
+
function readRepeatCount(node, attrName) {
|
|
19
|
+
const raw = node.attributes.find((attribute) => attribute.name === attrName)?.value;
|
|
20
|
+
if (raw === void 0) return 1;
|
|
21
|
+
const parsed = Number.parseInt(raw, 10);
|
|
22
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : 1;
|
|
23
|
+
}
|
|
24
|
+
function withRepeatCount(node, attrName, count) {
|
|
25
|
+
const clone = structuredClone(node);
|
|
26
|
+
clone.attributes = clone.attributes.filter((attribute) => attribute.name !== attrName);
|
|
27
|
+
if (count > 1) clone.attributes.push({
|
|
28
|
+
name: attrName,
|
|
29
|
+
value: String(count)
|
|
30
|
+
});
|
|
31
|
+
return clone;
|
|
32
|
+
}
|
|
33
|
+
function replaceRun(children, isMember, targetIndex, repeatAttr, buildEmpty) {
|
|
34
|
+
validateIndex(targetIndex, "targetIndex");
|
|
35
|
+
const members = [];
|
|
36
|
+
children.forEach((node, position) => {
|
|
37
|
+
if (isMember(node)) members.push({
|
|
38
|
+
node,
|
|
39
|
+
position
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
let cursor = 0;
|
|
43
|
+
for (const member of members) {
|
|
44
|
+
const count = readRepeatCount(member.node, repeatAttr);
|
|
45
|
+
if (targetIndex < cursor + count) {
|
|
46
|
+
const offset = targetIndex - cursor;
|
|
47
|
+
if (count === 1) return member.node;
|
|
48
|
+
const before = offset > 0 ? withRepeatCount(member.node, repeatAttr, offset) : void 0;
|
|
49
|
+
const target = withRepeatCount(member.node, repeatAttr, 1);
|
|
50
|
+
const replacement = [
|
|
51
|
+
before,
|
|
52
|
+
target,
|
|
53
|
+
count - offset - 1 > 0 ? withRepeatCount(member.node, repeatAttr, count - offset - 1) : void 0
|
|
54
|
+
].filter((candidate) => candidate !== void 0);
|
|
55
|
+
children.splice(member.position, 1, ...replacement);
|
|
56
|
+
return target;
|
|
57
|
+
}
|
|
58
|
+
cursor += count;
|
|
59
|
+
}
|
|
60
|
+
const gap = targetIndex - cursor;
|
|
61
|
+
const lastMember = members[members.length - 1];
|
|
62
|
+
const insertAt = lastMember === void 0 ? children.length : lastMember.position + 1;
|
|
63
|
+
const toInsert = [];
|
|
64
|
+
if (gap > 0) toInsert.push(withRepeatCount(buildEmpty(), repeatAttr, gap));
|
|
65
|
+
const target = buildEmpty();
|
|
66
|
+
toInsert.push(target);
|
|
67
|
+
children.splice(insertAt, 0, ...toInsert);
|
|
68
|
+
return target;
|
|
69
|
+
}
|
|
70
|
+
function ensureColumnCoverage(tableElement, minCount) {
|
|
71
|
+
if (minCount <= 0) return;
|
|
72
|
+
const columnMembers = [];
|
|
73
|
+
tableElement.children.forEach((node, position) => {
|
|
74
|
+
if (isElementWithTag("table:table-column")(node)) columnMembers.push({
|
|
75
|
+
node,
|
|
76
|
+
position
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
const covered = columnMembers.reduce((sum, member) => sum + readRepeatCount(member.node, COLUMN_REPEAT_ATTR), 0);
|
|
80
|
+
if (covered >= minCount) return;
|
|
81
|
+
const additional = minCount - covered;
|
|
82
|
+
const newColumn = withRepeatCount(el(COLUMN_TAG), COLUMN_REPEAT_ATTR, additional);
|
|
83
|
+
const lastColumn = columnMembers[columnMembers.length - 1];
|
|
84
|
+
if (lastColumn === void 0) {
|
|
85
|
+
const firstRowPosition = tableElement.children.findIndex(isElementWithTag(ROW_TAG));
|
|
86
|
+
const insertAt = firstRowPosition === -1 ? tableElement.children.length : firstRowPosition;
|
|
87
|
+
tableElement.children.splice(insertAt, 0, newColumn);
|
|
88
|
+
} else tableElement.children.splice(lastColumn.position + 1, 0, newColumn);
|
|
89
|
+
}
|
|
90
|
+
function resolveCellNode(tableElement, row, column) {
|
|
91
|
+
validateIndex(row, "row");
|
|
92
|
+
validateIndex(column, "column");
|
|
93
|
+
ensureColumnCoverage(tableElement, column + 1);
|
|
94
|
+
return replaceRun(replaceRun(tableElement.children, isElementWithTag(ROW_TAG), row, ROW_REPEAT_ATTR, () => el(ROW_TAG)).children, isCellOrCoveredCell, column, COLUMN_REPEAT_ATTR, () => el(CELL_TAG));
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
export { CELL_TAG, COLUMN_REPEAT_ATTR, COLUMN_TAG, COVERED_CELL_TAG, ROW_REPEAT_ATTR, ROW_TAG, ensureColumnCoverage, isCellOrCoveredCell, isElementWithTag, replaceRun, resolveCellNode };
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_xml_fragment = require("../../xml/fragment.cjs");
|
|
3
|
+
const require_xml_edit = require("../../xml/edit.cjs");
|
|
4
|
+
const require_xml_odf_text = require("../../xml/odf-text.cjs");
|
|
5
|
+
const require_edit_odt_paragraph = require("../odt/paragraph.cjs");
|
|
6
|
+
const require_edit_odt_content = require("../odt/content.cjs");
|
|
7
|
+
let ooxml_js = require("ooxml.js");
|
|
8
|
+
//#region src/edit/ods/cell.ts
|
|
9
|
+
const VALUE_TYPE_ATTR = "office:value-type";
|
|
10
|
+
const VALUE_ATTR = "office:value";
|
|
11
|
+
const BOOLEAN_VALUE_ATTR = "office:boolean-value";
|
|
12
|
+
const DATE_VALUE_ATTR = "office:date-value";
|
|
13
|
+
const TIME_VALUE_ATTR = "office:time-value";
|
|
14
|
+
const STRING_VALUE_ATTR = "office:string-value";
|
|
15
|
+
const CURRENCY_ATTR = "office:currency";
|
|
16
|
+
const FORMULA_ATTR = "table:formula";
|
|
17
|
+
const VALUE_ATTRS = [
|
|
18
|
+
VALUE_TYPE_ATTR,
|
|
19
|
+
VALUE_ATTR,
|
|
20
|
+
BOOLEAN_VALUE_ATTR,
|
|
21
|
+
DATE_VALUE_ATTR,
|
|
22
|
+
TIME_VALUE_ATTR,
|
|
23
|
+
STRING_VALUE_ATTR,
|
|
24
|
+
CURRENCY_ATTR
|
|
25
|
+
];
|
|
26
|
+
function parseNumber(raw) {
|
|
27
|
+
if (raw === void 0) return;
|
|
28
|
+
const value = Number(raw);
|
|
29
|
+
return Number.isNaN(value) ? void 0 : value;
|
|
30
|
+
}
|
|
31
|
+
var OdsCell = class {
|
|
32
|
+
node;
|
|
33
|
+
pkg;
|
|
34
|
+
constructor(node, pkg) {
|
|
35
|
+
this.node = node;
|
|
36
|
+
this.pkg = pkg;
|
|
37
|
+
}
|
|
38
|
+
get value() {
|
|
39
|
+
const valueType = (0, ooxml_js.attr)(this.node, VALUE_TYPE_ATTR);
|
|
40
|
+
const displayText = this.displayText;
|
|
41
|
+
switch (valueType) {
|
|
42
|
+
case "float": {
|
|
43
|
+
const value = parseNumber((0, ooxml_js.attr)(this.node, VALUE_ATTR));
|
|
44
|
+
return value === void 0 ? {
|
|
45
|
+
kind: "string",
|
|
46
|
+
value: displayText
|
|
47
|
+
} : {
|
|
48
|
+
kind: "number",
|
|
49
|
+
value
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
case "percentage": {
|
|
53
|
+
const value = parseNumber((0, ooxml_js.attr)(this.node, VALUE_ATTR));
|
|
54
|
+
return value === void 0 ? {
|
|
55
|
+
kind: "string",
|
|
56
|
+
value: displayText
|
|
57
|
+
} : {
|
|
58
|
+
kind: "percentage",
|
|
59
|
+
value
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
case "currency": {
|
|
63
|
+
const value = parseNumber((0, ooxml_js.attr)(this.node, VALUE_ATTR));
|
|
64
|
+
if (value === void 0) return {
|
|
65
|
+
kind: "string",
|
|
66
|
+
value: displayText
|
|
67
|
+
};
|
|
68
|
+
const currency = (0, ooxml_js.attr)(this.node, CURRENCY_ATTR);
|
|
69
|
+
return currency === void 0 ? {
|
|
70
|
+
kind: "currency",
|
|
71
|
+
value
|
|
72
|
+
} : {
|
|
73
|
+
kind: "currency",
|
|
74
|
+
value,
|
|
75
|
+
currency
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
case "boolean": {
|
|
79
|
+
const raw = (0, ooxml_js.attr)(this.node, BOOLEAN_VALUE_ATTR);
|
|
80
|
+
return raw === void 0 ? {
|
|
81
|
+
kind: "string",
|
|
82
|
+
value: displayText
|
|
83
|
+
} : {
|
|
84
|
+
kind: "boolean",
|
|
85
|
+
value: raw === "true"
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
case "date": return {
|
|
89
|
+
kind: "date",
|
|
90
|
+
value: (0, ooxml_js.attr)(this.node, DATE_VALUE_ATTR) ?? displayText
|
|
91
|
+
};
|
|
92
|
+
case "time": return {
|
|
93
|
+
kind: "time",
|
|
94
|
+
value: (0, ooxml_js.attr)(this.node, TIME_VALUE_ATTR) ?? displayText
|
|
95
|
+
};
|
|
96
|
+
case "string": return {
|
|
97
|
+
kind: "string",
|
|
98
|
+
value: (0, ooxml_js.attr)(this.node, STRING_VALUE_ATTR) ?? displayText
|
|
99
|
+
};
|
|
100
|
+
default: return { kind: "empty" };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
set value(value) {
|
|
104
|
+
for (const name of VALUE_ATTRS) require_xml_edit.removeAttr(this.node, name);
|
|
105
|
+
switch (value.kind) {
|
|
106
|
+
case "number":
|
|
107
|
+
require_xml_edit.setAttr(this.node, VALUE_TYPE_ATTR, "float");
|
|
108
|
+
require_xml_edit.setAttr(this.node, VALUE_ATTR, String(value.value));
|
|
109
|
+
this.displayText = String(value.value);
|
|
110
|
+
break;
|
|
111
|
+
case "percentage":
|
|
112
|
+
require_xml_edit.setAttr(this.node, VALUE_TYPE_ATTR, "percentage");
|
|
113
|
+
require_xml_edit.setAttr(this.node, VALUE_ATTR, String(value.value));
|
|
114
|
+
this.displayText = `${value.value * 100}%`;
|
|
115
|
+
break;
|
|
116
|
+
case "currency":
|
|
117
|
+
require_xml_edit.setAttr(this.node, VALUE_TYPE_ATTR, "currency");
|
|
118
|
+
require_xml_edit.setAttr(this.node, VALUE_ATTR, String(value.value));
|
|
119
|
+
if (value.currency !== void 0) require_xml_edit.setAttr(this.node, CURRENCY_ATTR, value.currency);
|
|
120
|
+
this.displayText = value.currency === void 0 ? String(value.value) : `${value.value} ${value.currency}`;
|
|
121
|
+
break;
|
|
122
|
+
case "boolean":
|
|
123
|
+
require_xml_edit.setAttr(this.node, VALUE_TYPE_ATTR, "boolean");
|
|
124
|
+
require_xml_edit.setAttr(this.node, BOOLEAN_VALUE_ATTR, value.value ? "true" : "false");
|
|
125
|
+
this.displayText = value.value ? "TRUE" : "FALSE";
|
|
126
|
+
break;
|
|
127
|
+
case "date":
|
|
128
|
+
require_xml_edit.setAttr(this.node, VALUE_TYPE_ATTR, "date");
|
|
129
|
+
require_xml_edit.setAttr(this.node, DATE_VALUE_ATTR, value.value);
|
|
130
|
+
this.displayText = value.value;
|
|
131
|
+
break;
|
|
132
|
+
case "time":
|
|
133
|
+
require_xml_edit.setAttr(this.node, VALUE_TYPE_ATTR, "time");
|
|
134
|
+
require_xml_edit.setAttr(this.node, TIME_VALUE_ATTR, value.value);
|
|
135
|
+
this.displayText = value.value;
|
|
136
|
+
break;
|
|
137
|
+
case "string":
|
|
138
|
+
require_xml_edit.setAttr(this.node, VALUE_TYPE_ATTR, "string");
|
|
139
|
+
require_xml_edit.setAttr(this.node, STRING_VALUE_ATTR, value.value);
|
|
140
|
+
this.displayText = value.value;
|
|
141
|
+
break;
|
|
142
|
+
case "error":
|
|
143
|
+
require_xml_edit.setAttr(this.node, VALUE_TYPE_ATTR, "string");
|
|
144
|
+
require_xml_edit.setAttr(this.node, STRING_VALUE_ATTR, value.value);
|
|
145
|
+
this.displayText = value.value;
|
|
146
|
+
break;
|
|
147
|
+
case "empty": this.displayText = "";
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
get formula() {
|
|
151
|
+
return (0, ooxml_js.attr)(this.node, FORMULA_ATTR);
|
|
152
|
+
}
|
|
153
|
+
set formula(value) {
|
|
154
|
+
if (value === void 0) {
|
|
155
|
+
require_xml_edit.removeAttr(this.node, FORMULA_ATTR);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
require_xml_edit.setAttr(this.node, FORMULA_ATTR, value);
|
|
159
|
+
}
|
|
160
|
+
get displayText() {
|
|
161
|
+
return this.node.children.filter((child) => child.type === "element" && child.tag === "text:p").map((paragraph) => require_xml_odf_text.decodeOdfText(paragraph.children)).join("\n");
|
|
162
|
+
}
|
|
163
|
+
set displayText(value) {
|
|
164
|
+
this.node.children = [require_xml_fragment.el("text:p", {}, require_xml_odf_text.encodeOdfText(value))];
|
|
165
|
+
}
|
|
166
|
+
setStyledRuns(runs) {
|
|
167
|
+
const textParagraph = require_xml_fragment.el("text:p");
|
|
168
|
+
this.node.children = [textParagraph];
|
|
169
|
+
const paragraph = new require_edit_odt_paragraph.OdtParagraph(this.node.children, textParagraph, this.pkg);
|
|
170
|
+
require_edit_odt_content.populateParagraph(paragraph, {
|
|
171
|
+
kind: "paragraph",
|
|
172
|
+
runs: [...runs]
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
//#endregion
|
|
177
|
+
exports.OdsCell = OdsCell;
|