bookish-press 0.4.0 → 0.4.16

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 (394) hide show
  1. package/README.md +3 -1
  2. package/components/Auth.svelte +19 -14
  3. package/components/Auth.svelte.d.ts +4 -4
  4. package/components/Authentication.d.ts +2 -2
  5. package/components/BookPreview.svelte +77 -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 +45 -0
  16. package/components/app/Feedback.svelte.d.ts +18 -0
  17. package/components/app/Head.svelte +12 -0
  18. package/components/app/Head.svelte.d.ts +27 -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 +19 -0
  28. package/components/app/Paragraph.svelte.d.ts +18 -0
  29. package/components/app/Table.svelte +32 -0
  30. package/components/app/Table.svelte.d.ts +27 -0
  31. package/components/app/TextInput.svelte +37 -0
  32. package/components/app/TextInput.svelte.d.ts +22 -0
  33. package/components/app/Writing.svelte +13 -0
  34. package/components/app/Writing.svelte.d.ts +27 -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 +23 -20
  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 +66 -23
  42. package/components/chapter/CaptionedCode.svelte.d.ts +4 -4
  43. package/components/chapter/ChapterBody.svelte +61 -9
  44. package/components/chapter/ChapterBody.svelte.d.ts +4 -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 +38 -16
  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 +154 -66
  54. package/components/chapter/Embed.svelte.d.ts +5 -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 +60 -37
  64. package/components/chapter/Format.svelte.d.ts +4 -4
  65. package/components/chapter/InlineCode.svelte +15 -5
  66. package/components/chapter/InlineCode.svelte.d.ts +4 -4
  67. package/components/chapter/Label.svelte +37 -8
  68. package/components/chapter/Label.svelte.d.ts +4 -4
  69. package/components/chapter/Link.svelte +23 -18
  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 +74 -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 +343 -237
  92. package/components/editor/BookishEditor.svelte.d.ts +5 -5
  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 +80 -0
  101. package/components/editor/CaretView.svelte.d.ts +24 -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 +3 -3
  127. package/components/editor/Note.svelte.d.ts +6 -2
  128. package/components/editor/PositionEditor.svelte +9 -6
  129. package/components/editor/PositionEditor.svelte.d.ts +4 -4
  130. package/components/editor/QuoteEditor.svelte +7 -2
  131. package/components/editor/QuoteEditor.svelte.d.ts +4 -4
  132. package/components/editor/Switch.svelte +55 -28
  133. package/components/editor/Switch.svelte.d.ts +4 -4
  134. package/components/editor/TableEditor.svelte +10 -0
  135. package/components/editor/TableEditor.svelte.d.ts +17 -0
  136. package/components/editor/TextEditor.svelte +83 -45
  137. package/components/editor/TextEditor.svelte.d.ts +5 -4
  138. package/components/editor/Toggle.svelte +11 -8
  139. package/components/editor/Toggle.svelte.d.ts +4 -4
  140. package/components/editor/Toolbar.svelte +192 -144
  141. package/components/editor/Toolbar.svelte.d.ts +5 -8
  142. package/components/editor/ToolbarGroup.svelte +18 -23
  143. package/components/editor/ToolbarGroup.svelte.d.ts +3 -4
  144. package/components/editor/ToolbarSpacer.svelte +8 -1
  145. package/components/editor/ToolbarSpacer.svelte.d.ts +6 -2
  146. package/components/editor/URLEditor.svelte +6 -8
  147. package/components/editor/URLEditor.svelte.d.ts +3 -3
  148. package/components/editor/UndoState.d.ts +3 -3
  149. package/components/editor/icons/annotate.svg +1 -0
  150. package/components/editor/icons/block.svg +1 -0
  151. package/components/editor/icons/bold.svg +1 -0
  152. package/components/editor/icons/bullets.svg +1 -0
  153. package/components/editor/icons/callout.svg +1 -0
  154. package/components/editor/icons/citation.svg +8 -0
  155. package/components/editor/icons/clear.svg +1 -0
  156. package/components/editor/icons/clipboard.svg +1 -0
  157. package/components/editor/icons/code.svg +1 -0
  158. package/components/editor/icons/columnafter.svg +1 -0
  159. package/components/editor/icons/columnbefore.svg +1 -0
  160. package/components/editor/icons/comment.svg +1 -0
  161. package/components/editor/icons/copy.svg +1 -0
  162. package/components/editor/icons/cut.svg +1 -0
  163. package/components/editor/icons/define.svg +7 -0
  164. package/components/editor/icons/deletecolumn.svg +1 -0
  165. package/components/editor/icons/deleterow.svg +1 -0
  166. package/components/editor/icons/footnote.svg +8 -0
  167. package/components/editor/icons/header1.svg +7 -0
  168. package/components/editor/icons/header2.svg +7 -0
  169. package/components/editor/icons/header3.svg +7 -0
  170. package/components/editor/icons/home.svg +1 -0
  171. package/components/editor/icons/indent.svg +1 -0
  172. package/components/editor/icons/italic.svg +1 -0
  173. package/components/editor/icons/label.svg +1 -0
  174. package/components/editor/icons/left.svg +1 -0
  175. package/components/editor/icons/level.svg +1 -0
  176. package/components/editor/icons/link.svg +1 -0
  177. package/components/editor/icons/list.svg +1 -0
  178. package/components/editor/icons/media.svg +1 -0
  179. package/components/editor/icons/middle.svg +1 -0
  180. package/components/editor/icons/numbers.svg +10 -0
  181. package/components/editor/icons/paragraph.svg +1 -0
  182. package/components/editor/icons/paste.svg +10 -0
  183. package/components/editor/icons/quote.svg +1 -0
  184. package/components/editor/icons/redo.svg +1 -0
  185. package/components/editor/icons/right.svg +1 -0
  186. package/components/editor/icons/rowabove.svg +1 -0
  187. package/components/editor/icons/rowbelow.svg +1 -0
  188. package/components/editor/icons/rule.svg +1 -0
  189. package/components/editor/icons/sub.svg +1 -0
  190. package/components/editor/icons/super.svg +1 -0
  191. package/components/editor/icons/table.svg +1 -0
  192. package/components/editor/icons/text.svg +1 -0
  193. package/components/editor/icons/time.svg +1 -0
  194. package/components/editor/icons/undo.svg +1 -0
  195. package/components/editor/icons/unindent.svg +1 -0
  196. package/components/editor/icons/unlink.svg +1 -0
  197. package/components/page/Acknowledgements.svelte +31 -22
  198. package/components/page/Acknowledgements.svelte.d.ts +4 -4
  199. package/components/page/Authors.svelte +34 -14
  200. package/components/page/Authors.svelte.d.ts +6 -6
  201. package/components/page/BulkReferenceEditor.svelte +53 -22
  202. package/components/page/BulkReferenceEditor.svelte.d.ts +4 -4
  203. package/components/page/Chapter.svelte +196 -141
  204. package/components/page/Chapter.svelte.d.ts +3 -3
  205. package/components/page/ChapterContext.d.ts +4 -4
  206. package/components/page/ChapterNumber.svelte +9 -0
  207. package/components/page/ChapterNumber.svelte.d.ts +27 -0
  208. package/components/page/ChapterTitle.svelte +16 -0
  209. package/components/page/ChapterTitle.svelte.d.ts +18 -0
  210. package/components/page/Contexts.d.ts +31 -20
  211. package/components/page/Contexts.js +47 -17
  212. package/components/page/DefinitionView.svelte +115 -86
  213. package/components/page/DefinitionView.svelte.d.ts +3 -3
  214. package/components/page/Description.svelte +27 -18
  215. package/components/page/Description.svelte.d.ts +4 -4
  216. package/components/page/Edition.svelte +127 -74
  217. package/components/page/Edition.svelte.d.ts +4 -4
  218. package/components/page/Editions.svelte +144 -0
  219. package/components/page/Editions.svelte.d.ts +14 -0
  220. package/components/page/Glossary.svelte +57 -48
  221. package/components/page/Glossary.svelte.d.ts +4 -4
  222. package/components/page/Header.svelte +129 -44
  223. package/components/page/Header.svelte.d.ts +6 -6
  224. package/components/page/Index.svelte +114 -80
  225. package/components/page/Index.svelte.d.ts +4 -4
  226. package/components/page/Instructions.svelte +18 -16
  227. package/components/page/Instructions.svelte.d.ts +4 -4
  228. package/components/page/License.svelte +29 -21
  229. package/components/page/License.svelte.d.ts +4 -4
  230. package/components/page/Loading.svelte +102 -12
  231. package/components/page/Loading.svelte.d.ts +6 -2
  232. package/components/page/Media.svelte +77 -51
  233. package/components/page/Media.svelte.d.ts +4 -4
  234. package/components/page/MediaPreview.svelte +26 -8
  235. package/components/page/MediaPreview.svelte.d.ts +3 -3
  236. package/components/page/Muted.svelte +10 -0
  237. package/components/page/Muted.svelte.d.ts +27 -0
  238. package/components/page/Outline.svelte +279 -59
  239. package/components/page/Outline.svelte.d.ts +3 -3
  240. package/components/page/Page.svelte +40 -9
  241. package/components/page/Page.svelte.d.ts +3 -3
  242. package/components/page/PageHeader.svelte +14 -0
  243. package/components/page/PageHeader.svelte.d.ts +18 -0
  244. package/components/page/PageParagraph.svelte +18 -0
  245. package/components/page/PageParagraph.svelte.d.ts +27 -0
  246. package/components/page/PossibleChapter.svelte +7 -7
  247. package/components/page/PossibleChapter.svelte.d.ts +4 -4
  248. package/components/page/PossibleReference.svelte +6 -11
  249. package/components/page/PossibleReference.svelte.d.ts +6 -7
  250. package/components/page/Print.svelte +27 -3
  251. package/components/page/Print.svelte.d.ts +4 -4
  252. package/components/page/Reference.svelte +256 -113
  253. package/components/page/Reference.svelte.d.ts +5 -5
  254. package/components/page/References.svelte +39 -47
  255. package/components/page/References.svelte.d.ts +4 -4
  256. package/components/page/Rows.svelte +54 -0
  257. package/components/page/Rows.svelte.d.ts +27 -0
  258. package/components/page/Search.svelte +86 -63
  259. package/components/page/Search.svelte.d.ts +4 -4
  260. package/components/page/Status.svelte +43 -35
  261. package/components/page/Status.svelte.d.ts +4 -9
  262. package/components/page/SubdomainEditor.svelte +40 -27
  263. package/components/page/SubdomainEditor.svelte.d.ts +4 -4
  264. package/components/page/TableOfContents.svelte +225 -190
  265. package/components/page/TableOfContents.svelte.d.ts +4 -4
  266. package/components/page/TableOfContentsImage.svelte +8 -8
  267. package/components/page/TableOfContentsImage.svelte.d.ts +3 -3
  268. package/components/page/TableOfContentsRow.svelte +96 -33
  269. package/components/page/TableOfContentsRow.svelte.d.ts +4 -4
  270. package/components/page/ThemeEditor.svelte +174 -39
  271. package/components/page/ThemeEditor.svelte.d.ts +4 -4
  272. package/components/page/ThemeEditorPreview.svelte +35 -23
  273. package/components/page/ThemeEditorPreview.svelte.d.ts +5 -5
  274. package/components/page/ThemeSetEditor.svelte +15 -13
  275. package/components/page/ThemeSetEditor.svelte.d.ts +4 -4
  276. package/components/page/ThemeVariableEditor.svelte +24 -15
  277. package/components/page/ThemeVariableEditor.svelte.d.ts +3 -3
  278. package/components/page/Title.svelte +12 -0
  279. package/components/page/Title.svelte.d.ts +27 -0
  280. package/components/page/Unknown.svelte +25 -21
  281. package/components/page/Unknown.svelte.d.ts +4 -4
  282. package/components/page/margins.js +50 -33
  283. package/index.d.ts +14 -0
  284. package/index.js +14 -0
  285. package/models/CRUD.d.ts +17 -0
  286. package/models/CRUD.js +194 -0
  287. package/models/Firebase.js +17 -15
  288. package/models/book/Book.d.ts +24 -28
  289. package/models/book/Book.js +120 -113
  290. package/models/book/BookMedia.d.ts +3 -3
  291. package/models/book/BookMedia.js +22 -16
  292. package/models/book/BookSaveStatus.d.ts +7 -0
  293. package/models/book/BookSaveStatus.js +8 -0
  294. package/models/book/Chapter.d.ts +46 -39
  295. package/models/book/Chapter.js +180 -198
  296. package/models/book/ChapterID.js +7 -7
  297. package/models/book/Definition.d.ts +1 -1
  298. package/models/book/Edition.d.ts +62 -60
  299. package/models/book/Edition.js +385 -303
  300. package/models/book/Reference.d.ts +24 -0
  301. package/models/book/Reference.js +78 -0
  302. package/models/book/Schema.d.ts +169 -0
  303. package/models/book/Schema.js +114 -0
  304. package/models/book/Theme.d.ts +44 -37
  305. package/models/book/Theme.js +452 -52
  306. package/models/book/ThemeColors.d.ts +1 -1
  307. package/models/book/Words.d.ts +2 -0
  308. package/models/book/Words.js +110 -0
  309. package/models/chapter/AtomNode.d.ts +4 -4
  310. package/models/chapter/AtomNode.js +20 -13
  311. package/models/chapter/BlockNode.d.ts +9 -10
  312. package/models/chapter/BlockNode.js +32 -13
  313. package/models/chapter/BlocksNode.d.ts +10 -10
  314. package/models/chapter/BlocksNode.js +315 -120
  315. package/models/chapter/BlocksNode.test.js +494 -228
  316. package/models/chapter/Bookkeeping.d.ts +1 -1
  317. package/models/chapter/CalloutNode.d.ts +3 -3
  318. package/models/chapter/CalloutNode.js +34 -12
  319. package/models/chapter/Caret.d.ts +9 -7
  320. package/models/chapter/Caret.js +11 -6
  321. package/models/chapter/ChapterNode.d.ts +11 -11
  322. package/models/chapter/ChapterNode.js +70 -33
  323. package/models/chapter/CitationsNode.d.ts +3 -3
  324. package/models/chapter/CitationsNode.js +31 -12
  325. package/models/chapter/CodeNode.d.ts +11 -6
  326. package/models/chapter/CodeNode.js +143 -34
  327. package/models/chapter/CommentNode.d.ts +5 -5
  328. package/models/chapter/CommentNode.js +29 -13
  329. package/models/chapter/DefinitionNode.d.ts +2 -2
  330. package/models/chapter/DefinitionNode.js +15 -7
  331. package/models/chapter/Edit.d.ts +3 -3
  332. package/models/chapter/EmbedNode.d.ts +9 -5
  333. package/models/chapter/EmbedNode.js +108 -35
  334. package/models/chapter/ErrorNode.d.ts +2 -2
  335. package/models/chapter/ErrorNode.js +34 -12
  336. package/models/chapter/FootnoteNode.d.ts +5 -5
  337. package/models/chapter/FootnoteNode.js +34 -16
  338. package/models/chapter/FormatNode.d.ts +10 -10
  339. package/models/chapter/FormatNode.js +237 -106
  340. package/models/chapter/FormatNode.test.js +87 -45
  341. package/models/chapter/InlineCodeNode.d.ts +2 -2
  342. package/models/chapter/InlineCodeNode.js +22 -9
  343. package/models/chapter/LabelNode.d.ts +4 -4
  344. package/models/chapter/LabelNode.js +31 -13
  345. package/models/chapter/LinkNode.d.ts +2 -2
  346. package/models/chapter/LinkNode.js +21 -9
  347. package/models/chapter/ListNode.d.ts +8 -8
  348. package/models/chapter/ListNode.js +99 -38
  349. package/models/chapter/ListNode.test.js +29 -24
  350. package/models/chapter/MetadataNode.d.ts +3 -3
  351. package/models/chapter/MetadataNode.js +13 -5
  352. package/models/chapter/Node.d.ts +5 -3
  353. package/models/chapter/Node.js +76 -29
  354. package/models/chapter/Node.test.js +20 -18
  355. package/models/chapter/ParagraphNode.d.ts +6 -6
  356. package/models/chapter/ParagraphNode.js +84 -29
  357. package/models/chapter/ParagraphNode.test.js +22 -13
  358. package/models/chapter/Parser.d.ts +25 -25
  359. package/models/chapter/Parser.js +201 -189
  360. package/models/chapter/Parser.test.js +16 -16
  361. package/models/chapter/Position.d.ts +1 -1
  362. package/models/chapter/QuoteNode.d.ts +6 -6
  363. package/models/chapter/QuoteNode.js +61 -23
  364. package/models/chapter/RootNode.d.ts +4 -4
  365. package/models/chapter/RuleNode.d.ts +2 -2
  366. package/models/chapter/RuleNode.js +31 -11
  367. package/models/chapter/TableNode.d.ts +8 -6
  368. package/models/chapter/TableNode.js +89 -34
  369. package/models/chapter/TableNode.test.js +22 -24
  370. package/models/chapter/TextNode.d.ts +6 -6
  371. package/models/chapter/TextNode.js +72 -32
  372. package/models/chapter/TextNode.test.js +4 -4
  373. package/models/loadEdition.d.ts +1 -1
  374. package/models/loadEdition.js +10 -6
  375. package/package.json +104 -25
  376. package/util/getSubdomain.js +8 -6
  377. package/util/isMobile.js +1 -1
  378. package/util/mineReference.d.ts +3 -2
  379. package/util/mineReference.js +67 -29
  380. package/util/scrollToEyeLevel.js +6 -1
  381. package/components/chapter/renderPosition.d.ts +0 -3
  382. package/components/chapter/renderPosition.js +0 -4
  383. package/components/editor/ToolbarIcon.svelte +0 -22
  384. package/components/editor/ToolbarIcon.svelte.d.ts +0 -16
  385. package/components/page/Alert.svelte +0 -11
  386. package/components/page/Alert.svelte.d.ts +0 -23
  387. package/components/page/Revisions.svelte +0 -124
  388. package/components/page/Revisions.svelte.d.ts +0 -14
  389. package/models/BookLoader.d.ts +0 -2
  390. package/models/BookLoader.js +0 -67
  391. package/models/Firestore.d.ts +0 -22
  392. package/models/Firestore.js +0 -194
  393. package/models/chapter/ReferenceNode.d.ts +0 -29
  394. package/models/chapter/ReferenceNode.js +0 -48
