bookish-press 0.7.4 → 0.9.2

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 (276) hide show
  1. package/README.md +56 -9
  2. package/dist/components/Auth.svelte +29 -39
  3. package/dist/components/Auth.svelte.d.ts +5 -17
  4. package/dist/components/BookPreview.svelte +14 -20
  5. package/dist/components/BookPreview.svelte.d.ts +6 -18
  6. package/dist/components/Link.svelte +19 -30
  7. package/dist/components/Link.svelte.d.ts +7 -20
  8. package/dist/components/app/BookList.svelte +2 -3
  9. package/dist/components/app/BookList.svelte.d.ts +6 -18
  10. package/dist/components/app/Button.svelte +12 -8
  11. package/dist/components/app/Button.svelte.d.ts +10 -23
  12. package/dist/components/app/Feedback.svelte +4 -4
  13. package/dist/components/app/Feedback.svelte.d.ts +6 -19
  14. package/dist/components/app/Head.svelte +2 -2
  15. package/dist/components/app/Head.svelte.d.ts +6 -19
  16. package/dist/components/app/Large.svelte +4 -1
  17. package/dist/components/app/Large.svelte.d.ts +5 -28
  18. package/dist/components/app/Lead.svelte +4 -1
  19. package/dist/components/app/Lead.svelte.d.ts +5 -28
  20. package/dist/components/app/Link.svelte +12 -9
  21. package/dist/components/app/Link.svelte.d.ts +9 -22
  22. package/dist/components/app/Options.svelte +8 -6
  23. package/dist/components/app/Options.svelte.d.ts +8 -20
  24. package/dist/components/app/Paragraph.svelte +2 -2
  25. package/dist/components/app/Paragraph.svelte.d.ts +6 -19
  26. package/dist/components/app/Section.svelte +4 -1
  27. package/dist/components/app/Section.svelte.d.ts +5 -28
  28. package/dist/components/app/Table.svelte +4 -1
  29. package/dist/components/app/Table.svelte.d.ts +5 -28
  30. package/dist/components/app/TextInput.svelte +10 -8
  31. package/dist/components/app/TextInput.svelte.d.ts +12 -23
  32. package/dist/components/chapter/Atom.svelte +4 -7
  33. package/dist/components/chapter/Atom.svelte.d.ts +6 -19
  34. package/dist/components/chapter/Block.svelte +21 -23
  35. package/dist/components/chapter/Block.svelte.d.ts +5 -17
  36. package/dist/components/chapter/Callout.svelte +3 -5
  37. package/dist/components/chapter/Callout.svelte.d.ts +5 -17
  38. package/dist/components/chapter/CaptionedCode.svelte +12 -14
  39. package/dist/components/chapter/CaptionedCode.svelte.d.ts +5 -17
  40. package/dist/components/chapter/ChapterBody.svelte +14 -17
  41. package/dist/components/chapter/ChapterBody.svelte.d.ts +7 -19
  42. package/dist/components/chapter/ChapterBody.test.d.ts +1 -0
  43. package/dist/components/chapter/ChapterBody.test.js +85 -0
  44. package/dist/components/chapter/Citations.svelte +39 -45
  45. package/dist/components/chapter/Citations.svelte.d.ts +5 -17
  46. package/dist/components/chapter/Code.svelte +158 -155
  47. package/dist/components/chapter/Code.svelte.d.ts +10 -23
  48. package/dist/components/chapter/Comment.svelte +30 -23
  49. package/dist/components/chapter/Comment.svelte.d.ts +5 -17
  50. package/dist/components/chapter/Definition.svelte +36 -34
  51. package/dist/components/chapter/Definition.svelte.d.ts +5 -17
  52. package/dist/components/chapter/Embed.svelte +78 -72
  53. package/dist/components/chapter/Embed.svelte.d.ts +8 -20
  54. package/dist/components/chapter/ErrorMessage.svelte +2 -4
  55. package/dist/components/chapter/ErrorMessage.svelte.d.ts +5 -17
  56. package/dist/components/chapter/Figure.svelte +22 -29
  57. package/dist/components/chapter/Figure.svelte.d.ts +9 -22
  58. package/dist/components/chapter/Footnote.svelte +40 -32
  59. package/dist/components/chapter/Footnote.svelte.d.ts +5 -17
  60. package/dist/components/chapter/Format.svelte +26 -41
  61. package/dist/components/chapter/Format.svelte.d.ts +7 -18
  62. package/dist/components/chapter/InlineCode.svelte +7 -8
  63. package/dist/components/chapter/InlineCode.svelte.d.ts +5 -17
  64. package/dist/components/chapter/Label.svelte +5 -11
  65. package/dist/components/chapter/Label.svelte.d.ts +5 -17
  66. package/dist/components/chapter/LineBreak.svelte +1 -3
  67. package/dist/components/chapter/LineBreak.svelte.d.ts +5 -17
  68. package/dist/components/chapter/Link.svelte +17 -23
  69. package/dist/components/chapter/Link.svelte.d.ts +5 -17
  70. package/dist/components/chapter/List.svelte +9 -9
  71. package/dist/components/chapter/List.svelte.d.ts +6 -17
  72. package/dist/components/chapter/Marginal.svelte +59 -60
  73. package/dist/components/chapter/Marginal.svelte.d.ts +10 -22
  74. package/dist/components/chapter/Paragraph.svelte +8 -23
  75. package/dist/components/chapter/Paragraph.svelte.d.ts +6 -18
  76. package/dist/components/chapter/Positioned.svelte +2 -4
  77. package/dist/components/chapter/Positioned.svelte.d.ts +6 -19
  78. package/dist/components/chapter/Problem.svelte +3 -2
  79. package/dist/components/chapter/Problem.svelte.d.ts +5 -28
  80. package/dist/components/chapter/Python.svelte +45 -58
  81. package/dist/components/chapter/Python.svelte.d.ts +6 -18
  82. package/dist/components/chapter/Quote.svelte +5 -7
  83. package/dist/components/chapter/Quote.svelte.d.ts +5 -17
  84. package/dist/components/chapter/Rule.svelte +1 -3
  85. package/dist/components/chapter/Rule.svelte.d.ts +5 -17
  86. package/dist/components/chapter/Table.svelte +6 -8
  87. package/dist/components/chapter/Table.svelte.d.ts +5 -17
  88. package/dist/components/chapter/Text.svelte +54 -69
  89. package/dist/components/chapter/Text.svelte.d.ts +6 -18
  90. package/dist/components/controls/DarkToggle.svelte +7 -8
  91. package/dist/components/controls/DarkToggle.svelte.d.ts +6 -18
  92. package/dist/components/editor/BookishEditor.svelte +583 -761
  93. package/dist/components/editor/BookishEditor.svelte.d.ts +14 -26
  94. package/dist/components/editor/CalloutEditor.svelte +3 -3
  95. package/dist/components/editor/CalloutEditor.svelte.d.ts +5 -17
  96. package/dist/components/editor/CaptionedCodeEditor.svelte +5 -5
  97. package/dist/components/editor/CaptionedCodeEditor.svelte.d.ts +5 -17
  98. package/dist/components/editor/CaretView.svelte +23 -25
  99. package/dist/components/editor/CaretView.svelte.d.ts +15 -27
  100. package/dist/components/editor/CitationsEditor.svelte +25 -28
  101. package/dist/components/editor/CitationsEditor.svelte.d.ts +5 -17
  102. package/dist/components/editor/ConfirmButton.svelte +9 -6
  103. package/dist/components/editor/ConfirmButton.svelte.d.ts +8 -21
  104. package/dist/components/editor/DefinitionEditor.svelte +11 -15
  105. package/dist/components/editor/DefinitionEditor.svelte.d.ts +5 -17
  106. package/dist/components/editor/EmbedEditor.svelte +44 -45
  107. package/dist/components/editor/EmbedEditor.svelte.d.ts +5 -17
  108. package/dist/components/editor/Icon.svelte +1 -1
  109. package/dist/components/editor/Icon.svelte.d.ts +5 -17
  110. package/dist/components/editor/ImageChooser.svelte +15 -18
  111. package/dist/components/editor/ImageChooser.svelte.d.ts +6 -18
  112. package/dist/components/editor/ImageThumbnail.svelte +29 -24
  113. package/dist/components/editor/ImageThumbnail.svelte.d.ts +7 -19
  114. package/dist/components/editor/InlineCodeEditor.svelte +3 -3
  115. package/dist/components/editor/InlineCodeEditor.svelte.d.ts +5 -17
  116. package/dist/components/editor/LabelEditor.svelte +5 -6
  117. package/dist/components/editor/LabelEditor.svelte.d.ts +5 -17
  118. package/dist/components/editor/LanguageEditor.svelte +4 -5
  119. package/dist/components/editor/LanguageEditor.svelte.d.ts +6 -18
  120. package/dist/components/editor/LinkEditor.svelte +52 -68
  121. package/dist/components/editor/LinkEditor.svelte.d.ts +5 -17
  122. package/dist/components/editor/Note.svelte +4 -1
  123. package/dist/components/editor/Note.svelte.d.ts +5 -28
  124. package/dist/components/editor/Permissions.svelte +36 -34
  125. package/dist/components/editor/Permissions.svelte.d.ts +9 -21
  126. package/dist/components/editor/PositionEditor.svelte +6 -7
  127. package/dist/components/editor/PositionEditor.svelte.d.ts +6 -18
  128. package/dist/components/editor/QuoteEditor.svelte +3 -3
  129. package/dist/components/editor/QuoteEditor.svelte.d.ts +5 -17
  130. package/dist/components/editor/Switch.svelte +16 -11
  131. package/dist/components/editor/Switch.svelte.d.ts +9 -21
  132. package/dist/components/editor/TableEditor.svelte +3 -3
  133. package/dist/components/editor/TableEditor.svelte.d.ts +5 -17
  134. package/dist/components/editor/TextEditor.svelte +74 -87
  135. package/dist/components/editor/TextEditor.svelte.d.ts +13 -25
  136. package/dist/components/editor/Toggle.svelte +18 -21
  137. package/dist/components/editor/Toggle.svelte.d.ts +7 -20
  138. package/dist/components/editor/Toolbar.svelte +140 -145
  139. package/dist/components/editor/Toolbar.svelte.d.ts +5 -17
  140. package/dist/components/editor/ToolbarGroup.svelte +4 -4
  141. package/dist/components/editor/ToolbarGroup.svelte.d.ts +6 -19
  142. package/dist/components/editor/ToolbarSpacer.svelte +1 -1
  143. package/dist/components/editor/ToolbarSpacer.svelte.d.ts +22 -21
  144. package/dist/components/editor/URLEditor.svelte +3 -5
  145. package/dist/components/editor/URLEditor.svelte.d.ts +7 -19
  146. package/dist/components/page/Acknowledgements.svelte +14 -8
  147. package/dist/components/page/Acknowledgements.svelte.d.ts +3 -16
  148. package/dist/components/page/Analytics.svelte +2 -3
  149. package/dist/components/page/Analytics.svelte.d.ts +6 -17
  150. package/dist/components/page/Authors.svelte +29 -29
  151. package/dist/components/page/Authors.svelte.d.ts +11 -23
  152. package/dist/components/page/BookLoader.svelte +47 -43
  153. package/dist/components/page/BookLoader.svelte.d.ts +5 -17
  154. package/dist/components/page/BulkReferenceEditor.svelte +43 -26
  155. package/dist/components/page/BulkReferenceEditor.svelte.d.ts +3 -16
  156. package/dist/components/page/Chapter.svelte +224 -249
  157. package/dist/components/page/Chapter.svelte.d.ts +6 -18
  158. package/dist/components/page/ChapterContext.d.ts +3 -1
  159. package/dist/components/page/ChapterNumber.svelte +4 -1
  160. package/dist/components/page/ChapterNumber.svelte.d.ts +5 -28
  161. package/dist/components/page/ChapterTitle.svelte +4 -4
  162. package/dist/components/page/ChapterTitle.svelte.d.ts +6 -19
  163. package/dist/components/page/Contexts.js +2 -2
  164. package/dist/components/page/DefinitionView.svelte +51 -44
  165. package/dist/components/page/DefinitionView.svelte.d.ts +6 -18
  166. package/dist/components/page/Description.svelte +10 -4
  167. package/dist/components/page/Description.svelte.d.ts +16 -14
  168. package/dist/components/page/DownloadEPUB.svelte +234 -0
  169. package/dist/components/page/DownloadEPUB.svelte.d.ts +3 -0
  170. package/dist/components/page/EditableHeader.svelte +4 -6
  171. package/dist/components/page/EditableHeader.svelte.d.ts +7 -18
  172. package/dist/components/page/Edition.svelte +57 -71
  173. package/dist/components/page/Edition.svelte.d.ts +7 -20
  174. package/dist/components/page/EditionLoader.svelte +119 -82
  175. package/dist/components/page/EditionLoader.svelte.d.ts +6 -19
  176. package/dist/components/page/Editions.svelte +26 -31
  177. package/dist/components/page/Editions.svelte.d.ts +5 -17
  178. package/dist/components/page/Glossary.svelte +31 -35
  179. package/dist/components/page/Glossary.svelte.d.ts +3 -16
  180. package/dist/components/page/Header.svelte +43 -49
  181. package/dist/components/page/Header.svelte.d.ts +19 -30
  182. package/dist/components/page/Index.svelte +46 -46
  183. package/dist/components/page/Index.svelte.d.ts +3 -16
  184. package/dist/components/page/Instructions.svelte +2 -2
  185. package/dist/components/page/Instructions.svelte.d.ts +6 -19
  186. package/dist/components/page/License.svelte +13 -7
  187. package/dist/components/page/License.svelte.d.ts +16 -14
  188. package/dist/components/page/Loading.svelte +9 -9
  189. package/dist/components/page/Loading.svelte.d.ts +22 -21
  190. package/dist/components/page/Media.svelte +36 -27
  191. package/dist/components/page/Media.svelte.d.ts +3 -16
  192. package/dist/components/page/MediaPreview.svelte +22 -19
  193. package/dist/components/page/MediaPreview.svelte.d.ts +8 -21
  194. package/dist/components/page/Muted.svelte +4 -1
  195. package/dist/components/page/Muted.svelte.d.ts +5 -28
  196. package/dist/components/page/Outline.svelte +75 -97
  197. package/dist/components/page/Outline.svelte.d.ts +8 -20
  198. package/dist/components/page/Page.svelte +23 -33
  199. package/dist/components/page/Page.svelte.d.ts +7 -20
  200. package/dist/components/page/PageHeader.svelte +2 -2
  201. package/dist/components/page/PageHeader.svelte.d.ts +6 -19
  202. package/dist/components/page/PageParagraph.svelte +4 -1
  203. package/dist/components/page/PageParagraph.svelte.d.ts +5 -28
  204. package/dist/components/page/PossibleChapter.svelte +7 -7
  205. package/dist/components/page/PossibleChapter.svelte.d.ts +3 -16
  206. package/dist/components/page/PossibleReference.svelte +4 -5
  207. package/dist/components/page/PossibleReference.svelte.d.ts +6 -18
  208. package/dist/components/page/Print.svelte +11 -12
  209. package/dist/components/page/Print.svelte.d.ts +3 -16
  210. package/dist/components/page/Publish.svelte +47 -47
  211. package/dist/components/page/Publish.svelte.d.ts +3 -16
  212. package/dist/components/page/Reference.svelte +24 -35
  213. package/dist/components/page/Reference.svelte.d.ts +6 -18
  214. package/dist/components/page/References.svelte +21 -22
  215. package/dist/components/page/References.svelte.d.ts +3 -16
  216. package/dist/components/page/Rows.svelte +5 -2
  217. package/dist/components/page/Rows.svelte.d.ts +5 -28
  218. package/dist/components/page/Search.svelte +59 -61
  219. package/dist/components/page/Search.svelte.d.ts +3 -16
  220. package/dist/components/page/Status.svelte +2 -2
  221. package/dist/components/page/Status.svelte.d.ts +16 -14
  222. package/dist/components/page/SubdomainEditor.svelte +11 -11
  223. package/dist/components/page/SubdomainEditor.svelte.d.ts +16 -14
  224. package/dist/components/page/TableOfContents.svelte +157 -124
  225. package/dist/components/page/TableOfContents.svelte.d.ts +3 -16
  226. package/dist/components/page/TableOfContentsImage.svelte +6 -7
  227. package/dist/components/page/TableOfContentsImage.svelte.d.ts +6 -18
  228. package/dist/components/page/TableOfContentsRow.svelte +32 -32
  229. package/dist/components/page/TableOfContentsRow.svelte.d.ts +10 -22
  230. package/dist/components/page/ThemeEditor.svelte +35 -28
  231. package/dist/components/page/ThemeEditor.svelte.d.ts +3 -16
  232. package/dist/components/page/ThemeEditorPreview.svelte +11 -13
  233. package/dist/components/page/ThemeEditorPreview.svelte.d.ts +5 -17
  234. package/dist/components/page/ThemeSetEditor.svelte +4 -6
  235. package/dist/components/page/ThemeSetEditor.svelte.d.ts +7 -19
  236. package/dist/components/page/ThemeVariableEditor.svelte +9 -11
  237. package/dist/components/page/ThemeVariableEditor.svelte.d.ts +7 -19
  238. package/dist/components/page/Title.svelte +4 -1
  239. package/dist/components/page/Title.svelte.d.ts +5 -28
  240. package/dist/components/page/Unknown.svelte +11 -8
  241. package/dist/components/page/Unknown.svelte.d.ts +5 -17
  242. package/dist/epub/build.d.ts +39 -0
  243. package/dist/epub/build.js +143 -0
  244. package/dist/epub/build.test.d.ts +1 -0
  245. package/dist/epub/build.test.js +411 -0
  246. package/dist/epub/images.d.ts +79 -0
  247. package/dist/epub/images.js +260 -0
  248. package/dist/epub/images.test.d.ts +1 -0
  249. package/dist/epub/images.test.js +129 -0
  250. package/dist/epub/package.d.ts +75 -0
  251. package/dist/epub/package.js +392 -0
  252. package/dist/epub/stylesheet.test.d.ts +1 -0
  253. package/dist/epub/stylesheet.test.js +243 -0
  254. package/dist/epub/xhtml.d.ts +69 -0
  255. package/dist/epub/xhtml.js +367 -0
  256. package/dist/epub/xhtml.test.d.ts +1 -0
  257. package/dist/epub/xhtml.test.js +283 -0
  258. package/dist/epub/zip.d.ts +35 -0
  259. package/dist/epub/zip.js +202 -0
  260. package/dist/epub/zip.test.d.ts +1 -0
  261. package/dist/epub/zip.test.js +171 -0
  262. package/dist/index.d.ts +1 -0
  263. package/dist/index.js +1 -0
  264. package/dist/models/Firebase.js +18 -4
  265. package/dist/models/book/Book.js +2 -1
  266. package/dist/models/book/BookMedia.js +1 -2
  267. package/dist/models/book/Chapter.js +3 -2
  268. package/dist/models/book/ChapterID.d.ts +1 -1
  269. package/dist/models/book/Edition.d.ts +1 -1
  270. package/dist/models/book/Edition.js +6 -1
  271. package/dist/models/chapter/BlocksNode.js +3 -1
  272. package/dist/models/chapter/BlocksNode.test.js +5 -1
  273. package/dist/models/chapter/Node.test.js +2 -2
  274. package/dist/models/chapter/TextNode.js +8 -5
  275. package/dist/models/chapter/TextNode.test.js +8 -0
  276. package/package.json +36 -22
