bookish-press 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/README.md +3 -1
  2. package/components/Auth.svelte +27 -24
  3. package/components/Auth.svelte.d.ts +4 -4
  4. package/components/Authentication.d.ts +2 -2
  5. package/components/BookPreview.svelte +75 -59
  6. package/components/BookPreview.svelte.d.ts +5 -5
  7. package/components/External.svelte +1 -1
  8. package/components/External.svelte.d.ts +3 -3
  9. package/components/Link.svelte +49 -3
  10. package/components/Link.svelte.d.ts +3 -4
  11. package/components/app/BookList.svelte +19 -0
  12. package/components/app/BookList.svelte.d.ts +18 -0
  13. package/components/app/Button.svelte +49 -0
  14. package/components/app/Button.svelte.d.ts +22 -0
  15. package/components/app/Feedback.svelte +47 -0
  16. package/components/app/Feedback.svelte.d.ts +18 -0
  17. package/components/app/Head.svelte +15 -0
  18. package/components/app/Head.svelte.d.ts +18 -0
  19. package/components/app/Large.svelte +8 -0
  20. package/components/app/Large.svelte.d.ts +27 -0
  21. package/components/app/Lead.svelte +12 -0
  22. package/components/app/Lead.svelte.d.ts +27 -0
  23. package/components/app/Link.svelte +24 -0
  24. package/components/app/Link.svelte.d.ts +20 -0
  25. package/components/app/Options.svelte +24 -0
  26. package/components/app/Options.svelte.d.ts +19 -0
  27. package/components/app/Paragraph.svelte +20 -0
  28. package/components/app/Paragraph.svelte.d.ts +18 -0
  29. package/components/app/Section.svelte +12 -0
  30. package/components/app/Section.svelte.d.ts +27 -0
  31. package/components/app/Table.svelte +32 -0
  32. package/components/app/Table.svelte.d.ts +27 -0
  33. package/components/app/TextInput.svelte +38 -0
  34. package/components/app/TextInput.svelte.d.ts +22 -0
  35. package/components/chapter/Atom.svelte +20 -6
  36. package/components/chapter/Atom.svelte.d.ts +3 -3
  37. package/components/chapter/Block.svelte +26 -21
  38. package/components/chapter/Block.svelte.d.ts +4 -4
  39. package/components/chapter/Callout.svelte +38 -7
  40. package/components/chapter/Callout.svelte.d.ts +4 -4
  41. package/components/chapter/CaptionedCode.svelte +67 -24
  42. package/components/chapter/CaptionedCode.svelte.d.ts +4 -4
  43. package/components/chapter/ChapterBody.svelte +62 -9
  44. package/components/chapter/ChapterBody.svelte.d.ts +5 -4
  45. package/components/chapter/Citations.svelte +86 -20
  46. package/components/chapter/Citations.svelte.d.ts +4 -4
  47. package/components/chapter/Code.svelte +152 -21
  48. package/components/chapter/Code.svelte.d.ts +3 -3
  49. package/components/chapter/Comment.svelte +39 -17
  50. package/components/chapter/Comment.svelte.d.ts +3 -3
  51. package/components/chapter/Definition.svelte +52 -18
  52. package/components/chapter/Definition.svelte.d.ts +5 -8
  53. package/components/chapter/Embed.svelte +155 -67
  54. package/components/chapter/Embed.svelte.d.ts +6 -4
  55. package/components/chapter/ErrorMessage.svelte +7 -2
  56. package/components/chapter/ErrorMessage.svelte.d.ts +4 -4
  57. package/components/chapter/ExtendedPrism.d.ts +2 -0
  58. package/components/chapter/ExtendedPrism.js +69 -0
  59. package/components/chapter/Figure.svelte +90 -0
  60. package/components/chapter/Figure.svelte.d.ts +24 -0
  61. package/components/chapter/Footnote.svelte +75 -12
  62. package/components/chapter/Footnote.svelte.d.ts +4 -4
  63. package/components/chapter/Format.svelte +63 -38
  64. package/components/chapter/Format.svelte.d.ts +5 -4
  65. package/components/chapter/InlineCode.svelte +16 -6
  66. package/components/chapter/InlineCode.svelte.d.ts +4 -4
  67. package/components/chapter/Label.svelte +38 -9
  68. package/components/chapter/Label.svelte.d.ts +4 -4
  69. package/components/chapter/Link.svelte +24 -19
  70. package/components/chapter/Link.svelte.d.ts +4 -4
  71. package/components/chapter/List.svelte +75 -8
  72. package/components/chapter/List.svelte.d.ts +4 -4
  73. package/components/chapter/Marginal.svelte +169 -27
  74. package/components/chapter/Marginal.svelte.d.ts +6 -3
  75. package/components/chapter/Paragraph.svelte +79 -6
  76. package/components/chapter/Paragraph.svelte.d.ts +4 -4
  77. package/components/chapter/Positioned.svelte +33 -0
  78. package/components/chapter/Positioned.svelte.d.ts +19 -0
  79. package/components/chapter/Problem.svelte +15 -0
  80. package/components/chapter/Problem.svelte.d.ts +27 -0
  81. package/components/chapter/Python.svelte +68 -21
  82. package/components/chapter/Python.svelte.d.ts +4 -4
  83. package/components/chapter/Quote.svelte +64 -11
  84. package/components/chapter/Quote.svelte.d.ts +4 -4
  85. package/components/chapter/Rule.svelte +12 -1
  86. package/components/chapter/Rule.svelte.d.ts +4 -4
  87. package/components/chapter/Table.svelte +36 -25
  88. package/components/chapter/Table.svelte.d.ts +4 -4
  89. package/components/chapter/Text.svelte +61 -36
  90. package/components/chapter/Text.svelte.d.ts +5 -4
  91. package/components/editor/BookishEditor.svelte +373 -244
  92. package/components/editor/BookishEditor.svelte.d.ts +9 -6
  93. package/components/editor/CalloutEditor.svelte +5 -5
  94. package/components/editor/CalloutEditor.svelte.d.ts +4 -4
  95. package/components/editor/CaptionedCodeEditor.svelte +16 -12
  96. package/components/editor/CaptionedCodeEditor.svelte.d.ts +4 -4
  97. package/components/editor/CaretContext.d.ts +48 -16
  98. package/components/editor/CaretState.d.ts +16 -44
  99. package/components/editor/CaretUtilities.d.ts +2 -2
  100. package/components/editor/CaretView.svelte +82 -0
  101. package/components/editor/CaretView.svelte.d.ts +25 -0
  102. package/components/editor/CitationsEditor.svelte +36 -25
  103. package/components/editor/CitationsEditor.svelte.d.ts +4 -4
  104. package/components/editor/Clipboard.d.ts +2 -2
  105. package/components/editor/Command.d.ts +13 -12
  106. package/components/editor/Commands.d.ts +1 -1
  107. package/components/editor/Commands.js +1114 -571
  108. package/components/editor/ConfirmButton.svelte +18 -12
  109. package/components/editor/ConfirmButton.svelte.d.ts +5 -4
  110. package/components/editor/DefinitionEditor.svelte +29 -21
  111. package/components/editor/DefinitionEditor.svelte.d.ts +4 -4
  112. package/components/editor/EmbedEditor.svelte +93 -43
  113. package/components/editor/EmbedEditor.svelte.d.ts +3 -3
  114. package/components/editor/Icon.svelte +17 -0
  115. package/components/editor/Icon.svelte.d.ts +16 -0
  116. package/components/editor/ImageChooser.svelte +53 -34
  117. package/components/editor/ImageChooser.svelte.d.ts +3 -3
  118. package/components/editor/InlineCodeEditor.svelte +7 -4
  119. package/components/editor/InlineCodeEditor.svelte.d.ts +4 -4
  120. package/components/editor/LabelEditor.svelte +20 -11
  121. package/components/editor/LabelEditor.svelte.d.ts +4 -4
  122. package/components/editor/LanguageEditor.svelte +10 -7
  123. package/components/editor/LanguageEditor.svelte.d.ts +3 -3
  124. package/components/editor/LinkEditor.svelte +64 -39
  125. package/components/editor/LinkEditor.svelte.d.ts +4 -4
  126. package/components/editor/Note.svelte +4 -3
  127. package/components/editor/Note.svelte.d.ts +6 -2
  128. package/components/editor/Permissions.svelte +95 -0
  129. package/components/editor/Permissions.svelte.d.ts +20 -0
  130. package/components/editor/PositionEditor.svelte +9 -6
  131. package/components/editor/PositionEditor.svelte.d.ts +4 -4
  132. package/components/editor/QuoteEditor.svelte +7 -2
  133. package/components/editor/QuoteEditor.svelte.d.ts +4 -4
  134. package/components/editor/Switch.svelte +55 -28
  135. package/components/editor/Switch.svelte.d.ts +4 -4
  136. package/components/editor/TableEditor.svelte +10 -0
  137. package/components/editor/TableEditor.svelte.d.ts +17 -0
  138. package/components/editor/TextEditor.svelte +83 -45
  139. package/components/editor/TextEditor.svelte.d.ts +5 -4
  140. package/components/editor/Toggle.svelte +11 -8
  141. package/components/editor/Toggle.svelte.d.ts +4 -4
  142. package/components/editor/Toolbar.svelte +191 -144
  143. package/components/editor/Toolbar.svelte.d.ts +5 -8
  144. package/components/editor/ToolbarGroup.svelte +17 -23
  145. package/components/editor/ToolbarGroup.svelte.d.ts +3 -4
  146. package/components/editor/ToolbarSpacer.svelte +8 -1
  147. package/components/editor/ToolbarSpacer.svelte.d.ts +6 -2
  148. package/components/editor/URLEditor.svelte +6 -8
  149. package/components/editor/URLEditor.svelte.d.ts +3 -3
  150. package/components/editor/UndoState.d.ts +3 -3
  151. package/components/editor/icons/annotate.svg +1 -0
  152. package/components/editor/icons/block.svg +1 -0
  153. package/components/editor/icons/bold.svg +1 -0
  154. package/components/editor/icons/bullets.svg +1 -0
  155. package/components/editor/icons/callout.svg +1 -0
  156. package/components/editor/icons/citation.svg +8 -0
  157. package/components/editor/icons/clear.svg +1 -0
  158. package/components/editor/icons/clipboard.svg +1 -0
  159. package/components/editor/icons/code.svg +1 -0
  160. package/components/editor/icons/columnafter.svg +1 -0
  161. package/components/editor/icons/columnbefore.svg +1 -0
  162. package/components/editor/icons/comment.svg +1 -0
  163. package/components/editor/icons/copy.svg +1 -0
  164. package/components/editor/icons/cut.svg +1 -0
  165. package/components/editor/icons/define.svg +7 -0
  166. package/components/editor/icons/deletecolumn.svg +1 -0
  167. package/components/editor/icons/deleterow.svg +1 -0
  168. package/components/editor/icons/footnote.svg +8 -0
  169. package/components/editor/icons/header1.svg +7 -0
  170. package/components/editor/icons/header2.svg +7 -0
  171. package/components/editor/icons/header3.svg +7 -0
  172. package/components/editor/icons/home.svg +1 -0
  173. package/components/editor/icons/indent.svg +1 -0
  174. package/components/editor/icons/italic.svg +1 -0
  175. package/components/editor/icons/label.svg +1 -0
  176. package/components/editor/icons/left.svg +1 -0
  177. package/components/editor/icons/level.svg +1 -0
  178. package/components/editor/icons/link.svg +1 -0
  179. package/components/editor/icons/list.svg +1 -0
  180. package/components/editor/icons/media.svg +1 -0
  181. package/components/editor/icons/middle.svg +1 -0
  182. package/components/editor/icons/numbers.svg +10 -0
  183. package/components/editor/icons/paragraph.svg +1 -0
  184. package/components/editor/icons/paste.svg +10 -0
  185. package/components/editor/icons/quote.svg +1 -0
  186. package/components/editor/icons/redo.svg +1 -0
  187. package/components/editor/icons/right.svg +1 -0
  188. package/components/editor/icons/rowabove.svg +1 -0
  189. package/components/editor/icons/rowbelow.svg +1 -0
  190. package/components/editor/icons/rule.svg +1 -0
  191. package/components/editor/icons/sub.svg +1 -0
  192. package/components/editor/icons/super.svg +1 -0
  193. package/components/editor/icons/table.svg +1 -0
  194. package/components/editor/icons/text.svg +1 -0
  195. package/components/editor/icons/time.svg +1 -0
  196. package/components/editor/icons/undo.svg +1 -0
  197. package/components/editor/icons/unindent.svg +1 -0
  198. package/components/editor/icons/unlink.svg +1 -0
  199. package/components/page/Acknowledgements.svelte +35 -24
  200. package/components/page/Acknowledgements.svelte.d.ts +4 -4
  201. package/components/page/Authors.svelte +34 -17
  202. package/components/page/Authors.svelte.d.ts +7 -6
  203. package/components/page/BookLoader.svelte +59 -0
  204. package/components/page/BookLoader.svelte.d.ts +16 -0
  205. package/components/page/BulkReferenceEditor.svelte +54 -23
  206. package/components/page/BulkReferenceEditor.svelte.d.ts +4 -4
  207. package/components/page/Chapter.svelte +234 -143
  208. package/components/page/Chapter.svelte.d.ts +3 -3
  209. package/components/page/ChapterContext.d.ts +4 -4
  210. package/components/page/ChapterNumber.svelte +9 -0
  211. package/components/page/ChapterNumber.svelte.d.ts +27 -0
  212. package/components/page/ChapterTitle.svelte +16 -0
  213. package/components/page/ChapterTitle.svelte.d.ts +18 -0
  214. package/components/page/Contexts.d.ts +42 -22
  215. package/components/page/Contexts.js +129 -17
  216. package/components/page/DefinitionView.svelte +129 -90
  217. package/components/page/DefinitionView.svelte.d.ts +3 -3
  218. package/components/page/Description.svelte +31 -19
  219. package/components/page/Description.svelte.d.ts +4 -4
  220. package/components/page/Edition.svelte +135 -81
  221. package/components/page/Edition.svelte.d.ts +5 -6
  222. package/components/page/EditionLoader.svelte +99 -0
  223. package/components/page/EditionLoader.svelte.d.ts +18 -0
  224. package/components/page/Editions.svelte +106 -0
  225. package/components/page/Editions.svelte.d.ts +14 -0
  226. package/components/page/Glossary.svelte +65 -49
  227. package/components/page/Glossary.svelte.d.ts +4 -4
  228. package/components/page/Header.svelte +143 -56
  229. package/components/page/Header.svelte.d.ts +8 -6
  230. package/components/page/Index.svelte +116 -80
  231. package/components/page/Index.svelte.d.ts +4 -4
  232. package/components/page/Instructions.svelte +18 -17
  233. package/components/page/Instructions.svelte.d.ts +6 -4
  234. package/components/page/License.svelte +39 -23
  235. package/components/page/License.svelte.d.ts +4 -4
  236. package/components/page/Loading.svelte +102 -12
  237. package/components/page/Loading.svelte.d.ts +6 -2
  238. package/components/page/Media.svelte +81 -53
  239. package/components/page/Media.svelte.d.ts +4 -4
  240. package/components/page/MediaPreview.svelte +26 -8
  241. package/components/page/MediaPreview.svelte.d.ts +3 -3
  242. package/components/page/Muted.svelte +10 -0
  243. package/components/page/Muted.svelte.d.ts +27 -0
  244. package/components/page/Outline.svelte +279 -59
  245. package/components/page/Outline.svelte.d.ts +3 -3
  246. package/components/page/Page.svelte +40 -9
  247. package/components/page/Page.svelte.d.ts +3 -3
  248. package/components/page/PageHeader.svelte +14 -0
  249. package/components/page/PageHeader.svelte.d.ts +18 -0
  250. package/components/page/PageParagraph.svelte +18 -0
  251. package/components/page/PageParagraph.svelte.d.ts +27 -0
  252. package/components/page/PossibleChapter.svelte +7 -7
  253. package/components/page/PossibleChapter.svelte.d.ts +4 -4
  254. package/components/page/PossibleReference.svelte +6 -11
  255. package/components/page/PossibleReference.svelte.d.ts +6 -7
  256. package/components/page/Print.svelte +27 -3
  257. package/components/page/Print.svelte.d.ts +4 -4
  258. package/components/page/Publish.svelte +134 -0
  259. package/components/page/Publish.svelte.d.ts +14 -0
  260. package/components/page/Reference.svelte +259 -117
  261. package/components/page/Reference.svelte.d.ts +5 -5
  262. package/components/page/References.svelte +45 -48
  263. package/components/page/References.svelte.d.ts +4 -4
  264. package/components/page/Rows.svelte +54 -0
  265. package/components/page/Rows.svelte.d.ts +27 -0
  266. package/components/page/Search.svelte +88 -63
  267. package/components/page/Search.svelte.d.ts +4 -4
  268. package/components/page/Status.svelte +46 -39
  269. package/components/page/Status.svelte.d.ts +4 -9
  270. package/components/page/SubdomainEditor.svelte +41 -27
  271. package/components/page/SubdomainEditor.svelte.d.ts +4 -4
  272. package/components/page/TableOfContents.svelte +264 -191
  273. package/components/page/TableOfContents.svelte.d.ts +4 -4
  274. package/components/page/TableOfContentsImage.svelte +8 -8
  275. package/components/page/TableOfContentsImage.svelte.d.ts +3 -3
  276. package/components/page/TableOfContentsRow.svelte +97 -34
  277. package/components/page/TableOfContentsRow.svelte.d.ts +4 -4
  278. package/components/page/ThemeEditor.svelte +177 -39
  279. package/components/page/ThemeEditor.svelte.d.ts +4 -4
  280. package/components/page/ThemeEditorPreview.svelte +35 -23
  281. package/components/page/ThemeEditorPreview.svelte.d.ts +5 -5
  282. package/components/page/ThemeSetEditor.svelte +15 -13
  283. package/components/page/ThemeSetEditor.svelte.d.ts +4 -4
  284. package/components/page/ThemeVariableEditor.svelte +24 -15
  285. package/components/page/ThemeVariableEditor.svelte.d.ts +3 -3
  286. package/components/page/Title.svelte +12 -0
  287. package/components/page/Title.svelte.d.ts +27 -0
  288. package/components/page/Unknown.svelte +28 -21
  289. package/components/page/Unknown.svelte.d.ts +4 -4
  290. package/components/page/margins.js +50 -33
  291. package/index.d.ts +13 -0
  292. package/index.js +14 -0
  293. package/models/CRUD.d.ts +27 -0
  294. package/models/CRUD.js +262 -0
  295. package/models/Firebase.d.ts +1 -0
  296. package/models/Firebase.js +26 -16
  297. package/models/book/Book.d.ts +40 -39
  298. package/models/book/Book.js +121 -121
  299. package/models/book/BookMedia.d.ts +3 -3
  300. package/models/book/BookMedia.js +22 -16
  301. package/models/book/BookSaveStatus.d.ts +7 -0
  302. package/models/book/BookSaveStatus.js +8 -0
  303. package/models/book/Chapter.d.ts +50 -39
  304. package/models/book/Chapter.js +189 -198
  305. package/models/book/ChapterID.js +7 -7
  306. package/models/book/Definition.d.ts +1 -1
  307. package/models/book/Edition.d.ts +87 -61
  308. package/models/book/Edition.js +460 -309
  309. package/models/book/Reference.d.ts +24 -0
  310. package/models/book/Reference.js +78 -0
  311. package/models/book/Schema.d.ts +168 -0
  312. package/models/book/Schema.js +115 -0
  313. package/models/book/Theme.d.ts +44 -37
  314. package/models/book/Theme.js +452 -52
  315. package/models/book/ThemeColors.d.ts +1 -1
  316. package/models/book/Words.d.ts +2 -0
  317. package/models/book/Words.js +110 -0
  318. package/models/chapter/AtomNode.d.ts +4 -4
  319. package/models/chapter/AtomNode.js +20 -13
  320. package/models/chapter/BlockNode.d.ts +9 -10
  321. package/models/chapter/BlockNode.js +32 -13
  322. package/models/chapter/BlocksNode.d.ts +10 -10
  323. package/models/chapter/BlocksNode.js +315 -120
  324. package/models/chapter/BlocksNode.test.js +494 -228
  325. package/models/chapter/Bookkeeping.d.ts +1 -1
  326. package/models/chapter/CalloutNode.d.ts +3 -3
  327. package/models/chapter/CalloutNode.js +34 -12
  328. package/models/chapter/Caret.d.ts +9 -7
  329. package/models/chapter/Caret.js +11 -6
  330. package/models/chapter/ChapterNode.d.ts +11 -11
  331. package/models/chapter/ChapterNode.js +70 -33
  332. package/models/chapter/CitationsNode.d.ts +3 -3
  333. package/models/chapter/CitationsNode.js +31 -12
  334. package/models/chapter/CodeNode.d.ts +11 -6
  335. package/models/chapter/CodeNode.js +143 -34
  336. package/models/chapter/CommentNode.d.ts +5 -5
  337. package/models/chapter/CommentNode.js +29 -13
  338. package/models/chapter/DefinitionNode.d.ts +2 -2
  339. package/models/chapter/DefinitionNode.js +15 -7
  340. package/models/chapter/Edit.d.ts +3 -3
  341. package/models/chapter/EmbedNode.d.ts +9 -5
  342. package/models/chapter/EmbedNode.js +108 -35
  343. package/models/chapter/ErrorNode.d.ts +2 -2
  344. package/models/chapter/ErrorNode.js +34 -12
  345. package/models/chapter/FootnoteNode.d.ts +5 -5
  346. package/models/chapter/FootnoteNode.js +34 -16
  347. package/models/chapter/FormatNode.d.ts +10 -10
  348. package/models/chapter/FormatNode.js +237 -106
  349. package/models/chapter/FormatNode.test.js +87 -45
  350. package/models/chapter/InlineCodeNode.d.ts +2 -2
  351. package/models/chapter/InlineCodeNode.js +22 -9
  352. package/models/chapter/LabelNode.d.ts +4 -4
  353. package/models/chapter/LabelNode.js +31 -13
  354. package/models/chapter/LinkNode.d.ts +2 -2
  355. package/models/chapter/LinkNode.js +21 -9
  356. package/models/chapter/ListNode.d.ts +8 -8
  357. package/models/chapter/ListNode.js +99 -38
  358. package/models/chapter/ListNode.test.js +29 -24
  359. package/models/chapter/MetadataNode.d.ts +3 -3
  360. package/models/chapter/MetadataNode.js +13 -5
  361. package/models/chapter/Node.d.ts +5 -3
  362. package/models/chapter/Node.js +76 -29
  363. package/models/chapter/Node.test.js +20 -18
  364. package/models/chapter/ParagraphNode.d.ts +6 -6
  365. package/models/chapter/ParagraphNode.js +84 -29
  366. package/models/chapter/ParagraphNode.test.js +22 -13
  367. package/models/chapter/Parser.d.ts +27 -27
  368. package/models/chapter/Parser.js +220 -206
  369. package/models/chapter/Parser.test.js +16 -16
  370. package/models/chapter/Position.d.ts +1 -1
  371. package/models/chapter/QuoteNode.d.ts +6 -6
  372. package/models/chapter/QuoteNode.js +61 -23
  373. package/models/chapter/RootNode.d.ts +4 -4
  374. package/models/chapter/RuleNode.d.ts +2 -2
  375. package/models/chapter/RuleNode.js +31 -11
  376. package/models/chapter/TableNode.d.ts +8 -6
  377. package/models/chapter/TableNode.js +89 -34
  378. package/models/chapter/TableNode.test.js +22 -24
  379. package/models/chapter/TextNode.d.ts +6 -6
  380. package/models/chapter/TextNode.js +72 -32
  381. package/models/chapter/TextNode.test.js +4 -4
  382. package/package.json +108 -26
  383. package/util/getSubdomain.js +8 -6
  384. package/util/isMobile.js +1 -1
  385. package/util/mineReference.d.ts +3 -2
  386. package/util/mineReference.js +67 -29
  387. package/util/scrollToEyeLevel.js +6 -1
  388. package/components/chapter/renderPosition.d.ts +0 -3
  389. package/components/chapter/renderPosition.js +0 -4
  390. package/components/editor/ToolbarIcon.svelte +0 -22
  391. package/components/editor/ToolbarIcon.svelte.d.ts +0 -16
  392. package/components/page/Alert.svelte +0 -11
  393. package/components/page/Alert.svelte.d.ts +0 -23
  394. package/components/page/Revisions.svelte +0 -124
  395. package/components/page/Revisions.svelte.d.ts +0 -14
  396. package/models/BookLoader.d.ts +0 -2
  397. package/models/BookLoader.js +0 -67
  398. package/models/Firestore.d.ts +0 -22
  399. package/models/Firestore.js +0 -194
  400. package/models/chapter/ReferenceNode.d.ts +0 -29
  401. package/models/chapter/ReferenceNode.js +0 -48
  402. package/models/loadEdition.d.ts +0 -5
  403. package/models/loadEdition.js +0 -16
