bookish-press 0.4.0 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/README.md +3 -1
  2. package/components/Auth.svelte +27 -24
  3. package/components/Auth.svelte.d.ts +4 -4
  4. package/components/Authentication.d.ts +2 -2
  5. package/components/BookPreview.svelte +75 -59
  6. package/components/BookPreview.svelte.d.ts +5 -5
  7. package/components/External.svelte +1 -1
  8. package/components/External.svelte.d.ts +3 -3
  9. package/components/Link.svelte +49 -3
  10. package/components/Link.svelte.d.ts +3 -4
  11. package/components/app/BookList.svelte +19 -0
  12. package/components/app/BookList.svelte.d.ts +18 -0
  13. package/components/app/Button.svelte +49 -0
  14. package/components/app/Button.svelte.d.ts +22 -0
  15. package/components/app/Feedback.svelte +47 -0
  16. package/components/app/Feedback.svelte.d.ts +18 -0
  17. package/components/app/Head.svelte +15 -0
  18. package/components/app/Head.svelte.d.ts +18 -0
  19. package/components/app/Large.svelte +8 -0
  20. package/components/app/Large.svelte.d.ts +27 -0
  21. package/components/app/Lead.svelte +12 -0
  22. package/components/app/Lead.svelte.d.ts +27 -0
  23. package/components/app/Link.svelte +24 -0
  24. package/components/app/Link.svelte.d.ts +20 -0
  25. package/components/app/Options.svelte +24 -0
  26. package/components/app/Options.svelte.d.ts +19 -0
  27. package/components/app/Paragraph.svelte +20 -0
  28. package/components/app/Paragraph.svelte.d.ts +18 -0
  29. package/components/app/Section.svelte +12 -0
  30. package/components/app/Section.svelte.d.ts +27 -0
  31. package/components/app/Table.svelte +32 -0
  32. package/components/app/Table.svelte.d.ts +27 -0
  33. package/components/app/TextInput.svelte +38 -0
  34. package/components/app/TextInput.svelte.d.ts +22 -0
  35. package/components/chapter/Atom.svelte +20 -6
  36. package/components/chapter/Atom.svelte.d.ts +3 -3
  37. package/components/chapter/Block.svelte +26 -21
  38. package/components/chapter/Block.svelte.d.ts +4 -4
  39. package/components/chapter/Callout.svelte +38 -7
  40. package/components/chapter/Callout.svelte.d.ts +4 -4
  41. package/components/chapter/CaptionedCode.svelte +67 -24
  42. package/components/chapter/CaptionedCode.svelte.d.ts +4 -4
  43. package/components/chapter/ChapterBody.svelte +62 -9
  44. package/components/chapter/ChapterBody.svelte.d.ts +5 -4
  45. package/components/chapter/Citations.svelte +86 -20
  46. package/components/chapter/Citations.svelte.d.ts +4 -4
  47. package/components/chapter/Code.svelte +152 -21
  48. package/components/chapter/Code.svelte.d.ts +3 -3
  49. package/components/chapter/Comment.svelte +39 -17
  50. package/components/chapter/Comment.svelte.d.ts +3 -3
  51. package/components/chapter/Definition.svelte +52 -18
  52. package/components/chapter/Definition.svelte.d.ts +5 -8
  53. package/components/chapter/Embed.svelte +155 -67
  54. package/components/chapter/Embed.svelte.d.ts +6 -4
  55. package/components/chapter/ErrorMessage.svelte +7 -2
  56. package/components/chapter/ErrorMessage.svelte.d.ts +4 -4
  57. package/components/chapter/ExtendedPrism.d.ts +2 -0
  58. package/components/chapter/ExtendedPrism.js +69 -0
  59. package/components/chapter/Figure.svelte +90 -0
  60. package/components/chapter/Figure.svelte.d.ts +24 -0
  61. package/components/chapter/Footnote.svelte +75 -12
  62. package/components/chapter/Footnote.svelte.d.ts +4 -4
  63. package/components/chapter/Format.svelte +63 -38
  64. package/components/chapter/Format.svelte.d.ts +5 -4
  65. package/components/chapter/InlineCode.svelte +16 -6
  66. package/components/chapter/InlineCode.svelte.d.ts +4 -4
  67. package/components/chapter/Label.svelte +38 -9
  68. package/components/chapter/Label.svelte.d.ts +4 -4
  69. package/components/chapter/Link.svelte +24 -19
  70. package/components/chapter/Link.svelte.d.ts +4 -4
  71. package/components/chapter/List.svelte +75 -8
  72. package/components/chapter/List.svelte.d.ts +4 -4
  73. package/components/chapter/Marginal.svelte +169 -27
  74. package/components/chapter/Marginal.svelte.d.ts +6 -3
  75. package/components/chapter/Paragraph.svelte +79 -6
  76. package/components/chapter/Paragraph.svelte.d.ts +4 -4
  77. package/components/chapter/Positioned.svelte +33 -0
  78. package/components/chapter/Positioned.svelte.d.ts +19 -0
  79. package/components/chapter/Problem.svelte +15 -0
  80. package/components/chapter/Problem.svelte.d.ts +27 -0
  81. package/components/chapter/Python.svelte +68 -21
  82. package/components/chapter/Python.svelte.d.ts +4 -4
  83. package/components/chapter/Quote.svelte +64 -11
  84. package/components/chapter/Quote.svelte.d.ts +4 -4
  85. package/components/chapter/Rule.svelte +12 -1
  86. package/components/chapter/Rule.svelte.d.ts +4 -4
  87. package/components/chapter/Table.svelte +36 -25
  88. package/components/chapter/Table.svelte.d.ts +4 -4
  89. package/components/chapter/Text.svelte +61 -36
  90. package/components/chapter/Text.svelte.d.ts +5 -4
  91. package/components/editor/BookishEditor.svelte +373 -244
  92. package/components/editor/BookishEditor.svelte.d.ts +9 -6
  93. package/components/editor/CalloutEditor.svelte +5 -5
  94. package/components/editor/CalloutEditor.svelte.d.ts +4 -4
  95. package/components/editor/CaptionedCodeEditor.svelte +16 -12
  96. package/components/editor/CaptionedCodeEditor.svelte.d.ts +4 -4
  97. package/components/editor/CaretContext.d.ts +48 -16
  98. package/components/editor/CaretState.d.ts +16 -44
  99. package/components/editor/CaretUtilities.d.ts +2 -2
  100. package/components/editor/CaretView.svelte +82 -0
  101. package/components/editor/CaretView.svelte.d.ts +25 -0
  102. package/components/editor/CitationsEditor.svelte +36 -25
  103. package/components/editor/CitationsEditor.svelte.d.ts +4 -4
  104. package/components/editor/Clipboard.d.ts +2 -2
  105. package/components/editor/Command.d.ts +13 -12
  106. package/components/editor/Commands.d.ts +1 -1
  107. package/components/editor/Commands.js +1114 -571
  108. package/components/editor/ConfirmButton.svelte +18 -12
  109. package/components/editor/ConfirmButton.svelte.d.ts +5 -4
  110. package/components/editor/DefinitionEditor.svelte +29 -21
  111. package/components/editor/DefinitionEditor.svelte.d.ts +4 -4
  112. package/components/editor/EmbedEditor.svelte +93 -43
  113. package/components/editor/EmbedEditor.svelte.d.ts +3 -3
  114. package/components/editor/Icon.svelte +17 -0
  115. package/components/editor/Icon.svelte.d.ts +16 -0
  116. package/components/editor/ImageChooser.svelte +53 -34
  117. package/components/editor/ImageChooser.svelte.d.ts +3 -3
  118. package/components/editor/InlineCodeEditor.svelte +7 -4
  119. package/components/editor/InlineCodeEditor.svelte.d.ts +4 -4
  120. package/components/editor/LabelEditor.svelte +20 -11
  121. package/components/editor/LabelEditor.svelte.d.ts +4 -4
  122. package/components/editor/LanguageEditor.svelte +10 -7
  123. package/components/editor/LanguageEditor.svelte.d.ts +3 -3
  124. package/components/editor/LinkEditor.svelte +64 -39
  125. package/components/editor/LinkEditor.svelte.d.ts +4 -4
  126. package/components/editor/Note.svelte +4 -3
  127. package/components/editor/Note.svelte.d.ts +6 -2
  128. package/components/editor/Permissions.svelte +95 -0
  129. package/components/editor/Permissions.svelte.d.ts +20 -0
  130. package/components/editor/PositionEditor.svelte +9 -6
  131. package/components/editor/PositionEditor.svelte.d.ts +4 -4
  132. package/components/editor/QuoteEditor.svelte +7 -2
  133. package/components/editor/QuoteEditor.svelte.d.ts +4 -4
  134. package/components/editor/Switch.svelte +55 -28
  135. package/components/editor/Switch.svelte.d.ts +4 -4
  136. package/components/editor/TableEditor.svelte +10 -0
  137. package/components/editor/TableEditor.svelte.d.ts +17 -0
  138. package/components/editor/TextEditor.svelte +83 -45
  139. package/components/editor/TextEditor.svelte.d.ts +5 -4
  140. package/components/editor/Toggle.svelte +11 -8
  141. package/components/editor/Toggle.svelte.d.ts +4 -4
  142. package/components/editor/Toolbar.svelte +191 -144
  143. package/components/editor/Toolbar.svelte.d.ts +5 -8
  144. package/components/editor/ToolbarGroup.svelte +17 -23
  145. package/components/editor/ToolbarGroup.svelte.d.ts +3 -4
  146. package/components/editor/ToolbarSpacer.svelte +8 -1
  147. package/components/editor/ToolbarSpacer.svelte.d.ts +6 -2
  148. package/components/editor/URLEditor.svelte +6 -8
  149. package/components/editor/URLEditor.svelte.d.ts +3 -3
  150. package/components/editor/UndoState.d.ts +3 -3
  151. package/components/editor/icons/annotate.svg +1 -0
  152. package/components/editor/icons/block.svg +1 -0
  153. package/components/editor/icons/bold.svg +1 -0
  154. package/components/editor/icons/bullets.svg +1 -0
  155. package/components/editor/icons/callout.svg +1 -0
  156. package/components/editor/icons/citation.svg +8 -0
  157. package/components/editor/icons/clear.svg +1 -0
  158. package/components/editor/icons/clipboard.svg +1 -0
  159. package/components/editor/icons/code.svg +1 -0
  160. package/components/editor/icons/columnafter.svg +1 -0
  161. package/components/editor/icons/columnbefore.svg +1 -0
  162. package/components/editor/icons/comment.svg +1 -0
  163. package/components/editor/icons/copy.svg +1 -0
  164. package/components/editor/icons/cut.svg +1 -0
  165. package/components/editor/icons/define.svg +7 -0
  166. package/components/editor/icons/deletecolumn.svg +1 -0
  167. package/components/editor/icons/deleterow.svg +1 -0
  168. package/components/editor/icons/footnote.svg +8 -0
  169. package/components/editor/icons/header1.svg +7 -0
  170. package/components/editor/icons/header2.svg +7 -0
  171. package/components/editor/icons/header3.svg +7 -0
  172. package/components/editor/icons/home.svg +1 -0
  173. package/components/editor/icons/indent.svg +1 -0
  174. package/components/editor/icons/italic.svg +1 -0
  175. package/components/editor/icons/label.svg +1 -0
  176. package/components/editor/icons/left.svg +1 -0
  177. package/components/editor/icons/level.svg +1 -0
  178. package/components/editor/icons/link.svg +1 -0
  179. package/components/editor/icons/list.svg +1 -0
  180. package/components/editor/icons/media.svg +1 -0
  181. package/components/editor/icons/middle.svg +1 -0
  182. package/components/editor/icons/numbers.svg +10 -0
  183. package/components/editor/icons/paragraph.svg +1 -0
  184. package/components/editor/icons/paste.svg +10 -0
  185. package/components/editor/icons/quote.svg +1 -0
  186. package/components/editor/icons/redo.svg +1 -0
  187. package/components/editor/icons/right.svg +1 -0
  188. package/components/editor/icons/rowabove.svg +1 -0
  189. package/components/editor/icons/rowbelow.svg +1 -0
  190. package/components/editor/icons/rule.svg +1 -0
  191. package/components/editor/icons/sub.svg +1 -0
  192. package/components/editor/icons/super.svg +1 -0
  193. package/components/editor/icons/table.svg +1 -0
  194. package/components/editor/icons/text.svg +1 -0
  195. package/components/editor/icons/time.svg +1 -0
  196. package/components/editor/icons/undo.svg +1 -0
  197. package/components/editor/icons/unindent.svg +1 -0
  198. package/components/editor/icons/unlink.svg +1 -0
  199. package/components/page/Acknowledgements.svelte +35 -24
  200. package/components/page/Acknowledgements.svelte.d.ts +4 -4
  201. package/components/page/Authors.svelte +34 -17
  202. package/components/page/Authors.svelte.d.ts +7 -6
  203. package/components/page/BookLoader.svelte +59 -0
  204. package/components/page/BookLoader.svelte.d.ts +16 -0
  205. package/components/page/BulkReferenceEditor.svelte +54 -23
  206. package/components/page/BulkReferenceEditor.svelte.d.ts +4 -4
  207. package/components/page/Chapter.svelte +234 -143
  208. package/components/page/Chapter.svelte.d.ts +3 -3
  209. package/components/page/ChapterContext.d.ts +4 -4
  210. package/components/page/ChapterNumber.svelte +9 -0
  211. package/components/page/ChapterNumber.svelte.d.ts +27 -0
  212. package/components/page/ChapterTitle.svelte +16 -0
  213. package/components/page/ChapterTitle.svelte.d.ts +18 -0
  214. package/components/page/Contexts.d.ts +42 -22
  215. package/components/page/Contexts.js +129 -17
  216. package/components/page/DefinitionView.svelte +129 -90
  217. package/components/page/DefinitionView.svelte.d.ts +3 -3
  218. package/components/page/Description.svelte +31 -19
  219. package/components/page/Description.svelte.d.ts +4 -4
  220. package/components/page/Edition.svelte +135 -80
  221. package/components/page/Edition.svelte.d.ts +5 -6
  222. package/components/page/EditionLoader.svelte +99 -0
  223. package/components/page/EditionLoader.svelte.d.ts +18 -0
  224. package/components/page/Editions.svelte +106 -0
  225. package/components/page/Editions.svelte.d.ts +14 -0
  226. package/components/page/Glossary.svelte +65 -49
  227. package/components/page/Glossary.svelte.d.ts +4 -4
  228. package/components/page/Header.svelte +143 -56
  229. package/components/page/Header.svelte.d.ts +8 -6
  230. package/components/page/Index.svelte +116 -80
  231. package/components/page/Index.svelte.d.ts +4 -4
  232. package/components/page/Instructions.svelte +18 -17
  233. package/components/page/Instructions.svelte.d.ts +6 -4
  234. package/components/page/License.svelte +39 -23
  235. package/components/page/License.svelte.d.ts +4 -4
  236. package/components/page/Loading.svelte +102 -12
  237. package/components/page/Loading.svelte.d.ts +6 -2
  238. package/components/page/Media.svelte +81 -53
  239. package/components/page/Media.svelte.d.ts +4 -4
  240. package/components/page/MediaPreview.svelte +26 -8
  241. package/components/page/MediaPreview.svelte.d.ts +3 -3
  242. package/components/page/Muted.svelte +10 -0
  243. package/components/page/Muted.svelte.d.ts +27 -0
  244. package/components/page/Outline.svelte +279 -59
  245. package/components/page/Outline.svelte.d.ts +3 -3
  246. package/components/page/Page.svelte +40 -9
  247. package/components/page/Page.svelte.d.ts +3 -3
  248. package/components/page/PageHeader.svelte +14 -0
  249. package/components/page/PageHeader.svelte.d.ts +18 -0
  250. package/components/page/PageParagraph.svelte +18 -0
  251. package/components/page/PageParagraph.svelte.d.ts +27 -0
  252. package/components/page/PossibleChapter.svelte +7 -7
  253. package/components/page/PossibleChapter.svelte.d.ts +4 -4
  254. package/components/page/PossibleReference.svelte +6 -11
  255. package/components/page/PossibleReference.svelte.d.ts +6 -7
  256. package/components/page/Print.svelte +27 -3
  257. package/components/page/Print.svelte.d.ts +4 -4
  258. package/components/page/Publish.svelte +134 -0
  259. package/components/page/Publish.svelte.d.ts +14 -0
  260. package/components/page/Reference.svelte +259 -117
  261. package/components/page/Reference.svelte.d.ts +5 -5
  262. package/components/page/References.svelte +45 -48
  263. package/components/page/References.svelte.d.ts +4 -4
  264. package/components/page/Rows.svelte +54 -0
  265. package/components/page/Rows.svelte.d.ts +27 -0
  266. package/components/page/Search.svelte +88 -63
  267. package/components/page/Search.svelte.d.ts +4 -4
  268. package/components/page/Status.svelte +46 -39
  269. package/components/page/Status.svelte.d.ts +4 -9
  270. package/components/page/SubdomainEditor.svelte +41 -27
  271. package/components/page/SubdomainEditor.svelte.d.ts +4 -4
  272. package/components/page/TableOfContents.svelte +264 -191
  273. package/components/page/TableOfContents.svelte.d.ts +4 -4
  274. package/components/page/TableOfContentsImage.svelte +8 -8
  275. package/components/page/TableOfContentsImage.svelte.d.ts +3 -3
  276. package/components/page/TableOfContentsRow.svelte +97 -34
  277. package/components/page/TableOfContentsRow.svelte.d.ts +4 -4
  278. package/components/page/ThemeEditor.svelte +177 -39
  279. package/components/page/ThemeEditor.svelte.d.ts +4 -4
  280. package/components/page/ThemeEditorPreview.svelte +35 -23
  281. package/components/page/ThemeEditorPreview.svelte.d.ts +5 -5
  282. package/components/page/ThemeSetEditor.svelte +15 -13
  283. package/components/page/ThemeSetEditor.svelte.d.ts +4 -4
  284. package/components/page/ThemeVariableEditor.svelte +24 -15
  285. package/components/page/ThemeVariableEditor.svelte.d.ts +3 -3
  286. package/components/page/Title.svelte +12 -0
  287. package/components/page/Title.svelte.d.ts +27 -0
  288. package/components/page/Unknown.svelte +28 -21
  289. package/components/page/Unknown.svelte.d.ts +4 -4
  290. package/components/page/margins.js +50 -33
  291. package/index.d.ts +13 -0
  292. package/index.js +14 -0
  293. package/models/CRUD.d.ts +27 -0
  294. package/models/CRUD.js +262 -0
  295. package/models/Firebase.d.ts +1 -0
  296. package/models/Firebase.js +26 -16
  297. package/models/book/Book.d.ts +40 -39
  298. package/models/book/Book.js +121 -121
  299. package/models/book/BookMedia.d.ts +3 -3
  300. package/models/book/BookMedia.js +22 -16
  301. package/models/book/BookSaveStatus.d.ts +7 -0
  302. package/models/book/BookSaveStatus.js +8 -0
  303. package/models/book/Chapter.d.ts +50 -39
  304. package/models/book/Chapter.js +189 -198
  305. package/models/book/ChapterID.js +7 -7
  306. package/models/book/Definition.d.ts +1 -1
  307. package/models/book/Edition.d.ts +87 -61
  308. package/models/book/Edition.js +460 -309
  309. package/models/book/Reference.d.ts +24 -0
  310. package/models/book/Reference.js +78 -0
  311. package/models/book/Schema.d.ts +168 -0
  312. package/models/book/Schema.js +115 -0
  313. package/models/book/Theme.d.ts +44 -37
  314. package/models/book/Theme.js +452 -52
  315. package/models/book/ThemeColors.d.ts +1 -1
  316. package/models/book/Words.d.ts +2 -0
  317. package/models/book/Words.js +110 -0
  318. package/models/chapter/AtomNode.d.ts +4 -4
  319. package/models/chapter/AtomNode.js +20 -13
  320. package/models/chapter/BlockNode.d.ts +9 -10
  321. package/models/chapter/BlockNode.js +32 -13
  322. package/models/chapter/BlocksNode.d.ts +10 -10
  323. package/models/chapter/BlocksNode.js +315 -120
  324. package/models/chapter/BlocksNode.test.js +494 -228
  325. package/models/chapter/Bookkeeping.d.ts +1 -1
  326. package/models/chapter/CalloutNode.d.ts +3 -3
  327. package/models/chapter/CalloutNode.js +34 -12
  328. package/models/chapter/Caret.d.ts +9 -7
  329. package/models/chapter/Caret.js +11 -6
  330. package/models/chapter/ChapterNode.d.ts +11 -11
  331. package/models/chapter/ChapterNode.js +70 -33
  332. package/models/chapter/CitationsNode.d.ts +3 -3
  333. package/models/chapter/CitationsNode.js +31 -12
  334. package/models/chapter/CodeNode.d.ts +11 -6
  335. package/models/chapter/CodeNode.js +143 -34
  336. package/models/chapter/CommentNode.d.ts +5 -5
  337. package/models/chapter/CommentNode.js +29 -13
  338. package/models/chapter/DefinitionNode.d.ts +2 -2
  339. package/models/chapter/DefinitionNode.js +15 -7
  340. package/models/chapter/Edit.d.ts +3 -3
  341. package/models/chapter/EmbedNode.d.ts +9 -5
  342. package/models/chapter/EmbedNode.js +108 -35
  343. package/models/chapter/ErrorNode.d.ts +2 -2
  344. package/models/chapter/ErrorNode.js +34 -12
  345. package/models/chapter/FootnoteNode.d.ts +5 -5
  346. package/models/chapter/FootnoteNode.js +34 -16
  347. package/models/chapter/FormatNode.d.ts +10 -10
  348. package/models/chapter/FormatNode.js +237 -106
  349. package/models/chapter/FormatNode.test.js +87 -45
  350. package/models/chapter/InlineCodeNode.d.ts +2 -2
  351. package/models/chapter/InlineCodeNode.js +22 -9
  352. package/models/chapter/LabelNode.d.ts +4 -4
  353. package/models/chapter/LabelNode.js +31 -13
  354. package/models/chapter/LinkNode.d.ts +2 -2
  355. package/models/chapter/LinkNode.js +21 -9
  356. package/models/chapter/ListNode.d.ts +8 -8
  357. package/models/chapter/ListNode.js +99 -38
  358. package/models/chapter/ListNode.test.js +29 -24
  359. package/models/chapter/MetadataNode.d.ts +3 -3
  360. package/models/chapter/MetadataNode.js +13 -5
  361. package/models/chapter/Node.d.ts +5 -3
  362. package/models/chapter/Node.js +76 -29
  363. package/models/chapter/Node.test.js +20 -18
  364. package/models/chapter/ParagraphNode.d.ts +6 -6
  365. package/models/chapter/ParagraphNode.js +84 -29
  366. package/models/chapter/ParagraphNode.test.js +22 -13
  367. package/models/chapter/Parser.d.ts +27 -27
  368. package/models/chapter/Parser.js +220 -206
  369. package/models/chapter/Parser.test.js +16 -16
  370. package/models/chapter/Position.d.ts +1 -1
  371. package/models/chapter/QuoteNode.d.ts +6 -6
  372. package/models/chapter/QuoteNode.js +61 -23
  373. package/models/chapter/RootNode.d.ts +4 -4
  374. package/models/chapter/RuleNode.d.ts +2 -2
  375. package/models/chapter/RuleNode.js +31 -11
  376. package/models/chapter/TableNode.d.ts +8 -6
  377. package/models/chapter/TableNode.js +89 -34
  378. package/models/chapter/TableNode.test.js +22 -24
  379. package/models/chapter/TextNode.d.ts +6 -6
  380. package/models/chapter/TextNode.js +72 -32
  381. package/models/chapter/TextNode.test.js +4 -4
  382. package/package.json +108 -26
  383. package/util/getSubdomain.js +8 -6
  384. package/util/isMobile.js +1 -1
  385. package/util/mineReference.d.ts +3 -2
  386. package/util/mineReference.js +67 -29
  387. package/util/scrollToEyeLevel.js +6 -1
  388. package/components/chapter/renderPosition.d.ts +0 -3
  389. package/components/chapter/renderPosition.js +0 -4
  390. package/components/editor/ToolbarIcon.svelte +0 -22
  391. package/components/editor/ToolbarIcon.svelte.d.ts +0 -16
  392. package/components/page/Alert.svelte +0 -11
  393. package/components/page/Alert.svelte.d.ts +0 -23
  394. package/components/page/Revisions.svelte +0 -124
  395. package/components/page/Revisions.svelte.d.ts +0 -14
  396. package/models/BookLoader.d.ts +0 -2
  397. package/models/BookLoader.js +0 -67
  398. package/models/Firestore.d.ts +0 -22
  399. package/models/Firestore.js +0 -194
  400. package/models/chapter/ReferenceNode.d.ts +0 -29
  401. package/models/chapter/ReferenceNode.js +0 -48
  402. package/models/loadEdition.d.ts +0 -5
  403. package/models/loadEdition.js +0 -16