@@ -1,16 +1,18 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: Record<string, never>;
4
- events: {
5
- [evt: string]: CustomEvent<any>;
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
6
11
  };
7
- slots: {};
8
- exports?: {} | undefined;
9
- bindings?: string | undefined;
10
- };
11
- export type SubdomainEditorProps = typeof __propDef.props;
12
- export type SubdomainEditorEvents = typeof __propDef.events;
13
- export type SubdomainEditorSlots = typeof __propDef.slots;
14
- export default class SubdomainEditor extends SvelteComponent<SubdomainEditorProps, SubdomainEditorEvents, SubdomainEditorSlots> {
12
+ z_$$bindings?: Bindings;
15
13
  }
16
- export {};
14
+ declare const SubdomainEditor: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type SubdomainEditor = InstanceType<typeof SubdomainEditor>;
18
+ export default SubdomainEditor;
@@ -1,72 +1,69 @@
1
- <script>import Instructions from './Instructions.svelte';
2
- import TableOfContentsRow from './TableOfContentsRow.svelte';
3
- import ChapterIDs from '../../models/book/ChapterID';
4
- import Page from './Page.svelte';
5
- import Header from './Header.svelte';
6
- import Outline from './Outline.svelte';
7
- import Link from '../Link.svelte';
8
- import SubdomainEditor from './SubdomainEditor.svelte';
9
- import Description from './Description.svelte';
10
- import Acknowledgements from './Acknowledgements.svelte';
11
- import License from './License.svelte';
12
- import Authors from './Authors.svelte';
13
- import TextEditor from '../editor/TextEditor.svelte';
14
- import Toggle from '../editor/Toggle.svelte';
15
- import { getUser, getBase, getBook, getEdition, isBookEditable, isEditionEditable, isEditionPartiallyEditable, setChapter, } from './Contexts';
16
- import Muted from './Muted.svelte';
17
- import Button from '../app/Button.svelte';
18
- import PageHeader from './PageHeader.svelte';
19
- import Rows from './Rows.svelte';
20
- import PageParagraph from './PageParagraph.svelte';
21
- import Note from '../editor/Note.svelte';
22
- import Permissions from '../editor/Permissions.svelte';
23
- import Publish from './Publish.svelte';
24
- import { onMount } from 'svelte';
25
- import Editions from './Editions.svelte';
26
- import EditableHeader from './EditableHeader.svelte';
1
+ <script lang="ts">import Instructions from "./Instructions.svelte";
2
+ import TableOfContentsRow from "./TableOfContentsRow.svelte";
3
+ import ChapterIDs from "../../models/book/ChapterID";
4
+ import Page from "./Page.svelte";
5
+ import Header from "./Header.svelte";
6
+ import Outline from "./Outline.svelte";
7
+ import Link from "../Link.svelte";
8
+ import SubdomainEditor from "./SubdomainEditor.svelte";
9
+ import Description from "./Description.svelte";
10
+ import Acknowledgements from "./Acknowledgements.svelte";
11
+ import License from "./License.svelte";
12
+ import Authors from "./Authors.svelte";
13
+ import TextEditor from "../editor/TextEditor.svelte";
14
+ import Toggle from "../editor/Toggle.svelte";
15
+ import {
16
+ getUser,
17
+ getBase,
18
+ getBook,
19
+ getEdition,
20
+ isBookEditable,
21
+ isEditionEditable,
22
+ isEditionPartiallyEditable,
23
+ setChapter
24
+ } from "./Contexts";
25
+ import Muted from "./Muted.svelte";
26
+ import Button from "../app/Button.svelte";
27
+ import DownloadEPUB from "./DownloadEPUB.svelte";
28
+ import PageHeader from "./PageHeader.svelte";
29
+ import Rows from "./Rows.svelte";
30
+ import PageParagraph from "./PageParagraph.svelte";
31
+ import Note from "../editor/Note.svelte";
32
+ import Permissions from "../editor/Permissions.svelte";
33
+ import Publish from "./Publish.svelte";
34
+ import { onMount } from "svelte";
35
+ import Editions from "./Editions.svelte";
36
+ import EditableHeader from "./EditableHeader.svelte";
27
37
  let auth = getUser();