@@ -1,19 +1,18 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import ErrorNode from "../../models/chapter/ErrorNode";
3
- import FormatNode from "../../models/chapter/FormatNode";
4
- import type ReferenceNode from "../../models/chapter/ReferenceNode";
2
+ import FormatNode from '../../models/chapter/FormatNode';
3
+ import type Ref from '../../models/book/Reference';
5
4
  declare const __propDef: {
6
5
  props: {
7
- node: FormatNode | ErrorNode | ReferenceNode;
6
+ node: FormatNode | Ref;
8
7
  };
9
8
  events: {
10
9
  [evt: string]: CustomEvent<any>;
11
10
  };
12
11
  slots: {};
13
12
  };
14
- export declare type PossibleReferenceProps = typeof __propDef.props;
15
- export declare type PossibleReferenceEvents = typeof __propDef.events;
16
- export declare type PossibleReferenceSlots = typeof __propDef.slots;
13
+ export type PossibleReferenceProps = typeof __propDef.props;
14
+ export type PossibleReferenceEvents = typeof __propDef.events;
15
+ export type PossibleReferenceSlots = typeof __propDef.slots;
17
16
  export default class PossibleReference extends SvelteComponentTyped<PossibleReferenceProps, PossibleReferenceEvents, PossibleReferenceSlots> {
18
17
  }
