@fiduswriter/books-document 0.1.1

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.
Files changed (125) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +24 -0
  3. package/dist/exporter/bits/index.d.ts +42 -0
  4. package/dist/exporter/bits/index.d.ts.map +1 -0
  5. package/dist/exporter/bits/index.js +98 -0
  6. package/dist/exporter/bits/index.js.map +1 -0
  7. package/dist/exporter/bits/templates.d.ts +7 -0
  8. package/dist/exporter/bits/templates.d.ts.map +1 -0
  9. package/dist/exporter/bits/templates.js +78 -0
  10. package/dist/exporter/bits/templates.js.map +1 -0
  11. package/dist/exporter/docx/index.d.ts +27 -0
  12. package/dist/exporter/docx/index.d.ts.map +1 -0
  13. package/dist/exporter/docx/index.js +129 -0
  14. package/dist/exporter/docx/index.js.map +1 -0
  15. package/dist/exporter/docx/render.d.ts +14 -0
  16. package/dist/exporter/docx/render.d.ts.map +1 -0
  17. package/dist/exporter/docx/render.js +116 -0
  18. package/dist/exporter/docx/render.js.map +1 -0
  19. package/dist/exporter/epub/index.d.ts +65 -0
  20. package/dist/exporter/epub/index.d.ts.map +1 -0
  21. package/dist/exporter/epub/index.js +268 -0
  22. package/dist/exporter/epub/index.js.map +1 -0
  23. package/dist/exporter/epub/templates.d.ts +65 -0
  24. package/dist/exporter/epub/templates.d.ts.map +1 -0
  25. package/dist/exporter/epub/templates.js +223 -0
  26. package/dist/exporter/epub/templates.js.map +1 -0
  27. package/dist/exporter/epub/tools.d.ts +5 -0
  28. package/dist/exporter/epub/tools.d.ts.map +1 -0
  29. package/dist/exporter/epub/tools.js +59 -0
  30. package/dist/exporter/epub/tools.js.map +1 -0
  31. package/dist/exporter/html/index.d.ts +67 -0
  32. package/dist/exporter/html/index.d.ts.map +1 -0
  33. package/dist/exporter/html/index.js +300 -0
  34. package/dist/exporter/html/index.js.map +1 -0
  35. package/dist/exporter/html/templates.d.ts +40 -0
  36. package/dist/exporter/html/templates.d.ts.map +1 -0
  37. package/dist/exporter/html/templates.js +226 -0
  38. package/dist/exporter/html/templates.js.map +1 -0
  39. package/dist/exporter/html/tools.d.ts +2 -0
  40. package/dist/exporter/html/tools.d.ts.map +1 -0
  41. package/dist/exporter/html/tools.js +23 -0
  42. package/dist/exporter/html/tools.js.map +1 -0
  43. package/dist/exporter/latex/index.d.ts +32 -0
  44. package/dist/exporter/latex/index.d.ts.map +1 -0
  45. package/dist/exporter/latex/index.js +102 -0
  46. package/dist/exporter/latex/index.js.map +1 -0
  47. package/dist/exporter/latex/templates.d.ts +4 -0
  48. package/dist/exporter/latex/templates.d.ts.map +1 -0
  49. package/dist/exporter/latex/templates.js +26 -0
  50. package/dist/exporter/latex/templates.js.map +1 -0
  51. package/dist/exporter/native/index.d.ts +20 -0
  52. package/dist/exporter/native/index.d.ts.map +1 -0
  53. package/dist/exporter/native/index.js +109 -0
  54. package/dist/exporter/native/index.js.map +1 -0
  55. package/dist/exporter/odt/index.d.ts +27 -0
  56. package/dist/exporter/odt/index.d.ts.map +1 -0
  57. package/dist/exporter/odt/index.js +123 -0
  58. package/dist/exporter/odt/index.js.map +1 -0
  59. package/dist/exporter/odt/render.d.ts +15 -0
  60. package/dist/exporter/odt/render.d.ts.map +1 -0
  61. package/dist/exporter/odt/render.js +119 -0
  62. package/dist/exporter/odt/render.js.map +1 -0
  63. package/dist/exporter/print/index.d.ts +24 -0
  64. package/dist/exporter/print/index.d.ts.map +1 -0
  65. package/dist/exporter/print/index.js +60 -0
  66. package/dist/exporter/print/index.js.map +1 -0
  67. package/dist/exporter/print/templates.d.ts +2 -0
  68. package/dist/exporter/print/templates.d.ts.map +1 -0
  69. package/dist/exporter/print/templates.js +5 -0
  70. package/dist/exporter/print/templates.js.map +1 -0
  71. package/dist/exporter/tools.d.ts +29 -0
  72. package/dist/exporter/tools.d.ts.map +1 -0
  73. package/dist/exporter/tools.js +151 -0
  74. package/dist/exporter/tools.js.map +1 -0
  75. package/dist/i18n.d.ts +7 -0
  76. package/dist/i18n.d.ts.map +1 -0
  77. package/dist/i18n.js +918 -0
  78. package/dist/i18n.js.map +1 -0
  79. package/dist/importer/native/index.d.ts +34 -0
  80. package/dist/importer/native/index.d.ts.map +1 -0
  81. package/dist/importer/native/index.js +152 -0
  82. package/dist/importer/native/index.js.map +1 -0
  83. package/dist/importer/native/reader.d.ts +26 -0
  84. package/dist/importer/native/reader.d.ts.map +1 -0
  85. package/dist/importer/native/reader.js +105 -0
  86. package/dist/importer/native/reader.js.map +1 -0
  87. package/dist/index.d.ts +3 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +2 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/schema/index.d.ts +4 -0
  92. package/dist/schema/index.d.ts.map +1 -0
  93. package/dist/schema/index.js +4 -0
  94. package/dist/schema/index.js.map +1 -0
  95. package/dist/types.d.ts +151 -0
  96. package/dist/types.d.ts.map +1 -0
  97. package/dist/types.js +5 -0
  98. package/dist/types.js.map +1 -0
  99. package/package.json +101 -0
  100. package/src/exporter/bits/index.ts +163 -0
  101. package/src/exporter/bits/templates.ts +107 -0
  102. package/src/exporter/docx/index.ts +239 -0
  103. package/src/exporter/docx/render.ts +142 -0
  104. package/src/exporter/epub/index.ts +426 -0
  105. package/src/exporter/epub/templates.ts +401 -0
  106. package/src/exporter/epub/tools.ts +68 -0
  107. package/src/exporter/html/index.ts +443 -0
  108. package/src/exporter/html/templates.ts +363 -0
  109. package/src/exporter/html/tools.ts +26 -0
  110. package/src/exporter/latex/index.ts +161 -0
  111. package/src/exporter/latex/templates.ts +35 -0
  112. package/src/exporter/native/index.ts +187 -0
  113. package/src/exporter/odt/index.ts +211 -0
  114. package/src/exporter/odt/render.ts +146 -0
  115. package/src/exporter/print/index.ts +92 -0
  116. package/src/exporter/print/templates.ts +8 -0
  117. package/src/exporter/tools.ts +233 -0
  118. package/src/global.d.ts +2 -0
  119. package/src/i18n.ts +936 -0
  120. package/src/importer/native/index.ts +233 -0
  121. package/src/importer/native/reader.ts +165 -0
  122. package/src/index.ts +19 -0
  123. package/src/modules.d.ts +11 -0
  124. package/src/schema/index.ts +4 -0
  125. package/src/types.ts +188 -0
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # @fiduswriter/books-document
2
+
3
+ This package contains the Fidus Writer book-level importers and exporters.
4
+
5
+ ## Usage
6
+
7
+ ```javascript
8
+ import {FidusBookReader} from "@fiduswriter/books-document/importer/native"
9
+ import {NativeBookExporter} from "@fiduswriter/books-document/exporter/native"
10
+ import {HTMLBookExporter} from "@fiduswriter/books-document/exporter/html"
11
+ ```
12
+
13
+ ## Development
14
+
15
+ ```bash
16
+ npm install
17
+ npm run build # compile TypeScript to dist/
18
+ npm run typecheck # run tsc --noEmit
19
+ npm test # run the Jest test suite
20
+ ```
21
+
22
+ ## License
23
+
24
+ AGPL-3.0 — see LICENSE.
@@ -0,0 +1,42 @@
1
+ /**
2
+ * BITS (Book Interchange Tag Suite) book exporter.
3
+ */
4
+ import type { Schema } from "prosemirror-model";
5
+ import type { Book, CSL, DocumentListEntry, User } from "../../types.js";
6
+ interface TextFile {
7
+ filename: string;
8
+ contents: string;
9
+ }
10
+ interface HttpFile {
11
+ filename: string;
12
+ url: string;
13
+ title?: string;
14
+ }
15
+ export declare class BITSBookExporter {
16
+ schema: Schema;
17
+ csl: CSL;
18
+ book: Book;
19
+ user: User;
20
+ docList: DocumentListEntry[];
21
+ updated: any;
22
+ type: string;
23
+ textFiles: TextFile[];
24
+ httpFiles: HttpFile[];
25
+ zipFileName: string;
26
+ constructor(schema: Schema, csl: CSL, book: Book, user: User, docList: DocumentListEntry[], updated: any);
27
+ init(): Promise<Blob> | false;
28
+ export(): Promise<Blob>;
29
+ createFiles(chapters: Array<{
30
+ front: string;
31
+ body: string;
32
+ back: string;
33
+ }>, imageDict: Record<string, {
34
+ image: string;
35
+ title?: string;
36
+ }>): Promise<Blob>;
37
+ createZip(): Promise<Blob>;
38
+ download(blob: Blob): Blob;
39
+ get defaultFilename(): string;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exporter/bits/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AAQ7C,OAAO,KAAK,EAAC,IAAI,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAC,MAAM,gBAAgB,CAAA;AAItE,UAAU,QAAQ;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,UAAU,QAAQ;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,gBAAgB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,OAAO,EAAE,GAAG,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;gBAGf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,iBAAiB,EAAE,EAC5B,OAAO,EAAE,GAAG;IAchB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK;IAa7B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BvB,WAAW,CACP,QAAQ,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,EAC5D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,GAC3D,OAAO,CAAC,IAAI,CAAC;IAsChB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,IAAI,eAAe,IAAI,MAAM,CAE5B;CACJ"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * BITS (Book Interchange Tag Suite) book exporter.
3
+ */
4
+ import pretty from "pretty";
5
+ import { JATSExporterConverter } from "@fiduswriter/document/exporter/jats/convert";
6
+ import { darManifest } from "@fiduswriter/document/exporter/jats/templates";
7
+ import { createSlug } from "@fiduswriter/document/exporter/tools/file";
8
+ import { ZipFileCreator } from "@fiduswriter/document/exporter/tools/zip";
9
+ import { addAlert } from "fwtoolkit";
10
+ import { getMissingChapterData } from "../tools.js";
11
+ import { bitsTemplate } from "./templates.js";
12
+ export class BITSBookExporter {
13
+ schema;
14
+ csl;
15
+ book;
16
+ user;
17
+ docList;
18
+ updated;
19
+ type;
20
+ textFiles;
21
+ httpFiles;
22
+ zipFileName;
23
+ constructor(schema, csl, book, user, docList, updated) {
24
+ this.schema = schema;
25
+ this.csl = csl;
26
+ this.book = book;
27
+ this.user = user;
28
+ this.docList = docList;
29
+ this.updated = updated;
30
+ this.type = "book";
31
+ this.textFiles = [];
32
+ this.httpFiles = [];
33
+ this.zipFileName = "";
34
+ }
35
+ init() {
36
+ if (this.book.chapters.length === 0) {
37
+ addAlert("error", gettext("Book cannot be exported due to lack of chapters."));
38
+ return false;
39
+ }
40
+ return getMissingChapterData(this.book, this.docList, this.schema).then(() => this.export());
41
+ }
42
+ export() {
43
+ this.book.chapters.sort((a, b) => (a.number > b.number ? 1 : -1));
44
+ const imageDict = {};
45
+ return Promise.all(this.book.chapters.map(chapter => {
46
+ const doc = this.docList.find(d => d.id === chapter.text);
47
+ if (!doc) {
48
+ return Promise.resolve({ front: "", body: "", back: "" });
49
+ }
50
+ const converter = new JATSExporterConverter(this.type, doc, this.csl, { db: doc.images || {} }, { db: doc.bibliography || {} });
51
+ return converter.init().then(({ front, body, back, imageIds }) => {
52
+ imageIds.forEach((imageId) => (imageDict[imageId] = doc.images?.[imageId]));
53
+ return { front, body, back };
54
+ });
55
+ })).then(chapters => this.createFiles(chapters, imageDict));
56
+ }
57
+ createFiles(chapters, imageDict) {
58
+ const images = Object.values(imageDict).map(image => ({
59
+ filename: image.image.split("/").pop()?.split("?")[0] || "",
60
+ url: image.image.split("?")[0],
61
+ title: image.title || ""
62
+ }));
63
+ this.zipFileName = `${createSlug(this.book.title)}.bits.zip`;
64
+ this.textFiles = [
65
+ {
66
+ filename: "manuscript.xml",
67
+ contents: pretty(bitsTemplate(this.book, chapters), { ocd: true })
68
+ },
69
+ {
70
+ filename: "manifest.xml",
71
+ contents: pretty(darManifest({
72
+ title: this.book.title,
73
+ type: this.type,
74
+ images
75
+ }), { ocd: true })
76
+ }
77
+ ];
78
+ images.forEach(image => {
79
+ this.httpFiles.push({
80
+ filename: image.filename,
81
+ url: image.url,
82
+ title: image.title
83
+ });
84
+ });
85
+ return this.createZip();
86
+ }
87
+ createZip() {
88
+ const zipper = new ZipFileCreator(this.textFiles, this.httpFiles, undefined, undefined, this.updated);
89
+ return zipper.init().then(blob => this.download(blob));
90
+ }
91
+ download(blob) {
92
+ return blob;
93
+ }
94
+ get defaultFilename() {
95
+ return this.zipFileName;
96
+ }
97
+ }
98
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exporter/bits/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Book } from "../../types.js";
2
+ export declare const bitsTemplate: (book: Book, chapters: Array<{
3
+ front: string;
4
+ body: string;
5
+ back: string;
6
+ }>) => string;
7
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/exporter/bits/templates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAqB,MAAM,gBAAgB,CAAA;AAK5D,eAAO,MAAM,YAAY,GACrB,MAAM,IAAI,EACV,UAAU,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC,WAiG/D,CAAA"}
@@ -0,0 +1,78 @@
1
+ import { escapeText } from "fwtoolkit";
2
+ const bookPartTemplate = ({ front, body, back }) => `<book-part book-part-type="chapter" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:mml="http://www.w3.org/1998/Math/MathML">${front}${body}${back}</book-part>`;
3
+ export const bitsTemplate = (book, chapters) => {
4
+ const updated = new Date((book.updated || 0) * 1000);
5
+ return `<?xml version="1.0" encoding="UTF-8"?>
6
+ <!DOCTYPE book PUBLIC "-//NLM//DTD BITS Book Interchange DTD v2.1 20220202//EN" "https://jats.nlm.nih.gov/extensions/bits/2.1/BITS-book2-1.dtd">
7
+ <book dtd-version="2.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ali="http://www.niso.org/schemas/ali/1.0/">
8
+ <processing-meta tagset-family="bits" table-model="xhtml" math-representation="tex mathml"></processing-meta>
9
+ <book-meta>
10
+ <book-title-group>
11
+ <book-title>${escapeText(book.title)}</book-title>
12
+ ${book.metadata.subtitle?.length ? `<subtitle>${escapeText(book.metadata.subtitle)}</subtitle>` : ""}
13
+ </book-title-group>
14
+ ${book.metadata.version?.length
15
+ ? `<content-version>${escapeText(book.metadata.version)}</content-version>`
16
+ : ""}
17
+ <content-language>${book.settings.language.split("-")[0]}</content-language>
18
+ ${book.metadata.description?.length
19
+ ? `<abstract>
20
+ <p>${escapeText(book.metadata.description)}</p>
21
+ </abstract>`
22
+ : ""}
23
+ ${book.metadata.author?.length
24
+ ? `<contrib-group>
25
+ <contrib contrib-type="author">
26
+ <name>
27
+ <surname>${escapeText(book.metadata.author.split(" ").slice(1).join(" "))}</surname>
28
+ <given-names>${escapeText(book.metadata.author.split(" ").pop() || "")}</given-names>
29
+ </name>
30
+ </contrib>
31
+ </contrib-group>`
32
+ : ""}
33
+ <pub-date>
34
+ <year>${updated.getFullYear()}</year>
35
+ <month>${updated.getMonth() + 1}</month>
36
+ <day>${updated.getDate()}</day>
37
+ </pub-date>
38
+ ${book.metadata.publication_date?.length
39
+ ? `<pub-date date-type="pub" publication-format="electronic">
40
+ <string-date>${escapeText(book.metadata.publication_date)}</string-date>
41
+ </pub-date>`
42
+ : ""}
43
+ ${book.metadata.isbn?.length
44
+ ? `<isbn>${escapeText(book.metadata.isbn)}</isbn>`
45
+ : ""}
46
+ ${book.metadata.publisher?.length
47
+ ? `<publisher>
48
+ <publisher-name>${escapeText(book.metadata.publisher)}</publisher-name>
49
+ </publisher>`
50
+ : ""}
51
+ ${book.metadata.series_title?.length
52
+ ? `<series>
53
+ <series-title>${escapeText(book.metadata.series_title)}</series-title>
54
+ ${book.metadata.series_position?.length
55
+ ? `<series-text>${escapeText(book.metadata.series_position)}</series-text>`
56
+ : ""}
57
+ </series>`
58
+ : ""}
59
+ ${book.metadata.copyright?.length
60
+ ? `<permissions>
61
+ <copyright-holder>
62
+ <name>${escapeText(book.metadata.copyright)}</name>
63
+ </copyright-holder>
64
+ </permissions>`
65
+ : ""}
66
+ ${book.metadata.keywords?.length
67
+ ? `<kwd-group>${book.metadata.keywords
68
+ .split(",")
69
+ .map(keyword => `<kwd>${escapeText(keyword.trim())}</kwd>`)
70
+ .join("")}</kwd-group>`
71
+ : ""}
72
+ </book-meta>
73
+ <book-body>
74
+ ${chapters.map(chapter => bookPartTemplate(chapter)).join("\n")}
75
+ </book-body>
76
+ </book>`;
77
+ };
78
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/exporter/bits/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * DOCX book exporter.
3
+ */
4
+ import type { Schema } from "prosemirror-model";
5
+ import type { CSL, User } from "@fiduswriter/document";
6
+ import type { Book, DocumentListEntry } from "../../types.js";
7
+ import { DOCXBookExporterRender } from "./render.js";
8
+ export declare class DOCXBookExporter {
9
+ schema: Schema;
10
+ csl: CSL;
11
+ book: Book;
12
+ user: User;
13
+ docList: DocumentListEntry[];
14
+ templateUrl: string;
15
+ updated: any;
16
+ textFiles: Array<Record<string, unknown>>;
17
+ httpFiles: Array<Record<string, unknown>>;
18
+ mimeType: string;
19
+ constructor(schema: Schema, csl: CSL, book: Book, user: User, docList: DocumentListEntry[], updated: any);
20
+ init(): Promise<Blob> | false;
21
+ export(): Promise<Blob>;
22
+ exportChapters(xml: any, render: DOCXBookExporterRender, rels: any, math: any, tables: any): Promise<void>;
23
+ getBaseMetadata(): Record<string, unknown>;
24
+ download(blob: Blob): Blob;
25
+ get defaultFilename(): string;
26
+ }
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exporter/docx/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,uBAAuB,CAAA;AAqBpD,OAAO,KAAK,EAAC,IAAI,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAA;AAE3D,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAA;AAElD,qBAAa,gBAAgB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,GAAG,CAAA;IACZ,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;gBAGZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,iBAAiB,EAAE,EAC5B,OAAO,EAAE,GAAG;IAgBhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK;IAgB7B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBvB,cAAc,CACV,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,GAAG,GACZ,OAAO,CAAC,IAAI,CAAC;IAuGhB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAiB1C,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,IAAI,eAAe,IAAI,MAAM,CAE5B;CACJ"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * DOCX book exporter.
3
+ */
4
+ import { fixTables, removeHidden } from "@fiduswriter/document/exporter/tools/doc_content";
5
+ import { createSlug } from "@fiduswriter/document/exporter/tools/file";
6
+ import { XmlZip } from "@fiduswriter/document/exporter/tools/xml_zip";
7
+ import { addAlert } from "fwtoolkit";
8
+ import { DOCXExporterCitations } from "@fiduswriter/document/exporter/docx/citations";
9
+ import { DOCXExporterComments } from "@fiduswriter/document/exporter/docx/comments";
10
+ import { DOCXExporterFootnotes } from "@fiduswriter/document/exporter/docx/footnotes";
11
+ import { DOCXExporterImages } from "@fiduswriter/document/exporter/docx/images";
12
+ import { DOCXExporterLists } from "@fiduswriter/document/exporter/docx/lists";
13
+ import { DOCXExporterMath } from "@fiduswriter/document/exporter/docx/math";
14
+ import { DOCXExporterMetadata } from "@fiduswriter/document/exporter/docx/metadata";
15
+ import { DOCXExporterRels } from "@fiduswriter/document/exporter/docx/rels";
16
+ import { DOCXExporterRichtext } from "@fiduswriter/document/exporter/docx/richtext";
17
+ import { DOCXExporterTables } from "@fiduswriter/document/exporter/docx/tables";
18
+ import { moveFootnoteComments } from "@fiduswriter/document/exporter/docx/tools";
19
+ import { getMissingChapterData } from "../tools.js";
20
+ import { DOCXBookExporterRender } from "./render.js";
21
+ export class DOCXBookExporter {
22
+ schema;
23
+ csl;
24
+ book;
25
+ user;
26
+ docList;
27
+ templateUrl;
28
+ updated;
29
+ textFiles;
30
+ httpFiles;
31
+ mimeType;
32
+ constructor(schema, csl, book, user, docList, updated) {
33
+ this.schema = schema;
34
+ this.csl = csl;
35
+ this.book = book;
36
+ this.user = user;
37
+ this.docList = docList;
38
+ this.templateUrl = book.docx_template || "";
39
+ this.updated = updated;
40
+ this.textFiles = [];
41
+ this.httpFiles = [];
42
+ this.mimeType =
43
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
44
+ }
45
+ init() {
46
+ if (this.book.chapters.length === 0) {
47
+ addAlert("error", gettext("Book cannot be exported due to lack of chapters."));
48
+ return false;
49
+ }
50
+ return getMissingChapterData(this.book, this.docList, this.schema, { rawContent: true }).then(() => this.export());
51
+ }
52
+ export() {
53
+ this.book.chapters.sort((a, b) => (a.number > b.number ? 1 : -1));
54
+ const xml = new XmlZip(this.templateUrl, this.mimeType);
55
+ const tables = new DOCXExporterTables(xml);
56
+ const math = new DOCXExporterMath(xml);
57
+ const render = new DOCXBookExporterRender(xml);
58
+ const rels = new DOCXExporterRels(xml, "document");
59
+ const metadata = new DOCXExporterMetadata(xml, this.getBaseMetadata());
60
+ return xml
61
+ .init()
62
+ .then(() => metadata.init())
63
+ .then(() => tables.init())
64
+ .then(() => math.init())
65
+ .then(() => render.init())
66
+ .then(() => rels.init())
67
+ .then(() => this.exportChapters(xml, render, rels, math, tables))
68
+ .then(() => xml.prepareBlob())
69
+ .then(blob => this.download(blob));
70
+ }
71
+ exportChapters(xml, render, rels, math, tables) {
72
+ return this.book.chapters
73
+ .map((chapter, chapterIndex) => {
74
+ return () => {
75
+ const doc = this.docList.find(d => d.id === chapter.text);
76
+ if (!doc) {
77
+ return Promise.resolve();
78
+ }
79
+ const docContent = moveFootnoteComments(fixTables(removeHidden(doc.rawContent)));
80
+ const images = new DOCXExporterImages(docContent, { db: doc.images || {} }, xml, rels);
81
+ const lists = new DOCXExporterLists(docContent, xml, rels);
82
+ const citations = new DOCXExporterCitations(docContent, doc.settings, { db: doc.bibliography || {} }, this.csl, xml);
83
+ const footnotes = new DOCXExporterFootnotes(doc, docContent, doc.settings, { db: doc.images || {} }, { db: doc.bibliography || {} }, xml, citations, this.csl, lists, math, tables, rels);
84
+ const richtext = new DOCXExporterRichtext(doc, doc.settings, lists, footnotes, math, tables, rels, citations, images);
85
+ const comments = new DOCXExporterComments(docContent, doc.comments || {}, xml, rels, richtext);
86
+ return citations
87
+ .init()
88
+ .then(() => images.init())
89
+ .then(() => comments.init())
90
+ .then(() => lists.init())
91
+ .then(() => footnotes.init())
92
+ .then(() => {
93
+ const pmBib = footnotes.pmBib || citations.pmBib;
94
+ render.render(docContent, pmBib, doc.settings, richtext, citations, chapterIndex);
95
+ return Promise.resolve();
96
+ });
97
+ };
98
+ })
99
+ .reduce((promiseChain, currentChapter) => promiseChain.then(() => currentChapter()), Promise.resolve())
100
+ .then(() => render.renderAmbles(Object.assign({
101
+ title: this.book.title,
102
+ language: this.book.settings.language
103
+ }, this.book.metadata)))
104
+ .then(() => render.assemble());
105
+ }
106
+ getBaseMetadata() {
107
+ const authors = this.book.metadata.author?.length
108
+ ? [{ institution: this.book.metadata.author }]
109
+ : [];
110
+ const keywords = this.book.metadata.keywords?.length
111
+ ? this.book.metadata.keywords
112
+ .split(",")
113
+ .map(keyword => keyword.trim())
114
+ : [];
115
+ return {
116
+ authors,
117
+ keywords,
118
+ title: this.book.title,
119
+ language: this.book.settings.language
120
+ };
121
+ }
122
+ download(blob) {
123
+ return blob;
124
+ }
125
+ get defaultFilename() {
126
+ return `${createSlug(this.book.title)}.docx`;
127
+ }
128
+ }
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exporter/docx/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { DOCXExporterRender } from "@fiduswriter/document/exporter/docx/render";
2
+ export declare class DOCXBookExporterRender extends DOCXExporterRender {
3
+ preamble: any;
4
+ bodyTemplate: any;
5
+ postamble: any;
6
+ fileXML: any;
7
+ bodyParts: any[];
8
+ constructor(xml: any);
9
+ init(): Promise<void>;
10
+ render(...args: any[]): void;
11
+ renderAmbles({ title, subtitle, version, publisher, copyright, author, keywords, language, description, isbn, publication_date, series_title, series_position }: Record<string, unknown>): void;
12
+ assemble(): void;
13
+ }
14
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/exporter/docx/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,4CAA4C,CAAA;AAE7E,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC1D,QAAQ,EAAE,GAAG,CAAA;IACb,YAAY,EAAE,GAAG,CAAA;IACjB,SAAS,EAAE,GAAG,CAAA;IACd,OAAO,EAAE,GAAG,CAAA;IACZ,SAAS,EAAE,GAAG,EAAE,CAAA;gBAEJ,GAAG,EAAE,GAAG;IAUpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BrB,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAa5B,YAAY,CAAC,EACT,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,YAAY,EACZ,eAAe,EAClB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiCjC,QAAQ,IAAI,IAAI;CAiCnB"}
@@ -0,0 +1,116 @@
1
+ import { DOCXExporterRender } from "@fiduswriter/document/exporter/docx/render";
2
+ export class DOCXBookExporterRender extends DOCXExporterRender {
3
+ preamble;
4
+ bodyTemplate;
5
+ postamble;
6
+ fileXML;
7
+ bodyParts;
8
+ constructor(xml) {
9
+ super(xml);
10
+ this.preamble = null;
11
+ this.bodyTemplate = null;
12
+ this.postamble = null;
13
+ this.fileXML = null;
14
+ this.bodyParts = [];
15
+ }
16
+ init() {
17
+ return super.init().then(() => {
18
+ this.fileXML = this.text;
19
+ const text = this.fileXML.query("w:body");
20
+ this.preamble = text.cloneNode(false);
21
+ this.bodyTemplate = text.cloneNode(false);
22
+ this.postamble = text.cloneNode(false);
23
+ let currentSection = this.bodyTemplate;
24
+ const textChildren = Array.from(text.children);
25
+ textChildren.forEach((node) => {
26
+ const bookmarkStart = node.query("w:bookmarkStart");
27
+ if (bookmarkStart) {
28
+ const bookmarkName = String(bookmarkStart.getAttribute("w:name")).toLowerCase();
29
+ if (bookmarkName === "preamble") {
30
+ currentSection = this.preamble;
31
+ }
32
+ else if (bookmarkName === "body") {
33
+ currentSection = this.bodyTemplate;
34
+ }
35
+ else if (bookmarkName === "postamble") {
36
+ currentSection = this.postamble;
37
+ }
38
+ }
39
+ currentSection.appendChild(node);
40
+ });
41
+ return Promise.resolve();
42
+ });
43
+ }
44
+ render(...args) {
45
+ const [docContent, pmBib, settings, richtext, citations, chapterIndex] = args;
46
+ this.text = this.bodyTemplate.cloneNode(true);
47
+ const bodyBookmark = this.text.query("w:bookmarkStart", {
48
+ "w:name": "body"
49
+ });
50
+ if (bodyBookmark) {
51
+ bodyBookmark.setAttribute("w:name", `chapter ${chapterIndex + 1}`);
52
+ }
53
+ super.render(docContent, pmBib, settings, richtext, citations);
54
+ this.bodyParts.push(this.text);
55
+ }
56
+ renderAmbles({ title, subtitle, version, publisher, copyright, author, keywords, language, description, isbn, publication_date, series_title, series_position }) {
57
+ const tags = [
58
+ { title: "book.title", content: title },
59
+ { title: "book.subtitle", content: subtitle },
60
+ { title: "book.version", content: version },
61
+ { title: "book.publisher", content: publisher },
62
+ { title: "book.copyright", content: copyright },
63
+ { title: "book.author", content: author },
64
+ { title: "book.keywords", content: keywords },
65
+ { title: "book.language", content: language },
66
+ { title: "book.description", content: description },
67
+ { title: "book.isbn", content: isbn },
68
+ { title: "book.publication_date", content: publication_date },
69
+ { title: "book.series_title", content: series_title },
70
+ { title: "book.series_position", content: series_position }
71
+ ];
72
+ const usedTags = [];
73
+ const ambles = [this.preamble, this.postamble];
74
+ ambles.forEach(amble => {
75
+ const blocks = amble.queryAll(["w:p", "w:sectPr"]);
76
+ blocks.forEach((block) => {
77
+ const text = block.textContent;
78
+ tags.forEach(tag => {
79
+ const tagString = tag.title;
80
+ if (text.includes(`{${tagString}}`)) {
81
+ usedTags.push(Object.assign({ block }, tag));
82
+ }
83
+ });
84
+ });
85
+ });
86
+ usedTags.forEach(tag => this.inlineRender(tag));
87
+ }
88
+ assemble() {
89
+ const text = this.fileXML.query("w:body");
90
+ Array.from(this.preamble.children).forEach((node) => text.appendChild(node));
91
+ this.bodyParts.forEach((bodyPart, index) => {
92
+ const children = bodyPart.children.slice();
93
+ children.forEach((node) => {
94
+ text.appendChild(node);
95
+ });
96
+ if (index < this.bodyParts.length - 1) {
97
+ text.appendXML(`<w:p>
98
+ <w:pPr>
99
+ <w:pStyle w:val="Normal"/>
100
+ <w:bidi w:val="0"/>
101
+ <w:jc w:val="start"/>
102
+ <w:rPr/>
103
+ </w:pPr>
104
+ <w:r>
105
+ <w:rPr/>
106
+ </w:r>
107
+ <w:r>
108
+ <w:br w:type="page"/>
109
+ </w:r>
110
+ </w:p>`);
111
+ }
112
+ });
113
+ Array.from(this.postamble.children).forEach((node) => text.appendChild(node));
114
+ }
115
+ }
116
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/exporter/docx/render.ts"],"names":[],"mappings":"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"}