28
38
  let book = getBook();
29
39
  let edition = getEdition();
30
40
  let base = getBase();
31
41
  let editable = isEditionEditable();
32
- function getProgressDescription(progress) {
33
- if (progress === null)
34
- return '';
35
- else if (progress === 0)
36
- return '';
37
- else if (progress < 30)
38
- return '; just started';
39
- else if (progress < 70)
40
- return '; halfway';
41
- else if (progress < 95)
42
- return '; almost done';
43
- else
44
- return '; done';
42
+ function getProgressDescription(progress2) {
43
+ if (progress2 === null) return "";
44
+ else if (progress2 === 0) return "";
45
+ else if (progress2 < 30) return "; just started";
46
+ else if (progress2 < 70) return "; halfway";
47
+ else if (progress2 < 95) return "; almost done";
48
+ else return "; done";
45
49
  }
46
- // Get the chapter progress
47
- let progressStorage = typeof localStorage !== 'undefined'
48
- ? localStorage.getItem('chapterProgress')
49
- : null;
50
+ let progressStorage = typeof localStorage !== "undefined" ? localStorage.getItem("chapterProgress") : null;
50
51
  let progress = progressStorage === null ? {} : JSON.parse(progressStorage);
51
- // Is there a colon? Let's make a subtitle
52
- $: title = $edition?.getTitle() ?? '';
53
- let subtitle = undefined;
54
- $: {
55
- let colon = title.indexOf(':');
56
- if (colon >= 0) {
57
- subtitle = title.substring(colon + 1).trim();
58
- title = title.substring(0, colon).trim();
59
- }
60
- }
52
+ let fullTitle = $derived($edition?.getTitle() ?? "");
53
+ let colon = $derived(fullTitle.indexOf(":"));
54
+ let title = $derived(
55
+ colon >= 0 ? fullTitle.substring(0, colon).trim() : fullTitle
56
+ );
57
+ let subtitle = $derived(
58
+ colon >= 0 ? fullTitle.substring(colon + 1).trim() : void 0
59
+ );
61
60
  let waitingForChapter = false;
62
61
  function addChapter() {
63
- if ($edition)
64
- edition.set($edition.withNewChapter());
62
+ if ($edition) edition.set($edition.withNewChapter());
65
63
  }
66
- /** Doing this on mount allows for prerendering an an update. */
67
- let bookURL = '…';
64
+ let bookURL = $state("\u2026");
68
65
  onMount(() => {
69
- bookURL = location.protocol + '//' + location.host + location.pathname;
66
+ bookURL = location.protocol + "//" + location.host + location.pathname;
70
67
  });
71
68
  </script>
72
69
 
@@ -87,36 +84,41 @@ onMount(() => {
87
84
  save={(text) =>
88
85
  $edition ? edition.set($edition.withTitle(text)) : undefined}
89
86
  >
90
- <svelte:fragment slot="before">
87
+ {#snippet before()}
91
88
  {#if editable}
92
89
  <SubdomainEditor />
93
90
  {/if}
94
- </svelte:fragment>
95
- <Outline
96
- slot="outline"
97
- previous={null}
98
- next={$edition.getNextChapterID('', editable)}
99
- />
100
- <div slot="after">
101
- <Authors
102
- editable={isBookEditable()}
103
- authors={$edition.getAuthors()}
104
- add={() =>
105
- $edition
106
- ? edition.set($edition.withAuthor(''))
107
- : undefined}
108
- edit={(index, text) =>
109
- $edition
110
- ? edition.set($edition.withAuthorName(index, text))
111
- : undefined}
112
- remove={(index) =>
113
- $edition
114
- ? edition.set($edition.withoutAuthor(index))
115
- : undefined}
116
- editors={$edition.isEdited()}
91
+ {/snippet}
92
+ {#snippet outline()}
93
+ <Outline
94
+ previous={null}
95
+ next={$edition.getNextChapterID('', editable)}
117
96
  />
118
- <Note>{$edition.getEditionLabel()} edition</Note>
119
- </div>
97
+ {/snippet}
98
+ {#snippet after()}
99
+ <div>
100
+ <Authors
101
+ editable={isBookEditable()}
102
+ authors={$edition.getAuthors()}
103
+ add={() =>
104
+ $edition
105
+ ? edition.set($edition.withAuthor(''))
106
+ : undefined}
107
+ edit={(index, text) =>
108
+ $edition
109
+ ? edition.set(
110
+ $edition.withAuthorName(index, text),
111
+ )
112
+ : undefined}
113
+ remove={(index) =>
114
+ $edition
115
+ ? edition.set($edition.withoutAuthor(index))
116
+ : undefined}
117
+ editors={$edition.isEdited()}
118
+ />
119
+ <Note>{$edition.getEditionLabel()} edition</Note>
120
+ </div>
121
+ {/snippet}
120
122
  </Header>
121
123
 
122
124
  <Instructions {editable}>
@@ -128,8 +130,8 @@ onMount(() => {
128
130
 
129
131
  <Instructions {editable}>
130
132
  This will appear on the <Link to="/read">book browsing</Link>
131
- page and in your table of contents. Write an informative description
132
- of what your book is about.
133
+ page and in your table of contents. Write an informative description of
134
+ what your book is about.
133
135
  </Instructions>
134
136
 
135
137
  <Instructions {editable}>
@@ -180,69 +182,85 @@ onMount(() => {
180
182
  number={$edition.getChapterNumber(chapterID)}
181
183
  forthcoming={chapter.isForthcoming()}
182
184
  >
183
- <span slot="annotation">
184
- {#if editable}
185
- <TextEditor
186
- label={'Chapter section editor'}
187
- text={section ? section : ''}
188
- placeholder="section"
189
- valid={() => undefined}
190
- save={(text) =>
191
- setChapter(
192
- edition,
193
- chapter,
194
- chapter.withSection(text),
195
- )}
196
- />
197
- {:else if section}{section}{/if}
198
- {#if !editable && $auth !== undefined && $auth.user !== null && chapter.uids.includes($auth.user.uid)}
199
- You can edit this chapter.
200
- {/if}
201
- </span>
202
- <span class="etc" slot="etc">
203
- <Muted>
185
+ {#snippet annotation()}
186
+ <span>
204
187
  {#if editable}
205
- <Toggle
206
- on={chapter.isForthcoming()}
207
- save={(on) =>
188
+ <TextEditor
189
+ label={'Chapter section editor'}
190
+ text={section ? section : ''}
191
+ placeholder="section"
192
+ valid={() => undefined}
193
+ save={(text) =>
208
194
  setChapter(
209
195
  edition,
210
196
  chapter,
211
- chapter.asForthcoming(on),
197
+ chapter.withSection(text),
212
198
  )}
213
- >
214
- {etc}
215
- </Toggle>
216
- {:else}
217
- {etc}
199
+ />
200
+ {:else if section}{section}{/if}
201
+ {#if !editable && $auth !== undefined && $auth.user !== null && chapter.uids.includes($auth.user.uid)}
202
+ You can edit this chapter.
218
203
  {/if}
219
- </Muted>
220
- </span>
204
+ </span>
205
+ {/snippet}
206
+ {#snippet etc()}
207
+ <span class="etc">
208
+ <Muted>
209
+ {#if editable}
210
+ <Toggle
211
+ on={chapter.isForthcoming()}
212
+ save={(on) =>
213
+ setChapter(
214
+ edition,
215
+ chapter,
216
+ chapter.asForthcoming(on),
217
+ )}
218
+ >
219
+ {etc}
220
+ </Toggle>
221
+ {:else}
222
+ {etc}
223
+ {/if}
224
+ </Muted>
225
+ </span>
226
+ {/snippet}
221
227
  </TableOfContentsRow>
222
228
  {/each}
223
229
  {#if $edition.hasReferences() || editable}
224
230
  <TableOfContentsRow chapter={ChapterIDs.ReferencesID}>
225
- <span slot="annotation">Everything cited</span>
231
+ {#snippet annotation()}
232
+ <span>Everything cited</span>
233
+ {/snippet}
226
234
  </TableOfContentsRow>
227
235
  {/if}
228
236
  {#if ($edition.getGlossary() && Object.keys($edition.getGlossary()).length > 0) || editable}
229
237
  <TableOfContentsRow chapter={ChapterIDs.GlossaryID}>
230
- <span slot="annotation">Definitions</span>
238
+ {#snippet annotation()}
239
+ <span>Definitions</span>
240
+ {/snippet}
231
241
  </TableOfContentsRow>
232
242
  {/if}
233
243
  <TableOfContentsRow chapter={ChapterIDs.IndexID}>
234
- <span slot="annotation">Common words and where they are</span>
244
+ {#snippet annotation()}
245
+ <span>Common words and where they are</span>
246
+ {/snippet}
235
247
  </TableOfContentsRow>
236
248
  <TableOfContentsRow chapter={ChapterIDs.SearchID}>
237
- <span slot="annotation">Find where words occur</span>
249
+ {#snippet annotation()}
250
+ <span>Find where words occur</span>
251
+ {/snippet}
238
252
  </TableOfContentsRow>
239
253
 
240
254
  <TableOfContentsRow chapter={ChapterIDs.MediaID}>
241
- <span slot="annotation">Images and video in the book</span>
255
+ {#snippet annotation()}
256
+ <span>Images and video in the book</span>
257
+ {/snippet}
242
258
  </TableOfContentsRow>
243
259
  {#if editable}
244
260
  <TableOfContentsRow chapter={ChapterIDs.UnknownID}>
245
- <span slot="annotation">Customize bad links</span>
261
+ {#snippet annotation()}
262
+ <span>Customize bad links</span>
263
+ {/snippet}
246
264
  </TableOfContentsRow>
247
265
  {/if}
248
266
  </Rows>
@@ -263,6 +281,21 @@ onMount(() => {
263
281
  > and then print or export. Long books can take some time to render.
264
282
  </PageParagraph>
265
283
 
284
+ <EditableHeader id="epub" label="Edit e-book header" />
285
+
286
+ <Instructions {editable}>
287
+ This builds an EPUB in the reader's browser. Nothing is uploaded and
288
+ no server is involved.
289
+ </Instructions>
290
+
291
+ <PageParagraph>
292
+ Reading on an e-reader? Build an EPUB of this book. Images are
293
+ shrunk to fit the size you choose, so pick the one closest to your
294
+ device. Long books with many images can take a minute.
295
+ </PageParagraph>
296
+
297
+ <DownloadEPUB />
298
+
266
299
  <EditableHeader id="citation" label="Edit citation header" />
267
300
 
268
301
  <Instructions {editable}>
@@ -1,16 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: Record<string, never>;
4
- events: {
5
- [evt: string]: CustomEvent<any>;
6
- };
7
- slots: {};
8
- exports?: {} | undefined;
9
- bindings?: string | undefined;
10
- };
11
- export type TableOfContentsProps = typeof __propDef.props;
12
- export type TableOfContentsEvents = typeof __propDef.events;
13
- export type TableOfContentsSlots = typeof __propDef.slots;
14
- export default class TableOfContents extends SvelteComponent<TableOfContentsProps, TableOfContentsEvents, TableOfContentsSlots> {
15
- }
16
- export {};
1
+ declare const TableOfContents: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type TableOfContents = ReturnType<typeof TableOfContents>;
3
+ export default TableOfContents;
@@ -1,12 +1,11 @@
1
- <script>import EmbedNode from '../../models/chapter/EmbedNode';
2
- import Parser from '../../models/chapter/Parser';
3
- import { getBase, getEdition } from './Contexts';
4
- import Link from '../Link.svelte';
5
- export let embed;
6
- export let url;
1
+ <script lang="ts">import EmbedNode from "../../models/chapter/EmbedNode";
2
+ import Parser from "../../models/chapter/Parser";
3
+ import { getBase, getEdition } from "./Contexts";
4
+ import Link from "../Link.svelte";
5
+ let { embed, url } = $props();
7
6
  let edition = getEdition();
8
7
  let base = getBase();
9
- $: embedNode = embed === null ? null : Parser.parseEmbed($edition, embed);
8
+ let embedNode = $derived(embed === null ? null : Parser.parseEmbed($edition, embed));
10
9
  </script>
11
10
 
12
11
  {#if embedNode instanceof EmbedNode}
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- embed: string | null;
5
- url: string | undefined;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type TableOfContentsImageProps = typeof __propDef.props;
15
- export type TableOfContentsImageEvents = typeof __propDef.events;
16
- export type TableOfContentsImageSlots = typeof __propDef.slots;
17
- export default class TableOfContentsImage extends SvelteComponent<TableOfContentsImageProps, TableOfContentsImageEvents, TableOfContentsImageSlots> {
1
+ interface Props {
2
+ embed: string | null;
3
+ url: string | undefined;
18
4
  }
19
- export {};
5
+ declare const TableOfContentsImage: import("svelte").Component<Props, {}, "">;
6
+ type TableOfContentsImage = ReturnType<typeof TableOfContentsImage>;
7
+ export default TableOfContentsImage;
@@ -1,42 +1,42 @@
1
- <script>import TableOfContentsImage from './TableOfContentsImage.svelte';
2
- import Chapter from '../../models/book/Chapter';
3
- import Toggle from '../editor/Toggle.svelte';
4
- import ConfirmButton from '../editor/ConfirmButton.svelte';
5
- import { getBase, getEdition, isEditionEditable, setChapter, } from './Contexts';
6
- import Muted from './Muted.svelte';
7
- import ChapterNumber from './ChapterNumber.svelte';
8
- import Button from '../app/Button.svelte';
9
- import ChapterTitle from './ChapterTitle.svelte';
10
- import Authors from './Authors.svelte';
11
- /** Either the chapter or a built in chapter ID */
12
- export let chapter;
13
- export let number = undefined;
14
- export let forthcoming = false;
1
+ <script lang="ts">import TableOfContentsImage from "./TableOfContentsImage.svelte";
2
+ import Chapter from "../../models/book/Chapter";
3
+ import Toggle from "../editor/Toggle.svelte";
4
+ import ConfirmButton from "../editor/ConfirmButton.svelte";
5
+ import {
6
+ getBase,
7
+ getEdition,
8
+ isEditionEditable,
9
+ setChapter
10
+ } from "./Contexts";
11
+ import Muted from "./Muted.svelte";
12
+ import ChapterNumber from "./ChapterNumber.svelte";
13
+ import Button from "../app/Button.svelte";
14
+ import ChapterTitle from "./ChapterTitle.svelte";
15
+ import Authors from "./Authors.svelte";
16
+ let {
17
+ chapter,
18
+ number = void 0,
19
+ forthcoming = false,
20
+ annotation,
21
+ etc
22
+ } = $props();
15
23
  let edition = getEdition();
16
24
  let base = getBase();
17
25
  let editable = isEditionEditable();
18
- $: title =
19
- chapter instanceof Chapter
20
- ? chapter.getTitle()
21
- : $edition
22
- ? $edition.getHeader(chapter)
23
- : '—';
26
+ let title = $derived(chapter instanceof Chapter ? chapter.getTitle() : $edition ? $edition.getHeader(chapter) : "\u2014");
24
27
  function moveUp() {
25
- if ($edition && chapter instanceof Chapter)
26
- edition.set($edition.withMovedChapter(getChapterID(), -1));
28
+ if ($edition && chapter instanceof Chapter)
29
+ edition.set($edition.withMovedChapter(getChapterID(), -1));
27
30
  }
28
31
  function moveDown() {
29
- if ($edition && chapter instanceof Chapter)
30
- edition.set($edition.withMovedChapter(getChapterID(), 1));
32
+ if ($edition && chapter instanceof Chapter)
33
+ edition.set($edition.withMovedChapter(getChapterID(), 1));
31
34
  }
32
35
  function getChapterID() {
33
- if (chapter instanceof Chapter)
34
- return chapter.getID();
35
- else
36
- return chapter;
36
+ if (chapter instanceof Chapter) return chapter.getID();
37
+ else return chapter;
37
38
  }
38
- $: chapterURL =
39
- forthcoming && !editable ? undefined : `${$base}/${getChapterID()}`;
39
+ let chapterURL = $derived(forthcoming && !editable ? void 0 : `${$base}/${getChapterID()}`);
40
40
  </script>
41
41
 
42
42
  <tr class="toc-row" class:forthcoming>
@@ -77,9 +77,9 @@ $: chapterURL =
77
77
  edit={() => {}}
78
78
  remove={() => {}}
79
79
  />{/if}
80
- <p><Muted><em><slot name="annotation" /></em></Muted></p>
80
+ <p><Muted><em>{@render annotation?.()}</em></Muted></p>
81
81
  </td>
82
- <td><slot name="etc" /></td>
82
+ <td>{@render etc?.()}</td>
83
83
  {#if editable && $edition}
84
84
  <td class="controls">
85
85
  {#if chapter instanceof Chapter}
@@ -1,25 +1,13 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import Chapter from '../../models/book/Chapter';
3
2
  import type { ChapterIDKey } from '../../models/book/ChapterID';
4
- declare const __propDef: {
5
- props: {
6
- /** Either the chapter or a built in chapter ID */ chapter: Chapter | ChapterIDKey;
7
- number?: number | undefined;
8
- forthcoming?: boolean;
9
- };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {
14
- annotation: {};
15
- etc: {};
16
- };
17
- exports?: {} | undefined;
18
- bindings?: string | undefined;
19
- };
20
- export type TableOfContentsRowProps = typeof __propDef.props;
21
- export type TableOfContentsRowEvents = typeof __propDef.events;
22
- export type TableOfContentsRowSlots = typeof __propDef.slots;
23
- export default class TableOfContentsRow extends SvelteComponent<TableOfContentsRowProps, TableOfContentsRowEvents, TableOfContentsRowSlots> {
3
+ interface Props {
4
+ /** Either the chapter or a built in chapter ID */
5
+ chapter: Chapter | ChapterIDKey;
6
+ number?: number | undefined;
7
+ forthcoming?: boolean;
8
+ annotation?: import('svelte').Snippet;
9
+ etc?: import('svelte').Snippet;
24
10
  }
25
- export {};
11
+ declare const TableOfContentsRow: import("svelte").Component<Props, {}, "">;
12
+ type TableOfContentsRow = ReturnType<typeof TableOfContentsRow>;
13
+ export default TableOfContentsRow;