bookish-press 0.7.4 → 0.8.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 (249) hide show
  1. package/README.md +8 -0
  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 +43 -44
  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/EditableHeader.svelte +4 -6
  169. package/dist/components/page/EditableHeader.svelte.d.ts +7 -18
  170. package/dist/components/page/Edition.svelte +57 -71
  171. package/dist/components/page/Edition.svelte.d.ts +7 -20
  172. package/dist/components/page/EditionLoader.svelte +119 -82
  173. package/dist/components/page/EditionLoader.svelte.d.ts +6 -19
  174. package/dist/components/page/Editions.svelte +26 -31
  175. package/dist/components/page/Editions.svelte.d.ts +5 -17
  176. package/dist/components/page/Glossary.svelte +31 -35
  177. package/dist/components/page/Glossary.svelte.d.ts +3 -16
  178. package/dist/components/page/Header.svelte +43 -49
  179. package/dist/components/page/Header.svelte.d.ts +19 -30
  180. package/dist/components/page/Index.svelte +46 -46
  181. package/dist/components/page/Index.svelte.d.ts +3 -16
  182. package/dist/components/page/Instructions.svelte +2 -2
  183. package/dist/components/page/Instructions.svelte.d.ts +6 -19
  184. package/dist/components/page/License.svelte +13 -7
  185. package/dist/components/page/License.svelte.d.ts +16 -14
  186. package/dist/components/page/Loading.svelte +9 -9
  187. package/dist/components/page/Loading.svelte.d.ts +22 -21
  188. package/dist/components/page/Media.svelte +36 -27
  189. package/dist/components/page/Media.svelte.d.ts +3 -16
  190. package/dist/components/page/MediaPreview.svelte +22 -19
  191. package/dist/components/page/MediaPreview.svelte.d.ts +8 -21
  192. package/dist/components/page/Muted.svelte +4 -1
  193. package/dist/components/page/Muted.svelte.d.ts +5 -28
  194. package/dist/components/page/Outline.svelte +75 -97
  195. package/dist/components/page/Outline.svelte.d.ts +8 -20
  196. package/dist/components/page/Page.svelte +23 -33
  197. package/dist/components/page/Page.svelte.d.ts +7 -20
  198. package/dist/components/page/PageHeader.svelte +2 -2
  199. package/dist/components/page/PageHeader.svelte.d.ts +6 -19
  200. package/dist/components/page/PageParagraph.svelte +4 -1
  201. package/dist/components/page/PageParagraph.svelte.d.ts +5 -28
  202. package/dist/components/page/PossibleChapter.svelte +7 -7
  203. package/dist/components/page/PossibleChapter.svelte.d.ts +3 -16
  204. package/dist/components/page/PossibleReference.svelte +4 -5
  205. package/dist/components/page/PossibleReference.svelte.d.ts +6 -18
  206. package/dist/components/page/Print.svelte +11 -12
  207. package/dist/components/page/Print.svelte.d.ts +3 -16
  208. package/dist/components/page/Publish.svelte +47 -47
  209. package/dist/components/page/Publish.svelte.d.ts +3 -16
  210. package/dist/components/page/Reference.svelte +24 -35
  211. package/dist/components/page/Reference.svelte.d.ts +6 -18
  212. package/dist/components/page/References.svelte +21 -22
  213. package/dist/components/page/References.svelte.d.ts +3 -16
  214. package/dist/components/page/Rows.svelte +4 -1
  215. package/dist/components/page/Rows.svelte.d.ts +5 -28
  216. package/dist/components/page/Search.svelte +58 -60
  217. package/dist/components/page/Search.svelte.d.ts +3 -16
  218. package/dist/components/page/Status.svelte +2 -2
  219. package/dist/components/page/Status.svelte.d.ts +16 -14
  220. package/dist/components/page/SubdomainEditor.svelte +11 -11
  221. package/dist/components/page/SubdomainEditor.svelte.d.ts +16 -14
  222. package/dist/components/page/TableOfContents.svelte +143 -125
  223. package/dist/components/page/TableOfContents.svelte.d.ts +3 -16
  224. package/dist/components/page/TableOfContentsImage.svelte +6 -7
  225. package/dist/components/page/TableOfContentsImage.svelte.d.ts +6 -18
  226. package/dist/components/page/TableOfContentsRow.svelte +32 -32
  227. package/dist/components/page/TableOfContentsRow.svelte.d.ts +10 -22
  228. package/dist/components/page/ThemeEditor.svelte +35 -28
  229. package/dist/components/page/ThemeEditor.svelte.d.ts +3 -16
  230. package/dist/components/page/ThemeEditorPreview.svelte +11 -13
  231. package/dist/components/page/ThemeEditorPreview.svelte.d.ts +5 -17
  232. package/dist/components/page/ThemeSetEditor.svelte +4 -6
  233. package/dist/components/page/ThemeSetEditor.svelte.d.ts +7 -19
  234. package/dist/components/page/ThemeVariableEditor.svelte +9 -11
  235. package/dist/components/page/ThemeVariableEditor.svelte.d.ts +7 -19
  236. package/dist/components/page/Title.svelte +4 -1
  237. package/dist/components/page/Title.svelte.d.ts +5 -28
  238. package/dist/components/page/Unknown.svelte +11 -8
  239. package/dist/components/page/Unknown.svelte.d.ts +5 -17
  240. package/dist/models/Firebase.js +18 -4
  241. package/dist/models/book/Book.js +2 -1
  242. package/dist/models/book/BookMedia.js +1 -2
  243. package/dist/models/book/Chapter.js +3 -2
  244. package/dist/models/book/Edition.d.ts +1 -1
  245. package/dist/models/book/Edition.js +5 -1
  246. package/dist/models/chapter/BlocksNode.js +3 -1
  247. package/dist/models/chapter/BlocksNode.test.js +5 -1
  248. package/dist/models/chapter/Node.test.js +2 -2
  249. package/package.json +34 -22
