bookish-press 0.4.1 → 0.4.3

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 (403) hide show
  1. package/README.md +3 -1
  2. package/components/Auth.svelte +27 -24
  3. package/components/Auth.svelte.d.ts +4 -4
  4. package/components/Authentication.d.ts +2 -2
  5. package/components/BookPreview.svelte +75 -59
  6. package/components/BookPreview.svelte.d.ts +5 -5
  7. package/components/External.svelte +1 -1
  8. package/components/External.svelte.d.ts +3 -3
  9. package/components/Link.svelte +49 -3
  10. package/components/Link.svelte.d.ts +3 -4
  11. package/components/app/BookList.svelte +19 -0
  12. package/components/app/BookList.svelte.d.ts +18 -0
  13. package/components/app/Button.svelte +49 -0
  14. package/components/app/Button.svelte.d.ts +22 -0
  15. package/components/app/Feedback.svelte +47 -0
  16. package/components/app/Feedback.svelte.d.ts +18 -0
  17. package/components/app/Head.svelte +15 -0
  18. package/components/app/Head.svelte.d.ts +18 -0
  19. package/components/app/Large.svelte +8 -0
  20. package/components/app/Large.svelte.d.ts +27 -0
  21. package/components/app/Lead.svelte +12 -0
  22. package/components/app/Lead.svelte.d.ts +27 -0
  23. package/components/app/Link.svelte +24 -0
  24. package/components/app/Link.svelte.d.ts +20 -0
  25. package/components/app/Options.svelte +24 -0
  26. package/components/app/Options.svelte.d.ts +19 -0
  27. package/components/app/Paragraph.svelte +20 -0
  28. package/components/app/Paragraph.svelte.d.ts +18 -0
  29. package/components/app/Section.svelte +12 -0
  30. package/components/app/Section.svelte.d.ts +27 -0
  31. package/components/app/Table.svelte +32 -0
  32. package/components/app/Table.svelte.d.ts +27 -0
  33. package/components/app/TextInput.svelte +38 -0
  34. package/components/app/TextInput.svelte.d.ts +22 -0
  35. package/components/chapter/Atom.svelte +20 -6
  36. package/components/chapter/Atom.svelte.d.ts +3 -3
  37. package/components/chapter/Block.svelte +26 -21
  38. package/components/chapter/Block.svelte.d.ts +4 -4
  39. package/components/chapter/Callout.svelte +38 -7
  40. package/components/chapter/Callout.svelte.d.ts +4 -4
  41. package/components/chapter/CaptionedCode.svelte +67 -24
  42. package/components/chapter/CaptionedCode.svelte.d.ts +4 -4
  43. package/components/chapter/ChapterBody.svelte +62 -9
  44. package/components/chapter/ChapterBody.svelte.d.ts +5 -4
  45. package/components/chapter/Citations.svelte +86 -20
  46. package/components/chapter/Citations.svelte.d.ts +4 -4
  47. package/components/chapter/Code.svelte +152 -21
  48. package/components/chapter/Code.svelte.d.ts +3 -3
  49. package/components/chapter/Comment.svelte +39 -17
  50. package/components/chapter/Comment.svelte.d.ts +3 -3
  51. package/components/chapter/Definition.svelte +52 -18
  52. package/components/chapter/Definition.svelte.d.ts +5 -8
  53. package/components/chapter/Embed.svelte +155 -67
  54. package/components/chapter/Embed.svelte.d.ts +6 -4
  55. package/components/chapter/ErrorMessage.svelte +7 -2
  56. package/components/chapter/ErrorMessage.svelte.d.ts +4 -4
  57. package/components/chapter/ExtendedPrism.d.ts +2 -0
  58. package/components/chapter/ExtendedPrism.js +69 -0
  59. package/components/chapter/Figure.svelte +90 -0
  60. package/components/chapter/Figure.svelte.d.ts +24 -0
  61. package/components/chapter/Footnote.svelte +75 -12
  62. package/components/chapter/Footnote.svelte.d.ts +4 -4
  63. package/components/chapter/Format.svelte +63 -38
  64. package/components/chapter/Format.svelte.d.ts +5 -4
  65. package/components/chapter/InlineCode.svelte +16 -6
  66. package/components/chapter/InlineCode.svelte.d.ts +4 -4
  67. package/components/chapter/Label.svelte +38 -9
  68. package/components/chapter/Label.svelte.d.ts +4 -4
  69. package/components/chapter/Link.svelte +24 -19
  70. package/components/chapter/Link.svelte.d.ts +4 -4
  71. package/components/chapter/List.svelte +75 -8
  72. package/components/chapter/List.svelte.d.ts +4 -4
  73. package/components/chapter/Marginal.svelte +169 -27
  74. package/components/chapter/Marginal.svelte.d.ts +6 -3
  75. package/components/chapter/Paragraph.svelte +79 -6
  76. package/components/chapter/Paragraph.svelte.d.ts +4 -4
  77. package/components/chapter/Positioned.svelte +33 -0
  78. package/components/chapter/Positioned.svelte.d.ts +19 -0
  79. package/components/chapter/Problem.svelte +15 -0
  80. package/components/chapter/Problem.svelte.d.ts +27 -0
  81. package/components/chapter/Python.svelte +68 -21
  82. package/components/chapter/Python.svelte.d.ts +4 -4
  83. package/components/chapter/Quote.svelte +64 -11
  84. package/components/chapter/Quote.svelte.d.ts +4 -4
  85. package/components/chapter/Rule.svelte +12 -1
  86. package/components/chapter/Rule.svelte.d.ts +4 -4
  87. package/components/chapter/Table.svelte +36 -25
  88. package/components/chapter/Table.svelte.d.ts +4 -4
  89. package/components/chapter/Text.svelte +61 -36
  90. package/components/chapter/Text.svelte.d.ts +5 -4
  91. package/components/editor/BookishEditor.svelte +373 -244
  92. package/components/editor/BookishEditor.svelte.d.ts +9 -6
  93. package/components/editor/CalloutEditor.svelte +5 -5
  94. package/components/editor/CalloutEditor.svelte.d.ts +4 -4
  95. package/components/editor/CaptionedCodeEditor.svelte +16 -12
  96. package/components/editor/CaptionedCodeEditor.svelte.d.ts +4 -4
  97. package/components/editor/CaretContext.d.ts +48 -16
  98. package/components/editor/CaretState.d.ts +16 -44
  99. package/components/editor/CaretUtilities.d.ts +2 -2
  100. package/components/editor/CaretView.svelte +82 -0
  101. package/components/editor/CaretView.svelte.d.ts +25 -0
  102. package/components/editor/CitationsEditor.svelte +36 -25
  103. package/components/editor/CitationsEditor.svelte.d.ts +4 -4
  104. package/components/editor/Clipboard.d.ts +2 -2
  105. package/components/editor/Command.d.ts +13 -12
  106. package/components/editor/Commands.d.ts +1 -1
  107. package/components/editor/Commands.js +1114 -571
  108. package/components/editor/ConfirmButton.svelte +18 -12
  109. package/components/editor/ConfirmButton.svelte.d.ts +5 -4
  110. package/components/editor/DefinitionEditor.svelte +29 -21
  111. package/components/editor/DefinitionEditor.svelte.d.ts +4 -4
  112. package/components/editor/EmbedEditor.svelte +93 -43
  113. package/components/editor/EmbedEditor.svelte.d.ts +3 -3
  114. package/components/editor/Icon.svelte +17 -0
  115. package/components/editor/Icon.svelte.d.ts +16 -0
  116. package/components/editor/ImageChooser.svelte +53 -34
  117. package/components/editor/ImageChooser.svelte.d.ts +3 -3
  118. package/components/editor/InlineCodeEditor.svelte +7 -4
  119. package/components/editor/InlineCodeEditor.svelte.d.ts +4 -4
  120. package/components/editor/LabelEditor.svelte +20 -11
  121. package/components/editor/LabelEditor.svelte.d.ts +4 -4
  122. package/components/editor/LanguageEditor.svelte +10 -7
  123. package/components/editor/LanguageEditor.svelte.d.ts +3 -3
  124. package/components/editor/LinkEditor.svelte +64 -39
  125. package/components/editor/LinkEditor.svelte.d.ts +4 -4
  126. package/components/editor/Note.svelte +4 -3
  127. package/components/editor/Note.svelte.d.ts +6 -2
  128. package/components/editor/Permissions.svelte +95 -0
  129. package/components/editor/Permissions.svelte.d.ts +20 -0
  130. package/components/editor/PositionEditor.svelte +9 -6
  131. package/components/editor/PositionEditor.svelte.d.ts +4 -4
  132. package/components/editor/QuoteEditor.svelte +7 -2
  133. package/components/editor/QuoteEditor.svelte.d.ts +4 -4
  134. package/components/editor/Switch.svelte +55 -28
  135. package/components/editor/Switch.svelte.d.ts +4 -4
  136. package/components/editor/TableEditor.svelte +10 -0
  137. package/components/editor/TableEditor.svelte.d.ts +17 -0
  138. package/components/editor/TextEditor.svelte +83 -45
  139. package/components/editor/TextEditor.svelte.d.ts +5 -4
  140. package/components/editor/Toggle.svelte +11 -8
  141. package/components/editor/Toggle.svelte.d.ts +4 -4
  142. package/components/editor/Toolbar.svelte +191 -144
  143. package/components/editor/Toolbar.svelte.d.ts +5 -8
  144. package/components/editor/ToolbarGroup.svelte +17 -23
  145. package/components/editor/ToolbarGroup.svelte.d.ts +3 -4
  146. package/components/editor/ToolbarSpacer.svelte +8 -1
  147. package/components/editor/ToolbarSpacer.svelte.d.ts +6 -2
  148. package/components/editor/URLEditor.svelte +6 -8
  149. package/components/editor/URLEditor.svelte.d.ts +3 -3
  150. package/components/editor/UndoState.d.ts +3 -3
  151. package/components/editor/icons/annotate.svg +1 -0
  152. package/components/editor/icons/block.svg +1 -0
  153. package/components/editor/icons/bold.svg +1 -0
  154. package/components/editor/icons/bullets.svg +1 -0
  155. package/components/editor/icons/callout.svg +1 -0
  156. package/components/editor/icons/citation.svg +8 -0
  157. package/components/editor/icons/clear.svg +1 -0
  158. package/components/editor/icons/clipboard.svg +1 -0
  159. package/components/editor/icons/code.svg +1 -0
  160. package/components/editor/icons/columnafter.svg +1 -0
  161. package/components/editor/icons/columnbefore.svg +1 -0
  162. package/components/editor/icons/comment.svg +1 -0
  163. package/components/editor/icons/copy.svg +1 -0
  164. package/components/editor/icons/cut.svg +1 -0
  165. package/components/editor/icons/define.svg +7 -0
  166. package/components/editor/icons/deletecolumn.svg +1 -0
  167. package/components/editor/icons/deleterow.svg +1 -0
  168. package/components/editor/icons/footnote.svg +8 -0
  169. package/components/editor/icons/header1.svg +7 -0
  170. package/components/editor/icons/header2.svg +7 -0
  171. package/components/editor/icons/header3.svg +7 -0
  172. package/components/editor/icons/home.svg +1 -0
  173. package/components/editor/icons/indent.svg +1 -0
  174. package/components/editor/icons/italic.svg +1 -0
  175. package/components/editor/icons/label.svg +1 -0
  176. package/components/editor/icons/left.svg +1 -0
  177. package/components/editor/icons/level.svg +1 -0
  178. package/components/editor/icons/link.svg +1 -0
  179. package/components/editor/icons/list.svg +1 -0
  180. package/components/editor/icons/media.svg +1 -0
  181. package/components/editor/icons/middle.svg +1 -0
  182. package/components/editor/icons/numbers.svg +10 -0
  183. package/components/editor/icons/paragraph.svg +1 -0
  184. package/components/editor/icons/paste.svg +10 -0
  185. package/components/editor/icons/quote.svg +1 -0
  186. package/components/editor/icons/redo.svg +1 -0
  187. package/components/editor/icons/right.svg +1 -0
  188. package/components/editor/icons/rowabove.svg +1 -0
  189. package/components/editor/icons/rowbelow.svg +1 -0
  190. package/components/editor/icons/rule.svg +1 -0
  191. package/components/editor/icons/sub.svg +1 -0
  192. package/components/editor/icons/super.svg +1 -0
  193. package/components/editor/icons/table.svg +1 -0
  194. package/components/editor/icons/text.svg +1 -0
  195. package/components/editor/icons/time.svg +1 -0
  196. package/components/editor/icons/undo.svg +1 -0
  197. package/components/editor/icons/unindent.svg +1 -0
  198. package/components/editor/icons/unlink.svg +1 -0
  199. package/components/page/Acknowledgements.svelte +35 -24
  200. package/components/page/Acknowledgements.svelte.d.ts +4 -4
  201. package/components/page/Authors.svelte +34 -17
  202. package/components/page/Authors.svelte.d.ts +7 -6
  203. package/components/page/BookLoader.svelte +59 -0
  204. package/components/page/BookLoader.svelte.d.ts +16 -0
  205. package/components/page/BulkReferenceEditor.svelte +54 -23
  206. package/components/page/BulkReferenceEditor.svelte.d.ts +4 -4
  207. package/components/page/Chapter.svelte +234 -143
  208. package/components/page/Chapter.svelte.d.ts +3 -3
  209. package/components/page/ChapterContext.d.ts +4 -4
  210. package/components/page/ChapterNumber.svelte +9 -0
  211. package/components/page/ChapterNumber.svelte.d.ts +27 -0
  212. package/components/page/ChapterTitle.svelte +16 -0
  213. package/components/page/ChapterTitle.svelte.d.ts +18 -0
  214. package/components/page/Contexts.d.ts +42 -22
  215. package/components/page/Contexts.js +129 -17
  216. package/components/page/DefinitionView.svelte +129 -90
  217. package/components/page/DefinitionView.svelte.d.ts +3 -3
  218. package/components/page/Description.svelte +31 -19
  219. package/components/page/Description.svelte.d.ts +4 -4
  220. package/components/page/Edition.svelte +135 -81
  221. package/components/page/Edition.svelte.d.ts +5 -6
  222. package/components/page/EditionLoader.svelte +99 -0
  223. package/components/page/EditionLoader.svelte.d.ts +18 -0
  224. package/components/page/Editions.svelte +106 -0
  225. package/components/page/Editions.svelte.d.ts +14 -0
  226. package/components/page/Glossary.svelte +65 -49
  227. package/components/page/Glossary.svelte.d.ts +4 -4
  228. package/components/page/Header.svelte +143 -56
  229. package/components/page/Header.svelte.d.ts +8 -6
  230. package/components/page/Index.svelte +116 -80
  231. package/components/page/Index.svelte.d.ts +4 -4
  232. package/components/page/Instructions.svelte +18 -17
  233. package/components/page/Instructions.svelte.d.ts +6 -4
  234. package/components/page/License.svelte +39 -23
  235. package/components/page/License.svelte.d.ts +4 -4
  236. package/components/page/Loading.svelte +102 -12
  237. package/components/page/Loading.svelte.d.ts +6 -2
  238. package/components/page/Media.svelte +81 -53
  239. package/components/page/Media.svelte.d.ts +4 -4
  240. package/components/page/MediaPreview.svelte +26 -8
  241. package/components/page/MediaPreview.svelte.d.ts +3 -3
  242. package/components/page/Muted.svelte +10 -0
  243. package/components/page/Muted.svelte.d.ts +27 -0
  244. package/components/page/Outline.svelte +279 -59
  245. package/components/page/Outline.svelte.d.ts +3 -3
  246. package/components/page/Page.svelte +40 -9
  247. package/components/page/Page.svelte.d.ts +3 -3
  248. package/components/page/PageHeader.svelte +14 -0
  249. package/components/page/PageHeader.svelte.d.ts +18 -0
  250. package/components/page/PageParagraph.svelte +18 -0
  251. package/components/page/PageParagraph.svelte.d.ts +27 -0
  252. package/components/page/PossibleChapter.svelte +7 -7
  253. package/components/page/PossibleChapter.svelte.d.ts +4 -4
  254. package/components/page/PossibleReference.svelte +6 -11
  255. package/components/page/PossibleReference.svelte.d.ts +6 -7
  256. package/components/page/Print.svelte +27 -3
  257. package/components/page/Print.svelte.d.ts +4 -4
  258. package/components/page/Publish.svelte +134 -0
  259. package/components/page/Publish.svelte.d.ts +14 -0
  260. package/components/page/Reference.svelte +259 -117
  261. package/components/page/Reference.svelte.d.ts +5 -5
  262. package/components/page/References.svelte +45 -48
  263. package/components/page/References.svelte.d.ts +4 -4
  264. package/components/page/Rows.svelte +54 -0
  265. package/components/page/Rows.svelte.d.ts +27 -0
  266. package/components/page/Search.svelte +88 -63
  267. package/components/page/Search.svelte.d.ts +4 -4
  268. package/components/page/Status.svelte +46 -39
  269. package/components/page/Status.svelte.d.ts +4 -9
  270. package/components/page/SubdomainEditor.svelte +41 -27
  271. package/components/page/SubdomainEditor.svelte.d.ts +4 -4
  272. package/components/page/TableOfContents.svelte +264 -191
  273. package/components/page/TableOfContents.svelte.d.ts +4 -4
  274. package/components/page/TableOfContentsImage.svelte +8 -8
  275. package/components/page/TableOfContentsImage.svelte.d.ts +3 -3
  276. package/components/page/TableOfContentsRow.svelte +97 -34
  277. package/components/page/TableOfContentsRow.svelte.d.ts +4 -4
  278. package/components/page/ThemeEditor.svelte +177 -39
  279. package/components/page/ThemeEditor.svelte.d.ts +4 -4
  280. package/components/page/ThemeEditorPreview.svelte +35 -23
  281. package/components/page/ThemeEditorPreview.svelte.d.ts +5 -5
  282. package/components/page/ThemeSetEditor.svelte +15 -13
  283. package/components/page/ThemeSetEditor.svelte.d.ts +4 -4
  284. package/components/page/ThemeVariableEditor.svelte +24 -15
  285. package/components/page/ThemeVariableEditor.svelte.d.ts +3 -3
  286. package/components/page/Title.svelte +12 -0
  287. package/components/page/Title.svelte.d.ts +27 -0
  288. package/components/page/Unknown.svelte +28 -21
  289. package/components/page/Unknown.svelte.d.ts +4 -4
  290. package/components/page/margins.js +50 -33
  291. package/index.d.ts +13 -0
  292. package/index.js +14 -0
  293. package/models/CRUD.d.ts +27 -0
  294. package/models/CRUD.js +262 -0
  295. package/models/Firebase.d.ts +1 -0
  296. package/models/Firebase.js +26 -16
  297. package/models/book/Book.d.ts +40 -39
  298. package/models/book/Book.js +121 -121
  299. package/models/book/BookMedia.d.ts +3 -3
  300. package/models/book/BookMedia.js +22 -16
  301. package/models/book/BookSaveStatus.d.ts +7 -0
  302. package/models/book/BookSaveStatus.js +8 -0
  303. package/models/book/Chapter.d.ts +50 -39
  304. package/models/book/Chapter.js +189 -198
  305. package/models/book/ChapterID.js +7 -7
  306. package/models/book/Definition.d.ts +1 -1
  307. package/models/book/Edition.d.ts +87 -61
  308. package/models/book/Edition.js +460 -309
  309. package/models/book/Reference.d.ts +24 -0
  310. package/models/book/Reference.js +78 -0
  311. package/models/book/Schema.d.ts +168 -0
  312. package/models/book/Schema.js +115 -0
  313. package/models/book/Theme.d.ts +44 -37
  314. package/models/book/Theme.js +452 -52
  315. package/models/book/ThemeColors.d.ts +1 -1
  316. package/models/book/Words.d.ts +2 -0
  317. package/models/book/Words.js +110 -0
  318. package/models/chapter/AtomNode.d.ts +4 -4
  319. package/models/chapter/AtomNode.js +20 -13
  320. package/models/chapter/BlockNode.d.ts +9 -10
  321. package/models/chapter/BlockNode.js +32 -13
  322. package/models/chapter/BlocksNode.d.ts +10 -10
  323. package/models/chapter/BlocksNode.js +315 -120
  324. package/models/chapter/BlocksNode.test.js +494 -228
  325. package/models/chapter/Bookkeeping.d.ts +1 -1
  326. package/models/chapter/CalloutNode.d.ts +3 -3
  327. package/models/chapter/CalloutNode.js +34 -12
  328. package/models/chapter/Caret.d.ts +9 -7
  329. package/models/chapter/Caret.js +11 -6
  330. package/models/chapter/ChapterNode.d.ts +11 -11
  331. package/models/chapter/ChapterNode.js +70 -33
  332. package/models/chapter/CitationsNode.d.ts +3 -3
  333. package/models/chapter/CitationsNode.js +31 -12
  334. package/models/chapter/CodeNode.d.ts +11 -6
  335. package/models/chapter/CodeNode.js +143 -34
  336. package/models/chapter/CommentNode.d.ts +5 -5
  337. package/models/chapter/CommentNode.js +29 -13
  338. package/models/chapter/DefinitionNode.d.ts +2 -2
  339. package/models/chapter/DefinitionNode.js +15 -7
  340. package/models/chapter/Edit.d.ts +3 -3
  341. package/models/chapter/EmbedNode.d.ts +9 -5
  342. package/models/chapter/EmbedNode.js +108 -35
  343. package/models/chapter/ErrorNode.d.ts +2 -2
  344. package/models/chapter/ErrorNode.js +34 -12
  345. package/models/chapter/FootnoteNode.d.ts +5 -5
  346. package/models/chapter/FootnoteNode.js +34 -16
  347. package/models/chapter/FormatNode.d.ts +10 -10
  348. package/models/chapter/FormatNode.js +237 -106
  349. package/models/chapter/FormatNode.test.js +87 -45
  350. package/models/chapter/InlineCodeNode.d.ts +2 -2
  351. package/models/chapter/InlineCodeNode.js +22 -9
  352. package/models/chapter/LabelNode.d.ts +4 -4
  353. package/models/chapter/LabelNode.js +31 -13
  354. package/models/chapter/LinkNode.d.ts +2 -2
  355. package/models/chapter/LinkNode.js +21 -9
  356. package/models/chapter/ListNode.d.ts +8 -8
  357. package/models/chapter/ListNode.js +99 -38
  358. package/models/chapter/ListNode.test.js +29 -24
  359. package/models/chapter/MetadataNode.d.ts +3 -3
  360. package/models/chapter/MetadataNode.js +13 -5
  361. package/models/chapter/Node.d.ts +5 -3
  362. package/models/chapter/Node.js +76 -29
  363. package/models/chapter/Node.test.js +20 -18
  364. package/models/chapter/ParagraphNode.d.ts +6 -6
  365. package/models/chapter/ParagraphNode.js +84 -29
  366. package/models/chapter/ParagraphNode.test.js +22 -13
  367. package/models/chapter/Parser.d.ts +27 -27
  368. package/models/chapter/Parser.js +220 -206
  369. package/models/chapter/Parser.test.js +16 -16
  370. package/models/chapter/Position.d.ts +1 -1
  371. package/models/chapter/QuoteNode.d.ts +6 -6
  372. package/models/chapter/QuoteNode.js +61 -23
  373. package/models/chapter/RootNode.d.ts +4 -4
  374. package/models/chapter/RuleNode.d.ts +2 -2
  375. package/models/chapter/RuleNode.js +31 -11
  376. package/models/chapter/TableNode.d.ts +8 -6
  377. package/models/chapter/TableNode.js +89 -34
  378. package/models/chapter/TableNode.test.js +22 -24
  379. package/models/chapter/TextNode.d.ts +6 -6
  380. package/models/chapter/TextNode.js +72 -32
  381. package/models/chapter/TextNode.test.js +4 -4
  382. package/package.json +108 -26
  383. package/util/getSubdomain.js +8 -6
  384. package/util/isMobile.js +1 -1
  385. package/util/mineReference.d.ts +3 -2
  386. package/util/mineReference.js +67 -29
  387. package/util/scrollToEyeLevel.js +6 -1
  388. package/components/chapter/renderPosition.d.ts +0 -3
  389. package/components/chapter/renderPosition.js +0 -4
  390. package/components/editor/ToolbarIcon.svelte +0 -22
  391. package/components/editor/ToolbarIcon.svelte.d.ts +0 -16
  392. package/components/page/Alert.svelte +0 -11
  393. package/components/page/Alert.svelte.d.ts +0 -23
  394. package/components/page/Revisions.svelte +0 -124
  395. package/components/page/Revisions.svelte.d.ts +0 -14
  396. package/models/BookLoader.d.ts +0 -2
  397. package/models/BookLoader.js +0 -67
  398. package/models/Firestore.d.ts +0 -22
  399. package/models/Firestore.js +0 -194
  400. package/models/chapter/ReferenceNode.d.ts +0 -29
  401. package/models/chapter/ReferenceNode.js +0 -48
  402. package/models/loadEdition.d.ts +0 -5
  403. package/models/loadEdition.js +0 -16
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Bookish
2
+
2
3
  Bookish is a simple framework and platforem for publishing online books. I originally created it to make it easier to maintain the many online books on my website (amyjko.com), while adding more sophisticated features to support reading. I'm slowly evolving it to be a simple free online service for authoring and reading online books.
