bookish-press 0.4.47 → 0.4.49

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 +60 -64
  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 +19 -13
  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 +393 -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 +38 -53
  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 +47 -50
  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} +6 -110
  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
@@ -0,0 +1 @@
1
+ export {};
@@ -1,9 +1,7 @@
1
1
  import { test, expect } from 'vitest';
2
-
3
2
  import FormatNode from './FormatNode';
4
3
  import ListNode from './ListNode';
5
4
  import TextNode from './TextNode';
6
-
7
5
  const oneText = new TextNode('one');
8
6
  const oneFormat = new FormatNode('', [oneText]);
9
7
  const twoText = new TextNode('two');
@@ -15,77 +13,42 @@ const fourFormat = new FormatNode('', [fourText]);
15
13
  const fiveText = new TextNode('five');
16
14
  const fiveFormat = new FormatNode('', [fiveText]);
17
15
  const shortList = new ListNode([oneFormat, twoFormat, threeFormat], false);
18
- const list = new ListNode(
19
- [
20
- oneFormat,
21
- new ListNode([twoFormat, threeFormat, fourFormat], false),
22
- fiveFormat,
23
- ],
24
- false
25
- );
26
-
16
+ const list = new ListNode([
17
+ oneFormat,
18
+ new ListNode([twoFormat, threeFormat, fourFormat], false),
19
+ fiveFormat,
20
+ ], false);
27
21
  test('Insert items', () => {
28
- expect(shortList.withItemAppended(fourFormat)?.toBookdown()).toBe(
29
- `* one\n* two\n* three\n* four`
30
- );
31
- expect(shortList.withItemPrepended(fourFormat)?.toBookdown()).toBe(
32
- `* four\n* one\n* two\n* three`
33
- );
22
+ expect(shortList.withItemAppended(fourFormat)?.toBookdown()).toBe(`* one\n* two\n* three\n* four`);
23
+ expect(shortList.withItemPrepended(fourFormat)?.toBookdown()).toBe(`* four\n* one\n* two\n* three`);
34
24
  expect(shortList.withItemAt(fourFormat, 9)).toBeUndefined();
35
- expect(shortList.withItemAt(fourFormat, 1)?.toBookdown()).toBe(
36
- `* one\n* four\n* two\n* three`
37
- );
38
- expect(shortList.withItemAfter(fourFormat, oneFormat)?.toBookdown()).toBe(
39
- `* one\n* four\n* two\n* three`
40
- );
41
- expect(shortList.withItemBefore(fourFormat, twoFormat)?.toBookdown()).toBe(
42
- `* one\n* four\n* two\n* three`
43
- );
44
- expect(
45
- shortList
46
- .withListAppended(new ListNode([fourFormat, fiveFormat], true))
47
- ?.toBookdown()
48
- ).toBe(`* one\n* two\n* three\n* four\n* five`);
25
+ expect(shortList.withItemAt(fourFormat, 1)?.toBookdown()).toBe(`* one\n* four\n* two\n* three`);
26
+ expect(shortList.withItemAfter(fourFormat, oneFormat)?.toBookdown()).toBe(`* one\n* four\n* two\n* three`);
27
+ expect(shortList.withItemBefore(fourFormat, twoFormat)?.toBookdown()).toBe(`* one\n* four\n* two\n* three`);
28
+ expect(shortList
29
+ .withListAppended(new ListNode([fourFormat, fiveFormat], true))
30
+ ?.toBookdown()).toBe(`* one\n* two\n* three\n* four\n* five`);
49
31
  });
50
-
51
32
  test('Remove items', () => {
52
- expect(shortList.withItemReplaced(1, fourFormat)?.toBookdown()).toBe(
53
- `* one\n* four\n* three`
54
- );
33
+ expect(shortList.withItemReplaced(1, fourFormat)?.toBookdown()).toBe(`* one\n* four\n* three`);
55
34
  expect(shortList.withoutItemAt(0)?.toBookdown()).toBe(`* two\n* three`);
56
35
  });
57
-
58
36
  test('Split', () => {
59
- expect(
60
- shortList.withItemSplit({ node: threeText, index: 2 })?.toBookdown()
61
- ).toBe('* one\n* two\n* th\n* ree');
37
+ expect(shortList.withItemSplit({ node: threeText, index: 2 })?.toBookdown()).toBe('* one\n* two\n* th\n* ree');
62
38
  });
