@react-x11/components 0.7.1 → 0.9.0

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 (354) hide show
  1. package/README.md +295 -51
  2. package/dist/charts/node.d.ts +1 -1
  3. package/dist/charts/node.d.ts.map +1 -1
  4. package/dist/charts/node.js +6 -2
  5. package/dist/charts/node.js.map +1 -1
  6. package/dist/color-picker/ColorPicker.d.ts.map +1 -1
  7. package/dist/color-picker/ColorPicker.js +43 -33
  8. package/dist/color-picker/ColorPicker.js.map +1 -1
  9. package/dist/embed/client.d.ts +48 -3
  10. package/dist/embed/client.d.ts.map +1 -1
  11. package/dist/embed/client.js +79 -5
  12. package/dist/embed/client.js.map +1 -1
  13. package/dist/embed/index.d.ts +1 -1
  14. package/dist/embed/index.d.ts.map +1 -1
  15. package/dist/embed/index.js +1 -1
  16. package/dist/embed/index.js.map +1 -1
  17. package/dist/html/node.d.ts +3 -1
  18. package/dist/html/node.d.ts.map +1 -1
  19. package/dist/html/node.js +7 -5
  20. package/dist/html/node.js.map +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/{markdown → internal/markdown}/ast.d.ts +12 -0
  26. package/dist/internal/markdown/ast.d.ts.map +1 -0
  27. package/dist/internal/markdown/ast.js +22 -0
  28. package/dist/internal/markdown/ast.js.map +1 -0
  29. package/dist/internal/markdown/parse.d.ts.map +1 -0
  30. package/dist/{markdown → internal/markdown}/parse.js +112 -22
  31. package/dist/internal/markdown/parse.js.map +1 -0
  32. package/dist/internal/markdown/stringify.d.ts +4 -0
  33. package/dist/internal/markdown/stringify.d.ts.map +1 -0
  34. package/dist/internal/markdown/stringify.js +684 -0
  35. package/dist/internal/markdown/stringify.js.map +1 -0
  36. package/dist/internal/markdown/tags.d.ts.map +1 -0
  37. package/dist/internal/markdown/tags.js.map +1 -0
  38. package/dist/internal/scroll.d.ts +3 -2
  39. package/dist/internal/scroll.d.ts.map +1 -1
  40. package/dist/internal/scroll.js +33 -15
  41. package/dist/internal/scroll.js.map +1 -1
  42. package/dist/internal/units.d.ts +2 -0
  43. package/dist/internal/units.d.ts.map +1 -0
  44. package/dist/internal/units.js +35 -0
  45. package/dist/internal/units.js.map +1 -0
  46. package/dist/internal/window.d.ts.map +1 -1
  47. package/dist/internal/window.js +4 -2
  48. package/dist/internal/window.js.map +1 -1
  49. package/dist/maps/anchors.d.ts +98 -0
  50. package/dist/maps/anchors.d.ts.map +1 -0
  51. package/dist/maps/anchors.js +531 -0
  52. package/dist/maps/anchors.js.map +1 -0
  53. package/dist/maps/controller.d.ts +283 -0
  54. package/dist/maps/controller.d.ts.map +1 -0
  55. package/dist/maps/controller.js +743 -0
  56. package/dist/maps/controller.js.map +1 -0
  57. package/dist/maps/gl/buckets.d.ts +95 -0
  58. package/dist/maps/gl/buckets.d.ts.map +1 -0
  59. package/dist/maps/gl/buckets.js +362 -0
  60. package/dist/maps/gl/buckets.js.map +1 -0
  61. package/dist/maps/gl/build-worker.d.ts +13 -0
  62. package/dist/maps/gl/build-worker.d.ts.map +1 -0
  63. package/dist/maps/gl/build-worker.js +44 -0
  64. package/dist/maps/gl/build-worker.js.map +1 -0
  65. package/dist/maps/gl/color.d.ts +8 -0
  66. package/dist/maps/gl/color.d.ts.map +1 -0
  67. package/dist/maps/gl/color.js +57 -0
  68. package/dist/maps/gl/color.js.map +1 -0
  69. package/dist/maps/gl/cover.d.ts +51 -0
  70. package/dist/maps/gl/cover.d.ts.map +1 -0
  71. package/dist/maps/gl/cover.js +124 -0
  72. package/dist/maps/gl/cover.js.map +1 -0
  73. package/dist/maps/gl/index.d.ts +3 -0
  74. package/dist/maps/gl/index.d.ts.map +1 -0
  75. package/dist/maps/gl/index.js +20 -0
  76. package/dist/maps/gl/index.js.map +1 -0
  77. package/dist/maps/gl/markers.d.ts +28 -0
  78. package/dist/maps/gl/markers.d.ts.map +1 -0
  79. package/dist/maps/gl/markers.js +60 -0
  80. package/dist/maps/gl/markers.js.map +1 -0
  81. package/dist/maps/gl/overlays.d.ts +68 -0
  82. package/dist/maps/gl/overlays.d.ts.map +1 -0
  83. package/dist/maps/gl/overlays.js +300 -0
  84. package/dist/maps/gl/overlays.js.map +1 -0
  85. package/dist/maps/gl/pane.d.ts +12 -0
  86. package/dist/maps/gl/pane.d.ts.map +1 -0
  87. package/dist/maps/gl/pane.js +37 -0
  88. package/dist/maps/gl/pane.js.map +1 -0
  89. package/dist/maps/gl/placement.d.ts +111 -0
  90. package/dist/maps/gl/placement.d.ts.map +1 -0
  91. package/dist/maps/gl/placement.js +567 -0
  92. package/dist/maps/gl/placement.js.map +1 -0
  93. package/dist/maps/gl/renderer.d.ts +352 -0
  94. package/dist/maps/gl/renderer.d.ts.map +1 -0
  95. package/dist/maps/gl/renderer.js +1127 -0
  96. package/dist/maps/gl/renderer.js.map +1 -0
  97. package/dist/maps/gl/shaders.d.ts +120 -0
  98. package/dist/maps/gl/shaders.d.ts.map +1 -0
  99. package/dist/maps/gl/shaders.js +451 -0
  100. package/dist/maps/gl/shaders.js.map +1 -0
  101. package/dist/maps/gl/store.d.ts +115 -0
  102. package/dist/maps/gl/store.d.ts.map +1 -0
  103. package/dist/maps/gl/store.js +469 -0
  104. package/dist/maps/gl/store.js.map +1 -0
  105. package/dist/maps/gl/text.d.ts +154 -0
  106. package/dist/maps/gl/text.d.ts.map +1 -0
  107. package/dist/maps/gl/text.js +382 -0
  108. package/dist/maps/gl/text.js.map +1 -0
  109. package/dist/maps/gl/view.d.ts +54 -0
  110. package/dist/maps/gl/view.d.ts.map +1 -0
  111. package/dist/maps/gl/view.js +974 -0
  112. package/dist/maps/gl/view.js.map +1 -0
  113. package/dist/maps/index.d.ts +1 -1
  114. package/dist/maps/index.d.ts.map +1 -1
  115. package/dist/maps/index.js +216 -52
  116. package/dist/maps/index.js.map +1 -1
  117. package/dist/maps/labels.d.ts +37 -16
  118. package/dist/maps/labels.d.ts.map +1 -1
  119. package/dist/maps/labels.js +188 -119
  120. package/dist/maps/labels.js.map +1 -1
  121. package/dist/maps/node.d.ts +162 -56
  122. package/dist/maps/node.d.ts.map +1 -1
  123. package/dist/maps/node.js +607 -515
  124. package/dist/maps/node.js.map +1 -1
  125. package/dist/maps/overlay.d.ts +72 -9
  126. package/dist/maps/overlay.d.ts.map +1 -1
  127. package/dist/maps/overlay.js +108 -28
  128. package/dist/maps/overlay.js.map +1 -1
  129. package/dist/maps/paint.d.ts +3 -0
  130. package/dist/maps/paint.d.ts.map +1 -1
  131. package/dist/maps/paint.js.map +1 -1
  132. package/dist/maps/proj.d.ts +14 -0
  133. package/dist/maps/proj.d.ts.map +1 -1
  134. package/dist/maps/proj.js +28 -0
  135. package/dist/maps/proj.js.map +1 -1
  136. package/dist/maps/renderer.d.ts +69 -0
  137. package/dist/maps/renderer.d.ts.map +1 -0
  138. package/dist/maps/renderer.js +66 -0
  139. package/dist/maps/renderer.js.map +1 -0
  140. package/dist/maps/sources.d.ts +25 -3
  141. package/dist/maps/sources.d.ts.map +1 -1
  142. package/dist/maps/sources.js +17 -0
  143. package/dist/maps/sources.js.map +1 -1
  144. package/dist/maps/theme.d.ts +19 -0
  145. package/dist/maps/theme.d.ts.map +1 -0
  146. package/dist/maps/theme.js +44 -0
  147. package/dist/maps/theme.js.map +1 -0
  148. package/dist/maps/tiles.d.ts +117 -17
  149. package/dist/maps/tiles.d.ts.map +1 -1
  150. package/dist/maps/tiles.js +163 -30
  151. package/dist/maps/tiles.js.map +1 -1
  152. package/dist/maps/types.d.ts +188 -20
  153. package/dist/maps/types.d.ts.map +1 -1
  154. package/dist/markdown/expressions.d.ts +1 -1
  155. package/dist/markdown/expressions.d.ts.map +1 -1
  156. package/dist/markdown/expressions.js.map +1 -1
  157. package/dist/markdown/index.d.ts +7 -6
  158. package/dist/markdown/index.d.ts.map +1 -1
  159. package/dist/markdown/index.js +9 -7
  160. package/dist/markdown/index.js.map +1 -1
  161. package/dist/markdown/spans.d.ts +1 -1
  162. package/dist/markdown/spans.d.ts.map +1 -1
  163. package/dist/media-player/index.d.ts +11 -3
  164. package/dist/media-player/index.d.ts.map +1 -1
  165. package/dist/media-player/index.js +13 -2
  166. package/dist/media-player/index.js.map +1 -1
  167. package/dist/rich-text-editor/clipboard.d.ts +23 -0
  168. package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
  169. package/dist/rich-text-editor/clipboard.js +307 -0
  170. package/dist/rich-text-editor/clipboard.js.map +1 -0
  171. package/dist/rich-text-editor/collab.d.ts +32 -0
  172. package/dist/rich-text-editor/collab.d.ts.map +1 -0
  173. package/dist/rich-text-editor/collab.js +55 -0
  174. package/dist/rich-text-editor/collab.js.map +1 -0
  175. package/dist/rich-text-editor/commands.d.ts +50 -0
  176. package/dist/rich-text-editor/commands.d.ts.map +1 -0
  177. package/dist/rich-text-editor/commands.js +376 -0
  178. package/dist/rich-text-editor/commands.js.map +1 -0
  179. package/dist/rich-text-editor/drag.d.ts +68 -0
  180. package/dist/rich-text-editor/drag.d.ts.map +1 -0
  181. package/dist/rich-text-editor/drag.js +148 -0
  182. package/dist/rich-text-editor/drag.js.map +1 -0
  183. package/dist/rich-text-editor/html.d.ts +145 -0
  184. package/dist/rich-text-editor/html.d.ts.map +1 -0
  185. package/dist/rich-text-editor/html.js +516 -0
  186. package/dist/rich-text-editor/html.js.map +1 -0
  187. package/dist/rich-text-editor/index.d.ts +263 -0
  188. package/dist/rich-text-editor/index.d.ts.map +1 -0
  189. package/dist/rich-text-editor/index.js +822 -0
  190. package/dist/rich-text-editor/index.js.map +1 -0
  191. package/dist/rich-text-editor/inline.d.ts +94 -0
  192. package/dist/rich-text-editor/inline.d.ts.map +1 -0
  193. package/dist/rich-text-editor/inline.js +252 -0
  194. package/dist/rich-text-editor/inline.js.map +1 -0
  195. package/dist/rich-text-editor/keymap.d.ts +71 -0
  196. package/dist/rich-text-editor/keymap.d.ts.map +1 -0
  197. package/dist/rich-text-editor/keymap.js +393 -0
  198. package/dist/rich-text-editor/keymap.js.map +1 -0
  199. package/dist/rich-text-editor/keys.d.ts +29 -0
  200. package/dist/rich-text-editor/keys.d.ts.map +1 -0
  201. package/dist/rich-text-editor/keys.js +93 -0
  202. package/dist/rich-text-editor/keys.js.map +1 -0
  203. package/dist/rich-text-editor/look.d.ts +71 -0
  204. package/dist/rich-text-editor/look.d.ts.map +1 -0
  205. package/dist/rich-text-editor/look.js +342 -0
  206. package/dist/rich-text-editor/look.js.map +1 -0
  207. package/dist/rich-text-editor/markdown.d.ts +18 -0
  208. package/dist/rich-text-editor/markdown.d.ts.map +1 -0
  209. package/dist/rich-text-editor/markdown.js +496 -0
  210. package/dist/rich-text-editor/markdown.js.map +1 -0
  211. package/dist/rich-text-editor/nodes.d.ts +135 -0
  212. package/dist/rich-text-editor/nodes.d.ts.map +1 -0
  213. package/dist/rich-text-editor/nodes.js +397 -0
  214. package/dist/rich-text-editor/nodes.js.map +1 -0
  215. package/dist/rich-text-editor/render.d.ts +68 -0
  216. package/dist/rich-text-editor/render.d.ts.map +1 -0
  217. package/dist/rich-text-editor/render.js +500 -0
  218. package/dist/rich-text-editor/render.js.map +1 -0
  219. package/dist/rich-text-editor/schema.d.ts +16 -0
  220. package/dist/rich-text-editor/schema.d.ts.map +1 -0
  221. package/dist/rich-text-editor/schema.js +386 -0
  222. package/dist/rich-text-editor/schema.js.map +1 -0
  223. package/dist/rich-text-editor/store.d.ts +11 -0
  224. package/dist/rich-text-editor/store.d.ts.map +1 -0
  225. package/dist/rich-text-editor/store.js +43 -0
  226. package/dist/rich-text-editor/store.js.map +1 -0
  227. package/dist/rich-text-editor/suggest.d.ts +127 -0
  228. package/dist/rich-text-editor/suggest.d.ts.map +1 -0
  229. package/dist/rich-text-editor/suggest.js +0 -0
  230. package/dist/rich-text-editor/suggest.js.map +1 -0
  231. package/dist/rich-text-editor/tables.d.ts +41 -0
  232. package/dist/rich-text-editor/tables.d.ts.map +1 -0
  233. package/dist/rich-text-editor/tables.js +204 -0
  234. package/dist/rich-text-editor/tables.js.map +1 -0
  235. package/dist/rich-text-editor/toolbar.d.ts +58 -0
  236. package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
  237. package/dist/rich-text-editor/toolbar.js +548 -0
  238. package/dist/rich-text-editor/toolbar.js.map +1 -0
  239. package/dist/rich-text-editor/view.d.ts +368 -0
  240. package/dist/rich-text-editor/view.d.ts.map +1 -0
  241. package/dist/rich-text-editor/view.js +1968 -0
  242. package/dist/rich-text-editor/view.js.map +1 -0
  243. package/dist/rich-text-editor/virtual.d.ts +54 -0
  244. package/dist/rich-text-editor/virtual.d.ts.map +1 -0
  245. package/dist/rich-text-editor/virtual.js +262 -0
  246. package/dist/rich-text-editor/virtual.js.map +1 -0
  247. package/dist/richtext/node.d.ts +25 -2
  248. package/dist/richtext/node.d.ts.map +1 -1
  249. package/dist/richtext/node.js +46 -24
  250. package/dist/richtext/node.js.map +1 -1
  251. package/dist/table/index.d.ts.map +1 -1
  252. package/dist/table/index.js +14 -5
  253. package/dist/table/index.js.map +1 -1
  254. package/dist/terminal/backends.d.ts +4 -1
  255. package/dist/terminal/backends.d.ts.map +1 -1
  256. package/dist/terminal/backends.js.map +1 -1
  257. package/dist/terminal/index.d.ts +18 -7
  258. package/dist/terminal/index.d.ts.map +1 -1
  259. package/dist/terminal/index.js +28 -11
  260. package/dist/terminal/index.js.map +1 -1
  261. package/dist/terminal/vt/node.d.ts +56 -3
  262. package/dist/terminal/vt/node.d.ts.map +1 -1
  263. package/dist/terminal/vt/node.js +106 -26
  264. package/dist/terminal/vt/node.js.map +1 -1
  265. package/dist/terminal/vt/renderer.d.ts +4 -0
  266. package/dist/terminal/vt/renderer.d.ts.map +1 -1
  267. package/dist/terminal/vt/renderer.js +14 -5
  268. package/dist/terminal/vt/renderer.js.map +1 -1
  269. package/dist/tree/index.d.ts.map +1 -1
  270. package/dist/tree/index.js +6 -4
  271. package/dist/tree/index.js.map +1 -1
  272. package/package.json +23 -4
  273. package/src/charts/node.ts +6 -2
  274. package/src/color-picker/ColorPicker.ts +107 -81
  275. package/src/embed/client.ts +102 -8
  276. package/src/embed/index.ts +2 -0
  277. package/src/html/node.ts +7 -5
  278. package/src/index.ts +2 -0
  279. package/src/{markdown → internal/markdown}/ast.ts +24 -7
  280. package/src/{markdown → internal/markdown}/parse.ts +134 -24
  281. package/src/internal/markdown/stringify.ts +772 -0
  282. package/src/internal/scroll.ts +39 -18
  283. package/src/internal/units.ts +34 -0
  284. package/src/internal/window.ts +4 -2
  285. package/src/maps/anchors.ts +607 -0
  286. package/src/maps/controller.ts +999 -0
  287. package/src/maps/gl/buckets.ts +457 -0
  288. package/src/maps/gl/build-worker.ts +55 -0
  289. package/src/maps/gl/color.ts +62 -0
  290. package/src/maps/gl/cover.ts +170 -0
  291. package/src/maps/gl/index.ts +23 -0
  292. package/src/maps/gl/markers.ts +83 -0
  293. package/src/maps/gl/overlays.ts +379 -0
  294. package/src/maps/gl/pane.ts +42 -0
  295. package/src/maps/gl/placement.ts +816 -0
  296. package/src/maps/gl/renderer.ts +1576 -0
  297. package/src/maps/gl/shaders.ts +486 -0
  298. package/src/maps/gl/store.ts +566 -0
  299. package/src/maps/gl/text.ts +495 -0
  300. package/src/maps/gl/view.ts +1224 -0
  301. package/src/maps/index.ts +270 -81
  302. package/src/maps/labels.ts +214 -121
  303. package/src/maps/node.ts +763 -629
  304. package/src/maps/overlay.ts +148 -43
  305. package/src/maps/paint.ts +3 -0
  306. package/src/maps/proj.ts +31 -0
  307. package/src/maps/renderer.ts +155 -0
  308. package/src/maps/sources.ts +38 -3
  309. package/src/maps/theme.ts +51 -0
  310. package/src/maps/tiles.ts +191 -33
  311. package/src/maps/types.ts +188 -20
  312. package/src/markdown/expressions.ts +5 -1
  313. package/src/markdown/index.ts +14 -11
  314. package/src/markdown/spans.ts +1 -1
  315. package/src/media-player/index.ts +18 -4
  316. package/src/rich-text-editor/clipboard.ts +439 -0
  317. package/src/rich-text-editor/collab.ts +91 -0
  318. package/src/rich-text-editor/commands.ts +448 -0
  319. package/src/rich-text-editor/dom-globals.d.ts +23 -0
  320. package/src/rich-text-editor/drag.ts +211 -0
  321. package/src/rich-text-editor/html.ts +619 -0
  322. package/src/rich-text-editor/index.ts +1331 -0
  323. package/src/rich-text-editor/inline.ts +345 -0
  324. package/src/rich-text-editor/keymap.ts +510 -0
  325. package/src/rich-text-editor/keys.ts +119 -0
  326. package/src/rich-text-editor/look.ts +427 -0
  327. package/src/rich-text-editor/markdown.ts +653 -0
  328. package/src/rich-text-editor/nodes.ts +497 -0
  329. package/src/rich-text-editor/render.ts +800 -0
  330. package/src/rich-text-editor/schema.ts +431 -0
  331. package/src/rich-text-editor/store.ts +39 -0
  332. package/src/rich-text-editor/suggest.ts +597 -0
  333. package/src/rich-text-editor/tables.ts +272 -0
  334. package/src/rich-text-editor/toolbar.ts +724 -0
  335. package/src/rich-text-editor/view.ts +2287 -0
  336. package/src/rich-text-editor/virtual.ts +347 -0
  337. package/src/richtext/node.ts +59 -30
  338. package/src/table/index.ts +14 -5
  339. package/src/terminal/backends.ts +4 -1
  340. package/src/terminal/index.ts +43 -15
  341. package/src/terminal/vt/node.ts +128 -29
  342. package/src/terminal/vt/renderer.ts +27 -5
  343. package/src/tree/index.ts +6 -4
  344. package/dist/markdown/ast.d.ts.map +0 -1
  345. package/dist/markdown/ast.js +0 -17
  346. package/dist/markdown/ast.js.map +0 -1
  347. package/dist/markdown/parse.d.ts.map +0 -1
  348. package/dist/markdown/parse.js.map +0 -1
  349. package/dist/markdown/tags.d.ts.map +0 -1
  350. package/dist/markdown/tags.js.map +0 -1
  351. /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
  352. /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
  353. /package/dist/{markdown → internal/markdown}/tags.js +0 -0
  354. /package/src/{markdown → internal/markdown}/tags.ts +0 -0
