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,13 +1,16 @@
1
- <script>import EmbedNode from '../../models/chapter/EmbedNode';
2
- import Parser from "../../models/chapter/Parser";
1
+ <script>import Parser from '../../models/chapter/Parser';
3
2
  import Embed from '../chapter/Embed.svelte';
4
- import ErrorMessage from '../chapter/ErrorMessage.svelte';
5
3
  import BookishEditor from '../editor/BookishEditor.svelte';
4
+ import Title from './Title.svelte';
6
5
  import { onMount } from 'svelte';
7
6
  import TextEditor from '../editor/TextEditor.svelte';
8
- import { getEdition, isEditable } from './Contexts';
7
+ import { getUser, getEdition, getLeasee, lease } from './Contexts';
8
+ import Button from '../app/Button.svelte';
9
+ /** True if an author should be able to edit this header. */
10
+ export let editable;
9
11
  export let label;
10
12
  export let header;
13
+ export let id;
11
14
  export let subtitle = undefined;
12
15
  export let print = false;
13
16
  export let tags = undefined;
@@ -15,22 +18,24 @@ export let getImage;
15
18
  export let setImage;
16
19
  export let save = null;
17
20
  let title = null;
18
- let reminder = null;
21
+ let showReminder = true;
22
+ let auth = getUser();
19
23
  let edition = getEdition();
20
- let editable = isEditable();
21
24
  function updateScrollReminder() {
22
- if (title && reminder) {
23
- // If the bottom of the window is below the top of the title, hide the reminder.
24
- if (window.scrollY + window.innerHeight > title.getBoundingClientRect().top + window.scrollY)
25
- reminder.classList.add("bookish-past-title");
26
- else
27
- reminder.classList.remove("bookish-past-title");
28
- }
25
+ // If the bottom of the window is below the top of the title, hide the reminder.
26
+ if (title)
27
+ showReminder =
28
+ window.scrollY + window.innerHeight <=
29
+ title.getBoundingClientRect().top + window.scrollY;
30
+ }
31
+ function addCover() {
32
+ if (setImage)
33
+ setImage('|||||');
34
+ }
35
+ function removeCover() {
36
+ if (setImage)
37
+ setImage(null);
29
38
  }
30
- function addCover() { if (setImage)
31
- setImage("|||||"); }
32
- function removeCover() { if (setImage)
33
- setImage(null); }
34
39
  // When the title becomes visible or hidden, update the scroll reminder.
