bookish-press 0.4.0 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/README.md +3 -1
  2. package/components/Auth.svelte +27 -24
  3. package/components/Auth.svelte.d.ts +4 -4
  4. package/components/Authentication.d.ts +2 -2
  5. package/components/BookPreview.svelte +75 -59
  6. package/components/BookPreview.svelte.d.ts +5 -5
  7. package/components/External.svelte +1 -1
  8. package/components/External.svelte.d.ts +3 -3
  9. package/components/Link.svelte +49 -3
  10. package/components/Link.svelte.d.ts +3 -4
  11. package/components/app/BookList.svelte +19 -0
  12. package/components/app/BookList.svelte.d.ts +18 -0
  13. package/components/app/Button.svelte +49 -0
  14. package/components/app/Button.svelte.d.ts +22 -0
  15. package/components/app/Feedback.svelte +47 -0
  16. package/components/app/Feedback.svelte.d.ts +18 -0
  17. package/components/app/Head.svelte +15 -0
  18. package/components/app/Head.svelte.d.ts +18 -0
  19. package/components/app/Large.svelte +8 -0
  20. package/components/app/Large.svelte.d.ts +27 -0
  21. package/components/app/Lead.svelte +12 -0
  22. package/components/app/Lead.svelte.d.ts +27 -0
  23. package/components/app/Link.svelte +24 -0
  24. package/components/app/Link.svelte.d.ts +20 -0
  25. package/components/app/Options.svelte +24 -0
  26. package/components/app/Options.svelte.d.ts +19 -0
  27. package/components/app/Paragraph.svelte +20 -0
  28. package/components/app/Paragraph.svelte.d.ts +18 -0
  29. package/components/app/Section.svelte +12 -0
  30. package/components/app/Section.svelte.d.ts +27 -0
  31. package/components/app/Table.svelte +32 -0
  32. package/components/app/Table.svelte.d.ts +27 -0
  33. package/components/app/TextInput.svelte +38 -0
  34. package/components/app/TextInput.svelte.d.ts +22 -0
  35. package/components/chapter/Atom.svelte +20 -6
  36. package/components/chapter/Atom.svelte.d.ts +3 -3
  37. package/components/chapter/Block.svelte +26 -21
  38. package/components/chapter/Block.svelte.d.ts +4 -4
  39. package/components/chapter/Callout.svelte +38 -7
  40. package/components/chapter/Callout.svelte.d.ts +4 -4
  41. package/components/chapter/CaptionedCode.svelte +67 -24
  42. package/components/chapter/CaptionedCode.svelte.d.ts +4 -4
  43. package/components/chapter/ChapterBody.svelte +62 -9
  44. package/components/chapter/ChapterBody.svelte.d.ts +5 -4
  45. package/components/chapter/Citations.svelte +86 -20
  46. package/components/chapter/Citations.svelte.d.ts +4 -4
  47. package/components/chapter/Code.svelte +152 -21
  48. package/components/chapter/Code.svelte.d.ts +3 -3
  49. package/components/chapter/Comment.svelte +39 -17
  50. package/components/chapter/Comment.svelte.d.ts +3 -3
  51. package/components/chapter/Definition.svelte +52 -18
  52. package/components/chapter/Definition.svelte.d.ts +5 -8
  53. package/components/chapter/Embed.svelte +155 -67
  54. package/components/chapter/Embed.svelte.d.ts +6 -4
  55. package/components/chapter/ErrorMessage.svelte +7 -2
  56. package/components/chapter/ErrorMessage.svelte.d.ts +4 -4
  57. package/components/chapter/ExtendedPrism.d.ts +2 -0
  58. package/components/chapter/ExtendedPrism.js +69 -0
  59. package/components/chapter/Figure.svelte +90 -0
  60. package/components/chapter/Figure.svelte.d.ts +24 -0
  61. package/components/chapter/Footnote.svelte +75 -12
  62. package/components/chapter/Footnote.svelte.d.ts +4 -4
  63. package/components/chapter/Format.svelte +63 -38
  64. package/components/chapter/Format.svelte.d.ts +5 -4
  65. package/components/chapter/InlineCode.svelte +16 -6
  66. package/components/chapter/InlineCode.svelte.d.ts +4 -4
  67. package/components/chapter/Label.svelte +38 -9
  68. package/components/chapter/Label.svelte.d.ts +4 -4
  69. package/components/chapter/Link.svelte +24 -19
  70. package/components/chapter/Link.svelte.d.ts +4 -4
  71. package/components/chapter/List.svelte +75 -8
  72. package/components/chapter/List.svelte.d.ts +4 -4
  73. package/components/chapter/Marginal.svelte +169 -27
  74. package/components/chapter/Marginal.svelte.d.ts +6 -3
  75. package/components/chapter/Paragraph.svelte +79 -6
  76. package/components/chapter/Paragraph.svelte.d.ts +4 -4
  77. package/components/chapter/Positioned.svelte +33 -0
  78. package/components/chapter/Positioned.svelte.d.ts +19 -0
  79. package/components/chapter/Problem.svelte +15 -0
  80. package/components/chapter/Problem.svelte.d.ts +27 -0
  81. package/components/chapter/Python.svelte +68 -21
  82. package/components/chapter/Python.svelte.d.ts +4 -4
  83. package/components/chapter/Quote.svelte +64 -11
  84. package/components/chapter/Quote.svelte.d.ts +4 -4
  85. package/components/chapter/Rule.svelte +12 -1
  86. package/components/chapter/Rule.svelte.d.ts +4 -4
  87. package/components/chapter/Table.svelte +36 -25
  88. package/components/chapter/Table.svelte.d.ts +4 -4
  89. package/components/chapter/Text.svelte +61 -36
  90. package/components/chapter/Text.svelte.d.ts +5 -4
  91. package/components/editor/BookishEditor.svelte +373 -244
  92. package/components/editor/BookishEditor.svelte.d.ts +9 -6
  93. package/components/editor/CalloutEditor.svelte +5 -5
  94. package/components/editor/CalloutEditor.svelte.d.ts +4 -4
  95. package/components/editor/CaptionedCodeEditor.svelte +16 -12
  96. package/components/editor/CaptionedCodeEditor.svelte.d.ts +4 -4
  97. package/components/editor/CaretContext.d.ts +48 -16
  98. package/components/editor/CaretState.d.ts +16 -44
  99. package/components/editor/CaretUtilities.d.ts +2 -2
  100. package/components/editor/CaretView.svelte +82 -0
  101. package/components/editor/CaretView.svelte.d.ts +25 -0
  102. package/components/editor/CitationsEditor.svelte +36 -25
  103. package/components/editor/CitationsEditor.svelte.d.ts +4 -4
  104. package/components/editor/Clipboard.d.ts +2 -2
  105. package/components/editor/Command.d.ts +13 -12
  106. package/components/editor/Commands.d.ts +1 -1
  107. package/components/editor/Commands.js +1114 -571
  108. package/components/editor/ConfirmButton.svelte +18 -12
  109. package/components/editor/ConfirmButton.svelte.d.ts +5 -4
  110. package/components/editor/DefinitionEditor.svelte +29 -21
  111. package/components/editor/DefinitionEditor.svelte.d.ts +4 -4
  112. package/components/editor/EmbedEditor.svelte +93 -43
  113. package/components/editor/EmbedEditor.svelte.d.ts +3 -3
  114. package/components/editor/Icon.svelte +17 -0
  115. package/components/editor/Icon.svelte.d.ts +16 -0
  116. package/components/editor/ImageChooser.svelte +53 -34
  117. package/components/editor/ImageChooser.svelte.d.ts +3 -3
  118. package/components/editor/InlineCodeEditor.svelte +7 -4
  119. package/components/editor/InlineCodeEditor.svelte.d.ts +4 -4
  120. package/components/editor/LabelEditor.svelte +20 -11
  121. package/components/editor/LabelEditor.svelte.d.ts +4 -4
  122. package/components/editor/LanguageEditor.svelte +10 -7
  123. package/components/editor/LanguageEditor.svelte.d.ts +3 -3
  124. package/components/editor/LinkEditor.svelte +64 -39
  125. package/components/editor/LinkEditor.svelte.d.ts +4 -4
  126. package/components/editor/Note.svelte +4 -3
  127. package/components/editor/Note.svelte.d.ts +6 -2
  128. package/components/editor/Permissions.svelte +95 -0
  129. package/components/editor/Permissions.svelte.d.ts +20 -0
  130. package/components/editor/PositionEditor.svelte +9 -6
  131. package/components/editor/PositionEditor.svelte.d.ts +4 -4
  132. package/components/editor/QuoteEditor.svelte +7 -2
  133. package/components/editor/QuoteEditor.svelte.d.ts +4 -4
  134. package/components/editor/Switch.svelte +55 -28
  135. package/components/editor/Switch.svelte.d.ts +4 -4
  136. package/components/editor/TableEditor.svelte +10 -0
  137. package/components/editor/TableEditor.svelte.d.ts +17 -0
  138. package/components/editor/TextEditor.svelte +83 -45
  139. package/components/editor/TextEditor.svelte.d.ts +5 -4
  140. package/components/editor/Toggle.svelte +11 -8
  141. package/components/editor/Toggle.svelte.d.ts +4 -4
  142. package/components/editor/Toolbar.svelte +191 -144
  143. package/components/editor/Toolbar.svelte.d.ts +5 -8
  144. package/components/editor/ToolbarGroup.svelte +17 -23
  145. package/components/editor/ToolbarGroup.svelte.d.ts +3 -4
  146. package/components/editor/ToolbarSpacer.svelte +8 -1
  147. package/components/editor/ToolbarSpacer.svelte.d.ts +6 -2
  148. package/components/editor/URLEditor.svelte +6 -8
  149. package/components/editor/URLEditor.svelte.d.ts +3 -3
  150. package/components/editor/UndoState.d.ts +3 -3
  151. package/components/editor/icons/annotate.svg +1 -0
  152. package/components/editor/icons/block.svg +1 -0
  153. package/components/editor/icons/bold.svg +1 -0
  154. package/components/editor/icons/bullets.svg +1 -0
  155. package/components/editor/icons/callout.svg +1 -0
  156. package/components/editor/icons/citation.svg +8 -0
  157. package/components/editor/icons/clear.svg +1 -0
  158. package/components/editor/icons/clipboard.svg +1 -0
  159. package/components/editor/icons/code.svg +1 -0
  160. package/components/editor/icons/columnafter.svg +1 -0
  161. package/components/editor/icons/columnbefore.svg +1 -0
  162. package/components/editor/icons/comment.svg +1 -0
  163. package/components/editor/icons/copy.svg +1 -0
  164. package/components/editor/icons/cut.svg +1 -0
  165. package/components/editor/icons/define.svg +7 -0
  166. package/components/editor/icons/deletecolumn.svg +1 -0
  167. package/components/editor/icons/deleterow.svg +1 -0
  168. package/components/editor/icons/footnote.svg +8 -0
  169. package/components/editor/icons/header1.svg +7 -0
  170. package/components/editor/icons/header2.svg +7 -0
  171. package/components/editor/icons/header3.svg +7 -0
  172. package/components/editor/icons/home.svg +1 -0
  173. package/components/editor/icons/indent.svg +1 -0
  174. package/components/editor/icons/italic.svg +1 -0
  175. package/components/editor/icons/label.svg +1 -0
  176. package/components/editor/icons/left.svg +1 -0
  177. package/components/editor/icons/level.svg +1 -0
  178. package/components/editor/icons/link.svg +1 -0
  179. package/components/editor/icons/list.svg +1 -0
  180. package/components/editor/icons/media.svg +1 -0
  181. package/components/editor/icons/middle.svg +1 -0
  182. package/components/editor/icons/numbers.svg +10 -0
  183. package/components/editor/icons/paragraph.svg +1 -0
  184. package/components/editor/icons/paste.svg +10 -0
  185. package/components/editor/icons/quote.svg +1 -0
  186. package/components/editor/icons/redo.svg +1 -0
  187. package/components/editor/icons/right.svg +1 -0
  188. package/components/editor/icons/rowabove.svg +1 -0
  189. package/components/editor/icons/rowbelow.svg +1 -0
  190. package/components/editor/icons/rule.svg +1 -0
  191. package/components/editor/icons/sub.svg +1 -0
  192. package/components/editor/icons/super.svg +1 -0
  193. package/components/editor/icons/table.svg +1 -0
  194. package/components/editor/icons/text.svg +1 -0
  195. package/components/editor/icons/time.svg +1 -0
  196. package/components/editor/icons/undo.svg +1 -0
  197. package/components/editor/icons/unindent.svg +1 -0
  198. package/components/editor/icons/unlink.svg +1 -0
  199. package/components/page/Acknowledgements.svelte +35 -24
  200. package/components/page/Acknowledgements.svelte.d.ts +4 -4
  201. package/components/page/Authors.svelte +34 -17
  202. package/components/page/Authors.svelte.d.ts +7 -6
  203. package/components/page/BookLoader.svelte +59 -0
  204. package/components/page/BookLoader.svelte.d.ts +16 -0
  205. package/components/page/BulkReferenceEditor.svelte +54 -23
  206. package/components/page/BulkReferenceEditor.svelte.d.ts +4 -4
  207. package/components/page/Chapter.svelte +234 -143
  208. package/components/page/Chapter.svelte.d.ts +3 -3
  209. package/components/page/ChapterContext.d.ts +4 -4
  210. package/components/page/ChapterNumber.svelte +9 -0
  211. package/components/page/ChapterNumber.svelte.d.ts +27 -0
  212. package/components/page/ChapterTitle.svelte +16 -0
  213. package/components/page/ChapterTitle.svelte.d.ts +18 -0
  214. package/components/page/Contexts.d.ts +42 -22
  215. package/components/page/Contexts.js +129 -17
  216. package/components/page/DefinitionView.svelte +129 -90
  217. package/components/page/DefinitionView.svelte.d.ts +3 -3
  218. package/components/page/Description.svelte +31 -19
  219. package/components/page/Description.svelte.d.ts +4 -4
  220. package/components/page/Edition.svelte +135 -80
  221. package/components/page/Edition.svelte.d.ts +5 -6
  222. package/components/page/EditionLoader.svelte +99 -0
  223. package/components/page/EditionLoader.svelte.d.ts +18 -0
  224. package/components/page/Editions.svelte +106 -0
  225. package/components/page/Editions.svelte.d.ts +14 -0
  226. package/components/page/Glossary.svelte +65 -49
  227. package/components/page/Glossary.svelte.d.ts +4 -4
  228. package/components/page/Header.svelte +143 -56
  229. package/components/page/Header.svelte.d.ts +8 -6
  230. package/components/page/Index.svelte +116 -80
  231. package/components/page/Index.svelte.d.ts +4 -4
  232. package/components/page/Instructions.svelte +18 -17
  233. package/components/page/Instructions.svelte.d.ts +6 -4
  234. package/components/page/License.svelte +39 -23
  235. package/components/page/License.svelte.d.ts +4 -4
  236. package/components/page/Loading.svelte +102 -12
  237. package/components/page/Loading.svelte.d.ts +6 -2
  238. package/components/page/Media.svelte +81 -53
  239. package/components/page/Media.svelte.d.ts +4 -4
  240. package/components/page/MediaPreview.svelte +26 -8
  241. package/components/page/MediaPreview.svelte.d.ts +3 -3
  242. package/components/page/Muted.svelte +10 -0
  243. package/components/page/Muted.svelte.d.ts +27 -0
  244. package/components/page/Outline.svelte +279 -59
  245. package/components/page/Outline.svelte.d.ts +3 -3
  246. package/components/page/Page.svelte +40 -9
  247. package/components/page/Page.svelte.d.ts +3 -3
  248. package/components/page/PageHeader.svelte +14 -0
  249. package/components/page/PageHeader.svelte.d.ts +18 -0
  250. package/components/page/PageParagraph.svelte +18 -0
  251. package/components/page/PageParagraph.svelte.d.ts +27 -0
  252. package/components/page/PossibleChapter.svelte +7 -7
  253. package/components/page/PossibleChapter.svelte.d.ts +4 -4
  254. package/components/page/PossibleReference.svelte +6 -11
  255. package/components/page/PossibleReference.svelte.d.ts +6 -7
  256. package/components/page/Print.svelte +27 -3
  257. package/components/page/Print.svelte.d.ts +4 -4
  258. package/components/page/Publish.svelte +134 -0
  259. package/components/page/Publish.svelte.d.ts +14 -0
  260. package/components/page/Reference.svelte +259 -117
  261. package/components/page/Reference.svelte.d.ts +5 -5
  262. package/components/page/References.svelte +45 -48
  263. package/components/page/References.svelte.d.ts +4 -4
  264. package/components/page/Rows.svelte +54 -0
  265. package/components/page/Rows.svelte.d.ts +27 -0
  266. package/components/page/Search.svelte +88 -63
  267. package/components/page/Search.svelte.d.ts +4 -4
  268. package/components/page/Status.svelte +46 -39
  269. package/components/page/Status.svelte.d.ts +4 -9
  270. package/components/page/SubdomainEditor.svelte +41 -27
  271. package/components/page/SubdomainEditor.svelte.d.ts +4 -4
  272. package/components/page/TableOfContents.svelte +264 -191
  273. package/components/page/TableOfContents.svelte.d.ts +4 -4
  274. package/components/page/TableOfContentsImage.svelte +8 -8
  275. package/components/page/TableOfContentsImage.svelte.d.ts +3 -3
  276. package/components/page/TableOfContentsRow.svelte +97 -34
  277. package/components/page/TableOfContentsRow.svelte.d.ts +4 -4
  278. package/components/page/ThemeEditor.svelte +177 -39
  279. package/components/page/ThemeEditor.svelte.d.ts +4 -4
  280. package/components/page/ThemeEditorPreview.svelte +35 -23
  281. package/components/page/ThemeEditorPreview.svelte.d.ts +5 -5
  282. package/components/page/ThemeSetEditor.svelte +15 -13
  283. package/components/page/ThemeSetEditor.svelte.d.ts +4 -4
  284. package/components/page/ThemeVariableEditor.svelte +24 -15
  285. package/components/page/ThemeVariableEditor.svelte.d.ts +3 -3
  286. package/components/page/Title.svelte +12 -0
  287. package/components/page/Title.svelte.d.ts +27 -0
  288. package/components/page/Unknown.svelte +28 -21
  289. package/components/page/Unknown.svelte.d.ts +4 -4
  290. package/components/page/margins.js +50 -33
  291. package/index.d.ts +13 -0
  292. package/index.js +14 -0
  293. package/models/CRUD.d.ts +27 -0
  294. package/models/CRUD.js +262 -0
  295. package/models/Firebase.d.ts +1 -0
  296. package/models/Firebase.js +26 -16
  297. package/models/book/Book.d.ts +40 -39
  298. package/models/book/Book.js +121 -121
  299. package/models/book/BookMedia.d.ts +3 -3
  300. package/models/book/BookMedia.js +22 -16
  301. package/models/book/BookSaveStatus.d.ts +7 -0
  302. package/models/book/BookSaveStatus.js +8 -0
  303. package/models/book/Chapter.d.ts +50 -39
  304. package/models/book/Chapter.js +189 -198
  305. package/models/book/ChapterID.js +7 -7
  306. package/models/book/Definition.d.ts +1 -1
  307. package/models/book/Edition.d.ts +87 -61
  308. package/models/book/Edition.js +460 -309
  309. package/models/book/Reference.d.ts +24 -0
  310. package/models/book/Reference.js +78 -0
  311. package/models/book/Schema.d.ts +168 -0
  312. package/models/book/Schema.js +115 -0
  313. package/models/book/Theme.d.ts +44 -37
  314. package/models/book/Theme.js +452 -52
  315. package/models/book/ThemeColors.d.ts +1 -1
  316. package/models/book/Words.d.ts +2 -0
  317. package/models/book/Words.js +110 -0
  318. package/models/chapter/AtomNode.d.ts +4 -4
  319. package/models/chapter/AtomNode.js +20 -13
  320. package/models/chapter/BlockNode.d.ts +9 -10
  321. package/models/chapter/BlockNode.js +32 -13
  322. package/models/chapter/BlocksNode.d.ts +10 -10
  323. package/models/chapter/BlocksNode.js +315 -120
  324. package/models/chapter/BlocksNode.test.js +494 -228
  325. package/models/chapter/Bookkeeping.d.ts +1 -1
  326. package/models/chapter/CalloutNode.d.ts +3 -3
  327. package/models/chapter/CalloutNode.js +34 -12
  328. package/models/chapter/Caret.d.ts +9 -7
  329. package/models/chapter/Caret.js +11 -6
  330. package/models/chapter/ChapterNode.d.ts +11 -11
  331. package/models/chapter/ChapterNode.js +70 -33
  332. package/models/chapter/CitationsNode.d.ts +3 -3
  333. package/models/chapter/CitationsNode.js +31 -12
  334. package/models/chapter/CodeNode.d.ts +11 -6
  335. package/models/chapter/CodeNode.js +143 -34
  336. package/models/chapter/CommentNode.d.ts +5 -5
  337. package/models/chapter/CommentNode.js +29 -13
  338. package/models/chapter/DefinitionNode.d.ts +2 -2
  339. package/models/chapter/DefinitionNode.js +15 -7
  340. package/models/chapter/Edit.d.ts +3 -3
  341. package/models/chapter/EmbedNode.d.ts +9 -5
  342. package/models/chapter/EmbedNode.js +108 -35
  343. package/models/chapter/ErrorNode.d.ts +2 -2
  344. package/models/chapter/ErrorNode.js +34 -12
  345. package/models/chapter/FootnoteNode.d.ts +5 -5
  346. package/models/chapter/FootnoteNode.js +34 -16
  347. package/models/chapter/FormatNode.d.ts +10 -10
  348. package/models/chapter/FormatNode.js +237 -106
  349. package/models/chapter/FormatNode.test.js +87 -45
  350. package/models/chapter/InlineCodeNode.d.ts +2 -2
  351. package/models/chapter/InlineCodeNode.js +22 -9
  352. package/models/chapter/LabelNode.d.ts +4 -4
  353. package/models/chapter/LabelNode.js +31 -13
  354. package/models/chapter/LinkNode.d.ts +2 -2
  355. package/models/chapter/LinkNode.js +21 -9
  356. package/models/chapter/ListNode.d.ts +8 -8
  357. package/models/chapter/ListNode.js +99 -38
  358. package/models/chapter/ListNode.test.js +29 -24
  359. package/models/chapter/MetadataNode.d.ts +3 -3
  360. package/models/chapter/MetadataNode.js +13 -5
  361. package/models/chapter/Node.d.ts +5 -3
  362. package/models/chapter/Node.js +76 -29
  363. package/models/chapter/Node.test.js +20 -18
  364. package/models/chapter/ParagraphNode.d.ts +6 -6
  365. package/models/chapter/ParagraphNode.js +84 -29
  366. package/models/chapter/ParagraphNode.test.js +22 -13
  367. package/models/chapter/Parser.d.ts +27 -27
  368. package/models/chapter/Parser.js +220 -206
  369. package/models/chapter/Parser.test.js +16 -16
  370. package/models/chapter/Position.d.ts +1 -1
  371. package/models/chapter/QuoteNode.d.ts +6 -6
  372. package/models/chapter/QuoteNode.js +61 -23
  373. package/models/chapter/RootNode.d.ts +4 -4
  374. package/models/chapter/RuleNode.d.ts +2 -2
  375. package/models/chapter/RuleNode.js +31 -11
  376. package/models/chapter/TableNode.d.ts +8 -6
  377. package/models/chapter/TableNode.js +89 -34
  378. package/models/chapter/TableNode.test.js +22 -24
  379. package/models/chapter/TextNode.d.ts +6 -6
  380. package/models/chapter/TextNode.js +72 -32
  381. package/models/chapter/TextNode.test.js +4 -4
  382. package/package.json +108 -26
  383. package/util/getSubdomain.js +8 -6
  384. package/util/isMobile.js +1 -1
  385. package/util/mineReference.d.ts +3 -2
  386. package/util/mineReference.js +67 -29
  387. package/util/scrollToEyeLevel.js +6 -1
  388. package/components/chapter/renderPosition.d.ts +0 -3
  389. package/components/chapter/renderPosition.js +0 -4
  390. package/components/editor/ToolbarIcon.svelte +0 -22
  391. package/components/editor/ToolbarIcon.svelte.d.ts +0 -16
  392. package/components/page/Alert.svelte +0 -11
  393. package/components/page/Alert.svelte.d.ts +0 -23
  394. package/components/page/Revisions.svelte +0 -124
  395. package/components/page/Revisions.svelte.d.ts +0 -14
  396. package/models/BookLoader.d.ts +0 -2
  397. package/models/BookLoader.js +0 -67
  398. package/models/Firestore.d.ts +0 -22
  399. package/models/Firestore.js +0 -194
  400. package/models/chapter/ReferenceNode.d.ts +0 -29
  401. package/models/chapter/ReferenceNode.js +0 -48
  402. package/models/loadEdition.d.ts +0 -5
  403. package/models/loadEdition.js +0 -16
