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,58 +1,52 @@
1
- <script>import Parser from '../../models/chapter/Parser';
2
- import Embed from '../chapter/Embed.svelte';
3
- import BookishEditor from '../editor/BookishEditor.svelte';
4
- import Title from './Title.svelte';
5
- import { onMount } from 'svelte';
6
- import TextEditor from '../editor/TextEditor.svelte';
7
- import { getUser, getEdition, getLeasee, lease } from './Contexts';
8
- import Button from '../app/Button.svelte';
9
- import ConfirmButton from '../editor/ConfirmButton.svelte';
10
- /** True if an author should be able to edit this header. */
11
- export let editable;
12
- export let label;
13
- export let header;
14
- export let id;
15
- export let subtitle = undefined;
16
- export let print = false;
17
- export let tags = undefined;
18
- export let getImage = undefined;
19
- export let setImage = undefined;
20
- /** For saving the revised chapter title*/
21
- export let save = null;
22
- let title = null;
23
- let showReminder = true;
1
+ <script lang="ts">import Parser from "../../models/chapter/Parser";
2
+ import Embed from "../chapter/Embed.svelte";
3
+ import BookishEditor from "../editor/BookishEditor.svelte";
4
+ import Title from "./Title.svelte";
5
+ import { onMount } from "svelte";
6
+ import TextEditor from "../editor/TextEditor.svelte";
7
+ import { getUser, getEdition, getLeasee, lease } from "./Contexts";
8
+ import Button from "../app/Button.svelte";
9
+ import ConfirmButton from "../editor/ConfirmButton.svelte";
10
+ let {
11
+ editable,
12
+ label,
13
+ header,
14
+ id,
15
+ subtitle = void 0,
16
+ print = false,
17
+ tags = void 0,
18
+ getImage = void 0,
19
+ setImage = void 0,
20
+ save = null,
21
+ outline,
22
+ before,
23
+ after
24
+ } = $props();
25
+ let title = $state(null);
26
+ let showReminder = $state(true);
24
27
  let auth = getUser();
25
28
  let edition = getEdition();
26
29
  function updateScrollReminder() {
27
- // If the bottom of the window is below the top of the title, hide the reminder.
28
- if (title)
29
- showReminder =
30
- window.scrollY + window.innerHeight <=
31
- title.getBoundingClientRect().top + window.scrollY;
30
+ if (title)
31
+ showReminder = window.scrollY + window.innerHeight <= title.getBoundingClientRect().top + window.scrollY;
32
32
  }
33
33
  function addCover() {
34
- if (setImage)
35
- setImage('|||||');
34
+ if (setImage) setImage("|||||");
36
35
  }
37
36
  function removeCover() {
38
- if (setImage)
39
- setImage(null);
37
+ if (setImage) setImage(null);
40
38
  }
41
- // When the title becomes visible or hidden, update the scroll reminder.
42
39
  onMount(() => {
43
- const intersectionObserver = new IntersectionObserver(() => updateScrollReminder());
44
- if (title)
45
- intersectionObserver.observe(title);
46
- updateScrollReminder();
47
- // Stop observing when unmounted.
48
- return () => {
49
- if (title)
50
- intersectionObserver.unobserve(title);
51
- };
40
+ const intersectionObserver = new IntersectionObserver(
41
+ () => updateScrollReminder()
42
+ );
43
+ if (title) intersectionObserver.observe(title);
44
+ updateScrollReminder();
45
+ return () => {
46
+ if (title) intersectionObserver.unobserve(title);
47
+ };
52
48
  });
53
- // Get the embed, update when getImage function prop changes.
54
- let embed;
55
- $: embed = getImage ? getImage() : null;
49
+ let embed = $derived(getImage ? getImage() : null);
56
50
  </script>
57
51
 
58
52
  <!-- We key on the chapter ID to avoid laggy updates from image loading -->
@@ -80,7 +74,7 @@ $: embed = getImage ? getImage() : null;
80
74
  />
81
75
  {/if}
