@react-x11/components 0.9.0 → 0.11.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 (579) hide show
  1. package/README.md +10 -4
  2. package/dist/charts/node.d.ts +11 -1
  3. package/dist/charts/node.d.ts.map +1 -1
  4. package/dist/charts/node.js +44 -14
  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 +27 -24
  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/index.d.ts +1 -1
  24. package/dist/code-language/index.d.ts.map +1 -1
  25. package/dist/code-language/index.js +1 -1
  26. package/dist/code-language/index.js.map +1 -1
  27. package/dist/code-language/languages/glsl.d.ts.map +1 -1
  28. package/dist/code-language/languages/glsl.js +10 -2
  29. package/dist/code-language/languages/glsl.js.map +1 -1
  30. package/dist/code-language/languages/javascript.d.ts.map +1 -1
  31. package/dist/code-language/languages/javascript.js +18 -3
  32. package/dist/code-language/languages/javascript.js.map +1 -1
  33. package/dist/code-language/languages/json.d.ts.map +1 -1
  34. package/dist/code-language/languages/json.js +10 -2
  35. package/dist/code-language/languages/json.js.map +1 -1
  36. package/dist/code-language/languages/shell.d.ts.map +1 -1
  37. package/dist/code-language/languages/shell.js +10 -2
  38. package/dist/code-language/languages/shell.js.map +1 -1
  39. package/dist/code-language/languages/sql.d.ts.map +1 -1
  40. package/dist/code-language/languages/sql.js +20 -2
  41. package/dist/code-language/languages/sql.js.map +1 -1
  42. package/dist/code-language/runs.d.ts +31 -0
  43. package/dist/code-language/runs.d.ts.map +1 -1
  44. package/dist/code-language/runs.js +105 -0
  45. package/dist/code-language/runs.js.map +1 -1
  46. package/dist/code-language/stream.d.ts +22 -0
  47. package/dist/code-language/stream.d.ts.map +1 -1
  48. package/dist/code-language/stream.js +259 -9
  49. package/dist/code-language/stream.js.map +1 -1
  50. package/dist/code-language/types.d.ts +5 -4
  51. package/dist/code-language/types.d.ts.map +1 -1
  52. package/dist/codeblock/index.d.ts +26 -2
  53. package/dist/codeblock/index.d.ts.map +1 -1
  54. package/dist/codeblock/index.js +57 -4
  55. package/dist/codeblock/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 +262 -6
  115. package/dist/html/css/cascade.d.ts.map +1 -1
  116. package/dist/html/css/cascade.js +1373 -67
  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 +501 -15
  139. package/dist/html/css/style.d.ts.map +1 -1
  140. package/dist/html/css/style.js +3729 -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 +65 -16
  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 +3077 -219
  172. package/dist/html/layout/block.js.map +1 -1
  173. package/dist/html/layout/boxes.d.ts +367 -17
  174. package/dist/html/layout/boxes.d.ts.map +1 -1
  175. package/dist/html/layout/boxes.js +1742 -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 +154 -1
  205. package/dist/html/layout/inline.d.ts.map +1 -1
  206. package/dist/html/layout/inline.js +3598 -175
  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 +169 -4
  221. package/dist/html/node.d.ts.map +1 -1
  222. package/dist/html/node.js +1429 -137
  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 +3635 -107
  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 +442 -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 +1 -1
  245. package/dist/index.d.ts.map +1 -1
  246. package/dist/index.js.map +1 -1
  247. package/dist/internal/codelines.d.ts +42 -0
  248. package/dist/internal/codelines.d.ts.map +1 -0
  249. package/dist/internal/codelines.js +170 -0
  250. package/dist/internal/codelines.js.map +1 -0
  251. package/dist/internal/collate.d.ts +3 -0
  252. package/dist/internal/collate.d.ts.map +1 -0
  253. package/dist/internal/collate.js +11 -0
  254. package/dist/internal/collate.js.map +1 -0
  255. package/dist/internal/markdown/ast.d.ts +11 -0
  256. package/dist/internal/markdown/ast.d.ts.map +1 -1
  257. package/dist/internal/markdown/parse.d.ts.map +1 -1
  258. package/dist/internal/markdown/parse.js +109 -8
  259. package/dist/internal/markdown/parse.js.map +1 -1
  260. package/dist/internal/prewarm.d.ts +18 -0
  261. package/dist/internal/prewarm.d.ts.map +1 -0
  262. package/dist/internal/prewarm.js +42 -0
  263. package/dist/internal/prewarm.js.map +1 -0
  264. package/dist/internal/sdf.d.ts +20 -0
  265. package/dist/internal/sdf.d.ts.map +1 -0
  266. package/dist/internal/sdf.js +216 -0
  267. package/dist/internal/sdf.js.map +1 -0
  268. package/dist/internal/splice.d.ts +12 -0
  269. package/dist/internal/splice.d.ts.map +1 -0
  270. package/dist/internal/splice.js +23 -0
  271. package/dist/internal/splice.js.map +1 -0
  272. package/dist/internal/window.d.ts +12 -0
  273. package/dist/internal/window.d.ts.map +1 -1
  274. package/dist/internal/window.js +23 -6
  275. package/dist/internal/window.js.map +1 -1
  276. package/dist/maps/anchors.d.ts +6 -1
  277. package/dist/maps/anchors.d.ts.map +1 -1
  278. package/dist/maps/anchors.js +260 -1
  279. package/dist/maps/anchors.js.map +1 -1
  280. package/dist/maps/controller.d.ts +57 -0
  281. package/dist/maps/controller.d.ts.map +1 -1
  282. package/dist/maps/controller.js +97 -18
  283. package/dist/maps/controller.js.map +1 -1
  284. package/dist/maps/gl/buckets.d.ts +5 -1
  285. package/dist/maps/gl/buckets.d.ts.map +1 -1
  286. package/dist/maps/gl/buckets.js +5 -2
  287. package/dist/maps/gl/buckets.js.map +1 -1
  288. package/dist/maps/gl/build-worker.d.ts +2 -0
  289. package/dist/maps/gl/build-worker.d.ts.map +1 -1
  290. package/dist/maps/gl/build-worker.js +1 -1
  291. package/dist/maps/gl/build-worker.js.map +1 -1
  292. package/dist/maps/gl/cover.d.ts +23 -4
  293. package/dist/maps/gl/cover.d.ts.map +1 -1
  294. package/dist/maps/gl/cover.js +61 -48
  295. package/dist/maps/gl/cover.js.map +1 -1
  296. package/dist/maps/gl/placement.d.ts +21 -8
  297. package/dist/maps/gl/placement.d.ts.map +1 -1
  298. package/dist/maps/gl/placement.js +133 -58
  299. package/dist/maps/gl/placement.js.map +1 -1
  300. package/dist/maps/gl/renderer.d.ts +36 -4
  301. package/dist/maps/gl/renderer.d.ts.map +1 -1
  302. package/dist/maps/gl/renderer.js +81 -24
  303. package/dist/maps/gl/renderer.js.map +1 -1
  304. package/dist/maps/gl/shaders.d.ts +18 -17
  305. package/dist/maps/gl/shaders.d.ts.map +1 -1
  306. package/dist/maps/gl/shaders.js +34 -32
  307. package/dist/maps/gl/shaders.js.map +1 -1
  308. package/dist/maps/gl/store.d.ts +10 -0
  309. package/dist/maps/gl/store.d.ts.map +1 -1
  310. package/dist/maps/gl/store.js +47 -4
  311. package/dist/maps/gl/store.js.map +1 -1
  312. package/dist/maps/gl/text.d.ts +153 -24
  313. package/dist/maps/gl/text.d.ts.map +1 -1
  314. package/dist/maps/gl/text.js +379 -63
  315. package/dist/maps/gl/text.js.map +1 -1
  316. package/dist/maps/gl/view.d.ts +293 -2
  317. package/dist/maps/gl/view.d.ts.map +1 -1
  318. package/dist/maps/gl/view.js +317 -82
  319. package/dist/maps/gl/view.js.map +1 -1
  320. package/dist/maps/icons.d.ts +32 -0
  321. package/dist/maps/icons.d.ts.map +1 -0
  322. package/dist/maps/icons.js +151 -0
  323. package/dist/maps/icons.js.map +1 -0
  324. package/dist/maps/index.d.ts +2 -0
  325. package/dist/maps/index.d.ts.map +1 -1
  326. package/dist/maps/index.js +2 -0
  327. package/dist/maps/index.js.map +1 -1
  328. package/dist/maps/labels.d.ts +56 -4
  329. package/dist/maps/labels.d.ts.map +1 -1
  330. package/dist/maps/labels.js +213 -46
  331. package/dist/maps/labels.js.map +1 -1
  332. package/dist/maps/node.d.ts +17 -0
  333. package/dist/maps/node.d.ts.map +1 -1
  334. package/dist/maps/node.js +64 -30
  335. package/dist/maps/node.js.map +1 -1
  336. package/dist/maps/proj.d.ts +48 -0
  337. package/dist/maps/proj.d.ts.map +1 -1
  338. package/dist/maps/proj.js +73 -0
  339. package/dist/maps/proj.js.map +1 -1
  340. package/dist/maps/sources.d.ts +5 -3
  341. package/dist/maps/sources.d.ts.map +1 -1
  342. package/dist/maps/sources.js +5 -3
  343. package/dist/maps/sources.js.map +1 -1
  344. package/dist/maps/style.d.ts +35 -0
  345. package/dist/maps/style.d.ts.map +1 -1
  346. package/dist/maps/style.js.map +1 -1
  347. package/dist/maps/styles.d.ts +12 -0
  348. package/dist/maps/styles.d.ts.map +1 -1
  349. package/dist/maps/styles.js +120 -6
  350. package/dist/maps/styles.js.map +1 -1
  351. package/dist/maps/tiles.d.ts +31 -11
  352. package/dist/maps/tiles.d.ts.map +1 -1
  353. package/dist/maps/tiles.js +61 -27
  354. package/dist/maps/tiles.js.map +1 -1
  355. package/dist/maps/types.d.ts +28 -4
  356. package/dist/maps/types.d.ts.map +1 -1
  357. package/dist/markdown/index.d.ts.map +1 -1
  358. package/dist/markdown/index.js +209 -68
  359. package/dist/markdown/index.js.map +1 -1
  360. package/dist/markdown/spans.d.ts.map +1 -1
  361. package/dist/markdown/spans.js +6 -0
  362. package/dist/markdown/spans.js.map +1 -1
  363. package/dist/qml/containers.d.ts.map +1 -1
  364. package/dist/qml/containers.js +6 -1
  365. package/dist/qml/containers.js.map +1 -1
  366. package/dist/qml/interaction.d.ts.map +1 -1
  367. package/dist/qml/interaction.js +38 -5
  368. package/dist/qml/interaction.js.map +1 -1
  369. package/dist/qml/layouts.d.ts.map +1 -1
  370. package/dist/qml/layouts.js +21 -6
  371. package/dist/qml/layouts.js.map +1 -1
  372. package/dist/qml/qtquick.d.ts.map +1 -1
  373. package/dist/qml/qtquick.js +9 -2
  374. package/dist/qml/qtquick.js.map +1 -1
  375. package/dist/qml/react.d.ts.map +1 -1
  376. package/dist/qml/react.js +9 -7
  377. package/dist/qml/react.js.map +1 -1
  378. package/dist/reorder/clock.d.ts +7 -0
  379. package/dist/reorder/clock.d.ts.map +1 -0
  380. package/dist/reorder/clock.js +26 -0
  381. package/dist/reorder/clock.js.map +1 -0
  382. package/dist/reorder/index.d.ts +25 -3
  383. package/dist/reorder/index.d.ts.map +1 -1
  384. package/dist/reorder/index.js +64 -19
  385. package/dist/reorder/index.js.map +1 -1
  386. package/dist/rich-text-editor/index.d.ts +0 -11
  387. package/dist/rich-text-editor/index.d.ts.map +1 -1
  388. package/dist/rich-text-editor/index.js +38 -9
  389. package/dist/rich-text-editor/index.js.map +1 -1
  390. package/dist/rich-text-editor/keymap.d.ts.map +1 -1
  391. package/dist/rich-text-editor/keymap.js +2 -1
  392. package/dist/rich-text-editor/keymap.js.map +1 -1
  393. package/dist/rich-text-editor/keys.d.ts +17 -6
  394. package/dist/rich-text-editor/keys.d.ts.map +1 -1
  395. package/dist/rich-text-editor/keys.js +135 -26
  396. package/dist/rich-text-editor/keys.js.map +1 -1
  397. package/dist/rich-text-editor/markdown.d.ts.map +1 -1
  398. package/dist/rich-text-editor/markdown.js +30 -1
  399. package/dist/rich-text-editor/markdown.js.map +1 -1
  400. package/dist/rich-text-editor/marks.d.ts +9 -0
  401. package/dist/rich-text-editor/marks.d.ts.map +1 -0
  402. package/dist/rich-text-editor/marks.js +83 -0
  403. package/dist/rich-text-editor/marks.js.map +1 -0
  404. package/dist/rich-text-editor/render.d.ts.map +1 -1
  405. package/dist/rich-text-editor/render.js +28 -10
  406. package/dist/rich-text-editor/render.js.map +1 -1
  407. package/dist/rich-text-editor/replace.d.ts +13 -0
  408. package/dist/rich-text-editor/replace.d.ts.map +1 -0
  409. package/dist/rich-text-editor/replace.js +64 -0
  410. package/dist/rich-text-editor/replace.js.map +1 -0
  411. package/dist/rich-text-editor/toolbar.d.ts.map +1 -1
  412. package/dist/rich-text-editor/toolbar.js +1 -1
  413. package/dist/rich-text-editor/toolbar.js.map +1 -1
  414. package/dist/rich-text-editor/virtual.d.ts.map +1 -1
  415. package/dist/rich-text-editor/virtual.js +17 -0
  416. package/dist/rich-text-editor/virtual.js.map +1 -1
  417. package/dist/richtext/node.d.ts +46 -2
  418. package/dist/richtext/node.d.ts.map +1 -1
  419. package/dist/richtext/node.js +187 -4
  420. package/dist/richtext/node.js.map +1 -1
  421. package/dist/richtext/runs.d.ts +13 -8
  422. package/dist/richtext/runs.d.ts.map +1 -1
  423. package/dist/richtext/runs.js +18 -8
  424. package/dist/richtext/runs.js.map +1 -1
  425. package/dist/table/index.d.ts.map +1 -1
  426. package/dist/table/index.js +23 -0
  427. package/dist/table/index.js.map +1 -1
  428. package/dist/table/rows.d.ts +3 -2
  429. package/dist/table/rows.d.ts.map +1 -1
  430. package/dist/table/rows.js +20 -6
  431. package/dist/table/rows.js.map +1 -1
  432. package/dist/terminal/index.d.ts.map +1 -1
  433. package/dist/terminal/index.js +4 -0
  434. package/dist/terminal/index.js.map +1 -1
  435. package/dist/terminal/vt/pty.d.ts +13 -2
  436. package/dist/terminal/vt/pty.d.ts.map +1 -1
  437. package/dist/terminal/vt/pty.js +18 -3
  438. package/dist/terminal/vt/pty.js.map +1 -1
  439. package/dist/terminal-output/index.d.ts.map +1 -1
  440. package/dist/terminal-output/index.js +103 -23
  441. package/dist/terminal-output/index.js.map +1 -1
  442. package/dist/terminal-output/runs.d.ts +4 -1
  443. package/dist/terminal-output/runs.d.ts.map +1 -1
  444. package/dist/terminal-output/runs.js +5 -1
  445. package/dist/terminal-output/runs.js.map +1 -1
  446. package/dist/three/canvas.d.ts.map +1 -1
  447. package/dist/three/canvas.js +85 -7
  448. package/dist/three/canvas.js.map +1 -1
  449. package/dist/three/events.d.ts +22 -4
  450. package/dist/three/events.d.ts.map +1 -1
  451. package/dist/three/events.js +34 -4
  452. package/dist/three/events.js.map +1 -1
  453. package/dist/tree/index.d.ts.map +1 -1
  454. package/dist/tree/index.js +17 -0
  455. package/dist/tree/index.js.map +1 -1
  456. package/package.json +42 -33
  457. package/src/charts/node.ts +62 -26
  458. package/src/charts/render.ts +120 -30
  459. package/src/code/index.ts +36 -32
  460. package/src/code-editor/completion.ts +3 -2
  461. package/src/code-editor/index.ts +19 -0
  462. package/src/code-editor/node.ts +1574 -184
  463. package/src/code-language/index.ts +1 -1
  464. package/src/code-language/languages/glsl.ts +12 -2
  465. package/src/code-language/languages/javascript.ts +21 -4
  466. package/src/code-language/languages/json.ts +12 -2
  467. package/src/code-language/languages/shell.ts +12 -2
  468. package/src/code-language/languages/sql.ts +22 -2
  469. package/src/code-language/runs.ts +111 -1
  470. package/src/code-language/stream.ts +257 -17
  471. package/src/code-language/types.ts +5 -4
  472. package/src/codeblock/index.ts +68 -4
  473. package/src/flow/draw.ts +167 -41
  474. package/src/flow/gl/color.ts +85 -0
  475. package/src/flow/gl/index.ts +342 -0
  476. package/src/flow/gl/pack.ts +585 -0
  477. package/src/flow/gl/renderer.ts +679 -0
  478. package/src/flow/gl/shaders.ts +371 -0
  479. package/src/flow/gl/text.ts +1295 -0
  480. package/src/flow/index.ts +794 -67
  481. package/src/flow/node.ts +2496 -1256
  482. package/src/flow/paint.ts +511 -0
  483. package/src/flow/paths.ts +80 -15
  484. package/src/flow/scene.ts +2199 -0
  485. package/src/flow/types.ts +113 -1
  486. package/src/html/controls.ts +73 -2
  487. package/src/html/css/calc.ts +385 -0
  488. package/src/html/css/cascade.ts +1481 -62
  489. package/src/html/css/color.ts +755 -0
  490. package/src/html/css/content.ts +417 -0
  491. package/src/html/css/counter-styles.ts +973 -0
  492. package/src/html/css/decode.ts +130 -0
  493. package/src/html/css/parse.ts +1514 -160
  494. package/src/html/css/style.ts +4131 -223
  495. package/src/html/css/ua.ts +66 -17
  496. package/src/html/css/values.ts +150 -50
  497. package/src/html/css/vars.ts +348 -0
  498. package/src/html/dom.ts +284 -17
  499. package/src/html/fonts.ts +641 -0
  500. package/src/html/gif.ts +233 -0
  501. package/src/html/index.ts +180 -20
  502. package/src/html/layout/block.ts +3560 -208
  503. package/src/html/layout/boxes.ts +2141 -190
  504. package/src/html/layout/cache.ts +289 -0
  505. package/src/html/layout/collapse.ts +317 -0
  506. package/src/html/layout/css-grid.ts +1063 -0
  507. package/src/html/layout/flex.ts +1115 -106
  508. package/src/html/layout/floats.ts +128 -14
  509. package/src/html/layout/grid-lines.ts +141 -0
  510. package/src/html/layout/grid.ts +181 -0
  511. package/src/html/layout/inline.ts +4187 -192
  512. package/src/html/layout/shaping.ts +140 -0
  513. package/src/html/layout/table.ts +696 -186
  514. package/src/html/layout/tracks.ts +437 -0
  515. package/src/html/node.ts +1585 -156
  516. package/src/html/paint.ts +4582 -267
  517. package/src/html/resources.ts +161 -50
  518. package/src/html/surfaces.ts +81 -0
  519. package/src/html/svg.ts +504 -0
  520. package/src/html/url.ts +86 -0
  521. package/src/index.ts +2 -0
  522. package/src/internal/codelines.ts +200 -0
  523. package/src/internal/collate.ts +12 -0
  524. package/src/internal/markdown/ast.ts +11 -0
  525. package/src/internal/markdown/parse.ts +154 -11
  526. package/src/internal/prewarm.ts +45 -0
  527. package/src/internal/sdf.ts +227 -0
  528. package/src/internal/splice.ts +25 -0
  529. package/src/internal/window.ts +36 -5
  530. package/src/maps/anchors.ts +307 -1
  531. package/src/maps/controller.ts +116 -31
  532. package/src/maps/gl/buckets.ts +5 -1
  533. package/src/maps/gl/build-worker.ts +13 -2
  534. package/src/maps/gl/cover.ts +79 -44
  535. package/src/maps/gl/placement.ts +221 -69
  536. package/src/maps/gl/renderer.ts +104 -20
  537. package/src/maps/gl/shaders.ts +35 -32
  538. package/src/maps/gl/store.ts +66 -17
  539. package/src/maps/gl/text.ts +444 -71
  540. package/src/maps/gl/view.ts +361 -96
  541. package/src/maps/icons.ts +183 -0
  542. package/src/maps/index.ts +4 -0
  543. package/src/maps/labels.ts +269 -49
  544. package/src/maps/node.ts +82 -49
  545. package/src/maps/proj.ts +87 -0
  546. package/src/maps/sources.ts +5 -3
  547. package/src/maps/style.ts +32 -0
  548. package/src/maps/styles.ts +215 -4
  549. package/src/maps/tiles.ts +64 -31
  550. package/src/maps/types.ts +28 -4
  551. package/src/markdown/index.ts +293 -92
  552. package/src/markdown/spans.ts +5 -0
  553. package/src/qml/containers.tsx +6 -1
  554. package/src/qml/interaction.tsx +42 -5
  555. package/src/qml/layouts.tsx +21 -6
  556. package/src/qml/qtquick.tsx +9 -2
  557. package/src/qml/react.tsx +7 -5
  558. package/src/reorder/clock.ts +27 -0
  559. package/src/reorder/index.ts +100 -27
  560. package/src/rich-text-editor/index.ts +37 -12
  561. package/src/rich-text-editor/keymap.ts +1 -1
  562. package/src/rich-text-editor/keys.ts +135 -26
  563. package/src/rich-text-editor/markdown.ts +36 -1
  564. package/src/rich-text-editor/marks.ts +101 -0
  565. package/src/rich-text-editor/render.ts +49 -12
  566. package/src/rich-text-editor/replace.ts +85 -0
  567. package/src/rich-text-editor/toolbar.ts +1 -1
  568. package/src/rich-text-editor/virtual.ts +25 -0
  569. package/src/richtext/node.ts +235 -14
  570. package/src/richtext/runs.ts +23 -12
  571. package/src/table/index.ts +29 -0
  572. package/src/table/rows.ts +18 -8
  573. package/src/terminal/index.ts +4 -0
  574. package/src/terminal/vt/pty.ts +16 -2
  575. package/src/terminal-output/index.ts +129 -31
  576. package/src/terminal-output/runs.ts +16 -2
  577. package/src/three/canvas.ts +102 -8
  578. package/src/three/events.ts +49 -9
  579. package/src/tree/index.ts +19 -0