@@ -1,118 +1,96 @@
1
- <script>import { isMobile } from '../../util/isMobile';
2
- import { onMount } from 'svelte';
3
- import Link from '../Link.svelte';
4
- import { getBase, getDarkMode } from './Contexts';
5
- import DarkToggle from '../controls/DarkToggle.svelte';
6
- export let previous;
7
- export let next;
8
- export let collapse = false;
9
- export let listener = undefined;
1
+ <script lang="ts">import { isMobile } from "../../util/isMobile";
2
+ import { onMount } from "svelte";
3
+ import Link from "../Link.svelte";
4
+ import { getBase, getDarkMode } from "./Contexts";
5
+ import DarkToggle from "../controls/DarkToggle.svelte";
6
+ let {
7
+ previous,
8
+ next,
9
+ collapse = false,
10
+ listener = void 0
11
+ } = $props();
10
12
  let headerString = null;
11
- let headerIndex = -1;
12
- let expanded = false;
13
+ let headerIndex = $state(-1);
14
+ let expanded = $state(false);
13
15
  let dark = getDarkMode();
14
16
  let base = getBase();
15
- let outline = null;
16
- let headers = [];
17
+ let outline = $state(null);
18
+ let headers = $state([]);
17
19
  function toggleExpanded() {
18
- // Don't toggle when in margin mode.
19
- if (!isMobile())
20
- return;
21
- const newExpanded = !expanded;
22
- // Toggle expanded state
23
- expanded = newExpanded;
24
- if (listener)
25
- listener(newExpanded, layout);
20
+ if (!isMobile()) return;
21
+ const newExpanded = !expanded;
22
+ expanded = newExpanded;
23
+ if (listener) listener(newExpanded, layout);
26
24
  }
