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,74 +1,60 @@
1
- <script context="module">"use strict";
2
- </script>
1
+ <script module lang="ts"></script>
3
2
 
4
- <script>import { afterUpdate, onMount } from 'svelte';
5
- import Code from './Code.svelte';
6
- export let node;
7
- export let startCode;
8
- // Start with whatever code was passed in.
9
- let code = startCode;
10
- // What is currently rendered to the console (not always program output).
11
- let output = '';
12
- // Whether the runtime is loaded. Initialized based on presence of global.
13
- let loaded = skulptLoaded();
14
- let ref = null;
3
+ <script lang="ts">import { onMount, untrack } from "svelte";
4
+ import Code from "./Code.svelte";
5
+ let { node, startCode } = $props();
6
+ let code = $state(untrack(() => startCode));
7
+ let output = $state("");
8
+ let loaded = $state(skulptLoaded());
9
+ let ref = $state(null);
15
10
  onMount(() => {
16
- // Dynamically load the script to minimize payload and reduce index complexity.
17
- if (document.getElementById('skulpt') === null) {
18
- let script = document.createElement('script');
19
- script.type = 'text/javascript';
20
- script.async = true;
21
- script.id = 'skulpt';
22
- script.onload = () => (loaded = true);
23
- script.src =
24
- 'https://cdn.jsdelivr.net/combine/npm/skulpt@1.2.0/dist/skulpt.min.js,npm/skulpt@1.2.0/dist/skulpt-stdlib.min.js';
25
- document.getElementsByTagName('head')[0].appendChild(script);
26
- }
11
+ if (document.getElementById("skulpt") === null) {
12
+ let script = document.createElement("script");
13
+ script.type = "text/javascript";
14
+ script.async = true;
15
+ script.id = "skulpt";
16
+ script.onload = () => loaded = true;
17
+ script.src = "https://cdn.jsdelivr.net/combine/npm/skulpt@1.2.0/dist/skulpt.min.js,npm/skulpt@1.2.0/dist/skulpt-stdlib.min.js";
18
+ document.getElementsByTagName("head")[0].appendChild(script);
19
+ }
27
20
  });