3
4
 
4
5
  ## Project Status
5
- This is very much an alpha that I use for my own book publishing. I have aspirations to make it usable for others in the future. Expect slow progress while I sneak in programming time on evenings and weekends. You can see where I'm headed by reading the issues and Backend project, which are somewhat organized.
6
+
7
+ This is very much an alpha that I use for my own book publishing. I have aspirations to make it usable for others in the future. Expect slow progress while I sneak in programming time on evenings and weekends. You can see where I'm headed by reading the issues and Backend project, which are somewhat organized.
@@ -1,29 +1,34 @@
1
- <script>import { sendSignInLinkToEmail } from "firebase/auth";
2
- import { onMount, setContext } from "svelte";
3
- import { writable } from "svelte/store";
4
- import { auth } from "../models/Firebase";
5
- import { AUTH } from "./page/Contexts";
1
+ <script>import { sendSignInLinkToEmail } from 'firebase/auth';
2
+ import { onDestroy, setContext } from 'svelte';
3
+ import { writable } from 'svelte/store';
4
+ import { auth } from '../models/Firebase';
5
+ import { USER } from './page/Contexts';
6
6
  // Track the user and user loading status in state
7
7
  let loading = true;
8
8
  // The store that tracks the auth context.
9
- const authentication = writable({ user: null, loading: loading, login, logout, });
9
+ const authentication = writable({
10
+ user: null,
11
+ loading: loading,
12
+ login,
13
+ logout,
14
+ });
10
15
  // Login using Firebase's password-less email verification