@@ -1,33 +1,27 @@
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
- import Link from "../Link.svelte";
4
+ import Link from '../Link.svelte';
5
5
  import Chapter from '../../models/book/Chapter';
6
6
  import ChapterIDs from '../../models/book/ChapterID';
7
- import { onMount } from "svelte";
8
- import { getBase, getEdition } from "./Contexts";
7
+ import { getBase, getEdition } from './Contexts';
8
+ import TextInput from '../app/TextInput.svelte';
9
+ import ChapterTitle from './ChapterTitle.svelte';
10
+ import ChapterNumber from './ChapterNumber.svelte';
11
+ import PageHeader from './PageHeader.svelte';
9
12
  let edition = getEdition();
10
13
  let base = getBase();
11
- let query = "";
12
- let input = null;
13
- // Focus the query box when loaded
14
- onMount(() => { if (input)
15
- input.focus(); });
16
- // Don't allow spaces
17
- function handleKeyDown(event) {
18
- if (event.key === " ") {
19
- event.preventDefault();
20
- }
21
- }
14
+ let query = '';
22
15
  let results = [];
23
16
  $: {
24
17
  // Reset the results
25
18
  results = [];
26
19
  const lowerQuery = query.toLowerCase();
20
+ query = query.trim();
27
21
  // Go through all the chapter indexes and find matches.
28
- if (query.length > 2)
29
- for (const chapter of $edition.getChapters()) {
30
- let index = chapter.getIndex();
22
+ if ($edition && query.length > 2)
23
+ for (const chapter of $edition?.getChapters() ?? []) {
24
+ let index = chapter.getIndex($edition);
31
25
  // No index yet? Skip this chapter.
32
26
  if (index) {
33
27
  // Build a DOM to render matches.
@@ -47,12 +41,15 @@ $: {
47
41
  results.push(chapter);
48
42
  chapterMatches.forEach((match, index) => {
49
43
  // Only highlight the part of the word that matches.
50
- const start = match.match.toLowerCase().indexOf(lowerQuery);
44
+ const start = match.match
45
+ .toLowerCase()
46
+ .indexOf(lowerQuery);
51
47
  results.push({
52
- link: `${base}/${chapter.getChapterID()}?word=${match.match.toLowerCase()}&number=${index}`,
53
- left: match.left + match.match.substring(0, start),
48
+ link: `${$base}${chapter.getID()}?word=${match.match.toLowerCase()}&number=${index}`,
49
+ left: match.left +
50
+ match.match.substring(0, start),
54
51
  match: match.match.substring(start, start + query.length),
55
- right: match.match.substring(start + query.length) + match.right
52
+ right: match.match.substring(start + query.length) + match.right,
56
53
  });
57
54
  });
58
55
  }
@@ -61,48 +58,74 @@ $: {
61
58
  }
62
59
  </script>
63
60
 
64
- <Page title={`${$edition.getTitle()} - Search`}>
65
- <Header
66
- label="Search title"
67
- getImage={() => $edition.getImage(ChapterIDs.SearchID)}
68
- setImage={(embed) => $edition.setImage(ChapterIDs.SearchID, embed)}
69
- header="Search"
70
- tags={$edition.getTags()}
71
- >
72
- <Outline
73
- slot="outline"
74
- previous={$edition.getPreviousChapterID(ChapterIDs.SearchID)}
75
- next={$edition.getNextChapterID(ChapterIDs.SearchID)}
76
- />
77
- </Header>
61
+ {#if $edition}
62
+ <Page title={`${$edition.getTitle()} - Search`}>
63
+ <Header
64
+ label="Search title"
65
+ getImage={() => $edition?.getImage(ChapterIDs.SearchID) ?? null}
66
+ setImage={(embed) =>
67
+ $edition
68
+ ? edition.set(
69
+ $edition.withImage(ChapterIDs.SearchID, embed)
70
+ )
71
+ : undefined}
72
+ header="Search"
73
+ tags={$edition.getTags()}
74
+ >
75
+ <Outline
76
+ slot="outline"
77
+ previous={$edition.getPreviousChapterID(ChapterIDs.SearchID)}
78
+ next={$edition.getNextChapterID(ChapterIDs.SearchID)}
79
+ />
80
+ </Header>
78
81
 
79
- <p>Type a word—just a single word—and we'll show its occurrences in this book:</p>
82
+ <p>
83
+ Type a word—just a single word—and we'll show its occurrences in
84
+ this book:
85
+ </p>
80
86
 
81
- <p>
82
- <input
83
- type="text"
84
- name="query"
85
- placeholder={"search for a word"}
86
- on:keydown={handleKeyDown}
87
- bind:this={input}
88
- bind:value={query}
89
- />
90
- </p>
87
+ <p>
88
+ <TextInput
89
+ type="text"
90
+ placeholder={'search for a word'}
91
+ disabled={false}
92
+ bind:text={query}
93
+ />
94
+ </p>
91
95
 
92
- {#if query !== "" }
93
- {#if query.length < 3 }
94
- <p>Keep typing...</p>
95
- {:else if results.length === 0 }
96
- <p>No occurrence of <em>{query}</em>.</p>
97
- {:else}
98
- <p>Found {results.filter(result => !(result instanceof Chapter)).length} occurrences of <em>{query}</em>...</p>
99
- {#each results as result }
100
- {#if result instanceof Chapter }
101
- <h2 class="bookish-header" id={"header-" + result.getChapterID()}>Chapter{#if $edition.getChapterNumber(result.getChapterID()) !== undefined}&nbsp;{$edition.getChapterNumber(result.getChapterID())}{/if} - {result.getTitle()}</h2>
102
- {:else}
103
- <p><Link to={result.link}>...{result.left}<span class="bookish-content-highlight">{result.match}</span>{result.right}...</Link></p>
104
- {/if}
105
- {/each}
96
+ {#if query.trim() !== ''}
97
+ {#if query.trim().length < 3}
98
+ <p>Keep typing...</p>
99
+ {:else if results.length === 0}
100
+ <p>No occurrence of <em>{query}</em>.</p>
101
+ {:else}
102
+ <p
103
+ >Found {results.filter(
104
+ (result) => !(result instanceof Chapter)
105
+ ).length} occurrences of <em>{query}</em>...</p
106
+ >
107
+ {#each results as result}
108
+ {#if result instanceof Chapter}
109
+ <PageHeader id={'header-' + result.getID()}
110
+ ><ChapterNumber
111
+ >Chapter{#if $edition.getChapterNumber(result.getID()) !== undefined}&nbsp;{$edition.getChapterNumber(
112
+ result.getID()
113
+ )}{/if}</ChapterNumber
114
+ > - <ChapterTitle>{result.getTitle()}</ChapterTitle
115
+ ></PageHeader
116
+ >
117
+ {:else}
118
+ <p
119
+ ><Link to={result.link}
120
+ >...{result.left}<span
121
+ class="bookish-content-highlight"
122
+ >{result.match}</span
123
+ >{result.right}...</Link
124
+ ></p
125
+ >
126
+ {/if}
127
+ {/each}
128
+ {/if}
106
129
  {/if}
107
- {/if}
108
- </Page>
130
+ </Page>
131
+ {/if}
@@ -1,14 +1,14 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
7
7
  slots: {};
8
8
  };
9
- export declare type SearchProps = typeof __propDef.props;
10
- export declare type SearchEvents = typeof __propDef.events;
11
- export declare type SearchSlots = typeof __propDef.slots;
9
+ export type SearchProps = typeof __propDef.props;
10
+ export type SearchEvents = typeof __propDef.events;
11
+ export type SearchSlots = typeof __propDef.slots;
12
12
  export default class Search extends SvelteComponentTyped<SearchProps, SearchEvents, SearchSlots> {
13
13
  }
14
14
  export {};
@@ -1,49 +1,57 @@
1
- <script>import { BookSaveStatus } from "../../models/book/Edition";
2
- import { onMount } from "svelte";
3
- export let book;
4
- export let edition;
5
- let status = BookSaveStatus.Saved;
6
- function handleBookChange(newStatus) {
7
- status = newStatus;
8
- }
9
- // Listen to book and chapter changes.
10
- onMount(() => {
11
- book?.addListener(status => handleBookChange(status));
12
- edition.addListener((status) => handleBookChange(status));
13
- return () => {
14
- book?.removeListener(handleBookChange);
15
- edition.removeListener(handleBookChange);
16
- };
17
- });
1
+ <script>import BookSaveStatus from '../../models/book/BookSaveStatus';
2
+ import { getStatus } from './Contexts';
3
+ let status = getStatus();
18
4
  </script>
19
5
 
20
- <div class={`bookish-editor-status ${status === BookSaveStatus.Saving ? "bookish-editor-status-saving" : status === BookSaveStatus.Error ? "bookish-editor-status-error" : ""}`}>
21
- {
22
- status === BookSaveStatus.Changed ? "\u270E Editing" :
23
- status === BookSaveStatus.Saving ? "\u2026 Saving" :
24
- status === BookSaveStatus.Saved ? "\u2713 Saved" :
25
- status === BookSaveStatus.Error ? "\u2715 Couldn't save." :
26
- ""
27
- }
28
- </div>
6
+ <span
7
+ class={`bookish-editor-status ${
8
+ $status === BookSaveStatus.Saving
9
+ ? 'bookish-editor-status-saving'
10
+ : $status === BookSaveStatus.Error
11
+ ? 'bookish-editor-status-error'
12
+ : ''
13
+ }`}
14
+ >
15
+ {$status === BookSaveStatus.Changed
16
+ ? '\u270E Editing'
17
+ : $status === BookSaveStatus.Saving
18
+ ? '\u2026 Saving'
19
+ : $status === BookSaveStatus.Saved
20
+ ? '\u2713 Saved'
21
+ : $status === BookSaveStatus.Error
22
+ ? "\u2715 Couldn't save."
23
+ : ''}
24
+ </span>
29
25
 
30
26
  <style>
31
27
  .bookish-editor-status {
32
- position: fixed;
33
- top: var(--bookish-app-chrome-spacing);
34
- right: var(--bookish-app-chrome-spacing);
35
- z-index: 3;
36
- color: var(--bookish-muted-color);
37
- font-family: var(--bookish-header-font-family);
38
- font-size: var(--bookish-small-font-size);
28
+ color: var(--app-muted-color);
29
+ font-family: var(--app-font);
30
+ white-space: nowrap;
39
31
  }
40
32
 
41
33
  .bookish-editor-status-error {
42
- color: var(--bookish-app-error-color);
34
+ color: var(--app-error-color);
43
35
  animation: failure 100ms infinite;
44
36
  }
45
37
 
46
38
  .bookish-editor-status-saving {
47
39
  animation: waiting 100ms infinite;
48
40
  }
49
- </style>
41
+
42
+ @keyframes waiting {
43
+ from,
44
+ to {
45
+ transform: scale(1, 1);
46
+ }
47
+ 25% {
48
+ transform: scale(1, 1.2);
49
+ }
50
+ 50% {
51
+ transform: scale(1, 1);
52
+ }
53
+ 75% {
54
+ transform: scale(1, 1.1);
55
+ }
56
+ }
57
+ </style>
@@ -1,19 +1,14 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type Book from "../../models/book/Book";
3
- import type Edition from "../../models/book/Edition";
4
2
  declare const __propDef: {
5
- props: {
6
- book: Book | undefined;
7
- edition: Edition;
8
- };
3
+ props: Record<string, never>;
9
4
  events: {
10
5
  [evt: string]: CustomEvent<any>;
11
6
  };
12
7
  slots: {};
13
8
  };
14
- export declare type StatusProps = typeof __propDef.props;
15
- export declare type StatusEvents = typeof __propDef.events;
16
- export declare type StatusSlots = typeof __propDef.slots;
9
+ export type StatusProps = typeof __propDef.props;
10
+ export type StatusEvents = typeof __propDef.events;
11
+ export type StatusSlots = typeof __propDef.slots;
17
12
  export default class Status extends SvelteComponentTyped<StatusProps, StatusEvents, StatusSlots> {
18
13
  }
19
14
  export {};
@@ -1,30 +1,43 @@
1
- <script>import TextEditor from "../editor/TextEditor.svelte";
2
- import { subdomainIsAvailable } from "../../models/Firestore";
3
- import { getBook } from "./Contexts";
1
+ <script>import TextEditor from '../editor/TextEditor.svelte';
2
+ import { isSubdomainAvailable } from '../../models/CRUD';
3
+ import { getBook } from './Contexts';
4
+ import Muted from './Muted.svelte';
4
5
  let book = getBook();
5
- const invalidNames = ["email", "login", "confirm", "read", "write"];
6
+ const invalidNames = [
7
+ 'email',
8
+ 'login',
9
+ 'confirm',
10
+ 'read',
11
+ 'write',
12
+ ];
6
13
  </script>
7
14
 
8
- <span class="bookish-muted">
9
- <TextEditor
10
- startText={book.getSubdomain() ?? ""}
11
- label="Book domain editor"
12
- save={
13
- // Save the new domain
14
- async domain => {
15
- const available = await subdomainIsAvailable(domain, book);
16
- if(available)
17
- book.setSubdomain(domain);
18
- else throw Error("Domain isn't available");
19
- }
20
- }
21
- placeholder="URL name"
22
- valid={newDomain =>
23
- // If not the empty string, must be a valid URL subdomain, and none of the existing routes.
24
- invalidNames.includes(newDomain) || (newDomain.length > 0 && !/^[A-Za-z0-9](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?$/.test(newDomain)) ? `Book domains must be fewer than 63 characters, made of symbols a-z, A-Z, and 0-9, and not one of ${invalidNames.join(", ")}.` :
25
- undefined
26
- }
27
- saveOnExit={true}
28
- />
29
- <br/>
30
- </span>
15
+ {#if $book}
16
+ <Muted>
17
+ <TextEditor
18
+ text={$book.getSubdomain() ?? ''}
19
+ label="Book domain editor"
20
+ save={// Save the new domain
21
+ async (domain) => {
22
+ if ($book) {
23
+ const available = await isSubdomainAvailable(domain, $book);
24
+ if (available) book.set($book.withSubdomain(domain));
25
+ else throw Error("Domain isn't available");
26
+ }
27
+ }}
28
+ placeholder="URL name"
29
+ valid={(newDomain) =>
30
+ // If not the empty string, must be a valid URL subdomain, and none of the existing routes.
31
+ invalidNames.includes(newDomain) ||
32
+ (newDomain.length > 0 &&
33
+ !/^[A-Za-z0-9](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?$/.test(
34
+ newDomain
35
+ ))
36
+ ? `Book domains must be fewer than 63 characters, made of symbols a-z, A-Z, and 0-9, and not one of ${invalidNames.join(
37
+ ', '
38
+ )}.`
39
+ : undefined}
40
+ saveOnExit={true}
41
+ />
42
+ </Muted>
43
+ {/if}
@@ -1,14 +1,14 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
7
7
  slots: {};
8
8
  };
9
- export declare type SubdomainEditorProps = typeof __propDef.props;
10
- export declare type SubdomainEditorEvents = typeof __propDef.events;
11
- export declare type SubdomainEditorSlots = typeof __propDef.slots;
9
+ export type SubdomainEditorProps = typeof __propDef.props;
10
+ export type SubdomainEditorEvents = typeof __propDef.events;
11
+ export type SubdomainEditorSlots = typeof __propDef.slots;
12
12
  export default class SubdomainEditor extends SvelteComponentTyped<SubdomainEditorProps, SubdomainEditorEvents, SubdomainEditorSlots> {
13
13
  }
14
14
  export {};