@@ -1,7 +1,10 @@
1
+ <svelte:options immutable={true} />
2
+
1
3
  <script>import Parser from '../../models/chapter/Parser';
2
4
  import Text from './Text.svelte';
3
5
  import Format from './Format.svelte';
4
6
  import Marginal from './Marginal.svelte';
7
+ import Problem from './Problem.svelte';
5
8
  import { getChapter, getEdition } from '../page/Contexts';
6
9
  import { afterUpdate } from 'svelte';
7
10
  export let node;
@@ -10,29 +13,60 @@ let chapter = getChapter();
10
13
  // Find the definition.
11
14
  $: glossaryID = node.getMeta();
12
15
  $: phrase = node.getText();
13
- $: glossary = $edition.getGlossary();
16
+ $: glossary = $edition?.getGlossary() ?? {};
14
17
  $: entry = glossary[glossaryID];
15
18
  // Position the marginals on every render.
16
19
  afterUpdate(() => $chapter?.layoutMarginals());
17
- </script>
20
+ </script>
18
21
 
19
22
  <!-- Error if there's no corresponding entry. -->
20
- <span class={`bookish-definition ${entry === undefined ? "bookish-error" : ""}`} data-nodeid={node.nodeID}>
23
+ <span class="bookish-definition" data-nodeid={node.nodeID}>
21
24
  <Marginal