82
76
  {#if !print && showReminder}
83
- <div class="bookish-scroll-reminder" />
77
+ <div class="bookish-scroll-reminder"></div>
84
78
  {/if}
85
79
  </div>
86
80
  {:else}
@@ -88,7 +82,7 @@ $: embed = getImage ? getImage() : null;
88
82
  <p>&nbsp;</p>
89
83
  {/if}
90
84
  {#if !print}
91
- <slot name="outline" />
85
+ {@render outline?.()}
92
86
  {/if}
93
87
  {#if editable && getImage && setImage}
94
88
  {#if embed === null}
@@ -104,7 +98,7 @@ $: embed = getImage ? getImage() : null;
104
98
  {/if}
105
99
  {/if}
106
100
  <div bind:this={title} class="bookish-chapter-header-text">
107
- <slot name="before" />
101
+ {@render before?.()}
108
102
  <Title>
109
103
  {#if editable && save}
110
104
  <TextEditor
@@ -123,7 +117,7 @@ $: embed = getImage ? getImage() : null;
123
117
  >{/if}
124
118
  {/if}
125
119
  </Title>
126
- <slot name="after" />
120
+ {@render after?.()}
127
121
  {#if tags}
128
122
  <div
129
123
  >{#each tags as tag}<span class="bookish-tag">{tag}</span
@@ -1,31 +1,20 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- /** True if an author should be able to edit this header. */ editable: boolean;
5
- label: string;
6
- header: string;
7
- id: string;
8
- subtitle?: string | undefined;
9
- print?: boolean;
10
- tags?: string[] | undefined;
11
- getImage?: undefined | (() => string | null);
12
- setImage?: undefined | ((embed: string | null) => Promise<void> | void);
13
- /** For saving the revised chapter title*/ save?: ((text: string) => Promise<void> | void) | null;
14
- };
15
- events: {
16
- [evt: string]: CustomEvent<any>;
17
- };
18
- slots: {
19
- outline: {};
20
- before: {};
21
- after: {};
22
- };
23
- exports?: {} | undefined;
24
- bindings?: string | undefined;
25
- };
26
- export type HeaderProps = typeof __propDef.props;
27
- export type HeaderEvents = typeof __propDef.events;
28
- export type HeaderSlots = typeof __propDef.slots;
29
- export default class Header extends SvelteComponent<HeaderProps, HeaderEvents, HeaderSlots> {
1
+ interface Props {
2
+ /** True if an author should be able to edit this header. */
3
+ editable: boolean;
4
+ label: string;
5
+ header: string;
6
+ id: string;
7
+ subtitle?: string | undefined;
8
+ print?: boolean;
9
+ tags?: string[] | undefined;
10
+ getImage?: undefined | (() => string | null);
11
+ setImage?: undefined | ((embed: string | null) => Promise<void> | void);
12
+ /** For saving the revised chapter title*/
13
+ save?: ((text: string) => Promise<void> | void) | null;
14
+ outline?: import('svelte').Snippet;
15
+ before?: import('svelte').Snippet;
16
+ after?: import('svelte').Snippet;
30
17
  }
31
- export {};
18
+ declare const Header: import("svelte").Component<Props, {}, "">;
19
+ type Header = ReturnType<typeof Header>;
20
+ export default Header;
@@ -1,44 +1,42 @@
1
- <script>import Header from './Header.svelte';
2
- import Outline from './Outline.svelte';
3
- import Page from './Page.svelte';
4
- import Instructions from './Instructions.svelte';
5
- import ChapterIDs from '../../models/book/ChapterID';
6
- import Link from '../Link.svelte';
7
- import { getBase, getEdition, isEditionEditable } from './Contexts';
8
- import { page } from '$app/stores';
9
- import Muted from './Muted.svelte';
10
- import ChapterTitle from './ChapterTitle.svelte';
11
- import ChapterNumber from './ChapterNumber.svelte';
12
- import PageHeader from './PageHeader.svelte';
13
- import Rows from './Rows.svelte';
1
+ <script lang="ts">import Header from "./Header.svelte";
2
+ import Outline from "./Outline.svelte";
3
+ import Page from "./Page.svelte";
4
+ import Instructions from "./Instructions.svelte";
5
+ import ChapterIDs from "../../models/book/ChapterID";
6
+ import Link from "../Link.svelte";
7
+ import { getBase, getEdition, isEditionEditable } from "./Contexts";
8
+ import { page } from "$app/state";
9
+ import Muted from "./Muted.svelte";
10
+ import ChapterTitle from "./ChapterTitle.svelte";
11
+ import ChapterNumber from "./ChapterNumber.svelte";
12
+ import PageHeader from "./PageHeader.svelte";
13
+ import Rows from "./Rows.svelte";
14
14
  let editable = isEditionEditable();
15
15
  let edition = getEdition();
16
16
  let base = getBase();
17
- // What letter are we matching?
18
- $: letter = $page.params.letter;
19
- $: bookIndex = $edition?.getBookIndex() ?? {};
20
- let letters = {};
21
- // Figure out what letters have words
22
- $: {
23
- for (const word of Object.keys(bookIndex).sort((a, b) => a.localeCompare(b)))
24
- letters[word.charAt(0).toLocaleLowerCase()] = true;
25
- }
26
- let words = [];
27
- $: {
28
- words = [];
29
- let count = 0;
30
- Object.keys(bookIndex)
31
- .sort((a, b) => a.localeCompare(b))
32
- .forEach((word) => {
33
- const firstLetter = word.charAt(0).toLowerCase();
34
- if (letter === firstLetter) {
35
- count++;
36
- if (count % 20 === 0)
37
- words.push(true);
38
- words.push(word);
39
- }
40
- });
41
- }
17
+ let letter = $derived(page.params.letter);
18
+ let bookIndex = $derived($edition?.getBookIndex() ?? {});
19
+ let letters = $derived.by(() => {
20
+ const map = {};
21
+ for (const word of Object.keys(bookIndex).sort(
22
+ (a, b) => a.localeCompare(b)
23
+ ))
24
+ map[word.charAt(0).toLocaleLowerCase()] = true;
25
+ return map;
26
+ });
27
+ let words = $derived.by(() => {
28
+ const list = [];
29
+ let count = 0;
30
+ Object.keys(bookIndex).sort((a, b) => a.localeCompare(b)).forEach((word) => {
31
+ const firstLetter = word.charAt(0).toLowerCase();
32
+ if (letter === firstLetter) {
33
+ count++;
34
+ if (count % 20 === 0) list.push(true);
35
+ list.push(word);
36
+ }
37
+ });
38
+ return list;
39
+ });
42
40
  </script>
43
41
 
44
42
  {#if $edition}
@@ -59,14 +57,16 @@ $: {
59
57
  ? edition.set($edition.withHeader(ChapterIDs.IndexID, text))
60
58
  : undefined}
61
59
  >
62
- <Outline
63
- slot="outline"
64
- previous={$edition.getPreviousChapterID(
65
- ChapterIDs.IndexID,
66
- editable,
67
- )}
68
- next={$edition.getNextChapterID(ChapterIDs.IndexID, editable)}
69
- />
60
+ {#snippet outline()}
61
+ <Outline
62
+
63
+ previous={$edition.getPreviousChapterID(
64
+ ChapterIDs.IndexID,
65
+ editable,
66
+ )}
67
+ next={$edition.getNextChapterID(ChapterIDs.IndexID, editable)}
68
+ />
69
+ {/snippet}
70
70
  </Header>
71
71
 
72
72
  <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 IndexProps = typeof __propDef.props;
12
- export type IndexEvents = typeof __propDef.events;
13
- export type IndexSlots = typeof __propDef.slots;
14
- export default class Index extends SvelteComponent<IndexProps, IndexEvents, IndexSlots> {
15
- }
16
- export {};
1
+ declare const Index: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type Index = ReturnType<typeof Index>;
3
+ export default Index;
@@ -1,8 +1,8 @@
1
- <script>export let editable;
1
+ <script lang="ts">let { editable, children } = $props();
2
2
  </script>
3
3
 
4
4
  {#if editable}
5
- <aside class="instructions"><slot /></aside>
5
+ <aside class="instructions">{@render children?.()}</aside>
6
6
  {/if}
7
7
 
8
8
  <style>
@@ -1,20 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- editable: boolean;
5
- };
6
- events: {
7
- [evt: string]: CustomEvent<any>;
8
- };
9
- slots: {
10
- default: {};
11
- };
12
- exports?: {} | undefined;
13
- bindings?: string | undefined;
14
- };
15
- export type InstructionsProps = typeof __propDef.props;
16
- export type InstructionsEvents = typeof __propDef.events;
17
- export type InstructionsSlots = typeof __propDef.slots;
18
- export default class Instructions extends SvelteComponent<InstructionsProps, InstructionsEvents, InstructionsSlots> {
1
+ interface Props {
2
+ editable: boolean;
3
+ children?: import('svelte').Snippet;
19
4
  }
20
- export {};
5
+ declare const Instructions: import("svelte").Component<Props, {}, "">;
6
+ type Instructions = ReturnType<typeof Instructions>;
7
+ export default Instructions;
@@ -1,9 +1,15 @@
1
- <script>import Parser from '../../models/chapter/Parser';
2
- import BookishEditor from '../editor/BookishEditor.svelte';
3
- import Instructions from './Instructions.svelte';
4
- import Format from '../chapter/Format.svelte';
5
- import { getUser, getEdition, getLeasee, isEditionEditable, lease, } from './Contexts';
6
- import EditableHeader from './EditableHeader.svelte';
1
+ <script lang="ts">import Parser from "../../models/chapter/Parser";
2
+ import BookishEditor from "../editor/BookishEditor.svelte";
3
+ import Instructions from "./Instructions.svelte";
4
+ import Format from "../chapter/Format.svelte";
5
+ import {
6
+ getUser,
7
+ getEdition,
8
+ getLeasee,
9
+ isEditionEditable,
10
+ lease
11
+ } from "./Contexts";
12
+ import EditableHeader from "./EditableHeader.svelte";
7
13
  let auth = getUser();
8
14
  let edition = getEdition();
9
15
  let editable = isEditionEditable();
@@ -19,7 +25,7 @@ let editable = isEditionEditable();
19
25
  {#if $edition}
20
26
  <!-- If editable, show acknowledgements even if they're empty, otherwise hide -->
21
27
  {#if editable}
22
- <!-- svelte-ignore missing-declaration -->
28
+ <!-- svelte-ignore missing_declaration -->
23
29
  <BookishEditor
24
30
  text={$edition.getLicense()}
25
31
  parser={(text) =>
@@ -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 LicenseProps = typeof __propDef.props;
12
- export type LicenseEvents = typeof __propDef.events;
13
- export type LicenseSlots = typeof __propDef.slots;
14
- export default class License extends SvelteComponent<LicenseProps, LicenseEvents, LicenseSlots> {
12
+ z_$$bindings?: Bindings;
15
13
  }
16
- export {};
14
+ declare const License: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type License = InstanceType<typeof License>;
18
+ export default License;
@@ -7,15 +7,15 @@
7
7
  : '')}
8
8
  >
9
9
  <div class="bookish-loading-animation">
10
- <div />
11
- <div />
12
- <div />
13
- <div />
14
- <div />
15
- <div />
16
- <div />
17
- <div />
18
- <div />
10
+ <div></div>
11
+ <div></div>
12
+ <div></div>
13
+ <div></div>
14
+ <div></div>
15
+ <div></div>
16
+ <div></div>
17
+ <div></div>
18
+ <div></div>
19
19
  </div>
20
20
  </div>
21
21
 
@@ -1,25 +1,26 @@
1
- /** @typedef {typeof __propDef.props} LoadingProps */
2
- /** @typedef {typeof __propDef.events} LoadingEvents */
3
- /** @typedef {typeof __propDef.slots} LoadingSlots */
4
- export default class Loading extends SvelteComponent<{
1
+ export default Loading;
2
+ type Loading = SvelteComponent<{
5
3
  [x: string]: never;
6
4
  }, {
7
5
  [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type LoadingProps = typeof __propDef.props;
11
- export type LoadingEvents = typeof __propDef.events;
12
- export type LoadingSlots = typeof __propDef.slots;
13
- import { SvelteComponent } from "svelte";
14
- declare const __propDef: {
15
- props: {
16
- [x: string]: never;
17
- };
18
- events: {
19
- [evt: string]: CustomEvent<any>;
20
- };
21
- slots: {};
22
- exports?: undefined;
23
- bindings?: undefined;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
24
8
  };
25
- export {};
9
+ declare const Loading: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ 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> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -1,30 +1,37 @@
1
- <script>import Header from './Header.svelte';
2
- import Outline from './Outline.svelte';
3
- import Page from './Page.svelte';
4
- import Instructions from './Instructions.svelte';
5
- import ChapterIDs from '../../models/book/ChapterID';
6
- import Format from '../chapter/Format.svelte';
7
- import MediaPreview from './MediaPreview.svelte';
8
- import { onMount } from 'svelte';
9
- import { getBase, getBook, getEdition, isBookEditable, isEditionEditable, } from './Contexts';
10
- import PageHeader from './PageHeader.svelte';
11
- import ConfirmButton from '../editor/ConfirmButton.svelte';
1
+ <script lang="ts">import Header from "./Header.svelte";
2
+ import Outline from "./Outline.svelte";
3
+ import Page from "./Page.svelte";
4
+ import Instructions from "./Instructions.svelte";
5
+ import ChapterIDs from "../../models/book/ChapterID";
6
+ import Format from "../chapter/Format.svelte";
7
+ import MediaPreview from "./MediaPreview.svelte";
8
+ import { onMount } from "svelte";
9
+ import {
10
+ getBase,
11
+ getBook,
12
+ getEdition,
13
+ isBookEditable,
14
+ isEditionEditable
15
+ } from "./Contexts";
16
+ import PageHeader from "./PageHeader.svelte";
17
+ import ConfirmButton from "../editor/ConfirmButton.svelte";
12
18
  let book = getBook();
13
19
  let edition = getEdition();
14
20
  let editable = isBookEditable();
15
21
  let base = getBase();
16
- let images = [];
17
- $: embeds = $edition?.getEmbeds() ?? [];
18
- $: media = $book?.getMedia();
22
+ let images = $state([]);
23
+ let embeds = $derived($edition?.getEmbeds() ?? []);
24
+ let media = $derived($book?.getMedia());
19
25
  function updateImages(newImages) {
20
- images = newImages;
26
+ images = newImages;
21
27
  }
22
28
  onMount(() => {
23
- // Listen to image changes.
24
- media?.notify(updateImages);
25
- return () => media?.stopNotifying(updateImages);
29
+ media?.notify(updateImages);
30
+ return () => media?.stopNotifying(updateImages);
26
31
  });
27
- $: unused = images?.filter((image) => !embeds.some((embed) => image.url.includes(embed.embed.getURL())));
32
+ let unused = $derived(images?.filter(
33
+ (image) => !embeds.some((embed) => image.url.includes(embed.embed.getURL()))
34
+ ));
28
35
  </script>
29
36
 
30
37
  {#if $edition}
@@ -45,14 +52,16 @@ $: unused = images?.filter((image) => !embeds.some((embed) => image.url.includes
45
52
  ? edition.set($edition.withHeader(ChapterIDs.MediaID, text))
46
53
  : undefined}
47
54
  >
48
- <Outline
49
- slot="outline"
50
- previous={$edition.getPreviousChapterID(
51
- ChapterIDs.MediaID,
52
- editable,
53
- )}
54
- next={$edition.getNextChapterID(ChapterIDs.MediaID, editable)}
55
- />
55
+ {#snippet outline()}
56
+ <Outline
57
+
58
+ previous={$edition.getPreviousChapterID(
59
+ ChapterIDs.MediaID,
60
+ editable,
61
+ )}
62
+ next={$edition.getNextChapterID(ChapterIDs.MediaID, editable)}
63
+ />
64
+ {/snippet}
56
65
  </Header>
57
66
  <Instructions {editable}>
58
67
  These are the images in the book, in order of appearance. You can
@@ -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 MediaProps = typeof __propDef.props;
12
- export type MediaEvents = typeof __propDef.events;
13
- export type MediaSlots = typeof __propDef.slots;
14
- export default class Media extends SvelteComponent<MediaProps, MediaEvents, MediaSlots> {
15
- }
16
- export {};
1
+ declare const Media: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type Media = ReturnType<typeof Media>;
3
+ export default Media;
@@ -1,23 +1,26 @@
1
- <script>import Link from '../Link.svelte';
2
- import { getBase } from './Contexts';
3
- export let url;
4
- export let alt;
5
- export let chapterID;
1
+ <script lang="ts">import Link from "../Link.svelte";
2
+ import { getBase } from "./Contexts";
3
+ let {
4
+ url,
5
+ alt,
6
+ chapterID,
7
+ children
8
+ } = $props();
6
9
  let base = getBase();
7
- let loaded;
8
- let urlChecked;
9
- $: {
10
- if (urlChecked !== url && typeof Image !== 'undefined') {
11
- urlChecked = url;
12
- let image = new Image();
13
- image.src = url;
14
- loaded = image.complete;
15
- if (!loaded) {
16
- image.onload = () => (loaded = true);
17
- image.onerror = () => (loaded = null);
18
- }
10
+ let loaded = $state();
11
+ let urlChecked = void 0;
12
+ $effect.pre(() => {
13
+ if (urlChecked !== url && typeof Image !== "undefined") {
14
+ urlChecked = url;
15
+ let image = new Image();
16
+ image.src = url;
17
+ loaded = image.complete;
18
+ if (!loaded) {
19
+ image.onload = () => loaded = true;
20
+ image.onerror = () => loaded = null;
19
21
  }
20
- }
22
+ }
23
+ });
21
24
  </script>
22
25
 
23
26
  <figure class={'media-preview'}>
@@ -28,7 +31,7 @@ $: {
28
31
  {:else if loaded === null}
29
32
  <div class="missing">missing image</div>
30
33
  {/if}
31
- <figcaption class="credit"><slot /></figcaption>
34
+ <figcaption class="credit">{@render children?.()}</figcaption>
32
35
  </figure>
33
36
 
34
37
  <style>