63
-
64
39
  test('Merge', () => {
65
40
  const merged = shortList.withItemMergedBackwards(1);
66
41
  expect(merged).not.toBeUndefined();
67
42
  if (merged !== undefined)
68
43
  expect(merged[0].toBookdown()).toBe('* onetwo\n* three');
69
44
  });
70
-
71
45
  test('Indent', () => {
72
- expect(list.withItemIndented(oneFormat)?.toBookdown()).toBe(
73
- `** one\n** two\n** three\n** four\n* five`
74
- );
75
- expect(list.withItemIndented(twoFormat)?.toBookdown()).toBe(
76
- `* one\n*** two\n** three\n** four\n* five`
77
- );
78
- expect(list.withItemIndented(fiveFormat)?.toBookdown()).toBe(
79
- `* one\n** two\n** three\n** four\n** five`
80
- );
46
+ expect(list.withItemIndented(oneFormat)?.toBookdown()).toBe(`** one\n** two\n** three\n** four\n* five`);
47
+ expect(list.withItemIndented(twoFormat)?.toBookdown()).toBe(`* one\n*** two\n** three\n** four\n* five`);
48
+ expect(list.withItemIndented(fiveFormat)?.toBookdown()).toBe(`* one\n** two\n** three\n** four\n** five`);
81
49
  });
82
-
83
50
  test('Unindent', () => {
84
- expect(list.withItemUnindented(twoFormat)?.toBookdown()).toBe(
85
- `* one\n* two\n** three\n** four\n* five`
86
- );
51
+ expect(list.withItemUnindented(twoFormat)?.toBookdown()).toBe(`* one\n* two\n** three\n** four\n* five`);
87
52
  expect(list.withItemUnindented(oneFormat)?.toBookdown()).toBeUndefined();
88
- expect(list.withItemUnindented(threeFormat)?.toBookdown()).toBe(
89
- `* one\n** two\n* three\n** four\n* five`
90
- );
53
+ expect(list.withItemUnindented(threeFormat)?.toBookdown()).toBe(`* one\n** two\n* three\n** four\n* five`);
91
54
  });