@@ -1,47 +1,56 @@
1
- <script>import Instructions from "./Instructions.svelte";
2
- import Parser from "../../models/chapter/Parser";
3
- import TableOfContentsRow from "./TableOfContentsRow.svelte";
4
- import ChapterIDs from "../../models/book/ChapterID";
5
- import Page from "./Page.svelte";
6
- import Header from "./Header.svelte";
7
- import Outline from "./Outline.svelte";
8
- import Link from "../Link.svelte";
9
- import SubdomainEditor from "./SubdomainEditor.svelte";
10
- import Description from "./Description.svelte";
11
- import Acknowledgements from "./Acknowledgements.svelte";
12
- import License from "./License.svelte";
13
- import Revisions from "./Revisions.svelte";
14
- import Authors from "./Authors.svelte";
15
- import TextEditor from "../editor/TextEditor.svelte";
16
- import Toggle from "../editor/Toggle.svelte";
17
- import { getBase, getEdition, isEditable } from "./Contexts";
1
+ <script>import Instructions from './Instructions.svelte';
2
+ import Parser from '../../models/chapter/Parser';
3
+ import TableOfContentsRow from './TableOfContentsRow.svelte';
4
+ import ChapterIDs from '../../models/book/ChapterID';
5
+ import Page from './Page.svelte';
6
+ import Header from './Header.svelte';
7
+ import Outline from './Outline.svelte';
8
+ import Link from '../Link.svelte';
9
+ import SubdomainEditor from './SubdomainEditor.svelte';
10
+ import Description from './Description.svelte';
11
+ import Acknowledgements from './Acknowledgements.svelte';
12
+ import License from './License.svelte';
13
+ import Authors from './Authors.svelte';
14
+ import TextEditor from '../editor/TextEditor.svelte';
15
+ import Toggle from '../editor/Toggle.svelte';
16
+ import { getUser, getBase, getBook, getEdition, isBookEditable, isEditionEditable, isEditionPartiallyEditable, setChapter, } from './Contexts';
17
+ import Muted from './Muted.svelte';
18
+ import Button from '../app/Button.svelte';
19
+ import PageHeader from './PageHeader.svelte';
20
+ import Rows from './Rows.svelte';
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
+ let auth = getUser();
26
+ let book = getBook();
18
27
  let edition = getEdition();
