bookish-press 0.4.232 → 0.5.0

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 (433) hide show
  1. package/{components → package/components}/Auth.svelte +11 -13
  2. package/{components → package/components}/Auth.svelte.d.ts +0 -0
  3. package/{components → package/components}/Authentication.d.ts +0 -0
  4. package/{components → package/components}/Authentication.js +0 -0
  5. package/{components → package/components}/BookPreview.svelte +13 -17
  6. package/{components → package/components}/BookPreview.svelte.d.ts +0 -0
  7. package/{components → package/components}/Link.svelte +2 -1
  8. package/{components → package/components}/Link.svelte.d.ts +1 -0
  9. package/{components → package/components}/app/BookList.svelte +0 -0
  10. package/{components → package/components}/app/BookList.svelte.d.ts +0 -0
  11. package/{components → package/components}/app/Button.svelte +5 -2
  12. package/{components → package/components}/app/Button.svelte.d.ts +0 -0
  13. package/{components → package/components}/app/Feedback.svelte +4 -9
  14. package/{components → package/components}/app/Feedback.svelte.d.ts +0 -0
  15. package/{components → package/components}/app/Head.svelte +4 -1
  16. package/{components → package/components}/app/Head.svelte.d.ts +6 -15
  17. package/{components → package/components}/app/Large.svelte +0 -0
  18. package/{components → package/components}/app/Large.svelte.d.ts +0 -0
  19. package/{components → package/components}/app/Lead.svelte +0 -0
  20. package/{components → package/components}/app/Lead.svelte.d.ts +0 -0
  21. package/package/components/app/Link.svelte +36 -0
  22. package/{components → package/components}/app/Link.svelte.d.ts +1 -0
  23. package/{components → package/components}/app/Options.svelte +0 -0
  24. package/{components → package/components}/app/Options.svelte.d.ts +0 -0
  25. package/{components → package/components}/app/Paragraph.svelte +1 -0
  26. package/{components → package/components}/app/Paragraph.svelte.d.ts +0 -0
  27. package/{components/app/Writing.svelte → package/components/app/Section.svelte} +0 -1
  28. package/package/components/app/Section.svelte.d.ts +27 -0
  29. package/{components → package/components}/app/Table.svelte +0 -0
  30. package/{components → package/components}/app/Table.svelte.d.ts +0 -0
  31. package/{components → package/components}/app/TextInput.svelte +2 -0
  32. package/{components → package/components}/app/TextInput.svelte.d.ts +0 -0
  33. package/{components → package/components}/chapter/Atom.svelte +1 -8
  34. package/{components → package/components}/chapter/Atom.svelte.d.ts +0 -0
  35. package/{components → package/components}/chapter/Block.svelte +3 -1
  36. package/{components → package/components}/chapter/Block.svelte.d.ts +0 -0
  37. package/{components → package/components}/chapter/Callout.svelte +0 -0
  38. package/{components → package/components}/chapter/Callout.svelte.d.ts +0 -0
  39. package/{components → package/components}/chapter/CaptionedCode.svelte +2 -2
  40. package/{components → package/components}/chapter/CaptionedCode.svelte.d.ts +0 -0
  41. package/{components → package/components}/chapter/ChapterBody.svelte +9 -16
  42. package/{components → package/components}/chapter/ChapterBody.svelte.d.ts +1 -0
  43. package/{components → package/components}/chapter/Citations.svelte +13 -11
  44. package/{components → package/components}/chapter/Citations.svelte.d.ts +0 -0
  45. package/{components → package/components}/chapter/Code.svelte +3 -2
  46. package/{components → package/components}/chapter/Code.svelte.d.ts +0 -0
  47. package/{components → package/components}/chapter/Comment.svelte +7 -13
  48. package/{components → package/components}/chapter/Comment.svelte.d.ts +0 -0
  49. package/{components → package/components}/chapter/Definition.svelte +8 -3
  50. package/{components → package/components}/chapter/Definition.svelte.d.ts +0 -0
  51. package/{components → package/components}/chapter/Embed.svelte +6 -5
  52. package/{components → package/components}/chapter/Embed.svelte.d.ts +1 -0
  53. package/{components → package/components}/chapter/ErrorMessage.svelte +0 -0
  54. package/{components → package/components}/chapter/ErrorMessage.svelte.d.ts +0 -0
  55. package/{components → package/components}/chapter/ExtendedPrism.d.ts +0 -0
  56. package/{components → package/components}/chapter/ExtendedPrism.js +0 -0
  57. package/{components → package/components}/chapter/Figure.svelte +8 -8
  58. package/{components → package/components}/chapter/Figure.svelte.d.ts +0 -0
  59. package/{components → package/components}/chapter/Footnote.svelte +13 -24
  60. package/{components → package/components}/chapter/Footnote.svelte.d.ts +0 -2
  61. package/{components → package/components}/chapter/Format.svelte +5 -4
  62. package/{components → package/components}/chapter/Format.svelte.d.ts +0 -0
  63. package/{components → package/components}/chapter/InlineCode.svelte +2 -2
  64. package/{components → package/components}/chapter/InlineCode.svelte.d.ts +0 -0
  65. package/{components → package/components}/chapter/Label.svelte +5 -7
  66. package/{components → package/components}/chapter/Label.svelte.d.ts +0 -0
  67. package/{components → package/components}/chapter/Link.svelte +8 -6
  68. package/{components → package/components}/chapter/Link.svelte.d.ts +0 -0
  69. package/{components → package/components}/chapter/List.svelte +5 -0
  70. package/{components → package/components}/chapter/List.svelte.d.ts +0 -0
  71. package/{components → package/components}/chapter/Marginal.svelte +30 -12
  72. package/{components → package/components}/chapter/Marginal.svelte.d.ts +0 -0
  73. package/{components → package/components}/chapter/Paragraph.svelte +23 -10
  74. package/{components → package/components}/chapter/Paragraph.svelte.d.ts +0 -0
  75. package/{components → package/components}/chapter/Positioned.svelte +0 -0
  76. package/{components → package/components}/chapter/Positioned.svelte.d.ts +0 -0
  77. package/{components → package/components}/chapter/Problem.svelte +0 -0
  78. package/{components → package/components}/chapter/Problem.svelte.d.ts +0 -0
  79. package/{components → package/components}/chapter/Python.svelte +0 -0
  80. package/{components → package/components}/chapter/Python.svelte.d.ts +0 -0
  81. package/{components → package/components}/chapter/Quote.svelte +20 -10
  82. package/{components → package/components}/chapter/Quote.svelte.d.ts +0 -0
  83. package/{components → package/components}/chapter/Rule.svelte +0 -0
  84. package/{components → package/components}/chapter/Rule.svelte.d.ts +0 -0
  85. package/{components → package/components}/chapter/Table.svelte +2 -2
  86. package/{components → package/components}/chapter/Table.svelte.d.ts +0 -0
  87. package/{components → package/components}/chapter/Text.svelte +2 -2
  88. package/{components → package/components}/chapter/Text.svelte.d.ts +0 -0
  89. package/package/components/controls/DarkToggle.svelte +38 -0
  90. package/package/components/controls/DarkToggle.svelte.d.ts +17 -0
  91. package/{components → package/components}/editor/BookishEditor.svelte +57 -32
  92. package/{components → package/components}/editor/BookishEditor.svelte.d.ts +4 -1
  93. package/{components → package/components}/editor/CalloutEditor.svelte +0 -0
  94. package/{components → package/components}/editor/CalloutEditor.svelte.d.ts +0 -0
  95. package/{components → package/components}/editor/CaptionedCodeEditor.svelte +0 -0
  96. package/{components → package/components}/editor/CaptionedCodeEditor.svelte.d.ts +0 -0
  97. package/{components → package/components}/editor/CaretContext.d.ts +0 -0
  98. package/{components → package/components}/editor/CaretContext.js +0 -0
  99. package/{components → package/components}/editor/CaretState.d.ts +0 -0
  100. package/{components → package/components}/editor/CaretState.js +0 -0
  101. package/{components → package/components}/editor/CaretUtilities.d.ts +0 -0
  102. package/{components → package/components}/editor/CaretUtilities.js +0 -0
  103. package/{components → package/components}/editor/CaretView.svelte +4 -2
  104. package/{components → package/components}/editor/CaretView.svelte.d.ts +1 -0
  105. package/{components → package/components}/editor/CitationsEditor.svelte +0 -0
  106. package/{components → package/components}/editor/CitationsEditor.svelte.d.ts +0 -0
  107. package/{components → package/components}/editor/Clipboard.d.ts +0 -0
  108. package/{components → package/components}/editor/Clipboard.js +0 -0
  109. package/{components → package/components}/editor/Command.d.ts +0 -0
  110. package/{components → package/components}/editor/Command.js +0 -0
  111. package/{components → package/components}/editor/Commands.d.ts +0 -0
  112. package/{components → package/components}/editor/Commands.js +0 -0
  113. package/package/components/editor/ConfirmButton.svelte +23 -0
  114. package/{components → package/components}/editor/ConfirmButton.svelte.d.ts +4 -3
  115. package/{components → package/components}/editor/DefinitionEditor.svelte +0 -0
  116. package/{components → package/components}/editor/DefinitionEditor.svelte.d.ts +0 -0
  117. package/{components → package/components}/editor/EmbedEditor.svelte +1 -1
  118. package/{components → package/components}/editor/EmbedEditor.svelte.d.ts +0 -0
  119. package/{components → package/components}/editor/Icon.svelte +0 -0
  120. package/{components → package/components}/editor/Icon.svelte.d.ts +0 -0
  121. package/{components → package/components}/editor/ImageChooser.svelte +0 -0
  122. package/{components → package/components}/editor/ImageChooser.svelte.d.ts +0 -0
  123. package/{components → package/components}/editor/InlineCodeEditor.svelte +0 -0
  124. package/{components → package/components}/editor/InlineCodeEditor.svelte.d.ts +0 -0
  125. package/{components → package/components}/editor/LabelEditor.svelte +0 -0
  126. package/{components → package/components}/editor/LabelEditor.svelte.d.ts +0 -0
  127. package/{components → package/components}/editor/LanguageEditor.svelte +0 -0
  128. package/{components → package/components}/editor/LanguageEditor.svelte.d.ts +0 -0
  129. package/{components → package/components}/editor/LinkEditor.svelte +4 -3
  130. package/{components → package/components}/editor/LinkEditor.svelte.d.ts +0 -0
  131. package/{components → package/components}/editor/Note.svelte +1 -0
  132. package/{components → package/components}/editor/Note.svelte.d.ts +0 -0
  133. package/package/components/editor/Permissions.svelte +93 -0
  134. package/package/components/editor/Permissions.svelte.d.ts +20 -0
  135. package/{components → package/components}/editor/PositionEditor.svelte +0 -0
  136. package/{components → package/components}/editor/PositionEditor.svelte.d.ts +0 -0
  137. package/{components → package/components}/editor/QuoteEditor.svelte +0 -0
  138. package/{components → package/components}/editor/QuoteEditor.svelte.d.ts +0 -0
  139. package/{components → package/components}/editor/Switch.svelte +0 -0
  140. package/{components → package/components}/editor/Switch.svelte.d.ts +0 -0
  141. package/{components → package/components}/editor/TableEditor.svelte +0 -0
  142. package/{components → package/components}/editor/TableEditor.svelte.d.ts +0 -0
  143. package/{components → package/components}/editor/TextEditor.svelte +2 -3
  144. package/{components → package/components}/editor/TextEditor.svelte.d.ts +0 -0
  145. package/{components → package/components}/editor/Toggle.svelte +0 -0
  146. package/{components → package/components}/editor/Toggle.svelte.d.ts +0 -0
  147. package/{components → package/components}/editor/Toolbar.svelte +8 -3
  148. package/{components → package/components}/editor/Toolbar.svelte.d.ts +0 -0
  149. package/{components → package/components}/editor/ToolbarGroup.svelte +0 -1
  150. package/{components → package/components}/editor/ToolbarGroup.svelte.d.ts +0 -0
  151. package/{components → package/components}/editor/ToolbarSpacer.svelte +0 -0
  152. package/{components → package/components}/editor/ToolbarSpacer.svelte.d.ts +0 -0
  153. package/{components → package/components}/editor/URLEditor.svelte +2 -0
  154. package/{components → package/components}/editor/URLEditor.svelte.d.ts +0 -0
  155. package/{components → package/components}/editor/UndoState.d.ts +0 -0
  156. package/{components → package/components}/editor/UndoState.js +0 -0
  157. package/{components → package/components}/editor/icons/annotate.svg +0 -0
  158. package/{components → package/components}/editor/icons/block.svg +0 -0
  159. package/{components → package/components}/editor/icons/bold.svg +0 -0
  160. package/{components → package/components}/editor/icons/bullets.svg +0 -0
  161. package/{components → package/components}/editor/icons/callout.svg +0 -0
  162. package/{components → package/components}/editor/icons/citation.svg +0 -0
  163. package/{components → package/components}/editor/icons/clear.svg +0 -0
  164. package/{components → package/components}/editor/icons/clipboard.svg +0 -0
  165. package/{components → package/components}/editor/icons/code.svg +0 -0
  166. package/{components → package/components}/editor/icons/columnafter.svg +0 -0
  167. package/{components → package/components}/editor/icons/columnbefore.svg +0 -0
  168. package/{components → package/components}/editor/icons/comment.svg +0 -0
  169. package/{components → package/components}/editor/icons/copy.svg +0 -0
  170. package/{components → package/components}/editor/icons/cut.svg +0 -0
  171. package/{components → package/components}/editor/icons/define.svg +0 -0
  172. package/{components → package/components}/editor/icons/deletecolumn.svg +0 -0
  173. package/{components → package/components}/editor/icons/deleterow.svg +0 -0
  174. package/{components → package/components}/editor/icons/footnote.svg +0 -0
  175. package/{components → package/components}/editor/icons/header1.svg +0 -0
  176. package/{components → package/components}/editor/icons/header2.svg +0 -0
  177. package/{components → package/components}/editor/icons/header3.svg +0 -0
  178. package/{components → package/components}/editor/icons/home.svg +0 -0
  179. package/{components → package/components}/editor/icons/indent.svg +0 -0
  180. package/{components → package/components}/editor/icons/italic.svg +0 -0
  181. package/{components → package/components}/editor/icons/label.svg +0 -0
  182. package/{components → package/components}/editor/icons/left.svg +0 -0
  183. package/{components → package/components}/editor/icons/level.svg +0 -0
  184. package/{components → package/components}/editor/icons/link.svg +0 -0
  185. package/{components → package/components}/editor/icons/list.svg +0 -0
  186. package/{components → package/components}/editor/icons/media.svg +0 -0
  187. package/{components → package/components}/editor/icons/middle.svg +0 -0
  188. package/{components → package/components}/editor/icons/numbers.svg +0 -0
  189. package/{components → package/components}/editor/icons/paragraph.svg +0 -0
  190. package/{components → package/components}/editor/icons/paste.svg +0 -0
  191. package/{components → package/components}/editor/icons/quote.svg +0 -0
  192. package/{components → package/components}/editor/icons/redo.svg +0 -0
  193. package/{components → package/components}/editor/icons/right.svg +0 -0
  194. package/{components → package/components}/editor/icons/rowabove.svg +0 -0
  195. package/{components → package/components}/editor/icons/rowbelow.svg +0 -0
  196. package/{components → package/components}/editor/icons/rule.svg +0 -0
  197. package/{components → package/components}/editor/icons/sub.svg +0 -0
  198. package/{components → package/components}/editor/icons/super.svg +0 -0
  199. package/{components → package/components}/editor/icons/table.svg +0 -0
  200. package/{components → package/components}/editor/icons/text.svg +0 -0
  201. package/{components → package/components}/editor/icons/time.svg +0 -0
  202. package/{components → package/components}/editor/icons/undo.svg +0 -0
  203. package/{components → package/components}/editor/icons/unindent.svg +0 -0
  204. package/{components → package/components}/editor/icons/unlink.svg +0 -0
  205. package/{components → package/components}/page/Acknowledgements.svelte +13 -11
  206. package/{components → package/components}/page/Acknowledgements.svelte.d.ts +0 -0
  207. package/package/components/page/Authors.svelte +86 -0
  208. package/{components → package/components}/page/Authors.svelte.d.ts +1 -0
  209. package/package/components/page/BookLoader.svelte +59 -0
  210. package/package/components/page/BookLoader.svelte.d.ts +16 -0
  211. package/{components → package/components}/page/BulkReferenceEditor.svelte +8 -8
  212. package/{components → package/components}/page/BulkReferenceEditor.svelte.d.ts +0 -0
  213. package/{components → package/components}/page/Chapter.svelte +69 -30
  214. package/{components → package/components}/page/Chapter.svelte.d.ts +0 -0
  215. package/{components → package/components}/page/ChapterContext.d.ts +0 -0
  216. package/{components → package/components}/page/ChapterContext.js +0 -0
  217. package/{components → package/components}/page/ChapterNumber.svelte +0 -0
  218. package/{components → package/components}/page/ChapterNumber.svelte.d.ts +0 -0
  219. package/{components → package/components}/page/ChapterTitle.svelte +0 -0
  220. package/{components → package/components}/page/ChapterTitle.svelte.d.ts +0 -0
  221. package/{components → package/components}/page/Contexts.d.ts +21 -5
  222. package/package/components/page/Contexts.js +144 -0
  223. package/{components → package/components}/page/DefinitionView.svelte +23 -14
  224. package/{components → package/components}/page/DefinitionView.svelte.d.ts +0 -0
  225. package/{components → package/components}/page/Description.svelte +12 -9
  226. package/{components → package/components}/page/Description.svelte.d.ts +0 -0
  227. package/{components → package/components}/page/Edition.svelte +9 -23
  228. package/{components → package/components}/page/Edition.svelte.d.ts +1 -2
  229. package/package/components/page/EditionLoader.svelte +99 -0
  230. package/package/components/page/EditionLoader.svelte.d.ts +18 -0
  231. package/package/components/page/Editions.svelte +109 -0
  232. package/{components → package/components}/page/Editions.svelte.d.ts +3 -1
  233. package/{components → package/components}/page/Glossary.svelte +13 -6
  234. package/{components → package/components}/page/Glossary.svelte.d.ts +0 -0
  235. package/{components → package/components}/page/Header.svelte +26 -21
  236. package/{components → package/components}/page/Header.svelte.d.ts +2 -0
  237. package/{components → package/components}/page/Index.svelte +14 -8
  238. package/{components → package/components}/page/Index.svelte.d.ts +0 -0
  239. package/{components → package/components}/page/Instructions.svelte +1 -2
  240. package/{components → package/components}/page/Instructions.svelte.d.ts +3 -1
  241. package/package/components/page/License.svelte +45 -0
  242. package/{components → package/components}/page/License.svelte.d.ts +0 -0
  243. package/{components → package/components}/page/Loading.svelte +0 -0
  244. package/{components → package/components}/page/Loading.svelte.d.ts +0 -0
  245. package/{components → package/components}/page/Media.svelte +40 -36
  246. package/{components → package/components}/page/Media.svelte.d.ts +0 -0
  247. package/package/components/page/MediaPreview.svelte +55 -0
  248. package/{components → package/components}/page/MediaPreview.svelte.d.ts +0 -0
  249. package/{components → package/components}/page/Muted.svelte +0 -0
  250. package/{components → package/components}/page/Muted.svelte.d.ts +0 -0
  251. package/{components → package/components}/page/Outline.svelte +69 -96
  252. package/{components → package/components}/page/Outline.svelte.d.ts +0 -0
  253. package/{components → package/components}/page/Page.svelte +4 -4
  254. package/{components → package/components}/page/Page.svelte.d.ts +0 -0
  255. package/{components → package/components}/page/PageHeader.svelte +5 -0
  256. package/{components → package/components}/page/PageHeader.svelte.d.ts +0 -0
  257. package/{components → package/components}/page/PageParagraph.svelte +0 -0
  258. package/{components → package/components}/page/PageParagraph.svelte.d.ts +0 -0
  259. package/{components → package/components}/page/PossibleChapter.svelte +0 -0
  260. package/{components → package/components}/page/PossibleChapter.svelte.d.ts +0 -0
  261. package/{components → package/components}/page/PossibleReference.svelte +2 -1
  262. package/{components → package/components}/page/PossibleReference.svelte.d.ts +1 -0
  263. package/{components → package/components}/page/Print.svelte +0 -0
  264. package/{components → package/components}/page/Print.svelte.d.ts +0 -0
  265. package/package/components/page/Publish.svelte +135 -0
  266. package/package/components/page/Publish.svelte.d.ts +14 -0
  267. package/{components → package/components}/page/Reference.svelte +54 -51
  268. package/{components → package/components}/page/Reference.svelte.d.ts +1 -0
  269. package/{components → package/components}/page/References.svelte +9 -4
  270. package/{components → package/components}/page/References.svelte.d.ts +0 -0
  271. package/{components → package/components}/page/Rows.svelte +0 -0
  272. package/{components → package/components}/page/Rows.svelte.d.ts +0 -0
  273. package/{components → package/components}/page/Search.svelte +27 -10
  274. package/{components → package/components}/page/Search.svelte.d.ts +0 -0
  275. package/package/components/page/Status.svelte +58 -0
  276. package/{components → package/components}/page/Status.svelte.d.ts +0 -0
  277. package/{components → package/components}/page/SubdomainEditor.svelte +5 -3
  278. package/{components → package/components}/page/SubdomainEditor.svelte.d.ts +0 -0
  279. package/{components → package/components}/page/TableOfContents.svelte +83 -37
  280. package/{components → package/components}/page/TableOfContents.svelte.d.ts +0 -0
  281. package/package/components/page/TableOfContentsImage.svelte +27 -0
  282. package/{components → package/components}/page/TableOfContentsImage.svelte.d.ts +1 -0
  283. package/{components → package/components}/page/TableOfContentsRow.svelte +11 -12
  284. package/{components → package/components}/page/TableOfContentsRow.svelte.d.ts +0 -0
  285. package/{components → package/components}/page/ThemeEditor.svelte +12 -10
  286. package/{components → package/components}/page/ThemeEditor.svelte.d.ts +0 -0
  287. package/{components → package/components}/page/ThemeEditorPreview.svelte +0 -0
  288. package/{components → package/components}/page/ThemeEditorPreview.svelte.d.ts +0 -0
  289. package/{components → package/components}/page/ThemeSetEditor.svelte +0 -0
  290. package/{components → package/components}/page/ThemeSetEditor.svelte.d.ts +0 -0
  291. package/{components → package/components}/page/ThemeVariableEditor.svelte +0 -0
  292. package/{components → package/components}/page/ThemeVariableEditor.svelte.d.ts +0 -0
  293. package/{components → package/components}/page/Title.svelte +0 -0
  294. package/{components → package/components}/page/Title.svelte.d.ts +0 -0
  295. package/{components → package/components}/page/Unknown.svelte +5 -2
  296. package/{components → package/components}/page/Unknown.svelte.d.ts +0 -0
  297. package/{components → package/components}/page/margins.d.ts +0 -0
  298. package/{components → package/components}/page/margins.js +0 -0
  299. package/{index.d.ts → package/index.d.ts} +3 -1
  300. package/{index.js → package/index.js} +3 -1
  301. package/package/models/CRUD.d.ts +28 -0
  302. package/package/models/CRUD.js +263 -0
  303. package/{models → package/models}/Firebase.d.ts +0 -0
  304. package/package/models/Firebase.js +36 -0
  305. package/{models → package/models}/book/Book.d.ts +23 -18
  306. package/package/models/book/Book.js +135 -0
  307. package/{models → package/models}/book/BookMedia.d.ts +1 -1
  308. package/{models → package/models}/book/BookMedia.js +9 -10
  309. package/{models → package/models}/book/BookSaveStatus.d.ts +0 -0
  310. package/{models → package/models}/book/BookSaveStatus.js +0 -0
  311. package/{models → package/models}/book/Chapter.d.ts +5 -1
  312. package/{models → package/models}/book/Chapter.js +24 -15
  313. package/{models → package/models}/book/ChapterID.d.ts +0 -0
  314. package/{models → package/models}/book/ChapterID.js +0 -0
  315. package/{models → package/models}/book/Definition.d.ts +0 -0
  316. package/{models → package/models}/book/Definition.js +0 -0
  317. package/{models → package/models}/book/Edition.d.ts +33 -7
  318. package/{models → package/models}/book/Edition.js +104 -32
  319. package/{models → package/models}/book/Reference.d.ts +0 -0
  320. package/{models → package/models}/book/Reference.js +0 -0
  321. package/{models → package/models}/book/Schema.d.ts +20 -15
  322. package/{models → package/models}/book/Schema.js +17 -16
  323. package/{models → package/models}/book/Theme.d.ts +0 -0
  324. package/{models → package/models}/book/Theme.js +7 -6
  325. package/{models → package/models}/book/ThemeColors.d.ts +0 -0
  326. package/{models → package/models}/book/ThemeColors.js +0 -0
  327. package/{models → package/models}/book/Words.d.ts +0 -0
  328. package/{models → package/models}/book/Words.js +0 -0
  329. package/{models → package/models}/chapter/AtomNode.d.ts +0 -0
  330. package/{models → package/models}/chapter/AtomNode.js +0 -0
  331. package/{models → package/models}/chapter/BlockNode.d.ts +0 -0
  332. package/{models → package/models}/chapter/BlockNode.js +0 -0
  333. package/{models → package/models}/chapter/BlocksNode.d.ts +0 -0
  334. package/{models → package/models}/chapter/BlocksNode.js +0 -0
  335. package/{models → package/models}/chapter/BlocksNode.test.d.ts +0 -0
  336. package/{models → package/models}/chapter/BlocksNode.test.js +0 -0
  337. package/{models → package/models}/chapter/Bookkeeping.d.ts +0 -0
  338. package/{models → package/models}/chapter/Bookkeeping.js +0 -0
  339. package/{models → package/models}/chapter/CalloutNode.d.ts +0 -0
  340. package/{models → package/models}/chapter/CalloutNode.js +0 -0
  341. package/{models → package/models}/chapter/Caret.d.ts +0 -0
  342. package/{models → package/models}/chapter/Caret.js +0 -0
  343. package/{models → package/models}/chapter/ChapterNode.d.ts +0 -0
  344. package/{models → package/models}/chapter/ChapterNode.js +0 -0
  345. package/{models → package/models}/chapter/CitationsNode.d.ts +0 -0
  346. package/{models → package/models}/chapter/CitationsNode.js +0 -0
  347. package/{models → package/models}/chapter/CodeNode.d.ts +0 -0
  348. package/{models → package/models}/chapter/CodeNode.js +0 -0
  349. package/{models → package/models}/chapter/CommentNode.d.ts +0 -0
  350. package/{models → package/models}/chapter/CommentNode.js +13 -3
  351. package/{models → package/models}/chapter/DefinitionNode.d.ts +0 -0
  352. package/{models → package/models}/chapter/DefinitionNode.js +0 -0
  353. package/{models → package/models}/chapter/Edit.d.ts +0 -0
  354. package/{models → package/models}/chapter/Edit.js +0 -0
  355. package/{models → package/models}/chapter/EmbedNode.d.ts +1 -0
  356. package/{models → package/models}/chapter/EmbedNode.js +6 -0
  357. package/{models → package/models}/chapter/ErrorNode.d.ts +0 -0
  358. package/{models → package/models}/chapter/ErrorNode.js +0 -0
  359. package/{models → package/models}/chapter/FootnoteNode.d.ts +0 -0
  360. package/{models → package/models}/chapter/FootnoteNode.js +0 -0
  361. package/{models → package/models}/chapter/FormatNode.d.ts +0 -0
  362. package/{models → package/models}/chapter/FormatNode.js +1 -6
  363. package/{models → package/models}/chapter/FormatNode.test.d.ts +0 -0
  364. package/{models → package/models}/chapter/FormatNode.test.js +0 -0
  365. package/{models → package/models}/chapter/InlineCodeNode.d.ts +0 -0
  366. package/{models → package/models}/chapter/InlineCodeNode.js +0 -0
  367. package/{models → package/models}/chapter/LabelNode.d.ts +0 -0
  368. package/{models → package/models}/chapter/LabelNode.js +0 -0
  369. package/{models → package/models}/chapter/LinkNode.d.ts +0 -0
  370. package/{models → package/models}/chapter/LinkNode.js +0 -0
  371. package/{models → package/models}/chapter/ListNode.d.ts +0 -0
  372. package/{models → package/models}/chapter/ListNode.js +0 -0
  373. package/{models → package/models}/chapter/ListNode.test.d.ts +0 -0
  374. package/{models → package/models}/chapter/ListNode.test.js +0 -0
  375. package/{models → package/models}/chapter/MetadataNode.d.ts +0 -0
  376. package/{models → package/models}/chapter/MetadataNode.js +0 -0
  377. package/{models → package/models}/chapter/Node.d.ts +0 -0
  378. package/{models → package/models}/chapter/Node.js +0 -0
  379. package/{models → package/models}/chapter/Node.test.d.ts +0 -0
  380. package/{models → package/models}/chapter/Node.test.js +0 -0
  381. package/{models → package/models}/chapter/ParagraphNode.d.ts +0 -0
  382. package/{models → package/models}/chapter/ParagraphNode.js +0 -0
  383. package/{models → package/models}/chapter/ParagraphNode.test.d.ts +0 -0
  384. package/{models → package/models}/chapter/ParagraphNode.test.js +0 -0
  385. package/{models → package/models}/chapter/Parser.d.ts +2 -2
  386. package/{models → package/models}/chapter/Parser.js +26 -24
  387. package/{models → package/models}/chapter/Parser.test.d.ts +0 -0
  388. package/{models → package/models}/chapter/Parser.test.js +0 -0
  389. package/{models → package/models}/chapter/Position.d.ts +0 -0
  390. package/{models → package/models}/chapter/Position.js +0 -0
  391. package/{models → package/models}/chapter/QuoteNode.d.ts +0 -0
  392. package/{models → package/models}/chapter/QuoteNode.js +0 -0
  393. package/{models → package/models}/chapter/RootNode.d.ts +0 -0
  394. package/{models → package/models}/chapter/RootNode.js +0 -0
  395. package/{models → package/models}/chapter/RuleNode.d.ts +0 -0
  396. package/{models → package/models}/chapter/RuleNode.js +0 -0
  397. package/{models → package/models}/chapter/TableNode.d.ts +0 -0
  398. package/{models → package/models}/chapter/TableNode.js +0 -0
  399. package/{models → package/models}/chapter/TableNode.test.d.ts +0 -0
  400. package/{models → package/models}/chapter/TableNode.test.js +0 -0
  401. package/{models → package/models}/chapter/TextNode.d.ts +0 -0
  402. package/{models → package/models}/chapter/TextNode.js +0 -0
  403. package/{models → package/models}/chapter/TextNode.test.d.ts +0 -0
  404. package/{models → package/models}/chapter/TextNode.test.js +0 -0
  405. package/package/util/dark.d.ts +2 -0
  406. package/package/util/dark.js +16 -0
  407. package/{util → package/util}/getSubdomain.d.ts +0 -0
  408. package/{util → package/util}/getSubdomain.js +0 -0
  409. package/{util → package/util}/isMobile.d.ts +0 -0
  410. package/{util → package/util}/isMobile.js +0 -0
  411. package/{util → package/util}/mineReference.d.ts +0 -0
  412. package/{util → package/util}/mineReference.js +0 -0
  413. package/{util → package/util}/scrollToEyeLevel.d.ts +0 -0
  414. package/{util → package/util}/scrollToEyeLevel.js +0 -0
  415. package/package.json +955 -267
  416. package/components/External.svelte +0 -4
  417. package/components/External.svelte.d.ts +0 -18
  418. package/components/app/Link.svelte +0 -24
  419. package/components/app/Writing.svelte.d.ts +0 -27
  420. package/components/editor/ConfirmButton.svelte +0 -49
  421. package/components/page/Authors.svelte +0 -82
  422. package/components/page/Contexts.js +0 -51
  423. package/components/page/Editions.svelte +0 -158
  424. package/components/page/License.svelte +0 -37
  425. package/components/page/MediaPreview.svelte +0 -29
  426. package/components/page/Status.svelte +0 -57
  427. package/components/page/TableOfContentsImage.svelte +0 -15
  428. package/models/CRUD.d.ts +0 -17
  429. package/models/CRUD.js +0 -207
  430. package/models/Firebase.js +0 -32
  431. package/models/book/Book.js +0 -142
  432. package/models/loadEdition.d.ts +0 -5
  433. package/models/loadEdition.js +0 -20
