bookish-press 0.4.232 → 0.5.0

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 (433) hide show
  1. package/{components → package/components}/Auth.svelte +11 -13
  2. package/{components → package/components}/Auth.svelte.d.ts +0 -0
  3. package/{components → package/components}/Authentication.d.ts +0 -0
  4. package/{components → package/components}/Authentication.js +0 -0
  5. package/{components → package/components}/BookPreview.svelte +13 -17
  6. package/{components → package/components}/BookPreview.svelte.d.ts +0 -0
  7. package/{components → package/components}/Link.svelte +2 -1
  8. package/{components → package/components}/Link.svelte.d.ts +1 -0
  9. package/{components → package/components}/app/BookList.svelte +0 -0
  10. package/{components → package/components}/app/BookList.svelte.d.ts +0 -0
  11. package/{components → package/components}/app/Button.svelte +5 -2
  12. package/{components → package/components}/app/Button.svelte.d.ts +0 -0
  13. package/{components → package/components}/app/Feedback.svelte +4 -9
  14. package/{components → package/components}/app/Feedback.svelte.d.ts +0 -0
  15. package/{components → package/components}/app/Head.svelte +4 -1
  16. package/{components → package/components}/app/Head.svelte.d.ts +6 -15
  17. package/{components → package/components}/app/Large.svelte +0 -0
  18. package/{components → package/components}/app/Large.svelte.d.ts +0 -0
  19. package/{components → package/components}/app/Lead.svelte +0 -0
  20. package/{components → package/components}/app/Lead.svelte.d.ts +0 -0
  21. package/package/components/app/Link.svelte +36 -0
  22. package/{components → package/components}/app/Link.svelte.d.ts +1 -0
  23. package/{components → package/components}/app/Options.svelte +0 -0
  24. package/{components → package/components}/app/Options.svelte.d.ts +0 -0
  25. package/{components → package/components}/app/Paragraph.svelte +1 -0
  26. package/{components → package/components}/app/Paragraph.svelte.d.ts +0 -0
  27. package/{components/app/Writing.svelte → package/components/app/Section.svelte} +0 -1
  28. package/package/components/app/Section.svelte.d.ts +27 -0
  29. package/{components → package/components}/app/Table.svelte +0 -0
  30. package/{components → package/components}/app/Table.svelte.d.ts +0 -0
  31. package/{components → package/components}/app/TextInput.svelte +2 -0
  32. package/{components → package/components}/app/TextInput.svelte.d.ts +0 -0
  33. package/{components → package/components}/chapter/Atom.svelte +1 -8
  34. package/{components → package/components}/chapter/Atom.svelte.d.ts +0 -0
  35. package/{components → package/components}/chapter/Block.svelte +3 -1
  36. package/{components → package/components}/chapter/Block.svelte.d.ts +0 -0
  37. package/{components → package/components}/chapter/Callout.svelte +0 -0
  38. package/{components → package/components}/chapter/Callout.svelte.d.ts +0 -0
  39. package/{components → package/components}/chapter/CaptionedCode.svelte +2 -2
  40. package/{components → package/components}/chapter/CaptionedCode.svelte.d.ts +0 -0
  41. package/{components → package/components}/chapter/ChapterBody.svelte +9 -16
  42. package/{components → package/components}/chapter/ChapterBody.svelte.d.ts +1 -0
  43. package/{components → package/components}/chapter/Citations.svelte +13 -11
  44. package/{components → package/components}/chapter/Citations.svelte.d.ts +0 -0
  45. package/{components → package/components}/chapter/Code.svelte +3 -2
  46. package/{components → package/components}/chapter/Code.svelte.d.ts +0 -0
  47. package/{components → package/components}/chapter/Comment.svelte +7 -13
  48. package/{components → package/components}/chapter/Comment.svelte.d.ts +0 -0
  49. package/{components → package/components}/chapter/Definition.svelte +8 -3
  50. package/{components → package/components}/chapter/Definition.svelte.d.ts +0 -0
  51. package/{components → package/components}/chapter/Embed.svelte +6 -5
  52. package/{components → package/components}/chapter/Embed.svelte.d.ts +1 -0
  53. package/{components → package/components}/chapter/ErrorMessage.svelte +0 -0
  54. package/{components → package/components}/chapter/ErrorMessage.svelte.d.ts +0 -0
  55. package/{components → package/components}/chapter/ExtendedPrism.d.ts +0 -0
  56. package/{components → package/components}/chapter/ExtendedPrism.js +0 -0
  57. package/{components → package/components}/chapter/Figure.svelte +8 -8
  58. package/{components → package/components}/chapter/Figure.svelte.d.ts +0 -0
  59. package/{components → package/components}/chapter/Footnote.svelte +13 -24
  60. package/{components → package/components}/chapter/Footnote.svelte.d.ts +0 -2
  61. package/{components → package/components}/chapter/Format.svelte +5 -4
  62. package/{components → package/components}/chapter/Format.svelte.d.ts +0 -0
  63. package/{components → package/components}/chapter/InlineCode.svelte +2 -2
  64. package/{components → package/components}/chapter/InlineCode.svelte.d.ts +0 -0
  65. package/{components → package/components}/chapter/Label.svelte +5 -7
  66. package/{components → package/components}/chapter/Label.svelte.d.ts +0 -0
  67. package/{components → package/components}/chapter/Link.svelte +8 -6
  68. package/{components → package/components}/chapter/Link.svelte.d.ts +0 -0
  69. package/{components → package/components}/chapter/List.svelte +5 -0
  70. package/{components → package/components}/chapter/List.svelte.d.ts +0 -0
  71. package/{components → package/components}/chapter/Marginal.svelte +30 -12
  72. package/{components → package/components}/chapter/Marginal.svelte.d.ts +0 -0
  73. package/{components → package/components}/chapter/Paragraph.svelte +23 -10
  74. package/{components → package/components}/chapter/Paragraph.svelte.d.ts +0 -0
  75. package/{components → package/components}/chapter/Positioned.svelte +0 -0
  76. package/{components → package/components}/chapter/Positioned.svelte.d.ts +0 -0
  77. package/{components → package/components}/chapter/Problem.svelte +0 -0
  78. package/{components → package/components}/chapter/Problem.svelte.d.ts +0 -0
  79. package/{components → package/components}/chapter/Python.svelte +0 -0
  80. package/{components → package/components}/chapter/Python.svelte.d.ts +0 -0
  81. package/{components → package/components}/chapter/Quote.svelte +20 -10
  82. package/{components → package/components}/chapter/Quote.svelte.d.ts +0 -0
  83. package/{components → package/components}/chapter/Rule.svelte +0 -0
  84. package/{components → package/components}/chapter/Rule.svelte.d.ts +0 -0
  85. package/{components → package/components}/chapter/Table.svelte +2 -2
  86. package/{components → package/components}/chapter/Table.svelte.d.ts +0 -0
  87. package/{components → package/components}/chapter/Text.svelte +2 -2
  88. package/{components → package/components}/chapter/Text.svelte.d.ts +0 -0
  89. package/package/components/controls/DarkToggle.svelte +38 -0
  90. package/package/components/controls/DarkToggle.svelte.d.ts +17 -0
  91. package/{components → package/components}/editor/BookishEditor.svelte +57 -32
  92. package/{components → package/components}/editor/BookishEditor.svelte.d.ts +4 -1
  93. package/{components → package/components}/editor/CalloutEditor.svelte +0 -0
  94. package/{components → package/components}/editor/CalloutEditor.svelte.d.ts +0 -0
  95. package/{components → package/components}/editor/CaptionedCodeEditor.svelte +0 -0
  96. package/{components → package/components}/editor/CaptionedCodeEditor.svelte.d.ts +0 -0
  97. package/{components → package/components}/editor/CaretContext.d.ts +0 -0
  98. package/{components → package/components}/editor/CaretContext.js +0 -0
  99. package/{components → package/components}/editor/CaretState.d.ts +0 -0
  100. package/{components → package/components}/editor/CaretState.js +0 -0
  101. package/{components → package/components}/editor/CaretUtilities.d.ts +0 -0
  102. package/{components → package/components}/editor/CaretUtilities.js +0 -0
  103. package/{components → package/components}/editor/CaretView.svelte +4 -2
  104. package/{components → package/components}/editor/CaretView.svelte.d.ts +1 -0
  105. package/{components → package/components}/editor/CitationsEditor.svelte +0 -0
  106. package/{components → package/components}/editor/CitationsEditor.svelte.d.ts +0 -0
  107. package/{components → package/components}/editor/Clipboard.d.ts +0 -0
  108. package/{components → package/components}/editor/Clipboard.js +0 -0
  109. package/{components → package/components}/editor/Command.d.ts +0 -0
  110. package/{components → package/components}/editor/Command.js +0 -0
  111. package/{components → package/components}/editor/Commands.d.ts +0 -0
  112. package/{components → package/components}/editor/Commands.js +0 -0
  113. package/package/components/editor/ConfirmButton.svelte +23 -0
  114. package/{components → package/components}/editor/ConfirmButton.svelte.d.ts +4 -3
  115. package/{components → package/components}/editor/DefinitionEditor.svelte +0 -0
  116. package/{components → package/components}/editor/DefinitionEditor.svelte.d.ts +0 -0
  117. package/{components → package/components}/editor/EmbedEditor.svelte +1 -1
  118. package/{components → package/components}/editor/EmbedEditor.svelte.d.ts +0 -0
  119. package/{components → package/components}/editor/Icon.svelte +0 -0
  120. package/{components → package/components}/editor/Icon.svelte.d.ts +0 -0
  121. package/{components → package/components}/editor/ImageChooser.svelte +0 -0
  122. package/{components → package/components}/editor/ImageChooser.svelte.d.ts +0 -0
  123. package/{components → package/components}/editor/InlineCodeEditor.svelte +0 -0
  124. package/{components → package/components}/editor/InlineCodeEditor.svelte.d.ts +0 -0
  125. package/{components → package/components}/editor/LabelEditor.svelte +0 -0
  126. package/{components → package/components}/editor/LabelEditor.svelte.d.ts +0 -0
  127. package/{components → package/components}/editor/LanguageEditor.svelte +0 -0
  128. package/{components → package/components}/editor/LanguageEditor.svelte.d.ts +0 -0
  129. package/{components → package/components}/editor/LinkEditor.svelte +4 -3
  130. package/{components → package/components}/editor/LinkEditor.svelte.d.ts +0 -0
  131. package/{components → package/components}/editor/Note.svelte +1 -0
  132. package/{components → package/components}/editor/Note.svelte.d.ts +0 -0
  133. package/package/components/editor/Permissions.svelte +93 -0
  134. package/package/components/editor/Permissions.svelte.d.ts +20 -0
  135. package/{components → package/components}/editor/PositionEditor.svelte +0 -0
  136. package/{components → package/components}/editor/PositionEditor.svelte.d.ts +0 -0
  137. package/{components → package/components}/editor/QuoteEditor.svelte +0 -0
  138. package/{components → package/components}/editor/QuoteEditor.svelte.d.ts +0 -0
  139. package/{components → package/components}/editor/Switch.svelte +0 -0
  140. package/{components → package/components}/editor/Switch.svelte.d.ts +0 -0
  141. package/{components → package/components}/editor/TableEditor.svelte +0 -0
  142. package/{components → package/components}/editor/TableEditor.svelte.d.ts +0 -0
  143. package/{components → package/components}/editor/TextEditor.svelte +2 -3
  144. package/{components → package/components}/editor/TextEditor.svelte.d.ts +0 -0
  145. package/{components → package/components}/editor/Toggle.svelte +0 -0
  146. package/{components → package/components}/editor/Toggle.svelte.d.ts +0 -0
  147. package/{components → package/components}/editor/Toolbar.svelte +8 -3
  148. package/{components → package/components}/editor/Toolbar.svelte.d.ts +0 -0
  149. package/{components → package/components}/editor/ToolbarGroup.svelte +0 -1
  150. package/{components → package/components}/editor/ToolbarGroup.svelte.d.ts +0 -0
  151. package/{components → package/components}/editor/ToolbarSpacer.svelte +0 -0
  152. package/{components → package/components}/editor/ToolbarSpacer.svelte.d.ts +0 -0
  153. package/{components → package/components}/editor/URLEditor.svelte +2 -0
  154. package/{components → package/components}/editor/URLEditor.svelte.d.ts +0 -0
  155. package/{components → package/components}/editor/UndoState.d.ts +0 -0
  156. package/{components → package/components}/editor/UndoState.js +0 -0
  157. package/{components → package/components}/editor/icons/annotate.svg +0 -0
  158. package/{components → package/components}/editor/icons/block.svg +0 -0
  159. package/{components → package/components}/editor/icons/bold.svg +0 -0
  160. package/{components → package/components}/editor/icons/bullets.svg +0 -0
  161. package/{components → package/components}/editor/icons/callout.svg +0 -0
  162. package/{components → package/components}/editor/icons/citation.svg +0 -0
  163. package/{components → package/components}/editor/icons/clear.svg +0 -0
  164. package/{components → package/components}/editor/icons/clipboard.svg +0 -0
  165. package/{components → package/components}/editor/icons/code.svg +0 -0
  166. package/{components → package/components}/editor/icons/columnafter.svg +0 -0
  167. package/{components → package/components}/editor/icons/columnbefore.svg +0 -0
  168. package/{components → package/components}/editor/icons/comment.svg +0 -0
  169. package/{components → package/components}/editor/icons/copy.svg +0 -0
  170. package/{components → package/components}/editor/icons/cut.svg +0 -0
  171. package/{components → package/components}/editor/icons/define.svg +0 -0
  172. package/{components → package/components}/editor/icons/deletecolumn.svg +0 -0
  173. package/{components → package/components}/editor/icons/deleterow.svg +0 -0
  174. package/{components → package/components}/editor/icons/footnote.svg +0 -0
  175. package/{components → package/components}/editor/icons/header1.svg +0 -0
  176. package/{components → package/components}/editor/icons/header2.svg +0 -0
  177. package/{components → package/components}/editor/icons/header3.svg +0 -0
  178. package/{components → package/components}/editor/icons/home.svg +0 -0
  179. package/{components → package/components}/editor/icons/indent.svg +0 -0
  180. package/{components → package/components}/editor/icons/italic.svg +0 -0
  181. package/{components → package/components}/editor/icons/label.svg +0 -0
  182. package/{components → package/components}/editor/icons/left.svg +0 -0
  183. package/{components → package/components}/editor/icons/level.svg +0 -0
  184. package/{components → package/components}/editor/icons/link.svg +0 -0
  185. package/{components → package/components}/editor/icons/list.svg +0 -0
  186. package/{components → package/components}/editor/icons/media.svg +0 -0
  187. package/{components → package/components}/editor/icons/middle.svg +0 -0
  188. package/{components → package/components}/editor/icons/numbers.svg +0 -0
  189. package/{components → package/components}/editor/icons/paragraph.svg +0 -0
  190. package/{components → package/components}/editor/icons/paste.svg +0 -0
  191. package/{components → package/components}/editor/icons/quote.svg +0 -0
  192. package/{components → package/components}/editor/icons/redo.svg +0 -0
  193. package/{components → package/components}/editor/icons/right.svg +0 -0
  194. package/{components → package/components}/editor/icons/rowabove.svg +0 -0
  195. package/{components → package/components}/editor/icons/rowbelow.svg +0 -0
  196. package/{components → package/components}/editor/icons/rule.svg +0 -0
  197. package/{components → package/components}/editor/icons/sub.svg +0 -0
  198. package/{components → package/components}/editor/icons/super.svg +0 -0
  199. package/{components → package/components}/editor/icons/table.svg +0 -0
  200. package/{components → package/components}/editor/icons/text.svg +0 -0
  201. package/{components → package/components}/editor/icons/time.svg +0 -0
  202. package/{components → package/components}/editor/icons/undo.svg +0 -0
  203. package/{components → package/components}/editor/icons/unindent.svg +0 -0
  204. package/{components → package/components}/editor/icons/unlink.svg +0 -0
  205. package/{components → package/components}/page/Acknowledgements.svelte +13 -11
  206. package/{components → package/components}/page/Acknowledgements.svelte.d.ts +0 -0
  207. package/package/components/page/Authors.svelte +86 -0
  208. package/{components → package/components}/page/Authors.svelte.d.ts +1 -0
  209. package/package/components/page/BookLoader.svelte +59 -0
  210. package/package/components/page/BookLoader.svelte.d.ts +16 -0
  211. package/{components → package/components}/page/BulkReferenceEditor.svelte +8 -8
  212. package/{components → package/components}/page/BulkReferenceEditor.svelte.d.ts +0 -0
  213. package/{components → package/components}/page/Chapter.svelte +69 -30
  214. package/{components → package/components}/page/Chapter.svelte.d.ts +0 -0
  215. package/{components → package/components}/page/ChapterContext.d.ts +0 -0
  216. package/{components → package/components}/page/ChapterContext.js +0 -0
  217. package/{components → package/components}/page/ChapterNumber.svelte +0 -0
  218. package/{components → package/components}/page/ChapterNumber.svelte.d.ts +0 -0
  219. package/{components → package/components}/page/ChapterTitle.svelte +0 -0
  220. package/{components → package/components}/page/ChapterTitle.svelte.d.ts +0 -0
  221. package/{components → package/components}/page/Contexts.d.ts +21 -5
  222. package/package/components/page/Contexts.js +144 -0
  223. package/{components → package/components}/page/DefinitionView.svelte +23 -14
  224. package/{components → package/components}/page/DefinitionView.svelte.d.ts +0 -0
  225. package/{components → package/components}/page/Description.svelte +12 -9
  226. package/{components → package/components}/page/Description.svelte.d.ts +0 -0
  227. package/{components → package/components}/page/Edition.svelte +9 -23
  228. package/{components → package/components}/page/Edition.svelte.d.ts +1 -2
  229. package/package/components/page/EditionLoader.svelte +99 -0
  230. package/package/components/page/EditionLoader.svelte.d.ts +18 -0
  231. package/package/components/page/Editions.svelte +109 -0
  232. package/{components → package/components}/page/Editions.svelte.d.ts +3 -1
  233. package/{components → package/components}/page/Glossary.svelte +13 -6
  234. package/{components → package/components}/page/Glossary.svelte.d.ts +0 -0
  235. package/{components → package/components}/page/Header.svelte +26 -21
  236. package/{components → package/components}/page/Header.svelte.d.ts +2 -0
  237. package/{components → package/components}/page/Index.svelte +14 -8
  238. package/{components → package/components}/page/Index.svelte.d.ts +0 -0
  239. package/{components → package/components}/page/Instructions.svelte +1 -2
  240. package/{components → package/components}/page/Instructions.svelte.d.ts +3 -1
  241. package/package/components/page/License.svelte +45 -0
  242. package/{components → package/components}/page/License.svelte.d.ts +0 -0
  243. package/{components → package/components}/page/Loading.svelte +0 -0
  244. package/{components → package/components}/page/Loading.svelte.d.ts +0 -0
  245. package/{components → package/components}/page/Media.svelte +40 -36
  246. package/{components → package/components}/page/Media.svelte.d.ts +0 -0
  247. package/package/components/page/MediaPreview.svelte +55 -0
  248. package/{components → package/components}/page/MediaPreview.svelte.d.ts +0 -0
  249. package/{components → package/components}/page/Muted.svelte +0 -0
  250. package/{components → package/components}/page/Muted.svelte.d.ts +0 -0
  251. package/{components → package/components}/page/Outline.svelte +69 -96
  252. package/{components → package/components}/page/Outline.svelte.d.ts +0 -0
  253. package/{components → package/components}/page/Page.svelte +4 -4
  254. package/{components → package/components}/page/Page.svelte.d.ts +0 -0
  255. package/{components → package/components}/page/PageHeader.svelte +5 -0
  256. package/{components → package/components}/page/PageHeader.svelte.d.ts +0 -0
  257. package/{components → package/components}/page/PageParagraph.svelte +0 -0
  258. package/{components → package/components}/page/PageParagraph.svelte.d.ts +0 -0
  259. package/{components → package/components}/page/PossibleChapter.svelte +0 -0
  260. package/{components → package/components}/page/PossibleChapter.svelte.d.ts +0 -0
  261. package/{components → package/components}/page/PossibleReference.svelte +2 -1
  262. package/{components → package/components}/page/PossibleReference.svelte.d.ts +1 -0
  263. package/{components → package/components}/page/Print.svelte +0 -0
  264. package/{components → package/components}/page/Print.svelte.d.ts +0 -0
  265. package/package/components/page/Publish.svelte +135 -0
  266. package/package/components/page/Publish.svelte.d.ts +14 -0
  267. package/{components → package/components}/page/Reference.svelte +54 -51
  268. package/{components → package/components}/page/Reference.svelte.d.ts +1 -0
  269. package/{components → package/components}/page/References.svelte +9 -4
  270. package/{components → package/components}/page/References.svelte.d.ts +0 -0
  271. package/{components → package/components}/page/Rows.svelte +0 -0
  272. package/{components → package/components}/page/Rows.svelte.d.ts +0 -0
  273. package/{components → package/components}/page/Search.svelte +27 -10
  274. package/{components → package/components}/page/Search.svelte.d.ts +0 -0
  275. package/package/components/page/Status.svelte +58 -0
  276. package/{components → package/components}/page/Status.svelte.d.ts +0 -0
  277. package/{components → package/components}/page/SubdomainEditor.svelte +5 -3
  278. package/{components → package/components}/page/SubdomainEditor.svelte.d.ts +0 -0
  279. package/{components → package/components}/page/TableOfContents.svelte +83 -37
  280. package/{components → package/components}/page/TableOfContents.svelte.d.ts +0 -0
  281. package/package/components/page/TableOfContentsImage.svelte +27 -0
  282. package/{components → package/components}/page/TableOfContentsImage.svelte.d.ts +1 -0
  283. package/{components → package/components}/page/TableOfContentsRow.svelte +11 -12
  284. package/{components → package/components}/page/TableOfContentsRow.svelte.d.ts +0 -0
  285. package/{components → package/components}/page/ThemeEditor.svelte +12 -10
  286. package/{components → package/components}/page/ThemeEditor.svelte.d.ts +0 -0
  287. package/{components → package/components}/page/ThemeEditorPreview.svelte +0 -0
  288. package/{components → package/components}/page/ThemeEditorPreview.svelte.d.ts +0 -0
  289. package/{components → package/components}/page/ThemeSetEditor.svelte +0 -0
  290. package/{components → package/components}/page/ThemeSetEditor.svelte.d.ts +0 -0
  291. package/{components → package/components}/page/ThemeVariableEditor.svelte +0 -0
  292. package/{components → package/components}/page/ThemeVariableEditor.svelte.d.ts +0 -0
  293. package/{components → package/components}/page/Title.svelte +0 -0
  294. package/{components → package/components}/page/Title.svelte.d.ts +0 -0
  295. package/{components → package/components}/page/Unknown.svelte +5 -2
  296. package/{components → package/components}/page/Unknown.svelte.d.ts +0 -0
  297. package/{components → package/components}/page/margins.d.ts +0 -0
  298. package/{components → package/components}/page/margins.js +0 -0
  299. package/{index.d.ts → package/index.d.ts} +3 -1
  300. package/{index.js → package/index.js} +3 -1
  301. package/package/models/CRUD.d.ts +28 -0
  302. package/package/models/CRUD.js +263 -0
  303. package/{models → package/models}/Firebase.d.ts +0 -0
  304. package/package/models/Firebase.js +36 -0
  305. package/{models → package/models}/book/Book.d.ts +23 -18
  306. package/package/models/book/Book.js +135 -0
  307. package/{models → package/models}/book/BookMedia.d.ts +1 -1
  308. package/{models → package/models}/book/BookMedia.js +9 -10
  309. package/{models → package/models}/book/BookSaveStatus.d.ts +0 -0
  310. package/{models → package/models}/book/BookSaveStatus.js +0 -0
  311. package/{models → package/models}/book/Chapter.d.ts +5 -1
  312. package/{models → package/models}/book/Chapter.js +24 -15
  313. package/{models → package/models}/book/ChapterID.d.ts +0 -0
  314. package/{models → package/models}/book/ChapterID.js +0 -0
  315. package/{models → package/models}/book/Definition.d.ts +0 -0
  316. package/{models → package/models}/book/Definition.js +0 -0
  317. package/{models → package/models}/book/Edition.d.ts +33 -7
  318. package/{models → package/models}/book/Edition.js +104 -32
  319. package/{models → package/models}/book/Reference.d.ts +0 -0
  320. package/{models → package/models}/book/Reference.js +0 -0
  321. package/{models → package/models}/book/Schema.d.ts +20 -15
  322. package/{models → package/models}/book/Schema.js +17 -16
  323. package/{models → package/models}/book/Theme.d.ts +0 -0
  324. package/{models → package/models}/book/Theme.js +7 -6
  325. package/{models → package/models}/book/ThemeColors.d.ts +0 -0
  326. package/{models → package/models}/book/ThemeColors.js +0 -0
  327. package/{models → package/models}/book/Words.d.ts +0 -0
  328. package/{models → package/models}/book/Words.js +0 -0
  329. package/{models → package/models}/chapter/AtomNode.d.ts +0 -0
  330. package/{models → package/models}/chapter/AtomNode.js +0 -0
  331. package/{models → package/models}/chapter/BlockNode.d.ts +0 -0
  332. package/{models → package/models}/chapter/BlockNode.js +0 -0
  333. package/{models → package/models}/chapter/BlocksNode.d.ts +0 -0
  334. package/{models → package/models}/chapter/BlocksNode.js +0 -0
  335. package/{models → package/models}/chapter/BlocksNode.test.d.ts +0 -0
  336. package/{models → package/models}/chapter/BlocksNode.test.js +0 -0
  337. package/{models → package/models}/chapter/Bookkeeping.d.ts +0 -0
  338. package/{models → package/models}/chapter/Bookkeeping.js +0 -0
  339. package/{models → package/models}/chapter/CalloutNode.d.ts +0 -0
  340. package/{models → package/models}/chapter/CalloutNode.js +0 -0
  341. package/{models → package/models}/chapter/Caret.d.ts +0 -0
  342. package/{models → package/models}/chapter/Caret.js +0 -0
  343. package/{models → package/models}/chapter/ChapterNode.d.ts +0 -0
  344. package/{models → package/models}/chapter/ChapterNode.js +0 -0
  345. package/{models → package/models}/chapter/CitationsNode.d.ts +0 -0
  346. package/{models → package/models}/chapter/CitationsNode.js +0 -0
  347. package/{models → package/models}/chapter/CodeNode.d.ts +0 -0
  348. package/{models → package/models}/chapter/CodeNode.js +0 -0
  349. package/{models → package/models}/chapter/CommentNode.d.ts +0 -0
  350. package/{models → package/models}/chapter/CommentNode.js +13 -3
  351. package/{models → package/models}/chapter/DefinitionNode.d.ts +0 -0
  352. package/{models → package/models}/chapter/DefinitionNode.js +0 -0
  353. package/{models → package/models}/chapter/Edit.d.ts +0 -0
  354. package/{models → package/models}/chapter/Edit.js +0 -0
  355. package/{models → package/models}/chapter/EmbedNode.d.ts +1 -0
  356. package/{models → package/models}/chapter/EmbedNode.js +6 -0
  357. package/{models → package/models}/chapter/ErrorNode.d.ts +0 -0
  358. package/{models → package/models}/chapter/ErrorNode.js +0 -0
  359. package/{models → package/models}/chapter/FootnoteNode.d.ts +0 -0
  360. package/{models → package/models}/chapter/FootnoteNode.js +0 -0
  361. package/{models → package/models}/chapter/FormatNode.d.ts +0 -0
  362. package/{models → package/models}/chapter/FormatNode.js +1 -6
  363. package/{models → package/models}/chapter/FormatNode.test.d.ts +0 -0
  364. package/{models → package/models}/chapter/FormatNode.test.js +0 -0
  365. package/{models → package/models}/chapter/InlineCodeNode.d.ts +0 -0
  366. package/{models → package/models}/chapter/InlineCodeNode.js +0 -0
  367. package/{models → package/models}/chapter/LabelNode.d.ts +0 -0
  368. package/{models → package/models}/chapter/LabelNode.js +0 -0
  369. package/{models → package/models}/chapter/LinkNode.d.ts +0 -0
  370. package/{models → package/models}/chapter/LinkNode.js +0 -0
  371. package/{models → package/models}/chapter/ListNode.d.ts +0 -0
  372. package/{models → package/models}/chapter/ListNode.js +0 -0
  373. package/{models → package/models}/chapter/ListNode.test.d.ts +0 -0
  374. package/{models → package/models}/chapter/ListNode.test.js +0 -0
  375. package/{models → package/models}/chapter/MetadataNode.d.ts +0 -0
  376. package/{models → package/models}/chapter/MetadataNode.js +0 -0
  377. package/{models → package/models}/chapter/Node.d.ts +0 -0
  378. package/{models → package/models}/chapter/Node.js +0 -0
  379. package/{models → package/models}/chapter/Node.test.d.ts +0 -0
  380. package/{models → package/models}/chapter/Node.test.js +0 -0
  381. package/{models → package/models}/chapter/ParagraphNode.d.ts +0 -0
  382. package/{models → package/models}/chapter/ParagraphNode.js +0 -0
  383. package/{models → package/models}/chapter/ParagraphNode.test.d.ts +0 -0
  384. package/{models → package/models}/chapter/ParagraphNode.test.js +0 -0
  385. package/{models → package/models}/chapter/Parser.d.ts +2 -2
  386. package/{models → package/models}/chapter/Parser.js +26 -24
  387. package/{models → package/models}/chapter/Parser.test.d.ts +0 -0
  388. package/{models → package/models}/chapter/Parser.test.js +0 -0
  389. package/{models → package/models}/chapter/Position.d.ts +0 -0
  390. package/{models → package/models}/chapter/Position.js +0 -0
  391. package/{models → package/models}/chapter/QuoteNode.d.ts +0 -0
  392. package/{models → package/models}/chapter/QuoteNode.js +0 -0
  393. package/{models → package/models}/chapter/RootNode.d.ts +0 -0
  394. package/{models → package/models}/chapter/RootNode.js +0 -0
  395. package/{models → package/models}/chapter/RuleNode.d.ts +0 -0
  396. package/{models → package/models}/chapter/RuleNode.js +0 -0
  397. package/{models → package/models}/chapter/TableNode.d.ts +0 -0
  398. package/{models → package/models}/chapter/TableNode.js +0 -0
  399. package/{models → package/models}/chapter/TableNode.test.d.ts +0 -0
  400. package/{models → package/models}/chapter/TableNode.test.js +0 -0
  401. package/{models → package/models}/chapter/TextNode.d.ts +0 -0
  402. package/{models → package/models}/chapter/TextNode.js +0 -0
  403. package/{models → package/models}/chapter/TextNode.test.d.ts +0 -0
  404. package/{models → package/models}/chapter/TextNode.test.js +0 -0
  405. package/package/util/dark.d.ts +2 -0
  406. package/package/util/dark.js +16 -0
  407. package/{util → package/util}/getSubdomain.d.ts +0 -0
  408. package/{util → package/util}/getSubdomain.js +0 -0
  409. package/{util → package/util}/isMobile.d.ts +0 -0
  410. package/{util → package/util}/isMobile.js +0 -0
  411. package/{util → package/util}/mineReference.d.ts +0 -0
  412. package/{util → package/util}/mineReference.js +0 -0
  413. package/{util → package/util}/scrollToEyeLevel.d.ts +0 -0
  414. package/{util → package/util}/scrollToEyeLevel.js +0 -0
  415. package/package.json +955 -267
  416. package/components/External.svelte +0 -4
  417. package/components/External.svelte.d.ts +0 -18
  418. package/components/app/Link.svelte +0 -24
  419. package/components/app/Writing.svelte.d.ts +0 -27
  420. package/components/editor/ConfirmButton.svelte +0 -49
  421. package/components/page/Authors.svelte +0 -82
  422. package/components/page/Contexts.js +0 -51
  423. package/components/page/Editions.svelte +0 -158
  424. package/components/page/License.svelte +0 -37
  425. package/components/page/MediaPreview.svelte +0 -29
  426. package/components/page/Status.svelte +0 -57
  427. package/components/page/TableOfContentsImage.svelte +0 -15
  428. package/models/CRUD.d.ts +0 -17
  429. package/models/CRUD.js +0 -207
  430. package/models/Firebase.js +0 -32
  431. package/models/book/Book.js +0 -142
  432. package/models/loadEdition.d.ts +0 -5
  433. package/models/loadEdition.js +0 -20
