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,47 +1,52 @@
1
- <script>import Instructions from "./Instructions.svelte";
2
- import Parser from "../../models/chapter/Parser";
3
- import TableOfContentsRow from "./TableOfContentsRow.svelte";
4
- import ChapterIDs from "../../models/book/ChapterID";
5
- import Page from "./Page.svelte";
6
- import Header from "./Header.svelte";
7
- import Outline from "./Outline.svelte";
8
- import Link from "../Link.svelte";
9
- import SubdomainEditor from "./SubdomainEditor.svelte";
10
- import Description from "./Description.svelte";
11
- import Acknowledgements from "./Acknowledgements.svelte";
12
- import License from "./License.svelte";
13
- import Revisions from "./Revisions.svelte";
14
- import Authors from "./Authors.svelte";
15
- import TextEditor from "../editor/TextEditor.svelte";
16
- import Toggle from "../editor/Toggle.svelte";
17
- import { getBase, getEdition, isEditable } from "./Contexts";
1
+ <script>import Instructions from './Instructions.svelte';
2
+ import Parser from '../../models/chapter/Parser';
3
+ import TableOfContentsRow from './TableOfContentsRow.svelte';
4
+ import ChapterIDs from '../../models/book/ChapterID';
5
+ import Page from './Page.svelte';
6
+ import Header from './Header.svelte';
7
+ import Outline from './Outline.svelte';
8
+ import Link from '../Link.svelte';
9
+ import SubdomainEditor from './SubdomainEditor.svelte';
10
+ import Description from './Description.svelte';
11
+ import Acknowledgements from './Acknowledgements.svelte';
12
+ import License from './License.svelte';
13
+ import Revisions from './Editions.svelte';
14
+ import Authors from './Authors.svelte';
15
+ import TextEditor from '../editor/TextEditor.svelte';
16
+ import Toggle from '../editor/Toggle.svelte';
17
+ import { getBase, getEdition, isEditable, setChapter } from './Contexts';
18
+ import Muted from './Muted.svelte';
19
+ import Button from '../app/Button.svelte';
20
+ import PageHeader from './PageHeader.svelte';
21
+ import Rows from './Rows.svelte';
22
+ import PageParagraph from './PageParagraph.svelte';
18
23
  let edition = getEdition();
19
24
  let base = getBase();
20
25
  let editable = isEditable();
21
26
  function getProgressDescription(progress) {
22
27
  if (progress === null)
23
- return "";
28
+ return '';
24
29
  else if (progress === 0)
25
- return "";
30
+ return '';
26
31
  else if (progress < 30)
27
- return "; just started";
32
+ return '; just started';
28
33
  else if (progress < 70)
29
- return "; halfway";
34
+ return '; halfway';
30
35
  else if (progress < 95)
31
- return "; almost done";
36
+ return '; almost done';
32
37
  else
33
- return "; done";
38
+ return '; done';
34
39
  }
35
40
  // Get the chapter progress
36
- let progressStorage = localStorage.getItem("chapterProgress");
37
- let progress = progressStorage === null ?
38
- {} :
39
- JSON.parse(progressStorage);
41
+ let progressStorage = typeof localStorage !== 'undefined'
42
+ ? localStorage.getItem('chapterProgress')
43
+ : null;
44
+ let progress = progressStorage === null ? {} : JSON.parse(progressStorage);
40
45
  // Is there a colon? Let's make a subtitle
41
- $: title = $edition.getTitle();
46
+ $: title = $edition?.getTitle() ?? '';
42
47
  let subtitle = undefined;
