bookish-press 0.4.1 → 0.4.21

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 (395) 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 -75
  217. package/components/page/Edition.svelte.d.ts +4 -4
  218. package/components/page/Editions.svelte +158 -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 +207 -0
  287. package/models/Firebase.d.ts +1 -0
  288. package/models/Firebase.js +21 -15
  289. package/models/book/Book.d.ts +26 -30
  290. package/models/book/Book.js +120 -113
  291. package/models/book/BookMedia.d.ts +3 -3
  292. package/models/book/BookMedia.js +22 -16
  293. package/models/book/BookSaveStatus.d.ts +7 -0
  294. package/models/book/BookSaveStatus.js +8 -0
  295. package/models/book/Chapter.d.ts +46 -39
  296. package/models/book/Chapter.js +180 -198
  297. package/models/book/ChapterID.js +7 -7
  298. package/models/book/Definition.d.ts +1 -1
  299. package/models/book/Edition.d.ts +62 -60
  300. package/models/book/Edition.js +385 -303
  301. package/models/book/Reference.d.ts +24 -0
  302. package/models/book/Reference.js +78 -0
  303. package/models/book/Schema.d.ts +169 -0
  304. package/models/book/Schema.js +114 -0
  305. package/models/book/Theme.d.ts +44 -37
  306. package/models/book/Theme.js +452 -52
  307. package/models/book/ThemeColors.d.ts +1 -1
  308. package/models/book/Words.d.ts +2 -0
  309. package/models/book/Words.js +110 -0
  310. package/models/chapter/AtomNode.d.ts +4 -4
  311. package/models/chapter/AtomNode.js +20 -13
  312. package/models/chapter/BlockNode.d.ts +9 -10
  313. package/models/chapter/BlockNode.js +32 -13
  314. package/models/chapter/BlocksNode.d.ts +10 -10
  315. package/models/chapter/BlocksNode.js +315 -120
  316. package/models/chapter/BlocksNode.test.js +494 -228
  317. package/models/chapter/Bookkeeping.d.ts +1 -1
  318. package/models/chapter/CalloutNode.d.ts +3 -3
  319. package/models/chapter/CalloutNode.js +34 -12
  320. package/models/chapter/Caret.d.ts +9 -7
  321. package/models/chapter/Caret.js +11 -6
  322. package/models/chapter/ChapterNode.d.ts +11 -11
  323. package/models/chapter/ChapterNode.js +70 -33
  324. package/models/chapter/CitationsNode.d.ts +3 -3
  325. package/models/chapter/CitationsNode.js +31 -12
  326. package/models/chapter/CodeNode.d.ts +11 -6
  327. package/models/chapter/CodeNode.js +143 -34
  328. package/models/chapter/CommentNode.d.ts +5 -5
  329. package/models/chapter/CommentNode.js +29 -13
  330. package/models/chapter/DefinitionNode.d.ts +2 -2
  331. package/models/chapter/DefinitionNode.js +15 -7
  332. package/models/chapter/Edit.d.ts +3 -3
  333. package/models/chapter/EmbedNode.d.ts +9 -5
  334. package/models/chapter/EmbedNode.js +108 -35
  335. package/models/chapter/ErrorNode.d.ts +2 -2
  336. package/models/chapter/ErrorNode.js +34 -12
  337. package/models/chapter/FootnoteNode.d.ts +5 -5
  338. package/models/chapter/FootnoteNode.js +34 -16
  339. package/models/chapter/FormatNode.d.ts +10 -10
  340. package/models/chapter/FormatNode.js +237 -106
  341. package/models/chapter/FormatNode.test.js +87 -45
  342. package/models/chapter/InlineCodeNode.d.ts +2 -2
  343. package/models/chapter/InlineCodeNode.js +22 -9
  344. package/models/chapter/LabelNode.d.ts +4 -4
  345. package/models/chapter/LabelNode.js +31 -13
  346. package/models/chapter/LinkNode.d.ts +2 -2
  347. package/models/chapter/LinkNode.js +21 -9
  348. package/models/chapter/ListNode.d.ts +8 -8
  349. package/models/chapter/ListNode.js +99 -38
  350. package/models/chapter/ListNode.test.js +29 -24
  351. package/models/chapter/MetadataNode.d.ts +3 -3
  352. package/models/chapter/MetadataNode.js +13 -5
  353. package/models/chapter/Node.d.ts +5 -3
  354. package/models/chapter/Node.js +76 -29
  355. package/models/chapter/Node.test.js +20 -18
  356. package/models/chapter/ParagraphNode.d.ts +6 -6
  357. package/models/chapter/ParagraphNode.js +84 -29
  358. package/models/chapter/ParagraphNode.test.js +22 -13
  359. package/models/chapter/Parser.d.ts +25 -25
  360. package/models/chapter/Parser.js +201 -189
  361. package/models/chapter/Parser.test.js +16 -16
  362. package/models/chapter/Position.d.ts +1 -1
  363. package/models/chapter/QuoteNode.d.ts +6 -6
  364. package/models/chapter/QuoteNode.js +61 -23
  365. package/models/chapter/RootNode.d.ts +4 -4
  366. package/models/chapter/RuleNode.d.ts +2 -2
  367. package/models/chapter/RuleNode.js +31 -11
  368. package/models/chapter/TableNode.d.ts +8 -6
  369. package/models/chapter/TableNode.js +89 -34
  370. package/models/chapter/TableNode.test.js +22 -24
  371. package/models/chapter/TextNode.d.ts +6 -6
  372. package/models/chapter/TextNode.js +72 -32
  373. package/models/chapter/TextNode.test.js +4 -4
  374. package/models/loadEdition.d.ts +1 -1
  375. package/models/loadEdition.js +10 -6
  376. package/package.json +104 -25
  377. package/util/getSubdomain.js +8 -6
  378. package/util/isMobile.js +1 -1
  379. package/util/mineReference.d.ts +3 -2
  380. package/util/mineReference.js +67 -29
  381. package/util/scrollToEyeLevel.js +6 -1
  382. package/components/chapter/renderPosition.d.ts +0 -3
  383. package/components/chapter/renderPosition.js +0 -4
  384. package/components/editor/ToolbarIcon.svelte +0 -22
  385. package/components/editor/ToolbarIcon.svelte.d.ts +0 -16
  386. package/components/page/Alert.svelte +0 -11
  387. package/components/page/Alert.svelte.d.ts +0 -23
  388. package/components/page/Revisions.svelte +0 -124
  389. package/components/page/Revisions.svelte.d.ts +0 -14
  390. package/models/BookLoader.d.ts +0 -2
  391. package/models/BookLoader.js +0 -67
  392. package/models/Firestore.d.ts +0 -22
  393. package/models/Firestore.js +0 -194
  394. package/models/chapter/ReferenceNode.d.ts +0 -29
  395. package/models/chapter/ReferenceNode.js +0 -48