19
28
  let base = getBase();
20
- let editable = isEditable();
29
+ let editable = isEditionEditable();
21
30
  function getProgressDescription(progress) {
22
31
  if (progress === null)
23
- return "";
32
+ return '';
24
33
  else if (progress === 0)
25
- return "";
34
+ return '';
26
35
  else if (progress < 30)
27
- return "; just started";
36
+ return '; just started';
28
37
  else if (progress < 70)
29
- return "; halfway";
38
+ return '; halfway';
30
39
  else if (progress < 95)
31
- return "; almost done";
40
+ return '; almost done';
32
41
  else
33
- return "; done";
42
+ return '; done';
34
43
  }
35
44
  // Get the chapter progress
36
- let progressStorage = localStorage.getItem("chapterProgress");
37
- let progress = progressStorage === null ?
38
- {} :
39
- JSON.parse(progressStorage);
45
+ let progressStorage = typeof localStorage !== 'undefined'
46
+ ? localStorage.getItem('chapterProgress')
47
+ : null;
48
+ let progress = progressStorage === null ? {} : JSON.parse(progressStorage);
40
49
  // Is there a colon? Let's make a subtitle
41
- $: title = $edition.getTitle();
50
+ $: title = $edition?.getTitle() ?? '';
42
51
  let subtitle = undefined;