35
40
  onMount(() => {
36
41
  const intersectionObserver = new IntersectionObserver(() => updateScrollReminder());
@@ -38,68 +43,150 @@ onMount(() => {
38
43
  intersectionObserver.observe(title);
39
44
  updateScrollReminder();
40
45
  // Stop observing when unmounted.
41
- return () => { if (title)
42
- intersectionObserver.unobserve(title); };
46
+ return () => {
47
+ if (title)
48
+ intersectionObserver.unobserve(title);
49
+ };
43
50
  });
44
51
  // Get the embed, update when getImage function prop changes.
45
- let embedNode = undefined;
46
- $: {
47
- let embed = getImage();
48
- embedNode = embed ? Parser.parseEmbed($edition, embed) : undefined;
49
- }
52
+ let embed;
53
+ $: embed = getImage();
50
54
  </script>
51
55
 
52
- <div class="bookish-chapter-header">
53
- {#if embedNode }
56
+ <header class="bookish-chapter-header">
57
+ {#if embed}
54
58
  <div class="bookish-figure-full">
55
- {#if edition && editable && embedNode instanceof EmbedNode}
56
- <BookishEditor
57
- ast={embedNode}
58
- save={node => setImage ? setImage(node.toBookdown()) : undefined }
59
+ {#if $edition && editable}
60
+ <BookishEditor
61
+ text={embed}
62
+ parser={(text) => Parser.parseEmbed($edition, text)}
63
+ save={(node) =>
64
+ setImage ? setImage(node.toBookdown()) : undefined}
59
65
  chapter={false}
60
66
  component={Embed}
61
67
  placeholder=""
68
+ leasee={getLeasee(auth, edition, `embed-${id}`)}
69
+ lease={(lock) => lease(auth, edition, `embed-${id}`, lock)}
62
70
  />
63
- {:else if embedNode instanceof EmbedNode }
64
- <Embed node={embedNode}/>
65
71
  {:else}
66
- <ErrorMessage node={embedNode} />
72
+ <Embed
73
+ node={Parser.parseEmbed($edition, embed)}
74
+ editable={false}
75
+ />
76
+ {/if}
77
+ {#if !print && showReminder}
78
+ <div class="bookish-scroll-reminder" />
67
79
  {/if}
68
- {#if !print }<div bind:this={reminder} class="bookish-scroll-reminder"></div>{/if}
69
80
  </div>
70
81
  {:else}
71
82
  <!-- Add a bit of space to account for the lack of an image. -->
72
83
  <p>&nbsp;</p>
73
84
  {/if}
74
85
  {#if !print}
75
- <slot name="outline"></slot>
86
+ <slot name="outline" />
76
87
  {/if}
77
- {#if editable }
78
- {#if embedNode === undefined }
79
- <button on:click={addCover}>+ cover image</button>
88
+ {#if editable}
89
+ {#if embed === null}
90
+ <Button tooltip="add cover image" command={addCover}
91
+ >+ cover image</Button
92
+ >
80
93
  {:else}
81
- <button on:click={removeCover}>x cover image</button>
94
+ <Button tooltip="remove cover image" command={removeCover}
95
+ >- cover image</Button
96
+ >
82
97
  {/if}
83
98
  {/if}
84
- <div class="bookish-chapter-header-text">
85
- <slot name="before"></slot>
86
- <h1 bind:this={title} class="bookish-title">
87
- {#if editable && save }
88
- <TextEditor
89
- label={label}
90
- startText={header + (subtitle ? ": " + subtitle : "")}
91
- placeholder="Title"
92
- valid={text => text.length === 0 ? "Titles have to be at least one character long." : undefined }
93
- save={save}
99
+ <div bind:this={title} class="bookish-chapter-header-text">
100
+ <slot name="before" />
101
+ <Title>
102
+ {#if editable && save}
103
+ <TextEditor
104
+ {label}
105
+ text={header + (subtitle ? ': ' + subtitle : '')}
106
+ placeholder="title"
107
+ valid={(text) =>
108
+ text.length === 0
109
+ ? 'Titles have to be at least one character long.'
110
+ : undefined}
111
+ {save}
94
112
  />
95
113
  {:else}
96
- { header }
97
- {#if subtitle }<div class="bookish-subtitle">{subtitle}</div>{/if}
114
+ {header}
115
+ {#if subtitle}<div class="bookish-subtitle">{subtitle}</div
116
+ >{/if}
98
117
  {/if}
99
- </h1>
100
- <slot name="after"></slot>
101
- {#if tags }
102
- <div>{#each tags as tag}<span class="bookish-tag">{tag}</span>{/each}</div>
118
+ </Title>
119
+ <slot name="after" />
120
+ {#if tags}
121
+ <div
122
+ >{#each tags as tag}<span class="bookish-tag">{tag}</span
123
+ >{/each}</div
124
+ >
103
125
  {/if}
104
126
  </div>
105
- </div>
127
+ </header>
128
+
129
+ <style>
130
+ .bookish-subtitle {
131
+ font-size: var(--bookish-header-1-font-size);
132
+ font-weight: normal;
133
+ font-style: italic;
134
+ margin-top: 0; /* Shouldn't have any space below title */
135
+ margin-bottom: calc(var(--bookish-title-font-size) * 0.5);
136
+ line-height: var(--bookish-header-line-height);
137
+ }
138
+
139
+ .bookish-figure-full {
140
+ left: 50%;
141
+ margin-left: -50vw;
142
+ margin-right: -50vw;
143
+ margin-bottom: 3em;
144
+ max-width: 100vw;
145
+ position: relative;
146
+ right: 50%;
147
+ width: 100vw;
148
+ }
149
+
150
+ .bookish-figure-full :global(.bookish-figure) {
151
+ /* No margin above full figures, which tend to come first in a page. */
152
+ margin-top: 0;
153
+ }
154
+
155
+ .bookish-scroll-reminder {
156
+ position: fixed;
157
+ bottom: 4em;
158
+ left: 50%;
159
+ animation: bookish-bounce 3s infinite;
160
+ animation-timing-function: ease;
161
+ width: 0;
162
+ height: 0;
163
+ margin-left: -1rem;
164
+ border-left: 1rem solid transparent;
165
+ border-right: 1rem solid transparent;
166
+ border-top: 1rem solid white;
167
+ mix-blend-mode: difference;
168
+ }
169
+
170
+ @keyframes bookish-bounce {
171
+ 0% {
172
+ bottom: 4em;
173
+ }
174
+ 50% {
175
+ bottom: 5em;
176
+ }
177
+ 100% {
178
+ bottom: 4em;
179
+ }
180
+ }
181
+
182
+ .bookish-tag {
183
+ font-size: var(--bookish-small-font-size);
184
+ display: inline-block;
185
+ padding: var(--bookish-inline-padding)
186
+ calc(2 * var(--bookish-inline-padding));
187
+ border-radius: var(--bookish-roundedness);
188
+ background-color: var(--bookish-border-color-light);
189
+ font-weight: bold;
190
+ text-transform: uppercase;
191
+ }
192
+ </style>
@@ -1,14 +1,16 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
+ /** True if an author should be able to edit this header. */ editable: boolean;
4
5
  label: string;
5
6
  header: string;
7
+ id: string;
6
8
  subtitle?: string | undefined;
7
9
  print?: boolean | undefined;
8
10
  tags?: string[] | undefined;
9
- getImage: (() => string | null);
10
- setImage: (embed: string | null) => Promise<void> | undefined;
11
- save?: ((text: string) => Promise<void> | undefined) | null | undefined;
11
+ getImage: () => string | null;
12
+ setImage: (embed: string | null) => Promise<void> | void;
13
+ save?: ((text: string) => Promise<void> | void) | null | undefined;
12
14
  };
13
15
  events: {
14
16
  [evt: string]: CustomEvent<any>;
@@ -19,9 +21,9 @@ declare const __propDef: {
19
21
  after: {};
20
22
  };
21
23
  };
22
- export declare type HeaderProps = typeof __propDef.props;
23
- export declare type HeaderEvents = typeof __propDef.events;
24
- export declare type HeaderSlots = typeof __propDef.slots;
24
+ export type HeaderProps = typeof __propDef.props;
25
+ export type HeaderEvents = typeof __propDef.events;
26
+ export type HeaderSlots = typeof __propDef.slots;
25
27
  export default class Header extends SvelteComponentTyped<HeaderProps, HeaderEvents, HeaderSlots> {
26
28
  }
27
29
  export {};
@@ -1,16 +1,22 @@
1
- <script>import Header from "./Header.svelte";
1
+ <script>import Header from './Header.svelte';
2
2
  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 Link from "../Link.svelte";
7
- import { getBase, getEdition } from "./Contexts";
8
- import { page } from "$app/stores";
6
+ import Link from '../Link.svelte';
7
+ import { getBase, getEdition, isEditionEditable } from './Contexts';
8
+ import { page } from '$app/stores';
9
+ import Muted from './Muted.svelte';
10
+ import ChapterTitle from './ChapterTitle.svelte';
11
+ import ChapterNumber from './ChapterNumber.svelte';
12
+ import PageHeader from './PageHeader.svelte';
13
+ import Rows from './Rows.svelte';
14
+ let editable = isEditionEditable();
9
15
  let edition = getEdition();
10
16
  let base = getBase();
11
17
  // What letter are we matching?
12
18
  $: letter = $page.params.letter;
13
- $: bookIndex = $edition.getBookIndex();
19
+ $: bookIndex = $edition?.getBookIndex() ?? {};
14
20
  let letters = {};
15
21
  // Figure out what letters have words
16
22
  $: {
@@ -21,7 +27,9 @@ let words = [];
21
27
  $: {
22
28
  words = [];
23
29
  let count = 0;
24
- Object.keys(bookIndex).sort((a, b) => a.localeCompare(b)).forEach(word => {
30
+ Object.keys(bookIndex)
31
+ .sort((a, b) => a.localeCompare(b))
32
+ .forEach((word) => {
25
33
  const firstLetter = word.charAt(0).toLowerCase();
26
34
  if (letter === firstLetter) {
27
35
  count++;
@@ -33,85 +41,113 @@ $: {
33
41
  }
34
42
  </script>
35
43
 
36
- <Page title={`${$edition.getTitle()} - Index`}>
37
- <Header
38
- label="Index title"
39
- getImage={() => $edition.getImage(ChapterIDs.IndexID)}
40
- setImage={(embed) => $edition.setImage(ChapterIDs.IndexID, embed)}
41
- header="Index"
42
- tags={$edition.getTags()}
43
- >
44
- <Outline
45
- slot="outline"
46
- previous={$edition.getPreviousChapterID(ChapterIDs.IndexID)}
47
- next={$edition.getNextChapterID(ChapterIDs.IndexID)}
48
- />
49
- </Header>
44
+ {#if $edition}
45
+ <Page title={`${$edition.getTitle()} - Index`}>
46
+ <Header
47
+ editable={isEditionEditable()}
48
+ label="Index title"
49
+ id="index"
50
+ getImage={() => $edition?.getImage(ChapterIDs.IndexID) ?? null}
51
+ setImage={(embed) =>
52
+ $edition
53
+ ? edition.set($edition.withImage(ChapterIDs.IndexID, embed))
54
+ : undefined}
55
+ header="Index"
56
+ tags={$edition.getTags()}
57
+ >
58
+ <Outline
59
+ slot="outline"
60
+ previous={$edition.getPreviousChapterID(ChapterIDs.IndexID)}
61
+ next={$edition.getNextChapterID(ChapterIDs.IndexID)}
62
+ />
63
+ </Header>
50
64
 
51
- <Instructions>
52
- This index is created automatically.
53
- It's not perfect; we may add more control over it in the future.
54
- </Instructions>
65
+ <Instructions {editable}>
66
+ This index is created automatically using the words in the chapters.
67
+ </Instructions>
55
68
 
56
- <p><em>This index includes all words, excluding common English words, words with apostrophes, and words ending in -ly.</em></p>
69
+ <p
70
+ ><em
71
+ >This index includes all words, excluding common English words,
72
+ words with apostrophes, and words ending in -ly.</em
73
+ ></p
74
+ >
57
75
 
58
- {#if Object.keys(letters).length === 0 }
59
- <p>There are no words in this book, so there's no index.</p>
60
- {:else}
61
- <p>Pick a letter to browse:</p>
76
+ {#if Object.keys(letters).length === 0}
77
+ <p>There are no words in this book, so there's no index.</p>
78
+ {:else}
79
+ <p>Pick a letter to browse:</p>
62
80
 
63
- <p>
64
- {#each "abcdefghijklmnopqrstuvwxyz".split("") as symbol, index}
65
- <span style="display: inline-block">
66
- {#if symbol in letters && letter !== symbol }
67
- <Link to={base + "/index/" + symbol}>{symbol}</Link>
81
+ <nav class="letters">
82
+ {#each 'abcdefghijklmnopqrstuvwxyz'.split('') as symbol, index}
83
+ {#if symbol in letters && letter !== symbol}
84
+ <Link to={$base + 'index/' + symbol}>{symbol}</Link>
85
+ {:else if letter === symbol}
86
+ <strong
87
+ ><span style="font-size: 200%">{symbol}</span
88
+ ></strong
89
+ >
68
90
  {:else}
69
- <span>
70
- {#if letter === symbol }
71
- <strong><span style="font-size: 200%">{symbol}</span></strong>
72
- {:else}
73
- <span class={"bookish-muted"}>{symbol}</span>
74
- {/if}
75
- </span>
91
+ <Muted>{symbol}</Muted>
76
92
  {/if}
77
- {#if index < 26 - 1 }
78
- <span>&sdot;</span>
93
+ {/each}
94
+ </nav>
95
+
96
+ <Rows>
97
+ {#each words as word, index}
98
+ {#if word === true}
99
+ <tr
100
+ ><td colspan={2}
101
+ ><PageHeader>{words[index + 1]}</PageHeader></td
102
+ ></tr
103
+ >
104
+ {:else}
105
+ <tr>
106
+ <td>{word}</td>
107
+ <td>
108
+ <!-- Sort the chapters by chapter number -->
109
+ {#each Array.from(bookIndex[word]).sort( (a, b) => {
110
+ let numberA = $edition?.getChapterNumber(a) ?? 0;
111
+ let numberB = $edition?.getChapterNumber(b) ?? 0;
112
+ if (numberA === undefined) return -1;
113
+ if (numberB === undefined) return 1;
114
+ return numberA - numberB;
115
+ } ) as chapterID}
116
+ <!-- Map them to links to the first occurrence in the chapter. -->
117
+ <p>
118
+ <ChapterNumber
119
+ >Chapter {#if $edition.getChapterNumber(chapterID) !== undefined}{$edition.getChapterNumber(
120
+ chapterID
121
+ )}.
122
+ {/if}</ChapterNumber
123
+ >
124
+ <ChapterTitle
125
+ link={`${$base}${chapterID}?word=${word}`}
126
+ >{$edition.getChapterName(
127
+ chapterID
128
+ )}</ChapterTitle
129
+ >
130
+ </p>
131
+ {/each}
132
+ </td>
133
+ </tr>
79
134
  {/if}
80
- </span>
81
- {/each}
82
- </p>
135
+ {/each}
136
+ </Rows>
137
+ {/if}
138
+ </Page>
139
+ {/if}
140
+
141
+ <style>
142
+ tr p {
143
+ margin-top: 0;
144
+ }
83
145
 
84
- <div class="bookish-table">
85
- <table>
86
- <tbody>
87
- {#each words as word, index }
88
- {#if word === true}
89
- <tr><td colspan={2}><h2 class="bookish-header">{words[index + 1]}</h2></td></tr>
90
- {:else}
91
- <tr>
92
- <td>{word}</td>
93
- <td>
94
- <!-- Sort the chapters by chapter number -->
95
- {#each Array.from(bookIndex[word])
96
- .sort((a, b) => {
97
- let numberA = $edition.getChapterNumber(a);
98
- let numberB = $edition.getChapterNumber(b);
99
- if(numberA === undefined) return -1;
100
- if(numberB === undefined) return 1;
101
- return numberA - numberB;
102
- }) as chapterID, index }
103
- <!-- Map them to links to the first occurrence in the chapter. -->
104
- <span>
105
- Chapter {#if $edition.getChapterNumber(chapterID) !== undefined}<span> {$edition.getChapterNumber(chapterID)}. </span>{/if}<Link to={`${base}/${chapterID}?word=${word}`}>{$edition.getChapterName(chapterID)}</Link>
106
- {#if index < bookIndex[word].size - 1 }<br/>{/if}
107
- </span>
108
- {/each}
109
- </td>
110
- </tr>
111
- {/if}
112
- {/each}
113
- </tbody>
114
- </table>
115
- </div>
116
- {/if}
117
- </Page>
146
+ .letters {
147
+ display: flex;
148
+ flex-direction: row;
149
+ flex-wrap: nowrap;
150
+ gap: calc(2 * var(--bookish-inline-padding));
151
+ align-items: baseline;
152
+ }
153
+ </style>
@@ -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 IndexProps = typeof __propDef.props;
10
- export declare type IndexEvents = typeof __propDef.events;
11
- export declare type IndexSlots = typeof __propDef.slots;
9
+ export type IndexProps = typeof __propDef.props;
10
+ export type IndexEvents = typeof __propDef.events;
11
+ export type IndexSlots = typeof __propDef.slots;
12
12
  export default class Index extends SvelteComponentTyped<IndexProps, IndexEvents, IndexSlots> {
13
13
  }
14
14
  export {};
@@ -1,30 +1,31 @@
1
- <script>import { isEditable } from "./Contexts";
2
- let editable = isEditable();
1
+ <script>export let editable;
3
2
  </script>
4
3
 
5
- {#if editable }
6
- <div class="bookish-instructions"><slot></slot></div>
4
+ {#if editable}
5
+ <aside class="instructions"><slot /></aside>
7
6
  {/if}
8
7
 
9
8
  <style>
10
- .bookish-instructions {
9
+ .instructions {
10
+ font-family: var(--app-font);
11
+ font-weight: 300;
11
12
  font-style: italic;
12
- margin-top: var(--bookish-app-margin);
13
- margin-bottom: var(--bookish-app-margin);
14
- line-height: 1.2;
15
- padding: var(--bookish-app-margin);
16
- border: 2px solid var(--bookish-app-chrome-border-color);
17
- border-radius: var(--bookish-roundedness);
13
+ margin-top: var(--app-text-spacing);
14
+ margin-bottom: var(--app-text-spacing);
15
+ line-height: var(--app-line-height);
16
+ padding-left: var(--app-chrome-padding);
17
+ border-left: var(--app-chrome-border-size) solid var(--app-border-color);
18
18
  }
19
19
 
20
- .bookish-instructions :global(p), .bookish-instructions :global(li) {
21
- font-family: var(--bookish-app-chrome-font-family);
22
- font-size: var(--bookish-app-chrome-font-size);
23
- line-height: var(--bookish-app-chrome-line-height);
20
+ .instructions :global(p),
21
+ .instructions :global(li) {
22
+ font-family: var(--app-font);
23
+ font-size: var(--app-chrome-font-size);
24
+ line-height: var(--app-line-height);
24
25
  margin-bottom: 0;
25
26
  }
26
27
 
27
- .bookish-instructions :global(p) {
28
+ .instructions :global(p) {
28
29
  margin-top: 0;
29
30
  }
30
- </style>
31
+ </style>
@@ -1,6 +1,8 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: {
4
+ editable: boolean;
5
+ };
4
6
  events: {
5
7
  [evt: string]: CustomEvent<any>;
6
8
  };
@@ -8,9 +10,9 @@ declare const __propDef: {
8
10
  default: {};
9
11
  };
10
12
  };
11
- export declare type InstructionsProps = typeof __propDef.props;
12
- export declare type InstructionsEvents = typeof __propDef.events;
13
- export declare type InstructionsSlots = typeof __propDef.slots;
13
+ export type InstructionsProps = typeof __propDef.props;
14
+ export type InstructionsEvents = typeof __propDef.events;
15
+ export type InstructionsSlots = typeof __propDef.slots;
14
16
  export default class Instructions extends SvelteComponentTyped<InstructionsProps, InstructionsEvents, InstructionsSlots> {
15
17
  }
16
18
  export {};