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,6 +1,10 @@
1
- <script>import URLEditor from "./URLEditor.svelte";
2
- import { getCaret, getChapter, getEdition } from "../page/Contexts";
3
- import ToolbarIcon from "./ToolbarIcon.svelte";
1
+ <script>import URLEditor from './URLEditor.svelte';
2
+ import { getChapter, getEdition } from '../page/Contexts';
3
+ import Icon from './Icon.svelte';
4
+ import Button from '../app/Button.svelte';
5
+ import UnlinkIcon from './icons/unlink.svg?raw';
6
+ import Options from '../app/Options.svelte';
7
+ import { getCaret } from '../page/Contexts';
4
8
  export let link;
5
9
  let caret = getCaret();
6
10
  let edition = getEdition();
@@ -9,67 +13,88 @@ $: url = link.getMeta();
9
13
  function saveEdit(value) {
10
14
  $caret?.edit(link, link.withMeta(value));
11
15
  }
12
- function handleChapterChange(e) {
13
- const target = e.target;
14
- saveEdit(target.value);
15
- }
16
16
  function isValidURL(url) {
17
17
  // Is it a valid URL?
18
18
  try {
19
19
  let test = new URL(url);
20
- if (test.protocol === "http:" || test.protocol === "https:")
20
+ if (test.protocol === 'http:' || test.protocol === 'https:')
21
21
  return true;
22
22
  }
23
23
  catch (_) { }
24
24
  return false;
25
25
  }