@@ -1,145 +1,288 @@
1
- <script>import { afterUpdate } from "svelte";
2
- import TextEditor from "../editor/TextEditor.svelte";
3
- import { getEdition, isEditable } from "./Contexts";
4
- export let node;
1
+ <svelte:options immutable={true} />
2
+
3
+ <script>import Reference from '../../models/book/Reference';
4
+ import Button from '../app/Button.svelte';
5
+ import Table from '../app/Table.svelte';
6
+ import ConfirmButton from '../editor/ConfirmButton.svelte';
7
+ import TextEditor from '../editor/TextEditor.svelte';
8
+ import { getEdition, isEditable } from './Contexts';
9
+ import Link from '../Link.svelte';
10
+ import Note from '../editor/Note.svelte';
11
+ import Parser from '../../models/chapter/Parser';
12
+ export let reference;
5
13
  let editable = isEditable();
6
14
  let edition = getEdition();
7
- let reference = null;
8
15
  let editing = false;
9
- let entered = false;
10
- afterUpdate(() => {
11
- if (editing && entered && reference) {
12
- entered = false;
13
- reference.querySelector("input")?.focus();
14
- }
15
- });
16
16
  function startEditing() {
17
17
  editing = true;
18
- entered = true;
19
18
  }
20
19
  function stopEditing() {
21
20
  editing = false;
22
21
  }
