bookish-press 0.4.47 → 0.4.48

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 (533) hide show
  1. package/components/Auth.svelte +55 -0
  2. package/components/Auth.svelte.d.ts +16 -0
  3. package/{src/lib/components/Authentication.ts → components/Authentication.d.ts} +0 -2
  4. package/components/Authentication.js +1 -0
  5. package/{src/lib/components → components}/BookPreview.svelte +22 -27
  6. package/components/BookPreview.svelte.d.ts +18 -0
  7. package/{src/lib/components → components}/External.svelte +1 -2
  8. package/components/External.svelte.d.ts +18 -0
  9. package/components/Link.svelte +51 -0
  10. package/components/Link.svelte.d.ts +18 -0
  11. package/{src/lib/components → components}/app/BookList.svelte +3 -6
  12. package/components/app/BookList.svelte.d.ts +18 -0
  13. package/{src/lib/components → components}/app/Button.svelte +4 -5
  14. package/components/app/Button.svelte.d.ts +22 -0
  15. package/{src/lib/components → components}/app/Feedback.svelte +7 -11
  16. package/components/app/Feedback.svelte.d.ts +18 -0
  17. package/{src/lib/components → components}/app/Head.svelte +1 -2
  18. package/components/app/Head.svelte.d.ts +18 -0
  19. package/{src/lib/components → components}/app/Large.svelte +0 -0
  20. package/components/app/Large.svelte.d.ts +27 -0
  21. package/{src/lib/components → components}/app/Lead.svelte +0 -0
  22. package/components/app/Lead.svelte.d.ts +27 -0
  23. package/{src/lib/components → components}/app/Link.svelte +3 -4
  24. package/components/app/Link.svelte.d.ts +20 -0
  25. package/{src/lib/components → components}/app/Options.svelte +4 -5
  26. package/components/app/Options.svelte.d.ts +19 -0
  27. package/{src/lib/components → components}/app/Paragraph.svelte +1 -2
  28. package/components/app/Paragraph.svelte.d.ts +18 -0
  29. package/{src/lib/components → components}/app/Section.svelte +0 -0
  30. package/components/app/Section.svelte.d.ts +27 -0
  31. package/{src/lib/components → components}/app/Table.svelte +0 -0
  32. package/components/app/Table.svelte.d.ts +27 -0
  33. package/{src/lib/components → components}/app/TextInput.svelte +9 -12
  34. package/components/app/TextInput.svelte.d.ts +22 -0
  35. package/{src/lib/components → components}/chapter/Atom.svelte +12 -18
  36. package/components/chapter/Atom.svelte.d.ts +19 -0
  37. package/components/chapter/Block.svelte +37 -0
  38. package/components/chapter/Block.svelte.d.ts +17 -0
  39. package/{src/lib/components → components}/chapter/Callout.svelte +3 -6
  40. package/components/chapter/Callout.svelte.d.ts +17 -0
  41. package/{src/lib/components → components}/chapter/CaptionedCode.svelte +13 -21
  42. package/components/chapter/CaptionedCode.svelte.d.ts +17 -0
  43. package/{src/lib/components → components}/chapter/ChapterBody.svelte +9 -13
  44. package/components/chapter/ChapterBody.svelte.d.ts +19 -0
  45. package/{src/lib/components → components}/chapter/Citations.svelte +33 -34
  46. package/components/chapter/Citations.svelte.d.ts +17 -0
  47. package/{src/lib/components → components}/chapter/Code.svelte +58 -62
  48. package/components/chapter/Code.svelte.d.ts +22 -0
  49. package/{src/lib/components → components}/chapter/Comment.svelte +18 -30
  50. package/components/chapter/Comment.svelte.d.ts +17 -0
  51. package/{src/lib/components → components}/chapter/Definition.svelte +17 -23
  52. package/components/chapter/Definition.svelte.d.ts +17 -0
  53. package/{src/lib/components → components}/chapter/Embed.svelte +77 -97
  54. package/components/chapter/Embed.svelte.d.ts +20 -0
  55. package/components/chapter/ErrorMessage.svelte +9 -0
  56. package/components/chapter/ErrorMessage.svelte.d.ts +17 -0
  57. package/components/chapter/ExtendedPrism.d.ts +2 -0
  58. package/{src/lib/components → components}/chapter/ExtendedPrism.js +0 -0
  59. package/{src/lib/components → components}/chapter/Figure.svelte +26 -34
  60. package/components/chapter/Figure.svelte.d.ts +24 -0
  61. package/{src/lib/components → components}/chapter/Footnote.svelte +20 -32
  62. package/components/chapter/Footnote.svelte.d.ts +19 -0
  63. package/{src/lib/components → components}/chapter/Format.svelte +34 -39
  64. package/components/chapter/Format.svelte.d.ts +19 -0
  65. package/{src/lib/components → components}/chapter/InlineCode.svelte +5 -9
  66. package/components/chapter/InlineCode.svelte.d.ts +17 -0
  67. package/{src/lib/components → components}/chapter/Label.svelte +14 -23
  68. package/components/chapter/Label.svelte.d.ts +17 -0
  69. package/{src/lib/components → components}/chapter/Link.svelte +21 -27
  70. package/components/chapter/Link.svelte.d.ts +17 -0
  71. package/{src/lib/components → components}/chapter/List.svelte +3 -5
  72. package/components/chapter/List.svelte.d.ts +17 -0
  73. package/{src/lib/components → components}/chapter/Marginal.svelte +41 -54
  74. package/components/chapter/Marginal.svelte.d.ts +22 -0
  75. package/{src/lib/components → components}/chapter/Paragraph.svelte +20 -25
  76. package/components/chapter/Paragraph.svelte.d.ts +18 -0
  77. package/{src/lib/components → components}/chapter/Positioned.svelte +1 -4
  78. package/components/chapter/Positioned.svelte.d.ts +19 -0
  79. package/{src/lib/components → components}/chapter/Problem.svelte +0 -0
  80. package/components/chapter/Problem.svelte.d.ts +27 -0
  81. package/components/chapter/Python.svelte +128 -0
  82. package/components/chapter/Python.svelte.d.ts +18 -0
  83. package/{src/lib/components → components}/chapter/Quote.svelte +5 -9
  84. package/components/chapter/Quote.svelte.d.ts +17 -0
  85. package/{src/lib/components → components}/chapter/Rule.svelte +1 -4
  86. package/components/chapter/Rule.svelte.d.ts +17 -0
  87. package/{src/lib/components → components}/chapter/Table.svelte +7 -11
  88. package/components/chapter/Table.svelte.d.ts +17 -0
  89. package/components/chapter/Text.svelte +87 -0
  90. package/components/chapter/Text.svelte.d.ts +18 -0
  91. package/components/editor/BookishEditor.svelte +884 -0
  92. package/components/editor/BookishEditor.svelte.d.ts +25 -0
  93. package/components/editor/CalloutEditor.svelte +10 -0
  94. package/components/editor/CalloutEditor.svelte.d.ts +17 -0
  95. package/{src/lib/components → components}/editor/CaptionedCodeEditor.svelte +6 -10
  96. package/components/editor/CaptionedCodeEditor.svelte.d.ts +17 -0
  97. package/components/editor/CaretContext.d.ts +50 -0
  98. package/components/editor/CaretContext.js +1 -0
  99. package/{src/lib/components/editor/CaretState.ts → components/editor/CaretState.d.ts} +7 -6
  100. package/components/editor/CaretState.js +1 -0
  101. package/{src/lib/components/editor/CaretUtilities.ts → components/editor/CaretUtilities.d.ts} +0 -1
  102. package/components/editor/CaretUtilities.js +1 -0
  103. package/{src/lib/components → components}/editor/CaretView.svelte +20 -25
  104. package/components/editor/CaretView.svelte.d.ts +25 -0
  105. package/components/editor/CitationsEditor.svelte +53 -0
  106. package/components/editor/CitationsEditor.svelte.d.ts +17 -0
  107. package/{src/lib/components/editor/Clipboard.ts → components/editor/Clipboard.d.ts} +1 -2
  108. package/components/editor/Clipboard.js +1 -0
  109. package/{src/lib/components/editor/Command.ts → components/editor/Command.d.ts} +2 -8
  110. package/components/editor/Command.js +1 -0
  111. package/components/editor/Commands.d.ts +3 -0
  112. package/{src/lib/components/editor/Commands.ts → components/editor/Commands.js} +315 -730
  113. package/components/editor/ConfirmButton.svelte +49 -0
  114. package/components/editor/ConfirmButton.svelte.d.ts +19 -0
  115. package/components/editor/DefinitionEditor.svelte +36 -0
  116. package/components/editor/DefinitionEditor.svelte.d.ts +17 -0
  117. package/components/editor/EmbedEditor.svelte +137 -0
  118. package/components/editor/EmbedEditor.svelte.d.ts +17 -0
  119. package/{src/lib/components → components}/editor/Icon.svelte +1 -2
  120. package/components/editor/Icon.svelte.d.ts +16 -0
  121. package/{src/lib/components → components}/editor/ImageChooser.svelte +19 -24
  122. package/components/editor/ImageChooser.svelte.d.ts +18 -0
  123. package/components/editor/InlineCodeEditor.svelte +12 -0
  124. package/components/editor/InlineCodeEditor.svelte.d.ts +17 -0
  125. package/{src/lib/components → components}/editor/LabelEditor.svelte +9 -14
  126. package/components/editor/LabelEditor.svelte.d.ts +17 -0
  127. package/{src/lib/components → components}/editor/LanguageEditor.svelte +5 -8
  128. package/components/editor/LanguageEditor.svelte.d.ts +17 -0
  129. package/components/editor/LinkEditor.svelte +100 -0
  130. package/components/editor/LinkEditor.svelte.d.ts +17 -0
  131. package/{src/lib/components → components}/editor/Note.svelte +0 -0
  132. package/components/editor/Note.svelte.d.ts +27 -0
  133. package/{src/lib/components → components}/editor/Permissions.svelte +36 -43
  134. package/components/editor/Permissions.svelte.d.ts +20 -0
  135. package/components/editor/PositionEditor.svelte +17 -0
  136. package/components/editor/PositionEditor.svelte.d.ts +18 -0
  137. package/components/editor/QuoteEditor.svelte +10 -0
  138. package/components/editor/QuoteEditor.svelte.d.ts +17 -0
  139. package/{src/lib/components → components}/editor/Switch.svelte +11 -14
  140. package/components/editor/Switch.svelte.d.ts +20 -0
  141. package/components/editor/TableEditor.svelte +10 -0
  142. package/components/editor/TableEditor.svelte.d.ts +17 -0
  143. package/{src/lib/components → components}/editor/TextEditor.svelte +89 -101
  144. package/components/editor/TextEditor.svelte.d.ts +24 -0
  145. package/components/editor/Toggle.svelte +41 -0
  146. package/components/editor/Toggle.svelte.d.ts +19 -0
  147. package/components/editor/Toolbar.svelte +249 -0
  148. package/components/editor/Toolbar.svelte.d.ts +17 -0
  149. package/{src/lib/components → components}/editor/ToolbarGroup.svelte +3 -5
  150. package/components/editor/ToolbarGroup.svelte.d.ts +18 -0
  151. package/{src/lib/components → components}/editor/ToolbarSpacer.svelte +0 -0
  152. package/components/editor/ToolbarSpacer.svelte.d.ts +23 -0
  153. package/components/editor/URLEditor.svelte +13 -0
  154. package/components/editor/URLEditor.svelte.d.ts +18 -0
  155. package/{src/lib/components/editor/UndoState.ts → components/editor/UndoState.d.ts} +2 -3
  156. package/components/editor/UndoState.js +1 -0
  157. package/{src/lib/components → components}/editor/icons/annotate.svg +0 -0
  158. package/{src/lib/components → components}/editor/icons/block.svg +0 -0
  159. package/{src/lib/components → components}/editor/icons/bold.svg +0 -0
  160. package/{src/lib/components → components}/editor/icons/bullets.svg +0 -0
  161. package/{src/lib/components → components}/editor/icons/callout.svg +0 -0
  162. package/{src/lib/components → components}/editor/icons/citation.svg +0 -0
  163. package/{src/lib/components → components}/editor/icons/clear.svg +0 -0
  164. package/{src/lib/components → components}/editor/icons/clipboard.svg +0 -0
  165. package/{src/lib/components → components}/editor/icons/code.svg +0 -0
  166. package/{src/lib/components → components}/editor/icons/columnafter.svg +0 -0
  167. package/{src/lib/components → components}/editor/icons/columnbefore.svg +0 -0
  168. package/{src/lib/components → components}/editor/icons/comment.svg +0 -0
  169. package/{src/lib/components → components}/editor/icons/copy.svg +0 -0
  170. package/{src/lib/components → components}/editor/icons/cut.svg +0 -0
  171. package/{src/lib/components → components}/editor/icons/define.svg +0 -0
  172. package/{src/lib/components → components}/editor/icons/deletecolumn.svg +0 -0
  173. package/{src/lib/components → components}/editor/icons/deleterow.svg +0 -0
  174. package/{src/lib/components → components}/editor/icons/footnote.svg +0 -0
  175. package/{src/lib/components → components}/editor/icons/header1.svg +0 -0
  176. package/{src/lib/components → components}/editor/icons/header2.svg +0 -0
  177. package/{src/lib/components → components}/editor/icons/header3.svg +0 -0
  178. package/{src/lib/components → components}/editor/icons/home.svg +0 -0
  179. package/{src/lib/components → components}/editor/icons/indent.svg +0 -0
  180. package/{src/lib/components → components}/editor/icons/italic.svg +0 -0
  181. package/{src/lib/components → components}/editor/icons/label.svg +0 -0
  182. package/{src/lib/components → components}/editor/icons/left.svg +0 -0
  183. package/{src/lib/components → components}/editor/icons/level.svg +0 -0
  184. package/{src/lib/components → components}/editor/icons/link.svg +0 -0
  185. package/{src/lib/components → components}/editor/icons/list.svg +0 -0
  186. package/{src/lib/components → components}/editor/icons/media.svg +0 -0
  187. package/{src/lib/components → components}/editor/icons/middle.svg +0 -0
  188. package/{src/lib/components → components}/editor/icons/numbers.svg +0 -0
  189. package/{src/lib/components → components}/editor/icons/paragraph.svg +0 -0
  190. package/{src/lib/components → components}/editor/icons/paste.svg +0 -0
  191. package/{src/lib/components → components}/editor/icons/quote.svg +0 -0
  192. package/{src/lib/components → components}/editor/icons/redo.svg +0 -0
  193. package/{src/lib/components → components}/editor/icons/right.svg +0 -0
  194. package/{src/lib/components → components}/editor/icons/rowabove.svg +0 -0
  195. package/{src/lib/components → components}/editor/icons/rowbelow.svg +0 -0
  196. package/{src/lib/components → components}/editor/icons/rule.svg +0 -0
  197. package/{src/lib/components → components}/editor/icons/sub.svg +0 -0
  198. package/{src/lib/components → components}/editor/icons/super.svg +0 -0
  199. package/{src/lib/components → components}/editor/icons/table.svg +0 -0
  200. package/{src/lib/components → components}/editor/icons/text.svg +0 -0
  201. package/{src/lib/components → components}/editor/icons/time.svg +0 -0
  202. package/{src/lib/components → components}/editor/icons/undo.svg +0 -0
  203. package/{src/lib/components → components}/editor/icons/unindent.svg +0 -0
  204. package/{src/lib/components → components}/editor/icons/unlink.svg +0 -0
  205. package/{src/lib/components → components}/page/Acknowledgements.svelte +10 -19
  206. package/components/page/Acknowledgements.svelte.d.ts +14 -0
  207. package/components/page/Authors.svelte +85 -0
  208. package/components/page/Authors.svelte.d.ts +21 -0
  209. package/components/page/BookLoader.svelte +59 -0
  210. package/components/page/BookLoader.svelte.d.ts +16 -0
  211. package/components/page/BulkReferenceEditor.svelte +63 -0
  212. package/components/page/BulkReferenceEditor.svelte.d.ts +14 -0
  213. package/components/page/Chapter.svelte +392 -0
  214. package/components/page/Chapter.svelte.d.ts +18 -0
  215. package/components/page/ChapterContext.d.ts +10 -0
  216. package/components/page/ChapterContext.js +1 -0
  217. package/{src/lib/components → components}/page/ChapterNumber.svelte +0 -0
  218. package/components/page/ChapterNumber.svelte.d.ts +27 -0
  219. package/{src/lib/components → components}/page/ChapterTitle.svelte +2 -4
  220. package/components/page/ChapterTitle.svelte.d.ts +18 -0
  221. package/components/page/Contexts.d.ts +47 -0
  222. package/components/page/Contexts.js +133 -0
  223. package/{src/lib/components → components}/page/DefinitionView.svelte +37 -52
  224. package/components/page/DefinitionView.svelte.d.ts +18 -0
  225. package/{src/lib/components → components}/page/Description.svelte +7 -15
  226. package/components/page/Description.svelte.d.ts +14 -0
  227. package/components/page/Edition.svelte +161 -0
  228. package/components/page/Edition.svelte.d.ts +20 -0
  229. package/components/page/EditionLoader.svelte +99 -0
  230. package/components/page/EditionLoader.svelte.d.ts +18 -0
  231. package/{src/lib/components → components}/page/Editions.svelte +18 -22
  232. package/components/page/Editions.svelte.d.ts +14 -0
  233. package/{src/lib/components → components}/page/Glossary.svelte +28 -33
  234. package/components/page/Glossary.svelte.d.ts +14 -0
  235. package/{src/lib/components → components}/page/Header.svelte +52 -59
  236. package/components/page/Header.svelte.d.ts +29 -0
  237. package/{src/lib/components → components}/page/Index.svelte +41 -48
  238. package/components/page/Index.svelte.d.ts +14 -0
  239. package/{src/lib/components → components}/page/Instructions.svelte +1 -2
  240. package/components/page/Instructions.svelte.d.ts +18 -0
  241. package/{src/lib/components → components}/page/License.svelte +9 -17
  242. package/components/page/License.svelte.d.ts +14 -0
  243. package/{src/lib/components → components}/page/Loading.svelte +0 -0
  244. package/components/page/Loading.svelte.d.ts +23 -0
  245. package/{src/lib/components → components}/page/Media.svelte +27 -44
  246. package/components/page/Media.svelte.d.ts +14 -0
  247. package/{src/lib/components → components}/page/MediaPreview.svelte +2 -3
  248. package/components/page/MediaPreview.svelte.d.ts +19 -0
  249. package/{src/lib/components → components}/page/Muted.svelte +0 -0
  250. package/components/page/Muted.svelte.d.ts +27 -0
  251. package/{src/lib/components → components}/page/Outline.svelte +110 -140
  252. package/components/page/Outline.svelte.d.ts +19 -0
  253. package/components/page/Page.svelte +84 -0
  254. package/components/page/Page.svelte.d.ts +19 -0
  255. package/{src/lib/components → components}/page/PageHeader.svelte +1 -2
  256. package/components/page/PageHeader.svelte.d.ts +18 -0
  257. package/{src/lib/components → components}/page/PageParagraph.svelte +0 -0
  258. package/components/page/PageParagraph.svelte.d.ts +27 -0
  259. package/components/page/PossibleChapter.svelte +14 -0
  260. package/components/page/PossibleChapter.svelte.d.ts +14 -0
  261. package/components/page/PossibleReference.svelte +11 -0
  262. package/components/page/PossibleReference.svelte.d.ts +18 -0
  263. package/{src/lib/components → components}/page/Print.svelte +3 -5
  264. package/components/page/Print.svelte.d.ts +14 -0
  265. package/{src/lib/components → components}/page/Publish.svelte +52 -59
  266. package/components/page/Publish.svelte.d.ts +14 -0
  267. package/{src/lib/components → components}/page/Reference.svelte +30 -39
  268. package/components/page/Reference.svelte.d.ts +17 -0
  269. package/{src/lib/components → components}/page/References.svelte +14 -18
  270. package/components/page/References.svelte.d.ts +14 -0
  271. package/{src/lib/components → components}/page/Rows.svelte +0 -0
  272. package/components/page/Rows.svelte.d.ts +27 -0
  273. package/components/page/Search.svelte +133 -0
  274. package/components/page/Search.svelte.d.ts +14 -0
  275. package/{src/lib/components → components}/page/Status.svelte +3 -5
  276. package/components/page/Status.svelte.d.ts +14 -0
  277. package/{src/lib/components → components}/page/SubdomainEditor.svelte +13 -16
  278. package/components/page/SubdomainEditor.svelte.d.ts +14 -0
  279. package/{src/lib/components → components}/page/TableOfContents.svelte +68 -79
  280. package/components/page/TableOfContents.svelte.d.ts +14 -0
  281. package/components/page/TableOfContentsImage.svelte +18 -0
  282. package/components/page/TableOfContentsImage.svelte.d.ts +16 -0
  283. package/{src/lib/components → components}/page/TableOfContentsRow.svelte +24 -34
  284. package/components/page/TableOfContentsRow.svelte.d.ts +24 -0
  285. package/{src/lib/components → components}/page/ThemeEditor.svelte +33 -44
  286. package/components/page/ThemeEditor.svelte.d.ts +14 -0
  287. package/{src/lib/components → components}/page/ThemeEditorPreview.svelte +12 -21
  288. package/components/page/ThemeEditorPreview.svelte.d.ts +17 -0
  289. package/components/page/ThemeSetEditor.svelte +19 -0
  290. package/components/page/ThemeSetEditor.svelte.d.ts +18 -0
  291. package/{src/lib/components → components}/page/ThemeVariableEditor.svelte +14 -18
  292. package/components/page/ThemeVariableEditor.svelte.d.ts +18 -0
  293. package/{src/lib/components → components}/page/Title.svelte +0 -0
  294. package/components/page/Title.svelte.d.ts +27 -0
  295. package/{src/lib/components → components}/page/Unknown.svelte +8 -10
  296. package/components/page/Unknown.svelte.d.ts +16 -0
  297. package/components/page/margins.d.ts +2 -0
  298. package/{src/lib/components/page/margins.ts → components/page/margins.js} +46 -79
  299. package/index.d.ts +15 -0
  300. package/{src/lib/index.js → index.js} +0 -0
  301. package/models/CRUD.d.ts +27 -0
  302. package/models/CRUD.js +262 -0
  303. package/models/Firebase.d.ts +5 -0
  304. package/{src/lib/models/Firebase.ts → models/Firebase.js} +16 -26
  305. package/models/book/Book.d.ts +61 -0
  306. package/models/book/Book.js +135 -0
  307. package/models/book/BookMedia.d.ts +23 -0
  308. package/models/book/BookMedia.js +108 -0
  309. package/models/book/BookSaveStatus.d.ts +7 -0
  310. package/models/book/BookSaveStatus.js +8 -0
  311. package/models/book/Chapter.d.ts +81 -0
  312. package/models/book/Chapter.js +212 -0
  313. package/models/book/ChapterID.d.ts +10 -0
  314. package/{src/lib/models/book/ChapterID.ts → models/book/ChapterID.js} +0 -1
  315. package/models/book/Definition.d.ts +6 -0
  316. package/models/book/Definition.js +1 -0
  317. package/models/book/Edition.d.ts +139 -0
  318. package/models/book/Edition.js +620 -0
  319. package/models/book/Reference.d.ts +24 -0
  320. package/models/book/Reference.js +78 -0
  321. package/models/book/Schema.d.ts +174 -0
  322. package/{src/lib/models/book/Schema.ts → models/book/Schema.js} +0 -1
  323. package/models/book/Theme.d.ts +113 -0
  324. package/{src/lib/models/book/Theme.ts → models/book/Theme.js} +5 -109
  325. package/{src/lib/models/book/ThemeColors.ts → models/book/ThemeColors.d.ts} +0 -6
  326. package/models/book/ThemeColors.js +1 -0
  327. package/models/book/Words.d.ts +2 -0
  328. package/{src/lib/models/book/Words.ts → models/book/Words.js} +0 -1
  329. package/models/chapter/AtomNode.d.ts +18 -0
  330. package/{src/lib/models/chapter/AtomNode.ts → models/chapter/AtomNode.js} +10 -30
  331. package/models/chapter/BlockNode.d.ts +20 -0
  332. package/{src/lib/models/chapter/BlockNode.ts → models/chapter/BlockNode.js} +47 -80
  333. package/models/chapter/BlocksNode.d.ts +50 -0
  334. package/{src/lib/models/chapter/BlocksNode.ts → models/chapter/BlocksNode.js} +359 -571
  335. package/models/chapter/BlocksNode.test.d.ts +1 -0
  336. package/models/chapter/BlocksNode.test.js +568 -0
  337. package/{src/lib/models/chapter/Bookkeeping.ts → models/chapter/Bookkeeping.d.ts} +0 -0
  338. package/models/chapter/Bookkeeping.js +1 -0
  339. package/models/chapter/CalloutNode.d.ts +17 -0
  340. package/models/chapter/CalloutNode.js +58 -0
  341. package/models/chapter/Caret.d.ts +23 -0
  342. package/{src/lib/models/chapter/Caret.ts → models/chapter/Caret.js} +26 -50
  343. package/models/chapter/ChapterNode.d.ts +34 -0
  344. package/models/chapter/ChapterNode.js +117 -0
  345. package/models/chapter/CitationsNode.d.ts +16 -0
  346. package/{src/lib/models/chapter/CitationsNode.ts → models/chapter/CitationsNode.js} +10 -17
  347. package/models/chapter/CodeNode.d.ts +35 -0
  348. package/{src/lib/models/chapter/CodeNode.ts → models/chapter/CodeNode.js} +62 -125
  349. package/models/chapter/CommentNode.d.ts +18 -0
  350. package/models/chapter/CommentNode.js +48 -0
  351. package/models/chapter/DefinitionNode.d.ts +12 -0
  352. package/{src/lib/models/chapter/DefinitionNode.ts → models/chapter/DefinitionNode.js} +8 -14
  353. package/models/chapter/Edit.d.ts +7 -0
  354. package/models/chapter/Edit.js +1 -0
  355. package/models/chapter/EmbedNode.d.ts +45 -0
  356. package/models/chapter/EmbedNode.js +168 -0
  357. package/models/chapter/ErrorNode.d.ts +17 -0
  358. package/{src/lib/models/chapter/ErrorNode.ts → models/chapter/ErrorNode.js} +8 -15
  359. package/models/chapter/FootnoteNode.d.ts +18 -0
  360. package/models/chapter/FootnoteNode.js +47 -0
  361. package/models/chapter/FormatNode.d.ts +60 -0
  362. package/{src/lib/models/chapter/FormatNode.ts → models/chapter/FormatNode.js} +262 -443
  363. package/models/chapter/FormatNode.test.d.ts +1 -0
  364. package/models/chapter/FormatNode.test.js +96 -0
  365. package/models/chapter/InlineCodeNode.d.ts +12 -0
  366. package/{src/lib/models/chapter/InlineCodeNode.ts → models/chapter/InlineCodeNode.js} +9 -17
  367. package/models/chapter/LabelNode.d.ts +17 -0
  368. package/{src/lib/models/chapter/LabelNode.ts → models/chapter/LabelNode.js} +10 -26
  369. package/models/chapter/LinkNode.d.ts +12 -0
  370. package/{src/lib/models/chapter/LinkNode.ts → models/chapter/LinkNode.js} +7 -12
  371. package/models/chapter/ListNode.d.ts +51 -0
  372. package/{src/lib/models/chapter/ListNode.ts → models/chapter/ListNode.js} +200 -277
  373. package/models/chapter/ListNode.test.d.ts +1 -0
  374. package/{src/lib/models/chapter/ListNode.test.ts → models/chapter/ListNode.test.js} +20 -57
  375. package/models/chapter/MetadataNode.d.ts +17 -0
  376. package/models/chapter/MetadataNode.js +32 -0
  377. package/models/chapter/Node.d.ts +38 -0
  378. package/{src/lib/models/chapter/Node.ts → models/chapter/Node.js} +71 -155
  379. package/models/chapter/Node.test.d.ts +1 -0
  380. package/{src/lib/models → models}/chapter/Node.test.js +0 -0
  381. package/models/chapter/ParagraphNode.d.ts +33 -0
  382. package/{src/lib/models/chapter/ParagraphNode.ts → models/chapter/ParagraphNode.js} +58 -95
  383. package/models/chapter/ParagraphNode.test.d.ts +1 -0
  384. package/models/chapter/ParagraphNode.test.js +30 -0
  385. package/models/chapter/Parser.d.ts +75 -0
  386. package/{src/lib/models/chapter/Parser.ts → models/chapter/Parser.js} +184 -369
  387. package/models/chapter/Parser.test.d.ts +1 -0
  388. package/{src/lib/models/chapter/Parser.test.ts → models/chapter/Parser.test.js} +0 -7
  389. package/{src/lib/models/chapter/Position.ts → models/chapter/Position.d.ts} +0 -0
  390. package/models/chapter/Position.js +1 -0
  391. package/models/chapter/QuoteNode.d.ts +25 -0
  392. package/models/chapter/QuoteNode.js +99 -0
  393. package/{src/lib/models/chapter/RootNode.ts → models/chapter/RootNode.d.ts} +0 -2
  394. package/models/chapter/RootNode.js +1 -0
  395. package/models/chapter/RuleNode.d.ts +15 -0
  396. package/{src/lib/models/chapter/RuleNode.ts → models/chapter/RuleNode.js} +6 -9
  397. package/models/chapter/TableNode.d.ts +37 -0
  398. package/{src/lib/models/chapter/TableNode.ts → models/chapter/TableNode.js} +82 -141
  399. package/models/chapter/TableNode.test.d.ts +1 -0
  400. package/{src/lib/models/chapter/TableNode.test.ts → models/chapter/TableNode.test.js} +10 -27
  401. package/models/chapter/TextNode.d.ts +36 -0
  402. package/{src/lib/models/chapter/TextNode.ts → models/chapter/TextNode.js} +65 -117
  403. package/models/chapter/TextNode.test.d.ts +1 -0
  404. package/{src/lib/models/chapter/TextNode.test.ts → models/chapter/TextNode.test.js} +0 -2
  405. package/package.json +270 -53
  406. package/util/getSubdomain.d.ts +3 -0
  407. package/{src/lib/util/getSubdomain.ts → util/getSubdomain.js} +8 -14
  408. package/util/isMobile.d.ts +2 -0
  409. package/{src/lib/util/isMobile.ts → util/isMobile.js} +0 -1
  410. package/util/mineReference.d.ts +4 -0
  411. package/{src/lib/util/mineReference.ts → util/mineReference.js} +25 -45
  412. package/util/scrollToEyeLevel.d.ts +2 -0
  413. package/{src/lib/util/scrollToEyeLevel.ts → util/scrollToEyeLevel.js} +2 -4
  414. package/.env.example +0 -8
  415. package/.firebaserc +0 -8
  416. package/.prettierignore +0 -8
  417. package/.prettierrc.json +0 -5
  418. package/_update-notifier-last-checked +0 -0
  419. package/firebase.json +0 -46
  420. package/firestore.indexes.json +0 -4
  421. package/firestore.rules +0 -59
  422. package/functions/.eslintrc.js +0 -28
  423. package/functions/package-lock.json +0 -12595
  424. package/functions/package.json +0 -43
  425. package/functions/src/index.ts +0 -345
  426. package/functions/tsconfig.dev.json +0 -3
  427. package/functions/tsconfig.json +0 -15
  428. package/scripts/claims.cjs +0 -99
  429. package/src/app.d.ts +0 -9
  430. package/src/app.html +0 -24
  431. package/src/lib/components/Auth.svelte +0 -65
  432. package/src/lib/components/Link.svelte +0 -58
  433. package/src/lib/components/chapter/Block.svelte +0 -42
  434. package/src/lib/components/chapter/ErrorMessage.svelte +0 -12
  435. package/src/lib/components/chapter/Python.svelte +0 -144
  436. package/src/lib/components/chapter/Text.svelte +0 -109
  437. package/src/lib/components/editor/BookishEditor.svelte +0 -1101
  438. package/src/lib/components/editor/CalloutEditor.svelte +0 -14
  439. package/src/lib/components/editor/CaretContext.ts +0 -55
  440. package/src/lib/components/editor/CitationsEditor.svelte +0 -64
  441. package/src/lib/components/editor/ConfirmButton.svelte +0 -51
  442. package/src/lib/components/editor/DefinitionEditor.svelte +0 -44
  443. package/src/lib/components/editor/EmbedEditor.svelte +0 -152
  444. package/src/lib/components/editor/InlineCodeEditor.svelte +0 -16
  445. package/src/lib/components/editor/LinkEditor.svelte +0 -110
  446. package/src/lib/components/editor/PositionEditor.svelte +0 -21
  447. package/src/lib/components/editor/QuoteEditor.svelte +0 -14
  448. package/src/lib/components/editor/TableEditor.svelte +0 -14
  449. package/src/lib/components/editor/Toggle.svelte +0 -47
  450. package/src/lib/components/editor/Toolbar.svelte +0 -297
  451. package/src/lib/components/editor/URLEditor.svelte +0 -15
  452. package/src/lib/components/page/Authors.svelte +0 -92
  453. package/src/lib/components/page/BookLoader.svelte +0 -77
  454. package/src/lib/components/page/BulkReferenceEditor.svelte +0 -86
  455. package/src/lib/components/page/Chapter.svelte +0 -449
  456. package/src/lib/components/page/ChapterContext.ts +0 -13
  457. package/src/lib/components/page/Contexts.ts +0 -176
  458. package/src/lib/components/page/Edition.svelte +0 -189
  459. package/src/lib/components/page/EditionLoader.svelte +0 -123
  460. package/src/lib/components/page/Page.svelte +0 -94
  461. package/src/lib/components/page/PossibleChapter.svelte +0 -16
  462. package/src/lib/components/page/PossibleReference.svelte +0 -14
  463. package/src/lib/components/page/Search.svelte +0 -153
  464. package/src/lib/components/page/TableOfContentsImage.svelte +0 -22
  465. package/src/lib/components/page/ThemeSetEditor.svelte +0 -21
  466. package/src/lib/models/CRUD.ts +0 -469
  467. package/src/lib/models/book/Book.ts +0 -283
  468. package/src/lib/models/book/BookMedia.ts +0 -182
  469. package/src/lib/models/book/BookSaveStatus.ts +0 -8
  470. package/src/lib/models/book/Chapter.ts +0 -462
  471. package/src/lib/models/book/Definition.ts +0 -2
  472. package/src/lib/models/book/Edition.ts +0 -1216
  473. package/src/lib/models/book/Reference.ts +0 -171
  474. package/src/lib/models/chapter/BlocksNode.test.ts +0 -867
  475. package/src/lib/models/chapter/CalloutNode.ts +0 -79
  476. package/src/lib/models/chapter/ChapterNode.ts +0 -169
  477. package/src/lib/models/chapter/CommentNode.ts +0 -61
  478. package/src/lib/models/chapter/Edit.ts +0 -6
  479. package/src/lib/models/chapter/EmbedNode.ts +0 -257
  480. package/src/lib/models/chapter/FootnoteNode.ts +0 -59
  481. package/src/lib/models/chapter/FormatNode.test.ts +0 -137
  482. package/src/lib/models/chapter/MetadataNode.ts +0 -44
  483. package/src/lib/models/chapter/ParagraphNode.test.ts +0 -54
  484. package/src/lib/models/chapter/QuoteNode.ts +0 -135
  485. package/src/params/edition.ts +0 -3
  486. package/src/routes/+error.svelte +0 -12
  487. package/src/routes/+layout.svelte +0 -241
  488. package/src/routes/+page.svelte +0 -43
  489. package/src/routes/Footer.svelte +0 -0
  490. package/src/routes/Header.svelte +0 -112
  491. package/src/routes/[bookid]/+layout.svelte +0 -5
  492. package/src/routes/[bookid]/[[editionid=edition]]/+error.svelte +0 -14
  493. package/src/routes/[bookid]/[[editionid=edition]]/+layout.svelte +0 -7
  494. package/src/routes/[bookid]/[[editionid=edition]]/+page.svelte +0 -5
  495. package/src/routes/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +0 -5
  496. package/src/routes/[bookid]/[[editionid=edition]]/glossary/+page.svelte +0 -5
  497. package/src/routes/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +0 -5
  498. package/src/routes/[bookid]/[[editionid=edition]]/media/+page.svelte +0 -5
  499. package/src/routes/[bookid]/[[editionid=edition]]/print/+page.svelte +0 -5
  500. package/src/routes/[bookid]/[[editionid=edition]]/references/+page.svelte +0 -5
  501. package/src/routes/[bookid]/[[editionid=edition]]/search/+page.svelte +0 -5
  502. package/src/routes/[bookid]/editions/+page.svelte +0 -20
  503. package/src/routes/about/+page.svelte +0 -102
  504. package/src/routes/confirm/+page.svelte +0 -62
  505. package/src/routes/email/+page.svelte +0 -99
  506. package/src/routes/login/+page.svelte +0 -66
  507. package/src/routes/read/+page.svelte +0 -38
  508. package/src/routes/write/+error.svelte +0 -10
  509. package/src/routes/write/+layout.svelte +0 -11
  510. package/src/routes/write/+page.svelte +0 -114
  511. package/src/routes/write/[bookid]/+layout.svelte +0 -5
  512. package/src/routes/write/[bookid]/[[editionid=edition]]/+layout.svelte +0 -7
  513. package/src/routes/write/[bookid]/[[editionid=edition]]/+page.svelte +0 -5
  514. package/src/routes/write/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +0 -5
  515. package/src/routes/write/[bookid]/[[editionid=edition]]/glossary/+page.svelte +0 -5
  516. package/src/routes/write/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +0 -5
  517. package/src/routes/write/[bookid]/[[editionid=edition]]/media/+page.svelte +0 -5
  518. package/src/routes/write/[bookid]/[[editionid=edition]]/print/+page.svelte +0 -5
  519. package/src/routes/write/[bookid]/[[editionid=edition]]/references/+page.svelte +0 -5
  520. package/src/routes/write/[bookid]/[[editionid=edition]]/search/+page.svelte +0 -5
  521. package/src/routes/write/[bookid]/[[editionid=edition]]/theme/+page.svelte +0 -5
  522. package/src/routes/write/[bookid]/[[editionid=edition]]/unknown/+page.svelte +0 -5
  523. package/src/routes/write/[bookid]/editions/+page.svelte +0 -20
  524. package/src/vite-env.d.ts +0 -1
  525. package/static/icons/favicon.png +0 -0
  526. package/static/icons/icon.png +0 -0
  527. package/static/icons/ios-icon.png +0 -0
  528. package/storage.rules +0 -9
  529. package/svelte.config.js +0 -19
  530. package/tsconfig.json +0 -18
  531. package/tsconfig.node.json +0 -9
  532. package/vite.config.ts +0 -8
  533. package/vite.reader.config.ts +0 -32
