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,5 +1,7 @@
1
- <script>import { onMount } from "svelte";
1
+ <script>import { onMount } from 'svelte';
2
+ import Button from '../app/Button.svelte';
2
3
  export let commandLabel;
4
+ export let tooltip;
3
5
  export let confirmLabel;
4
6
  export let command;
5
7
  let confirming = false;
@@ -8,13 +10,15 @@ let timeoutID = undefined;
8
10
  let isMounted = false;
9
11
  onMount(() => {
10
12
  isMounted = true;
11
- return () => isMounted = false;
13
+ return () => (isMounted = false);
12
14
  });
13
15
  function execute() {
14
16
  if (!confirming && !executing) {
15
17
  confirming = true;
16
- timeoutID = setTimeout(() => { if (isMounted)
17
- confirming = false; }, 2000);
18
+ timeoutID = setTimeout(() => {
19
+ if (isMounted)
20
+ confirming = false;
21
+ }, 2000);
18
22
  }
19
23
  else if (confirming) {
20
24
  command()?.finally(() => {
@@ -29,15 +33,17 @@ function execute() {
29
33
  }
30
34
  </script>
31
35
 
32
- <button
33
- disabled={executing}
34
- on:click={execute}
35
- class={confirming ? "bookish-editor-confirm" : ""}>
36
- { confirming ? confirmLabel : commandLabel }
37
- </button>
36
+ <Button
37
+ disabled={executing}
38
+ {tooltip}
39
+ command={execute}
40
+ class={confirming ? 'bookish-editor-confirm' : ''}
41
+ >
42
+ {confirming ? confirmLabel : commandLabel}
43
+ </Button>
38
44
 
39
45
  <style>
40
- button.bookish-editor-confirm {
46
+ :global(bookish-editor-confirm) {
41
47
  animation: failure 100ms infinite;
42
48
  }
43
- </style>
49
+ </style>
@@ -2,17 +2,18 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  commandLabel: string;
5
+ tooltip: string;
5
6
  confirmLabel: string;
6
- command: () => Promise<void> | undefined;
7
+ command: () => Promise<void> | void;
7
8
  };
8
9
  events: {
9
10
  [evt: string]: CustomEvent<any>;
10
11
  };
11
12
  slots: {};
12
13
  };
13
- export declare type ConfirmButtonProps = typeof __propDef.props;
14
- export declare type ConfirmButtonEvents = typeof __propDef.events;
15
- export declare type ConfirmButtonSlots = typeof __propDef.slots;
14
+ export type ConfirmButtonProps = typeof __propDef.props;
15
+ export type ConfirmButtonEvents = typeof __propDef.events;
16
+ export type ConfirmButtonSlots = typeof __propDef.slots;
16
17
  export default class ConfirmButton extends SvelteComponentTyped<ConfirmButtonProps, ConfirmButtonEvents, ConfirmButtonSlots> {
17
18
  }
18
19
  export {};
@@ -1,28 +1,36 @@
1
- <script>import { getCaret, getEdition } from "../page/Contexts";
1
+ <script>import Options from '../app/Options.svelte';
2
+ import Note from './Note.svelte';
3
+ import { getCaret, getEdition } from '../page/Contexts';
2
4
  export let definition;
3
- let edition = getEdition();
4
5
  let caret = getCaret();
5
- $: glossary = $edition.getGlossary();
6
- function handleChange(event) {
7
- const target = event.target;
8
- $caret?.edit(definition, definition.withMeta(target.value));
6
+ let edition = getEdition();
7
+ $: glossary = $edition?.getGlossary();
8
+ function handleChange(glossaryID) {
9
+ $caret?.edit(definition, definition.withMeta(glossaryID));
9
10
  }
10
11
  // Sort the glossary entries by phrase
11
- $: entries = Object.keys(glossary).map(key => { return { glossaryID: key, phrase: glossary[key].phrase }; }).sort((a, b) => a.phrase.localeCompare(b.phrase));
12
- $: refID = $edition.getRef()?.id;
13
- $: glossaryLink = `/write/${refID}/glossary`;
12
+ $: entries =
13
+ glossary === undefined
14
+ ? undefined
15
+ : Object.entries(glossary)
16
+ .map(([key, value]) => {
17
+ return { glossaryID: key, phrase: value.phrase };
18
+ })
19
+ .sort((a, b) => a && b ? a.phrase.localeCompare(b.phrase) : 0);
14
20
  </script>
15
21
 
16
- <span>
17
- <select
18
- tabIndex=0
19
- value={definition.getMeta()}
20
- on:change={handleChange}
21
- >
22
- <option value=""></option>
23
- {#each entries as entry}<option value={entry.glossaryID}>{entry.phrase}</option>{/each}
24
- </select>
25
- {#if !(definition.getMeta() in glossary)}
26
- <span class="bookish-editor-error">Choose a <a href={glossaryLink}>glossary</a> entry.</span>
22
+ {#if entries !== undefined && glossary !== undefined}
23
+ {#if entries.length === 0}
24
+ <Note>No glossary entries to add</Note>
25
+ {:else}
26
+ <Options
27
+ options={entries.map((entry) => [entry.phrase, entry.glossaryID])}
28
+ value={definition.getMeta()}
29
+ changed={handleChange}
30
+ label="choose definition"
31
+ />
32
+ {#if !(definition.getMeta() in glossary)}
33
+ <Note>Choose a glossary entry.</Note>
34
+ {/if}
27
35
  {/if}
28
- </span>
36
+ {/if}
@@ -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
  definition: DefinitionNode;
@@ -9,9 +9,9 @@ declare const __propDef: {
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type DefinitionEditorProps = typeof __propDef.props;
13
- export declare type DefinitionEditorEvents = typeof __propDef.events;
14
- export declare type DefinitionEditorSlots = typeof __propDef.slots;
12
+ export type DefinitionEditorProps = typeof __propDef.props;
13
+ export type DefinitionEditorEvents = typeof __propDef.events;
14
+ export type DefinitionEditorSlots = typeof __propDef.slots;
15
15
  export default class DefinitionEditor extends SvelteComponentTyped<DefinitionEditorProps, DefinitionEditorEvents, DefinitionEditorSlots> {
16
16
  }
17
17
  export {};
@@ -2,86 +2,136 @@
2
2
  import EmbedNode from '../../models/chapter/EmbedNode';
3
3
  import TextEditor from './TextEditor.svelte';
4
4
  import { storage } from '../../models/Firebase';
5
- import { getBook, getCaret } from '../page/Contexts';
6
5
  import ToolbarSpacer from './ToolbarSpacer.svelte';
7
6
  import ImageChooser from './ImageChooser.svelte';
8
7
  import URLEditor from './URLEditor.svelte';
8
+ import Note from './Note.svelte';
9
+ import { getBook, getCaret } from '../page/Contexts';
9
10
  export let embed;
10
- let book = getBook();
11
11
  let caret = getCaret();
12
12
  let upload = undefined;
13
13
  $: description = embed.getDescription();
14
- $: book.getMedia();
14
+ let book = getBook();
15
15
  function isValidURL(url) {
16
16
  // Is it a valid URL?
17
17
  try {
18
18
  let test = new URL(url);
19
- if (test.protocol === "http:" || test.protocol === "https:")
19
+ if (test.protocol === 'http:' || test.protocol === 'https:')
20
20
  return;
21
21
  }
22
22
  catch (_) { }
23
23
  return "URL doesn't seem valid";
24
24
  }
25
25
  function handleImageChange(event) {
26
+ if ($book === undefined)
27
+ return;
28
+ if ($caret === undefined)
29
+ return;
26
30
  const target = event.target;
27
31
  const file = target.files === null ? undefined : target.files[0];
28
- const media = book.getMedia();
32
+ const media = $book.getMedia();
29
33
  if (file === undefined)
30
34
  return;
31
35
  if (storage === undefined)
32
36
  return;
33
37
  if (media === undefined)
34
38
  return;
35
- media.upload(file, (progress) => upload = `${progress}% done`, (error) => upload = error, (url, thumbnail) => {
39
+ media.upload(file, (progress) => (upload = `${progress}% done`), (error) => (upload = error), (url, thumbnail) => {
36
40
  // Upload completed successfully, now we can get the download URL
37
- $caret?.edit(embed, embed.withURLs(url, thumbnail).withDescription(""));
41
+ $caret?.edit(embed, embed.withURLs(url, thumbnail).withDescription(''));
38
42
  upload = undefined;
39
43
  });
40
44
  }
41
45
  function handleImageSelection(image) {
42
46
  // Toggle the embed
43
- $caret?.edit(embed, embed.getURL() === image.url ?
44
- embed.withURL("").withDescription("") :
45
- embed.withURL(image.url));
47
+ $caret?.edit(embed, embed.getURL() === image.url
48
+ ? embed.withURL('').withDescription('')
49
+ : embed.withURL(image.url));
46
50
  }
47
51
  </script>
48
52
 
49
53
  {#if $caret?.root instanceof EmbedNode}
50
- <ToolbarSpacer/>
54
+ <ToolbarSpacer />
51
55
  {:else}
52
- Position <PositionEditor value={embed.getPosition()} edit={position => $caret?.edit(embed, embed.withPosition(position)) } />
56
+ Position <PositionEditor
57
+ value={embed.getPosition()}
58
+ edit={(position) => $caret?.edit(embed, embed.withPosition(position))}
59
+ />
53
60
  {/if}
54
- <label class="bookish-file-upload">
55
- <input type="file" on:input={handleImageChange} accept=".jpg,.jpeg,.png,.gif,image/jpeg,image/png,image/gif"/>
61
+ <label class="file-upload" tabIndex="0">
62
+ <input
63
+ type="file"
64
+ on:input={handleImageChange}
65
+ accept=".jpg,.jpeg,.png,.gif,image/jpeg,image/png,image/gif"
66
+ />
56
67
  Upload
57
68
  </label>
58
- <ToolbarSpacer/>
59
- <code>
60
- {#if !embed.isHosted() }
61
- <URLEditor
62
- url={embed.getURL()}
63
- validator={isValidURL}
64
- edit={url => {
65
- const revisedEmbed = embed.withURL(url);
66
- const revisedURL = revisedEmbed.getURL();
67
- $caret?.edit(embed, revisedEmbed);
68
- return revisedURL;
69
- }}
70
- />
71
- {/if}
72
- </code>
73
- <ToolbarSpacer/>
74
- <code>
75
- <TextEditor
76
- startText={description}
77
- label={'Image description'}
78
- placeholder={'description'}
79
- valid={ alt => alt.length === 0 ? "Image description required" : undefined }
80
- save={ alt => { $caret?.edit(embed, embed.withDescription(alt)); } }
81
- width={20}
82
- clip={true}
69
+ <ToolbarSpacer />
70
+ {#if !embed.isHosted()}
71
+ <URLEditor
72
+ url={embed.getURL()}
73
+ validator={isValidURL}
74
+ edit={(url) => {
75
+ const revisedEmbed = embed.withURL(url);
76
+ const revisedURL = revisedEmbed.getURL();
77
+ $caret?.edit(embed, revisedEmbed);
78
+ return revisedURL;
79
+ }}
83
80
  />
84
- </code>
85
- <ToolbarSpacer/>
86
- {upload}
87
- <ImageChooser select={handleImageSelection} selection={embed.getURL()} />
81
+ {:else}
82
+ <Note>(Hosted)</Note>
83
+ {/if}
84
+ <ToolbarSpacer />
85
+ <TextEditor
86
+ text={description}
87
+ label={'Image description'}
88
+ placeholder={'description'}
89
+ valid={(alt) =>
90
+ alt.length === 0 ? 'Image description required' : undefined}
91
+ save={(alt) => {
92
+ $caret?.edit(embed, embed.withDescription(alt));
93
+ }}
94
+ width={20}
95
+ clip={true}
96
+ />
97
+ <ToolbarSpacer />
98
+ {#if upload}
99
+ {upload}
100
+ {/if}
101
+ <ImageChooser select={handleImageSelection} selection={embed.getURL()} />
102
+
103
+ <style>
104
+ .file-upload {
105
+ background-color: var(--app-chrome-background);
106
+ padding: var(--app-chrome-padding);
107
+ border-radius: var(--app-chrome-roundedness);
108
+ border: none;
109
+ }
110
+
111
+ .file-upload:hover {
112
+ background-color: var(--app-interactive-color);
113
+ color: var(--app-font-color-inverted);
114
+ cursor: pointer;
115
+ }
116
+
117
+ .file-upload input:disabled {
118
+ opacity: 0.3;
119
+ cursor: auto;
120
+ }
121
+
122
+ .file-upload {
123
+ font-family: var(--bookish-app-font);
124
+ font-size: var(--app-chrome-font-size);
125
+ }
126
+
127
+ .file-upload input[type='file'] {
128
+ display: none;
129
+ }
130
+
131
+ .file-upload:focus-within {
132
+ position: relative;
133
+ z-index: 2;
134
+ outline: var(--app-chrome-border-size) solid
135
+ var(--app-interactive-color);
136
+ }
137
+ </style>
@@ -9,9 +9,9 @@ declare const __propDef: {
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type EmbedEditorProps = typeof __propDef.props;
13
- export declare type EmbedEditorEvents = typeof __propDef.events;
14
- export declare type EmbedEditorSlots = typeof __propDef.slots;
12
+ export type EmbedEditorProps = typeof __propDef.props;
13
+ export type EmbedEditorEvents = typeof __propDef.events;
14
+ export type EmbedEditorSlots = typeof __propDef.slots;
15
15
  export default class EmbedEditor extends SvelteComponentTyped<EmbedEditorProps, EmbedEditorEvents, EmbedEditorSlots> {
16
16
  }
17
17
  export {};
@@ -0,0 +1,17 @@
1
+ <script>export let icon;
2
+ </script>
3
+
4
+ <span>
5
+ {@html icon}
6
+ </span>
7
+
8
+ <style>
9
+ span {
10
+ vertical-align: middle;
11
+ }
12
+
13
+ span :global(svg) {
14
+ width: 1em;
15
+ height: 1em;
16
+ }
17
+ </style>
@@ -0,0 +1,16 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ icon: string;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type IconProps = typeof __propDef.props;
12
+ export type IconEvents = typeof __propDef.events;
13
+ export type IconSlots = typeof __propDef.slots;
14
+ export default class Icon extends SvelteComponentTyped<IconProps, IconEvents, IconSlots> {
15
+ }
16
+ export {};
@@ -1,7 +1,8 @@
1
1
  <script>import { onMount } from 'svelte';
2
- import { getBook } from '../page/Contexts';
2
+ import { getBook, getCaret } from '../page/Contexts';
3
3
  export let select;
4
4
  export let selection;
5
+ let editor = getCaret();
5
6
  let book = getBook();
6
7
  let images = undefined;
7
8
  let expanded = false;
@@ -10,45 +11,63 @@ function updateImages(newImages) {
10
11
  }
11
12
  // Load the latest images in the book, and keep them updated as they change.
12
13
  onMount(() => {
13
- const media = book.getMedia();
14
+ if ($book === undefined)
15
+ return;
16
+ const media = $book.getMedia();
14
17
  media.notify(updateImages);
15
18
  return () => media.stopNotifying(updateImages);
16
19
  });
17
20
  </script>
18
21
 
19
- <div
20
- class={`bookish-image-chooser ${expanded ? "expanded" : ""}`}
21
- tabIndex=0
22
- on:click={() => expanded = !expanded}
23
- on:keydown={event => event.key === "Enter" || event.key === " " ? expanded = !expanded : undefined }
24
- on:mouseenter={() => expanded = true}
25
- on:mouseleave={() => expanded = false}
22
+ <div
23
+ class={`bookish-image-chooser ${expanded ? 'expanded' : ''}`}
24
+ tabIndex="0"
25
+ on:click={() => (expanded = !expanded)}
26
+ on:keydown={(event) =>
27
+ event.key === 'Enter' || event.key === ' '
28
+ ? (expanded = !expanded)
29
+ : undefined}
30
+ on:mouseenter={() => (expanded = true)}
31
+ on:mouseleave={() => (expanded = false)}
26
32
  >
27
- {#if images === undefined}
28
- Loading images
29
- {:else}
30
- <!-- Sort the images by their URL. There's probably a more meaningful sort,
31
- such as placing unused images at the front of the list. -->
32
- {#each images.sort((a, b) => a.url.localeCompare(b.url)) as image }
33
- <img
34
- class={`bookish-image-chooser-image ${image.url === selection ? "selected" : ""}`}
35
- src={image.url}
36
- alt={`Image named ${image.url}`}
37
- tabIndex=0
38
- on:click|stopPropagation={() => select(image)}
39
- on:keydown={event => event.key === "Enter" || event.key === " " ? select(image) : undefined }
40
- />
33
+ <div class="images">
34
+ {#if images === undefined}
35
+ Loading images
41
36
  {:else}
42
- No images uploaded
43
- {/each}
44
- {/if}
37
+ <!-- Sort the images by their URL. There's probably a more meaningful sort,
38
+ such as placing unused images at the front of the list. -->
39
+ {#each images.sort((a, b) => a.url.localeCompare(b.url)) as image}
40
+ <img
41
+ class={`bookish-image-chooser-image ${
42
+ image.url === selection ? 'selected' : ''
43
+ }`}
44
+ src={image.url}
45
+ alt={`Image named ${image.url}`}
46
+ tabIndex="0"
47
+ on:click|stopPropagation={() => select(image)}
48
+ on:keydown={(event) =>
49
+ event.key === 'Enter' || event.key === ' '
50
+ ? select(image)
51
+ : undefined}
52
+ />
53
+ {:else}
54
+ No images uploaded
55
+ {/each}
56
+ {/if}
57
+ </div>
45
58
  </div>
46
59
 
47
60
  <style>
48
61
  .bookish-image-chooser {
49
- margin-top: var(--bookish-app-chrome-padding);
50
- height: 3em;
51
- overflow-y: hidden;
62
+ display: inline-block;
63
+ vertical-align: middle;
64
+ }
65
+
66
+ .images {
67
+ display: flex;
68
+ flex-direction: row;
69
+ flex-wrap: nowrap;
70
+ overflow-x: scroll;
52
71
  }
53
72
 
54
73
  .bookish-image-chooser.expanded {
@@ -58,13 +77,13 @@ onMount(() => {
58
77
 
59
78
  .bookish-image-chooser-image {
60
79
  display: inline-block;
61
- height: 3em;
62
- margin-right: var(--bookish-app-chrome-padding);
80
+ height: 2em;
63
81
  cursor: pointer;
64
82
  }
65
83
 
66
84
  .bookish-image-chooser-image.selected {
67
- outline: var(--bookish-app-highlight-width) solid var(--bookish-highlight-color);
68
- outline-offset: calc(-1 * var(--bookish-app-highlight-width));
85
+ outline: var(--app-chrome-border-size) solid
86
+ var(--app-interactive-color);
87
+ outline-offset: calc(-1 * var(--app-chrome-border-size));
69
88
  }
70
- </style>
89
+ </style>
@@ -10,9 +10,9 @@ declare const __propDef: {
10
10
  };
11
11
  slots: {};
12
12
  };
13
- export declare type ImageChooserProps = typeof __propDef.props;
14
- export declare type ImageChooserEvents = typeof __propDef.events;
15
- export declare type ImageChooserSlots = typeof __propDef.slots;
13
+ export type ImageChooserProps = typeof __propDef.props;
14
+ export type ImageChooserEvents = typeof __propDef.events;
15
+ export type ImageChooserSlots = typeof __propDef.slots;
16
16
  export default class ImageChooser extends SvelteComponentTyped<ImageChooserProps, ImageChooserEvents, ImageChooserSlots> {
17
17
  }
18
18
  export {};
@@ -1,9 +1,12 @@
1
- <script>import LanguageEditor from "./LanguageEditor.svelte";
2
- import { getCaret } from "../page/Contexts";
1
+ <script>import LanguageEditor from './LanguageEditor.svelte';
2
+ import { getCaret } from '../page/Contexts';
3
3
  export let code;
4
4
  let caret = getCaret();
5
5
  </script>
6
6
 
7
7
  <span>
8
- <LanguageEditor language={code.getMeta()} edit={lang => $caret?.edit(code, code.withMeta(lang)) } />
9
- </span>
8
+ <LanguageEditor
9
+ language={code.getMeta()}
10
+ edit={(lang) => $caret?.edit(code, code.withMeta(lang))}
11
+ />
12
+ </span>
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type InlineCodeNode from "../../models/chapter/InlineCodeNode";
2
+ import type InlineCodeNode from '../../models/chapter/InlineCodeNode';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  code: InlineCodeNode;
@@ -9,9 +9,9 @@ declare const __propDef: {
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type InlineCodeEditorProps = typeof __propDef.props;
13
- export declare type InlineCodeEditorEvents = typeof __propDef.events;
14
- export declare type InlineCodeEditorSlots = typeof __propDef.slots;
12
+ export type InlineCodeEditorProps = typeof __propDef.props;
13
+ export type InlineCodeEditorEvents = typeof __propDef.events;
14
+ export type InlineCodeEditorSlots = typeof __propDef.slots;
15
15
  export default class InlineCodeEditor extends SvelteComponentTyped<InlineCodeEditorProps, InlineCodeEditorEvents, InlineCodeEditorSlots> {
16
16
  }
17
17
  export {};
@@ -1,23 +1,32 @@
1
- <script>import TextEditor from "./TextEditor.svelte";
2
- import { getCaret, getChapter } from "../page/Contexts";
1
+ <script>import TextEditor from './TextEditor.svelte';
2
+ import { getChapter, getEdition } from '../page/Contexts';
3
+ import { getCaret } from '../page/Contexts';
3
4
  export let label;
5
+ let edition = getEdition();
4
6
  let chapter = getChapter();
5
7
  let caret = getCaret();
6
- $: ast = $chapter?.chapter.getAST();
8
+ $: ast =
9
+ $edition && $chapter ? $chapter.chapter.getAST($edition) : undefined;
7
10
  </script>
8
11
 
9
12
  <code>
10
- <TextEditor
11
- startText={label.getMeta()}
13
+ <TextEditor
14
+ text={label.getMeta()}
12
15
  label="Chapter label ID"
13
16
  placeholder="label ID"
14
- valid={ id => {
15
- if(id.length === 0) return "Can't be empty";
16
- if(!/^[a-z]+$/.test(id)) return "Can only be a-z";
17
+ valid={(id) => {
18
+ if (id.length === 0) return "label ID can't be empty";
19
+ if (!/^[a-z]+$/.test(id))
20
+ return 'lable ID can only be a-z characters';
17
21
  // If it's different than what it is and there's already one, then error.
18
- if(ast && ast.getLabels().filter(l => l.getMeta() === id).length > (label.getMeta() === id ? 1 : 0)) return "Another label has this ID";
22
+ if (
23
+ ast &&
24
+ ast.getLabels().filter((l) => l.getMeta() === id).length >
25
+ (label.getMeta() === id ? 1 : 0)
26
+ )
27
+ return 'label ID is already used';
19
28
  }}
20
- save={labelID => $caret?.edit(label, label.withMeta(labelID)) }
29
+ save={(labelID) => $caret?.edit(label, label.withMeta(labelID))}
21
30
  saveOnExit
22
31
  />
23
- </code>
32
+ </code>
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type LabelNode from "../../models/chapter/LabelNode";
2
+ import type LabelNode from '../../models/chapter/LabelNode';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  label: LabelNode;
@@ -9,9 +9,9 @@ declare const __propDef: {
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type LabelEditorProps = typeof __propDef.props;
13
- export declare type LabelEditorEvents = typeof __propDef.events;
14
- export declare type LabelEditorSlots = typeof __propDef.slots;
12
+ export type LabelEditorProps = typeof __propDef.props;
13
+ export type LabelEditorEvents = typeof __propDef.events;
14
+ export type LabelEditorSlots = typeof __propDef.slots;
15
15
  export default class LabelEditor extends SvelteComponentTyped<LabelEditorProps, LabelEditorEvents, LabelEditorSlots> {
16
16
  }
17
17
  export {};
@@ -1,11 +1,14 @@
1
- <script>import Note from "./Note.svelte";
1
+ <script>import Options from '../app/Options.svelte';
2
+ import Note from './Note.svelte';
2
3
  export let language;
3
4
  export let edit;
4
- let value = language;
5
- const languages = ["C", "C++", "CSS", "Go", "HTML", "Java", "JavaScript", "Markdown", "Plaintext", "Python", "TypeScript"];
5
+ const languages = ['', 'html', 'css', 'javascript', 'python'];
6
6
  </script>
7
7
 
8
- <select bind:value={value} on:change={() => edit(value)}>
9
- {#each languages as lang}<option value={lang.toLocaleLowerCase()}>{lang}</option>{/each}
10
- </select>
11
- <Note>Choose a programming language to enable syntax highlighting.</Note>
8
+ <Options
9
+ options={languages.map((lang) => [lang === '' ? 'plaintext' : lang, lang])}
10
+ value={language}
11
+ changed={(lang) => edit(lang)}
12
+ label="choose language"
13
+ />
14
+ <Note>Choose a programming language to enable syntax highlighting.</Note>
@@ -9,9 +9,9 @@ declare const __propDef: {
9
9
  };
10
10
  slots: {};
11
11
  };
12
- export declare type LanguageEditorProps = typeof __propDef.props;
13
- export declare type LanguageEditorEvents = typeof __propDef.events;
14
- export declare type LanguageEditorSlots = typeof __propDef.slots;
12
+ export type LanguageEditorProps = typeof __propDef.props;
13
+ export type LanguageEditorEvents = typeof __propDef.events;
14
+ export type LanguageEditorSlots = typeof __propDef.slots;
15
15
  export default class LanguageEditor extends SvelteComponentTyped<LanguageEditorProps, LanguageEditorEvents, LanguageEditorSlots> {
16
16
  }
17
17
  export {};