@@ -10,19 +10,25 @@ import SubdomainEditor from './SubdomainEditor.svelte';
10
10
  import Description from './Description.svelte';
11
11
  import Acknowledgements from './Acknowledgements.svelte';
12
12
  import License from './License.svelte';
13
- import Revisions from './Editions.svelte';
14
13
  import Authors from './Authors.svelte';
15
14
  import TextEditor from '../editor/TextEditor.svelte';
16
15
  import Toggle from '../editor/Toggle.svelte';
17
- import { getBase, getEdition, isEditable, setChapter } from './Contexts';
16
+ import { getUser, getBase, getBook, getEdition, isBookEditable, isEditionEditable, isEditionPartiallyEditable, setChapter, } from './Contexts';
18
17
  import Muted from './Muted.svelte';
19
18
  import Button from '../app/Button.svelte';
20
19
  import PageHeader from './PageHeader.svelte';
21
20
  import Rows from './Rows.svelte';
22
21
  import PageParagraph from './PageParagraph.svelte';
22
+ import Note from '../editor/Note.svelte';
23
+ import Permissions from '../editor/Permissions.svelte';
24
+ import Publish from './Publish.svelte';
25
+ import { onMount } from 'svelte';
26
+ import Editions from './Editions.svelte';
27
+ let auth = getUser();
28
+ let book = getBook();
23
29
  let edition = getEdition();
