bookish-press 0.4.45 → 0.4.47

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 (533) hide show
  1. package/.env.example +8 -0
  2. package/.firebaserc +8 -0
  3. package/.prettierignore +8 -0
  4. package/.prettierrc.json +5 -0
  5. package/_update-notifier-last-checked +0 -0
  6. package/firebase.json +46 -0
  7. package/firestore.indexes.json +4 -0
  8. package/firestore.rules +59 -0
  9. package/functions/.eslintrc.js +28 -0
  10. package/functions/package-lock.json +12595 -0
  11. package/functions/package.json +43 -0
  12. package/functions/src/index.ts +345 -0
  13. package/functions/tsconfig.dev.json +3 -0
  14. package/functions/tsconfig.json +15 -0
  15. package/package.json +53 -270
  16. package/scripts/claims.cjs +99 -0
  17. package/src/app.d.ts +9 -0
  18. package/src/app.html +24 -0
  19. package/src/lib/components/Auth.svelte +65 -0
  20. package/{components/Authentication.d.ts → src/lib/components/Authentication.ts} +2 -0
  21. package/{components → src/lib/components}/BookPreview.svelte +27 -22
  22. package/{components → src/lib/components}/External.svelte +2 -1
  23. package/src/lib/components/Link.svelte +58 -0
  24. package/{components → src/lib/components}/app/BookList.svelte +6 -3
  25. package/{components → src/lib/components}/app/Button.svelte +5 -4
  26. package/{components → src/lib/components}/app/Feedback.svelte +11 -7
  27. package/{components → src/lib/components}/app/Head.svelte +2 -1
  28. package/{components → src/lib/components}/app/Large.svelte +0 -0
  29. package/{components → src/lib/components}/app/Lead.svelte +0 -0
  30. package/{components → src/lib/components}/app/Link.svelte +4 -3
  31. package/{components → src/lib/components}/app/Options.svelte +5 -4
  32. package/{components → src/lib/components}/app/Paragraph.svelte +2 -1
  33. package/{components → src/lib/components}/app/Section.svelte +0 -0
  34. package/{components → src/lib/components}/app/Table.svelte +0 -0
  35. package/{components → src/lib/components}/app/TextInput.svelte +12 -9
  36. package/{components → src/lib/components}/chapter/Atom.svelte +18 -12
  37. package/src/lib/components/chapter/Block.svelte +42 -0
  38. package/{components → src/lib/components}/chapter/Callout.svelte +6 -3
  39. package/{components → src/lib/components}/chapter/CaptionedCode.svelte +21 -13
  40. package/{components → src/lib/components}/chapter/ChapterBody.svelte +13 -9
  41. package/{components → src/lib/components}/chapter/Citations.svelte +34 -33
  42. package/{components → src/lib/components}/chapter/Code.svelte +63 -58
  43. package/{components → src/lib/components}/chapter/Comment.svelte +30 -18
  44. package/{components → src/lib/components}/chapter/Definition.svelte +23 -17
  45. package/{components → src/lib/components}/chapter/Embed.svelte +97 -77
  46. package/src/lib/components/chapter/ErrorMessage.svelte +12 -0
  47. package/{components → src/lib/components}/chapter/ExtendedPrism.js +0 -0
  48. package/{components → src/lib/components}/chapter/Figure.svelte +34 -26
  49. package/{components → src/lib/components}/chapter/Footnote.svelte +32 -20
  50. package/{components → src/lib/components}/chapter/Format.svelte +39 -34
  51. package/{components → src/lib/components}/chapter/InlineCode.svelte +9 -5
  52. package/{components → src/lib/components}/chapter/Label.svelte +23 -14
  53. package/{components → src/lib/components}/chapter/Link.svelte +27 -21
  54. package/{components → src/lib/components}/chapter/List.svelte +5 -3
  55. package/{components → src/lib/components}/chapter/Marginal.svelte +54 -41
  56. package/{components → src/lib/components}/chapter/Paragraph.svelte +25 -20
  57. package/{components → src/lib/components}/chapter/Positioned.svelte +4 -1
  58. package/{components → src/lib/components}/chapter/Problem.svelte +0 -0
  59. package/src/lib/components/chapter/Python.svelte +144 -0
  60. package/{components → src/lib/components}/chapter/Quote.svelte +9 -5
  61. package/{components → src/lib/components}/chapter/Rule.svelte +4 -1
  62. package/{components → src/lib/components}/chapter/Table.svelte +11 -7
  63. package/src/lib/components/chapter/Text.svelte +109 -0
  64. package/src/lib/components/editor/BookishEditor.svelte +1101 -0
  65. package/src/lib/components/editor/CalloutEditor.svelte +14 -0
  66. package/{components → src/lib/components}/editor/CaptionedCodeEditor.svelte +10 -6
  67. package/src/lib/components/editor/CaretContext.ts +55 -0
  68. package/{components/editor/CaretState.d.ts → src/lib/components/editor/CaretState.ts} +6 -7
  69. package/{components/editor/CaretUtilities.d.ts → src/lib/components/editor/CaretUtilities.ts} +1 -0
  70. package/{components → src/lib/components}/editor/CaretView.svelte +25 -20
  71. package/src/lib/components/editor/CitationsEditor.svelte +64 -0
  72. package/{components/editor/Clipboard.d.ts → src/lib/components/editor/Clipboard.ts} +2 -1
  73. package/{components/editor/Command.d.ts → src/lib/components/editor/Command.ts} +8 -2
  74. package/{components/editor/Commands.js → src/lib/components/editor/Commands.ts} +730 -315
  75. package/src/lib/components/editor/ConfirmButton.svelte +51 -0
  76. package/src/lib/components/editor/DefinitionEditor.svelte +44 -0
  77. package/src/lib/components/editor/EmbedEditor.svelte +152 -0
  78. package/{components → src/lib/components}/editor/Icon.svelte +2 -1
  79. package/{components → src/lib/components}/editor/ImageChooser.svelte +24 -19
  80. package/src/lib/components/editor/InlineCodeEditor.svelte +16 -0
  81. package/{components → src/lib/components}/editor/LabelEditor.svelte +14 -9
  82. package/{components → src/lib/components}/editor/LanguageEditor.svelte +8 -5
  83. package/src/lib/components/editor/LinkEditor.svelte +110 -0
  84. package/{components → src/lib/components}/editor/Note.svelte +0 -0
  85. package/{components → src/lib/components}/editor/Permissions.svelte +43 -36
  86. package/src/lib/components/editor/PositionEditor.svelte +21 -0
  87. package/src/lib/components/editor/QuoteEditor.svelte +14 -0
  88. package/{components → src/lib/components}/editor/Switch.svelte +14 -11
  89. package/src/lib/components/editor/TableEditor.svelte +14 -0
  90. package/{components → src/lib/components}/editor/TextEditor.svelte +101 -89
  91. package/src/lib/components/editor/Toggle.svelte +47 -0
  92. package/src/lib/components/editor/Toolbar.svelte +297 -0
  93. package/{components → src/lib/components}/editor/ToolbarGroup.svelte +5 -3
  94. package/{components → src/lib/components}/editor/ToolbarSpacer.svelte +0 -0
  95. package/src/lib/components/editor/URLEditor.svelte +15 -0
  96. package/{components/editor/UndoState.d.ts → src/lib/components/editor/UndoState.ts} +3 -2
  97. package/{components → src/lib/components}/editor/icons/annotate.svg +0 -0
  98. package/{components → src/lib/components}/editor/icons/block.svg +0 -0
  99. package/{components → src/lib/components}/editor/icons/bold.svg +0 -0
  100. package/{components → src/lib/components}/editor/icons/bullets.svg +0 -0
  101. package/{components → src/lib/components}/editor/icons/callout.svg +0 -0
  102. package/{components → src/lib/components}/editor/icons/citation.svg +0 -0
  103. package/{components → src/lib/components}/editor/icons/clear.svg +0 -0
  104. package/{components → src/lib/components}/editor/icons/clipboard.svg +0 -0
  105. package/{components → src/lib/components}/editor/icons/code.svg +0 -0
  106. package/{components → src/lib/components}/editor/icons/columnafter.svg +0 -0
  107. package/{components → src/lib/components}/editor/icons/columnbefore.svg +0 -0
  108. package/{components → src/lib/components}/editor/icons/comment.svg +0 -0
  109. package/{components → src/lib/components}/editor/icons/copy.svg +0 -0
  110. package/{components → src/lib/components}/editor/icons/cut.svg +0 -0
  111. package/{components → src/lib/components}/editor/icons/define.svg +0 -0
  112. package/{components → src/lib/components}/editor/icons/deletecolumn.svg +0 -0
  113. package/{components → src/lib/components}/editor/icons/deleterow.svg +0 -0
  114. package/{components → src/lib/components}/editor/icons/footnote.svg +0 -0
  115. package/{components → src/lib/components}/editor/icons/header1.svg +0 -0
  116. package/{components → src/lib/components}/editor/icons/header2.svg +0 -0
  117. package/{components → src/lib/components}/editor/icons/header3.svg +0 -0
  118. package/{components → src/lib/components}/editor/icons/home.svg +0 -0
  119. package/{components → src/lib/components}/editor/icons/indent.svg +0 -0
  120. package/{components → src/lib/components}/editor/icons/italic.svg +0 -0
  121. package/{components → src/lib/components}/editor/icons/label.svg +0 -0
  122. package/{components → src/lib/components}/editor/icons/left.svg +0 -0
  123. package/{components → src/lib/components}/editor/icons/level.svg +0 -0
  124. package/{components → src/lib/components}/editor/icons/link.svg +0 -0
  125. package/{components → src/lib/components}/editor/icons/list.svg +0 -0
  126. package/{components → src/lib/components}/editor/icons/media.svg +0 -0
  127. package/{components → src/lib/components}/editor/icons/middle.svg +0 -0
  128. package/{components → src/lib/components}/editor/icons/numbers.svg +0 -0
  129. package/{components → src/lib/components}/editor/icons/paragraph.svg +0 -0
  130. package/{components → src/lib/components}/editor/icons/paste.svg +0 -0
  131. package/{components → src/lib/components}/editor/icons/quote.svg +0 -0
  132. package/{components → src/lib/components}/editor/icons/redo.svg +0 -0
  133. package/{components → src/lib/components}/editor/icons/right.svg +0 -0
  134. package/{components → src/lib/components}/editor/icons/rowabove.svg +0 -0
  135. package/{components → src/lib/components}/editor/icons/rowbelow.svg +0 -0
  136. package/{components → src/lib/components}/editor/icons/rule.svg +0 -0
  137. package/{components → src/lib/components}/editor/icons/sub.svg +0 -0
  138. package/{components → src/lib/components}/editor/icons/super.svg +0 -0
  139. package/{components → src/lib/components}/editor/icons/table.svg +0 -0
  140. package/{components → src/lib/components}/editor/icons/text.svg +0 -0
  141. package/{components → src/lib/components}/editor/icons/time.svg +0 -0
  142. package/{components → src/lib/components}/editor/icons/undo.svg +0 -0
  143. package/{components → src/lib/components}/editor/icons/unindent.svg +0 -0
  144. package/{components → src/lib/components}/editor/icons/unlink.svg +0 -0
  145. package/{components → src/lib/components}/page/Acknowledgements.svelte +19 -10
  146. package/src/lib/components/page/Authors.svelte +92 -0
  147. package/src/lib/components/page/BookLoader.svelte +77 -0
  148. package/src/lib/components/page/BulkReferenceEditor.svelte +86 -0
  149. package/src/lib/components/page/Chapter.svelte +449 -0
  150. package/src/lib/components/page/ChapterContext.ts +13 -0
  151. package/{components → src/lib/components}/page/ChapterNumber.svelte +0 -0
  152. package/{components → src/lib/components}/page/ChapterTitle.svelte +4 -2
  153. package/src/lib/components/page/Contexts.ts +176 -0
  154. package/{components → src/lib/components}/page/DefinitionView.svelte +52 -37
  155. package/{components → src/lib/components}/page/Description.svelte +15 -7
  156. package/src/lib/components/page/Edition.svelte +189 -0
  157. package/src/lib/components/page/EditionLoader.svelte +123 -0
  158. package/{components → src/lib/components}/page/Editions.svelte +22 -18
  159. package/{components → src/lib/components}/page/Glossary.svelte +33 -28
  160. package/{components → src/lib/components}/page/Header.svelte +59 -52
  161. package/{components → src/lib/components}/page/Index.svelte +48 -41
  162. package/{components → src/lib/components}/page/Instructions.svelte +2 -1
  163. package/{components → src/lib/components}/page/License.svelte +17 -9
  164. package/{components → src/lib/components}/page/Loading.svelte +0 -0
  165. package/{components → src/lib/components}/page/Media.svelte +44 -27
  166. package/{components → src/lib/components}/page/MediaPreview.svelte +3 -2
  167. package/{components → src/lib/components}/page/Muted.svelte +0 -0
  168. package/{components → src/lib/components}/page/Outline.svelte +140 -110
  169. package/src/lib/components/page/Page.svelte +94 -0
  170. package/{components → src/lib/components}/page/PageHeader.svelte +2 -1
  171. package/{components → src/lib/components}/page/PageParagraph.svelte +0 -0
  172. package/src/lib/components/page/PossibleChapter.svelte +16 -0
  173. package/src/lib/components/page/PossibleReference.svelte +14 -0
  174. package/{components → src/lib/components}/page/Print.svelte +5 -3
  175. package/{components → src/lib/components}/page/Publish.svelte +59 -52
  176. package/{components → src/lib/components}/page/Reference.svelte +39 -30
  177. package/{components → src/lib/components}/page/References.svelte +18 -14
  178. package/{components → src/lib/components}/page/Rows.svelte +0 -0
  179. package/src/lib/components/page/Search.svelte +153 -0
  180. package/{components → src/lib/components}/page/Status.svelte +5 -3
  181. package/{components → src/lib/components}/page/SubdomainEditor.svelte +16 -13
  182. package/{components → src/lib/components}/page/TableOfContents.svelte +79 -68
  183. package/src/lib/components/page/TableOfContentsImage.svelte +22 -0
  184. package/{components → src/lib/components}/page/TableOfContentsRow.svelte +34 -24
  185. package/{components → src/lib/components}/page/ThemeEditor.svelte +44 -33
  186. package/{components → src/lib/components}/page/ThemeEditorPreview.svelte +21 -12
  187. package/src/lib/components/page/ThemeSetEditor.svelte +21 -0
  188. package/{components → src/lib/components}/page/ThemeVariableEditor.svelte +18 -14
  189. package/{components → src/lib/components}/page/Title.svelte +0 -0
  190. package/{components → src/lib/components}/page/Unknown.svelte +10 -8
  191. package/{components/page/margins.js → src/lib/components/page/margins.ts} +79 -46
  192. package/{index.js → src/lib/index.js} +0 -0
  193. package/src/lib/models/CRUD.ts +469 -0
  194. package/{models/Firebase.js → src/lib/models/Firebase.ts} +26 -16
  195. package/src/lib/models/book/Book.ts +283 -0
  196. package/src/lib/models/book/BookMedia.ts +182 -0
  197. package/src/lib/models/book/BookSaveStatus.ts +8 -0
  198. package/src/lib/models/book/Chapter.ts +462 -0
  199. package/{models/book/ChapterID.js → src/lib/models/book/ChapterID.ts} +1 -0
  200. package/src/lib/models/book/Definition.ts +2 -0
  201. package/src/lib/models/book/Edition.ts +1216 -0
  202. package/src/lib/models/book/Reference.ts +171 -0
  203. package/{models/book/Schema.js → src/lib/models/book/Schema.ts} +1 -0
  204. package/{models/book/Theme.js → src/lib/models/book/Theme.ts} +111 -6
  205. package/{models/book/ThemeColors.d.ts → src/lib/models/book/ThemeColors.ts} +6 -0
  206. package/{models/book/Words.js → src/lib/models/book/Words.ts} +1 -0
  207. package/{models/chapter/AtomNode.js → src/lib/models/chapter/AtomNode.ts} +30 -10
  208. package/{models/chapter/BlockNode.js → src/lib/models/chapter/BlockNode.ts} +80 -47
  209. package/src/lib/models/chapter/BlocksNode.test.ts +867 -0
  210. package/{models/chapter/BlocksNode.js → src/lib/models/chapter/BlocksNode.ts} +571 -359
  211. package/{models/chapter/Bookkeeping.d.ts → src/lib/models/chapter/Bookkeeping.ts} +0 -0
  212. package/src/lib/models/chapter/CalloutNode.ts +79 -0
  213. package/{models/chapter/Caret.js → src/lib/models/chapter/Caret.ts} +50 -26
  214. package/src/lib/models/chapter/ChapterNode.ts +169 -0
  215. package/{models/chapter/CitationsNode.js → src/lib/models/chapter/CitationsNode.ts} +17 -10
  216. package/{models/chapter/CodeNode.js → src/lib/models/chapter/CodeNode.ts} +125 -62
  217. package/src/lib/models/chapter/CommentNode.ts +61 -0
  218. package/{models/chapter/DefinitionNode.js → src/lib/models/chapter/DefinitionNode.ts} +14 -8
  219. package/src/lib/models/chapter/Edit.ts +6 -0
  220. package/src/lib/models/chapter/EmbedNode.ts +257 -0
  221. package/{models/chapter/ErrorNode.js → src/lib/models/chapter/ErrorNode.ts} +15 -8
  222. package/src/lib/models/chapter/FootnoteNode.ts +59 -0
  223. package/src/lib/models/chapter/FormatNode.test.ts +137 -0
  224. package/{models/chapter/FormatNode.js → src/lib/models/chapter/FormatNode.ts} +443 -262
  225. package/{models/chapter/InlineCodeNode.js → src/lib/models/chapter/InlineCodeNode.ts} +17 -9
  226. package/{models/chapter/LabelNode.js → src/lib/models/chapter/LabelNode.ts} +26 -10
  227. package/{models/chapter/LinkNode.js → src/lib/models/chapter/LinkNode.ts} +12 -7
  228. package/{models/chapter/ListNode.test.js → src/lib/models/chapter/ListNode.test.ts} +57 -20
  229. package/{models/chapter/ListNode.js → src/lib/models/chapter/ListNode.ts} +277 -200
  230. package/src/lib/models/chapter/MetadataNode.ts +44 -0
  231. package/{models → src/lib/models}/chapter/Node.test.js +0 -0
  232. package/{models/chapter/Node.js → src/lib/models/chapter/Node.ts} +155 -71
  233. package/src/lib/models/chapter/ParagraphNode.test.ts +54 -0
  234. package/{models/chapter/ParagraphNode.js → src/lib/models/chapter/ParagraphNode.ts} +95 -58
  235. package/{models/chapter/Parser.test.js → src/lib/models/chapter/Parser.test.ts} +7 -0
  236. package/{models/chapter/Parser.js → src/lib/models/chapter/Parser.ts} +369 -184
  237. package/{models/chapter/Position.d.ts → src/lib/models/chapter/Position.ts} +0 -0
  238. package/src/lib/models/chapter/QuoteNode.ts +135 -0
  239. package/{models/chapter/RootNode.d.ts → src/lib/models/chapter/RootNode.ts} +2 -0
  240. package/{models/chapter/RuleNode.js → src/lib/models/chapter/RuleNode.ts} +9 -6
  241. package/{models/chapter/TableNode.test.js → src/lib/models/chapter/TableNode.test.ts} +27 -10
  242. package/{models/chapter/TableNode.js → src/lib/models/chapter/TableNode.ts} +141 -82
  243. package/{models/chapter/TextNode.test.js → src/lib/models/chapter/TextNode.test.ts} +2 -0
  244. package/{models/chapter/TextNode.js → src/lib/models/chapter/TextNode.ts} +117 -65
  245. package/{util/getSubdomain.js → src/lib/util/getSubdomain.ts} +14 -8
  246. package/{util/isMobile.js → src/lib/util/isMobile.ts} +1 -0
  247. package/{util/mineReference.js → src/lib/util/mineReference.ts} +45 -25
  248. package/{util/scrollToEyeLevel.js → src/lib/util/scrollToEyeLevel.ts} +4 -2
  249. package/src/params/edition.ts +3 -0
  250. package/src/routes/+error.svelte +12 -0
  251. package/src/routes/+layout.svelte +241 -0
  252. package/src/routes/+page.svelte +43 -0
  253. package/src/routes/Footer.svelte +0 -0
  254. package/src/routes/Header.svelte +112 -0
  255. package/src/routes/[bookid]/+layout.svelte +5 -0
  256. package/src/routes/[bookid]/[[editionid=edition]]/+error.svelte +14 -0
  257. package/src/routes/[bookid]/[[editionid=edition]]/+layout.svelte +7 -0
  258. package/src/routes/[bookid]/[[editionid=edition]]/+page.svelte +5 -0
  259. package/src/routes/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +5 -0
  260. package/src/routes/[bookid]/[[editionid=edition]]/glossary/+page.svelte +5 -0
  261. package/src/routes/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +5 -0
  262. package/src/routes/[bookid]/[[editionid=edition]]/media/+page.svelte +5 -0
  263. package/src/routes/[bookid]/[[editionid=edition]]/print/+page.svelte +5 -0
  264. package/src/routes/[bookid]/[[editionid=edition]]/references/+page.svelte +5 -0
  265. package/src/routes/[bookid]/[[editionid=edition]]/search/+page.svelte +5 -0
  266. package/src/routes/[bookid]/editions/+page.svelte +20 -0
  267. package/src/routes/about/+page.svelte +102 -0
  268. package/src/routes/confirm/+page.svelte +62 -0
  269. package/src/routes/email/+page.svelte +99 -0
  270. package/src/routes/login/+page.svelte +66 -0
  271. package/src/routes/read/+page.svelte +38 -0
  272. package/src/routes/write/+error.svelte +10 -0
  273. package/src/routes/write/+layout.svelte +11 -0
  274. package/src/routes/write/+page.svelte +114 -0
  275. package/src/routes/write/[bookid]/+layout.svelte +5 -0
  276. package/src/routes/write/[bookid]/[[editionid=edition]]/+layout.svelte +7 -0
  277. package/src/routes/write/[bookid]/[[editionid=edition]]/+page.svelte +5 -0
  278. package/src/routes/write/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +5 -0
  279. package/src/routes/write/[bookid]/[[editionid=edition]]/glossary/+page.svelte +5 -0
  280. package/src/routes/write/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +5 -0
  281. package/src/routes/write/[bookid]/[[editionid=edition]]/media/+page.svelte +5 -0
  282. package/src/routes/write/[bookid]/[[editionid=edition]]/print/+page.svelte +5 -0
  283. package/src/routes/write/[bookid]/[[editionid=edition]]/references/+page.svelte +5 -0
  284. package/src/routes/write/[bookid]/[[editionid=edition]]/search/+page.svelte +5 -0
  285. package/src/routes/write/[bookid]/[[editionid=edition]]/theme/+page.svelte +5 -0
  286. package/src/routes/write/[bookid]/[[editionid=edition]]/unknown/+page.svelte +5 -0
  287. package/src/routes/write/[bookid]/editions/+page.svelte +20 -0
  288. package/src/vite-env.d.ts +1 -0
  289. package/static/icons/favicon.png +0 -0
  290. package/static/icons/icon.png +0 -0
  291. package/static/icons/ios-icon.png +0 -0
  292. package/storage.rules +9 -0
  293. package/svelte.config.js +19 -0
  294. package/tsconfig.json +18 -0
  295. package/tsconfig.node.json +9 -0
  296. package/vite.config.ts +8 -0
  297. package/vite.reader.config.ts +32 -0
  298. package/components/Auth.svelte +0 -55
  299. package/components/Auth.svelte.d.ts +0 -16
  300. package/components/Authentication.js +0 -1
  301. package/components/BookPreview.svelte.d.ts +0 -18
  302. package/components/External.svelte.d.ts +0 -18
  303. package/components/Link.svelte +0 -51
  304. package/components/Link.svelte.d.ts +0 -18
  305. package/components/app/BookList.svelte.d.ts +0 -18
  306. package/components/app/Button.svelte.d.ts +0 -22
  307. package/components/app/Feedback.svelte.d.ts +0 -18
  308. package/components/app/Head.svelte.d.ts +0 -18
  309. package/components/app/Large.svelte.d.ts +0 -27
  310. package/components/app/Lead.svelte.d.ts +0 -27
  311. package/components/app/Link.svelte.d.ts +0 -20
  312. package/components/app/Options.svelte.d.ts +0 -19
  313. package/components/app/Paragraph.svelte.d.ts +0 -18
  314. package/components/app/Section.svelte.d.ts +0 -27
  315. package/components/app/Table.svelte.d.ts +0 -27
  316. package/components/app/TextInput.svelte.d.ts +0 -22
  317. package/components/chapter/Atom.svelte.d.ts +0 -19
  318. package/components/chapter/Block.svelte +0 -37
  319. package/components/chapter/Block.svelte.d.ts +0 -17
  320. package/components/chapter/Callout.svelte.d.ts +0 -17
  321. package/components/chapter/CaptionedCode.svelte.d.ts +0 -17
  322. package/components/chapter/ChapterBody.svelte.d.ts +0 -19
  323. package/components/chapter/Citations.svelte.d.ts +0 -17
  324. package/components/chapter/Code.svelte.d.ts +0 -22
  325. package/components/chapter/Comment.svelte.d.ts +0 -17
  326. package/components/chapter/Definition.svelte.d.ts +0 -17
  327. package/components/chapter/Embed.svelte.d.ts +0 -20
  328. package/components/chapter/ErrorMessage.svelte +0 -9
  329. package/components/chapter/ErrorMessage.svelte.d.ts +0 -17
  330. package/components/chapter/ExtendedPrism.d.ts +0 -2
  331. package/components/chapter/Figure.svelte.d.ts +0 -24
  332. package/components/chapter/Footnote.svelte.d.ts +0 -19
  333. package/components/chapter/Format.svelte.d.ts +0 -19
  334. package/components/chapter/InlineCode.svelte.d.ts +0 -17
  335. package/components/chapter/Label.svelte.d.ts +0 -17
  336. package/components/chapter/Link.svelte.d.ts +0 -17
  337. package/components/chapter/List.svelte.d.ts +0 -17
  338. package/components/chapter/Marginal.svelte.d.ts +0 -22
  339. package/components/chapter/Paragraph.svelte.d.ts +0 -18
  340. package/components/chapter/Positioned.svelte.d.ts +0 -19
  341. package/components/chapter/Problem.svelte.d.ts +0 -27
  342. package/components/chapter/Python.svelte +0 -128
  343. package/components/chapter/Python.svelte.d.ts +0 -18
  344. package/components/chapter/Quote.svelte.d.ts +0 -17
  345. package/components/chapter/Rule.svelte.d.ts +0 -17
  346. package/components/chapter/Table.svelte.d.ts +0 -17
  347. package/components/chapter/Text.svelte +0 -87
  348. package/components/chapter/Text.svelte.d.ts +0 -18
  349. package/components/editor/BookishEditor.svelte +0 -884
  350. package/components/editor/BookishEditor.svelte.d.ts +0 -25
  351. package/components/editor/CalloutEditor.svelte +0 -10
  352. package/components/editor/CalloutEditor.svelte.d.ts +0 -17
  353. package/components/editor/CaptionedCodeEditor.svelte.d.ts +0 -17
  354. package/components/editor/CaretContext.d.ts +0 -50
  355. package/components/editor/CaretContext.js +0 -1
  356. package/components/editor/CaretState.js +0 -1
  357. package/components/editor/CaretUtilities.js +0 -1
  358. package/components/editor/CaretView.svelte.d.ts +0 -25
  359. package/components/editor/CitationsEditor.svelte +0 -53
  360. package/components/editor/CitationsEditor.svelte.d.ts +0 -17
  361. package/components/editor/Clipboard.js +0 -1
  362. package/components/editor/Command.js +0 -1
  363. package/components/editor/Commands.d.ts +0 -3
  364. package/components/editor/ConfirmButton.svelte +0 -49
  365. package/components/editor/ConfirmButton.svelte.d.ts +0 -19
  366. package/components/editor/DefinitionEditor.svelte +0 -36
  367. package/components/editor/DefinitionEditor.svelte.d.ts +0 -17
  368. package/components/editor/EmbedEditor.svelte +0 -137
  369. package/components/editor/EmbedEditor.svelte.d.ts +0 -17
  370. package/components/editor/Icon.svelte.d.ts +0 -16
  371. package/components/editor/ImageChooser.svelte.d.ts +0 -18
  372. package/components/editor/InlineCodeEditor.svelte +0 -12
  373. package/components/editor/InlineCodeEditor.svelte.d.ts +0 -17
  374. package/components/editor/LabelEditor.svelte.d.ts +0 -17
  375. package/components/editor/LanguageEditor.svelte.d.ts +0 -17
  376. package/components/editor/LinkEditor.svelte +0 -100
  377. package/components/editor/LinkEditor.svelte.d.ts +0 -17
  378. package/components/editor/Note.svelte.d.ts +0 -27
  379. package/components/editor/Permissions.svelte.d.ts +0 -20
  380. package/components/editor/PositionEditor.svelte +0 -17
  381. package/components/editor/PositionEditor.svelte.d.ts +0 -18
  382. package/components/editor/QuoteEditor.svelte +0 -10
  383. package/components/editor/QuoteEditor.svelte.d.ts +0 -17
  384. package/components/editor/Switch.svelte.d.ts +0 -20
  385. package/components/editor/TableEditor.svelte +0 -10
  386. package/components/editor/TableEditor.svelte.d.ts +0 -17
  387. package/components/editor/TextEditor.svelte.d.ts +0 -24
  388. package/components/editor/Toggle.svelte +0 -41
  389. package/components/editor/Toggle.svelte.d.ts +0 -19
  390. package/components/editor/Toolbar.svelte +0 -249
  391. package/components/editor/Toolbar.svelte.d.ts +0 -17
  392. package/components/editor/ToolbarGroup.svelte.d.ts +0 -18
  393. package/components/editor/ToolbarSpacer.svelte.d.ts +0 -23
  394. package/components/editor/URLEditor.svelte +0 -13
  395. package/components/editor/URLEditor.svelte.d.ts +0 -18
  396. package/components/editor/UndoState.js +0 -1
  397. package/components/page/Acknowledgements.svelte.d.ts +0 -14
  398. package/components/page/Authors.svelte +0 -85
  399. package/components/page/Authors.svelte.d.ts +0 -21
  400. package/components/page/BookLoader.svelte +0 -59
  401. package/components/page/BookLoader.svelte.d.ts +0 -16
  402. package/components/page/BulkReferenceEditor.svelte +0 -63
  403. package/components/page/BulkReferenceEditor.svelte.d.ts +0 -14
  404. package/components/page/Chapter.svelte +0 -392
  405. package/components/page/Chapter.svelte.d.ts +0 -18
  406. package/components/page/ChapterContext.d.ts +0 -10
  407. package/components/page/ChapterContext.js +0 -1
  408. package/components/page/ChapterNumber.svelte.d.ts +0 -27
  409. package/components/page/ChapterTitle.svelte.d.ts +0 -18
  410. package/components/page/Contexts.d.ts +0 -47
  411. package/components/page/Contexts.js +0 -133
  412. package/components/page/DefinitionView.svelte.d.ts +0 -18
  413. package/components/page/Description.svelte.d.ts +0 -14
  414. package/components/page/Edition.svelte +0 -161
  415. package/components/page/Edition.svelte.d.ts +0 -20
  416. package/components/page/EditionLoader.svelte +0 -99
  417. package/components/page/EditionLoader.svelte.d.ts +0 -18
  418. package/components/page/Editions.svelte.d.ts +0 -14
  419. package/components/page/Glossary.svelte.d.ts +0 -14
  420. package/components/page/Header.svelte.d.ts +0 -29
  421. package/components/page/Index.svelte.d.ts +0 -14
  422. package/components/page/Instructions.svelte.d.ts +0 -18
  423. package/components/page/License.svelte.d.ts +0 -14
  424. package/components/page/Loading.svelte.d.ts +0 -23
  425. package/components/page/Media.svelte.d.ts +0 -14
  426. package/components/page/MediaPreview.svelte.d.ts +0 -19
  427. package/components/page/Muted.svelte.d.ts +0 -27
  428. package/components/page/Outline.svelte.d.ts +0 -19
  429. package/components/page/Page.svelte +0 -84
  430. package/components/page/Page.svelte.d.ts +0 -19
  431. package/components/page/PageHeader.svelte.d.ts +0 -18
  432. package/components/page/PageParagraph.svelte.d.ts +0 -27
  433. package/components/page/PossibleChapter.svelte +0 -14
  434. package/components/page/PossibleChapter.svelte.d.ts +0 -14
  435. package/components/page/PossibleReference.svelte +0 -11
  436. package/components/page/PossibleReference.svelte.d.ts +0 -18
  437. package/components/page/Print.svelte.d.ts +0 -14
  438. package/components/page/Publish.svelte.d.ts +0 -14
  439. package/components/page/Reference.svelte.d.ts +0 -17
  440. package/components/page/References.svelte.d.ts +0 -14
  441. package/components/page/Rows.svelte.d.ts +0 -27
  442. package/components/page/Search.svelte +0 -133
  443. package/components/page/Search.svelte.d.ts +0 -14
  444. package/components/page/Status.svelte.d.ts +0 -14
  445. package/components/page/SubdomainEditor.svelte.d.ts +0 -14
  446. package/components/page/TableOfContents.svelte.d.ts +0 -14
  447. package/components/page/TableOfContentsImage.svelte +0 -18
  448. package/components/page/TableOfContentsImage.svelte.d.ts +0 -16
  449. package/components/page/TableOfContentsRow.svelte.d.ts +0 -24
  450. package/components/page/ThemeEditor.svelte.d.ts +0 -14
  451. package/components/page/ThemeEditorPreview.svelte.d.ts +0 -17
  452. package/components/page/ThemeSetEditor.svelte +0 -19
  453. package/components/page/ThemeSetEditor.svelte.d.ts +0 -18
  454. package/components/page/ThemeVariableEditor.svelte.d.ts +0 -18
  455. package/components/page/Title.svelte.d.ts +0 -27
  456. package/components/page/Unknown.svelte.d.ts +0 -16
  457. package/components/page/margins.d.ts +0 -2
  458. package/index.d.ts +0 -15
  459. package/models/CRUD.d.ts +0 -27
  460. package/models/CRUD.js +0 -262
  461. package/models/Firebase.d.ts +0 -5
  462. package/models/book/Book.d.ts +0 -61
  463. package/models/book/Book.js +0 -135
  464. package/models/book/BookMedia.d.ts +0 -23
  465. package/models/book/BookMedia.js +0 -108
  466. package/models/book/BookSaveStatus.d.ts +0 -7
  467. package/models/book/BookSaveStatus.js +0 -8
  468. package/models/book/Chapter.d.ts +0 -81
  469. package/models/book/Chapter.js +0 -212
  470. package/models/book/ChapterID.d.ts +0 -10
  471. package/models/book/Definition.d.ts +0 -6
  472. package/models/book/Definition.js +0 -1
  473. package/models/book/Edition.d.ts +0 -139
  474. package/models/book/Edition.js +0 -620
  475. package/models/book/Reference.d.ts +0 -24
  476. package/models/book/Reference.js +0 -78
  477. package/models/book/Schema.d.ts +0 -174
  478. package/models/book/Theme.d.ts +0 -113
  479. package/models/book/ThemeColors.js +0 -1
  480. package/models/book/Words.d.ts +0 -2
  481. package/models/chapter/AtomNode.d.ts +0 -18
  482. package/models/chapter/BlockNode.d.ts +0 -20
  483. package/models/chapter/BlocksNode.d.ts +0 -50
  484. package/models/chapter/BlocksNode.test.d.ts +0 -1
  485. package/models/chapter/BlocksNode.test.js +0 -568
  486. package/models/chapter/Bookkeeping.js +0 -1
  487. package/models/chapter/CalloutNode.d.ts +0 -17
  488. package/models/chapter/CalloutNode.js +0 -58
  489. package/models/chapter/Caret.d.ts +0 -23
  490. package/models/chapter/ChapterNode.d.ts +0 -34
  491. package/models/chapter/ChapterNode.js +0 -117
  492. package/models/chapter/CitationsNode.d.ts +0 -16
  493. package/models/chapter/CodeNode.d.ts +0 -35
  494. package/models/chapter/CommentNode.d.ts +0 -18
  495. package/models/chapter/CommentNode.js +0 -48
  496. package/models/chapter/DefinitionNode.d.ts +0 -12
  497. package/models/chapter/Edit.d.ts +0 -7
  498. package/models/chapter/Edit.js +0 -1
  499. package/models/chapter/EmbedNode.d.ts +0 -45
  500. package/models/chapter/EmbedNode.js +0 -168
  501. package/models/chapter/ErrorNode.d.ts +0 -17
  502. package/models/chapter/FootnoteNode.d.ts +0 -18
  503. package/models/chapter/FootnoteNode.js +0 -47
  504. package/models/chapter/FormatNode.d.ts +0 -60
  505. package/models/chapter/FormatNode.test.d.ts +0 -1
  506. package/models/chapter/FormatNode.test.js +0 -96
  507. package/models/chapter/InlineCodeNode.d.ts +0 -12
  508. package/models/chapter/LabelNode.d.ts +0 -17
  509. package/models/chapter/LinkNode.d.ts +0 -12
  510. package/models/chapter/ListNode.d.ts +0 -51
  511. package/models/chapter/ListNode.test.d.ts +0 -1
  512. package/models/chapter/MetadataNode.d.ts +0 -17
  513. package/models/chapter/MetadataNode.js +0 -32
  514. package/models/chapter/Node.d.ts +0 -38
  515. package/models/chapter/Node.test.d.ts +0 -1
  516. package/models/chapter/ParagraphNode.d.ts +0 -33
  517. package/models/chapter/ParagraphNode.test.d.ts +0 -1
  518. package/models/chapter/ParagraphNode.test.js +0 -30
  519. package/models/chapter/Parser.d.ts +0 -75
  520. package/models/chapter/Parser.test.d.ts +0 -1
  521. package/models/chapter/Position.js +0 -1
  522. package/models/chapter/QuoteNode.d.ts +0 -25
  523. package/models/chapter/QuoteNode.js +0 -99
  524. package/models/chapter/RootNode.js +0 -1
  525. package/models/chapter/RuleNode.d.ts +0 -15
  526. package/models/chapter/TableNode.d.ts +0 -37
  527. package/models/chapter/TableNode.test.d.ts +0 -1
  528. package/models/chapter/TextNode.d.ts +0 -36
  529. package/models/chapter/TextNode.test.d.ts +0 -1
  530. package/util/getSubdomain.d.ts +0 -3
  531. package/util/isMobile.d.ts +0 -2
  532. package/util/mineReference.d.ts +0 -4
  533. package/util/scrollToEyeLevel.d.ts +0 -2