27
25
  function toggleReadingMode() {
28
- dark.set(!$dark);
26
+ dark.set(!$dark);
29
27
  }
30
28
  function layout() {
31
- position();
32
- highlight();
33
- updateHeaders();
29
+ position();
30
+ highlight();
31
+ updateHeaders();
34
32
  }
35
33
  function updateHeaders() {
36
- // When the outline updates (due to the page its on updating), generate a unique string for the current header outline.
37
- // If it's different from the last rendered state, refresh.
38
- headers = Array.from(document.getElementsByClassName('page-header'));
39
- let newHeaderString = headers.reduce((sum, el) => sum + el.outerHTML, '');
40
- // If the headers change, update the outline.
41
- if (headerString !== newHeaderString)
42
- headerString = newHeaderString;
34
+ headers = Array.from(document.getElementsByClassName("page-header"));
35
+ let newHeaderString = headers.reduce(
36
+ (sum, el) => sum + el.outerHTML,
37
+ ""
38
+ );
39
+ if (headerString !== newHeaderString) headerString = newHeaderString;
43
40
  }
44
41
  function getHighlightThreshold() {
45
- return window.innerHeight / 3;
42
+ return window.innerHeight / 3;
46
43
  }
47
44
  function position() {
48
- // Left align the floating outline with the left margin of the chapter
49
- // and the top of the title, unless we're past it.
50
- let title = document.getElementsByClassName('bookish-chapter-header-text')[0];
51
- // If we found them both...
52
- if (outline && title) {
53
- // If so, remove the inline position so the footer CSS applies.
54
- if (isMobile()) {
55
- outline.style.removeProperty('margin-top');
56
- }
57
- // If not, set the position of the outline.
58
- else {
59
- let titleY = title.getBoundingClientRect().top + window.scrollY;
60
- // If the title is off screen, anchor it to the top of the window. (CSS is set to do this).
61
- if (titleY - 50 < window.scrollY) {
62
- outline.classList.add('outline-fixed-left');
63
- outline.classList.remove('outline-title-left');
64
- }
65
- // Otherwise, anchor it to the title position.
66
- else {
67
- outline.classList.remove('outline-fixed-left');
68
- outline.classList.add('outline-title-left');
69
- }
70
- // Tell any listeners about the repositioning.
71
- if (listener)
72
- listener(false, layout);
73
- }
45
+ let title = document.getElementsByClassName(
46
+ "bookish-chapter-header-text"
47
+ )[0];
48
+ if (outline && title) {
49
+ if (isMobile()) {
50
+ outline.style.removeProperty("margin-top");
51
+ } else {
52
+ let titleY = title.getBoundingClientRect().top + window.scrollY;
53
+ if (titleY - 50 < window.scrollY) {
54
+ outline.classList.add("outline-fixed-left");
55
+ outline.classList.remove("outline-title-left");
56
+ } else {
57
+ outline.classList.remove("outline-fixed-left");
58
+ outline.classList.add("outline-title-left");
59
+ }
60
+ if (listener) listener(false, layout);
74
61
  }
62
+ }
75
63
  }
76
64
  function highlight() {
77
- const top = window.scrollY;
78
- const threshold = getHighlightThreshold();
79
- // Find the header that we're past so we can update the outline.
80
- let indexOfNearestHeaderAbove = -1; // -1 represents the title
81
- Array.from(document.getElementsByClassName('page-header')).forEach((header, index) => {
82
- // Is this a header we care about?
83
- if (header.tagName === 'H1' ||
84
- header.tagName === 'H2' ||
85
- header.tagName === 'H3') {
86
- let rect = header.getBoundingClientRect();
87
- let headerTop = rect.y + top - rect.height;
88
- // Are we past this header?
89
- if (top > headerTop - threshold)
90
- indexOfNearestHeaderAbove = index;
91
- }
92
- });
93
- // Update the outline and progress bar.
94
- headerIndex = indexOfNearestHeaderAbove;
65
+ const top = window.scrollY;
66
+ const threshold = getHighlightThreshold();
67
+ let indexOfNearestHeaderAbove = -1;
68
+ Array.from(document.getElementsByClassName("page-header")).forEach(
69
+ (header, index) => {
70
+ if (header.tagName === "H1" || header.tagName === "H2" || header.tagName === "H3") {
71
+ let rect = header.getBoundingClientRect();
72
+ let headerTop = rect.y + top - rect.height;
73
+ if (top > headerTop - threshold)
74
+ indexOfNearestHeaderAbove = index;
75
+ }
76
+ }
77
+ );
78
+ headerIndex = indexOfNearestHeaderAbove;
95
79
  }
96
80
  onMount(() => {
97
- window.addEventListener('resize', layout);
98
- window.addEventListener('scroll', layout);
99
- // This is a bit hacky: we update the headers on every selection change so we
100
- // can detect any header changes during editing. This isn't necessary during
101
- // reading, and is only necessary when a header is created, updated, or removed,
102
- // but we don't have a precise mechanism to listen to chapter changes, so we do this instead.
103
- document.addEventListener('selectionchange', updateHeaders);
104
- // Position outline after first render.
105
- layout();
106
- // Stop listening!
107
- return () => {
108
- window.removeEventListener('scroll', layout);
109
- window.removeEventListener('resize', layout);
110
- document.removeEventListener('selectionchange', updateHeaders);
111
- };
81
+ window.addEventListener("resize", layout);
82
+ window.addEventListener("scroll", layout);
83
+ document.addEventListener("selectionchange", updateHeaders);
84
+ layout();
85
+ return () => {
86
+ window.removeEventListener("scroll", layout);
87
+ window.removeEventListener("resize", layout);
88
+ document.removeEventListener("selectionchange", updateHeaders);
89
+ };
112
90
  });
113
- let previousLabel = '\u25C0\uFE0E';
114
- let nextLabel = '\u25B6\uFE0E';
115
- let expandLabel = '\u2630';
91
+ let previousLabel = "\u25C0\uFE0E";
92
+ let nextLabel = "\u25B6\uFE0E";
93
+ let expandLabel = "\u2630";
116
94
  </script>
117
95
 
118
96
  <nav
@@ -130,8 +108,8 @@ let expandLabel = '\u2630';
130
108
  ? 'Collapse navigation menu'
131
109
  : 'Expand navigation menu'}