28
- // Always scroll to the bottom of the output.
29
- afterUpdate(() => {
30
- if (ref) {
31
- let outputView = ref.querySelector('.bookish-python-output');
32
- if (outputView)
33
- outputView.scrollTop = outputView.scrollHeight;
34
- }
21
+ $effect(() => {
22
+ void output;
23
+ if (ref) {
24
+ let outputView = ref.querySelector(".bookish-python-output");
25
+ if (outputView) outputView.scrollTop = outputView.scrollHeight;
26
+ }
35
27
  });
36
28
  function skulptLoaded() {
37
- return typeof window !== 'undefined' && window.hasOwnProperty('Sk');
29
+ return typeof window !== "undefined" && window.hasOwnProperty("Sk");
38
30
  }
39
31
  function reset() {
40
- code = startCode;
32
+ code = startCode;
41
33
  }
42
34
  function handleEdit(newCode) {
43
- code = newCode;
35
+ code = newCode;
44
36
  }
45
37
  function handleOutput(out) {
46
- // Update the state to re-render.
47
- output += out;
38
+ output += out;
48
39
  }
49
40
  function start() {
50
- if (skulptLoaded()) {
51
- // Communicate that executing is starting, wait a second, then execute the program.
52
- // This is important in case the user wants to run it again; it provides confirmation that it was run again.
53
- output = 'Executing...';
54
- setTimeout(() => execute(), 500);
55
- }
41
+ if (skulptLoaded()) {
42
+ output = "Executing...";
43
+ setTimeout(() => execute(), 500);
44
+ }
56
45
  }
57
46
  function execute() {
58
- // Reset the output, run the code, and update it's output.
59
- output = '';
60
- if (Sk) {
61
- Sk.configure({ output: handleOutput });
62
- try {
63
- if (Sk)
64
- Sk.importMainWithBody('<stdin>', false, code, true);
65
- }
66
- catch (error) {
67
- handleOutput(error);
68
- }
47
+ output = "";
48
+ if (Sk) {
49
+ Sk.configure({ output: handleOutput });
50
+ try {
51
+ if (Sk) Sk.importMainWithBody("<stdin>", false, code, true);
52
+ } catch (error) {
53
+ handleOutput(error);
69
54
  }
55
+ }
70
56
  }
71
- $: lines = output.split('\n');
57
+ let lines = $derived(output.split("\n"));
72
58
  </script>
73
59
 
74
60
  <div class="bookish-python" bind:this={ref}>
@@ -77,13 +63,14 @@ $: lines = output.split('\n');
77
63
  language={'python'}
78
64
  editable
79
65
  edited={handleEdit}
80
- nodeID={node.nodeID}>{code}</Code
81
- >
66
+ nodeID={node.nodeID}
67
+ {code}
68
+ />
82
69
  <div class="bookish-python-controls">
83
- <button disabled={startCode === code} on:click={reset}
70
+ <button disabled={startCode === code} onclick={reset}
84
71
  >{'\u21BB'}</button
85
72
  >
86
- <button disabled={!loaded} on:click={start}>{'\u25B6\uFE0E'}</button>
73
+ <button disabled={!loaded} onclick={start}>{'\u25B6\uFE0E'}</button>
87
74
  <div class="bookish-python-output">
88
75
  {#each lines as line, index}
89
76
  <span class="python-output-line"
@@ -1,20 +1,8 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type CodeNode from '../../models/chapter/CodeNode';
3
- declare const __propDef: {
4
- props: {
5
- node: CodeNode;
6
- startCode: string;
7
- };
8
- events: {
9
- [evt: string]: CustomEvent<any>;
10
- };
11
- slots: {};
12
- exports?: {} | undefined;
13
- bindings?: string | undefined;
14
- };
15
- export type PythonProps = typeof __propDef.props;
16
- export type PythonEvents = typeof __propDef.events;
17
- export type PythonSlots = typeof __propDef.slots;
18
- export default class Python extends SvelteComponent<PythonProps, PythonEvents, PythonSlots> {
2
+ interface Props {
3
+ node: CodeNode;
4
+ startCode: string;
19
5
  }
20
- export {};
6
+ declare const Python: import("svelte").Component<Props, {}, "">;
7
+ type Python = ReturnType<typeof Python>;
8
+ export default Python;
@@ -1,10 +1,8 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import Block from './Block.svelte';
4
- import Format from './Format.svelte';
5
- import Positioned from './Positioned.svelte';
6
- export let node;
7
- $: credit = node.getCredit();
1
+ <script lang="ts">import Block from "./Block.svelte";
2
+ import Format from "./Format.svelte";
3
+ import Positioned from "./Positioned.svelte";
4
+ let { node } = $props();
5
+ let credit = $derived(node.getCredit());
8
6
  </script>
9
7
 
10
8
  <Positioned position={node.getPosition()}>
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type QuoteNode from '../../models/chapter/QuoteNode';
3
- declare const __propDef: {
4
- props: {
5
- node: QuoteNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type QuoteProps = typeof __propDef.props;
15
- export type QuoteEvents = typeof __propDef.events;
16
- export type QuoteSlots = typeof __propDef.slots;
17
- export default class Quote extends SvelteComponent<QuoteProps, QuoteEvents, QuoteSlots> {
2
+ interface Props {
3
+ node: QuoteNode;
18
4
  }
19
- export {};
5
+ declare const Quote: import("svelte").Component<Props, {}, "">;
6
+ type Quote = ReturnType<typeof Quote>;
7
+ export default Quote;
@@ -1,6 +1,4 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>export let node;
1
+ <script lang="ts">let { node } = $props();
4
2
  </script>
5
3
 
6
4
  <hr data-nodeid={node.nodeID} />
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type RuleNode from '../../models/chapter/RuleNode';
3
- declare const __propDef: {
4
- props: {
5
- node: RuleNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type RuleProps = typeof __propDef.props;
15
- export type RuleEvents = typeof __propDef.events;
16
- export type RuleSlots = typeof __propDef.slots;
17
- export default class Rule extends SvelteComponent<RuleProps, RuleEvents, RuleSlots> {
2
+ interface Props {
3
+ node: RuleNode;
18
4
  }
19
- export {};
5
+ declare const Rule: import("svelte").Component<Props, {}, "">;
6
+ type Rule = ReturnType<typeof Rule>;
7
+ export default Rule;
@@ -1,12 +1,10 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import Figure from './Figure.svelte';
4
- import Format from './Format.svelte';
5
- import Rows from '../page/Rows.svelte';
6
- import { isChapterEditable } from '../page/Contexts';
7
- export let node;
1
+ <script lang="ts">import Figure from "./Figure.svelte";
2
+ import Format from "./Format.svelte";
3
+ import Rows from "../page/Rows.svelte";
4
+ import { isChapterEditable } from "../page/Contexts";
5
+ let { node } = $props();
8
6
  let editable = isChapterEditable();
9
- $: rows = node.getRows();
7
+ let rows = $derived(node.getRows());
10
8
  </script>
11
9
 
12
10
  <Figure {node} caption={node.getCaption()} focusable={false}>
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type TableNode from '../../models/chapter/TableNode';
3
- declare const __propDef: {
4
- props: {
5
- node: TableNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type TableProps = typeof __propDef.props;
15
- export type TableEvents = typeof __propDef.events;
16
- export type TableSlots = typeof __propDef.slots;
17
- export default class Table extends SvelteComponent<TableProps, TableEvents, TableSlots> {
2
+ interface Props {
3
+ node: TableNode;
18
4
  }
19
- export {};
5
+ declare const Table: import("svelte").Component<Props, {}, "">;
6
+ type Table = ReturnType<typeof Table>;
7
+ export default Table;
@@ -1,77 +1,62 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import { getChapter, isChapterEditable } from '../page/Contexts';
4
- export let node;
5
- export let placeholder = undefined;
6
- $: text = node.getText();
1
+ <script lang="ts">import { getChapter, isChapterEditable } from "../page/Contexts";
2
+ let { node, placeholder = void 0 } = $props();
7
3
  let context = getChapter();
8
4
  let editable = isChapterEditable();
9
5
  function replaceMultipleSpacesWithNonBreakingSpaces(original) {
10
- let revisedText = '';
11
- for (let i = 0; i < original.length; i++) {
12
- // If its a space and its at the beginning, the end, or the previous character was a space, make it a non-breaking space.
13
- let c = original.charAt(i);
14
- if (c === ' ' &&
15
- (i === 0 ||
16
- i === original.length - 1 ||
17
- original.charAt(i - 1) === ' '))
18
- revisedText += '\u00a0';
19
- else
20
- revisedText += c;
21
- }
22
- return revisedText;
6
+ let revisedText = "";
7
+ for (let i = 0; i < original.length; i++) {
8
+ let c = original.charAt(i);
9
+ if (c === " " && (i === 0 || i === original.length - 1 || original.charAt(i - 1) === " "))
10
+ revisedText += "\xA0";
11
+ else revisedText += c;
12
+ }
13
+ return revisedText;
23
14
  }
24
- // Manipulate text for rendering.
25
- $: {
26
- // Replace any spaces at the beginning or end of the string with explicit non-breaking spaces to ensure that they render.
27
- text = replaceMultipleSpacesWithNonBreakingSpaces(text);
28
- // If the text ends with a newline, render a non-breaking space at the end.
29
- if (text.length > 0 && text.charAt(text.length - 1) === '\n')
30
- text = text + '\ufeff';
31
- // If there's no text, render a non-breaking space, or a placeholder if provided.
32
- if (text.length === 0)
33
- text = placeholder ?? '\ufeff';
34
- }
35
- // Compute highlights, if highlighted
36
- let segments = undefined;
37
- $: {
38
- segments = undefined;
39
- if (!editable) {
40
- // Is there a query we're supposed to highlight? If so, highlight it.
41
- if ($context && $context.highlightedWord) {
42
- const query = $context.highlightedWord;
43
- const lowerText = text.toLowerCase();
44
- // Does this text contain the query? Highlight it.
45
- if (lowerText.indexOf(query) >= 0) {
46
- // Find all the matches
47
- const indices = [];
48
- for (let i = 0; i < text.length; ++i) {
49
- if (lowerText.substring(i, i + query.length) === query) {
50
- indices.push(i);
51
- }
52
- }
53
- // Go through each one and construct contents for the span to return.
54
- segments = [];
55
- for (let i = 0; i < indices.length; i++) {
56
- // Push the text from the end of the last match or the start of the string.
57
- segments.push([
58
- text.substring(i === 0 ? 0 : indices[i - 1] + query.length, indices[i]),
59
- false,
60
- ]);
61
- segments.push([
62
- text.substring(indices[i], indices[i] + query.length),
63
- true,
64
- ]);
65
- }
66
- if (indices[indices.length - 1] < text.length - 1)
67
- segments.push([
68
- text.substring(indices[indices.length - 1] + query.length, text.length),
69
- false,
70
- ]);
71
- }
72
- }
15
+ let text = $derived.by(() => {
16
+ let revised = replaceMultipleSpacesWithNonBreakingSpaces(
17
+ node.getText()
18
+ );
19
+ if (revised.length > 0 && revised.charAt(revised.length - 1) === "\n")
20
+ revised = revised + "\uFEFF";
21
+ if (revised.length === 0) revised = placeholder ?? "\uFEFF";
22
+ return revised;
23
+ });
24
+ let segments = $derived.by(() => {
25
+ if (editable) return void 0;
26
+ if (!$context || !$context.highlightedWord) return void 0;
27
+ const query = $context.highlightedWord;
28
+ const lowerText = text.toLowerCase();
29
+ if (lowerText.indexOf(query) < 0) return void 0;
30
+ const indices = [];
31
+ for (let i = 0; i < text.length; ++i) {
32
+ if (lowerText.substring(i, i + query.length) === query) {
33
+ indices.push(i);
73
34
  }
74
- }
35
+ }
36
+ const list = [];
37
+ for (let i = 0; i < indices.length; i++) {
38
+ list.push([
39
+ text.substring(
40
+ i === 0 ? 0 : indices[i - 1] + query.length,
41
+ indices[i]
42
+ ),
43
+ false
44
+ ]);
45
+ list.push([
46
+ text.substring(indices[i], indices[i] + query.length),
47
+ true
48
+ ]);
49
+ }
50
+ if (indices[indices.length - 1] < text.length - 1)
51
+ list.push([
52
+ text.substring(
53
+ indices[indices.length - 1] + query.length,
54
+ text.length
55
+ ),
56
+ false
57
+ ]);
58
+ return list;
59
+ });
75
60
  </script>
76
61
 
77
62
  {#if segments}
@@ -1,20 +1,8 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type TextNode from '../../models/chapter/TextNode';
3
- declare const __propDef: {
4
- props: {
5
- node: TextNode;
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 TextProps = typeof __propDef.props;
16
- export type TextEvents = typeof __propDef.events;
17
- export type TextSlots = typeof __propDef.slots;
18
- export default class Text extends SvelteComponent<TextProps, TextEvents, TextSlots> {
2
+ interface Props {
3
+ node: TextNode;
4
+ placeholder?: string | undefined;
19
5
  }
20
- export {};
6
+ declare const Text: import("svelte").Component<Props, {}, "">;
7
+ type Text = ReturnType<typeof Text>;
8
+ export default Text;
@@ -1,10 +1,9 @@
1
- <script>export let dark;
2
- export let toggle;
3
- const lightLabel = '\u263C';
4
- const darkLabel = '\u263E';
1
+ <script lang="ts">let { dark = $bindable(), toggle } = $props();
2
+ const lightLabel = "\u263C";
3
+ const darkLabel = "\u263E";
5
4
  function change() {
6
- dark = !dark;
7
- toggle();
5
+ dark = !dark;
6
+ toggle();
8
7
  }
9
8
  </script>
10
9
 
@@ -14,8 +13,8 @@ function change() {
14
13
  role="button"
15
14
  aria-label={dark === true ? 'Switch to light mode' : 'Switch to dark mode'}
16
15
  tabindex="0"
17
- on:click={change}
18
- on:keydown={(event) => {
16
+ onclick={change}
17
+ onkeydown={(event) => {
19
18
  if (event.key === 'Enter' || event.key === ' ') {
20
19
  change();
21
20
  event.stopPropagation();
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- dark: boolean;
5
- toggle: () => void;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type DarkToggleProps = typeof __propDef.props;
15
- export type DarkToggleEvents = typeof __propDef.events;
16
- export type DarkToggleSlots = typeof __propDef.slots;
17
- export default class DarkToggle extends SvelteComponent<DarkToggleProps, DarkToggleEvents, DarkToggleSlots> {
1
+ interface Props {
2
+ dark: boolean;
3
+ toggle: () => void;
18
4
  }
19
- export {};
5
+ declare const DarkToggle: import("svelte").Component<Props, {}, "dark">;
6
+ type DarkToggle = ReturnType<typeof DarkToggle>;
7
+ export default DarkToggle;