@react-x11/components 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) hide show
  1. package/README.md +10 -4
  2. package/dist/charts/node.d.ts +11 -1
  3. package/dist/charts/node.d.ts.map +1 -1
  4. package/dist/charts/node.js +44 -14
  5. package/dist/charts/node.js.map +1 -1
  6. package/dist/charts/render.d.ts +12 -3
  7. package/dist/charts/render.d.ts.map +1 -1
  8. package/dist/charts/render.js +94 -25
  9. package/dist/charts/render.js.map +1 -1
  10. package/dist/code/index.d.ts.map +1 -1
  11. package/dist/code/index.js +27 -24
  12. package/dist/code/index.js.map +1 -1
  13. package/dist/code-editor/completion.d.ts.map +1 -1
  14. package/dist/code-editor/completion.js +3 -2
  15. package/dist/code-editor/completion.js.map +1 -1
  16. package/dist/code-editor/index.d.ts.map +1 -1
  17. package/dist/code-editor/index.js +19 -0
  18. package/dist/code-editor/index.js.map +1 -1
  19. package/dist/code-editor/node.d.ts +177 -7
  20. package/dist/code-editor/node.d.ts.map +1 -1
  21. package/dist/code-editor/node.js +1329 -164
  22. package/dist/code-editor/node.js.map +1 -1
  23. package/dist/code-language/index.d.ts +1 -1
  24. package/dist/code-language/index.d.ts.map +1 -1
  25. package/dist/code-language/index.js +1 -1
  26. package/dist/code-language/index.js.map +1 -1
  27. package/dist/code-language/languages/glsl.d.ts.map +1 -1
  28. package/dist/code-language/languages/glsl.js +10 -2
  29. package/dist/code-language/languages/glsl.js.map +1 -1
  30. package/dist/code-language/languages/javascript.d.ts.map +1 -1
  31. package/dist/code-language/languages/javascript.js +18 -3
  32. package/dist/code-language/languages/javascript.js.map +1 -1
  33. package/dist/code-language/languages/json.d.ts.map +1 -1
  34. package/dist/code-language/languages/json.js +10 -2
  35. package/dist/code-language/languages/json.js.map +1 -1
  36. package/dist/code-language/languages/shell.d.ts.map +1 -1
  37. package/dist/code-language/languages/shell.js +10 -2
  38. package/dist/code-language/languages/shell.js.map +1 -1
  39. package/dist/code-language/languages/sql.d.ts.map +1 -1
  40. package/dist/code-language/languages/sql.js +20 -2
  41. package/dist/code-language/languages/sql.js.map +1 -1
  42. package/dist/code-language/runs.d.ts +31 -0
  43. package/dist/code-language/runs.d.ts.map +1 -1
  44. package/dist/code-language/runs.js +105 -0
  45. package/dist/code-language/runs.js.map +1 -1
  46. package/dist/code-language/stream.d.ts +22 -0
  47. package/dist/code-language/stream.d.ts.map +1 -1
  48. package/dist/code-language/stream.js +259 -9
  49. package/dist/code-language/stream.js.map +1 -1
  50. package/dist/code-language/types.d.ts +5 -4
  51. package/dist/code-language/types.d.ts.map +1 -1
  52. package/dist/codeblock/index.d.ts +26 -2
  53. package/dist/codeblock/index.d.ts.map +1 -1
  54. package/dist/codeblock/index.js +57 -4
  55. package/dist/codeblock/index.js.map +1 -1
  56. package/dist/flow/draw.d.ts +50 -0
  57. package/dist/flow/draw.d.ts.map +1 -1
  58. package/dist/flow/draw.js +132 -33
  59. package/dist/flow/draw.js.map +1 -1
  60. package/dist/flow/gl/color.d.ts +13 -0
  61. package/dist/flow/gl/color.d.ts.map +1 -0
  62. package/dist/flow/gl/color.js +82 -0
  63. package/dist/flow/gl/color.js.map +1 -0
  64. package/dist/flow/gl/index.d.ts +60 -0
  65. package/dist/flow/gl/index.d.ts.map +1 -0
  66. package/dist/flow/gl/index.js +283 -0
  67. package/dist/flow/gl/index.js.map +1 -0
  68. package/dist/flow/gl/pack.d.ts +133 -0
  69. package/dist/flow/gl/pack.d.ts.map +1 -0
  70. package/dist/flow/gl/pack.js +408 -0
  71. package/dist/flow/gl/pack.js.map +1 -0
  72. package/dist/flow/gl/renderer.d.ts +95 -0
  73. package/dist/flow/gl/renderer.d.ts.map +1 -0
  74. package/dist/flow/gl/renderer.js +459 -0
  75. package/dist/flow/gl/renderer.js.map +1 -0
  76. package/dist/flow/gl/shaders.d.ts +79 -0
  77. package/dist/flow/gl/shaders.d.ts.map +1 -0
  78. package/dist/flow/gl/shaders.js +346 -0
  79. package/dist/flow/gl/shaders.js.map +1 -0
  80. package/dist/flow/gl/text.d.ts +318 -0
  81. package/dist/flow/gl/text.d.ts.map +1 -0
  82. package/dist/flow/gl/text.js +1103 -0
  83. package/dist/flow/gl/text.js.map +1 -0
  84. package/dist/flow/index.d.ts +1 -1
  85. package/dist/flow/index.d.ts.map +1 -1
  86. package/dist/flow/index.js +619 -64
  87. package/dist/flow/index.js.map +1 -1
  88. package/dist/flow/node.d.ts +621 -72
  89. package/dist/flow/node.d.ts.map +1 -1
  90. package/dist/flow/node.js +2253 -1018
  91. package/dist/flow/node.js.map +1 -1
  92. package/dist/flow/paint.d.ts +35 -0
  93. package/dist/flow/paint.d.ts.map +1 -0
  94. package/dist/flow/paint.js +393 -0
  95. package/dist/flow/paint.js.map +1 -0
  96. package/dist/flow/paths.d.ts +14 -0
  97. package/dist/flow/paths.d.ts.map +1 -1
  98. package/dist/flow/paths.js +45 -19
  99. package/dist/flow/paths.js.map +1 -1
  100. package/dist/flow/scene.d.ts +584 -0
  101. package/dist/flow/scene.d.ts.map +1 -0
  102. package/dist/flow/scene.js +1453 -0
  103. package/dist/flow/scene.js.map +1 -0
  104. package/dist/flow/types.d.ts +111 -1
  105. package/dist/flow/types.d.ts.map +1 -1
  106. package/dist/html/controls.d.ts +28 -0
  107. package/dist/html/controls.d.ts.map +1 -1
  108. package/dist/html/controls.js +52 -2
  109. package/dist/html/controls.js.map +1 -1
  110. package/dist/html/css/calc.d.ts +14 -0
  111. package/dist/html/css/calc.d.ts.map +1 -0
  112. package/dist/html/css/calc.js +344 -0
  113. package/dist/html/css/calc.js.map +1 -0
  114. package/dist/html/css/cascade.d.ts +262 -6
  115. package/dist/html/css/cascade.d.ts.map +1 -1
  116. package/dist/html/css/cascade.js +1373 -67
  117. package/dist/html/css/cascade.js.map +1 -1
  118. package/dist/html/css/color.d.ts +23 -0
  119. package/dist/html/css/color.d.ts.map +1 -0
  120. package/dist/html/css/color.js +740 -0
  121. package/dist/html/css/color.js.map +1 -0
  122. package/dist/html/css/content.d.ts +92 -0
  123. package/dist/html/css/content.d.ts.map +1 -0
  124. package/dist/html/css/content.js +388 -0
  125. package/dist/html/css/content.js.map +1 -0
  126. package/dist/html/css/counter-styles.d.ts +76 -0
  127. package/dist/html/css/counter-styles.d.ts.map +1 -0
  128. package/dist/html/css/counter-styles.js +893 -0
  129. package/dist/html/css/counter-styles.js.map +1 -0
  130. package/dist/html/css/decode.d.ts +12 -0
  131. package/dist/html/css/decode.d.ts.map +1 -0
  132. package/dist/html/css/decode.js +116 -0
  133. package/dist/html/css/decode.js.map +1 -0
  134. package/dist/html/css/parse.d.ts +110 -10
  135. package/dist/html/css/parse.d.ts.map +1 -1
  136. package/dist/html/css/parse.js +1473 -180
  137. package/dist/html/css/parse.js.map +1 -1
  138. package/dist/html/css/style.d.ts +501 -15
  139. package/dist/html/css/style.d.ts.map +1 -1
  140. package/dist/html/css/style.js +3729 -206
  141. package/dist/html/css/style.js.map +1 -1
  142. package/dist/html/css/ua.d.ts.map +1 -1
  143. package/dist/html/css/ua.js +65 -16
  144. package/dist/html/css/ua.js.map +1 -1
  145. package/dist/html/css/values.d.ts +37 -3
  146. package/dist/html/css/values.d.ts.map +1 -1
  147. package/dist/html/css/values.js +122 -48
  148. package/dist/html/css/values.js.map +1 -1
  149. package/dist/html/css/vars.d.ts +52 -0
  150. package/dist/html/css/vars.d.ts.map +1 -0
  151. package/dist/html/css/vars.js +358 -0
  152. package/dist/html/css/vars.js.map +1 -0
  153. package/dist/html/dom.d.ts +30 -4
  154. package/dist/html/dom.d.ts.map +1 -1
  155. package/dist/html/dom.js +278 -17
  156. package/dist/html/dom.js.map +1 -1
  157. package/dist/html/fonts.d.ts +106 -0
  158. package/dist/html/fonts.d.ts.map +1 -0
  159. package/dist/html/fonts.js +565 -0
  160. package/dist/html/fonts.js.map +1 -0
  161. package/dist/html/gif.d.ts +15 -0
  162. package/dist/html/gif.d.ts.map +1 -0
  163. package/dist/html/gif.js +229 -0
  164. package/dist/html/gif.js.map +1 -0
  165. package/dist/html/index.d.ts +50 -11
  166. package/dist/html/index.d.ts.map +1 -1
  167. package/dist/html/index.js +115 -9
  168. package/dist/html/index.js.map +1 -1
  169. package/dist/html/layout/block.d.ts +226 -3
  170. package/dist/html/layout/block.d.ts.map +1 -1
  171. package/dist/html/layout/block.js +3077 -219
  172. package/dist/html/layout/block.js.map +1 -1
  173. package/dist/html/layout/boxes.d.ts +367 -17
  174. package/dist/html/layout/boxes.d.ts.map +1 -1
  175. package/dist/html/layout/boxes.js +1742 -182
  176. package/dist/html/layout/boxes.js.map +1 -1
  177. package/dist/html/layout/cache.d.ts +58 -0
  178. package/dist/html/layout/cache.d.ts.map +1 -0
  179. package/dist/html/layout/cache.js +224 -0
  180. package/dist/html/layout/cache.js.map +1 -0
  181. package/dist/html/layout/collapse.d.ts +45 -0
  182. package/dist/html/layout/collapse.d.ts.map +1 -0
  183. package/dist/html/layout/collapse.js +246 -0
  184. package/dist/html/layout/collapse.js.map +1 -0
  185. package/dist/html/layout/css-grid.d.ts +7 -0
  186. package/dist/html/layout/css-grid.d.ts.map +1 -0
  187. package/dist/html/layout/css-grid.js +900 -0
  188. package/dist/html/layout/css-grid.js.map +1 -0
  189. package/dist/html/layout/flex.d.ts.map +1 -1
  190. package/dist/html/layout/flex.js +1025 -89
  191. package/dist/html/layout/flex.js.map +1 -1
  192. package/dist/html/layout/floats.d.ts +45 -6
  193. package/dist/html/layout/floats.d.ts.map +1 -1
  194. package/dist/html/layout/floats.js +113 -14
  195. package/dist/html/layout/floats.js.map +1 -1
  196. package/dist/html/layout/grid-lines.d.ts +39 -0
  197. package/dist/html/layout/grid-lines.d.ts.map +1 -0
  198. package/dist/html/layout/grid-lines.js +119 -0
  199. package/dist/html/layout/grid-lines.js.map +1 -0
  200. package/dist/html/layout/grid.d.ts +53 -0
  201. package/dist/html/layout/grid.d.ts.map +1 -0
  202. package/dist/html/layout/grid.js +153 -0
  203. package/dist/html/layout/grid.js.map +1 -0
  204. package/dist/html/layout/inline.d.ts +154 -1
  205. package/dist/html/layout/inline.d.ts.map +1 -1
  206. package/dist/html/layout/inline.js +3598 -175
  207. package/dist/html/layout/inline.js.map +1 -1
  208. package/dist/html/layout/shaping.d.ts +6 -0
  209. package/dist/html/layout/shaping.d.ts.map +1 -0
  210. package/dist/html/layout/shaping.js +100 -0
  211. package/dist/html/layout/shaping.js.map +1 -0
  212. package/dist/html/layout/table.d.ts +3 -0
  213. package/dist/html/layout/table.d.ts.map +1 -1
  214. package/dist/html/layout/table.js +681 -175
  215. package/dist/html/layout/table.js.map +1 -1
  216. package/dist/html/layout/tracks.d.ts +44 -0
  217. package/dist/html/layout/tracks.d.ts.map +1 -0
  218. package/dist/html/layout/tracks.js +349 -0
  219. package/dist/html/layout/tracks.js.map +1 -0
  220. package/dist/html/node.d.ts +169 -4
  221. package/dist/html/node.d.ts.map +1 -1
  222. package/dist/html/node.js +1429 -137
  223. package/dist/html/node.js.map +1 -1
  224. package/dist/html/paint.d.ts +92 -3
  225. package/dist/html/paint.d.ts.map +1 -1
  226. package/dist/html/paint.js +3635 -107
  227. package/dist/html/paint.js.map +1 -1
  228. package/dist/html/resources.d.ts +60 -14
  229. package/dist/html/resources.d.ts.map +1 -1
  230. package/dist/html/resources.js +122 -36
  231. package/dist/html/resources.js.map +1 -1
  232. package/dist/html/surfaces.d.ts +23 -0
  233. package/dist/html/surfaces.d.ts.map +1 -0
  234. package/dist/html/surfaces.js +68 -0
  235. package/dist/html/surfaces.js.map +1 -0
  236. package/dist/html/svg.d.ts +80 -0
  237. package/dist/html/svg.d.ts.map +1 -0
  238. package/dist/html/svg.js +442 -0
  239. package/dist/html/svg.js.map +1 -0
  240. package/dist/html/url.d.ts +23 -0
  241. package/dist/html/url.d.ts.map +1 -0
  242. package/dist/html/url.js +80 -0
  243. package/dist/html/url.js.map +1 -0
  244. package/dist/index.d.ts +1 -1
  245. package/dist/index.d.ts.map +1 -1
  246. package/dist/index.js.map +1 -1
  247. package/dist/internal/codelines.d.ts +42 -0
  248. package/dist/internal/codelines.d.ts.map +1 -0
  249. package/dist/internal/codelines.js +170 -0
  250. package/dist/internal/codelines.js.map +1 -0
  251. package/dist/internal/collate.d.ts +3 -0
  252. package/dist/internal/collate.d.ts.map +1 -0
  253. package/dist/internal/collate.js +11 -0
  254. package/dist/internal/collate.js.map +1 -0
  255. package/dist/internal/markdown/ast.d.ts +11 -0
  256. package/dist/internal/markdown/ast.d.ts.map +1 -1
  257. package/dist/internal/markdown/parse.d.ts.map +1 -1
  258. package/dist/internal/markdown/parse.js +109 -8
  259. package/dist/internal/markdown/parse.js.map +1 -1
  260. package/dist/internal/prewarm.d.ts +18 -0
  261. package/dist/internal/prewarm.d.ts.map +1 -0
  262. package/dist/internal/prewarm.js +42 -0
  263. package/dist/internal/prewarm.js.map +1 -0
  264. package/dist/internal/sdf.d.ts +20 -0
  265. package/dist/internal/sdf.d.ts.map +1 -0
  266. package/dist/internal/sdf.js +216 -0
  267. package/dist/internal/sdf.js.map +1 -0
  268. package/dist/internal/splice.d.ts +12 -0
  269. package/dist/internal/splice.d.ts.map +1 -0
  270. package/dist/internal/splice.js +23 -0
  271. package/dist/internal/splice.js.map +1 -0
  272. package/dist/internal/window.d.ts +12 -0
  273. package/dist/internal/window.d.ts.map +1 -1
  274. package/dist/internal/window.js +23 -6
  275. package/dist/internal/window.js.map +1 -1
  276. package/dist/maps/anchors.d.ts +6 -1
  277. package/dist/maps/anchors.d.ts.map +1 -1
  278. package/dist/maps/anchors.js +260 -1
  279. package/dist/maps/anchors.js.map +1 -1
  280. package/dist/maps/controller.d.ts +57 -0
  281. package/dist/maps/controller.d.ts.map +1 -1
  282. package/dist/maps/controller.js +97 -18
  283. package/dist/maps/controller.js.map +1 -1
  284. package/dist/maps/gl/buckets.d.ts +5 -1
  285. package/dist/maps/gl/buckets.d.ts.map +1 -1
  286. package/dist/maps/gl/buckets.js +5 -2
  287. package/dist/maps/gl/buckets.js.map +1 -1
  288. package/dist/maps/gl/build-worker.d.ts +2 -0
  289. package/dist/maps/gl/build-worker.d.ts.map +1 -1
  290. package/dist/maps/gl/build-worker.js +1 -1
  291. package/dist/maps/gl/build-worker.js.map +1 -1
  292. package/dist/maps/gl/cover.d.ts +23 -4
  293. package/dist/maps/gl/cover.d.ts.map +1 -1
  294. package/dist/maps/gl/cover.js +61 -48
  295. package/dist/maps/gl/cover.js.map +1 -1
  296. package/dist/maps/gl/placement.d.ts +21 -8
  297. package/dist/maps/gl/placement.d.ts.map +1 -1
  298. package/dist/maps/gl/placement.js +133 -58
  299. package/dist/maps/gl/placement.js.map +1 -1
  300. package/dist/maps/gl/renderer.d.ts +36 -4
  301. package/dist/maps/gl/renderer.d.ts.map +1 -1
  302. package/dist/maps/gl/renderer.js +81 -24
  303. package/dist/maps/gl/renderer.js.map +1 -1
  304. package/dist/maps/gl/shaders.d.ts +18 -17
  305. package/dist/maps/gl/shaders.d.ts.map +1 -1
  306. package/dist/maps/gl/shaders.js +34 -32
  307. package/dist/maps/gl/shaders.js.map +1 -1
  308. package/dist/maps/gl/store.d.ts +10 -0
  309. package/dist/maps/gl/store.d.ts.map +1 -1
  310. package/dist/maps/gl/store.js +47 -4
  311. package/dist/maps/gl/store.js.map +1 -1
  312. package/dist/maps/gl/text.d.ts +153 -24
  313. package/dist/maps/gl/text.d.ts.map +1 -1
  314. package/dist/maps/gl/text.js +379 -63
  315. package/dist/maps/gl/text.js.map +1 -1
  316. package/dist/maps/gl/view.d.ts +293 -2
  317. package/dist/maps/gl/view.d.ts.map +1 -1
  318. package/dist/maps/gl/view.js +317 -82
  319. package/dist/maps/gl/view.js.map +1 -1
  320. package/dist/maps/icons.d.ts +32 -0
  321. package/dist/maps/icons.d.ts.map +1 -0
  322. package/dist/maps/icons.js +151 -0
  323. package/dist/maps/icons.js.map +1 -0
  324. package/dist/maps/index.d.ts +2 -0
  325. package/dist/maps/index.d.ts.map +1 -1
  326. package/dist/maps/index.js +2 -0
  327. package/dist/maps/index.js.map +1 -1
  328. package/dist/maps/labels.d.ts +56 -4
  329. package/dist/maps/labels.d.ts.map +1 -1
  330. package/dist/maps/labels.js +213 -46
  331. package/dist/maps/labels.js.map +1 -1
  332. package/dist/maps/node.d.ts +17 -0
  333. package/dist/maps/node.d.ts.map +1 -1
  334. package/dist/maps/node.js +64 -30
  335. package/dist/maps/node.js.map +1 -1
  336. package/dist/maps/proj.d.ts +48 -0
  337. package/dist/maps/proj.d.ts.map +1 -1
  338. package/dist/maps/proj.js +73 -0
  339. package/dist/maps/proj.js.map +1 -1
  340. package/dist/maps/sources.d.ts +5 -3
  341. package/dist/maps/sources.d.ts.map +1 -1
  342. package/dist/maps/sources.js +5 -3
  343. package/dist/maps/sources.js.map +1 -1
  344. package/dist/maps/style.d.ts +35 -0
  345. package/dist/maps/style.d.ts.map +1 -1
  346. package/dist/maps/style.js.map +1 -1
  347. package/dist/maps/styles.d.ts +12 -0
  348. package/dist/maps/styles.d.ts.map +1 -1
  349. package/dist/maps/styles.js +120 -6
  350. package/dist/maps/styles.js.map +1 -1
  351. package/dist/maps/tiles.d.ts +31 -11
  352. package/dist/maps/tiles.d.ts.map +1 -1
  353. package/dist/maps/tiles.js +61 -27
  354. package/dist/maps/tiles.js.map +1 -1
  355. package/dist/maps/types.d.ts +28 -4
  356. package/dist/maps/types.d.ts.map +1 -1
  357. package/dist/markdown/index.d.ts.map +1 -1
  358. package/dist/markdown/index.js +209 -68
  359. package/dist/markdown/index.js.map +1 -1
  360. package/dist/markdown/spans.d.ts.map +1 -1
  361. package/dist/markdown/spans.js +6 -0
  362. package/dist/markdown/spans.js.map +1 -1
  363. package/dist/qml/containers.d.ts.map +1 -1
  364. package/dist/qml/containers.js +6 -1
  365. package/dist/qml/containers.js.map +1 -1
  366. package/dist/qml/interaction.d.ts.map +1 -1
  367. package/dist/qml/interaction.js +38 -5
  368. package/dist/qml/interaction.js.map +1 -1
  369. package/dist/qml/layouts.d.ts.map +1 -1
  370. package/dist/qml/layouts.js +21 -6
  371. package/dist/qml/layouts.js.map +1 -1
  372. package/dist/qml/qtquick.d.ts.map +1 -1
  373. package/dist/qml/qtquick.js +9 -2
  374. package/dist/qml/qtquick.js.map +1 -1
  375. package/dist/qml/react.d.ts.map +1 -1
  376. package/dist/qml/react.js +9 -7
  377. package/dist/qml/react.js.map +1 -1
  378. package/dist/reorder/clock.d.ts +7 -0
  379. package/dist/reorder/clock.d.ts.map +1 -0
  380. package/dist/reorder/clock.js +26 -0
  381. package/dist/reorder/clock.js.map +1 -0
  382. package/dist/reorder/index.d.ts +25 -3
  383. package/dist/reorder/index.d.ts.map +1 -1
  384. package/dist/reorder/index.js +64 -19
  385. package/dist/reorder/index.js.map +1 -1
  386. package/dist/rich-text-editor/index.d.ts +0 -11
  387. package/dist/rich-text-editor/index.d.ts.map +1 -1
  388. package/dist/rich-text-editor/index.js +38 -9
  389. package/dist/rich-text-editor/index.js.map +1 -1
  390. package/dist/rich-text-editor/keymap.d.ts.map +1 -1
  391. package/dist/rich-text-editor/keymap.js +2 -1
  392. package/dist/rich-text-editor/keymap.js.map +1 -1
  393. package/dist/rich-text-editor/keys.d.ts +17 -6
  394. package/dist/rich-text-editor/keys.d.ts.map +1 -1
  395. package/dist/rich-text-editor/keys.js +135 -26
  396. package/dist/rich-text-editor/keys.js.map +1 -1
  397. package/dist/rich-text-editor/markdown.d.ts.map +1 -1
  398. package/dist/rich-text-editor/markdown.js +30 -1
  399. package/dist/rich-text-editor/markdown.js.map +1 -1
  400. package/dist/rich-text-editor/marks.d.ts +9 -0
  401. package/dist/rich-text-editor/marks.d.ts.map +1 -0
  402. package/dist/rich-text-editor/marks.js +83 -0
  403. package/dist/rich-text-editor/marks.js.map +1 -0
  404. package/dist/rich-text-editor/render.d.ts.map +1 -1
  405. package/dist/rich-text-editor/render.js +28 -10
  406. package/dist/rich-text-editor/render.js.map +1 -1
  407. package/dist/rich-text-editor/replace.d.ts +13 -0
  408. package/dist/rich-text-editor/replace.d.ts.map +1 -0
  409. package/dist/rich-text-editor/replace.js +64 -0
  410. package/dist/rich-text-editor/replace.js.map +1 -0
  411. package/dist/rich-text-editor/toolbar.d.ts.map +1 -1
  412. package/dist/rich-text-editor/toolbar.js +1 -1
  413. package/dist/rich-text-editor/toolbar.js.map +1 -1
  414. package/dist/rich-text-editor/virtual.d.ts.map +1 -1
  415. package/dist/rich-text-editor/virtual.js +17 -0
  416. package/dist/rich-text-editor/virtual.js.map +1 -1
  417. package/dist/richtext/node.d.ts +46 -2
  418. package/dist/richtext/node.d.ts.map +1 -1
  419. package/dist/richtext/node.js +187 -4
  420. package/dist/richtext/node.js.map +1 -1
  421. package/dist/richtext/runs.d.ts +13 -8
  422. package/dist/richtext/runs.d.ts.map +1 -1
  423. package/dist/richtext/runs.js +18 -8
  424. package/dist/richtext/runs.js.map +1 -1
  425. package/dist/table/index.d.ts.map +1 -1
  426. package/dist/table/index.js +23 -0
  427. package/dist/table/index.js.map +1 -1
  428. package/dist/table/rows.d.ts +3 -2
  429. package/dist/table/rows.d.ts.map +1 -1
  430. package/dist/table/rows.js +20 -6
  431. package/dist/table/rows.js.map +1 -1
  432. package/dist/terminal/index.d.ts.map +1 -1
  433. package/dist/terminal/index.js +4 -0
  434. package/dist/terminal/index.js.map +1 -1
  435. package/dist/terminal/vt/pty.d.ts +13 -2
  436. package/dist/terminal/vt/pty.d.ts.map +1 -1
  437. package/dist/terminal/vt/pty.js +18 -3
  438. package/dist/terminal/vt/pty.js.map +1 -1
  439. package/dist/terminal-output/index.d.ts.map +1 -1
  440. package/dist/terminal-output/index.js +103 -23
  441. package/dist/terminal-output/index.js.map +1 -1
  442. package/dist/terminal-output/runs.d.ts +4 -1
  443. package/dist/terminal-output/runs.d.ts.map +1 -1
  444. package/dist/terminal-output/runs.js +5 -1
  445. package/dist/terminal-output/runs.js.map +1 -1
  446. package/dist/three/canvas.d.ts.map +1 -1
  447. package/dist/three/canvas.js +85 -7
  448. package/dist/three/canvas.js.map +1 -1
  449. package/dist/three/events.d.ts +22 -4
  450. package/dist/three/events.d.ts.map +1 -1
  451. package/dist/three/events.js +34 -4
  452. package/dist/three/events.js.map +1 -1
  453. package/dist/tree/index.d.ts.map +1 -1
  454. package/dist/tree/index.js +17 -0
  455. package/dist/tree/index.js.map +1 -1
  456. package/package.json +42 -33
  457. package/src/charts/node.ts +62 -26
  458. package/src/charts/render.ts +120 -30
  459. package/src/code/index.ts +36 -32
  460. package/src/code-editor/completion.ts +3 -2
  461. package/src/code-editor/index.ts +19 -0
  462. package/src/code-editor/node.ts +1574 -184
  463. package/src/code-language/index.ts +1 -1
  464. package/src/code-language/languages/glsl.ts +12 -2
  465. package/src/code-language/languages/javascript.ts +21 -4
  466. package/src/code-language/languages/json.ts +12 -2
  467. package/src/code-language/languages/shell.ts +12 -2
  468. package/src/code-language/languages/sql.ts +22 -2
  469. package/src/code-language/runs.ts +111 -1
  470. package/src/code-language/stream.ts +257 -17
  471. package/src/code-language/types.ts +5 -4
  472. package/src/codeblock/index.ts +68 -4
  473. package/src/flow/draw.ts +167 -41
  474. package/src/flow/gl/color.ts +85 -0
  475. package/src/flow/gl/index.ts +342 -0
  476. package/src/flow/gl/pack.ts +585 -0
  477. package/src/flow/gl/renderer.ts +679 -0
  478. package/src/flow/gl/shaders.ts +371 -0
  479. package/src/flow/gl/text.ts +1295 -0
  480. package/src/flow/index.ts +794 -67
  481. package/src/flow/node.ts +2496 -1256
  482. package/src/flow/paint.ts +511 -0
  483. package/src/flow/paths.ts +80 -15
  484. package/src/flow/scene.ts +2199 -0
  485. package/src/flow/types.ts +113 -1
  486. package/src/html/controls.ts +73 -2
  487. package/src/html/css/calc.ts +385 -0
  488. package/src/html/css/cascade.ts +1481 -62
  489. package/src/html/css/color.ts +755 -0
  490. package/src/html/css/content.ts +417 -0
  491. package/src/html/css/counter-styles.ts +973 -0
  492. package/src/html/css/decode.ts +130 -0
  493. package/src/html/css/parse.ts +1514 -160
  494. package/src/html/css/style.ts +4131 -223
  495. package/src/html/css/ua.ts +66 -17
  496. package/src/html/css/values.ts +150 -50
  497. package/src/html/css/vars.ts +348 -0
  498. package/src/html/dom.ts +284 -17
  499. package/src/html/fonts.ts +641 -0
  500. package/src/html/gif.ts +233 -0
  501. package/src/html/index.ts +180 -20
  502. package/src/html/layout/block.ts +3560 -208
  503. package/src/html/layout/boxes.ts +2141 -190
  504. package/src/html/layout/cache.ts +289 -0
  505. package/src/html/layout/collapse.ts +317 -0
  506. package/src/html/layout/css-grid.ts +1063 -0
  507. package/src/html/layout/flex.ts +1115 -106
  508. package/src/html/layout/floats.ts +128 -14
  509. package/src/html/layout/grid-lines.ts +141 -0
  510. package/src/html/layout/grid.ts +181 -0
  511. package/src/html/layout/inline.ts +4187 -192
  512. package/src/html/layout/shaping.ts +140 -0
  513. package/src/html/layout/table.ts +696 -186
  514. package/src/html/layout/tracks.ts +437 -0
  515. package/src/html/node.ts +1585 -156
  516. package/src/html/paint.ts +4582 -267
  517. package/src/html/resources.ts +161 -50
  518. package/src/html/surfaces.ts +81 -0
  519. package/src/html/svg.ts +504 -0
  520. package/src/html/url.ts +86 -0
  521. package/src/index.ts +2 -0
  522. package/src/internal/codelines.ts +200 -0
  523. package/src/internal/collate.ts +12 -0
  524. package/src/internal/markdown/ast.ts +11 -0
  525. package/src/internal/markdown/parse.ts +154 -11
  526. package/src/internal/prewarm.ts +45 -0
  527. package/src/internal/sdf.ts +227 -0
  528. package/src/internal/splice.ts +25 -0
  529. package/src/internal/window.ts +36 -5
  530. package/src/maps/anchors.ts +307 -1
  531. package/src/maps/controller.ts +116 -31
  532. package/src/maps/gl/buckets.ts +5 -1
  533. package/src/maps/gl/build-worker.ts +13 -2
  534. package/src/maps/gl/cover.ts +79 -44
  535. package/src/maps/gl/placement.ts +221 -69
  536. package/src/maps/gl/renderer.ts +104 -20
  537. package/src/maps/gl/shaders.ts +35 -32
  538. package/src/maps/gl/store.ts +66 -17
  539. package/src/maps/gl/text.ts +444 -71
  540. package/src/maps/gl/view.ts +361 -96
  541. package/src/maps/icons.ts +183 -0
  542. package/src/maps/index.ts +4 -0
  543. package/src/maps/labels.ts +269 -49
  544. package/src/maps/node.ts +82 -49
  545. package/src/maps/proj.ts +87 -0
  546. package/src/maps/sources.ts +5 -3
  547. package/src/maps/style.ts +32 -0
  548. package/src/maps/styles.ts +215 -4
  549. package/src/maps/tiles.ts +64 -31
  550. package/src/maps/types.ts +28 -4
  551. package/src/markdown/index.ts +293 -92
  552. package/src/markdown/spans.ts +5 -0
  553. package/src/qml/containers.tsx +6 -1
  554. package/src/qml/interaction.tsx +42 -5
  555. package/src/qml/layouts.tsx +21 -6
  556. package/src/qml/qtquick.tsx +9 -2
  557. package/src/qml/react.tsx +7 -5
  558. package/src/reorder/clock.ts +27 -0
  559. package/src/reorder/index.ts +100 -27
  560. package/src/rich-text-editor/index.ts +37 -12
  561. package/src/rich-text-editor/keymap.ts +1 -1
  562. package/src/rich-text-editor/keys.ts +135 -26
  563. package/src/rich-text-editor/markdown.ts +36 -1
  564. package/src/rich-text-editor/marks.ts +101 -0
  565. package/src/rich-text-editor/render.ts +49 -12
  566. package/src/rich-text-editor/replace.ts +85 -0
  567. package/src/rich-text-editor/toolbar.ts +1 -1
  568. package/src/rich-text-editor/virtual.ts +25 -0
  569. package/src/richtext/node.ts +235 -14
  570. package/src/richtext/runs.ts +23 -12
  571. package/src/table/index.ts +29 -0
  572. package/src/table/rows.ts +18 -8
  573. package/src/terminal/index.ts +4 -0
  574. package/src/terminal/vt/pty.ts +16 -2
  575. package/src/terminal-output/index.ts +129 -31
  576. package/src/terminal-output/runs.ts +16 -2
  577. package/src/three/canvas.ts +102 -8
  578. package/src/three/events.ts +49 -9
  579. package/src/tree/index.ts +19 -0