43
48
  $: {
44
- let colon = title.indexOf(":");
49
+ let colon = title.indexOf(':');
45
50
  if (colon >= 0) {
46
51
  subtitle = title.substring(colon + 1).trim();
47
52
  title = title.substring(0, colon).trim();
@@ -49,186 +54,216 @@ $: {
49
54
  }
50
55
  let waitingForChapter = false;
51
56
  function addChapter() {
52
- waitingForChapter = true;
53
- $edition.addChapter().then(() => waitingForChapter = false);
57
+ if ($edition)
58
+ edition.set($edition.withNewChapter());
54
59
  }
55
60
  </script>
56
61
 
57
- <svelte:head>
58
- <title>{$edition.getTitle()}</title>
59
- <meta name="description" content={$edition.getTitle()}>
60
- </svelte:head>
61
-
62
- <Page title={$edition.getTitle()}>
63
- <Header
64
- label="Book title"
65
- getImage={() => $edition.getImage("cover")}
66
- setImage={embed => $edition.setImage("cover", embed)}
67
- header={title}
68
- subtitle={subtitle}
69
- tags={$edition.getTags()}
70
- save={text => $edition.setTitle(text)}
71
- >
72
- <svelte:fragment slot="before">
73
- {#if editable}
74
- <SubdomainEditor slot="before"/>
75
- {/if}
76
- </svelte:fragment>
77
- <Outline slot="outline"
78
- previous={null}
79
- next={$edition.getNextChapterID("")}
80
- />
81
- <Authors slot="after"
82
- authors={$edition.getAuthors()}
83
- add={ () => $edition.addAuthor("")}
84
- edit={(index, text) => $edition.setAuthor(index, text) }
85
- remove={index => $edition.removeAuthor(index)}
86
- />
87
- </Header>
88
-
89
- <Instructions>
90
- Above you can edit your book's authors, title, and cover image.
91
- </Instructions>
92
-
93
- <Description/>
94
-
95
- <Instructions>
96
- This will appear on the <Link to={base + "/read"}>book browsing</Link> page and in your table of contents.
97
- Write an informative description of what your book is about.
98
- </Instructions>
99
-
100
- <h2 class="bookish-header" id="chapters">Chapters {#if editable}<button disabled={waitingForChapter} on:click={addChapter}>+</button>{/if}</h2>
101
-
102
- <Instructions>
103
- Add, remove, and reorder chapters here.
104
- You can add optional book sections to each chapter, toggle chapters as numbered/unnumbered or published/forthcoming.
105
- Click the title to edit the chapter.
106
- </Instructions>
107
-
108
- <div class="bookish-table">
109
- <table id="toc">
110
- <tbody>
111
- {#each $edition.getChapters() as chapter }
112
- {@const chapterID = chapter.getChapterID() }
113
- {@const readingTime = chapter.getReadingTime() }
114
- {@const readingEstimate =
115
- readingTime === undefined ? "Forthcoming" :
116
- readingTime < 5 ? "<5 min read" :
117
- readingTime < 60 ? "~" + Math.floor(readingTime / 5) * 5 + " min read" :
118
- "~" + Math.floor(readingTime / 60) + " hour read" }
119
- {@const section = chapter.getSection() }
120
- {@const etc = readingEstimate + (!chapter.isForthcoming() ? getProgressDescription(chapterID in progress ? progress[chapterID] : null) : "") }
121
-
122
- <TableOfContentsRow
123
- chapter={chapter}
124
- chapterID={chapterID}
125
- number={$edition.getChapterNumber(chapterID)}
126
- title={chapter.getTitle()}
127
- forthcoming={chapter.isForthcoming()}
128
- >
129
- <span slot="annotation">
130
- {#if editable }
131
- <TextEditor
132
- label={"Chapter section editor"}
133
- startText={section ? section : ""}
134
- placeholder="Section"
135
- valid={ () => undefined }
136
- save={text => chapter.setSection(text) }
137
- />
138
- {:else}
139
- {#if section }{section}{/if}
140
- {/if}
141
- </span>
142
- <span slot="etc">
62
+ {#if $edition}
63
+ <Page title={$edition.getTitle()}>
64
+ <Header
65
+ label="Book title"
66
+ getImage={() => $edition?.getImage('cover') ?? null}
67
+ setImage={(embed) =>
68
+ $edition
69
+ ? edition.set($edition.withImage('cover', embed))
70
+ : undefined}
71
+ header={title}
72
+ {subtitle}
73
+ tags={$edition.getTags()}
74
+ save={(text) =>
75
+ $edition ? edition.set($edition.withTitle(text)) : undefined}
76
+ >
77
+ <svelte:fragment slot="before">
78
+ {#if editable}
79
+ <SubdomainEditor />
80
+ {/if}
81
+ </svelte:fragment>
82
+ <Outline
83
+ slot="outline"
84
+ previous={null}
85
+ next={$edition.getNextChapterID('')}
86
+ />
87
+ <Authors
88
+ slot="after"
89
+ authors={$edition.getAuthors()}
90
+ add={() =>
91
+ $edition ? edition.set($edition.withAuthor('')) : undefined}
92
+ edit={(index, text) =>
93
+ $edition
94
+ ? edition.set($edition.withAuthorName(index, text))
95
+ : undefined}
96
+ remove={(index) =>
97
+ $edition
98
+ ? edition.set($edition.withoutAuthor(index))
99
+ : undefined}
100
+ />
101
+ </Header>
102
+
103
+ <Instructions>
104
+ Above you can edit your book's authors, title, and cover image.
105
+ </Instructions>
106
+
107
+ <Description />
108
+
109
+ <Instructions>
110
+ This will appear on the <Link to={$base + 'read'}
111
+ >book browsing</Link
112
+ > page and in your table of contents. Write an informative description
113
+ of what your book is about.
114
+ </Instructions>
115
+
116
+ <Instructions>
117
+ Add, remove, and reorder chapters here. You can add optional book
118
+ sections to each chapter, toggle chapters as numbered/unnumbered or
119
+ published/forthcoming. Click the title to edit the chapter.
120
+ </Instructions>
121
+
122
+ <PageHeader id="chapters"
123
+ >Chapters {#if editable}<Button
124
+ tooltip="add empty chapter"
125
+ disabled={waitingForChapter}
126
+ command={addChapter}>+ chapter</Button
127
+ >{/if}</PageHeader
128
+ >
129
+
130
+ <Rows>
131
+ {#each $edition.getChapters() as chapter}
132
+ {@const chapterID = chapter.getID()}
133
+ {@const readingTime = chapter.getReadingTime($edition)}
134
+ {@const readingEstimate =
135
+ readingTime === undefined
136
+ ? 'Forthcoming'
137
+ : readingTime < 5
138
+ ? '<5 min read'
139
+ : readingTime < 60
140
+ ? '~' + Math.floor(readingTime / 5) * 5 + ' min read'
141
+ : '~' + Math.floor(readingTime / 60) + ' hour read'}
142
+ {@const section = chapter.getSection()}
143
+ {@const etc =
144
+ readingEstimate +
145
+ (!chapter.isForthcoming()
146
+ ? getProgressDescription(
147
+ chapterID in progress ? progress[chapterID] : null
148
+ )
149
+ : '')}
150
+
151
+ <TableOfContentsRow
152
+ {chapter}
153
+ {chapterID}
154
+ number={$edition.getChapterNumber(chapterID)}
155
+ title={chapter.getTitle()}
156
+ forthcoming={chapter.isForthcoming()}
157
+ >
158
+ <span slot="annotation">
159
+ {#if editable}
160
+ <TextEditor
161
+ label={'Chapter section editor'}
162
+ text={section ? section : ''}
163
+ placeholder="Section"
164
+ valid={() => undefined}
165
+ save={(text) =>
166
+ setChapter(
167
+ edition,
168
+ chapter,
169
+ chapter.withSection(text)
170
+ )}
171
+ />
172
+ {:else if section}{section}{/if}
173
+ </span>
174
+ <span slot="etc">
175
+ <Muted>
143
176
  {#if editable}
144
- <Toggle on={chapter.isForthcoming()} save={on => chapter.setForthcoming(on)}>
177
+ <Toggle
178
+ on={chapter.isForthcoming()}
179
+ save={(on) =>
180
+ setChapter(
181
+ edition,
182
+ chapter,
183
+ chapter.asForthcoming(on)
184
+ )}
185
+ >
145
186
  {etc}
146
187
  </Toggle>
147
188
  {:else}
148
- { etc }
189
+ {etc}
149
190
  {/if}
150
- </span>
151
- </TableOfContentsRow>
152
- {/each}
153
- {#if $edition.hasReferences() || editable }
154
- <TableOfContentsRow
155
- chapterID={ChapterIDs.ReferencesID}
156
- title="References"
157
- >
158
- <span slot="annotation">Everything cited</span>
159
- </TableOfContentsRow>
160
- {/if}
161
- {#if $edition.getGlossary() && Object.keys($edition.getGlossary()).length > 0 || editable }
162
- <TableOfContentsRow
163
- chapterID={ChapterIDs.GlossaryID}
164
- title="Glossary"
165
- >
166
- <span slot="annotation">Definitions</span>
167
- </TableOfContentsRow>
168
- {/if}
191
+ </Muted>
192
+ </span>
193
+ </TableOfContentsRow>
194
+ {/each}
195
+ {#if $edition.hasReferences() || editable}
169
196
  <TableOfContentsRow
170
- chapterID={ChapterIDs.IndexID}
171
- title="Index"
172
- >
173
- <span slot="annotation">Common words and where they are</span>
197
+ chapterID={ChapterIDs.ReferencesID}
198
+ title="References"
199
+ >
200
+ <span slot="annotation">Everything cited</span>
174
201
  </TableOfContentsRow>
202
+ {/if}
203
+ {#if ($edition.getGlossary() && Object.keys($edition.getGlossary()).length > 0) || editable}
175
204
  <TableOfContentsRow
176
- chapterID={ChapterIDs.SearchID}
177
- title="Search"
178
- >
179
- <span slot="annotation">Find where words occur</span>
205
+ chapterID={ChapterIDs.GlossaryID}
206
+ title="Glossary"
207
+ >
208
+ <span slot="annotation">Definitions</span>
180
209
  </TableOfContentsRow>
210
+ {/if}
211
+ <TableOfContentsRow chapterID={ChapterIDs.IndexID} title="Index">
212
+ <span slot="annotation">Common words and where they are</span>
213
+ </TableOfContentsRow>
214
+ <TableOfContentsRow chapterID={ChapterIDs.SearchID} title="Search">
215
+ <span slot="annotation">Find where words occur</span>
216
+ </TableOfContentsRow>
181
217
 
182
- <TableOfContentsRow
183
- chapterID={ChapterIDs.MediaID}
184
- title="Media"
185
- >
186
- <span slot="annotation">Images and video in the book</span>
218
+ <TableOfContentsRow chapterID={ChapterIDs.MediaID} title="Media">
219
+ <span slot="annotation">Images and video in the book</span>
220
+ </TableOfContentsRow>
221
+ {#if editable}
222
+ <TableOfContentsRow chapterID="theme" title="Theme">
223
+ <span slot="annotation">Style the book</span>
187
224
  </TableOfContentsRow>
188
- {#if editable }
189
- <TableOfContentsRow
190
- chapterID="theme"
191
- title="Theme"
192
- >
193
- <span slot="annotation">Style the book</span>
194
- </TableOfContentsRow>
195
- <TableOfContentsRow
196
- chapterID="unknown"
197
- title="Unknown"
198
- >
199
- <span slot="annotation">Customize bad links</span>
200
- </TableOfContentsRow>
201
- {/if}
202
- </tbody>
203
- </table>
204
- </div>
225
+ <TableOfContentsRow chapterID="unknown" title="Unknown">
226
+ <span slot="annotation">Customize bad links</span>
227
+ </TableOfContentsRow>
228
+ {/if}
229
+ </Rows>
205
230
 
206
- <Acknowledgements />
207
- <License />
231
+ <Acknowledgements />
232
+ <License />
208
233
 
209
- <h2 class="bookish-header" id="print">Print</h2>
234
+ <PageHeader id="print">Print</PageHeader>
210
235
 
211
- <Instructions>
212
- This offers a way for readers to print the entire book as a single page.
213
- </Instructions>
236
+ <Instructions>
237
+ This offers a way for readers to print the entire book as a single
238
+ page.
239
+ </Instructions>
214
240
 
215
- <p>
216
- Want to print this book or generate a PDF?
217
- See <Link to={base + "print"}>all chapters on a single page</Link> and then print or export.
218
- Long books can take some time to render.
219
- </p>
241
+ <PageParagraph>
242
+ Want to print this book or generate a PDF? See <Link
243
+ to={$base + 'print'}>all chapters on a single page</Link
244
+ > and then print or export. Long books can take some time to render.
245
+ </PageParagraph>
220
246
 
221
- <h2 class="bookish-header" id="citation">Citation</h2>
247
+ <PageHeader id="citation">Citation</PageHeader>
222
248
 
223
- <Instructions>
224
- This citation is dynamically created from the current authors, title, and date.
225
- </Instructions>
249
+ <Instructions>
250
+ This citation is dynamically created from the current authors,
251
+ title, and date.
252
+ </Instructions>
226
253
 
227
- <!-- Book citation -->
228
- <p>
229
- { $edition.getAuthors().map(author => Parser.parseFormat($edition, author).toText()).join(", ") } ({(new Date()).getFullYear() }). <em>{$edition.getTitle()}</em>. { location.protocol+'//'+location.host+location.pathname }, <em>retrieved { (new Date()).toLocaleDateString("en-US")}</em>.
230
- </p>
254
+ <!-- Book citation -->
255
+ <PageParagraph>
256
+ {$edition
257
+ .getAuthors()
258
+ .map((author) => Parser.parseFormat($edition, author).toText())
259
+ .join(', ')} ({new Date().getFullYear()}).
260
+ <em>{$edition.getTitle()}</em>. {location.protocol +
261
+ '//' +
262
+ location.host +
263
+ location.pathname},
264
+ <em>retrieved {new Date().toLocaleDateString('en-US')}</em>.
265
+ </PageParagraph>
231
266
 
232
- <Revisions />
233
-
234
- </Page>
267
+ <Revisions />
268
+ </Page>
269
+ {/if}
@@ -1,14 +1,14 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
7
7
  slots: {};
8
8
  };
9
- export declare type TableOfContentsProps = typeof __propDef.props;
10
- export declare type TableOfContentsEvents = typeof __propDef.events;
11
- export declare type TableOfContentsSlots = typeof __propDef.slots;
9
+ export type TableOfContentsProps = typeof __propDef.props;
10
+ export type TableOfContentsEvents = typeof __propDef.events;
11
+ export type TableOfContentsSlots = typeof __propDef.slots;
12
12
  export default class TableOfContents extends SvelteComponentTyped<TableOfContentsProps, TableOfContentsEvents, TableOfContentsSlots> {
13
13
  }
14
14
  export {};
@@ -1,15 +1,15 @@
1
- <script>import EmbedNode from "../../models/chapter/EmbedNode";
2
- import Parser from "../../models/chapter/Parser";
3
- import { getEdition } from "./Contexts";
1
+ <script>import EmbedNode from '../../models/chapter/EmbedNode';
2
+ import Parser from '../../models/chapter/Parser';
3
+ import { getEdition } from './Contexts';
4
4
  export let embed;
5
5
  let edition = getEdition();
6
6
  $: embedNode = embed === null ? null : Parser.parseEmbed($edition, embed);
7
7
  </script>
8
8
 
9
- {#if embedNode instanceof EmbedNode }
10
- <img
9
+ {#if embedNode instanceof EmbedNode}
10
+ <img
11
11
  style="width: 5em"
12
- src={embedNode.getSmallURL() }
13
- alt={embedNode.getDescription() }
12
+ src={embedNode.getSmallURL()}
13
+ alt={embedNode.getDescription()}
14
14
  />
15
- {/if}
15
+ {/if}
@@ -8,9 +8,9 @@ declare const __propDef: {
8
8
  };
9
9
  slots: {};
10
10
  };
11
- export declare type TableOfContentsImageProps = typeof __propDef.props;
12
- export declare type TableOfContentsImageEvents = typeof __propDef.events;
13
- export declare type TableOfContentsImageSlots = typeof __propDef.slots;
11
+ export type TableOfContentsImageProps = typeof __propDef.props;
12
+ export type TableOfContentsImageEvents = typeof __propDef.events;
13
+ export type TableOfContentsImageSlots = typeof __propDef.slots;
14
14
  export default class TableOfContentsImage extends SvelteComponentTyped<TableOfContentsImageProps, TableOfContentsImageEvents, TableOfContentsImageSlots> {
15
15
  }
16
16
  export {};