@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,346 @@
1
+ // The GL renderer's four programs.
2
+ //
3
+ // GLSL ES 1.00, for the reason `src/maps/gl/shaders.ts` gives: it is the one
4
+ // dialect both direct backends compile, Apple's GL 4.1 core through
5
+ // ARB_ES2_compatibility and every Linux GLES driver natively.
6
+ //
7
+ // Every program shares one coordinate contract, and it is the whole of what
8
+ // the vertex shaders agree on. Positions arrive in the scene's units —
9
+ // **logical window pixels**, what `../scene.ts` builds in — and leave in
10
+ // clip space via device pixels:
11
+ //
12
+ // device = (logical * u_zoom + u_offset - u_origin) * u_scale
13
+ //
14
+ // where `u_origin` is where the surface's top-left sits in the window (the
15
+ // pane's content box, which the surface covers exactly) and `u_scale` is the
16
+ // display scale. `u_offset` is the pan: the graph's world is built at a
17
+ // pinned origin and moved here, so a pan is this one uniform and nothing
18
+ // else (`./renderer.ts`). `u_zoom` is the part of a zoom the world was not
19
+ // built at — 1 at rest, and while a zoom gesture moves, the view's zoom over
20
+ // the one the world on the GPU was built for, so a step of the gesture is a
21
+ // uniform too, and every length an instance carries is multiplied by it
22
+ // with its position. The overlay, pinned to the pane and built every frame,
23
+ // draws with no offset and a zoom of 1. So the one multiply `../draw.ts`
24
+ // does on the way to the 2D context happens here, per vertex, and every
25
+ // antialiasing ramp below is measured in device pixels — which is what makes
26
+ // a 1px line one pixel of coverage on any panel.
27
+ import { SDF_EDGE, SDF_INK_BIAS_PX } from '../../internal/sdf.js';
28
+ /** Attribute locations, shared so one quad buffer feeds every program. */
29
+ export const ATTRIBUTES = {
30
+ a_corner: 0,
31
+ a_i0: 1,
32
+ a_i1: 2,
33
+ a_i2: 3,
34
+ a_i3: 4,
35
+ };
36
+ const PRELUDE = `precision highp float;
37
+ uniform vec2 u_origin;
38
+ uniform vec2 u_offset;
39
+ uniform float u_scale;
40
+ uniform float u_zoom;
41
+ uniform vec2 u_viewport;
42
+ vec2 device(vec2 logical) {
43
+ return (logical * u_zoom + u_offset - u_origin) * u_scale;
44
+ }
45
+ vec4 clip(vec2 d) {
46
+ return vec4(d.x / u_viewport.x * 2.0 - 1.0,
47
+ 1.0 - d.y / u_viewport.y * 2.0, 0.0, 1.0);
48
+ }
49
+ `;
50
+ /**
51
+ * A line segment as a capsule: the quad round it, widened by half the line
52
+ * plus a pixel of fringe, shaded by distance to the segment.
53
+ *
54
+ * Clamping the pixel's position along the segment before measuring is what
55
+ * gives round caps and round joins for nothing — two consecutive capsules
56
+ * overlap in exactly the disc a round join is — and the same distance is the
57
+ * antialiasing ramp. The cost of that is a translucent line, which would lay
58
+ * its colour down twice where two capsules overlap; every line a graph draws
59
+ * by default is opaque, and `src/maps/gl/shaders.ts` has the stencil pass
60
+ * that fixes it if one ever is not.
61
+ *
62
+ * Instance: a_i0 = ends, a_i1 = half-width, distance along at the first end,
63
+ * dash on, dash off; a_i2 = dash offset, and 1 where the dash marches — by
64
+ * `u_phase`, the timer's, in logical pixels; a_i3 = colour.
65
+ */
66
+ export const LINE_VERTEX = `${PRELUDE}
67
+ uniform float u_phase;
68
+ attribute vec2 a_corner;
69
+ attribute vec4 a_i0;
70
+ attribute vec4 a_i1;
71
+ attribute vec4 a_i2;
72
+ attribute vec4 a_i3;
73
+ varying vec2 v_local;
74
+ varying float v_len;
75
+ varying float v_half;
76
+ varying float v_along;
77
+ varying vec3 v_dash;
78
+ varying vec4 v_color;
79
+ void main() {
80
+ vec2 a = device(a_i0.xy);
81
+ vec2 b = device(a_i0.zw);
82
+ vec2 d = b - a;
83
+ float len = length(d);
84
+ vec2 t = len > 0.0001 ? d / len : vec2(1.0, 0.0);
85
+ vec2 n = vec2(-t.y, t.x);
86
+ float half_ = a_i1.x * u_zoom * u_scale;
87
+ float e = half_ + 1.0;
88
+ float along = mix(-e, len + e, a_corner.x);
89
+ float across = a_corner.y * e;
90
+ v_local = vec2(along, across);
91
+ v_len = len;
92
+ v_half = half_;
93
+ v_along = a_i1.y * u_zoom * u_scale + along;
94
+ // a marching dash takes the timer's phase from a uniform, so a tick moves
95
+ // every dash on the GPU without a byte uploaded — and the phase is the
96
+ // view's, already at its zoom, where the pattern is the world's
97
+ v_dash = (vec3(a_i1.z, a_i1.w, a_i2.x) * u_zoom +
98
+ vec3(0.0, 0.0, a_i2.y * u_phase)) * u_scale;
99
+ v_color = a_i3;
100
+ gl_Position = clip(a + t * along + n * across);
101
+ }
102
+ `;
103
+ export const LINE_FRAGMENT = `precision highp float;
104
+ varying vec2 v_local;
105
+ varying float v_len;
106
+ varying float v_half;
107
+ varying float v_along;
108
+ varying vec3 v_dash;
109
+ varying vec4 v_color;
110
+ void main() {
111
+ float x = clamp(v_local.x, 0.0, v_len);
112
+ float dist = length(vec2(v_local.x - x, v_local.y));
113
+ float alpha = clamp(v_half - dist + 0.5, 0.0, 1.0);
114
+ float period = v_dash.x + v_dash.y;
115
+ if (period > 0.0) {
116
+ // Where in the pattern this pixel is, the canvas way: the offset shifts
117
+ // the pattern's start along the line. Covered by how far the pixel is
118
+ // inside the nearer end of its dash, so a dash's ends antialias too.
119
+ float m = mod(v_along + v_dash.z, period);
120
+ alpha *= clamp(min(m, v_dash.x - m) + 0.5, 0.0, 1.0);
121
+ }
122
+ if (alpha <= 0.0) discard;
123
+ gl_FragColor = v_color * alpha;
124
+ }
125
+ `;
126
+ /**
127
+ * A rounded box: fill, border and antialiased edge out of one distance.
128
+ *
129
+ * The 2D painter fills the whole box and strokes a border *inset* by half
130
+ * its pen (`../draw.ts`), so the ink band runs from the edge inward by the
131
+ * pen's width with the fill beneath it. This composites the same way — the
132
+ * border *over* the fill across the band, not in place of it — which only
133
+ * differs when the border is translucent, and a hovered card's is.
134
+ *
135
+ * A disc is a box whose side is twice its corner radius, which is why
136
+ * handles are drawn here too — and a label is a box that samples its
137
+ * distance field in the atlas (`./text.ts`) instead, flagged in `a_i1.z`,
138
+ * which is what keeps every label in the box stream at exactly the place in
139
+ * the order the 2D painter draws it.
140
+ *
141
+ * Instance: a_i0 = x, y, width, height; a_i1 = corner radius, border width;
142
+ * a_i2 = fill; a_i3 = border colour. For a label: a_i0 = the text's corner
143
+ * and the quad's size; a_i1 = the quad's margin before that corner, its
144
+ * field's page, 1, and the logical pixels a field texel covers; a_i2 = ink; a_i3 = its rect
145
+ * in the atlas.
146
+ */
147
+ export const BOX_VERTEX = `${PRELUDE}
148
+ attribute vec2 a_corner;
149
+ attribute vec4 a_i0;
150
+ attribute vec4 a_i1;
151
+ attribute vec4 a_i2;
152
+ attribute vec4 a_i3;
153
+ varying vec2 v_local;
154
+ varying vec2 v_half;
155
+ varying vec2 v_shape;
156
+ varying vec4 v_fill;
157
+ varying vec4 v_border;
158
+ varying vec2 v_uv;
159
+ varying float v_text;
160
+ void main() {
161
+ vec2 corner = vec2(a_corner.x, a_corner.y * 0.5 + 0.5);
162
+ v_text = a_i1.z;
163
+ if (a_i1.z > 1.5) {
164
+ // a label whose field is still being set: nothing, until it lands
165
+ gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
166
+ return;
167
+ }
168
+ if (a_i1.z > 0.5) {
169
+ // A label: its field, scaled to the size it is drawn at. The text's
170
+ // corner goes on the device grid *after* the pan's offset, which is
171
+ // where the grid is — the 2D painter rounds the same corner — and the
172
+ // quad reaches its margin before it.
173
+ float k = u_zoom * u_scale;
174
+ vec2 origin = floor(device(a_i0.xy) + 0.5) - a_i1.x * k;
175
+ v_uv = mix(a_i3.xy, a_i3.zw, corner);
176
+ v_fill = a_i2;
177
+ v_local = vec2(0.0);
178
+ v_half = vec2(0.0);
179
+ // device pixels a field texel covers, for the fragment's ramp, and the
180
+ // page its field is on
181
+ v_shape = vec2(a_i1.w * k, a_i1.y);
182
+ v_border = vec4(0.0);
183
+ gl_Position = clip(origin + corner * a_i0.zw * k);
184
+ return;
185
+ }
186
+ v_uv = vec2(0.0);
187
+ vec2 size = a_i0.zw * u_zoom * u_scale;
188
+ vec2 half_ = size * 0.5;
189
+ // a pixel of fringe all round, for the antialiased edge to fade into
190
+ vec2 local = (corner - 0.5) * (size + 2.0);
191
+ v_local = local;
192
+ v_half = half_;
193
+ v_shape = vec2(a_i1.x, a_i1.y) * u_zoom * u_scale;
194
+ v_fill = a_i2;
195
+ v_border = a_i3;
196
+ gl_Position = clip(device(a_i0.xy) + half_ + local);
197
+ }
198
+ `;
199
+ /**
200
+ * A label's field says how far a pixel is from the glyphs' edge — in texels,
201
+ * `u_spread` of them across the byte range, and so in device pixels once
202
+ * scaled by how many a texel covers — and ink is that distance ramped across
203
+ * one device pixel, whatever size the label is drawn at.
204
+ */
205
+ export const BOX_FRAGMENT = `precision highp float;
206
+ uniform sampler2D u_atlas;
207
+ uniform float u_spread;
208
+ varying vec2 v_local;
209
+ varying vec2 v_half;
210
+ varying vec2 v_shape;
211
+ varying vec4 v_fill;
212
+ varying vec4 v_border;
213
+ varying vec2 v_uv;
214
+ varying float v_text;
215
+ void main() {
216
+ if (v_text > 0.5) {
217
+ // Four pages, one a channel: alpha is page 0, red, green and blue
218
+ // pages 1 to 3 (CHANNELS in ./text.ts).
219
+ vec4 pages = texture2D(u_atlas, v_uv);
220
+ vec4 pick = 1.0 - min(abs(vec4(v_shape.y) - vec4(1.0, 2.0, 3.0, 0.0)), 1.0);
221
+ float field = dot(pages, pick);
222
+ // device pixels past the glyphs' edge: positive outside, negative in
223
+ float d = (${SDF_EDGE.toFixed(4)} - field) * u_spread * v_shape.x;
224
+ float ink = clamp(0.5 + ${SDF_INK_BIAS_PX.toFixed(2)} - d, 0.0, 1.0);
225
+ if (ink <= 0.0) discard;
226
+ gl_FragColor = v_fill * ink;
227
+ return;
228
+ }
229
+ float r = min(v_shape.x, min(v_half.x, v_half.y));
230
+ vec2 q = abs(v_local) - (v_half - r);
231
+ float d = length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - r;
232
+ float outside = clamp(0.5 - d, 0.0, 1.0);
233
+ vec4 color = v_fill * outside;
234
+ if (v_shape.y > 0.0) {
235
+ float inner = clamp(0.5 - (d + v_shape.y), 0.0, 1.0);
236
+ float band = outside - inner;
237
+ color = v_border * band + color * (1.0 - v_border.a * band);
238
+ }
239
+ if (color.a <= 0.0) discard;
240
+ gl_FragColor = color;
241
+ }
242
+ `;
243
+ /** A flat triangle: the fill of a closed arrowhead. Its edge is
244
+ * antialiased by the hairline `./pack.ts` strokes round it. */
245
+ export const TRI_VERTEX = `${PRELUDE}
246
+ attribute vec2 a_corner;
247
+ attribute vec4 a_i0;
248
+ varying vec4 v_color;
249
+ void main() {
250
+ v_color = a_i0;
251
+ gl_Position = clip(device(a_corner));
252
+ }
253
+ `;
254
+ export const TRI_FRAGMENT = `precision mediump float;
255
+ varying vec4 v_color;
256
+ void main() {
257
+ gl_FragColor = v_color;
258
+ }
259
+ `;
260
+ /**
261
+ * The grid, worked out per pixel: no tile, no pattern and no pile of runs —
262
+ * and none of the 2D path's integral-pitch restriction, because nothing here
263
+ * is a pixmap that has to repeat on whole pixels.
264
+ *
265
+ * Distances are to the nearest grid point in each axis, in logical pixels,
266
+ * and each mark's coverage ramps across one *device* pixel, so a dot is as
267
+ * sharp as the panel draws it.
268
+ */
269
+ export const GRID_VERTEX = `precision highp float;
270
+ attribute vec2 a_corner;
271
+ uniform vec2 u_viewport;
272
+ varying vec2 v_device;
273
+ void main() {
274
+ v_device = vec2(a_corner.x * u_viewport.x,
275
+ (a_corner.y * 0.5 + 0.5) * u_viewport.y);
276
+ gl_Position = vec4(a_corner.x * 2.0 - 1.0, -a_corner.y, 0.0, 1.0);
277
+ }
278
+ `;
279
+ export const GRID_FRAGMENT = `precision highp float;
280
+ uniform vec2 u_origin;
281
+ uniform float u_scale;
282
+ // the grid's origin (logical window pixels) and its pitch on screen
283
+ uniform vec3 u_grid;
284
+ // 0 dots, 1 lines, 2 cross; then a mark's size on screen (logical)
285
+ uniform vec2 u_mark;
286
+ uniform vec4 u_color;
287
+ varying vec2 v_device;
288
+ float cover(float edge, float dist) {
289
+ return clamp((edge - dist) * u_scale + 0.5, 0.0, 1.0);
290
+ }
291
+ void main() {
292
+ vec2 logical = v_device / u_scale + u_origin;
293
+ float step = u_grid.z;
294
+ vec2 rel = logical - u_grid.xy;
295
+ vec2 dist = abs(mod(rel + step * 0.5, step) - step * 0.5);
296
+ float a;
297
+ if (u_mark.x < 0.5) {
298
+ float h = u_mark.y * 0.5;
299
+ a = cover(h, dist.x) * cover(h, dist.y);
300
+ } else if (u_mark.x < 1.5) {
301
+ a = max(cover(0.5, dist.x), cover(0.5, dist.y));
302
+ } else {
303
+ float arm = u_mark.y;
304
+ a = max(cover(0.5, dist.x) * cover(arm, dist.y),
305
+ cover(0.5, dist.y) * cover(arm, dist.x));
306
+ }
307
+ if (a <= 0.0) discard;
308
+ gl_FragColor = u_color * a;
309
+ }
310
+ `;
311
+ function compile(gl, type, source) {
312
+ const shader = gl.createShader(type);
313
+ gl.shaderSource(shader, source);
314
+ gl.compileShader(shader);
315
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
316
+ const log = gl.getShaderInfoLog(shader);
317
+ gl.deleteShader(shader);
318
+ throw new Error(`@react-x11/components flow/gl: shader failed: ${log}`);
319
+ }
320
+ return shader;
321
+ }
322
+ /** Compile, bind the shared locations, link, and look the uniforms up. */
323
+ export function linkProgram(gl, vertex, fragment, uniforms) {
324
+ const program = gl.createProgram();
325
+ const vs = compile(gl, gl.VERTEX_SHADER, vertex);
326
+ const fs = compile(gl, gl.FRAGMENT_SHADER, fragment);
327
+ gl.attachShader(program, vs);
328
+ gl.attachShader(program, fs);
329
+ for (const [name, location] of Object.entries(ATTRIBUTES)) {
330
+ gl.bindAttribLocation(program, location, name);
331
+ }
332
+ gl.linkProgram(program);
333
+ gl.deleteShader(vs);
334
+ gl.deleteShader(fs);
335
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
336
+ const log = gl.getProgramInfoLog(program);
337
+ gl.deleteProgram(program);
338
+ throw new Error(`@react-x11/components flow/gl: link failed: ${log}`);
339
+ }
340
+ const found = {};
341
+ for (const name of uniforms) {
342
+ found[name] = gl.getUniformLocation(program, name);
343
+ }
344
+ return { program, uniforms: found };
345
+ }
346
+ //# sourceMappingURL=shaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaders.js","sourceRoot":"","sources":["../../../src/flow/gl/shaders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ import type { PainterOptions } from '../draw.js';
2
+ import type { SceneText } from '../scene.js';
3
+ import type { FlowRect } from '../types.js';
4
+ /**
5
+ * A label's quad and where its field sits in the atlas, all at the scene's
6
+ * zoom. `x`/`y` are the **text's** top-left, logical pixels in the scene's
7
+ * space — what the shader puts on the device grid, as the 2D painter puts
8
+ * the corner it draws a layout from — and the quad starts `margin` before
9
+ * it in both axes and is `w` by `h`. `texel` is the logical pixels one texel
10
+ * of the field covers; `u0`..`v1` are texture coordinates.
11
+ *
12
+ * A label whose field is still being set is a quad too, `ready` false and
13
+ * no place in the atlas: its size is known from the measurement before its
14
+ * field exists, so it is packed where it will be drawn, and its field is
15
+ * written in when it lands (`landed`) — without packing the world again.
16
+ */
17
+ export interface GlyphQuad {
18
+ /** The field it draws from: its weight and the string, as cut. */
19
+ key: string;
20
+ ready: boolean;
21
+ x: number;
22
+ y: number;
23
+ w: number;
24
+ h: number;
25
+ margin: number;
26
+ texel: number;
27
+ /** The page its field is on: which channel of the texture holds it. */
28
+ page: number;
29
+ /** Its field's placement (`LabelAtlas.slotOf`); 0 when not ready. */
30
+ slot: number;
31
+ u0: number;
32
+ v0: number;
33
+ u1: number;
34
+ v1: number;
35
+ }
36
+ /** What the atlas needs of the pane: its app, for the staging surface, and
37
+ * the options its 2D painter measures with. */
38
+ export interface TextSource {
39
+ app: unknown;
40
+ options: PainterOptions;
41
+ }
42
+ /** The atlas texture's side, texels: 16 MB of RGBA, four pages of fields —
43
+ * some 8,000 titles at 1x and 2,600 at 2x. */
44
+ export declare const ATLAS_SIZE = 2048;
45
+ /**
46
+ * Texels the drawn quad leaves off each side of a field: a bilinear sample
47
+ * at its edge then stays inside the field's own margin, never reaching a
48
+ * neighbour's.
49
+ */
50
+ export declare const QUAD_INSET = 1;
51
+ /** The device size a display scale sets fields at: 16 at 1x, 32 at 2x. A
52
+ * card's title is 13 at zoom 1, so a field is mostly drawn at or under the
53
+ * size it was set at, where it is sharpest, and at twice it at the
54
+ * default `maxZoom` of 2.5. */
55
+ export declare const fieldBase: (scale: number) => number;
56
+ /**
57
+ * A field's margin and spread at a base size, texels. A graph's labels have
58
+ * no halo, so the field only has to reach as far as the antialiasing ramp
59
+ * of the smallest label drawn: a handle's 10 at `LABEL_ZOOM`, under a
60
+ * third of the base, is a ramp of 2.3 texels, and a sixth of the base
61
+ * reaches three. A quarter, which the first cut used, drew the same pixels
62
+ * to within 5/255 from fields 12% larger, whose every texel was made.
63
+ */
64
+ export declare const fieldPad: (base: number) => number;
65
+ export declare class LabelAtlas {
66
+ private readonly source;
67
+ /** Measured and shaped in white, at device size — the scale is 1 here,
68
+ * and a size is the base in device pixels — and cached apart from the
69
+ * pane's own text: nothing measured here is a size the pane draws. */
70
+ private readonly white;
71
+ /** The device size every field is set at: a label drawn at `size`
72
+ * scales its field by `size / base`. */
73
+ readonly base: number;
74
+ /** The margin set round every field, texels, which is also the distance
75
+ * its values span — the shader's `u_spread`. */
76
+ readonly pad: number;
77
+ private readonly entries;
78
+ /** Wanted and not yet set: key → what to set it from, and where the
79
+ * label nearest the view that asks for it is. */
80
+ private readonly missing;
81
+ /**
82
+ * Wanted, and waiting for room: the atlas is full of fields at least as
83
+ * near the view as these, so nothing is set for them until the view
84
+ * moves (`setView`) or a pack starts. Every key here is in `missing` too;
85
+ * what `wanting` counts is the rest.
86
+ */
87
+ private readonly stalled;
88
+ /**
89
+ * Requests measured: request → the string as cut. Measuring is what a
90
+ * label's first appearance costs the frame that packs it — 60-80 µs a
91
+ * string, on DirectWrite and on ntk alike, so a view of three hundred new
92
+ * labels was one frame 20 ms long before any of them could arrive. A pack
93
+ * measures for `shapeBudgetMs` and leaves the rest to the slices between
94
+ * frames; the ones it measured no pack measures again.
95
+ */
96
+ private readonly resolved;
97
+ /**
98
+ * What the pack under way has spent measuring, and how many strings it
99
+ * has measured — at least one a pack. Measuring alone is charged: a pack
100
+ * writes every edge before its first label, and a deadline from its start
101
+ * put off, after a zoom, labels whose cut had moved a fraction of a pixel
102
+ * and whose every measurement was cached.
103
+ */
104
+ private spent;
105
+ private measured;
106
+ /** Read back and waiting for their fields, oldest first — as wanted as
107
+ * anything in `missing`, so a pack does not ask for them again. */
108
+ private fieldQueue;
109
+ private readonly queued;
110
+ /** The pages' shelves, and how far down each page they reach. */
111
+ private shelves;
112
+ private readonly tops;
113
+ /** Pages in the texture: one per channel, alpha first. */
114
+ private readonly pages;
115
+ /**
116
+ * The whole texture, four bytes a texel, made when the first field goes
117
+ * on a page past the first. An upload writes every channel of the rect
118
+ * it covers, so from then on a field is uploaded from here, with the
119
+ * fields of the other pages under it. An atlas that never fills its first
120
+ * page never makes it: 16 MB, paid only past the old limit.
121
+ */
122
+ private mirror;
123
+ /** The last placement found no room, and nothing has been freed since:
124
+ * a want that cannot evict is stalled before it is shaped. */
125
+ private full;
126
+ /** Fields that may be dropped for a nearer one, farthest from the view
127
+ * first — made when first needed in a slice, and consumed in order. */
128
+ private victims;
129
+ private victimAt;
130
+ /** Placements, counted: a field's `slot` changes whenever it lands, so a
131
+ * box drawn from an old one is found by comparing the two. */
132
+ private nextSlot;
133
+ private staging;
134
+ private stagingCtx;
135
+ private busy;
136
+ /** Whether the layouts answer their own coverage (react-x11#673): unknown
137
+ * until the first string asks, and false for good once one does not. */
138
+ private coverage;
139
+ /** Bumped whenever a field lands or is dropped — the renderer writes in
140
+ * what landed, and uploads, when it moves. */
141
+ generation: number;
142
+ /** Bumped whenever a field is dropped: the renderer finds the boxes that
143
+ * drew from it (`slotOf`) and draws them as nothing until it is back. */
144
+ moves: number;
145
+ /** Fields set are uploaded when the renderer next binds the atlas. */
146
+ private readonly pending;
147
+ /** Whether new strings may be set: false while the zoom is moving. */
148
+ admit: boolean;
149
+ /** Milliseconds of fields one slice may make, past the first field. */
150
+ fieldBudgetMs: number;
151
+ /** Milliseconds of measuring new strings a world pack may spend. */
152
+ shapeBudgetMs: number;
153
+ private texture;
154
+ private textureGeneration;
155
+ /** A field's rect as uploaded: widened to RGBA — the shader reads one
156
+ * channel, and a one-channel texture is a format GLES 2 and a core
157
+ * profile do not share. Grown to the largest field. */
158
+ private scratch;
159
+ /** Counts world packs; an entry stamped with the current one is drawn. */
160
+ private epoch;
161
+ /** The texture's side, texels. */
162
+ private readonly side;
163
+ /** `side` and `pages` are for tests, which fill an atlas without setting
164
+ * thousands of labels. */
165
+ constructor(source: TextSource, side?: number, pages?: number);
166
+ /**
167
+ * A world pack is starting: the labels it asks for are the ones drawn
168
+ * until the next — and **all** that is wanted. What earlier packs asked
169
+ * for and nothing has set is forgotten here: the strings a pan went past
170
+ * are not worth a batch once it has.
171
+ */
172
+ beginPack(): void;
173
+ /**
174
+ * The view's centre, in the world's coordinates. What is wanted is set
175
+ * nearest it first: on a first appearance the labels arrive over a
176
+ * hundred milliseconds or more, and the ones in the middle of the view
177
+ * are the ones being read.
178
+ */
179
+ focus: {
180
+ x: number;
181
+ y: number;
182
+ } | null;
183
+ /** The view, in the world's coordinates — the surface says where each
184
+ * frame. Null draws everything as if it were on screen. */
185
+ private view;
186
+ /**
187
+ * Where the view is now. A field on screen is never dropped for another;
188
+ * one off it is dropped for a label nearer the view, and a move of the
189
+ * view is what can make a stalled label nearer than one that is set.
190
+ */
191
+ setView(view: FlowRect | null): void;
192
+ /** How far a rect is from the view, in the world's units: 0 on it. */
193
+ private far;
194
+ /** How near a label is, for ordering what is wanted: from the view,
195
+ * then from its middle. */
196
+ private nearness;
197
+ /** A want moved to the label asking for it nearest the view. */
198
+ private nearer;
199
+ /**
200
+ * A label's quad, or null when there is nothing to draw it from yet —
201
+ * which asks for its field.
202
+ */
203
+ quad(t: SceneText, lifted?: boolean): GlyphQuad | null;
204
+ /**
205
+ * The quad a label packed before its field existed draws from, now that
206
+ * it can be drawn — null until then. One the pack did not measure (a `?`
207
+ * key) is placed now, from the string its request resolved to: the pack
208
+ * gave it a box of no size, and this is its whole quad.
209
+ */
210
+ landing(key: string, t: SceneText, lifted?: boolean): GlyphQuad | null;
211
+ /** The placement a field is at now — -1 when it is not set — for a box
212
+ * to tell whether the field it was drawn from is still there. */
213
+ slotOf(key: string): number;
214
+ /** A field a drawn label lost, wanted again from where that label is. */
215
+ want(key: string, t: SceneText): void;
216
+ /** A string cut to the width it fits, measured at the base size. */
217
+ private cut;
218
+ private remember;
219
+ /** No longer wanted: set, or given up on. */
220
+ private unwant;
221
+ /**
222
+ * A request the pack left unmeasured, measured: its string cut and
223
+ * shaped, and wanted under its field's key from then on. Null when that
224
+ * field is set, being set or waiting for room already — the request is
225
+ * answered, and a frame writes its labels in.
226
+ */
227
+ private resolve;
228
+ /** What is wanted and not waiting for room, nearest the view first. */
229
+ private wanted;
230
+ /** Whether any label drawn so far is still waiting for a field that can
231
+ * be set — not counting those waiting for room. */
232
+ get wanting(): boolean;
233
+ /**
234
+ * Whether a want this far from the view is worth shaping: not when the
235
+ * atlas is full and holds nothing farther to drop for it.
236
+ */
237
+ private hopeful;
238
+ /**
239
+ * One slice of setting what was asked for: fields for what was read back
240
+ * already, in a task of their own, or else one batch drawn and read back
241
+ * and the first of its fields. Resolves true when any field landed — the
242
+ * caller asks for a frame then, which draws what landed — and does
243
+ * nothing while one is already in flight,
244
+ * while the zoom is moving, or with nothing to set.
245
+ */
246
+ pump(): Promise<boolean>;
247
+ /**
248
+ * One batch drawn onto the staging surface and read back, and the first
249
+ * of its fields: the way a string is set on an engine whose layouts do not
250
+ * answer their own coverage.
251
+ */
252
+ private readBack;
253
+ /**
254
+ * One slice of strings set from their layouts' own coverage, where the
255
+ * engine answers it: no staging surface and no readback, so a string
256
+ * shaped this slice is a field this slice, until the budget is spent — at
257
+ * least one. Null when the layouts cannot answer, and the batches read
258
+ * back instead from then on.
259
+ */
260
+ private coverageSlice;
261
+ /**
262
+ * Fields for what was read back, oldest first, until the slice's budget
263
+ * is spent — at least one. A field is 0.1-0.4 ms (more texels at 2x);
264
+ * a batch's worth made as it landed was a frame held back.
265
+ */
266
+ private makeFields;
267
+ /**
268
+ * Room for a field of a label this far from the view: free room, or room
269
+ * made by dropping fields — first the ones no pack draws, then the ones
270
+ * drawn farthest from the view, so long as they are farther than it.
271
+ * Nothing on screen is dropped for anything. Null when there is none, and
272
+ * the atlas is `full` until something is freed.
273
+ */
274
+ private room;
275
+ /**
276
+ * Room made by sliding a shelf's fields together over its gaps: fields
277
+ * of one height are not one width — `node 7` and `node 1234` — and a
278
+ * narrow one dropped leaves a gap a wide one does not fit, so gaps apart
279
+ * are room nothing uses. The fields moved are new placements: a box
280
+ * drawn from one is written again from where it is now, in the same
281
+ * frame (`slotOf`).
282
+ */
283
+ private squeeze;
284
+ /** The next field that may go for a label this far from the view, or
285
+ * null — skipping the ones already gone, or set again since. */
286
+ private victim;
287
+ /** How far from the view the nearest label drawn from a field is. */
288
+ private reach;
289
+ /** A field into the place made for it — drawn, until a pack says where,
290
+ * where the label that asked for it is. */
291
+ private put;
292
+ /** A field written into its channel of the mirror. */
293
+ private paint;
294
+ /** A field dropped, and its room given back to its shelf. */
295
+ private evict;
296
+ /**
297
+ * Shelves by height, in steps: a label's field is as tall as the base
298
+ * size's line and the margin, so nearly every field is one height, and a
299
+ * field dropped leaves a gap the next one fits. The first fit in a gap,
300
+ * then the end of a shelf, then a new shelf — on the first page with
301
+ * room, alpha first.
302
+ */
303
+ private allot;
304
+ /** A field's room back to its shelf, merged with the gaps beside it; a
305
+ * shelf left empty at the bottom of its page goes back to the page. */
306
+ private free;
307
+ /**
308
+ * The atlas texture, bound to unit 0, with every field set since the last
309
+ * call uploaded into it. Made on first use — and made again for a new
310
+ * context, into which every field is uploaded again from the copies kept
311
+ * here.
312
+ */
313
+ bind(gl: GLLike, fresh: boolean): void;
314
+ dispose(gl?: GLLike): void;
315
+ }
316
+ type GLLike = any;
317
+ export {};
318
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/flow/gl/text.ts"],"names":[],"mappings":"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"}