@@ -1,41 +1,28 @@
1
- import type Node from './Node';
2
1
  import FormatNode from './FormatNode';
3
- import type { Format } from './FormatNode';
4
- import type Caret from './Caret';
5
- import { caretToIndex, indexToCaret, type CaretRange } from './Caret';
2
+ import { caretToIndex, indexToCaret } from './Caret';
6
3
  import BlockNode from './BlockNode';
7
- import type Edit from './Edit';
8
-
9
- export type ListNodeType = FormatNode | ListNode;
10
-
11
4
  export default class ListNode extends BlockNode {
12
- readonly #numbered: boolean;
13
- readonly #items: ListNodeType[];
14
-
15
- constructor(items: Array<FormatNode | ListNode>, numbered: boolean) {
5
+ #numbered;
6
+ #items;
7
+ constructor(items, numbered) {
16
8
  super();
17
9
  this.#numbered = numbered;
18
-
19
10
  let adjustedItems = items
20
11
  // Make sure all format nodes have an empty text.
21
12
  .map((i) => (i instanceof FormatNode ? i.withTextIfEmpty() : i))
22
13
  // Strip all empty sublists.
23
14
  .filter((i) => !i.isEmpty());
24
-
25
15
  this.#items = adjustedItems;
26
16
  }
27
-
28
17
  getType() {
29
18
  return 'list';
30
19
  }
31
20
  isNumbered() {
32
21
  return this.#numbered;
33
22
  }
34
- isEmpty(): boolean {
35
- return (
36
- this.#items.length === 0 ||
37
- this.#items.every((i) => i instanceof ListNode && i.isEmpty())
38
- );
23
+ isEmpty() {
24
+ return (this.#items.length === 0 ||
25
+ this.#items.every((i) => i instanceof ListNode && i.isEmpty()));
39
26
  }
40
27
  getItems() {
41
28
  return this.#items;
@@ -44,278 +31,240 @@ export default class ListNode extends BlockNode {
44
31
  return this.#items;
45
32
  }
46
33
  getListItems() {
47
- return this.#items.filter((i) => i instanceof ListNode) as ListNode[];
34
+ return this.#items.filter((i) => i instanceof ListNode);
48
35
  }
49
36
  getLength() {
50
37
  return this.#items.length;
51
38
  }
52
- getLastItem(): FormatNode | undefined {
39
+ getLastItem() {
53
40
  return this.getFirstLastItem(false);
54
41
  }
55
- getFirstItem(): FormatNode | undefined {
42
+ getFirstItem() {
56
43
  return this.getFirstLastItem(true);
57
44
  }
58
- getFormats(): FormatNode[] {
59
- return this.#items.reduce(
60
- (previous: FormatNode[], current: ListNodeType) =>
61
- previous.concat(
62
- current instanceof FormatNode
63
- ? [current]
64
- : current.getFormats()
65
- ),
66
- []
67
- ) as FormatNode[];
68
- }
69
- getFirstLastItem(first: boolean): FormatNode | undefined {
70
- if (this.#items.length === 0) return undefined;
71
-
45
+ getFormats() {
46
+ return this.#items.reduce((previous, current) => previous.concat(current instanceof FormatNode
47
+ ? [current]
48
+ : current.getFormats()), []);
49
+ }
50
+ getFirstLastItem(first) {
51
+ if (this.#items.length === 0)
52
+ return undefined;
72
53
  // If it's a format, return it.
73
54
  const last = this.#items[first ? 0 : this.getLength() - 1];
74
- if (last instanceof FormatNode) return last;
75
-
55
+ if (last instanceof FormatNode)
56
+ return last;
76
57
  // Otherwise, recurse into the last item's list.
77
58
  return last.getFirstLastItem(first);
78
59
  }
79
-
80
- getLevel(root: Node): number {
60
+ getLevel(root) {
81
61
  const parent = root.getParentOf(this);
82
- if (parent instanceof ListNode) return parent.getLevel(root) + 1;
83
- else return 1;
62
+ if (parent instanceof ListNode)
63
+ return parent.getLevel(root) + 1;
64
+ else
65
+ return 1;
84
66
  }
85
-
86
- toText(): string {
67
+ toText() {
87
68
  return this.#items.map((item) => item.toText()).join(' ');
88
69
  }
89
-
90
- toBookdown(level: number = 1): string {
70
+ toBookdown(level = 1) {
91
71
  return this.isNumbered()
92
72
  ? this.#items
93
- .map(
94
- (item, number) =>
95
- (item instanceof ListNode
96
- ? ''
97
- : number + 1 + '.'.repeat(level) + ' ') +
98
- item.toBookdown(level + 1)
99
- )
100
- .join('\n')
73
+ .map((item, number) => (item instanceof ListNode
74
+ ? ''
75
+ : number + 1 + '.'.repeat(level) + ' ') +
76
+ item.toBookdown(level + 1))
77
+ .join('\n')
101
78
  : this.#items
102
- .map(
103
- (item) =>
104
- (item instanceof ListNode
105
- ? ''
106
- : '*'.repeat(level) + ' ') +
107
- item.toBookdown(level + 1)
108
- )
109
- .join('\n');
110
- }
111
-
112
- toHTML(): string {
79
+ .map((item) => (item instanceof ListNode
80
+ ? ''
81
+ : '*'.repeat(level) + ' ') +
82
+ item.toBookdown(level + 1))
83
+ .join('\n');
84
+ }
85
+ toHTML() {
113
86
  return this.isNumbered()
114
87
  ? `<ol>${this.#items
115
- .map((i) => `<li>${i.toHTML()}</li>`)
116
- .join('')}</ol>`
88
+ .map((i) => `<li>${i.toHTML()}</li>`)
89
+ .join('')}</ol>`
117
90
  : `<ul>${this.#items
118
- .map((i) => `<li>${i.toHTML()}</li>`)
119
- .join('')}</ul>`;
91
+ .map((i) => `<li>${i.toHTML()}</li>`)
92
+ .join('')}</ul>`;
120
93
  }
121
-
122
- getParentOf(node: Node): Node | undefined {
94
+ getParentOf(node) {
123
95
  return this.#items
124
96
  .map((b) => (b === node ? this : b.getParentOf(node)))
125
97
  .find((b) => b !== undefined);
126
98
  }
127
-
128
- atBeginningOfItem(root: Node, caret: Caret) {
129
- const format = caret.node.getFarthestParentMatching(
130
- root,
131
- (n) => n instanceof FormatNode
132
- ) as FormatNode;
133
-
134
- return (
135
- format !== undefined &&
99
+ atBeginningOfItem(root, caret) {
100
+ const format = caret.node.getFarthestParentMatching(root, (n) => n instanceof FormatNode);
101
+ return (format !== undefined &&
136
102
  caret.node.hasAncestor(root, this) &&
137
103
  caret.index === 0 &&
138
- format.getTextNodes()[0] === caret.node
139
- );
140
- }
141
-
142
- getItemContaining(caret: Caret): number | undefined {
143
- const match = this.#items.find(
144
- (n) => n.getParentOf(caret.node) !== undefined
145
- );
146
- if (match === undefined) return undefined;
104
+ format.getTextNodes()[0] === caret.node);
105
+ }
106
+ getItemContaining(caret) {
107
+ const match = this.#items.find((n) => n.getParentOf(caret.node) !== undefined);
108
+ if (match === undefined)
109
+ return undefined;
147
110
  const index = this.#items.indexOf(match);
148
- if (index === undefined) return undefined;
111
+ if (index === undefined)
112
+ return undefined;
149
113
  return index;
150
114
  }
151
-
152
- getItem(index: number): ListNodeType | undefined {
153
- if (index < 0 || index >= this.#items.length) return;
115
+ getItem(index) {
116
+ if (index < 0 || index >= this.#items.length)
117
+ return;
154
118
  return this.#items[index];
155
119
  }
156
-
157
- getFirstCaret(): Caret | undefined {
120
+ getFirstCaret() {
158
121
  return this.#items.length === 0
159
122
  ? undefined
160
123
  : this.#items[0].getFirstCaret();
161
124
  }
162
-
163
- copy(): this {
164
- return new ListNode(
165
- this.#items.map((i) => i.copy()),
166
- this.#numbered
167
- ) as this;
125
+ copy() {
126
+ return new ListNode(this.#items.map((i) => i.copy()), this.#numbered);
168
127
  }
169
-
170
- withStyle(numbered: boolean) {
128
+ withStyle(numbered) {
171
129
  return new ListNode(this.#items, numbered);
172
130
  }
173
-
174
- withItemAppended(item: ListNodeType): ListNode {
131
+ withItemAppended(item) {
175
132
  return new ListNode([...this.#items, item], this.#numbered);
176
133
  }
177
-
178
- withItemPrepended(item: ListNodeType): ListNode {
134
+ withItemPrepended(item) {
179
135
  return new ListNode([item, ...this.#items], this.#numbered);
180
136
  }
181
-
182
- withItemAt(item: ListNodeType, index: number): ListNode | undefined {
183
- if (index < 0 || index > this.#items.length) return;
137
+ withItemAt(item, index) {
138
+ if (index < 0 || index > this.#items.length)
139
+ return;
184
140
  const newItems = this.#items.slice();
185
141
  newItems.splice(index, 0, item);
186
142
  return new ListNode(newItems, this.#numbered);
187
143
  }
188
-
189
- withItemAfter(
190
- item: ListNodeType,
191
- anchor: ListNodeType
192
- ): ListNode | undefined {
144
+ withItemAfter(item, anchor) {
193
145
  const index = this.#items.indexOf(anchor);
194
- if (index < 0) return;
146
+ if (index < 0)
147
+ return;
195
148
  return this.withItemAt(item, index + 1);
196
149
  }
197
-
198
- withItemBefore(item: ListNodeType, anchor: ListNodeType) {
150
+ withItemBefore(item, anchor) {
199
151
  const index = this.#items.indexOf(anchor);
200
- if (index < 0) return;
152
+ if (index < 0)
153
+ return;
201
154
  return this.withItemAt(item, index);
202
155
  }
203
-
204
- withItemReplaced(index: number, item: ListNodeType): ListNode | undefined {
205
- if (index < 0 || index >= this.#items.length) return;
156
+ withItemReplaced(index, item) {
157
+ if (index < 0 || index >= this.#items.length)
158
+ return;
206
159
  const newItems = this.#items.slice();
207
160
  newItems[index] = item;
208
161
  return new ListNode(newItems, this.#numbered);
209
162
  }
210
-
211
- withoutItemAt(index: number): ListNode | undefined {
212
- if (index < 0 || index >= this.#items.length) return;
163
+ withoutItemAt(index) {
164
+ if (index < 0 || index >= this.#items.length)
165
+ return;
213
166
  const newItems = this.#items.slice();
214
167
  newItems.splice(index, 1);
215
168
  return new ListNode(newItems, this.#numbered);
216
169
  }
217
-
218
- withoutItem(item: FormatNode): ListNode | undefined {
170
+ withoutItem(item) {
219
171
  const index = this.#items.indexOf(item);
220
- if (index < 0) return;
172
+ if (index < 0)
173
+ return;
221
174
  return this.withoutItemAt(index);
222
175
  }
223
-
224
- withListAppended(list: ListNode): ListNode {
176
+ withListAppended(list) {
225
177
  return new ListNode([...this.#items, ...list.#items], this.#numbered);
226
178
  }
227
-
228
- withItemMergedBackwards(index: number): [ListNode, Caret] | undefined {
229
- if (index <= 0 || index >= this.#items.length) return;
230
-
179
+ withItemMergedBackwards(index) {
180
+ if (index <= 0 || index >= this.#items.length)
181
+ return;
231
182
  const deletedItem = this.#items[index];
232
183
  let previousItem = this.#items[index - 1];
233
-
234
184
  // If we're merging a sublist back into this list, move its
235
185
  // remaining format into the previous item.
236
186
  if (deletedItem instanceof ListNode) {
237
- if (previousItem instanceof ListNode) return;
187
+ if (previousItem instanceof ListNode)
188
+ return;
238
189
  const itemToMerge = deletedItem.getFirstItem();
239
- if (itemToMerge === undefined) return;
240
- const newSubList = deletedItem.withChildReplaced(
241
- itemToMerge,
242
- undefined
243
- );
244
- if (newSubList === undefined) return;
245
- const listWithRevisedSublist = this.withChildReplaced(
246
- deletedItem,
247
- newSubList
248
- );
249
- if (listWithRevisedSublist === undefined) return;
190
+ if (itemToMerge === undefined)
191
+ return;
192
+ const newSubList = deletedItem.withChildReplaced(itemToMerge, undefined);
193
+ if (newSubList === undefined)
194
+ return;
195
+ const listWithRevisedSublist = this.withChildReplaced(deletedItem, newSubList);
196
+ if (listWithRevisedSublist === undefined)
197
+ return;
250
198
  const lastCaret = previousItem.getLastCaret();
251
- if (lastCaret === undefined) return;
199
+ if (lastCaret === undefined)
200
+ return;
252
201
  const textIndex = caretToIndex(previousItem, lastCaret);
253
- if (textIndex === undefined) return;
202
+ if (textIndex === undefined)
203
+ return;
254
204
  const mergedItem = previousItem.withSegmentsAppended(itemToMerge);
255
- const listWithMergedItem = listWithRevisedSublist.withChildReplaced(
256
- previousItem,
257
- mergedItem
258
- );
259
- if (listWithMergedItem === undefined) return;
205
+ const listWithMergedItem = listWithRevisedSublist.withChildReplaced(previousItem, mergedItem);
206
+ if (listWithMergedItem === undefined)
207
+ return;
260
208
  const newCaret = indexToCaret(mergedItem, textIndex);
261
- if (newCaret === undefined) return;
209
+ if (newCaret === undefined)
210
+ return;
262
211
  return [listWithMergedItem, newCaret];
263
212
  }
264
213
  // If the previous item is a list, find it's last item.
265
214
  else if (previousItem instanceof ListNode) {
266
215
  const lastItem = previousItem.getLastItem();
267
- if (lastItem === undefined) return;
216
+ if (lastItem === undefined)
217
+ return;
268
218
  const lastCaret = lastItem.getLastCaret();
269
- if (lastCaret === undefined) return;
219
+ if (lastCaret === undefined)
220
+ return;
270
221
  const newCaretIndex = caretToIndex(lastItem, lastCaret);
271
- if (newCaretIndex === undefined) return;
222
+ if (newCaretIndex === undefined)
223
+ return;
272
224
  const mergedItem = lastItem.withSegmentsAppended(deletedItem);
273
- const newSublist = previousItem.withChildReplaced(
274
- lastItem,
275
- mergedItem
276
- );
277
- if (newSublist === undefined) return;
278
- const newList = this.withChildReplaced(
279
- previousItem,
280
- newSublist
281
- )?.withoutItemAt(index);
282
- if (newList === undefined) return;
225
+ const newSublist = previousItem.withChildReplaced(lastItem, mergedItem);
226
+ if (newSublist === undefined)
227
+ return;
228
+ const newList = this.withChildReplaced(previousItem, newSublist)?.withoutItemAt(index);
229
+ if (newList === undefined)
230
+ return;
283
231
  const newCaret = indexToCaret(mergedItem, newCaretIndex);
284
- if (newCaret === undefined) return;
232
+ if (newCaret === undefined)
233
+ return;
285
234
  return [newList, newCaret];
286
- } else {
235
+ }
236
+ else {
287
237
  const lastCaret = previousItem.getLastCaret();
288
- if (lastCaret === undefined) return;
238
+ if (lastCaret === undefined)
239
+ return;
289
240
  const newCaretIndex = caretToIndex(previousItem, lastCaret);
290
- if (newCaretIndex === undefined) return;
241
+ if (newCaretIndex === undefined)
242
+ return;
291
243
  const mergedItem = previousItem.withSegmentsAppended(deletedItem);
292
- const newList = this.withItemReplaced(
293
- index - 1,
294
- mergedItem
295
- )?.withoutItemAt(index);
296
- if (newList === undefined) return;
244
+ const newList = this.withItemReplaced(index - 1, mergedItem)?.withoutItemAt(index);
245
+ if (newList === undefined)
246
+ return;
297
247
  const newCaret = indexToCaret(mergedItem, newCaretIndex);
298
- if (newCaret === undefined) return;
248
+ if (newCaret === undefined)
249
+ return;
299
250
  return [newList, newCaret];
300
251
  }
301
252
  }
302
-
303
- withItemSplit(caret: Caret): ListNode | undefined {
253
+ withItemSplit(caret) {
304
254
  // Which item contains the caret?
305
- const item = this.#items.find(
306
- (i) => i instanceof FormatNode && i.contains(caret.node)
307
- ) as FormatNode | undefined;
308
- if (item === undefined) return;
255
+ const item = this.#items.find((i) => i instanceof FormatNode && i.contains(caret.node));
256
+ if (item === undefined)
257
+ return;
309
258
  const parts = item.split(caret);
310
- if (parts === undefined) return;
259
+ if (parts === undefined)
260
+ return;
311
261
  const [first, second] = parts;
312
262
  return this.withItemAfter(second, item)
313
263
  ?.withItemAfter(first, item)
314
264
  ?.withoutItem(item);
315
265
  }
316
-
317
266
  // Recursively search for the given item and indent it, constructing a new list.
318
- withItemIndented(format: FormatNode): ListNode | undefined {
267
+ withItemIndented(format) {
319
268
  // Check each item in the list to see if it matches...
320
269
  for (let index = 0; index < this.#items.length; index++) {
321
270
  const item = this.#items[index];
@@ -325,22 +274,13 @@ export default class ListNode extends BlockNode {
325
274
  const afterList = this.#items[index + 1];
326
275
  // If the format is just after a list, move the format to the end of the list.
327
276
  if (beforeList instanceof ListNode)
328
- return this.withItemReplaced(
329
- index - 1,
330
- beforeList.withItemAppended(format)
331
- )?.withoutItemAt(index);
277
+ return this.withItemReplaced(index - 1, beforeList.withItemAppended(format))?.withoutItemAt(index);
332
278
  // If the format is just before a list, move the format to the beginning of the list.
333
279
  else if (afterList instanceof ListNode)
334
- return this.withItemReplaced(
335
- index + 1,
336
- afterList.withItemPrepended(format)
337
- )?.withoutItemAt(index);
280
+ return this.withItemReplaced(index + 1, afterList.withItemPrepended(format))?.withoutItemAt(index);
338
281
  // Otherwise, make a new sub list node, add the format to it.
339
282
  else
340
- return this.withItemReplaced(
341
- index,
342
- new ListNode([format], this.#numbered)
343
- );
283
+ return this.withItemReplaced(index, new ListNode([format], this.#numbered));
344
284
  }
345
285
  // If this is a sublist, see if it contains the item, and if so,
346
286
  // replace this list with list that has the item indented.
@@ -352,9 +292,8 @@ export default class ListNode extends BlockNode {
352
292
  }
353
293
  // Otherwise, return nothing.
354
294
  }
355
-
356
295
  // Recursively search for the item and unindent it, constructing a new list.
357
- withItemUnindented(format: FormatNode): ListNode | undefined {
296
+ withItemUnindented(format) {
358
297
  // Check each sublist in the list to see if any has the item so we can unindent it into this.
359
298
  for (let index = 0; index < this.#items.length; index++) {
360
299
  const list = this.#items[index];
@@ -362,18 +301,14 @@ export default class ListNode extends BlockNode {
362
301
  const match = list.#items.indexOf(format);
363
302
  // If we found it in this sublist, extract it here!
364
303
  if (match >= 0) {
365
- const before = new ListNode(
366
- list.#items.slice(0, match),
367
- this.#numbered
368
- );
369
- const after = new ListNode(
370
- list.#items.slice(match + 1),
371
- this.#numbered
372
- );
373
- let newItems: ListNodeType[] = this.#items.slice(0, index);
374
- if (before.getLength() > 0) newItems.push(before);
304
+ const before = new ListNode(list.#items.slice(0, match), this.#numbered);
305
+ const after = new ListNode(list.#items.slice(match + 1), this.#numbered);
306
+ let newItems = this.#items.slice(0, index);
307
+ if (before.getLength() > 0)
308
+ newItems.push(before);
375
309
  newItems.push(format);
376
- if (after.getLength() > 0) newItems.push(after);
310
+ if (after.getLength() > 0)
311
+ newItems.push(after);
377
312
  newItems = newItems.concat(this.#items.slice(index + 1));
378
313
  return new ListNode(newItems, this.#numbered);
379
314
  }
@@ -387,66 +322,60 @@ export default class ListNode extends BlockNode {
387
322
  }
388
323
  // Otherwise, return nothing, indicating no match.
389
324
  }
390
-
391
- withChildReplaced(
392
- node: ListNodeType,
393
- replacement: ListNodeType | undefined
394
- ): this | undefined {
325
+ withChildReplaced(node, replacement) {
395
326
  const index = this.#items.indexOf(node);
396
- if (index < 0) return;
397
- return new ListNode(
398
- replacement === undefined
399
- ? [
400
- ...this.#items.slice(0, index),
401
- ...this.#items.slice(index + 1),
402
- ]
403
- : [
404
- ...this.#items.slice(0, index),
405
- replacement,
406
- ...this.#items.slice(index + 1),
407
- ],
408
- this.#numbered
409
- ) as this;
410
- }
411
-
412
- withContentInRange(range: CaretRange): this | undefined {
327
+ if (index < 0)
328
+ return;
329
+ return new ListNode(replacement === undefined
330
+ ? [
331
+ ...this.#items.slice(0, index),
332
+ ...this.#items.slice(index + 1),
333
+ ]
334
+ : [
335
+ ...this.#items.slice(0, index),
336
+ replacement,
337
+ ...this.#items.slice(index + 1),
338
+ ], this.#numbered);
339
+ }
340
+ withContentInRange(range) {
413
341
  const containsStart = this.contains(range.start.node);
414
342
  const containsEnd = this.contains(range.end.node);
415
- if (!containsStart && !containsEnd) return this.copy();
416
-
343
+ if (!containsStart && !containsEnd)
344
+ return this.copy();
417
345
  const newItems = [];
418
346
  let foundStart = false;
419
347
  let foundEnd = false;
420
348
  for (let i = 0; i < this.#items.length; i++) {
421
- if (this.#items[i].contains(range.start.node)) foundStart = true;
422
- if (
423
- ((containsStart && foundStart) || !containsStart) &&
424
- ((containsEnd && !foundEnd) || !containsEnd)
425
- ) {
349
+ if (this.#items[i].contains(range.start.node))
350
+ foundStart = true;
351
+ if (((containsStart && foundStart) || !containsStart) &&
352
+ ((containsEnd && !foundEnd) || !containsEnd)) {
426
353
  const newItem = this.#items[i].withContentInRange(range);
427
- if (newItem === undefined) return;
354
+ if (newItem === undefined)
355
+ return;
428
356
  newItems.push(newItem);
429
357
  }
430
- if (this.#items[i].contains(range.end.node)) foundEnd = true;
358
+ if (this.#items[i].contains(range.end.node))
359
+ foundEnd = true;
431
360
  }
432
- return new ListNode(newItems, this.#numbered) as this;
361
+ return new ListNode(newItems, this.#numbered);
433
362
  }
434
-
435
- withNodeInserted(caret: Caret, node: Node): Edit {
436
- if (!this.contains(caret.node)) return;
437
- if (!(node instanceof ListNode)) return;
438
-
363
+ withNodeInserted(caret, node) {
364
+ if (!this.contains(caret.node))
365
+ return;
366
+ if (!(node instanceof ListNode))
367
+ return;
439
368
  // Find the anchor item.
440
369
  const anchor = this.#items.find((i) => i.contains(caret.node));
441
- if (anchor === undefined) return;
442
-
370
+ if (anchor === undefined)
371
+ return;
443
372
  const items = node.getItems();
444
-
445
373
  let lastItem = anchor;
446
- let newList: ListNode | undefined = this;
374
+ let newList = this;
447
375
  while (items.length > 0) {
448
376
  let item = items.shift();
449
- if (item === undefined) return;
377
+ if (item === undefined)
378
+ return;
450
379
  // Insert all of the node's items into this list, merging the first.
451
380
  if (lastItem === anchor) {
452
381
  const edit = anchor.withNodeInserted(caret, item);
@@ -454,55 +383,49 @@ export default class ListNode extends BlockNode {
454
383
  return;
455
384
  item = edit.root;
456
385
  newList = newList.withChildReplaced(anchor, item);
457
- } else {
386
+ }
387
+ else {
458
388
  newList = newList.withItemAfter(item, lastItem);
459
389
  }
460
- if (newList === undefined) return;
390
+ if (newList === undefined)
391
+ return;
461
392
  // Remember where we inserted.
462
393
  lastItem = item;
463
394
  }
464
-
465
395
  // The caret should be the last item inserted.
466
- const newCaret =
467
- lastItem instanceof FormatNode
468
- ? lastItem.getLastCaret()
469
- : lastItem.getLastItem()?.getLastCaret();
470
- if (newCaret === undefined) return;
471
-
396
+ const newCaret = lastItem instanceof FormatNode
397
+ ? lastItem.getLastCaret()
398
+ : lastItem.getLastItem()?.getLastCaret();
399
+ if (newCaret === undefined)
400
+ return;
472
401
  return { root: newList, range: { start: newCaret, end: newCaret } };
473
402
  }
474
-
475
- withRangeFormatted(range: CaretRange, format: Format | undefined): Edit {
403
+ withRangeFormatted(range, format) {
476
404
  const sortedRange = this.sortRange(range);
477
405
  const itemStart = this.getItemContaining(sortedRange.start);
478
406
  const itemEnd = this.getItemContaining(sortedRange.end);
479
-
480
407
  // This edits all of the formats contained in the range in the list, since the BlockNode class doesn't care about
481
408
  // what formats are stored in.
482
409
  const edit = super.withRangeFormatted(sortedRange, format);
483
-
484
410
  // If we were deleting and two list items were involved, merge them.
485
- if (
486
- edit &&
411
+ if (edit &&
487
412
  format === undefined &&
488
413
  itemStart !== undefined &&
489
414
  itemEnd !== undefined &&
490
- itemStart !== itemEnd
491
- ) {
492
- const newList = edit.root as ListNode;
493
- const itemIndex =
494
- itemEnd - (this.#items.length - newList.#items.length);
415
+ itemStart !== itemEnd) {
416
+ const newList = edit.root;
417
+ const itemIndex = itemEnd - (this.#items.length - newList.#items.length);
495
418
  if (itemIndex > 0 && newList.getLength() > 1) {
496
419
  // Merge the items, accounting for the new index of the last item.
497
420
  const mergedEdit = newList.withItemMergedBackwards(itemIndex);
498
- if (mergedEdit === undefined) return;
421
+ if (mergedEdit === undefined)
422
+ return;
499
423
  return {
500
424
  root: mergedEdit[0],
501
425
  range: { start: mergedEdit[1], end: mergedEdit[1] },
502
426
  };
503
427
  }
504
428
  }
505
-
506
429
  return edit;
507
430
  }
508
431
  }