26
- function getURLError(urlOrChapter) {
26
+ function validate(urlOrChapter) {
27
27
  if (urlOrChapter.length === 0)
28
- return "Can't be empty.";
28
+ return "link URL can't be empty";
29
+ if ($edition === undefined)
30
+ return;
29
31
  if (isValidURL(urlOrChapter))
30
32
  return;
31
33
  // If not, is it a valid chapterID?
32
34
  if ($edition.hasChapter(urlOrChapter))
33
35
  return;
34
36
  // If not, is it a valid chapterID:label?
35
- const [chapterID, labelID] = urlOrChapter.split(":");
37
+ const [chapterID, labelID] = urlOrChapter.split(':');
36
38
  if (chapterID === undefined || labelID === undefined)
37
39
  return;
38
40
  // The chapter ID is optional; if it's missing, it refers to this chapter.
39
- const correspondingChapter = chapterID === "" && $chapter ? $chapter.chapter.getAST() : $edition.getChapter(chapterID)?.getAST();
41
+ const correspondingChapter = chapterID === '' && $chapter
42
+ ? $chapter.chapter.getAST($edition)
43
+ : $edition?.getChapter(chapterID)?.getAST($edition);
40
44
  if (correspondingChapter === undefined)
41
- return "Not a valid URL or chapter.";
45
+ return 'Not a valid URL or chapter.';
42
46
  if (!correspondingChapter.hasLabel(labelID))
43
- return "Not a valid chapter label.";
47
+ return 'Not a valid chapter label.';
48
+ }
49
+ let options = [];
50
+ $: {
51
+ options = [];
52
+ // Add an empty option.
53
+ options.push(['External link', url.startsWith('http') ? url : '']);
54
+ // Add an option for each chapter and it's labels.
55
+ if ($edition) {
56
+ for (const chap of $edition?.getChapters() ?? []) {
57
+ options.push([`Chapter: ${chap.getTitle()}`, chap.getID()]);
58
+ for (const label of chap.getAST($edition)?.getLabels() ?? [])
59
+ options.push([
60
+ chap.getTitle() + ': ' + label.getMeta(),
61
+ `${chap.getID()}:${label.getMeta()}`,
62
+ ]);
63
+ }
64
+ }
44
65
  }
45
66
  </script>
46
67
 
47
68
  <span>
48
- <button
49
- title="Remove link."
50
- on:click={() => {
51
- if($caret?.context?.format) {
52
- const newFormat = $caret.context.format.withSegmentReplaced(link, link.getText());
53
- if(newFormat)
54
- $caret.edit($caret.context.format, newFormat);
69
+ <Button
70
+ tooltip="remove link"
71
+ command={() => {
72
+ if ($caret?.context?.format) {
73
+ const newFormat = $caret.context.format.withSegmentReplaced(
74
+ link,
75
+ link.getText()
76
+ );
77
+ if (newFormat) $caret.edit($caret.context.format, newFormat);
55
78
  }
56
79
  }}
57
80
  >
58
- <ToolbarIcon name="unlink.svg"/>
59
- </button>
60
- <select name="chapterID" on:change={handleChapterChange} value={url}>
61
- <option value="">URL</option>
62
- {#if $chapter }
63
- <option value={$chapter.chapter.getChapterID()}>{$chapter.chapter.getTitle()}</option>
64
- <!-- Build the list of options (chapters and then any of the chapter's labels.) -->
65
- {#each $edition.getChapters() as chapter }
66
- {#each chapter.getAST()?.getLabels() ?? [] as label }
67
- <option value={`${chapter.getChapterID()}:${label.getMeta()}`}>{chapter.getTitle() + ": " + label.getMeta()}</option>
68
- {/each}
69
- {/each}
70
- {/if}
71
- </select>
72
- <code>
73
- <URLEditor url={url} validator={getURLError} edit={ url => { saveEdit(url); return undefined; }} />
74
- </code>
75
- </span>
81
+ <Icon icon={UnlinkIcon} />
82
+ </Button>
83
+ <Options
84
+ {options}
85
+ changed={(value) => {
86
+ saveEdit(value);
87
+ url = value;
88
+ }}
89
+ value={url}
90
+ label="link type"
91
+ />
92
+ <URLEditor
93
+ {url}
94
+ validator={validate}
95
+ edit={(url) => {
96
+ saveEdit(url);
97
+ return undefined;
98
+ }}
99
+ />
100
+ </span>
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type LinkNode from "../../models/chapter/LinkNode";
2
+ import type LinkNode from '../../models/chapter/LinkNode';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  link: LinkNode;
@@ -9,9 +9,9 @@ declare const __propDef: {
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type LinkEditorProps = typeof __propDef.props;
13
- export declare type LinkEditorEvents = typeof __propDef.events;
14
- export declare type LinkEditorSlots = typeof __propDef.slots;
12
+ export type LinkEditorProps = typeof __propDef.props;
13
+ export type LinkEditorEvents = typeof __propDef.events;
14
+ export type LinkEditorSlots = typeof __propDef.slots;
15
15
  export default class LinkEditor extends SvelteComponentTyped<LinkEditorProps, LinkEditorEvents, LinkEditorSlots> {
16
16
  }
17
17
  export {};
@@ -1,9 +1,10 @@
1
- <span><slot></slot></span>
1
+ <span><slot /></span>
2
2
 
3
3
  <style>
4
4
  span {
5
5
  font-size: small;
6
6
  font-style: italic;
7
- color: var(--bookish-app-chrome-muted);
7
+ font-weight: normal;
8
+ color: var(--app-muted-color);
8
9
  }
9
- </style>
10
+ </style>
@@ -1,7 +1,9 @@
1
1
  /** @typedef {typeof __propDef.props} NoteProps */
2
2
  /** @typedef {typeof __propDef.events} NoteEvents */
3
3
  /** @typedef {typeof __propDef.slots} NoteSlots */
4
- export default class Note extends SvelteComponentTyped<{}, {
4
+ export default class Note extends SvelteComponentTyped<{
5
+ [x: string]: never;
6
+ }, {
5
7
  [evt: string]: CustomEvent<any>;
6
8
  }, {
7
9
  default: {};
@@ -12,7 +14,9 @@ export type NoteEvents = typeof __propDef.events;
12
14
  export type NoteSlots = typeof __propDef.slots;
13
15
  import { SvelteComponentTyped } from "svelte";
14
16
  declare const __propDef: {
15
- props: {};
17
+ props: {
18
+ [x: string]: never;
19
+ };
16
20
  events: {
17
21
  [evt: string]: CustomEvent<any>;
18
22
  };
@@ -0,0 +1,95 @@
1
+ <script>import { createUser, getUserEmails } from '../../models/CRUD';
2
+ import Button from '../app/Button.svelte';
3
+ import TextInput from '../app/TextInput.svelte';
4
+ import Note from './Note.svelte';
5
+ export let uids;
6
+ export let inheriteduids;
7
+ export let writable;
8
+ export let atleastone;
9
+ export let change;
10
+ let emails = null;
11
+ $: alluids = Array.from(new Set([...uids, ...inheriteduids]));
12
+ async function getEmails(userIDs) {
13
+ emails = await getUserEmails(userIDs);
14
+ }
15
+ $: {
16
+ if (emails === null ||
17
+ (emails.size > 0 &&
18
+ Array.from(emails.keys()).join() !== alluids.join()))
19
+ getEmails(alluids);
20
+ }
21
+ let newEditor = '';
22
+ let newEditorError = null;
23
+ let loading = undefined;
24
+ async function addEditor() {
25
+ const email = newEditor;
26
+ newEditor = '';
27
+ loading = email;
28
+ try {
29
+ const uid = await createUser(email);
30
+ if (uid === null)
31
+ newEditorError = "couldn't add editor";
32
+ else
33
+ change([...uids, uid]);
34
+ }
35
+ finally {
36
+ loading = undefined;
37
+ }
38
+ }
39
+ </script>
40
+
41
+ {#if emails === null}
42
+ Loading editors...
43
+ {:else}
44
+ <section class="emails">
45
+ {#if writable}
46
+ <form on:submit|preventDefault={addEditor}>
47
+ <TextInput
48
+ type="email"
49
+ placeholder="email"
50
+ bind:text={newEditor}
51
+ disabled={false}
52
+ />
53
+ <Button
54
+ tooltip="give {newEditor} editing rights"
55
+ disabled={newEditor.length === 0 ||
56
+ Array.from(emails.values()).includes(newEditor)}
57
+ command={addEditor}>+ editor</Button
58
+ >
59
+ {#if newEditorError !== null}{newEditorError}{/if}
60
+ </form>
61
+ {/if}
62
+
63
+ {#each uids as uid, index (uid)}
64
+ {@const email = emails.get(uid)}
65
+ <p>
66
+ {email}
67
+ {#if writable}
68
+ <Button
69
+ tooltip="remove {email} editing rights"
70
+ command={() =>
71
+ change([
72
+ ...uids.slice(0, index),
73
+ ...uids.slice(index + 1),
74
+ ])}
75
+ disabled={atleastone && uids.length <= 1}>x</Button
76
+ >
77
+ {/if}
78
+ </p>
79
+ {/each}
80
+ {#each inheriteduids as uid}
81
+ <p><em>{emails.get(uid)}</em> <Note>book editor</Note></p>
82
+ {/each}
83
+ {#if loading}
84
+ <p>
85
+ adding {loading}
86
+ </p>
87
+ {/if}
88
+ </section>
89
+ {/if}
90
+
91
+ <style>
92
+ p {
93
+ font-family: var(--app-font);
94
+ }
95
+ </style>
@@ -0,0 +1,20 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ uids: string[];
5
+ inheriteduids: string[];
6
+ writable: boolean;
7
+ atleastone: boolean;
8
+ change: (uids: string[]) => void;
9
+ };
10
+ events: {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {};
14
+ };
15
+ export type PermissionsProps = typeof __propDef.props;
16
+ export type PermissionsEvents = typeof __propDef.events;
17
+ export type PermissionsSlots = typeof __propDef.slots;
18
+ export default class Permissions extends SvelteComponentTyped<PermissionsProps, PermissionsEvents, PermissionsSlots> {
19
+ }
20
+ export {};
@@ -1,4 +1,7 @@
1
- <script>import Switch from "./Switch.svelte";
1
+ <script>import Switch from './Switch.svelte';
2
+ import LeftIcon from './icons/left.svg?raw';
3
+ import MiddleIcon from './icons/middle.svg?raw';
4
+ import RightIcon from './icons/right.svg?raw';
2
5
  export let value;
3
6
  export let edit;
4
7
  function editAsString(newValue) {
@@ -7,8 +10,8 @@ function editAsString(newValue) {
7
10
  </script>
8
11
 
9
12
  <Switch
10
- position={value}
11
- options={["<", "|", ">"]}
12
- value={value}
13
- edit={editAsString}
14
- />
13
+ options={['<', '|', '>']}
14
+ icons={{ '<': LeftIcon, '|': MiddleIcon, '>': RightIcon }}
15
+ {value}
16
+ edit={editAsString}
17
+ />
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type Position from "../../models/chapter/Position";
2
+ import type Position from '../../models/chapter/Position';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  value: string;
@@ -10,9 +10,9 @@ declare const __propDef: {
10
10
  };
11
11
  slots: {};
12
12
  };
13
- export declare type PositionEditorProps = typeof __propDef.props;
14
- export declare type PositionEditorEvents = typeof __propDef.events;
15
- export declare type PositionEditorSlots = typeof __propDef.slots;
13
+ export type PositionEditorProps = typeof __propDef.props;
14
+ export type PositionEditorEvents = typeof __propDef.events;
15
+ export type PositionEditorSlots = typeof __propDef.slots;
16
16
  export default class PositionEditor extends SvelteComponentTyped<PositionEditorProps, PositionEditorEvents, PositionEditorSlots> {
17
17
  }
18
18
  export {};
@@ -1,5 +1,10 @@
1
- <script>import PositionEditor from "./PositionEditor.svelte";
1
+ <script>import { getCaret } from '../page/Contexts';
2
+ import PositionEditor from './PositionEditor.svelte';
2
3
  export let quote;
4
+ let caret = getCaret();
3
5
  </script>
4
6
 
5
- <PositionEditor value={quote.getPosition()} edit={position => quote.withPosition(position)} />
7
+ <PositionEditor
8
+ value={quote.getPosition()}
9
+ edit={(position) => $caret?.edit(quote, quote.withPosition(position))}
10
+ />
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type QuoteNode from "../../models/chapter/QuoteNode";
2
+ import type QuoteNode from '../../models/chapter/QuoteNode';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  quote: QuoteNode;
@@ -9,9 +9,9 @@ declare const __propDef: {
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type QuoteEditorProps = typeof __propDef.props;
13
- export declare type QuoteEditorEvents = typeof __propDef.events;
14
- export declare type QuoteEditorSlots = typeof __propDef.slots;
12
+ export type QuoteEditorProps = typeof __propDef.props;
13
+ export type QuoteEditorEvents = typeof __propDef.events;
14
+ export type QuoteEditorSlots = typeof __propDef.slots;
15
15
  export default class QuoteEditor extends SvelteComponentTyped<QuoteEditorProps, QuoteEditorEvents, QuoteEditorSlots> {
16
16
  }
17
17
  export {};
@@ -1,6 +1,7 @@
1
- <script>export let options;
1
+ <script>import Icon from './Icon.svelte';
2
+ export let options;
3
+ export let icons = undefined;
2
4
  export let value;
3
- export let position;
4
5
  export let enabled = undefined;
5
6
  export let edit;
6
7
  function handleClick(event) {
@@ -11,46 +12,72 @@ function handleClick(event) {
11
12
  }
12
13
  </script>
13
14
 
14
- <span class={`bookish-app-switch bookish-app-${position === "<" ? "left" : position === ">" ? "right" : "middle"}`}>
15
- {#each options as option }
16
- <button
17
- class={`bookish-app-switch-option ${value === option ? "bookish-app-switch-option-selected" : ""}`}
18
- data-value={option}
15
+ <span class="switch">
16
+ {#each options as option}
17
+ <button
18
+ class={`option ${value === option ? 'selected' : ''}`}
19
+ data-value={option}
19
20
  disabled={enabled === false}
20
- on:click|stopPropagation={handleClick}>
21
+ on:click|stopPropagation={handleClick}
22
+ >
23
+ {#if icons && option in icons}
24
+ <Icon icon={icons[option]} />
25
+ {:else}
21
26
  {option}
27
+ {/if}
22
28
  </button>
23
29
  {/each}
24
30
  </span>
25
31
 
26
32
  <style>
27
- .bookish-app-switch {
28
- font-family: var(--bookish-app-chrome-font-family);
29
- font-size: var(--bookish-app-chrome-font-size);
33
+ button {
34
+ font-family: var(--app-font);
35
+ font-size: var(--app-chrome-font-size);
36
+ color: var(--app-font-color);
37
+ background-color: var(--app-chrome-background);
38
+ padding: var(--app-chrome-padding);
39
+ border: none;
40
+ border-radius: 0;
30
41
  }
31
42
 
32
- .bookish-app-switch-option {
33
- display: inline-block;
34
- background-color: var(--bookish-app-chrome-background);
43
+ button:hover:enabled:not(.selected) {
35
44
  cursor: pointer;
36
- padding-left: var(--bookish-app-chrome-padding);
37
- padding-right: var(--bookish-app-chrome-padding);
38
- border: var(--bookish-app-chrome-border-width) solid var(--bookish-app-chrome-border-color);
45
+ background-color: var(--app-interactive-color);
46
+ color: var(--app-font-color-inverted);
47
+ }
48
+
49
+ button.selected {
50
+ background-color: var(--app-border-color);
51
+ color: var(--app-font-color-inverted);
52
+ }
53
+
54
+ button:disabled {
55
+ opacity: 0.3;
56
+ cursor: auto;
57
+ }
58
+
59
+ .switch {
60
+ font-family: var(--app-font);
61
+ font-size: var(--app-chrome-font-size);
62
+ white-space: nowrap;
39
63
  }
40
64
 
41
- .bookish-app-switch-option:first-child {
42
- border-top-left-radius: var(--bookish-app-chrome-roundedness);
43
- border-bottom-left-radius: var(--bookish-app-chrome-roundedness);
44
- margin-left: var(--bookish-app-chrome-padding);
65
+ .option {
66
+ display: inline-block;
67
+ background-color: var(--app-chrome-background);
68
+ padding-left: var(--app-chrome-padding);
69
+ padding-right: var(--app-chrome-padding);
45
70
  }
46
71
 
47
- .bookish-app-switch-option:last-child {
48
- border-top-right-radius: var(--bookish-app-chrome-roundedness);
49
- border-bottom-right-radius: var(--bookish-app-chrome-roundedness);
50
- margin-right: var(--bookish-app-chrome-padding);
72
+ .option:first-child {
73
+ border-top-left-radius: var(--app-chrome-roundedness);
74
+ border-bottom-left-radius: var(--app-chrome-roundedness);
75
+ margin-left: var(--app-chrome-padding);
51
76
  }
52
77
 
53
- .bookish-app-switch-option-selected {
54
- background-color: var(--bookish-app-chrome-hover-background);
78
+ .option:last-child {
79
+ border-top-right-radius: var(--app-chrome-roundedness);
80
+ border-bottom-right-radius: var(--app-chrome-roundedness);
81
+ margin-right: var(--app-chrome-padding);
55
82
  }
56
- </style>
83
+ </style>
@@ -2,8 +2,8 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  options: string[];
5
+ icons?: Record<string, string> | undefined;
5
6
  value: string;
6
- position: string;
7
7
  enabled?: boolean | undefined;
8
8
  edit: (newValue: string) => void;
9
9
  };
@@ -12,9 +12,9 @@ declare const __propDef: {
12
12
  };
13
13
  slots: {};
14
14
  };
15
- export declare type SwitchProps = typeof __propDef.props;
16
- export declare type SwitchEvents = typeof __propDef.events;
17
- export declare type SwitchSlots = typeof __propDef.slots;
15
+ export type SwitchProps = typeof __propDef.props;
16
+ export type SwitchEvents = typeof __propDef.events;
17
+ export type SwitchSlots = typeof __propDef.slots;
18
18
  export default class Switch extends SvelteComponentTyped<SwitchProps, SwitchEvents, SwitchSlots> {
19
19
  }
20
20
  export {};
@@ -0,0 +1,10 @@
1
+ <script>import { getCaret } from '../page/Contexts';
2
+ import PositionEditor from './PositionEditor.svelte';
3
+ export let table;
4
+ let caret = getCaret();
5
+ </script>
6
+
7
+ <PositionEditor
8
+ value={table.getPosition()}
9
+ edit={(position) => $caret?.edit(table, table.withPosition(position))}
10
+ />
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type TableNode from '../../models/chapter/TableNode';
3
+ declare const __propDef: {
4
+ props: {
5
+ table: TableNode;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type TableEditorProps = typeof __propDef.props;
13
+ export type TableEditorEvents = typeof __propDef.events;
14
+ export type TableEditorSlots = typeof __propDef.slots;
15
+ export default class TableEditor extends SvelteComponentTyped<TableEditorProps, TableEditorEvents, TableEditorSlots> {
16
+ }
17
+ export {};