@react-x11/components 0.8.0 → 0.10.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 (721) hide show
  1. package/README.md +105 -38
  2. package/dist/charts/node.d.ts +12 -2
  3. package/dist/charts/node.d.ts.map +1 -1
  4. package/dist/charts/node.js +50 -16
  5. package/dist/charts/node.js.map +1 -1
  6. package/dist/charts/render.d.ts +12 -3
  7. package/dist/charts/render.d.ts.map +1 -1
  8. package/dist/charts/render.js +94 -25
  9. package/dist/charts/render.js.map +1 -1
  10. package/dist/code/index.d.ts.map +1 -1
  11. package/dist/code/index.js +3 -1
  12. package/dist/code/index.js.map +1 -1
  13. package/dist/code-editor/completion.d.ts.map +1 -1
  14. package/dist/code-editor/completion.js +3 -2
  15. package/dist/code-editor/completion.js.map +1 -1
  16. package/dist/code-editor/index.d.ts.map +1 -1
  17. package/dist/code-editor/index.js +19 -0
  18. package/dist/code-editor/index.js.map +1 -1
  19. package/dist/code-editor/node.d.ts +177 -7
  20. package/dist/code-editor/node.d.ts.map +1 -1
  21. package/dist/code-editor/node.js +1329 -164
  22. package/dist/code-editor/node.js.map +1 -1
  23. package/dist/code-language/languages/glsl.d.ts.map +1 -1
  24. package/dist/code-language/languages/glsl.js +10 -2
  25. package/dist/code-language/languages/glsl.js.map +1 -1
  26. package/dist/code-language/languages/javascript.d.ts.map +1 -1
  27. package/dist/code-language/languages/javascript.js +18 -3
  28. package/dist/code-language/languages/javascript.js.map +1 -1
  29. package/dist/code-language/languages/json.d.ts.map +1 -1
  30. package/dist/code-language/languages/json.js +10 -2
  31. package/dist/code-language/languages/json.js.map +1 -1
  32. package/dist/code-language/languages/shell.d.ts.map +1 -1
  33. package/dist/code-language/languages/shell.js +10 -2
  34. package/dist/code-language/languages/shell.js.map +1 -1
  35. package/dist/code-language/languages/sql.d.ts.map +1 -1
  36. package/dist/code-language/languages/sql.js +20 -2
  37. package/dist/code-language/languages/sql.js.map +1 -1
  38. package/dist/code-language/stream.d.ts +22 -0
  39. package/dist/code-language/stream.d.ts.map +1 -1
  40. package/dist/code-language/stream.js +259 -9
  41. package/dist/code-language/stream.js.map +1 -1
  42. package/dist/code-language/types.d.ts +5 -4
  43. package/dist/code-language/types.d.ts.map +1 -1
  44. package/dist/codeblock/index.d.ts +13 -2
  45. package/dist/codeblock/index.d.ts.map +1 -1
  46. package/dist/codeblock/index.js +20 -3
  47. package/dist/codeblock/index.js.map +1 -1
  48. package/dist/embed/client.d.ts +48 -3
  49. package/dist/embed/client.d.ts.map +1 -1
  50. package/dist/embed/client.js +79 -5
  51. package/dist/embed/client.js.map +1 -1
  52. package/dist/embed/index.d.ts +1 -1
  53. package/dist/embed/index.d.ts.map +1 -1
  54. package/dist/embed/index.js +1 -1
  55. package/dist/embed/index.js.map +1 -1
  56. package/dist/flow/draw.d.ts +50 -0
  57. package/dist/flow/draw.d.ts.map +1 -1
  58. package/dist/flow/draw.js +132 -33
  59. package/dist/flow/draw.js.map +1 -1
  60. package/dist/flow/gl/color.d.ts +13 -0
  61. package/dist/flow/gl/color.d.ts.map +1 -0
  62. package/dist/flow/gl/color.js +82 -0
  63. package/dist/flow/gl/color.js.map +1 -0
  64. package/dist/flow/gl/index.d.ts +60 -0
  65. package/dist/flow/gl/index.d.ts.map +1 -0
  66. package/dist/flow/gl/index.js +283 -0
  67. package/dist/flow/gl/index.js.map +1 -0
  68. package/dist/flow/gl/pack.d.ts +133 -0
  69. package/dist/flow/gl/pack.d.ts.map +1 -0
  70. package/dist/flow/gl/pack.js +408 -0
  71. package/dist/flow/gl/pack.js.map +1 -0
  72. package/dist/flow/gl/renderer.d.ts +95 -0
  73. package/dist/flow/gl/renderer.d.ts.map +1 -0
  74. package/dist/flow/gl/renderer.js +459 -0
  75. package/dist/flow/gl/renderer.js.map +1 -0
  76. package/dist/flow/gl/shaders.d.ts +79 -0
  77. package/dist/flow/gl/shaders.d.ts.map +1 -0
  78. package/dist/flow/gl/shaders.js +346 -0
  79. package/dist/flow/gl/shaders.js.map +1 -0
  80. package/dist/flow/gl/text.d.ts +318 -0
  81. package/dist/flow/gl/text.d.ts.map +1 -0
  82. package/dist/flow/gl/text.js +1103 -0
  83. package/dist/flow/gl/text.js.map +1 -0
  84. package/dist/flow/index.d.ts +1 -1
  85. package/dist/flow/index.d.ts.map +1 -1
  86. package/dist/flow/index.js +619 -64
  87. package/dist/flow/index.js.map +1 -1
  88. package/dist/flow/node.d.ts +621 -72
  89. package/dist/flow/node.d.ts.map +1 -1
  90. package/dist/flow/node.js +2253 -1018
  91. package/dist/flow/node.js.map +1 -1
  92. package/dist/flow/paint.d.ts +35 -0
  93. package/dist/flow/paint.d.ts.map +1 -0
  94. package/dist/flow/paint.js +393 -0
  95. package/dist/flow/paint.js.map +1 -0
  96. package/dist/flow/paths.d.ts +14 -0
  97. package/dist/flow/paths.d.ts.map +1 -1
  98. package/dist/flow/paths.js +45 -19
  99. package/dist/flow/paths.js.map +1 -1
  100. package/dist/flow/scene.d.ts +584 -0
  101. package/dist/flow/scene.d.ts.map +1 -0
  102. package/dist/flow/scene.js +1453 -0
  103. package/dist/flow/scene.js.map +1 -0
  104. package/dist/flow/types.d.ts +111 -1
  105. package/dist/flow/types.d.ts.map +1 -1
  106. package/dist/html/controls.d.ts +28 -0
  107. package/dist/html/controls.d.ts.map +1 -1
  108. package/dist/html/controls.js +52 -2
  109. package/dist/html/controls.js.map +1 -1
  110. package/dist/html/css/calc.d.ts +14 -0
  111. package/dist/html/css/calc.d.ts.map +1 -0
  112. package/dist/html/css/calc.js +344 -0
  113. package/dist/html/css/calc.js.map +1 -0
  114. package/dist/html/css/cascade.d.ts +240 -6
  115. package/dist/html/css/cascade.d.ts.map +1 -1
  116. package/dist/html/css/cascade.js +1327 -66
  117. package/dist/html/css/cascade.js.map +1 -1
  118. package/dist/html/css/color.d.ts +23 -0
  119. package/dist/html/css/color.d.ts.map +1 -0
  120. package/dist/html/css/color.js +740 -0
  121. package/dist/html/css/color.js.map +1 -0
  122. package/dist/html/css/content.d.ts +92 -0
  123. package/dist/html/css/content.d.ts.map +1 -0
  124. package/dist/html/css/content.js +388 -0
  125. package/dist/html/css/content.js.map +1 -0
  126. package/dist/html/css/counter-styles.d.ts +76 -0
  127. package/dist/html/css/counter-styles.d.ts.map +1 -0
  128. package/dist/html/css/counter-styles.js +893 -0
  129. package/dist/html/css/counter-styles.js.map +1 -0
  130. package/dist/html/css/decode.d.ts +12 -0
  131. package/dist/html/css/decode.d.ts.map +1 -0
  132. package/dist/html/css/decode.js +116 -0
  133. package/dist/html/css/decode.js.map +1 -0
  134. package/dist/html/css/parse.d.ts +110 -10
  135. package/dist/html/css/parse.d.ts.map +1 -1
  136. package/dist/html/css/parse.js +1473 -180
  137. package/dist/html/css/parse.js.map +1 -1
  138. package/dist/html/css/style.d.ts +498 -15
  139. package/dist/html/css/style.d.ts.map +1 -1
  140. package/dist/html/css/style.js +3698 -206
  141. package/dist/html/css/style.js.map +1 -1
  142. package/dist/html/css/ua.d.ts.map +1 -1
  143. package/dist/html/css/ua.js +57 -11
  144. package/dist/html/css/ua.js.map +1 -1
  145. package/dist/html/css/values.d.ts +37 -3
  146. package/dist/html/css/values.d.ts.map +1 -1
  147. package/dist/html/css/values.js +122 -48
  148. package/dist/html/css/values.js.map +1 -1
  149. package/dist/html/css/vars.d.ts +52 -0
  150. package/dist/html/css/vars.d.ts.map +1 -0
  151. package/dist/html/css/vars.js +358 -0
  152. package/dist/html/css/vars.js.map +1 -0
  153. package/dist/html/dom.d.ts +30 -4
  154. package/dist/html/dom.d.ts.map +1 -1
  155. package/dist/html/dom.js +278 -17
  156. package/dist/html/dom.js.map +1 -1
  157. package/dist/html/fonts.d.ts +106 -0
  158. package/dist/html/fonts.d.ts.map +1 -0
  159. package/dist/html/fonts.js +565 -0
  160. package/dist/html/fonts.js.map +1 -0
  161. package/dist/html/gif.d.ts +15 -0
  162. package/dist/html/gif.d.ts.map +1 -0
  163. package/dist/html/gif.js +229 -0
  164. package/dist/html/gif.js.map +1 -0
  165. package/dist/html/index.d.ts +50 -11
  166. package/dist/html/index.d.ts.map +1 -1
  167. package/dist/html/index.js +115 -9
  168. package/dist/html/index.js.map +1 -1
  169. package/dist/html/layout/block.d.ts +226 -3
  170. package/dist/html/layout/block.d.ts.map +1 -1
  171. package/dist/html/layout/block.js +2937 -197
  172. package/dist/html/layout/block.js.map +1 -1
  173. package/dist/html/layout/boxes.d.ts +340 -17
  174. package/dist/html/layout/boxes.d.ts.map +1 -1
  175. package/dist/html/layout/boxes.js +1714 -182
  176. package/dist/html/layout/boxes.js.map +1 -1
  177. package/dist/html/layout/cache.d.ts +58 -0
  178. package/dist/html/layout/cache.d.ts.map +1 -0
  179. package/dist/html/layout/cache.js +224 -0
  180. package/dist/html/layout/cache.js.map +1 -0
  181. package/dist/html/layout/collapse.d.ts +45 -0
  182. package/dist/html/layout/collapse.d.ts.map +1 -0
  183. package/dist/html/layout/collapse.js +246 -0
  184. package/dist/html/layout/collapse.js.map +1 -0
  185. package/dist/html/layout/css-grid.d.ts +7 -0
  186. package/dist/html/layout/css-grid.d.ts.map +1 -0
  187. package/dist/html/layout/css-grid.js +900 -0
  188. package/dist/html/layout/css-grid.js.map +1 -0
  189. package/dist/html/layout/flex.d.ts.map +1 -1
  190. package/dist/html/layout/flex.js +1025 -89
  191. package/dist/html/layout/flex.js.map +1 -1
  192. package/dist/html/layout/floats.d.ts +45 -6
  193. package/dist/html/layout/floats.d.ts.map +1 -1
  194. package/dist/html/layout/floats.js +113 -14
  195. package/dist/html/layout/floats.js.map +1 -1
  196. package/dist/html/layout/grid-lines.d.ts +39 -0
  197. package/dist/html/layout/grid-lines.d.ts.map +1 -0
  198. package/dist/html/layout/grid-lines.js +119 -0
  199. package/dist/html/layout/grid-lines.js.map +1 -0
  200. package/dist/html/layout/grid.d.ts +53 -0
  201. package/dist/html/layout/grid.d.ts.map +1 -0
  202. package/dist/html/layout/grid.js +153 -0
  203. package/dist/html/layout/grid.js.map +1 -0
  204. package/dist/html/layout/inline.d.ts +151 -1
  205. package/dist/html/layout/inline.d.ts.map +1 -1
  206. package/dist/html/layout/inline.js +3375 -174
  207. package/dist/html/layout/inline.js.map +1 -1
  208. package/dist/html/layout/shaping.d.ts +6 -0
  209. package/dist/html/layout/shaping.d.ts.map +1 -0
  210. package/dist/html/layout/shaping.js +100 -0
  211. package/dist/html/layout/shaping.js.map +1 -0
  212. package/dist/html/layout/table.d.ts +3 -0
  213. package/dist/html/layout/table.d.ts.map +1 -1
  214. package/dist/html/layout/table.js +681 -175
  215. package/dist/html/layout/table.js.map +1 -1
  216. package/dist/html/layout/tracks.d.ts +44 -0
  217. package/dist/html/layout/tracks.d.ts.map +1 -0
  218. package/dist/html/layout/tracks.js +349 -0
  219. package/dist/html/layout/tracks.js.map +1 -0
  220. package/dist/html/node.d.ts +172 -5
  221. package/dist/html/node.d.ts.map +1 -1
  222. package/dist/html/node.js +1336 -103
  223. package/dist/html/node.js.map +1 -1
  224. package/dist/html/paint.d.ts +92 -3
  225. package/dist/html/paint.d.ts.map +1 -1
  226. package/dist/html/paint.js +3503 -141
  227. package/dist/html/paint.js.map +1 -1
  228. package/dist/html/resources.d.ts +60 -14
  229. package/dist/html/resources.d.ts.map +1 -1
  230. package/dist/html/resources.js +122 -36
  231. package/dist/html/resources.js.map +1 -1
  232. package/dist/html/surfaces.d.ts +23 -0
  233. package/dist/html/surfaces.d.ts.map +1 -0
  234. package/dist/html/surfaces.js +68 -0
  235. package/dist/html/surfaces.js.map +1 -0
  236. package/dist/html/svg.d.ts +80 -0
  237. package/dist/html/svg.d.ts.map +1 -0
  238. package/dist/html/svg.js +435 -0
  239. package/dist/html/svg.js.map +1 -0
  240. package/dist/html/url.d.ts +23 -0
  241. package/dist/html/url.d.ts.map +1 -0
  242. package/dist/html/url.js +80 -0
  243. package/dist/html/url.js.map +1 -0
  244. package/dist/index.d.ts +2 -2
  245. package/dist/index.d.ts.map +1 -1
  246. package/dist/index.js +1 -1
  247. package/dist/index.js.map +1 -1
  248. package/dist/internal/collate.d.ts +3 -0
  249. package/dist/internal/collate.d.ts.map +1 -0
  250. package/dist/internal/collate.js +11 -0
  251. package/dist/internal/collate.js.map +1 -0
  252. package/dist/{markdown → internal/markdown}/ast.d.ts +23 -0
  253. package/dist/internal/markdown/ast.d.ts.map +1 -0
  254. package/dist/internal/markdown/ast.js +22 -0
  255. package/dist/internal/markdown/ast.js.map +1 -0
  256. package/dist/internal/markdown/parse.d.ts.map +1 -0
  257. package/dist/{markdown → internal/markdown}/parse.js +221 -30
  258. package/dist/internal/markdown/parse.js.map +1 -0
  259. package/dist/internal/markdown/stringify.d.ts +4 -0
  260. package/dist/internal/markdown/stringify.d.ts.map +1 -0
  261. package/dist/internal/markdown/stringify.js +684 -0
  262. package/dist/internal/markdown/stringify.js.map +1 -0
  263. package/dist/internal/markdown/tags.d.ts.map +1 -0
  264. package/dist/internal/markdown/tags.js.map +1 -0
  265. package/dist/internal/prewarm.d.ts +18 -0
  266. package/dist/internal/prewarm.d.ts.map +1 -0
  267. package/dist/internal/prewarm.js +42 -0
  268. package/dist/internal/prewarm.js.map +1 -0
  269. package/dist/internal/scroll.d.ts +3 -2
  270. package/dist/internal/scroll.d.ts.map +1 -1
  271. package/dist/internal/scroll.js +1 -0
  272. package/dist/internal/scroll.js.map +1 -1
  273. package/dist/internal/sdf.d.ts +20 -0
  274. package/dist/internal/sdf.d.ts.map +1 -0
  275. package/dist/internal/sdf.js +216 -0
  276. package/dist/internal/sdf.js.map +1 -0
  277. package/dist/internal/splice.d.ts +12 -0
  278. package/dist/internal/splice.d.ts.map +1 -0
  279. package/dist/internal/splice.js +23 -0
  280. package/dist/internal/splice.js.map +1 -0
  281. package/dist/internal/window.d.ts +12 -0
  282. package/dist/internal/window.d.ts.map +1 -1
  283. package/dist/internal/window.js +23 -6
  284. package/dist/internal/window.js.map +1 -1
  285. package/dist/maps/anchors.d.ts +103 -0
  286. package/dist/maps/anchors.d.ts.map +1 -0
  287. package/dist/maps/anchors.js +790 -0
  288. package/dist/maps/anchors.js.map +1 -0
  289. package/dist/maps/controller.d.ts +340 -0
  290. package/dist/maps/controller.d.ts.map +1 -0
  291. package/dist/maps/controller.js +822 -0
  292. package/dist/maps/controller.js.map +1 -0
  293. package/dist/maps/gl/buckets.d.ts +99 -0
  294. package/dist/maps/gl/buckets.d.ts.map +1 -0
  295. package/dist/maps/gl/buckets.js +365 -0
  296. package/dist/maps/gl/buckets.js.map +1 -0
  297. package/dist/maps/gl/build-worker.d.ts +15 -0
  298. package/dist/maps/gl/build-worker.d.ts.map +1 -0
  299. package/dist/maps/gl/build-worker.js +44 -0
  300. package/dist/maps/gl/build-worker.js.map +1 -0
  301. package/dist/maps/gl/color.d.ts +8 -0
  302. package/dist/maps/gl/color.d.ts.map +1 -0
  303. package/dist/maps/gl/color.js +57 -0
  304. package/dist/maps/gl/color.js.map +1 -0
  305. package/dist/maps/gl/cover.d.ts +70 -0
  306. package/dist/maps/gl/cover.d.ts.map +1 -0
  307. package/dist/maps/gl/cover.js +137 -0
  308. package/dist/maps/gl/cover.js.map +1 -0
  309. package/dist/maps/gl/index.d.ts +3 -0
  310. package/dist/maps/gl/index.d.ts.map +1 -0
  311. package/dist/maps/gl/index.js +20 -0
  312. package/dist/maps/gl/index.js.map +1 -0
  313. package/dist/maps/gl/markers.d.ts +28 -0
  314. package/dist/maps/gl/markers.d.ts.map +1 -0
  315. package/dist/maps/gl/markers.js +60 -0
  316. package/dist/maps/gl/markers.js.map +1 -0
  317. package/dist/maps/gl/overlays.d.ts +68 -0
  318. package/dist/maps/gl/overlays.d.ts.map +1 -0
  319. package/dist/maps/gl/overlays.js +300 -0
  320. package/dist/maps/gl/overlays.js.map +1 -0
  321. package/dist/maps/gl/pane.d.ts +12 -0
  322. package/dist/maps/gl/pane.d.ts.map +1 -0
  323. package/dist/maps/gl/pane.js +37 -0
  324. package/dist/maps/gl/pane.js.map +1 -0
  325. package/dist/maps/gl/placement.d.ts +124 -0
  326. package/dist/maps/gl/placement.d.ts.map +1 -0
  327. package/dist/maps/gl/placement.js +642 -0
  328. package/dist/maps/gl/placement.js.map +1 -0
  329. package/dist/maps/gl/renderer.d.ts +384 -0
  330. package/dist/maps/gl/renderer.d.ts.map +1 -0
  331. package/dist/maps/gl/renderer.js +1184 -0
  332. package/dist/maps/gl/renderer.js.map +1 -0
  333. package/dist/maps/gl/shaders.d.ts +121 -0
  334. package/dist/maps/gl/shaders.d.ts.map +1 -0
  335. package/dist/maps/gl/shaders.js +453 -0
  336. package/dist/maps/gl/shaders.js.map +1 -0
  337. package/dist/maps/gl/store.d.ts +125 -0
  338. package/dist/maps/gl/store.d.ts.map +1 -0
  339. package/dist/maps/gl/store.js +512 -0
  340. package/dist/maps/gl/store.js.map +1 -0
  341. package/dist/maps/gl/text.d.ts +283 -0
  342. package/dist/maps/gl/text.d.ts.map +1 -0
  343. package/dist/maps/gl/text.js +698 -0
  344. package/dist/maps/gl/text.js.map +1 -0
  345. package/dist/maps/gl/view.d.ts +345 -0
  346. package/dist/maps/gl/view.d.ts.map +1 -0
  347. package/dist/maps/gl/view.js +1209 -0
  348. package/dist/maps/gl/view.js.map +1 -0
  349. package/dist/maps/icons.d.ts +32 -0
  350. package/dist/maps/icons.d.ts.map +1 -0
  351. package/dist/maps/icons.js +151 -0
  352. package/dist/maps/icons.js.map +1 -0
  353. package/dist/maps/index.d.ts +3 -1
  354. package/dist/maps/index.d.ts.map +1 -1
  355. package/dist/maps/index.js +218 -52
  356. package/dist/maps/index.js.map +1 -1
  357. package/dist/maps/labels.d.ts +91 -18
  358. package/dist/maps/labels.d.ts.map +1 -1
  359. package/dist/maps/labels.js +376 -140
  360. package/dist/maps/labels.js.map +1 -1
  361. package/dist/maps/node.d.ts +179 -56
  362. package/dist/maps/node.d.ts.map +1 -1
  363. package/dist/maps/node.js +663 -537
  364. package/dist/maps/node.js.map +1 -1
  365. package/dist/maps/overlay.d.ts +72 -9
  366. package/dist/maps/overlay.d.ts.map +1 -1
  367. package/dist/maps/overlay.js +108 -28
  368. package/dist/maps/overlay.js.map +1 -1
  369. package/dist/maps/paint.d.ts +3 -0
  370. package/dist/maps/paint.d.ts.map +1 -1
  371. package/dist/maps/paint.js.map +1 -1
  372. package/dist/maps/proj.d.ts +62 -0
  373. package/dist/maps/proj.d.ts.map +1 -1
  374. package/dist/maps/proj.js +101 -0
  375. package/dist/maps/proj.js.map +1 -1
  376. package/dist/maps/renderer.d.ts +69 -0
  377. package/dist/maps/renderer.d.ts.map +1 -0
  378. package/dist/maps/renderer.js +66 -0
  379. package/dist/maps/renderer.js.map +1 -0
  380. package/dist/maps/sources.d.ts +30 -6
  381. package/dist/maps/sources.d.ts.map +1 -1
  382. package/dist/maps/sources.js +22 -3
  383. package/dist/maps/sources.js.map +1 -1
  384. package/dist/maps/style.d.ts +35 -0
  385. package/dist/maps/style.d.ts.map +1 -1
  386. package/dist/maps/style.js.map +1 -1
  387. package/dist/maps/styles.d.ts +12 -0
  388. package/dist/maps/styles.d.ts.map +1 -1
  389. package/dist/maps/styles.js +120 -6
  390. package/dist/maps/styles.js.map +1 -1
  391. package/dist/maps/theme.d.ts +19 -0
  392. package/dist/maps/theme.d.ts.map +1 -0
  393. package/dist/maps/theme.js +44 -0
  394. package/dist/maps/theme.js.map +1 -0
  395. package/dist/maps/tiles.d.ts +147 -27
  396. package/dist/maps/tiles.d.ts.map +1 -1
  397. package/dist/maps/tiles.js +221 -54
  398. package/dist/maps/tiles.js.map +1 -1
  399. package/dist/maps/types.d.ts +213 -21
  400. package/dist/maps/types.d.ts.map +1 -1
  401. package/dist/markdown/expressions.d.ts +1 -1
  402. package/dist/markdown/expressions.d.ts.map +1 -1
  403. package/dist/markdown/expressions.js.map +1 -1
  404. package/dist/markdown/index.d.ts +7 -6
  405. package/dist/markdown/index.d.ts.map +1 -1
  406. package/dist/markdown/index.js +121 -50
  407. package/dist/markdown/index.js.map +1 -1
  408. package/dist/markdown/spans.d.ts +1 -1
  409. package/dist/markdown/spans.d.ts.map +1 -1
  410. package/dist/markdown/spans.js +6 -0
  411. package/dist/markdown/spans.js.map +1 -1
  412. package/dist/media-player/index.d.ts +11 -3
  413. package/dist/media-player/index.d.ts.map +1 -1
  414. package/dist/media-player/index.js +13 -2
  415. package/dist/media-player/index.js.map +1 -1
  416. package/dist/qml/containers.d.ts.map +1 -1
  417. package/dist/qml/containers.js +6 -1
  418. package/dist/qml/containers.js.map +1 -1
  419. package/dist/qml/interaction.d.ts.map +1 -1
  420. package/dist/qml/interaction.js +38 -5
  421. package/dist/qml/interaction.js.map +1 -1
  422. package/dist/qml/layouts.d.ts.map +1 -1
  423. package/dist/qml/layouts.js +21 -6
  424. package/dist/qml/layouts.js.map +1 -1
  425. package/dist/qml/qtquick.d.ts.map +1 -1
  426. package/dist/qml/qtquick.js +9 -2
  427. package/dist/qml/qtquick.js.map +1 -1
  428. package/dist/qml/react.d.ts.map +1 -1
  429. package/dist/qml/react.js +9 -7
  430. package/dist/qml/react.js.map +1 -1
  431. package/dist/reorder/clock.d.ts +7 -0
  432. package/dist/reorder/clock.d.ts.map +1 -0
  433. package/dist/reorder/clock.js +26 -0
  434. package/dist/reorder/clock.js.map +1 -0
  435. package/dist/reorder/index.d.ts +25 -3
  436. package/dist/reorder/index.d.ts.map +1 -1
  437. package/dist/reorder/index.js +64 -19
  438. package/dist/reorder/index.js.map +1 -1
  439. package/dist/rich-text-editor/clipboard.d.ts +23 -0
  440. package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
  441. package/dist/rich-text-editor/clipboard.js +307 -0
  442. package/dist/rich-text-editor/clipboard.js.map +1 -0
  443. package/dist/rich-text-editor/collab.d.ts +32 -0
  444. package/dist/rich-text-editor/collab.d.ts.map +1 -0
  445. package/dist/rich-text-editor/collab.js +55 -0
  446. package/dist/rich-text-editor/collab.js.map +1 -0
  447. package/dist/rich-text-editor/commands.d.ts +50 -0
  448. package/dist/rich-text-editor/commands.d.ts.map +1 -0
  449. package/dist/rich-text-editor/commands.js +376 -0
  450. package/dist/rich-text-editor/commands.js.map +1 -0
  451. package/dist/rich-text-editor/drag.d.ts +68 -0
  452. package/dist/rich-text-editor/drag.d.ts.map +1 -0
  453. package/dist/rich-text-editor/drag.js +148 -0
  454. package/dist/rich-text-editor/drag.js.map +1 -0
  455. package/dist/rich-text-editor/html.d.ts +145 -0
  456. package/dist/rich-text-editor/html.d.ts.map +1 -0
  457. package/dist/rich-text-editor/html.js +516 -0
  458. package/dist/rich-text-editor/html.js.map +1 -0
  459. package/dist/rich-text-editor/index.d.ts +252 -0
  460. package/dist/rich-text-editor/index.d.ts.map +1 -0
  461. package/dist/rich-text-editor/index.js +856 -0
  462. package/dist/rich-text-editor/index.js.map +1 -0
  463. package/dist/rich-text-editor/inline.d.ts +94 -0
  464. package/dist/rich-text-editor/inline.d.ts.map +1 -0
  465. package/dist/rich-text-editor/inline.js +252 -0
  466. package/dist/rich-text-editor/inline.js.map +1 -0
  467. package/dist/rich-text-editor/keymap.d.ts +71 -0
  468. package/dist/rich-text-editor/keymap.d.ts.map +1 -0
  469. package/dist/rich-text-editor/keymap.js +394 -0
  470. package/dist/rich-text-editor/keymap.js.map +1 -0
  471. package/dist/rich-text-editor/keys.d.ts +40 -0
  472. package/dist/rich-text-editor/keys.d.ts.map +1 -0
  473. package/dist/rich-text-editor/keys.js +202 -0
  474. package/dist/rich-text-editor/keys.js.map +1 -0
  475. package/dist/rich-text-editor/look.d.ts +71 -0
  476. package/dist/rich-text-editor/look.d.ts.map +1 -0
  477. package/dist/rich-text-editor/look.js +342 -0
  478. package/dist/rich-text-editor/look.js.map +1 -0
  479. package/dist/rich-text-editor/markdown.d.ts +18 -0
  480. package/dist/rich-text-editor/markdown.d.ts.map +1 -0
  481. package/dist/rich-text-editor/markdown.js +496 -0
  482. package/dist/rich-text-editor/markdown.js.map +1 -0
  483. package/dist/rich-text-editor/marks.d.ts +9 -0
  484. package/dist/rich-text-editor/marks.d.ts.map +1 -0
  485. package/dist/rich-text-editor/marks.js +83 -0
  486. package/dist/rich-text-editor/marks.js.map +1 -0
  487. package/dist/rich-text-editor/nodes.d.ts +135 -0
  488. package/dist/rich-text-editor/nodes.d.ts.map +1 -0
  489. package/dist/rich-text-editor/nodes.js +397 -0
  490. package/dist/rich-text-editor/nodes.js.map +1 -0
  491. package/dist/rich-text-editor/render.d.ts +68 -0
  492. package/dist/rich-text-editor/render.d.ts.map +1 -0
  493. package/dist/rich-text-editor/render.js +518 -0
  494. package/dist/rich-text-editor/render.js.map +1 -0
  495. package/dist/rich-text-editor/schema.d.ts +16 -0
  496. package/dist/rich-text-editor/schema.d.ts.map +1 -0
  497. package/dist/rich-text-editor/schema.js +386 -0
  498. package/dist/rich-text-editor/schema.js.map +1 -0
  499. package/dist/rich-text-editor/store.d.ts +11 -0
  500. package/dist/rich-text-editor/store.d.ts.map +1 -0
  501. package/dist/rich-text-editor/store.js +43 -0
  502. package/dist/rich-text-editor/store.js.map +1 -0
  503. package/dist/rich-text-editor/suggest.d.ts +127 -0
  504. package/dist/rich-text-editor/suggest.d.ts.map +1 -0
  505. package/dist/rich-text-editor/suggest.js +0 -0
  506. package/dist/rich-text-editor/suggest.js.map +1 -0
  507. package/dist/rich-text-editor/tables.d.ts +41 -0
  508. package/dist/rich-text-editor/tables.d.ts.map +1 -0
  509. package/dist/rich-text-editor/tables.js +204 -0
  510. package/dist/rich-text-editor/tables.js.map +1 -0
  511. package/dist/rich-text-editor/toolbar.d.ts +58 -0
  512. package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
  513. package/dist/rich-text-editor/toolbar.js +548 -0
  514. package/dist/rich-text-editor/toolbar.js.map +1 -0
  515. package/dist/rich-text-editor/view.d.ts +368 -0
  516. package/dist/rich-text-editor/view.d.ts.map +1 -0
  517. package/dist/rich-text-editor/view.js +1968 -0
  518. package/dist/rich-text-editor/view.js.map +1 -0
  519. package/dist/rich-text-editor/virtual.d.ts +54 -0
  520. package/dist/rich-text-editor/virtual.d.ts.map +1 -0
  521. package/dist/rich-text-editor/virtual.js +279 -0
  522. package/dist/rich-text-editor/virtual.js.map +1 -0
  523. package/dist/richtext/node.d.ts +71 -4
  524. package/dist/richtext/node.d.ts.map +1 -1
  525. package/dist/richtext/node.js +233 -28
  526. package/dist/richtext/node.js.map +1 -1
  527. package/dist/richtext/runs.d.ts +13 -8
  528. package/dist/richtext/runs.d.ts.map +1 -1
  529. package/dist/richtext/runs.js +18 -8
  530. package/dist/richtext/runs.js.map +1 -1
  531. package/dist/table/index.d.ts.map +1 -1
  532. package/dist/table/index.js +23 -0
  533. package/dist/table/index.js.map +1 -1
  534. package/dist/table/rows.d.ts +3 -2
  535. package/dist/table/rows.d.ts.map +1 -1
  536. package/dist/table/rows.js +20 -6
  537. package/dist/table/rows.js.map +1 -1
  538. package/dist/terminal/backends.d.ts +4 -1
  539. package/dist/terminal/backends.d.ts.map +1 -1
  540. package/dist/terminal/backends.js.map +1 -1
  541. package/dist/terminal/index.d.ts +18 -7
  542. package/dist/terminal/index.d.ts.map +1 -1
  543. package/dist/terminal/index.js +32 -11
  544. package/dist/terminal/index.js.map +1 -1
  545. package/dist/terminal/vt/pty.d.ts +13 -2
  546. package/dist/terminal/vt/pty.d.ts.map +1 -1
  547. package/dist/terminal/vt/pty.js +18 -3
  548. package/dist/terminal/vt/pty.js.map +1 -1
  549. package/dist/terminal-output/index.d.ts.map +1 -1
  550. package/dist/terminal-output/index.js +6 -1
  551. package/dist/terminal-output/index.js.map +1 -1
  552. package/dist/three/canvas.d.ts.map +1 -1
  553. package/dist/three/canvas.js +85 -7
  554. package/dist/three/canvas.js.map +1 -1
  555. package/dist/three/events.d.ts +22 -4
  556. package/dist/three/events.d.ts.map +1 -1
  557. package/dist/three/events.js +34 -4
  558. package/dist/three/events.js.map +1 -1
  559. package/dist/tree/index.d.ts.map +1 -1
  560. package/dist/tree/index.js +17 -0
  561. package/dist/tree/index.js.map +1 -1
  562. package/package.json +59 -31
  563. package/src/charts/node.ts +68 -28
  564. package/src/charts/render.ts +120 -30
  565. package/src/code/index.ts +3 -1
  566. package/src/code-editor/completion.ts +3 -2
  567. package/src/code-editor/index.ts +19 -0
  568. package/src/code-editor/node.ts +1574 -184
  569. package/src/code-language/languages/glsl.ts +12 -2
  570. package/src/code-language/languages/javascript.ts +21 -4
  571. package/src/code-language/languages/json.ts +12 -2
  572. package/src/code-language/languages/shell.ts +12 -2
  573. package/src/code-language/languages/sql.ts +22 -2
  574. package/src/code-language/stream.ts +257 -17
  575. package/src/code-language/types.ts +5 -4
  576. package/src/codeblock/index.ts +20 -3
  577. package/src/embed/client.ts +102 -8
  578. package/src/embed/index.ts +2 -0
  579. package/src/flow/draw.ts +167 -41
  580. package/src/flow/gl/color.ts +85 -0
  581. package/src/flow/gl/index.ts +342 -0
  582. package/src/flow/gl/pack.ts +585 -0
  583. package/src/flow/gl/renderer.ts +679 -0
  584. package/src/flow/gl/shaders.ts +371 -0
  585. package/src/flow/gl/text.ts +1295 -0
  586. package/src/flow/index.ts +794 -67
  587. package/src/flow/node.ts +2496 -1256
  588. package/src/flow/paint.ts +511 -0
  589. package/src/flow/paths.ts +80 -15
  590. package/src/flow/scene.ts +2199 -0
  591. package/src/flow/types.ts +113 -1
  592. package/src/html/controls.ts +73 -2
  593. package/src/html/css/calc.ts +385 -0
  594. package/src/html/css/cascade.ts +1403 -62
  595. package/src/html/css/color.ts +755 -0
  596. package/src/html/css/content.ts +417 -0
  597. package/src/html/css/counter-styles.ts +973 -0
  598. package/src/html/css/decode.ts +130 -0
  599. package/src/html/css/parse.ts +1514 -160
  600. package/src/html/css/style.ts +4102 -222
  601. package/src/html/css/ua.ts +58 -12
  602. package/src/html/css/values.ts +150 -50
  603. package/src/html/css/vars.ts +348 -0
  604. package/src/html/dom.ts +284 -17
  605. package/src/html/fonts.ts +641 -0
  606. package/src/html/gif.ts +233 -0
  607. package/src/html/index.ts +180 -20
  608. package/src/html/layout/block.ts +3456 -230
  609. package/src/html/layout/boxes.ts +2100 -190
  610. package/src/html/layout/cache.ts +289 -0
  611. package/src/html/layout/collapse.ts +317 -0
  612. package/src/html/layout/css-grid.ts +1063 -0
  613. package/src/html/layout/flex.ts +1115 -106
  614. package/src/html/layout/floats.ts +128 -14
  615. package/src/html/layout/grid-lines.ts +141 -0
  616. package/src/html/layout/grid.ts +181 -0
  617. package/src/html/layout/inline.ts +3943 -192
  618. package/src/html/layout/shaping.ts +140 -0
  619. package/src/html/layout/table.ts +696 -186
  620. package/src/html/layout/tracks.ts +437 -0
  621. package/src/html/node.ts +1486 -121
  622. package/src/html/paint.ts +4293 -169
  623. package/src/html/resources.ts +161 -50
  624. package/src/html/surfaces.ts +81 -0
  625. package/src/html/svg.ts +493 -0
  626. package/src/html/url.ts +86 -0
  627. package/src/index.ts +4 -0
  628. package/src/internal/collate.ts +12 -0
  629. package/src/{markdown → internal/markdown}/ast.ts +35 -7
  630. package/src/{markdown → internal/markdown}/parse.ts +288 -35
  631. package/src/internal/markdown/stringify.ts +772 -0
  632. package/src/internal/prewarm.ts +45 -0
  633. package/src/internal/scroll.ts +5 -3
  634. package/src/internal/sdf.ts +227 -0
  635. package/src/internal/splice.ts +25 -0
  636. package/src/internal/window.ts +36 -5
  637. package/src/maps/anchors.ts +913 -0
  638. package/src/maps/controller.ts +1084 -0
  639. package/src/maps/gl/buckets.ts +461 -0
  640. package/src/maps/gl/build-worker.ts +66 -0
  641. package/src/maps/gl/color.ts +62 -0
  642. package/src/maps/gl/cover.ts +205 -0
  643. package/src/maps/gl/index.ts +23 -0
  644. package/src/maps/gl/markers.ts +83 -0
  645. package/src/maps/gl/overlays.ts +379 -0
  646. package/src/maps/gl/pane.ts +42 -0
  647. package/src/maps/gl/placement.ts +968 -0
  648. package/src/maps/gl/renderer.ts +1660 -0
  649. package/src/maps/gl/shaders.ts +489 -0
  650. package/src/maps/gl/store.ts +615 -0
  651. package/src/maps/gl/text.ts +868 -0
  652. package/src/maps/gl/view.ts +1489 -0
  653. package/src/maps/icons.ts +183 -0
  654. package/src/maps/index.ts +274 -81
  655. package/src/maps/labels.ts +457 -144
  656. package/src/maps/node.ts +832 -665
  657. package/src/maps/overlay.ts +148 -43
  658. package/src/maps/paint.ts +3 -0
  659. package/src/maps/proj.ts +118 -0
  660. package/src/maps/renderer.ts +155 -0
  661. package/src/maps/sources.ts +43 -6
  662. package/src/maps/style.ts +32 -0
  663. package/src/maps/styles.ts +215 -4
  664. package/src/maps/theme.ts +51 -0
  665. package/src/maps/tiles.ts +253 -62
  666. package/src/maps/types.ts +213 -21
  667. package/src/markdown/expressions.ts +5 -1
  668. package/src/markdown/index.ts +163 -78
  669. package/src/markdown/spans.ts +6 -1
  670. package/src/media-player/index.ts +18 -4
  671. package/src/qml/containers.tsx +6 -1
  672. package/src/qml/interaction.tsx +42 -5
  673. package/src/qml/layouts.tsx +21 -6
  674. package/src/qml/qtquick.tsx +9 -2
  675. package/src/qml/react.tsx +7 -5
  676. package/src/reorder/clock.ts +27 -0
  677. package/src/reorder/index.ts +100 -27
  678. package/src/rich-text-editor/clipboard.ts +439 -0
  679. package/src/rich-text-editor/collab.ts +91 -0
  680. package/src/rich-text-editor/commands.ts +448 -0
  681. package/src/rich-text-editor/dom-globals.d.ts +23 -0
  682. package/src/rich-text-editor/drag.ts +211 -0
  683. package/src/rich-text-editor/html.ts +619 -0
  684. package/src/rich-text-editor/index.ts +1364 -0
  685. package/src/rich-text-editor/inline.ts +345 -0
  686. package/src/rich-text-editor/keymap.ts +510 -0
  687. package/src/rich-text-editor/keys.ts +228 -0
  688. package/src/rich-text-editor/look.ts +427 -0
  689. package/src/rich-text-editor/markdown.ts +653 -0
  690. package/src/rich-text-editor/marks.ts +101 -0
  691. package/src/rich-text-editor/nodes.ts +497 -0
  692. package/src/rich-text-editor/render.ts +837 -0
  693. package/src/rich-text-editor/schema.ts +431 -0
  694. package/src/rich-text-editor/store.ts +39 -0
  695. package/src/rich-text-editor/suggest.ts +597 -0
  696. package/src/rich-text-editor/tables.ts +272 -0
  697. package/src/rich-text-editor/toolbar.ts +724 -0
  698. package/src/rich-text-editor/view.ts +2287 -0
  699. package/src/rich-text-editor/virtual.ts +372 -0
  700. package/src/richtext/node.ts +294 -44
  701. package/src/richtext/runs.ts +23 -12
  702. package/src/table/index.ts +29 -0
  703. package/src/table/rows.ts +18 -8
  704. package/src/terminal/backends.ts +4 -1
  705. package/src/terminal/index.ts +47 -15
  706. package/src/terminal/vt/pty.ts +16 -2
  707. package/src/terminal-output/index.ts +6 -1
  708. package/src/three/canvas.ts +102 -8
  709. package/src/three/events.ts +49 -9
  710. package/src/tree/index.ts +19 -0
  711. package/dist/markdown/ast.d.ts.map +0 -1
  712. package/dist/markdown/ast.js +0 -17
  713. package/dist/markdown/ast.js.map +0 -1
  714. package/dist/markdown/parse.d.ts.map +0 -1
  715. package/dist/markdown/parse.js.map +0 -1
  716. package/dist/markdown/tags.d.ts.map +0 -1
  717. package/dist/markdown/tags.js.map +0 -1
  718. /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
  719. /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
  720. /package/dist/{markdown → internal/markdown}/tags.js +0 -0
  721. /package/src/{markdown → internal/markdown}/tags.ts +0 -0
