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
@@ -1,100 +0,0 @@
1
- <script>import URLEditor from './URLEditor.svelte';
2
- import { getChapter, getEdition } from '../page/Contexts';
3
- import Icon from './Icon.svelte';
4
- import Button from '../app/Button.svelte';
5
- import UnlinkIcon from './icons/unlink.svg?raw';
6
- import Options from '../app/Options.svelte';
7
- import { getCaret } from '../page/Contexts';
8
- export let link;
9
- let caret = getCaret();
10
- let edition = getEdition();
11
- let chapter = getChapter();
12
- $: url = link.getMeta();
13
- function saveEdit(value) {
14
- $caret?.edit(link, link.withMeta(value));
15
- }
16
- function isValidURL(url) {
17
- // Is it a valid URL?
18
- try {
19
- let test = new URL(url);
20
- if (test.protocol === 'http:' || test.protocol === 'https:')
21
- return true;
22
- }
23
- catch (_) { }
24
- return false;
25
- }
26
- function validate(urlOrChapter) {
27
- if (urlOrChapter.length === 0)
28
- return "link URL can't be empty";
29
- if ($edition === undefined)
30
- return;
31
- if (isValidURL(urlOrChapter))
32
- return;
33
- // If not, is it a valid chapterID?
34
- if ($edition.hasChapter(urlOrChapter))
35
- return;
36
- // If not, is it a valid chapterID:label?
37
- const [chapterID, labelID] = urlOrChapter.split(':');
38
- if (chapterID === undefined || labelID === undefined)
39
- return;
40
- // The chapter ID is optional; if it's missing, it refers to this chapter.
41
- const correspondingChapter = chapterID === '' && $chapter
42
- ? $chapter.chapter.getAST($edition)
43
- : $edition?.getChapter(chapterID)?.getAST($edition);
44
- if (correspondingChapter === undefined)
45
- return 'Not a valid URL or chapter.';
46
- if (!correspondingChapter.hasLabel(labelID))
47
- return 'Not a valid chapter label.';
48
- }
49
- let options = [];
50
- $: {
51
- options = [];
52
- // Add an empty option.
53
- options.push(['External link', url.startsWith('http') ? url : '']);
54
- // Add an option for each chapter and it's labels.
55
- if ($edition) {
56
- for (const chap of $edition?.getChapters() ?? []) {
57
- options.push([`Chapter: ${chap.getTitle()}`, chap.getID()]);
58
- for (const label of chap.getAST($edition)?.getLabels() ?? [])
59
- options.push([
60
- chap.getTitle() + ': ' + label.getMeta(),
61
- `${chap.getID()}:${label.getMeta()}`,
62
- ]);
63
- }
64
- }
65
- }
66
- </script>
67
-
68
- <span>
69
- <Button
70
- tooltip="remove link"
71
- command={() => {
72
- if ($caret?.context?.format) {
73
- const newFormat = $caret.context.format.withSegmentReplaced(
74
- link,
75
- link.getText()
76
- );
77
- if (newFormat) $caret.edit($caret.context.format, newFormat);
78
- }
79
- }}
80
- >
81
- <Icon icon={UnlinkIcon} />
82
- </Button>
83
- <Options
84
- {options}
85
- changed={(value) => {
86
- saveEdit(value);
87
- url = value;
88
- }}
89
- value={url}
90
- label="link type"
91
- />
92
- <URLEditor
93
- {url}
94
- validator={validate}
95
- edit={(url) => {
96
- saveEdit(url);
97
- return undefined;
98
- }}
99
- />
100
- </span>
@@ -1,17 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type LinkNode from '../../models/chapter/LinkNode';
3
- declare const __propDef: {
4
- props: {
5
- link: LinkNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- };
12
- export type LinkEditorProps = typeof __propDef.props;
13
- export type LinkEditorEvents = typeof __propDef.events;
14
- export type LinkEditorSlots = typeof __propDef.slots;
15
- export default class LinkEditor extends SvelteComponentTyped<LinkEditorProps, LinkEditorEvents, LinkEditorSlots> {
16
- }
17
- export {};
@@ -1,27 +0,0 @@
1
- /** @typedef {typeof __propDef.props} NoteProps */
2
- /** @typedef {typeof __propDef.events} NoteEvents */
3
- /** @typedef {typeof __propDef.slots} NoteSlots */
4
- export default class Note extends SvelteComponentTyped<{
5
- [x: string]: never;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {
9
- default: {};
10
- }> {
11
- }
12
- export type NoteProps = typeof __propDef.props;
13
- export type NoteEvents = typeof __propDef.events;
14
- export type NoteSlots = typeof __propDef.slots;
15
- import { SvelteComponentTyped } from "svelte";
16
- declare const __propDef: {
17
- props: {
18
- [x: string]: never;
19
- };
20
- events: {
21
- [evt: string]: CustomEvent<any>;
22
- };
23
- slots: {
24
- default: {};
25
- };
26
- };
27
- export {};
@@ -1,20 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- uids: string[];
5
- inheriteduids: string[];
6
- writable: boolean;
7
- atleastone: boolean;
8
- change: (uids: string[]) => void;
9
- };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- };
15
- export type PermissionsProps = typeof __propDef.props;
16
- export type PermissionsEvents = typeof __propDef.events;
17
- export type PermissionsSlots = typeof __propDef.slots;
18
- export default class Permissions extends SvelteComponentTyped<PermissionsProps, PermissionsEvents, PermissionsSlots> {
19
- }
20
- export {};
@@ -1,17 +0,0 @@
1
- <script>import Switch from './Switch.svelte';
2
- import LeftIcon from './icons/left.svg?raw';
3
- import MiddleIcon from './icons/middle.svg?raw';
4
- import RightIcon from './icons/right.svg?raw';
5
- export let value;
6
- export let edit;
7
- function editAsString(newValue) {
8
- edit(newValue);
9
- }
10
- </script>
11
-
12
- <Switch
13
- options={['<', '|', '>']}
14
- icons={{ '<': LeftIcon, '|': MiddleIcon, '>': RightIcon }}
15
- {value}
16
- edit={editAsString}
17
- />
@@ -1,18 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type Position from '../../models/chapter/Position';
3
- declare const __propDef: {
4
- props: {
5
- value: string;
6
- edit: (newValue: Position) => void;
7
- };
8
- events: {
9
- [evt: string]: CustomEvent<any>;
10
- };
11
- slots: {};
12
- };
13
- export type PositionEditorProps = typeof __propDef.props;
14
- export type PositionEditorEvents = typeof __propDef.events;
15
- export type PositionEditorSlots = typeof __propDef.slots;
16
- export default class PositionEditor extends SvelteComponentTyped<PositionEditorProps, PositionEditorEvents, PositionEditorSlots> {
17
- }
18
- export {};
@@ -1,10 +0,0 @@
1
- <script>import { getCaret } from '../page/Contexts';
2
- import PositionEditor from './PositionEditor.svelte';
3
- export let quote;
4
- let caret = getCaret();
5
- </script>
6
-
7
- <PositionEditor
8
- value={quote.getPosition()}
9
- edit={(position) => $caret?.edit(quote, quote.withPosition(position))}
10
- />
@@ -1,17 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type QuoteNode from '../../models/chapter/QuoteNode';
3
- declare const __propDef: {
4
- props: {
5
- quote: QuoteNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- };
12
- export type QuoteEditorProps = typeof __propDef.props;
13
- export type QuoteEditorEvents = typeof __propDef.events;
14
- export type QuoteEditorSlots = typeof __propDef.slots;
15
- export default class QuoteEditor extends SvelteComponentTyped<QuoteEditorProps, QuoteEditorEvents, QuoteEditorSlots> {
16
- }
17
- export {};
@@ -1,20 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- options: string[];
5
- icons?: Record<string, string> | undefined;
6
- value: string;
7
- enabled?: boolean | undefined;
8
- edit: (newValue: string) => void;
9
- };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- };
15
- export type SwitchProps = typeof __propDef.props;
16
- export type SwitchEvents = typeof __propDef.events;
17
- export type SwitchSlots = typeof __propDef.slots;
18
- export default class Switch extends SvelteComponentTyped<SwitchProps, SwitchEvents, SwitchSlots> {
19
- }
20
- export {};
@@ -1,10 +0,0 @@
1
- <script>import { getCaret } from '../page/Contexts';
2
- import PositionEditor from './PositionEditor.svelte';
3
- export let table;
4
- let caret = getCaret();
5
- </script>
6
-
7
- <PositionEditor
8
- value={table.getPosition()}
9
- edit={(position) => $caret?.edit(table, table.withPosition(position))}
10
- />
@@ -1,17 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type TableNode from '../../models/chapter/TableNode';
3
- declare const __propDef: {
4
- props: {
5
- table: TableNode;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- };
12
- export type TableEditorProps = typeof __propDef.props;
13
- export type TableEditorEvents = typeof __propDef.events;
14
- export type TableEditorSlots = typeof __propDef.slots;
15
- export default class TableEditor extends SvelteComponentTyped<TableEditorProps, TableEditorEvents, TableEditorSlots> {
16
- }
17
- export {};
@@ -1,24 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- text: string;
5
- label: string;
6
- placeholder: string;
7
- valid: (text: string) => string | undefined;
8
- save: (text: string) => Promise<void> | undefined | void | string;
9
- saveOnExit?: boolean | undefined;
10
- width?: number | undefined;
11
- clip?: boolean | undefined;
12
- move?: ((el: HTMLElement, direction: -1 | 1) => void) | undefined;
13
- };
14
- events: {
15
- [evt: string]: CustomEvent<any>;
16
- };
17
- slots: {};
18
- };
19
- export type TextEditorProps = typeof __propDef.props;
20
- export type TextEditorEvents = typeof __propDef.events;
21
- export type TextEditorSlots = typeof __propDef.slots;
22
- export default class TextEditor extends SvelteComponentTyped<TextEditorProps, TextEditorEvents, TextEditorSlots> {
23
- }
24
- export {};
@@ -1,41 +0,0 @@
1
- <script>var Status;
2
- (function (Status) {
3
- Status[Status["Viewing"] = 0] = "Viewing";
4
- Status[Status["Saving"] = 1] = "Saving";
5
- Status[Status["Error"] = 2] = "Error";
6
- })(Status || (Status = {}));
7
- export let on;
8
- export let save;
9
- let saving = Status.Viewing;
10
- function toggle() {
11
- saving = Status.Saving;
12
- const promise = save(!on);
13
- if (promise === undefined) {
14
- saving = Status.Viewing;
15
- return;
16
- }
17
- promise
18
- .then(() => (saving = Status.Viewing))
19
- .catch(() => (saving = Status.Error));
20
- }
21
- </script>
22
-
23
- <div
24
- class={`bookish-app-interactive ${
25
- saving === Status.Saving ? ' bookish-text-editor-saving' : ''
26
- } ${saving === Status.Error ? ' bookish-text-editor-error' : ''}`}
27
- tabIndex="0"
28
- role="switch"
29
- aria-checked={on}
30
- on:keydown={(event) =>
31
- event.key === 'Enter' || event.key === 'Space' ? toggle() : undefined}
32
- on:click={toggle}
33
- >
34
- <slot />
35
- </div>
36
-
37
- <style>
38
- .bookish-app-interactive {
39
- cursor: pointer;
40
- }
41
- </style>
@@ -1,19 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- on: boolean;
5
- save: (set: boolean) => Promise<void> | void;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {
11
- default: {};
12
- };
13
- };
14
- export type ToggleProps = typeof __propDef.props;
15
- export type ToggleEvents = typeof __propDef.events;
16
- export type ToggleSlots = typeof __propDef.slots;
17
- export default class Toggle extends SvelteComponentTyped<ToggleProps, ToggleEvents, ToggleSlots> {
18
- }
19
- export {};
@@ -1,249 +0,0 @@
1
- <script>import commands from './Commands';
2
- import TextNode from '../../models/chapter/TextNode';
3
- import AtomNode from '../../models/chapter/AtomNode';
4
- import LinkNode from '../../models/chapter/LinkNode';
5
- import LabelNode from '../../models/chapter/LabelNode';
6
- import InlineCodeNode from '../../models/chapter/InlineCodeNode';
7
- import CitationsNode from '../../models/chapter/CitationsNode';
8
- import DefinitionNode from '../../models/chapter/DefinitionNode';
9
- import CodeNode from '../../models/chapter/CodeNode';
10
- import CalloutNode from '../../models/chapter/CalloutNode';
11
- import EmbedNode from '../../models/chapter/EmbedNode';
12
- import QuoteNode from '../../models/chapter/QuoteNode';
13
- import LabelEditor from './LabelEditor.svelte';
14
- import InlineCodeEditor from './InlineCodeEditor.svelte';
15
- import CitationsEditor from './CitationsEditor.svelte';
16
- import LinkEditor from './LinkEditor.svelte';
17
- import DefinitionEditor from './DefinitionEditor.svelte';
18
- import CaptionedCodeEditor from './CaptionedCodeEditor.svelte';
19
- import CalloutEditor from './CalloutEditor.svelte';
20
- import QuoteEditor from './QuoteEditor.svelte';
21
- import EmbedEditor from './EmbedEditor.svelte';
22
- import TableEditor from './TableEditor.svelte';
23
- import ToolbarGroup from './ToolbarGroup.svelte';
24
- import Icon from './Icon.svelte';
25
- import Button from '../app/Button.svelte';
26
- import AnnotateIcon from './icons/annotate.svg?raw';
27
- import BlockIcon from './icons/block.svg?raw';
28
- import ClipboardIcon from './icons/clipboard.svg?raw';
29
- import LevelIcon from './icons/level.svg?raw';
30
- import ListIcon from './icons/list.svg?raw';
31
- import TextIcon from './icons/text.svg?raw';
32
- import TimeIcon from './icons/time.svg?raw';
33
- import TableIcon from './icons/table.svg?raw';
34
- import LinkIcon from './icons/link.svg?raw';
35
- import LabelIcon from './icons/label.svg?raw';
36
- import CitationIcon from './icons/citation.svg?raw';
37
- import DefineIcon from './icons/define.svg?raw';
38
- import CodeIcon from './icons/code.svg?raw';
39
- import CalloutIcon from './icons/callout.svg?raw';
40
- import QuoteIcon from './icons/quote.svg?raw';
41
- import MediaIcon from './icons/media.svg?raw';
42
- import TableNode from '../../models/chapter/TableNode';
43
- import { slide } from 'svelte/transition';
44
- const keyLabels = {
45
- Digit0: '0',
46
- Digit1: '1',
47
- Digit2: '2',
48
- Digit3: '3',
49
- ArrowDown: '↓',
50
- ArrowUp: '↑',
51
- ArrowLeft: '←',
52
- ArrowRight: '→',
53
- Backspace: '\u232B',
54
- };
55
- const categoryOrder = {
56
- navigation: 1,
57
- selection: 2,
58
- text: 3,
59
- clipboard: 4,
60
- annotation: 5,
61
- paragraph: 6,
62
- level: 7,
63
- list: 8,
64
- table: 9,
65
- block: 10,
66
- };
67
- const categoryIcons = {
68
- text: TextIcon,
69
- clipboard: ClipboardIcon,
70
- annotation: AnnotateIcon,
71
- level: LevelIcon,
72
- block: BlockIcon,
73
- list: ListIcon,
74
- table: TableIcon,
75
- history: TimeIcon,
76
- };
77
- export let caret;
78
- $: context = caret.context;
79
- $: chapter = context?.root;
80
- let element = null;
81
- let categories = undefined;
82
- let commandsByCategory = {};
83
- let metaNode = undefined;
84
- let calloutNode = undefined;
85
- let quoteNode = undefined;
86
- let embedNode = undefined;
87
- let tableNode = undefined;
88
- function getShortcutDescription(command) {
89
- const macOS = navigator.userAgent.indexOf('Mac') >= 0;
90
- const controlSymbol = macOS ? '\u2318' : 'Ctrl+';
91
- const altSymbol = macOS ? '\u2325' : 'Alt+';
92
- const key = command.key
93
- ? Array.isArray(command.key)
94
- ? command.key.join('/')
95
- : command.key
96
- : command.code
97
- ? command.code
98
- : 'any';
99
- const keyLabel = (typeof key === 'string'
100
- ? key in keyLabels
101
- ? keyLabels[key]
102
- : key
103
- : '—').toLocaleUpperCase();
104
- return `${command.control ? controlSymbol : ''}${command.alt ? altSymbol : ''}${command.shift ? '\u21E7' : ''}${keyLabel}`;
105
- }
106
- // Update the above when the dependencies below change.
107
- $: {
108
- if (context !== undefined && chapter) {
109
- // Filter the commands by those interactive with a mouse and active.
110
- const visible = commands.filter((command) => command.visible === true ||
111
- (context &&
112
- command.visible instanceof Function &&
113
- command.visible(context)));
114
- // Extract the active categories and sort them
115
- categories = Array.from(new Set(commands.map((command) => command.category))).sort((a, b) => a in categoryOrder && b in categoryOrder
116
- ? categoryOrder[a] - categoryOrder[b]
117
- : 0);
118
- // Make a list for each category of commands
119
- commandsByCategory = {};
120
- categories.forEach((cat) => {
121
- if (commandsByCategory)
122
- commandsByCategory[cat] = visible.filter((command) => command.category === cat);
123
- });
124
- const caretNode = context.start.node;
125
- metaNode =
126
- caretNode instanceof AtomNode
127
- ? caretNode
128
- : caretNode instanceof TextNode
129
- ? caretNode.getParent(chapter)
130
- : undefined;
131
- calloutNode = caretNode.getClosestParentMatching(chapter, (p) => p instanceof CalloutNode);
132
- quoteNode = caretNode.getClosestParentMatching(chapter, (p) => p instanceof QuoteNode);
133
- embedNode =
134
- caretNode instanceof EmbedNode
135
- ? caretNode
136
- : caretNode.getClosestParentMatching(chapter, (p) => p instanceof EmbedNode);
137
- tableNode = caretNode.getClosestParentMatching(chapter, (p) => p instanceof TableNode);
138
- }
139
- }
140
- function handleKeyPress(event) {
141
- // Return focus to the editor if someone presses an unhandled enter
142
- if ((event.key === 'Escape' || event.key === 'Enter') && element) {
143
- const editor = element.closest('.bookish-editor');
144
- if (editor instanceof HTMLElement) {
145
- event.stopPropagation();
146
- editor.focus();
147
- }
148
- return true;
149
- }
150
- }
151
- </script>
152
-
153
- {#if chapter}
154
- <section
155
- class="bookish-editor-toolbar"
156
- bind:this={element}
157
- on:keypress={handleKeyPress}
158
- on:keydown={handleKeyPress}
159
- on:mousedown|stopPropagation={() => element?.focus()}
160
- tabIndex="0"
161
- transition:slide={{ duration: 200 }}
162
- >
163
- {#if context && categories}
164
- {#each categories as cat}
165
- {#if commandsByCategory[cat].length > 0}
166
- <ToolbarGroup
167
- icon={cat in categoryIcons
168
- ? categoryIcons[cat]
169
- : cat.charAt(0).toUpperCase() + cat.slice(1)}
170
- >
171
- {#each commandsByCategory[cat] as command}
172
- <Button
173
- disabled={command.active === false ||
174
- (command.active instanceof Function &&
175
- command.active.call(
176
- undefined,
177
- context
178
- ) === false)}
179
- tooltip={command.description +
180
- ' ' +
181
- getShortcutDescription(command)}
182
- tabIndex="0"
183
- command={() =>
184
- caret?.executor.call(
185
- undefined,
186
- command,
187
- ''
188
- )}
189
- >
190
- <Icon icon={command.icon} />
191
- </Button>
192
- {/each}
193
- {#if cat === 'table' && tableNode}
194
- <TableEditor table={tableNode} />
195
- {/if}
196
- </ToolbarGroup>
197
- {/if}
198
- {/each}
199
- {/if}
200
- {#if metaNode instanceof LinkNode}<ToolbarGroup icon={LinkIcon}
201
- ><LinkEditor link={metaNode} /></ToolbarGroup
202
- >
203
- {:else if metaNode instanceof LabelNode}<ToolbarGroup icon={LabelIcon}
204
- ><LabelEditor label={metaNode} /></ToolbarGroup
205
- >
206
- {:else if metaNode instanceof InlineCodeNode}<ToolbarGroup
207
- icon={CodeIcon}
208
- ><InlineCodeEditor code={metaNode} /></ToolbarGroup
209
- >
210
- {:else if metaNode instanceof CitationsNode}<ToolbarGroup
211
- icon={CitationIcon}
212
- ><CitationsEditor citations={metaNode} /></ToolbarGroup
213
- >
214
- {:else if metaNode instanceof DefinitionNode}<ToolbarGroup
215
- icon={DefineIcon}
216
- ><DefinitionEditor definition={metaNode} /></ToolbarGroup
217
- >
218
- {:else if metaNode instanceof CodeNode && context}<ToolbarGroup
219
- icon={CodeIcon}
220
- ><CaptionedCodeEditor code={metaNode} /></ToolbarGroup
221
- >
222
- {:else if calloutNode}<ToolbarGroup icon={CalloutIcon}
223
- ><CalloutEditor callout={calloutNode} /></ToolbarGroup
224
- >
225
- {:else if quoteNode}<ToolbarGroup icon={QuoteIcon}
226
- ><QuoteEditor quote={quoteNode} /></ToolbarGroup
227
- >
228
- {:else if embedNode}<ToolbarGroup icon={MediaIcon}
229
- ><EmbedEditor embed={embedNode} /></ToolbarGroup
230
- >
231
- {/if}
232
- </section>
233
- {/if}
234
-
235
- <style>
236
- .bookish-editor-toolbar {
237
- display: flex;
238
- flex-direction: row;
239
- flex-wrap: wrap;
240
- align-items: baseline;
241
- background: var(--bookish-background-color);
242
- font-family: var(--app-font);
243
- font-size: var(--app-chrome-font-size);
244
- }
245
-
246
- .bookish-editor-toolbar:focus {
247
- outline: 2px solid var(--app-interactive-color);
248
- }
249
- </style>
@@ -1,17 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type CaretState from './CaretState';
3
- declare const __propDef: {
4
- props: {
5
- caret: CaretState;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- };
12
- export type ToolbarProps = typeof __propDef.props;
13
- export type ToolbarEvents = typeof __propDef.events;
14
- export type ToolbarSlots = typeof __propDef.slots;
15
- export default class Toolbar extends SvelteComponentTyped<ToolbarProps, ToolbarEvents, ToolbarSlots> {
16
- }
17
- export {};
@@ -1,18 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- icon: string;
5
- };
6
- events: {
7
- [evt: string]: CustomEvent<any>;
8
- };
9
- slots: {
10
- default: {};
11
- };
12
- };
13
- export type ToolbarGroupProps = typeof __propDef.props;
14
- export type ToolbarGroupEvents = typeof __propDef.events;
15
- export type ToolbarGroupSlots = typeof __propDef.slots;
16
- export default class ToolbarGroup extends SvelteComponentTyped<ToolbarGroupProps, ToolbarGroupEvents, ToolbarGroupSlots> {
17
- }
18
- export {};