bookish-press 0.4.47 → 0.4.48

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/components/Auth.svelte +55 -0
  2. package/components/Auth.svelte.d.ts +16 -0
  3. package/{src/lib/components/Authentication.ts → components/Authentication.d.ts} +0 -2
  4. package/components/Authentication.js +1 -0
  5. package/{src/lib/components → components}/BookPreview.svelte +22 -27
  6. package/components/BookPreview.svelte.d.ts +18 -0
  7. package/{src/lib/components → components}/External.svelte +1 -2
  8. package/components/External.svelte.d.ts +18 -0
  9. package/components/Link.svelte +51 -0
  10. package/components/Link.svelte.d.ts +18 -0
  11. package/{src/lib/components → components}/app/BookList.svelte +3 -6
  12. package/components/app/BookList.svelte.d.ts +18 -0
  13. package/{src/lib/components → components}/app/Button.svelte +4 -5
  14. package/components/app/Button.svelte.d.ts +22 -0
  15. package/{src/lib/components → components}/app/Feedback.svelte +7 -11
  16. package/components/app/Feedback.svelte.d.ts +18 -0
  17. package/{src/lib/components → components}/app/Head.svelte +1 -2
  18. package/components/app/Head.svelte.d.ts +18 -0
  19. package/{src/lib/components → components}/app/Large.svelte +0 -0
  20. package/components/app/Large.svelte.d.ts +27 -0
  21. package/{src/lib/components → components}/app/Lead.svelte +0 -0
  22. package/components/app/Lead.svelte.d.ts +27 -0
  23. package/{src/lib/components → components}/app/Link.svelte +3 -4
  24. package/components/app/Link.svelte.d.ts +20 -0
  25. package/{src/lib/components → components}/app/Options.svelte +4 -5
  26. package/components/app/Options.svelte.d.ts +19 -0
  27. package/{src/lib/components → components}/app/Paragraph.svelte +1 -2
  28. package/components/app/Paragraph.svelte.d.ts +18 -0
  29. package/{src/lib/components → components}/app/Section.svelte +0 -0
  30. package/components/app/Section.svelte.d.ts +27 -0
  31. package/{src/lib/components → components}/app/Table.svelte +0 -0
  32. package/components/app/Table.svelte.d.ts +27 -0
  33. package/{src/lib/components → components}/app/TextInput.svelte +9 -12
  34. package/components/app/TextInput.svelte.d.ts +22 -0
  35. package/{src/lib/components → components}/chapter/Atom.svelte +12 -18
  36. package/components/chapter/Atom.svelte.d.ts +19 -0
  37. package/components/chapter/Block.svelte +37 -0
  38. package/components/chapter/Block.svelte.d.ts +17 -0
  39. package/{src/lib/components → components}/chapter/Callout.svelte +3 -6
  40. package/components/chapter/Callout.svelte.d.ts +17 -0
  41. package/{src/lib/components → components}/chapter/CaptionedCode.svelte +13 -21
  42. package/components/chapter/CaptionedCode.svelte.d.ts +17 -0
  43. package/{src/lib/components → components}/chapter/ChapterBody.svelte +9 -13
  44. package/components/chapter/ChapterBody.svelte.d.ts +19 -0
  45. package/{src/lib/components → components}/chapter/Citations.svelte +33 -34
  46. package/components/chapter/Citations.svelte.d.ts +17 -0
  47. package/{src/lib/components → components}/chapter/Code.svelte +58 -62
  48. package/components/chapter/Code.svelte.d.ts +22 -0
  49. package/{src/lib/components → components}/chapter/Comment.svelte +18 -30
  50. package/components/chapter/Comment.svelte.d.ts +17 -0
  51. package/{src/lib/components → components}/chapter/Definition.svelte +17 -23
  52. package/components/chapter/Definition.svelte.d.ts +17 -0
  53. package/{src/lib/components → components}/chapter/Embed.svelte +77 -97
  54. package/components/chapter/Embed.svelte.d.ts +20 -0
  55. package/components/chapter/ErrorMessage.svelte +9 -0
  56. package/components/chapter/ErrorMessage.svelte.d.ts +17 -0
  57. package/components/chapter/ExtendedPrism.d.ts +2 -0
  58. package/{src/lib/components → components}/chapter/ExtendedPrism.js +0 -0
  59. package/{src/lib/components → components}/chapter/Figure.svelte +26 -34
  60. package/components/chapter/Figure.svelte.d.ts +24 -0
  61. package/{src/lib/components → components}/chapter/Footnote.svelte +20 -32
  62. package/components/chapter/Footnote.svelte.d.ts +19 -0
  63. package/{src/lib/components → components}/chapter/Format.svelte +34 -39
  64. package/components/chapter/Format.svelte.d.ts +19 -0
  65. package/{src/lib/components → components}/chapter/InlineCode.svelte +5 -9
  66. package/components/chapter/InlineCode.svelte.d.ts +17 -0
  67. package/{src/lib/components → components}/chapter/Label.svelte +14 -23
  68. package/components/chapter/Label.svelte.d.ts +17 -0
  69. package/{src/lib/components → components}/chapter/Link.svelte +21 -27
  70. package/components/chapter/Link.svelte.d.ts +17 -0
  71. package/{src/lib/components → components}/chapter/List.svelte +3 -5
  72. package/components/chapter/List.svelte.d.ts +17 -0
  73. package/{src/lib/components → components}/chapter/Marginal.svelte +41 -54
  74. package/components/chapter/Marginal.svelte.d.ts +22 -0
  75. package/{src/lib/components → components}/chapter/Paragraph.svelte +20 -25
  76. package/components/chapter/Paragraph.svelte.d.ts +18 -0
  77. package/{src/lib/components → components}/chapter/Positioned.svelte +1 -4
  78. package/components/chapter/Positioned.svelte.d.ts +19 -0
  79. package/{src/lib/components → components}/chapter/Problem.svelte +0 -0
  80. package/components/chapter/Problem.svelte.d.ts +27 -0
  81. package/components/chapter/Python.svelte +128 -0
  82. package/components/chapter/Python.svelte.d.ts +18 -0
  83. package/{src/lib/components → components}/chapter/Quote.svelte +5 -9
  84. package/components/chapter/Quote.svelte.d.ts +17 -0
  85. package/{src/lib/components → components}/chapter/Rule.svelte +1 -4
  86. package/components/chapter/Rule.svelte.d.ts +17 -0
  87. package/{src/lib/components → components}/chapter/Table.svelte +7 -11
  88. package/components/chapter/Table.svelte.d.ts +17 -0
  89. package/components/chapter/Text.svelte +87 -0
  90. package/components/chapter/Text.svelte.d.ts +18 -0
  91. package/components/editor/BookishEditor.svelte +884 -0
  92. package/components/editor/BookishEditor.svelte.d.ts +25 -0
  93. package/components/editor/CalloutEditor.svelte +10 -0
  94. package/components/editor/CalloutEditor.svelte.d.ts +17 -0
  95. package/{src/lib/components → components}/editor/CaptionedCodeEditor.svelte +6 -10
  96. package/components/editor/CaptionedCodeEditor.svelte.d.ts +17 -0
  97. package/components/editor/CaretContext.d.ts +50 -0
  98. package/components/editor/CaretContext.js +1 -0
  99. package/{src/lib/components/editor/CaretState.ts → components/editor/CaretState.d.ts} +7 -6
  100. package/components/editor/CaretState.js +1 -0
  101. package/{src/lib/components/editor/CaretUtilities.ts → components/editor/CaretUtilities.d.ts} +0 -1
  102. package/components/editor/CaretUtilities.js +1 -0
  103. package/{src/lib/components → components}/editor/CaretView.svelte +20 -25
  104. package/components/editor/CaretView.svelte.d.ts +25 -0
  105. package/components/editor/CitationsEditor.svelte +53 -0
  106. package/components/editor/CitationsEditor.svelte.d.ts +17 -0
  107. package/{src/lib/components/editor/Clipboard.ts → components/editor/Clipboard.d.ts} +1 -2
  108. package/components/editor/Clipboard.js +1 -0
  109. package/{src/lib/components/editor/Command.ts → components/editor/Command.d.ts} +2 -8
  110. package/components/editor/Command.js +1 -0
  111. package/components/editor/Commands.d.ts +3 -0
  112. package/{src/lib/components/editor/Commands.ts → components/editor/Commands.js} +315 -730
  113. package/components/editor/ConfirmButton.svelte +49 -0
  114. package/components/editor/ConfirmButton.svelte.d.ts +19 -0
  115. package/components/editor/DefinitionEditor.svelte +36 -0
  116. package/components/editor/DefinitionEditor.svelte.d.ts +17 -0
  117. package/components/editor/EmbedEditor.svelte +137 -0
  118. package/components/editor/EmbedEditor.svelte.d.ts +17 -0
  119. package/{src/lib/components → components}/editor/Icon.svelte +1 -2
  120. package/components/editor/Icon.svelte.d.ts +16 -0
  121. package/{src/lib/components → components}/editor/ImageChooser.svelte +19 -24
  122. package/components/editor/ImageChooser.svelte.d.ts +18 -0
  123. package/components/editor/InlineCodeEditor.svelte +12 -0
  124. package/components/editor/InlineCodeEditor.svelte.d.ts +17 -0
  125. package/{src/lib/components → components}/editor/LabelEditor.svelte +9 -14
  126. package/components/editor/LabelEditor.svelte.d.ts +17 -0
  127. package/{src/lib/components → components}/editor/LanguageEditor.svelte +5 -8
  128. package/components/editor/LanguageEditor.svelte.d.ts +17 -0
  129. package/components/editor/LinkEditor.svelte +100 -0
  130. package/components/editor/LinkEditor.svelte.d.ts +17 -0
  131. package/{src/lib/components → components}/editor/Note.svelte +0 -0
  132. package/components/editor/Note.svelte.d.ts +27 -0
  133. package/{src/lib/components → components}/editor/Permissions.svelte +36 -43
  134. package/components/editor/Permissions.svelte.d.ts +20 -0
  135. package/components/editor/PositionEditor.svelte +17 -0
  136. package/components/editor/PositionEditor.svelte.d.ts +18 -0
  137. package/components/editor/QuoteEditor.svelte +10 -0
  138. package/components/editor/QuoteEditor.svelte.d.ts +17 -0
  139. package/{src/lib/components → components}/editor/Switch.svelte +11 -14
  140. package/components/editor/Switch.svelte.d.ts +20 -0
  141. package/components/editor/TableEditor.svelte +10 -0
  142. package/components/editor/TableEditor.svelte.d.ts +17 -0
  143. package/{src/lib/components → components}/editor/TextEditor.svelte +89 -101
  144. package/components/editor/TextEditor.svelte.d.ts +24 -0
  145. package/components/editor/Toggle.svelte +41 -0
  146. package/components/editor/Toggle.svelte.d.ts +19 -0
  147. package/components/editor/Toolbar.svelte +249 -0
  148. package/components/editor/Toolbar.svelte.d.ts +17 -0
  149. package/{src/lib/components → components}/editor/ToolbarGroup.svelte +3 -5
  150. package/components/editor/ToolbarGroup.svelte.d.ts +18 -0
  151. package/{src/lib/components → components}/editor/ToolbarSpacer.svelte +0 -0
  152. package/components/editor/ToolbarSpacer.svelte.d.ts +23 -0
  153. package/components/editor/URLEditor.svelte +13 -0
  154. package/components/editor/URLEditor.svelte.d.ts +18 -0
  155. package/{src/lib/components/editor/UndoState.ts → components/editor/UndoState.d.ts} +2 -3
  156. package/components/editor/UndoState.js +1 -0
  157. package/{src/lib/components → components}/editor/icons/annotate.svg +0 -0
  158. package/{src/lib/components → components}/editor/icons/block.svg +0 -0
  159. package/{src/lib/components → components}/editor/icons/bold.svg +0 -0
  160. package/{src/lib/components → components}/editor/icons/bullets.svg +0 -0
  161. package/{src/lib/components → components}/editor/icons/callout.svg +0 -0
  162. package/{src/lib/components → components}/editor/icons/citation.svg +0 -0
  163. package/{src/lib/components → components}/editor/icons/clear.svg +0 -0
  164. package/{src/lib/components → components}/editor/icons/clipboard.svg +0 -0
  165. package/{src/lib/components → components}/editor/icons/code.svg +0 -0
  166. package/{src/lib/components → components}/editor/icons/columnafter.svg +0 -0
  167. package/{src/lib/components → components}/editor/icons/columnbefore.svg +0 -0
  168. package/{src/lib/components → components}/editor/icons/comment.svg +0 -0
  169. package/{src/lib/components → components}/editor/icons/copy.svg +0 -0
  170. package/{src/lib/components → components}/editor/icons/cut.svg +0 -0
  171. package/{src/lib/components → components}/editor/icons/define.svg +0 -0
  172. package/{src/lib/components → components}/editor/icons/deletecolumn.svg +0 -0
  173. package/{src/lib/components → components}/editor/icons/deleterow.svg +0 -0
  174. package/{src/lib/components → components}/editor/icons/footnote.svg +0 -0
  175. package/{src/lib/components → components}/editor/icons/header1.svg +0 -0
  176. package/{src/lib/components → components}/editor/icons/header2.svg +0 -0
  177. package/{src/lib/components → components}/editor/icons/header3.svg +0 -0
  178. package/{src/lib/components → components}/editor/icons/home.svg +0 -0
  179. package/{src/lib/components → components}/editor/icons/indent.svg +0 -0
  180. package/{src/lib/components → components}/editor/icons/italic.svg +0 -0
  181. package/{src/lib/components → components}/editor/icons/label.svg +0 -0
  182. package/{src/lib/components → components}/editor/icons/left.svg +0 -0
  183. package/{src/lib/components → components}/editor/icons/level.svg +0 -0
  184. package/{src/lib/components → components}/editor/icons/link.svg +0 -0
  185. package/{src/lib/components → components}/editor/icons/list.svg +0 -0
  186. package/{src/lib/components → components}/editor/icons/media.svg +0 -0
  187. package/{src/lib/components → components}/editor/icons/middle.svg +0 -0
  188. package/{src/lib/components → components}/editor/icons/numbers.svg +0 -0
  189. package/{src/lib/components → components}/editor/icons/paragraph.svg +0 -0
  190. package/{src/lib/components → components}/editor/icons/paste.svg +0 -0
  191. package/{src/lib/components → components}/editor/icons/quote.svg +0 -0
  192. package/{src/lib/components → components}/editor/icons/redo.svg +0 -0
  193. package/{src/lib/components → components}/editor/icons/right.svg +0 -0
  194. package/{src/lib/components → components}/editor/icons/rowabove.svg +0 -0
  195. package/{src/lib/components → components}/editor/icons/rowbelow.svg +0 -0
  196. package/{src/lib/components → components}/editor/icons/rule.svg +0 -0
  197. package/{src/lib/components → components}/editor/icons/sub.svg +0 -0
  198. package/{src/lib/components → components}/editor/icons/super.svg +0 -0
  199. package/{src/lib/components → components}/editor/icons/table.svg +0 -0
  200. package/{src/lib/components → components}/editor/icons/text.svg +0 -0
  201. package/{src/lib/components → components}/editor/icons/time.svg +0 -0
  202. package/{src/lib/components → components}/editor/icons/undo.svg +0 -0
  203. package/{src/lib/components → components}/editor/icons/unindent.svg +0 -0
  204. package/{src/lib/components → components}/editor/icons/unlink.svg +0 -0
  205. package/{src/lib/components → components}/page/Acknowledgements.svelte +10 -19
  206. package/components/page/Acknowledgements.svelte.d.ts +14 -0
  207. package/components/page/Authors.svelte +85 -0
  208. package/components/page/Authors.svelte.d.ts +21 -0
  209. package/components/page/BookLoader.svelte +59 -0
  210. package/components/page/BookLoader.svelte.d.ts +16 -0
  211. package/components/page/BulkReferenceEditor.svelte +63 -0
  212. package/components/page/BulkReferenceEditor.svelte.d.ts +14 -0
  213. package/components/page/Chapter.svelte +392 -0
  214. package/components/page/Chapter.svelte.d.ts +18 -0
  215. package/components/page/ChapterContext.d.ts +10 -0
  216. package/components/page/ChapterContext.js +1 -0
  217. package/{src/lib/components → components}/page/ChapterNumber.svelte +0 -0
  218. package/components/page/ChapterNumber.svelte.d.ts +27 -0
  219. package/{src/lib/components → components}/page/ChapterTitle.svelte +2 -4
  220. package/components/page/ChapterTitle.svelte.d.ts +18 -0
  221. package/components/page/Contexts.d.ts +47 -0
  222. package/components/page/Contexts.js +133 -0
  223. package/{src/lib/components → components}/page/DefinitionView.svelte +37 -52
  224. package/components/page/DefinitionView.svelte.d.ts +18 -0
  225. package/{src/lib/components → components}/page/Description.svelte +7 -15
  226. package/components/page/Description.svelte.d.ts +14 -0
  227. package/components/page/Edition.svelte +161 -0
  228. package/components/page/Edition.svelte.d.ts +20 -0
  229. package/components/page/EditionLoader.svelte +99 -0
  230. package/components/page/EditionLoader.svelte.d.ts +18 -0
  231. package/{src/lib/components → components}/page/Editions.svelte +18 -22
  232. package/components/page/Editions.svelte.d.ts +14 -0
  233. package/{src/lib/components → components}/page/Glossary.svelte +28 -33
  234. package/components/page/Glossary.svelte.d.ts +14 -0
  235. package/{src/lib/components → components}/page/Header.svelte +52 -59
  236. package/components/page/Header.svelte.d.ts +29 -0
  237. package/{src/lib/components → components}/page/Index.svelte +41 -48
  238. package/components/page/Index.svelte.d.ts +14 -0
  239. package/{src/lib/components → components}/page/Instructions.svelte +1 -2
  240. package/components/page/Instructions.svelte.d.ts +18 -0
  241. package/{src/lib/components → components}/page/License.svelte +9 -17
  242. package/components/page/License.svelte.d.ts +14 -0
  243. package/{src/lib/components → components}/page/Loading.svelte +0 -0
  244. package/components/page/Loading.svelte.d.ts +23 -0
  245. package/{src/lib/components → components}/page/Media.svelte +27 -44
  246. package/components/page/Media.svelte.d.ts +14 -0
  247. package/{src/lib/components → components}/page/MediaPreview.svelte +2 -3
  248. package/components/page/MediaPreview.svelte.d.ts +19 -0
  249. package/{src/lib/components → components}/page/Muted.svelte +0 -0
  250. package/components/page/Muted.svelte.d.ts +27 -0
  251. package/{src/lib/components → components}/page/Outline.svelte +110 -140
  252. package/components/page/Outline.svelte.d.ts +19 -0
  253. package/components/page/Page.svelte +84 -0
  254. package/components/page/Page.svelte.d.ts +19 -0
  255. package/{src/lib/components → components}/page/PageHeader.svelte +1 -2
  256. package/components/page/PageHeader.svelte.d.ts +18 -0
  257. package/{src/lib/components → components}/page/PageParagraph.svelte +0 -0
  258. package/components/page/PageParagraph.svelte.d.ts +27 -0
  259. package/components/page/PossibleChapter.svelte +14 -0
  260. package/components/page/PossibleChapter.svelte.d.ts +14 -0
  261. package/components/page/PossibleReference.svelte +11 -0
  262. package/components/page/PossibleReference.svelte.d.ts +18 -0
  263. package/{src/lib/components → components}/page/Print.svelte +3 -5
  264. package/components/page/Print.svelte.d.ts +14 -0
  265. package/{src/lib/components → components}/page/Publish.svelte +52 -59
  266. package/components/page/Publish.svelte.d.ts +14 -0
  267. package/{src/lib/components → components}/page/Reference.svelte +30 -39
  268. package/components/page/Reference.svelte.d.ts +17 -0
  269. package/{src/lib/components → components}/page/References.svelte +14 -18
  270. package/components/page/References.svelte.d.ts +14 -0
  271. package/{src/lib/components → components}/page/Rows.svelte +0 -0
  272. package/components/page/Rows.svelte.d.ts +27 -0
  273. package/components/page/Search.svelte +133 -0
  274. package/components/page/Search.svelte.d.ts +14 -0
  275. package/{src/lib/components → components}/page/Status.svelte +3 -5
  276. package/components/page/Status.svelte.d.ts +14 -0
  277. package/{src/lib/components → components}/page/SubdomainEditor.svelte +13 -16
  278. package/components/page/SubdomainEditor.svelte.d.ts +14 -0
  279. package/{src/lib/components → components}/page/TableOfContents.svelte +68 -79
  280. package/components/page/TableOfContents.svelte.d.ts +14 -0
  281. package/components/page/TableOfContentsImage.svelte +18 -0
  282. package/components/page/TableOfContentsImage.svelte.d.ts +16 -0
  283. package/{src/lib/components → components}/page/TableOfContentsRow.svelte +24 -34
  284. package/components/page/TableOfContentsRow.svelte.d.ts +24 -0
  285. package/{src/lib/components → components}/page/ThemeEditor.svelte +33 -44
  286. package/components/page/ThemeEditor.svelte.d.ts +14 -0
  287. package/{src/lib/components → components}/page/ThemeEditorPreview.svelte +12 -21
  288. package/components/page/ThemeEditorPreview.svelte.d.ts +17 -0
  289. package/components/page/ThemeSetEditor.svelte +19 -0
  290. package/components/page/ThemeSetEditor.svelte.d.ts +18 -0
  291. package/{src/lib/components → components}/page/ThemeVariableEditor.svelte +14 -18
  292. package/components/page/ThemeVariableEditor.svelte.d.ts +18 -0
  293. package/{src/lib/components → components}/page/Title.svelte +0 -0
  294. package/components/page/Title.svelte.d.ts +27 -0
  295. package/{src/lib/components → components}/page/Unknown.svelte +8 -10
  296. package/components/page/Unknown.svelte.d.ts +16 -0
  297. package/components/page/margins.d.ts +2 -0
  298. package/{src/lib/components/page/margins.ts → components/page/margins.js} +46 -79
  299. package/index.d.ts +15 -0
  300. package/{src/lib/index.js → index.js} +0 -0
  301. package/models/CRUD.d.ts +27 -0
  302. package/models/CRUD.js +262 -0
  303. package/models/Firebase.d.ts +5 -0
  304. package/{src/lib/models/Firebase.ts → models/Firebase.js} +16 -26
  305. package/models/book/Book.d.ts +61 -0
  306. package/models/book/Book.js +135 -0
  307. package/models/book/BookMedia.d.ts +23 -0
  308. package/models/book/BookMedia.js +108 -0
  309. package/models/book/BookSaveStatus.d.ts +7 -0
  310. package/models/book/BookSaveStatus.js +8 -0
  311. package/models/book/Chapter.d.ts +81 -0
  312. package/models/book/Chapter.js +212 -0
  313. package/models/book/ChapterID.d.ts +10 -0
  314. package/{src/lib/models/book/ChapterID.ts → models/book/ChapterID.js} +0 -1
  315. package/models/book/Definition.d.ts +6 -0
  316. package/models/book/Definition.js +1 -0
  317. package/models/book/Edition.d.ts +139 -0
  318. package/models/book/Edition.js +620 -0
  319. package/models/book/Reference.d.ts +24 -0
  320. package/models/book/Reference.js +78 -0
  321. package/models/book/Schema.d.ts +174 -0
  322. package/{src/lib/models/book/Schema.ts → models/book/Schema.js} +0 -1
  323. package/models/book/Theme.d.ts +113 -0
  324. package/{src/lib/models/book/Theme.ts → models/book/Theme.js} +5 -109
  325. package/{src/lib/models/book/ThemeColors.ts → models/book/ThemeColors.d.ts} +0 -6
  326. package/models/book/ThemeColors.js +1 -0
  327. package/models/book/Words.d.ts +2 -0
  328. package/{src/lib/models/book/Words.ts → models/book/Words.js} +0 -1
  329. package/models/chapter/AtomNode.d.ts +18 -0
  330. package/{src/lib/models/chapter/AtomNode.ts → models/chapter/AtomNode.js} +10 -30
  331. package/models/chapter/BlockNode.d.ts +20 -0
  332. package/{src/lib/models/chapter/BlockNode.ts → models/chapter/BlockNode.js} +47 -80
  333. package/models/chapter/BlocksNode.d.ts +50 -0
  334. package/{src/lib/models/chapter/BlocksNode.ts → models/chapter/BlocksNode.js} +359 -571
  335. package/models/chapter/BlocksNode.test.d.ts +1 -0
  336. package/models/chapter/BlocksNode.test.js +568 -0
  337. package/{src/lib/models/chapter/Bookkeeping.ts → models/chapter/Bookkeeping.d.ts} +0 -0
  338. package/models/chapter/Bookkeeping.js +1 -0
  339. package/models/chapter/CalloutNode.d.ts +17 -0
  340. package/models/chapter/CalloutNode.js +58 -0
  341. package/models/chapter/Caret.d.ts +23 -0
  342. package/{src/lib/models/chapter/Caret.ts → models/chapter/Caret.js} +26 -50
  343. package/models/chapter/ChapterNode.d.ts +34 -0
  344. package/models/chapter/ChapterNode.js +117 -0
  345. package/models/chapter/CitationsNode.d.ts +16 -0
  346. package/{src/lib/models/chapter/CitationsNode.ts → models/chapter/CitationsNode.js} +10 -17
  347. package/models/chapter/CodeNode.d.ts +35 -0
  348. package/{src/lib/models/chapter/CodeNode.ts → models/chapter/CodeNode.js} +62 -125
  349. package/models/chapter/CommentNode.d.ts +18 -0
  350. package/models/chapter/CommentNode.js +48 -0
  351. package/models/chapter/DefinitionNode.d.ts +12 -0
  352. package/{src/lib/models/chapter/DefinitionNode.ts → models/chapter/DefinitionNode.js} +8 -14
  353. package/models/chapter/Edit.d.ts +7 -0
  354. package/models/chapter/Edit.js +1 -0
  355. package/models/chapter/EmbedNode.d.ts +45 -0
  356. package/models/chapter/EmbedNode.js +168 -0
  357. package/models/chapter/ErrorNode.d.ts +17 -0
  358. package/{src/lib/models/chapter/ErrorNode.ts → models/chapter/ErrorNode.js} +8 -15
  359. package/models/chapter/FootnoteNode.d.ts +18 -0
  360. package/models/chapter/FootnoteNode.js +47 -0
  361. package/models/chapter/FormatNode.d.ts +60 -0
  362. package/{src/lib/models/chapter/FormatNode.ts → models/chapter/FormatNode.js} +262 -443
  363. package/models/chapter/FormatNode.test.d.ts +1 -0
  364. package/models/chapter/FormatNode.test.js +96 -0
  365. package/models/chapter/InlineCodeNode.d.ts +12 -0
  366. package/{src/lib/models/chapter/InlineCodeNode.ts → models/chapter/InlineCodeNode.js} +9 -17
  367. package/models/chapter/LabelNode.d.ts +17 -0
  368. package/{src/lib/models/chapter/LabelNode.ts → models/chapter/LabelNode.js} +10 -26
  369. package/models/chapter/LinkNode.d.ts +12 -0
  370. package/{src/lib/models/chapter/LinkNode.ts → models/chapter/LinkNode.js} +7 -12
  371. package/models/chapter/ListNode.d.ts +51 -0
  372. package/{src/lib/models/chapter/ListNode.ts → models/chapter/ListNode.js} +200 -277
  373. package/models/chapter/ListNode.test.d.ts +1 -0
  374. package/{src/lib/models/chapter/ListNode.test.ts → models/chapter/ListNode.test.js} +20 -57
  375. package/models/chapter/MetadataNode.d.ts +17 -0
  376. package/models/chapter/MetadataNode.js +32 -0
  377. package/models/chapter/Node.d.ts +38 -0
  378. package/{src/lib/models/chapter/Node.ts → models/chapter/Node.js} +71 -155
  379. package/models/chapter/Node.test.d.ts +1 -0
  380. package/{src/lib/models → models}/chapter/Node.test.js +0 -0
  381. package/models/chapter/ParagraphNode.d.ts +33 -0
  382. package/{src/lib/models/chapter/ParagraphNode.ts → models/chapter/ParagraphNode.js} +58 -95
  383. package/models/chapter/ParagraphNode.test.d.ts +1 -0
  384. package/models/chapter/ParagraphNode.test.js +30 -0
  385. package/models/chapter/Parser.d.ts +75 -0
  386. package/{src/lib/models/chapter/Parser.ts → models/chapter/Parser.js} +184 -369
  387. package/models/chapter/Parser.test.d.ts +1 -0
  388. package/{src/lib/models/chapter/Parser.test.ts → models/chapter/Parser.test.js} +0 -7
  389. package/{src/lib/models/chapter/Position.ts → models/chapter/Position.d.ts} +0 -0
  390. package/models/chapter/Position.js +1 -0
  391. package/models/chapter/QuoteNode.d.ts +25 -0
  392. package/models/chapter/QuoteNode.js +99 -0
  393. package/{src/lib/models/chapter/RootNode.ts → models/chapter/RootNode.d.ts} +0 -2
  394. package/models/chapter/RootNode.js +1 -0
  395. package/models/chapter/RuleNode.d.ts +15 -0
  396. package/{src/lib/models/chapter/RuleNode.ts → models/chapter/RuleNode.js} +6 -9
  397. package/models/chapter/TableNode.d.ts +37 -0
  398. package/{src/lib/models/chapter/TableNode.ts → models/chapter/TableNode.js} +82 -141
  399. package/models/chapter/TableNode.test.d.ts +1 -0
  400. package/{src/lib/models/chapter/TableNode.test.ts → models/chapter/TableNode.test.js} +10 -27
  401. package/models/chapter/TextNode.d.ts +36 -0
  402. package/{src/lib/models/chapter/TextNode.ts → models/chapter/TextNode.js} +65 -117
  403. package/models/chapter/TextNode.test.d.ts +1 -0
  404. package/{src/lib/models/chapter/TextNode.test.ts → models/chapter/TextNode.test.js} +0 -2
  405. package/package.json +270 -53
  406. package/util/getSubdomain.d.ts +3 -0
  407. package/{src/lib/util/getSubdomain.ts → util/getSubdomain.js} +8 -14
  408. package/util/isMobile.d.ts +2 -0
  409. package/{src/lib/util/isMobile.ts → util/isMobile.js} +0 -1
  410. package/util/mineReference.d.ts +4 -0
  411. package/{src/lib/util/mineReference.ts → util/mineReference.js} +25 -45
  412. package/util/scrollToEyeLevel.d.ts +2 -0
  413. package/{src/lib/util/scrollToEyeLevel.ts → util/scrollToEyeLevel.js} +2 -4
  414. package/.env.example +0 -8
  415. package/.firebaserc +0 -8
  416. package/.prettierignore +0 -8
  417. package/.prettierrc.json +0 -5
  418. package/_update-notifier-last-checked +0 -0
  419. package/firebase.json +0 -46
  420. package/firestore.indexes.json +0 -4
  421. package/firestore.rules +0 -59
  422. package/functions/.eslintrc.js +0 -28
  423. package/functions/package-lock.json +0 -12595
  424. package/functions/package.json +0 -43
  425. package/functions/src/index.ts +0 -345
  426. package/functions/tsconfig.dev.json +0 -3
  427. package/functions/tsconfig.json +0 -15
  428. package/scripts/claims.cjs +0 -99
  429. package/src/app.d.ts +0 -9
  430. package/src/app.html +0 -24
  431. package/src/lib/components/Auth.svelte +0 -65
  432. package/src/lib/components/Link.svelte +0 -58
  433. package/src/lib/components/chapter/Block.svelte +0 -42
  434. package/src/lib/components/chapter/ErrorMessage.svelte +0 -12
  435. package/src/lib/components/chapter/Python.svelte +0 -144
  436. package/src/lib/components/chapter/Text.svelte +0 -109
  437. package/src/lib/components/editor/BookishEditor.svelte +0 -1101
  438. package/src/lib/components/editor/CalloutEditor.svelte +0 -14
  439. package/src/lib/components/editor/CaretContext.ts +0 -55
  440. package/src/lib/components/editor/CitationsEditor.svelte +0 -64
  441. package/src/lib/components/editor/ConfirmButton.svelte +0 -51
  442. package/src/lib/components/editor/DefinitionEditor.svelte +0 -44
  443. package/src/lib/components/editor/EmbedEditor.svelte +0 -152
  444. package/src/lib/components/editor/InlineCodeEditor.svelte +0 -16
  445. package/src/lib/components/editor/LinkEditor.svelte +0 -110
  446. package/src/lib/components/editor/PositionEditor.svelte +0 -21
  447. package/src/lib/components/editor/QuoteEditor.svelte +0 -14
  448. package/src/lib/components/editor/TableEditor.svelte +0 -14
  449. package/src/lib/components/editor/Toggle.svelte +0 -47
  450. package/src/lib/components/editor/Toolbar.svelte +0 -297
  451. package/src/lib/components/editor/URLEditor.svelte +0 -15
  452. package/src/lib/components/page/Authors.svelte +0 -92
  453. package/src/lib/components/page/BookLoader.svelte +0 -77
  454. package/src/lib/components/page/BulkReferenceEditor.svelte +0 -86
  455. package/src/lib/components/page/Chapter.svelte +0 -449
  456. package/src/lib/components/page/ChapterContext.ts +0 -13
  457. package/src/lib/components/page/Contexts.ts +0 -176
  458. package/src/lib/components/page/Edition.svelte +0 -189
  459. package/src/lib/components/page/EditionLoader.svelte +0 -123
  460. package/src/lib/components/page/Page.svelte +0 -94
  461. package/src/lib/components/page/PossibleChapter.svelte +0 -16
  462. package/src/lib/components/page/PossibleReference.svelte +0 -14
  463. package/src/lib/components/page/Search.svelte +0 -153
  464. package/src/lib/components/page/TableOfContentsImage.svelte +0 -22
  465. package/src/lib/components/page/ThemeSetEditor.svelte +0 -21
  466. package/src/lib/models/CRUD.ts +0 -469
  467. package/src/lib/models/book/Book.ts +0 -283
  468. package/src/lib/models/book/BookMedia.ts +0 -182
  469. package/src/lib/models/book/BookSaveStatus.ts +0 -8
  470. package/src/lib/models/book/Chapter.ts +0 -462
  471. package/src/lib/models/book/Definition.ts +0 -2
  472. package/src/lib/models/book/Edition.ts +0 -1216
  473. package/src/lib/models/book/Reference.ts +0 -171
  474. package/src/lib/models/chapter/BlocksNode.test.ts +0 -867
  475. package/src/lib/models/chapter/CalloutNode.ts +0 -79
  476. package/src/lib/models/chapter/ChapterNode.ts +0 -169
  477. package/src/lib/models/chapter/CommentNode.ts +0 -61
  478. package/src/lib/models/chapter/Edit.ts +0 -6
  479. package/src/lib/models/chapter/EmbedNode.ts +0 -257
  480. package/src/lib/models/chapter/FootnoteNode.ts +0 -59
  481. package/src/lib/models/chapter/FormatNode.test.ts +0 -137
  482. package/src/lib/models/chapter/MetadataNode.ts +0 -44
  483. package/src/lib/models/chapter/ParagraphNode.test.ts +0 -54
  484. package/src/lib/models/chapter/QuoteNode.ts +0 -135
  485. package/src/params/edition.ts +0 -3
  486. package/src/routes/+error.svelte +0 -12
  487. package/src/routes/+layout.svelte +0 -241
  488. package/src/routes/+page.svelte +0 -43
  489. package/src/routes/Footer.svelte +0 -0
  490. package/src/routes/Header.svelte +0 -112
  491. package/src/routes/[bookid]/+layout.svelte +0 -5
  492. package/src/routes/[bookid]/[[editionid=edition]]/+error.svelte +0 -14
  493. package/src/routes/[bookid]/[[editionid=edition]]/+layout.svelte +0 -7
  494. package/src/routes/[bookid]/[[editionid=edition]]/+page.svelte +0 -5
  495. package/src/routes/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +0 -5
  496. package/src/routes/[bookid]/[[editionid=edition]]/glossary/+page.svelte +0 -5
  497. package/src/routes/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +0 -5
  498. package/src/routes/[bookid]/[[editionid=edition]]/media/+page.svelte +0 -5
  499. package/src/routes/[bookid]/[[editionid=edition]]/print/+page.svelte +0 -5
  500. package/src/routes/[bookid]/[[editionid=edition]]/references/+page.svelte +0 -5
  501. package/src/routes/[bookid]/[[editionid=edition]]/search/+page.svelte +0 -5
  502. package/src/routes/[bookid]/editions/+page.svelte +0 -20
  503. package/src/routes/about/+page.svelte +0 -102
  504. package/src/routes/confirm/+page.svelte +0 -62
  505. package/src/routes/email/+page.svelte +0 -99
  506. package/src/routes/login/+page.svelte +0 -66
  507. package/src/routes/read/+page.svelte +0 -38
  508. package/src/routes/write/+error.svelte +0 -10
  509. package/src/routes/write/+layout.svelte +0 -11
  510. package/src/routes/write/+page.svelte +0 -114
  511. package/src/routes/write/[bookid]/+layout.svelte +0 -5
  512. package/src/routes/write/[bookid]/[[editionid=edition]]/+layout.svelte +0 -7
  513. package/src/routes/write/[bookid]/[[editionid=edition]]/+page.svelte +0 -5
  514. package/src/routes/write/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +0 -5
  515. package/src/routes/write/[bookid]/[[editionid=edition]]/glossary/+page.svelte +0 -5
  516. package/src/routes/write/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +0 -5
  517. package/src/routes/write/[bookid]/[[editionid=edition]]/media/+page.svelte +0 -5
  518. package/src/routes/write/[bookid]/[[editionid=edition]]/print/+page.svelte +0 -5
  519. package/src/routes/write/[bookid]/[[editionid=edition]]/references/+page.svelte +0 -5
  520. package/src/routes/write/[bookid]/[[editionid=edition]]/search/+page.svelte +0 -5
  521. package/src/routes/write/[bookid]/[[editionid=edition]]/theme/+page.svelte +0 -5
  522. package/src/routes/write/[bookid]/[[editionid=edition]]/unknown/+page.svelte +0 -5
  523. package/src/routes/write/[bookid]/editions/+page.svelte +0 -20
  524. package/src/vite-env.d.ts +0 -1
  525. package/static/icons/favicon.png +0 -0
  526. package/static/icons/icon.png +0 -0
  527. package/static/icons/ios-icon.png +0 -0
  528. package/storage.rules +0 -9
  529. package/svelte.config.js +0 -19
  530. package/tsconfig.json +0 -18
  531. package/tsconfig.node.json +0 -9
  532. package/vite.config.ts +0 -8
  533. package/vite.reader.config.ts +0 -32