@@ -0,0 +1,371 @@
1
+ // The GL renderer's four programs.
2
+ //
3
+ // GLSL ES 1.00, for the reason `src/maps/gl/shaders.ts` gives: it is the one
4
+ // dialect both direct backends compile, Apple's GL 4.1 core through
5
+ // ARB_ES2_compatibility and every Linux GLES driver natively.
6
+ //
7
+ // Every program shares one coordinate contract, and it is the whole of what
8
+ // the vertex shaders agree on. Positions arrive in the scene's units —
9
+ // **logical window pixels**, what `../scene.ts` builds in — and leave in
10
+ // clip space via device pixels:
11
+ //
12
+ // device = (logical * u_zoom + u_offset - u_origin) * u_scale
13
+ //
14
+ // where `u_origin` is where the surface's top-left sits in the window (the
15
+ // pane's content box, which the surface covers exactly) and `u_scale` is the
16
+ // display scale. `u_offset` is the pan: the graph's world is built at a
17
+ // pinned origin and moved here, so a pan is this one uniform and nothing
18
+ // else (`./renderer.ts`). `u_zoom` is the part of a zoom the world was not
19
+ // built at — 1 at rest, and while a zoom gesture moves, the view's zoom over
20
+ // the one the world on the GPU was built for, so a step of the gesture is a
21
+ // uniform too, and every length an instance carries is multiplied by it
22
+ // with its position. The overlay, pinned to the pane and built every frame,
23
+ // draws with no offset and a zoom of 1. So the one multiply `../draw.ts`
24
+ // does on the way to the 2D context happens here, per vertex, and every
25
+ // antialiasing ramp below is measured in device pixels — which is what makes
26
+ // a 1px line one pixel of coverage on any panel.
27
+ import { SDF_EDGE, SDF_INK_BIAS_PX } from '../../internal/sdf.js';
28
+
29
+ /** Attribute locations, shared so one quad buffer feeds every program. */
30
+ export const ATTRIBUTES = {
31
+ a_corner: 0,
32
+ a_i0: 1,
33
+ a_i1: 2,
34
+ a_i2: 3,
35
+ a_i3: 4,
36
+ } as const;
37
+
38
+ const PRELUDE = `precision highp float;
39
+ uniform vec2 u_origin;
40
+ uniform vec2 u_offset;
41
+ uniform float u_scale;
42
+ uniform float u_zoom;
43
+ uniform vec2 u_viewport;
44
+ vec2 device(vec2 logical) {
45
+ return (logical * u_zoom + u_offset - u_origin) * u_scale;
46
+ }
47
+ vec4 clip(vec2 d) {
48
+ return vec4(d.x / u_viewport.x * 2.0 - 1.0,
49
+ 1.0 - d.y / u_viewport.y * 2.0, 0.0, 1.0);
50
+ }
51
+ `;
52
+
53
+ /**
54
+ * A line segment as a capsule: the quad round it, widened by half the line
55
+ * plus a pixel of fringe, shaded by distance to the segment.
56
+ *
57
+ * Clamping the pixel's position along the segment before measuring is what
58
+ * gives round caps and round joins for nothing — two consecutive capsules
59
+ * overlap in exactly the disc a round join is — and the same distance is the
60
+ * antialiasing ramp. The cost of that is a translucent line, which would lay
61
+ * its colour down twice where two capsules overlap; every line a graph draws
62
+ * by default is opaque, and `src/maps/gl/shaders.ts` has the stencil pass
63
+ * that fixes it if one ever is not.
64
+ *
65
+ * Instance: a_i0 = ends, a_i1 = half-width, distance along at the first end,
66
+ * dash on, dash off; a_i2 = dash offset, and 1 where the dash marches — by
67
+ * `u_phase`, the timer's, in logical pixels; a_i3 = colour.
68
+ */
69
+ export const LINE_VERTEX = `${PRELUDE}
70
+ uniform float u_phase;
71
+ attribute vec2 a_corner;
72
+ attribute vec4 a_i0;
73
+ attribute vec4 a_i1;
74
+ attribute vec4 a_i2;
75
+ attribute vec4 a_i3;
76
+ varying vec2 v_local;
77
+ varying float v_len;
78
+ varying float v_half;
79
+ varying float v_along;
80
+ varying vec3 v_dash;
81
+ varying vec4 v_color;
82
+ void main() {
83
+ vec2 a = device(a_i0.xy);
84
+ vec2 b = device(a_i0.zw);
85
+ vec2 d = b - a;
86
+ float len = length(d);
87
+ vec2 t = len > 0.0001 ? d / len : vec2(1.0, 0.0);
88
+ vec2 n = vec2(-t.y, t.x);
89
+ float half_ = a_i1.x * u_zoom * u_scale;
90
+ float e = half_ + 1.0;
91
+ float along = mix(-e, len + e, a_corner.x);
92
+ float across = a_corner.y * e;
93
+ v_local = vec2(along, across);
94
+ v_len = len;
95
+ v_half = half_;
96
+ v_along = a_i1.y * u_zoom * u_scale + along;
97
+ // a marching dash takes the timer's phase from a uniform, so a tick moves
98
+ // every dash on the GPU without a byte uploaded — and the phase is the
99
+ // view's, already at its zoom, where the pattern is the world's
100
+ v_dash = (vec3(a_i1.z, a_i1.w, a_i2.x) * u_zoom +
101
+ vec3(0.0, 0.0, a_i2.y * u_phase)) * u_scale;
102
+ v_color = a_i3;
103
+ gl_Position = clip(a + t * along + n * across);
104
+ }
105
+ `;
106
+
107
+ export const LINE_FRAGMENT = `precision highp float;
108
+ varying vec2 v_local;
109
+ varying float v_len;
110
+ varying float v_half;
111
+ varying float v_along;
112
+ varying vec3 v_dash;
113
+ varying vec4 v_color;
114
+ void main() {
115
+ float x = clamp(v_local.x, 0.0, v_len);
116
+ float dist = length(vec2(v_local.x - x, v_local.y));
117
+ float alpha = clamp(v_half - dist + 0.5, 0.0, 1.0);
118
+ float period = v_dash.x + v_dash.y;
119
+ if (period > 0.0) {
120
+ // Where in the pattern this pixel is, the canvas way: the offset shifts
121
+ // the pattern's start along the line. Covered by how far the pixel is
122
+ // inside the nearer end of its dash, so a dash's ends antialias too.
123
+ float m = mod(v_along + v_dash.z, period);
124
+ alpha *= clamp(min(m, v_dash.x - m) + 0.5, 0.0, 1.0);
125
+ }
126
+ if (alpha <= 0.0) discard;
127
+ gl_FragColor = v_color * alpha;
128
+ }
129
+ `;
130
+
131
+ /**
132
+ * A rounded box: fill, border and antialiased edge out of one distance.
133
+ *
134
+ * The 2D painter fills the whole box and strokes a border *inset* by half
135
+ * its pen (`../draw.ts`), so the ink band runs from the edge inward by the
136
+ * pen's width with the fill beneath it. This composites the same way — the
137
+ * border *over* the fill across the band, not in place of it — which only
138
+ * differs when the border is translucent, and a hovered card's is.
139
+ *
140
+ * A disc is a box whose side is twice its corner radius, which is why
141
+ * handles are drawn here too — and a label is a box that samples its
142
+ * distance field in the atlas (`./text.ts`) instead, flagged in `a_i1.z`,
143
+ * which is what keeps every label in the box stream at exactly the place in
144
+ * the order the 2D painter draws it.
145
+ *
146
+ * Instance: a_i0 = x, y, width, height; a_i1 = corner radius, border width;
147
+ * a_i2 = fill; a_i3 = border colour. For a label: a_i0 = the text's corner
148
+ * and the quad's size; a_i1 = the quad's margin before that corner, its
149
+ * field's page, 1, and the logical pixels a field texel covers; a_i2 = ink; a_i3 = its rect
150
+ * in the atlas.
151
+ */
152
+ export const BOX_VERTEX = `${PRELUDE}
153
+ attribute vec2 a_corner;
154
+ attribute vec4 a_i0;
155
+ attribute vec4 a_i1;
156
+ attribute vec4 a_i2;
157
+ attribute vec4 a_i3;
158
+ varying vec2 v_local;
159
+ varying vec2 v_half;
160
+ varying vec2 v_shape;
161
+ varying vec4 v_fill;
162
+ varying vec4 v_border;
163
+ varying vec2 v_uv;
164
+ varying float v_text;
165
+ void main() {
166
+ vec2 corner = vec2(a_corner.x, a_corner.y * 0.5 + 0.5);
167
+ v_text = a_i1.z;
168
+ if (a_i1.z > 1.5) {
169
+ // a label whose field is still being set: nothing, until it lands
170
+ gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
171
+ return;
172
+ }
173
+ if (a_i1.z > 0.5) {
174
+ // A label: its field, scaled to the size it is drawn at. The text's
175
+ // corner goes on the device grid *after* the pan's offset, which is
176
+ // where the grid is — the 2D painter rounds the same corner — and the
177
+ // quad reaches its margin before it.
178
+ float k = u_zoom * u_scale;
179
+ vec2 origin = floor(device(a_i0.xy) + 0.5) - a_i1.x * k;
180
+ v_uv = mix(a_i3.xy, a_i3.zw, corner);
181
+ v_fill = a_i2;
182
+ v_local = vec2(0.0);
183
+ v_half = vec2(0.0);
184
+ // device pixels a field texel covers, for the fragment's ramp, and the
185
+ // page its field is on
186
+ v_shape = vec2(a_i1.w * k, a_i1.y);
187
+ v_border = vec4(0.0);
188
+ gl_Position = clip(origin + corner * a_i0.zw * k);
189
+ return;
190
+ }
191
+ v_uv = vec2(0.0);
192
+ vec2 size = a_i0.zw * u_zoom * u_scale;
193
+ vec2 half_ = size * 0.5;
194
+ // a pixel of fringe all round, for the antialiased edge to fade into
195
+ vec2 local = (corner - 0.5) * (size + 2.0);
196
+ v_local = local;
197
+ v_half = half_;
198
+ v_shape = vec2(a_i1.x, a_i1.y) * u_zoom * u_scale;
199
+ v_fill = a_i2;
200
+ v_border = a_i3;
201
+ gl_Position = clip(device(a_i0.xy) + half_ + local);
202
+ }
203
+ `;
204
+
205
+ /**
206
+ * A label's field says how far a pixel is from the glyphs' edge — in texels,
207
+ * `u_spread` of them across the byte range, and so in device pixels once
208
+ * scaled by how many a texel covers — and ink is that distance ramped across
209
+ * one device pixel, whatever size the label is drawn at.
210
+ */
211
+ export const BOX_FRAGMENT = `precision highp float;
212
+ uniform sampler2D u_atlas;
213
+ uniform float u_spread;
214
+ varying vec2 v_local;
215
+ varying vec2 v_half;
216
+ varying vec2 v_shape;
217
+ varying vec4 v_fill;
218
+ varying vec4 v_border;
219
+ varying vec2 v_uv;
220
+ varying float v_text;
221
+ void main() {
222
+ if (v_text > 0.5) {
223
+ // Four pages, one a channel: alpha is page 0, red, green and blue
224
+ // pages 1 to 3 (CHANNELS in ./text.ts).
225
+ vec4 pages = texture2D(u_atlas, v_uv);
226
+ vec4 pick = 1.0 - min(abs(vec4(v_shape.y) - vec4(1.0, 2.0, 3.0, 0.0)), 1.0);
227
+ float field = dot(pages, pick);
228
+ // device pixels past the glyphs' edge: positive outside, negative in
229
+ float d = (${SDF_EDGE.toFixed(4)} - field) * u_spread * v_shape.x;
230
+ float ink = clamp(0.5 + ${SDF_INK_BIAS_PX.toFixed(2)} - d, 0.0, 1.0);
231
+ if (ink <= 0.0) discard;
232
+ gl_FragColor = v_fill * ink;
233
+ return;
234
+ }
235
+ float r = min(v_shape.x, min(v_half.x, v_half.y));
236
+ vec2 q = abs(v_local) - (v_half - r);
237
+ float d = length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - r;
238
+ float outside = clamp(0.5 - d, 0.0, 1.0);
239
+ vec4 color = v_fill * outside;
240
+ if (v_shape.y > 0.0) {
241
+ float inner = clamp(0.5 - (d + v_shape.y), 0.0, 1.0);
242
+ float band = outside - inner;
243
+ color = v_border * band + color * (1.0 - v_border.a * band);
244
+ }
245
+ if (color.a <= 0.0) discard;
246
+ gl_FragColor = color;
247
+ }
248
+ `;
249
+
250
+ /** A flat triangle: the fill of a closed arrowhead. Its edge is
251
+ * antialiased by the hairline `./pack.ts` strokes round it. */
252
+ export const TRI_VERTEX = `${PRELUDE}
253
+ attribute vec2 a_corner;
254
+ attribute vec4 a_i0;
255
+ varying vec4 v_color;
256
+ void main() {
257
+ v_color = a_i0;
258
+ gl_Position = clip(device(a_corner));
259
+ }
260
+ `;
261
+
262
+ export const TRI_FRAGMENT = `precision mediump float;
263
+ varying vec4 v_color;
264
+ void main() {
265
+ gl_FragColor = v_color;
266
+ }
267
+ `;
268
+
269
+ /**
270
+ * The grid, worked out per pixel: no tile, no pattern and no pile of runs —
271
+ * and none of the 2D path's integral-pitch restriction, because nothing here
272
+ * is a pixmap that has to repeat on whole pixels.
273
+ *
274
+ * Distances are to the nearest grid point in each axis, in logical pixels,
275
+ * and each mark's coverage ramps across one *device* pixel, so a dot is as
276
+ * sharp as the panel draws it.
277
+ */
278
+ export const GRID_VERTEX = `precision highp float;
279
+ attribute vec2 a_corner;
280
+ uniform vec2 u_viewport;
281
+ varying vec2 v_device;
282
+ void main() {
283
+ v_device = vec2(a_corner.x * u_viewport.x,
284
+ (a_corner.y * 0.5 + 0.5) * u_viewport.y);
285
+ gl_Position = vec4(a_corner.x * 2.0 - 1.0, -a_corner.y, 0.0, 1.0);
286
+ }
287
+ `;
288
+
289
+ export const GRID_FRAGMENT = `precision highp float;
290
+ uniform vec2 u_origin;
291
+ uniform float u_scale;
292
+ // the grid's origin (logical window pixels) and its pitch on screen
293
+ uniform vec3 u_grid;
294
+ // 0 dots, 1 lines, 2 cross; then a mark's size on screen (logical)
295
+ uniform vec2 u_mark;
296
+ uniform vec4 u_color;
297
+ varying vec2 v_device;
298
+ float cover(float edge, float dist) {
299
+ return clamp((edge - dist) * u_scale + 0.5, 0.0, 1.0);
300
+ }
301
+ void main() {
302
+ vec2 logical = v_device / u_scale + u_origin;
303
+ float step = u_grid.z;
304
+ vec2 rel = logical - u_grid.xy;
305
+ vec2 dist = abs(mod(rel + step * 0.5, step) - step * 0.5);
306
+ float a;
307
+ if (u_mark.x < 0.5) {
308
+ float h = u_mark.y * 0.5;
309
+ a = cover(h, dist.x) * cover(h, dist.y);
310
+ } else if (u_mark.x < 1.5) {
311
+ a = max(cover(0.5, dist.x), cover(0.5, dist.y));
312
+ } else {
313
+ float arm = u_mark.y;
314
+ a = max(cover(0.5, dist.x) * cover(arm, dist.y),
315
+ cover(0.5, dist.y) * cover(arm, dist.x));
316
+ }
317
+ if (a <= 0.0) discard;
318
+ gl_FragColor = u_color * a;
319
+ }
320
+ `;
321
+
322
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
323
+ export type GL = any;
324
+
325
+ /** A linked program and its uniform locations, looked up once. */
326
+ export interface Program {
327
+ program: unknown;
328
+ uniforms: Record<string, unknown>;
329
+ }
330
+
331
+ function compile(gl: GL, type: number, source: string): unknown {
332
+ const shader = gl.createShader(type);
333
+ gl.shaderSource(shader, source);
334
+ gl.compileShader(shader);
335
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
336
+ const log = gl.getShaderInfoLog(shader);
337
+ gl.deleteShader(shader);
338
+ throw new Error(`@react-x11/components flow/gl: shader failed: ${log}`);
339
+ }
340
+ return shader;
341
+ }
342
+
343
+ /** Compile, bind the shared locations, link, and look the uniforms up. */
344
+ export function linkProgram(
345
+ gl: GL,
346
+ vertex: string,
347
+ fragment: string,
348
+ uniforms: readonly string[],
349
+ ): Program {
350
+ const program = gl.createProgram();
351
+ const vs = compile(gl, gl.VERTEX_SHADER, vertex);
352
+ const fs = compile(gl, gl.FRAGMENT_SHADER, fragment);
353
+ gl.attachShader(program, vs);
354
+ gl.attachShader(program, fs);
355
+ for (const [name, location] of Object.entries(ATTRIBUTES)) {
356
+ gl.bindAttribLocation(program, location, name);
357
+ }
358
+ gl.linkProgram(program);
359
+ gl.deleteShader(vs);
360
+ gl.deleteShader(fs);
361
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
362
+ const log = gl.getProgramInfoLog(program);
363
+ gl.deleteProgram(program);
364
+ throw new Error(`@react-x11/components flow/gl: link failed: ${log}`);
365
+ }
366
+ const found: Record<string, unknown> = {};
367
+ for (const name of uniforms) {
368
+ found[name] = gl.getUniformLocation(program, name);
369
+ }
370
+ return { program, uniforms: found };
371
+ }