19
18
  export {};
@@ -3,6 +3,30 @@ import { getEdition } from './Contexts';
3
3
  let edition = getEdition();
4
4
  </script>
5
5
 
6
- {#each $edition.getChapters().filter(chapter => !chapter.isForthcoming()) as chapter }
7
- <Chapter chapter={chapter} print />
8
- {/each}
6
+ {#if $edition}
7
+ {#each $edition
8
+ .getChapters()
9
+ .filter((chapter) => !chapter.isForthcoming()) as chapter}
10
+ <Chapter {chapter} print />
11
+ {/each}
12
+ {/if}
13
+
14
+ <style>
15
+ @media print {
16
+ :global(.bookish-chapter-header) {
17
+ break-before: page;
18
+ }
19
+
20
+ :global(body) {
21
+ font-size: 16pt;
22
+ }
23
+
24
+ @page {
25
+ margin: 1in;
26
+ }
27
+
28
+ :global(h1, h2, h3, h4, h5, h6) {
29
+ break-after: avoid !important;
30
+ }
31
+ }
32
+ </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 PrintProps = typeof __propDef.props;
10
- export declare type PrintEvents = typeof __propDef.events;
11
- export declare type PrintSlots = typeof __propDef.slots;
9
+ export type PrintProps = typeof __propDef.props;
10
+ export type PrintEvents = typeof __propDef.events;
11
+ export type PrintSlots = typeof __propDef.slots;
12
12
  export default class Print extends SvelteComponentTyped<PrintProps, PrintEvents, PrintSlots> {
13
13
  }
14
14
  export {};
@@ -0,0 +1,134 @@
1
+ <script>import Parser from '../../models/chapter/Parser';
2
+ import BookishEditor from '../editor/BookishEditor.svelte';
3
+ import Switch from '../editor/Switch.svelte';
4
+ import { getUser, getEdition, getLeasee, isEditionEditable, lease, } from './Contexts';
5
+ import Format from '../chapter/Format.svelte';
6
+ import Note from '../editor/Note.svelte';
7
+ import Instructions from './Instructions.svelte';
8
+ import Link from '../Link.svelte';
9
+ import { PUBLIC_CONTEXT } from '$env/static/public';
10
+ import Button from '../app/Button.svelte';
11
+ import { publish } from '../../models/CRUD';
12
+ import Feedback from '../app/Feedback.svelte';
13
+ let auth = getUser();
14
+ let edition = getEdition();
15
+ let editable = isEditionEditable();
16
+ let publishing = false;
17
+ let feedback = undefined;
18
+ let error = undefined;
19
+ let url = undefined;
20
+ async function requestPublish() {
21
+ if ($edition) {
22
+ publishing = true;
23
+ error = undefined;
24
+ feedback = 'Binding the book, this could take a minute...';
25
+ try {
26
+ const result = await publish($edition);
27
+ if (typeof result === 'string') {
28
+ error = result;
29
+ feedback = undefined;
30
+ }
31
+ else {
32
+ url = result.url;
33
+ }
34
+ }
35
+ catch (err) {
36
+ console.log(err);
37
+ feedback = undefined;
38
+ error = 'Unable to bundle the book for download :(';
39
+ }
40
+ finally {
41
+ publishing = false;
42
+ }
43
+ }
44
+ }
45
+ let publisher = undefined;
46
+ $: {
47
+ if ($auth && $auth.user)
48
+ updateUserClaims();
49
+ }
50
+ async function updateUserClaims() {
51
+ if ($auth === undefined || $auth.user === null)
52
+ return;
53
+ const token = await $auth.user.getIdTokenResult();
54
+ publisher =
55
+ 'publisher' in token.claims && token.claims.publisher === true;
56
+ }
57
+ </script>
58
+
59
+ {#if $edition && (publisher === true || PUBLIC_CONTEXT === 'local')}
60
+ <Instructions {editable}>
61
+ Ready to publish this edition? Write a summary then hit the switch.
62
+ </Instructions>
63
+
64
+ <div class="publisher">
65
+ <div class="summary">
66
+ <BookishEditor
67
+ text={$edition.summary}
68
+ parser={(text) =>
69
+ Parser.parseFormat(undefined, text).withTextIfEmpty()}
70
+ save={(newSummary) =>
71
+ $edition
72
+ ? edition.set(
73
+ $edition.withSummary(newSummary.toBookdown())
74
+ )
75
+ : undefined}
76
+ chapter={false}
77
+ component={Format}
78
+ placeholder="Summarize this edition's changes to publish."
79
+ leasee={getLeasee(auth, edition, 'summary')}
80
+ lease={(lock) => lease(auth, edition, 'summary', lock)}
81
+ />
82
+ </div>
83
+ <Switch
84
+ options={['hidden', 'published']}
85
+ enabled={$edition.published !== null || $edition.summary.length > 0}
86
+ value={$edition.published !== null ? 'published' : 'hidden'}
87
+ edit={(published) =>
88
+ $edition
89
+ ? edition.set(
90
+ $edition.asPublished(published === 'published')
91
+ )
92
+ : undefined}
93
+ />
94
+ <Button
95
+ tooltip="Publish the book online"
96
+ disabled={publishing}
97
+ command={() => requestPublish()}>↓ download</Button
98
+ >
99
+ </div>
100
+ {#if error}
101
+ <Feedback error>{error}</Feedback>
102
+ {:else if url}
103
+ <p>Your book is <Link to={url}>ready for download</Link>.</p>
104
+ {:else if feedback}
105
+ <Feedback>{feedback}</Feedback>
106
+ {/if}
107
+ <div>
108
+ <Note
109
+ >{#if $edition.published}Last published {new Date(
110
+ $edition.published
111
+ ).toLocaleDateString('en-us')}{/if}</Note
112
+ >
113
+ </div>
114
+ {:else}
115
+ <Instructions {editable}>
116
+ You don't yet have publishing privileges. <Link
117
+ to="mailto:amy@amyjko.com">Write Amy</Link
118
+ > to schedule a chat about your book and ask for publishing privileges.
119
+ </Instructions>
120
+ {/if}
121
+
122
+ <style>
123
+ .publisher {
124
+ display: flex;
125
+ flex-direction: row;
126
+ flex-wrap: nowrap;
127
+ width: 100%;
128
+ align-items: baseline;
129
+ }
130
+
131
+ .summary {
132
+ flex: 1;
133
+ }
134
+ </style>
@@ -0,0 +1,14 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: Record<string, never>;
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export type PublishProps = typeof __propDef.props;
10
+ export type PublishEvents = typeof __propDef.events;
11
+ export type PublishSlots = typeof __propDef.slots;
12
+ export default class Publish extends SvelteComponentTyped<PublishProps, PublishEvents, PublishSlots> {
13
+ }
14
+ export {};
@@ -1,145 +1,287 @@
1
- <script>import { afterUpdate } from "svelte";
2
- import TextEditor from "../editor/TextEditor.svelte";
3
- import { getEdition, isEditable } from "./Contexts";
4
- export let node;
5
- let editable = isEditable();
1
+ <svelte:options immutable={true} />
2
+
3
+ <script>import Reference from '../../models/book/Reference';
4
+ import Button from '../app/Button.svelte';
5
+ import Table from '../app/Table.svelte';
6
+ import ConfirmButton from '../editor/ConfirmButton.svelte';
7
+ import TextEditor from '../editor/TextEditor.svelte';
8
+ import { getEdition, isEditionEditable } from './Contexts';
9
+ import Link from '../Link.svelte';
10
+ import Note from '../editor/Note.svelte';
11
+ export let reference;
12
+ let editable = isEditionEditable();
6
13
  let edition = getEdition();
7
- let reference = null;
8
14
  let editing = false;
9
- let entered = false;
10
- afterUpdate(() => {
11
- if (editing && entered && reference) {
12
- entered = false;
13
- reference.querySelector("input")?.focus();
14
- }
15
- });
16
15
  function startEditing() {
17
16
  editing = true;
18
- entered = true;
19
17
  }
20
18
  function stopEditing() {
21
19
  editing = false;
22
20
  }
21
+ function move(field, direction) {
22
+ let fields = Array.from(document.querySelectorAll('input[type="text"]'));
23
+ let index = fields.indexOf(field);
24
+ if (index >= 0) {
25
+ const newInput = direction < 0 && index > 0
26
+ ? fields[index - 1]
27
+ : direction > 0 && index < fields.length - 1
28
+ ? fields[index + 1]
29
+ : undefined;
30
+ if (newInput)
31
+ newInput.focus();
32
+ }
33
+ }
23
34
  </script>
24
35
 
36
+ {#if editable && !reference.short}
37
+ <ConfirmButton
38
+ tooltip="delete reference {reference.title}"
39
+ commandLabel="- reference"
40
+ confirmLabel="Confirm"
41
+ command={() =>
42
+ $edition
43
+ ? edition.set($edition.withoutReference(reference.citationID))
44
+ : undefined}
45
+ />
46
+ <Button
47
+ tooltip="stop editing reference"
48
+ command={() => (editing ? stopEditing() : startEditing())}
49
+ >{editing ? 'done' : 'edit'}</Button
50
+ >
51
+ {/if}
25
52
  <!-- If a short version was requested, try to abbreviate the authors. -->
26
- {#if node.short }
27
- {@const authorList = node.authors.split(",") }
28
- {@const authors = authorList.length === 1 ? authorList[0] :
29
- authorList.length === 2 ? authorList[0].trim() + " & " + authorList[1].trim() :
30
- authorList[0].trim() + ", et al."}
31
- <span data-nodeid={node.nodeID} class="bookish-reference-text">
53
+ {#if reference.short}
54
+ {@const authorList = reference.authors.split(',')}
55
+ {@const authors =
56
+ authorList.length === 1
57
+ ? authorList[0]
58
+ : authorList.length === 2
59
+ ? authorList[0].trim() + ' & ' + authorList[1].trim()
60
+ : authorList[0].trim() + ', et al.'}
61
+ <p class="reference">
32
62
  {authors}
33
- ({node.year}).
34
- {#if node.url === null }
35
- {node.title}
63
+ ({reference.year}).
64
+ {#if reference.url === null}
65
+ {reference.title}
36
66
  {:else}
37
- <a href={node.url} target={"_blank"}>{node.title}</a>
67
+ <Link to={reference.url}>{reference.title}</Link>
38
68
  {/if}
39
- {node.title.charAt(node.title.length - 1) === "?" ? "" : "."}
40
- <em>{node.source}</em>
41
- </span>
69
+ {reference.title.charAt(reference.title.length - 1) === '?' ? '' : '.'}
70
+ <em>{reference.source}</em>
71
+ </p>
72
+ {:else if !editable || !editing}
73
+ <!-- If not editable, just render the reference. -->
74
+ <p class="reference">
75
+ {#if reference.authors}{reference.authors}{:else}<em>Authors</em>{/if}
76
+ {#if reference.year}({reference.year}){:else}<em>Year</em>{/if}. {#if reference.url === null || reference.url.length === 0}{#if reference.title}{reference.title}{:else}<em
77
+ >Title</em
78
+ >{/if}{:else}<Link to={reference.url}
79
+ >{#if reference.title}{reference.title}{:else}<em>Title</em
80
+ >{/if}</Link
81
+ >{/if}.<em
82
+ >&nbsp;{#if reference.source}{reference.source}{:else}Source{/if}</em
83
+ >.
84
+ {#if reference.summary}<aside class="summary">{reference.summary}</aside
85
+ >{/if}
86
+ </p>
42
87
  {:else}
43
88
  <!-- If editable, place in rows to make room for text editors to not have to wrap. -->
44
- <span
45
- data-nodeid={node.nodeID}
46
- class="bookish-reference-text"
47
- tabIndex=0
48
- on:click|stopPropagation={() => { if(editable && !editing) startEditing(); }}
49
- on:keydown={event => { if(editable && !editing && (event.key === "Enter" || event.key === " ")) { startEditing(); event.stopPropagation(); }}}
50
- bind:this={reference}
51
- >
89
+ <Table>
90
+ <!-- CitationID -->
91
+ <tr>
92
+ <td width="25%">id</td>
93
+ <td>
94
+ <TextEditor
95
+ text={reference.citationID}
96
+ label={'reference ID'}
97
+ placeholder="reference ID"
98
+ saveOnExit
99
+ valid={(text) => {
100
+ if (text.length === 0)
101
+ return "reference ID can't be empty.";
102
+ if ($edition && text in $edition.references) {
103
+ const existing = $edition.references[text];
104
+ if (
105
+ existing instanceof Reference &&
106
+ !reference.equals(existing)
107
+ )
108
+ return 'ID already taken';
109
+ }
110
+ }}
111
+ save={(text) =>
112
+ $edition
113
+ ? edition.set(
114
+ $edition.withEditedReferenceID(
115
+ text,
116
+ reference
117
+ )
118
+ )
119
+ : undefined}
120
+ {move}
121
+ /><Note>determines order, a-z</Note>
122
+ </td>
123
+ </tr>
52
124
  <!-- Authors -->
53
- {#if editable && editing }
54
- <em>
125
+ <tr>
126
+ <td width="25%">authors</td>
127
+ <td>
55
128
  <TextEditor
56
- startText={node.authors}
57
- label={'Author list editor.'}
58
- placeholder="Authors"
59
- valid={ text => {
60
- if(text.length === 0) return "Authors can't be empty.";
129
+ text={reference.authors}
130
+ label={'author list editor'}
131
+ placeholder="authors"
132
+ valid={(text) => {
133
+ if (text.length === 0) return "Authors can't be empty.";
61
134
  }}
62
- save={text => $edition.editReference(node.withAuthors(text))}
63
- width={60}
135
+ save={(text) =>
136
+ $edition
137
+ ? edition.set(
138
+ $edition.withEditedReference(
139
+ reference.withAuthors(text)
140
+ )
141
+ )
142
+ : undefined}
143
+ {move}
64
144
  />
65
- </em>
66
- {:else}
67
- {#if node.authors }
68
- {node.authors}
69
- {:else}
70
- <em>Authors</em>
71
- {/if}
72
- {/if}
145
+ </td>
146
+ </tr>
73
147
  <!-- Year -->
74
- <br/>({#if editable && editing }
148
+ <tr>
149
+ <td>year</td>
150
+ <td>
75
151
  <TextEditor
76
- startText={node.year}
77
- label={'Year editor.'}
78
- placeholder="Year"
79
- valid={ text => {
80
- if(text.length === 0) return "Year can't be empty";
81
- if(!/1?[0-9)[0-9]{2}/.test(text)) return "Not a valid year"
152
+ text={reference.year}
153
+ label={'year editor'}
154
+ placeholder="year"
155
+ valid={(text) => {
156
+ if (text.length === 0) return "Year can't be empty";
157
+ if (!/1?[0-9)[0-9]{2}/.test(text))
158
+ return 'Not a valid year';
82
159
  }}
83
- save={text => $edition.editReference(node.withYear(text))}
160
+ save={(text) =>
161
+ $edition
162
+ ? edition.set(
163
+ $edition.withEditedReference(
164
+ reference.withYear(text)
165
+ )
166
+ )
167
+ : undefined}
168
+ {move}
84
169
  />
85
- {:else}
86
- {#if node.year }{node.year}{:else}<em>Year</em>{/if}
87
- {/if}).
170
+ </td>
171
+ </tr>
88
172
  <!-- Title -->
89
- {#if editable && editing }
90
- <br/><TextEditor
91
- startText={node.title}
92
- label={'Title editor.'}
93
- placeholder="Title"
94
- valid={ text => {
95
- if(text.length === 0) return "Title can't be empty.";
96
- }}
97
- save={text => $edition.editReference(node.withTitle(text))}
98
- width={60}
99
- />
100
- {:else}
101
- {#if node.url === null}
102
- {#if node.title}{node.title}{:else}<em>Title</em>{/if}
103
- {:else}
104
- <a href={node.url} target={"_blank"}>{#if node.title}{node.title}{:else}<em>Title</em>{/if}</a>
105
- {/if}
106
- {/if}.
107
- <!-- Source -->
108
- {#if editable && editing }
109
- <br/><em>
173
+ <tr>
174
+ <td>title</td>
175
+ <td>
110
176
  <TextEditor
111
- startText={node.source}
112
- label={'Source editor.'}
113
- placeholder="Source"
114
- valid={ text => {
115
- if(text.length === 0) return "Source can't be empty";
177
+ text={reference.title}
178
+ label={'title editor'}
179
+ placeholder="title"
180
+ valid={(text) => {
181
+ if (text.length === 0) return "Title can't be empty.";
116
182
  }}
117
- save={text => $edition.editReference(node.withSource(text))}
118
- width={60}
183
+ save={(text) =>
184
+ $edition
185
+ ? edition.set(
186
+ $edition.withEditedReference(
187
+ reference.withTitle(text)
188
+ )
189
+ )
190
+ : undefined}
191
+ {move}
119
192
  />
120
- </em>
121
- {:else}
122
- <em>{#if node.source}{node.source}{:else}Source{/if}</em>
123
- {/if}.
124
- {#if editable && editing }
125
- <br/><TextEditor
126
- startText={node.summary}
127
- label={'Summary editor.'}
128
- placeholder="Summary"
129
- valid={ () => undefined }
130
- save={text => $edition.editReference(node.withSummary(text))}
131
- width={60}
132
- />
133
- {:else}
134
- {#if node.summary}
135
- <span class="bookish-reference-summary">{node.summary}</span>
136
- {/if}
137
- {/if}
138
- {#if editing }
139
- <br/><button
140
- on:click|stopPropagation={() => stopEditing()}
141
- on:keydown={event => { if(editing && (event.key === "Enter" || event.key === " ")) { stopEditing(); event.stopPropagation(); }}}
142
- >done editing</button>
143
- {/if}
144
- </span>
145
- {/if}
193
+ </td>
194
+ </tr>
195
+ <!-- Source -->
196
+ <tr>
197
+ <td>source</td>
198
+ <td>
199
+ <em>
200
+ <TextEditor
201
+ text={reference.source}
202
+ label={'source editor'}
203
+ placeholder="source"
204
+ valid={(text) => {
205
+ if (text.length === 0)
206
+ return "Source can't be empty";
207
+ }}
208
+ save={(text) =>
209
+ $edition
210
+ ? edition.set(
211
+ $edition.withEditedReference(
212
+ reference.withSource(text)
213
+ )
214
+ )
215
+ : undefined}
216
+ {move}
217
+ />
218
+ </em>
219
+ </td>
220
+ </tr>
221
+ <!-- URL -->
222
+ <tr>
223
+ <td>url</td>
224
+ <td>
225
+ <TextEditor
226
+ text={reference.url}
227
+ label={'url editor'}
228
+ placeholder="url"
229
+ valid={() => undefined}
230
+ save={(text) =>
231
+ $edition
232
+ ? edition.set(
233
+ $edition.withEditedReference(
234
+ reference.withURL(text)
235
+ )
236
+ )
237
+ : undefined}
238
+ {move}
239
+ />
240
+ </td>
241
+ </tr>
242
+ <tr>
243
+ <td>summary</td>
244
+ <td>
245
+ <TextEditor
246
+ text={reference.summary}
247
+ label={'summary editor'}
248
+ placeholder="summary"
249
+ valid={() => undefined}
250
+ save={(text) =>
251
+ $edition
252
+ ? edition.set(
253
+ $edition.withEditedReference(
254
+ reference.withSummary(text)
255
+ )
256
+ )
257
+ : undefined}
258
+ {move}
259
+ />
260
+ </td>
261
+ </tr>
262
+ </Table>
263
+ {/if}
264
+
265
+ <style>
266
+ .reference {
267
+ line-height: var(--bookish-paragraph-line-height);
268
+ margin-top: 0;
269
+ margin-bottom: var(--bookish-header-spacing);
270
+ }
271
+
272
+ .reference .summary {
273
+ font-size: var(--bookish-small-font-size);
274
+ padding-left: var(--bookish-block-padding);
275
+ border-left: 1px solid var(--bookish-border-color-light);
276
+ margin-top: var(--bookish-block-padding);
277
+ font-style: italic;
278
+ }
279
+
280
+ td:first-child {
281
+ font-style: italic;
282
+ }
283
+
284
+ td {
285
+ line-height: 1;
286
+ }
287
+ </style>
@@ -1,17 +1,17 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type ReferenceNode from "../../models/chapter/ReferenceNode";
2
+ import Reference from '../../models/book/Reference';
3
3
  declare const __propDef: {
4
4
  props: {
5
- node: ReferenceNode;
5
+ reference: Reference;
6
6
  };
7
7
  events: {
8
8
  [evt: string]: CustomEvent<any>;
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type ReferenceProps = typeof __propDef.props;
13
- export declare type ReferenceEvents = typeof __propDef.events;
14
- export declare type ReferenceSlots = typeof __propDef.slots;
12
+ export type ReferenceProps = typeof __propDef.props;
13
+ export type ReferenceEvents = typeof __propDef.events;
14
+ export type ReferenceSlots = typeof __propDef.slots;
15
15
  export default class Reference extends SvelteComponentTyped<ReferenceProps, ReferenceEvents, ReferenceSlots> {
16
16
  }
17
17
  export {};