@fiduswriter/document 0.1.0-alpha.4 → 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/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 +4 -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
|
@@ -2,19 +2,34 @@ import {BibLatexExporter} from "biblatex-csl-converter"
|
|
|
2
2
|
import download from "downloadjs"
|
|
3
3
|
|
|
4
4
|
import {shortFileTitle} from "fwtoolkit"
|
|
5
|
+
import type {BibDB, ExportDoc, FidusNode, ImageDB} from "../../types.js"
|
|
5
6
|
import {fixTables, removeHidden} from "../tools/doc_content.js"
|
|
6
7
|
import {createSlug} from "../tools/file.js"
|
|
7
8
|
import {ZipFileCreator} from "../tools/zip.js"
|
|
8
9
|
import {LatexExporterConvert} from "./convert.js"
|
|
9
10
|
import {readMe} from "./readme.js"
|
|
11
|
+
|
|
10
12
|
/*
|
|
11
13
|
Exporter to LaTeX
|
|
12
14
|
*/
|
|
13
15
|
|
|
14
16
|
export class LatexExporter {
|
|
15
|
-
|
|
17
|
+
doc: ExportDoc
|
|
18
|
+
docTitle: string
|
|
19
|
+
bibDB: BibDB
|
|
20
|
+
imageDB: ImageDB
|
|
21
|
+
updated: any
|
|
22
|
+
|
|
23
|
+
docContent: any
|
|
24
|
+
zipFileName: string | false
|
|
25
|
+
textFiles: Array<{filename: string; contents: string}>
|
|
26
|
+
httpFiles: Array<{filename: string; url: string}>
|
|
27
|
+
|
|
28
|
+
conversion: any
|
|
29
|
+
|
|
30
|
+
constructor(doc: ExportDoc, bibDB: BibDB, imageDB: ImageDB, updated: any) {
|
|
16
31
|
this.doc = doc
|
|
17
|
-
this.docTitle = shortFileTitle(this.doc.title, this.doc.path)
|
|
32
|
+
this.docTitle = shortFileTitle(this.doc.title, this.doc.path || "")
|
|
18
33
|
this.bibDB = bibDB
|
|
19
34
|
this.imageDB = imageDB
|
|
20
35
|
this.updated = updated
|
|
@@ -25,16 +40,16 @@ export class LatexExporter {
|
|
|
25
40
|
this.httpFiles = []
|
|
26
41
|
}
|
|
27
42
|
|
|
28
|
-
init() {
|
|
43
|
+
init(): Promise<void> {
|
|
29
44
|
this.zipFileName = `${createSlug(this.docTitle)}.latex.zip`
|
|
30
|
-
this.docContent = fixTables(removeHidden(this.doc.content))
|
|
31
|
-
|
|
45
|
+
this.docContent = fixTables(removeHidden(this.doc.content) as FidusNode)
|
|
46
|
+
const converter = new LatexExporterConvert(
|
|
32
47
|
this,
|
|
33
48
|
this.imageDB,
|
|
34
49
|
this.bibDB,
|
|
35
50
|
this.doc.settings
|
|
36
51
|
)
|
|
37
|
-
this.conversion =
|
|
52
|
+
this.conversion = converter.init(this.docContent)
|
|
38
53
|
if (Object.keys(this.conversion.usedBibDB).length > 0) {
|
|
39
54
|
const bibExport = new BibLatexExporter(this.conversion.usedBibDB)
|
|
40
55
|
this.textFiles.push({
|
|
@@ -47,16 +62,16 @@ export class LatexExporter {
|
|
|
47
62
|
contents: this.conversion.latex
|
|
48
63
|
})
|
|
49
64
|
this.textFiles.push({filename: "README.txt", contents: readMe})
|
|
50
|
-
this.conversion.imageIds.forEach(id => {
|
|
65
|
+
this.conversion.imageIds.forEach((id: string) => {
|
|
51
66
|
this.httpFiles.push({
|
|
52
|
-
filename: this.imageDB.db[id].image.split("/").pop()
|
|
53
|
-
url: this.imageDB.db[id].image
|
|
67
|
+
filename: this.imageDB.db[id].image!.toString().split("/").pop()!,
|
|
68
|
+
url: this.imageDB.db[id].image as string
|
|
54
69
|
})
|
|
55
70
|
})
|
|
56
71
|
return this.createZip()
|
|
57
72
|
}
|
|
58
73
|
|
|
59
|
-
createZip() {
|
|
74
|
+
createZip(): Promise<void> {
|
|
60
75
|
const zipper = new ZipFileCreator(
|
|
61
76
|
this.textFiles,
|
|
62
77
|
this.httpFiles,
|
|
@@ -68,7 +83,7 @@ export class LatexExporter {
|
|
|
68
83
|
return zipper.init().then(blob => this.download(blob))
|
|
69
84
|
}
|
|
70
85
|
|
|
71
|
-
download(blob) {
|
|
72
|
-
return download(blob, this.zipFileName, "application/zip")
|
|
86
|
+
download(blob: Blob): void {
|
|
87
|
+
return download(blob, this.zipFileName as string, "application/zip")
|
|
73
88
|
}
|
|
74
89
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const readMe = `We strongly recommend using LuaTeX instead of PDFTeX or
|
|
1
|
+
export const readMe = `We strongly recommend using LuaTeX instead of PDFTeX or XeTeX for document
|
|
2
2
|
compilation.
|
|
3
3
|
|
|
4
4
|
In order to compile the LaTeX file, you need to use at least TeXLive 2016. If
|
|
@@ -18,5 +18,5 @@ If there are citations, continue with these commands:
|
|
|
18
18
|
> biber document
|
|
19
19
|
> lualatex document
|
|
20
20
|
|
|
21
|
-
Look at the output messages to determine whether you need to run
|
|
21
|
+
Look at the output messages to determine whether you need to run lualatex again.
|
|
22
22
|
`
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import {gettext, longFilePath} from "fwtoolkit"
|
|
2
|
+
|
|
3
|
+
import {ShrinkFidus} from "./shrink.js"
|
|
4
|
+
|
|
5
|
+
import type {
|
|
6
|
+
BibDB,
|
|
7
|
+
E2EEOptions,
|
|
8
|
+
FidusNode,
|
|
9
|
+
ImageDB,
|
|
10
|
+
ImportDocument,
|
|
11
|
+
SaveCopyE2EE,
|
|
12
|
+
User
|
|
13
|
+
} from "../../types.js"
|
|
14
|
+
|
|
15
|
+
interface SaveCopyOptions {
|
|
16
|
+
importId?: string | number | null
|
|
17
|
+
e2eeOptions?: E2EEOptions | null
|
|
18
|
+
e2ee?: SaveCopyE2EE
|
|
19
|
+
importDocument: ImportDocument
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export class SaveCopy {
|
|
23
|
+
doc: Record<string, unknown>
|
|
24
|
+
bibDB: BibDB
|
|
25
|
+
imageDB: ImageDB
|
|
26
|
+
newUser: User
|
|
27
|
+
importId: string | number | null
|
|
28
|
+
e2eeOptions: E2EEOptions | null
|
|
29
|
+
e2ee?: SaveCopyE2EE
|
|
30
|
+
importDocument: ImportDocument
|
|
31
|
+
|
|
32
|
+
constructor(
|
|
33
|
+
doc: Record<string, unknown>,
|
|
34
|
+
bibDB: BibDB,
|
|
35
|
+
imageDB: ImageDB,
|
|
36
|
+
newUser: User,
|
|
37
|
+
options: SaveCopyOptions
|
|
38
|
+
) {
|
|
39
|
+
this.doc = doc
|
|
40
|
+
this.bibDB = bibDB
|
|
41
|
+
this.imageDB = imageDB
|
|
42
|
+
this.newUser = newUser
|
|
43
|
+
this.importId = options.importId ?? null
|
|
44
|
+
this.e2eeOptions = options.e2eeOptions ?? null
|
|
45
|
+
this.e2ee = options.e2ee
|
|
46
|
+
this.importDocument = options.importDocument
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
private _requestedPath(): string {
|
|
50
|
+
return longFilePath(
|
|
51
|
+
(this.doc.title as string) || "copy",
|
|
52
|
+
(this.doc.path as string) || "",
|
|
53
|
+
`${gettext("Copy of")} `
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
init(): Promise<{doc: Record<string, unknown>; docInfo: Record<string, unknown>}> {
|
|
58
|
+
let shrinkerPromise: Promise<{
|
|
59
|
+
doc: Record<string, unknown>
|
|
60
|
+
shrunkImageDB: Record<string, Record<string, unknown>>
|
|
61
|
+
shrunkBibDB: Record<string, Record<string, unknown>>
|
|
62
|
+
httpIncludes: Array<{url: string; filename: string}>
|
|
63
|
+
}>
|
|
64
|
+
if (this.doc.e2ee) {
|
|
65
|
+
shrinkerPromise = this._decryptDocument().then(decryptedDoc => {
|
|
66
|
+
const shrinker = new ShrinkFidus(
|
|
67
|
+
decryptedDoc as any,
|
|
68
|
+
this.imageDB,
|
|
69
|
+
this.bibDB
|
|
70
|
+
)
|
|
71
|
+
return shrinker.init()
|
|
72
|
+
})
|
|
73
|
+
} else {
|
|
74
|
+
const shrinker = new ShrinkFidus(this.doc as any, this.imageDB, this.bibDB)
|
|
75
|
+
shrinkerPromise = shrinker.init()
|
|
76
|
+
}
|
|
77
|
+
return shrinkerPromise
|
|
78
|
+
.then(({doc, shrunkImageDB, shrunkBibDB, httpIncludes}) => {
|
|
79
|
+
let targetE2EEPromise: Promise<{
|
|
80
|
+
doc: Record<string, unknown>
|
|
81
|
+
e2eeOptions: E2EEOptions | null
|
|
82
|
+
}>
|
|
83
|
+
if (this.e2eeOptions?.targetE2EE) {
|
|
84
|
+
targetE2EEPromise = this._setupTargetE2EE(doc, shrunkImageDB)
|
|
85
|
+
} else {
|
|
86
|
+
targetE2EEPromise = Promise.resolve({
|
|
87
|
+
doc,
|
|
88
|
+
e2eeOptions: null
|
|
89
|
+
})
|
|
90
|
+
}
|
|
91
|
+
return targetE2EEPromise.then(
|
|
92
|
+
({doc: encryptedDoc, e2eeOptions}) => {
|
|
93
|
+
const importerE2EEOptions = e2eeOptions || {}
|
|
94
|
+
if (this.e2eeOptions?.sourceKey) {
|
|
95
|
+
;(importerE2EEOptions as E2EEOptions).sourceKey =
|
|
96
|
+
this.e2eeOptions.sourceKey
|
|
97
|
+
}
|
|
98
|
+
return this.importDocument(
|
|
99
|
+
encryptedDoc,
|
|
100
|
+
{db: shrunkBibDB as any},
|
|
101
|
+
{db: shrunkImageDB as any},
|
|
102
|
+
httpIncludes,
|
|
103
|
+
{
|
|
104
|
+
user: this.newUser,
|
|
105
|
+
importId: this.importId,
|
|
106
|
+
requestedPath: this._requestedPath(),
|
|
107
|
+
e2eeOptions: importerE2EEOptions
|
|
108
|
+
}
|
|
109
|
+
)
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
})
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
async _decryptDocument(): Promise<Record<string, unknown>> {
|
|
116
|
+
const key = this.e2eeOptions?.sourceKey
|
|
117
|
+
if (!key) {
|
|
118
|
+
throw new Error("Missing source E2EE key for decryption")
|
|
119
|
+
}
|
|
120
|
+
if (!this.e2ee) {
|
|
121
|
+
throw new Error("Missing E2EE helper")
|
|
122
|
+
}
|
|
123
|
+
const decryptedDoc = Object.assign({}, this.doc)
|
|
124
|
+
if (typeof decryptedDoc.content === "string") {
|
|
125
|
+
decryptedDoc.content = (await this.e2ee.decryptObject(
|
|
126
|
+
decryptedDoc.content,
|
|
127
|
+
key
|
|
128
|
+
)) as FidusNode
|
|
129
|
+
}
|
|
130
|
+
if (typeof decryptedDoc.comments === "string") {
|
|
131
|
+
decryptedDoc.comments = await this.e2ee.decryptObject(
|
|
132
|
+
decryptedDoc.comments,
|
|
133
|
+
key
|
|
134
|
+
)
|
|
135
|
+
}
|
|
136
|
+
if (typeof decryptedDoc.bibliography === "string") {
|
|
137
|
+
decryptedDoc.bibliography = await this.e2ee.decryptObject(
|
|
138
|
+
decryptedDoc.bibliography,
|
|
139
|
+
key
|
|
140
|
+
)
|
|
141
|
+
}
|
|
142
|
+
if (this.bibDB && typeof this.bibDB.db === "string") {
|
|
143
|
+
this.bibDB.db = decryptedDoc.bibliography as any
|
|
144
|
+
}
|
|
145
|
+
if (this.imageDB && this.imageDB.db) {
|
|
146
|
+
await Promise.all(
|
|
147
|
+
Object.values(this.imageDB.db).map(async imageEntry => {
|
|
148
|
+
const copyright = imageEntry.copyright as
|
|
149
|
+
| string
|
|
150
|
+
| Record<string, unknown>
|
|
151
|
+
| undefined
|
|
152
|
+
if (
|
|
153
|
+
typeof copyright === "string" &&
|
|
154
|
+
copyright.length > 0
|
|
155
|
+
) {
|
|
156
|
+
try {
|
|
157
|
+
imageEntry.copyright =
|
|
158
|
+
(await this.e2ee!.decryptObject(
|
|
159
|
+
copyright,
|
|
160
|
+
key
|
|
161
|
+
)) as Record<string, any>
|
|
162
|
+
} catch (_e) {
|
|
163
|
+
// If decryption fails, leave as-is
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
return decryptedDoc
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
async _setupTargetE2EE(
|
|
173
|
+
doc: Record<string, unknown>,
|
|
174
|
+
shrunkImageDB: Record<string, Record<string, unknown>>
|
|
175
|
+
): Promise<{doc: Record<string, unknown>; e2eeOptions: E2EEOptions}> {
|
|
176
|
+
const password = (this.e2eeOptions as E2EEOptions & {targetPassword?: string})
|
|
177
|
+
.targetPassword
|
|
178
|
+
if (!password) {
|
|
179
|
+
throw new Error("Missing target E2EE password")
|
|
180
|
+
}
|
|
181
|
+
if (!this.e2ee) {
|
|
182
|
+
throw new Error("Missing E2EE helper")
|
|
183
|
+
}
|
|
184
|
+
const salt = this.e2ee.generateSalt()
|
|
185
|
+
const saltBase64 = btoa(String.fromCharCode(...salt))
|
|
186
|
+
const iterations = 600000
|
|
187
|
+
const key = await this.e2ee.deriveKey(password, salt, iterations)
|
|
188
|
+
|
|
189
|
+
const plainDoc = Object.assign({}, doc)
|
|
190
|
+
|
|
191
|
+
if (shrunkImageDB) {
|
|
192
|
+
await Promise.all(
|
|
193
|
+
Object.values(shrunkImageDB).map(async imageEntry => {
|
|
194
|
+
if (imageEntry.file) {
|
|
195
|
+
try {
|
|
196
|
+
const encryptedFile = await this.e2ee!.encryptImage(
|
|
197
|
+
imageEntry.file as Blob,
|
|
198
|
+
key
|
|
199
|
+
)
|
|
200
|
+
imageEntry.file = encryptedFile
|
|
201
|
+
imageEntry.original_file_type = imageEntry.file_type
|
|
202
|
+
imageEntry.file_type = "application/octet-stream"
|
|
203
|
+
} catch (_e) {
|
|
204
|
+
// If encryption fails, keep original file
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (imageEntry.copyright) {
|
|
208
|
+
try {
|
|
209
|
+
imageEntry.copyright = await this.e2ee!.encryptObject(
|
|
210
|
+
imageEntry.copyright,
|
|
211
|
+
key
|
|
212
|
+
)
|
|
213
|
+
} catch (_e) {
|
|
214
|
+
// If encryption fails, keep original
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
})
|
|
218
|
+
)
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return {
|
|
222
|
+
doc: plainDoc,
|
|
223
|
+
e2eeOptions: {
|
|
224
|
+
enabled: true,
|
|
225
|
+
key,
|
|
226
|
+
salt: saltBase64,
|
|
227
|
+
iterations
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import download from "downloadjs"
|
|
2
|
+
import {shortFileTitle} from "fwtoolkit"
|
|
3
|
+
|
|
4
|
+
import {ShrinkFidus} from "./shrink.js"
|
|
5
|
+
import {createSlug} from "../tools/file.js"
|
|
6
|
+
import {ZipFidus} from "./zip.js"
|
|
7
|
+
|
|
8
|
+
import type {BibDB, ExportDoc, ImageDB, TemplateFiles} from "../../types.js"
|
|
9
|
+
|
|
10
|
+
export class ExportFidusFile {
|
|
11
|
+
doc: ExportDoc
|
|
12
|
+
bibDB: BibDB
|
|
13
|
+
imageDB: ImageDB
|
|
14
|
+
includeTemplate: boolean
|
|
15
|
+
token: string | boolean
|
|
16
|
+
getTemplateFiles?: (
|
|
17
|
+
docId: string | number,
|
|
18
|
+
token: string | boolean
|
|
19
|
+
) => Promise<TemplateFiles>
|
|
20
|
+
|
|
21
|
+
constructor(
|
|
22
|
+
doc: ExportDoc,
|
|
23
|
+
bibDB: BibDB,
|
|
24
|
+
imageDB: ImageDB,
|
|
25
|
+
includeTemplate = true,
|
|
26
|
+
token: string | boolean = false,
|
|
27
|
+
getTemplateFiles?: (
|
|
28
|
+
docId: string | number,
|
|
29
|
+
token: string | boolean
|
|
30
|
+
) => Promise<TemplateFiles>
|
|
31
|
+
) {
|
|
32
|
+
this.doc = doc
|
|
33
|
+
this.bibDB = bibDB
|
|
34
|
+
this.imageDB = imageDB
|
|
35
|
+
this.includeTemplate = includeTemplate
|
|
36
|
+
this.token = token
|
|
37
|
+
this.getTemplateFiles = getTemplateFiles
|
|
38
|
+
return this.init() as unknown as ExportFidusFile
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
init(): Promise<Blob> {
|
|
42
|
+
const shrinker = new ShrinkFidus(this.doc as any, this.imageDB, this.bibDB)
|
|
43
|
+
return shrinker
|
|
44
|
+
.init()
|
|
45
|
+
.then(({doc, shrunkImageDB, shrunkBibDB, httpIncludes}) => {
|
|
46
|
+
const zipper = new ZipFidus(
|
|
47
|
+
this.doc.id,
|
|
48
|
+
doc,
|
|
49
|
+
shrunkImageDB,
|
|
50
|
+
shrunkBibDB,
|
|
51
|
+
httpIncludes,
|
|
52
|
+
this.includeTemplate,
|
|
53
|
+
this.token,
|
|
54
|
+
this.getTemplateFiles
|
|
55
|
+
)
|
|
56
|
+
return zipper.init()
|
|
57
|
+
})
|
|
58
|
+
.then(blob => {
|
|
59
|
+
const title: string = shortFileTitle(this.doc.title, this.doc.path || "") || "untitled"
|
|
60
|
+
const filename = `${createSlug(title)}.fidus`
|
|
61
|
+
download(blob, filename, "application/fidus+zip")
|
|
62
|
+
return blob
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {ShrinkFidus} from "./shrink.js"
|
|
2
|
+
import {ZipFidus} from "./zip.js"
|
|
3
|
+
|
|
4
|
+
import type {
|
|
5
|
+
BibDB,
|
|
6
|
+
ExportDoc,
|
|
7
|
+
ImageDB,
|
|
8
|
+
TemplateFiles,
|
|
9
|
+
UploadRevision
|
|
10
|
+
} from "../../types.js"
|
|
11
|
+
|
|
12
|
+
export class SaveRevision {
|
|
13
|
+
doc: ExportDoc
|
|
14
|
+
imageDB: ImageDB
|
|
15
|
+
bibDB: BibDB
|
|
16
|
+
note: string
|
|
17
|
+
uploadRevision: UploadRevision
|
|
18
|
+
token: string | boolean
|
|
19
|
+
getTemplateFiles?: (
|
|
20
|
+
docId: string | number,
|
|
21
|
+
token: string | boolean
|
|
22
|
+
) => Promise<TemplateFiles>
|
|
23
|
+
onError?: (error: unknown) => void
|
|
24
|
+
|
|
25
|
+
constructor(
|
|
26
|
+
doc: ExportDoc,
|
|
27
|
+
imageDB: ImageDB,
|
|
28
|
+
bibDB: BibDB,
|
|
29
|
+
note: string,
|
|
30
|
+
uploadRevision: UploadRevision,
|
|
31
|
+
options: {
|
|
32
|
+
token?: string | boolean
|
|
33
|
+
getTemplateFiles?: (
|
|
34
|
+
docId: string | number,
|
|
35
|
+
token: string | boolean
|
|
36
|
+
) => Promise<TemplateFiles>
|
|
37
|
+
onError?: (error: unknown) => void
|
|
38
|
+
} = {}
|
|
39
|
+
) {
|
|
40
|
+
this.doc = doc
|
|
41
|
+
this.imageDB = imageDB
|
|
42
|
+
this.bibDB = bibDB
|
|
43
|
+
this.note = note
|
|
44
|
+
this.uploadRevision = uploadRevision
|
|
45
|
+
this.token = options.token ?? false
|
|
46
|
+
this.getTemplateFiles = options.getTemplateFiles
|
|
47
|
+
this.onError = options.onError
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
init(): Promise<unknown> {
|
|
51
|
+
const shrinker = new ShrinkFidus(this.doc as any, this.imageDB, this.bibDB)
|
|
52
|
+
|
|
53
|
+
return shrinker
|
|
54
|
+
.init()
|
|
55
|
+
.then(({doc, shrunkImageDB, shrunkBibDB, httpIncludes}) => {
|
|
56
|
+
const zipper = new ZipFidus(
|
|
57
|
+
this.doc.id,
|
|
58
|
+
doc,
|
|
59
|
+
shrunkImageDB,
|
|
60
|
+
shrunkBibDB,
|
|
61
|
+
httpIncludes,
|
|
62
|
+
true,
|
|
63
|
+
this.token,
|
|
64
|
+
this.getTemplateFiles
|
|
65
|
+
)
|
|
66
|
+
return zipper.init()
|
|
67
|
+
})
|
|
68
|
+
.then(blob => this.uploadRevision(blob, this.doc as any))
|
|
69
|
+
.catch(error => {
|
|
70
|
+
if (this.onError) {
|
|
71
|
+
this.onError(error)
|
|
72
|
+
}
|
|
73
|
+
throw error
|
|
74
|
+
})
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -1,18 +1,40 @@
|
|
|
1
|
-
import {addAlert} from "fwtoolkit"
|
|
1
|
+
import {addAlert, gettext} from "fwtoolkit"
|
|
2
|
+
|
|
2
3
|
import {docSchema} from "../../schema/document/index.js"
|
|
3
4
|
import {toMiniJSON} from "../../schema/mini_json.js"
|
|
5
|
+
import type {BibDB, FidusNode, ImageDB} from "../../types.js"
|
|
6
|
+
|
|
7
|
+
interface ShrinkDoc {
|
|
8
|
+
content: FidusNode
|
|
9
|
+
[key: string]: unknown
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface ShrinkResult {
|
|
13
|
+
doc: Record<string, unknown>
|
|
14
|
+
shrunkImageDB: Record<string, Record<string, unknown>>
|
|
15
|
+
shrunkBibDB: Record<string, Record<string, unknown>>
|
|
16
|
+
httpIncludes: Array<{url: string; filename: string}>
|
|
17
|
+
}
|
|
18
|
+
|
|
4
19
|
// Generate a copy of the fidus doc, imageDB and bibDB with all clutter removed.
|
|
5
20
|
export class ShrinkFidus {
|
|
21
|
+
doc: ShrinkDoc
|
|
22
|
+
imageDB: ImageDB
|
|
23
|
+
bibDB: BibDB
|
|
24
|
+
silent: boolean
|
|
25
|
+
imageList: (number | string)[]
|
|
26
|
+
citeList: (number | string)[]
|
|
27
|
+
|
|
6
28
|
/**
|
|
7
|
-
* @param
|
|
8
|
-
* @param
|
|
9
|
-
* @param
|
|
10
|
-
* @param
|
|
29
|
+
* @param doc - Full document object.
|
|
30
|
+
* @param imageDB - Image database wrapper, e.g. {db: {...}}.
|
|
31
|
+
* @param bibDB - Bibliography database wrapper, e.g. {db: {...}}.
|
|
32
|
+
* @param silent - When true, suppresses the
|
|
11
33
|
* "File export has been initiated" info alert. Pass true when
|
|
12
34
|
* shrinking multiple documents in a loop (e.g. one per book chapter)
|
|
13
35
|
* and the caller already shows its own progress notification.
|
|
14
36
|
*/
|
|
15
|
-
constructor(doc, imageDB, bibDB, silent = false) {
|
|
37
|
+
constructor(doc: ShrinkDoc, imageDB: ImageDB, bibDB: BibDB, silent = false) {
|
|
16
38
|
this.doc = doc
|
|
17
39
|
this.imageDB = imageDB
|
|
18
40
|
this.bibDB = bibDB
|
|
@@ -21,9 +43,9 @@ export class ShrinkFidus {
|
|
|
21
43
|
this.citeList = []
|
|
22
44
|
}
|
|
23
45
|
|
|
24
|
-
init() {
|
|
25
|
-
const shrunkImageDB = {},
|
|
26
|
-
httpIncludes = []
|
|
46
|
+
init(): Promise<ShrinkResult> {
|
|
47
|
+
const shrunkImageDB: Record<string, Record<string, unknown>> = {},
|
|
48
|
+
httpIncludes: Array<{url: string; filename: string}> = []
|
|
27
49
|
|
|
28
50
|
if (!this.silent) {
|
|
29
51
|
addAlert("info", gettext("File export has been initiated."))
|
|
@@ -34,22 +56,27 @@ export class ShrinkFidus {
|
|
|
34
56
|
this.imageList = [...new Set(this.imageList)] // unique values
|
|
35
57
|
|
|
36
58
|
this.imageList.forEach(itemId => {
|
|
37
|
-
|
|
59
|
+
const key = String(itemId)
|
|
60
|
+
shrunkImageDB[key] = Object.assign(
|
|
61
|
+
{},
|
|
62
|
+
this.imageDB.db[key]
|
|
63
|
+
) as Record<string, unknown>
|
|
38
64
|
// Remove parts that are connected to a particular user/server
|
|
39
|
-
delete shrunkImageDB[
|
|
40
|
-
delete shrunkImageDB[
|
|
41
|
-
delete shrunkImageDB[
|
|
42
|
-
delete shrunkImageDB[
|
|
43
|
-
const imageUrl = shrunkImageDB[
|
|
44
|
-
let filename
|
|
65
|
+
delete shrunkImageDB[key].cats
|
|
66
|
+
delete shrunkImageDB[key].thumbnail
|
|
67
|
+
delete shrunkImageDB[key].pk
|
|
68
|
+
delete shrunkImageDB[key].added
|
|
69
|
+
const imageUrl = shrunkImageDB[key].image as string
|
|
70
|
+
let filename: string
|
|
45
71
|
if (imageUrl.startsWith("blob:")) {
|
|
46
72
|
// Blob URL produced by decrypting an E2EE image client-side.
|
|
47
73
|
// The URL itself carries no useful file extension, so derive
|
|
48
74
|
// one from the image entry's MIME type instead. Without this
|
|
49
75
|
// the server rejects the upload because get_encrypted_file_path
|
|
50
76
|
// requires a recognised extension.
|
|
51
|
-
const mime =
|
|
52
|
-
|
|
77
|
+
const mime =
|
|
78
|
+
(shrunkImageDB[key].file_type as string) || "image/png"
|
|
79
|
+
const mimeExtMap: Record<string, string> = {
|
|
53
80
|
"image/png": "png",
|
|
54
81
|
"image/jpeg": "jpg",
|
|
55
82
|
"image/jpg": "jpg",
|
|
@@ -59,11 +86,11 @@ export class ShrinkFidus {
|
|
|
59
86
|
"image/avif": "avif"
|
|
60
87
|
}
|
|
61
88
|
const ext = mimeExtMap[mime] || "png"
|
|
62
|
-
filename = `images/${
|
|
89
|
+
filename = `images/${key}.${ext}`
|
|
63
90
|
} else {
|
|
64
91
|
filename = `images/${imageUrl.split("/").pop()}`
|
|
65
92
|
}
|
|
66
|
-
shrunkImageDB[
|
|
93
|
+
shrunkImageDB[key].image = filename
|
|
67
94
|
httpIncludes.push({
|
|
68
95
|
url: imageUrl,
|
|
69
96
|
filename
|
|
@@ -72,12 +99,16 @@ export class ShrinkFidus {
|
|
|
72
99
|
|
|
73
100
|
this.citeList = [...new Set(this.citeList)] // unique values
|
|
74
101
|
|
|
75
|
-
const shrunkBibDB = {}
|
|
102
|
+
const shrunkBibDB: Record<string, Record<string, unknown>> = {}
|
|
76
103
|
this.citeList.forEach(itemId => {
|
|
77
|
-
|
|
104
|
+
const key = String(itemId)
|
|
105
|
+
shrunkBibDB[key] = Object.assign(
|
|
106
|
+
{},
|
|
107
|
+
this.bibDB.db[key]
|
|
108
|
+
) as Record<string, unknown>
|
|
78
109
|
// Remove the cats, as it is only a list of IDs for one
|
|
79
110
|
// particular user/server.
|
|
80
|
-
delete shrunkBibDB[
|
|
111
|
+
delete shrunkBibDB[key].cats
|
|
81
112
|
})
|
|
82
113
|
|
|
83
114
|
const docCopy = Object.assign({}, this.doc)
|
|
@@ -93,7 +124,9 @@ export class ShrinkFidus {
|
|
|
93
124
|
delete docCopy.updated
|
|
94
125
|
delete docCopy.revisions
|
|
95
126
|
|
|
96
|
-
docCopy.content = toMiniJSON(
|
|
127
|
+
docCopy.content = toMiniJSON(
|
|
128
|
+
docSchema.nodeFromJSON(docCopy.content as unknown as Record<string, unknown>)
|
|
129
|
+
) as unknown as FidusNode
|
|
97
130
|
|
|
98
131
|
return new Promise(resolve =>
|
|
99
132
|
resolve({
|
|
@@ -105,21 +138,23 @@ export class ShrinkFidus {
|
|
|
105
138
|
)
|
|
106
139
|
}
|
|
107
140
|
|
|
108
|
-
walkTree(node) {
|
|
141
|
+
walkTree(node: FidusNode): void {
|
|
109
142
|
switch (node.type) {
|
|
110
143
|
case "citation":
|
|
111
144
|
this.citeList = this.citeList.concat(
|
|
112
|
-
node.attrs
|
|
145
|
+
(node.attrs?.references as Array<{id: number | string}>).map(
|
|
146
|
+
ref => ref.id
|
|
147
|
+
)
|
|
113
148
|
)
|
|
114
149
|
break
|
|
115
150
|
case "image":
|
|
116
|
-
if (node.attrs.image !== false) {
|
|
117
|
-
this.imageList.push(node.attrs.image)
|
|
151
|
+
if (node.attrs && node.attrs.image !== false) {
|
|
152
|
+
this.imageList.push(node.attrs.image as number | string)
|
|
118
153
|
}
|
|
119
154
|
break
|
|
120
155
|
case "footnote":
|
|
121
156
|
if (node.attrs?.footnote) {
|
|
122
|
-
node.attrs.footnote.forEach(childNode =>
|
|
157
|
+
;(node.attrs.footnote as FidusNode[]).forEach(childNode =>
|
|
123
158
|
this.walkTree(childNode)
|
|
124
159
|
)
|
|
125
160
|
}
|