bookish-press 0.7.4 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/README.md +56 -9
  2. package/dist/components/Auth.svelte +29 -39
  3. package/dist/components/Auth.svelte.d.ts +5 -17
  4. package/dist/components/BookPreview.svelte +14 -20
  5. package/dist/components/BookPreview.svelte.d.ts +6 -18
  6. package/dist/components/Link.svelte +19 -30
  7. package/dist/components/Link.svelte.d.ts +7 -20
  8. package/dist/components/app/BookList.svelte +2 -3
  9. package/dist/components/app/BookList.svelte.d.ts +6 -18
  10. package/dist/components/app/Button.svelte +12 -8
  11. package/dist/components/app/Button.svelte.d.ts +10 -23
  12. package/dist/components/app/Feedback.svelte +4 -4
  13. package/dist/components/app/Feedback.svelte.d.ts +6 -19
  14. package/dist/components/app/Head.svelte +2 -2
  15. package/dist/components/app/Head.svelte.d.ts +6 -19
  16. package/dist/components/app/Large.svelte +4 -1
  17. package/dist/components/app/Large.svelte.d.ts +5 -28
  18. package/dist/components/app/Lead.svelte +4 -1
  19. package/dist/components/app/Lead.svelte.d.ts +5 -28
  20. package/dist/components/app/Link.svelte +12 -9
  21. package/dist/components/app/Link.svelte.d.ts +9 -22
  22. package/dist/components/app/Options.svelte +8 -6
  23. package/dist/components/app/Options.svelte.d.ts +8 -20
  24. package/dist/components/app/Paragraph.svelte +2 -2
  25. package/dist/components/app/Paragraph.svelte.d.ts +6 -19
  26. package/dist/components/app/Section.svelte +4 -1
  27. package/dist/components/app/Section.svelte.d.ts +5 -28
  28. package/dist/components/app/Table.svelte +4 -1
  29. package/dist/components/app/Table.svelte.d.ts +5 -28
  30. package/dist/components/app/TextInput.svelte +10 -8
  31. package/dist/components/app/TextInput.svelte.d.ts +12 -23
  32. package/dist/components/chapter/Atom.svelte +4 -7
  33. package/dist/components/chapter/Atom.svelte.d.ts +6 -19
  34. package/dist/components/chapter/Block.svelte +21 -23
  35. package/dist/components/chapter/Block.svelte.d.ts +5 -17
  36. package/dist/components/chapter/Callout.svelte +3 -5
  37. package/dist/components/chapter/Callout.svelte.d.ts +5 -17
  38. package/dist/components/chapter/CaptionedCode.svelte +12 -14
  39. package/dist/components/chapter/CaptionedCode.svelte.d.ts +5 -17
  40. package/dist/components/chapter/ChapterBody.svelte +14 -17
  41. package/dist/components/chapter/ChapterBody.svelte.d.ts +7 -19
  42. package/dist/components/chapter/ChapterBody.test.d.ts +1 -0
  43. package/dist/components/chapter/ChapterBody.test.js +85 -0
  44. package/dist/components/chapter/Citations.svelte +39 -45
  45. package/dist/components/chapter/Citations.svelte.d.ts +5 -17
  46. package/dist/components/chapter/Code.svelte +158 -155
  47. package/dist/components/chapter/Code.svelte.d.ts +10 -23
  48. package/dist/components/chapter/Comment.svelte +30 -23
  49. package/dist/components/chapter/Comment.svelte.d.ts +5 -17
  50. package/dist/components/chapter/Definition.svelte +36 -34
  51. package/dist/components/chapter/Definition.svelte.d.ts +5 -17
  52. package/dist/components/chapter/Embed.svelte +78 -72
  53. package/dist/components/chapter/Embed.svelte.d.ts +8 -20
  54. package/dist/components/chapter/ErrorMessage.svelte +2 -4
  55. package/dist/components/chapter/ErrorMessage.svelte.d.ts +5 -17
  56. package/dist/components/chapter/Figure.svelte +22 -29
  57. package/dist/components/chapter/Figure.svelte.d.ts +9 -22
  58. package/dist/components/chapter/Footnote.svelte +40 -32
  59. package/dist/components/chapter/Footnote.svelte.d.ts +5 -17
  60. package/dist/components/chapter/Format.svelte +26 -41
  61. package/dist/components/chapter/Format.svelte.d.ts +7 -18
  62. package/dist/components/chapter/InlineCode.svelte +7 -8
  63. package/dist/components/chapter/InlineCode.svelte.d.ts +5 -17
  64. package/dist/components/chapter/Label.svelte +5 -11
  65. package/dist/components/chapter/Label.svelte.d.ts +5 -17
  66. package/dist/components/chapter/LineBreak.svelte +1 -3
  67. package/dist/components/chapter/LineBreak.svelte.d.ts +5 -17
  68. package/dist/components/chapter/Link.svelte +17 -23
  69. package/dist/components/chapter/Link.svelte.d.ts +5 -17
  70. package/dist/components/chapter/List.svelte +9 -9
  71. package/dist/components/chapter/List.svelte.d.ts +6 -17
  72. package/dist/components/chapter/Marginal.svelte +59 -60
  73. package/dist/components/chapter/Marginal.svelte.d.ts +10 -22
  74. package/dist/components/chapter/Paragraph.svelte +8 -23
  75. package/dist/components/chapter/Paragraph.svelte.d.ts +6 -18
  76. package/dist/components/chapter/Positioned.svelte +2 -4
  77. package/dist/components/chapter/Positioned.svelte.d.ts +6 -19
  78. package/dist/components/chapter/Problem.svelte +3 -2
  79. package/dist/components/chapter/Problem.svelte.d.ts +5 -28
  80. package/dist/components/chapter/Python.svelte +45 -58
  81. package/dist/components/chapter/Python.svelte.d.ts +6 -18
  82. package/dist/components/chapter/Quote.svelte +5 -7
  83. package/dist/components/chapter/Quote.svelte.d.ts +5 -17
  84. package/dist/components/chapter/Rule.svelte +1 -3
  85. package/dist/components/chapter/Rule.svelte.d.ts +5 -17
  86. package/dist/components/chapter/Table.svelte +6 -8
  87. package/dist/components/chapter/Table.svelte.d.ts +5 -17
  88. package/dist/components/chapter/Text.svelte +54 -69
  89. package/dist/components/chapter/Text.svelte.d.ts +6 -18
  90. package/dist/components/controls/DarkToggle.svelte +7 -8
  91. package/dist/components/controls/DarkToggle.svelte.d.ts +6 -18
  92. package/dist/components/editor/BookishEditor.svelte +583 -761
  93. package/dist/components/editor/BookishEditor.svelte.d.ts +14 -26
  94. package/dist/components/editor/CalloutEditor.svelte +3 -3
  95. package/dist/components/editor/CalloutEditor.svelte.d.ts +5 -17
  96. package/dist/components/editor/CaptionedCodeEditor.svelte +5 -5
  97. package/dist/components/editor/CaptionedCodeEditor.svelte.d.ts +5 -17
  98. package/dist/components/editor/CaretView.svelte +23 -25
  99. package/dist/components/editor/CaretView.svelte.d.ts +15 -27
  100. package/dist/components/editor/CitationsEditor.svelte +25 -28
  101. package/dist/components/editor/CitationsEditor.svelte.d.ts +5 -17
  102. package/dist/components/editor/ConfirmButton.svelte +9 -6
  103. package/dist/components/editor/ConfirmButton.svelte.d.ts +8 -21
  104. package/dist/components/editor/DefinitionEditor.svelte +11 -15
  105. package/dist/components/editor/DefinitionEditor.svelte.d.ts +5 -17
  106. package/dist/components/editor/EmbedEditor.svelte +44 -45
  107. package/dist/components/editor/EmbedEditor.svelte.d.ts +5 -17
  108. package/dist/components/editor/Icon.svelte +1 -1
  109. package/dist/components/editor/Icon.svelte.d.ts +5 -17
  110. package/dist/components/editor/ImageChooser.svelte +15 -18
  111. package/dist/components/editor/ImageChooser.svelte.d.ts +6 -18
  112. package/dist/components/editor/ImageThumbnail.svelte +29 -24
  113. package/dist/components/editor/ImageThumbnail.svelte.d.ts +7 -19
  114. package/dist/components/editor/InlineCodeEditor.svelte +3 -3
  115. package/dist/components/editor/InlineCodeEditor.svelte.d.ts +5 -17
  116. package/dist/components/editor/LabelEditor.svelte +5 -6
  117. package/dist/components/editor/LabelEditor.svelte.d.ts +5 -17
  118. package/dist/components/editor/LanguageEditor.svelte +4 -5
  119. package/dist/components/editor/LanguageEditor.svelte.d.ts +6 -18
  120. package/dist/components/editor/LinkEditor.svelte +52 -68
  121. package/dist/components/editor/LinkEditor.svelte.d.ts +5 -17
  122. package/dist/components/editor/Note.svelte +4 -1
  123. package/dist/components/editor/Note.svelte.d.ts +5 -28
  124. package/dist/components/editor/Permissions.svelte +36 -34
  125. package/dist/components/editor/Permissions.svelte.d.ts +9 -21
  126. package/dist/components/editor/PositionEditor.svelte +6 -7
  127. package/dist/components/editor/PositionEditor.svelte.d.ts +6 -18
  128. package/dist/components/editor/QuoteEditor.svelte +3 -3
  129. package/dist/components/editor/QuoteEditor.svelte.d.ts +5 -17
  130. package/dist/components/editor/Switch.svelte +16 -11
  131. package/dist/components/editor/Switch.svelte.d.ts +9 -21
  132. package/dist/components/editor/TableEditor.svelte +3 -3
  133. package/dist/components/editor/TableEditor.svelte.d.ts +5 -17
  134. package/dist/components/editor/TextEditor.svelte +74 -87
  135. package/dist/components/editor/TextEditor.svelte.d.ts +13 -25
  136. package/dist/components/editor/Toggle.svelte +18 -21
  137. package/dist/components/editor/Toggle.svelte.d.ts +7 -20
  138. package/dist/components/editor/Toolbar.svelte +140 -145
  139. package/dist/components/editor/Toolbar.svelte.d.ts +5 -17
  140. package/dist/components/editor/ToolbarGroup.svelte +4 -4
  141. package/dist/components/editor/ToolbarGroup.svelte.d.ts +6 -19
  142. package/dist/components/editor/ToolbarSpacer.svelte +1 -1
  143. package/dist/components/editor/ToolbarSpacer.svelte.d.ts +22 -21
  144. package/dist/components/editor/URLEditor.svelte +3 -5
  145. package/dist/components/editor/URLEditor.svelte.d.ts +7 -19
  146. package/dist/components/page/Acknowledgements.svelte +14 -8
  147. package/dist/components/page/Acknowledgements.svelte.d.ts +3 -16
  148. package/dist/components/page/Analytics.svelte +2 -3
  149. package/dist/components/page/Analytics.svelte.d.ts +6 -17
  150. package/dist/components/page/Authors.svelte +29 -29
  151. package/dist/components/page/Authors.svelte.d.ts +11 -23
  152. package/dist/components/page/BookLoader.svelte +47 -43
  153. package/dist/components/page/BookLoader.svelte.d.ts +5 -17
  154. package/dist/components/page/BulkReferenceEditor.svelte +43 -26
  155. package/dist/components/page/BulkReferenceEditor.svelte.d.ts +3 -16
  156. package/dist/components/page/Chapter.svelte +224 -249
  157. package/dist/components/page/Chapter.svelte.d.ts +6 -18
  158. package/dist/components/page/ChapterContext.d.ts +3 -1
  159. package/dist/components/page/ChapterNumber.svelte +4 -1
  160. package/dist/components/page/ChapterNumber.svelte.d.ts +5 -28
  161. package/dist/components/page/ChapterTitle.svelte +4 -4
  162. package/dist/components/page/ChapterTitle.svelte.d.ts +6 -19
  163. package/dist/components/page/Contexts.js +2 -2
  164. package/dist/components/page/DefinitionView.svelte +51 -44
  165. package/dist/components/page/DefinitionView.svelte.d.ts +6 -18
  166. package/dist/components/page/Description.svelte +10 -4
  167. package/dist/components/page/Description.svelte.d.ts +16 -14
  168. package/dist/components/page/DownloadEPUB.svelte +234 -0
  169. package/dist/components/page/DownloadEPUB.svelte.d.ts +3 -0
  170. package/dist/components/page/EditableHeader.svelte +4 -6
  171. package/dist/components/page/EditableHeader.svelte.d.ts +7 -18
  172. package/dist/components/page/Edition.svelte +57 -71
  173. package/dist/components/page/Edition.svelte.d.ts +7 -20
  174. package/dist/components/page/EditionLoader.svelte +119 -82
  175. package/dist/components/page/EditionLoader.svelte.d.ts +6 -19
  176. package/dist/components/page/Editions.svelte +26 -31
  177. package/dist/components/page/Editions.svelte.d.ts +5 -17
  178. package/dist/components/page/Glossary.svelte +31 -35
  179. package/dist/components/page/Glossary.svelte.d.ts +3 -16
  180. package/dist/components/page/Header.svelte +43 -49
  181. package/dist/components/page/Header.svelte.d.ts +19 -30
  182. package/dist/components/page/Index.svelte +46 -46
  183. package/dist/components/page/Index.svelte.d.ts +3 -16
  184. package/dist/components/page/Instructions.svelte +2 -2
  185. package/dist/components/page/Instructions.svelte.d.ts +6 -19
  186. package/dist/components/page/License.svelte +13 -7
  187. package/dist/components/page/License.svelte.d.ts +16 -14
  188. package/dist/components/page/Loading.svelte +9 -9
  189. package/dist/components/page/Loading.svelte.d.ts +22 -21
  190. package/dist/components/page/Media.svelte +36 -27
  191. package/dist/components/page/Media.svelte.d.ts +3 -16
  192. package/dist/components/page/MediaPreview.svelte +22 -19
  193. package/dist/components/page/MediaPreview.svelte.d.ts +8 -21
  194. package/dist/components/page/Muted.svelte +4 -1
  195. package/dist/components/page/Muted.svelte.d.ts +5 -28
  196. package/dist/components/page/Outline.svelte +75 -97
  197. package/dist/components/page/Outline.svelte.d.ts +8 -20
  198. package/dist/components/page/Page.svelte +23 -33
  199. package/dist/components/page/Page.svelte.d.ts +7 -20
  200. package/dist/components/page/PageHeader.svelte +2 -2
  201. package/dist/components/page/PageHeader.svelte.d.ts +6 -19
  202. package/dist/components/page/PageParagraph.svelte +4 -1
  203. package/dist/components/page/PageParagraph.svelte.d.ts +5 -28
  204. package/dist/components/page/PossibleChapter.svelte +7 -7
  205. package/dist/components/page/PossibleChapter.svelte.d.ts +3 -16
  206. package/dist/components/page/PossibleReference.svelte +4 -5
  207. package/dist/components/page/PossibleReference.svelte.d.ts +6 -18
  208. package/dist/components/page/Print.svelte +11 -12
  209. package/dist/components/page/Print.svelte.d.ts +3 -16
  210. package/dist/components/page/Publish.svelte +47 -47
  211. package/dist/components/page/Publish.svelte.d.ts +3 -16
  212. package/dist/components/page/Reference.svelte +24 -35
  213. package/dist/components/page/Reference.svelte.d.ts +6 -18
  214. package/dist/components/page/References.svelte +21 -22
  215. package/dist/components/page/References.svelte.d.ts +3 -16
  216. package/dist/components/page/Rows.svelte +5 -2
  217. package/dist/components/page/Rows.svelte.d.ts +5 -28
  218. package/dist/components/page/Search.svelte +59 -61
  219. package/dist/components/page/Search.svelte.d.ts +3 -16
  220. package/dist/components/page/Status.svelte +2 -2
  221. package/dist/components/page/Status.svelte.d.ts +16 -14
  222. package/dist/components/page/SubdomainEditor.svelte +11 -11
  223. package/dist/components/page/SubdomainEditor.svelte.d.ts +16 -14
  224. package/dist/components/page/TableOfContents.svelte +157 -124
  225. package/dist/components/page/TableOfContents.svelte.d.ts +3 -16
  226. package/dist/components/page/TableOfContentsImage.svelte +6 -7
  227. package/dist/components/page/TableOfContentsImage.svelte.d.ts +6 -18
  228. package/dist/components/page/TableOfContentsRow.svelte +32 -32
  229. package/dist/components/page/TableOfContentsRow.svelte.d.ts +10 -22
  230. package/dist/components/page/ThemeEditor.svelte +35 -28
  231. package/dist/components/page/ThemeEditor.svelte.d.ts +3 -16
  232. package/dist/components/page/ThemeEditorPreview.svelte +11 -13
  233. package/dist/components/page/ThemeEditorPreview.svelte.d.ts +5 -17
  234. package/dist/components/page/ThemeSetEditor.svelte +4 -6
  235. package/dist/components/page/ThemeSetEditor.svelte.d.ts +7 -19
  236. package/dist/components/page/ThemeVariableEditor.svelte +9 -11
  237. package/dist/components/page/ThemeVariableEditor.svelte.d.ts +7 -19
  238. package/dist/components/page/Title.svelte +4 -1
  239. package/dist/components/page/Title.svelte.d.ts +5 -28
  240. package/dist/components/page/Unknown.svelte +11 -8
  241. package/dist/components/page/Unknown.svelte.d.ts +5 -17
  242. package/dist/epub/build.d.ts +39 -0
  243. package/dist/epub/build.js +143 -0
  244. package/dist/epub/build.test.d.ts +1 -0
  245. package/dist/epub/build.test.js +411 -0
  246. package/dist/epub/images.d.ts +79 -0
  247. package/dist/epub/images.js +260 -0
  248. package/dist/epub/images.test.d.ts +1 -0
  249. package/dist/epub/images.test.js +129 -0
  250. package/dist/epub/package.d.ts +75 -0
  251. package/dist/epub/package.js +392 -0
  252. package/dist/epub/stylesheet.test.d.ts +1 -0
  253. package/dist/epub/stylesheet.test.js +243 -0
  254. package/dist/epub/xhtml.d.ts +69 -0
  255. package/dist/epub/xhtml.js +367 -0
  256. package/dist/epub/xhtml.test.d.ts +1 -0
  257. package/dist/epub/xhtml.test.js +283 -0
  258. package/dist/epub/zip.d.ts +35 -0
  259. package/dist/epub/zip.js +202 -0
  260. package/dist/epub/zip.test.d.ts +1 -0
  261. package/dist/epub/zip.test.js +171 -0
  262. package/dist/index.d.ts +1 -0
  263. package/dist/index.js +1 -0
  264. package/dist/models/Firebase.js +18 -4
  265. package/dist/models/book/Book.js +2 -1
  266. package/dist/models/book/BookMedia.js +1 -2
  267. package/dist/models/book/Chapter.js +3 -2
  268. package/dist/models/book/ChapterID.d.ts +1 -1
  269. package/dist/models/book/Edition.d.ts +1 -1
  270. package/dist/models/book/Edition.js +6 -1
  271. package/dist/models/chapter/BlocksNode.js +3 -1
  272. package/dist/models/chapter/BlocksNode.test.js +5 -1
  273. package/dist/models/chapter/Node.test.js +2 -2
  274. package/dist/models/chapter/TextNode.js +8 -5
  275. package/dist/models/chapter/TextNode.test.js +8 -0
  276. package/package.json +36 -22
