@react-x11/components 0.8.0 → 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 (323) hide show
  1. package/README.md +95 -34
  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/embed/client.d.ts +48 -3
  7. package/dist/embed/client.d.ts.map +1 -1
  8. package/dist/embed/client.js +79 -5
  9. package/dist/embed/client.js.map +1 -1
  10. package/dist/embed/index.d.ts +1 -1
  11. package/dist/embed/index.d.ts.map +1 -1
  12. package/dist/embed/index.js +1 -1
  13. package/dist/embed/index.js.map +1 -1
  14. package/dist/html/node.d.ts +3 -1
  15. package/dist/html/node.d.ts.map +1 -1
  16. package/dist/html/node.js +7 -5
  17. package/dist/html/node.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/{markdown → internal/markdown}/ast.d.ts +12 -0
  23. package/dist/internal/markdown/ast.d.ts.map +1 -0
  24. package/dist/internal/markdown/ast.js +22 -0
  25. package/dist/internal/markdown/ast.js.map +1 -0
  26. package/dist/internal/markdown/parse.d.ts.map +1 -0
  27. package/dist/{markdown → internal/markdown}/parse.js +112 -22
  28. package/dist/internal/markdown/parse.js.map +1 -0
  29. package/dist/internal/markdown/stringify.d.ts +4 -0
  30. package/dist/internal/markdown/stringify.d.ts.map +1 -0
  31. package/dist/internal/markdown/stringify.js +684 -0
  32. package/dist/internal/markdown/stringify.js.map +1 -0
  33. package/dist/internal/markdown/tags.d.ts.map +1 -0
  34. package/dist/internal/markdown/tags.js.map +1 -0
  35. package/dist/internal/scroll.d.ts +3 -2
  36. package/dist/internal/scroll.d.ts.map +1 -1
  37. package/dist/internal/scroll.js +1 -0
  38. package/dist/internal/scroll.js.map +1 -1
  39. package/dist/maps/anchors.d.ts +98 -0
  40. package/dist/maps/anchors.d.ts.map +1 -0
  41. package/dist/maps/anchors.js +531 -0
  42. package/dist/maps/anchors.js.map +1 -0
  43. package/dist/maps/controller.d.ts +283 -0
  44. package/dist/maps/controller.d.ts.map +1 -0
  45. package/dist/maps/controller.js +743 -0
  46. package/dist/maps/controller.js.map +1 -0
  47. package/dist/maps/gl/buckets.d.ts +95 -0
  48. package/dist/maps/gl/buckets.d.ts.map +1 -0
  49. package/dist/maps/gl/buckets.js +362 -0
  50. package/dist/maps/gl/buckets.js.map +1 -0
  51. package/dist/maps/gl/build-worker.d.ts +13 -0
  52. package/dist/maps/gl/build-worker.d.ts.map +1 -0
  53. package/dist/maps/gl/build-worker.js +44 -0
  54. package/dist/maps/gl/build-worker.js.map +1 -0
  55. package/dist/maps/gl/color.d.ts +8 -0
  56. package/dist/maps/gl/color.d.ts.map +1 -0
  57. package/dist/maps/gl/color.js +57 -0
  58. package/dist/maps/gl/color.js.map +1 -0
  59. package/dist/maps/gl/cover.d.ts +51 -0
  60. package/dist/maps/gl/cover.d.ts.map +1 -0
  61. package/dist/maps/gl/cover.js +124 -0
  62. package/dist/maps/gl/cover.js.map +1 -0
  63. package/dist/maps/gl/index.d.ts +3 -0
  64. package/dist/maps/gl/index.d.ts.map +1 -0
  65. package/dist/maps/gl/index.js +20 -0
  66. package/dist/maps/gl/index.js.map +1 -0
  67. package/dist/maps/gl/markers.d.ts +28 -0
  68. package/dist/maps/gl/markers.d.ts.map +1 -0
  69. package/dist/maps/gl/markers.js +60 -0
  70. package/dist/maps/gl/markers.js.map +1 -0
  71. package/dist/maps/gl/overlays.d.ts +68 -0
  72. package/dist/maps/gl/overlays.d.ts.map +1 -0
  73. package/dist/maps/gl/overlays.js +300 -0
  74. package/dist/maps/gl/overlays.js.map +1 -0
  75. package/dist/maps/gl/pane.d.ts +12 -0
  76. package/dist/maps/gl/pane.d.ts.map +1 -0
  77. package/dist/maps/gl/pane.js +37 -0
  78. package/dist/maps/gl/pane.js.map +1 -0
  79. package/dist/maps/gl/placement.d.ts +111 -0
  80. package/dist/maps/gl/placement.d.ts.map +1 -0
  81. package/dist/maps/gl/placement.js +567 -0
  82. package/dist/maps/gl/placement.js.map +1 -0
  83. package/dist/maps/gl/renderer.d.ts +352 -0
  84. package/dist/maps/gl/renderer.d.ts.map +1 -0
  85. package/dist/maps/gl/renderer.js +1127 -0
  86. package/dist/maps/gl/renderer.js.map +1 -0
  87. package/dist/maps/gl/shaders.d.ts +120 -0
  88. package/dist/maps/gl/shaders.d.ts.map +1 -0
  89. package/dist/maps/gl/shaders.js +451 -0
  90. package/dist/maps/gl/shaders.js.map +1 -0
  91. package/dist/maps/gl/store.d.ts +115 -0
  92. package/dist/maps/gl/store.d.ts.map +1 -0
  93. package/dist/maps/gl/store.js +469 -0
  94. package/dist/maps/gl/store.js.map +1 -0
  95. package/dist/maps/gl/text.d.ts +154 -0
  96. package/dist/maps/gl/text.d.ts.map +1 -0
  97. package/dist/maps/gl/text.js +382 -0
  98. package/dist/maps/gl/text.js.map +1 -0
  99. package/dist/maps/gl/view.d.ts +54 -0
  100. package/dist/maps/gl/view.d.ts.map +1 -0
  101. package/dist/maps/gl/view.js +974 -0
  102. package/dist/maps/gl/view.js.map +1 -0
  103. package/dist/maps/index.d.ts +1 -1
  104. package/dist/maps/index.d.ts.map +1 -1
  105. package/dist/maps/index.js +216 -52
  106. package/dist/maps/index.js.map +1 -1
  107. package/dist/maps/labels.d.ts +37 -16
  108. package/dist/maps/labels.d.ts.map +1 -1
  109. package/dist/maps/labels.js +188 -119
  110. package/dist/maps/labels.js.map +1 -1
  111. package/dist/maps/node.d.ts +162 -56
  112. package/dist/maps/node.d.ts.map +1 -1
  113. package/dist/maps/node.js +607 -515
  114. package/dist/maps/node.js.map +1 -1
  115. package/dist/maps/overlay.d.ts +72 -9
  116. package/dist/maps/overlay.d.ts.map +1 -1
  117. package/dist/maps/overlay.js +108 -28
  118. package/dist/maps/overlay.js.map +1 -1
  119. package/dist/maps/paint.d.ts +3 -0
  120. package/dist/maps/paint.d.ts.map +1 -1
  121. package/dist/maps/paint.js.map +1 -1
  122. package/dist/maps/proj.d.ts +14 -0
  123. package/dist/maps/proj.d.ts.map +1 -1
  124. package/dist/maps/proj.js +28 -0
  125. package/dist/maps/proj.js.map +1 -1
  126. package/dist/maps/renderer.d.ts +69 -0
  127. package/dist/maps/renderer.d.ts.map +1 -0
  128. package/dist/maps/renderer.js +66 -0
  129. package/dist/maps/renderer.js.map +1 -0
  130. package/dist/maps/sources.d.ts +25 -3
  131. package/dist/maps/sources.d.ts.map +1 -1
  132. package/dist/maps/sources.js +17 -0
  133. package/dist/maps/sources.js.map +1 -1
  134. package/dist/maps/theme.d.ts +19 -0
  135. package/dist/maps/theme.d.ts.map +1 -0
  136. package/dist/maps/theme.js +44 -0
  137. package/dist/maps/theme.js.map +1 -0
  138. package/dist/maps/tiles.d.ts +117 -17
  139. package/dist/maps/tiles.d.ts.map +1 -1
  140. package/dist/maps/tiles.js +163 -30
  141. package/dist/maps/tiles.js.map +1 -1
  142. package/dist/maps/types.d.ts +188 -20
  143. package/dist/maps/types.d.ts.map +1 -1
  144. package/dist/markdown/expressions.d.ts +1 -1
  145. package/dist/markdown/expressions.d.ts.map +1 -1
  146. package/dist/markdown/expressions.js.map +1 -1
  147. package/dist/markdown/index.d.ts +7 -6
  148. package/dist/markdown/index.d.ts.map +1 -1
  149. package/dist/markdown/index.js +9 -7
  150. package/dist/markdown/index.js.map +1 -1
  151. package/dist/markdown/spans.d.ts +1 -1
  152. package/dist/markdown/spans.d.ts.map +1 -1
  153. package/dist/media-player/index.d.ts +11 -3
  154. package/dist/media-player/index.d.ts.map +1 -1
  155. package/dist/media-player/index.js +13 -2
  156. package/dist/media-player/index.js.map +1 -1
  157. package/dist/rich-text-editor/clipboard.d.ts +23 -0
  158. package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
  159. package/dist/rich-text-editor/clipboard.js +307 -0
  160. package/dist/rich-text-editor/clipboard.js.map +1 -0
  161. package/dist/rich-text-editor/collab.d.ts +32 -0
  162. package/dist/rich-text-editor/collab.d.ts.map +1 -0
  163. package/dist/rich-text-editor/collab.js +55 -0
  164. package/dist/rich-text-editor/collab.js.map +1 -0
  165. package/dist/rich-text-editor/commands.d.ts +50 -0
  166. package/dist/rich-text-editor/commands.d.ts.map +1 -0
  167. package/dist/rich-text-editor/commands.js +376 -0
  168. package/dist/rich-text-editor/commands.js.map +1 -0
  169. package/dist/rich-text-editor/drag.d.ts +68 -0
  170. package/dist/rich-text-editor/drag.d.ts.map +1 -0
  171. package/dist/rich-text-editor/drag.js +148 -0
  172. package/dist/rich-text-editor/drag.js.map +1 -0
  173. package/dist/rich-text-editor/html.d.ts +145 -0
  174. package/dist/rich-text-editor/html.d.ts.map +1 -0
  175. package/dist/rich-text-editor/html.js +516 -0
  176. package/dist/rich-text-editor/html.js.map +1 -0
  177. package/dist/rich-text-editor/index.d.ts +263 -0
  178. package/dist/rich-text-editor/index.d.ts.map +1 -0
  179. package/dist/rich-text-editor/index.js +822 -0
  180. package/dist/rich-text-editor/index.js.map +1 -0
  181. package/dist/rich-text-editor/inline.d.ts +94 -0
  182. package/dist/rich-text-editor/inline.d.ts.map +1 -0
  183. package/dist/rich-text-editor/inline.js +252 -0
  184. package/dist/rich-text-editor/inline.js.map +1 -0
  185. package/dist/rich-text-editor/keymap.d.ts +71 -0
  186. package/dist/rich-text-editor/keymap.d.ts.map +1 -0
  187. package/dist/rich-text-editor/keymap.js +393 -0
  188. package/dist/rich-text-editor/keymap.js.map +1 -0
  189. package/dist/rich-text-editor/keys.d.ts +29 -0
  190. package/dist/rich-text-editor/keys.d.ts.map +1 -0
  191. package/dist/rich-text-editor/keys.js +93 -0
  192. package/dist/rich-text-editor/keys.js.map +1 -0
  193. package/dist/rich-text-editor/look.d.ts +71 -0
  194. package/dist/rich-text-editor/look.d.ts.map +1 -0
  195. package/dist/rich-text-editor/look.js +342 -0
  196. package/dist/rich-text-editor/look.js.map +1 -0
  197. package/dist/rich-text-editor/markdown.d.ts +18 -0
  198. package/dist/rich-text-editor/markdown.d.ts.map +1 -0
  199. package/dist/rich-text-editor/markdown.js +496 -0
  200. package/dist/rich-text-editor/markdown.js.map +1 -0
  201. package/dist/rich-text-editor/nodes.d.ts +135 -0
  202. package/dist/rich-text-editor/nodes.d.ts.map +1 -0
  203. package/dist/rich-text-editor/nodes.js +397 -0
  204. package/dist/rich-text-editor/nodes.js.map +1 -0
  205. package/dist/rich-text-editor/render.d.ts +68 -0
  206. package/dist/rich-text-editor/render.d.ts.map +1 -0
  207. package/dist/rich-text-editor/render.js +500 -0
  208. package/dist/rich-text-editor/render.js.map +1 -0
  209. package/dist/rich-text-editor/schema.d.ts +16 -0
  210. package/dist/rich-text-editor/schema.d.ts.map +1 -0
  211. package/dist/rich-text-editor/schema.js +386 -0
  212. package/dist/rich-text-editor/schema.js.map +1 -0
  213. package/dist/rich-text-editor/store.d.ts +11 -0
  214. package/dist/rich-text-editor/store.d.ts.map +1 -0
  215. package/dist/rich-text-editor/store.js +43 -0
  216. package/dist/rich-text-editor/store.js.map +1 -0
  217. package/dist/rich-text-editor/suggest.d.ts +127 -0
  218. package/dist/rich-text-editor/suggest.d.ts.map +1 -0
  219. package/dist/rich-text-editor/suggest.js +0 -0
  220. package/dist/rich-text-editor/suggest.js.map +1 -0
  221. package/dist/rich-text-editor/tables.d.ts +41 -0
  222. package/dist/rich-text-editor/tables.d.ts.map +1 -0
  223. package/dist/rich-text-editor/tables.js +204 -0
  224. package/dist/rich-text-editor/tables.js.map +1 -0
  225. package/dist/rich-text-editor/toolbar.d.ts +58 -0
  226. package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
  227. package/dist/rich-text-editor/toolbar.js +548 -0
  228. package/dist/rich-text-editor/toolbar.js.map +1 -0
  229. package/dist/rich-text-editor/view.d.ts +368 -0
  230. package/dist/rich-text-editor/view.d.ts.map +1 -0
  231. package/dist/rich-text-editor/view.js +1968 -0
  232. package/dist/rich-text-editor/view.js.map +1 -0
  233. package/dist/rich-text-editor/virtual.d.ts +54 -0
  234. package/dist/rich-text-editor/virtual.d.ts.map +1 -0
  235. package/dist/rich-text-editor/virtual.js +262 -0
  236. package/dist/rich-text-editor/virtual.js.map +1 -0
  237. package/dist/richtext/node.d.ts +25 -2
  238. package/dist/richtext/node.d.ts.map +1 -1
  239. package/dist/richtext/node.js +46 -24
  240. package/dist/richtext/node.js.map +1 -1
  241. package/dist/terminal/backends.d.ts +4 -1
  242. package/dist/terminal/backends.d.ts.map +1 -1
  243. package/dist/terminal/backends.js.map +1 -1
  244. package/dist/terminal/index.d.ts +18 -7
  245. package/dist/terminal/index.d.ts.map +1 -1
  246. package/dist/terminal/index.js +28 -11
  247. package/dist/terminal/index.js.map +1 -1
  248. package/package.json +23 -4
  249. package/src/charts/node.ts +6 -2
  250. package/src/embed/client.ts +102 -8
  251. package/src/embed/index.ts +2 -0
  252. package/src/html/node.ts +7 -5
  253. package/src/index.ts +2 -0
  254. package/src/{markdown → internal/markdown}/ast.ts +24 -7
  255. package/src/{markdown → internal/markdown}/parse.ts +134 -24
  256. package/src/internal/markdown/stringify.ts +772 -0
  257. package/src/internal/scroll.ts +5 -3
  258. package/src/maps/anchors.ts +607 -0
  259. package/src/maps/controller.ts +999 -0
  260. package/src/maps/gl/buckets.ts +457 -0
  261. package/src/maps/gl/build-worker.ts +55 -0
  262. package/src/maps/gl/color.ts +62 -0
  263. package/src/maps/gl/cover.ts +170 -0
  264. package/src/maps/gl/index.ts +23 -0
  265. package/src/maps/gl/markers.ts +83 -0
  266. package/src/maps/gl/overlays.ts +379 -0
  267. package/src/maps/gl/pane.ts +42 -0
  268. package/src/maps/gl/placement.ts +816 -0
  269. package/src/maps/gl/renderer.ts +1576 -0
  270. package/src/maps/gl/shaders.ts +486 -0
  271. package/src/maps/gl/store.ts +566 -0
  272. package/src/maps/gl/text.ts +495 -0
  273. package/src/maps/gl/view.ts +1224 -0
  274. package/src/maps/index.ts +270 -81
  275. package/src/maps/labels.ts +214 -121
  276. package/src/maps/node.ts +763 -629
  277. package/src/maps/overlay.ts +148 -43
  278. package/src/maps/paint.ts +3 -0
  279. package/src/maps/proj.ts +31 -0
  280. package/src/maps/renderer.ts +155 -0
  281. package/src/maps/sources.ts +38 -3
  282. package/src/maps/theme.ts +51 -0
  283. package/src/maps/tiles.ts +191 -33
  284. package/src/maps/types.ts +188 -20
  285. package/src/markdown/expressions.ts +5 -1
  286. package/src/markdown/index.ts +14 -11
  287. package/src/markdown/spans.ts +1 -1
  288. package/src/media-player/index.ts +18 -4
  289. package/src/rich-text-editor/clipboard.ts +439 -0
  290. package/src/rich-text-editor/collab.ts +91 -0
  291. package/src/rich-text-editor/commands.ts +448 -0
  292. package/src/rich-text-editor/dom-globals.d.ts +23 -0
  293. package/src/rich-text-editor/drag.ts +211 -0
  294. package/src/rich-text-editor/html.ts +619 -0
  295. package/src/rich-text-editor/index.ts +1331 -0
  296. package/src/rich-text-editor/inline.ts +345 -0
  297. package/src/rich-text-editor/keymap.ts +510 -0
  298. package/src/rich-text-editor/keys.ts +119 -0
  299. package/src/rich-text-editor/look.ts +427 -0
  300. package/src/rich-text-editor/markdown.ts +653 -0
  301. package/src/rich-text-editor/nodes.ts +497 -0
  302. package/src/rich-text-editor/render.ts +800 -0
  303. package/src/rich-text-editor/schema.ts +431 -0
  304. package/src/rich-text-editor/store.ts +39 -0
  305. package/src/rich-text-editor/suggest.ts +597 -0
  306. package/src/rich-text-editor/tables.ts +272 -0
  307. package/src/rich-text-editor/toolbar.ts +724 -0
  308. package/src/rich-text-editor/view.ts +2287 -0
  309. package/src/rich-text-editor/virtual.ts +347 -0
  310. package/src/richtext/node.ts +59 -30
  311. package/src/terminal/backends.ts +4 -1
  312. package/src/terminal/index.ts +43 -15
  313. package/dist/markdown/ast.d.ts.map +0 -1
  314. package/dist/markdown/ast.js +0 -17
  315. package/dist/markdown/ast.js.map +0 -1
  316. package/dist/markdown/parse.d.ts.map +0 -1
  317. package/dist/markdown/parse.js.map +0 -1
  318. package/dist/markdown/tags.d.ts.map +0 -1
  319. package/dist/markdown/tags.js.map +0 -1
  320. /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
  321. /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
  322. /package/dist/{markdown → internal/markdown}/tags.js +0 -0
  323. /package/src/{markdown → internal/markdown}/tags.ts +0 -0
