bookish-press 0.4.46 → 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 -59
  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} +110 -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,27 +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);
64
- white-space: pre-line;
68
+ white-space: pre-line !important;
65
69
  }
66
70
 
67
- :global(.bookish-code-inline) :global(code) {
71
+ .bookish-code-inline :global(code) {
68
72
  display: inline;
69
73
  padding: 0em;
70
74
  }
@@ -77,7 +81,7 @@ function handleChange() {
77
81
  * @author Lea Verou
78
82
  */
79
83
 
80
- :global(code[class*='language-']) {
84
+ code[class*='language-'] {
81
85
  color: black;
82
86
  background: none;
83
87
  font-family: var(--bookish-code-font-family);
@@ -99,69 +103,69 @@ function handleChange() {
99
103
  hyphens: none;
100
104
  }
101
105
 
102
- :global(.token.comment),
103
- :global(.token.prolog),
104
- :global(.token.doctype),
105
- :global(.token.cdata) {
106
+ .token.comment,
107
+ .token.prolog,
108
+ .token.doctype,
109
+ .token.cdata {
106
110
  color: var(--bookish-comment-color);
107
111
  }
108
112
 
109
- :global(.token.punctuation) {
113
+ .token.punctuation {
110
114
  color: var(--bookish-muted-color);
111
115
  }
112
116
 
113
- :global(.token.namespace) {
117
+ .token.namespace {
114
118
  opacity: 0.7;
115
119
  }
116
120
 
117
- :global(.token.property),
118
- :global(.token.tag),
119
- :global(.token.boolean),
120
- :global(.token.number),
121
- :global(.token.constant),
122
- :global(.token.symbol),
123
- :global(.token.deleted) {
121
+ .token.property,
122
+ .token.tag,
123
+ .token.boolean,
124
+ .token.number,
125
+ .token.constant,
126
+ .token.symbol,
127
+ .token.deleted {
124
128
  color: var(--bookish-error-color);
125
129
  }
126
130
 
127
- :global(.token.selector),
128
- :global(.token.attr-name),
129
- :global(.token.string),
130
- :global(.token.char),
131
- :global(.token.builtin),
132
- :global(.token.inserted) {
131
+ .token.selector,
132
+ .token.attr-name,
133
+ .token.string,
134
+ .token.char,
135
+ .token.builtin,
136
+ .token.inserted {
133
137
  color: var(--bookish-pragraph-color);
134
138
  }
135
139
 
136
- :global(.token.operator),
137
- :global(.token.entity),
138
- :global(.token.url) {
140
+ .token.operator,
141
+ .token.entity,
142
+ .token.url {
139
143
  color: var(--bookish-bullet-color);
140
144
  }
141
145
 
142
- :global(.token.atrule),
143
- :global(.token.attr-value),
144
- :global(.token.keyword) {
146
+ .token.atrule,
147
+ .token.attr-value,
148
+ .token.keyword {
145
149
  color: var(--bookish-link-color);
146
150
  }
147
151
 
148
- :global(.token.regex),
149
- :global(.token.important),
150
- :global(.token.variable),
151
- :global(.token.function),
152
- :global(.token.class-name) {
152
+ .token.regex,
153
+ .token.important,
154
+ .token.variable,
155
+ .token.function,
156
+ .token.class-name {
153
157
  color: var(--bookish-highlight-color);
154
158
  }
155
159
 
156
- :global(.token.important),
157
- :global(.token.bold) {
160
+ .token.important,
161
+ .token.bold {
158
162
  font-weight: bold;
159
163
  }
160
- :global(.token.italic) {
164
+ .token.italic {
161
165
  font-style: italic;
162
166
  }
163
167
 
164
- :global(.token.entity) {
168
+ .token.entity {
165
169
  cursor: help;
166
170
  }
167
171
  </style>