@@ -0,0 +1,394 @@
1
+ // Keys, across the one seam ProseMirror's ecosystem is written against: a
2
+ // DOM `KeyboardEvent`.
3
+ //
4
+ // A keymap plugin — prosemirror-keymap's, TipTap's, anyone's — reads
5
+ // `event.key`, `event.keyCode` and four modifier flags and nothing else, so a
6
+ // react-x11 key event is translated into exactly that and handed to
7
+ // `handleKeyDown` as if a browser had sent it. Two details decide whether a
8
+ // binding like `Mod-b` fires:
9
+ //
10
+ // - **The Latin key, under any layout.** With a modifier held, `key` is the
11
+ // character of `ev.keysym` — which react-x11 already resolves to the Latin
12
+ // key of the physical key — and `keyCode` is that key's DOM code, which is
13
+ // also what prosemirror-keymap falls back to. So Ctrl+B bolds while the
14
+ // user is typing Russian, as it does in every toolkit.
15
+ // - **Which modifier is Mod.** prosemirror-keymap decides at load time, from
16
+ // `navigator.platform`, that Mod is Cmd on a Mac and Ctrl anywhere else —
17
+ // a fact about the *host*. The answer here is the *backend's*: an X11
18
+ // application uses Ctrl even under XQuartz on a Mac (and the suite's
19
+ // in-process server is X11 on every host), while react-x11's native macOS
20
+ // backend uses Cmd, even on a Node old enough to have no `navigator`, where
21
+ // prosemirror-keymap guesses Ctrl. When the two disagree, Ctrl and Meta
22
+ // trade places in the event a plugin is shown, so the backend's primary
23
+ // modifier always arrives as prosemirror-keymap's Mod.
24
+ //
25
+ // Below that: the editing behaviour the default schema ships with — the
26
+ // plugins `defaultPlugins` assembles, in the order they have to be in.
27
+ import { baseKeymap, chainCommands, exitCode, setBlockType, wrapIn, } from 'prosemirror-commands';
28
+ import { history, redo, undo } from 'prosemirror-history';
29
+ import { InputRule, ellipsis, emDash, inputRules, smartQuotes, textblockTypeInputRule, undoInputRule, wrappingInputRule, } from 'prosemirror-inputrules';
30
+ import { keymap } from 'prosemirror-keymap';
31
+ import { Fragment } from 'prosemirror-model';
32
+ import { liftListItem, sinkListItem, wrapInList, } from 'prosemirror-schema-list';
33
+ import { TextSelection } from 'prosemirror-state';
34
+ import { findWrapping } from 'prosemirror-transform';
35
+ import { dedentCode, goToCell, indentCode, insertHorizontalRule, splitItem, toggleTaskList, } from './commands.js';
36
+ import { hasTables, tableRepair } from './tables.js';
37
+ import { toggleMark } from './marks.js';
38
+ /**
39
+ * Which modifier this app's backend uses for shortcuts. react-x11's native
40
+ * macOS application is the one carrying a bezel store (`nativeBezels`, its
41
+ * Cocoa-only view of the window chrome); nothing on the X11 backend or the
42
+ * headless mock has one.
43
+ */
44
+ export function primaryModifierOf(app) {
45
+ return app !== null && typeof app === 'object' && 'nativeBezels' in app
46
+ ? 'meta'
47
+ : 'ctrl';
48
+ }
49
+ const nav = globalThis.navigator;
50
+ /** prosemirror-keymap's own answer, reproduced: is its Mod the Meta key? */
51
+ const MOD_IS_META = !!nav && /Mac|iP(hone|[oa]d)/.test(nav.platform ?? '');
52
+ /** X keysym → DOM key name and legacy key code, for the keys with names. */
53
+ const NAMED = new Map([
54
+ [0xff0d, ['Enter', 13]],
55
+ [0xff8d, ['Enter', 13]], // KP_Enter
56
+ [0xff08, ['Backspace', 8]],
57
+ [0xffff, ['Delete', 46]],
58
+ [0xff9f, ['Delete', 46]], // KP_Delete
59
+ [0xff09, ['Tab', 9]],
60
+ [0xfe20, ['Tab', 9]], // ISO_Left_Tab — what Shift+Tab sends
61
+ [0xff1b, ['Escape', 27]],
62
+ [0xff51, ['ArrowLeft', 37]],
63
+ [0xff52, ['ArrowUp', 38]],
64
+ [0xff53, ['ArrowRight', 39]],
65
+ [0xff54, ['ArrowDown', 40]],
66
+ [0xff96, ['ArrowLeft', 37]],
67
+ [0xff97, ['ArrowUp', 38]],
68
+ [0xff98, ['ArrowRight', 39]],
69
+ [0xff99, ['ArrowDown', 40]],
70
+ [0xff50, ['Home', 36]],
71
+ [0xff95, ['Home', 36]],
72
+ [0xff57, ['End', 35]],
73
+ [0xff9c, ['End', 35]],
74
+ [0xff55, ['PageUp', 33]],
75
+ [0xff9a, ['PageUp', 33]],
76
+ [0xff56, ['PageDown', 34]],
77
+ [0xff9b, ['PageDown', 34]],
78
+ [0xff63, ['Insert', 45]],
79
+ [0xff9e, ['Insert', 45]],
80
+ [0x20, [' ', 32]],
81
+ ]);
82
+ for (let i = 0; i < 12; i++)
83
+ NAMED.set(0xffbe + i, [`F${i + 1}`, 112 + i]);
84
+ /** The US-layout key a character is on, as a DOM key code. */
85
+ const PUNCT_CODES = {
86
+ ';': 186,
87
+ ':': 186,
88
+ '=': 187,
89
+ '+': 187,
90
+ ',': 188,
91
+ '<': 188,
92
+ '-': 189,
93
+ _: 189,
94
+ '.': 190,
95
+ '>': 190,
96
+ '/': 191,
97
+ '?': 191,
98
+ '`': 192,
99
+ '~': 192,
100
+ '[': 219,
101
+ '{': 219,
102
+ '\\': 220,
103
+ '|': 220,
104
+ ']': 221,
105
+ '}': 221,
106
+ "'": 222,
107
+ '"': 222,
108
+ ')': 48,
109
+ '!': 49,
110
+ '@': 50,
111
+ '#': 51,
112
+ $: 52,
113
+ '%': 53,
114
+ '^': 54,
115
+ '&': 55,
116
+ '*': 56,
117
+ '(': 57,
118
+ };
119
+ function codeOf(ch) {
120
+ if (/^[a-z]$/i.test(ch))
121
+ return ch.toUpperCase().charCodeAt(0);
122
+ if (/^[0-9]$/.test(ch))
123
+ return ch.charCodeAt(0);
124
+ return PUNCT_CODES[ch] ?? 0;
125
+ }
126
+ /** A react-x11 key event as the DOM keydown a keymap expects. */
127
+ export function toDomKeyEvent(ev, primary) {
128
+ let ctrlKey = !!ev.ctrlKey;
129
+ let metaKey = !!ev.metaKey;
130
+ if ((primary === 'meta') !== MOD_IS_META)
131
+ [ctrlKey, metaKey] = [metaKey, ctrlKey];
132
+ const named = ev.keysym !== undefined ? NAMED.get(ev.keysym) : undefined;
133
+ let key;
134
+ let keyCode;
135
+ if (named) {
136
+ [key, keyCode] = named;
137
+ }
138
+ else {
139
+ const latin = ev.keysym !== undefined && ev.keysym > 0x20 && ev.keysym < 0x7f
140
+ ? String.fromCharCode(ev.keysym)
141
+ : '';
142
+ const chord = ctrlKey || metaKey || !!ev.altKey;
143
+ key = (chord && latin) || ev.key || latin || 'Unidentified';
144
+ keyCode = codeOf(latin || key);
145
+ }
146
+ let prevented = false;
147
+ const shiftKey = !!ev.shiftKey;
148
+ const altKey = !!ev.altKey;
149
+ return {
150
+ type: 'keydown',
151
+ key,
152
+ code: '',
153
+ keyCode,
154
+ which: keyCode,
155
+ charCode: 0,
156
+ shiftKey,
157
+ ctrlKey,
158
+ altKey,
159
+ metaKey,
160
+ repeat: false,
161
+ isComposing: !!ev.composing,
162
+ get defaultPrevented() {
163
+ return prevented;
164
+ },
165
+ preventDefault() {
166
+ prevented = true;
167
+ },
168
+ stopPropagation() { },
169
+ getModifierState(name) {
170
+ switch (name) {
171
+ case 'Shift':
172
+ return shiftKey;
173
+ case 'Control':
174
+ return ctrlKey;
175
+ case 'Alt':
176
+ return altKey;
177
+ case 'Meta':
178
+ return metaKey;
179
+ default:
180
+ return false;
181
+ }
182
+ },
183
+ };
184
+ }
185
+ /**
186
+ * The plugins the default editor runs, in the order they have to be in:
187
+ * input rules, the formatting keymap (its Enter splits list items before the
188
+ * base keymap's Enter splits blocks), history, and prosemirror-commands'
189
+ * base keymap last. `<RichTextEditor>` puts these in its state; an app that
190
+ * owns the state (`state` + `dispatchTransaction`) builds them in itself.
191
+ */
192
+ export function defaultPlugins(schema, options = {}) {
193
+ const out = [];
194
+ const markdown = options.inputRules !== false;
195
+ if (markdown || options.typography) {
196
+ out.push(markdownInputRules(schema, {
197
+ markdown,
198
+ typography: !!options.typography,
199
+ }));
200
+ }
201
+ if (options.keymap !== false)
202
+ out.push(keymap(editingKeymap(schema)));
203
+ if (options.history !== false) {
204
+ out.push(history(), keymap({ 'Mod-z': undo, 'Shift-Mod-z': redo, 'Mod-y': redo }));
205
+ }
206
+ // every table kept rectangular, so the table commands can reason about it
207
+ if (hasTables(schema))
208
+ out.push(tableRepair());
209
+ out.push(keymap(baseKeymap));
210
+ return out;
211
+ }
212
+ /** The formatting shortcuts, for whatever of them the schema can do. */
213
+ export function editingKeymap(schema) {
214
+ const keys = {};
215
+ const bind = (key, cmd) => {
216
+ keys[key] = keys[key] ? chainCommands(keys[key], cmd) : cmd;
217
+ };
218
+ const { marks, nodes } = schema;
219
+ bind('Backspace', undoInputRule);
220
+ if (marks.strong)
221
+ bind('Mod-b', toggleMark(marks.strong));
222
+ if (marks.em)
223
+ bind('Mod-i', toggleMark(marks.em));
224
+ if (marks.code)
225
+ bind('Mod-`', toggleMark(marks.code));
226
+ if (marks.strike)
227
+ bind('Shift-Mod-x', toggleMark(marks.strike));
228
+ if (nodes.code_block) {
229
+ // inside a fence, Tab is indentation — and Escape-then-Tab still leaves
230
+ bind('Tab', indentCode);
231
+ bind('Shift-Tab', dedentCode);
232
+ }
233
+ if (nodes.table) {
234
+ bind('Tab', goToCell(1));
235
+ bind('Shift-Tab', goToCell(-1));
236
+ }
237
+ const item = nodes.list_item;
238
+ if (item) {
239
+ bind('Enter', splitItem(item));
240
+ bind('Mod-[', liftListItem(item));
241
+ bind('Mod-]', sinkListItem(item));
242
+ bind('Tab', sinkListItem(item));
243
+ bind('Shift-Tab', liftListItem(item));
244
+ }
245
+ if (nodes.bullet_list)
246
+ bind('Shift-Mod-8', wrapInList(nodes.bullet_list));
247
+ if (nodes.ordered_list)
248
+ bind('Shift-Mod-7', wrapInList(nodes.ordered_list));
249
+ if (item && nodes.bullet_list && 'checked' in (item.spec.attrs ?? {})) {
250
+ bind('Shift-Mod-9', toggleTaskList(schema));
251
+ }
252
+ if (nodes.blockquote)
253
+ bind('Ctrl->', wrapIn(nodes.blockquote));
254
+ const br = nodes.hard_break;
255
+ if (br) {
256
+ const hardBreak = chainCommands(exitCode, (state, dispatch) => {
257
+ dispatch?.(state.tr.replaceSelectionWith(br.create()).scrollIntoView());
258
+ return true;
259
+ });
260
+ bind('Mod-Enter', hardBreak);
261
+ bind('Shift-Enter', hardBreak);
262
+ }
263
+ if (nodes.paragraph)
264
+ bind('Mod-Alt-0', setBlockType(nodes.paragraph));
265
+ if (nodes.code_block)
266
+ bind('Mod-Alt-c', setBlockType(nodes.code_block));
267
+ if (nodes.heading) {
268
+ for (let level = 1; level <= 6; level++) {
269
+ bind(`Mod-Alt-${level}`, setBlockType(nodes.heading, { level }));
270
+ }
271
+ }
272
+ if (nodes.horizontal_rule)
273
+ bind('Mod-_', insertHorizontalRule(nodes.horizontal_rule));
274
+ return keys;
275
+ }
276
+ /**
277
+ * An input rule for a delimited mark: when the closing delimiter is typed,
278
+ * the delimiters go and what they held takes the mark. `match[1]` is the
279
+ * delimited run, `match[2]` what is inside it. The typed character is the
280
+ * last of the closing delimiter and is simply never inserted; the rest of
281
+ * that delimiter is in the document and is deleted. Undoable, like every
282
+ * input rule: Backspace straight after gives the characters back.
283
+ */
284
+ function markRule(pattern, type) {
285
+ return new InputRule(pattern, (state, match, start, end) => {
286
+ const whole = match[1];
287
+ const inner = match[2];
288
+ const from = start + match[0].length - whole.length;
289
+ const textStart = from + whole.indexOf(inner);
290
+ const textEnd = textStart + inner.length;
291
+ const tr = state.tr;
292
+ if (end > textEnd)
293
+ tr.delete(textEnd, end);
294
+ tr.delete(from, textStart);
295
+ tr.addMark(from, from + inner.length, type.create());
296
+ tr.removeStoredMark(type);
297
+ return tr;
298
+ });
299
+ }
300
+ /** `---` (or `***`/`___` and a space) alone in a paragraph: a rule, and a
301
+ * fresh paragraph after it to go on typing in. */
302
+ function ruleRule(rule) {
303
+ return new InputRule(/^(?:---|___\s|\*\*\*\s)$/, (state, _match, start) => {
304
+ const $start = state.doc.resolve(start);
305
+ const para = $start.parent;
306
+ if (!para.isTextblock || $start.parentOffset !== 0 || $start.depth < 1)
307
+ return null;
308
+ const parent = $start.node(-1);
309
+ const index = $start.index(-1);
310
+ const content = Fragment.from([rule.create(), para.type.create()]);
311
+ if (!parent.canReplace(index, index + 1, content))
312
+ return null;
313
+ const pos = $start.before();
314
+ const tr = state.tr.replaceWith(pos, pos + para.nodeSize, content);
315
+ return tr.setSelection(TextSelection.near(tr.doc.resolve(pos + 2)));
316
+ });
317
+ }
318
+ /** `[ ] ` or `[x] ` at the start of a paragraph — or of a list item's first
319
+ * paragraph — makes it a task. */
320
+ function taskRule(schema) {
321
+ const { list_item: item, bullet_list: list, paragraph } = schema.nodes;
322
+ if (!item || !list || !paragraph || !('checked' in (item.spec.attrs ?? {})))
323
+ return null;
324
+ return new InputRule(/^\[( |x|X)?\]\s$/, (state, match, start, end) => {
325
+ const checked = (match[1] ?? ' ').toLowerCase() === 'x';
326
+ const $start = state.doc.resolve(start);
327
+ if ($start.parentOffset !== 0 || $start.parent.type !== paragraph)
328
+ return null;
329
+ const tr = state.tr.delete(start, end);
330
+ const d = $start.depth - 1;
331
+ if (d > 0 && $start.node(d).type === item && $start.index(d) === 0) {
332
+ return tr.setNodeMarkup($start.before(d), undefined, {
333
+ ...$start.node(d).attrs,
334
+ checked,
335
+ });
336
+ }
337
+ const range = tr.doc.resolve(start).blockRange();
338
+ const wrapping = range && findWrapping(range, list);
339
+ if (!range || !wrapping)
340
+ return null;
341
+ tr.wrap(range, wrapping);
342
+ // the item the wrap just made sits two positions before the paragraph
343
+ const itemPos = range.start + 1;
344
+ const made = tr.doc.nodeAt(itemPos);
345
+ if (made?.type === item)
346
+ tr.setNodeMarkup(itemPos, undefined, { ...made.attrs, checked });
347
+ return tr;
348
+ });
349
+ }
350
+ /** Markdown shortcuts, for whatever of them the schema can hold. */
351
+ export function markdownInputRules(schema, options = {}) {
352
+ const rules = [];
353
+ const { nodes, marks } = schema;
354
+ if (options.typography)
355
+ rules.push(...smartQuotes, ellipsis, emDash);
356
+ if (options.markdown !== false) {
357
+ if (nodes.blockquote)
358
+ rules.push(wrappingInputRule(/^\s*>\s$/, nodes.blockquote));
359
+ if (nodes.ordered_list) {
360
+ rules.push(wrappingInputRule(/^(\d+)\.\s$/, nodes.ordered_list, (match) => ({ order: Number(match[1]) }), (match, node) => node.childCount + Number(node.attrs.order) === Number(match[1])));
361
+ }
362
+ const task = taskRule(schema);
363
+ if (task)
364
+ rules.push(task);
365
+ if (nodes.bullet_list)
366
+ rules.push(wrappingInputRule(/^\s*([-+*])\s$/, nodes.bullet_list));
367
+ if (nodes.code_block) {
368
+ rules.push(textblockTypeInputRule(/^```([^\s`]*)\s$/, nodes.code_block, (match) => ({
369
+ params: match[1] ?? '',
370
+ })));
371
+ }
372
+ if (nodes.heading) {
373
+ rules.push(textblockTypeInputRule(/^(#{1,6})\s$/, nodes.heading, (match) => ({
374
+ level: match[1].length,
375
+ })));
376
+ }
377
+ if (nodes.horizontal_rule)
378
+ rules.push(ruleRule(nodes.horizontal_rule));
379
+ // strong before em: `**x*` must not become italic on its way to bold
380
+ if (marks.strong) {
381
+ rules.push(markRule(/(?:^|[^*\\])(\*\*(?!\s)([^*]+?)(?<!\s)\*\*)$/, marks.strong), markRule(/(?:^|[^_\\\p{L}\p{N}])(__(?!\s)([^_]+?)(?<!\s)__)$/u, marks.strong));
382
+ }
383
+ if (marks.em) {
384
+ rules.push(markRule(/(?:^|[^*\\])(\*(?!\s)([^*]+?)(?<!\s)\*)$/, marks.em), markRule(/(?:^|[^_\\\p{L}\p{N}])(_(?!\s)([^_]+?)(?<!\s)_)$/u, marks.em));
385
+ }
386
+ if (marks.code)
387
+ rules.push(markRule(/(?:^|[^`\\])(`([^`]+)`)$/, marks.code));
388
+ if (marks.strike) {
389
+ rules.push(markRule(/(?:^|[^~\\])(~~(?!\s)([^~]+?)(?<!\s)~~)$/, marks.strike));
390
+ }
391
+ }
392
+ return inputRules({ rules });
393
+ }
394
+ //# sourceMappingURL=keymap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keymap.js","sourceRoot":"","sources":["../../src/rich-text-editor/keymap.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,uBAAuB;AACvB,EAAE;AACF,qEAAqE;AACrE,8EAA8E;AAC9E,oEAAoE;AACpE,4EAA4E;AAC5E,8BAA8B;AAC9B,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,0EAA0E;AAC1E,yDAAyD;AACzD,6EAA6E;AAC7E,4EAA4E;AAC5E,wEAAwE;AACxE,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAC9E,0EAA0E;AAC1E,0EAA0E;AAC1E,yDAAyD;AACzD,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,OAAO,EACL,UAAU,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,MAAM,GACP,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,SAAS,EACT,QAAQ,EACR,MAAM,EACN,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,aAAa,EACb,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EACL,UAAU,EACV,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,SAAS,EACT,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAOxC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,cAAc,IAAI,GAAG;QACrE,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,CAAC;AACb,CAAC;AAED,MAAM,GAAG,GAAI,UAAoD,CAAC,SAAS,CAAC;AAC5E,4EAA4E;AAC5E,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAkC3E,4EAA4E;AAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,CAA2B;IAC9C,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW;IACpC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY;IACtC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,sCAAsC;IAC5D,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzB,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzB,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrB,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;CAClB,CAAC,CAAC;AACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IAAE,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAE3E,8DAA8D;AAC9D,MAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,CAAC,EAAE,GAAG;IACN,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,GAAG;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,CAAC,EAAE,EAAE;IACL,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;CACR,CAAC;AAEF,SAAS,MAAM,CAAC,EAAU;IACxB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAC3B,EAAW,EACX,OAAwB;IAExB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IAC3B,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,WAAW;QACtC,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,IAAI,GAAW,CAAC;IAChB,IAAI,OAAe,CAAC;IACpB,IAAI,KAAK,EAAE,CAAC;QACV,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GACT,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI;YAC7D,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;QAChD,GAAG,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,cAAc,CAAC;QAC5D,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;IAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;IAC3B,OAAO;QACL,IAAI,EAAE,SAAS;QACf,GAAG;QACH,IAAI,EAAE,EAAE;QACR,OAAO;QACP,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,CAAC;QACX,QAAQ;QACR,OAAO;QACP,MAAM;QACN,OAAO;QACP,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS;QAC3B,IAAI,gBAAgB;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,cAAc;YACZ,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,eAAe,KAAI,CAAC;QACpB,gBAAgB,CAAC,IAAY;YAC3B,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,OAAO;oBACV,OAAO,QAAQ,CAAC;gBAClB,KAAK,SAAS;oBACZ,OAAO,OAAO,CAAC;gBACjB,KAAK,KAAK;oBACR,OAAO,MAAM,CAAC;gBAChB,KAAK,MAAM;oBACT,OAAO,OAAO,CAAC;gBACjB;oBACE,OAAO,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAiBD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,OAAO,GAAyB,EAAE;IAElC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC;IAC9C,IAAI,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CACN,kBAAkB,CAAC,MAAM,EAAE;YACzB,QAAQ;YACR,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU;SACjC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;QAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CACN,OAAO,EAAE,EACT,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAC9D,CAAC;IACJ,CAAC;IACD,0EAA0E;IAC1E,IAAI,SAAS,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,GAAY,EAAQ,EAAE;QAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9D,CAAC,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEhC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM;QAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,IAAI;QAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM;QAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,wEAAwE;QACxE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;IAC7B,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,WAAW;QAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,YAAY;QAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,IAAI,IAAI,IAAI,KAAK,CAAC,WAAW,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,KAAK,CAAC,UAAU;QAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAE/D,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;IAC5B,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC5D,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,CAAC,SAAS;QAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,IAAI,KAAK,CAAC,UAAU;QAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,eAAe;QACvB,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,OAAe,EAAE,IAAc;IAC/C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QACzC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACpB,IAAI,GAAG,GAAG,OAAO;YAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3C,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3B,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;mDACmD;AACnD,SAAS,QAAQ,CAAC,IAAc;IAC9B,OAAO,IAAI,SAAS,CAAC,0BAA0B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QACxE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;mCACmC;AACnC,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IACvE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,OAAO,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;YAC/D,OAAO,IAAI,CAAC;QACd,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE;gBACnD,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;gBACvB,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACrC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzB,sEAAsE;QACtE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI;YACrB,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,OAAO,GAAiD,EAAE;IAE1D,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAChC,IAAI,OAAO,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,UAAU;YAClB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CACR,iBAAiB,CACf,aAAa,EACb,KAAK,CAAC,YAAY,EAClB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACxC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CACd,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAClE,CACF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,CAAC,WAAW;YACnB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CACR,sBAAsB,CACpB,kBAAkB,EAClB,KAAK,CAAC,UAAU,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACV,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;aACvB,CAAC,CACH,CACF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CACR,sBAAsB,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAChE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;aACvB,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QACvE,qEAAqE;QACrE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,8CAA8C,EAAE,KAAK,CAAC,MAAM,CAAC,EACtE,QAAQ,CACN,qDAAqD,EACrD,KAAK,CAAC,MAAM,CACb,CACF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,0CAA0C,EAAE,KAAK,CAAC,EAAE,CAAC,EAC9D,QAAQ,CAAC,mDAAmD,EAAE,KAAK,CAAC,EAAE,CAAC,CACxE,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,IAAI;YACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,0CAA0C,EAAE,KAAK,CAAC,MAAM,CAAC,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { Node as PMNode } from 'prosemirror-model';
2
+ import type { Mappable } from 'prosemirror-transform';
3
+ export declare class BlockKeys {
4
+ private counter;
5
+ /** Every block, in document order — which is the order of their starts,
6
+ * so a position is found by bisection. */
7
+ private entries;
8
+ private byKey;
9
+ /** The document the entries describe. */
10
+ private doc;
11
+ constructor(doc: PMNode);
12
+ /** How many blocks the document has — every non-inline node but the
13
+ * document itself. */
14
+ get size(): number;
15
+ /** The key of the block that starts at `pos`, if one does. */
16
+ keyAt(pos: number): string | undefined;
17
+ /** Where the block under `key` starts now. */
18
+ posOf(key: string): number | undefined;
19
+ /** The node the block under `key` is now. */
20
+ nodeOf(key: string): PMNode | undefined;
21
+ /**
22
+ * Re-key for a new document. `mapping` is the transaction (or the run of
23
+ * transactions) that produced it from the one the keys were last built
24
+ * for; null when nothing knows how the two relate.
25
+ *
26
+ * The top-level blocks the two documents share at either end — the same
27
+ * node objects, which is what ProseMirror's structural sharing leaves
28
+ * everywhere an edit did not reach — keep their keys, and the blocks
29
+ * after the edit only move. What lies between is keyed as the whole
30
+ * document used to be, on every keystroke: a mapped start first, then a
31
+ * surviving node, then a fresh key. So a keystroke costs the block it
32
+ * lands in plus a pass that adds a number to each block after it, where
33
+ * it cost a walk of the document and three maps built from scratch —
34
+ * six milliseconds a key in a 2 MB document.
35
+ */
36
+ update(doc: PMNode, mapping: Mappable | null): void;
37
+ /** The index of the first block starting at or after `pos`. */
38
+ private _firstAtOrAfter;
39
+ }
40
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/rich-text-editor/keys.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAUtD,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAK;IACpB;+CAC2C;IAC3C,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,KAAK,CAA4B;IACzC,yCAAyC;IACzC,OAAO,CAAC,GAAG,CAAuB;IAElC,YAAY,GAAG,EAAE,MAAM,EAEtB;IAED;2BACuB;IACvB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,8DAA8D;IAC9D,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYrC;IAED,8CAA8C;IAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErC;IAED,6CAA6C;IAC7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAwGlD;IAED,+DAA+D;IAC/D,OAAO,CAAC,eAAe;CAWxB"}
@@ -0,0 +1,202 @@
1
+ import { Mapping } from 'prosemirror-transform';
2
+ import { spliceAll } from '../internal/splice.js';
3
+ export class BlockKeys {
4
+ counter = 0;
5
+ /** Every block, in document order — which is the order of their starts,
6
+ * so a position is found by bisection. */
7
+ entries = [];
8
+ byKey = new Map();
9
+ /** The document the entries describe. */
10
+ doc = null;
11
+ constructor(doc) {
12
+ this.update(doc, null);
13
+ }
14
+ /** How many blocks the document has — every non-inline node but the
15
+ * document itself. */
16
+ get size() {
17
+ return this.entries.length;
18
+ }
19
+ /** The key of the block that starts at `pos`, if one does. */
20
+ keyAt(pos) {
21
+ const entries = this.entries;
22
+ let lo = 0;
23
+ let hi = entries.length - 1;
24
+ while (lo <= hi) {
25
+ const mid = (lo + hi) >> 1;
26
+ const at = entries[mid].pos;
27
+ if (at === pos)
28
+ return entries[mid].key;
29
+ if (at < pos)
30
+ lo = mid + 1;
31
+ else
32
+ hi = mid - 1;
33
+ }
34
+ return undefined;
35
+ }
36
+ /** Where the block under `key` starts now. */
37
+ posOf(key) {
38
+ return this.byKey.get(key)?.pos;
39
+ }
40
+ /** The node the block under `key` is now. */
41
+ nodeOf(key) {
42
+ return this.byKey.get(key)?.node;
43
+ }
44
+ /**
45
+ * Re-key for a new document. `mapping` is the transaction (or the run of
46
+ * transactions) that produced it from the one the keys were last built
47
+ * for; null when nothing knows how the two relate.
48
+ *
49
+ * The top-level blocks the two documents share at either end — the same
50
+ * node objects, which is what ProseMirror's structural sharing leaves
51
+ * everywhere an edit did not reach — keep their keys, and the blocks
52
+ * after the edit only move. What lies between is keyed as the whole
53
+ * document used to be, on every keystroke: a mapped start first, then a
54
+ * surviving node, then a fresh key. So a keystroke costs the block it
55
+ * lands in plus a pass that adds a number to each block after it, where
56
+ * it cost a walk of the document and three maps built from scratch —
57
+ * six milliseconds a key in a 2 MB document.
58
+ */
59
+ update(doc, mapping) {
60
+ const was = this.doc;
61
+ this.doc = doc;
62
+ // the top-level children the two documents share at either end
63
+ let head = 0;
64
+ let tail = 0;
65
+ if (was) {
66
+ const shared = Math.min(was.childCount, doc.childCount);
67
+ while (head < shared && was.child(head) === doc.child(head))
68
+ head++;
69
+ while (tail < shared - head &&
70
+ was.child(was.childCount - 1 - tail) ===
71
+ doc.child(doc.childCount - 1 - tail)) {
72
+ tail++;
73
+ }
74
+ }
75
+ let from = 0; // where the changed children start, in both documents
76
+ for (let i = 0; i < head; i++)
77
+ from += doc.child(i).nodeSize;
78
+ let wasTo = from;
79
+ if (was) {
80
+ for (let i = head; i < was.childCount - tail; i++) {
81
+ wasTo += was.child(i).nodeSize;
82
+ }
83
+ }
84
+ let to = from;
85
+ for (let i = head; i < doc.childCount - tail; i++) {
86
+ to += doc.child(i).nodeSize;
87
+ }
88
+ const entries = this.entries;
89
+ const first = this._firstAtOrAfter(from);
90
+ const end = this._firstAtOrAfter(wasTo);
91
+ const old = entries.slice(first, end);
92
+ // 1. Where each old block's start went — nowhere, when nothing in the
93
+ // mapping moves a position: a mark added or taken off, an attribute set.
94
+ // Bold over a whole document is one step a paragraph, and mapping every
95
+ // block through every one of them was a third of the command.
96
+ const carried = new Map();
97
+ if (mapping && !movesNothing(mapping)) {
98
+ for (const { pos, key } of old) {
99
+ const result = mapping.mapResult(pos, 1);
100
+ // the token after the start is the block's own opening — gone means
101
+ // the block is gone, merged into whatever preceded it
102
+ if (result.deletedAfter)
103
+ continue;
104
+ if (!carried.has(result.pos))
105
+ carried.set(result.pos, key);
106
+ }
107
+ }
108
+ else if (mapping) {
109
+ for (const { pos, key } of old) {
110
+ if (!carried.has(pos))
111
+ carried.set(pos, key);
112
+ }
113
+ }
114
+ // 2. Which old node objects are still here, for when nothing mapped.
115
+ const byNode = new Map();
116
+ const carriedKeys = new Set(carried.values());
117
+ for (const { key, node } of old) {
118
+ if (carriedKeys.has(key))
119
+ continue;
120
+ const list = byNode.get(node);
121
+ if (list)
122
+ list.push(key);
123
+ else
124
+ byNode.set(node, [key]);
125
+ }
126
+ for (const { key } of old)
127
+ this.byKey.delete(key);
128
+ // 3. The changed children, keyed.
129
+ const fresh = [];
130
+ const used = new Set();
131
+ const visit = (node, pos) => {
132
+ if (node.isInline)
133
+ return false;
134
+ let key = carried.get(pos);
135
+ if (key !== undefined && used.has(key))
136
+ key = undefined;
137
+ if (key === undefined) {
138
+ const list = byNode.get(node);
139
+ while (list && list.length > 0) {
140
+ const candidate = list.shift();
141
+ if (!used.has(candidate)) {
142
+ key = candidate;
143
+ break;
144
+ }
145
+ }
146
+ }
147
+ if (key === undefined)
148
+ key = `b${(this.counter++).toString(36)}`;
149
+ used.add(key);
150
+ const entry = { key, pos, node };
151
+ fresh.push(entry);
152
+ this.byKey.set(key, entry);
153
+ // a textblock's children are inline: nothing below it has a key
154
+ return !node.isTextblock;
155
+ };
156
+ let at = from;
157
+ for (let i = head; i < doc.childCount - tail; i++) {
158
+ const child = doc.child(i);
159
+ if (visit(child, at)) {
160
+ const base = at + 1;
161
+ child.descendants((node, pos) => visit(node, base + pos));
162
+ }
163
+ at += child.nodeSize;
164
+ }
165
+ // 4. The blocks after them moved, and are otherwise as they were.
166
+ const shift = to - wasTo;
167
+ if (shift !== 0) {
168
+ for (let i = end; i < entries.length; i++)
169
+ entries[i].pos += shift;
170
+ }
171
+ spliceAll(entries, first, end - first, fresh);
172
+ }
173
+ /** The index of the first block starting at or after `pos`. */
174
+ _firstAtOrAfter(pos) {
175
+ const entries = this.entries;
176
+ let lo = 0;
177
+ let hi = entries.length;
178
+ while (lo < hi) {
179
+ const mid = (lo + hi) >> 1;
180
+ if (entries[mid].pos < pos)
181
+ lo = mid + 1;
182
+ else
183
+ hi = mid;
184
+ }
185
+ return lo;
186
+ }
187
+ }
188
+ /** Whether a mapping is made only of steps that move no position. */
189
+ function movesNothing(mapping) {
190
+ if (!(mapping instanceof Mapping))
191
+ return false;
192
+ for (const map of mapping.maps) {
193
+ let moved = false;
194
+ map.forEach(() => {
195
+ moved = true;
196
+ });
197
+ if (moved)
198
+ return false;
199
+ }
200
+ return true;
201
+ }
202
+ //# sourceMappingURL=keys.js.map