@@ -0,0 +1,58 @@
1
+ <script lang="ts">
2
+ import { page } from '$app/stores';
3
+
4
+ export let to: string;
5
+
6
+ let link: HTMLAnchorElement;
7
+
8
+ function scroll(event: MouseEvent) {
9
+ // No element? Bail.
10
+ if (link === undefined) return;
11
+
12
+ // No hash? No scroll.
13
+ const hash = new URL(link.href).hash;
14
+ if (hash === '') return;
15
+
16
+ // Prevent the browser from scrolling.
17
+ event.preventDefault();
18
+
19
+ // Get the anchor
20
+ const anchorId = new URL(link.href).hash.replace('#', '');
21
+ const anchor = document.getElementById(anchorId);
22
+
23
+ // No anchor? Bail.
24
+ if (anchor === null) return;
25
+
26
+ // Scroll to the anchor.
27
+ window.scrollTo({
28
+ top: anchor.offsetTop,
29
+ behavior: 'smooth',
30
+ });
31
+
32
+ // Update the hash (without scrolling)
33
+ history.pushState({}, '', hash);
34
+ }
35
+ </script>
36
+
37
+ {#if $page.url.pathname === (to.charAt(to.length - 1) === '/' ? to.substring(0, to.length - 1) : to)}
38
+ <slot />
39
+ {:else}
40
+ <a
41
+ href={to}
42
+ bind:this={link}
43
+ on:click={(event) => scroll(event)}
44
+ target={to.startsWith('http') ? '_blank' : null}><slot /></a
45
+ >
46
+ {/if}
47
+
48
+ <style>
49
+ a {
50
+ color: var(--bookish-link-color);
51
+ font-weight: var(--bookish-link-font-weight);
52
+ text-decoration: none;
53
+ }
54
+
55
+ a:hover {
56
+ text-decoration: underline;
57
+ }
58
+ </style>
@@ -1,6 +1,9 @@
1
- <script>import BookPreview from '../BookPreview.svelte';
2
- export let books;
3
- export let write;
1
+ <script lang="ts">
2
+ import type Book from '../../models/book/Book';
3
+ import BookPreview from '../BookPreview.svelte';
4
+
5
+ export let books: Book[];
6
+ export let write: boolean;
4
7
  </script>
5
8
 
6
9
  <section class="previews">
@@ -1,7 +1,8 @@
1
- <script>export let type = null;
2
- export let tooltip;
3
- export let disabled = false;
4
- export let command;
1
+ <script lang="ts">
2
+ export let type: 'submit' | 'button' | null = null;
3
+ export let tooltip: string;
4
+ export let disabled: boolean = false;
5
+ export let command: () => void;
5
6
  </script>
6
7
 
7
8
  <button
@@ -1,10 +1,14 @@
1
- <script>import { onMount } from 'svelte';
2
- import Large from './Large.svelte';
3
- export let error = false;
4
- let visible = error;
5
- onMount(() => {
6
- setTimeout(() => (visible = true), 1000);
7
- });
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import Large from './Large.svelte';
4
+
5
+ export let error: boolean = false;
6
+
7
+ let visible = error;
8
+
9
+ onMount(() => {
10
+ setTimeout(() => (visible = true), 1000);
11
+ });
8
12
  </script>
9
13
 
10
14
  {#if visible}
@@ -1,4 +1,5 @@
1
- <script>export let id = null;
1
+ <script lang="ts">
2
+ export let id: string | null = null;
2
3
  </script>
3
4
 
4
5
  <h2 {id}><slot /></h2>
@@ -1,6 +1,7 @@
1
- <script>export let to;
2
- export let before = undefined;
3
- export let title = undefined;
1
+ <script lang="ts">
2
+ export let to: string;
3
+ export let before: Function | undefined = undefined;
4
+ export let title: string | undefined = undefined;
4
5
  </script>
5
6
 
6
7
  <a
@@ -1,7 +1,8 @@
1
- <script>export let options;
2
- export let changed;
3
- export let value;
4
- export let label;
1
+ <script lang="ts">
2
+ export let options: [string, string][];
3
+ export let changed: (value: string) => void;
4
+ export let value: string;
5
+ export let label: string;
5
6
  </script>
6
7
 
7
8
  <select bind:value on:change={() => changed(value)} aria-label={label}>
@@ -1,4 +1,5 @@
1
- <script>export let aside = false;
1
+ <script lang="ts">
2
+ export let aside: boolean = false;
2
3
  </script>
3
4
 
4
5
  <p class={aside ? 'aside' : ''}><slot /></p>
@@ -1,12 +1,15 @@
1
- <script>export let text = '';
2
- export let autocomplete = null;
3
- export let type;
4
- export let placeholder;
5
- export let disabled;
6
- let input;
7
- export function value() {
8
- return text;
9
- }
1
+ <script lang="ts">
2
+ export let text = '';
3
+ export let autocomplete: string | null = null;
4
+ export let type: string;
5
+ export let placeholder: string;
6
+ export let disabled: boolean;
7
+
8
+ let input: HTMLInputElement;
9
+
10
+ export function value() {
11
+ return text;
12
+ }
10
13
  </script>
11
14
 
12
15
  <input
@@ -1,17 +1,23 @@
1
1
  <svelte:options immutable={true} />
2
2
 
3
- <script>import { getCaret } from '../page/Contexts';
4
- export let node;
5
- let caret = getCaret();
6
- // Is the caret on this link?
7
- $: selected = $caret && $caret.range && $caret.range.start.node === node;
8
- function handleMouseDown() {
9
- // Select this so that the view stays focused.
10
- $caret?.setCaret({
11
- start: { node: node, index: 0 },
12
- end: { node: node, index: 0 },
13
- });
14
- }
3
+ <script lang="ts">
4
+ import type AtomNode from '$lib/models/chapter/AtomNode';
5
+ import { getCaret } from '$lib/components/page/Contexts';
6
+
7
+ export let node: AtomNode<any>;
8
+
9
+ let caret = getCaret();
10
+
11
+ // Is the caret on this link?
12
+ $: selected = $caret && $caret.range && $caret.range.start.node === node;
13
+
14
+ function handleMouseDown() {
15
+ // Select this so that the view stays focused.
16
+ $caret?.setCaret({
17
+ start: { node: node, index: 0 },
18
+ end: { node: node, index: 0 },
19
+ });
20
+ }
15
21
  </script>
16
22
 
17
23
  <!-- Prevent the editor from receiving the click. -->
@@ -0,0 +1,42 @@
1
+ <svelte:options immutable={true} />
2
+
3
+ <script lang="ts">
4
+ import type BlockNode from '$lib/models/chapter/BlockNode';
5
+ import CalloutNode from '$lib/models/chapter/CalloutNode';
6
+ import CodeNode from '$lib/models/chapter/CodeNode';
7
+ import EmbedNode from '$lib/models/chapter/EmbedNode';
8
+ import ErrorNode from '$lib/models/chapter/ErrorNode';
9
+ import ListNode from '$lib/models/chapter/ListNode';
10
+ import ParagraphNode from '$lib/models/chapter/ParagraphNode';
11
+ import QuoteNode from '$lib/models/chapter/QuoteNode';
12
+ import RuleNode from '$lib/models/chapter/RuleNode';
13
+ import TableNode from '$lib/models/chapter/TableNode';
14
+
15
+ import Callout from './Callout.svelte';
16
+ import CaptionedCode from './CaptionedCode.svelte';
17
+ import Embed from './Embed.svelte';
18
+ import ErrorMessage from './ErrorMessage.svelte';
19
+ import List from './List.svelte';
20
+ import Paragraph from './Paragraph.svelte';
21
+ import Quote from './Quote.svelte';
22
+ import Rule from './Rule.svelte';
23
+ import Table from './Table.svelte';
24
+ import Problem from './Problem.svelte';
25
+ import { isChapterEditable } from '../page/Contexts';
26
+
27
+ export let node: BlockNode;
28
+
29
+ let editable = isChapterEditable();
30
+ </script>
31
+
32
+ {#if node instanceof ParagraphNode}<Paragraph {node} />
33
+ {:else if node instanceof ListNode}<List {node} />
34
+ {:else if node instanceof EmbedNode}<Embed {node} {editable} />
35
+ {:else if node instanceof CalloutNode}<Callout {node} />
36
+ {:else if node instanceof QuoteNode}<Quote {node} />
37
+ {:else if node instanceof CodeNode}<CaptionedCode {node} />
38
+ {:else if node instanceof ErrorNode}<ErrorMessage {node} />
39
+ {:else if node instanceof RuleNode}<Rule {node} />
40
+ {:else if node instanceof TableNode}<Table {node} />
41
+ {:else}<p><Problem>Unknown node type</Problem></p>
42
+ {/if}
@@ -1,8 +1,11 @@
1
1
  <svelte:options immutable={true} />
2
2
 
3
- <script>import Block from './Block.svelte';
4
- import Positioned from './Positioned.svelte';
5
- export let node;
3
+ <script lang="ts">
4
+ import type CalloutNode from '$lib/models/chapter/CalloutNode';
5
+ import Block from './Block.svelte';
6
+ import Positioned from './Positioned.svelte';
7
+
8
+ export let node: CalloutNode;
6
9
  </script>
7
10
 
8
11
  <Positioned position={node.getPosition()}>
@@ -1,18 +1,26 @@
1
1
  <svelte:options immutable={true} />
2
2
 
3
- <script>import Code from './Code.svelte';
4
- import Python from './Python.svelte';
5
- import Text from './Text.svelte';
6
- import { isChapterEditable } from '../page/Contexts';
7
- import Figure from './Figure.svelte';
8
- import { getCaret } from '../page/Contexts';
9
- export let node;
10
- $: language = node.getLanguage();
11
- let editable = isChapterEditable();
12
- // const languages = [ "C", "C++", "CSS", "Go", "HTML", "Java", "JavaScript", "Markdown", "Plaintext", "Python", "TypeScript" ];
13
- let caret = getCaret();
14
- $: inside =
15
- $caret?.range?.start.node === node.getCodeNode() ||
3
+ <script lang="ts">
4
+ import type CodeNode from '$lib/models/chapter/CodeNode';
5
+ import Code from './Code.svelte';
6
+ import Python from './Python.svelte';
7
+ import Text from './Text.svelte';
8
+ import { isChapterEditable } from '../page/Contexts';
9
+ import Figure from './Figure.svelte';
10
+ import { getCaret } from '$lib/components/page/Contexts';
11
+
12
+ export let node: CodeNode;
13
+
14
+ $: language = node.getLanguage();
15
+
16
+ let editable = isChapterEditable();
17
+
18
+ // const languages = [ "C", "C++", "CSS", "Go", "HTML", "Java", "JavaScript", "Markdown", "Plaintext", "Python", "TypeScript" ];
19
+
20
+ let caret = getCaret();
21
+
22
+ $: inside =
23
+ $caret?.range?.start.node === node.getCodeNode() ||
16
24
  $caret?.range?.end.node === node.getCodeNode();
17
25
  </script>
18
26
 
@@ -1,14 +1,18 @@
1
1
  <svelte:options immutable />
2
2
 
3
- <script>import ParagraphNode from '../../models/chapter/ParagraphNode';
4
- import Block from './Block.svelte';
5
- import Paragraph from './Paragraph.svelte';
6
- import Problem from './Problem.svelte';
7
- export let node;
8
- export let placeholder = '';
9
- export let editable = false;
10
- $: errors = node.getErrors();
11
- $: blocks = node.getBlocks();
3
+ <script lang="ts">
4
+ import type ChapterNode from '$lib/models/chapter/ChapterNode';
5
+ import ParagraphNode from '$lib/models/chapter/ParagraphNode';
6
+ import Block from './Block.svelte';
7
+ import Paragraph from './Paragraph.svelte';
8
+ import Problem from './Problem.svelte';
9
+
10
+ export let node: ChapterNode;
11
+ export let placeholder: string = '';
12
+ export let editable: boolean = false;
13
+
14
+ $: errors = node.getErrors();
15
+ $: blocks = node.getBlocks();
12
16
  </script>
13
17
 
14
18
  <section class="bookish-chapter-body" data-nodeid={node.nodeID}>
@@ -1,38 +1,39 @@
1
1
  <svelte:options immutable={true} />
2
2
 
3
- <script>import Marginal from './Marginal.svelte';
4
- import Parser from '../../models/chapter/Parser';
5
- import Problem from './Problem.svelte';
6
- import Atom from './Atom.svelte';
7
- import { getChapter, getEdition } from '../page/Contexts';
8
- import PossibleReference from '../page/PossibleReference.svelte';
9
- import { afterUpdate } from 'svelte';
10
- export let node;
11
- let chapter = getChapter();
12
- let edition = getEdition();
13
- $: ast =
14
- $edition && $chapter ? $chapter.chapter.getAST($edition) : undefined;
15
- // Sort citations numerically, however they're numbered.
16
- $: citations = node.getMeta().sort((a, b) => {
17
- if (ast === undefined)
18
- return 0;
19
- let aNumber = ast.getCitationNumber(a);
20
- let bNumber = ast.getCitationNumber(b);
21
- if (aNumber === null) {
22
- if (bNumber === null)
23
- return 0;
24
- else
25
- return 1;
26
- }
27
- else {
28
- if (bNumber === null)
29
- return -1;
30
- else
31
- return aNumber - bNumber;
32
- }
33
- });
34
- // Position the marginals on every render.
35
- afterUpdate(() => $chapter?.layoutMarginals());
3
+ <script lang="ts">
4
+ import Marginal from './Marginal.svelte';
5
+ import Parser from '$lib/models/chapter/Parser';
6
+ import type CitationsNode from '$lib/models/chapter/CitationsNode';
7
+ import Problem from './Problem.svelte';
8
+ import Atom from './Atom.svelte';
9
+ import { getChapter, getEdition } from '../page/Contexts';
10
+ import PossibleReference from '../page/PossibleReference.svelte';
11
+ import { afterUpdate } from 'svelte';
12
+
13
+ export let node: CitationsNode;
14
+
15
+ let chapter = getChapter();
16
+ let edition = getEdition();
17
+
18
+ $: ast =
19
+ $edition && $chapter ? $chapter.chapter.getAST($edition) : undefined;
20
+
21
+ // Sort citations numerically, however they're numbered.
22
+ $: citations = node.getMeta().sort((a, b) => {
23
+ if (ast === undefined) return 0;
24
+ let aNumber = ast.getCitationNumber(a);
25
+ let bNumber = ast.getCitationNumber(b);
26
+ if (aNumber === null) {
27
+ if (bNumber === null) return 0;
28
+ else return 1;
29
+ } else {
30
+ if (bNumber === null) return -1;
31
+ else return aNumber - bNumber;
32
+ }
33
+ });
34
+
35
+ // Position the marginals on every render.
36
+ afterUpdate(() => $chapter?.layoutMarginals());
36
37
  </script>
37
38
 
38
39
  <Atom {node}>
@@ -1,23 +1,27 @@
1
1
  <svelte:options immutable={true} />
2
2
 
3
- <script>import { afterUpdate } from 'svelte';
4
- import Prism from './ExtendedPrism';
5
- export let editable;
6
- export let inline;
7
- export let nodeID;
8
- export let edited = undefined;
9
- export let language = undefined;
10
- let element = null;
11
- // When the component mounts or updates, highlight the code inside.
12
- afterUpdate(() => {
13
- if (element) {
14
- Prism.highlightElement(element);
15
- }
16
- });
17
- function handleChange() {
18
- if (element && edited)
19
- edited(element.innerText);
20
- }
3
+ <script lang="ts">
4
+ import { afterUpdate } from 'svelte';
5
+ import Prism from './ExtendedPrism';
6
+
7
+ export let editable: boolean;
8
+ export let inline: boolean;
9
+ export let nodeID: number | undefined;
10
+ export let edited: ((text: string) => void) | undefined = undefined;
11
+ export let language: string | undefined = undefined;
12
+
13
+ let element: HTMLElement | null = null;
14
+
15
+ // When the component mounts or updates, highlight the code inside.
16
+ afterUpdate(() => {
17
+ if (element) {
18
+ Prism.highlightElement(element);
19
+ }
20
+ });
21
+
22
+ function handleChange() {
23
+ if (element && edited) edited(element.innerText);
24
+ }
21
25
  </script>
22
26
 
23
27
  <code
@@ -33,7 +37,7 @@ function handleChange() {
33
37
  </code>
34
38
 
35
39
  <style global>
36
- :global(.bookish-code) {
40
+ .bookish-code {
37
41
  font-family: var(--bookish-code-font-family);
38
42
  font-weight: var(--bookish-code-font-weight);
39
43
  font-size: var(--bookish-code-font-size);
@@ -44,26 +48,27 @@ function handleChange() {
44
48
  overflow-x: scroll;
45
49
  }
46
50
 
47
- :global(code) {
51
+ code {
48
52
  font-family: var(--bookish-code-font-family);
49
53
  font-weight: var(--bookish-code-font-weight);
50
54
  font-size: var(--bookish-code-font-size);
51
55
  }
52
56
 
53
- :global(.bookish-code-block) {
57
+ .bookish-code-block {
54
58
  display: block;
55
59
  padding: var(--bookish-block-padding);
56
60
  line-height: var(--bookish-paragraph-line-height-tight);
57
61
  border-radius: var(--bookish-roundedness);
58
62
  }
59
63
 
60
- :global(.bookish-code-inline) {
64
+ .bookish-code-inline {
61
65
  display: inline;
62
66
  padding: calc(1.5 * var(--bookish-inline-padding))
63
67
  var(--bookish-inline-padding);
68
+ white-space: pre-line !important;
64
69
  }
65
70
 
66
- :global(.bookish-code-inline) :global(code) {
71
+ .bookish-code-inline :global(code) {
67
72
  display: inline;
68
73
  padding: 0em;
69
74
  }
@@ -76,7 +81,7 @@ function handleChange() {
76
81
  * @author Lea Verou
77
82
  */
78
83
 
79
- :global(code[class*='language-']) {
84
+ code[class*='language-'] {
80
85
  color: black;
81
86
  background: none;
82
87
  font-family: var(--bookish-code-font-family);
@@ -98,69 +103,69 @@ function handleChange() {
98
103
  hyphens: none;
99
104
  }
100
105
 
101
- :global(.token.comment),
102
- :global(.token.prolog),
103
- :global(.token.doctype),
104
- :global(.token.cdata) {
106
+ .token.comment,
107
+ .token.prolog,
108
+ .token.doctype,
109
+ .token.cdata {
105
110
  color: var(--bookish-comment-color);
106
111
  }
107
112
 
108
- :global(.token.punctuation) {
113
+ .token.punctuation {
109
114
  color: var(--bookish-muted-color);
110
115
  }
111
116
 
112
- :global(.token.namespace) {
117
+ .token.namespace {
113
118
  opacity: 0.7;
114
119
  }
115
120
 
116
- :global(.token.property),
117
- :global(.token.tag),
118
- :global(.token.boolean),
119
- :global(.token.number),
120
- :global(.token.constant),
121
- :global(.token.symbol),
122
- :global(.token.deleted) {
121
+ .token.property,
122
+ .token.tag,
123
+ .token.boolean,
124
+ .token.number,
125
+ .token.constant,
126
+ .token.symbol,
127
+ .token.deleted {
123
128
  color: var(--bookish-error-color);
124
129
  }
125
130
 
126
- :global(.token.selector),
127
- :global(.token.attr-name),
128
- :global(.token.string),
129
- :global(.token.char),
130
- :global(.token.builtin),
131
- :global(.token.inserted) {
131
+ .token.selector,
132
+ .token.attr-name,
133
+ .token.string,
134
+ .token.char,
135
+ .token.builtin,
136
+ .token.inserted {
132
137
  color: var(--bookish-pragraph-color);
133
138
  }
134
139
 
135
- :global(.token.operator),
136
- :global(.token.entity),
137
- :global(.token.url) {
140
+ .token.operator,
141
+ .token.entity,
142
+ .token.url {
138
143
  color: var(--bookish-bullet-color);
139
144
  }
140
145
 
141
- :global(.token.atrule),
142
- :global(.token.attr-value),
143
- :global(.token.keyword) {
146
+ .token.atrule,
147
+ .token.attr-value,
148
+ .token.keyword {
144
149
  color: var(--bookish-link-color);
145
150
  }
146
151
 
147
- :global(.token.regex),
148
- :global(.token.important),
149
- :global(.token.variable),
150
- :global(.token.function),
151
- :global(.token.class-name) {
152
+ .token.regex,
153
+ .token.important,
154
+ .token.variable,
155
+ .token.function,
156
+ .token.class-name {
152
157
  color: var(--bookish-highlight-color);
153
158
  }
154
159
 
155
- :global(.token.important),
156
- :global(.token.bold) {
160
+ .token.important,
161
+ .token.bold {
157
162
  font-weight: bold;
158
163
  }
159
- :global(.token.italic) {
164
+ .token.italic {
160
165
  font-style: italic;
161
166
  }
162
167
 
163
- :global(.token.entity) {
168
+ .token.entity {
164
169
  cursor: help;
165
170
  }
166
171
  </style>