@@ -1,112 +0,0 @@
1
- <script lang="ts">
2
- import Link from '$lib/components/app/Link.svelte';
3
- import {
4
- getUser,
5
- getBook,
6
- getEdition,
7
- } from '$lib/components/page/Contexts';
8
- import { getCaret } from '$lib/components/page/Contexts';
9
- import Toolbar from '$lib/components/editor/Toolbar.svelte';
10
- import Status from '$lib/components/page/Status.svelte';
11
- import HomeIcon from '$lib/components/editor/icons/home.svg?raw';
12
- import Icon from '$lib/components/editor/Icon.svelte';
13
- import { page } from '$app/stores';
14
-
15
- let auth = getUser();
16
-
17
- let caret = getCaret();
18
- $: edition = getEdition();
19
- $: book = getBook();
20
- </script>
21
-
22
- <section class="header">
23
- <nav class="navigation">
24
- <Link to="/" title="Home"><Icon icon={HomeIcon} /></Link>
25
- {#if $book && $edition}
26
- <span class="elided"
27
- ><Link
28
- to={`${
29
- $page.route.id?.startsWith('/write') ? '/write' : ''
30
- }/${$book.ref.id}`}>{$book.getTitle()}</Link
31
- ></span
32
- >
33
- {#if $page.route.id?.includes('/[bookid]/editions')}
34
- <span>&ndash; Editions</span>
35
- {/if}
36
- <span
37
- >&ndash; <Link
38
- to={`${
39
- $page.route.id?.startsWith('/write') ? '/write' : ''
40
- }/${$book.ref.id}/editions`}
41
- >{$edition.getEditionLabel()} edition</Link
42
- ></span
43
- >
44
- <span class="status">
45
- {#if $auth?.user && $auth.user.email}
46
- <Link to="/email">{$auth.user.email}</Link>
47
- {:else}
48
- <Link to="/login">Login</Link>
49
- {/if}
50
- <Status />
51
- </span>
52
- {:else}
53
- <Link to="/read">Read</Link>
54
- <Link to="/write">Write</Link>
55
- <Link to="/about">About</Link>
56
- <small>
57
- {#if $auth?.user && $auth.user.email}
58
- <Link to="/email">{$auth.user.email}</Link>
59
- {:else}
60
- <Link to="/login">Login</Link>
61
- {/if}
62
- </small>
63
- {/if}
64
- </nav>
65
- {#if $caret}
66
- <Toolbar caret={$caret} />
67
- {/if}
68
- </section>
69
-
70
- <style>
71
- .header {
72
- width: 100%;
73
- box-sizing: border-box;
74
- text-align: center;
75
- position: sticky;
76
- top: 0;
77
- z-index: 3;
78
- padding: var(--app-chrome-padding);
79
- background-color: var(--app-background-color);
80
- border-bottom: var(--app-chrome-border-size) solid
81
- var(--app-border-color);
82
- display: flex;
83
- flex-direction: column;
84
- gap: var(--app-chrome-padding);
85
- }
86
-
87
- .navigation {
88
- display: flex;
89
- flex-direction: row;
90
- justify-content: center;
91
- gap: var(--app-chrome-padding);
92
- text-overflow: ellipsis;
93
- align-items: baseline;
94
- }
95
-
96
- .status {
97
- /* This puts the saved status in the top right and pushes everything else left. */
98
- margin-left: auto;
99
- font-size: 90%;
100
- display: flex;
101
- flex-direction: row;
102
- flex-wrap: nowrap;
103
- gap: var(--app-chrome-padding);
104
- align-items: baseline;
105
- }
106
-
107
- .elided {
108
- overflow-x: clip;
109
- white-space: nowrap;
110
- text-overflow: ellipsis;
111
- }
112
- </style>
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import BookLoader from '$lib/components/page/BookLoader.svelte';
3
- </script>
4
-
5
- <BookLoader><slot /></BookLoader>
@@ -1,14 +0,0 @@
1
- <script lang="ts">
2
- import Feeback from '$lib/components/app/Feedback.svelte';
3
- import Link from '$lib/components/app/Link.svelte';
4
- import Large from '$lib/components/app/Large.svelte';
5
- import Lead from '$lib/components/app/Lead.svelte';
6
- </script>
7
-
8
- <Lead><Large>Oops</Large>...</Lead>
9
-
10
- <Feeback error>
11
- This book doesn't exist. Want to go to your <Link to="/write"
12
- >dashboard</Link
13
- >?
14
- </Feeback>
@@ -1,7 +0,0 @@
1
- <script lang="ts">
2
- import EditionLoader from '$lib/components/page/EditionLoader.svelte';
3
- </script>
4
-
5
- <EditionLoader write={false}>
6
- <slot />
7
- </EditionLoader>
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import TableOfContents from '$lib/components/page/TableOfContents.svelte';
3
- </script>
4
-
5
- <TableOfContents />
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import PossibleChapter from '$lib/components/page/PossibleChapter.svelte';
3
- </script>
4
-
5
- <PossibleChapter />
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import Glossary from '$lib/components/page/Glossary.svelte';
3
- </script>
4
-
5
- <Glossary />
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import Index from '$lib/components/page/Index.svelte';
3
- </script>
4
-
5
- <Index />
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import Media from '$lib/components/page/Media.svelte';
3
- </script>
4
-
5
- <Media />
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import Print from '$lib/components/page/Print.svelte';
3
- </script>
4
-
5
- <Print />
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import References from '$lib/components/page/References.svelte';
3
- </script>
4
-
5
- <References />
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import Search from '$lib/components/page/Search.svelte';
3
- </script>
4
-
5
- <Search />
@@ -1,20 +0,0 @@
1
- <script lang="ts">
2
- import Editions from '$lib/components/page/Editions.svelte';
3
- import { getBook } from '$lib/components/page/Contexts';
4
- import Feedback from '$lib/components/app/Feedback.svelte';
5
- import Section from '$lib/components/app/Section.svelte';
6
- import Lead from '$lib/components/app/Lead.svelte';
7
- import Large from '$lib/components/app/Large.svelte';
8
-
9
- let book = getBook();
10
- </script>
11
-
12
- {#if $book}
13
- <Section>
14
- <Lead><Large>Editions</Large><br />{$book.title}</Lead>
15
-
16
- <Editions />
17
- </Section>
18
- {:else}
19
- <Feedback error>This book couldn't be found.</Feedback>
20
- {/if}
@@ -1,102 +0,0 @@
1
- <script lang="ts">
2
- import Lead from '$lib/components/app/Lead.svelte';
3
- import Large from '$lib/components/app/Large.svelte';
4
- import Paragraph from '$lib/components/app/Paragraph.svelte';
5
- import Link from '$lib/components/app/Link.svelte';
6
- import Section from '$lib/components/app/Section.svelte';
7
- import Head from '$lib/components/app/Head.svelte';
8
- </script>
9
-
10
- <Section>
11
- <Lead><Large>About</Large> Bookish.</Lead>
12
-
13
- <Paragraph>
14
- Bookish is built and maintained by <Link to="http://amyjko.com"
15
- >Amy J. Ko</Link
16
- >, a Professor at the <Link to="https://www.washington.edu/"
17
- >University of Washington</Link
18
- >
19
- <Link to="https://ischool.uw.edu">Information School</Link>. She
20
- originally built Bookish to write web-based books to support her
21
- teaching. She decided to build a platform to make editing and
22
- maintaining books easier for both herself and others. She works on it as
23
- a side project and continues to use it extensively in her classes.
24
- </Paragraph>
25
-
26
- <Head id="beta">Beta</Head>
27
-
28
- <Paragraph
29
- >Bookish is currently in <em>beta</em>. That means there are likely to
30
- be defects, including those that result in loss of content. We'll remove
31
- this label when we're confident that the platform can reliably serve
32
- both readers and writers. See our <Link
33
- to="https://github.com/amyjko/bookish/issues?q=is%3Aissue+is%3Aopen+label%3Adefect"
34
- >list of defects</Link
35
- > to check our progress (and help, if you are able).</Paragraph
36
- >
37
-
38
- <Head id="costs">Costs</Head>
39
-
40
- <Paragraph>
41
- Using Bookish to write books will always be free. However, hosting is
42
- not free and particularly widely read books can incur costs that Amy
43
- can't pay alone. She is considering models for covering bandwidth costs
44
- from reading such per-book fees or donations. If you have ideas, <Link
45
- to="https://github.com/amyjko/bookish/issues/251"
46
- >join the discussion</Link
47
- >.
48
- </Paragraph>
49
-
50
- <Head id="vision">Vision</Head>
51
-
52
- <Paragraph>
53
- As with any publisher, Bookish as an editorial policy and philosophy.
54
- Much like university publishers (e.g., <Link
55
- to="https://mitpress.mit.edu/about/">MIT Press</Link
56
- >), Amy views the mission of Bookish as <em>scholarly</em>: books on the
57
- platform should advance knowledge, educate the public, and be informed
58
- by other scholarly work. However, Bookish is particularly interested in
59
- works that advance progress toward a society that
60
- <em
61
- >radically embraces the beautiful diversity of humanity and nature
62
- and seeks to dismantle systems and ideas that get in the way.</em
63
- > While this definitely includes works broadly explicitly about social justice
64
- toopics such as diversity, equality, equity, inclusion, justice, accessibility,
65
- sustainability, indigienous sovereignty, it also includes works that discuss
66
- more strictly technical ideas in sociotechnical ways.
67
- </Paragraph>
68
-
69
- <Head id="editing">Editing</Head>
70
-
71
- <Paragraph
72
- >For now, anyone can create an account and write books, but publishing
73
- rights are <strong>invitation only</strong>. <Link
74
- to="mailto:amy@amyjko.com">Write Amy</Link
75
- > to arrange a time to discuss your your vision, to ensure it aligns with
76
- our editioral mission. Amy retains the right to revoke publishing rights
77
- and unpublish books that do not align with the vision above; publishing on
78
- the platform is a privilege, not a right.</Paragraph
79
- >
80
-
81
- <Paragraph>
82
- That said, if your vision does not align with ours, you can still use
83
- Bookish to write your book and export a version for hosting elsewhere.
84
- You could even use the Bookish source to host your own press with a
85
- different editorial vision.
86
- </Paragraph>
87
-
88
- <Head id="feedback">Feedback</Head>
89
-
90
- <Paragraph>
91
- Do you have feedback or want to contribute to the plaform? The project
92
- is free and open source <Link to="https://github.com/amyjko/bookish"
93
- >on GitHub</Link
94
- >. Write <Link to="mailto:ajko@uw.edu">Amy</Link> if you'd like to collaborate,
95
- or <Link to="https://github.com/amyjko/bookish/issues"
96
- >submit an issue</Link
97
- > or <Link to="https://github.com/amyjko/bookish/pulls"
98
- >pull request</Link
99
- > directly. Note that this is not a full-time project for Amy, so it will
100
- progress will be leisurely; defects take priority over new features.
101
- </Paragraph>
102
- </Section>
@@ -1,62 +0,0 @@
1
- <script lang="ts">
2
- import { isSignInWithEmailLink, signInWithEmailLink } from 'firebase/auth';
3
- import { onMount } from 'svelte';
4
- import { auth } from '$lib/models/Firebase';
5
- import Link from '$lib/components/Link.svelte';
6
- import { goto } from '$app/navigation';
7
- import Feedback from '$lib/components/app/Feedback.svelte';
8
- import Lead from '$lib/components/app/Lead.svelte';
9
- import Large from '$lib/components/app/Large.svelte';
10
-
11
- let error: string | undefined = undefined;
12
-
13
- const messages: Record<string, string> = {
14
- 'auth/id-token-expired': 'This link expired.',
15
- 'auth/id-token-revoked': "This link isn't valid anymore.",
16
- 'auth/insufficient-permission':
17
- "This email doesn't have permission to create an account.",
18
- 'auth/internal-error': "There's a problem at Google.",
19
- 'auth/invalid-argument': "This link isn't valid.",
20
- 'auth/invalid-email': "This wasn't a valid email.",
21
- };
22
-
23
- onMount(() => {
24
- if (auth && isSignInWithEmailLink(auth, window.location.href)) {
25
- // If this is on the same device and browser, then the email should be in local storage.
26
- let email = window.localStorage.getItem('email');
27
-
28
- // If not, ask the user to confirm it.
29
- if (!email)
30
- email = window.prompt(
31
- 'It appears you opened your login link on a different device or browser. Can you confirm your email?'
32
- );
33
-
34
- // If there's an email, try signing in.
35
- if (email)
36
- signInWithEmailLink(auth, email, window.location.href)
37
- .then(() => {
38
- // Clear email from storage now that the user is logged in.
39
- window.localStorage.removeItem('email');
40
-
41
- // Navigate to the home page.
42
- goto('/write');
43
- })
44
- .catch((err: { code: string }) => {
45
- error =
46
- messages[err.code] ??
47
- 'There was a problem logging you in.';
48
- });
49
- // Otherwise, give some feedback.
50
- else error = "Can't log in without an email address.";
51
- }
52
- // GIve some feedback if the email link isn't valid.
53
- else error = "This isn't a valid login link.";
54
- });
55
- </script>
56
-
57
- <Lead><Large>Logging</Large> in…</Lead>
58
- {#if error}
59
- <Feedback error>{error} <Link to="/login">Try again?</Link></Feedback>
60
- {:else}
61
- <Feedback>Redirecting...</Feedback>
62
- {/if}
@@ -1,99 +0,0 @@
1
- <script lang="ts">
2
- import { updateEmail } from 'firebase/auth';
3
- import { getUser } from '../../lib/components/page/Contexts';
4
- import Feedback from '$lib/components/app/Feedback.svelte';
5
- import Button from '../../lib/components/app/Button.svelte';
6
- import Lead from '../../lib/components/app/Lead.svelte';
7
- import Large from '../../lib/components/app/Large.svelte';
8
- import Paragraph from '../../lib/components/app/Paragraph.svelte';
9
- import TextInput from '../../lib/components/app/TextInput.svelte';
10
- import { goto } from '$app/navigation';
11
-
12
- let email: string;
13
- let auth = getUser();
14
-
15
- let loading = false;
16
- let feedback = '';
17
- let error = '';
18
- let changed = false;
19
-
20
- const errors: Record<string, string> = {
21
- 'auth/invalid-mail': "This wasn't a valid email.",
22
- 'auth/email-already-in-use':
23
- 'This email is already associated with an account.',
24
- 'auto/requires-recent-login':
25
- "You haven't logged in recently enough. Log out, log in again, then try again.",
26
- };
27
-
28
- async function handleSubmit() {
29
- if ($auth === undefined) return;
30
-
31
- // Enter loading state, try to login and wait for it to complete, and then leave loading state.
32
- if ($auth.user !== null && email) {
33
- // Give some feedback when loading.
34
- loading = true;
35
- const previousEmail = $auth.user.email;
36
- feedback = `Sending email update confirmation to ${previousEmail}...`;
37
- updateEmail($auth.user, email)
38
- .then(() => {
39
- feedback = `Check your original email address, ${previousEmail}, for a confirmation link.`;
40
- changed = true;
41
- })
42
- .catch((error: any) => {
43
- if (typeof error.code === 'string')
44
- error =
45
- errors[error.code] ??
46
- "Couldn't update email for an unknown reason.";
47
- })
48
- .finally(() => {
49
- loading = false;
50
- });
51
- }
52
- }
53
-
54
- // Ask the auth context to logout, and provided an error if it fails.
55
- function handleLogout() {
56
- $auth?.logout();
57
- goto('/login');
58
- }
59
- </script>
60
-
61
- <Lead><Large>You</Large>.</Lead>
62
-
63
- <Paragraph>
64
- To change your login email, type your new email address below.
65
- </Paragraph>
66
-
67
- <Paragraph>
68
- <form on:submit|preventDefault={handleSubmit}>
69
- <TextInput
70
- autocomplete="username"
71
- type="email"
72
- placeholder="email"
73
- bind:text={email}
74
- disabled={loading}
75
- />
76
- <Button
77
- tooltip="submit new email address"
78
- command={handleSubmit}
79
- type="submit"
80
- disabled={loading ||
81
- email == undefined ||
82
- email.length === 0 ||
83
- changed}>update email</Button
84
- >
85
- </form>
86
- </Paragraph>
87
-
88
- <Paragraph>
89
- Or, <Button tooltip="logout of your account" command={handleLogout}
90
- >logout</Button
91
- >
92
- </Paragraph>
93
-
94
- {#if feedback}
95
- <Feedback>{feedback}</Feedback>
96
- {/if}
97
- {#if error}
98
- <Feedback error>{error}</Feedback>
99
- {/if}
@@ -1,66 +0,0 @@
1
- <script lang="ts">
2
- import { getUser } from '$lib/components/page/Contexts';
3
- import Feedback from '$lib/components/app/Feedback.svelte';
4
- import Lead from '$lib/components/app/Lead.svelte';
5
- import Large from '$lib/components/app/Large.svelte';
6
- import Paragraph from '$lib/components/app/Paragraph.svelte';
7
- import TextInput from '$lib/components/app/TextInput.svelte';
8
- import Button from '$lib/components/app/Button.svelte';
9
-
10
- let auth = getUser();
11
-
12
- let email: string = '';
13
- let loading = false;
14
- let feedback = '';
15
- let error = '';
16
-
17
- async function handleSubmit() {
18
- if ($auth === undefined) return;
19
- // Enter loading state, try to login and wait for it to complete, and then leave loading state.
20
- try {
21
- // Give some feedback when loading.
22
- feedback = 'Logging in...';
23
- loading = true;
24
- await $auth.login(email);
25
- feedback = 'Check your email for a login link.';
26
- } catch (err) {
27
- feedback = '';
28
- error = "Couldn't connect to the server.";
29
- } finally {
30
- loading = false;
31
- }
32
- }
33
- </script>
34
-
35
- <Lead><Large>Login</Large> to write.</Lead>
36
-
37
- <Paragraph>
38
- We'll send you an email each time to login, no password required.
39
- </Paragraph>
40
-
41
- <form on:submit|preventDefault={handleSubmit}>
42
- <TextInput
43
- bind:text={email}
44
- autocomplete="username"
45
- type="email"
46
- placeholder="email"
47
- disabled={auth === undefined || loading}
48
- />
49
- <Button
50
- tooltip="login into your account"
51
- command={handleSubmit}
52
- type="submit"
53
- disabled={auth === undefined ||
54
- loading ||
55
- !/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(email)}
56
- >
57
- login
58
- </Button>
59
- </form>
60
-
61
- {#if feedback}
62
- <Feedback>{feedback}</Feedback>
63
- {/if}
64
- {#if error}
65
- <Feedback error>{error}</Feedback>
66
- {/if}
@@ -1,38 +0,0 @@
1
- <script lang="ts">
2
- import { listenToPublishedBooks } from '$lib/models/CRUD';
3
- import type Book from '$lib/models/book/Book';
4
- import { onMount } from 'svelte';
5
- import Feedback from '$lib/components/app/Feedback.svelte';
6
- import Lead from '$lib/components/app/Lead.svelte';
7
- import Paragraph from '$lib/components/app/Paragraph.svelte';
8
- import Large from '$lib/components/app/Large.svelte';
9
- import BookList from '$lib/components/app/BookList.svelte';
10
-
11
- let books: Book[] | undefined = undefined;
12
- let error: string | undefined = undefined;
13
-
14
- function updateBooks(latestBooks: Book[]) {
15
- books = latestBooks;
16
- }
17
-
18
- // Get the books when the component loads, stop listening on unmount.
19
- onMount(() => {
20
- try {
21
- return listenToPublishedBooks(updateBooks);
22
- } catch (err) {
23
- error = '' + err;
24
- }
25
- });
26
- </script>
27
-
28
- <Lead><Large>Read</Large> something.</Lead>
29
-
30
- {#if error !== undefined}
31
- <Feedback error>{error}</Feedback>
32
- {:else if books === undefined}
33
- <Feedback>Loading books...</Feedback>
34
- {:else if books.length === 0}
35
- <Paragraph>There are no published books.</Paragraph>
36
- {:else}
37
- <BookList {books} write={false} />
38
- {/if}
@@ -1,10 +0,0 @@
1
- <script lang="ts">
2
- import Feedback from '$lib/components/app/Feedback.svelte';
3
- import Link from '$lib/components/Link.svelte';
4
- </script>
5
-
6
- <Feedback>
7
- This book doesn't exist. Want to go to your <Link to="/write"
8
- >dashboard</Link
9
- >?
10
- </Feedback>
@@ -1,11 +0,0 @@
1
- <script lang="ts">
2
- import { goto } from '$app/navigation';
3
- import { getUser } from '$lib/components/page/Contexts';
4
-
5
- let auth = getUser();
6
-
7
- // Redirect to the login page if not authenticated.
8
- if ($auth === undefined || $auth.user === null) goto('/login');
9
- </script>
10
-
11
- <slot />