@@ -0,0 +1,496 @@
1
+ import { parse } from '../internal/markdown/parse.js';
2
+ import { stringify } from '../internal/markdown/stringify.js';
3
+ /** The codec for `schema`: the reference names, TipTap's, or both. */
4
+ export function markdownCodec(schema) {
5
+ return {
6
+ parse: (source) => docFromMarkdown(schema, source),
7
+ serialize: (doc) => markdownFromDoc(doc),
8
+ };
9
+ }
10
+ // --- names -------------------------------------------------------------------
11
+ /** The spellings each thing goes by: ProseMirror's reference schemas first,
12
+ * then TipTap's. */
13
+ const NODE_NAMES = {
14
+ paragraph: ['paragraph'],
15
+ heading: ['heading'],
16
+ code: ['code_block', 'codeBlock'],
17
+ quote: ['blockquote'],
18
+ bullet: ['bullet_list', 'bulletList'],
19
+ ordered: ['ordered_list', 'orderedList'],
20
+ task: ['task_list', 'taskList'],
21
+ item: ['list_item', 'listItem'],
22
+ taskItem: ['task_item', 'taskItem'],
23
+ rule: ['horizontal_rule', 'horizontalRule'],
24
+ table: ['table'],
25
+ row: ['table_row', 'tableRow'],
26
+ cell: ['table_cell', 'tableCell'],
27
+ header: ['table_header', 'tableHeader'],
28
+ image: ['image'],
29
+ hardBreak: ['hard_break', 'hardBreak'],
30
+ };
31
+ const MARK_NAMES = {
32
+ strong: ['strong', 'bold'],
33
+ em: ['em', 'italic'],
34
+ del: ['strike', 's', 'del', 'strikethrough'],
35
+ code: ['code'],
36
+ link: ['link'],
37
+ };
38
+ const NODE_ROLE = new Map();
39
+ for (const [role, names] of Object.entries(NODE_NAMES)) {
40
+ for (const name of names)
41
+ NODE_ROLE.set(name, role);
42
+ }
43
+ const MARK_ROLE = new Map();
44
+ for (const [role, names] of Object.entries(MARK_NAMES)) {
45
+ for (const name of names)
46
+ MARK_ROLE.set(name, role);
47
+ }
48
+ function nodeType(schema, role) {
49
+ for (const name of NODE_NAMES[role]) {
50
+ const type = schema.nodes[name];
51
+ if (type)
52
+ return type;
53
+ }
54
+ return undefined;
55
+ }
56
+ function markType(schema, role) {
57
+ for (const name of MARK_NAMES[role]) {
58
+ const type = schema.marks[name];
59
+ if (type)
60
+ return type;
61
+ }
62
+ return undefined;
63
+ }
64
+ /** Only the attributes `type` declares — TipTap's `orderedList` calls the
65
+ * start `start` where prosemirror-markdown calls it `order`, and a node
66
+ * should not be handed a name it does not have. */
67
+ function attrsFor(type, wanted) {
68
+ const out = {};
69
+ const spec = type.spec.attrs ?? {};
70
+ for (const [name, value] of Object.entries(wanted)) {
71
+ if (name in spec)
72
+ out[name] = value;
73
+ }
74
+ return out;
75
+ }
76
+ // --- markdown → document -----------------------------------------------------
77
+ /** Parse markdown into a document of `schema`. Never throws on content: what
78
+ * the schema cannot hold is kept as the nearest thing it can. */
79
+ export function docFromMarkdown(schema, source) {
80
+ const ast = parse(source, { partial: false });
81
+ const blocks = blocksToNodes(schema, ast.blocks);
82
+ return (schema.topNodeType.createAndFill(null, blocks) ??
83
+ schema.topNodeType.createAndFill());
84
+ }
85
+ function blocksToNodes(schema, blocks) {
86
+ const out = [];
87
+ for (const block of blocks)
88
+ out.push(...blockToNodes(schema, block));
89
+ return out;
90
+ }
91
+ function paragraph(schema, content) {
92
+ const type = nodeType(schema, 'paragraph') ??
93
+ schema.topNodeType.contentMatch.defaultType;
94
+ return type.createAndFill(null, content) ?? type.create();
95
+ }
96
+ function blockToNodes(schema, block) {
97
+ switch (block.type) {
98
+ case 'paragraph':
99
+ return [paragraph(schema, inlineToNodes(schema, block.children, []))];
100
+ case 'heading': {
101
+ const type = nodeType(schema, 'heading');
102
+ const content = inlineToNodes(schema, block.children, []);
103
+ if (!type)
104
+ return [paragraph(schema, content)];
105
+ return [
106
+ type.createAndFill(attrsFor(type, { level: block.depth }), content) ??
107
+ paragraph(schema, content),
108
+ ];
109
+ }
110
+ case 'code': {
111
+ const type = nodeType(schema, 'code');
112
+ const text = block.text ? [schema.text(block.text)] : [];
113
+ if (!type)
114
+ return [paragraph(schema, text)];
115
+ const info = block.info ?? block.lang;
116
+ return [
117
+ type.create(attrsFor(type, {
118
+ params: info,
119
+ language: block.lang || null,
120
+ }), text),
121
+ ];
122
+ }
123
+ case 'quote': {
124
+ const type = nodeType(schema, 'quote');
125
+ const children = blocksToNodes(schema, block.children);
126
+ if (!type)
127
+ return children;
128
+ return [
129
+ type.createAndFill(null, children.length ? children : [paragraph(schema, [])]) ?? paragraph(schema, []),
130
+ ];
131
+ }
132
+ case 'list':
133
+ return listToNodes(schema, block.ordered, block.start, block.tight, block.items);
134
+ case 'table': {
135
+ const table = nodeType(schema, 'table');
136
+ const row = nodeType(schema, 'row');
137
+ const cell = nodeType(schema, 'cell');
138
+ const header = nodeType(schema, 'header') ?? cell;
139
+ if (!table || !row || !cell || !header) {
140
+ // no tables here: a row per paragraph, cells kept apart by a bar
141
+ return [block.header, ...block.rows].map((cells) => paragraph(schema, cells.flatMap((c, i) => [
142
+ ...(i > 0 ? [schema.text(' | ')] : []),
143
+ ...inlineToNodes(schema, c, []),
144
+ ])));
145
+ }
146
+ const makeRow = (cells, type) => row.create(null, cells.map((c, i) => type.createAndFill(attrsFor(type, { align: block.align[i] ?? null }), inlineToNodes(schema, c, [])) ?? type.createAndFill()));
147
+ return [
148
+ table.create(null, [
149
+ makeRow(block.header, header),
150
+ ...block.rows.map((r) => makeRow(r, cell)),
151
+ ]),
152
+ ];
153
+ }
154
+ case 'rule': {
155
+ const type = nodeType(schema, 'rule');
156
+ return type ? [type.create()] : [];
157
+ }
158
+ case 'component':
159
+ return blocksToNodes(schema, block.children);
160
+ }
161
+ }
162
+ function listToNodes(schema, ordered, start, tight, items) {
163
+ const isTask = !ordered && items.length > 0 && items.every((i) => i.checked !== null);
164
+ // TipTap keeps task items in a list type of their own; the reference
165
+ // schema (and this one) keeps them in a bullet list, as GFM does
166
+ const taskList = isTask ? nodeType(schema, 'task') : undefined;
167
+ const listType = taskList ?? nodeType(schema, ordered ? 'ordered' : 'bullet');
168
+ const itemType = (taskList ? nodeType(schema, 'taskItem') : undefined) ??
169
+ nodeType(schema, 'item');
170
+ if (!listType || !itemType) {
171
+ return items.flatMap((item) => blocksToNodes(schema, item.children));
172
+ }
173
+ const nodes = items.map((item) => {
174
+ let children = blocksToNodes(schema, item.children);
175
+ // an item's first child must be a paragraph (`paragraph block*`); one
176
+ // that opened with a fence or a nested list gets an empty paragraph in
177
+ // front of it, which is what that markdown looks like anyway
178
+ const first = itemType.contentMatch.defaultType;
179
+ if (first && (children.length === 0 || children[0].type !== first)) {
180
+ children = [first.createAndFill(), ...children];
181
+ }
182
+ return (itemType.createAndFill(attrsFor(itemType, { checked: item.checked }), children) ?? itemType.createAndFill());
183
+ });
184
+ return [
185
+ listType.create(attrsFor(listType, { order: start, start, tight }), nodes),
186
+ ];
187
+ }
188
+ function withMark(marks, type, attrs) {
189
+ return type ? type.create(attrs).addToSet(marks) : marks;
190
+ }
191
+ function plainOf(nodes) {
192
+ let out = '';
193
+ for (const node of nodes) {
194
+ if (node.type === 'text' || node.type === 'code')
195
+ out += node.text;
196
+ else if (node.type === 'break')
197
+ out += ' ';
198
+ else if ('children' in node)
199
+ out += plainOf(node.children);
200
+ }
201
+ return out;
202
+ }
203
+ function inlineToNodes(schema, nodes, marks) {
204
+ const out = [];
205
+ for (const node of nodes) {
206
+ switch (node.type) {
207
+ case 'text':
208
+ if (node.text)
209
+ out.push(schema.text(node.text, marks));
210
+ break;
211
+ case 'code':
212
+ if (node.text) {
213
+ out.push(schema.text(node.text, withMark(marks, markType(schema, 'code'))));
214
+ }
215
+ break;
216
+ case 'strong':
217
+ out.push(...inlineToNodes(schema, node.children, withMark(marks, markType(schema, 'strong'))));
218
+ break;
219
+ case 'em':
220
+ out.push(...inlineToNodes(schema, node.children, withMark(marks, markType(schema, 'em'))));
221
+ break;
222
+ case 'del':
223
+ out.push(...inlineToNodes(schema, node.children, withMark(marks, markType(schema, 'del'))));
224
+ break;
225
+ case 'link':
226
+ out.push(...linkToNodes(schema, node, marks));
227
+ break;
228
+ case 'break': {
229
+ const type = nodeType(schema, 'hardBreak');
230
+ if (type)
231
+ out.push(type.create(null, null, marks));
232
+ else
233
+ out.push(schema.text(' ', marks));
234
+ break;
235
+ }
236
+ case 'expression':
237
+ out.push(schema.text(`{${node.src}}`, marks));
238
+ break;
239
+ case 'component':
240
+ out.push(...inlineToNodes(schema, node.children, marks));
241
+ break;
242
+ }
243
+ }
244
+ return out;
245
+ }
246
+ function linkToNodes(schema, node, marks) {
247
+ if (node.image) {
248
+ const type = nodeType(schema, 'image');
249
+ const alt = plainOf(node.children);
250
+ if (type && node.href !== null) {
251
+ return [
252
+ type.create(attrsFor(type, {
253
+ src: node.href,
254
+ alt: alt || null,
255
+ title: node.title ?? null,
256
+ }), null, marks),
257
+ ];
258
+ }
259
+ return alt ? [schema.text(alt, marks)] : [];
260
+ }
261
+ const link = markType(schema, 'link');
262
+ const inner = node.href !== null && link
263
+ ? withMark(marks, link, { href: node.href, title: node.title ?? null })
264
+ : marks;
265
+ return inlineToNodes(schema, node.children, inner);
266
+ }
267
+ // --- document → markdown -----------------------------------------------------
268
+ /** Write a document of the reference (or TipTap's) schema as markdown. */
269
+ export function markdownFromDoc(doc) {
270
+ return stringify(blocksOf(doc));
271
+ }
272
+ function blocksOf(parent) {
273
+ const out = [];
274
+ parent.forEach((child) => out.push(...nodeToBlocks(child)));
275
+ return out;
276
+ }
277
+ function nodeToBlocks(node) {
278
+ switch (NODE_ROLE.get(node.type.name)) {
279
+ case 'paragraph':
280
+ return [{ type: 'paragraph', children: inlineOf(node) }];
281
+ case 'heading':
282
+ return [
283
+ {
284
+ type: 'heading',
285
+ depth: Number(node.attrs.level ?? 1),
286
+ children: inlineOf(node),
287
+ },
288
+ ];
289
+ case 'code': {
290
+ const info = String(node.attrs.params ?? node.attrs.language ?? '').trim();
291
+ const lang = (info.split(/[ \t]/, 1)[0] ?? '').toLowerCase();
292
+ return [
293
+ {
294
+ type: 'code',
295
+ lang,
296
+ ...(info !== lang ? { info } : null),
297
+ text: node.textContent,
298
+ closed: true,
299
+ },
300
+ ];
301
+ }
302
+ case 'quote':
303
+ return [{ type: 'quote', children: blocksOf(node) }];
304
+ case 'bullet':
305
+ case 'ordered':
306
+ case 'task': {
307
+ const ordered = NODE_ROLE.get(node.type.name) === 'ordered';
308
+ const items = [];
309
+ node.forEach((item) => {
310
+ const checked = item.attrs.checked;
311
+ items.push({
312
+ checked: typeof checked === 'boolean'
313
+ ? checked
314
+ : NODE_ROLE.get(item.type.name) === 'taskItem'
315
+ ? false
316
+ : null,
317
+ children: blocksOf(item),
318
+ });
319
+ });
320
+ return [
321
+ {
322
+ type: 'list',
323
+ ordered,
324
+ start: Number(node.attrs.order ?? node.attrs.start ?? 1),
325
+ tight: node.attrs.tight !== false,
326
+ items,
327
+ },
328
+ ];
329
+ }
330
+ case 'rule':
331
+ return [{ type: 'rule' }];
332
+ case 'table':
333
+ return [tableOf(node)];
334
+ default:
335
+ if (node.isTextblock)
336
+ return [{ type: 'paragraph', children: inlineOf(node) }];
337
+ if (!node.isLeaf)
338
+ return blocksOf(node);
339
+ return [];
340
+ }
341
+ }
342
+ function tableOf(table) {
343
+ const grid = [];
344
+ const align = [];
345
+ table.forEach((row) => {
346
+ const cells = [];
347
+ row.forEach((cell) => {
348
+ const col = cells.length;
349
+ if (align[col] === undefined) {
350
+ const a = cell.attrs.align;
351
+ align[col] = a === 'left' || a === 'center' || a === 'right' ? a : null;
352
+ }
353
+ cells.push(cellInline(cell));
354
+ });
355
+ grid.push(cells);
356
+ });
357
+ const width = Math.max(1, ...grid.map((r) => r.length));
358
+ const pad = (r) => Array.from({ length: width }, (_, i) => r[i] ?? []);
359
+ for (let i = 0; i < width; i++)
360
+ align[i] ??= null;
361
+ return {
362
+ type: 'table',
363
+ align: align.slice(0, width),
364
+ header: pad(grid[0] ?? []),
365
+ rows: grid.slice(1).map(pad),
366
+ };
367
+ }
368
+ /** A cell's content as one line: its own inline content, or — for a schema
369
+ * whose cells hold blocks — each textblock's, a space between. */
370
+ function cellInline(cell) {
371
+ if (cell.isTextblock)
372
+ return inlineOf(cell);
373
+ const out = [];
374
+ cell.descendants((node) => {
375
+ if (!node.isTextblock)
376
+ return true;
377
+ if (out.length)
378
+ out.push({ type: 'text', text: ' ' });
379
+ out.push(...inlineOf(node));
380
+ return false;
381
+ });
382
+ return out;
383
+ }
384
+ /**
385
+ * A textblock's flat marked runs, as the AST's nested inline tree.
386
+ *
387
+ * The open marks are a stack. At each child, every mark the child no longer
388
+ * carries is closed — with everything opened inside it, to be reopened —
389
+ * and the marks it adds are opened, **the longest-running outermost**, so
390
+ * that "bold, then bold italic, then bold" is one bold around an italic and
391
+ * not two bolds either side of one: two runs of `**` meeting reads back as
392
+ * one run of four. Code is never a container: it is the leaf, innermost,
393
+ * where markdown needs it.
394
+ */
395
+ function inlineOf(block) {
396
+ const children = [];
397
+ block.forEach((child) => children.push(child));
398
+ const containers = children.map((child) => child.marks.filter((m) => {
399
+ const role = MARK_ROLE.get(m.type.name);
400
+ return role !== undefined && role !== 'code';
401
+ }));
402
+ /** The last index, from `i` on, through which `mark` runs unbroken. */
403
+ const runsTo = (i, mark) => {
404
+ let j = i;
405
+ while (j + 1 < children.length && mark.isInSet(containers[j + 1]))
406
+ j++;
407
+ return j;
408
+ };
409
+ const root = [];
410
+ const stack = [];
411
+ const top = () => stack.length ? stack[stack.length - 1].children : root;
412
+ children.forEach((child, i) => {
413
+ const want = containers[i];
414
+ let keep = 0;
415
+ while (keep < stack.length && stack[keep].mark.isInSet(want))
416
+ keep++;
417
+ stack.length = keep;
418
+ // Longest-running first; between two that run as far, emphasis outside
419
+ // a link — `~~[ a](u)~~` can hold the space at the link's edge, while
420
+ // `[~~ a~~](u)` would have to move it out of the strikethrough.
421
+ const opening = want
422
+ .filter((m) => !stack.some((open) => open.mark.eq(m)))
423
+ .map((m, order) => ({
424
+ m,
425
+ end: runsTo(i, m),
426
+ link: MARK_ROLE.get(m.type.name) === 'link' ? 1 : 0,
427
+ order,
428
+ }))
429
+ .sort((a, b) => b.end - a.end || a.link - b.link || a.order - b.order);
430
+ for (const { m } of opening) {
431
+ const inner = [];
432
+ top().push(containerOf(m, inner));
433
+ stack.push({ mark: m, children: inner });
434
+ }
435
+ const code = child.marks.some((m) => MARK_ROLE.get(m.type.name) === 'code');
436
+ top().push(...leafOf(child, code));
437
+ });
438
+ return root;
439
+ }
440
+ function containerOf(mark, children) {
441
+ switch (MARK_ROLE.get(mark.type.name)) {
442
+ case 'strong':
443
+ return { type: 'strong', children };
444
+ case 'em':
445
+ return { type: 'em', children };
446
+ case 'del':
447
+ return { type: 'del', children };
448
+ default: {
449
+ const title = mark.attrs.title;
450
+ return {
451
+ type: 'link',
452
+ href: String(mark.attrs.href ?? ''),
453
+ image: false,
454
+ children,
455
+ ...(typeof title === 'string' && title ? { title } : null),
456
+ };
457
+ }
458
+ }
459
+ }
460
+ function leafOf(node, code) {
461
+ if (node.isText) {
462
+ const text = node.text ?? '';
463
+ return [code ? { type: 'code', text } : { type: 'text', text }];
464
+ }
465
+ const role = NODE_ROLE.get(node.type.name);
466
+ if (role === 'hardBreak')
467
+ return [{ type: 'break' }];
468
+ if (role === 'image') {
469
+ const alt = node.attrs.alt;
470
+ const title = node.attrs.title;
471
+ return [
472
+ {
473
+ type: 'link',
474
+ href: String(node.attrs.src ?? ''),
475
+ image: true,
476
+ children: typeof alt === 'string' && alt ? [{ type: 'text', text: alt }] : [],
477
+ ...(typeof title === 'string' && title ? { title } : null),
478
+ },
479
+ ];
480
+ }
481
+ // an inline node markdown has no word for: its text, if it has any
482
+ const leaf = node.type.spec.leafText?.(node) ?? node.textContent;
483
+ return leaf ? [{ type: 'text', text: leaf }] : [];
484
+ }
485
+ // --- plain text ----------------------------------------------------------------
486
+ /** One textblock per line, both ways — `format="text"`. */
487
+ export function docFromText(schema, text) {
488
+ const lines = text.replace(/\r\n?/g, '\n').split('\n');
489
+ return (schema.topNodeType.createAndFill(null, lines.map((line) => paragraph(schema, line ? [schema.text(line)] : []))) ?? schema.topNodeType.createAndFill());
490
+ }
491
+ export function textFromDoc(doc) {
492
+ return doc.textBetween(0, doc.content.size, '\n', (leaf) => NODE_ROLE.get(leaf.type.name) === 'hardBreak'
493
+ ? '\n'
494
+ : (leaf.type.spec.leafText?.(leaf) ?? ''));
495
+ }
496
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/rich-text-editor/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import { Node } from 'react-x11/node';
2
+ import type { A11yTextState } from 'react-x11/node';
3
+ import { RichTextNode } from '../richtext/node.js';
4
+ import type { FillContext } from '../richtext/runs.js';
5
+ import type { InlineMap } from './inline.js';
6
+ /** The root element's name — registration key, `kind`, JSX tag. */
7
+ export declare const ROOT_ELEMENT = "richeditor";
8
+ /** The textblock element's name. */
9
+ export declare const TEXT_ELEMENT = "richeditortext";
10
+ type KeyEvent = Parameters<NonNullable<Node['defaultKeyDown']>>[0];
11
+ type ComposeEvent = Parameters<NonNullable<Node['defaultComposition']>>[0];
12
+ /** What a listener `view.dom.addEventListener` took is handed: a focus
13
+ * event, DOM-named, from the root element. */
14
+ export interface DomFocusEvent {
15
+ readonly type: 'focus' | 'blur' | 'focusin' | 'focusout';
16
+ readonly target: RichEditorNode;
17
+ }
18
+ /**
19
+ * What the elements report to — the editor view (`./view.ts`). An interface
20
+ * so the nodes and the view can each be read, and tested, without the
21
+ * other.
22
+ */
23
+ export interface EditorHost {
24
+ attachRoot(node: RichEditorNode): void;
25
+ detachRoot(node: RichEditorNode): void;
26
+ attachText(key: string, node: EditorTextNode): void;
27
+ detachText(key: string, node: EditorTextNode): void;
28
+ /** A mounted block drew something new — runs, a map, a node: whatever of
29
+ * the selection is in it has to be placed again. */
30
+ textUpdated(key: string, node: EditorTextNode): void;
31
+ keyDown(ev: KeyEvent): void;
32
+ composition(ev: ComposeEvent): void;
33
+ focusChanged(focused: boolean): void;
34
+ a11yText(): A11yTextState | null;
35
+ a11ySelect(start: number, end: number): boolean;
36
+ a11yReplace(start: number, end: number, text: string): boolean;
37
+ }
38
+ /** Register both elements. Called at `./index.ts`'s module scope — never
39
+ * here — so importing this module registers nothing. Idempotent, for the
40
+ * same lockfile-skew reason `registerRichText` is. */
41
+ export declare function registerEditorElements(): void;
42
+ export declare class RichEditorNode extends Node {
43
+ constructor(props: Record<string, unknown>, app: unknown);
44
+ get host(): EditorHost | null;
45
+ applyProps(nextProps: Record<string, unknown>, prevProps: Record<string, unknown>): void;
46
+ destroySubtree(): void;
47
+ /**
48
+ * Listeners a plugin written for a browser put on `view.dom` —
49
+ * y-prosemirror's cursor plugin listens for `focusin` and `focusout` to
50
+ * publish and withdraw the local caret. The focus family is all that is
51
+ * sent: `focus`, `blur`, `focusin`, `focusout`, after the view has heard
52
+ * the change, so `view.hasFocus()` already agrees with the event.
53
+ */
54
+ private domEventListeners;
55
+ addEventListener(type: string, listener: (ev: DomFocusEvent) => void): void;
56
+ removeEventListener(type: string, listener: (ev: DomFocusEvent) => void): void;
57
+ private sendDomEvent;
58
+ defaultKeyDown(ev: KeyEvent): void;
59
+ defaultComposition(ev: ComposeEvent): void;
60
+ defaultFocus(): void;
61
+ defaultBlur(): void;
62
+ a11yTextState(): A11yTextState | null;
63
+ a11ySetSelection(start: number, end: number): boolean;
64
+ a11yReplaceText(start: number, end: number, text: string): boolean;
65
+ }
66
+ export declare class EditorTextNode extends RichTextNode {
67
+ /** The selection band, in drawn code points, or null. */
68
+ private editorBand;
69
+ private editorBandColor;
70
+ /** The caret, as a drawn code point index, or null when it is elsewhere. */
71
+ private editorCaret;
72
+ private editorCaretColor;
73
+ private editorCaretOn;
74
+ /** Collaborators' carets in this block, in drawn code points. */
75
+ private remoteCarets;
76
+ /** Where a drop would go in, in drawn code points, while a drag is over
77
+ * this block. */
78
+ private dropCaretAt;
79
+ private dropCaretColor;
80
+ constructor(props: Record<string, unknown>, app: unknown);
81
+ get host(): EditorHost | null;
82
+ /** The block this node draws — the view's key for it. */
83
+ get blockKey(): string;
84
+ /** How the drawn string maps back to the document. */
85
+ get map(): InlineMap | null;
86
+ applyProps(nextProps: Record<string, unknown>, prevProps: Record<string, unknown>): void;
87
+ destroySubtree(): void;
88
+ /** The selection band over this block, in drawn code points. */
89
+ setBand(band: {
90
+ start: number;
91
+ end: number;
92
+ } | null, color: string): void;
93
+ /** Where the caret is in this block, or null to take it away. */
94
+ setCaret(index: number | null, color: string): void;
95
+ /** One blink. Damages the caret's own rectangle and nothing else. */
96
+ blink(on: boolean): void;
97
+ private caretBox;
98
+ private damageCaret;
99
+ /** Collaborators' carets in this block — set by the view like the
100
+ * editor's own, and drawn beside it without blinking. */
101
+ setRemoteCarets(carets: readonly {
102
+ index: number;
103
+ color: string;
104
+ }[]): void;
105
+ /** The collaborators' carets this block draws. */
106
+ get collaboratorCarets(): readonly {
107
+ index: number;
108
+ color: string;
109
+ }[];
110
+ /** A collaborator's caret: a bar two pixels wide, and a flag beside
111
+ * its top — inside the line, so nothing paints outside the block. */
112
+ private remoteCaretBoxes;
113
+ private damageRemoteCarets;
114
+ /** The drop caret: where a drop would go in, or null to take it away. */
115
+ setDropCaret(index: number | null, color: string): void;
116
+ /** Where this block draws the drop caret, or null. */
117
+ get dropCaret(): number | null;
118
+ private dropCaretBox;
119
+ private damageDropCaret;
120
+ protected paintSelection(ctx: FillContext): void;
121
+ protected paintOverlay(ctx: FillContext): void;
122
+ /**
123
+ * The drawn code points of the visual line holding `index`: where Home and
124
+ * End go. Read off the same layout the glyphs came from, so a wrapped line
125
+ * ends where it is seen to end. Null on the mock backend, which lays
126
+ * nothing out.
127
+ */
128
+ lineRange(index: number): {
129
+ start: number;
130
+ end: number;
131
+ last: boolean;
132
+ } | null;
133
+ }
134
+ export {};
135
+ //# sourceMappingURL=nodes.d.ts.map