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,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type DefinitionNode from '../../models/chapter/DefinitionNode';
3
- declare const __propDef: {
4
- props: {
5
- node: DefinitionNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type DefinitionProps = typeof __propDef.props;
15
- export type DefinitionEvents = typeof __propDef.events;
16
- export type DefinitionSlots = typeof __propDef.slots;
17
- export default class Definition extends SvelteComponent<DefinitionProps, DefinitionEvents, DefinitionSlots> {
2
+ interface Props {
3
+ node: DefinitionNode;
18
4
  }
19
- export {};
5
+ declare const Definition: import("svelte").Component<Props, {}, "">;
6
+ type Definition = ReturnType<typeof Definition>;
7
+ export default Definition;
@@ -1,84 +1,87 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import { storage } from '../../models/Firebase';
4
- import { getCaret, getBook, getBase, isEditionEditable, } from '../page/Contexts';
5
- import Figure from './Figure.svelte';
6
- import { getContext } from 'svelte';
7
- export let node;
8
- export let editable = true;
9
- export let placeholder = '';
10
- export let imageOnly = false;
11
- $: url = node.getURL();
12
- $: description = node.getDescription();
1
+ <script lang="ts">import { storage } from "../../models/Firebase";
2
+ import {
3
+ getCaret,
4
+ getBook,
5
+ getBase,
6
+ isEditionEditable
7
+ } from "../page/Contexts";
8
+ import Figure from "./Figure.svelte";
9
+ import { getContext } from "svelte";
10
+ let {
11
+ node,
12
+ editable = true,
13
+ placeholder = "",
14
+ imageOnly = false
15
+ } = $props();
16
+ let url = $derived(node.getURL());
17
+ let description = $derived(node.getDescription());
13
18
  let caret = getCaret();
14
19
  let book = getBook();
15
20
  let base = getBase();
16
21
  let editionEditable = isEditionEditable();
17
- // Bookish editor should have passed down a way to set the active editor.
18
- let claimCaret = getContext('claimeditor');
19
- let dragging = false;
20
- let dragFeedback = undefined;
21
- let imageError = false;
22
- $: if (node)
23
- imageError = false;
22
+ let claimCaret = getContext("claimeditor");
23
+ let dragging = $state(false);
24
+ let dragFeedback = $state(void 0);
25
+ let imageError = $state(false);
26
+ $effect.pre(() => {
27
+ if (node) imageError = false;
28
+ });
24
29
  function handleDrop(event) {
25
- event.preventDefault();
26
- if (event.dataTransfer?.items) {
27
- // Get the files and convert them to file opens, then filter by allowed file extensions
28
- const imageFiles = [...event.dataTransfer.items]
29
- .filter((item) => item.kind === 'file')
30
- .map((item) => item.getAsFile())
31
- .filter((file) => file !== null && /.*\.(jpg|jpeg|png)/i.test(file.name));
32
- if (imageFiles.length === 0)
33
- dragFeedback = 'Only JPEG or PNG images are allowed.';
34
- else if (imageFiles.length > 1)
35
- dragFeedback = 'Only one image at a time please!';
36
- else {
37
- dragFeedback = 'Uploading…';
38
- const file = imageFiles[0];
39
- const media = $book?.getMedia();
40
- if (file === null)
41
- return;
42
- if (storage === undefined)
43
- return;
44
- if (media === undefined)
45
- return;
46
- media.upload(file, (progress) => (dragFeedback = `${progress}% done`), (error) => {
47
- dragFeedback = error;
48
- dragging = false;
49
- }, (url, thumbnails) => {
50
- // Upload completed successfully, now we can get the download URL
51
- $caret?.edit(node, node.withURLs(url, thumbnails).withDescription(''));
52
- dragging = false;
53
- dragFeedback = undefined;
54
- });
30
+ event.preventDefault();
31
+ if (event.dataTransfer?.items) {
32
+ const imageFiles = [...event.dataTransfer.items].filter((item) => item.kind === "file").map((item) => item.getAsFile()).filter(
33
+ (file) => file !== null && /.*\.(jpg|jpeg|png)/i.test(file.name)
34
+ );
35
+ if (imageFiles.length === 0)
36
+ dragFeedback = "Only JPEG or PNG images are allowed.";
37
+ else if (imageFiles.length > 1)
38
+ dragFeedback = "Only one image at a time please!";
39
+ else {
40
+ dragFeedback = "Uploading\u2026";
41
+ const file = imageFiles[0];
42
+ const media = $book?.getMedia();
43
+ if (file === null) return;
44
+ if (storage === void 0) return;
45
+ if (media === void 0) return;
46
+ media.upload(
47
+ file,
48
+ (progress) => dragFeedback = `${progress}% done`,
49
+ (error) => {
50
+ dragFeedback = error;
51
+ dragging = false;
52
+ },
53
+ (url2, thumbnails) => {
54
+ $caret?.edit(
55
+ node,
56
+ node.withURLs(url2, thumbnails).withDescription("")
57
+ );
58
+ dragging = false;
59
+ dragFeedback = void 0;
55
60
  }
61
+ );
56
62
  }
63
+ }
57
64
  }
58
65
  function handleDrag(event) {
59
- event?.preventDefault();
60
- dragging = true;
61
- dragFeedback = 'Drop to upload…';
62
- // If we have a way to claim the caret, claim it, since we want to be able to make an edit with the active caret.
63
- if (claimCaret)
64
- claimCaret();
66
+ event?.preventDefault();
67
+ dragging = true;
68
+ dragFeedback = "Drop to upload\u2026";
69
+ if (claimCaret) claimCaret();
65
70
  }
66
71
  function handleDragLeave(event) {
67
- if (event.target !== event.currentTarget)
68
- return;
69
- event?.preventDefault();
70
- dragging = false;
71
- dragFeedback = undefined;
72
+ if (event.target !== event.currentTarget) return;
73
+ event?.preventDefault();
74
+ dragging = false;
75
+ dragFeedback = void 0;
72
76
  }
73
77
  function handleLoad() {
74
- imageError = false;
78
+ imageError = false;
75
79
  }
76
80
  function handleError() {
77
- imageError = true;
81
+ imageError = true;
78
82
  }
79
83
  function handleClick() {
80
- if (claimCaret)
81
- claimCaret();
84
+ if (claimCaret) claimCaret();
82
85
  }
83
86
  </script>
84
87
 
@@ -101,15 +104,18 @@ function handleClick() {
101
104
  class={`bookish-figure-unspecified ${
102
105
  dragging ? 'bookish-figure-dragging' : ''
103
106
  }`}
104
- on:click|preventDefault={handleClick}
107
+ onclick={(event) => {
108
+ event.preventDefault();
109
+ handleClick();
110
+ }}
105
111
  tabindex="0"
106
- on:keydown={(event) =>
112
+ onkeydown={(event) =>
107
113
  event.key === ' ' || event.key === 'Enter'
108
114
  ? handleClick()
109
115
  : undefined}
110
- on:drop|preventDefault={handleDrop}
111
- on:dragover={handleDrag}
112
- on:dragleave={handleDragLeave}
116
+ ondrop={handleDrop}
117
+ ondragover={handleDrag}
118
+ ondragleave={handleDragLeave}
113
119
  >{dragFeedback !== undefined
114
120
  ? dragFeedback
115
121
  : placeholder.length > 0
@@ -128,7 +134,7 @@ function handleClick() {
128
134
  frameBorder="0"
129
135
  allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
130
136
  allowFullScreen
131
- />
137
+ ></iframe>
132
138
  </article>
133
139
  {:else}
134
140
  <img
@@ -141,8 +147,8 @@ function handleClick() {
141
147
  ? '(min-width: 1024px) 1024px, 320px'
142
148
  : undefined}
143
149
  alt={description}
144
- on:load={handleLoad}
145
- on:error={handleError}
150
+ onload={handleLoad}
151
+ onerror={handleError}
146
152
  />
147
153
  {/if}
148
154
  </Figure>
@@ -1,22 +1,10 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type EmbedNode from '../../models/chapter/EmbedNode';
3
- declare const __propDef: {
4
- props: {
5
- node: EmbedNode;
6
- editable?: boolean;
7
- placeholder?: string;
8
- imageOnly?: boolean;
9
- };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- exports?: {} | undefined;
15
- bindings?: string | undefined;
16
- };
17
- export type EmbedProps = typeof __propDef.props;
18
- export type EmbedEvents = typeof __propDef.events;
19
- export type EmbedSlots = typeof __propDef.slots;
20
- export default class Embed extends SvelteComponent<EmbedProps, EmbedEvents, EmbedSlots> {
2
+ interface Props {
3
+ node: EmbedNode;
4
+ editable?: boolean;
5
+ placeholder?: string;
6
+ imageOnly?: boolean;
21
7
  }
22
- export {};
8
+ declare const Embed: import("svelte").Component<Props, {}, "">;
9
+ type Embed = ReturnType<typeof Embed>;
10
+ export default Embed;
@@ -1,7 +1,5 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import Problem from './Problem.svelte';
4
- export let node;
1
+ <script lang="ts">import Problem from "./Problem.svelte";
2
+ let { node } = $props();
5
3
  </script>
6
4
 
7
5
  <Problem
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type ErrorNode from '../../models/chapter/ErrorNode';
3
- declare const __propDef: {
4
- props: {
5
- node: ErrorNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type ErrorMessageProps = typeof __propDef.props;
15
- export type ErrorMessageEvents = typeof __propDef.events;
16
- export type ErrorMessageSlots = typeof __propDef.slots;
17
- export default class ErrorMessage extends SvelteComponent<ErrorMessageProps, ErrorMessageEvents, ErrorMessageSlots> {
2
+ interface Props {
3
+ node: ErrorNode;
18
4
  }
19
- export {};
5
+ declare const ErrorMessage: import("svelte").Component<Props, {}, "">;
6
+ type ErrorMessage = ReturnType<typeof ErrorMessage>;
7
+ export default ErrorMessage;
@@ -1,48 +1,41 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import Format from './Format.svelte';
4
- import Positioned from './Positioned.svelte';
5
- import { getCaret, isChapterEditable } from '../page/Contexts';
6
- export let node;
7
- export let caption;
8
- export let credit = undefined;
9
- export let focusable = true;
1
+ <script lang="ts">import Format from "./Format.svelte";
2
+ import Positioned from "./Positioned.svelte";
3
+ import { getCaret, isChapterEditable } from "../page/Contexts";
4
+ let {
5
+ node,
6
+ caption,
7
+ credit = void 0,
8
+ focusable = true,
9
+ children
10
+ } = $props();
10
11
  let editable = isChapterEditable();
11
12
  let caret = getCaret();
12
- $: selected = $caret?.range?.start.node === node;
13
+ let selected = $derived($caret?.range?.start.node === node);
13
14
  function focusFigure() {
14
- if (!editable || $caret === undefined)
15
- return;
16
- // if (node instanceof EmbedNode) {
17
- // return $caret.setCaret({
18
- // start: { node, index: 0 },
19
- // end: { node, index: 0 },
20
- // });
21
- // } else {
22
- const firstCaret = node.getFirstCaret();
23
- if (firstCaret)
24
- $caret.setCaret({
25
- start: firstCaret,
26
- end: firstCaret,
27
- });
28
- // }
15
+ if (!editable || $caret === void 0) return;
16
+ const firstCaret = node.getFirstCaret();
17
+ if (firstCaret)
18
+ $caret.setCaret({
19
+ start: firstCaret,
20
+ end: firstCaret
21
+ });
29
22
  }
30
23
  </script>
31
24
 
32
25
  <Positioned position={node.getPosition()}>
33
26
  <figure class="bookish-figure" data-nodeid={node.nodeID}>
34
- <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
27
+ <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
35
28
  <div
36
29
  class:selected
37
30
  role={focusable ? 'button' : undefined}
38
31
  tabindex={focusable ? 0 : undefined}
39
- on:mousedown={focusable ? focusFigure : null}
40
- on:keydown={(event) =>
32
+ onmousedown={focusable ? focusFigure : null}
33
+ onkeydown={(event) =>
41
34
  event.key === ' ' || event.key === 'Enter'
42
35
  ? focusFigure()
43
36
  : null}
44
37
  >
45
- <slot />
38
+ {@render children?.()}
46
39
  </div>
47
40
  {#if caption !== undefined}
48
41
  <figcaption class="caption">
@@ -1,27 +1,14 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type TableNode from '../../models/chapter/TableNode';
3
2
  import type EmbedNode from '../../models/chapter/EmbedNode';
4
3
  import type CodeNode from '../../models/chapter/CodeNode';
5
4
  import type FormatNode from '../../models/chapter/FormatNode';
6
- declare const __propDef: {
7
- props: {
8
- node: TableNode | EmbedNode | CodeNode;
9
- caption: FormatNode | undefined;
10
- credit?: FormatNode | undefined;
11
- focusable?: boolean;
12
- };
13
- events: {
14
- [evt: string]: CustomEvent<any>;
15
- };
16
- slots: {
17
- default: {};
18
- };
19
- exports?: {} | undefined;
20
- bindings?: string | undefined;
21
- };
22
- export type FigureProps = typeof __propDef.props;
23
- export type FigureEvents = typeof __propDef.events;
24
- export type FigureSlots = typeof __propDef.slots;
25
- export default class Figure extends SvelteComponent<FigureProps, FigureEvents, FigureSlots> {
5
+ interface Props {
6
+ node: TableNode | EmbedNode | CodeNode;
7
+ caption: FormatNode | undefined;
8
+ credit?: FormatNode | undefined;
9
+ focusable?: boolean;
10
+ children?: import('svelte').Snippet;
26
11
  }
27
- export {};
12
+ declare const Figure: import("svelte").Component<Props, {}, "">;
13
+ type Figure = ReturnType<typeof Figure>;
14
+ export default Figure;
@@ -1,26 +1,32 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import Atom from './Atom.svelte';
4
- import Marginal from './Marginal.svelte';
5
- import Format from './Format.svelte';
6
- import { getChapter, getEdition, getCaret, getRoot, } from '../page/Contexts';
7
- import { afterUpdate } from 'svelte';
8
- export let node;
9
- $: content = node.getMeta();
1
+ <script lang="ts">import Atom from "./Atom.svelte";
2
+ import Marginal from "./Marginal.svelte";
3
+ import Format from "./Format.svelte";
4
+ import {
5
+ getChapter,
6
+ getEdition,
7
+ getCaret,
8
+ getRoot
9
+ } from "../page/Contexts";
10
+ let { node } = $props();
11
+ let meta = $derived(node.getMeta());
10
12
  let caret = getCaret();
11
13
  let chapter = getChapter();
12
14
  let edition = getEdition();
13
15
  let root = getRoot();
14
- // What footnote number is this?
15
- $: number = $root.getFootnotes().indexOf(node);
16
- $: letter =
17
- number === undefined ? undefined : $edition?.getFootnoteSymbol(number);
18
- $: focused =
19
- $caret &&
20
- $caret.range &&
21
- $caret.range.start.node.hasAncestor($root, node);
22
- // Position the marginals on every render.
23
- afterUpdate(() => $chapter?.layoutMarginals());
16
+ let number = $derived($root.getFootnotes().indexOf(node));
17
+ let letter = $derived(
18
+ number === void 0 ? void 0 : $edition?.getFootnoteSymbol(number)
19
+ );
20
+ let focused = $derived(
21
+ $caret && $caret.range && $caret.range.start.node.hasAncestor($root, node)
22
+ );
23
+ $effect(() => {
24
+ void meta;
25
+ void number;
26
+ void letter;
27
+ void focused;
28
+ $chapter?.requestLayout();
29
+ });
24
30
  </script>
25
31
 
26
32
  <Atom {node}>
@@ -33,19 +39,21 @@ afterUpdate(() => $chapter?.layoutMarginals());
33
39
  <!-- We prevent default on the span to prevent mouse events from bubbling up to the footnote symbol. This is key for two reasons:
34
40
  1) clicks on the footnote select the footnote atom node itself
35
41
  2) we want to be able to click on footnote text and we can't do that if the footnote sets the caret to the atom after clicks. -->
36
- <sup slot="interactor" class="bookish-footnote-symbol">{letter}</sup
37
- >
38
- <span
39
- slot="content"
40
- class={`bookish-footnote ${
41
- focused ? 'bookish-footnote-focused' : ''
42
- }`}
43
- >
44
- <sup class="bookish-footnote-symbol">{letter}</sup><Format
45
- node={content}
46
- placeholder="footnote"
47
- /></span
48
- >
42
+ {#snippet interactor()}
43
+ <sup class="bookish-footnote-symbol">{letter}</sup>
44
+ {/snippet}
45
+ {#snippet content()}
46
+ <span
47
+ class={`bookish-footnote ${
48
+ focused ? 'bookish-footnote-focused' : ''
49
+ }`}
50
+ >
51
+ <sup class="bookish-footnote-symbol">{letter}</sup><Format
52
+ node={meta}
53
+ placeholder="footnote"
54
+ /></span
55
+ >
56
+ {/snippet}
49
57
  </Marginal>
50
58
  </span>
51
59
  </Atom>
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type FootnoteNode from '../../models/chapter/FootnoteNode';
3
- declare const __propDef: {
4
- props: {
5
- node: FootnoteNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type FootnoteProps = typeof __propDef.props;
15
- export type FootnoteEvents = typeof __propDef.events;
16
- export type FootnoteSlots = typeof __propDef.slots;
17
- export default class Footnote extends SvelteComponent<FootnoteProps, FootnoteEvents, FootnoteSlots> {
2
+ interface Props {
3
+ node: FootnoteNode;
18
4
  }
19
- export {};
5
+ declare const Footnote: import("svelte").Component<Props, {}, "">;
6
+ type Footnote = ReturnType<typeof Footnote>;
7
+ export default Footnote;
@@ -1,44 +1,29 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import FormatNode from '../../models/chapter/FormatNode';
4
- import CitationsNode from '../../models/chapter/CitationsNode';
5
- import CommentNode from '../../models/chapter/CommentNode';
6
- import DefinitionNode from '../../models/chapter/DefinitionNode';
7
- import FootnoteNode from '../../models/chapter/FootnoteNode';
8
- import InlineCodeNode from '../../models/chapter/InlineCodeNode';
9
- import LabelNode from '../../models/chapter/LabelNode';
10
- import LinkNode from '../../models/chapter/LinkNode';
11
- import TextNode from '../../models/chapter/TextNode';
12
- import Problem from './Problem.svelte';
13
- import Citations from './Citations.svelte';
14
- import Definition from './Definition.svelte';
15
- import Footnote from './Footnote.svelte';
16
- import InlineCode from './InlineCode.svelte';
17
- import Label from './Label.svelte';
18
- import Link from './Link.svelte';
19
- import Comment from './Comment.svelte';
20
- import Text from './Text.svelte';
21
- import Format from './Format.svelte';
22
- import { isChapterEditable, isEditionEditable } from '../page/Contexts';
23
- import LineBreakNode from '../../models/chapter/LineBreakNode';
24
- import LineBreak from './LineBreak.svelte';
25
- export let node;
26
- export let placeholder = undefined;
27
- $: format = node.getFormat();
28
- $: tag =
29
- format === '*'
30
- ? 'strong'
31
- : format === '_'
32
- ? 'em'
33
- : format === '^'
34
- ? 'sup'
35
- : format === 'v'
36
- ? 'sub'
37
- : 'span';
38
- $: showPlaceholder =
39
- node.isEmptyText() &&
40
- placeholder !== undefined &&
41
- (isChapterEditable() || isEditionEditable());
1
+ <script lang="ts">import FormatNode from "../../models/chapter/FormatNode";
2
+ import CitationsNode from "../../models/chapter/CitationsNode";
3
+ import CommentNode from "../../models/chapter/CommentNode";
4
+ import DefinitionNode from "../../models/chapter/DefinitionNode";
5
+ import FootnoteNode from "../../models/chapter/FootnoteNode";
6
+ import InlineCodeNode from "../../models/chapter/InlineCodeNode";
7
+ import LabelNode from "../../models/chapter/LabelNode";
8
+ import LinkNode from "../../models/chapter/LinkNode";
9
+ import TextNode from "../../models/chapter/TextNode";
10
+ import Problem from "./Problem.svelte";
11
+ import Citations from "./Citations.svelte";
12
+ import Definition from "./Definition.svelte";
13
+ import Footnote from "./Footnote.svelte";
14
+ import InlineCode from "./InlineCode.svelte";
15
+ import Label from "./Label.svelte";
16
+ import Link from "./Link.svelte";
17
+ import Comment from "./Comment.svelte";
18
+ import Text from "./Text.svelte";
19
+ import Format from "./Format.svelte";
20
+ import { isChapterEditable, isEditionEditable } from "../page/Contexts";
21
+ import LineBreakNode from "../../models/chapter/LineBreakNode";
22
+ import LineBreak from "./LineBreak.svelte";
23
+ let { node, placeholder = void 0 } = $props();
24
+ let format = $derived(node.getFormat());
25
+ let tag = $derived(format === "*" ? "strong" : format === "_" ? "em" : format === "^" ? "sup" : format === "v" ? "sub" : "span");
26
+ let showPlaceholder = $derived(node.isEmptyText() && placeholder !== void 0 && (isChapterEditable() || isEditionEditable()));
42
27
  </script>
43
28
 
44
29
  <svelte:element
@@ -1,20 +1,9 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import FormatNode from '../../models/chapter/FormatNode';
3
- declare const __propDef: {
4
- props: {
5
- node: FormatNode;
6
- placeholder?: string | undefined;
7
- };
8
- events: {
9
- [evt: string]: CustomEvent<any>;
10
- };
11
- slots: {};
12
- exports?: {} | undefined;
13
- bindings?: string | undefined;
14
- };
15
- export type FormatProps = typeof __propDef.props;
16
- export type FormatEvents = typeof __propDef.events;
17
- export type FormatSlots = typeof __propDef.slots;
18
- export default class Format extends SvelteComponent<FormatProps, FormatEvents, FormatSlots> {
2
+ import Format from './Format.svelte';
3
+ interface Props {
4
+ node: FormatNode;
5
+ placeholder?: string | undefined;
19
6
  }
20
- export {};
7
+ declare const Format: import("svelte").Component<Props, {}, "">;
8
+ type Format = ReturnType<typeof Format>;
9
+ export default Format;
@@ -1,9 +1,7 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import { isChapterEditable } from '../page/Contexts';
4
- import Code from './Code.svelte';
5
- import Text from './Text.svelte';
6
- export let node;
1
+ <script lang="ts">import { isChapterEditable } from "../page/Contexts";
2
+ import Code from "./Code.svelte";
3
+ import Text from "./Text.svelte";
4
+ let { node } = $props();
7
5
  let editable = isChapterEditable();
8
6
  </script>
9
7
 
@@ -17,6 +15,7 @@ let editable = isChapterEditable();
17
15
  editable={false}
18
16
  inline={true}
19
17
  language={node.getMeta()}
20
- nodeID={node.getText().nodeID}>{node.getText().getText()}</Code
21
- >
18
+ nodeID={node.getText().nodeID}
19
+ code={node.getText().getText()}
20
+ />
22
21
  {/if}