@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,145 @@
1
+ import type { Element as DhElement } from 'domhandler';
2
+ import { DOMParser, DOMSerializer, Fragment } from 'prosemirror-model';
3
+ import type { Node as PMNode, ParseOptions, Schema, Slice } from 'prosemirror-model';
4
+ /** A `style` attribute, as the declaration object `DOMParser`'s style rules
5
+ * and a schema's `getAttrs` read: `getPropertyValue` for the former,
6
+ * camelCase properties for the latter. */
7
+ export declare class ShimStyle {
8
+ [property: string]: unknown;
9
+ private readonly _names;
10
+ private readonly _values;
11
+ constructor(css: string);
12
+ private _set;
13
+ get length(): number;
14
+ item(index: number): string;
15
+ getPropertyValue(name: string): string;
16
+ get cssText(): string;
17
+ }
18
+ declare abstract class ShimNode {
19
+ abstract readonly nodeType: number;
20
+ abstract readonly nodeName: string;
21
+ ownerDocument: ShimDocument;
22
+ parentNode: ShimParent | null;
23
+ nextSibling: ShimNode | null;
24
+ previousSibling: ShimNode | null;
25
+ abstract get textContent(): string;
26
+ contains(other: ShimNode | null): boolean;
27
+ }
28
+ declare abstract class ShimParent extends ShimNode {
29
+ readonly childNodes: ShimNode[];
30
+ get firstChild(): ShimNode | null;
31
+ get lastChild(): ShimNode | null;
32
+ get textContent(): string;
33
+ appendChild<T extends ShimNode>(child: T): T;
34
+ removeChild<T extends ShimNode>(child: T): T;
35
+ }
36
+ export declare class ShimText extends ShimNode {
37
+ nodeValue: string;
38
+ readonly nodeType = 3;
39
+ readonly nodeName = "#text";
40
+ constructor(doc: ShimDocument, nodeValue: string);
41
+ get textContent(): string;
42
+ }
43
+ export declare class ShimElement extends ShimParent {
44
+ /** The parser's node, which selectors are matched against. */
45
+ readonly source: DhElement;
46
+ readonly nodeType = 1;
47
+ readonly nodeName: string;
48
+ readonly tagName: string;
49
+ readonly localName: string;
50
+ readonly namespaceURI = "http://www.w3.org/1999/xhtml";
51
+ readonly style: ShimStyle;
52
+ private readonly _attrs;
53
+ constructor(doc: ShimDocument,
54
+ /** The parser's node, which selectors are matched against. */
55
+ source: DhElement);
56
+ getAttribute(name: string): string | null;
57
+ hasAttribute(name: string): boolean;
58
+ get attributes(): {
59
+ name: string;
60
+ value: string;
61
+ }[];
62
+ get id(): string;
63
+ get className(): string;
64
+ get classList(): {
65
+ contains(name: string): boolean;
66
+ length: number;
67
+ };
68
+ matches(selector: string): boolean;
69
+ querySelector(selector: string): ShimElement | null;
70
+ querySelectorAll(selector: string): ShimElement[];
71
+ }
72
+ export declare class ShimDocument extends ShimParent {
73
+ readonly nodeType = 9;
74
+ readonly nodeName = "#document";
75
+ private readonly _shims;
76
+ constructor();
77
+ createTextNode(text: string): ShimText;
78
+ /** @internal — the shim a parser element became. */
79
+ shimOf(node: DhElement): ShimElement | null;
80
+ /** @internal */
81
+ adopt(node: DhElement): ShimElement;
82
+ }
83
+ /**
84
+ * HTML → the element DOMParser reads — the counterpart of prosemirror-view's
85
+ * `readHTML`: leading `<meta>`s dropped (a browser's clipboard starts with
86
+ * one), and a fragment that begins inside a table given its table back.
87
+ */
88
+ export declare function readHTML(html: string): ShimElement;
89
+ /** A whole document of `schema`, from HTML. */
90
+ export declare function docFromHTML(schema: Schema, html: string, options?: ParseOptions): PMNode;
91
+ /** A slice of `schema`, from HTML — open at the sides, the shape
92
+ * `replaceSelection` wants. */
93
+ export declare function sliceFromHTML(schema: Schema, html: string, options?: ParseOptions): Slice;
94
+ /** Parse an element already read with {@link readHTML}. */
95
+ export declare function sliceFromElement(parser: DOMParser, dom: ShimElement, options?: ParseOptions): Slice;
96
+ type OutNode = OutElement | OutText | OutFragment;
97
+ declare class OutText {
98
+ nodeValue: string;
99
+ readonly nodeType = 3;
100
+ constructor(nodeValue: string);
101
+ }
102
+ declare class OutFragment {
103
+ readonly nodeType = 11;
104
+ readonly childNodes: OutNode[];
105
+ appendChild<T extends OutNode>(child: T): T;
106
+ get firstChild(): OutNode | null;
107
+ }
108
+ declare class OutElement {
109
+ readonly nodeType = 1;
110
+ readonly tagName: string;
111
+ readonly nodeName: string;
112
+ readonly attrs: Map<string, string>;
113
+ readonly childNodes: OutNode[];
114
+ /** DOMSerializer writes a `style` attribute as `style.cssText`. */
115
+ readonly style: {
116
+ cssText: string;
117
+ };
118
+ constructor(tag: string);
119
+ setAttribute(name: string, value: unknown): void;
120
+ setAttributeNS(_ns: string, name: string, value: unknown): void;
121
+ getAttribute(name: string): string | null;
122
+ removeAttribute(name: string): void;
123
+ appendChild<T extends OutNode>(child: T): T;
124
+ get firstChild(): OutNode | null;
125
+ }
126
+ /** Serialize content through the schema's `toDOM`, as a fragment of the
127
+ * printed tree — the clipboard adds its own attribute before printing. */
128
+ export declare function renderFragment(schema: Schema, content: Fragment): {
129
+ html(): string;
130
+ firstElement(): OutElement | null;
131
+ };
132
+ /**
133
+ * The HTML a copy offers other applications — prosemirror-view's
134
+ * `serializeForClipboard`, printed rather than put in a DOM: the content
135
+ * through `serializer`, wrapped in a table when it starts with a table's
136
+ * parts (a cell alone is not HTML any reader keeps), and ProseMirror's
137
+ * `data-pm-slice` marker on the first element, so a ProseMirror editor
138
+ * anywhere — this one, or one in a browser — pastes it back with its open
139
+ * sides and its context intact.
140
+ */
141
+ export declare function clipboardHTML(serializer: DOMSerializer, content: Fragment, openStart: number, openEnd: number, context: unknown[]): string;
142
+ /** A document or a fragment as HTML, through the schema's `toDOM`. */
143
+ export declare function htmlFromContent(schema: Schema, content: Fragment | PMNode): string;
144
+ export {};
145
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/rich-text-editor/html.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,516 @@
1
+ // HTML in and out of a document, through ProseMirror's own DOMParser and
2
+ // DOMSerializer — with no DOM.
3
+ //
4
+ // Both classes are written against the browser's DOM, and both are still the
5
+ // right thing to use: every schema in the ecosystem already says how it reads
6
+ // HTML (`parseDOM` rules) and how it writes it (`toDOM`), so going through
7
+ // them makes a paste from a browser, `format="html"` and a copy another
8
+ // application can read work for *any* schema — the default one here,
9
+ // prosemirror-schema-basic's, a TipTap extension's — with nothing written per
10
+ // node. Reimplementing either would mean a second reading of every schema's
11
+ // rules, and the first one to disagree with ProseMirror's would be a bug.
12
+ //
13
+ // So this module supplies the smallest DOM each of them touches.
14
+ //
15
+ // **Reading.** htmlparser2 builds the tree — already installed, for the
16
+ // reason `src/html/dom.ts` gives — and it is re-dressed in nodes that answer
17
+ // what `DOMParser` asks: `nodeType`/`nodeName`, the sibling links, the
18
+ // attributes, `style` as a declaration block, `matches`/`querySelector`
19
+ // through css-select, `appendChild` (its list normalization moves nodes), and
20
+ // an `ownerDocument` that can make a text node. Selector matching runs on the
21
+ // parser's own tree, so a structural selector sees the markup as written,
22
+ // not after that normalization; the rules schemas actually write are a tag
23
+ // and an attribute, which do not care.
24
+ //
25
+ // **Writing.** `DOMSerializer` takes a `document` option, and a four-method
26
+ // one that builds plain objects is all it calls; they are then printed.
27
+ import { Parser } from 'htmlparser2';
28
+ import { DomHandler } from 'domhandler';
29
+ import { is, selectAll, selectOne } from 'css-select';
30
+ import { DOMParser, DOMSerializer, Fragment } from 'prosemirror-model';
31
+ const HTML_NS = 'http://www.w3.org/1999/xhtml';
32
+ // --- reading ---------------------------------------------------------------
33
+ /** `font-weight` → `fontWeight`, the name a `getAttrs` reads off `style`. */
34
+ function camel(name) {
35
+ return name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
36
+ }
37
+ /** Split a declaration block on the semicolons that end declarations — not
38
+ * the ones inside a `url(…)` or a quoted string. */
39
+ function declarations(css) {
40
+ const out = [];
41
+ let depth = 0;
42
+ let quote = '';
43
+ let start = 0;
44
+ for (let i = 0; i < css.length; i++) {
45
+ const ch = css[i];
46
+ if (quote) {
47
+ if (ch === quote && css[i - 1] !== '\\')
48
+ quote = '';
49
+ }
50
+ else if (ch === '"' || ch === "'")
51
+ quote = ch;
52
+ else if (ch === '(')
53
+ depth++;
54
+ else if (ch === ')')
55
+ depth = Math.max(0, depth - 1);
56
+ else if (ch === ';' && depth === 0) {
57
+ out.push(css.slice(start, i));
58
+ start = i + 1;
59
+ }
60
+ }
61
+ out.push(css.slice(start));
62
+ return out;
63
+ }
64
+ const STYLE_MEMBERS = new Set([
65
+ 'length',
66
+ 'item',
67
+ 'getPropertyValue',
68
+ 'cssText',
69
+ ]);
70
+ /** A `style` attribute, as the declaration object `DOMParser`'s style rules
71
+ * and a schema's `getAttrs` read: `getPropertyValue` for the former,
72
+ * camelCase properties for the latter. */
73
+ export class ShimStyle {
74
+ _names = [];
75
+ _values = new Map();
76
+ constructor(css) {
77
+ for (const decl of declarations(css)) {
78
+ const colon = decl.indexOf(':');
79
+ if (colon <= 0)
80
+ continue;
81
+ const name = decl.slice(0, colon).trim().toLowerCase();
82
+ const value = decl
83
+ .slice(colon + 1)
84
+ .replace(/!\s*important\s*$/i, '')
85
+ .trim();
86
+ if (!name || !value)
87
+ continue;
88
+ this._set(name, value);
89
+ // a browser reports the shorthand's longhand too, and rules are
90
+ // written against either
91
+ if (name === 'text-decoration')
92
+ this._set('text-decoration-line', value);
93
+ }
94
+ }
95
+ _set(name, value) {
96
+ if (!this._values.has(name))
97
+ this._names.push(name);
98
+ this._values.set(name, value);
99
+ const prop = camel(name);
100
+ if (!STYLE_MEMBERS.has(prop))
101
+ this[prop] = value;
102
+ }
103
+ get length() {
104
+ return this._names.length;
105
+ }
106
+ item(index) {
107
+ return this._names[index] ?? '';
108
+ }
109
+ getPropertyValue(name) {
110
+ return this._values.get(name.toLowerCase()) ?? '';
111
+ }
112
+ get cssText() {
113
+ return this._names.map((n) => `${n}: ${this._values.get(n)}`).join('; ');
114
+ }
115
+ }
116
+ class ShimNode {
117
+ ownerDocument;
118
+ parentNode = null;
119
+ nextSibling = null;
120
+ previousSibling = null;
121
+ contains(other) {
122
+ for (let n = other; n; n = n.parentNode) {
123
+ if (n === this)
124
+ return true;
125
+ }
126
+ return false;
127
+ }
128
+ }
129
+ class ShimParent extends ShimNode {
130
+ childNodes = [];
131
+ get firstChild() {
132
+ return this.childNodes[0] ?? null;
133
+ }
134
+ get lastChild() {
135
+ return this.childNodes[this.childNodes.length - 1] ?? null;
136
+ }
137
+ get textContent() {
138
+ let out = '';
139
+ for (const child of this.childNodes)
140
+ out += child.textContent;
141
+ return out;
142
+ }
143
+ appendChild(child) {
144
+ child.parentNode?.removeChild(child);
145
+ const last = this.lastChild;
146
+ child.parentNode = this;
147
+ child.previousSibling = last;
148
+ child.nextSibling = null;
149
+ if (last)
150
+ last.nextSibling = child;
151
+ this.childNodes.push(child);
152
+ return child;
153
+ }
154
+ removeChild(child) {
155
+ const at = this.childNodes.indexOf(child);
156
+ if (at < 0)
157
+ return child;
158
+ this.childNodes.splice(at, 1);
159
+ if (child.previousSibling)
160
+ child.previousSibling.nextSibling = child.nextSibling;
161
+ if (child.nextSibling)
162
+ child.nextSibling.previousSibling = child.previousSibling;
163
+ child.parentNode = null;
164
+ child.previousSibling = null;
165
+ child.nextSibling = null;
166
+ return child;
167
+ }
168
+ }
169
+ export class ShimText extends ShimNode {
170
+ nodeValue;
171
+ nodeType = 3;
172
+ nodeName = '#text';
173
+ constructor(doc, nodeValue) {
174
+ super();
175
+ this.nodeValue = nodeValue;
176
+ this.ownerDocument = doc;
177
+ }
178
+ get textContent() {
179
+ return this.nodeValue;
180
+ }
181
+ }
182
+ export class ShimElement extends ShimParent {
183
+ source;
184
+ nodeType = 1;
185
+ nodeName;
186
+ tagName;
187
+ localName;
188
+ namespaceURI = HTML_NS;
189
+ style;
190
+ _attrs;
191
+ constructor(doc,
192
+ /** The parser's node, which selectors are matched against. */
193
+ source) {
194
+ super();
195
+ this.source = source;
196
+ this.ownerDocument = doc;
197
+ this.localName = source.name.toLowerCase();
198
+ this.tagName = this.localName.toUpperCase();
199
+ this.nodeName = this.tagName;
200
+ this._attrs = new Map(Object.entries(source.attribs ?? {}).map(([k, v]) => [
201
+ k.toLowerCase(),
202
+ v,
203
+ ]));
204
+ this.style = new ShimStyle(this._attrs.get('style') ?? '');
205
+ }
206
+ getAttribute(name) {
207
+ return this._attrs.get(name.toLowerCase()) ?? null;
208
+ }
209
+ hasAttribute(name) {
210
+ return this._attrs.has(name.toLowerCase());
211
+ }
212
+ get attributes() {
213
+ return [...this._attrs].map(([name, value]) => ({ name, value }));
214
+ }
215
+ get id() {
216
+ return this.getAttribute('id') ?? '';
217
+ }
218
+ get className() {
219
+ return this.getAttribute('class') ?? '';
220
+ }
221
+ get classList() {
222
+ const list = this.className.split(/\s+/).filter(Boolean);
223
+ return { contains: (name) => list.includes(name), length: list.length };
224
+ }
225
+ matches(selector) {
226
+ try {
227
+ return is(this.source, selector);
228
+ }
229
+ catch {
230
+ return false; // a selector css-select cannot read matches nothing
231
+ }
232
+ }
233
+ querySelector(selector) {
234
+ try {
235
+ const found = selectOne(selector, this.source.children);
236
+ return found ? this.ownerDocument.shimOf(found) : null;
237
+ }
238
+ catch {
239
+ return null;
240
+ }
241
+ }
242
+ querySelectorAll(selector) {
243
+ try {
244
+ return selectAll(selector, this.source.children)
245
+ .map((found) => this.ownerDocument.shimOf(found))
246
+ .filter((e) => e !== null);
247
+ }
248
+ catch {
249
+ return [];
250
+ }
251
+ }
252
+ }
253
+ export class ShimDocument extends ShimParent {
254
+ nodeType = 9;
255
+ nodeName = '#document';
256
+ _shims = new WeakMap();
257
+ constructor() {
258
+ super();
259
+ this.ownerDocument = this;
260
+ }
261
+ createTextNode(text) {
262
+ return new ShimText(this, text);
263
+ }
264
+ /** @internal — the shim a parser element became. */
265
+ shimOf(node) {
266
+ return this._shims.get(node) ?? null;
267
+ }
268
+ /** @internal */
269
+ adopt(node) {
270
+ const shim = new ShimElement(this, node);
271
+ this._shims.set(node, shim);
272
+ return shim;
273
+ }
274
+ }
275
+ function isElementNode(node) {
276
+ return node.type === 'tag' || node.type === 'script' || node.type === 'style';
277
+ }
278
+ /**
279
+ * The shim tree for a parsed fragment, under `into`. An explicit stack
280
+ * rather than recursion: a pasted document is somebody else's markup, and a
281
+ * degenerately nested one should not be the thing that finds the call-stack
282
+ * limit (`src/html/dom.ts` measured the same walk).
283
+ */
284
+ function build(doc, into, nodes) {
285
+ const stack = [[into, nodes]];
286
+ while (stack.length > 0) {
287
+ const [parent, kids] = stack.pop();
288
+ for (const kid of kids) {
289
+ if (kid.type === 'text') {
290
+ parent.appendChild(new ShimText(doc, kid.data));
291
+ }
292
+ else if (isElementNode(kid)) {
293
+ const shim = parent.appendChild(doc.adopt(kid));
294
+ if (kid.children.length > 0)
295
+ stack.push([shim, kid.children]);
296
+ }
297
+ // comments, directives and CDATA: DOMParser skips them anyway
298
+ }
299
+ }
300
+ }
301
+ /** Elements that only parse inside a table — ProseMirror's (and jQuery's)
302
+ * list, so a copied cell pastes as a cell. */
303
+ const WRAP_MAP = {
304
+ thead: ['table'],
305
+ tbody: ['table'],
306
+ tfoot: ['table'],
307
+ caption: ['table'],
308
+ colgroup: ['table'],
309
+ col: ['table', 'colgroup'],
310
+ tr: ['table', 'tbody'],
311
+ td: ['table', 'tbody', 'tr'],
312
+ th: ['table', 'tbody', 'tr'],
313
+ };
314
+ /**
315
+ * HTML → the element DOMParser reads — the counterpart of prosemirror-view's
316
+ * `readHTML`: leading `<meta>`s dropped (a browser's clipboard starts with
317
+ * one), and a fragment that begins inside a table given its table back.
318
+ */
319
+ export function readHTML(html) {
320
+ const metas = /^(\s*<meta [^>]*>)*/i.exec(html);
321
+ if (metas)
322
+ html = html.slice(metas[0].length);
323
+ const first = /<([a-z][^>\s]+)/i.exec(html);
324
+ const wrap = first ? WRAP_MAP[first[1].toLowerCase()] : undefined;
325
+ if (wrap) {
326
+ html =
327
+ wrap.map((n) => `<${n}>`).join('') +
328
+ html +
329
+ wrap
330
+ .map((n) => `</${n}>`)
331
+ .reverse()
332
+ .join('');
333
+ }
334
+ const handler = new DomHandler();
335
+ const parser = new Parser(handler);
336
+ parser.write(`<body>${html}</body>`);
337
+ parser.end();
338
+ const doc = new ShimDocument();
339
+ build(doc, doc, handler.root.children);
340
+ let body = doc.childNodes.find((n) => n instanceof ShimElement && n.localName === 'body');
341
+ if (!body)
342
+ throw new Error('readHTML: the parser lost its <body>');
343
+ if (wrap) {
344
+ for (const name of wrap)
345
+ body = body.querySelector(name) ?? body;
346
+ }
347
+ return body;
348
+ }
349
+ /** A whole document of `schema`, from HTML. */
350
+ export function docFromHTML(schema, html, options) {
351
+ return DOMParser.fromSchema(schema).parse(readHTML(html), options);
352
+ }
353
+ /** A slice of `schema`, from HTML — open at the sides, the shape
354
+ * `replaceSelection` wants. */
355
+ export function sliceFromHTML(schema, html, options) {
356
+ return DOMParser.fromSchema(schema).parseSlice(readHTML(html), options);
357
+ }
358
+ /** Parse an element already read with {@link readHTML}. */
359
+ export function sliceFromElement(parser, dom, options) {
360
+ return parser.parseSlice(dom, options);
361
+ }
362
+ class OutText {
363
+ nodeValue;
364
+ nodeType = 3;
365
+ constructor(nodeValue) {
366
+ this.nodeValue = nodeValue;
367
+ }
368
+ }
369
+ class OutFragment {
370
+ nodeType = 11;
371
+ childNodes = [];
372
+ appendChild(child) {
373
+ append(this.childNodes, child);
374
+ return child;
375
+ }
376
+ get firstChild() {
377
+ return this.childNodes[0] ?? null;
378
+ }
379
+ }
380
+ class OutElement {
381
+ nodeType = 1;
382
+ tagName;
383
+ nodeName;
384
+ attrs = new Map();
385
+ childNodes = [];
386
+ /** DOMSerializer writes a `style` attribute as `style.cssText`. */
387
+ style = { cssText: '' };
388
+ constructor(tag) {
389
+ this.tagName = tag.toLowerCase();
390
+ this.nodeName = this.tagName.toUpperCase();
391
+ }
392
+ setAttribute(name, value) {
393
+ this.attrs.set(name, String(value));
394
+ }
395
+ setAttributeNS(_ns, name, value) {
396
+ this.setAttribute(name, value);
397
+ }
398
+ getAttribute(name) {
399
+ return this.attrs.get(name) ?? null;
400
+ }
401
+ removeAttribute(name) {
402
+ this.attrs.delete(name);
403
+ }
404
+ appendChild(child) {
405
+ append(this.childNodes, child);
406
+ return child;
407
+ }
408
+ get firstChild() {
409
+ return this.childNodes[0] ?? null;
410
+ }
411
+ }
412
+ function append(list, child) {
413
+ if (child instanceof OutFragment) {
414
+ list.push(...child.childNodes);
415
+ child.childNodes.length = 0;
416
+ }
417
+ else
418
+ list.push(child);
419
+ }
420
+ /** The whole of the `document` DOMSerializer calls. */
421
+ const OUT_DOCUMENT = {
422
+ createElement: (tag) => new OutElement(tag),
423
+ createElementNS: (_ns, tag) => new OutElement(tag),
424
+ createTextNode: (text) => new OutText(text),
425
+ createDocumentFragment: () => new OutFragment(),
426
+ };
427
+ const VOID = new Set([
428
+ 'area',
429
+ 'base',
430
+ 'br',
431
+ 'col',
432
+ 'embed',
433
+ 'hr',
434
+ 'img',
435
+ 'input',
436
+ 'link',
437
+ 'meta',
438
+ 'source',
439
+ 'track',
440
+ 'wbr',
441
+ ]);
442
+ function escapeText(text) {
443
+ return text
444
+ .replace(/&/g, '&amp;')
445
+ .replace(/</g, '&lt;')
446
+ .replace(/>/g, '&gt;')
447
+ .replace(/ /g, '&nbsp;');
448
+ }
449
+ function escapeAttr(text) {
450
+ return escapeText(text).replace(/"/g, '&quot;');
451
+ }
452
+ function print(node) {
453
+ if (node instanceof OutText)
454
+ return escapeText(node.nodeValue);
455
+ if (node instanceof OutFragment)
456
+ return node.childNodes.map(print).join('');
457
+ let attrs = '';
458
+ for (const [name, value] of node.attrs) {
459
+ attrs += ` ${name}="${escapeAttr(value)}"`;
460
+ }
461
+ if (node.style.cssText && !node.attrs.has('style')) {
462
+ attrs += ` style="${escapeAttr(node.style.cssText)}"`;
463
+ }
464
+ if (VOID.has(node.tagName))
465
+ return `<${node.tagName}${attrs}>`;
466
+ return `<${node.tagName}${attrs}>${node.childNodes.map(print).join('')}</${node.tagName}>`;
467
+ }
468
+ /** Serialize content through the schema's `toDOM`, as a fragment of the
469
+ * printed tree — the clipboard adds its own attribute before printing. */
470
+ export function renderFragment(schema, content) {
471
+ const out = DOMSerializer.fromSchema(schema).serializeFragment(content, {
472
+ document: OUT_DOCUMENT,
473
+ });
474
+ return {
475
+ html: () => print(out),
476
+ firstElement: () => out.childNodes.find((n) => n instanceof OutElement) ??
477
+ null,
478
+ };
479
+ }
480
+ /**
481
+ * The HTML a copy offers other applications — prosemirror-view's
482
+ * `serializeForClipboard`, printed rather than put in a DOM: the content
483
+ * through `serializer`, wrapped in a table when it starts with a table's
484
+ * parts (a cell alone is not HTML any reader keeps), and ProseMirror's
485
+ * `data-pm-slice` marker on the first element, so a ProseMirror editor
486
+ * anywhere — this one, or one in a browser — pastes it back with its open
487
+ * sides and its context intact.
488
+ */
489
+ export function clipboardHTML(serializer, content, openStart, openEnd, context) {
490
+ const out = serializer.serializeFragment(content, {
491
+ document: OUT_DOCUMENT,
492
+ });
493
+ let top = out.childNodes;
494
+ let wrappers = 0;
495
+ let first = top[0];
496
+ let needs;
497
+ if (first instanceof OutElement && (needs = WRAP_MAP[first.tagName])) {
498
+ for (let i = needs.length - 1; i >= 0; i--) {
499
+ const wrapper = new OutElement(needs[i]);
500
+ wrapper.childNodes.push(...top);
501
+ top = [wrapper];
502
+ wrappers++;
503
+ }
504
+ first = top[0];
505
+ }
506
+ if (first instanceof OutElement) {
507
+ first.setAttribute('data-pm-slice', `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : ''} ${JSON.stringify(context)}`);
508
+ }
509
+ return top.map(print).join('');
510
+ }
511
+ /** A document or a fragment as HTML, through the schema's `toDOM`. */
512
+ export function htmlFromContent(schema, content) {
513
+ const fragment = content instanceof Fragment ? content : content.content;
514
+ return renderFragment(schema, fragment).html();
515
+ }
516
+ //# sourceMappingURL=html.js.map