24
30
  let base = getBase();
25
- let editable = isEditable();
31
+ let editable = isEditionEditable();
26
32
  function getProgressDescription(progress) {
27
33
  if (progress === null)
28
34
  return '';
@@ -57,11 +63,17 @@ function addChapter() {
57
63
  if ($edition)
58
64
  edition.set($edition.withNewChapter());
59
65
  }
66
+ /** Doing this on mount allows for prerendering an an update. */
67
+ let bookURL = '…';
68
+ onMount(() => {
69
+ bookURL = location.protocol + '//' + location.host + location.pathname;
70
+ });
60
71
  </script>
61
72
 
62
73
  {#if $edition}
63
74
  <Page title={$edition.getTitle()}>
64
75
  <Header
76
+ editable={isEditionEditable()}
65
77
  label="Book title"
66
78
  getImage={() => $edition?.getImage('cover') ?? null}
67
79
  setImage={(embed) =>
@@ -69,6 +81,7 @@ function addChapter() {
69
81
  ? edition.set($edition.withImage('cover', embed))
70
82
  : undefined}
71
83
  header={title}
84
+ id="toc"
72
85
  {subtitle}
73
86
  tags={$edition.getTags()}
74
87
  save={(text) =>
@@ -84,36 +97,41 @@ function addChapter() {
84
97
  previous={null}
85
98
  next={$edition.getNextChapterID('')}
86
99
  />
87
- <Authors
88
- slot="after"
89
- authors={$edition.getAuthors()}
90
- add={() =>
91
- $edition ? edition.set($edition.withAuthor('')) : undefined}
92
- edit={(index, text) =>
93
- $edition
94
- ? edition.set($edition.withAuthorName(index, text))
95
- : undefined}
96
- remove={(index) =>
97
- $edition
98
- ? edition.set($edition.withoutAuthor(index))
99
- : undefined}
100
- />
100
+ <div slot="after">
101
+ <Authors
102
+ editable={isBookEditable()}
103
+ authors={$edition.getAuthors()}
104
+ add={() =>
105
+ $edition
106
+ ? edition.set($edition.withAuthor(''))
107
+ : undefined}
108
+ edit={(index, text) =>
109
+ $edition
110
+ ? edition.set($edition.withAuthorName(index, text))
111
+ : undefined}
112
+ remove={(index) =>
113
+ $edition
114
+ ? edition.set($edition.withoutAuthor(index))
115
+ : undefined}
116
+ />
117
+ <Note>{$edition.getEditionLabel()} edition</Note>
118
+ </div>
101
119
  </Header>
102
120
 
103
- <Instructions>
104
- Above you can edit your book's authors, title, and cover image.
121
+ <Instructions {editable}>
122
+ Edit this book's cover image, ID, title, and authors above. The book
123
+ ID appears in the book's URL (e.g., bookish.press/<em>bookid</em>).
105
124
  </Instructions>
106
125
 
107
126
  <Description />
108
127
 
109
- <Instructions>
110
- This will appear on the <Link to={$base + 'read'}
111
- >book browsing</Link
112
- > page and in your table of contents. Write an informative description
128
+ <Instructions {editable}>
129
+ This will appear on the <Link to="{$base}/read">book browsing</Link>
130
+ page and in your table of contents. Write an informative description
113
131
  of what your book is about.
114
132
  </Instructions>
115
133
 
116
- <Instructions>
134
+ <Instructions {editable}>
117
135
  Add, remove, and reorder chapters here. You can add optional book
118
136
  sections to each chapter, toggle chapters as numbered/unnumbered or
119
137
  published/forthcoming. Click the title to edit the chapter.
@@ -160,7 +178,7 @@ function addChapter() {
160
178
  <TextEditor
161
179
  label={'Chapter section editor'}
162
180
  text={section ? section : ''}
163
- placeholder="Section"
181
+ placeholder="section"
164
182
  valid={() => undefined}
165
183
  save={(text) =>
166
184
  setChapter(
@@ -170,6 +188,9 @@ function addChapter() {
170
188
  )}
171
189
  />
172
190
  {:else if section}{section}{/if}
191
+ {#if !editable && $auth !== undefined && $auth.user !== null && chapter.uids.includes($auth.user.uid)}
192
+ You can edit this chapter.
193
+ {/if}
173
194
  </span>
174
195
  <span slot="etc">
175
196
  <Muted>
@@ -233,22 +254,21 @@ function addChapter() {
233
254
 
234
255
  <PageHeader id="print">Print</PageHeader>
235
256
 
236
- <Instructions>
237
- This offers a way for readers to print the entire book as a single
238
- page.
257
+ <Instructions {editable}>
258
+ This link will generate the entire book on a single page, suitable
259
+ for printing.
239
260
  </Instructions>
240
261
 
241
262
  <PageParagraph>
242
263
  Want to print this book or generate a PDF? See <Link
243
- to={$base + 'print'}>all chapters on a single page</Link
264
+ to="{$base}/print">all chapters on a single page</Link
244
265
  > and then print or export. Long books can take some time to render.
245
266
  </PageParagraph>
246
267
 
247
268
  <PageHeader id="citation">Citation</PageHeader>
248
269
 
249
- <Instructions>
250
- This citation is dynamically created from the current authors,
251
- title, and date.
270
+ <Instructions {editable}>
271
+ This citation is created from the current authors, title, and date.
252
272
  </Instructions>
253
273
 
254
274
  <!-- Book citation -->
@@ -257,13 +277,39 @@ function addChapter() {
257
277
  .getAuthors()
258
278
  .map((author) => Parser.parseFormat($edition, author).toText())
259
279
  .join(', ')} ({new Date().getFullYear()}).
260
- <em>{$edition.getTitle()}</em>. {location.protocol +
261
- '//' +
262
- location.host +
263
- location.pathname},
280
+ <em>{$edition.getTitle()}</em>. {bookURL},
264
281
  <em>retrieved {new Date().toLocaleDateString('en-US')}</em>.
265
282
  </PageParagraph>
266
283
 
267
- <Revisions />
284
+ {#if editable}
285
+ <PageHeader id="publish">Publish</PageHeader>
286
+ <Publish />
287
+ {/if}
288
+
289
+ {#if $book}
290
+ <PageHeader id="editions">Editions</PageHeader>
291
+ <Editions editors={false} />
292
+ {/if}
293
+
294
+ {#if $book && (editable || isEditionPartiallyEditable())}
295
+ <PageHeader>Editors</PageHeader>
296
+ <Instructions {editable}>
297
+ These authors can edit this edition and its chapters. To give
298
+ book-level permissions, edit the book editors on the <Link
299
+ to="/write/{$book.getID()}/editions">editions</Link
300
+ >
301
+ page. To give chapter-level permissions, navigate to the chapter.
302
+ </Instructions>
303
+ <Permissions
304
+ uids={$edition.uids}
305
+ inheriteduids={$book.uids}
306
+ atleastone={false}
307
+ writable={editable}
308
+ change={(uids) =>
309
+ $edition
310
+ ? edition.set($edition.withEditors(uids))
311
+ : undefined}
312
+ />
313
+ {/if}
268
314
  </Page>
269
315
  {/if}
@@ -0,0 +1,27 @@
1
+ <script>import EmbedNode from '../../models/chapter/EmbedNode';
2
+ import Parser from '../../models/chapter/Parser';
3
+ import { getBase, getEdition } from './Contexts';
4
+ import Link from '../Link.svelte';
5
+ export let embed;
6
+ export let url;
7
+ let edition = getEdition();
8
+ let base = getBase();
9
+ $: embedNode = embed === null ? null : Parser.parseEmbed($edition, embed);
10
+ </script>
11
+
12
+ {#if embedNode instanceof EmbedNode}
13
+ <Link to={url ?? ''} linked={url !== undefined}>
14
+ <img
15
+ src={embedNode.isLocal()
16
+ ? `${$base}/${embedNode.getSmallURL()}`
17
+ : embedNode.getSmallURL()}
18
+ alt={embedNode.getDescription()}
19
+ />
20
+ </Link>
21
+ {/if}
22
+
23
+ <style>
24
+ img {
25
+ width: 5em;
26
+ }
27
+ </style>
@@ -2,6 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  embed: string | null;
5
+ url: string | undefined;
5
6
  };
6
7
  events: {
7
8
  [evt: string]: CustomEvent<any>;
@@ -1,7 +1,7 @@
1
1
  <script>import TableOfContentsImage from './TableOfContentsImage.svelte';
2
2
  import Toggle from '../editor/Toggle.svelte';
3
3
  import ConfirmButton from '../editor/ConfirmButton.svelte';
4
- import { getBase, getEdition, isEditable, setChapter } from './Contexts';
4
+ import { getBase, getEdition, isEditionEditable, setChapter, } from './Contexts';
5
5
  import Muted from './Muted.svelte';
6
6
  import ChapterNumber from './ChapterNumber.svelte';
7
7
  import Button from '../app/Button.svelte';
@@ -13,7 +13,7 @@ export let number = undefined;
13
13
  export let forthcoming = false;
14
14
  let edition = getEdition();
15
15
  let base = getBase();
16
- let editable = isEditable();
16
+ let editable = isEditionEditable();
17
17
  function moveUp() {
18
18
  if ($edition && chapter)
19
19
  edition.set($edition.withMovedChapter(chapter.getID(), -1));
@@ -22,6 +22,8 @@ function moveDown() {
22
22
  if ($edition && chapter)
23
23
  edition.set($edition.withMovedChapter(chapter.getID(), 1));
24
24
  }
25
+ $: chapterURL =
26
+ forthcoming && !editable ? undefined : `${$base}/${chapterID}`;
25
27
  </script>
26
28
 
27
29
  <tr class="toc-row" class:forthcoming>
@@ -30,6 +32,7 @@ function moveDown() {
30
32
  embed={chapter
31
33
  ? chapter.getImage()
32
34
  : $edition?.getImage(chapterID) ?? null}
35
+ url={chapterURL}
33
36
  /></td
34
37
  >
35
38
  <td>
@@ -52,10 +55,7 @@ function moveDown() {
52
55
  {:else if number !== undefined}
53
56
  <ChapterNumber>{'Chapter ' + number}</ChapterNumber>
54
57
  {/if}
55
- <ChapterTitle
56
- link={forthcoming && !editable ? undefined : `${$base}${chapterID}`}
57
- >{title}</ChapterTitle
58
- >
58
+ <ChapterTitle link={chapterURL}>{title}</ChapterTitle>
59
59
  <p><Muted><em><slot name="annotation" /></em></Muted></p>
60
60
  </td>
61
61
  <td><slot name="etc" /></td>
@@ -63,28 +63,27 @@ function moveDown() {
63
63
  <td class="controls">
64
64
  {#if chapter}
65
65
  <Button
66
- tooltip="move chapter up"
66
+ tooltip="move chapter {title} up"
67
67
  disabled={$edition.getChapterPosition(chapter.getID()) ===
68
68
  0}
69
69
  command={moveUp}>{'↑'}</Button
70
70
  >
71
71
  <Button
72
- tooltip="move chapter down"
72
+ tooltip="move chapter {title} down"
73
73
  disabled={$edition.getChapterPosition(chapter.getID()) ===
74
74
  $edition.getChapterCount() - 1}
75
75
  command={moveDown}>{'↓'}</Button
76
76
  >
77
77
  <ConfirmButton
78
78
  tooltip="delete chapter {title}"
79
- commandLabel="delete"
80
- confirmLabel="confirm"
79
+ confirm="delete?"
81
80
  command={() =>
82
81
  chapter && $edition
83
82
  ? edition.set(
84
83
  $edition.withoutChapter(chapter.getID())
85
84
  )
86
- : undefined}
87
- />
85
+ : undefined}>- chapter</ConfirmButton
86
+ >
88
87
  {/if}
89
88
  </td>
90
89
  {/if}
@@ -6,7 +6,7 @@ import ConfirmButton from '../editor/ConfirmButton.svelte';
6
6
  import Instructions from './Instructions.svelte';
7
7
  import ThemeSetEditor from './ThemeSetEditor.svelte';
8
8
  import ThemeEditorPreview from './ThemeEditorPreview.svelte';
9
- import { getEdition } from './Contexts';
9
+ import { getEdition, isEditionEditable } from './Contexts';
10
10
  import TextEditor from '../editor/TextEditor.svelte';
11
11
  import Button from '../app/Button.svelte';
12
12
  import Switch from '../editor/Switch.svelte';
@@ -20,6 +20,7 @@ const themes = {
20
20
  Sketchy: SketchyTheme,
21
21
  Critical: CriticalTheme,
22
22
  };
23
+ let editable = isEditionEditable();
23
24
  let edition = getEdition();
24
25
  $: theme = $edition ? $edition.getTheme() : null;
25
26
  $: isDefault =
@@ -32,10 +33,12 @@ function getEmptyGroup(group) {
32
33
  }
33
34
  </script>
34
35
 
35
- {#if theme && $edition}
36
+ {#if $edition}
36
37
  <Page title={`${$edition?.getTitle()} - Theme`}>
37
38
  <Header
39
+ editable={isEditionEditable()}
38
40
  label="Theme"
41
+ id="theme"
39
42
  getImage={() => null}
40
43
  setImage={() => undefined}
41
44
  header="Theme"
@@ -43,7 +46,7 @@ function getEmptyGroup(group) {
43
46
  <Outline slot="outline" previous={null} next={null} />
44
47
  </Header>
45
48
 
46
- <Instructions>
49
+ <Instructions {editable}>
47
50
  This is the theme editor. You can use it to choose from existing
48
51
  themes or create a custom theme for your book's appearance. To use
49
52
  it, you'll need to know a bit about how to format CSS <Link
@@ -83,14 +86,13 @@ function getEmptyGroup(group) {
83
86
  >
84
87
  {:else}
85
88
  <ConfirmButton
86
- tooltip="Change the theme to the default Bookish theme."
87
- commandLabel="- theme"
88
- confirmLabel="delete your theme?"
89
+ tooltip="change theme to the default"
90
+ confirm="delete your theme?"
89
91
  command={() =>
90
92
  $edition
91
93
  ? edition.set($edition.withTheme(null))
92
- : undefined}
93
- />
94
+ : undefined}>- theme</ConfirmButton
95
+ >
94
96
  {/if}
95
97
 
96
98
  <ThemeEditorPreview {theme} />
@@ -139,7 +141,7 @@ function getEmptyGroup(group) {
139
141
  </td>
140
142
  <td style="text-align:right;">
141
143
  <Button
142
- tooltip="Add a CSS import"
144
+ tooltip="add CSS URL import"
143
145
  command={() => {
144
146
  if (theme === null) return;
145
147
  if (theme.imports === undefined)
@@ -171,7 +173,7 @@ function getEmptyGroup(group) {
171
173
  </td>
172
174
  <td style="text-align: right">
173
175
  <Button
174
- tooltip="Remove this CSS import"
176
+ tooltip="Remove CSS URL import"
175
177
  command={() => {
176
178
  theme?.imports?.splice(index, 1);
177
179
  if ($edition)
@@ -3,14 +3,17 @@ import Outline from './Outline.svelte';
3
3
  import Page from './Page.svelte';
4
4
  import Instructions from './Instructions.svelte';
5
5
  import ChapterIDs from '../../models/book/ChapterID';
6
- import { getEdition } from './Contexts';
6
+ import { getEdition, isEditionEditable } from './Contexts';
7
+ let editable = isEditionEditable();
7
8
  let edition = getEdition();
8
9
  </script>
9
10
 
10
11
  {#if $edition}
11
12
  <Page title={`${$edition.getTitle()} - Unknown Page`}>
12
13
  <Header
14
+ editable={isEditionEditable()}
13
15
  label="Unknown page title"
16
+ id="unknown"
14
17
  getImage={() => $edition?.getImage(ChapterIDs.UnknownID) ?? null}
15
18
  setImage={(embed) =>
16
19
  $edition
@@ -23,7 +26,7 @@ let edition = getEdition();
23
26
  <Outline slot="outline" previous={null} next={null} />
24
27
  </Header>
25
28
 
26
- <Instructions>
29
+ <Instructions {editable}>
27
30
  This page will be shown if the reader somehow ends up on a page that
28
31
  doesn't exist. You can customize the image shown.
29
32
  </Instructions>
@@ -5,10 +5,12 @@ export { default as References } from "./components/page/References.svelte";
5
5
  export { default as PossibleChapter } from "./components/page/PossibleChapter.svelte";
6
6
  export { default as Media } from "./components/page/Media.svelte";
7
7
  export { default as Print } from "./components/page/Print.svelte";
8
+ export { default as Unknown } from "./components/page/Unknown.svelte";
8
9
  export { default as Glossary } from "./components/page/Glossary.svelte";
9
10
  export { default as Edition } from "./components/page/Edition.svelte";
10
11
  export { default as Feedback } from "./components/app/Feedback.svelte";
11
12
  export { default as Loading } from "./components/page/Loading.svelte";
12
13
  export { default as EditionModel } from "./models/book/Edition";
14
+ export { getBookIDWithSubdomain } from "./models/CRUD";
13
15
  export { EDITION } from "./components/page/Contexts";
14
- export { Schema } from "./models/book/Schema";
16
+ export { default as Schema } from "./models/book/Schema";
@@ -5,10 +5,12 @@ export { default as References } from './components/page/References.svelte';
5
5
  export { default as PossibleChapter } from './components/page/PossibleChapter.svelte';
6
6
  export { default as Media } from './components/page/Media.svelte';
7
7
  export { default as Print } from './components/page/Print.svelte';
8
+ export { default as Unknown } from './components/page/Unknown.svelte';
8
9
  export { default as Glossary } from './components/page/Glossary.svelte';
9
10
  export { default as Edition } from './components/page/Edition.svelte';
10
11
  export { default as Feedback } from './components/app/Feedback.svelte';
11
12
  export { default as Loading } from './components/page/Loading.svelte';
12
13
  export { default as EditionModel } from './models/book/Edition';
14
+ export { getBookIDWithSubdomain } from './models/CRUD';
13
15
  export { EDITION } from './components/page/Contexts';
14
- export { Schema } from './models/book/Schema';
16
+ export { default as Schema } from './models/book/Schema';
@@ -0,0 +1,28 @@
1
+ import { DocumentReference } from 'firebase/firestore';
2
+ import Edition from './book/Edition';
3
+ import Book from './book/Book';
4
+ import type { Unsubscribe } from 'firebase/auth';
5
+ export declare function listenToPublishedBooks(react: (books: Book[]) => void): Unsubscribe;
6
+ export declare function listenToEditableBooks(userID: string, react: (books: Book[]) => void): Unsubscribe;
7
+ export declare function listenToPartiallyEditableBooks(userID: string, react: (books: Book[]) => void): Unsubscribe;
8
+ export declare function listenToBooksByName(name: string, react: (book: Book[]) => void): Unsubscribe;
9
+ export declare function listenToBookWithID(id: string, react: (book: Book | null) => void): Unsubscribe;
10
+ export declare function listenToEdition(bookID: string, editionID: string, react: (edition: Edition | null) => void): Unsubscribe;
11
+ export declare function listenToChapters(bookID: string, editionID: string, react: (chapters: [DocumentReference, string][]) => void): Unsubscribe;
12
+ /** Hit the authentication database to get user emails. */
13
+ export declare function getUserEmails(uids: string[]): Promise<Map<string, string> | null>;
14
+ export declare function createUser(email: string): Promise<string | null>;
15
+ export declare function createBook(userID: string): Promise<string>;
16
+ export declare function createNewEdition(book: Book): Promise<Book>;
17
+ export declare function updateLock(edition: Edition, uid: string, content: string, lock: boolean): Promise<boolean>;
18
+ /**
19
+ * Persists the edition in the database, creating and deleting chapters as necessary.
20
+ * returns a map of DocumentReferences for new chapters so they can be persisted client side.
21
+ */
22
+ export declare function updateEdition(book: Book, previousEdition: Edition | undefined, newEdition: Edition): Promise<Map<string, DocumentReference>>;
23
+ export declare function updateBook(book: Book): Promise<void>;
24
+ export declare function isSubdomainAvailable(subdomain: string, book: Book): Promise<boolean>;
25
+ export declare function getBookIDWithSubdomain(subdomain: string): Promise<string | null>;
26
+ export declare function publish(edition: Edition): Promise<string | {
27
+ url: string;
28
+ }>;