43
52
  $: {
44
- let colon = title.indexOf(":");
53
+ let colon = title.indexOf(':');
45
54
  if (colon >= 0) {
46
55
  subtitle = title.substring(colon + 1).trim();
47
56
  title = title.substring(0, colon).trim();
@@ -49,186 +58,250 @@ $: {
49
58
  }
50
59
  let waitingForChapter = false;
51
60
  function addChapter() {
52
- waitingForChapter = true;
53
- $edition.addChapter().then(() => waitingForChapter = false);
61
+ if ($edition)
62
+ edition.set($edition.withNewChapter());
54
63
  }
55
64
  </script>
56
65
 
57
- <svelte:head>
58
- <title>{$edition.getTitle()}</title>
59
- <meta name="description" content={$edition.getTitle()}>
60
- </svelte:head>
61
-
62
- <Page title={$edition.getTitle()}>
63
- <Header
64
- label="Book title"
65
- getImage={() => $edition.getImage("cover")}
66
- setImage={embed => $edition.setImage("cover", embed)}
67
- header={title}
68
- subtitle={subtitle}
69
- tags={$edition.getTags()}
70
- save={text => $edition.setTitle(text)}
71
- >
72
- <svelte:fragment slot="before">
73
- {#if editable}
74
- <SubdomainEditor slot="before"/>
75
- {/if}
76
- </svelte:fragment>
77
- <Outline slot="outline"
78
- previous={null}
79
- next={$edition.getNextChapterID("")}
80
- />
81
- <Authors slot="after"
82
- authors={$edition.getAuthors()}
83
- add={ () => $edition.addAuthor("")}
84
- edit={(index, text) => $edition.setAuthor(index, text) }
85
- remove={index => $edition.removeAuthor(index)}
86
- />
87
- </Header>
88
-
89
- <Instructions>
90
- Above you can edit your book's authors, title, and cover image.
91
- </Instructions>
92
-
93
- <Description/>
94
-
95
- <Instructions>
96
- This will appear on the <Link to={base + "/read"}>book browsing</Link> page and in your table of contents.
97
- Write an informative description of what your book is about.
98
- </Instructions>
99
-
100
- <h2 class="bookish-header" id="chapters">Chapters {#if editable}<button disabled={waitingForChapter} on:click={addChapter}>+</button>{/if}</h2>
101
-
102
- <Instructions>
103
- Add, remove, and reorder chapters here.
104
- You can add optional book sections to each chapter, toggle chapters as numbered/unnumbered or published/forthcoming.
105
- Click the title to edit the chapter.
106
- </Instructions>
107
-
108
- <div class="bookish-table">
109
- <table id="toc">
110
- <tbody>
111
- {#each $edition.getChapters() as chapter }
112
- {@const chapterID = chapter.getChapterID() }
113
- {@const readingTime = chapter.getReadingTime() }
114
- {@const readingEstimate =
115
- readingTime === undefined ? "Forthcoming" :
116
- readingTime < 5 ? "<5 min read" :
117
- readingTime < 60 ? "~" + Math.floor(readingTime / 5) * 5 + " min read" :
118
- "~" + Math.floor(readingTime / 60) + " hour read" }
119
- {@const section = chapter.getSection() }
120
- {@const etc = readingEstimate + (!chapter.isForthcoming() ? getProgressDescription(chapterID in progress ? progress[chapterID] : null) : "") }
121
-
122
- <TableOfContentsRow
123
- chapter={chapter}
124
- chapterID={chapterID}
125
- number={$edition.getChapterNumber(chapterID)}
126
- title={chapter.getTitle()}
127
- forthcoming={chapter.isForthcoming()}
128
- >
129
- <span slot="annotation">
130
- {#if editable }
131
- <TextEditor
132
- label={"Chapter section editor"}
133
- startText={section ? section : ""}
134
- placeholder="Section"
135
- valid={ () => undefined }
136
- save={text => chapter.setSection(text) }
137
- />
138
- {:else}
139
- {#if section }{section}{/if}
140
- {/if}
141
- </span>
142
- <span slot="etc">
66
+ {#if $edition}
67
+ <Page title={$edition.getTitle()}>
68
+ <Header
69
+ editable={isEditionEditable()}
70
+ label="Book title"
71
+ getImage={() => $edition?.getImage('cover') ?? null}
72
+ setImage={(embed) =>
73
+ $edition
74
+ ? edition.set($edition.withImage('cover', embed))
75
+ : undefined}
76
+ header={title}
77
+ id="toc"
78
+ {subtitle}
79
+ tags={$edition.getTags()}
80
+ save={(text) =>
81
+ $edition ? edition.set($edition.withTitle(text)) : undefined}
82
+ >
83
+ <svelte:fragment slot="before">
84
+ {#if editable}
85
+ <SubdomainEditor />
86
+ {/if}
87
+ </svelte:fragment>
88
+ <Outline
89
+ slot="outline"
90
+ previous={null}
91
+ next={$edition.getNextChapterID('')}
92
+ />
93
+ <div slot="after">
94
+ <Authors
95
+ editable={isBookEditable()}
96
+ authors={$edition.getAuthors()}
97
+ add={() =>
98
+ $edition
99
+ ? edition.set($edition.withAuthor(''))
100
+ : undefined}
101
+ edit={(index, text) =>
102
+ $edition
103
+ ? edition.set($edition.withAuthorName(index, text))
104
+ : undefined}
105
+ remove={(index) =>
106
+ $edition
107
+ ? edition.set($edition.withoutAuthor(index))
108
+ : undefined}
109
+ />
110
+ <Note>{$edition.getEditionLabel()} edition</Note>
111
+ </div>
112
+ </Header>
113
+
114
+ <Instructions {editable}>
115
+ Edit this book's cover image, ID, title, and authors above. The book
116
+ ID appears in the book's URL (e.g., bookish.press/<em>bookid</em>).
117
+ </Instructions>
118
+
119
+ <Description />
120
+
121
+ <Instructions {editable}>
122
+ This will appear on the <Link to={$base + 'read'}
123
+ >book browsing</Link
124
+ > page and in your table of contents. Write an informative description
125
+ of what your book is about.
126
+ </Instructions>
127
+
128
+ <Instructions {editable}>
129
+ Add, remove, and reorder chapters here. You can add optional book
130
+ sections to each chapter, toggle chapters as numbered/unnumbered or
131
+ published/forthcoming. Click the title to edit the chapter.
132
+ </Instructions>
133
+
134
+ <PageHeader id="chapters"
135
+ >Chapters {#if editable}<Button
136
+ tooltip="add empty chapter"
137
+ disabled={waitingForChapter}
138
+ command={addChapter}>+ chapter</Button
139
+ >{/if}</PageHeader
140
+ >
141
+
142
+ <Rows>
143
+ {#each $edition.getChapters() as chapter}
144
+ {@const chapterID = chapter.getID()}
145
+ {@const readingTime = chapter.getReadingTime($edition)}
146
+ {@const readingEstimate =
147
+ readingTime === undefined
148
+ ? 'Forthcoming'
149
+ : readingTime < 5
150
+ ? '<5 min read'
151
+ : readingTime < 60
152
+ ? '~' + Math.floor(readingTime / 5) * 5 + ' min read'
153
+ : '~' + Math.floor(readingTime / 60) + ' hour read'}
154
+ {@const section = chapter.getSection()}
155
+ {@const etc =
156
+ readingEstimate +
157
+ (!chapter.isForthcoming()
158
+ ? getProgressDescription(
159
+ chapterID in progress ? progress[chapterID] : null
160
+ )
161
+ : '')}
162
+
163
+ <TableOfContentsRow
164
+ {chapter}
165
+ {chapterID}
166
+ number={$edition.getChapterNumber(chapterID)}
167
+ title={chapter.getTitle()}
168
+ forthcoming={chapter.isForthcoming()}
169
+ >
170
+ <span slot="annotation">
171
+ {#if editable}
172
+ <TextEditor
173
+ label={'Chapter section editor'}
174
+ text={section ? section : ''}
175
+ placeholder="section"
176
+ valid={() => undefined}
177
+ save={(text) =>
178
+ setChapter(
179
+ edition,
180
+ chapter,
181
+ chapter.withSection(text)
182
+ )}
183
+ />
184
+ {:else if section}{section}{/if}
185
+ {#if !editable && $auth !== undefined && $auth.user !== null && chapter.uids.includes($auth.user.uid)}
186
+ You can edit this chapter.
187
+ {/if}
188
+ </span>
189
+ <span slot="etc">
190
+ <Muted>
143
191
  {#if editable}
144
- <Toggle on={chapter.isForthcoming()} save={on => chapter.setForthcoming(on)}>
192
+ <Toggle
193
+ on={chapter.isForthcoming()}
194
+ save={(on) =>
195
+ setChapter(
196
+ edition,
197
+ chapter,
198
+ chapter.asForthcoming(on)
199
+ )}
200
+ >
145
201
  {etc}
146
202
  </Toggle>
147
203
  {:else}
148
- { etc }
204
+ {etc}
149
205
  {/if}
150
- </span>
151
- </TableOfContentsRow>
152
- {/each}
153
- {#if $edition.hasReferences() || editable }
154
- <TableOfContentsRow
155
- chapterID={ChapterIDs.ReferencesID}
156
- title="References"
157
- >
158
- <span slot="annotation">Everything cited</span>
159
- </TableOfContentsRow>
160
- {/if}
161
- {#if $edition.getGlossary() && Object.keys($edition.getGlossary()).length > 0 || editable }
162
- <TableOfContentsRow
163
- chapterID={ChapterIDs.GlossaryID}
164
- title="Glossary"
165
- >
166
- <span slot="annotation">Definitions</span>
167
- </TableOfContentsRow>
168
- {/if}
206
+ </Muted>
207
+ </span>
208
+ </TableOfContentsRow>
209
+ {/each}
210
+ {#if $edition.hasReferences() || editable}
169
211
  <TableOfContentsRow
170
- chapterID={ChapterIDs.IndexID}
171
- title="Index"
172
- >
173
- <span slot="annotation">Common words and where they are</span>
212
+ chapterID={ChapterIDs.ReferencesID}
213
+ title="References"
214
+ >
215
+ <span slot="annotation">Everything cited</span>
174
216
  </TableOfContentsRow>
217
+ {/if}
218
+ {#if ($edition.getGlossary() && Object.keys($edition.getGlossary()).length > 0) || editable}
175
219
  <TableOfContentsRow
176
- chapterID={ChapterIDs.SearchID}
177
- title="Search"
178
- >
179
- <span slot="annotation">Find where words occur</span>
220
+ chapterID={ChapterIDs.GlossaryID}
221
+ title="Glossary"
222
+ >
223
+ <span slot="annotation">Definitions</span>
180
224
  </TableOfContentsRow>
225
+ {/if}
226
+ <TableOfContentsRow chapterID={ChapterIDs.IndexID} title="Index">
227
+ <span slot="annotation">Common words and where they are</span>
228
+ </TableOfContentsRow>
229
+ <TableOfContentsRow chapterID={ChapterIDs.SearchID} title="Search">
230
+ <span slot="annotation">Find where words occur</span>
231
+ </TableOfContentsRow>
181
232
 
182
- <TableOfContentsRow
183
- chapterID={ChapterIDs.MediaID}
184
- title="Media"
185
- >
186
- <span slot="annotation">Images and video in the book</span>
233
+ <TableOfContentsRow chapterID={ChapterIDs.MediaID} title="Media">
234
+ <span slot="annotation">Images and video in the book</span>
235
+ </TableOfContentsRow>
236
+ {#if editable}
237
+ <TableOfContentsRow chapterID="theme" title="Theme">
238
+ <span slot="annotation">Style the book</span>
187
239
  </TableOfContentsRow>
188
- {#if editable }
189
- <TableOfContentsRow
190
- chapterID="theme"
191
- title="Theme"
192
- >
193
- <span slot="annotation">Style the book</span>
194
- </TableOfContentsRow>
195
- <TableOfContentsRow
196
- chapterID="unknown"
197
- title="Unknown"
198
- >
199
- <span slot="annotation">Customize bad links</span>
200
- </TableOfContentsRow>
201
- {/if}
202
- </tbody>
203
- </table>
204
- </div>
240
+ <TableOfContentsRow chapterID="unknown" title="Unknown">
241
+ <span slot="annotation">Customize bad links</span>
242
+ </TableOfContentsRow>
243
+ {/if}
244
+ </Rows>
245
+
246
+ <Acknowledgements />
247
+ <License />
205
248
 
206
- <Acknowledgements />
207
- <License />
249
+ <PageHeader id="print">Print</PageHeader>
208
250
 
209
- <h2 class="bookish-header" id="print">Print</h2>
251
+ <Instructions {editable}>
252
+ This link will generate the entire book on a single page, suitable
253
+ for printing.
254
+ </Instructions>
210
255
 
211
- <Instructions>
212
- This offers a way for readers to print the entire book as a single page.
213
- </Instructions>
256
+ <PageParagraph>
257
+ Want to print this book or generate a PDF? See <Link
258
+ to={$base + 'print'}>all chapters on a single page</Link
259
+ > and then print or export. Long books can take some time to render.
260
+ </PageParagraph>
214
261
 
215
- <p>
216
- Want to print this book or generate a PDF?
217
- See <Link to={base + "print"}>all chapters on a single page</Link> and then print or export.
218
- Long books can take some time to render.
219
- </p>
262
+ <PageHeader id="citation">Citation</PageHeader>
220
263
 
221
- <h2 class="bookish-header" id="citation">Citation</h2>
264
+ <Instructions {editable}>
265
+ This citation is created from the current authors, title, and date.
266
+ </Instructions>
222
267
 
223
- <Instructions>
224
- This citation is dynamically created from the current authors, title, and date.
225
- </Instructions>
268
+ <!-- Book citation -->
269
+ <PageParagraph>
270
+ {$edition
271
+ .getAuthors()
272
+ .map((author) => Parser.parseFormat($edition, author).toText())
273
+ .join(', ')} ({new Date().getFullYear()}).
274
+ <em>{$edition.getTitle()}</em>. {location.protocol +
275
+ '//' +
276
+ location.host +
277
+ location.pathname},
278
+ <em>retrieved {new Date().toLocaleDateString('en-US')}</em>.
279
+ </PageParagraph>
226
280
 
227
- <!-- Book citation -->
228
- <p>
229
- { $edition.getAuthors().map(author => Parser.parseFormat($edition, author).toText()).join(", ") } ({(new Date()).getFullYear() }). <em>{$edition.getTitle()}</em>. { location.protocol+'//'+location.host+location.pathname }, <em>retrieved { (new Date()).toLocaleDateString("en-US")}</em>.
230
- </p>
281
+ {#if editable}
282
+ <PageHeader id="publish">Publish</PageHeader>
283
+ <Publish />
284
+ {/if}
231
285
 
232
- <Revisions />
233
-
234
- </Page>
286
+ {#if $book && (editable || isEditionPartiallyEditable())}
287
+ <PageHeader>Editors</PageHeader>
288
+ <Instructions {editable}>
289
+ These authors can edit this edition and its chapters. To give
290
+ book-level permissions, edit the book editors on the <Link
291
+ to="/write/{$book.ref.id}/editions">editions</Link
292
+ >
293
+ page. To give chapter-level permissions, navigate to the chapter.
294
+ </Instructions>
295
+ <Permissions
296
+ uids={$edition.uids}
297
+ inheriteduids={$book.uids}
298
+ atleastone={false}
299
+ writable={editable}
300
+ change={(uids) =>
301
+ $edition
302
+ ? edition.set($edition.withEditors(uids))
303
+ : undefined}
304
+ />
305
+ {/if}
306
+ </Page>
307
+ {/if}
@@ -1,14 +1,14 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
7
7
  slots: {};
8
8
  };
9
- export declare type TableOfContentsProps = typeof __propDef.props;
10
- export declare type TableOfContentsEvents = typeof __propDef.events;
11
- export declare type TableOfContentsSlots = typeof __propDef.slots;
9
+ export type TableOfContentsProps = typeof __propDef.props;
10
+ export type TableOfContentsEvents = typeof __propDef.events;
11
+ export type TableOfContentsSlots = typeof __propDef.slots;
12
12
  export default class TableOfContents extends SvelteComponentTyped<TableOfContentsProps, TableOfContentsEvents, TableOfContentsSlots> {
13
13
  }
14
14
  export {};
@@ -1,15 +1,15 @@
1
- <script>import EmbedNode from "../../models/chapter/EmbedNode";
2
- import Parser from "../../models/chapter/Parser";
3
- import { getEdition } from "./Contexts";
1
+ <script>import EmbedNode from '../../models/chapter/EmbedNode';
2
+ import Parser from '../../models/chapter/Parser';
3
+ import { getEdition } from './Contexts';
4
4
  export let embed;
5
5
  let edition = getEdition();
6
6
  $: embedNode = embed === null ? null : Parser.parseEmbed($edition, embed);
7
7
  </script>
8
8
 
9
- {#if embedNode instanceof EmbedNode }
10
- <img
9
+ {#if embedNode instanceof EmbedNode}
10
+ <img
11
11
  style="width: 5em"
12
- src={embedNode.getSmallURL() }
13
- alt={embedNode.getDescription() }
12
+ src={embedNode.getSmallURL()}
13
+ alt={embedNode.getDescription()}
14
14
  />
15
- {/if}
15
+ {/if}
@@ -8,9 +8,9 @@ declare const __propDef: {
8
8
  };
9
9
  slots: {};
10
10
  };
11
- export declare type TableOfContentsImageProps = typeof __propDef.props;
12
- export declare type TableOfContentsImageEvents = typeof __propDef.events;
13
- export declare type TableOfContentsImageSlots = typeof __propDef.slots;
11
+ export type TableOfContentsImageProps = typeof __propDef.props;
12
+ export type TableOfContentsImageEvents = typeof __propDef.events;
13
+ export type TableOfContentsImageSlots = typeof __propDef.slots;
14
14
  export default class TableOfContentsImage extends SvelteComponentTyped<TableOfContentsImageProps, TableOfContentsImageEvents, TableOfContentsImageSlots> {
15
15
  }
16
16
  export {};