@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,453 @@
1
+ // The GL renderer's four programs, and the one decision they share.
2
+ //
3
+ // Everything is **GLSL ES 1.00**: it is the one dialect both direct backends
4
+ // compile — Apple's GL 4.1 core accepts it through ARB_ES2_compatibility
5
+ // (x11-dri prepends the `#version 100` a core profile insists on), and every
6
+ // Linux GLES driver speaks it — so one source serves the Cocoa backend,
7
+ // XQuartz's Apple-DRI flavor and DRI3 alike.
8
+ //
9
+ // The shared decision is the vertex layout. Every program binds its
10
+ // attributes to the same five locations, so one vertex array object per
11
+ // *range of records* can feed whichever program draws that range:
12
+ //
13
+ // 0 a_corner the static quad corner — `(0|1, -1|1)`, per vertex
14
+ // 1 a_p0 record i: x, y (int16 × 2)
15
+ // 2 a_p1 record i + 1: x, y (int16 × 2)
16
+ // 3 a_x record i: the fan apex (fill stream, int16 × 2)
17
+ // or the distance along the line (float)
18
+ // 4 a_d1 record i + 1: the distance along the line (float)
19
+ //
20
+ // Locations 1-4 advance once per *instance* (divisor 1), so instance i is
21
+ // segment i of the stream and a polyline costs no memory beyond its points.
22
+ // A segment that touches a sentinel collapses to a point outside the clip
23
+ // volume — see `buckets.ts` for why sentinels beat an index buffer.
24
+ import { SDF_EDGE, SDF_INK_BIAS_PX } from '../../internal/sdf.js';
25
+ /** Where each attribute lives, shared by every program. Locations 5-9 are
26
+ * the label program's, one label per instance (see {@link LABEL_VERTEX}). */
27
+ export const ATTRIBUTES = {
28
+ a_corner: 0,
29
+ a_p0: 1,
30
+ a_p1: 2,
31
+ a_x: 3,
32
+ a_d1: 4,
33
+ a_anchor: 5,
34
+ a_rect: 6,
35
+ a_ink: 7,
36
+ a_halo: 8,
37
+ a_params: 9,
38
+ };
39
+ const PRELUDE = `precision highp float;
40
+ attribute vec2 a_corner;
41
+ attribute vec2 a_p0;
42
+ attribute vec2 a_p1;
43
+ attribute vec2 a_x;
44
+ attribute float a_d1;
45
+ // device pixels per tile unit, then the tile's origin in device pixels
46
+ uniform vec3 u_tile;
47
+ uniform vec2 u_viewport;
48
+ vec4 clip(vec2 p) {
49
+ return vec4(p.x / u_viewport.x * 2.0 - 1.0, 1.0 - p.y / u_viewport.y * 2.0, 0.0, 1.0);
50
+ }
51
+ bool broken() {
52
+ return a_p0.x < -32767.5 || a_p1.x < -32767.5;
53
+ }
54
+ `;
55
+ /**
56
+ * A segment as a capsule: the quad around it, widened by half the line
57
+ * width plus a pixel of fringe, and shaded by distance to the segment.
58
+ *
59
+ * The distance function is what makes this worth doing on the GPU rather
60
+ * than extruding on the CPU: clamping the pixel's position along the
61
+ * segment before measuring gives **round caps and round joins for free** —
62
+ * two consecutive capsules overlap in exactly the disc a round join is —
63
+ * and the same number is the antialiasing ramp. Nothing about a join is
64
+ * computed anywhere, so a road network costs its points and nothing else.
65
+ *
66
+ * What that costs is a translucent line: where two capsules overlap at a
67
+ * join the colour would be laid down twice, a darker bead at every vertex.
68
+ * So a translucent stroke is drawn a pixel at a time under the stencil, in
69
+ * two parts (`u_part`): the pixels a capsule covers wholly, the first
70
+ * capsule to reach one taking it, and then the antialiased fringe where
71
+ * nothing has been drawn yet.
72
+ */
73
+ export const LINE_VERTEX = `${PRELUDE}
74
+ uniform float u_half;
75
+ varying vec2 v_local;
76
+ varying float v_len;
77
+ varying float v_dist;
78
+ void main() {
79
+ if (broken()) {
80
+ gl_Position = vec4(2.0, 2.0, 2.0, 1.0);
81
+ return;
82
+ }
83
+ vec2 a = a_p0 * u_tile.x + u_tile.yz;
84
+ vec2 b = a_p1 * u_tile.x + u_tile.yz;
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 e = u_half + 1.0;
90
+ float along = mix(-e, len + e, a_corner.x);
91
+ float across = a_corner.y * e;
92
+ v_local = vec2(along, across);
93
+ v_len = len;
94
+ v_dist = a_x.x * u_tile.x + along;
95
+ gl_Position = clip(a + t * along + n * across);
96
+ }
97
+ `;
98
+ export const LINE_FRAGMENT = `precision highp float;
99
+ uniform vec4 u_color;
100
+ uniform float u_half;
101
+ // up to four dashes, on and off in turn, and the pattern's length — device
102
+ // pixels; a length of 0 is a solid line
103
+ uniform vec4 u_dash_a;
104
+ uniform vec4 u_dash_b;
105
+ uniform float u_period;
106
+ // 0: every pixel; 1: only those the capsule covers wholly; 2: only the rest
107
+ uniform float u_part;
108
+ varying vec2 v_local;
109
+ varying float v_len;
110
+ varying float v_dist;
111
+ // How much of the pixel at \`m\` along the pattern the dash from \`s\`, \`on\`
112
+ // long, covers — or its copy a pattern later, which the last pixels of a
113
+ // pattern are nearest to.
114
+ float dash(float m, float s, float on) {
115
+ if (on <= 0.0) return 0.0;
116
+ float here = min(m - s, s + on - m);
117
+ float next = min(m - u_period - s, s + on - m + u_period);
118
+ return clamp(max(here, next) + 0.5, 0.0, 1.0);
119
+ }
120
+ void main() {
121
+ float x = clamp(v_local.x, 0.0, v_len);
122
+ float dist = length(vec2(v_local.x - x, v_local.y));
123
+ float alpha = clamp(u_half - dist + 0.5, 0.0, 1.0);
124
+ if (u_period > 0.0) {
125
+ float m = mod(v_dist, u_period);
126
+ float s1 = u_dash_a.x + u_dash_a.y;
127
+ float s2 = s1 + u_dash_a.z + u_dash_a.w;
128
+ float s3 = s2 + u_dash_b.x + u_dash_b.y;
129
+ alpha *= max(
130
+ max(dash(m, 0.0, u_dash_a.x), dash(m, s1, u_dash_a.z)),
131
+ max(dash(m, s2, u_dash_b.x), dash(m, s3, u_dash_b.z))
132
+ );
133
+ }
134
+ if (u_part > 0.5 && (alpha < 1.0) == (u_part < 1.5)) discard;
135
+ if (alpha <= 0.0) discard;
136
+ gl_FragColor = u_color * alpha;
137
+ }
138
+ `;
139
+ /**
140
+ * A fill edge as one triangle of its ring's fan: apex, p0, p1.
141
+ *
142
+ * Drawn into the stencil buffer only. A fan per ring, apex anywhere, covers
143
+ * each pixel as many times as the ring winds around it, so incrementing on
144
+ * one facing and decrementing on the other leaves the winding number behind
145
+ * — non-zero is inside, which is a polygon with its holes cut, with no
146
+ * triangulation anywhere. The quad corner picks the vertex: `(0,-1)` is the
147
+ * apex, `(1,-1)` is p0 and `(0,1)` is p1.
148
+ */
149
+ export const FAN_VERTEX = `${PRELUDE}
150
+ void main() {
151
+ if (broken()) {
152
+ gl_Position = vec4(2.0, 2.0, 2.0, 1.0);
153
+ return;
154
+ }
155
+ float which = a_corner.x + a_corner.y + 1.0;
156
+ vec2 q = which < 0.5 ? a_x : (which < 1.5 ? a_p0 : a_p1);
157
+ gl_Position = clip(q * u_tile.x + u_tile.yz);
158
+ }
159
+ `;
160
+ export const FAN_FRAGMENT = `precision mediump float;
161
+ void main() {
162
+ gl_FragColor = vec4(0.0);
163
+ }
164
+ `;
165
+ /** The viewport, filled where the stencil says a polygon is. */
166
+ export const COVER_VERTEX = `precision highp float;
167
+ attribute vec2 a_corner;
168
+ void main() {
169
+ gl_Position = vec4(a_corner.x * 2.0 - 1.0, a_corner.y, 0.0, 1.0);
170
+ }
171
+ `;
172
+ export const COVER_FRAGMENT = `precision mediump float;
173
+ uniform vec4 u_color;
174
+ void main() {
175
+ gl_FragColor = u_color;
176
+ }
177
+ `;
178
+ /** The offscreen frame, copied to the surface — only where the surface has
179
+ * no stencil buffer of its own. */
180
+ export const BLIT_VERTEX = `precision highp float;
181
+ attribute vec2 a_corner;
182
+ varying vec2 v_uv;
183
+ void main() {
184
+ v_uv = vec2(a_corner.x, a_corner.y * 0.5 + 0.5);
185
+ gl_Position = vec4(a_corner.x * 2.0 - 1.0, a_corner.y, 0.0, 1.0);
186
+ }
187
+ `;
188
+ export const BLIT_FRAGMENT = `precision mediump float;
189
+ uniform sampler2D u_image;
190
+ // 1 copies the frame; below 1 it is a level fading in over the one leaving,
191
+ // premultiplied for the ONE, ONE_MINUS_SRC_ALPHA blend
192
+ uniform float u_alpha;
193
+ varying vec2 v_uv;
194
+ void main() {
195
+ gl_FragColor = texture2D(u_image, v_uv) * u_alpha;
196
+ }
197
+ `;
198
+ /**
199
+ * A label: its distance field from the atlas as one quad, centred on the
200
+ * anchor, turned to the baseline — which is all a label needs, because
201
+ * placement only ever sets a line label on a straight stretch — and scaled
202
+ * from the field's base size to the size it is drawn at (`a_params.z`,
203
+ * device pixels per texel). One field serves every size.
204
+ *
205
+ * A level label's quad starts on a **whole pixel**, so type that is not
206
+ * moving sits on the pixel grid the same way every frame. The quad is the
207
+ * field less an inset (`u_inset`) texel each side, which keeps the
208
+ * bilinear samples at its edge inside the field's own margin.
209
+ */
210
+ export const LABEL_VERTEX = `precision highp float;
211
+ attribute vec2 a_corner;
212
+ // centre (device pixels), then cos and sin of the baseline
213
+ attribute vec4 a_anchor;
214
+ // the field in the atlas: x, y, width, height in texels, margin included
215
+ attribute vec4 a_rect;
216
+ attribute vec4 a_ink;
217
+ attribute vec4 a_halo;
218
+ // halo radius in device pixels, 1 to set the label on whole pixels, and
219
+ // device pixels per field texel
220
+ attribute vec3 a_params;
221
+ uniform vec2 u_viewport;
222
+ uniform vec2 u_atlas;
223
+ uniform float u_inset;
224
+ varying vec2 v_uv;
225
+ varying vec4 v_ink;
226
+ varying vec4 v_halo;
227
+ varying float v_radius;
228
+ varying float v_scale;
229
+ void main() {
230
+ vec2 corner = vec2(a_corner.x, a_corner.y * 0.5 + 0.5);
231
+ vec2 texels = a_rect.zw - 2.0 * u_inset;
232
+ vec2 size = texels * a_params.z;
233
+ vec2 p;
234
+ if (a_params.y > 0.5) {
235
+ p = floor(a_anchor.xy - size * 0.5 + 0.5) + corner * size;
236
+ } else {
237
+ vec2 local = (corner - 0.5) * size;
238
+ vec2 axis = a_anchor.zw;
239
+ p = a_anchor.xy + vec2(local.x * axis.x - local.y * axis.y,
240
+ local.x * axis.y + local.y * axis.x);
241
+ }
242
+ v_uv = (a_rect.xy + u_inset + corner * texels) / u_atlas;
243
+ v_ink = a_ink;
244
+ v_halo = a_halo;
245
+ v_radius = a_params.x;
246
+ v_scale = a_params.z;
247
+ gl_Position = vec4(p.x / u_viewport.x * 2.0 - 1.0, 1.0 - p.y / u_viewport.y * 2.0, 0.0, 1.0);
248
+ }
249
+ `;
250
+ /**
251
+ * Distance in, colour out. The field says how far this pixel is from the
252
+ * glyphs' edge — in texels, `u_spread` of them across the byte range, and
253
+ * so in device pixels once scaled — and ink is the pixel of that distance
254
+ * nearest the edge, antialiased across one device pixel whatever size the
255
+ * label is drawn at. The halo is the same edge pushed out by its radius:
256
+ * one texture read, where a halo dilated from coverage took thirty-three,
257
+ * and exactly as wide as the style asks up to the field's reach.
258
+ */
259
+ export const LABEL_FRAGMENT = `precision highp float;
260
+ uniform sampler2D u_image;
261
+ uniform float u_spread;
262
+ varying vec2 v_uv;
263
+ varying vec4 v_ink;
264
+ varying vec4 v_halo;
265
+ varying float v_radius;
266
+ varying float v_scale;
267
+ void main() {
268
+ float field = texture2D(u_image, v_uv).a;
269
+ // Device pixels past the glyphs' edge: positive outside, negative in.
270
+ float d = (${SDF_EDGE.toFixed(4)} - field) * u_spread * v_scale;
271
+ // The ink's edge a little outside the outline (SDF_INK_BIAS_PX).
272
+ float ink = clamp(0.5 + ${SDF_INK_BIAS_PX.toFixed(2)} - d, 0.0, 1.0);
273
+ float halo = v_radius > 0.0 ? clamp(0.5 + v_radius - d, 0.0, 1.0) : 0.0;
274
+ vec4 color = v_ink * ink + v_halo * (halo * (1.0 - ink));
275
+ if (color.a <= 0.0) discard;
276
+ gl_FragColor = color;
277
+ }
278
+ `;
279
+ /**
280
+ * A marker: a quad around it, instanced. Its outline is computed per pixel
281
+ * (`MARKER_FRAGMENT`), so the quad is only big enough to hold the shape, its
282
+ * ring and a pixel of coverage.
283
+ */
284
+ export const MARKER_VERTEX = `precision highp float;
285
+ attribute vec2 a_corner;
286
+ // the point marked (device pixels) — a pin's tip, a disc's centre — the
287
+ // head's radius, and how far above the point the head's centre is: 0 for a
288
+ // disc
289
+ attribute vec4 a_anchor;
290
+ // the fill and the ring, premultiplied
291
+ attribute vec4 a_ink;
292
+ attribute vec4 a_halo;
293
+ // the ring's width in pixels
294
+ attribute vec2 a_params;
295
+ uniform vec2 u_viewport;
296
+ varying vec2 v_local;
297
+ varying vec4 v_fill;
298
+ varying vec4 v_ring;
299
+ varying vec3 v_shape;
300
+ void main() {
301
+ float r = a_anchor.z;
302
+ float d = a_anchor.w;
303
+ vec2 centre = a_anchor.xy - vec2(0.0, d);
304
+ float m = a_params.x * 0.5 + 1.0;
305
+ vec2 lo = centre - vec2(r + m);
306
+ vec2 hi = centre + vec2(r + m, max(r, d) + m);
307
+ vec2 p = mix(lo, hi, vec2(a_corner.x, a_corner.y * 0.5 + 0.5));
308
+ v_local = p - centre;
309
+ v_fill = a_ink;
310
+ v_ring = a_halo;
311
+ v_shape = vec3(r, d, a_params.x * 0.5);
312
+ gl_Position = vec4(p.x / u_viewport.x * 2.0 - 1.0, 1.0 - p.y / u_viewport.y * 2.0, 0.0, 1.0);
313
+ }
314
+ `;
315
+ /**
316
+ * A marker's pixels: the signed distance to its outline, and from it the
317
+ * fill inside and the ring over it — a stroke centred on the outline, which
318
+ * is how the retained renderer fills its path and then strokes it. The
319
+ * outline is a disc, or a pin's teardrop: the hull of the head and a point
320
+ * below it, which is Inigo Quilez's uneven capsule with a second radius of
321
+ * zero — its straight sides tangent to the head where the retained
322
+ * renderer's are.
323
+ */
324
+ export const MARKER_FRAGMENT = `precision highp float;
325
+ varying vec2 v_local;
326
+ varying vec4 v_fill;
327
+ varying vec4 v_ring;
328
+ varying vec3 v_shape;
329
+ float outline(vec2 p, float r, float d) {
330
+ if (d <= r) return length(p) - r;
331
+ p.x = abs(p.x);
332
+ float b = r / d;
333
+ float a = sqrt(1.0 - b * b);
334
+ float k = dot(p, vec2(-b, a));
335
+ if (k < 0.0) return length(p) - r;
336
+ if (k > a * d) return length(p - vec2(0.0, d));
337
+ return dot(p, vec2(a, b)) - r;
338
+ }
339
+ void main() {
340
+ float dist = outline(v_local, v_shape.x, v_shape.y);
341
+ float fill = clamp(0.5 - dist, 0.0, 1.0);
342
+ float ring = clamp(v_shape.z + 0.5 - abs(dist), 0.0, 1.0);
343
+ vec4 stroke = v_ring * ring;
344
+ vec4 color = stroke + v_fill * (fill * (1.0 - stroke.a));
345
+ if (color.a <= 0.0) discard;
346
+ gl_FragColor = color;
347
+ }
348
+ `;
349
+ /**
350
+ * A circle layer's point as a disc: a quad around it, instanced over the
351
+ * layer's records. Only `a_p0` is read — a point is one record, and the
352
+ * sentinel after a range's last point is `a_p1` of nothing drawn.
353
+ */
354
+ export const CIRCLE_VERTEX = `${PRELUDE}
355
+ uniform float u_radius;
356
+ uniform float u_stroke;
357
+ varying vec2 v_local;
358
+ void main() {
359
+ if (a_p0.x < -32767.5) {
360
+ gl_Position = vec4(2.0, 2.0, 2.0, 1.0);
361
+ return;
362
+ }
363
+ vec2 centre = a_p0 * u_tile.x + u_tile.yz;
364
+ float e = u_radius + u_stroke * 0.5 + 1.0;
365
+ v_local = vec2(a_corner.x * 2.0 - 1.0, a_corner.y) * e;
366
+ gl_Position = clip(centre + v_local);
367
+ }
368
+ `;
369
+ /** The disc's pixels: the fill inside, and a stroke centred on the edge
370
+ * over it — `paint.ts` fills a circle's path and then strokes it. */
371
+ export const CIRCLE_FRAGMENT = `precision highp float;
372
+ uniform vec4 u_color;
373
+ uniform vec4 u_stroke_color;
374
+ uniform float u_radius;
375
+ uniform float u_stroke;
376
+ varying vec2 v_local;
377
+ void main() {
378
+ float dist = length(v_local) - u_radius;
379
+ float fill = clamp(0.5 - dist, 0.0, 1.0);
380
+ float ring = u_stroke > 0.0
381
+ ? clamp(u_stroke * 0.5 + 0.5 - abs(dist), 0.0, 1.0)
382
+ : 0.0;
383
+ vec4 stroke = u_stroke_color * ring;
384
+ vec4 color = stroke + u_color * (fill * (1.0 - stroke.a));
385
+ if (color.a <= 0.0) discard;
386
+ gl_FragColor = color;
387
+ }
388
+ `;
389
+ /**
390
+ * A raster tile: its image over its square — the data tile's, which past
391
+ * the source's depth is larger than the cell it is drawn for — and a
392
+ * scissor clipping it to that cell. A pixel past every edge, so two squares
393
+ * that share an edge leave no gap; the scissor crops it and the image
394
+ * clamps to it.
395
+ */
396
+ export const RASTER_VERTEX = `precision highp float;
397
+ attribute vec2 a_corner;
398
+ // the square's size, then its top-left corner — device pixels
399
+ uniform vec3 u_tile;
400
+ uniform vec2 u_viewport;
401
+ varying vec2 v_uv;
402
+ void main() {
403
+ vec2 corner = vec2(a_corner.x, a_corner.y * 0.5 + 0.5);
404
+ vec2 p = u_tile.yz - 1.0 + corner * (u_tile.x + 2.0);
405
+ v_uv = (p - u_tile.yz) / u_tile.x;
406
+ gl_Position = vec4(p.x / u_viewport.x * 2.0 - 1.0, 1.0 - p.y / u_viewport.y * 2.0, 0.0, 1.0);
407
+ }
408
+ `;
409
+ /** An image as a source decodes one — not premultiplied — onto a frame
410
+ * that is. */
411
+ export const RASTER_FRAGMENT = `precision mediump float;
412
+ uniform sampler2D u_image;
413
+ varying vec2 v_uv;
414
+ void main() {
415
+ vec4 c = texture2D(u_image, v_uv);
416
+ gl_FragColor = vec4(c.rgb * c.a, c.a);
417
+ }
418
+ `;
419
+ function compileShader(gl, type, source) {
420
+ const shader = gl.createShader(type);
421
+ gl.shaderSource(shader, source);
422
+ gl.compileShader(shader);
423
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
424
+ const log = gl.getShaderInfoLog(shader);
425
+ gl.deleteShader(shader);
426
+ throw new Error(`@react-x11/components maps/gl: shader failed: ${log}`);
427
+ }
428
+ return shader;
429
+ }
430
+ /** Compile, bind the shared locations, link, and look the uniforms up. */
431
+ export function linkProgram(gl, vertex, fragment, uniforms) {
432
+ const program = gl.createProgram();
433
+ const vs = compileShader(gl, gl.VERTEX_SHADER, vertex);
434
+ const fs = compileShader(gl, gl.FRAGMENT_SHADER, fragment);
435
+ gl.attachShader(program, vs);
436
+ gl.attachShader(program, fs);
437
+ for (const [name, location] of Object.entries(ATTRIBUTES)) {
438
+ gl.bindAttribLocation(program, location, name);
439
+ }
440
+ gl.linkProgram(program);
441
+ gl.deleteShader(vs);
442
+ gl.deleteShader(fs);
443
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
444
+ const log = gl.getProgramInfoLog(program);
445
+ gl.deleteProgram(program);
446
+ throw new Error(`@react-x11/components maps/gl: link failed: ${log}`);
447
+ }
448
+ const found = {};
449
+ for (const name of uniforms)
450
+ found[name] = gl.getUniformLocation(program, name);
451
+ return { program, uniforms: found };
452
+ }
453
+ //# sourceMappingURL=shaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaders.js","sourceRoot":"","sources":["../../../src/maps/gl/shaders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ import type { MapSource } from '../sources.js';
2
+ import type { TileId } from '../proj.js';
3
+ import type { PreparedStyle } from '../paint.js';
4
+ import type { GlTileData } from './buckets.js';
5
+ import type { TileLookup } from './cover.js';
6
+ export interface GlTileStoreOptions {
7
+ source: MapSource;
8
+ /** What the source is called in its requests and its errors —
9
+ * `source-<index>` when it has no `id`. */
10
+ sourceId?: string;
11
+ prepared: PreparedStyle;
12
+ /**
13
+ * Called once per failed load, with whatever the source threw — what
14
+ * `<Map onTileError>` hears. A load aborted because the map stopped
15
+ * wanting the tile is not a failure, whatever it answers after that.
16
+ */
17
+ onError?: (error: unknown, tile: TileId & {
18
+ sourceId: string;
19
+ }) => void;
20
+ /** A load landed or a build finished: a frame is worth drawing. */
21
+ onChange: () => void;
22
+ /** Loads in flight at once. 8 by default. */
23
+ concurrency?: number;
24
+ /** Tiles kept, bytes and buckets both. 256 by default. */
25
+ capacity?: number;
26
+ /**
27
+ * Build buckets on this many worker threads. `0` (the default) builds on
28
+ * this thread under `pump`'s budget. Falls back to that when the runtime
29
+ * has no `worker_threads`.
30
+ */
31
+ workers?: number;
32
+ }
33
+ export declare class GlTileStore implements TileLookup {
34
+ private readonly _source;
35
+ private readonly _sourceId;
36
+ private readonly _onError;
37
+ private _prepared;
38
+ private _style;
39
+ private readonly _onChange;
40
+ private readonly _concurrency;
41
+ private readonly _capacity;
42
+ private readonly _entries;
43
+ /** Loaded tiles waiting for a build, oldest first. */
44
+ private _queue;
45
+ private _waiting;
46
+ private _inFlight;
47
+ private _frame;
48
+ private _disposed;
49
+ /** What {@link holds} answers from: built when first asked, and dropped
50
+ * whenever a tile gets an answer or loses one. */
51
+ private _held;
52
+ private readonly _pool;
53
+ /** Bucket builds and their cost on this thread, for a HUD. */
54
+ built: number;
55
+ buildMs: number;
56
+ constructor(options: GlTileStoreOptions);
57
+ get source(): MapSource;
58
+ /** Tiles loaded and waiting for (or in) a build. */
59
+ get building(): number;
60
+ /** Tiles asked for and not yet answered. */
61
+ get loading(): number;
62
+ /** Whether builds happen off this thread. */
63
+ get threaded(): boolean;
64
+ get(tile: TileId): GlTileData | null | undefined;
65
+ /**
66
+ * Whether this store has an answer for `tile` (`'here'`), for only tiles
67
+ * under it within `FILL_DEPTH` levels (`'below'`), or neither — the
68
+ * cover's way to search under a hole without a `get` for every tile
69
+ * there, which would stamp a tile still loading and keep its load going.
70
+ */
71
+ holds(tile: TileId): 'here' | 'below' | undefined;
72
+ /** A new frame: what the cover asks for from here on is this frame's. */
73
+ tick(): void;
74
+ /** Ask for tiles, centre-out. Already-known tiles cost a lookup. */
75
+ want(tiles: readonly TileId[]): void;
76
+ private _drain;
77
+ private _load;
78
+ /**
79
+ * How many of `tiles` failed to load and are waiting on a retry — the
80
+ * frame's `errors`.
81
+ */
82
+ failedAmong(tiles: readonly TileId[]): number;
83
+ /**
84
+ * Stop loading: every load in flight is aborted and forgotten, and nothing
85
+ * waiting is started. For a source taken off the map, whose tiles that
86
+ * have arrived stay, so switching back to it is free — the retained
87
+ * cache's rule.
88
+ */
89
+ abortLoads(): void;
90
+ /** Build every tile again from its bytes — `refresh()`, after a style
91
+ * the application edited in place. The old buckets draw until then. */
92
+ rebuild(): void;
93
+ /**
94
+ * Work through the loaded tiles. Answers whether more are waiting on this
95
+ * thread, which is the caller's cue for another frame.
96
+ *
97
+ * With workers, everything waiting is dispatched and nothing is built
98
+ * here: a finished build calls `onChange` like a finished load does. On
99
+ * this thread, tiles are built until `deadline` — always at least one, or
100
+ * a budget smaller than one tile would build nothing forever.
101
+ */
102
+ pump(deadline: number): boolean;
103
+ /**
104
+ * A new style. Buckets are rebuilt only if the new one would select
105
+ * different features — a different layer list or different filters —
106
+ * and until a tile is rebuilt its old buckets keep drawing.
107
+ */
108
+ setStyle(prepared: PreparedStyle): void;
109
+ /** Every tile with bytes back on the build queue, most recently drawn
110
+ * first; each keeps drawing its old buckets until its new ones exist. */
111
+ private _requeue;
112
+ /**
113
+ * The end of a frame: cancel every load it did not want, and let go of the
114
+ * least recently drawn tiles past capacity.
115
+ *
116
+ * A tile panned or zoomed out of the cover — and the ring around it the
117
+ * cover keeps warm — would otherwise load to the end: a request nobody is
118
+ * waiting for, pointed at somebody else's servers. That is the contract
119
+ * the docs make for `request.signal`, on either renderer. A tile that
120
+ * comes back is asked for again, with a new signal.
121
+ */
122
+ evict(release: (data: GlTileData) => void): void;
123
+ dispose(release: (data: GlTileData) => void): void;
124
+ }
125
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/maps/gl/store.ts"],"names":[],"mappings":"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"}