22
+ function move(field, direction) {
23
+ let fields = Array.from(document.querySelectorAll('input[type="text"]'));
24
+ let index = fields.indexOf(field);
25
+ if (index >= 0) {
26
+ const newInput = direction < 0 && index > 0
27
+ ? fields[index - 1]
28
+ : direction > 0 && index < fields.length - 1
29
+ ? fields[index + 1]
30
+ : undefined;
31
+ if (newInput)
32
+ newInput.focus();
33
+ }
34
+ }
23
35
  </script>
24
36
 
37
+ {#if editable && !reference.short}
38
+ <ConfirmButton
39
+ tooltip="delete reference {reference.title}"
40
+ commandLabel="- reference"
41
+ confirmLabel="Confirm"
42
+ command={() =>
43
+ $edition
44
+ ? edition.set($edition.withoutReference(reference.citationID))
45
+ : undefined}
46
+ />
47
+ <Button
48
+ tooltip="stop editing reference"
49
+ command={() => (editing ? stopEditing() : startEditing())}
50
+ >{editing ? 'done' : 'edit'}</Button
51
+ >
52
+ {/if}
25
53
  <!-- If a short version was requested, try to abbreviate the authors. -->
26
- {#if node.short }
27
- {@const authorList = node.authors.split(",") }
28
- {@const authors = authorList.length === 1 ? authorList[0] :
29
- authorList.length === 2 ? authorList[0].trim() + " & " + authorList[1].trim() :
30
- authorList[0].trim() + ", et al."}
31
- <span data-nodeid={node.nodeID} class="bookish-reference-text">
54
+ {#if reference.short}
55
+ {@const authorList = reference.authors.split(',')}
56
+ {@const authors =
57
+ authorList.length === 1
58
+ ? authorList[0]
59
+ : authorList.length === 2
60
+ ? authorList[0].trim() + ' & ' + authorList[1].trim()
61
+ : authorList[0].trim() + ', et al.'}
62
+ <p class="reference">
32
63
  {authors}
33
- ({node.year}).
34
- {#if node.url === null }
35
- {node.title}
64
+ ({reference.year}).
65
+ {#if reference.url === null}
66
+ {reference.title}
36
67
  {:else}
37
- <a href={node.url} target={"_blank"}>{node.title}</a>
68
+ <Link to={reference.url}>{reference.title}</Link>
38
69
  {/if}
39
- {node.title.charAt(node.title.length - 1) === "?" ? "" : "."}
40
- <em>{node.source}</em>
41
- </span>
70
+ {reference.title.charAt(reference.title.length - 1) === '?' ? '' : '.'}
71
+ <em>{reference.source}</em>
72
+ </p>
73
+ {:else if !editable || !editing}
74
+ <!-- If not editable, just render the reference. -->
75
+ <p class="reference">
76
+ {#if reference.authors}{reference.authors}{:else}<em>Authors</em>{/if}
77
+ {#if reference.year}({reference.year}){:else}<em>Year</em>{/if}. {#if reference.url === null || reference.url.length === 0}{#if reference.title}{reference.title}{:else}<em
78
+ >Title</em
79
+ >{/if}{:else}<Link to={reference.url}
80
+ >{#if reference.title}{reference.title}{:else}<em>Title</em
81
+ >{/if}</Link
82
+ >{/if}.<em
83
+ >&nbsp;{#if reference.source}{reference.source}{:else}Source{/if}</em
84
+ >.
85
+ {#if reference.summary}<aside class="summary">{reference.summary}</aside
86
+ >{/if}
87
+ </p>
42
88
  {:else}
43
89
  <!-- If editable, place in rows to make room for text editors to not have to wrap. -->
44
- <span
45
- data-nodeid={node.nodeID}
46
- class="bookish-reference-text"
47
- tabIndex=0
48
- on:click|stopPropagation={() => { if(editable && !editing) startEditing(); }}
49
- on:keydown={event => { if(editable && !editing && (event.key === "Enter" || event.key === " ")) { startEditing(); event.stopPropagation(); }}}
50
- bind:this={reference}
51
- >
90
+ <Table>
91
+ <!-- CitationID -->
92
+ <tr>
93
+ <td width="25%">id</td>
94
+ <td>
95
+ <TextEditor
96
+ text={reference.citationID}
97
+ label={'Citation ID'}
98
+ placeholder="Citation ID"
99
+ saveOnExit
100
+ valid={(text) => {
101
+ if (text.length === 0)
102
+ return "reference ID can't be empty.";
103
+ if ($edition && text in $edition.references) {
104
+ const existing = $edition.references[text];
105
+ if (
106
+ existing instanceof Reference &&
107
+ !reference.equals(existing)
108
+ )
109
+ return 'ID already taken';
110
+ }
111
+ }}
112
+ save={(text) =>
113
+ $edition
114
+ ? edition.set(
115
+ $edition.withEditedReferenceID(
116
+ text,
117
+ reference
118
+ )
119
+ )
120
+ : undefined}
121
+ {move}
122
+ /><Note>determines order, a-z</Note>
123
+ </td>
124
+ </tr>
52
125
  <!-- Authors -->
53
- {#if editable && editing }
54
- <em>
126
+ <tr>
127
+ <td width="25%">authors</td>
128
+ <td>
55
129
  <TextEditor
56
- startText={node.authors}
130
+ text={reference.authors}
57
131
  label={'Author list editor.'}
58
132
  placeholder="Authors"
59
- valid={ text => {
60
- if(text.length === 0) return "Authors can't be empty.";
133
+ valid={(text) => {
134
+ if (text.length === 0) return "Authors can't be empty.";
61
135
  }}
62
- save={text => $edition.editReference(node.withAuthors(text))}
63
- width={60}
136
+ save={(text) =>
137
+ $edition
138
+ ? edition.set(
139
+ $edition.withEditedReference(
140
+ reference.withAuthors(text)
141
+ )
142
+ )
143
+ : undefined}
144
+ {move}
64
145
  />
65
- </em>
66
- {:else}
67
- {#if node.authors }
68
- {node.authors}
69
- {:else}
70
- <em>Authors</em>
71
- {/if}
72
- {/if}
146
+ </td>
147
+ </tr>
73
148
  <!-- Year -->
74
- <br/>({#if editable && editing }
149
+ <tr>
150
+ <td>year</td>
151
+ <td>
75
152
  <TextEditor
76
- startText={node.year}
77
- label={'Year editor.'}
153
+ text={reference.year}
154
+ label={'Year editor.'}
78
155
  placeholder="Year"
79
- valid={ text => {
80
- if(text.length === 0) return "Year can't be empty";
81
- if(!/1?[0-9)[0-9]{2}/.test(text)) return "Not a valid year"
156
+ valid={(text) => {
157
+ if (text.length === 0) return "Year can't be empty";
158
+ if (!/1?[0-9)[0-9]{2}/.test(text))
159
+ return 'Not a valid year';
82
160
  }}
83
- save={text => $edition.editReference(node.withYear(text))}
161
+ save={(text) =>
162
+ $edition
163
+ ? edition.set(
164
+ $edition.withEditedReference(
165
+ reference.withYear(text)
166
+ )
167
+ )
168
+ : undefined}
169
+ {move}
84
170
  />
85
- {:else}
86
- {#if node.year }{node.year}{:else}<em>Year</em>{/if}
87
- {/if}).
171
+ </td>
172
+ </tr>
88
173
  <!-- Title -->
89
- {#if editable && editing }
90
- <br/><TextEditor
91
- startText={node.title}
92
- label={'Title editor.'}
93
- placeholder="Title"
94
- valid={ text => {
95
- if(text.length === 0) return "Title can't be empty.";
96
- }}
97
- save={text => $edition.editReference(node.withTitle(text))}
98
- width={60}
99
- />
100
- {:else}
101
- {#if node.url === null}
102
- {#if node.title}{node.title}{:else}<em>Title</em>{/if}
103
- {:else}
104
- <a href={node.url} target={"_blank"}>{#if node.title}{node.title}{:else}<em>Title</em>{/if}</a>
105
- {/if}
106
- {/if}.
107
- <!-- Source -->
108
- {#if editable && editing }
109
- <br/><em>
174
+ <tr>
175
+ <td>title</td>
176
+ <td>
110
177
  <TextEditor
111
- startText={node.source}
112
- label={'Source editor.'}
113
- placeholder="Source"
114
- valid={ text => {
115
- if(text.length === 0) return "Source can't be empty";
178
+ text={reference.title}
179
+ label={'Title editor.'}
180
+ placeholder="Title"
181
+ valid={(text) => {
182
+ if (text.length === 0) return "Title can't be empty.";
116
183
  }}
117
- save={text => $edition.editReference(node.withSource(text))}
118
- width={60}
184
+ save={(text) =>
185
+ $edition
186
+ ? edition.set(
187
+ $edition.withEditedReference(
188
+ reference.withTitle(text)
189
+ )
190
+ )
191
+ : undefined}
192
+ {move}
119
193
  />
120
- </em>
121
- {:else}
122
- <em>{#if node.source}{node.source}{:else}Source{/if}</em>
123
- {/if}.
124
- {#if editable && editing }
125
- <br/><TextEditor
126
- startText={node.summary}
127
- label={'Summary editor.'}
128
- placeholder="Summary"
129
- valid={ () => undefined }
130
- save={text => $edition.editReference(node.withSummary(text))}
131
- width={60}
132
- />
133
- {:else}
134
- {#if node.summary}
135
- <span class="bookish-reference-summary">{node.summary}</span>
136
- {/if}
137
- {/if}
138
- {#if editing }
139
- <br/><button
140
- on:click|stopPropagation={() => stopEditing()}
141
- on:keydown={event => { if(editing && (event.key === "Enter" || event.key === " ")) { stopEditing(); event.stopPropagation(); }}}
142
- >done editing</button>
143
- {/if}
144
- </span>
145
- {/if}
194
+ </td>
195
+ </tr>
196
+ <!-- Source -->
197
+ <tr>
198
+ <td>source</td>
199
+ <td>
200
+ <em>
201
+ <TextEditor
202
+ text={reference.source}
203
+ label={'Source editor.'}
204
+ placeholder="Source"
205
+ valid={(text) => {
206
+ if (text.length === 0)
207
+ return "Source can't be empty";
208
+ }}
209
+ save={(text) =>
210
+ $edition
211
+ ? edition.set(
212
+ $edition.withEditedReference(
213
+ reference.withSource(text)
214
+ )
215
+ )
216
+ : undefined}
217
+ {move}
218
+ />
219
+ </em>
220
+ </td>
221
+ </tr>
222
+ <!-- URL -->
223
+ <tr>
224
+ <td>url</td>
225
+ <td>
226
+ <TextEditor
227
+ text={reference.url}
228
+ label={'URL editor.'}
229
+ placeholder="URL"
230
+ valid={() => undefined}
231
+ save={(text) =>
232
+ $edition
233
+ ? edition.set(
234
+ $edition.withEditedReference(
235
+ reference.withURL(text)
236
+ )
237
+ )
238
+ : undefined}
239
+ {move}
240
+ />
241
+ </td>
242
+ </tr>
243
+ <tr>
244
+ <td>summary</td>
245
+ <td>
246
+ <TextEditor
247
+ text={reference.summary}
248
+ label={'Summary editor.'}
249
+ placeholder="Summary"
250
+ valid={() => undefined}
251
+ save={(text) =>
252
+ $edition
253
+ ? edition.set(
254
+ $edition.withEditedReference(
255
+ reference.withSummary(text)
256
+ )
257
+ )
258
+ : undefined}
259
+ {move}
260
+ />
261
+ </td>
262
+ </tr>
263
+ </Table>
264
+ {/if}
265
+
266
+ <style>
267
+ .reference {
268
+ line-height: var(--bookish-paragraph-line-height);
269
+ margin-top: 0;
270
+ margin-bottom: var(--bookish-header-spacing);
271
+ }
272
+
273
+ .reference .summary {
274
+ font-size: var(--bookish-small-font-size);
275
+ padding-left: var(--bookish-block-padding);
276
+ border-left: 1px solid var(--bookish-border-color-light);
277
+ margin-top: var(--bookish-block-padding);
278
+ font-style: italic;
279
+ }
280
+
281
+ td:first-child {
282
+ font-style: italic;
283
+ }
284
+
285
+ td {
286
+ line-height: 1;
287
+ }
288
+ </style>
@@ -1,17 +1,17 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type ReferenceNode from "../../models/chapter/ReferenceNode";
2
+ import Reference from '../../models/book/Reference';
3
3
  declare const __propDef: {
4
4
  props: {
5
- node: ReferenceNode;
5
+ reference: Reference;
6
6
  };
7
7
  events: {
8
8
  [evt: string]: CustomEvent<any>;
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type ReferenceProps = typeof __propDef.props;
13
- export declare type ReferenceEvents = typeof __propDef.events;
14
- export declare type ReferenceSlots = typeof __propDef.slots;
12
+ export type ReferenceProps = typeof __propDef.props;
13
+ export type ReferenceEvents = typeof __propDef.events;
14
+ export type ReferenceSlots = typeof __propDef.slots;
15
15
  export default class Reference extends SvelteComponentTyped<ReferenceProps, ReferenceEvents, ReferenceSlots> {
16
16
  }
17
17
  export {};
@@ -1,58 +1,50 @@
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 Parser from "../../models/chapter/Parser";
5
- import ConfirmButton from '../editor/ConfirmButton.svelte';
4
+ import Parser from '../../models/chapter/Parser';
6
5
  import ChapterIDs from '../../models/book/ChapterID';
7
- import BulkReferenceEditor from "./BulkReferenceEditor.svelte";
8
- import PossibleReference from "./PossibleReference.svelte";
9
- import { getEdition, isEditable } from "./Contexts";
6
+ import BulkReferenceEditor from './BulkReferenceEditor.svelte';
7
+ import PossibleReference from './PossibleReference.svelte';
8
+ import { getEdition, isEditable } from './Contexts';
10
9
  let edition = getEdition();
11
10
  let editable = isEditable();
12
- $: references = $edition.hasReferences() ? $edition.getReferences() : null;
11
+ $: references = $edition?.hasReferences() ? $edition.getReferences() : null;
13
12
  // Otherwise, map references to a list with letter headers.
14
13
  if (references !== null) {
15
14
  }
16
15
  </script>
17
16
 
18
- <Page title={`${$edition.getTitle()} - References`}>
19
- <Header
20
- label="References title"
21
- getImage={() => $edition.getImage(ChapterIDs.ReferencesID)}
22
- setImage={(embed) => $edition.setImage(ChapterIDs.ReferencesID, embed)}
23
- header="References"
24
- tags={$edition.getTags()}
25
- >
26
- <Outline
27
- slot="outline"
28
- previous={$edition.getPreviousChapterID(ChapterIDs.ReferencesID)}
29
- next={$edition.getNextChapterID(ChapterIDs.ReferencesID)}
30
- />
31
- </Header>
32
- {#if editable }<BulkReferenceEditor />{/if}
33
- {#if references !== null }
34
- <p><em>Sorted by last name of first author.</em></p>
17
+ {#if $edition}
18
+ <Page title={`${$edition.getTitle()} - References`}>
19
+ <Header
20
+ label="References title"
21
+ getImage={() => $edition?.getImage(ChapterIDs.ReferencesID) ?? null}
22
+ setImage={(embed) =>
23
+ $edition
24
+ ? edition.set(
25
+ $edition.withImage(ChapterIDs.ReferencesID, embed)
26
+ )
27
+ : undefined}
28
+ header="References"
29
+ tags={$edition.getTags()}
30
+ >
31
+ <Outline
32
+ slot="outline"
33
+ previous={$edition.getPreviousChapterID(
34
+ ChapterIDs.ReferencesID
35
+ )}
36
+ next={$edition.getNextChapterID(ChapterIDs.ReferencesID)}
37
+ />
38
+ </Header>
39
+ {#if editable}<BulkReferenceEditor />{/if}
40
+ {#if references !== null}
41
+ <p><em>Sorted by last name of first author.</em></p>
35
42
 
36
- {#each Object.keys(references).sort() as citationID }
37
- {@const ref = Parser.parseReference(citationID, references === null ? "" : references[citationID], $edition) }
38
- <!-- {#if letter === undefined || citationID.charAt(0) !== letter) {
39
- letter = citationID.charAt(0);
40
- renderedReferences.push(<h2 key={"letter-" + letter} className="bookish-header" id={"references-" + letter}>{letter.toUpperCase()}</h2>);
41
- } -->
42
-
43
- <p>
44
- <PossibleReference node={ref} />
45
- {#if editable}
46
- <ConfirmButton
47
- commandLabel="x"
48
- confirmLabel="Confirm"
49
- command={() => $edition.removeReference(citationID)}
50
- />
51
- {/if}
52
- </p>
53
- {/each}
54
-
55
- {:else}
56
- <p>This book has no references.</p>
57
- {/if}
58
- </Page>
43
+ {#each Object.keys(references).sort() as citationID (citationID)}
44
+ <PossibleReference node={references[citationID]} />
45
+ {/each}
46
+ {:else}
47
+ <p>This book has no references.</p>
48
+ {/if}
49
+ </Page>
50
+ {/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 ReferencesProps = typeof __propDef.props;
10
- export declare type ReferencesEvents = typeof __propDef.events;
11
- export declare type ReferencesSlots = typeof __propDef.slots;
9
+ export type ReferencesProps = typeof __propDef.props;
10
+ export type ReferencesEvents = typeof __propDef.events;
11
+ export type ReferencesSlots = typeof __propDef.slots;
12
12
  export default class References extends SvelteComponentTyped<ReferencesProps, ReferencesEvents, ReferencesSlots> {
13
13
  }
14
14
  export {};
@@ -0,0 +1,54 @@
1
+ <div class="table">
2
+ <table>
3
+ <tbody>
4
+ <slot />
5
+ </tbody>
6
+ </table>
7
+ </div>
8
+
9
+ <style>
10
+ .table {
11
+ width: 100%;
12
+ overflow-x: auto;
13
+ line-height: var(--bookish-paragraph-line-height-tight);
14
+ border-collapse: collapse;
15
+ clear: both;
16
+ border-radius: var(--bookish-roundedness);
17
+ border-spacing: 0;
18
+ }
19
+
20
+ table {
21
+ width: 100%;
22
+ border-collapse: collapse;
23
+ }
24
+
25
+ table :global(tr:first-child th) {
26
+ font-weight: bold;
27
+ border: 0;
28
+ border-bottom: 1px solid var(--bookish-border-color);
29
+ }
30
+
31
+ table :global(tr:nth-child(even)) {
32
+ background-color: var(--bookish-block-background-color);
33
+ }
34
+
35
+ table :global(tr:last-child td:first-child) {
36
+ border-bottom-left-radius: var(--bookish-roundedness);
37
+ }
38
+
39
+ table :global(tr:last-child td:last-child) {
40
+ border-bottom-right-radius: var(--bookish-roundedness);
41
+ }
42
+
43
+ table :global(tr:first-child td:first-child) {
44
+ border-top-left-radius: var(--bookish-roundedness);
45
+ }
46
+ table :global(tr:first-child td:last-child) {
47
+ border-top-right-radius: var(--bookish-roundedness);
48
+ }
49
+
50
+ .table :global(td),
51
+ .table :global(th) {
52
+ padding: var(--bookish-block-padding);
53
+ }
54
+ </style>
@@ -0,0 +1,27 @@
1
+ /** @typedef {typeof __propDef.props} RowsProps */
2
+ /** @typedef {typeof __propDef.events} RowsEvents */
3
+ /** @typedef {typeof __propDef.slots} RowsSlots */
4
+ export default class Rows extends SvelteComponentTyped<{
5
+ [x: string]: never;
6
+ }, {
7
+ [evt: string]: CustomEvent<any>;
8
+ }, {
9
+ default: {};
10
+ }> {
11
+ }
12
+ export type RowsProps = typeof __propDef.props;
13
+ export type RowsEvents = typeof __propDef.events;
14
+ export type RowsSlots = typeof __propDef.slots;
15
+ import { SvelteComponentTyped } from "svelte";
16
+ declare const __propDef: {
17
+ props: {
18
+ [x: string]: never;
19
+ };
20
+ events: {
21
+ [evt: string]: CustomEvent<any>;
22
+ };
23
+ slots: {
24
+ default: {};
25
+ };
26
+ };
27
+ export {};