11
16
  async function login(email) {
12
17
  // If connected to firebase...
13
18
  if (auth) {
14
19
  const actionCodeSettings = {
15
- url: location.origin + "/finishlogin",
16
- handleCodeInApp: true
20
+ url: location.origin + '/confirm',
21
+ handleCodeInApp: true,
17
22
  };
18
23
  // Ask Firebase to log in with the given email
19
24
  await sendSignInLinkToEmail(auth, email, actionCodeSettings);
20
25
  // Remember the email in local storage so we don't have to ask for it again
21
26
  // after returning to the link above.
22
- window.localStorage.setItem("email", email);
27
+ window.localStorage.setItem('email', email);
23
28
  }
24
29
  }
25
30
  function updateAuth(user) {
26
- authentication.set({ user, loading: loading, login, logout, });
31
+ authentication.set({ user, loading: loading, login, logout });
27
32
  }
28
33
  // Logout using Firebase's authentication framework.
29
34
  function logout() {
@@ -32,21 +37,19 @@ function logout() {
32
37
  }
33
38
  }
34
39
  // On mount, subscribe to authentication changes.
35
- onMount(() => {
36
- if (auth) {
37
- const unsubscribe = auth.onAuthStateChanged(user => {
38
- loading = false;
39
- updateAuth(user);
40
- });
41
- // On unmount, stop subscribing.
42
- return unsubscribe;
43
- }
44
- });
40
+ if (auth) {
41
+ const unsubscribe = auth.onAuthStateChanged((user) => {
42
+ loading = false;
43
+ updateAuth(user);
44
+ });
45
+ // On unmount, stop subscribing.
46
+ onDestroy(unsubscribe);
47
+ }
45
48
  // Expose the state and the login/logout functionality.