@@ -0,0 +1,17 @@
1
+ import type { CaretRange } from './Caret';
2
+ import Node from './Node';
3
+ import type TextNode from './TextNode';
4
+ export default abstract class MetadataNode<MetaType> extends Node {
5
+ #private;
6
+ constructor(text: TextNode, meta: MetaType);
7
+ getMeta(): MetaType;
8
+ getText(): TextNode;
9
+ abstract withMeta(meta: MetaType): MetadataNode<MetaType>;
10
+ abstract withText(text: TextNode): MetadataNode<MetaType>;
11
+ abstract toText(): string;
12
+ abstract toBookdown(): string;
13
+ getChildren(): TextNode[];
14
+ getParentOf(node: Node): Node | undefined;
15
+ withChildReplaced(node: TextNode, replacement: TextNode | undefined): this | undefined;
16
+ withContentInRange(range: CaretRange): this | undefined;
17
+ }
@@ -0,0 +1,32 @@
1
+ import Node from './Node';
2
+ export default class MetadataNode extends Node {
3
+ #text;
4
+ #meta;
5
+ constructor(text, meta) {
6
+ super();
7
+ this.#text = text;
8
+ this.#meta = meta;
9
+ }
10
+ getMeta() {
11
+ return this.#meta;
12
+ }
13
+ getText() {
14
+ return this.#text;
15
+ }
16
+ getChildren() {
17
+ return [this.#text];
18
+ }
19
+ getParentOf(node) {
20
+ return this.#text === node ? this : undefined;
21
+ }
22
+ withChildReplaced(node, replacement) {
23
+ if (this.#text === node && replacement !== undefined)
24
+ return this.withText(replacement);
25
+ }
26
+ withContentInRange(range) {
27
+ const selectedText = this.#text.withContentInRange(range);
28
+ if (selectedText === undefined)
29
+ return undefined;
30
+ return this.withText(selectedText);
31
+ }
32
+ }
@@ -0,0 +1,38 @@
1
+ import type Caret from './Caret';
2
+ import type { CaretRange } from './Caret';
3
+ import type Edit from './Edit';
4
+ export default abstract class Node {
5
+ readonly nodeID: number;
6
+ constructor();
7
+ abstract toText(): string;
8
+ abstract toBookdown(): string;
9
+ abstract toHTML(): string;
10
+ abstract getType(): string;
11
+ abstract copy(): this;
12
+ abstract withChildReplaced(node: Node, replacement: Node | undefined): this | undefined;
13
+ abstract getChildren(): Node[];
14
+ abstract getParentOf(node: Node): Node | undefined;
15
+ getID(): number;
16
+ traverse(fn: (node: Node, parents: Node[]) => void, parents?: Node[]): void;
17
+ traverseChildren(fn: (node: Node, parents: Node[]) => void, parents: Node[]): void;
18
+ getNodes(): Node[];
19
+ getNodeBefore<Kind extends Node>(node: Node, matcher: (node: Kind) => boolean): Kind | undefined;
20
+ getNodeAfter<Kind extends Node>(node: Node, matcher: (node: Kind) => boolean): Kind | undefined;
21
+ sortRange(range: CaretRange): CaretRange;
22
+ getNode(id: number): Node | undefined;
23
+ getIndexOf(node: Node): number | undefined;
24
+ contains(node: Node): boolean;
25
+ getParentsOf(node: Node): Node[] | undefined;
26
+ getParent(root: Node): Node | undefined;
27
+ hasAncestor(root: Node, node: Node): boolean;
28
+ getClosestParentOfType<T extends Node>(root: Node, type: Function): T | undefined;
29
+ isInside(root: Node, type: Function): boolean;
30
+ getClosestParentMatching(root: Node, match: (node: Node) => boolean): Node | undefined;
31
+ getFarthestParentMatching(root: Node, match: (node: Node) => boolean): Node | undefined;
32
+ getAncestors(root: Node): Node[];
33
+ getCommonAncestor(root: Node, node: Node): Node | undefined;
34
+ withNodeReplaced(node: Node, replacement: Node | undefined): this | undefined;
35
+ abstract withContentInRange(range: CaretRange): this | undefined;
36
+ withNodeInserted(caret: Caret, node: Node): Edit;
37
+ copyRange(range: CaretRange): Node | undefined;
38
+ }
@@ -1,106 +1,56 @@
1
- import type Caret from './Caret';
2
- import type { CaretRange } from './Caret';
3
- import type Edit from './Edit';
4
-
5
1
  // A global node ID generator, for mapping views back to models.
6
2
  let nodeID = 1;
7
-
8
- export default abstract class Node {
3
+ export default class Node {
9
4
  // A globally unique identifier, helpful for mapping things back to nodes.
10
- readonly nodeID: number;
11
-
5
+ nodeID;
12
6
  constructor() {
13
7
  this.nodeID = nodeID++;
14
8
  }
15
-
16
- // Returns space-separated text in the string, helpful for searching.
17
- abstract toText(): string;
18
-
19
- // Returns a syntactically valid Bookdown string representing the node and it's children.
20
- abstract toBookdown(): string;
21
-
22
- // Returns valid HTML representing the node and it's children.
23
- abstract toHTML(): string;
24
-
25
- // Returns a string represent the type of node this is.
26
- abstract getType(): string;
27
-
28
- // Returns an exact copy of this now.
29
- abstract copy(): this;
30
-
31
- // Returns a new node with the given child node replaced, or undefined if it didn't contain such a child.
32
- abstract withChildReplaced(
33
- node: Node,
34
- replacement: Node | undefined
35
- ): this | undefined;
36
-
37
- // Returns an ordered list of the child nodes.
38
- abstract getChildren(): Node[];
39
-
40
- // Recursively returns the parent of the given node.
41
- abstract getParentOf(node: Node): Node | undefined;
42
-
43
9
  getID() {
44
10
  return this.nodeID;
45
11
  }
46
-
47
- traverse(
48
- fn: (node: Node, parents: Node[]) => void,
49
- parents?: Node[]
50
- ): void {
12
+ traverse(fn, parents) {
51
13
  const path = parents === undefined ? [this] : [...parents, this];
52
14
  this.traverseChildren(fn, path);
53
15
  fn.call(undefined, this, path);
54
16
  }
55
-
56
17
  // Traverses each of the children of this node.
57
- traverseChildren(
58
- fn: (node: Node, parents: Node[]) => void,
59
- parents: Node[]
60
- ): void {
18
+ traverseChildren(fn, parents) {
61
19
  const children = this.getChildren();
62
20
  children.forEach((child) => child.traverse(fn, parents));
63
21
  }
64
-
65
22
  // Depth first sequence of all nodes in this tree.
66
- getNodes(): Node[] {
67
- const nodes: Node[] = [];
23
+ getNodes() {
24
+ const nodes = [];
68
25
  this.traverse((node) => nodes.push(node));
69
26
  return nodes;
70
27
  }
71
-
72
- getNodeBefore<Kind extends Node>(
73
- node: Node,
74
- matcher: (node: Kind) => boolean
75
- ): Kind | undefined {
28
+ getNodeBefore(node, matcher) {
76
29
  const nodes = this.getNodes();
77
- let previous: Kind | undefined = undefined;
30
+ let previous = undefined;
78
31
  for (const currentNode of nodes) {
79
- if (currentNode === node) return previous;
80
- if (matcher(currentNode as Kind)) previous = currentNode as Kind;
32
+ if (currentNode === node)
33
+ return previous;
34
+ if (matcher(currentNode))
35
+ previous = currentNode;
81
36
  }
82
37
  return undefined;
83
38
  }
84
-
85
- getNodeAfter<Kind extends Node>(
86
- node: Node,
87
- matcher: (node: Kind) => boolean
88
- ): Kind | undefined {
39
+ getNodeAfter(node, matcher) {
89
40
  const nodes = this.getNodes();
90
- let found: boolean = false;
41
+ let found = false;
91
42
  for (const currentNode of nodes) {
92
- if (found && matcher(currentNode as Kind))
93
- return currentNode as Kind;
94
- if (currentNode === node) found = true;
43
+ if (found && matcher(currentNode))
44
+ return currentNode;
45
+ if (currentNode === node)
46
+ found = true;
95
47
  }
96
48
  return undefined;
97
49
  }
98
-
99
50
  // Swap them order if this is two text nodes that are reversed.
100
- sortRange(range: CaretRange): CaretRange {
51
+ sortRange(range) {
101
52
  const start = range.start.node;
102
53
  const end = range.end.node;
103
-
104
54
  if (start === end)
105
55
  return {
106
56
  start: {
@@ -112,128 +62,108 @@ export default abstract class Node {
112
62
  index: Math.max(range.start.index, range.end.index),
113
63
  },
114
64
  };
115
-
116
65
  // Find the common ancestor of the two nodes.
117
66
  const ancestor = start.getCommonAncestor(this, end);
118
-
119
- if (ancestor === undefined) return range;
120
-
67
+ if (ancestor === undefined)
68
+ return range;
121
69
  // Where do these text nodes appear in the ancestor's node sequence?
122
70
  let startIndex = ancestor.getNodes().indexOf(start);
123
71
  let endIndex = ancestor.getNodes().indexOf(end);
124
-
125
72
  // Defensively verify that we could find the given nodes in the document.
126
73
  // If we can't, something is wrong upstream.
127
74
  if (startIndex < 0 || endIndex < 0)
128
75
  throw Error(`Couldn't find caret range node(s) in this tree.`);
129
-
130
76
  // If we didn't find them, or the start is before the end, return the given range.
131
77
  return startIndex === undefined ||
132
78
  endIndex === undefined ||
133
79
  startIndex < endIndex
134
80
  ? range
135
81
  : // If they're the same node, order the index.
136
- startIndex === endIndex
137
- ? {
138
- start: {
139
- node: range.start.node,
140
- index: Math.min(range.start.index, range.end.index),
141
- },
142
- end: {
143
- node: range.end.node,
144
- index: Math.max(range.start.index, range.end.index),
145
- },
146
- }
147
- : // Otherwise, swap the caret positions
148
- { start: range.end, end: range.start };
149
- }
150
-
151
- getNode(id: number) {
82
+ startIndex === endIndex
83
+ ? {
84
+ start: {
85
+ node: range.start.node,
86
+ index: Math.min(range.start.index, range.end.index),
87
+ },
88
+ end: {
89
+ node: range.end.node,
90
+ index: Math.max(range.start.index, range.end.index),
91
+ },
92
+ }
93
+ : // Otherwise, swap the caret positions
94
+ { start: range.end, end: range.start };
95
+ }
96
+ getNode(id) {
152
97
  return this.getNodes().find((n) => n.getID() === id);
153
98
  }
154
-
155
99
  // An index of the given node in the depth-first traversal of the nodes.
156
- getIndexOf(node: Node): number | undefined {
100
+ getIndexOf(node) {
157
101
  const index = this.getNodes().indexOf(node);
158
102
  return index >= 0 ? index : undefined;
159
103
  }
160
-
161
104
  // True if this tree contains the given node.
162
- contains(node: Node) {
105
+ contains(node) {
163
106
  let found = false;
164
107
  this.traverse((n) => {
165
- if (n === node) found = true;
108
+ if (n === node)
109
+ found = true;
166
110
  });
167
111
  return found;
168
112
  }
169
-
170
113
  // Returns a list of the given node's parents in this tree, from root to direct parent.
171
- getParentsOf(node: Node): Node[] | undefined {
114
+ getParentsOf(node) {
172
115
  let parents = undefined;
173
116
  this.traverse((n, p) => {
174
- if (n === node) parents = p;
117
+ if (n === node)
118
+ parents = p;
175
119
  });
176
- if (parents === undefined) return;
120
+ if (parents === undefined)
121
+ return;
177
122
  const withoutNode = [...parents];
178
123
  withoutNode.pop();
179
124
  return withoutNode;
180
125
  }
181
-
182
- getParent(root: Node): Node | undefined {
126
+ getParent(root) {
183
127
  return root.getParentOf(this);
184
128
  }
185
-
186
- hasAncestor(root: Node, node: Node): boolean {
129
+ hasAncestor(root, node) {
187
130
  let parent = root.getParentOf(this);
188
131
  while (parent) {
189
- if (parent === node) return true;
132
+ if (parent === node)
133
+ return true;
190
134
  parent = root.getParentOf(parent);
191
135
  }
192
136
  return false;
193
137
  }
194
-
195
- getClosestParentOfType<T extends Node>(
196
- root: Node,
197
- type: Function
198
- ): T | undefined {
138
+ getClosestParentOfType(root, type) {
199
139
  let parent = root.getParentOf(this);
200
140
  while (parent) {
201
- if (parent instanceof type) return parent as unknown as T;
141
+ if (parent instanceof type)
142
+ return parent;
202
143
  parent = root.getParentOf(parent);
203
144
  }
204
145
  return undefined;
205
146
  }
206
-
207
- isInside(root: Node, type: Function) {
208
- return (
209
- this.getClosestParentMatching(root, (p) => p instanceof type) !==
210
- undefined
211
- );
147
+ isInside(root, type) {
148
+ return (this.getClosestParentMatching(root, (p) => p instanceof type) !==
149
+ undefined);
212
150
  }
213
-
214
- getClosestParentMatching(
215
- root: Node,
216
- match: (node: Node) => boolean
217
- ): Node | undefined {
151
+ getClosestParentMatching(root, match) {
218
152
  let parent = root.getParentOf(this);
219
153
  while (parent) {
220
- if (match.call(undefined, parent)) return parent;
154
+ if (match.call(undefined, parent))
155
+ return parent;
221
156
  parent = root.getParentOf(parent);
222
157
  }
223
158
  return undefined;
224
159
  }
225
-
226
- getFarthestParentMatching(
227
- root: Node,
228
- match: (node: Node) => boolean
229
- ): Node | undefined {
160
+ getFarthestParentMatching(root, match) {
230
161
  const matchingParents = this.getAncestors(root).filter(match);
231
162
  return matchingParents.length > 0
232
163
  ? matchingParents[matchingParents.length - 1]
233
164
  : undefined;
234
165
  }
235
-
236
- getAncestors(root: Node) {
166
+ getAncestors(root) {
237
167
  const ancestors = [];
238
168
  let parent = root.getParentOf(this);
239
169
  while (parent) {
@@ -242,27 +172,22 @@ export default abstract class Node {
242
172
  }
243
173
  return ancestors;
244
174
  }
245
-
246
- getCommonAncestor(root: Node, node: Node): Node | undefined {
175
+ getCommonAncestor(root, node) {
247
176
  const thisParents = this.getAncestors(root);
248
177
  const thatParents = node.getAncestors(root);
249
-
250
178
  for (let i = 0; i < thisParents.length; i++) {
251
179
  for (let j = 0; j < thatParents.length; j++) {
252
- if (thisParents[i] === thatParents[j]) return thisParents[i];
180
+ if (thisParents[i] === thatParents[j])
181
+ return thisParents[i];
253
182
  }
254
183
  }
255
184
  return undefined;
256
185
  }
257
-
258
186
  // Traverse this node's children, trying to replace the given node with the replacement node (or nothing, if allowed)
259
- withNodeReplaced(
260
- node: Node,
261
- replacement: Node | undefined
262
- ): this | undefined {
187
+ withNodeReplaced(node, replacement) {
263
188
  // Is this the node we're replacing? Return the replacement.
264
- if (node === this) return replacement as this;
265
-
189
+ if (node === this)
190
+ return replacement;
266
191
  // Find all the children
267
192
  const children = this.getChildren();
268
193
  // Search each one for a match.
@@ -271,34 +196,25 @@ export default abstract class Node {
271
196
  // If we found the child, return a new version of this node with the child replaced.
272
197
  if (child === node)
273
198
  return this.withChildReplaced(node, replacement);
274
-
275
199
  // Does this child have it? If so, return a version of this node with the revised child.
276
200
  const revisedChild = child.withNodeReplaced(node, replacement);
277
201
  if (revisedChild !== undefined)
278
202
  return this.withChildReplaced(child, revisedChild);
279
203
  }
280
204
  }
281
-
282
- // Given a range, return either a full copy of the node, or a partial copy if it contains the range.
283
- // If there's a problem, it returns undefined. Assumes the range is sorted in parse order.
284
- abstract withContentInRange(range: CaretRange): this | undefined;
285
-
286
205
  // By default, a node doesn't know how to insert anything into itself. Subclasses
287
206
  // are responsible for overriding this if they want to support specific insertions.
288
- withNodeInserted(caret: Caret, node: Node): Edit {
207
+ withNodeInserted(caret, node) {
289
208
  caret;
290
209
  node;
291
210
  return undefined;
292
211
  }
293
-
294
- copyRange(range: CaretRange): Node | undefined {
212
+ copyRange(range) {
295
213
  const sortedRange = this.sortRange(range);
296
214
  // Find the common ancestor of the range, then ask it to copy the portion of it selected and produce a node.
297
- const commonAncestor = sortedRange.start.node.getCommonAncestor(
298
- this,
299
- sortedRange.end.node
300
- );
301
- if (commonAncestor === undefined) return;
215
+ const commonAncestor = sortedRange.start.node.getCommonAncestor(this, sortedRange.end.node);
216
+ if (commonAncestor === undefined)
217
+ return;
302
218
  return commonAncestor.withContentInRange(sortedRange);
303
219
  }
304
220
  }
@@ -0,0 +1 @@
1
+ export {};
File without changes
@@ -0,0 +1,33 @@
1
+ import type Node from './Node';
2
+ import BlockNode from './BlockNode';
3
+ import FormatNode from './FormatNode';
4
+ import TextNode from './TextNode';
5
+ import type Caret from './Caret';
6
+ import type { CaretRange } from './Caret';
7
+ export default class ParagraphNode extends BlockNode {
8
+ #private;
9
+ constructor(level?: number, format?: FormatNode);
10
+ getType(): string;
11
+ getLevel(): number;
12
+ getFormat(): FormatNode;
13
+ getFormats(): FormatNode[];
14
+ getChildren(): FormatNode[];
15
+ getFirstTextNode(): TextNode;
16
+ getLastTextNode(): TextNode;
17
+ getTextNodes(): TextNode[];
18
+ getFirstCaret(): Caret | undefined;
19
+ getLastCaret(): Caret | undefined;
20
+ getSelection(): CaretRange;
21
+ getParentOf(node: Node): Node | undefined;
22
+ toText(): string;
23
+ toBookdown(): string;
24
+ toHTML(): string;
25
+ withLevel(level: number): ParagraphNode;
26
+ withContent(content: FormatNode): ParagraphNode;
27
+ withParagraphAppended(paragraph: ParagraphNode): ParagraphNode;
28
+ withParagraphPrepended(paragraph: ParagraphNode): ParagraphNode;
29
+ split(caret: Caret): [ParagraphNode, ParagraphNode] | undefined;
30
+ copy(): this;
31
+ withChildReplaced(node: Node, replacement: Node | undefined): this | undefined;
32
+ withContentInRange(range: CaretRange): this | undefined;
33
+ }