22
- id={"glossary-" + glossaryID}
25
+ {node}
26
+ id={'glossary-' + glossaryID}
27
+ label="definition: {entry.phrase}"
23
28
  >
24
- <slot name="interactor">
25
- <Text node={phrase}/>
26
- </slot>
27
- <slot name="content">
28
- <span class="bookish-definition-entry">
29
- {#if entry === undefined }
30
- <span class="bookish-error">Unknown glossary entry "{ glossaryID }"</span>
31
- {:else}
32
- <strong class="bookish-definition-entry-phrase">{entry.phrase}</strong>: <Format node={Parser.parseFormat($edition, entry.definition)}/>
33
- {#if entry.synonyms && entry.synonyms.length > 0}<span class="bookish-definition-entry-synonyms"><br/><br/>{entry.synonyms.join(", ")}</span>{/if}
34
- {/if}
35
- </span>
36
- </slot>
29
+ <Text slot="interactor" node={phrase} /><span
30
+ slot="content"
31
+ class="bookish-definition-entry"
32
+ >{#if entry === undefined}<Problem
33
+ >Unknown glossary entry "{glossaryID}"</Problem
34
+ >{:else}<strong class="bookish-definition-entry-phrase"
35
+ >{entry.phrase}</strong
36
+ >: <Format
37
+ node={Parser.parseFormat($edition, entry.definition)}
38
+ />{#if entry.synonyms && entry.synonyms.length > 0}<p
39
+ class="synonyms">{entry.synonyms.join(', ')}</p
40
+ >{/if}{/if}</span
41
+ >
37
42
  </Marginal>
38
- </span>
43
+ </span>
44
+
45
+ <style>
46
+ .bookish-definition :global(.bookish-marginal-interactor) {
47
+ border-bottom: 2px solid var(--bookish-link-color);
48
+ }
49
+
50
+ .bookish-definition-entry {
51
+ display: block;
52
+ padding-left: 0.75rem;
53
+ font-size: var(--bookish-small-font-size);
54
+ line-height: var(--bookish-paragraph-line-height-tight);
55
+ text-align: left;
56
+ margin-left: 0.25rem;
57
+ margin-bottom: 1rem;
58
+ background: linear-gradient(
59
+ to right,
60
+ var(--bookish-link-color) 0px,
61
+ var(--bookish-link-color) 2px,
62
+ transparent 2px
63
+ )
64
+ no-repeat right;
65
+ }
66
+
67
+ .synonyms {
68
+ color: var(--bookish-muted-color);
69
+ font-style: italic;
70
+ margin-top: var(--bookish-paragraph-spacing);
71
+ }
72
+ </style>
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type DefinitionNode from "../../models/chapter/DefinitionNode";
2
+ import type DefinitionNode from '../../models/chapter/DefinitionNode';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  node: DefinitionNode;
@@ -7,14 +7,11 @@ declare const __propDef: {
7
7
  events: {
8
8
  [evt: string]: CustomEvent<any>;
9
9
  };
10
- slots: {
11
- interactor: {};
12
- content: {};
13
- };
10
+ slots: {};
14
11
  };
15
- export declare type DefinitionProps = typeof __propDef.props;
16
- export declare type DefinitionEvents = typeof __propDef.events;
17
- export declare type DefinitionSlots = typeof __propDef.slots;
12
+ export type DefinitionProps = typeof __propDef.props;
13
+ export type DefinitionEvents = typeof __propDef.events;
14
+ export type DefinitionSlots = typeof __propDef.slots;
18
15
  export default class Definition extends SvelteComponentTyped<DefinitionProps, DefinitionEvents, DefinitionSlots> {
19
16
  }
20
17
  export {};
@@ -1,45 +1,52 @@
1
- <script>import renderPosition from './renderPosition';
2
- import { storage } from '../../models/Firebase';
3
- import Format from './Format.svelte';
4
- import { getCaret, getEdition, isEditable } from "../page/Contexts";
1
+ <svelte:options immutable={true} />
2
+
3
+ <script>import { storage } from '../../models/Firebase';
4
+ import { getCaret, getBook } from '../page/Contexts';
5
+ import Figure from './Figure.svelte';
6
+ import { getContext } from 'svelte';
5
7
  export let node;
6
- export let placeholder = undefined;
8
+ export let editable = false;
9
+ export let placeholder = '';
10
+ export let imageOnly = false;
7
11
  $: url = node.getURL();
8
- $: position = node.getPosition();
9
12
  $: description = node.getDescription();
10
- $: credit = node.getCredit();
11
- $: caption = node.getCaption();
12
13
  let caret = getCaret();
13
- let editable = isEditable();
14
- let edition = getEdition();
14
+ let book = getBook();
15
+ // Bookish editor should have passed down a way to set the active editor.
16
+ let claimCaret = getContext('claimeditor');
15
17
  let dragging = false;
16
18
  let dragFeedback = undefined;
17
19
  let imageError = false;
20
+ $: if (node)
21
+ imageError = false;
18
22
  function handleDrop(event) {
19
23
  event.preventDefault();
20
24
  if (event.dataTransfer?.items) {
21
25
  // Get the files and convert them to file opens, then filter by allowed file extensions
22
26
  const imageFiles = [...event.dataTransfer.items]
23
- .filter(item => item.kind === 'file')
24
- .map(item => item.getAsFile())
25
- .filter(file => file !== null && /.*\.(jpg|jpeg|png)/i.test(file.name));
27
+ .filter((item) => item.kind === 'file')
28
+ .map((item) => item.getAsFile())
29
+ .filter((file) => file !== null && /.*\.(jpg|jpeg|png)/i.test(file.name));
26
30
  if (imageFiles.length === 0)
27
- dragFeedback = "Only JPEG or PNG images are allowed.";
31
+ dragFeedback = 'Only JPEG or PNG images are allowed.';
28
32
  else if (imageFiles.length > 1)
29
- dragFeedback = "Only one image at a time please!";
33
+ dragFeedback = 'Only one image at a time please!';
30
34
  else {
31
- dragFeedback = "Uploading…";
35
+ dragFeedback = 'Uploading…';
32
36
  const file = imageFiles[0];
33
- const media = $edition.getBook()?.getMedia();
37
+ const media = $book?.getMedia();
34
38
  if (file === null)
35
39
  return;
36
40
  if (storage === undefined)
37
41
  return;
38
42
  if (media === undefined)
39
43
  return;
40
- media.upload(file, (progress) => dragFeedback = `${progress}% done`, (error) => { dragFeedback = error; dragging = false; }, (url, thumbnails) => {
44
+ media.upload(file, (progress) => (dragFeedback = `${progress}% done`), (error) => {
45
+ dragFeedback = error;
46
+ dragging = false;
47
+ }, (url, thumbnails) => {
41
48
  // Upload completed successfully, now we can get the download URL
42
- $caret?.edit(node, node.withURLs(url, thumbnails).withDescription(""));
49
+ $caret?.edit(node, node.withURLs(url, thumbnails).withDescription(''));
43
50
  dragging = false;
44
51
  dragFeedback = undefined;
45
52
  });
@@ -49,7 +56,10 @@ function handleDrop(event) {
49
56
  function handleDrag(event) {
50
57
  event?.preventDefault();
51
58
  dragging = true;
52
- dragFeedback = "Drop to upload…";
59
+ dragFeedback = 'Drop to upload…';
60
+ // If we have a way to claim the caret, claim it, since we want to be able to make an edit with the active caret.
61
+ if (claimCaret)
62
+ claimCaret();
53
63
  }
54
64
  function handleDragLeave(event) {
55
65
  if (event.target !== event.currentTarget)
@@ -64,59 +74,137 @@ function handleLoad() {
64
74
  function handleError() {
65
75
  imageError = true;
66
76
  }
77
+ function handleClick() {
78
+ if (claimCaret)
79
+ claimCaret();
80
+ }
67
81
  </script>
68
82
 
69
- <div class={"bookish-figure " + renderPosition(position)} data-nodeid={node.nodeID}>
70
- {#if url.trim().length === 0 }
71
- {#if editable }
72
- <div
73
- class={`bookish-figure-unspecified ${dragging ? "bookish-figure-dragging" : ""}`}
74
- on:drop|preventDefault={handleDrop}
75
- on:dragover={handleDrag}
76
- on:dragleave={handleDragLeave}
77
- >{
78
- dragFeedback !== undefined ? dragFeedback :
79
- placeholder !== undefined ? placeholder :
80
- "Click or drag to choose or upload an image, or enter an image or video URL."
81
- }
82
- </div>
83
- {:else}
84
- <div class="bookish-figure-unspecified">No image or video specified</div>
85
- {/if}
86
- {:else}
87
- {#if url.includes("https://www.youtube.com") ||
88
- url.includes("https://youtu.be") ||
89
- url.includes("https://www.tiktok.com") ||
90
- url.includes("vimeo.com") }
91
- <div class="bookish-figure-embed">
92
- <iframe
83
+ {#if imageError}
84
+ <p class="bookish-figure-unspecified"
85
+ >{editable
86
+ ? 'Unable to load image. Is the URL correct? Are you offline?'
87
+ : 'Unable to load image'}</p
88
+ >
89
+ {:else}
90
+ <Figure
91
+ {node}
92
+ caption={imageOnly ? undefined : node.getCaption()}
93
+ credit={imageOnly ? undefined : node.getCredit()}
94
+ >
95
+ {#if url.trim().length === 0}
96
+ {#if editable}
97
+ <p
98
+ class={`bookish-figure-unspecified ${
99
+ dragging ? 'bookish-figure-dragging' : ''
100
+ }`}
101
+ on:click|preventDefault={handleClick}
102
+ tabIndex="0"
103
+ on:keydown={(event) =>
104
+ event.key === ' ' || event.key === 'Enter'
105
+ ? handleClick()
106
+ : undefined}
107
+ on:drop|preventDefault={handleDrop}
108
+ on:dragover={handleDrag}
109
+ on:dragleave={handleDragLeave}
110
+ >{dragFeedback !== undefined
111
+ ? dragFeedback
112
+ : placeholder.length > 0
113
+ ? placeholder
114
+ : 'Click or drag to choose or upload an image, or enter an image or video URL.'}
115
+ </p>
116
+ {:else}
117
+ <p class="bookish-figure-unspecified">No image or video</p>
118
+ {/if}
119
+ {:else if url.includes('https://www.youtube.com') || url.includes('https://youtu.be') || url.includes('https://www.tiktok.com') || url.includes('vimeo.com')}
120
+ <article class="bookish-figure-embed">
121
+ <iframe
93
122
  class="bookish-figure-frame"
94
- title="Embedded video content from streaming service"
95
- src={url}
96
- frameBorder="0"
97
- allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
98
- allowFullScreen>
99
- </iframe>
100
- </div>
123
+ title={description}
124
+ src={url}
125
+ frameBorder="0"
126
+ allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
127
+ allowFullScreen
128
+ />
129
+ </article>
101
130
  {:else}
102
- <img
103
- class={"bookish-figure-image"}
104
- src={url.startsWith("http") ? url : "images/" + url}
105
- srcset={node.hasSmallURL() ? `${node.getSmallURL()} 320w, ${url} 1024w` : undefined }
106
- sizes={node.hasSmallURL() ? "(min-width: 1024px) 1024px, 320px" : undefined }
131
+ <img
132
+ class={'bookish-figure-image'}
133
+ src={url.startsWith('http') ? url : 'images/' + url}
134
+ srcset={node.hasSmallURL()
135
+ ? `${node.getSmallURL()} 320w, ${url} 1024w`
136
+ : undefined}
137
+ sizes={node.hasSmallURL()
138
+ ? '(min-width: 1024px) 1024px, 320px'
139
+ : undefined}
107
140
  alt={description}
108
141
  on:load={handleLoad}
109
142
  on:error={handleError}
110
143
  />
111
144
  {/if}
112
- {/if}
113
- <div class="bookish-figure-caption">
114
- <div class="bookish-figure-credit">
115
- <Format node={credit} placeholder="credit" />
116
- </div>
117
- <Format node={caption} placeholder="caption" />
118
- </div>
119
- {#if imageError }
120
- <div class="bookish-figure-unspecified">{ editable ? "Unable to load image. Is the URL correct? Are you offline?" : "Unable to load image" }</div>
121
- {/if}
122
- </div>
145
+ </Figure>
146
+ {/if}
147
+
148
+ <style>
149
+ .bookish-figure {
150
+ margin-top: var(--bookish-paragraph-spacing);
151
+ margin-bottom: var(--bookish-paragraph-spacing);
152
+ width: 100%;
153
+ }
154
+
155
+ .bookish-figure-image {
156
+ border-radius: var(--bookish-roundedness);
157
+ max-width: 100%;
158
+ width: 100%;
159
+ height: auto;
160
+ margin-bottom: 0;
161
+ }
162
+
163
+ :global(.dark) .bookish-figure-image {
164
+ filter: brightness(50%);
165
+ }
166
+
167
+ .bookish-figure-embed {
168
+ position: relative;
169
+ display: block;
170
+ width: 100%;
171
+ padding: 0;
172
+ overflow: hidden;
173
+ border-radius: var(--bookish-roundedness);
174
+ }
175
+
176
+ .bookish-figure-embed::before {
177
+ /* Make the embed 16:9 */
178
+ padding-top: 56.25%;
179
+ display: block;
180
+ content: '';
181
+ }
182
+
183
+ .bookish-figure-unspecified {
184
+ width: 100%;
185
+ height: 8em;
186
+ font-family: var(--app-font);
187
+ background-color: var(--app-chrome-background);
188
+ color: var(--app-chrome-color);
189
+ display: flex;
190
+ flex-direction: column;
191
+ justify-content: center;
192
+ align-items: center;
193
+ }
194
+
195
+ .bookish-figure-dragging {
196
+ background-color: var(--app-interactive-color);
197
+ color: var(--app-font-color-inverted);
198
+ }
199
+
200
+ .bookish-figure-frame {
201
+ /* Fill the container */
202
+ position: absolute;
203
+ top: 0;
204
+ bottom: 0;
205
+ left: 0;
206
+ width: 100%;
207
+ height: 100%;
208
+ border: 0;
209
+ }
210
+ </style>
@@ -1,18 +1,20 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type EmbedNode from "../../models/chapter/EmbedNode";
2
+ import type EmbedNode from '../../models/chapter/EmbedNode';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  node: EmbedNode;
6
+ editable?: boolean | undefined;
6
7
  placeholder?: string | undefined;
8
+ imageOnly?: boolean | undefined;
7
9
  };
8
10
  events: {
9
11
  [evt: string]: CustomEvent<any>;
10
12
  };
11
13
  slots: {};
12
14
  };
13
- export declare type EmbedProps = typeof __propDef.props;
14
- export declare type EmbedEvents = typeof __propDef.events;
15
- export declare type EmbedSlots = typeof __propDef.slots;
15
+ export type EmbedProps = typeof __propDef.props;
16
+ export type EmbedEvents = typeof __propDef.events;
17
+ export type EmbedSlots = typeof __propDef.slots;
16
18
  export default class Embed extends SvelteComponentTyped<EmbedProps, EmbedEvents, EmbedSlots> {
17
19
  }
18
20
  export {};
@@ -1,4 +1,9 @@
1
- <script>export let node;
1
+ <svelte:options immutable={true} />
2
+
3
+ <script>import Problem from './Problem.svelte';
4
+ export let node;
2
5
  </script>
3
6
 
4
- <span class="bookish-error" data-nodeid={node.nodeID}>Error: {node.getError()}</span>
7
+ <Problem
8
+ ><span data-nodeid={node.nodeID}>Error: {node.getError()}</span></Problem
9
+ >
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type ErrorNode from "../../models/chapter/ErrorNode";
2
+ import type ErrorNode from '../../models/chapter/ErrorNode';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  node: ErrorNode;
@@ -9,9 +9,9 @@ declare const __propDef: {
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type ErrorMessageProps = typeof __propDef.props;
13
- export declare type ErrorMessageEvents = typeof __propDef.events;
14
- export declare type ErrorMessageSlots = typeof __propDef.slots;
12
+ export type ErrorMessageProps = typeof __propDef.props;
13
+ export type ErrorMessageEvents = typeof __propDef.events;
14
+ export type ErrorMessageSlots = typeof __propDef.slots;
15
15
  export default class ErrorMessage extends SvelteComponentTyped<ErrorMessageProps, ErrorMessageEvents, ErrorMessageSlots> {
16
16
  }
17
17
  export {};
@@ -0,0 +1,2 @@
1
+ export default Prism;
2
+ import Prism from "prismjs";
@@ -0,0 +1,69 @@
1
+ import Prism from 'prismjs';
2
+
3
+ Prism.languages['python'] = {
4
+ comment: {
5
+ pattern: /(^|[^\\])#.*/,
6
+ lookbehind: true,
7
+ greedy: true,
8
+ },
9
+ 'string-interpolation': {
10
+ pattern:
11
+ /(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,
12
+ greedy: true,
13
+ inside: {
14
+ interpolation: {
15
+ // "{" <expression> <optional "!s", "!r", or "!a"> <optional ":" format specifier> "}"
16
+ pattern:
17
+ /((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,
18
+ lookbehind: true,
19
+ inside: {
20
+ 'format-spec': {
21
+ pattern: /(:)[^:(){}]+(?=\}$)/,
22
+ lookbehind: true,
23
+ },
24
+ 'conversion-option': {
25
+ pattern: /![sra](?=[:}]$)/,
26
+ alias: 'punctuation',
27
+ },
28
+ rest: undefined,
29
+ },
30
+ },
31
+ string: /[\s\S]+/,
32
+ },
33
+ },
34
+ 'triple-quoted-string': {
35
+ pattern: /(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,
36
+ greedy: true,
37
+ alias: 'string',
38
+ },
39
+ string: {
40
+ pattern: /(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,
41
+ greedy: true,
42
+ },
43
+ function: {
44
+ pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,
45
+ lookbehind: true,
46
+ },
47
+ 'class-name': {
48
+ pattern: /(\bclass\s+)\w+/i,
49
+ lookbehind: true,
50
+ },
51
+ decorator: {
52
+ pattern: /(^[\t ]*)@\w+(?:\.\w+)*/m,
53
+ lookbehind: true,
54
+ alias: ['annotation', 'punctuation'],
55
+ inside: {
56
+ punctuation: /\./,
57
+ },
58
+ },
59
+ keyword:
60
+ /\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,
61
+ builtin:
62
+ /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,
63
+ boolean: /\b(?:False|None|True)\b/,
64
+ number: /\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,
65
+ operator: /[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,
66
+ punctuation: /[{}[\];(),.:]/,
67
+ };
68
+
69
+ export default Prism;
@@ -0,0 +1,90 @@
1
+ <svelte:options immutable={true} />
2
+
3
+ <script>import Format from './Format.svelte';
4
+ import Positioned from './Positioned.svelte';
5
+ import { getCaret, isChapterEditable } from '../page/Contexts';
6
+ export let node;
7
+ export let caption;
8
+ export let credit = undefined;
9
+ let editable = isChapterEditable();
10
+ let caret = getCaret();
11
+ $: selected = $caret?.range?.start.node === node;
12
+ function focusFigure() {
13
+ if (!editable || $caret === undefined)
14
+ return;
15
+ // if (node instanceof EmbedNode) {
16
+ // return $caret.setCaret({
17
+ // start: { node, index: 0 },
18
+ // end: { node, index: 0 },
19
+ // });
20
+ // } else {
21
+ const firstCaret = node.getFirstCaret();
22
+ if (firstCaret)
23
+ $caret.setCaret({
24
+ start: firstCaret,
25
+ end: firstCaret,
26
+ });
27
+ // }
28
+ }
29
+ </script>
30
+
31
+ <Positioned position={node.getPosition()}>
32
+ <figure class="bookish-figure" data-nodeid={node.nodeID}>
33
+ <div
34
+ class:selected
35
+ on:mousedown={focusFigure}
36
+ on:keydown={(event) =>
37
+ event.key === ' ' || event.key === 'Enter'
38
+ ? focusFigure()
39
+ : null}
40
+ >
41
+ <slot />
42
+ </div>
43
+ {#if caption !== undefined}
44
+ <figcaption class="bookish-figure-caption">
45
+ {#if caption}
46
+ <Format node={caption} placeholder="caption" />
47
+ {/if}
48
+ {#if credit}
49
+ <aside class="bookish-figure-credit">
50
+ <Format node={credit} placeholder="credit" />
51
+ </aside>
52
+ {/if}
53
+ </figcaption>
54
+ {/if}
55
+ </figure>
56
+ </Positioned>
57
+
58
+ <style>
59
+ figure {
60
+ margin: 0;
61
+ margin-block-start: 0;
62
+ margin-block-end: 0;
63
+ margin-inline-start: 0;
64
+ margin-inline-end: 0;
65
+ }
66
+
67
+ .selected {
68
+ filter: opacity(50%);
69
+ }
70
+
71
+ .bookish-figure-caption {
72
+ text-align: center;
73
+ position: relative;
74
+ color: var(--bookish-muted-color);
75
+ line-height: var(--bookish-paragraph-line-height-tight);
76
+ font-size: var(--bookish-block-font-size);
77
+ margin-top: var(--bookish-block-padding);
78
+ margin-bottom: var(--bookish-block-padding);
79
+ }
80
+
81
+ .bookish-figure-credit {
82
+ display: block;
83
+ position: absolute;
84
+ top: -1em;
85
+ right: 0;
86
+ text-align: right;
87
+ font-style: italic;
88
+ font-size: var(--bookish-small-font-size);
89
+ }
90
+ </style>
@@ -0,0 +1,24 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type TableNode from '../../models/chapter/TableNode';
3
+ import type EmbedNode from '../../models/chapter/EmbedNode';
4
+ import type CodeNode from '../../models/chapter/CodeNode';
5
+ import type FormatNode from '../../models/chapter/FormatNode';
6
+ declare const __propDef: {
7
+ props: {
8
+ node: TableNode | EmbedNode | CodeNode;
9
+ caption: FormatNode | undefined;
10
+ credit?: FormatNode | undefined;
11
+ };
12
+ events: {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {
16
+ default: {};
17
+ };
18
+ };
19
+ export type FigureProps = typeof __propDef.props;
20
+ export type FigureEvents = typeof __propDef.events;
21
+ export type FigureSlots = typeof __propDef.slots;
22
+ export default class Figure extends SvelteComponentTyped<FigureProps, FigureEvents, FigureSlots> {
23
+ }
24
+ export {};