@fiduswriter/document 0.1.0-alpha.3 → 0.1.0-alpha.5
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 +22 -1
- package/dist/bibliography/common.d.ts +10 -0
- package/dist/bibliography/common.d.ts.map +1 -0
- package/dist/bibliography/common.js +86 -0
- package/dist/bibliography/common.js.map +1 -0
- package/dist/bibliography/csl_bib.d.ts +3 -0
- package/dist/bibliography/csl_bib.d.ts.map +1 -0
- package/dist/bibliography/csl_bib.js +131 -0
- package/dist/bibliography/csl_bib.js.map +1 -0
- package/dist/citations/citeproc_sys.d.ts +12 -0
- package/dist/citations/citeproc_sys.d.ts.map +1 -0
- package/dist/citations/citeproc_sys.js +48 -0
- package/dist/citations/citeproc_sys.js.map +1 -0
- package/dist/citations/format.d.ts +40 -0
- package/dist/citations/format.d.ts.map +1 -0
- package/dist/citations/format.js +186 -0
- package/dist/citations/format.js.map +1 -0
- package/dist/editor/e2ee/encryptor.d.ts +123 -0
- package/dist/editor/e2ee/encryptor.d.ts.map +1 -0
- package/dist/editor/e2ee/encryptor.js +201 -0
- package/dist/editor/e2ee/encryptor.js.map +1 -0
- package/dist/exporter/docx/citations.d.ts +31 -0
- package/dist/exporter/docx/citations.d.ts.map +1 -0
- package/dist/exporter/docx/citations.js +171 -0
- package/dist/exporter/docx/citations.js.map +1 -0
- package/dist/exporter/docx/comments.d.ts +22 -0
- package/dist/exporter/docx/comments.d.ts.map +1 -0
- package/dist/exporter/docx/comments.js +170 -0
- package/dist/exporter/docx/comments.js.map +1 -0
- package/dist/exporter/docx/footnotes.d.ts +47 -0
- package/dist/exporter/docx/footnotes.d.ts.map +1 -0
- package/dist/exporter/docx/footnotes.js +216 -0
- package/dist/exporter/docx/footnotes.js.map +1 -0
- package/dist/exporter/docx/images.d.ts +25 -0
- package/dist/exporter/docx/images.d.ts.map +1 -0
- package/dist/exporter/docx/images.js +101 -0
- package/dist/exporter/docx/images.js.map +1 -0
- package/dist/exporter/docx/index.d.ts +16 -0
- package/dist/exporter/docx/index.d.ts.map +1 -0
- package/dist/exporter/docx/index.js +115 -0
- package/dist/exporter/docx/index.js.map +1 -0
- package/dist/exporter/docx/lists.d.ts +38 -0
- package/dist/exporter/docx/lists.d.ts.map +1 -0
- package/dist/exporter/docx/lists.js +276 -0
- package/dist/exporter/docx/lists.js.map +1 -0
- package/dist/exporter/docx/math.d.ts +13 -0
- package/dist/exporter/docx/math.d.ts.map +1 -0
- package/dist/exporter/docx/math.js +59 -0
- package/dist/exporter/docx/math.js.map +1 -0
- package/dist/exporter/docx/metadata.d.ts +17 -0
- package/dist/exporter/docx/metadata.d.ts.map +1 -0
- package/dist/exporter/docx/metadata.js +272 -0
- package/dist/exporter/docx/metadata.js.map +1 -0
- package/dist/exporter/docx/rels.d.ts +27 -0
- package/dist/exporter/docx/rels.d.ts.map +1 -0
- package/dist/exporter/docx/rels.js +183 -0
- package/dist/exporter/docx/rels.js.map +1 -0
- package/dist/exporter/docx/render.d.ts +22 -0
- package/dist/exporter/docx/render.d.ts.map +1 -0
- package/dist/exporter/docx/render.js +780 -0
- package/dist/exporter/docx/render.js.map +1 -0
- package/dist/exporter/docx/richtext.d.ts +25 -0
- package/dist/exporter/docx/richtext.d.ts.map +1 -0
- package/dist/exporter/docx/richtext.js +1070 -0
- package/dist/exporter/docx/richtext.js.map +1 -0
- package/dist/exporter/docx/tables.d.ts +16 -0
- package/dist/exporter/docx/tables.d.ts.map +1 -0
- package/dist/exporter/docx/tables.js +115 -0
- package/dist/exporter/docx/tables.js.map +1 -0
- package/dist/exporter/docx/tools.d.ts +4 -0
- package/dist/exporter/docx/tools.d.ts.map +1 -0
- package/dist/exporter/docx/tools.js +48 -0
- package/dist/exporter/docx/tools.js.map +1 -0
- package/dist/exporter/epub/index.d.ts +19 -0
- package/dist/exporter/epub/index.d.ts.map +1 -0
- package/dist/exporter/epub/index.js +109 -0
- package/dist/exporter/epub/index.js.map +1 -0
- package/dist/exporter/epub/templates.d.ts +63 -0
- package/dist/exporter/epub/templates.d.ts.map +1 -0
- package/dist/exporter/epub/templates.js +95 -0
- package/dist/exporter/epub/templates.js.map +1 -0
- package/dist/exporter/epub/tools.d.ts +13 -0
- package/dist/exporter/epub/tools.d.ts.map +1 -0
- package/{src → dist}/exporter/epub/tools.js +32 -46
- package/dist/exporter/epub/tools.js.map +1 -0
- package/dist/exporter/html/citations.d.ts +29 -0
- package/dist/exporter/html/citations.d.ts.map +1 -0
- package/dist/exporter/html/citations.js +110 -0
- package/dist/exporter/html/citations.js.map +1 -0
- package/dist/exporter/html/convert.d.ts +50 -0
- package/dist/exporter/html/convert.d.ts.map +1 -0
- package/dist/exporter/html/convert.js +750 -0
- package/dist/exporter/html/convert.js.map +1 -0
- package/dist/exporter/html/index.d.ts +64 -0
- package/dist/exporter/html/index.d.ts.map +1 -0
- package/dist/exporter/html/index.js +154 -0
- package/dist/exporter/html/index.js.map +1 -0
- package/dist/exporter/html/templates.d.ts +24 -0
- package/dist/exporter/html/templates.d.ts.map +1 -0
- package/dist/exporter/html/templates.js +21 -0
- package/dist/exporter/html/templates.js.map +1 -0
- package/dist/exporter/html/tools.d.ts +2 -0
- package/dist/exporter/html/tools.d.ts.map +1 -0
- package/dist/exporter/html/tools.js +49 -0
- package/dist/exporter/html/tools.js.map +1 -0
- package/dist/exporter/jats/bibliography.d.ts +3 -0
- package/dist/exporter/jats/bibliography.d.ts.map +1 -0
- package/dist/exporter/jats/bibliography.js +158 -0
- package/dist/exporter/jats/bibliography.js.map +1 -0
- package/dist/exporter/jats/citations.d.ts +16 -0
- package/dist/exporter/jats/citations.d.ts.map +1 -0
- package/dist/exporter/jats/citations.js +105 -0
- package/dist/exporter/jats/citations.js.map +1 -0
- package/dist/exporter/jats/convert.d.ts +41 -0
- package/dist/exporter/jats/convert.d.ts.map +1 -0
- package/dist/exporter/jats/convert.js +816 -0
- package/dist/exporter/jats/convert.js.map +1 -0
- package/dist/exporter/jats/index.d.ts +25 -0
- package/dist/exporter/jats/index.d.ts.map +1 -0
- package/dist/exporter/jats/index.js +82 -0
- package/dist/exporter/jats/index.js.map +1 -0
- package/dist/exporter/jats/templates.d.ts +18 -0
- package/dist/exporter/jats/templates.d.ts.map +1 -0
- package/dist/exporter/jats/templates.js +25 -0
- package/dist/exporter/jats/templates.js.map +1 -0
- package/dist/exporter/jats/text.d.ts +4 -0
- package/dist/exporter/jats/text.d.ts.map +1 -0
- package/dist/exporter/jats/text.js +72 -0
- package/dist/exporter/jats/text.js.map +1 -0
- package/dist/exporter/latex/convert.d.ts +24 -0
- package/dist/exporter/latex/convert.d.ts.map +1 -0
- package/dist/exporter/latex/convert.js +881 -0
- package/dist/exporter/latex/convert.js.map +1 -0
- package/dist/exporter/latex/escape_latex.d.ts +2 -0
- package/dist/exporter/latex/escape_latex.d.ts.map +1 -0
- package/dist/exporter/latex/escape_latex.js +20 -0
- package/dist/exporter/latex/escape_latex.js.map +1 -0
- package/dist/exporter/latex/index.d.ts +24 -0
- package/dist/exporter/latex/index.d.ts.map +1 -0
- package/dist/exporter/latex/index.js +67 -0
- package/dist/exporter/latex/index.js.map +1 -0
- package/dist/exporter/latex/readme.d.ts +2 -0
- package/dist/exporter/latex/readme.d.ts.map +1 -0
- package/dist/exporter/latex/readme.js +23 -0
- package/dist/exporter/latex/readme.js.map +1 -0
- package/dist/exporter/native/copy.d.ts +30 -0
- package/dist/exporter/native/copy.d.ts.map +1 -0
- package/dist/exporter/native/copy.js +151 -0
- package/dist/exporter/native/copy.js.map +1 -0
- package/dist/exporter/native/file.d.ts +12 -0
- package/dist/exporter/native/file.d.ts.map +1 -0
- package/dist/exporter/native/file.js +38 -0
- package/dist/exporter/native/file.js.map +1 -0
- package/dist/exporter/native/index.d.ts +5 -0
- package/dist/exporter/native/index.d.ts.map +1 -0
- package/dist/exporter/native/index.js +5 -0
- package/dist/exporter/native/index.js.map +1 -0
- package/dist/exporter/native/revision.d.ts +18 -0
- package/dist/exporter/native/revision.d.ts.map +1 -0
- package/dist/exporter/native/revision.js +39 -0
- package/dist/exporter/native/revision.js.map +1 -0
- package/dist/exporter/native/shrink.d.ts +36 -0
- package/dist/exporter/native/shrink.d.ts.map +1 -0
- package/dist/exporter/native/shrink.js +124 -0
- package/dist/exporter/native/shrink.js.map +1 -0
- package/dist/exporter/native/zip.d.ts +25 -0
- package/dist/exporter/native/zip.d.ts.map +1 -0
- package/dist/exporter/native/zip.js +56 -0
- package/dist/exporter/native/zip.js.map +1 -0
- package/dist/exporter/odt/citations.d.ts +21 -0
- package/dist/exporter/odt/citations.d.ts.map +1 -0
- package/dist/exporter/odt/citations.js +104 -0
- package/dist/exporter/odt/citations.js.map +1 -0
- package/dist/exporter/odt/footnotes.d.ts +31 -0
- package/dist/exporter/odt/footnotes.d.ts.map +1 -0
- package/dist/exporter/odt/footnotes.js +129 -0
- package/dist/exporter/odt/footnotes.js.map +1 -0
- package/dist/exporter/odt/images.d.ts +25 -0
- package/dist/exporter/odt/images.d.ts.map +1 -0
- package/dist/exporter/odt/images.js +106 -0
- package/dist/exporter/odt/images.js.map +1 -0
- package/dist/exporter/odt/index.d.ts +17 -0
- package/dist/exporter/odt/index.d.ts.map +1 -0
- package/dist/exporter/odt/index.js +108 -0
- package/dist/exporter/odt/index.js.map +1 -0
- package/dist/exporter/odt/math.d.ts +15 -0
- package/dist/exporter/odt/math.d.ts.map +1 -0
- package/dist/exporter/odt/math.js +71 -0
- package/dist/exporter/odt/math.js.map +1 -0
- package/dist/exporter/odt/metadata.d.ts +18 -0
- package/dist/exporter/odt/metadata.d.ts.map +1 -0
- package/dist/exporter/odt/metadata.js +224 -0
- package/dist/exporter/odt/metadata.js.map +1 -0
- package/dist/exporter/odt/render.d.ts +26 -0
- package/dist/exporter/odt/render.d.ts.map +1 -0
- package/dist/exporter/odt/render.js +651 -0
- package/dist/exporter/odt/render.js.map +1 -0
- package/dist/exporter/odt/richtext.d.ts +22 -0
- package/dist/exporter/odt/richtext.d.ts.map +1 -0
- package/dist/exporter/odt/richtext.js +743 -0
- package/dist/exporter/odt/richtext.js.map +1 -0
- package/dist/exporter/odt/styles.d.ts +41 -0
- package/dist/exporter/odt/styles.d.ts.map +1 -0
- package/dist/exporter/odt/styles.js +370 -0
- package/dist/exporter/odt/styles.js.map +1 -0
- package/dist/exporter/odt/track.d.ts +18 -0
- package/dist/exporter/odt/track.d.ts.map +1 -0
- package/dist/exporter/odt/track.js +66 -0
- package/dist/exporter/odt/track.js.map +1 -0
- package/dist/exporter/pandoc/citations.d.ts +23 -0
- package/dist/exporter/pandoc/citations.d.ts.map +1 -0
- package/dist/exporter/pandoc/citations.js +99 -0
- package/dist/exporter/pandoc/citations.js.map +1 -0
- package/dist/exporter/pandoc/convert.d.ts +19 -0
- package/dist/exporter/pandoc/convert.d.ts.map +1 -0
- package/dist/exporter/pandoc/convert.js +886 -0
- package/dist/exporter/pandoc/convert.js.map +1 -0
- package/dist/exporter/pandoc/index.d.ts +25 -0
- package/dist/exporter/pandoc/index.d.ts.map +1 -0
- package/dist/exporter/pandoc/index.js +79 -0
- package/dist/exporter/pandoc/index.js.map +1 -0
- package/dist/exporter/pandoc/readme.d.ts +2 -0
- package/dist/exporter/pandoc/readme.d.ts.map +1 -0
- package/dist/exporter/pandoc/readme.js +8 -0
- package/dist/exporter/pandoc/readme.js.map +1 -0
- package/dist/exporter/pandoc/tools.d.ts +22 -0
- package/dist/exporter/pandoc/tools.d.ts.map +1 -0
- package/dist/exporter/pandoc/tools.js +52 -0
- package/dist/exporter/pandoc/tools.js.map +1 -0
- package/dist/exporter/print/index.d.ts +20 -0
- package/dist/exporter/print/index.d.ts.map +1 -0
- package/dist/exporter/print/index.js +142 -0
- package/dist/exporter/print/index.js.map +1 -0
- package/dist/exporter/tools/doc_content.d.ts +6 -0
- package/dist/exporter/tools/doc_content.d.ts.map +1 -0
- package/dist/exporter/tools/doc_content.js +130 -0
- package/dist/exporter/tools/doc_content.js.map +1 -0
- package/dist/exporter/tools/file.d.ts +2 -0
- package/dist/exporter/tools/file.d.ts.map +1 -0
- package/dist/exporter/tools/file.js +10 -0
- package/dist/exporter/tools/file.js.map +1 -0
- package/dist/exporter/tools/json.d.ts +7 -0
- package/dist/exporter/tools/json.d.ts.map +1 -0
- package/dist/exporter/tools/json.js +82 -0
- package/dist/exporter/tools/json.js.map +1 -0
- package/dist/exporter/tools/svg.d.ts +8 -0
- package/dist/exporter/tools/svg.d.ts.map +1 -0
- package/dist/exporter/tools/svg.js +26 -0
- package/dist/exporter/tools/svg.js.map +1 -0
- package/dist/exporter/tools/xml.d.ts +42 -0
- package/dist/exporter/tools/xml.d.ts.map +1 -0
- package/dist/exporter/tools/xml.js +467 -0
- package/dist/exporter/tools/xml.js.map +1 -0
- package/dist/exporter/tools/xml_zip.d.ts +21 -0
- package/dist/exporter/tools/xml_zip.d.ts.map +1 -0
- package/dist/exporter/tools/xml_zip.js +92 -0
- package/dist/exporter/tools/xml_zip.js.map +1 -0
- package/dist/exporter/tools/zip.d.ts +35 -0
- package/dist/exporter/tools/zip.d.ts.map +1 -0
- package/dist/exporter/tools/zip.js +78 -0
- package/dist/exporter/tools/zip.js.map +1 -0
- package/dist/exporter/tools/zotero_csl.d.ts +23 -0
- package/dist/exporter/tools/zotero_csl.d.ts.map +1 -0
- package/dist/exporter/tools/zotero_csl.js +78 -0
- package/dist/exporter/tools/zotero_csl.js.map +1 -0
- package/dist/importer/citations.d.ts +28 -0
- package/dist/importer/citations.d.ts.map +1 -0
- package/dist/importer/citations.js +68 -0
- package/dist/importer/citations.js.map +1 -0
- package/dist/importer/docx/citations.d.ts +43 -0
- package/dist/importer/docx/citations.d.ts.map +1 -0
- package/dist/importer/docx/citations.js +81 -0
- package/dist/importer/docx/citations.js.map +1 -0
- package/dist/importer/docx/convert.d.ts +150 -0
- package/dist/importer/docx/convert.d.ts.map +1 -0
- package/dist/importer/docx/convert.js +1243 -0
- package/dist/importer/docx/convert.js.map +1 -0
- package/dist/importer/docx/helpers.d.ts +2 -0
- package/dist/importer/docx/helpers.d.ts.map +1 -0
- package/dist/importer/docx/helpers.js +10 -0
- package/dist/importer/docx/helpers.js.map +1 -0
- package/dist/importer/docx/index.d.ts +27 -0
- package/dist/importer/docx/index.d.ts.map +1 -0
- package/dist/importer/docx/index.js +77 -0
- package/dist/importer/docx/index.js.map +1 -0
- package/dist/importer/docx/omml2mathml.d.ts +6 -0
- package/dist/importer/docx/omml2mathml.d.ts.map +1 -0
- package/dist/importer/docx/omml2mathml.js +1146 -0
- package/dist/importer/docx/omml2mathml.js.map +1 -0
- package/dist/importer/docx/parse.d.ts +96 -0
- package/dist/importer/docx/parse.d.ts.map +1 -0
- package/dist/importer/docx/parse.js +681 -0
- package/dist/importer/docx/parse.js.map +1 -0
- package/dist/importer/native/extract_template.d.ts +6 -0
- package/dist/importer/native/extract_template.d.ts.map +1 -0
- package/dist/importer/native/extract_template.js +80 -0
- package/dist/importer/native/extract_template.js.map +1 -0
- package/dist/importer/native/file.d.ts +37 -0
- package/dist/importer/native/file.d.ts.map +1 -0
- package/dist/importer/native/file.js +162 -0
- package/dist/importer/native/file.js.map +1 -0
- package/dist/importer/native/get_images.d.ts +21 -0
- package/dist/importer/native/get_images.d.ts.map +1 -0
- package/dist/importer/native/get_images.js +58 -0
- package/dist/importer/native/get_images.js.map +1 -0
- package/dist/importer/native/importer.d.ts +41 -0
- package/dist/importer/native/importer.d.ts.map +1 -0
- package/dist/importer/native/importer.js +170 -0
- package/dist/importer/native/importer.js.map +1 -0
- package/dist/importer/native/index.d.ts +7 -0
- package/dist/importer/native/index.d.ts.map +1 -0
- package/dist/importer/native/index.js +7 -0
- package/dist/importer/native/index.js.map +1 -0
- package/dist/importer/native/update.d.ts +7 -0
- package/dist/importer/native/update.d.ts.map +1 -0
- package/dist/importer/native/update.js +27 -0
- package/dist/importer/native/update.js.map +1 -0
- package/dist/importer/native/update_template.d.ts +12 -0
- package/dist/importer/native/update_template.d.ts.map +1 -0
- package/dist/importer/native/update_template.js +19 -0
- package/dist/importer/native/update_template.js.map +1 -0
- package/dist/importer/odt/citations.d.ts +27 -0
- package/dist/importer/odt/citations.d.ts.map +1 -0
- package/dist/importer/odt/citations.js +57 -0
- package/dist/importer/odt/citations.js.map +1 -0
- package/dist/importer/odt/convert.d.ts +146 -0
- package/dist/importer/odt/convert.d.ts.map +1 -0
- package/dist/importer/odt/convert.js +1530 -0
- package/dist/importer/odt/convert.js.map +1 -0
- package/dist/importer/odt/index.d.ts +30 -0
- package/dist/importer/odt/index.d.ts.map +1 -0
- package/dist/importer/odt/index.js +124 -0
- package/dist/importer/odt/index.js.map +1 -0
- package/dist/importer/pandoc/convert.d.ts +32 -0
- package/dist/importer/pandoc/convert.d.ts.map +1 -0
- package/dist/importer/pandoc/convert.js +790 -0
- package/dist/importer/pandoc/convert.js.map +1 -0
- package/dist/importer/pandoc/helpers.d.ts +5 -0
- package/dist/importer/pandoc/helpers.d.ts.map +1 -0
- package/dist/importer/pandoc/helpers.js +73 -0
- package/dist/importer/pandoc/helpers.js.map +1 -0
- package/dist/importer/pandoc/index.d.ts +31 -0
- package/dist/importer/pandoc/index.d.ts.map +1 -0
- package/dist/importer/pandoc/index.js +114 -0
- package/dist/importer/pandoc/index.js.map +1 -0
- package/dist/importer/registry.d.ts +21 -0
- package/dist/importer/registry.d.ts.map +1 -0
- package/dist/importer/registry.js +41 -0
- package/dist/importer/registry.js.map +1 -0
- package/dist/importer/zip_analyzer.d.ts +31 -0
- package/dist/importer/zip_analyzer.d.ts.map +1 -0
- package/dist/importer/zip_analyzer.js +89 -0
- package/dist/importer/zip_analyzer.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/mathlive/opf_includes.d.ts +2 -0
- package/dist/mathlive/opf_includes.d.ts.map +1 -0
- package/dist/mathlive/opf_includes.js +25 -0
- package/dist/mathlive/opf_includes.js.map +1 -0
- package/dist/schema/common/annotate.d.ts +47 -0
- package/dist/schema/common/annotate.d.ts.map +1 -0
- package/dist/schema/common/annotate.js +75 -0
- package/dist/schema/common/annotate.js.map +1 -0
- package/dist/schema/common/base.d.ts +91 -0
- package/dist/schema/common/base.d.ts.map +1 -0
- package/dist/schema/common/base.js +109 -0
- package/dist/schema/common/base.js.map +1 -0
- package/dist/schema/common/citation.d.ts +30 -0
- package/dist/schema/common/citation.d.ts.map +1 -0
- package/dist/schema/common/citation.js +61 -0
- package/dist/schema/common/citation.js.map +1 -0
- package/dist/schema/common/equation.d.ts +17 -0
- package/dist/schema/common/equation.d.ts.map +1 -0
- package/dist/schema/common/equation.js +32 -0
- package/dist/schema/common/equation.js.map +1 -0
- package/dist/schema/common/figure.d.ts +87 -0
- package/dist/schema/common/figure.d.ts.map +1 -0
- package/dist/schema/common/figure.js +178 -0
- package/dist/schema/common/figure.js.map +1 -0
- package/dist/schema/common/heading.d.ts +9 -0
- package/dist/schema/common/heading.d.ts.map +1 -0
- package/dist/schema/common/heading.js +41 -0
- package/dist/schema/common/heading.js.map +1 -0
- package/dist/schema/common/index.d.ts +11 -0
- package/dist/schema/common/index.d.ts.map +1 -0
- package/dist/schema/common/index.js +11 -0
- package/dist/schema/common/index.js.map +1 -0
- package/dist/schema/common/list.d.ts +63 -0
- package/dist/schema/common/list.d.ts.map +1 -0
- package/dist/schema/common/list.js +92 -0
- package/dist/schema/common/list.js.map +1 -0
- package/dist/schema/common/reference.d.ts +70 -0
- package/dist/schema/common/reference.d.ts.map +1 -0
- package/dist/schema/common/reference.js +97 -0
- package/dist/schema/common/reference.js.map +1 -0
- package/dist/schema/common/table.d.ts +76 -0
- package/dist/schema/common/table.d.ts.map +1 -0
- package/dist/schema/common/table.js +86 -0
- package/dist/schema/common/table.js.map +1 -0
- package/dist/schema/common/track.d.ts +117 -0
- package/dist/schema/common/track.d.ts.map +1 -0
- package/{src → dist}/schema/common/track.js +44 -49
- package/dist/schema/common/track.js.map +1 -0
- package/dist/schema/const.d.ts +3 -0
- package/dist/schema/const.d.ts.map +1 -0
- package/{src → dist}/schema/const.js +3 -3
- package/dist/schema/const.js.map +1 -0
- package/dist/schema/convert.d.ts +3 -0
- package/dist/schema/convert.d.ts.map +1 -0
- package/dist/schema/convert.js +1215 -0
- package/dist/schema/convert.js.map +1 -0
- package/dist/schema/document/content.d.ts +110 -0
- package/dist/schema/document/content.d.ts.map +1 -0
- package/dist/schema/document/content.js +177 -0
- package/dist/schema/document/content.js.map +1 -0
- package/dist/schema/document/index.d.ts +795 -0
- package/dist/schema/document/index.d.ts.map +1 -0
- package/dist/schema/document/index.js +68 -0
- package/dist/schema/document/index.js.map +1 -0
- package/dist/schema/document/structure.d.ts +164 -0
- package/dist/schema/document/structure.d.ts.map +1 -0
- package/dist/schema/document/structure.js +445 -0
- package/dist/schema/document/structure.js.map +1 -0
- package/dist/schema/export.d.ts +7 -0
- package/dist/schema/export.d.ts.map +1 -0
- package/dist/schema/export.js +17 -0
- package/dist/schema/export.js.map +1 -0
- package/dist/schema/footnotes.d.ts +454 -0
- package/dist/schema/footnotes.d.ts.map +1 -0
- package/dist/schema/footnotes.js +90 -0
- package/dist/schema/footnotes.js.map +1 -0
- package/dist/schema/footnotes_convert.d.ts +5 -0
- package/dist/schema/footnotes_convert.d.ts.map +1 -0
- package/dist/schema/footnotes_convert.js +30 -0
- package/dist/schema/footnotes_convert.js.map +1 -0
- package/dist/schema/i18n.d.ts +55 -0
- package/dist/schema/i18n.d.ts.map +1 -0
- package/{src → dist}/schema/i18n.js +14 -23
- package/dist/schema/i18n.js.map +1 -0
- package/dist/schema/index.d.ts +6 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +6 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/mini_json.d.ts +4 -0
- package/dist/schema/mini_json.d.ts.map +1 -0
- package/{src → dist}/schema/mini_json.js +19 -28
- package/dist/schema/mini_json.js.map +1 -0
- package/dist/schema/text.d.ts +3 -0
- package/dist/schema/text.d.ts.map +1 -0
- package/dist/schema/text.js +23 -0
- package/dist/schema/text.js.map +1 -0
- package/dist/types.d.ts +281 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/package.json +51 -16
- package/scripts/export-schema.js +1 -1
- package/src/bibliography/{common.js → common.ts} +15 -12
- package/src/bibliography/{csl_bib.js → csl_bib.ts} +16 -15
- package/src/citations/{citeproc_sys.js → citeproc_sys.ts} +26 -6
- package/src/citations/{format.js → format.ts} +80 -24
- package/src/editor/e2ee/{encryptor.js → encryptor.ts} +76 -44
- package/src/exporter/docx/{citations.js → citations.ts} +51 -23
- package/src/exporter/docx/{comments.js → comments.ts} +69 -26
- package/src/exporter/docx/{footnotes.js → footnotes.ts} +81 -42
- package/src/exporter/docx/images.ts +128 -0
- package/src/exporter/docx/{index.js → index.ts} +48 -25
- package/src/exporter/docx/{lists.js → lists.ts} +89 -46
- package/src/exporter/docx/{math.js → math.ts} +29 -9
- package/src/exporter/docx/{metadata.js → metadata.ts} +78 -42
- package/src/exporter/docx/{rels.js → rels.ts} +71 -50
- package/src/exporter/docx/{render.js → render.ts} +124 -87
- package/src/exporter/docx/{richtext.js → richtext.ts} +107 -84
- package/src/exporter/docx/{tables.js → tables.ts} +33 -23
- package/src/exporter/docx/{tools.js → tools.ts} +4 -3
- package/src/exporter/epub/{index.js → index.ts} +44 -15
- package/src/exporter/epub/{templates.js → templates.ts} +71 -7
- package/src/exporter/epub/tools.ts +102 -0
- package/src/exporter/html/{citations.js → citations.ts} +79 -31
- package/src/exporter/html/{convert.js → convert.ts} +118 -71
- package/src/exporter/html/{index.js → index.ts} +63 -29
- package/src/exporter/html/{templates.js → templates.ts} +22 -2
- package/src/exporter/html/{tools.js → tools.ts} +9 -6
- package/src/exporter/jats/bibliography.ts +199 -0
- package/src/exporter/jats/{citations.js → citations.ts} +56 -20
- package/src/exporter/jats/{convert.js → convert.ts} +72 -53
- package/src/exporter/jats/index.ts +132 -0
- package/src/exporter/jats/{templates.js → templates.ts} +19 -3
- package/src/exporter/jats/{text.js → text.ts} +8 -6
- package/src/exporter/latex/{convert.js → convert.ts} +160 -125
- package/src/exporter/latex/{escape_latex.js → escape_latex.ts} +1 -1
- package/src/exporter/latex/{index.js → index.ts} +27 -12
- package/src/exporter/latex/{readme.js → readme.ts} +2 -2
- package/src/exporter/native/copy.ts +231 -0
- package/src/exporter/native/file.ts +65 -0
- package/src/exporter/native/index.ts +4 -0
- package/src/exporter/native/revision.ts +76 -0
- package/src/exporter/native/{shrink.js → shrink.ts} +64 -29
- package/src/exporter/native/zip.ts +85 -0
- package/src/exporter/odt/{citations.js → citations.ts} +35 -15
- package/src/exporter/odt/{footnotes.js → footnotes.ts} +53 -30
- package/src/exporter/odt/images.ts +135 -0
- package/src/exporter/odt/{index.js → index.ts} +49 -27
- package/src/exporter/odt/{math.js → math.ts} +38 -9
- package/src/exporter/odt/{metadata.js → metadata.ts} +54 -29
- package/src/exporter/odt/{render.js → render.ts} +89 -60
- package/src/exporter/odt/{richtext.js → richtext.ts} +102 -72
- package/src/exporter/odt/{styles.js → styles.ts} +98 -66
- package/src/exporter/odt/{track.js → track.ts} +22 -6
- package/src/exporter/pandoc/{citations.js → citations.ts} +31 -15
- package/src/exporter/pandoc/{convert.js → convert.ts} +98 -79
- package/src/exporter/pandoc/{index.js → index.ts} +36 -13
- package/src/exporter/pandoc/{readme.js → readme.ts} +0 -1
- package/src/exporter/pandoc/{tools.js → tools.ts} +28 -5
- package/src/exporter/print/{index.js → index.ts} +38 -19
- package/src/exporter/tools/{doc_content.js → doc_content.ts} +34 -24
- package/src/exporter/tools/{file.js → file.ts} +1 -1
- package/src/exporter/tools/{json.js → json.ts} +30 -19
- package/src/exporter/tools/{svg.js → svg.ts} +9 -3
- package/src/exporter/tools/{xml.js → xml.ts} +187 -138
- package/src/exporter/tools/{xml_zip.js → xml_zip.ts} +19 -11
- package/src/exporter/tools/{zip.js → zip.ts} +35 -11
- package/src/exporter/tools/{zotero_csl.js → zotero_csl.ts} +35 -18
- package/src/global.d.ts +13 -0
- package/src/importer/citations.ts +116 -0
- package/src/importer/docx/{citations.js → citations.ts} +22 -37
- package/src/importer/docx/{convert.js → convert.ts} +176 -141
- package/src/importer/docx/{helpers.js → helpers.ts} +1 -1
- package/src/importer/docx/index.ts +124 -0
- package/src/importer/docx/{omml2mathml.js → omml2mathml.ts} +154 -176
- package/src/importer/docx/{parse.js → parse.ts} +103 -81
- package/src/importer/native/extract_template.ts +83 -0
- package/src/importer/native/file.ts +282 -0
- package/src/importer/native/get_images.ts +82 -0
- package/src/importer/native/importer.ts +244 -0
- package/src/importer/native/index.ts +6 -0
- package/src/importer/native/{update.js → update.ts} +13 -5
- package/src/importer/native/update_template.ts +32 -0
- package/src/importer/odt/{citations.js → citations.ts} +17 -29
- package/src/importer/odt/{convert.js → convert.ts} +261 -237
- package/src/importer/odt/index.ts +202 -0
- package/src/importer/pandoc/{convert.js → convert.ts} +116 -94
- package/src/importer/pandoc/{helpers.js → helpers.ts} +24 -12
- package/src/importer/pandoc/index.ts +171 -0
- package/src/importer/registry.ts +69 -0
- package/src/importer/{zip_analyzer.js → zip_analyzer.ts} +44 -18
- package/src/mathlive/{opf_includes.js → opf_includes.ts} +1 -1
- package/src/modules.d.ts +40 -0
- package/src/schema/common/{annotate.js → annotate.ts} +10 -8
- package/src/schema/common/{base.js → base.ts} +12 -10
- package/src/schema/common/{citation.js → citation.ts} +17 -8
- package/src/schema/common/{equation.js → equation.ts} +6 -4
- package/src/schema/common/{figure.js → figure.ts} +43 -23
- package/src/schema/common/{heading.js → heading.ts} +7 -5
- package/src/schema/common/{list.js → list.ts} +15 -13
- package/src/schema/common/{reference.js → reference.ts} +14 -12
- package/src/schema/common/{table.js → table.ts} +16 -14
- package/src/schema/common/track.ts +201 -0
- package/src/schema/const.ts +58 -0
- package/src/schema/{convert.js → convert.ts} +6 -2
- package/src/schema/document/{content.js → content.ts} +22 -20
- package/src/schema/document/{structure.js → structure.ts} +15 -9
- package/src/schema/{export.js → export.ts} +4 -2
- package/src/schema/{footnotes.js → footnotes.ts} +11 -8
- package/src/schema/{footnotes_convert.js → footnotes_convert.ts} +11 -8
- package/src/schema/i18n.ts +601 -0
- package/src/schema/mini_json.ts +60 -0
- package/src/schema/{text.js → text.ts} +6 -2
- package/src/types.ts +314 -0
- package/jest.config.js +0 -24
- package/src/exporter/docx/images.js +0 -101
- package/src/exporter/jats/bibliography.js +0 -183
- package/src/exporter/jats/index.js +0 -92
- package/src/exporter/odt/images.js +0 -115
- package/src/importer/citations.js +0 -129
- package/src/importer/native/get_images.js +0 -76
- /package/src/{index.js → index.ts} +0 -0
- /package/src/schema/common/{index.js → index.ts} +0 -0
- /package/src/schema/document/{index.js → index.ts} +0 -0
- /package/src/schema/{index.js → index.ts} +0 -0
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import {descendantNodes} from "../tools/doc_content.js"
|
|
2
|
+
import type {FidusNode} from "../../types.js"
|
|
3
|
+
import type {XMLElement} from "../tools/xml.js"
|
|
4
|
+
import type {XmlZip} from "../tools/xml_zip.js"
|
|
5
|
+
import type {DOCXExporterRels} from "./rels.js"
|
|
2
6
|
|
|
3
7
|
const DEFAULT_LISTPARAGRAPH_XML = `
|
|
4
8
|
<w:style w:type="paragraph" w:styleId="ListParagraph">
|
|
@@ -19,56 +23,68 @@ const DEFAULT_NUMBERING_XML = `<?xml version="1.0" encoding="UTF-8" standalone="
|
|
|
19
23
|
</w:numbering>`
|
|
20
24
|
|
|
21
25
|
export class DOCXExporterLists {
|
|
22
|
-
|
|
26
|
+
docContent: FidusNode
|
|
27
|
+
xml: XmlZip
|
|
28
|
+
rels: DOCXExporterRels
|
|
29
|
+
useBulletList: boolean
|
|
30
|
+
usedNumberedList: number[]
|
|
31
|
+
styleXML: XMLElement | null
|
|
32
|
+
numberingXML: XMLElement | null
|
|
33
|
+
abstractNumIdCounter: number
|
|
34
|
+
numIdCounter: number
|
|
35
|
+
// We only need one bulletType for all bullet lists, but a new
|
|
36
|
+
// numberedType for each numbered list so that the numbering starts in 1
|
|
37
|
+
// each time.
|
|
38
|
+
bulletType: number | false
|
|
39
|
+
bulletAbstractType: number | undefined
|
|
40
|
+
numberFormat: string | null
|
|
41
|
+
numberedTypes: number[]
|
|
42
|
+
numberedAbstractType: number | undefined
|
|
43
|
+
styleFilePath: string
|
|
44
|
+
numberingFilePath: string
|
|
45
|
+
ctFilePath: string
|
|
46
|
+
ctXML: XMLElement | null
|
|
47
|
+
|
|
48
|
+
constructor(docContent: FidusNode, xml: XmlZip, rels: DOCXExporterRels) {
|
|
23
49
|
this.docContent = docContent
|
|
24
50
|
this.xml = xml
|
|
25
51
|
this.rels = rels
|
|
26
52
|
this.useBulletList = false
|
|
27
53
|
this.usedNumberedList = []
|
|
28
|
-
this.styleXML =
|
|
29
|
-
this.numberingXML =
|
|
54
|
+
this.styleXML = null
|
|
55
|
+
this.numberingXML = null
|
|
30
56
|
this.abstractNumIdCounter = 0
|
|
31
57
|
this.numIdCounter = 0
|
|
32
|
-
// We only need one bulletType for all bullet lists, but a new
|
|
33
|
-
// numberedType for each numbered list so that the numbering starts in 1
|
|
34
|
-
// each time.
|
|
35
58
|
this.bulletType = false
|
|
36
59
|
this.numberFormat = "decimal"
|
|
37
60
|
this.numberedTypes = []
|
|
38
61
|
this.styleFilePath = "word/styles.xml"
|
|
39
62
|
this.numberingFilePath = "word/numbering.xml"
|
|
40
63
|
this.ctFilePath = "[Content_Types].xml"
|
|
64
|
+
this.ctXML = null
|
|
41
65
|
}
|
|
42
66
|
|
|
43
|
-
init() {
|
|
67
|
+
init(): Promise<void> | Promise<undefined> {
|
|
44
68
|
this.findLists()
|
|
45
69
|
if (this.usedNumberedList.length > 0 || this.useBulletList) {
|
|
46
|
-
const p = [
|
|
47
|
-
|
|
48
|
-
p.push(
|
|
70
|
+
const p: Array<Promise<void>> = [
|
|
49
71
|
new Promise(resolve => {
|
|
50
72
|
this.initCt().then(() => resolve())
|
|
51
|
-
})
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
p.push(
|
|
73
|
+
}),
|
|
55
74
|
new Promise(resolve => {
|
|
56
75
|
this.addNumberingXml().then(() => resolve())
|
|
57
|
-
})
|
|
58
|
-
)
|
|
59
|
-
|
|
60
|
-
p.push(
|
|
76
|
+
}),
|
|
61
77
|
new Promise(resolve => {
|
|
62
78
|
this.addListParagraphStyle().then(() => resolve())
|
|
63
79
|
})
|
|
64
|
-
|
|
65
|
-
return Promise.all(p)
|
|
80
|
+
]
|
|
81
|
+
return Promise.all(p).then(() => undefined)
|
|
66
82
|
} else {
|
|
67
83
|
return Promise.resolve()
|
|
68
84
|
}
|
|
69
85
|
}
|
|
70
86
|
|
|
71
|
-
initCt() {
|
|
87
|
+
initCt(): Promise<void> {
|
|
72
88
|
return this.xml.getXml(this.ctFilePath).then(ctXML => {
|
|
73
89
|
this.ctXML = ctXML
|
|
74
90
|
this.addRelsToCt()
|
|
@@ -76,29 +92,32 @@ export class DOCXExporterLists {
|
|
|
76
92
|
})
|
|
77
93
|
}
|
|
78
94
|
|
|
79
|
-
addRelsToCt() {
|
|
95
|
+
addRelsToCt(): void {
|
|
96
|
+
if (!this.ctXML) {
|
|
97
|
+
return
|
|
98
|
+
}
|
|
80
99
|
const override = this.ctXML.query("Override", {
|
|
81
100
|
PartName: `/${this.numberingFilePath}`
|
|
82
101
|
})
|
|
83
102
|
if (!override) {
|
|
84
103
|
const types = this.ctXML.query("Types")
|
|
85
|
-
types
|
|
104
|
+
types?.appendXML(
|
|
86
105
|
`<Override PartName="/${this.numberingFilePath}" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/>`
|
|
87
106
|
)
|
|
88
107
|
}
|
|
89
108
|
}
|
|
90
109
|
|
|
91
|
-
findLists() {
|
|
110
|
+
findLists(): void {
|
|
92
111
|
descendantNodes(this.docContent).forEach(node => {
|
|
93
112
|
if (node.type === "bullet_list") {
|
|
94
113
|
this.useBulletList = true
|
|
95
114
|
} else if (node.type === "ordered_list") {
|
|
96
|
-
this.usedNumberedList.push(node.attrs
|
|
115
|
+
this.usedNumberedList.push(node.attrs?.order as number)
|
|
97
116
|
}
|
|
98
117
|
})
|
|
99
118
|
}
|
|
100
119
|
|
|
101
|
-
addNumberingXml() {
|
|
120
|
+
addNumberingXml(): Promise<void> {
|
|
102
121
|
return this.xml
|
|
103
122
|
.getXml(this.numberingFilePath, DEFAULT_NUMBERING_XML)
|
|
104
123
|
.then(numberingXML => {
|
|
@@ -109,20 +128,23 @@ export class DOCXExporterLists {
|
|
|
109
128
|
})
|
|
110
129
|
}
|
|
111
130
|
|
|
112
|
-
addListParagraphStyle() {
|
|
131
|
+
addListParagraphStyle(): Promise<void> {
|
|
113
132
|
return this.xml.getXml(this.styleFilePath).then(styleXML => {
|
|
114
133
|
this.styleXML = styleXML
|
|
115
134
|
if (
|
|
116
135
|
!this.styleXML.query("w:style", {"w:styleId": "ListParagraph"})
|
|
117
136
|
) {
|
|
118
137
|
const stylesEl = this.styleXML.query("w:styles")
|
|
119
|
-
stylesEl
|
|
138
|
+
stylesEl?.appendXML(DEFAULT_LISTPARAGRAPH_XML)
|
|
120
139
|
}
|
|
121
140
|
return Promise.resolve()
|
|
122
141
|
})
|
|
123
142
|
}
|
|
124
143
|
|
|
125
|
-
addUsedListTypes() {
|
|
144
|
+
addUsedListTypes(): void {
|
|
145
|
+
if (!this.numberingXML) {
|
|
146
|
+
return
|
|
147
|
+
}
|
|
126
148
|
const allAbstractNum = this.numberingXML.queryAll("w:abstractNum")
|
|
127
149
|
allAbstractNum.forEach(abstractNum => {
|
|
128
150
|
// We check the format for the lowest level list and use the first
|
|
@@ -130,18 +152,24 @@ export class DOCXExporterLists {
|
|
|
130
152
|
// This means that if a list is defined using anything else than
|
|
131
153
|
// bullets, it will be accepted as the format of
|
|
132
154
|
// the numeric list.
|
|
133
|
-
const
|
|
155
|
+
const levelZeroFormatEl = abstractNum
|
|
134
156
|
.query("w:lvl", {"w:ilvl": "0"})
|
|
135
|
-
|
|
136
|
-
|
|
157
|
+
?.query("w:numFmt")
|
|
158
|
+
const levelZeroFormat = levelZeroFormatEl
|
|
159
|
+
? String(levelZeroFormatEl.getAttribute("w:val"))
|
|
160
|
+
: ""
|
|
137
161
|
const abstractNumId = Number.parseInt(
|
|
138
|
-
abstractNum.getAttribute("w:abstractNumId")
|
|
162
|
+
String(abstractNum.getAttribute("w:abstractNumId"))
|
|
139
163
|
)
|
|
140
164
|
if (levelZeroFormat === "bullet" && !this.bulletAbstractType) {
|
|
141
|
-
const numEl = this.numberingXML
|
|
142
|
-
"w:
|
|
143
|
-
|
|
144
|
-
|
|
165
|
+
const numEl = this.numberingXML!
|
|
166
|
+
.query("w:abstractNumId", {
|
|
167
|
+
"w:val": abstractNumId
|
|
168
|
+
})
|
|
169
|
+
?.parentElement
|
|
170
|
+
const numId = numEl
|
|
171
|
+
? Number.parseInt(String(numEl.getAttribute("w:numId")))
|
|
172
|
+
: NaN
|
|
145
173
|
this.bulletType = numId
|
|
146
174
|
} else if (levelZeroFormat !== "bullet" && !this.numberFormat) {
|
|
147
175
|
this.numberFormat = levelZeroFormat
|
|
@@ -152,7 +180,7 @@ export class DOCXExporterLists {
|
|
|
152
180
|
})
|
|
153
181
|
const allNum = this.numberingXML.queryAll("w:num")
|
|
154
182
|
allNum.forEach(numEl => {
|
|
155
|
-
const numId = Number.parseInt(numEl.getAttribute("w:val"))
|
|
183
|
+
const numId = Number.parseInt(String(numEl.getAttribute("w:val")))
|
|
156
184
|
if (this.numIdCounter < numId) {
|
|
157
185
|
this.numIdCounter = numId
|
|
158
186
|
}
|
|
@@ -177,17 +205,20 @@ export class DOCXExporterLists {
|
|
|
177
205
|
}
|
|
178
206
|
}
|
|
179
207
|
|
|
180
|
-
getBulletType() {
|
|
208
|
+
getBulletType(): number | false {
|
|
181
209
|
return this.bulletType
|
|
182
210
|
}
|
|
183
211
|
|
|
184
|
-
getNumberedType() {
|
|
212
|
+
getNumberedType(): number | undefined {
|
|
185
213
|
return this.numberedTypes.shift()
|
|
186
214
|
}
|
|
187
215
|
|
|
188
|
-
addBulletNumType(numId, abstractNumId) {
|
|
216
|
+
addBulletNumType(numId: number, abstractNumId: number): void {
|
|
217
|
+
if (!this.numberingXML) {
|
|
218
|
+
return
|
|
219
|
+
}
|
|
189
220
|
const numberingEl = this.numberingXML.query("w:numbering")
|
|
190
|
-
numberingEl
|
|
221
|
+
numberingEl?.appendXML(`
|
|
191
222
|
<w:abstractNum w:abstractNumId="${abstractNumId}" w15:restartNumberingAfterBreak="0">
|
|
192
223
|
<w:nsid w:val="3620195A" />
|
|
193
224
|
<w:multiLevelType w:val="hybridMultilevel" />
|
|
@@ -200,6 +231,9 @@ export class DOCXExporterLists {
|
|
|
200
231
|
const newAbstractNum = this.numberingXML.query("w:abstractNum", {
|
|
201
232
|
"w:abstractNumId": String(abstractNumId)
|
|
202
233
|
})
|
|
234
|
+
if (!newAbstractNum) {
|
|
235
|
+
return
|
|
236
|
+
}
|
|
203
237
|
// Definition seem to always define 9 levels (0-8).
|
|
204
238
|
for (let level = 0; level < 9; level++) {
|
|
205
239
|
newAbstractNum.appendXML(`
|
|
@@ -219,20 +253,26 @@ export class DOCXExporterLists {
|
|
|
219
253
|
}
|
|
220
254
|
}
|
|
221
255
|
|
|
222
|
-
addNumberedNumType(numId, start) {
|
|
256
|
+
addNumberedNumType(numId: number, start: number): void {
|
|
223
257
|
this.abstractNumIdCounter++
|
|
224
258
|
this.addNumberedAbstractNumType(this.abstractNumIdCounter, start)
|
|
259
|
+
if (!this.numberingXML) {
|
|
260
|
+
return
|
|
261
|
+
}
|
|
225
262
|
const numberingEl = this.numberingXML.query("w:numbering")
|
|
226
|
-
numberingEl
|
|
263
|
+
numberingEl?.appendXML(`
|
|
227
264
|
<w:num w:numId="${numId}">
|
|
228
265
|
<w:abstractNumId w:val="${this.abstractNumIdCounter}" />
|
|
229
266
|
</w:num>
|
|
230
267
|
`)
|
|
231
268
|
}
|
|
232
269
|
|
|
233
|
-
addNumberedAbstractNumType(abstractNumId, start) {
|
|
270
|
+
addNumberedAbstractNumType(abstractNumId: number, start: number): void {
|
|
271
|
+
if (!this.numberingXML) {
|
|
272
|
+
return
|
|
273
|
+
}
|
|
234
274
|
const numberingEl = this.numberingXML.query("w:numbering")
|
|
235
|
-
numberingEl
|
|
275
|
+
numberingEl?.appendXML(`
|
|
236
276
|
<w:abstractNum w:abstractNumId="${abstractNumId}" w15:restartNumberingAfterBreak="0">
|
|
237
277
|
<w:nsid w:val="7F6635F3" />
|
|
238
278
|
<w:multiLevelType w:val="hybridMultilevel" />
|
|
@@ -242,6 +282,9 @@ export class DOCXExporterLists {
|
|
|
242
282
|
const newAbstractNum = this.numberingXML.query("w:abstractNum", {
|
|
243
283
|
"w:abstractNumId": String(abstractNumId)
|
|
244
284
|
})
|
|
285
|
+
if (!newAbstractNum) {
|
|
286
|
+
return
|
|
287
|
+
}
|
|
245
288
|
// Definition seem to always define 9 levels (0-8).
|
|
246
289
|
for (let level = 0; level < 9; level++) {
|
|
247
290
|
newAbstractNum.appendXML(`
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {mml2omml} from "mathml2omml"
|
|
2
2
|
|
|
3
|
+
import type {XmlZip} from "../tools/xml_zip.js"
|
|
4
|
+
|
|
3
5
|
// Not entirely sure if we need this font here. This is included whenever Word
|
|
4
|
-
// itself adds a formula, but our
|
|
6
|
+
// itself adds a formula, but our omml doesn't refer to the font, so it may be pointless.
|
|
5
7
|
const CAMBRIA_MATH_FONT_DECLARATION = `
|
|
6
8
|
<w:font w:name="Cambria Math">
|
|
7
9
|
<w:panose1 w:val="02040503050406030204" />
|
|
@@ -12,35 +14,53 @@ const CAMBRIA_MATH_FONT_DECLARATION = `
|
|
|
12
14
|
</w:font>`
|
|
13
15
|
|
|
14
16
|
export class DOCXExporterMath {
|
|
15
|
-
|
|
17
|
+
xml: XmlZip
|
|
18
|
+
fontTablesXML: import("../tools/xml.js").XMLElement | false
|
|
19
|
+
addedCambriaMath: boolean
|
|
20
|
+
domParser: DOMParser
|
|
21
|
+
mathLive: typeof import("mathlive") | null
|
|
22
|
+
|
|
23
|
+
constructor(xml: XmlZip) {
|
|
16
24
|
this.xml = xml
|
|
17
|
-
this.
|
|
25
|
+
this.fontTablesXML = false
|
|
18
26
|
this.addedCambriaMath = false
|
|
19
27
|
this.domParser = new DOMParser()
|
|
28
|
+
this.mathLive = null
|
|
20
29
|
}
|
|
21
30
|
|
|
22
|
-
init() {
|
|
31
|
+
init(): Promise<typeof import("mathlive")> {
|
|
23
32
|
return this.xml
|
|
24
33
|
.getXml("word/fontTable.xml")
|
|
25
34
|
.then(fontTablesXML => {
|
|
26
35
|
this.fontTablesXML = fontTablesXML
|
|
27
36
|
return import("mathlive")
|
|
28
37
|
})
|
|
29
|
-
.then(MathLive =>
|
|
38
|
+
.then(MathLive => {
|
|
39
|
+
this.mathLive = MathLive
|
|
40
|
+
return MathLive
|
|
41
|
+
})
|
|
30
42
|
}
|
|
31
43
|
|
|
32
|
-
latexToMathML(latex) {
|
|
44
|
+
latexToMathML(latex: string): string {
|
|
45
|
+
if (!this.mathLive) {
|
|
46
|
+
throw new Error("MathLive not initialised")
|
|
47
|
+
}
|
|
33
48
|
return this.mathLive.convertLatexToMathMl(latex)
|
|
34
49
|
}
|
|
35
50
|
|
|
36
|
-
getOmml(latex) {
|
|
51
|
+
getOmml(latex: string): string {
|
|
52
|
+
if (!this.fontTablesXML) {
|
|
53
|
+
throw new Error("Font table XML not loaded")
|
|
54
|
+
}
|
|
37
55
|
if (!this.addedCambriaMath) {
|
|
38
56
|
const fontsEl = this.fontTablesXML.query("w:fonts")
|
|
57
|
+
if (!fontsEl) {
|
|
58
|
+
throw new Error("No w:fonts element found in font table")
|
|
59
|
+
}
|
|
39
60
|
fontsEl.appendXML(CAMBRIA_MATH_FONT_DECLARATION)
|
|
40
61
|
this.addedCambriaMath = true
|
|
41
62
|
}
|
|
42
63
|
const mathmlString = `<math xmlns="http://www.w3.org/1998/Math/MathML"><semantics>${this.latexToMathML(latex)}</semantics></math>`
|
|
43
|
-
|
|
44
|
-
return ommlString
|
|
64
|
+
return mml2omml(mathmlString)
|
|
45
65
|
}
|
|
46
66
|
}
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
import {escapeText} from "fwtoolkit"
|
|
2
2
|
|
|
3
|
+
import type {CSL, CSLStyle, ExportMetadata} from "../../types.js"
|
|
4
|
+
import type {XMLElement} from "../tools/xml.js"
|
|
5
|
+
import type {XmlZip} from "../tools/xml_zip.js"
|
|
6
|
+
|
|
3
7
|
export class DOCXExporterMetadata {
|
|
4
|
-
|
|
8
|
+
xml: XmlZip
|
|
9
|
+
metadata: ExportMetadata
|
|
10
|
+
csl: CSL | null
|
|
11
|
+
coreXML: XMLElement | null
|
|
12
|
+
customXML: XMLElement | null
|
|
13
|
+
|
|
14
|
+
constructor(xml: XmlZip, metadata: ExportMetadata, csl: CSL | null = null) {
|
|
5
15
|
this.xml = xml
|
|
6
16
|
this.metadata = metadata
|
|
7
17
|
this.csl = csl
|
|
8
|
-
this.coreXML =
|
|
9
|
-
this.customXML =
|
|
18
|
+
this.coreXML = null
|
|
19
|
+
this.customXML = null
|
|
10
20
|
}
|
|
11
21
|
|
|
12
|
-
init() {
|
|
22
|
+
init(): Promise<void> {
|
|
13
23
|
return this.xml.getXml("docProps/core.xml").then(coreXML => {
|
|
14
24
|
this.coreXML = coreXML
|
|
15
25
|
this.addMetadata()
|
|
@@ -17,8 +27,8 @@ export class DOCXExporterMetadata {
|
|
|
17
27
|
})
|
|
18
28
|
}
|
|
19
29
|
|
|
20
|
-
async hasBibliography() {
|
|
21
|
-
if (!this.csl || !this.metadata.citationStyle) {
|
|
30
|
+
async hasBibliography(): Promise<string> {
|
|
31
|
+
if (!this.csl || !this.metadata.citationStyle || !this.csl.getStyle) {
|
|
22
32
|
return "0"
|
|
23
33
|
}
|
|
24
34
|
try {
|
|
@@ -33,20 +43,28 @@ export class DOCXExporterMetadata {
|
|
|
33
43
|
}
|
|
34
44
|
}
|
|
35
45
|
|
|
36
|
-
addMetadata() {
|
|
46
|
+
addMetadata(): void {
|
|
47
|
+
if (!this.coreXML) {
|
|
48
|
+
return
|
|
49
|
+
}
|
|
37
50
|
const corePropertiesEl = this.coreXML.query("cp:coreProperties")
|
|
51
|
+
if (!corePropertiesEl) {
|
|
52
|
+
return
|
|
53
|
+
}
|
|
38
54
|
|
|
39
55
|
// Title
|
|
40
|
-
let titleEl = this.coreXML.query("dc:title")
|
|
56
|
+
let titleEl: XMLElement | null = this.coreXML.query("dc:title") ?? null
|
|
41
57
|
if (!titleEl) {
|
|
42
58
|
corePropertiesEl.appendXML("<dc:title></dc:title>")
|
|
43
59
|
titleEl = corePropertiesEl.lastElementChild
|
|
44
60
|
}
|
|
45
|
-
|
|
61
|
+
if (titleEl) {
|
|
62
|
+
titleEl.innerXML = escapeText(this.metadata.title)
|
|
63
|
+
}
|
|
46
64
|
// Authors
|
|
47
65
|
|
|
48
66
|
const authors = this.metadata.authors.map(author => {
|
|
49
|
-
const nameParts = []
|
|
67
|
+
const nameParts: string[] = []
|
|
50
68
|
if (author.firstname) {
|
|
51
69
|
nameParts.push(author.firstname)
|
|
52
70
|
}
|
|
@@ -61,55 +79,65 @@ export class DOCXExporterMetadata {
|
|
|
61
79
|
})
|
|
62
80
|
const lastAuthor = authors.length
|
|
63
81
|
? escapeText(authors[0])
|
|
64
|
-
:
|
|
82
|
+
: "Unknown"
|
|
65
83
|
const allAuthors = authors.length
|
|
66
84
|
? escapeText(authors.join(";"))
|
|
67
|
-
:
|
|
68
|
-
let allAuthorsEl = this.coreXML.query("dc:creator")
|
|
85
|
+
: "Unknown"
|
|
86
|
+
let allAuthorsEl: XMLElement | null = this.coreXML.query("dc:creator") ?? null
|
|
69
87
|
|
|
70
88
|
if (!allAuthorsEl) {
|
|
71
89
|
corePropertiesEl.appendXML("<dc:creator></dc:creator>")
|
|
72
90
|
allAuthorsEl = corePropertiesEl.lastElementChild
|
|
73
91
|
}
|
|
74
|
-
allAuthorsEl
|
|
75
|
-
|
|
92
|
+
if (allAuthorsEl) {
|
|
93
|
+
allAuthorsEl.innerXML = allAuthors
|
|
94
|
+
}
|
|
95
|
+
let lastAuthorEl: XMLElement | null = this.coreXML.query("dc:lastModifiedBy") ?? null
|
|
76
96
|
if (!lastAuthorEl) {
|
|
77
97
|
corePropertiesEl.appendXML(
|
|
78
98
|
"<dc:lastModifiedBy></dc:lastModifiedBy>"
|
|
79
99
|
)
|
|
80
100
|
lastAuthorEl = corePropertiesEl.lastElementChild
|
|
81
101
|
}
|
|
82
|
-
lastAuthorEl
|
|
102
|
+
if (lastAuthorEl) {
|
|
103
|
+
lastAuthorEl.innerXML = lastAuthor
|
|
104
|
+
}
|
|
83
105
|
// Keywords
|
|
84
106
|
if (this.metadata.keywords.length) {
|
|
85
107
|
// It is not really clear how keywords should be separated in DOCX files,
|
|
86
108
|
// so we use ", ".
|
|
87
109
|
const keywordsString = escapeText(this.metadata.keywords.join(", "))
|
|
88
110
|
|
|
89
|
-
let keywordsEl = this.coreXML.query("cp:keywords")
|
|
111
|
+
let keywordsEl: XMLElement | null = this.coreXML.query("cp:keywords") ?? null
|
|
90
112
|
if (!keywordsEl) {
|
|
91
113
|
corePropertiesEl.appendXML("<cp:keywords></cp:keywords>")
|
|
92
114
|
keywordsEl = corePropertiesEl.lastElementChild
|
|
93
115
|
}
|
|
94
|
-
keywordsEl
|
|
116
|
+
if (keywordsEl) {
|
|
117
|
+
keywordsEl.innerXML = keywordsString
|
|
118
|
+
}
|
|
95
119
|
}
|
|
96
120
|
|
|
97
121
|
// time
|
|
98
122
|
const date = new Date()
|
|
99
123
|
const dateString = date.toISOString().split(".")[0] + "Z"
|
|
100
124
|
const createdEl = this.coreXML.query("dcterms:created")
|
|
101
|
-
createdEl
|
|
102
|
-
|
|
125
|
+
if (createdEl) {
|
|
126
|
+
createdEl.innerXML = dateString
|
|
127
|
+
}
|
|
128
|
+
let modifiedEl: XMLElement | null = this.coreXML.query("dcterms:modified") ?? null
|
|
103
129
|
if (!modifiedEl) {
|
|
104
130
|
corePropertiesEl.appendXML(
|
|
105
131
|
'<dcterms:modified xsi:type="dcterms:W3CDTF"></dcterms:modified>'
|
|
106
132
|
)
|
|
107
133
|
modifiedEl = corePropertiesEl.lastElementChild
|
|
108
134
|
}
|
|
109
|
-
modifiedEl
|
|
135
|
+
if (modifiedEl) {
|
|
136
|
+
modifiedEl.innerXML = dateString
|
|
137
|
+
}
|
|
110
138
|
}
|
|
111
139
|
|
|
112
|
-
async addCustomProperties() {
|
|
140
|
+
async addCustomProperties(): Promise<void> {
|
|
113
141
|
// Create or update docProps/custom.xml with citation style information
|
|
114
142
|
const customXmlContent = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
115
143
|
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
|
|
@@ -117,31 +145,35 @@ export class DOCXExporterMetadata {
|
|
|
117
145
|
|
|
118
146
|
const customXML = await this.xml.getXml(
|
|
119
147
|
"docProps/custom.xml",
|
|
120
|
-
|
|
148
|
+
customXmlContent
|
|
121
149
|
)
|
|
122
150
|
this.customXML = customXML
|
|
123
151
|
|
|
124
152
|
// Add citation style property
|
|
125
153
|
if (this.metadata.citationStyle) {
|
|
126
154
|
const propertiesEl = this.customXML.query("Properties")
|
|
155
|
+
if (!propertiesEl) {
|
|
156
|
+
return Promise.resolve()
|
|
157
|
+
}
|
|
127
158
|
|
|
128
159
|
// Remove any existing ZOTERO_PREF_ properties
|
|
129
160
|
const existingZoteroProps = this.customXML
|
|
130
161
|
.queryAll("property")
|
|
131
162
|
.filter(
|
|
132
|
-
prop =>
|
|
133
|
-
prop.getAttribute("name")
|
|
134
|
-
|
|
163
|
+
prop => {
|
|
164
|
+
const name = String(prop.getAttribute("name"))
|
|
165
|
+
return name && name.startsWith("ZOTERO_PREF_")
|
|
166
|
+
}
|
|
135
167
|
)
|
|
136
168
|
existingZoteroProps.forEach(prop =>
|
|
137
|
-
prop.parentElement
|
|
169
|
+
prop.parentElement!.removeChild(prop)
|
|
138
170
|
)
|
|
139
171
|
|
|
140
172
|
// Find the highest pid to determine the next one
|
|
141
173
|
const existingProperties = this.customXML.queryAll("property")
|
|
142
174
|
let maxPid = 0
|
|
143
175
|
existingProperties.forEach(prop => {
|
|
144
|
-
const pid = parseInt(prop.getAttribute("pid"))
|
|
176
|
+
const pid = parseInt(String(prop.getAttribute("pid")))
|
|
145
177
|
if (pid > maxPid) {
|
|
146
178
|
maxPid = pid
|
|
147
179
|
}
|
|
@@ -156,7 +188,7 @@ export class DOCXExporterMetadata {
|
|
|
156
188
|
|
|
157
189
|
// Split content into chunks of 255 characters (DOCX limit)
|
|
158
190
|
const chunkSize = 255
|
|
159
|
-
const chunks = []
|
|
191
|
+
const chunks: string[] = []
|
|
160
192
|
for (let i = 0; i < dataContent.length; i += chunkSize) {
|
|
161
193
|
chunks.push(dataContent.substring(i, i + chunkSize))
|
|
162
194
|
}
|
|
@@ -170,7 +202,7 @@ export class DOCXExporterMetadata {
|
|
|
170
202
|
propertiesEl.appendXML(propertyXML)
|
|
171
203
|
// Set the text content after appending (textContent escapes XML characters)
|
|
172
204
|
const lpwstrEl =
|
|
173
|
-
propertiesEl.lastElementChild
|
|
205
|
+
propertiesEl.lastElementChild?.query("vt:lpwstr")
|
|
174
206
|
if (lpwstrEl) {
|
|
175
207
|
lpwstrEl.textContent = chunk
|
|
176
208
|
}
|
|
@@ -183,30 +215,34 @@ export class DOCXExporterMetadata {
|
|
|
183
215
|
return Promise.resolve()
|
|
184
216
|
}
|
|
185
217
|
|
|
186
|
-
async addContributorProperties() {
|
|
218
|
+
async addContributorProperties(): Promise<void> {
|
|
187
219
|
if (!this.metadata.contributors || !this.metadata.contributors.length) {
|
|
188
220
|
return Promise.resolve()
|
|
189
221
|
}
|
|
190
222
|
|
|
191
|
-
const propertiesEl = this.customXML
|
|
223
|
+
const propertiesEl = this.customXML!.query("Properties")
|
|
224
|
+
if (!propertiesEl) {
|
|
225
|
+
return Promise.resolve()
|
|
226
|
+
}
|
|
192
227
|
|
|
193
228
|
// Remove any existing fidus_contributor_ properties
|
|
194
|
-
const existingContributorProps = this.customXML
|
|
229
|
+
const existingContributorProps = this.customXML!
|
|
195
230
|
.queryAll("property")
|
|
196
231
|
.filter(
|
|
197
|
-
prop =>
|
|
198
|
-
prop.getAttribute("name")
|
|
199
|
-
|
|
232
|
+
prop => {
|
|
233
|
+
const name = String(prop.getAttribute("name"))
|
|
234
|
+
return name && name.startsWith("fidus_contributor_")
|
|
235
|
+
}
|
|
200
236
|
)
|
|
201
237
|
existingContributorProps.forEach(prop =>
|
|
202
|
-
prop.parentElement
|
|
238
|
+
prop.parentElement!.removeChild(prop)
|
|
203
239
|
)
|
|
204
240
|
|
|
205
241
|
// Find the highest pid
|
|
206
|
-
const existingProperties = this.customXML
|
|
242
|
+
const existingProperties = this.customXML!.queryAll("property")
|
|
207
243
|
let maxPid = 0
|
|
208
244
|
existingProperties.forEach(prop => {
|
|
209
|
-
const pid = parseInt(prop.getAttribute("pid"))
|
|
245
|
+
const pid = parseInt(String(prop.getAttribute("pid")))
|
|
210
246
|
if (pid > maxPid) {
|
|
211
247
|
maxPid = pid
|
|
212
248
|
}
|
|
@@ -220,7 +256,7 @@ export class DOCXExporterMetadata {
|
|
|
220
256
|
<vt:i4></vt:i4>
|
|
221
257
|
</property>`
|
|
222
258
|
propertiesEl.appendXML(countXML)
|
|
223
|
-
const countEl = propertiesEl.lastElementChild
|
|
259
|
+
const countEl = propertiesEl.lastElementChild?.query("vt:i4")
|
|
224
260
|
if (countEl) {
|
|
225
261
|
countEl.textContent = String(contributors.length)
|
|
226
262
|
}
|
|
@@ -228,7 +264,7 @@ export class DOCXExporterMetadata {
|
|
|
228
264
|
// Add property for each contributor
|
|
229
265
|
contributors.forEach((contributor, index) => {
|
|
230
266
|
const num = index + 1
|
|
231
|
-
const nameParts = []
|
|
267
|
+
const nameParts: string[] = []
|
|
232
268
|
if (contributor.firstname) {
|
|
233
269
|
nameParts.push(contributor.firstname)
|
|
234
270
|
}
|
|
@@ -277,7 +313,7 @@ export class DOCXExporterMetadata {
|
|
|
277
313
|
</property>`
|
|
278
314
|
propertiesEl.appendXML(propertyXML)
|
|
279
315
|
const lpwstrEl =
|
|
280
|
-
propertiesEl.lastElementChild
|
|
316
|
+
propertiesEl.lastElementChild?.query("vt:lpwstr")
|
|
281
317
|
if (lpwstrEl) {
|
|
282
318
|
lpwstrEl.textContent = field.value
|
|
283
319
|
}
|