@@ -0,0 +1,99 @@
1
+ <script>import Loading from './Loading.svelte';
2
+ import Edition from './Edition.svelte';
3
+ import Feedback from '../app/Feedback.svelte';
4
+ import { getBook, getEdition, getUser, getChapterText, } from './Contexts';
5
+ import { onDestroy } from 'svelte';
6
+ import { page } from '$app/stores';
7
+ import { listenToChapters, listenToEdition } from '../../models/CRUD';
8
+ export let write;
9
+ let auth = getUser();
10
+ let book = getBook();
11
+ let edition = getEdition();
12
+ let chapterText = getChapterText();
13
+ let editionUnsub = undefined;
14
+ let chaptersUnsub = undefined;
15
+ let error = undefined;
16
+ function unsub() {
17
+ // Unsubscribe to the old edition document if we were listening to one.
18
+ if (editionUnsub)
19
+ editionUnsub();
20
+ if (chaptersUnsub)
21
+ chaptersUnsub();
22
+ }
23
+ function listen() {
24
+ unsub();
25
+ error = undefined;
26
+ // If we no longer have a book, we can't get an edition.
27
+ if ($book === undefined) {
28
+ edition.set(undefined);
29
+ error = 'Unknown book.';
30
+ return;
31
+ }
32
+ else {
33
+ const editionNumber = $page.params.editionid;
34
+ const latestPublished = !write;
35
+ // Figure out which edition to load.
36
+ let editionID;
37
+ if (editionNumber === undefined) {
38
+ if (latestPublished) {
39
+ editionID = $book.getLatestPublishedEditionID();
40
+ if (editionID === undefined)
41
+ error = 'There is no published edition of this book.';
42
+ }
43
+ else {
44
+ editionID = $book.getLatestEditionID();
45
+ }
46
+ }
47
+ else {
48
+ editionID = $book.getEditionNumberID(parseFloat(editionNumber));
49
+ if (editionID === undefined)
50
+ error = `There is no ${editionNumber} edition of this book`;
51
+ }
52
+ // Listen to the doc for changes and listen to all of its chapters.
53
+ if (editionID !== undefined) {
54
+ editionUnsub = listenToEdition($book.getID(), editionID, (ed) => {
55
+ if (ed) {
56
+ // Before setting the new edition, augmented it with the chapter text.
57
+ edition.set($chapterText
58
+ ? ed.withChapterText($chapterText)
59
+ : ed);
60
+ }
61
+ else {
62
+ edition.set(undefined);
63
+ error = 'Unable to load edition';
64
+ }
65
+ });
66
+ chaptersUnsub = listenToChapters($book.getID(), editionID, (chapters) => {
67
+ // Update the chapter text store.
68
+ chapterText.set(chapters);
69
+ // Update the chapter text in the current edition.
70
+ if ($edition)
71
+ edition.set($edition.withChapterText(chapters));
72
+ });
73
+ }
74
+ }
75
+ }
76
+ // Whenever the book or page changes, change the listener.
77
+ $: if ($page && $auth && $auth.user !== null)
78
+ listen();
79
+ // When unmounted, unset the stores — no longer viewing a book.
80
+ onDestroy(() => {
81
+ edition.set(undefined);
82
+ unsub();
83
+ });
84
+ </script>
85
+
86
+ {#if $book === undefined || error}
87
+ <Feedback error>Unable to load edition.</Feedback>
88
+ {:else if $edition === undefined}
89
+ <Loading />
90
+ {:else}
91
+ <Edition
92
+ edition={$edition}
93
+ base={write
94
+ ? `/write/${$book.getID()}/${$edition.getEditionNumber()}`
95
+ : `/${$book.getSubdomain() ?? $book.getID()}`}
96
+ >
97
+ <slot />
98
+ </Edition>
99
+ {/if}
@@ -0,0 +1,18 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ write: boolean;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {
10
+ default: {};
11
+ };
12
+ };
13
+ export type EditionLoaderProps = typeof __propDef.props;
14
+ export type EditionLoaderEvents = typeof __propDef.events;
15
+ export type EditionLoaderSlots = typeof __propDef.slots;
16
+ export default class EditionLoader extends SvelteComponentTyped<EditionLoaderProps, EditionLoaderEvents, EditionLoaderSlots> {
17
+ }
18
+ export {};
@@ -0,0 +1,109 @@
1
+ <script>import { createNewEdition } from '../../models/CRUD';
2
+ import Instructions from './Instructions.svelte';
3
+ import Note from '../editor/Note.svelte';
4
+ import { getBook, isBookEditable } from './Contexts';
5
+ import Button from '../app/Button.svelte';
6
+ import Link from '../app/Link.svelte';
7
+ import Format from '../chapter/Format.svelte';
8
+ import Parser from '../../models/chapter/Parser';
9
+ import Permissions from '../editor/Permissions.svelte';
10
+ export let editors = true;
11
+ let book = getBook();
12
+ let editable = isBookEditable();
13
+ $: editions = $book?.getEditions();
14
+ $: latestPublishedID = $book?.getLatestPublishedEditionID();
15
+ async function handleDraftEdition() {
16
+ if ($book === undefined)
17
+ return;
18
+ book.set(await createNewEdition($book));
19
+ }
20
+ </script>
21
+
22
+ {#if $book && editions}
23
+ {#if editable}
24
+ <p>
25
+ <Button tooltip="create new edition" command={handleDraftEdition}
26
+ >+ edition</Button
27
+ >
28
+ </p>
29
+ {/if}
30
+ <Instructions {editable}>
31
+ Each book has one or more editions, allowing you to track revisions and
32
+ ensure previous versions remain available. When you're ready to revise,
33
+ add a new edition here; it will copy the latest edition, which you can
34
+ then edit. When you're ready to publish an edition, write a summary here
35
+ and then publish. By default, readers will see the latest published
36
+ edition, but they can access older editions here.
37
+ </Instructions>
38
+ {#each editions as edition, index (edition.ref)}
39
+ {@const editionNumber =
40
+ editions === undefined ? -1 : editions.length - index}
41
+ {@const editionLabel =
42
+ editionNumber +
43
+ (editionNumber === 1
44
+ ? 'st'
45
+ : editionNumber === 2
46
+ ? 'nd'
47
+ : editionNumber === 3
48
+ ? 'rd'
49
+ : 'th')}
50
+
51
+ {#if $book && (editable || edition.published)}
52
+ <section class="edition">
53
+ <h3
54
+ >{editionLabel}
55
+ <Note
56
+ >{#if edition.published}{new Date(
57
+ edition.published
58
+ ).toLocaleDateString(
59
+ 'en-us'
60
+ )}{:else}unpublished{/if}
61
+ {#if edition.published}&nbsp;
62
+ <Link
63
+ to={latestPublishedID === edition.ref.id &&
64
+ $book.getSubdomain() !== undefined
65
+ ? `/${$book.getSubdomain()}`
66
+ : `/${$book.getID()}/${
67
+ editions.length - index
68
+ }`}
69
+ external>read</Link
70
+ >{/if}
71
+ {#if editable}
72
+ &nbsp;
73
+ <Link
74
+ to={`/write/${$book.getID()}/${
75
+ editions.length - index
76
+ }`}>edit</Link
77
+ >
78
+ {/if}
79
+ </Note>
80
+ </h3>
81
+ <p
82
+ >{#if edition.summary !== ''}<Format
83
+ node={Parser.parseFormat(
84
+ undefined,
85
+ edition.summary
86
+ )}
87
+ />{:else}&mdash{/if}</p
88
+ >
89
+ </section>
90
+ {/if}
91
+ {/each}
92
+
93
+ {#if editable && editors}
94
+ <h2>Editors</h2>
95
+ <Instructions {editable}>
96
+ These authors can edit any aspect of the book and any of its
97
+ editions.
98
+ </Instructions>
99
+
100
+ <Permissions
101
+ uids={$book.uids}
102
+ inheriteduids={[]}
103
+ atleastone={true}
104
+ writable={editable}
105
+ change={(uids) =>
106
+ $book ? book.set($book.withEditors(uids)) : undefined}
107
+ />
108
+ {/if}
109
+ {/if}
@@ -1,6 +1,8 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: Record<string, never>;
3
+ props: {
4
+ editors?: boolean | undefined;
5
+ };
4
6
  events: {
5
7
  [evt: string]: CustomEvent<any>;
6
8
  };
@@ -3,12 +3,12 @@ import Outline from './Outline.svelte';
3
3
  import Page from './Page.svelte';
4
4
  import ChapterIDs from '../../models/book/ChapterID';
5
5
  import DefinitionView from './DefinitionView.svelte';
6
- import { getEdition, isEditable } from './Contexts';
6
+ import { getUser, getEdition, isEditionEditable } from './Contexts';
7
7
  import Instructions from './Instructions.svelte';
8
8
  import Button from '../app/Button.svelte';
9
- import Rows from './Rows.svelte';
9
+ let auth = getUser();
10
10
  let edition = getEdition();
11
- let editable = isEditable();
11
+ let editable = isEditionEditable();
12
12
  $: glossary = $edition?.getGlossary() ?? {};
13
13
  // Sort by canonical phrases
14
14
  $: keys =
@@ -32,7 +32,12 @@ function addEmptyDefinition() {
32
32
  {#if $edition}
33
33
  <Page title={`${$edition.getTitle()} - Glossary`}>
34
34
  <Header
35
+ editable={isEditionEditable() ||
36
+ ($auth !== undefined &&
37
+ $auth.user !== null &&
38
+ $edition.isChapterEditor($auth.user.uid))}
35
39
  label="Glossary title"
40
+ id="glossary"
36
41
  getImage={() => $edition?.getImage(ChapterIDs.GlossaryID) ?? null}
37
42
  setImage={(embed) =>
38
43
  $edition
@@ -50,10 +55,12 @@ function addEmptyDefinition() {
50
55
  />
51
56
  </Header>
52
57
  {#if editable}
53
- <Instructions>
54
- Add definitions and then link to them in a chapter's text.
58
+ <Instructions {editable}>
59
+ Build a glossary here, adding terms, phrases, definitions, and
60
+ synonyms. Then, in a chapter, you can select any text and link
61
+ it to a definition.
55
62
  </Instructions>
56
- <Button tooltip="Add a glossary entry" command={addEmptyDefinition}
63
+ <Button tooltip="add glossary entry" command={addEmptyDefinition}
57
64
  >+ definition</Button
58
65
  >
59
66
  {/if}
@@ -1,15 +1,17 @@
1
- <script>import EmbedNode from '../../models/chapter/EmbedNode';
2
- import Parser from '../../models/chapter/Parser';
1
+ <script>import Parser from '../../models/chapter/Parser';
3
2
  import Embed from '../chapter/Embed.svelte';
4
- import ErrorMessage from '../chapter/ErrorMessage.svelte';
5
3
  import BookishEditor from '../editor/BookishEditor.svelte';
6
4
  import Title from './Title.svelte';
7
5
  import { onMount } from 'svelte';
8
6
  import TextEditor from '../editor/TextEditor.svelte';
9
- import { getEdition, isEditable } from './Contexts';
7
+ import { getUser, getEdition, getLeasee, lease } from './Contexts';
10
8
  import Button from '../app/Button.svelte';
9
+ import ConfirmButton from '../editor/ConfirmButton.svelte';
10
+ /** True if an author should be able to edit this header. */
11
+ export let editable;
11
12
  export let label;
12
13
  export let header;
14
+ export let id;
13
15
  export let subtitle = undefined;
14
16
  export let print = false;
15
17
  export let tags = undefined;
@@ -18,8 +20,8 @@ export let setImage;
18
20
  export let save = null;
19
21
  let title = null;
20
22
  let showReminder = true;
23
+ let auth = getUser();
21
24
  let edition = getEdition();
22
- let editable = isEditable();
23
25
  function updateScrollReminder() {
24
26
  // If the bottom of the window is below the top of the title, hide the reminder.
25
27
  if (title)
@@ -48,29 +50,30 @@ onMount(() => {
48
50
  };
49
51
  });
50
52
  // Get the embed, update when getImage function prop changes.
51
- let embedNode = undefined;
52
- $: {
53
- let embed = getImage();
54
- embedNode = embed ? Parser.parseEmbed($edition, embed) : undefined;
55
- }
53
+ let embed;
54
+ $: embed = getImage();
56
55
  </script>
57
56
 
58
57
  <header class="bookish-chapter-header">
59
- {#if embedNode}
58
+ {#if embed}
60
59
  <div class="bookish-figure-full">
61
- {#if edition && editable && embedNode instanceof EmbedNode}
60
+ {#if $edition && editable}
62
61
  <BookishEditor
63
- ast={embedNode}
62
+ text={embed}
63
+ parser={(text) => Parser.parseEmbed($edition, text)}
64
64
  save={(node) =>
65
65
  setImage ? setImage(node.toBookdown()) : undefined}
66
66
  chapter={false}
67
67
  component={Embed}
68
68
  placeholder=""
69
+ leasee={getLeasee(auth, edition, `embed-${id}`)}
70
+ lease={(lock) => lease(auth, edition, `embed-${id}`, lock)}
69
71
  />
70
- {:else if embedNode instanceof EmbedNode}
71
- <Embed node={embedNode} />
72
72
  {:else}
73
- <ErrorMessage node={embedNode} />
73
+ <Embed
74
+ node={Parser.parseEmbed($edition, embed)}
75
+ editable={false}
76
+ />
74
77
  {/if}
75
78
  {#if !print && showReminder}
76
79
  <div class="bookish-scroll-reminder" />
@@ -84,13 +87,15 @@ $: {
84
87
  <slot name="outline" />
85
88
  {/if}
86
89
  {#if editable}
87
- {#if embedNode === undefined}
88
- <Button tooltip="add cover image to page" command={addCover}
90
+ {#if embed === null}
91
+ <Button tooltip="add cover image" command={addCover}
89
92
  >+ cover image</Button
90
93
  >
91
94
  {:else}
92
- <Button tooltip="remove cover image from page" command={removeCover}
93
- >- cover image</Button
95
+ <ConfirmButton
96
+ confirm="remove image?"
97
+ tooltip="remove cover image"
98
+ command={removeCover}>- cover image</ConfirmButton
94
99
  >
95
100
  {/if}
96
101
  {/if}
@@ -101,7 +106,7 @@ $: {
101
106
  <TextEditor
102
107
  {label}
103
108
  text={header + (subtitle ? ': ' + subtitle : '')}
104
- placeholder="Title"
109
+ placeholder="title"
105
110
  valid={(text) =>
106
111
  text.length === 0
107
112
  ? 'Titles have to be at least one character long.'
@@ -1,8 +1,10 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
+ /** True if an author should be able to edit this header. */ editable: boolean;
4
5
  label: string;
5
6
  header: string;
7
+ id: string;
6
8
  subtitle?: string | undefined;
7
9
  print?: boolean | undefined;
8
10
  tags?: string[] | undefined;
@@ -4,13 +4,14 @@ import Page from './Page.svelte';
4
4
  import Instructions from './Instructions.svelte';
5
5
  import ChapterIDs from '../../models/book/ChapterID';
6
6
  import Link from '../Link.svelte';
7
- import { getBase, getEdition } from './Contexts';
7
+ import { getBase, getEdition, isEditionEditable } from './Contexts';
8
8
  import { page } from '$app/stores';
9
9
  import Muted from './Muted.svelte';
10
10
  import ChapterTitle from './ChapterTitle.svelte';
11
11
  import ChapterNumber from './ChapterNumber.svelte';
12
12
  import PageHeader from './PageHeader.svelte';
13
13
  import Rows from './Rows.svelte';
14
+ let editable = isEditionEditable();
14
15
  let edition = getEdition();
15
16
  let base = getBase();
16
17
  // What letter are we matching?
@@ -43,7 +44,9 @@ $: {
43
44
  {#if $edition}
44
45
  <Page title={`${$edition.getTitle()} - Index`}>
45
46
  <Header
47
+ editable={isEditionEditable()}
46
48
  label="Index title"
49
+ id="index"
47
50
  getImage={() => $edition?.getImage(ChapterIDs.IndexID) ?? null}
48
51
  setImage={(embed) =>
49
52
  $edition
@@ -59,9 +62,8 @@ $: {
59
62
  />
60
63
  </Header>
61
64
 
62
- <Instructions>
63
- This index is created automatically. It's not perfect; we may add
64
- more control over it in the future.
65
+ <Instructions {editable}>
66
+ This index is created automatically using the words in the chapters.
65
67
  </Instructions>
66
68
 
67
69
  <p
@@ -79,7 +81,7 @@ $: {
79
81
  <nav class="letters">
80
82
  {#each 'abcdefghijklmnopqrstuvwxyz'.split('') as symbol, index}
81
83
  {#if symbol in letters && letter !== symbol}
82
- <Link to={$base + 'index/' + symbol}>{symbol}</Link>
84
+ <Link to="{$base}/index/{symbol}">{symbol}</Link>
83
85
  {:else if letter === symbol}
84
86
  <strong
85
87
  ><span style="font-size: 200%">{symbol}</span
@@ -95,13 +97,13 @@ $: {
95
97
  {#each words as word, index}
96
98
  {#if word === true}
97
99
  <tr
98
- ><td colspan={2}
100
+ ><td class="term" colspan={2}
99
101
  ><PageHeader>{words[index + 1]}</PageHeader></td
100
102
  ></tr
101
103
  >
102
104
  {:else}
103
105
  <tr>
104
- <td>{word}</td>
106
+ <td class="term">{word}</td>
105
107
  <td>
106
108
  <!-- Sort the chapters by chapter number -->
107
109
  {#each Array.from(bookIndex[word]).sort( (a, b) => {
@@ -120,7 +122,7 @@ $: {
120
122
  {/if}</ChapterNumber
121
123
  >
122
124
  <ChapterTitle
123
- link={`${$base}${chapterID}?word=${word}`}
125
+ link={`${$base}/${chapterID}?word=${word}`}
124
126
  >{$edition.getChapterName(
125
127
  chapterID
126
128
  )}</ChapterTitle
@@ -141,6 +143,10 @@ $: {
141
143
  margin-top: 0;
142
144
  }
143
145
 
146
+ .term {
147
+ vertical-align: baseline;
148
+ }
149
+
144
150
  .letters {
145
151
  display: flex;
146
152
  flex-direction: row;
@@ -1,5 +1,4 @@
1
- <script>import { isEditable } from './Contexts';
2
- let editable = isEditable();
1
+ <script>export let editable;
3
2
  </script>
4
3
 
5
4
  {#if editable}
@@ -1,6 +1,8 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: Record<string, never>;
3
+ props: {
4
+ editable: boolean;
5
+ };
4
6
  events: {
5
7
  [evt: string]: CustomEvent<any>;
6
8
  };
@@ -0,0 +1,45 @@
1
+ <script>import Parser from '../../models/chapter/Parser';
2
+ import BookishEditor from '../editor/BookishEditor.svelte';
3
+ import Instructions from './Instructions.svelte';
4
+ import Format from '../chapter/Format.svelte';
5
+ import { getUser, getEdition, getLeasee, isEditionEditable, lease, } from './Contexts';
6
+ import PageHeader from './PageHeader.svelte';
7
+ let auth = getUser();
8
+ let edition = getEdition();
9
+ let editable = isEditionEditable();
10
+ </script>
11
+
12
+ <PageHeader id="license">License</PageHeader>
13
+
14
+ <Instructions {editable}>
15
+ Do you want to specify rights other than your region's default copyrights?
16
+ Edit them here.
17
+ </Instructions>
18
+
19
+ {#if $edition}
20
+ <!-- If editable, show acknowledgements even if they're empty, otherwise hide -->
21
+ {#if editable}
22
+ <!-- svelte-ignore missing-declaration -->
23
+ <BookishEditor
24
+ text={$edition.getLicense()}
25
+ parser={(text) =>
26
+ Parser.parseFormat($edition, text).withTextIfEmpty()}
27
+ save={(node) =>
28
+ $edition
29
+ ? edition.set($edition.setLicense(node.toBookdown()))
30
+ : undefined}
31
+ chapter={false}
32
+ component={Format}
33
+ placeholder="license"
34
+ leasee={getLeasee(auth, edition, `license`)}
35
+ lease={(lock) => lease(auth, edition, `license`, lock)}
36
+ />
37
+ {:else}
38
+ <Format
39
+ node={Parser.parseFormat(
40
+ $edition,
41
+ $edition.getLicense()
42
+ ).withTextIfEmpty()}
43
+ />
44
+ {/if}
45
+ {/if}