46
- setContext(AUTH, authentication);
49
+ setContext(USER, authentication);
47
50
  </script>
48
51
 
49
52
  <!-- Wrap whatever children are given in this context. -->
50
- {#if loading === false }
51
- <slot></slot>
52
- {/if}
53
+ {#if loading === false}
54
+ <slot />
55
+ {/if}
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
@@ -8,9 +8,9 @@ declare const __propDef: {
8
8
  default: {};
9
9
  };
10
10
  };
11
- export declare type AuthProps = typeof __propDef.props;
12
- export declare type AuthEvents = typeof __propDef.events;
13
- export declare type AuthSlots = typeof __propDef.slots;
11
+ export type AuthProps = typeof __propDef.props;
12
+ export type AuthEvents = typeof __propDef.events;
13
+ export type AuthSlots = typeof __propDef.slots;
14
14
  export default class Auth extends SvelteComponentTyped<AuthProps, AuthEvents, AuthSlots> {
15
15
  }
16
16
  export {};
@@ -1,5 +1,5 @@
1
- import type { User } from "firebase/auth";
2
- declare type Authentication = {
1
+ import type { User } from 'firebase/auth';
2
+ type Authentication = {
3
3
  user: User | null;
4
4
  loading: boolean;
5
5
  login: Function;
@@ -1,87 +1,103 @@
1
- <script>import EmbedNode from "../models/chapter/EmbedNode";
2
- import Parser from "../models/chapter/Parser";
3
- import ErrorNode from "../models/chapter/ErrorNode";
4
- import ChapterBody from "./chapter/ChapterBody.svelte";
5
- import Embed from "./chapter/Embed.svelte";
6
- import ErrorMessage from "./chapter/ErrorMessage.svelte";
7
- import Link from "./Link.svelte";
1
+ <script>import EmbedNode from '../models/chapter/EmbedNode';
2
+ import Parser from '../models/chapter/Parser';
3
+ import ErrorNode from '../models/chapter/ErrorNode';
4
+ import ChapterBody from './chapter/ChapterBody.svelte';
5
+ import Embed from './chapter/Embed.svelte';
6
+ import ErrorMessage from './chapter/ErrorMessage.svelte';
7
+ import Link from './app/Link.svelte';
8
8
  export let book;
9
- export let write;
9
+ export let write = false;
10
10
  $: refID = book.getRefID();
11
11
  $: cover = book.getCover();
12
12
  $: authors = book.getAuthors();
13
13
  $: description = book.getDescription();
14
14
  $: subdomain = book.getSubdomain();
15
- $: title = book.getTitle() === "" ? "Untitled" : book.getTitle();
15
+ $: title = book.getTitle();
16
16
  $: embed = cover === null ? null : Parser.parseEmbed(undefined, cover);
17
+ $: url =
18
+ subdomain === undefined || write
19
+ ? refID === undefined
20
+ ? ''
21
+ : (write ? '/write/' : '/') + refID
22
+ : `/${subdomain}`;
17
23
  </script>
18
24
 
19
- <div class="bookish-app-book-preview">
20
- <div class={`bookish-app-book-preview-cover ${cover === null ? "bookish-app-book-preview-nocover" : ""}`}>
21
- {#if embed instanceof EmbedNode }
22
- <Embed node={embed}/>
23
- {:else if embed instanceof ErrorNode }
24
- <ErrorMessage node={embed}/>
25
+ <article class="book-preview">
26
+ <div class="cover" class:empty={embed === null}>
27
+ {#if embed instanceof EmbedNode}
28
+ <Embed node={embed} imageOnly editable={false} />
25
29
  {/if}
26
30
  </div>
27
- <div class="bookish-app-book-preview-title">
28
- {#if subdomain === undefined || write }
29
- <Link to={refID === undefined ? "" : (write ? "/write/" : "/") + refID}>{title}</Link>
30
- {:else}
31
- <Link to={`/${subdomain}`}>{title}</Link>
32
- {/if}
33
- </div>
34
- <div class="bookish-app-book-preview-authors">
35
- {#each authors as author, index}
36
- <span>{author}{#if index !== authors.length - 1},&nbsp;{/if}</span>
37
- {:else}
38
- <em>No authors</em>
39
- {/each}
40
- </div>
41
- <div class="bookish-app-book-preview-description">
42
- {#if description.length === 0}
43
- <em>No description</em>
44
- {:else}
45
- <ChapterBody node={Parser.parseChapter(undefined, description)}/>
46
- {/if}
31
+ <div class="content">
32
+ <Link to={url}><h2 class="title">{title}</h2></Link>
33
+ <p class="authors">
34
+ {#each authors as author, index}
35
+ <span
36
+ >{author}{#if index !== authors.length - 1},&nbsp;{/if}</span
37
+ >
38
+ {:else}
39
+ <em>No authors</em>
40
+ {/each}
41
+ </p>
42
+ <div class="description">
43
+ {#if description.length === 0}
44
+ <em>No description</em>
45
+ {:else}
46
+ <ChapterBody
47
+ node={Parser.parseChapter(undefined, description)}
48
+ />
49
+ {/if}
50
+ </div>
51
+ <Link to={`${url}/editions`}>Editions</Link>
47
52
  </div>
48
- </div>
53
+ </article>
49
54
 
50
55
  <style>
51
- .bookish-app-book-preview {
56
+ .book-preview {
52
57
  display: flex;
53
- width: 100%;
54
- border: var(--bookish-app-chrome-border-width) solid var(--bookish-app-chrome-border-color);
55
- padding: var(--bookish-app-chrome-padding);
56
- border-radius: var(--bookish-app-chrome-roundedness);
58
+ flex-direction: row;
59
+ align-content: start;
60
+ margin: var(--app-chrome-padding);
61
+ padding: var(--app-chrome-padding);
57
62
  text-align: left;
63
+ flex-wrap: wrap;
64
+ height: 12em;
58
65
  }
59
66
 
60
- .bookish-app-book-preview-cover {
61
- width: 5em;
62
- height: auto;
63
- margin-right: var(--bookish-app-chrome-padding);
67
+ .cover {
68
+ flex: 1;
69
+ width: 10em;
70
+ height: 100%;
71
+ margin-right: var(--app-chrome-padding);
72
+ padding: var(--app-chrome-padding);
64
73
  }
65
74
 
66
- .bookish-app-book-preview-cover.bookish-app-book-preview-nocover {
67
- background-color: var(--bookish-app-chrome-muted);
68
- height: 5em;
75
+ .cover.empty {
76
+ background-color: var(--app-chrome-background);
69
77
  }
70
78
 
71
- .bookish-app-book-preview-title {
72
- flex: 1;
73
- margin-right: var(--bookish-app-chrome-padding);
79
+ .content {
80
+ flex: 4;
81
+ display: flex;
82
+ flex-direction: column;
83
+ gap: var(--app-chrome-padding);
74
84
  }
75
85
 
76
- .bookish-app-book-preview-authors {
77
- flex: 1;
78
- margin-right: var(--bookish-app-chrome-padding);
86
+ .title {
87
+ font-size: 20pt;
88
+ margin-top: 0;
89
+ margin-bottom: var(--app-chrome-padding);
79
90
  }
80
91
 
81
- .bookish-app-book-preview-description {
82
- flex: 2;
83
- overflow: hidden;
84
- max-height: 10em;
92
+ .authors {
93
+ margin-top: 0;
94
+ margin-bottom: var(--app-chrome-padding);
95
+ font-style: italic;
85
96
  }
86
97
 
87
- </style>
98
+ .description {
99
+ margin-top: 0;
100
+ overflow: hidden;
101
+ text-overflow: ellipsis;
102
+ }
103
+ </style>
@@ -1,18 +1,18 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type Book from "../models/book/Book";
2
+ import type Book from '../models/book/Book';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  book: Book;
6
- write: boolean;
6
+ write?: boolean | undefined;
7
7
  };
8
8
  events: {
9
9
  [evt: string]: CustomEvent<any>;
10
10
  };
11
11
  slots: {};
12
12
  };
13
- export declare type BookPreviewProps = typeof __propDef.props;
14
- export declare type BookPreviewEvents = typeof __propDef.events;
15
- export declare type BookPreviewSlots = typeof __propDef.slots;
13
+ export type BookPreviewProps = typeof __propDef.props;
14
+ export type BookPreviewEvents = typeof __propDef.events;
15
+ export type BookPreviewSlots = typeof __propDef.slots;
16
16
  export default class BookPreview extends SvelteComponentTyped<BookPreviewProps, BookPreviewEvents, BookPreviewSlots> {
17
17
  }
18
18
  export {};
@@ -1,4 +1,4 @@
1
1
  <script>export let to;
2
2
  </script>
3
3
 
4
- <a href={to} target="_blank" rel="noreferrer"><slot></slot></a>
4
+ <a href={to} target="_blank" rel="noreferrer"><slot /></a>
@@ -10,9 +10,9 @@ declare const __propDef: {
10
10
  default: {};
11
11
  };
12
12
  };
13
- export declare type ExternalProps = typeof __propDef.props;
14
- export declare type ExternalEvents = typeof __propDef.events;
15
- export declare type ExternalSlots = typeof __propDef.slots;
13
+ export type ExternalProps = typeof __propDef.props;
14
+ export type ExternalEvents = typeof __propDef.events;
15
+ export type ExternalSlots = typeof __propDef.slots;
16
16
  export default class External extends SvelteComponentTyped<ExternalProps, ExternalEvents, ExternalSlots> {
17
17
  }
18
18
  export {};
@@ -1,5 +1,51 @@
1
- <script>export let to;
2
- export let before = undefined;
1
+ <script>import { page } from '$app/stores';
2
+ export let to;
3
+ let link;
4
+ function scroll(event) {
5
+ // No element? Bail.
6
+ if (link === undefined)
7
+ return;
8
+ // No hash? No scroll.
9
+ const hash = new URL(link.href).hash;
10
+ if (hash === '')
11
+ return;
12
+ // Prevent the browser from scrolling.
13
+ event.preventDefault();
14
+ // Get the anchor
15
+ const anchorId = new URL(link.href).hash.replace('#', '');
16
+ const anchor = document.getElementById(anchorId);
17
+ // No anchor? Bail.
18
+ if (anchor === null)
19
+ return;
20
+ // Scroll to the anchor.
21
+ window.scrollTo({
22
+ top: anchor.offsetTop,
23
+ behavior: 'smooth',
24
+ });
25
+ // Update the hash (without scrolling)
26
+ history.pushState({}, '', hash);
27
+ }
3
28
  </script>
4
29
 
5
- <a href={to} on:click={() => before ? before() : undefined }><slot></slot></a>
30
+ {#if $page.url.pathname === (to.charAt(to.length - 1) === '/' ? to.substring(0, to.length - 1) : to)}
31
+ <slot />
32
+ {:else}
33
+ <a
34
+ href={to}
35
+ bind:this={link}
36
+ on:click={(event) => scroll(event)}
37
+ target={to.startsWith('http') ? '_blank' : null}><slot /></a
38
+ >
39
+ {/if}
40
+
41
+ <style>
42
+ a {
43
+ color: var(--bookish-link-color);
44
+ font-weight: var(--bookish-link-font-weight);
45
+ text-decoration: none;
46
+ }
47
+
48
+ a:hover {
49
+ text-decoration: underline;
50
+ }
51
+ </style>
@@ -2,7 +2,6 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  to: string;
5
- before?: Function | undefined;
6
5
  };
7
6
  events: {
8
7
  [evt: string]: CustomEvent<any>;
@@ -11,9 +10,9 @@ declare const __propDef: {
11
10
  default: {};
12
11
  };
13
12
  };
14
- export declare type LinkProps = typeof __propDef.props;
15
- export declare type LinkEvents = typeof __propDef.events;
16
- export declare type LinkSlots = typeof __propDef.slots;
13
+ export type LinkProps = typeof __propDef.props;
14
+ export type LinkEvents = typeof __propDef.events;
15
+ export type LinkSlots = typeof __propDef.slots;
17
16
  export default class Link extends SvelteComponentTyped<LinkProps, LinkEvents, LinkSlots> {
18
17
  }
19
18
  export {};
@@ -0,0 +1,19 @@
1
+ <script>import BookPreview from '../BookPreview.svelte';
2
+ export let books;
3
+ export let write;
4
+ </script>
5
+
6
+ <section class="previews">
7
+ {#each books as book}
8
+ <BookPreview {book} {write} />
9
+ {/each}
10
+ </section>
11
+
12
+ <style>
13
+ .previews {
14
+ margin-top: var(--app-text-spacing);
15
+ display: flex;
16
+ flex-direction: column;
17
+ width: 100%;
18
+ }
19
+ </style>
@@ -0,0 +1,18 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type Book from '../../models/book/Book';
3
+ declare const __propDef: {
4
+ props: {
5
+ books: Book[];
6
+ write: boolean;
7
+ };
8
+ events: {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {};
12
+ };
13
+ export type BookListProps = typeof __propDef.props;
14
+ export type BookListEvents = typeof __propDef.events;
15
+ export type BookListSlots = typeof __propDef.slots;
16
+ export default class BookList extends SvelteComponentTyped<BookListProps, BookListEvents, BookListSlots> {
17
+ }
18
+ export {};
@@ -0,0 +1,49 @@
1
+ <script>export let type = null;
2
+ export let tooltip;
3
+ export let disabled = false;
4
+ export let command;
5
+ </script>
6
+
7
+ <button
8
+ class={$$props.class}
9
+ title={tooltip}
10
+ aria-label={tooltip}
11
+ {type}
12
+ {disabled}
13
+ on:mousedown={command}
14
+ on:keypress={(event) =>
15
+ event.key === ' ' || event.key === 'Enter' ? command() : undefined}
16
+ >
17
+ <slot />
18
+ </button>
19
+
20
+ <style>
21
+ button {
22
+ display: inline-block;
23
+ font-family: var(--app-font);
24
+ font-size: var(--app-chrome-font-size);
25
+ color: var(--app-font-color);
26
+ background-color: var(--app-chrome-background);
27
+ padding: var(--app-chrome-padding);
28
+ border-radius: var(--app-chrome-roundedness);
29
+ border: none;
30
+ }
31
+
32
+ button:hover:enabled {
33
+ cursor: pointer;
34
+ background-color: var(--app-interactive-color);
35
+ color: var(--app-font-color-inverted);
36
+ }
37
+
38
+ button:disabled {
39
+ opacity: 0.3;
40
+ cursor: auto;
41
+ }
42
+
43
+ button:focus {
44
+ position: relative;
45
+ z-index: 2;
46
+ outline: var(--app-chrome-border-size) solid
47
+ var(--app-interactive-color);
48
+ }
49
+ </style>
@@ -0,0 +1,22 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ [x: string]: any;
5
+ type?: "submit" | "button" | null | undefined;
6
+ tooltip: string;
7
+ disabled?: boolean | undefined;
8
+ command: () => void;
9
+ };
10
+ events: {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {
14
+ default: {};
15
+ };
16
+ };
17
+ export type ButtonProps = typeof __propDef.props;
18
+ export type ButtonEvents = typeof __propDef.events;
19
+ export type ButtonSlots = typeof __propDef.slots;
20
+ export default class Button extends SvelteComponentTyped<ButtonProps, ButtonEvents, ButtonSlots> {
21
+ }
22
+ export {};
@@ -0,0 +1,47 @@
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
+ });
8
+ </script>
9
+
10
+ {#if visible}
11
+ {#if error}
12
+ <p role="alert"><slot /></p>
13
+ {:else}
14
+ <p role="status" aria-live="polite"><Large><slot /></Large></p>
15
+ {/if}
16
+ {/if}
17
+
18
+ <style>
19
+ p {
20
+ font-family: var(--app-font);
21
+ margin-top: var(--app-text-spacing);
22
+ margin-bottom: var(--app-text-spacing);
23
+ padding: var(--app-chrome-padding);
24
+ --bounce-height: 1em;
25
+ }
26
+
27
+ p[role='alert'] {
28
+ color: var(--app-error-color);
29
+ }
30
+
31
+ p[role='status'] {
32
+ color: var(--app-font-color);
33
+ animation: waiting 1s infinite;
34
+ }
35
+
36
+ @keyframes waiting {
37
+ 0% {
38
+ transform: rotate(2deg);
39
+ }
40
+ 50% {
41
+ transform: rotate(-2deg);
42
+ }
43
+ 100% {
44
+ transform: rotate(2deg);
45
+ }
46
+ }
47
+ </style>
@@ -0,0 +1,18 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ error?: boolean | undefined;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {
10
+ default: {};
11
+ };
12
+ };
13
+ export type FeedbackProps = typeof __propDef.props;
14
+ export type FeedbackEvents = typeof __propDef.events;
15
+ export type FeedbackSlots = typeof __propDef.slots;
16
+ export default class Feedback extends SvelteComponentTyped<FeedbackProps, FeedbackEvents, FeedbackSlots> {
17
+ }
18
+ export {};
@@ -0,0 +1,15 @@
1
+ <script>export let id = null;
2
+ </script>
3
+
4
+ <h2 {id}><slot /></h2>
5
+
6
+ <style>
7
+ h2 {
8
+ font-size: 150%;
9
+ font-weight: bold;
10
+ font-family: var(--app-font);
11
+ margin-top: var(--app-text-spacing);
12
+ margin-bottom: 0;
13
+ margin-left: -1rem;
14
+ }
15
+ </style>
@@ -0,0 +1,18 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ id?: string | null | undefined;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {
10
+ default: {};
11
+ };
12
+ };
13
+ export type HeadProps = typeof __propDef.props;
14
+ export type HeadEvents = typeof __propDef.events;
15
+ export type HeadSlots = typeof __propDef.slots;
16
+ export default class Head extends SvelteComponentTyped<HeadProps, HeadEvents, HeadSlots> {
17
+ }
18
+ export {};
@@ -0,0 +1,8 @@
1
+ <span><slot /></span>
2
+
3
+ <style>
4
+ span {
5
+ font-size: 175%;
6
+ font-weight: bold;
7
+ }
8
+ </style>
@@ -0,0 +1,27 @@
1
+ /** @typedef {typeof __propDef.props} LargeProps */
2
+ /** @typedef {typeof __propDef.events} LargeEvents */
3
+ /** @typedef {typeof __propDef.slots} LargeSlots */
4
+ export default class Large extends SvelteComponentTyped<{
5
+ [x: string]: never;
6
+ }, {
7
+ [evt: string]: CustomEvent<any>;
8
+ }, {
9
+ default: {};
10
+ }> {
11
+ }
12
+ export type LargeProps = typeof __propDef.props;
13
+ export type LargeEvents = typeof __propDef.events;
14
+ export type LargeSlots = 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 {};