@@ -0,0 +1,41 @@
1
+ import type { Schema } from 'prosemirror-model';
2
+ import { Plugin } from 'prosemirror-state';
3
+ import type { Command, EditorState } from 'prosemirror-state';
4
+ import { isInTable } from 'prosemirror-tables';
5
+ /** A column's alignment, as GFM writes it — `:--`, `:-:`, `--:` — or none. */
6
+ export type ColumnAlign = 'left' | 'center' | 'right' | null;
7
+ /** A row above the one the selection is in. Above a markdown table's
8
+ * header, the new row becomes the header. */
9
+ export declare const addRowBefore: Command;
10
+ /** A row below the one the selection is in. */
11
+ export declare const addRowAfter: Command;
12
+ /** The selected rows out. The last row cannot go — delete the table. When a
13
+ * markdown table loses its header, the row below becomes it. */
14
+ export declare const deleteRow: Command;
15
+ /** A column before the one the selection is in. */
16
+ export declare const addColumnBefore: Command;
17
+ /** A column after the one the selection is in. */
18
+ export declare const addColumnAfter: Command;
19
+ /** The selected columns out. The last column cannot go. */
20
+ export declare const deleteColumn: Command;
21
+ /** The table the selection is in, whole. */
22
+ export declare const deleteTable: Command;
23
+ /**
24
+ * A table where the selection is: `rows` rows of `cols` columns, the first
25
+ * row a header, and the caret in its first cell — with a paragraph after it
26
+ * when nothing that takes a caret would follow. Not inside another table.
27
+ */
28
+ export declare function insertTable(rows?: number, cols?: number): Command;
29
+ /** Every cell of the selected columns aligned: GFM's alignment is a
30
+ * column's, not a cell's. `null` takes it off. */
31
+ export declare function setColumnAlign(align: ColumnAlign): Command;
32
+ /** The alignment of the column the selection is in, or undefined outside a
33
+ * table — what lights an alignment button. */
34
+ export declare function columnAlign(state: EditorState): ColumnAlign | undefined;
35
+ export { isInTable };
36
+ /** Every table kept rectangular: prosemirror-tables' `fixTables` after each
37
+ * change, for a table that a paste or an HTML document left ragged. */
38
+ export declare function tableRepair(): Plugin;
39
+ /** Whether the schema has tables prosemirror-tables can edit. */
40
+ export declare function hasTables(schema: Schema): boolean;
41
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/rich-text-editor/tables.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAA4B,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAiB,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAUL,SAAS,EAGV,MAAM,oBAAoB,CAAC;AAE5B,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AAuG7D;8CAC8C;AAC9C,eAAO,MAAM,YAAY,EAAE,OAAsC,CAAC;AAClE,+CAA+C;AAC/C,eAAO,MAAM,WAAW,EAAE,OAAqC,CAAC;AAChE;iEACiE;AACjE,eAAO,MAAM,SAAS,EAAE,OAAmC,CAAC;AAC5D,mDAAmD;AACnD,eAAO,MAAM,eAAe,EAAE,OAAyC,CAAC;AACxE,kDAAkD;AAClD,eAAO,MAAM,cAAc,EAAE,OAAwC,CAAC;AACtE,2DAA2D;AAC3D,eAAO,MAAM,YAAY,EAAE,OAAsC,CAAC;AAClE,4CAA4C;AAC5C,eAAO,MAAM,WAAW,EAAE,OAAuB,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,SAAI,EAAE,IAAI,SAAI,GAAG,OAAO,CAkDvD;AAED;mDACmD;AACnD,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CA0B1D;AAED;+CAC+C;AAC/C,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAKvE;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB;wEACwE;AACxE,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjD"}
@@ -0,0 +1,204 @@
1
+ import { Plugin, TextSelection } from 'prosemirror-state';
2
+ import { addColumnAfter as addColumnAfterPM, addColumnBefore as addColumnBeforePM, addRowAfter as addRowAfterPM, addRowBefore as addRowBeforePM, deleteColumn as deleteColumnPM, deleteRow as deleteRowPM, deleteTable as deleteTablePM, findTable, fixTables, isInTable, selectedRect, tableNodeTypes, } from 'prosemirror-tables';
3
+ /** The schema's table node types by prosemirror-tables' roles, or null for
4
+ * a schema without tables. */
5
+ function tableTypes(schema) {
6
+ const roles = tableNodeTypes(schema);
7
+ const { table, row, cell } = roles;
8
+ if (!table || !row || !cell)
9
+ return null;
10
+ const header = roles.header_cell;
11
+ return {
12
+ table,
13
+ row,
14
+ cell,
15
+ header: header && header !== cell ? header : null,
16
+ };
17
+ }
18
+ function alignOf(cell) {
19
+ const a = cell.attrs.align;
20
+ return a === 'left' || a === 'center' || a === 'right' ? a : null;
21
+ }
22
+ /** Header cells in the first row and nowhere else, and no spans: the only
23
+ * table markdown can write. */
24
+ function markdownShaped(table, types) {
25
+ if (!types.header || table.childCount === 0)
26
+ return false;
27
+ let shaped = true;
28
+ table.forEach((row, _offset, index) => {
29
+ row.forEach((cell) => {
30
+ if ((cell.type === types.header) !== (index === 0))
31
+ shaped = false;
32
+ if ((cell.attrs.colspan ?? 1) !== 1 || (cell.attrs.rowspan ?? 1) !== 1)
33
+ shaped = false;
34
+ });
35
+ });
36
+ return shaped;
37
+ }
38
+ /**
39
+ * Put markdown's shape back on the table at `tablePos`: header cells in the
40
+ * first row and plain ones below, and each column aligned the way the first
41
+ * of its cells that says so is. Cells change type and attributes in place,
42
+ * so no position moves.
43
+ */
44
+ function keepMarkdownShape(tr, tablePos, types) {
45
+ const table = tr.doc.nodeAt(tablePos);
46
+ if (!table || table.type !== types.table || !types.header)
47
+ return;
48
+ const header = types.header;
49
+ // `??=` fills a column still at null too, so the first cell that says
50
+ // how its column is aligned wins
51
+ const aligns = [];
52
+ table.forEach((row) => {
53
+ row.forEach((cell, _offset, col) => {
54
+ aligns[col] ??= alignOf(cell);
55
+ });
56
+ });
57
+ table.forEach((row, rowOffset, index) => {
58
+ row.forEach((cell, cellOffset, col) => {
59
+ const type = index === 0 ? header : types.cell;
60
+ const align = aligns[col] ?? null;
61
+ const alignable = 'align' in cell.attrs;
62
+ if (cell.type === type && (!alignable || alignOf(cell) === align))
63
+ return;
64
+ tr.setNodeMarkup(tablePos + 1 + rowOffset + 1 + cellOffset, type, alignable ? { ...cell.attrs, align } : cell.attrs, cell.marks);
65
+ });
66
+ });
67
+ }
68
+ /** A prosemirror-tables command that leaves a markdown-shaped table
69
+ * markdown-shaped. */
70
+ function keepingShape(command) {
71
+ return (state, dispatch) => {
72
+ const types = tableTypes(state.schema);
73
+ const found = isInTable(state) ? findTable(state.selection.$from) : null;
74
+ if (!dispatch || !types || !found || !markdownShaped(found.node, types))
75
+ return command(state, dispatch);
76
+ return command(state, (tr) => {
77
+ keepMarkdownShape(tr, tr.mapping.map(found.pos), types);
78
+ dispatch(tr.scrollIntoView());
79
+ });
80
+ };
81
+ }
82
+ /** A row above the one the selection is in. Above a markdown table's
83
+ * header, the new row becomes the header. */
84
+ export const addRowBefore = keepingShape(addRowBeforePM);
85
+ /** A row below the one the selection is in. */
86
+ export const addRowAfter = keepingShape(addRowAfterPM);
87
+ /** The selected rows out. The last row cannot go — delete the table. When a
88
+ * markdown table loses its header, the row below becomes it. */
89
+ export const deleteRow = keepingShape(deleteRowPM);
90
+ /** A column before the one the selection is in. */
91
+ export const addColumnBefore = keepingShape(addColumnBeforePM);
92
+ /** A column after the one the selection is in. */
93
+ export const addColumnAfter = keepingShape(addColumnAfterPM);
94
+ /** The selected columns out. The last column cannot go. */
95
+ export const deleteColumn = keepingShape(deleteColumnPM);
96
+ /** The table the selection is in, whole. */
97
+ export const deleteTable = deleteTablePM;
98
+ /**
99
+ * A table where the selection is: `rows` rows of `cols` columns, the first
100
+ * row a header, and the caret in its first cell — with a paragraph after it
101
+ * when nothing that takes a caret would follow. Not inside another table.
102
+ */
103
+ export function insertTable(rows = 3, cols = 3) {
104
+ return (state, dispatch) => {
105
+ const types = tableTypes(state.schema);
106
+ if (!types || isInTable(state) || rows < 1 || cols < 1)
107
+ return false;
108
+ const make = (type) => types.row.create(null, Array.from({ length: cols }, () => type.createAndFill()));
109
+ const table = types.table.create(null, [
110
+ make(types.header ?? types.cell),
111
+ ...Array.from({ length: rows - 1 }, () => make(types.cell)),
112
+ ]);
113
+ if (!dispatch)
114
+ return true;
115
+ const from = state.selection.from;
116
+ const tr = state.tr.replaceSelectionWith(table);
117
+ // the node itself, where the replace put it — or, had fitting copied it,
118
+ // the first table from where the selection was
119
+ let at = -1;
120
+ tr.doc.descendants((node, pos) => {
121
+ if (at >= 0)
122
+ return false;
123
+ if (node === table)
124
+ at = pos;
125
+ return true;
126
+ });
127
+ if (at < 0) {
128
+ tr.doc.nodesBetween(tr.mapping.map(from, -1), tr.doc.content.size, (n, pos) => {
129
+ if (at < 0 && n.type === types.table)
130
+ at = pos;
131
+ return at < 0;
132
+ });
133
+ }
134
+ if (at < 0)
135
+ return false;
136
+ const end = at + tr.doc.nodeAt(at).nodeSize;
137
+ const $end = tr.doc.resolve(end);
138
+ const para = state.schema.nodes.paragraph;
139
+ if (para &&
140
+ !$end.nodeAfter &&
141
+ $end.parent.canReplaceWith($end.index(), $end.index(), para)) {
142
+ tr.insert(end, para.create());
143
+ }
144
+ // table, row, cell: three steps in to the first cell's text
145
+ tr.setSelection(TextSelection.create(tr.doc, at + 3));
146
+ dispatch(tr.scrollIntoView());
147
+ return true;
148
+ };
149
+ }
150
+ /** Every cell of the selected columns aligned: GFM's alignment is a
151
+ * column's, not a cell's. `null` takes it off. */
152
+ export function setColumnAlign(align) {
153
+ return (state, dispatch) => {
154
+ if (!isInTable(state))
155
+ return false;
156
+ const rect = selectedRect(state);
157
+ const { map, table, tableStart } = rect;
158
+ const first = table.firstChild?.firstChild;
159
+ if (!first || !('align' in first.attrs))
160
+ return false;
161
+ if (!dispatch)
162
+ return true;
163
+ const tr = state.tr;
164
+ const done = new Set();
165
+ for (let row = 0; row < map.height; row++) {
166
+ for (let col = rect.left; col < rect.right; col++) {
167
+ const at = map.map[row * map.width + col];
168
+ if (done.has(at))
169
+ continue;
170
+ done.add(at);
171
+ const cell = table.nodeAt(at);
172
+ if (cell && alignOf(cell) !== align)
173
+ tr.setNodeMarkup(tableStart + at, undefined, {
174
+ ...cell.attrs,
175
+ align,
176
+ });
177
+ }
178
+ }
179
+ dispatch(tr);
180
+ return true;
181
+ };
182
+ }
183
+ /** The alignment of the column the selection is in, or undefined outside a
184
+ * table — what lights an alignment button. */
185
+ export function columnAlign(state) {
186
+ if (!isInTable(state))
187
+ return undefined;
188
+ const rect = selectedRect(state);
189
+ const cell = rect.table.nodeAt(rect.map.map[rect.left]);
190
+ return cell ? alignOf(cell) : null;
191
+ }
192
+ export { isInTable };
193
+ /** Every table kept rectangular: prosemirror-tables' `fixTables` after each
194
+ * change, for a table that a paste or an HTML document left ragged. */
195
+ export function tableRepair() {
196
+ return new Plugin({
197
+ appendTransaction: (_trs, oldState, state) => fixTables(state, oldState),
198
+ });
199
+ }
200
+ /** Whether the schema has tables prosemirror-tables can edit. */
201
+ export function hasTables(schema) {
202
+ return tableTypes(schema) !== null;
203
+ }
204
+ //# sourceMappingURL=tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/rich-text-editor/tables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { Style } from 'react-x11/style';
3
+ import type { Schema } from 'prosemirror-model';
4
+ import type { Command, EditorState } from 'prosemirror-state';
5
+ import type { TextRun } from '../richtext/index.js';
6
+ import type { EditorLook } from './look.js';
7
+ /** One button. */
8
+ export interface ToolbarItem {
9
+ /** Stable, and unique in one toolbar. */
10
+ id: string;
11
+ /** What the button shows when it has no `icon` — a letter or two, set in
12
+ * `labelStyle`. */
13
+ label: string;
14
+ labelStyle?: Omit<TextRun, 'text'>;
15
+ /** Drawn instead of the label: a node, or a function handed the ink the
16
+ * button's state picked — muted when it cannot run, the accent when it is
17
+ * on. An icon library's component goes here. */
18
+ icon?: ReactNode | ((ink: string) => ReactNode);
19
+ /** What a screen reader says it is. */
20
+ title: string;
21
+ run: Command;
22
+ /** Whether it is on here — bold is on inside bold text. */
23
+ active?(state: EditorState): boolean;
24
+ /** Whether it can run here. Default: whether `run` could. */
25
+ enabled?(state: EditorState): boolean;
26
+ /** Whether it is in the bar at all here — a table's rows only in a table.
27
+ * Default: always. */
28
+ visible?(state: EditorState): boolean;
29
+ }
30
+ /** The built-in items, by name. */
31
+ export type ToolbarItemName = 'undo' | 'redo' | 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'bold' | 'italic' | 'strike' | 'code' | 'link' | 'bulletList' | 'orderedList' | 'taskList' | 'blockquote' | 'codeBlock' | 'rule' | 'table' | 'rowBefore' | 'rowAfter' | 'columnBefore' | 'columnAfter' | 'deleteRow' | 'deleteColumn' | 'deleteTable' | 'alignLeft' | 'alignCenter' | 'alignRight';
32
+ /** What a `toolbar` array holds: a built-in by name, `'|'`, or an item. */
33
+ export type ToolbarEntry = ToolbarItemName | '|' | ToolbarItem;
34
+ /** `toolbar={true}`. Whatever the schema cannot do is left out, and the
35
+ * table's own group shows only with the caret in a table. The column
36
+ * alignments are there by name, for a bar of an app's own. */
37
+ export declare const DEFAULT_TOOLBAR: readonly ToolbarEntry[];
38
+ /**
39
+ * The built-in items for `schema`. `link` is the one that needs the
40
+ * component: a link needs a target to be typed, and the component owns the
41
+ * popup that asks for one.
42
+ */
43
+ export declare function toolbarItems(schema: Schema, options?: {
44
+ link?: Command;
45
+ }): Partial<Record<ToolbarItemName, ToolbarItem>>;
46
+ /** Entries as items: names resolved, the ones the schema cannot do dropped,
47
+ * and no separator left leading, trailing or doubled. */
48
+ export declare function resolveToolbar(entries: readonly ToolbarEntry[], items: Partial<Record<ToolbarItemName, ToolbarItem>>): (ToolbarItem | '|')[];
49
+ export interface ToolbarProps {
50
+ entries: readonly (ToolbarItem | '|')[];
51
+ state: EditorState;
52
+ run(command: Command): void;
53
+ look: EditorLook;
54
+ disabled?: boolean;
55
+ style?: Style;
56
+ }
57
+ export declare function Toolbar(props: ToolbarProps): ReactElement;
58
+ //# sourceMappingURL=toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/rich-text-editor/toolbar.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAI9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAUpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAkB5C,kBAAkB;AAClB,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX;wBACoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnC;;qDAEiD;IACjD,IAAI,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;IAChD,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,2DAA2D;IAC3D,MAAM,CAAC,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IACrC,6DAA6D;IAC7D,OAAO,CAAC,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IACtC;2BACuB;IACvB,OAAO,CAAC,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;CACvC;AAED,mCAAmC;AACnC,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,MAAM,GACN,WAAW,GACX,UAAU,GACV,UAAU,GACV,UAAU,GACV,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,YAAY,GACZ,aAAa,GACb,UAAU,GACV,YAAY,GACZ,WAAW,GACX,MAAM,GACN,OAAO,GACP,WAAW,GACX,UAAU,GACV,cAAc,GACd,aAAa,GACb,WAAW,GACX,cAAc,GACd,aAAa,GACb,WAAW,GACX,aAAa,GACb,YAAY,CAAC;AAEjB,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,GAAG,GAAG,WAAW,CAAC;AAE/D;;+DAE+D;AAC/D,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EA8BlD,CAAC;AA6NF;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAoM/C;AAED;0DAC0D;AAC1D,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,GACnD,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAYvB;AAmBD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,SAAS,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC;IACxC,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AA0DD,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAqCzD"}