@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 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/flow/gl/renderer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAY,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAU7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAa5C,OAAO,KAAK,EAAE,EAAE,EAAW,MAAM,cAAc,CAAC;AAGhD,qEAAqE;AACrE,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,cAAc,EACd,SAAS,GAAG,UAAU,GAAG,QAAQ,CAClC,CAAC;AAEF;+DAC+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B;yDACqD;IACrD,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB;qEACiE;IACjE,MAAM,EAAE,UAAU,CAAC;IACnB;;4EAEwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,OAAO,EAAE,SAAS,CAAC;IACnB;uEACmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd;2DACuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3B;AAYD,eAAO,MAAM,GAAG,QAAO,MAAkD,CAAC;AAoF1E,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C;gFAC4E;IAC5E,OAAO,CAAC,UAAU,CAAS;IAE3B,YAAY,EAAE,EAAE,EAAE,EAoCjB;IAED;2EACuE;IACvE,IAAI,CACF,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,UAAU,GACjB,eAAe,CAuBjB;IAED;2BACuB;IACvB,SAAS,CACP,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,UAAU,GACjB,eAAe,CA0EjB;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,UAAU;IAgElB,OAAO,CAAC,KAAK;IAgCb,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,MAAM;IA4Cd,OAAO,CAAC,QAAQ;IAehB,6DAA6D;IAC7D,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,QAAQ;IA2ChB,OAAO,CAAC,OAAO;IAgBf,OAAO,IAAI,IAAI,CAUd;CACF"}
@@ -0,0 +1,459 @@
1
+ import { BOX_STRIDE, LINE_STRIDE, ScenePacker, TRI_STRIDE } from './pack.js';
2
+ import { ATTRIBUTES, BOX_FRAGMENT, BOX_VERTEX, GRID_FRAGMENT, GRID_VERTEX, LINE_FRAGMENT, LINE_VERTEX, linkProgram, TRI_FRAGMENT, TRI_VERTEX, } from './shaders.js';
3
+ import { ColorCache } from './color.js';
4
+ const UNIFORMS = [
5
+ 'u_origin',
6
+ 'u_offset',
7
+ 'u_scale',
8
+ 'u_zoom',
9
+ 'u_viewport',
10
+ ];
11
+ /** The clock, through `globalThis`: `src/` compiles with `types: []`. */
12
+ const globals = globalThis;
13
+ export const now = () => globals.performance?.now() ?? Date.now();
14
+ const ZERO = { x: 0, y: 0 };
15
+ /** One layer: a packer, the three buffers its streams go into, and what it
16
+ * last packed. */
17
+ class Layer {
18
+ gl;
19
+ packer = new ScenePacker();
20
+ lines;
21
+ boxes;
22
+ tris;
23
+ packed = null;
24
+ scene = null;
25
+ /** Labels packed before their fields landed, not yet written in, and the
26
+ * atlas's generation they were last checked against. */
27
+ waiting = [];
28
+ checked = -1;
29
+ /** Labels drawn from their fields, and the atlas's count of dropped
30
+ * fields they were last checked against. */
31
+ drawn = [];
32
+ moved = -1;
33
+ constructor(gl) {
34
+ this.gl = gl;
35
+ this.lines = gl.createBuffer();
36
+ this.boxes = gl.createBuffer();
37
+ this.tris = gl.createBuffer();
38
+ }
39
+ /** Pack and upload; answers the bytes sent. Orphaning with `bufferData`
40
+ * rather than `bufferSubData`: the driver hands back fresh storage
41
+ * instead of waiting for the last frame's draws to finish reading the
42
+ * old. */
43
+ update(scene, layer, text) {
44
+ const gl = this.gl;
45
+ const packed = this.packer.pack(scene, layer, text);
46
+ this.packed = packed;
47
+ this.scene = scene;
48
+ this.waiting = packed.waiting;
49
+ this.checked = -1;
50
+ this.drawn = packed.drawn;
51
+ this.moved = -1;
52
+ let bytes = 0;
53
+ const put = (buf, data, used) => {
54
+ if (used === 0)
55
+ return;
56
+ const view = data.subarray(0, used);
57
+ gl.bindBuffer(gl.ARRAY_BUFFER, buf);
58
+ gl.bufferData(gl.ARRAY_BUFFER, view, gl.DYNAMIC_DRAW);
59
+ bytes += view.byteLength;
60
+ };
61
+ put(this.lines, packed.lines, packed.lineCount * LINE_STRIDE);
62
+ put(this.boxes, packed.boxes, packed.boxCount * BOX_STRIDE);
63
+ put(this.tris, packed.tris, packed.triCount * TRI_STRIDE);
64
+ return bytes;
65
+ }
66
+ /** The box stream again, whole — orphaned as `update` does, so no draw
67
+ * of the last frame is waited for. Answers the bytes sent. */
68
+ uploadBoxes() {
69
+ const packed = this.packed;
70
+ if (!packed || packed.boxCount === 0)
71
+ return 0;
72
+ const gl = this.gl;
73
+ const view = packed.boxes.subarray(0, packed.boxCount * BOX_STRIDE);
74
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.boxes);
75
+ gl.bufferData(gl.ARRAY_BUFFER, view, gl.DYNAMIC_DRAW);
76
+ return view.byteLength;
77
+ }
78
+ /** Nothing to draw, until the next `update`. */
79
+ clear() {
80
+ this.packed = null;
81
+ this.scene = null;
82
+ this.waiting = [];
83
+ this.drawn = [];
84
+ this.checked = -1;
85
+ this.moved = -1;
86
+ }
87
+ dispose() {
88
+ for (const buffer of [this.lines, this.boxes, this.tris]) {
89
+ this.gl.deleteBuffer(buffer);
90
+ }
91
+ }
92
+ }
93
+ export class FlowGlRenderer {
94
+ gl;
95
+ line;
96
+ box;
97
+ tri;
98
+ grid;
99
+ vao;
100
+ quad;
101
+ world;
102
+ lifted;
103
+ overlay;
104
+ colors = new ColorCache();
105
+ /** Whether this context has had the atlas's texture made in it — a new
106
+ * renderer is a new context, into which every raster is uploaded again. */
107
+ atlasBound = false;
108
+ constructor(gl) {
109
+ this.gl = gl;
110
+ this.line = linkProgram(gl, LINE_VERTEX, LINE_FRAGMENT, [
111
+ ...UNIFORMS,
112
+ 'u_phase',
113
+ ]);
114
+ this.box = linkProgram(gl, BOX_VERTEX, BOX_FRAGMENT, [
115
+ ...UNIFORMS,
116
+ 'u_atlas',
117
+ 'u_spread',
118
+ ]);
119
+ // the label atlas is always on unit 0
120
+ gl.useProgram(this.box.program);
121
+ gl.uniform1i(this.box.uniforms.u_atlas, 0);
122
+ this.tri = linkProgram(gl, TRI_VERTEX, TRI_FRAGMENT, UNIFORMS);
123
+ this.grid = linkProgram(gl, GRID_VERTEX, GRID_FRAGMENT, [
124
+ ...UNIFORMS,
125
+ 'u_grid',
126
+ 'u_mark',
127
+ 'u_color',
128
+ ]);
129
+ // A core profile draws nothing with no vertex array bound. One is enough:
130
+ // every range re-points the attributes at its own offset anyway, because
131
+ // GLSL ES 1.00 has no base instance to do it for us.
132
+ this.vao = gl.createVertexArray();
133
+ gl.bindVertexArray(this.vao);
134
+ this.quad = gl.createBuffer();
135
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.quad);
136
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, -1, 1, -1, 0, 1, 1, 1]), gl.STATIC_DRAW);
137
+ this.world = new Layer(gl);
138
+ this.lifted = new Layer(gl);
139
+ this.overlay = new Layer(gl);
140
+ }
141
+ /** A whole scene, in one layer, at no offset — what a test or a one-off
142
+ * render wants, and the same drawing the two-layer frame composes. */
143
+ draw(scene, target, atlas) {
144
+ const packStart = now();
145
+ const bytes = this.overlay.update(scene, 'all', atlas ? (t) => atlas.quad(t) : undefined);
146
+ const drawStart = now();
147
+ this.begin(target, atlas);
148
+ const packed = this.overlay.packed;
149
+ // Every marching edge in one scene has the same phase baked in.
150
+ const phase = scene.edges.find((e) => e.animated)?.dashOffset ?? 0;
151
+ const calls = this.ranges(packed.ranges, this.overlay, scene, ZERO, 1, phase, target);
152
+ this.gl.disable(this.gl.SCISSOR_TEST);
153
+ return this.stats(packStart, drawStart, bytes, calls, [packed], false);
154
+ }
155
+ /** One frame: the overlay under the world, the world at its offset, the
156
+ * overlay over it. */
157
+ drawFrame(frame, target, atlas) {
158
+ const packStart = now();
159
+ let bytes = 0;
160
+ const rebuilt = frame.world != null;
161
+ if (frame.world) {
162
+ atlas?.beginPack();
163
+ bytes += this.world.update(frame.world, 'world', atlas ? (t) => atlas.quad(t) : undefined);
164
+ }
165
+ if (frame.lifted) {
166
+ bytes += this.lifted.update(frame.lifted, 'world', atlas ? (t) => atlas.quad(t, true) : undefined);
167
+ }
168
+ else if (frame.lifted === null) {
169
+ this.lifted.clear();
170
+ }
171
+ bytes += this.overlay.update(frame.overlay, 'overlay');
172
+ if (atlas) {
173
+ bytes += this.landLabels(this.world, atlas);
174
+ bytes += this.landLabels(this.lifted, atlas, true);
175
+ }
176
+ const drawStart = now();
177
+ this.begin(target, atlas);
178
+ const over = this.overlay.packed;
179
+ let calls = this.ranges(over.ranges.slice(0, over.split), this.overlay, frame.overlay, ZERO, 1, 0, target);
180
+ // The world's edges, the lifted edges, the world's cards, the lifted
181
+ // cards: a dragged node's edges go under every card, and it over them.
182
+ const world = this.world.packed;
183
+ const lifted = this.lifted.packed;
184
+ const half = (layer, first) => {
185
+ const packed = layer.packed;
186
+ if (!packed || !layer.scene)
187
+ return;
188
+ calls += this.ranges(first
189
+ ? packed.ranges.slice(0, packed.nodesAt)
190
+ : packed.ranges.slice(packed.nodesAt), layer, layer.scene, frame.offset, frame.zoom ?? 1, frame.phase, target);
191
+ };
192
+ half(this.world, true);
193
+ half(this.lifted, true);
194
+ half(this.world, false);
195
+ half(this.lifted, false);
196
+ calls += this.ranges(over.ranges.slice(over.split), this.overlay, frame.overlay, ZERO, 1, 0, target);
197
+ this.gl.disable(this.gl.SCISSOR_TEST);
198
+ const packs = [world, lifted, over].filter((p) => p != null);
199
+ return this.stats(packStart, drawStart, bytes, calls, packs, rebuilt);
200
+ }
201
+ /**
202
+ * The labels of a layer packed before their fields existed, drawn from
203
+ * them now they have landed: the flag, the place in the atlas and the
204
+ * quad written into each box, and the stream uploaded again.
205
+ * A label arriving used to be the world packed again once everything on
206
+ * screen had its field — every label at once, after all of them — and is
207
+ * now a few floats and one upload, as each lands. Answers the bytes sent.
208
+ *
209
+ * First, the other way: a label whose field the atlas dropped for one
210
+ * nearer the view — or set again somewhere else — is drawn as nothing
211
+ * and waits again, its field wanted from where it is. Only a full atlas
212
+ * drops anything, so a graph under the limit never walks this list.
213
+ */
214
+ landLabels(layer, atlas, lifted = false) {
215
+ const packed = layer.packed;
216
+ if (!packed)
217
+ return 0;
218
+ const d = packed.boxes;
219
+ let lost = 0;
220
+ if (layer.moved !== atlas.moves) {
221
+ layer.moved = atlas.moves;
222
+ const kept = [];
223
+ for (const l of layer.drawn) {
224
+ if (atlas.slotOf(l.key) === l.slot) {
225
+ kept.push(l);
226
+ continue;
227
+ }
228
+ d[l.index * BOX_STRIDE + 6] = 2;
229
+ layer.waiting.push({ index: l.index, key: l.key, text: l.text });
230
+ atlas.want(l.key, l.text);
231
+ lost++;
232
+ }
233
+ if (lost > 0) {
234
+ layer.drawn = kept;
235
+ packed.gaps.text += lost;
236
+ layer.checked = -1;
237
+ }
238
+ }
239
+ if (layer.waiting.length === 0 || layer.checked === atlas.generation) {
240
+ return lost > 0 ? layer.uploadBoxes() : 0;
241
+ }
242
+ layer.checked = atlas.generation;
243
+ const still = [];
244
+ let landed = 0;
245
+ for (const w of layer.waiting) {
246
+ const q = atlas.landing(w.key, w.text, lifted);
247
+ if (!q) {
248
+ still.push(w);
249
+ continue;
250
+ }
251
+ layer.drawn.push({
252
+ index: w.index,
253
+ key: q.key,
254
+ text: w.text,
255
+ slot: q.slot,
256
+ });
257
+ // the whole quad: one the pack did not measure was a box of no size
258
+ const at = w.index * BOX_STRIDE;
259
+ d[at] = q.x;
260
+ d[at + 1] = q.y;
261
+ d[at + 2] = q.w;
262
+ d[at + 3] = q.h;
263
+ d[at + 4] = q.margin;
264
+ d[at + 5] = q.page;
265
+ d[at + 6] = 1;
266
+ d[at + 7] = q.texel;
267
+ d[at + 12] = q.u0;
268
+ d[at + 13] = q.v0;
269
+ d[at + 14] = q.u1;
270
+ d[at + 15] = q.v1;
271
+ landed++;
272
+ }
273
+ if (landed === 0)
274
+ return lost > 0 ? layer.uploadBoxes() : 0;
275
+ layer.waiting = still;
276
+ packed.gaps.text -= landed;
277
+ return layer.uploadBoxes();
278
+ }
279
+ stats(packStart, drawStart, uploadBytes, drawCalls, packs, worldRebuilt) {
280
+ let lines = 0;
281
+ let boxes = 0;
282
+ let triangles = 0;
283
+ const gaps = { text: 0, custom: 0 };
284
+ for (const p of packs) {
285
+ lines += p.lineCount;
286
+ boxes += p.boxCount;
287
+ triangles += p.triCount / 3;
288
+ gaps.text += p.gaps.text;
289
+ gaps.custom += p.gaps.custom;
290
+ }
291
+ return {
292
+ packMs: drawStart - packStart,
293
+ drawMs: now() - drawStart,
294
+ drawCalls,
295
+ lines,
296
+ boxes,
297
+ triangles,
298
+ uploadBytes,
299
+ worldRebuilt,
300
+ gaps,
301
+ };
302
+ }
303
+ begin(target, atlas) {
304
+ const gl = this.gl;
305
+ if (atlas) {
306
+ atlas.bind(gl, !this.atlasBound);
307
+ this.atlasBound = true;
308
+ // how many texels a field's values span, for the label ramp
309
+ gl.useProgram(this.box.program);
310
+ gl.uniform1f(this.box.uniforms.u_spread, atlas.pad);
311
+ }
312
+ gl.bindVertexArray(this.vao);
313
+ gl.viewport(0, 0, target.width, target.height);
314
+ gl.disable(gl.DEPTH_TEST);
315
+ gl.enable(gl.BLEND);
316
+ // premultiplied, which is what every colour `./color.ts` hands back is
317
+ gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
318
+ }
319
+ ranges(ranges, layer, scene, offset, zoom, phase, target) {
320
+ let calls = 0;
321
+ for (const range of ranges) {
322
+ this.scissor(range.scissor, target);
323
+ if (range.kind === 'grid') {
324
+ if (!scene.grid)
325
+ continue;
326
+ this.drawGrid(scene, target);
327
+ }
328
+ else if (range.kind === 'line') {
329
+ this.drawInstances(this.line, layer.lines, LINE_STRIDE, range, offset, zoom, target, phase);
330
+ }
331
+ else if (range.kind === 'box') {
332
+ this.drawInstances(this.box, layer.boxes, BOX_STRIDE, range, offset, zoom, target);
333
+ }
334
+ else {
335
+ this.drawTriangles(layer.tris, range, offset, zoom, target);
336
+ }
337
+ calls++;
338
+ }
339
+ return calls;
340
+ }
341
+ uniforms(program, offset, zoom, target) {
342
+ const gl = this.gl;
343
+ gl.useProgram(program.program);
344
+ gl.uniform2f(program.uniforms.u_origin, target.origin.x, target.origin.y);
345
+ gl.uniform2f(program.uniforms.u_offset, offset.x, offset.y);
346
+ gl.uniform1f(program.uniforms.u_scale, target.scale);
347
+ gl.uniform1f(program.uniforms.u_zoom, zoom);
348
+ gl.uniform2f(program.uniforms.u_viewport, target.width, target.height);
349
+ }
350
+ /** The quad's corners at location 0, stepping per vertex. */
351
+ corners() {
352
+ const gl = this.gl;
353
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.quad);
354
+ gl.enableVertexAttribArray(ATTRIBUTES.a_corner);
355
+ gl.vertexAttribPointer(ATTRIBUTES.a_corner, 2, gl.FLOAT, false, 0, 0);
356
+ gl.vertexAttribDivisor(ATTRIBUTES.a_corner, 0);
357
+ }
358
+ drawInstances(program, buffer, stride, range, offset, zoom, target, phase) {
359
+ const gl = this.gl;
360
+ this.uniforms(program, offset, zoom, target);
361
+ // only the line program declares it, and only after `uniforms` has made
362
+ // that program current
363
+ if (phase !== undefined)
364
+ gl.uniform1f(program.uniforms.u_phase, phase);
365
+ this.corners();
366
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
367
+ const bytes = stride * 4;
368
+ const base = range.first * bytes;
369
+ const slots = [
370
+ ATTRIBUTES.a_i0,
371
+ ATTRIBUTES.a_i1,
372
+ ATTRIBUTES.a_i2,
373
+ ATTRIBUTES.a_i3,
374
+ ];
375
+ slots.forEach((location, i) => {
376
+ gl.enableVertexAttribArray(location);
377
+ gl.vertexAttribPointer(location, 4, gl.FLOAT, false, bytes, base + i * 16);
378
+ gl.vertexAttribDivisor(location, 1);
379
+ });
380
+ gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, range.count);
381
+ }
382
+ drawTriangles(buffer, range, offset, zoom, target) {
383
+ const gl = this.gl;
384
+ this.uniforms(this.tri, offset, zoom, target);
385
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
386
+ const bytes = TRI_STRIDE * 4;
387
+ // Per vertex, not per instance: a triangle is three records.
388
+ gl.enableVertexAttribArray(ATTRIBUTES.a_corner);
389
+ gl.vertexAttribPointer(ATTRIBUTES.a_corner, 2, gl.FLOAT, false, bytes, 0);
390
+ gl.vertexAttribDivisor(ATTRIBUTES.a_corner, 0);
391
+ gl.enableVertexAttribArray(ATTRIBUTES.a_i0);
392
+ gl.vertexAttribPointer(ATTRIBUTES.a_i0, 4, gl.FLOAT, false, bytes, 8);
393
+ gl.vertexAttribDivisor(ATTRIBUTES.a_i0, 0);
394
+ for (const location of [
395
+ ATTRIBUTES.a_i1,
396
+ ATTRIBUTES.a_i2,
397
+ ATTRIBUTES.a_i3,
398
+ ]) {
399
+ gl.disableVertexAttribArray(location);
400
+ }
401
+ gl.drawArrays(gl.TRIANGLES, range.first, range.count);
402
+ }
403
+ drawGrid(scene, target) {
404
+ const gl = this.gl;
405
+ const grid = scene.grid;
406
+ this.uniforms(this.grid, ZERO, 1, target);
407
+ this.corners();
408
+ for (const location of [
409
+ ATTRIBUTES.a_i0,
410
+ ATTRIBUTES.a_i1,
411
+ ATTRIBUTES.a_i2,
412
+ ATTRIBUTES.a_i3,
413
+ ]) {
414
+ gl.disableVertexAttribArray(location);
415
+ }
416
+ const zoom = scene.viewport.zoom;
417
+ const variant = grid.variant === 'lines' ? 1 : grid.variant === 'cross' ? 2 : 0;
418
+ // A mark's on-screen size, the 2D path's own arithmetic: a dot is
419
+ // `size * 2 * zoom` across (at least a pixel) and a cross's arm
420
+ // `size * 3 * zoom` (at least two).
421
+ const mark = variant === 0
422
+ ? Math.max(1, Math.round(grid.size * 2 * zoom))
423
+ : variant === 2
424
+ ? Math.max(2, grid.size * 3 * zoom)
425
+ : 1;
426
+ const color = this.colors.get(grid.color);
427
+ gl.uniform3f(this.grid.uniforms.u_grid, grid.origin.x, grid.origin.y, grid.step);
428
+ gl.uniform2f(this.grid.uniforms.u_mark, variant, mark);
429
+ gl.uniform4f(this.grid.uniforms.u_color, color[0], color[1], color[2], color[3]);
430
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
431
+ }
432
+ scissor(rect, target) {
433
+ const gl = this.gl;
434
+ if (!rect) {
435
+ gl.disable(gl.SCISSOR_TEST);
436
+ return;
437
+ }
438
+ const s = target.scale;
439
+ const x = Math.floor((rect.x - target.origin.x) * s);
440
+ const y = Math.floor((rect.y - target.origin.y) * s);
441
+ const w = Math.ceil(rect.width * s);
442
+ const h = Math.ceil(rect.height * s);
443
+ gl.enable(gl.SCISSOR_TEST);
444
+ // GL's scissor counts up from the bottom; the scene counts down.
445
+ gl.scissor(x, target.height - (y + h), w, h);
446
+ }
447
+ dispose() {
448
+ const gl = this.gl;
449
+ gl.deleteBuffer(this.quad);
450
+ this.world.dispose();
451
+ this.lifted.dispose();
452
+ this.overlay.dispose();
453
+ for (const program of [this.line, this.box, this.tri, this.grid]) {
454
+ gl.deleteProgram(program.program);
455
+ }
456
+ gl.deleteVertexArray(this.vao);
457
+ }
458
+ }
459
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/flow/gl/renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /** Attribute locations, shared so one quad buffer feeds every program. */
2
+ export declare const ATTRIBUTES: {
3
+ readonly a_corner: 0;
4
+ readonly a_i0: 1;
5
+ readonly a_i1: 2;
6
+ readonly a_i2: 3;
7
+ readonly a_i3: 4;
8
+ };
9
+ /**
10
+ * A line segment as a capsule: the quad round it, widened by half the line
11
+ * plus a pixel of fringe, shaded by distance to the segment.
12
+ *
13
+ * Clamping the pixel's position along the segment before measuring is what
14
+ * gives round caps and round joins for nothing — two consecutive capsules
15
+ * overlap in exactly the disc a round join is — and the same distance is the
16
+ * antialiasing ramp. The cost of that is a translucent line, which would lay
17
+ * its colour down twice where two capsules overlap; every line a graph draws
18
+ * by default is opaque, and `src/maps/gl/shaders.ts` has the stencil pass
19
+ * that fixes it if one ever is not.
20
+ *
21
+ * Instance: a_i0 = ends, a_i1 = half-width, distance along at the first end,
22
+ * dash on, dash off; a_i2 = dash offset, and 1 where the dash marches — by
23
+ * `u_phase`, the timer's, in logical pixels; a_i3 = colour.
24
+ */
25
+ export declare const LINE_VERTEX = "precision highp float;\nuniform vec2 u_origin;\nuniform vec2 u_offset;\nuniform float u_scale;\nuniform float u_zoom;\nuniform vec2 u_viewport;\nvec2 device(vec2 logical) {\n return (logical * u_zoom + u_offset - u_origin) * u_scale;\n}\nvec4 clip(vec2 d) {\n return vec4(d.x / u_viewport.x * 2.0 - 1.0,\n 1.0 - d.y / u_viewport.y * 2.0, 0.0, 1.0);\n}\n\nuniform float u_phase;\nattribute vec2 a_corner;\nattribute vec4 a_i0;\nattribute vec4 a_i1;\nattribute vec4 a_i2;\nattribute vec4 a_i3;\nvarying vec2 v_local;\nvarying float v_len;\nvarying float v_half;\nvarying float v_along;\nvarying vec3 v_dash;\nvarying vec4 v_color;\nvoid main() {\n vec2 a = device(a_i0.xy);\n vec2 b = device(a_i0.zw);\n vec2 d = b - a;\n float len = length(d);\n vec2 t = len > 0.0001 ? d / len : vec2(1.0, 0.0);\n vec2 n = vec2(-t.y, t.x);\n float half_ = a_i1.x * u_zoom * u_scale;\n float e = half_ + 1.0;\n float along = mix(-e, len + e, a_corner.x);\n float across = a_corner.y * e;\n v_local = vec2(along, across);\n v_len = len;\n v_half = half_;\n v_along = a_i1.y * u_zoom * u_scale + along;\n // a marching dash takes the timer's phase from a uniform, so a tick moves\n // every dash on the GPU without a byte uploaded \u2014 and the phase is the\n // view's, already at its zoom, where the pattern is the world's\n v_dash = (vec3(a_i1.z, a_i1.w, a_i2.x) * u_zoom +\n vec3(0.0, 0.0, a_i2.y * u_phase)) * u_scale;\n v_color = a_i3;\n gl_Position = clip(a + t * along + n * across);\n}\n";
26
+ export declare const LINE_FRAGMENT = "precision highp float;\nvarying vec2 v_local;\nvarying float v_len;\nvarying float v_half;\nvarying float v_along;\nvarying vec3 v_dash;\nvarying vec4 v_color;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float alpha = clamp(v_half - dist + 0.5, 0.0, 1.0);\n float period = v_dash.x + v_dash.y;\n if (period > 0.0) {\n // Where in the pattern this pixel is, the canvas way: the offset shifts\n // the pattern's start along the line. Covered by how far the pixel is\n // inside the nearer end of its dash, so a dash's ends antialias too.\n float m = mod(v_along + v_dash.z, period);\n alpha *= clamp(min(m, v_dash.x - m) + 0.5, 0.0, 1.0);\n }\n if (alpha <= 0.0) discard;\n gl_FragColor = v_color * alpha;\n}\n";
27
+ /**
28
+ * A rounded box: fill, border and antialiased edge out of one distance.
29
+ *
30
+ * The 2D painter fills the whole box and strokes a border *inset* by half
31
+ * its pen (`../draw.ts`), so the ink band runs from the edge inward by the
32
+ * pen's width with the fill beneath it. This composites the same way — the
33
+ * border *over* the fill across the band, not in place of it — which only
34
+ * differs when the border is translucent, and a hovered card's is.
35
+ *
36
+ * A disc is a box whose side is twice its corner radius, which is why
37
+ * handles are drawn here too — and a label is a box that samples its
38
+ * distance field in the atlas (`./text.ts`) instead, flagged in `a_i1.z`,
39
+ * which is what keeps every label in the box stream at exactly the place in
40
+ * the order the 2D painter draws it.
41
+ *
42
+ * Instance: a_i0 = x, y, width, height; a_i1 = corner radius, border width;
43
+ * a_i2 = fill; a_i3 = border colour. For a label: a_i0 = the text's corner
44
+ * and the quad's size; a_i1 = the quad's margin before that corner, its
45
+ * field's page, 1, and the logical pixels a field texel covers; a_i2 = ink; a_i3 = its rect
46
+ * in the atlas.
47
+ */
48
+ export declare const BOX_VERTEX = "precision highp float;\nuniform vec2 u_origin;\nuniform vec2 u_offset;\nuniform float u_scale;\nuniform float u_zoom;\nuniform vec2 u_viewport;\nvec2 device(vec2 logical) {\n return (logical * u_zoom + u_offset - u_origin) * u_scale;\n}\nvec4 clip(vec2 d) {\n return vec4(d.x / u_viewport.x * 2.0 - 1.0,\n 1.0 - d.y / u_viewport.y * 2.0, 0.0, 1.0);\n}\n\nattribute vec2 a_corner;\nattribute vec4 a_i0;\nattribute vec4 a_i1;\nattribute vec4 a_i2;\nattribute vec4 a_i3;\nvarying vec2 v_local;\nvarying vec2 v_half;\nvarying vec2 v_shape;\nvarying vec4 v_fill;\nvarying vec4 v_border;\nvarying vec2 v_uv;\nvarying float v_text;\nvoid main() {\n vec2 corner = vec2(a_corner.x, a_corner.y * 0.5 + 0.5);\n v_text = a_i1.z;\n if (a_i1.z > 1.5) {\n // a label whose field is still being set: nothing, until it lands\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n return;\n }\n if (a_i1.z > 0.5) {\n // A label: its field, scaled to the size it is drawn at. The text's\n // corner goes on the device grid *after* the pan's offset, which is\n // where the grid is \u2014 the 2D painter rounds the same corner \u2014 and the\n // quad reaches its margin before it.\n float k = u_zoom * u_scale;\n vec2 origin = floor(device(a_i0.xy) + 0.5) - a_i1.x * k;\n v_uv = mix(a_i3.xy, a_i3.zw, corner);\n v_fill = a_i2;\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n // device pixels a field texel covers, for the fragment's ramp, and the\n // page its field is on\n v_shape = vec2(a_i1.w * k, a_i1.y);\n v_border = vec4(0.0);\n gl_Position = clip(origin + corner * a_i0.zw * k);\n return;\n }\n v_uv = vec2(0.0);\n vec2 size = a_i0.zw * u_zoom * u_scale;\n vec2 half_ = size * 0.5;\n // a pixel of fringe all round, for the antialiased edge to fade into\n vec2 local = (corner - 0.5) * (size + 2.0);\n v_local = local;\n v_half = half_;\n v_shape = vec2(a_i1.x, a_i1.y) * u_zoom * u_scale;\n v_fill = a_i2;\n v_border = a_i3;\n gl_Position = clip(device(a_i0.xy) + half_ + local);\n}\n";
49
+ /**
50
+ * A label's field says how far a pixel is from the glyphs' edge — in texels,
51
+ * `u_spread` of them across the byte range, and so in device pixels once
52
+ * scaled by how many a texel covers — and ink is that distance ramped across
53
+ * one device pixel, whatever size the label is drawn at.
54
+ */
55
+ export declare const BOX_FRAGMENT: string;
56
+ /** A flat triangle: the fill of a closed arrowhead. Its edge is
57
+ * antialiased by the hairline `./pack.ts` strokes round it. */
58
+ export declare const TRI_VERTEX = "precision highp float;\nuniform vec2 u_origin;\nuniform vec2 u_offset;\nuniform float u_scale;\nuniform float u_zoom;\nuniform vec2 u_viewport;\nvec2 device(vec2 logical) {\n return (logical * u_zoom + u_offset - u_origin) * u_scale;\n}\nvec4 clip(vec2 d) {\n return vec4(d.x / u_viewport.x * 2.0 - 1.0,\n 1.0 - d.y / u_viewport.y * 2.0, 0.0, 1.0);\n}\n\nattribute vec2 a_corner;\nattribute vec4 a_i0;\nvarying vec4 v_color;\nvoid main() {\n v_color = a_i0;\n gl_Position = clip(device(a_corner));\n}\n";
59
+ export declare const TRI_FRAGMENT = "precision mediump float;\nvarying vec4 v_color;\nvoid main() {\n gl_FragColor = v_color;\n}\n";
60
+ /**
61
+ * The grid, worked out per pixel: no tile, no pattern and no pile of runs —
62
+ * and none of the 2D path's integral-pitch restriction, because nothing here
63
+ * is a pixmap that has to repeat on whole pixels.
64
+ *
65
+ * Distances are to the nearest grid point in each axis, in logical pixels,
66
+ * and each mark's coverage ramps across one *device* pixel, so a dot is as
67
+ * sharp as the panel draws it.
68
+ */
69
+ export declare const GRID_VERTEX = "precision highp float;\nattribute vec2 a_corner;\nuniform vec2 u_viewport;\nvarying vec2 v_device;\nvoid main() {\n v_device = vec2(a_corner.x * u_viewport.x,\n (a_corner.y * 0.5 + 0.5) * u_viewport.y);\n gl_Position = vec4(a_corner.x * 2.0 - 1.0, -a_corner.y, 0.0, 1.0);\n}\n";
70
+ export declare const GRID_FRAGMENT = "precision highp float;\nuniform vec2 u_origin;\nuniform float u_scale;\n// the grid's origin (logical window pixels) and its pitch on screen\nuniform vec3 u_grid;\n// 0 dots, 1 lines, 2 cross; then a mark's size on screen (logical)\nuniform vec2 u_mark;\nuniform vec4 u_color;\nvarying vec2 v_device;\nfloat cover(float edge, float dist) {\n return clamp((edge - dist) * u_scale + 0.5, 0.0, 1.0);\n}\nvoid main() {\n vec2 logical = v_device / u_scale + u_origin;\n float step = u_grid.z;\n vec2 rel = logical - u_grid.xy;\n vec2 dist = abs(mod(rel + step * 0.5, step) - step * 0.5);\n float a;\n if (u_mark.x < 0.5) {\n float h = u_mark.y * 0.5;\n a = cover(h, dist.x) * cover(h, dist.y);\n } else if (u_mark.x < 1.5) {\n a = max(cover(0.5, dist.x), cover(0.5, dist.y));\n } else {\n float arm = u_mark.y;\n a = max(cover(0.5, dist.x) * cover(arm, dist.y),\n cover(0.5, dist.y) * cover(arm, dist.x));\n }\n if (a <= 0.0) discard;\n gl_FragColor = u_color * a;\n}\n";
71
+ export type GL = any;
72
+ /** A linked program and its uniform locations, looked up once. */
73
+ export interface Program {
74
+ program: unknown;
75
+ uniforms: Record<string, unknown>;
76
+ }
77
+ /** Compile, bind the shared locations, link, and look the uniforms up. */
78
+ export declare function linkProgram(gl: GL, vertex: string, fragment: string, uniforms: readonly string[]): Program;
79
+ //# sourceMappingURL=shaders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaders.d.ts","sourceRoot":"","sources":["../../../src/flow/gl/shaders.ts"],"names":[],"mappings":"AA4BA,0EAA0E;AAC1E,eAAO,MAAM,UAAU;aACrB,QAAQ,EAAE,CAAC;aACX,IAAI,EAAE,CAAC;aACP,IAAI,EAAE,CAAC;aACP,IAAI,EAAE,CAAC;aACP,IAAI,EAAE,CAAC;CACC,CAAC;AAiBX;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,w/CAoCvB,CAAC;AAEF,eAAO,MAAM,aAAa,syBAsBzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,UAAU,ygEAmDtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,QAqCxB,CAAC;AAEF;gEACgE;AAChE,eAAO,MAAM,UAAU,4gBAQtB,CAAC;AAEF,eAAO,MAAM,YAAY,mGAKxB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,4SASvB,CAAC;AAEF,eAAO,MAAM,aAAa,++BA+BzB,CAAC;AAGF,MAAM,MAAM,EAAE,GAAG,GAAG,CAAC;AAErB,kEAAkE;AAClE,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAcD,0EAA0E;AAC1E,wBAAgB,WAAW,CACzB,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,OAAO,CAsBT"}