@@ -1,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}
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type InlineCodeNode from '../../models/chapter/InlineCodeNode';
3
- declare const __propDef: {
4
- props: {
5
- node: InlineCodeNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type InlineCodeProps = typeof __propDef.props;
15
- export type InlineCodeEvents = typeof __propDef.events;
16
- export type InlineCodeSlots = typeof __propDef.slots;
17
- export default class InlineCode extends SvelteComponent<InlineCodeProps, InlineCodeEvents, InlineCodeSlots> {
2
+ interface Props {
3
+ node: InlineCodeNode;
18
4
  }
19
- export {};
5
+ declare const InlineCode: import("svelte").Component<Props, {}, "">;
6
+ type InlineCode = ReturnType<typeof InlineCode>;
7
+ export default InlineCode;
@@ -1,17 +1,11 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import Atom from './Atom.svelte';
4
- import { getChapter, getRoot, isChapterEditable } from '../page/Contexts';
5
- import Problem from './Problem.svelte';
6
- export let node;
1
+ <script lang="ts">import Atom from "./Atom.svelte";
2
+ import { getChapter, getRoot, isChapterEditable } from "../page/Contexts";
3
+ import Problem from "./Problem.svelte";
4
+ let { node } = $props();
7
5
  let editable = isChapterEditable();
8
6
  let chapter = getChapter();
9
7
  let root = getRoot();
10
- $: duplicate =
11
- $root === undefined
12
- ? false
13
- : $root.getLabels().filter((l) => l.getMeta() === node.getMeta())
14
- .length > 1;
8
+ let duplicate = $derived($root === void 0 ? false : $root.getLabels().filter((l) => l.getMeta() === node.getMeta()).length > 1);
15
9
  </script>
16
10
 
17
11
  <Atom {node}>
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type LabelNode from '../../models/chapter/LabelNode';
3
- declare const __propDef: {
4
- props: {
5
- node: LabelNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type LabelProps = typeof __propDef.props;
15
- export type LabelEvents = typeof __propDef.events;
16
- export type LabelSlots = typeof __propDef.slots;
17
- export default class Label extends SvelteComponent<LabelProps, LabelEvents, LabelSlots> {
2
+ interface Props {
3
+ node: LabelNode;
18
4
  }
19
- export {};
5
+ declare const Label: import("svelte").Component<Props, {}, "">;
6
+ type Label = ReturnType<typeof Label>;
7
+ export default Label;
@@ -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
  <br data-nodeid={node.nodeID} />
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type LineBreakNode from '../../models/chapter/LineBreakNode';
3
- declare const __propDef: {
4
- props: {
5
- node: LineBreakNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type LineBreakProps = typeof __propDef.props;
15
- export type LineBreakEvents = typeof __propDef.events;
16
- export type LineBreakSlots = typeof __propDef.slots;
17
- export default class LineBreak extends SvelteComponent<LineBreakProps, LineBreakEvents, LineBreakSlots> {
2
+ interface Props {
3
+ node: LineBreakNode;
18
4
  }
19
- export {};
5
+ declare const LineBreak: import("svelte").Component<Props, {}, "">;
6
+ type LineBreak = ReturnType<typeof LineBreak>;
7
+ export default LineBreak;
@@ -1,31 +1,25 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import { getBase, getEdition, isChapterEditable } from '../page/Contexts';
4
- import Text from './Text.svelte';
5
- import Problem from './Problem.svelte';
6
- export let node;
1
+ <script lang="ts">import { getBase, getEdition, isChapterEditable } from "../page/Contexts";
2
+ import Text from "./Text.svelte";
3
+ import Problem from "./Problem.svelte";
4
+ let { node } = $props();
7
5
  let base = getBase();
8
6
  let editable = isChapterEditable();
9
7
  let edition = getEdition();
10
- $: url = node.getMeta();
11
- $: content = node.getText();
8
+ let url = $derived(node.getMeta());
9
+ let content = $derived(node.getText());
12
10
  function isInvalidChapterLink() {
13
- // If it's internal, validate it.
14
- if (!url.startsWith('http')) {
15
- // Pull out any labels and just get the chapter name.
16
- let chapter = url;
17
- if (url.indexOf(':') >= 0) {
18
- let parts = chapter.split(':');
19
- chapter = parts[0];
20
- }
21
- else if (url.indexOf('#') >= 0) {
22
- let parts = chapter.split('#');
23
- chapter = parts[0];
24
- }
25
- if (chapter !== '' && !$edition?.hasChapter(chapter))
26
- return true;
11
+ if (!url.startsWith("http")) {
12
+ let chapter = url;
13
+ if (url.indexOf(":") >= 0) {
14
+ let parts = chapter.split(":");
15
+ chapter = parts[0];
16
+ } else if (url.indexOf("#") >= 0) {
17
+ let parts = chapter.split("#");
18
+ chapter = parts[0];
27
19
  }
28
- return false;
20
+ if (chapter !== "" && !$edition?.hasChapter(chapter)) return true;
21
+ }
22
+ return false;
29
23
  }
30
24
  </script>
31
25
 
@@ -1,19 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type LinkNode from '../../models/chapter/LinkNode';
3
- declare const __propDef: {
4
- props: {
5
- node: LinkNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type LinkProps = typeof __propDef.props;
15
- export type LinkEvents = typeof __propDef.events;
16
- export type LinkSlots = typeof __propDef.slots;
17
- export default class Link extends SvelteComponent<LinkProps, LinkEvents, LinkSlots> {
2
+ interface Props {
3
+ node: LinkNode;
18
4
  }
19
- export {};
5
+ declare const Link: import("svelte").Component<Props, {}, "">;
6
+ type Link = ReturnType<typeof Link>;
7
+ export default Link;
@@ -1,8 +1,7 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import ListNode from '../../models/chapter/ListNode';
4
- import Format from './Format.svelte';
5
- export let node;
1
+ <script lang="ts">import List from "./List.svelte";
2
+ import ListNode from "../../models/chapter/ListNode";
3
+ import Format from "./Format.svelte";
4
+ let { node } = $props();
6
5
  </script>
7
6
 
8
7
  <svelte:element
@@ -11,7 +10,7 @@ export let node;
11
10
  >
12
11
  {#each node.getItems() as item (item.nodeID)}
13
12
  {#if item instanceof ListNode}
14
- <svelte:self node={item} />
13
+ <List node={item} />
15
14
  {:else}
16
15
  <li><Format node={item} /></li>
17
16
  {/if}
@@ -39,13 +38,14 @@ export let node;
39
38
  list-style-type: decimal;
40
39
  }
41
40
 
42
- /* Second level is lowercase alpha */
43
- ol ol li {
41
+ /* Second level is lowercase alpha. Nested lists render as child List
42
+ components, so the inner elements need :global to match. */
43
+ ol :global(ol li) {
44
44
  list-style-type: lower-alpha;
45
45
  }
46
46
 
47
47
  /* Third level is uppercase alpha */
48
- ol ol ol li {
48
+ ol :global(ol ol li) {
49
49
  list-style-type: upper-alpha;
50
50
  }
51
51
 
@@ -1,19 +1,8 @@
1
- import { SvelteComponent } from "svelte";
1
+ import List from './List.svelte';
2
2
  import ListNode from '../../models/chapter/ListNode';
3
- declare const __propDef: {
4
- props: {
5
- node: ListNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- export type ListProps = typeof __propDef.props;
15
- export type ListEvents = typeof __propDef.events;
16
- export type ListSlots = typeof __propDef.slots;
17
- export default class List extends SvelteComponent<ListProps, ListEvents, ListSlots> {
3
+ interface Props {
4
+ node: ListNode;
18
5
  }
19
- export {};
6
+ declare const List: import("svelte").Component<Props, {}, "">;
7
+ type List = ReturnType<typeof List>;
8
+ export default List;
@@ -1,61 +1,60 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import { isMobile, watchMobile } from '../../util/isMobile';
4
- import { onMount } from 'svelte';
5
- import { getCaret, getChapter, isChapterEditable, } from '../page/Contexts';
6
- import AtomNode from '../../models/chapter/AtomNode';
7
- export let node;
8
- export let id;
9
- export let label;
10
- let hovered = false;
1
+ <script lang="ts">import { isMobile, watchMobile } from "../../util/isMobile";
2
+ import { onMount } from "svelte";
3
+ import {
4
+ getCaret,
5
+ getChapter,
6
+ isChapterEditable
7
+ } from "../page/Contexts";
8
+ import AtomNode from "../../models/chapter/AtomNode";
9
+ let { node, id, label, interactor, content } = $props();
10
+ let hovered = $state(false);
11
11
  let chapter = getChapter();
12
- $: editable = isChapterEditable();
12
+ let editable = isChapterEditable();
13
13
  let caret = getCaret();
14
- // If there's no marginal selected or this is different from the current selection, this is hidden.
15
- $: selectedMarginal = $chapter?.marginal;
16
- $: isHidden = editable
17
- ? // If editable, it's hidden if the caret is not inside the marginal content.
18
- !($caret?.range?.start.node === node ||
19
- $caret?.range?.start.node
20
- .getAncestors($caret.root)
21
- .some((ancestor) => ancestor === node))
22
- : // If not editable, it's hidden if it's not selected.
23
- $selectedMarginal !== id;
24
- function toggle(event, interactor) {
25
- if (editable) {
26
- if (interactor) {
27
- if (editable && $caret && node instanceof AtomNode) {
28
- // Select this so that the view stays focused.
29
- $caret.setCaret({
30
- start: { node, index: 0 },
31
- end: { node, index: 0 },
32
- });
33
- if (event) {
34
- event.stopPropagation();
35
- event.preventDefault();
36
- }
37
- }
38
- return;
14
+ let selectedMarginal = $derived($chapter?.marginal);
15
+ let isHidden = $derived(
16
+ editable ? (
17
+ // If editable, it's hidden if the caret is not inside the marginal content.
18
+ !($caret?.range?.start.node === node || $caret?.range?.start.node.getAncestors($caret.root).some((ancestor) => ancestor === node))
19
+ ) : (
20
+ // If not editable, it's hidden if it's not selected.
21
+ $selectedMarginal !== id
22
+ )
23
+ );
24
+ function toggle(event, interacted) {
25
+ if (editable) {
26
+ if (interacted) {
27
+ if (editable && $caret && node instanceof AtomNode) {
28
+ $caret.setCaret({
29
+ start: { node, index: 0 },
30
+ end: { node, index: 0 }
31
+ });
32
+ if (event) {
33
+ event.stopPropagation();
34
+ event.preventDefault();
39
35
  }
36
+ }
37
+ return;
40
38
  }
41
- if ($chapter) {
42
- if (isMobile() && isHidden)
43
- $chapter.marginal.set(id);
44
- // Otherwise, deselect.
45
- else
46
- $chapter.marginal.set(undefined);
47
- }
39
+ }
40
+ if ($chapter) {
41
+ if (isMobile() && isHidden) $chapter.marginal.set(id);
42
+ else $chapter.marginal.set(void 0);
43
+ }
48
44
  }
49
45
  function handleEnter() {
50
- hovered = true;
46
+ hovered = true;
51
47
  }
52
48
  function handleExit() {
53
- hovered = false;
49
+ hovered = false;
54
50
  }
55
51
  onMount(() => {
56
- const mediaWatch = watchMobile();
57
- mediaWatch.addEventListener('change', () => toggle(undefined, false));
58
- return () => mediaWatch.removeEventListener('change', () => toggle(undefined, false));
52
+ const mediaWatch = watchMobile();
53
+ mediaWatch.addEventListener("change", () => toggle(void 0, false));
54
+ return () => mediaWatch.removeEventListener(
55
+ "change",
56
+ () => toggle(void 0, false)
57
+ );
59
58
  });
60
59
  </script>
61
60
 
@@ -68,26 +67,26 @@ onMount(() => {
68
67
  aria-label={label}
69
68
  role="button"
70
69
  tabindex="0"
71
- on:mousedown={(event) => toggle(event, true)}
72
- on:keydown={(event) =>
70
+ onmousedown={(event) => toggle(event, true)}
71
+ onkeydown={(event) =>
73
72
  event.key === 'Enter' || event.key === ' '
74
73
  ? toggle(undefined, true)
75
74
  : undefined}
76
- on:mouseenter={handleEnter}
77
- on:mouseleave={handleExit}><slot name="interactor" /></span
75
+ onmouseenter={handleEnter}
76
+ onmouseleave={handleExit}>{@render interactor?.()}</span
78
77
  ><span
79
78
  class={'bookish-marginal' +
80
79
  (isHidden ? ' bookish-marginal-hidden' : '') +
81
80
  (hovered ? ' bookish-marginal-hovered' : '')}
82
81
  role="button"
83
82
  tabindex={editable ? null : 0}
84
- on:mousedown={() => toggle(undefined, false)}
85
- on:keydown={(event) =>
83
+ onmousedown={() => toggle(undefined, false)}
84
+ onkeydown={(event) =>
86
85
  event.key === 'Enter' || event.key === ' '
87
86
  ? toggle(undefined, false)
88
87
  : undefined}
89
- on:mouseenter={handleEnter}
90
- on:mouseleave={handleExit}><slot name="content" /></span
88
+ onmouseenter={handleEnter}
89
+ onmouseleave={handleExit}>{@render content?.()}</span
91
90
  >
92
91
 
93
92
  <style>
@@ -155,10 +154,10 @@ onMount(() => {
155
154
  }
156
155
 
157
156
  :global(
158
- .bookish-definition
159
- .bookish-marginal.bookish-marginal-hovered
160
- .bookish-definition-entry
161
- ) {
157
+ .bookish-definition
158
+ .bookish-marginal.bookish-marginal-hovered
159
+ .bookish-definition-entry
160
+ ) {
162
161
  background: linear-gradient(
163
162
  to right,
164
163
  var(--bookish-link-color) 0px,
@@ -1,24 +1,12 @@
1
- import { SvelteComponent } from "svelte";
1
+ import { type Snippet } from 'svelte';
2
2
  import type Node from '../../models/chapter/Node';
3
- declare const __propDef: {
4
- props: {
5
- node: Node;
6
- id: string;
7
- label: string;
8
- };
9
- events: {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots: {
13
- interactor: {};
14
- content: {};
15
- };
16
- exports?: {} | undefined;
17
- bindings?: string | undefined;
18
- };
19
- export type MarginalProps = typeof __propDef.props;
20
- export type MarginalEvents = typeof __propDef.events;
21
- export type MarginalSlots = typeof __propDef.slots;
22
- export default class Marginal extends SvelteComponent<MarginalProps, MarginalEvents, MarginalSlots> {
3
+ interface Props {
4
+ node: Node;
5
+ id: string;
6
+ label: string;
7
+ interactor?: Snippet;
8
+ content?: Snippet;
23
9
  }
24
- export {};
10
+ declare const Marginal: import("svelte").Component<Props, {}, "">;
11
+ type Marginal = ReturnType<typeof Marginal>;
12
+ export default Marginal;
@@ -1,29 +1,14 @@
1
- <svelte:options immutable={true} />
2
-
3
- <script>import Format from './Format.svelte';
4
- import { getChapter, getEdition, getRoot } from '../page/Contexts';
5
- export let node;
6
- export let placeholder = undefined;
7
- $: level = node.getLevel();
1
+ <script lang="ts">import Format from "./Format.svelte";
2
+ import { getChapter, getEdition, getRoot } from "../page/Contexts";
3
+ let { node, placeholder = void 0 } = $props();
4
+ let level = $derived(node.getLevel());
8
5
  let chapter = getChapter();
9
6
  let edition = getEdition();
10
7
  let root = getRoot();
11
- $: id =
12
- node.getLevel() === 0 || $edition === undefined
13
- ? undefined
14
- : 'header-' + ($root.getHeaders().indexOf(node) ?? '');
15
- $: classes =
16
- node.getLevel() === 0
17
- ? undefined
18
- : 'page-header' +
19
- ($chapter && $chapter.highlightedID === id
20
- ? ' bookish-content-highlight'
21
- : '');
22
- $: firstParagraph = $root.getFirstParagraph();
23
- $: dropcap =
24
- placeholder === undefined &&
25
- node === firstParagraph &&
26
- /^[a-zA-Z]/.test(firstParagraph.getFirstTextNode().getText());
8
+ let id = $derived(node.getLevel() === 0 || $edition === void 0 ? void 0 : "header-" + ($root.getHeaders().indexOf(node) ?? ""));
9
+ let classes = $derived(node.getLevel() === 0 ? void 0 : "page-header" + ($chapter && $chapter.highlightedID === id ? " bookish-content-highlight" : ""));
10
+ let firstParagraph = $derived($root.getFirstParagraph());
11
+ let dropcap = $derived(placeholder === void 0 && node === firstParagraph && /^[a-zA-Z]/.test(firstParagraph.getFirstTextNode().getText()));
27
12
  </script>
28
13
 
29
14
  {#if level === 0}
@@ -1,20 +1,8 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type ParagraphNode from '../../models/chapter/ParagraphNode';
3
- declare const __propDef: {
4
- props: {
5
- node: ParagraphNode;
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 ParagraphProps = typeof __propDef.props;
16
- export type ParagraphEvents = typeof __propDef.events;
17
- export type ParagraphSlots = typeof __propDef.slots;
18
- export default class Paragraph extends SvelteComponent<ParagraphProps, ParagraphEvents, ParagraphSlots> {
2
+ interface Props {
3
+ node: ParagraphNode;
4
+ placeholder?: string | undefined;
19
5
  }
20
- export {};
6
+ declare const Paragraph: import("svelte").Component<Props, {}, "">;
7
+ type Paragraph = ReturnType<typeof Paragraph>;
8
+ export default Paragraph;