@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
@@ -0,0 +1,123 @@
1
+ /**
2
+ * ODT 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 { ODTExporterCitations } from "@fiduswriter/document/exporter/odt/citations";
9
+ import { ODTExporterImages } from "@fiduswriter/document/exporter/odt/images";
10
+ import { ODTExporterFootnotes } from "@fiduswriter/document/exporter/odt/footnotes";
11
+ import { ODTExporterMath } from "@fiduswriter/document/exporter/odt/math";
12
+ import { ODTExporterMetadata } from "@fiduswriter/document/exporter/odt/metadata";
13
+ import { ODTExporterRichtext } from "@fiduswriter/document/exporter/odt/richtext";
14
+ import { ODTExporterStyles } from "@fiduswriter/document/exporter/odt/styles";
15
+ import { ODTExporterTracks } from "@fiduswriter/document/exporter/odt/track";
16
+ import { getMissingChapterData } from "../tools.js";
17
+ import { ODTBookExporterRender } from "./render.js";
18
+ export class ODTBookExporter {
19
+ schema;
20
+ csl;
21
+ book;
22
+ user;
23
+ docList;
24
+ templateUrl;
25
+ updated;
26
+ textFiles;
27
+ httpFiles;
28
+ mimeType;
29
+ constructor(schema, csl, book, user, docList, updated) {
30
+ this.schema = schema;
31
+ this.csl = csl;
32
+ this.book = book;
33
+ this.user = user;
34
+ this.docList = docList;
35
+ this.templateUrl = book.odt_template || "";
36
+ this.updated = updated;
37
+ this.textFiles = [];
38
+ this.httpFiles = [];
39
+ this.mimeType = "application/vnd.oasis.opendocument.text";
40
+ }
41
+ init() {
42
+ if (this.book.chapters.length === 0) {
43
+ addAlert("error", gettext("Book cannot be exported due to lack of chapters."));
44
+ return false;
45
+ }
46
+ return getMissingChapterData(this.book, this.docList, this.schema, { rawContent: true }).then(() => this.export());
47
+ }
48
+ export() {
49
+ this.book.chapters.sort((a, b) => (a.number > b.number ? 1 : -1));
50
+ const xml = new XmlZip(this.templateUrl, this.mimeType);
51
+ const styles = new ODTExporterStyles(xml);
52
+ const math = new ODTExporterMath(xml);
53
+ const tracks = new ODTExporterTracks(xml);
54
+ const render = new ODTBookExporterRender(xml, styles);
55
+ const metadata = new ODTExporterMetadata(xml, styles, this.getBaseMetadata());
56
+ return xml
57
+ .init()
58
+ .then(() => styles.init())
59
+ .then(() => tracks.init())
60
+ .then(() => render.init())
61
+ .then(() => metadata.init())
62
+ .then(() => math.init())
63
+ .then(() => this.exportChapters(xml, render, styles, math, tracks))
64
+ .then(() => xml.prepareBlob())
65
+ .then(blob => this.download(blob));
66
+ }
67
+ exportChapters(xml, render, styles, math, tracks) {
68
+ return this.book.chapters
69
+ .map((chapter, chapterIndex) => {
70
+ return () => {
71
+ const doc = this.docList.find(d => d.id === chapter.text);
72
+ if (!doc) {
73
+ return Promise.resolve();
74
+ }
75
+ const docContent = fixTables(removeHidden(doc.rawContent));
76
+ const citations = new ODTExporterCitations(docContent, doc.settings, styles, { db: doc.bibliography || {} }, this.csl);
77
+ const footnotes = new ODTExporterFootnotes(docContent, doc.settings, xml, citations, styles, { db: doc.bibliography || {} }, { db: doc.images || {} }, this.csl);
78
+ const images = new ODTExporterImages(docContent, xml, {
79
+ db: doc.images || {}
80
+ });
81
+ const richtext = new ODTExporterRichtext(doc.comments || {}, doc.settings, styles, tracks, footnotes, citations, math, images);
82
+ return citations
83
+ .init()
84
+ .then(() => images.init())
85
+ .then(() => footnotes.init())
86
+ .then(() => {
87
+ const pmBib = footnotes.pmBib || citations.pmBib;
88
+ render.render(docContent, pmBib, doc.settings, richtext, citations, chapterIndex);
89
+ return Promise.resolve();
90
+ });
91
+ };
92
+ })
93
+ .reduce((promiseChain, currentChapter) => promiseChain.then(() => currentChapter()), Promise.resolve())
94
+ .then(() => render.renderAmbles(Object.assign({
95
+ title: this.book.title,
96
+ language: this.book.settings.language
97
+ }, this.book.metadata)))
98
+ .then(() => render.assemble());
99
+ }
100
+ getBaseMetadata() {
101
+ const authors = this.book.metadata.author?.length
102
+ ? [{ institution: this.book.metadata.author }]
103
+ : [];
104
+ const keywords = this.book.metadata.keywords?.length
105
+ ? this.book.metadata.keywords
106
+ .split(",")
107
+ .map(keyword => keyword.trim())
108
+ : [];
109
+ return {
110
+ authors,
111
+ keywords,
112
+ title: this.book.title,
113
+ language: this.book.settings.language
114
+ };
115
+ }
116
+ download(blob) {
117
+ return blob;
118
+ }
119
+ get defaultFilename() {
120
+ return `${createSlug(this.book.title)}.odt`;
121
+ }
122
+ }
123
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exporter/odt/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ODTExporterRender } from "@fiduswriter/document/exporter/odt/render";
2
+ export declare class ODTBookExporterRender extends ODTExporterRender {
3
+ styles: any;
4
+ preamble: any;
5
+ bodyTemplate: any;
6
+ postamble: any;
7
+ bodyParts: any[];
8
+ fileXml: any;
9
+ constructor(xml: any, styles: any);
10
+ init(): Promise<void>;
11
+ render(...args: any[]): void;
12
+ renderAmbles({ title, subtitle, version, publisher, copyright, author, keywords, language, description, isbn, publication_date, series_title, series_position }: Record<string, unknown>): void;
13
+ assemble(): void;
14
+ }
15
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/exporter/odt/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,2CAA2C,CAAA;AAE3E,qBAAa,qBAAsB,SAAQ,iBAAiB;IACxD,MAAM,EAAE,GAAG,CAAA;IACX,QAAQ,EAAE,GAAG,CAAA;IACb,YAAY,EAAE,GAAG,CAAA;IACjB,SAAS,EAAE,GAAG,CAAA;IACd,SAAS,EAAE,GAAG,EAAE,CAAA;IAChB,OAAO,EAAE,GAAG,CAAA;gBAEA,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;IAajC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCrB,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAgB5B,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;IAoCjC,QAAQ,IAAI,IAAI;CAmBnB"}
@@ -0,0 +1,119 @@
1
+ import { ODTExporterRender } from "@fiduswriter/document/exporter/odt/render";
2
+ export class ODTBookExporterRender extends ODTExporterRender {
3
+ styles;
4
+ preamble;
5
+ bodyTemplate;
6
+ postamble;
7
+ bodyParts;
8
+ fileXml;
9
+ constructor(xml, styles) {
10
+ super(xml);
11
+ this.styles = styles;
12
+ this.preamble = null;
13
+ this.bodyTemplate = null;
14
+ this.postamble = null;
15
+ this.bodyParts = [];
16
+ this.fileXml = null;
17
+ }
18
+ init() {
19
+ return this.xml.getXml(this.filePath).then((xml) => {
20
+ this.fileXml = xml;
21
+ const text = xml.query("office:text");
22
+ this.preamble = text.cloneNode(false);
23
+ this.bodyTemplate = text.cloneNode(false);
24
+ this.postamble = text.cloneNode(false);
25
+ let currentSection;
26
+ const textChildren = Array.from(text.children);
27
+ textChildren.forEach((node) => {
28
+ if (["text:p", "text:h"].includes(node.tagName)) {
29
+ const bookmark = node.query("text:bookmark");
30
+ if (bookmark) {
31
+ const sectionName = String(bookmark.getAttribute("text:name")).toLowerCase();
32
+ if (sectionName === "preamble") {
33
+ currentSection = this.preamble;
34
+ }
35
+ else if (sectionName === "postamble") {
36
+ currentSection = this.postamble;
37
+ }
38
+ else if (sectionName === "body") {
39
+ currentSection = this.bodyTemplate;
40
+ }
41
+ else {
42
+ currentSection = currentSection || this.bodyTemplate;
43
+ }
44
+ }
45
+ else {
46
+ currentSection = currentSection || this.bodyTemplate;
47
+ }
48
+ }
49
+ if (currentSection) {
50
+ currentSection.appendChild(node);
51
+ }
52
+ });
53
+ return Promise.resolve();
54
+ });
55
+ }
56
+ render(...args) {
57
+ const [docContent, pmBib, settings, richtext, citations, chapterIndex] = args;
58
+ this.text = this.bodyTemplate.cloneNode(true);
59
+ const bodyBookmark = this.text.query("text:bookmark", {
60
+ "text:name": "body"
61
+ });
62
+ if (bodyBookmark) {
63
+ bodyBookmark.setAttribute("text:name", `chapter ${chapterIndex + 1}`);
64
+ }
65
+ super.render(docContent, pmBib, settings, richtext, citations);
66
+ this.bodyParts.push(this.text);
67
+ }
68
+ renderAmbles({ title, subtitle, version, publisher, copyright, author, keywords, language, description, isbn, publication_date, series_title, series_position }) {
69
+ const tags = [
70
+ { title: "book.title", content: title },
71
+ { title: "book.subtitle", content: subtitle },
72
+ { title: "book.version", content: version },
73
+ { title: "book.publisher", content: publisher },
74
+ { title: "book.copyright", content: copyright },
75
+ { title: "book.author", content: author },
76
+ { title: "book.keywords", content: keywords },
77
+ { title: "book.language", content: language },
78
+ { title: "book.description", content: description },
79
+ { title: "book.isbn", content: isbn },
80
+ { title: "book.publication_date", content: publication_date },
81
+ { title: "book.series_title", content: series_title },
82
+ { title: "book.series_position", content: series_position }
83
+ ];
84
+ const usedTags = [];
85
+ const ambles = [this.preamble, this.postamble];
86
+ ambles.forEach(amble => {
87
+ const blocks = amble.queryAll(["text:p", "text:h"]);
88
+ blocks.forEach((block) => {
89
+ if (block.parentElement.nodeName === "text:deletion") {
90
+ return;
91
+ }
92
+ const text = block.textContent;
93
+ tags.forEach(tag => {
94
+ const tagString = tag.title;
95
+ if (text.includes(`{${tagString}}`)) {
96
+ usedTags.push(Object.assign({ block }, tag));
97
+ }
98
+ });
99
+ });
100
+ });
101
+ usedTags.forEach(tag => this.inlineRender(tag));
102
+ }
103
+ assemble() {
104
+ this.styles.addPageBreakStyle();
105
+ const text = this.fileXml.query("office:text");
106
+ Array.from(this.preamble.children).forEach((node) => text.appendChild(node));
107
+ this.bodyParts.forEach((bodyPart, index) => {
108
+ const children = bodyPart.children.slice();
109
+ children.forEach((node) => {
110
+ text.appendChild(node);
111
+ });
112
+ if (index < this.bodyParts.length - 1) {
113
+ text.appendXML('<text:p text:style-name="PageBreak"/>');
114
+ }
115
+ });
116
+ Array.from(this.postamble.children).forEach((node) => text.appendChild(node));
117
+ }
118
+ }
119
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/exporter/odt/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Print book exporter.
3
+ *
4
+ * Uses @vivliostyle/print to render the book in the browser.
5
+ */
6
+ import type { Schema } from "prosemirror-model";
7
+ import type { CSL, User } from "@fiduswriter/document";
8
+ import type { Book, BookStyles, DocumentListEntry } from "../../types.js";
9
+ import { HTMLBookExporter } from "../html/index.js";
10
+ export declare class PrintBookExporter extends HTMLBookExporter {
11
+ constructor(schema: Schema, csl: CSL, documentStyles: BookStyles, book: Book, user: User, docList: DocumentListEntry[]);
12
+ addBookStyle(): boolean;
13
+ createZip(): Promise<void>;
14
+ loadStyle(sheet: {
15
+ url?: string;
16
+ filename?: string;
17
+ contents?: string;
18
+ }): Promise<{
19
+ url?: string;
20
+ filename?: string;
21
+ contents?: string;
22
+ }>;
23
+ }
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exporter/print/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,uBAAuB,CAAA;AAGpD,OAAO,KAAK,EAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAA;AACvE,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAA;AAGjD,qBAAa,iBAAkB,SAAQ,gBAAgB;gBAE/C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,EACR,cAAc,EAAE,UAAU,EAC1B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,iBAAiB,EAAE;IAQhC,YAAY,IAAI,OAAO;IAoBjB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B1B,SAAS,CAAC,KAAK,EAAE;QACnB,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB,GAAG,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CAOpE"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Print book exporter.
3
+ *
4
+ * Uses @vivliostyle/print to render the book in the browser.
5
+ */
6
+ import { printHTML } from "@vivliostyle/print";
7
+ import { HTMLBookExporter } from "../html/index.js";
8
+ import { chapterTemplate } from "./templates.js";
9
+ export class PrintBookExporter extends HTMLBookExporter {
10
+ constructor(schema, csl, documentStyles, book, user, docList) {
11
+ super(schema, csl, documentStyles, book, user, docList, 0, false, {
12
+ relativeUrls: false
13
+ });
14
+ this.chapterTemplate = chapterTemplate;
15
+ }
16
+ addBookStyle() {
17
+ const bookStyle = this.bookStyles.find(style => style.slug === this.book.settings.book_style);
18
+ if (!bookStyle) {
19
+ return false;
20
+ }
21
+ let contents = bookStyle.contents;
22
+ bookStyle.bookstylefile_set.forEach(([url, filename]) => (contents = contents.replace(new RegExp(filename, "g"), url)));
23
+ this.styleSheets.push({ contents });
24
+ return true;
25
+ }
26
+ async createZip() {
27
+ const htmlDoc = this.textFiles.find(file => file.filename === "index.html")?.contents;
28
+ if (!htmlDoc) {
29
+ return;
30
+ }
31
+ const config = { title: this.book.title };
32
+ if (navigator.userAgent.includes("Gecko/")) {
33
+ config.printCallback = (iframeWin) => {
34
+ const oldBody = document.body;
35
+ document.body.parentElement.dataset.vivliostylePaginated =
36
+ "true";
37
+ document.body = iframeWin.document.body;
38
+ iframeWin.document
39
+ .querySelectorAll("style")
40
+ .forEach(el => document.body.appendChild(el));
41
+ const backgroundStyle = document.createElement("style");
42
+ backgroundStyle.innerHTML = "body {background-color: white;}";
43
+ document.body.appendChild(backgroundStyle);
44
+ window.print();
45
+ document.body = oldBody;
46
+ delete document.body.parentElement.dataset
47
+ .vivliostylePaginated;
48
+ };
49
+ }
50
+ printHTML(htmlDoc, config);
51
+ }
52
+ async loadStyle(sheet) {
53
+ if (sheet.url) {
54
+ sheet.filename = sheet.url;
55
+ delete sheet.url;
56
+ }
57
+ return sheet;
58
+ }
59
+ }
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exporter/print/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const chapterTemplate: ({ part, contents }: Record<string, unknown>) => string;
2
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/exporter/print/templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,GAAI,oBAG7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAEV,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { escapeText } from "fwtoolkit";
2
+ export const chapterTemplate = ({ part, contents }) => `
3
+ ${part && part.length ? `<h1 class="part">${escapeText(part)}</h1>` : ""}
4
+ ${contents}`;
5
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/exporter/print/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,WAAW,CAAA;AAEpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACc,EAAE,EAAE,CAAC;MACzB,IAAI,IAAK,IAAe,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,UAAU,CAAC,IAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;MAC5F,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Shared tools for book exporters.
3
+ *
4
+ * `getMissingChapterData` is fully dependency-injected: it no longer imports
5
+ * browser/server-specific helpers from the Fidus Writer core. Callers supply
6
+ * a `ChapterLoader` to fetch missing chapter data and an `E2EEStrategy` to
7
+ * decrypt end-to-end encrypted chapters.
8
+ */
9
+ import type { Schema } from "prosemirror-model";
10
+ import type { ChapterLoader, DocumentListEntry, E2EEStrategy, Book } from "../types.js";
11
+ /** Default no-op chapter loader. */
12
+ export declare const noopChapterLoader: ChapterLoader;
13
+ /** Default no-op E2EE strategy. */
14
+ export declare const noopE2EEStrategy: E2EEStrategy;
15
+ /**
16
+ * Ensure all chapter data required for export is present.
17
+ *
18
+ * @param book - The book being exported.
19
+ * @param documentList - Document entries for the book's chapters.
20
+ * @param schema - ProseMirror schema used when parsing decrypted content.
21
+ * @param options - Optional loader and E2EE strategy.
22
+ * @returns Promise that resolves when data is ready.
23
+ */
24
+ export declare function getMissingChapterData(book: Book, documentList: DocumentListEntry[], schema: Schema, options?: {
25
+ rawContent?: boolean;
26
+ loader?: ChapterLoader;
27
+ e2ee?: E2EEStrategy;
28
+ }): Promise<void>;
29
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/exporter/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AAK7C,OAAO,KAAK,EACR,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,IAAI,EACP,MAAM,aAAa,CAAA;AAEpB,oCAAoC;AACpC,eAAO,MAAM,iBAAiB,EAAE,aAI/B,CAAA;AAED,mCAAmC;AACnC,eAAO,MAAM,gBAAgB,EAAE,YAY9B,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACvC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,iBAAiB,EAAE,EACjC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IACL,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,IAAI,CAAC,EAAE,YAAY,CAAA;CACjB,GACP,OAAO,CAAC,IAAI,CAAC,CAuBf"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Shared tools for book exporters.
3
+ *
4
+ * `getMissingChapterData` is fully dependency-injected: it no longer imports
5
+ * browser/server-specific helpers from the Fidus Writer core. Callers supply
6
+ * a `ChapterLoader` to fetch missing chapter data and an `E2EEStrategy` to
7
+ * decrypt end-to-end encrypted chapters.
8
+ */
9
+ import { getSettings } from "@fiduswriter/document/schema/convert";
10
+ import { acceptAllNoInsertions } from "@fiduswriter/document/transform";
11
+ import { addAlert } from "fwtoolkit";
12
+ /** Default no-op chapter loader. */
13
+ export const noopChapterLoader = {
14
+ loadChapters: async () => {
15
+ // noop
16
+ }
17
+ };
18
+ /** Default no-op E2EE strategy. */
19
+ export const noopE2EEStrategy = {
20
+ ensurePassphraseUnlocked: async () => false,
21
+ getDocumentPassword: async () => null,
22
+ resolvePasswordToKey: async () => {
23
+ throw new Error("No E2EE strategy provided");
24
+ },
25
+ decryptObject: async () => {
26
+ throw new Error("No E2EE strategy provided");
27
+ },
28
+ decryptImageToUrl: async () => {
29
+ throw new Error("No E2EE strategy provided");
30
+ }
31
+ };
32
+ /**
33
+ * Ensure all chapter data required for export is present.
34
+ *
35
+ * @param book - The book being exported.
36
+ * @param documentList - Document entries for the book's chapters.
37
+ * @param schema - ProseMirror schema used when parsing decrypted content.
38
+ * @param options - Optional loader and E2EE strategy.
39
+ * @returns Promise that resolves when data is ready.
40
+ */
41
+ export async function getMissingChapterData(book, documentList, schema, options = {}) {
42
+ const { rawContent = false, loader = noopChapterLoader, e2ee = noopE2EEStrategy } = options;
43
+ const bookDocuments = book.chapters.map(chapter => documentList.find(doc => doc.id === chapter.text));
44
+ if (bookDocuments.some(doc => doc === undefined)) {
45
+ addAlert("error", gettext("Cannot produce book as you lack access rights to its chapters."));
46
+ throw new Error("Cannot produce book as you lack access rights to its chapters.");
47
+ }
48
+ const docIds = book.chapters.map(chapter => chapter.text);
49
+ await loader.loadChapters(docIds, documentList, schema, rawContent);
50
+ await decryptE2EEChapters(book, documentList, schema, rawContent, e2ee);
51
+ }
52
+ /**
53
+ * Decrypt all E2EE chapters in the book whose content is still an encrypted
54
+ * string.
55
+ */
56
+ async function decryptE2EEChapters(book, documentList, schema, rawContent, e2ee) {
57
+ const e2eeChapters = book.chapters.filter(chapter => {
58
+ const doc = documentList.find(doc => doc.id === chapter.text);
59
+ return doc && doc.e2ee && typeof doc.content === "string";
60
+ });
61
+ if (!e2eeChapters.length) {
62
+ return;
63
+ }
64
+ const unlocked = await e2ee.ensurePassphraseUnlocked();
65
+ if (!unlocked) {
66
+ addAlert("error", gettext("A personal passphrase is required to work with books that contain encrypted chapters. Please set up or unlock your personal passphrase in your profile settings."));
67
+ throw new Error("Passphrase required for encrypted chapters");
68
+ }
69
+ await Promise.all(e2eeChapters.map(async (chapter) => {
70
+ const doc = documentList.find(d => d.id === chapter.text);
71
+ if (!doc) {
72
+ return;
73
+ }
74
+ const chapterLabel = doc.title
75
+ ? `"${doc.title}"`
76
+ : gettext("Untitled");
77
+ const password = await e2ee.getDocumentPassword(Number(doc.id));
78
+ if (!password) {
79
+ addAlert("error", `${gettext("No encryption key found for chapter:")} ${chapterLabel}. ${gettext("The key may not have been shared with you.")}`);
80
+ throw new Error(`No encryption key for document ${String(doc.id)}`);
81
+ }
82
+ if (!doc.e2ee_salt) {
83
+ // No salt means the document has no encrypted snapshot yet.
84
+ return;
85
+ }
86
+ const salt = base64ToUint8Array(doc.e2ee_salt);
87
+ const iterations = doc.e2ee_iterations || 600000;
88
+ const key = await e2ee.resolvePasswordToKey(password, salt, iterations);
89
+ try {
90
+ const decryptedContent = (await e2ee.decryptObject(doc.content, key));
91
+ // Update the plaintext title.
92
+ const titleNode = decryptedContent.content?.[0];
93
+ const titleContent = titleNode?.content || [];
94
+ let title = "";
95
+ titleContent.forEach(child => {
96
+ const marks = child.marks || [];
97
+ if (!marks.some(m => m.type === "deletion")) {
98
+ title += child.text || "";
99
+ }
100
+ });
101
+ if (title) {
102
+ doc.title = title.substring(0, 255);
103
+ if (typeof sessionStorage !== "undefined") {
104
+ sessionStorage.setItem(`e2ee_title_${String(doc.id)}`, doc.title);
105
+ }
106
+ }
107
+ // Parse ProseMirror content.
108
+ if (rawContent) {
109
+ doc.rawContent = JSON.parse(JSON.stringify(schema.nodeFromJSON(decryptedContent).toJSON()));
110
+ }
111
+ doc.content = acceptAllNoInsertions(schema.nodeFromJSON(decryptedContent)).toJSON();
112
+ doc.settings = getSettings(doc.content);
113
+ // Decrypt encrypted images.
114
+ const encryptedImageEntries = Object.entries(doc.images || {}).filter(([, entry]) => entry.file_type === "application/octet-stream" &&
115
+ typeof entry.image === "string");
116
+ if (!encryptedImageEntries.length) {
117
+ return;
118
+ }
119
+ await Promise.all(encryptedImageEntries.map(async ([id, entry]) => {
120
+ try {
121
+ const blobUrl = await e2ee.decryptImageToUrl(entry.image, key);
122
+ doc.images[id] = {
123
+ ...entry,
124
+ image: blobUrl,
125
+ file_type: "image/png"
126
+ };
127
+ }
128
+ catch {
129
+ delete doc.images[id];
130
+ }
131
+ }));
132
+ }
133
+ catch (err) {
134
+ if (err instanceof Error &&
135
+ err.message.startsWith("No encryption key")) {
136
+ throw err;
137
+ }
138
+ addAlert("error", `${gettext("Could not decrypt chapter:")} ${chapterLabel}. ${gettext("The document may have been re-encrypted with a different password.")}`);
139
+ throw err;
140
+ }
141
+ }));
142
+ }
143
+ function base64ToUint8Array(base64) {
144
+ const binary = atob(base64);
145
+ const bytes = new Uint8Array(binary.length);
146
+ for (let i = 0; i < binary.length; i++) {
147
+ bytes[i] = binary.charCodeAt(i);
148
+ }
149
+ return bytes;
150
+ }
151
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/exporter/tools.ts"],"names":[],"mappings":"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"}
package/dist/i18n.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Book-specific i18n term lookup.
3
+ *
4
+ * Pure lookup table; no UI dependencies.
5
+ */
6
+ export declare function bookTerm(term: string, language: string): string;
7
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA25BH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ/D"}