132
110
  tabindex="0"
133
- on:click={headers.length > 0 ? toggleExpanded : undefined}
134
- on:keydown={(event) => {
111
+ onclick={headers.length > 0 ? toggleExpanded : undefined}
112
+ onkeydown={(event) => {
135
113
  if (event.key === 'Enter' || event.key === ' ')
136
114
  toggleExpanded();
137
115
  }}
@@ -1,21 +1,9 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- previous: string | null;
5
- next: string | null;
6
- collapse?: boolean;
7
- listener?: ((expanded: boolean, layout: Function) => void) | undefined;
8
- };
9
- events: {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots: {};
13
- exports?: {} | undefined;
14
- bindings?: string | undefined;
15
- };
16
- export type OutlineProps = typeof __propDef.props;
17
- export type OutlineEvents = typeof __propDef.events;
18
- export type OutlineSlots = typeof __propDef.slots;
19
- export default class Outline extends SvelteComponent<OutlineProps, OutlineEvents, OutlineSlots> {
1
+ interface Props {
2
+ previous: string | null;
3
+ next: string | null;
4
+ collapse?: boolean;
5
+ listener?: ((expanded: boolean, layout: Function) => void) | undefined;
20
6
  }
21
- export {};
7
+ declare const Outline: import("svelte").Component<Props, {}, "">;
8
+ type Outline = ReturnType<typeof Outline>;
9
+ export default Outline;
@@ -1,45 +1,35 @@
1
- <script>import { onMount } from 'svelte';
2
- import Loading from './Loading.svelte';
3
- export let title = undefined;
4
- export let afterLoaded = undefined;
5
- let fontsLoaded = false;
6
- let imagesLoaded = false;
1
+ <script lang="ts">import { onMount } from "svelte";
2
+ import Loading from "./Loading.svelte";
3
+ let { title = void 0, afterLoaded = void 0, children } = $props();
4
+ let fontsLoaded = $state(false);
5
+ let imagesLoaded = $state(false);
7
6
  let lastHeight = 0;
8
7
  let intervalID = null;
9
8
  let mountTime = Date.now();
10
- $: loaded = fontsLoaded && imagesLoaded;
9
+ let loaded = $derived(fontsLoaded && imagesLoaded);
11
10
  function watchLoading() {
12
- const bodyHeight = document.body.clientHeight;
13
- // If the height hasn't changed and images are loaded OR it's been 2 seconds, load.
14
- if ((lastHeight === bodyHeight && imagesAreLoaded()) ||
15
- Date.now() - mountTime > 2000) {
16
- // Stop watching the images
17
- stopWatching();
18
- // Set to loaded to hide the overlay and notify callback if there is one.
19
- imagesLoaded = true;
20
- if (afterLoaded)
21
- afterLoaded();
22
- }
23
- // Remember the last height
24
- lastHeight = bodyHeight;
11
+ const bodyHeight = document.body.clientHeight;
12
+ if (lastHeight === bodyHeight && imagesAreLoaded() || Date.now() - mountTime > 2e3) {
13
+ stopWatching();
14
+ imagesLoaded = true;
15
+ if (afterLoaded) afterLoaded();
16
+ }
17
+ lastHeight = bodyHeight;
25
18
  }
26
19
  function stopWatching() {
27
- if (intervalID)
28
- clearInterval(intervalID);
20
+ if (intervalID) clearInterval(intervalID);
29
21
  }
30
22
  onMount(() => {
31
- // Watch the height of the document and wait until it's been stable for a while before scrolling
32
- // to any targets. We use the data below to monitor the document height over time.
33
- intervalID = setInterval(() => watchLoading(), 50);
34
- document.fonts.ready.then(() => (fontsLoaded = true));
35
- return () => stopWatching();
23
+ intervalID = setInterval(() => watchLoading(), 50);
24
+ document.fonts.ready.then(() => fontsLoaded = true);
25
+ return () => stopWatching();
36
26
  });
37
27
  function imagesAreLoaded() {
38
- let done = true;
39
- Array.from(document.getElementsByTagName('img')).forEach((el) => {
40
- done = done && el.complete;
41
- });
42
- return done;
28
+ let done = true;
29
+ Array.from(document.getElementsByTagName("img")).forEach((el) => {
30
+ done = done && el.complete;
31
+ });
32
+ return done;
43
33
  }
44
34
  </script>
45
35
 
@@ -51,7 +41,7 @@ function imagesAreLoaded() {
51
41
  </svelte:head>
52
42
 
53
43
  <section class={'bookish-page' + (imagesLoaded ? ' loaded' : '')}>
54
- <slot />
44
+ {@render children?.()}
55
45
  </section>
56
46
  <!-- Overlay loading feedback if loading, but still render the page. -->
57
47
  {#if loaded === false}
@@ -1,21 +1,8 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- title?: string | undefined;
5
- afterLoaded?: Function | undefined;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {
11
- default: {};
12
- };
13
- exports?: {} | undefined;
14
- bindings?: string | undefined;
15
- };
16
- export type PageProps = typeof __propDef.props;
17
- export type PageEvents = typeof __propDef.events;
18
- export type PageSlots = typeof __propDef.slots;
19
- export default class Page extends SvelteComponent<PageProps, PageEvents, PageSlots> {
1
+ interface Props {
2
+ title?: string | undefined;
3
+ afterLoaded?: Function | undefined;
4
+ children?: import('svelte').Snippet;
20
5
  }
21
- export {};
6
+ declare const Page: import("svelte").Component<Props, {}, "">;
7
+ type Page = ReturnType<typeof Page>;
8
+ export default Page;
@@ -1,7 +1,7 @@
1
- <script>export let id = null;
1
+ <script lang="ts">let { id = null, children } = $props();
2
2
  </script>
3
3
 
4
- <h2 class="page-header" {id}><slot /></h2>
4
+ <h2 class="page-header" {id}>{@render children?.()}</h2>
5
5
 
6
6
  <style>
7
7
  h2 {
@@ -1,20 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- id?: string | null;
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 PageHeaderProps = typeof __propDef.props;
16
- export type PageHeaderEvents = typeof __propDef.events;
17
- export type PageHeaderSlots = typeof __propDef.slots;
18
- export default class PageHeader extends SvelteComponent<PageHeaderProps, PageHeaderEvents, PageHeaderSlots> {
1
+ interface Props {
2
+ id?: string | null;
3
+ children?: import('svelte').Snippet;
19
4
  }
20
- export {};
5
+ declare const PageHeader: import("svelte").Component<Props, {}, "">;
6
+ type PageHeader = ReturnType<typeof PageHeader>;
7
+ export default PageHeader;
@@ -1,4 +1,7 @@
1
- <p><slot /></p>
1
+ <script lang="ts">let { children } = $props();
2
+ </script>
3
+
4
+ <p>{@render children?.()}</p>
2
5
 
3
6
  <style>
4
7
  p {
@@ -1,29 +1,6 @@
1
- /** @typedef {typeof __propDef.props} PageParagraphProps */
2
- /** @typedef {typeof __propDef.events} PageParagraphEvents */
3
- /** @typedef {typeof __propDef.slots} PageParagraphSlots */
4
- export default class PageParagraph extends SvelteComponent<{
5
- [x: string]: never;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {
9
- default: {};
10
- }> {
1
+ interface Props {
2
+ children?: import('svelte').Snippet;
11
3
  }
12
- export type PageParagraphProps = typeof __propDef.props;
13
- export type PageParagraphEvents = typeof __propDef.events;
14
- export type PageParagraphSlots = typeof __propDef.slots;
15
- import { SvelteComponent } from "svelte";
16
- declare const __propDef: {
17
- props: {
18
- [x: string]: never;
19
- };
20
- events: {
21
- [evt: string]: CustomEvent<any>;
22
- };
23
- slots: {
24
- default: {};
25
- };
26
- exports?: undefined;
27
- bindings?: undefined;
28
- };
29
- export {};
4
+ declare const PageParagraph: import("svelte").Component<Props, {}, "">;
5
+ type PageParagraph = ReturnType<typeof PageParagraph>;
6
+ export default PageParagraph;
@@ -1,10 +1,10 @@
1
- <script>import Chapter from './Chapter.svelte';
2
- import { page } from '$app/stores';
3
- import { getEdition } from './Contexts';
4
- import Unknown from './Unknown.svelte';
5
- $: edition = getEdition();
6
- $: chapterID = $page.params.chapterid;
7
- $: chapter = $edition?.getChapter(chapterID);
1
+ <script lang="ts">import Chapter from "./Chapter.svelte";
2
+ import { page } from "$app/state";
3
+ import { getEdition } from "./Contexts";
4
+ import Unknown from "./Unknown.svelte";
5
+ let edition = $derived(getEdition());
6
+ let chapterID = $derived(page.params.chapterid);
7
+ let chapter = $derived(chapterID === void 0 ? void 0 : $edition?.getChapter(chapterID));
8
8
  </script>
9
9
 
10
10
  {#if chapter}
@@ -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 PossibleChapterProps = typeof __propDef.props;
12
- export type PossibleChapterEvents = typeof __propDef.events;
13
- export type PossibleChapterSlots = typeof __propDef.slots;
14
- export default class PossibleChapter extends SvelteComponent<PossibleChapterProps, PossibleChapterEvents, PossibleChapterSlots> {
15
- }
16
- export {};
1
+ declare const PossibleChapter: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type PossibleChapter = ReturnType<typeof PossibleChapter>;
3
+ export default PossibleChapter;
@@ -1,8 +1,7 @@
1
- <script>import FormatNode from '../../models/chapter/FormatNode';
2
- import Format from '../chapter/Format.svelte';
3
- import Reference from './Reference.svelte';
4
- export let node;
5
- export let edit;
1
+ <script lang="ts">import FormatNode from "../../models/chapter/FormatNode";
2
+ import Format from "../chapter/Format.svelte";
3
+ import Reference from "./Reference.svelte";
4
+ let { node, edit } = $props();
6
5
  </script>
7
6
 
8
7
  {#if node instanceof FormatNode}
@@ -1,21 +1,9 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import FormatNode from '../../models/chapter/FormatNode';
3
2
  import type Ref from '../../models/book/Reference';
4
- declare const __propDef: {
5
- props: {
6
- node: FormatNode | Ref;
7
- edit: boolean;
8
- };
9
- events: {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots: {};
13
- exports?: {} | undefined;
14
- bindings?: string | undefined;
15
- };
16
- export type PossibleReferenceProps = typeof __propDef.props;
17
- export type PossibleReferenceEvents = typeof __propDef.events;
18
- export type PossibleReferenceSlots = typeof __propDef.slots;
19
- export default class PossibleReference extends SvelteComponent<PossibleReferenceProps, PossibleReferenceEvents, PossibleReferenceSlots> {
3
+ interface Props {
4
+ node: FormatNode | Ref;
5
+ edit: boolean;
20
6
  }
21
- export {};
7
+ declare const PossibleReference: import("svelte").Component<Props, {}, "">;
8
+ type PossibleReference = ReturnType<typeof PossibleReference>;
9
+ export default PossibleReference;
@@ -1,16 +1,15 @@
1
- <script>import Chapter from './Chapter.svelte';
2
- import { getEdition } from './Contexts';
3
- import Parser from '../../models/chapter/Parser';
1
+ <script lang="ts">import Chapter from "./Chapter.svelte";
2
+ import { getEdition } from "./Contexts";
3
+ import Parser from "../../models/chapter/Parser";
4
4
  let edition = getEdition();
5
- $: title = $edition
6
- ? [
7
- $edition.getTitle(),
8
- `${$edition.getEditionLabel()} Edition`,
9
- Parser.parseFormat($edition, $edition.getAuthors().at(0) ?? '').toText() + ($edition.getAuthors().length > 1 ? ' et al.' : ''),
10
- ]
11
- .filter(Boolean)
12
- .join(' - ')
13
- : undefined;
5
+ let title = $derived($edition ? [
6
+ $edition.getTitle(),
7
+ `${$edition.getEditionLabel()} Edition`,
8
+ Parser.parseFormat(
9
+ $edition,
10
+ $edition.getAuthors().at(0) ?? ""
11
+ ).toText() + ($edition.getAuthors().length > 1 ? " et al." : "")
12
+ ].filter(Boolean).join(" - ") : void 0);
14
13
  </script>
15
14
 
16
15
  <svelte:head>
@@ -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 PrintProps = typeof __propDef.props;
12
- export type PrintEvents = typeof __propDef.events;
13
- export type PrintSlots = typeof __propDef.slots;
14
- export default class Print extends SvelteComponent<PrintProps, PrintEvents, PrintSlots> {
15
- }
16
- export {};
1
+ declare const Print: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type Print = ReturnType<typeof Print>;
3
+ export default Print;