@@ -0,0 +1,408 @@
1
+ import { ColorCache } from './color.js';
2
+ /** Floats per line segment: the ends; then half-width, the distance along
3
+ * the line at the first end, and the dash; then the dash's offset and
4
+ * whether it marches; then the colour. */
5
+ export const LINE_STRIDE = 16;
6
+ /** Floats per box: the rect, the corner radius and border width, the fill,
7
+ * the border colour. A *label* is a box too — the text's corner and the
8
+ * quad's size where the rect is, its margin, a flag and the size of a
9
+ * field texel where the corner radius and border are, its ink in the fill
10
+ * and its place in the atlas where a border colour would be — so labels
11
+ * share the box stream and land in it exactly where the 2D painter draws
12
+ * them. */
13
+ export const BOX_STRIDE = 16;
14
+ /** Floats per triangle *vertex*: position and colour. */
15
+ export const TRI_STRIDE = 6;
16
+ /**
17
+ * A growable Float32Array, reused frame to frame: a scene is repacked every
18
+ * frame the graph changes, and allocating its buffers each time is exactly
19
+ * the garbage `../scene.ts`'s route cache exists to avoid.
20
+ */
21
+ class Stream {
22
+ stride;
23
+ data;
24
+ length = 0;
25
+ constructor(stride, capacity) {
26
+ this.stride = stride;
27
+ this.data = new Float32Array(stride * capacity);
28
+ }
29
+ reset() {
30
+ this.length = 0;
31
+ }
32
+ /** Room for one more record; answers its offset. */
33
+ next() {
34
+ const at = this.length * this.stride;
35
+ if (at + this.stride > this.data.length) {
36
+ const grown = new Float32Array(this.data.length * 2);
37
+ grown.set(this.data);
38
+ this.data = grown;
39
+ }
40
+ this.length++;
41
+ return at;
42
+ }
43
+ }
44
+ /** Packs scenes into streams it owns and reuses. One per renderer. */
45
+ export class ScenePacker {
46
+ colors = new ColorCache();
47
+ lineStream = new Stream(LINE_STRIDE, 1024);
48
+ boxStream = new Stream(BOX_STRIDE, 256);
49
+ triStream = new Stream(TRI_STRIDE, 256);
50
+ ranges = [];
51
+ gaps = { text: 0, custom: 0 };
52
+ waiting = [];
53
+ drawn = [];
54
+ /** The scissor for whatever is appended until it is changed. */
55
+ scissor;
56
+ text;
57
+ /** The next range recorded is a new one, whatever the last was. */
58
+ cut = false;
59
+ nodesAt = 0;
60
+ pack(scene, layer = 'all', text) {
61
+ this.text = text;
62
+ const world = layer !== 'overlay';
63
+ const overlay = layer !== 'world';
64
+ this.lineStream.reset();
65
+ this.boxStream.reset();
66
+ this.triStream.reset();
67
+ this.ranges = [];
68
+ this.gaps = { text: 0, custom: 0 };
69
+ this.waiting = [];
70
+ this.drawn = [];
71
+ this.cut = false;
72
+ this.nodesAt = 0;
73
+ this.scissor = undefined;
74
+ let split = 0;
75
+ if (scene.region) {
76
+ if (overlay) {
77
+ if (scene.background)
78
+ this.box(scene.background);
79
+ if (scene.grid)
80
+ this.ranges.push({ kind: 'grid', first: 0, count: 1 });
81
+ }
82
+ split = this.ranges.length;
83
+ }
84
+ if (scene.region && world) {
85
+ // Every stroke, then every head, then every chip, then every label:
86
+ // the painter's order, and the reason a label sits above the edge
87
+ // that crosses the one it names.
88
+ for (const edge of scene.edges) {
89
+ const dash = dashPair(edge.dash);
90
+ // A marching dash is packed with no phase and a flag: the renderer
91
+ // adds the phase as a uniform, so the timer's tick is a frame, not a
92
+ // world rebuilt (`./renderer.ts`, `u_phase`).
93
+ this.polyline(edge.points, edge.lineWidth, this.colors.get(edge.stroke), dash[0], dash[1], edge.animated ? 0 : edge.dashOffset, edge.animated);
94
+ }
95
+ // The heads in two passes — every fill, then every outline and open
96
+ // head — as the 2D painter draws its filled bucket before its stroked
97
+ // one. One pass per head alternated triangle and line and opened two
98
+ // draw ranges an arrowhead: 807 draw calls for 200 nodes, where two
99
+ // are enough. Heads almost never overlap one another, so the order
100
+ // within the layer is not something anyone can see.
101
+ for (const edge of scene.edges) {
102
+ for (const marker of edge.markers) {
103
+ if (marker.filled) {
104
+ this.polygon(marker.points, this.colors.get(marker.color));
105
+ }
106
+ }
107
+ }
108
+ for (const edge of scene.edges) {
109
+ for (const marker of edge.markers) {
110
+ const color = this.colors.get(marker.color);
111
+ if (marker.filled) {
112
+ // Flat triangles are not antialiased; a hairline round the same
113
+ // outline in the same colour is, and it is what the 2D fill's
114
+ // own coverage looks like at its edge.
115
+ this.polyline(closed(marker.points), 1, color, 0, 0, 0);
116
+ }
117
+ else {
118
+ this.polyline(marker.points, marker.lineWidth, color, 0, 0, 0);
119
+ }
120
+ }
121
+ }
122
+ for (const edge of scene.edges)
123
+ if (edge.chip)
124
+ this.box(edge.chip);
125
+ for (const edge of scene.edges)
126
+ if (edge.label)
127
+ this.label(edge.label);
128
+ this.nodesAt = this.ranges.length;
129
+ this.cut = true;
130
+ for (const node of scene.nodes) {
131
+ if (node.custom) {
132
+ this.gaps.custom++;
133
+ }
134
+ else if (node.card) {
135
+ this.box(node.card.shape);
136
+ if (node.card.accent)
137
+ this.box(node.card.accent);
138
+ for (const ink of node.ink)
139
+ this.ink(ink);
140
+ }
141
+ for (const handle of node.handles)
142
+ this.handle(handle);
143
+ for (const grip of node.grips)
144
+ this.box(grip);
145
+ }
146
+ if (scene.connection) {
147
+ const c = scene.connection;
148
+ const dash = dashPair(c.dash);
149
+ this.polyline(c.points, c.lineWidth, this.colors.get(c.stroke), dash[0], dash[1], 0);
150
+ this.handle(c.tip);
151
+ }
152
+ }
153
+ if (scene.region && overlay) {
154
+ split = layer === 'overlay' ? split : this.ranges.length;
155
+ if (scene.selection)
156
+ this.box(scene.selection);
157
+ if (scene.miniMap) {
158
+ const map = scene.miniMap;
159
+ this.box(map.panel);
160
+ this.scissor = map.panel.rect;
161
+ for (const n of map.nodes)
162
+ this.box(n);
163
+ this.box(map.view);
164
+ this.scissor = undefined;
165
+ }
166
+ if (scene.controls) {
167
+ this.box(scene.controls.panel);
168
+ for (const rule of scene.controls.rules)
169
+ this.rule(rule);
170
+ for (const glyph of scene.controls.glyphs) {
171
+ const color = this.colors.get(glyph.color);
172
+ for (const run of glyph.runs) {
173
+ this.polyline(run, glyph.lineWidth, color, 0, 0, 0);
174
+ }
175
+ }
176
+ }
177
+ }
178
+ return {
179
+ lines: this.lineStream.data,
180
+ lineCount: this.lineStream.length,
181
+ boxes: this.boxStream.data,
182
+ boxCount: this.boxStream.length,
183
+ tris: this.triStream.data,
184
+ triCount: this.triStream.length,
185
+ ranges: this.ranges,
186
+ nodesAt: this.nodesAt,
187
+ split,
188
+ gaps: this.gaps,
189
+ waiting: this.waiting,
190
+ drawn: this.drawn,
191
+ };
192
+ }
193
+ /** Extend the last range when it is the same kind under the same scissor,
194
+ * or open a new one — which is what keeps a frame to a handful of draws
195
+ * however the kinds interleave. */
196
+ record(kind, first) {
197
+ const last = this.ranges[this.ranges.length - 1];
198
+ if (last &&
199
+ !this.cut &&
200
+ last.kind === kind &&
201
+ last.scissor === this.scissor) {
202
+ last.count++;
203
+ return;
204
+ }
205
+ this.cut = false;
206
+ this.ranges.push({ kind, first, count: 1, scissor: this.scissor });
207
+ }
208
+ box(item) {
209
+ const { rect } = item;
210
+ if (!(rect.width > 0) || !(rect.height > 0))
211
+ return;
212
+ const fill = this.colors.get(item.fill);
213
+ const border = item.stroke ? this.colors.get(item.stroke) : null;
214
+ this.boxRaw(rect.x, rect.y, rect.width, rect.height, item.radius, border ? (item.lineWidth ?? 1) : 0, fill, border ?? fill);
215
+ }
216
+ boxRaw(x, y, w, h, radius, border, fill, ring) {
217
+ const s = this.boxStream;
218
+ const index = s.length;
219
+ const at = s.next();
220
+ const d = s.data;
221
+ d[at] = x;
222
+ d[at + 1] = y;
223
+ d[at + 2] = w;
224
+ d[at + 3] = h;
225
+ d[at + 4] = radius;
226
+ d[at + 5] = border;
227
+ d[at + 6] = 0;
228
+ d[at + 7] = 0;
229
+ d[at + 8] = fill[0];
230
+ d[at + 9] = fill[1];
231
+ d[at + 10] = fill[2];
232
+ d[at + 11] = fill[3];
233
+ d[at + 12] = ring[0];
234
+ d[at + 13] = ring[1];
235
+ d[at + 14] = ring[2];
236
+ d[at + 15] = ring[3];
237
+ this.record('box', index);
238
+ }
239
+ /**
240
+ * A handle as a box whose corners meet. The 2D painter strokes a circle's
241
+ * outline *centred* on its edge — half the pen outside the radius — where
242
+ * a box's border is inset, so the disc is grown by half the pen to put the
243
+ * ring where the circle's was.
244
+ */
245
+ handle(h) {
246
+ const pen = h.stroke ? (h.lineWidth ?? 1) : 0;
247
+ const r = h.radius + pen / 2;
248
+ const fill = this.colors.get(h.fill);
249
+ const ring = h.stroke ? this.colors.get(h.stroke) : fill;
250
+ this.boxRaw(h.at.x - r, h.at.y - r, r * 2, r * 2, r, pen, fill, ring);
251
+ if (h.label)
252
+ this.label(h.label);
253
+ }
254
+ /** A string as a box that samples its field in the atlas; counted as a
255
+ * gap when the atlas has nothing to draw it from yet — and packed all
256
+ * the same when its field is being set, drawn as nothing until it lands
257
+ * (`waiting`). */
258
+ label(t) {
259
+ const q = this.text?.(t);
260
+ if (!q) {
261
+ this.gaps.text++;
262
+ return;
263
+ }
264
+ const color = this.colors.get(t.color);
265
+ if (color[3] <= 0)
266
+ return;
267
+ const s = this.boxStream;
268
+ const index = s.length;
269
+ const at = s.next();
270
+ const d = s.data;
271
+ d[at] = q.x;
272
+ d[at + 1] = q.y;
273
+ d[at + 2] = q.w;
274
+ d[at + 3] = q.h;
275
+ d[at + 4] = q.margin;
276
+ // the page its field is on: which channel the shader reads
277
+ d[at + 5] = q.page;
278
+ // a label, not a box — and 2 for one whose field is still being set
279
+ d[at + 6] = q.ready ? 1 : 2;
280
+ d[at + 7] = q.texel;
281
+ d[at + 8] = color[0];
282
+ d[at + 9] = color[1];
283
+ d[at + 10] = color[2];
284
+ d[at + 11] = color[3];
285
+ d[at + 12] = q.u0;
286
+ d[at + 13] = q.v0;
287
+ d[at + 14] = q.u1;
288
+ d[at + 15] = q.v1;
289
+ if (!q.ready) {
290
+ this.gaps.text++;
291
+ this.waiting.push({ index, key: q.key, text: t });
292
+ }
293
+ else {
294
+ this.drawn.push({ index, key: q.key, text: t, slot: q.slot });
295
+ }
296
+ this.record('box', index);
297
+ }
298
+ ink(item) {
299
+ if (item.kind === 'text')
300
+ this.label(item);
301
+ else
302
+ this.rule(item);
303
+ }
304
+ rule(item) {
305
+ // A hairline across or down — every rule a scene draws, the one under a
306
+ // title bar and the one between two control buttons — is a box: the
307
+ // pixels of the butt-capped stroke the 2D painter lays. As a line it put
308
+ // the line program between a card's boxes, and a range is one program:
309
+ // every card with a title bar opened three draw ranges where the rest
310
+ // of the world's nodes shared one — 566 draws a frame on a board of
311
+ // widget cards, each two dozen calls into the GL bridge.
312
+ const [a, b] = item.points;
313
+ if (item.points.length === 2 && (a.y === b.y || a.x === b.x)) {
314
+ const color = this.colors.get(item.color);
315
+ if (color[3] <= 0)
316
+ return;
317
+ const half = item.lineWidth / 2;
318
+ if (a.y === b.y) {
319
+ const w = Math.abs(b.x - a.x);
320
+ if (w > 0) {
321
+ this.boxRaw(Math.min(a.x, b.x), a.y - half, w, item.lineWidth, 0, 0, color, color);
322
+ }
323
+ }
324
+ else {
325
+ const h = Math.abs(b.y - a.y);
326
+ if (h > 0) {
327
+ this.boxRaw(a.x - half, Math.min(a.y, b.y), item.lineWidth, h, 0, 0, color, color);
328
+ }
329
+ }
330
+ return;
331
+ }
332
+ this.polyline(item.points, item.lineWidth, this.colors.get(item.color), 0, 0, 0);
333
+ }
334
+ /** A polyline as capsule segments, carrying the distance along it so a
335
+ * dash runs continuously round every vertex. */
336
+ polyline(points, lineWidth, color, dashOn, dashOff, dashOffset, marching = false) {
337
+ if (points.length < 2 || color[3] <= 0)
338
+ return;
339
+ const s = this.lineStream;
340
+ const half = lineWidth / 2;
341
+ let along = 0;
342
+ for (let i = 0; i + 1 < points.length; i++) {
343
+ const a = points[i];
344
+ const b = points[i + 1];
345
+ const index = s.length;
346
+ const at = s.next();
347
+ const d = s.data;
348
+ d[at] = a.x;
349
+ d[at + 1] = a.y;
350
+ d[at + 2] = b.x;
351
+ d[at + 3] = b.y;
352
+ d[at + 4] = half;
353
+ d[at + 5] = along;
354
+ d[at + 6] = dashOn;
355
+ d[at + 7] = dashOff;
356
+ d[at + 8] = dashOffset;
357
+ d[at + 9] = marching ? 1 : 0;
358
+ d[at + 10] = 0;
359
+ d[at + 11] = 0;
360
+ d[at + 12] = color[0];
361
+ d[at + 13] = color[1];
362
+ d[at + 14] = color[2];
363
+ d[at + 15] = color[3];
364
+ this.record('line', index);
365
+ along += Math.hypot(b.x - a.x, b.y - a.y);
366
+ }
367
+ }
368
+ /** A convex polygon as a triangle fan off its first vertex. Arrowheads
369
+ * are the only filled polygons a graph draws, and both kinds are
370
+ * convex. */
371
+ polygon(points, color) {
372
+ if (points.length < 3 || color[3] <= 0)
373
+ return;
374
+ const s = this.triStream;
375
+ for (let i = 1; i + 1 < points.length; i++) {
376
+ for (const p of [points[0], points[i], points[i + 1]]) {
377
+ const index = s.length;
378
+ const at = s.next();
379
+ const d = s.data;
380
+ d[at] = p.x;
381
+ d[at + 1] = p.y;
382
+ d[at + 2] = color[0];
383
+ d[at + 3] = color[1];
384
+ d[at + 4] = color[2];
385
+ d[at + 5] = color[3];
386
+ this.record('tri', index);
387
+ }
388
+ }
389
+ }
390
+ }
391
+ /**
392
+ * A canvas dash pattern as the one on/off pair the line program draws.
393
+ * `[a]` means `[a, a]`, as `setLineDash` repeats an odd-length list; a
394
+ * longer pattern keeps its first pair. Every pattern a graph draws by
395
+ * default is a pair, and a user `style.dash` of more is rare enough to say
396
+ * so rather than to pay a second uniform block for.
397
+ */
398
+ function dashPair(dash) {
399
+ if (!dash || dash.length === 0)
400
+ return [0, 0];
401
+ if (dash.length === 1)
402
+ return [dash[0], dash[0]];
403
+ return [dash[0], dash[1]];
404
+ }
405
+ function closed(points) {
406
+ return points.length > 0 ? [...points, points[0]] : [];
407
+ }
408
+ //# sourceMappingURL=pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../../src/flow/gl/pack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import type { FlowFrameStats, XYPosition } from '../types.js';
2
+ import type { FlowScene } from '../scene.js';
3
+ import type { LabelAtlas } from './text.js';
4
+ import type { GL } from './shaders.js';
5
+ /** One frame's drawing, counted; `<Flow>` adds the scene's share. */
6
+ export type FlowGlDrawStats = Omit<FlowFrameStats, 'sceneMs' | 'renderer' | 'bodies'>;
7
+ /** Where the surface sits and how big it is: the pane's content box in
8
+ * logical window pixels, and the surface in device pixels. */
9
+ export interface FlowGlTarget {
10
+ origin: XYPosition;
11
+ scale: number;
12
+ width: number;
13
+ height: number;
14
+ }
15
+ /** What the element hands the renderer for one frame. */
16
+ export interface FlowGlFrame {
17
+ /** The graph, when it changed since the last frame — null to draw the one
18
+ * already on the GPU where `offset` now puts it. */
19
+ world: FlowScene | null;
20
+ /** Where the world's pinned origin lands in the window, in logical
21
+ * pixels: the pane's origin plus the viewport's translation. */
22
+ offset: XYPosition;
23
+ /** How much the world on the GPU is magnified: the view's zoom over the
24
+ * zoom it was built at. 1 — or absent — except while a zoom gesture
25
+ * moves, when the world is drawn scaled rather than rebuilt a step. */
26
+ zoom?: number;
27
+ /** The pane's furniture, every frame. */
28
+ overlay: FlowScene;
29
+ /** How far a marching dash has moved, in the world's logical pixels — a
30
+ * uniform, so the dash timer's tick redraws without a rebuild. */
31
+ phase: number;
32
+ /** A zoom gesture is moving: a stream of zoom steps, not a single one —
33
+ * what the label atlas holds new strings back for. */
34
+ moving?: boolean;
35
+ /**
36
+ * The nodes a drag is moving and their edges, lifted out of the world —
37
+ * which is built without them while they move — and packed on their own
38
+ * when they changed: absent to draw the ones already on the GPU, null for
39
+ * none. A drag step packs a card or two and their edges, where it packed
40
+ * the whole world: 3-4 ms a step at 2,000 nodes. Drawn in two halves, its
41
+ * edges under every card and its cards over them, as the painter orders
42
+ * a dragged node.
43
+ */
44
+ lifted?: FlowScene | null;
45
+ }
46
+ export declare const now: () => number;
47
+ export declare class FlowGlRenderer {
48
+ private readonly gl;
49
+ private readonly line;
50
+ private readonly box;
51
+ private readonly tri;
52
+ private readonly grid;
53
+ private readonly vao;
54
+ private readonly quad;
55
+ private readonly world;
56
+ private readonly lifted;
57
+ private readonly overlay;
58
+ private readonly colors;
59
+ /** Whether this context has had the atlas's texture made in it — a new
60
+ * renderer is a new context, into which every raster is uploaded again. */
61
+ private atlasBound;
62
+ constructor(gl: GL);
63
+ /** A whole scene, in one layer, at no offset — what a test or a one-off
64
+ * render wants, and the same drawing the two-layer frame composes. */
65
+ draw(scene: FlowScene, target: FlowGlTarget, atlas?: LabelAtlas): FlowGlDrawStats;
66
+ /** One frame: the overlay under the world, the world at its offset, the
67
+ * overlay over it. */
68
+ drawFrame(frame: FlowGlFrame, target: FlowGlTarget, atlas?: LabelAtlas): FlowGlDrawStats;
69
+ /**
70
+ * The labels of a layer packed before their fields existed, drawn from
71
+ * them now they have landed: the flag, the place in the atlas and the
72
+ * quad written into each box, and the stream uploaded again.
73
+ * A label arriving used to be the world packed again once everything on
74
+ * screen had its field — every label at once, after all of them — and is
75
+ * now a few floats and one upload, as each lands. Answers the bytes sent.
76
+ *
77
+ * First, the other way: a label whose field the atlas dropped for one
78
+ * nearer the view — or set again somewhere else — is drawn as nothing
79
+ * and waits again, its field wanted from where it is. Only a full atlas
80
+ * drops anything, so a graph under the limit never walks this list.
81
+ */
82
+ private landLabels;
83
+ private stats;
84
+ private begin;
85
+ private ranges;
86
+ private uniforms;
87
+ /** The quad's corners at location 0, stepping per vertex. */
88
+ private corners;
89
+ private drawInstances;
90
+ private drawTriangles;
91
+ private drawGrid;
92
+ private scissor;
93
+ dispose(): void;
94
+ }
95
+ //# sourceMappingURL=renderer.d.ts.map
@@ -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"}