@fiduswriter/document 0.1.0-alpha.4 → 0.1.0-alpha.6
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/dist/bibliography/common.d.ts +9 -91
- package/dist/bibliography/common.d.ts.map +1 -1
- package/dist/bibliography/common.js +3 -2
- package/dist/bibliography/common.js.map +1 -1
- package/dist/bibliography/csl_bib.d.ts +1 -1
- package/dist/bibliography/csl_bib.d.ts.map +1 -1
- package/dist/bibliography/csl_bib.js +7 -7
- package/dist/bibliography/csl_bib.js.map +1 -1
- package/dist/citations/citeproc_sys.d.ts +9 -10
- package/dist/citations/citeproc_sys.d.ts.map +1 -1
- package/dist/citations/citeproc_sys.js +6 -1
- package/dist/citations/citeproc_sys.js.map +1 -1
- package/dist/citations/format.d.ts +33 -16
- package/dist/citations/format.d.ts.map +1 -1
- package/dist/citations/format.js +29 -4
- package/dist/citations/format.js.map +1 -1
- package/dist/editor/e2ee/encryptor.d.ts +35 -35
- package/dist/editor/e2ee/encryptor.d.ts.map +1 -1
- package/dist/editor/e2ee/encryptor.js +31 -31
- package/dist/editor/e2ee/encryptor.js.map +1 -1
- package/dist/exporter/docx/citations.d.ts +27 -17
- package/dist/exporter/docx/citations.d.ts.map +1 -1
- package/dist/exporter/docx/citations.js +24 -7
- package/dist/exporter/docx/citations.js.map +1 -1
- package/dist/exporter/docx/comments.d.ts +15 -11
- package/dist/exporter/docx/comments.d.ts.map +1 -1
- package/dist/exporter/docx/comments.js +47 -14
- package/dist/exporter/docx/comments.js.map +1 -1
- package/dist/exporter/docx/footnotes.d.ts +36 -31
- package/dist/exporter/docx/footnotes.d.ts.map +1 -1
- package/dist/exporter/docx/footnotes.js +46 -12
- package/dist/exporter/docx/footnotes.js.map +1 -1
- package/dist/exporter/docx/images.d.ts +23 -12
- package/dist/exporter/docx/images.d.ts.map +1 -1
- package/dist/exporter/docx/images.js +35 -20
- package/dist/exporter/docx/images.js.map +1 -1
- package/dist/exporter/docx/index.d.ts +11 -17
- package/dist/exporter/docx/index.d.ts.map +1 -1
- package/dist/exporter/docx/index.js +15 -7
- package/dist/exporter/docx/index.js.map +1 -1
- package/dist/exporter/docx/lists.d.ts +27 -22
- package/dist/exporter/docx/lists.d.ts.map +1 -1
- package/dist/exporter/docx/lists.js +77 -30
- package/dist/exporter/docx/lists.js.map +1 -1
- package/dist/exporter/docx/math.d.ts +9 -9
- package/dist/exporter/docx/math.d.ts.map +1 -1
- package/dist/exporter/docx/math.js +22 -5
- package/dist/exporter/docx/math.js.map +1 -1
- package/dist/exporter/docx/metadata.d.ts +12 -9
- package/dist/exporter/docx/metadata.d.ts.map +1 -1
- package/dist/exporter/docx/metadata.js +59 -26
- package/dist/exporter/docx/metadata.js.map +1 -1
- package/dist/exporter/docx/rels.d.ts +14 -12
- package/dist/exporter/docx/rels.d.ts.map +1 -1
- package/dist/exporter/docx/rels.js +37 -22
- package/dist/exporter/docx/rels.js.map +1 -1
- package/dist/exporter/docx/render.d.ts +17 -15
- package/dist/exporter/docx/render.d.ts.map +1 -1
- package/dist/exporter/docx/render.js +37 -31
- package/dist/exporter/docx/render.js.map +1 -1
- package/dist/exporter/docx/richtext.d.ts +8 -8
- package/dist/exporter/docx/richtext.d.ts.map +1 -1
- package/dist/exporter/docx/richtext.js +61 -43
- package/dist/exporter/docx/richtext.js.map +1 -1
- package/dist/exporter/docx/tables.d.ts +11 -9
- package/dist/exporter/docx/tables.d.ts.map +1 -1
- package/dist/exporter/docx/tables.js +16 -10
- package/dist/exporter/docx/tables.js.map +1 -1
- package/dist/exporter/docx/tools.d.ts +3 -2
- package/dist/exporter/docx/tools.d.ts.map +1 -1
- package/dist/exporter/docx/tools.js +3 -3
- package/dist/exporter/docx/tools.js.map +1 -1
- package/dist/exporter/epub/index.d.ts +11 -3
- package/dist/exporter/epub/index.d.ts.map +1 -1
- package/dist/exporter/epub/index.js +10 -3
- package/dist/exporter/epub/index.js.map +1 -1
- package/dist/exporter/epub/templates.d.ts +62 -31
- package/dist/exporter/epub/templates.d.ts.map +1 -1
- package/dist/exporter/epub/templates.js +1 -1
- package/dist/exporter/epub/templates.js.map +1 -1
- package/dist/exporter/epub/tools.d.ts +12 -4
- package/dist/exporter/epub/tools.d.ts.map +1 -1
- package/dist/exporter/epub/tools.js +14 -13
- package/dist/exporter/epub/tools.js.map +1 -1
- package/dist/exporter/html/citations.d.ts +17 -15
- package/dist/exporter/html/citations.d.ts.map +1 -1
- package/dist/exporter/html/citations.js +37 -18
- package/dist/exporter/html/citations.js.map +1 -1
- package/dist/exporter/html/convert.d.ts +20 -70
- package/dist/exporter/html/convert.d.ts.map +1 -1
- package/dist/exporter/html/convert.js +74 -42
- package/dist/exporter/html/convert.js.map +1 -1
- package/dist/exporter/html/index.d.ts +55 -52
- package/dist/exporter/html/index.d.ts.map +1 -1
- package/dist/exporter/html/index.js +23 -3
- package/dist/exporter/html/index.js.map +1 -1
- package/dist/exporter/html/templates.d.ts +23 -9
- package/dist/exporter/html/templates.d.ts.map +1 -1
- package/dist/exporter/html/templates.js +1 -1
- package/dist/exporter/html/templates.js.map +1 -1
- package/dist/exporter/html/tools.d.ts +1 -1
- package/dist/exporter/html/tools.d.ts.map +1 -1
- package/dist/exporter/html/tools.js +2 -2
- package/dist/exporter/html/tools.js.map +1 -1
- package/dist/exporter/jats/bibliography.d.ts +2 -1
- package/dist/exporter/jats/bibliography.d.ts.map +1 -1
- package/dist/exporter/jats/bibliography.js +57 -52
- package/dist/exporter/jats/bibliography.js.map +1 -1
- package/dist/exporter/jats/citations.d.ts +13 -11
- package/dist/exporter/jats/citations.d.ts.map +1 -1
- package/dist/exporter/jats/citations.js +28 -6
- package/dist/exporter/jats/citations.js.map +1 -1
- package/dist/exporter/jats/convert.d.ts +24 -28
- package/dist/exporter/jats/convert.d.ts.map +1 -1
- package/dist/exporter/jats/convert.js +53 -36
- package/dist/exporter/jats/convert.js.map +1 -1
- package/dist/exporter/jats/index.d.ts +21 -15
- package/dist/exporter/jats/index.d.ts.map +1 -1
- package/dist/exporter/jats/index.js +21 -5
- package/dist/exporter/jats/index.js.map +1 -1
- package/dist/exporter/jats/templates.d.ts +17 -15
- package/dist/exporter/jats/templates.d.ts.map +1 -1
- package/dist/exporter/jats/templates.js.map +1 -1
- package/dist/exporter/jats/text.d.ts +3 -2
- package/dist/exporter/jats/text.d.ts.map +1 -1
- package/dist/exporter/jats/text.js +4 -4
- package/dist/exporter/jats/text.js.map +1 -1
- package/dist/exporter/latex/convert.d.ts +12 -15
- package/dist/exporter/latex/convert.d.ts.map +1 -1
- package/dist/exporter/latex/convert.js +70 -54
- package/dist/exporter/latex/convert.js.map +1 -1
- package/dist/exporter/latex/escape_latex.d.ts +1 -1
- package/dist/exporter/latex/escape_latex.d.ts.map +1 -1
- package/dist/exporter/latex/escape_latex.js +1 -1
- package/dist/exporter/latex/escape_latex.js.map +1 -1
- package/dist/exporter/latex/index.d.ts +20 -19
- package/dist/exporter/latex/index.d.ts.map +1 -1
- package/dist/exporter/latex/index.js +15 -5
- package/dist/exporter/latex/index.js.map +1 -1
- package/dist/exporter/latex/readme.d.ts +1 -1
- package/dist/exporter/latex/readme.d.ts.map +1 -1
- package/dist/exporter/latex/readme.js +2 -2
- package/dist/exporter/latex/readme.js.map +1 -1
- 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 +29 -14
- package/dist/exporter/native/shrink.d.ts.map +1 -1
- package/dist/exporter/native/shrink.js +27 -18
- package/dist/exporter/native/shrink.js.map +1 -1
- 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 +18 -15
- package/dist/exporter/odt/citations.d.ts.map +1 -1
- package/dist/exporter/odt/citations.js +21 -4
- package/dist/exporter/odt/citations.js.map +1 -1
- package/dist/exporter/odt/footnotes.d.ts +25 -19
- package/dist/exporter/odt/footnotes.d.ts.map +1 -1
- package/dist/exporter/odt/footnotes.js +23 -6
- package/dist/exporter/odt/footnotes.js.map +1 -1
- package/dist/exporter/odt/images.d.ts +23 -11
- package/dist/exporter/odt/images.d.ts.map +1 -1
- package/dist/exporter/odt/images.js +34 -26
- package/dist/exporter/odt/images.js.map +1 -1
- package/dist/exporter/odt/index.d.ts +12 -18
- package/dist/exporter/odt/index.d.ts.map +1 -1
- package/dist/exporter/odt/index.js +16 -7
- package/dist/exporter/odt/index.js.map +1 -1
- package/dist/exporter/odt/math.d.ts +10 -8
- package/dist/exporter/odt/math.d.ts.map +1 -1
- package/dist/exporter/odt/math.js +27 -4
- package/dist/exporter/odt/math.js.map +1 -1
- package/dist/exporter/odt/metadata.d.ts +13 -9
- package/dist/exporter/odt/metadata.d.ts.map +1 -1
- package/dist/exporter/odt/metadata.js +36 -15
- package/dist/exporter/odt/metadata.js.map +1 -1
- package/dist/exporter/odt/render.d.ts +17 -15
- package/dist/exporter/odt/render.d.ts.map +1 -1
- package/dist/exporter/odt/render.js +25 -18
- package/dist/exporter/odt/render.js.map +1 -1
- package/dist/exporter/odt/richtext.d.ts +9 -9
- package/dist/exporter/odt/richtext.d.ts.map +1 -1
- package/dist/exporter/odt/richtext.js +55 -40
- package/dist/exporter/odt/richtext.js.map +1 -1
- package/dist/exporter/odt/styles.d.ts +29 -21
- package/dist/exporter/odt/styles.d.ts.map +1 -1
- package/dist/exporter/odt/styles.js +44 -22
- package/dist/exporter/odt/styles.js.map +1 -1
- package/dist/exporter/odt/track.d.ts +14 -7
- package/dist/exporter/odt/track.d.ts.map +1 -1
- package/dist/exporter/odt/track.js +7 -0
- package/dist/exporter/odt/track.js.map +1 -1
- package/dist/exporter/pandoc/citations.d.ts +20 -14
- package/dist/exporter/pandoc/citations.d.ts.map +1 -1
- package/dist/exporter/pandoc/citations.js +18 -4
- package/dist/exporter/pandoc/citations.js.map +1 -1
- package/dist/exporter/pandoc/convert.d.ts +10 -29
- package/dist/exporter/pandoc/convert.d.ts.map +1 -1
- package/dist/exporter/pandoc/convert.js +45 -40
- package/dist/exporter/pandoc/convert.js.map +1 -1
- package/dist/exporter/pandoc/index.d.ts +20 -33
- package/dist/exporter/pandoc/index.d.ts.map +1 -1
- package/dist/exporter/pandoc/index.js +20 -8
- package/dist/exporter/pandoc/index.js.map +1 -1
- package/dist/exporter/pandoc/readme.d.ts +1 -1
- package/dist/exporter/pandoc/readme.d.ts.map +1 -1
- package/dist/exporter/pandoc/readme.js +0 -1
- package/dist/exporter/pandoc/readme.js.map +1 -1
- package/dist/exporter/pandoc/tools.d.ts +21 -5
- package/dist/exporter/pandoc/tools.d.ts.map +1 -1
- package/dist/exporter/pandoc/tools.js +2 -2
- package/dist/exporter/pandoc/tools.js.map +1 -1
- package/dist/exporter/print/index.d.ts +18 -7
- package/dist/exporter/print/index.d.ts.map +1 -1
- package/dist/exporter/print/index.js +12 -10
- package/dist/exporter/print/index.js.map +1 -1
- package/dist/exporter/tools/doc_content.d.ts +5 -6
- package/dist/exporter/tools/doc_content.d.ts.map +1 -1
- package/dist/exporter/tools/doc_content.js +17 -16
- package/dist/exporter/tools/doc_content.js.map +1 -1
- package/dist/exporter/tools/svg.d.ts +7 -1
- package/dist/exporter/tools/svg.d.ts.map +1 -1
- package/dist/exporter/tools/svg.js.map +1 -1
- package/dist/exporter/tools/xml.d.ts +39 -38
- package/dist/exporter/tools/xml.d.ts.map +1 -1
- package/dist/exporter/tools/xml.js +82 -55
- package/dist/exporter/tools/xml.js.map +1 -1
- package/dist/exporter/tools/xml_zip.d.ts +15 -14
- package/dist/exporter/tools/xml_zip.d.ts.map +1 -1
- package/dist/exporter/tools/xml_zip.js +8 -2
- package/dist/exporter/tools/xml_zip.js.map +1 -1
- package/dist/exporter/tools/zip.d.ts +28 -14
- package/dist/exporter/tools/zip.d.ts.map +1 -1
- package/dist/exporter/tools/zip.js +13 -6
- package/dist/exporter/tools/zip.js.map +1 -1
- package/dist/exporter/tools/zotero_csl.d.ts +19 -6
- package/dist/exporter/tools/zotero_csl.d.ts.map +1 -1
- package/dist/exporter/tools/zotero_csl.js +9 -9
- package/dist/exporter/tools/zotero_csl.js.map +1 -1
- package/dist/importer/citations.d.ts +25 -22
- package/dist/importer/citations.d.ts.map +1 -1
- package/dist/importer/citations.js +1 -49
- package/dist/importer/citations.js.map +1 -1
- package/dist/importer/docx/citations.d.ts +8 -30
- package/dist/importer/docx/citations.d.ts.map +1 -1
- package/dist/importer/docx/citations.js +1 -26
- package/dist/importer/docx/citations.js.map +1 -1
- package/dist/importer/docx/convert.d.ts +38 -116
- package/dist/importer/docx/convert.d.ts.map +1 -1
- package/dist/importer/docx/convert.js +99 -82
- package/dist/importer/docx/convert.js.map +1 -1
- package/dist/importer/docx/helpers.d.ts +1 -1
- package/dist/importer/docx/helpers.d.ts.map +1 -1
- package/dist/importer/docx/helpers.js +1 -1
- package/dist/importer/docx/helpers.js.map +1 -1
- 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 +2 -3
- package/dist/importer/docx/omml2mathml.d.ts.map +1 -1
- package/dist/importer/docx/omml2mathml.js +23 -116
- package/dist/importer/docx/omml2mathml.js.map +1 -1
- package/dist/importer/docx/parse.d.ts +22 -131
- package/dist/importer/docx/parse.d.ts.map +1 -1
- package/dist/importer/docx/parse.js +73 -55
- package/dist/importer/docx/parse.js.map +1 -1
- 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 +18 -8
- package/dist/importer/native/get_images.d.ts.map +1 -1
- package/dist/importer/native/get_images.js +39 -45
- package/dist/importer/native/get_images.js.map +1 -1
- 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 +5 -4
- package/dist/importer/native/update.d.ts.map +1 -1
- package/dist/importer/native/update.js +4 -3
- package/dist/importer/native/update.js.map +1 -1
- 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 +7 -27
- package/dist/importer/odt/citations.d.ts.map +1 -1
- package/dist/importer/odt/citations.js +0 -22
- package/dist/importer/odt/citations.js.map +1 -1
- package/dist/importer/odt/convert.d.ts +53 -237
- package/dist/importer/odt/convert.d.ts.map +1 -1
- package/dist/importer/odt/convert.js +162 -138
- package/dist/importer/odt/convert.js.map +1 -1
- 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 +25 -77
- package/dist/importer/pandoc/convert.d.ts.map +1 -1
- package/dist/importer/pandoc/convert.js +65 -52
- package/dist/importer/pandoc/convert.js.map +1 -1
- package/dist/importer/pandoc/helpers.d.ts +4 -3
- package/dist/importer/pandoc/helpers.d.ts.map +1 -1
- package/dist/importer/pandoc/helpers.js +24 -26
- package/dist/importer/pandoc/helpers.js.map +1 -1
- 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 +27 -21
- package/dist/importer/zip_analyzer.d.ts.map +1 -1
- package/dist/importer/zip_analyzer.js +10 -5
- package/dist/importer/zip_analyzer.js.map +1 -1
- package/dist/mathlive/opf_includes.d.ts +1 -1
- package/dist/mathlive/opf_includes.d.ts.map +1 -1
- package/dist/mathlive/opf_includes.js.map +1 -1
- package/dist/schema/common/annotate.d.ts +37 -49
- package/dist/schema/common/annotate.d.ts.map +1 -1
- package/dist/schema/common/annotate.js +2 -2
- package/dist/schema/common/annotate.js.map +1 -1
- package/dist/schema/common/base.d.ts +63 -81
- package/dist/schema/common/base.d.ts.map +1 -1
- package/dist/schema/common/base.js.map +1 -1
- package/dist/schema/common/citation.d.ts +23 -22
- package/dist/schema/common/citation.d.ts.map +1 -1
- package/dist/schema/common/citation.js +4 -5
- package/dist/schema/common/citation.js.map +1 -1
- package/dist/schema/common/equation.d.ts +13 -14
- package/dist/schema/common/equation.d.ts.map +1 -1
- package/dist/schema/common/equation.js +1 -1
- package/dist/schema/common/equation.js.map +1 -1
- package/dist/schema/common/figure.d.ts +72 -93
- package/dist/schema/common/figure.d.ts.map +1 -1
- package/dist/schema/common/figure.js +11 -9
- package/dist/schema/common/figure.js.map +1 -1
- package/dist/schema/common/heading.d.ts +8 -32
- package/dist/schema/common/heading.d.ts.map +1 -1
- package/dist/schema/common/heading.js +2 -2
- package/dist/schema/common/heading.js.map +1 -1
- package/dist/schema/common/index.d.ts +2 -2
- package/dist/schema/common/index.d.ts.map +1 -1
- package/dist/schema/common/index.js.map +1 -1
- package/dist/schema/common/list.d.ts +52 -72
- package/dist/schema/common/list.d.ts.map +1 -1
- package/dist/schema/common/list.js +3 -3
- package/dist/schema/common/list.js.map +1 -1
- package/dist/schema/common/reference.d.ts +51 -59
- package/dist/schema/common/reference.d.ts.map +1 -1
- package/dist/schema/common/reference.js +5 -5
- package/dist/schema/common/reference.js.map +1 -1
- package/dist/schema/common/table.d.ts +59 -75
- package/dist/schema/common/table.d.ts.map +1 -1
- package/dist/schema/common/table.js +3 -2
- package/dist/schema/common/table.js.map +1 -1
- package/dist/schema/common/track.d.ts +83 -97
- package/dist/schema/common/track.d.ts.map +1 -1
- package/dist/schema/common/track.js +18 -17
- package/dist/schema/common/track.js.map +1 -1
- package/dist/schema/convert.d.ts +2 -2
- package/dist/schema/convert.d.ts.map +1 -1
- package/dist/schema/convert.js +2 -2
- package/dist/schema/convert.js.map +1 -1
- package/dist/schema/document/content.d.ts +95 -122
- package/dist/schema/document/content.d.ts.map +1 -1
- package/dist/schema/document/content.js +9 -9
- package/dist/schema/document/content.js.map +1 -1
- package/dist/schema/document/index.d.ts +173 -257
- package/dist/schema/document/index.d.ts.map +1 -1
- package/dist/schema/document/index.js.map +1 -1
- package/dist/schema/document/structure.d.ts +149 -258
- package/dist/schema/document/structure.d.ts.map +1 -1
- package/dist/schema/document/structure.js +2 -2
- package/dist/schema/document/structure.js.map +1 -1
- package/dist/schema/export.d.ts +4 -877
- package/dist/schema/export.d.ts.map +1 -1
- package/dist/schema/export.js +1 -0
- package/dist/schema/export.js.map +1 -1
- package/dist/schema/footnotes.d.ts +110 -155
- package/dist/schema/footnotes.d.ts.map +1 -1
- package/dist/schema/footnotes.js +4 -2
- package/dist/schema/footnotes.js.map +1 -1
- package/dist/schema/footnotes_convert.d.ts +3 -3
- package/dist/schema/footnotes_convert.d.ts.map +1 -1
- package/dist/schema/footnotes_convert.js +10 -6
- package/dist/schema/footnotes_convert.js.map +1 -1
- package/dist/schema/i18n.d.ts +3 -534
- package/dist/schema/i18n.d.ts.map +1 -1
- package/dist/schema/i18n.js +1 -0
- package/dist/schema/i18n.js.map +1 -1
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/mini_json.d.ts +3 -4
- package/dist/schema/mini_json.d.ts.map +1 -1
- package/dist/schema/mini_json.js +2 -0
- package/dist/schema/mini_json.js.map +1 -1
- package/dist/schema/text.d.ts +2 -1
- package/dist/schema/text.d.ts.map +1 -1
- package/dist/schema/text.js +1 -1
- package/dist/schema/text.js.map +1 -1
- package/dist/types.d.ts +167 -8
- package/dist/types.d.ts.map +1 -1
- package/package.json +24 -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.js → tools.ts} +31 -25
- 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/{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 +2 -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.js → track.ts} +42 -31
- 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.js → i18n.ts} +7 -1
- package/src/schema/{mini_json.js → mini_json.ts} +11 -12
- package/src/schema/{text.js → text.ts} +6 -2
- package/src/types.ts +185 -7
- 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/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
|
@@ -3,7 +3,29 @@ import { xmlDOM } from "../../exporter/tools/xml.js";
|
|
|
3
3
|
import { randomCommentId, randomFigureId, randomHeadingId, randomListId, randomTableId } from "../../schema/common/index.js";
|
|
4
4
|
import { parseTracks } from "../../schema/common/track.js";
|
|
5
5
|
import { isOdtBibliographyReferenceMark, isOdtBibliographySection, isOdtCitationMark, parseOdtBibliographyMark, parseOdtReferenceMark } from "./citations.js";
|
|
6
|
+
import { gettext } from "fwtoolkit";
|
|
7
|
+
function attr(node, name) {
|
|
8
|
+
if (node && typeof node === "object" && "getAttribute" in node) {
|
|
9
|
+
return String(node.getAttribute(name) || "");
|
|
10
|
+
}
|
|
11
|
+
return "";
|
|
12
|
+
}
|
|
6
13
|
export class OdtConvert {
|
|
14
|
+
importId;
|
|
15
|
+
template;
|
|
16
|
+
bibliography;
|
|
17
|
+
bibDB;
|
|
18
|
+
images;
|
|
19
|
+
styles;
|
|
20
|
+
contentDoc;
|
|
21
|
+
stylesDoc;
|
|
22
|
+
metaDoc;
|
|
23
|
+
manifestDoc;
|
|
24
|
+
tracks;
|
|
25
|
+
comments;
|
|
26
|
+
currentCommentIds;
|
|
27
|
+
currentTracks;
|
|
28
|
+
referenceableObjects;
|
|
7
29
|
constructor(contentXml, stylesXml, metaXml, manifestXml, importId, template, bibliography, bibDb) {
|
|
8
30
|
this.importId = importId;
|
|
9
31
|
this.template = template;
|
|
@@ -38,6 +60,9 @@ export class OdtConvert {
|
|
|
38
60
|
};
|
|
39
61
|
}
|
|
40
62
|
parseTrackedChanges() {
|
|
63
|
+
if (!this.contentDoc) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
41
66
|
const trackedChangesEl = this.contentDoc.query("text:tracked-changes");
|
|
42
67
|
if (!trackedChangesEl) {
|
|
43
68
|
return;
|
|
@@ -53,8 +78,8 @@ export class OdtConvert {
|
|
|
53
78
|
// and is more easily converted.
|
|
54
79
|
const deletions = {};
|
|
55
80
|
const changedRegions = trackedChangesEl.queryAll("text:changed-region");
|
|
56
|
-
changedRegions.forEach(region => {
|
|
57
|
-
const id = region
|
|
81
|
+
changedRegions.forEach((region) => {
|
|
82
|
+
const id = attr(region, "text:id");
|
|
58
83
|
const insertion = region.query("text:insertion");
|
|
59
84
|
const deletion = region.query("text:deletion");
|
|
60
85
|
if (!insertion && !deletion) {
|
|
@@ -67,7 +92,7 @@ export class OdtConvert {
|
|
|
67
92
|
type: insertion ? "insertion" : "deletion",
|
|
68
93
|
user: 1,
|
|
69
94
|
username: changeInfo.query("dc:creator")?.textContent || "",
|
|
70
|
-
date:
|
|
95
|
+
date: Math.floor(new Date(changeInfo.query("dc:date")?.textContent || "").getTime() / 60000)
|
|
71
96
|
};
|
|
72
97
|
if (insertion) {
|
|
73
98
|
track.approved = false;
|
|
@@ -75,14 +100,14 @@ export class OdtConvert {
|
|
|
75
100
|
this.tracks[id] = track;
|
|
76
101
|
if (deletion) {
|
|
77
102
|
// Store deletion content for later use
|
|
78
|
-
deletions[id] = deletion.children.filter(child => child.tagName !== "office:change-info");
|
|
103
|
+
deletions[id] = deletion.children.filter((child) => child.tagName !== "office:change-info");
|
|
79
104
|
}
|
|
80
105
|
}
|
|
81
106
|
});
|
|
82
107
|
// Then find and replace all deletion change markers
|
|
83
108
|
const changeMarkers = this.contentDoc.queryAll("text:change");
|
|
84
|
-
changeMarkers.forEach(marker => {
|
|
85
|
-
const changeId = marker
|
|
109
|
+
changeMarkers.forEach((marker) => {
|
|
110
|
+
const changeId = attr(marker, "text:change-id");
|
|
86
111
|
const deletion = deletions[changeId];
|
|
87
112
|
if (deletion) {
|
|
88
113
|
if (deletion.length > 0) {
|
|
@@ -92,7 +117,7 @@ export class OdtConvert {
|
|
|
92
117
|
marker.parentElement.insertXMLAt(`<text:change-end text:change-id="${changeId}"/>`, markerIndex + 2);
|
|
93
118
|
if (deletion.length === 1) {
|
|
94
119
|
// Single block - just insert the content
|
|
95
|
-
deletion[0].children.forEach(content => {
|
|
120
|
+
deletion[0].children.forEach((content) => {
|
|
96
121
|
marker.parentElement.insertBefore(content, marker);
|
|
97
122
|
});
|
|
98
123
|
}
|
|
@@ -100,11 +125,11 @@ export class OdtConvert {
|
|
|
100
125
|
// Multiple blocks - need to split the paragraph/headline
|
|
101
126
|
const parentElement = marker.parentElement;
|
|
102
127
|
parentElement.splitAtChildElement(marker, deletion[0].children
|
|
103
|
-
?.map(node => node.toString())
|
|
128
|
+
?.map((node) => node.toString())
|
|
104
129
|
.join("") || "", // First block content to be added to current node
|
|
105
130
|
deletion
|
|
106
131
|
.slice(1, -1)
|
|
107
|
-
.map(node => node.toString())
|
|
132
|
+
.map((node) => node.toString())
|
|
108
133
|
.join(""), // Middle blocks
|
|
109
134
|
deletion[deletion.length - 1].toString() // Last block
|
|
110
135
|
);
|
|
@@ -120,37 +145,35 @@ export class OdtConvert {
|
|
|
120
145
|
return;
|
|
121
146
|
}
|
|
122
147
|
const styleNodes = this.stylesDoc.queryAll("style:style");
|
|
123
|
-
styleNodes.forEach(node => {
|
|
124
|
-
const styleName = node
|
|
148
|
+
styleNodes.forEach((node) => {
|
|
149
|
+
const styleName = attr(node, "style:name");
|
|
125
150
|
this.styles[styleName] = this.parseStyle(node);
|
|
126
151
|
});
|
|
127
152
|
const contentStyleNodes = this.contentDoc.queryAll("style:style");
|
|
128
|
-
contentStyleNodes.forEach(node => {
|
|
129
|
-
const styleName = node
|
|
153
|
+
contentStyleNodes.forEach((node) => {
|
|
154
|
+
const styleName = attr(node, "style:name");
|
|
130
155
|
this.styles[styleName] = this.parseStyle(node);
|
|
131
156
|
});
|
|
132
157
|
}
|
|
133
158
|
parseStyle(styleNode) {
|
|
134
159
|
const properties = {
|
|
135
160
|
// Basic style information
|
|
136
|
-
parentStyleName: styleNode
|
|
137
|
-
isSection: styleNode
|
|
161
|
+
parentStyleName: attr(styleNode, "style:parent-style-name"),
|
|
162
|
+
isSection: attr(styleNode, "style:family") === "section" ||
|
|
138
163
|
Boolean(styleNode.query("style:section-properties")),
|
|
139
|
-
title: styleNode
|
|
164
|
+
title: attr(styleNode, "style:display-name"),
|
|
140
165
|
// Family and name info
|
|
141
|
-
family: styleNode
|
|
142
|
-
name: styleNode
|
|
166
|
+
family: attr(styleNode, "style:family"),
|
|
167
|
+
name: attr(styleNode, "style:name"),
|
|
143
168
|
// Heading related
|
|
144
|
-
isHeading: styleNode
|
|
145
|
-
(styleNode
|
|
146
|
-
.getAttribute("style:name")
|
|
169
|
+
isHeading: attr(styleNode, "style:family") === "paragraph" &&
|
|
170
|
+
(attr(styleNode, "style:name")
|
|
147
171
|
.toLowerCase()
|
|
148
172
|
.includes("heading") ||
|
|
149
|
-
styleNode
|
|
150
|
-
.getAttribute("style:parent-style-name")
|
|
173
|
+
attr(styleNode, "style:parent-style-name")
|
|
151
174
|
?.toLowerCase()
|
|
152
175
|
.includes("heading")),
|
|
153
|
-
outlineLevel: styleNode
|
|
176
|
+
outlineLevel: attr(styleNode, "text:outline-level"),
|
|
154
177
|
// Text properties
|
|
155
178
|
textProperties: {},
|
|
156
179
|
// Paragraph properties
|
|
@@ -162,53 +185,53 @@ export class OdtConvert {
|
|
|
162
185
|
const textProperties = styleNode.query("style:text-properties");
|
|
163
186
|
if (textProperties) {
|
|
164
187
|
properties.textProperties = {
|
|
165
|
-
bold: textProperties
|
|
166
|
-
italic: textProperties
|
|
167
|
-
fontSize: this.convertLength(textProperties
|
|
168
|
-
fontFamily: textProperties
|
|
169
|
-
color: textProperties
|
|
170
|
-
backgroundColor: textProperties
|
|
171
|
-
textDecoration: textProperties
|
|
172
|
-
textProperties
|
|
173
|
-
textPosition: textProperties
|
|
188
|
+
bold: attr(textProperties, "fo:font-weight") === "bold",
|
|
189
|
+
italic: attr(textProperties, "fo:font-style") === "italic",
|
|
190
|
+
fontSize: this.convertLength(attr(textProperties, "fo:font-size")),
|
|
191
|
+
fontFamily: attr(textProperties, "fo:font-family"),
|
|
192
|
+
color: attr(textProperties, "fo:color"),
|
|
193
|
+
backgroundColor: attr(textProperties, "fo:background-color"),
|
|
194
|
+
textDecoration: attr(textProperties, "style:text-underline-style") ||
|
|
195
|
+
attr(textProperties, "style:text-line-through-style"),
|
|
196
|
+
textPosition: attr(textProperties, "style:text-position")
|
|
174
197
|
};
|
|
175
198
|
}
|
|
176
199
|
// Parse paragraph properties
|
|
177
200
|
const paragraphProperties = styleNode.query("style:paragraph-properties");
|
|
178
201
|
if (paragraphProperties) {
|
|
179
202
|
properties.paragraphProperties = {
|
|
180
|
-
marginTop: this.convertLength(paragraphProperties
|
|
181
|
-
marginBottom: this.convertLength(paragraphProperties
|
|
182
|
-
marginLeft: this.convertLength(paragraphProperties
|
|
183
|
-
marginRight: this.convertLength(paragraphProperties
|
|
184
|
-
textAlign: paragraphProperties
|
|
185
|
-
lineHeight: paragraphProperties
|
|
186
|
-
backgroundColor: paragraphProperties
|
|
187
|
-
padding: this.convertLength(paragraphProperties
|
|
188
|
-
borderStyle: paragraphProperties
|
|
203
|
+
marginTop: this.convertLength(attr(paragraphProperties, "fo:margin-top")),
|
|
204
|
+
marginBottom: this.convertLength(attr(paragraphProperties, "fo:margin-bottom")),
|
|
205
|
+
marginLeft: this.convertLength(attr(paragraphProperties, "fo:margin-left")),
|
|
206
|
+
marginRight: this.convertLength(attr(paragraphProperties, "fo:margin-right")),
|
|
207
|
+
textAlign: attr(paragraphProperties, "fo:text-align"),
|
|
208
|
+
lineHeight: attr(paragraphProperties, "fo:line-height"),
|
|
209
|
+
backgroundColor: attr(paragraphProperties, "fo:background-color"),
|
|
210
|
+
padding: this.convertLength(attr(paragraphProperties, "fo:padding")),
|
|
211
|
+
borderStyle: attr(paragraphProperties, "fo:border-style")
|
|
189
212
|
};
|
|
190
213
|
}
|
|
191
214
|
// Parse section properties
|
|
192
215
|
const sectionProperties = styleNode.query("style:section-properties");
|
|
193
216
|
if (sectionProperties) {
|
|
194
217
|
properties.sectionProperties = {
|
|
195
|
-
columnCount: sectionProperties
|
|
196
|
-
columnGap: this.convertLength(sectionProperties
|
|
197
|
-
backgroundColor: sectionProperties
|
|
218
|
+
columnCount: attr(sectionProperties, "fo:column-count"),
|
|
219
|
+
columnGap: this.convertLength(attr(sectionProperties, "fo:column-gap")),
|
|
220
|
+
backgroundColor: attr(sectionProperties, "fo:background-color"),
|
|
198
221
|
margins: {
|
|
199
|
-
top: this.convertLength(sectionProperties
|
|
200
|
-
bottom: this.convertLength(sectionProperties
|
|
201
|
-
left: this.convertLength(sectionProperties
|
|
202
|
-
right: this.convertLength(sectionProperties
|
|
222
|
+
top: this.convertLength(attr(sectionProperties, "fo:margin-top")),
|
|
223
|
+
bottom: this.convertLength(attr(sectionProperties, "fo:margin-bottom")),
|
|
224
|
+
left: this.convertLength(attr(sectionProperties, "fo:margin-left")),
|
|
225
|
+
right: this.convertLength(attr(sectionProperties, "fo:margin-right"))
|
|
203
226
|
}
|
|
204
227
|
};
|
|
205
228
|
}
|
|
206
229
|
// Additional table-specific properties
|
|
207
|
-
if (styleNode
|
|
230
|
+
if (attr(styleNode, "style:family") === "table") {
|
|
208
231
|
properties.tableProperties = {
|
|
209
|
-
align: styleNode
|
|
210
|
-
width: this.convertLength(styleNode
|
|
211
|
-
relWidth: styleNode
|
|
232
|
+
align: attr(styleNode, "table:align"),
|
|
233
|
+
width: this.convertLength(attr(styleNode, "style:width")),
|
|
234
|
+
relWidth: attr(styleNode, "style:rel-width")
|
|
212
235
|
};
|
|
213
236
|
}
|
|
214
237
|
return properties;
|
|
@@ -227,11 +250,14 @@ export class OdtConvert {
|
|
|
227
250
|
return null;
|
|
228
251
|
}
|
|
229
252
|
parseComments() {
|
|
253
|
+
if (!this.contentDoc) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
230
256
|
const annotations = this.contentDoc.queryAll("office:annotation");
|
|
231
|
-
annotations.forEach(annotation => {
|
|
257
|
+
annotations.forEach((annotation) => {
|
|
232
258
|
const username = annotation.query("dc:creator")?.textContent || "";
|
|
233
259
|
const date = new Date(annotation.query("dc:date")?.textContent || "").getTime();
|
|
234
|
-
const id = (annotation
|
|
260
|
+
const id = (attr(annotation, "office:name") || "")
|
|
235
261
|
.replace(/\D/g, "")
|
|
236
262
|
.slice(0, 9);
|
|
237
263
|
if (id) {
|
|
@@ -242,15 +268,15 @@ export class OdtConvert {
|
|
|
242
268
|
date,
|
|
243
269
|
comment: annotation
|
|
244
270
|
.queryAll("text:p")
|
|
245
|
-
.map(par => this.convertBlockNode(par))
|
|
246
|
-
.filter(par => par)
|
|
271
|
+
.map((par) => this.convertBlockNode(par))
|
|
272
|
+
.filter((par) => par)
|
|
247
273
|
.flat(),
|
|
248
274
|
answers: [],
|
|
249
|
-
resolved: annotation
|
|
275
|
+
resolved: attr(annotation, "loext:resolved") === "true"
|
|
250
276
|
};
|
|
251
277
|
}
|
|
252
278
|
else {
|
|
253
|
-
const parentId = (annotation
|
|
279
|
+
const parentId = (attr(annotation, "loext:parent-name") || "")
|
|
254
280
|
.replace(/\D/g, "")
|
|
255
281
|
.slice(0, 9);
|
|
256
282
|
if (parentId && this.comments[parentId]) {
|
|
@@ -263,8 +289,8 @@ export class OdtConvert {
|
|
|
263
289
|
answer: annotation
|
|
264
290
|
.queryAll("text:p")
|
|
265
291
|
.slice(1)
|
|
266
|
-
.map(par => this.convertBlockNode(par))
|
|
267
|
-
.filter(par => par)
|
|
292
|
+
.map((par) => this.convertBlockNode(par))
|
|
293
|
+
.filter((par) => par)
|
|
268
294
|
.flat()
|
|
269
295
|
});
|
|
270
296
|
}
|
|
@@ -274,8 +300,8 @@ export class OdtConvert {
|
|
|
274
300
|
collectReferenceableObjects(node) {
|
|
275
301
|
// Handle heading bookmarks
|
|
276
302
|
const bookmarkStarts = node.queryAll("text:bookmark-start");
|
|
277
|
-
bookmarkStarts.forEach(mark => {
|
|
278
|
-
const refName = mark
|
|
303
|
+
bookmarkStarts.forEach((mark) => {
|
|
304
|
+
const refName = attr(mark, "text:name");
|
|
279
305
|
if (!refName) {
|
|
280
306
|
return;
|
|
281
307
|
}
|
|
@@ -296,8 +322,8 @@ export class OdtConvert {
|
|
|
296
322
|
});
|
|
297
323
|
// Handle figure sequences
|
|
298
324
|
const sequences = node.queryAll("text:sequence");
|
|
299
|
-
sequences.forEach(sequence => {
|
|
300
|
-
const refName = sequence
|
|
325
|
+
sequences.forEach((sequence) => {
|
|
326
|
+
const refName = attr(sequence, "text:ref-name");
|
|
301
327
|
if (!refName) {
|
|
302
328
|
return;
|
|
303
329
|
}
|
|
@@ -347,11 +373,11 @@ export class OdtConvert {
|
|
|
347
373
|
]
|
|
348
374
|
});
|
|
349
375
|
}
|
|
350
|
-
title.containerNodes.forEach(node => {
|
|
376
|
+
title.containerNodes.forEach((node) => {
|
|
351
377
|
node.parentElement.removeChild(node);
|
|
352
378
|
});
|
|
353
379
|
document.attrs.title =
|
|
354
|
-
title.content.map(node => node.textContent).join("") ||
|
|
380
|
+
title.content.map((node) => node.textContent).join("") ||
|
|
355
381
|
gettext("Untitled");
|
|
356
382
|
// Get all content sections from the ODT
|
|
357
383
|
const body = this.contentDoc.query("office:text");
|
|
@@ -361,7 +387,7 @@ export class OdtConvert {
|
|
|
361
387
|
// Look for metadata sections first (author, abstract, etc.)
|
|
362
388
|
const metadataContent = this.extractMetadata();
|
|
363
389
|
metadataContent.forEach(({ type, attrs, content }) => {
|
|
364
|
-
const templatePart = templateParts.find(part => part.attrs.metadata === type);
|
|
390
|
+
const templatePart = templateParts.find((part) => part.attrs.metadata === type);
|
|
365
391
|
if (templatePart) {
|
|
366
392
|
document.content.push({
|
|
367
393
|
type: templatePart.type,
|
|
@@ -372,7 +398,7 @@ export class OdtConvert {
|
|
|
372
398
|
content: content.content
|
|
373
399
|
});
|
|
374
400
|
// Remove paragraphs from content so they are not added to body
|
|
375
|
-
content.containerNodes.forEach(node => {
|
|
401
|
+
content.containerNodes.forEach((node) => {
|
|
376
402
|
node.parentElement.removeChild(node);
|
|
377
403
|
});
|
|
378
404
|
}
|
|
@@ -380,7 +406,7 @@ export class OdtConvert {
|
|
|
380
406
|
// Group remaining content by sections based on style names/titles
|
|
381
407
|
const sections = this.groupContentIntoSections(body);
|
|
382
408
|
// Map ODT sections to template parts
|
|
383
|
-
sections.forEach(section => {
|
|
409
|
+
sections.forEach((section) => {
|
|
384
410
|
// Find matching template part
|
|
385
411
|
const templatePart = this.findMatchingTemplatePart(section.title, templateParts);
|
|
386
412
|
if (templatePart) {
|
|
@@ -403,18 +429,16 @@ export class OdtConvert {
|
|
|
403
429
|
});
|
|
404
430
|
// Add remaining content to body section
|
|
405
431
|
const unassignedContent = sections
|
|
406
|
-
.filter(section => !this.findMatchingTemplatePart(section.title, templateParts))
|
|
407
|
-
.flatMap(section => section.content);
|
|
432
|
+
.filter((section) => !this.findMatchingTemplatePart(section.title, templateParts))
|
|
433
|
+
.flatMap((section) => section.content);
|
|
408
434
|
if (unassignedContent.length) {
|
|
409
435
|
// Find default body template part
|
|
410
|
-
const bodyTemplatePart = templateParts.find(part => !part.attrs.metadata && part.type === "richtext_part");
|
|
436
|
+
const bodyTemplatePart = templateParts.find((part) => !part.attrs.metadata && part.type === "richtext_part");
|
|
411
437
|
document.content.push({
|
|
412
438
|
type: "richtext_part",
|
|
413
439
|
attrs: {
|
|
414
|
-
title: bodyTemplatePart
|
|
415
|
-
|
|
416
|
-
: "Body",
|
|
417
|
-
id: bodyTemplatePart ? bodyTemplatePart.attrs.id : "body",
|
|
440
|
+
title: bodyTemplatePart?.attrs?.title || "Body",
|
|
441
|
+
id: bodyTemplatePart?.attrs?.id || "body",
|
|
418
442
|
marks: ["strong", "em", "link"]
|
|
419
443
|
},
|
|
420
444
|
content: unassignedContent
|
|
@@ -468,8 +492,8 @@ export class OdtConvert {
|
|
|
468
492
|
}
|
|
469
493
|
const userDefined = this.metaDoc.queryAll("meta:user-defined");
|
|
470
494
|
const contributors = [];
|
|
471
|
-
userDefined.forEach(prop => {
|
|
472
|
-
const name = prop
|
|
495
|
+
userDefined.forEach((prop) => {
|
|
496
|
+
const name = attr(prop, "meta:name");
|
|
473
497
|
if (!name || !name.startsWith("fidus_contributor_")) {
|
|
474
498
|
return;
|
|
475
499
|
}
|
|
@@ -509,7 +533,7 @@ export class OdtConvert {
|
|
|
509
533
|
}
|
|
510
534
|
});
|
|
511
535
|
const byRole = {};
|
|
512
|
-
contributors.forEach(contributor => {
|
|
536
|
+
contributors.forEach((contributor) => {
|
|
513
537
|
if (!contributor) {
|
|
514
538
|
return;
|
|
515
539
|
}
|
|
@@ -527,7 +551,7 @@ export class OdtConvert {
|
|
|
527
551
|
const metaAuthors = this.contentDoc.queryAll("meta:user-defined", {
|
|
528
552
|
"meta:name": "author"
|
|
529
553
|
});
|
|
530
|
-
metaAuthors.forEach(authorMeta => {
|
|
554
|
+
metaAuthors.forEach((authorMeta) => {
|
|
531
555
|
const authorText = authorMeta.textContent;
|
|
532
556
|
const [firstname = "", lastname = ""] = authorText.split(" ", 2);
|
|
533
557
|
authors.push({
|
|
@@ -576,7 +600,7 @@ export class OdtConvert {
|
|
|
576
600
|
"text:outline-level": "1"
|
|
577
601
|
}); // Then check content for "Abstract"
|
|
578
602
|
if (abstractSection &&
|
|
579
|
-
(abstractSection
|
|
603
|
+
(attr(abstractSection, "text:style-name") === "Abstract" ||
|
|
580
604
|
abstractSection.textContent.includes("Abstract"))) {
|
|
581
605
|
return {
|
|
582
606
|
content: this.convertContainer(abstractSection),
|
|
@@ -607,12 +631,12 @@ export class OdtConvert {
|
|
|
607
631
|
return null;
|
|
608
632
|
}
|
|
609
633
|
// Try exact match first
|
|
610
|
-
let matchingPart = templateParts.find(part => part.type === "richtext_part" &&
|
|
634
|
+
let matchingPart = templateParts.find((part) => part.type === "richtext_part" &&
|
|
611
635
|
!part.attrs.metadata &&
|
|
612
636
|
part.attrs.title.toLowerCase() === sectionTitle.toLowerCase());
|
|
613
637
|
if (!matchingPart) {
|
|
614
638
|
// Try fuzzy matching if exact match fails
|
|
615
|
-
matchingPart = templateParts.find(part => part.type === "richtext_part" &&
|
|
639
|
+
matchingPart = templateParts.find((part) => part.type === "richtext_part" &&
|
|
616
640
|
!part.attrs.metadata &&
|
|
617
641
|
this.isSimilarTitle(part.attrs.title, sectionTitle));
|
|
618
642
|
}
|
|
@@ -620,7 +644,7 @@ export class OdtConvert {
|
|
|
620
644
|
}
|
|
621
645
|
isSimilarTitle(title1, title2) {
|
|
622
646
|
// Remove special characters and extra spaces
|
|
623
|
-
const normalize = str => str
|
|
647
|
+
const normalize = (str) => str
|
|
624
648
|
.toLowerCase()
|
|
625
649
|
.replace(/[^a-z0-9]/g, "")
|
|
626
650
|
.trim();
|
|
@@ -672,7 +696,7 @@ export class OdtConvert {
|
|
|
672
696
|
// Check style properties for title-like formatting
|
|
673
697
|
const firstParagraph = this.contentDoc.query("text:p");
|
|
674
698
|
if (firstParagraph) {
|
|
675
|
-
const styleName = firstParagraph
|
|
699
|
+
const styleName = attr(firstParagraph, "text:style-name");
|
|
676
700
|
const style = this.styles[styleName];
|
|
677
701
|
if (style && this.isTitleStyle(style)) {
|
|
678
702
|
// Remove this node from the document so it's not processed again
|
|
@@ -727,7 +751,7 @@ export class OdtConvert {
|
|
|
727
751
|
// For headings, use the text content as section title
|
|
728
752
|
if (node.tagName === "text:h") {
|
|
729
753
|
// Get the heading level
|
|
730
|
-
const level = parseInt(node
|
|
754
|
+
const level = parseInt(attr(node, "text:outline-level")) || 1;
|
|
731
755
|
// Only use level 1 and 2 headings as section titles
|
|
732
756
|
if (level <= 2) {
|
|
733
757
|
return node.textContent.trim();
|
|
@@ -755,7 +779,7 @@ export class OdtConvert {
|
|
|
755
779
|
}
|
|
756
780
|
// For text:section elements, check for section-name attribute
|
|
757
781
|
if (node.tagName === "text:section") {
|
|
758
|
-
const sectionName = node
|
|
782
|
+
const sectionName = attr(node, "text:name");
|
|
759
783
|
if (sectionName) {
|
|
760
784
|
return this.formatSectionName(sectionName);
|
|
761
785
|
}
|
|
@@ -769,7 +793,7 @@ export class OdtConvert {
|
|
|
769
793
|
const words = name.split(/[_-]/);
|
|
770
794
|
// Capitalize first letter of each word and join
|
|
771
795
|
return words
|
|
772
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
796
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
773
797
|
.join(" ")
|
|
774
798
|
.trim();
|
|
775
799
|
}
|
|
@@ -779,8 +803,8 @@ export class OdtConvert {
|
|
|
779
803
|
title: null,
|
|
780
804
|
content: []
|
|
781
805
|
};
|
|
782
|
-
body.children.forEach(node => {
|
|
783
|
-
const styleName = node
|
|
806
|
+
body.children.forEach((node) => {
|
|
807
|
+
const styleName = attr(node, "text:style-name");
|
|
784
808
|
const title = this.getSectionTitle(node, styleName);
|
|
785
809
|
if (title && this.isHeadingStyle(styleName)) {
|
|
786
810
|
// Start new section
|
|
@@ -793,9 +817,9 @@ export class OdtConvert {
|
|
|
793
817
|
};
|
|
794
818
|
}
|
|
795
819
|
const converted = [this.convertBlockNode(node)]
|
|
796
|
-
.filter(node => node)
|
|
820
|
+
.filter((node) => node)
|
|
797
821
|
.flat();
|
|
798
|
-
converted.forEach(node => currentSection.content.push(node));
|
|
822
|
+
converted.forEach((node) => currentSection.content.push(node));
|
|
799
823
|
});
|
|
800
824
|
// Add final section
|
|
801
825
|
if (currentSection.content.length) {
|
|
@@ -834,7 +858,7 @@ export class OdtConvert {
|
|
|
834
858
|
"source code pro",
|
|
835
859
|
"fira code"
|
|
836
860
|
];
|
|
837
|
-
return monospacePatterns.some(pattern => fontFamily.includes(pattern));
|
|
861
|
+
return monospacePatterns.some((pattern) => fontFamily.includes(pattern));
|
|
838
862
|
}
|
|
839
863
|
return false;
|
|
840
864
|
}
|
|
@@ -875,12 +899,12 @@ export class OdtConvert {
|
|
|
875
899
|
}
|
|
876
900
|
convertContainer(container) {
|
|
877
901
|
return container.children
|
|
878
|
-
.map(node => this.convertBlockNode(node))
|
|
879
|
-
.filter(node => node)
|
|
902
|
+
.map((node) => this.convertBlockNode(node))
|
|
903
|
+
.filter((node) => node)
|
|
880
904
|
.flat();
|
|
881
905
|
}
|
|
882
906
|
convertBlockNode(node) {
|
|
883
|
-
const track = this.currentTracks.map(track => ({
|
|
907
|
+
const track = this.currentTracks.map((track) => ({
|
|
884
908
|
type: track.type,
|
|
885
909
|
user: track.attrs.user,
|
|
886
910
|
username: track.attrs.username,
|
|
@@ -917,7 +941,7 @@ export class OdtConvert {
|
|
|
917
941
|
// Skip bibliography sections inserted by citation managers
|
|
918
942
|
// (Zotero: name contains "ZOTERO_BIBL"/"CSL_BIBLIOGRAPHY",
|
|
919
943
|
// JabRef: name is "JR_bib" / "JR_BIB").
|
|
920
|
-
const sectionName = node
|
|
944
|
+
const sectionName = attr(node, "text:name") || "";
|
|
921
945
|
if (isOdtBibliographySection(sectionName)) {
|
|
922
946
|
return null;
|
|
923
947
|
}
|
|
@@ -931,7 +955,7 @@ export class OdtConvert {
|
|
|
931
955
|
}
|
|
932
956
|
}
|
|
933
957
|
convertParagraph(node, attrs = {}) {
|
|
934
|
-
const styleName = node
|
|
958
|
+
const styleName = attr(node, "text:style-name");
|
|
935
959
|
const style = this.styles[styleName];
|
|
936
960
|
// Check if this is a code block (preformatted text)
|
|
937
961
|
if (this.isCodeBlockStyle(styleName, style)) {
|
|
@@ -969,12 +993,12 @@ export class OdtConvert {
|
|
|
969
993
|
};
|
|
970
994
|
}
|
|
971
995
|
convertHeading(node, attrs = {}) {
|
|
972
|
-
const level = parseInt(node
|
|
996
|
+
const level = parseInt(attr(node, "text:outline-level") || "1") || 1;
|
|
973
997
|
// Check for bookmark
|
|
974
998
|
let id = null;
|
|
975
999
|
const bookmarkStart = node.query("text:bookmark-start");
|
|
976
1000
|
if (bookmarkStart) {
|
|
977
|
-
const refName = bookmarkStart
|
|
1001
|
+
const refName = attr(bookmarkStart, "text:name");
|
|
978
1002
|
if (refName && this.referenceableObjects[refName]) {
|
|
979
1003
|
id = this.referenceableObjects[refName].id;
|
|
980
1004
|
}
|
|
@@ -992,12 +1016,12 @@ export class OdtConvert {
|
|
|
992
1016
|
let insideCitationReferenceMark = false;
|
|
993
1017
|
let insideBibliographyReferenceMark = false;
|
|
994
1018
|
return node.children
|
|
995
|
-
.map(child => {
|
|
1019
|
+
.map((child) => {
|
|
996
1020
|
if (insideBibliographyReferenceMark) {
|
|
997
1021
|
// Swallow all rendered bibliography content until the
|
|
998
1022
|
// closing mark — we have our own bibliography system.
|
|
999
1023
|
if (child.tagName === "text:reference-mark-end") {
|
|
1000
|
-
const name = child
|
|
1024
|
+
const name = attr(child, "text:name");
|
|
1001
1025
|
if (name && isOdtBibliographyReferenceMark(name)) {
|
|
1002
1026
|
insideBibliographyReferenceMark = false;
|
|
1003
1027
|
}
|
|
@@ -1007,7 +1031,7 @@ export class OdtConvert {
|
|
|
1007
1031
|
if (insideCitationReferenceMark) {
|
|
1008
1032
|
if (child.tagName === "text:reference-mark-end") {
|
|
1009
1033
|
// Process citation when we hit the end mark
|
|
1010
|
-
const name = child
|
|
1034
|
+
const name = attr(child, "text:name");
|
|
1011
1035
|
if (name && isOdtCitationMark(name)) {
|
|
1012
1036
|
insideCitationReferenceMark = false;
|
|
1013
1037
|
return this.convertCitation(name, currentStyleMarks);
|
|
@@ -1017,7 +1041,7 @@ export class OdtConvert {
|
|
|
1017
1041
|
}
|
|
1018
1042
|
switch (child.tagName) {
|
|
1019
1043
|
case "text:change-start": {
|
|
1020
|
-
const changeId = child
|
|
1044
|
+
const changeId = attr(child, "text:change-id");
|
|
1021
1045
|
const track = this.tracks[changeId];
|
|
1022
1046
|
if (track) {
|
|
1023
1047
|
const trackMark = {
|
|
@@ -1036,10 +1060,10 @@ export class OdtConvert {
|
|
|
1036
1060
|
return null;
|
|
1037
1061
|
}
|
|
1038
1062
|
case "text:change-end": {
|
|
1039
|
-
const changeId = child
|
|
1063
|
+
const changeId = attr(child, "text:change-id");
|
|
1040
1064
|
const track = this.tracks[changeId];
|
|
1041
1065
|
if (track) {
|
|
1042
|
-
this.currentTracks = this.currentTracks.filter(mark => mark.type !== track.type);
|
|
1066
|
+
this.currentTracks = this.currentTracks.filter((mark) => mark.type !== track.type);
|
|
1043
1067
|
}
|
|
1044
1068
|
return null;
|
|
1045
1069
|
}
|
|
@@ -1059,7 +1083,7 @@ export class OdtConvert {
|
|
|
1059
1083
|
case "office:annotation-end":
|
|
1060
1084
|
return this.convertAnnotationEnd(child);
|
|
1061
1085
|
case "text:reference-mark-start": {
|
|
1062
|
-
const name = child
|
|
1086
|
+
const name = attr(child, "text:name");
|
|
1063
1087
|
if (name && isOdtCitationMark(name)) {
|
|
1064
1088
|
insideCitationReferenceMark = true;
|
|
1065
1089
|
}
|
|
@@ -1081,13 +1105,13 @@ export class OdtConvert {
|
|
|
1081
1105
|
console.warn(`Unsupported inline node: ${child.tagName}`);
|
|
1082
1106
|
}
|
|
1083
1107
|
})
|
|
1084
|
-
.filter(node => node)
|
|
1108
|
+
.filter((node) => node)
|
|
1085
1109
|
.flat();
|
|
1086
1110
|
}
|
|
1087
1111
|
getCurrentMarks(currentStyleMarks = []) {
|
|
1088
1112
|
const commentMarks = [];
|
|
1089
1113
|
// Add comment marks for any active comment IDs
|
|
1090
|
-
this.currentCommentIds.forEach(commentId => {
|
|
1114
|
+
this.currentCommentIds.forEach((commentId) => {
|
|
1091
1115
|
commentMarks.push({
|
|
1092
1116
|
type: "comment",
|
|
1093
1117
|
attrs: {
|
|
@@ -1109,7 +1133,7 @@ export class OdtConvert {
|
|
|
1109
1133
|
return textNode;
|
|
1110
1134
|
}
|
|
1111
1135
|
convertSpan(node, currentStyleMarks) {
|
|
1112
|
-
const styleName = node
|
|
1136
|
+
const styleName = attr(node, "text:style-name");
|
|
1113
1137
|
const style = this.styles[styleName];
|
|
1114
1138
|
if (style?.textProperties?.bold) {
|
|
1115
1139
|
currentStyleMarks = [...currentStyleMarks, { type: "strong" }];
|
|
@@ -1145,7 +1169,7 @@ export class OdtConvert {
|
|
|
1145
1169
|
"droid sans mono",
|
|
1146
1170
|
"monospace"
|
|
1147
1171
|
];
|
|
1148
|
-
const isMonospace = monospacePatterns.some(pattern => fontFamily.includes(pattern));
|
|
1172
|
+
const isMonospace = monospacePatterns.some((pattern) => fontFamily.includes(pattern));
|
|
1149
1173
|
if (isMonospace) {
|
|
1150
1174
|
currentStyleMarks = [...currentStyleMarks, { type: "code" }];
|
|
1151
1175
|
}
|
|
@@ -1165,13 +1189,13 @@ export class OdtConvert {
|
|
|
1165
1189
|
// Check if this is a citation-only footnote
|
|
1166
1190
|
const referenceMarkStart = firstParagraph.query("text:reference-mark-start");
|
|
1167
1191
|
const referenceMarkEnd = firstParagraph.query("text:reference-mark-end");
|
|
1168
|
-
const markName = referenceMarkStart
|
|
1192
|
+
const markName = attr(referenceMarkStart, "text:name");
|
|
1169
1193
|
if (referenceMarkStart &&
|
|
1170
1194
|
referenceMarkEnd &&
|
|
1171
1195
|
markName &&
|
|
1172
1196
|
isOdtCitationMark(markName) &&
|
|
1173
1197
|
// Check that there's no content outside the reference marks
|
|
1174
|
-
firstParagraph.children.every(child => child.tagName === "text:reference-mark-start" ||
|
|
1198
|
+
firstParagraph.children.every((child) => child.tagName === "text:reference-mark-start" ||
|
|
1175
1199
|
child.tagName === "text:reference-mark-end" ||
|
|
1176
1200
|
(child.tagName === "text:span" &&
|
|
1177
1201
|
child.previousSibling?.tagName ===
|
|
@@ -1207,7 +1231,7 @@ export class OdtConvert {
|
|
|
1207
1231
|
return null;
|
|
1208
1232
|
}
|
|
1209
1233
|
convertList(node, attrs) {
|
|
1210
|
-
const listStyle = node
|
|
1234
|
+
const listStyle = attr(node, "text:style-name");
|
|
1211
1235
|
const isOrdered = this.isOrderedList(listStyle);
|
|
1212
1236
|
attrs = Object.assign({
|
|
1213
1237
|
id: randomListId()
|
|
@@ -1218,14 +1242,14 @@ export class OdtConvert {
|
|
|
1218
1242
|
return {
|
|
1219
1243
|
type: isOrdered ? "ordered_list" : "bullet_list",
|
|
1220
1244
|
attrs,
|
|
1221
|
-
content: node.queryAll("text:list-item").map(item => ({
|
|
1245
|
+
content: node.queryAll("text:list-item").map((item) => ({
|
|
1222
1246
|
type: "list_item",
|
|
1223
1247
|
content: this.convertContainer(item)
|
|
1224
1248
|
}))
|
|
1225
1249
|
};
|
|
1226
1250
|
}
|
|
1227
1251
|
convertAnnotationStart(node) {
|
|
1228
|
-
const commentId = (node
|
|
1252
|
+
const commentId = (attr(node, "office:name") || "")
|
|
1229
1253
|
.replace(/\D/g, "")
|
|
1230
1254
|
.slice(0, 9);
|
|
1231
1255
|
if (commentId && this.comments[commentId]) {
|
|
@@ -1234,7 +1258,7 @@ export class OdtConvert {
|
|
|
1234
1258
|
return null;
|
|
1235
1259
|
}
|
|
1236
1260
|
convertAnnotationEnd(node) {
|
|
1237
|
-
const commentId = (node
|
|
1261
|
+
const commentId = (attr(node, "office:name") || "")
|
|
1238
1262
|
.replace(/\D/g, "")
|
|
1239
1263
|
.slice(0, 9);
|
|
1240
1264
|
if (commentId) {
|
|
@@ -1246,7 +1270,7 @@ export class OdtConvert {
|
|
|
1246
1270
|
return null;
|
|
1247
1271
|
}
|
|
1248
1272
|
convertHeadingReference(node) {
|
|
1249
|
-
const refName = node
|
|
1273
|
+
const refName = attr(node, "text:ref-name");
|
|
1250
1274
|
if (!refName || !this.referenceableObjects[refName]) {
|
|
1251
1275
|
return null;
|
|
1252
1276
|
}
|
|
@@ -1263,7 +1287,7 @@ export class OdtConvert {
|
|
|
1263
1287
|
};
|
|
1264
1288
|
}
|
|
1265
1289
|
convertFigureReference(node) {
|
|
1266
|
-
const refName = node
|
|
1290
|
+
const refName = attr(node, "text:ref-name");
|
|
1267
1291
|
if (!refName || !this.referenceableObjects[refName]) {
|
|
1268
1292
|
return null;
|
|
1269
1293
|
}
|
|
@@ -1299,13 +1323,13 @@ export class OdtConvert {
|
|
|
1299
1323
|
if (!frame) {
|
|
1300
1324
|
return null;
|
|
1301
1325
|
}
|
|
1302
|
-
const href = imageElement
|
|
1326
|
+
const href = attr(imageElement, "xlink:href");
|
|
1303
1327
|
if (!href || !href.startsWith("Pictures/")) {
|
|
1304
1328
|
return null;
|
|
1305
1329
|
}
|
|
1306
1330
|
const imageId = Math.floor(Math.random() * 1000000);
|
|
1307
|
-
const width = this.convertLength(node
|
|
1308
|
-
const height = this.convertLength(node
|
|
1331
|
+
const width = this.convertLength(attr(node, "svg:width"));
|
|
1332
|
+
const height = this.convertLength(attr(node, "svg:height"));
|
|
1309
1333
|
const title = href.split("/").pop();
|
|
1310
1334
|
this.images[imageId] = {
|
|
1311
1335
|
id: imageId,
|
|
@@ -1327,7 +1351,7 @@ export class OdtConvert {
|
|
|
1327
1351
|
const sequence = frame.query("text:sequence");
|
|
1328
1352
|
let figureId = null;
|
|
1329
1353
|
if (sequence) {
|
|
1330
|
-
const refName = sequence
|
|
1354
|
+
const refName = attr(sequence, "text:ref-name");
|
|
1331
1355
|
if (refName && this.referenceableObjects[refName]) {
|
|
1332
1356
|
figureId = this.referenceableObjects[refName].id;
|
|
1333
1357
|
}
|
|
@@ -1411,13 +1435,13 @@ export class OdtConvert {
|
|
|
1411
1435
|
}
|
|
1412
1436
|
}
|
|
1413
1437
|
convertTable(node, attrs) {
|
|
1414
|
-
const width = node
|
|
1415
|
-
const styleName = node
|
|
1438
|
+
const width = attr(node, "style:rel-width")?.replace("%", "") || "100";
|
|
1439
|
+
const styleName = attr(node, "table:style-name");
|
|
1416
1440
|
const style = this.styles[styleName];
|
|
1417
1441
|
const aligned = style?.tableProperties.align || "center";
|
|
1418
1442
|
attrs = Object.assign({
|
|
1419
1443
|
id: randomTableId(),
|
|
1420
|
-
track: parseTracks(node
|
|
1444
|
+
track: parseTracks(attr(node, "text:change-id")),
|
|
1421
1445
|
width,
|
|
1422
1446
|
aligned,
|
|
1423
1447
|
layout: "fixed",
|
|
@@ -1433,7 +1457,7 @@ export class OdtConvert {
|
|
|
1433
1457
|
type: "table_body",
|
|
1434
1458
|
content: node
|
|
1435
1459
|
.queryAll("table:table-row")
|
|
1436
|
-
.map(row => this.convertTableRow(row))
|
|
1460
|
+
.map((row) => this.convertTableRow(row))
|
|
1437
1461
|
}
|
|
1438
1462
|
]
|
|
1439
1463
|
};
|
|
@@ -1443,7 +1467,7 @@ export class OdtConvert {
|
|
|
1443
1467
|
type: "table_row",
|
|
1444
1468
|
content: row
|
|
1445
1469
|
.queryAll(["table:table-cell", "table:covered-table-cell"])
|
|
1446
|
-
.map(cell => this.convertTableCell(cell))
|
|
1470
|
+
.map((cell) => this.convertTableCell(cell))
|
|
1447
1471
|
};
|
|
1448
1472
|
}
|
|
1449
1473
|
convertTableCell(node) {
|
|
@@ -1453,16 +1477,16 @@ export class OdtConvert {
|
|
|
1453
1477
|
return {
|
|
1454
1478
|
type: "table_cell",
|
|
1455
1479
|
attrs: {
|
|
1456
|
-
colspan: parseInt(node
|
|
1457
|
-
rowspan: parseInt(node
|
|
1480
|
+
colspan: parseInt(attr(node, "table:number-columns-spanned")) || 1,
|
|
1481
|
+
rowspan: parseInt(attr(node, "table:number-rows-spanned")) ||
|
|
1458
1482
|
1,
|
|
1459
|
-
track: parseTracks(node
|
|
1483
|
+
track: parseTracks(attr(node, "text:change-id"))
|
|
1460
1484
|
},
|
|
1461
1485
|
content: this.convertContainer(node)
|
|
1462
1486
|
};
|
|
1463
1487
|
}
|
|
1464
1488
|
convertLink(node, currentStyleMarks) {
|
|
1465
|
-
const href = node
|
|
1489
|
+
const href = attr(node, "xlink:href");
|
|
1466
1490
|
currentStyleMarks = currentStyleMarks.concat([
|
|
1467
1491
|
{ type: "link", attrs: { href } }
|
|
1468
1492
|
]);
|
|
@@ -1475,14 +1499,14 @@ export class OdtConvert {
|
|
|
1475
1499
|
// 3. Default to "en-US"
|
|
1476
1500
|
// Check content language
|
|
1477
1501
|
if (this.contentDoc) {
|
|
1478
|
-
const langAttr = this.contentDoc
|
|
1479
|
-
this.contentDoc
|
|
1502
|
+
const langAttr = attr(this.contentDoc, "office:default-language") ||
|
|
1503
|
+
attr(this.contentDoc, "dc:language");
|
|
1480
1504
|
if (langAttr) {
|
|
1481
1505
|
return langAttr;
|
|
1482
1506
|
}
|
|
1483
1507
|
const firstParagraph = this.contentDoc.query("text:p");
|
|
1484
1508
|
if (firstParagraph) {
|
|
1485
|
-
const paraLang = firstParagraph
|
|
1509
|
+
const paraLang = attr(firstParagraph, "xml:lang");
|
|
1486
1510
|
if (paraLang) {
|
|
1487
1511
|
return paraLang;
|
|
1488
1512
|
}
|
|
@@ -1492,8 +1516,8 @@ export class OdtConvert {
|
|
|
1492
1516
|
if (this.stylesDoc) {
|
|
1493
1517
|
const defaultStyle = this.stylesDoc.query("style:default-style");
|
|
1494
1518
|
if (defaultStyle) {
|
|
1495
|
-
const styleLang = defaultStyle
|
|
1496
|
-
defaultStyle
|
|
1519
|
+
const styleLang = attr(defaultStyle, "fo:language") ||
|
|
1520
|
+
attr(defaultStyle, "style:language-complex");
|
|
1497
1521
|
if (styleLang) {
|
|
1498
1522
|
return styleLang;
|
|
1499
1523
|
}
|