@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,283 @@
1
+ // The GL renderer's entry: what `<Flow>` loads, by dynamic import, when it is
2
+ // asked to draw through GL — and only then. A static import anywhere under
3
+ // `<Flow>` would put the shaders and the packer into every bundle that draws
4
+ // a graph; `test/treeshake.test.ts` holds it to that, as it holds `<Map>`.
5
+ //
6
+ // What is here is the surface: a `<glarea>` laid over the pane, drawing the
7
+ // pane's own scene every frame it is asked for one. It owns no graph and no
8
+ // input. The `<flowgraph>` element under it keeps both — the hit test skips a
9
+ // surface and answers with the node behind it, which is the pane — and asks
10
+ // for frames through `setGlRequest`, so every change the 2D renderer would
11
+ // have repainted becomes one GL frame.
12
+ import React, { useEffect, useMemo } from 'react';
13
+ import { FlowGlRenderer, now } from './renderer.js';
14
+ import { LabelAtlas } from './text.js';
15
+ /**
16
+ * Where the surface sits, from what `onDraw` was handed.
17
+ *
18
+ * The scene is in logical window pixels and the surface is a box of its own
19
+ * in device ones; the node's `abs` is device pixels too, so its origin in
20
+ * logical ones is `abs / scale`. Taking `scale` from `DrawInfo`, where its
21
+ * type puts it, made that `abs / undefined`: every vertex `NaN`, a blank
22
+ * pane — and every counter the renderer keeps, draw calls and instances and
23
+ * frames a second, exactly what a correct frame reports. So a target that
24
+ * is not finite throws here, and a surface that cannot place itself fails
25
+ * back to the 2D renderer through `onError` rather than drawing nothing.
26
+ */
27
+ export function targetOf(info) {
28
+ const scale = info.scale;
29
+ const target = {
30
+ origin: { x: info.node.abs.x / scale, y: info.node.abs.y / scale },
31
+ scale,
32
+ width: info.width,
33
+ height: info.height,
34
+ };
35
+ if (![
36
+ target.origin.x,
37
+ target.origin.y,
38
+ scale,
39
+ target.width,
40
+ target.height,
41
+ ].every(Number.isFinite) ||
42
+ !(scale > 0)) {
43
+ throw new Error(`@react-x11/components flow/gl: cannot place the surface ` +
44
+ `(${JSON.stringify(target)})`);
45
+ }
46
+ return target;
47
+ }
48
+ /** Slices of setting — a few milliseconds of fields, and the batch drawn
49
+ * and read back that an engine without coverage of its own needs — one
50
+ * run may take: a bound, so a screen whose labels outgrow the atlas does
51
+ * not set labels for ever. The next frame that wants any starts another. */
52
+ const MAX_SLICES = 64;
53
+ /** The surface's state across renders: the renderer lives as long as the GL
54
+ * context it was made for, which is longer than any one props object. */
55
+ class Driver {
56
+ props;
57
+ area = null;
58
+ renderer = null;
59
+ context = null;
60
+ /** The key of the world now on the GPU — null when there is none, which
61
+ * is what makes the next frame build one. */
62
+ worldKey = null;
63
+ /** The same for the lifted layer — the nodes a drag is moving. */
64
+ liftedKey = null;
65
+ /** The label atlas, and the face and scale it was made for: either
66
+ * changing is every field wrong, so it is made again. */
67
+ atlas = null;
68
+ atlasKey = '';
69
+ /** The timer that brings a frame once a zoom gesture stops — strings it
70
+ * uncovered are only set at rest, and a gesture that rebuilt its world
71
+ * on the way asks for no frame by itself when it stops. */
72
+ settle = null;
73
+ failed = false;
74
+ /** Labels are being set (`setLabels`); one run at a time. */
75
+ setting = false;
76
+ constructor(props) {
77
+ this.props = props;
78
+ }
79
+ /** Stable, so the pane can compare it and not repaint on every render. */
80
+ request = () => {
81
+ this.area?.requestFrame?.();
82
+ };
83
+ areaRef = (node) => {
84
+ this.area = node;
85
+ this.attach();
86
+ };
87
+ attach() {
88
+ this.props.pane.current?.setGlRequest(this.area && !this.failed ? this.request : null);
89
+ }
90
+ detach() {
91
+ this.props.pane.current?.setGlRequest(null);
92
+ if (this.settle != null)
93
+ timers.clearTimeout?.(this.settle);
94
+ this.settle = null;
95
+ this.atlas?.dispose();
96
+ this.atlas = null;
97
+ this.atlasKey = '';
98
+ }
99
+ draw = (gl, info) => {
100
+ if (this.failed)
101
+ return;
102
+ try {
103
+ if (this.context !== gl || !this.renderer) {
104
+ // A new context is new everything: programs and buffers belong to
105
+ // the one they were made in.
106
+ this.renderer = new FlowGlRenderer(gl);
107
+ this.context = gl;
108
+ this.worldKey = null;
109
+ this.liftedKey = null;
110
+ }
111
+ const pane = this.props.pane.current;
112
+ if (!pane)
113
+ return;
114
+ const atlas = this.atlasFor(pane);
115
+ const started = now();
116
+ const frame = pane.glFrame(this.worldKey, this.liftedKey);
117
+ if (!frame)
118
+ return;
119
+ const sceneMs = now() - started;
120
+ const target = targetOf(info);
121
+ if (atlas) {
122
+ this.admit(atlas, frame.moving ?? false);
123
+ // the view, in the world's coordinates
124
+ const zoom = frame.zoom ?? 1;
125
+ atlas.setView({
126
+ x: (target.origin.x - frame.offset.x) / zoom,
127
+ y: (target.origin.y - frame.offset.y) / zoom,
128
+ width: target.width / target.scale / zoom,
129
+ height: target.height / target.scale / zoom,
130
+ });
131
+ }
132
+ const stats = this.renderer.drawFrame(frame, target, atlas ?? undefined);
133
+ if (frame.world)
134
+ this.worldKey = frame.key;
135
+ if (frame.lifted !== undefined)
136
+ this.liftedKey = frame.liftedKey ?? null;
137
+ // Labels this frame could not draw yet are set now, between frames.
138
+ if (atlas?.wanting && !this.setting) {
139
+ this.setting = true;
140
+ this.setLabels(atlas).then(() => (this.setting = false), (error) => {
141
+ this.setting = false;
142
+ this.fail(error);
143
+ });
144
+ }
145
+ this.props.onFrame?.({
146
+ renderer: 'gl',
147
+ sceneMs,
148
+ ...stats,
149
+ bodies: pane.bodyBudget(),
150
+ });
151
+ }
152
+ catch (error) {
153
+ this.fail(error);
154
+ }
155
+ };
156
+ /**
157
+ * Set strings until nothing the world on screen draws is wanted, a frame
158
+ * after every slice that set any: the world holds a box for every label,
159
+ * the ones still being set drawn as nothing, and the frame writes in what
160
+ * landed (`FlowGlRenderer.landLabels`). The labels arrive as they are
161
+ * set, nearest the middle of the view first, where they used to wait for
162
+ * the last of them and a world packed again.
163
+ *
164
+ * Stops when the zoom starts moving again, or after a bound on slices.
165
+ */
166
+ async setLabels(atlas) {
167
+ for (let slice = 0; slice < MAX_SLICES; slice++) {
168
+ const set = await atlas.pump();
169
+ if (this.failed || this.atlas !== atlas)
170
+ return;
171
+ if (!set)
172
+ break;
173
+ this.request();
174
+ if (!atlas.wanting)
175
+ break;
176
+ }
177
+ }
178
+ /** The atlas for this pane's face and scale, made again when either
179
+ * changes — and dropped where there is no text engine at all. */
180
+ atlasFor(pane) {
181
+ const text = pane.glText?.() ?? null;
182
+ if (!text)
183
+ return null;
184
+ const key = `${text.options.family}|${text.options.scale}`;
185
+ if (!this.atlas || key !== this.atlasKey) {
186
+ this.atlas?.dispose();
187
+ this.atlas = new LabelAtlas(text);
188
+ this.atlasKey = key;
189
+ this.worldKey = null;
190
+ this.liftedKey = null;
191
+ }
192
+ return this.atlas;
193
+ }
194
+ /**
195
+ * New strings only while no zoom gesture moves, and a frame asked for once
196
+ * it has stopped, so the labels it uncovered are set without a nudge. A
197
+ * gesture is the pane's to say (`FlowGlFrame.moving`): a single step — a
198
+ * button, `fitView`, `setCenter` — is not one. Taking any change of zoom
199
+ * for one held every first appearance back by the whole rest timer: the
200
+ * stress fan's first label came 185 ms after a `setCenter`, and comes at
201
+ * 54.
202
+ */
203
+ admit(atlas, moving) {
204
+ atlas.admit = !moving;
205
+ if (moving) {
206
+ if (this.settle != null)
207
+ timers.clearTimeout?.(this.settle);
208
+ this.settle = timers.setTimeout?.(() => {
209
+ this.settle = null;
210
+ this.request();
211
+ }, 120);
212
+ }
213
+ }
214
+ surfaceError = (error) => {
215
+ this.fail(error);
216
+ };
217
+ fail(error) {
218
+ if (this.failed)
219
+ return;
220
+ this.failed = true;
221
+ this.detach();
222
+ this.props.onError(error instanceof Error ? error : new Error(String(error)));
223
+ }
224
+ }
225
+ /**
226
+ * Over the pane's box, and **transparent to the pointer**.
227
+ *
228
+ * Core hit-tests a window's surfaces before its tree (`GlAreaNode.hitSurface`
229
+ * in react-x11): a point over a `<glarea>` is over *it*, whatever sits behind
230
+ * in the tree. Everything a graph editor does with the pointer lives on the
231
+ * pane underneath, so without this a press on a card landed on the surface,
232
+ * which has no handlers, and a drag did nothing at all — found by driving
233
+ * a real drag through the Cocoa backend, which moved the node 177 px on the
234
+ * 2D renderer and 0 on this one. `pointerEvents: 'none'` is core's own way
235
+ * to say a node is for looking at, and it lets the pointer through to the
236
+ * pane as it would through any node.
237
+ *
238
+ * With node bodies over it the surface is `'box-none'` instead (below): the
239
+ * bodies take the pointer, and the surface between them still passes it on
240
+ * to the pane. Making the surface the pane's child, as `<Map>`'s is, would
241
+ * not have done: the pane's gestures are default actions, and core runs a
242
+ * default action on the event's target alone, never an ancestor.
243
+ */
244
+ /** Timers, through `globalThis`: `src/` compiles with `types: []`. */
245
+ const timers = globalThis;
246
+ const FILL = {
247
+ position: 'absolute',
248
+ left: 0,
249
+ top: 0,
250
+ right: 0,
251
+ bottom: 0,
252
+ pointerEvents: 'none',
253
+ };
254
+ /** The same, where the surface holds node bodies: they are its children,
255
+ * drawn over it, and take the pointer; the surface between them still does
256
+ * not. React Native's `'box-none'`, which react-x11 has from #637 on. */
257
+ const FILL_WITH_BODIES = { ...FILL, pointerEvents: 'box-none' };
258
+ /**
259
+ * The surface. Mounted by `<Flow>` as the pane's sibling, after it, filling
260
+ * the same box: a `<glarea>` is stacked over everything 2D in its window, so
261
+ * it lands on the pane wherever it is in the tree.
262
+ */
263
+ export function FlowGlSurface(props) {
264
+ const driver = useMemo(() => new Driver(props), []);
265
+ driver.props = props;
266
+ useEffect(() => {
267
+ driver.attach();
268
+ return () => driver.detach();
269
+ }, [driver]);
270
+ return React.createElement('glarea', {
271
+ ref: driver.areaRef,
272
+ // With bodies over it, the surface must pass the pointer through between
273
+ // them and still let them take it — `'box-none'`, react-x11#637. With
274
+ // none, `'none'` does the same and needs nothing new of core.
275
+ style: props.children ? FILL_WITH_BODIES : FILL,
276
+ clearColor: props.clearColor,
277
+ frameLoop: 'demand',
278
+ onDraw: driver.draw,
279
+ onError: driver.surfaceError,
280
+ children: props.children,
281
+ });
282
+ }
283
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/flow/gl/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ import type { FlowRect } from '../types.js';
2
+ import type { FlowScene, SceneText } from '../scene.js';
3
+ import type { GlyphQuad } from './text.js';
4
+ /** Turns a string into the quad that draws it — `./text.ts`'s atlas, or
5
+ * nothing, in which case the string is counted as a gap. */
6
+ export type TextResolver = (text: SceneText) => GlyphQuad | null;
7
+ /** Floats per line segment: the ends; then half-width, the distance along
8
+ * the line at the first end, and the dash; then the dash's offset and
9
+ * whether it marches; then the colour. */
10
+ export declare const LINE_STRIDE = 16;
11
+ /** Floats per box: the rect, the corner radius and border width, the fill,
12
+ * the border colour. A *label* is a box too — the text's corner and the
13
+ * quad's size where the rect is, its margin, a flag and the size of a
14
+ * field texel where the corner radius and border are, its ink in the fill
15
+ * and its place in the atlas where a border colour would be — so labels
16
+ * share the box stream and land in it exactly where the 2D painter draws
17
+ * them. */
18
+ export declare const BOX_STRIDE = 16;
19
+ /** Floats per triangle *vertex*: position and colour. */
20
+ export declare const TRI_STRIDE = 6;
21
+ /** One run of one kind of instance, drawn in turn. `scissor` limits it to a
22
+ * rect — the minimap's viewport box is allowed to spill past the panel in
23
+ * the scene and has to be cut, as the 2D painter's `clipRect` cuts it. */
24
+ export interface DrawRange {
25
+ kind: 'grid' | 'line' | 'box' | 'tri';
26
+ first: number;
27
+ count: number;
28
+ scissor?: FlowRect;
29
+ }
30
+ /** What {@link packScene} could not put on the GPU, counted rather than
31
+ * dropped silently — the renderer reports it, and a caller deciding
32
+ * whether GL is good enough for a graph reads it. */
33
+ export interface PackGaps {
34
+ /** Strings: node labels, descriptions, edge labels, handle labels. The
35
+ * label atlas is the next piece of work (`docs/prd-flow-gl.md`). */
36
+ text: number;
37
+ /** Nodes whose type draws itself through `paint`, which is a 2D API. */
38
+ custom: number;
39
+ }
40
+ /**
41
+ * Which part of a scene to pack.
42
+ *
43
+ * The GL renderer keeps the graph — edges, heads, chips, nodes, the line a
44
+ * connection gesture draws — as a **world** it packs only when it changes,
45
+ * built at a pinned origin so that a pan moves a uniform and repacks
46
+ * nothing. What is pinned to the *pane* rather than to the graph is the
47
+ * **overlay**, packed every frame because it is a handful of boxes: the
48
+ * background and the grid under the world, the selection rectangle, the
49
+ * minimap and the controls over it. `'all'` is both, in one pass, in the 2D
50
+ * painter's order.
51
+ */
52
+ export type PackLayer = 'all' | 'world' | 'overlay';
53
+ /** A label packed before its field landed: which box it is, the field or
54
+ * request it waits for, and the label itself (`LabelAtlas.landing`). */
55
+ export interface WaitingLabel {
56
+ index: number;
57
+ key: string;
58
+ text: SceneText;
59
+ }
60
+ /** A label packed drawn from a field, and the placement of the field it
61
+ * was drawn from (`LabelAtlas.slotOf`): a box whose field was dropped or
62
+ * moved is found by comparing the two. */
63
+ export interface DrawnLabel extends WaitingLabel {
64
+ slot: number;
65
+ }
66
+ export interface PackedScene {
67
+ lines: Float32Array;
68
+ lineCount: number;
69
+ boxes: Float32Array;
70
+ boxCount: number;
71
+ tris: Float32Array;
72
+ triCount: number;
73
+ ranges: DrawRange[];
74
+ /** For an overlay: the ranges before this index go under the world and
75
+ * the rest over it. */
76
+ split: number;
77
+ /** For a world: the ranges before this index are the edges, and the rest
78
+ * the cards — where a layer of lifted nodes goes in two halves, its
79
+ * edges under every card and its cards over them. */
80
+ nodesAt: number;
81
+ gaps: PackGaps;
82
+ /** Labels in `boxes` drawn as nothing until their fields land — the
83
+ * renderer writes each in when it does. */
84
+ waiting: WaitingLabel[];
85
+ /** Labels in `boxes` drawn from their fields. */
86
+ drawn: DrawnLabel[];
87
+ }
88
+ /** Packs scenes into streams it owns and reuses. One per renderer. */
89
+ export declare class ScenePacker {
90
+ private readonly colors;
91
+ private readonly lineStream;
92
+ private readonly boxStream;
93
+ private readonly triStream;
94
+ private ranges;
95
+ private gaps;
96
+ private waiting;
97
+ private drawn;
98
+ /** The scissor for whatever is appended until it is changed. */
99
+ private scissor;
100
+ private text;
101
+ /** The next range recorded is a new one, whatever the last was. */
102
+ private cut;
103
+ private nodesAt;
104
+ pack(scene: FlowScene, layer?: PackLayer, text?: TextResolver): PackedScene;
105
+ /** Extend the last range when it is the same kind under the same scissor,
106
+ * or open a new one — which is what keeps a frame to a handful of draws
107
+ * however the kinds interleave. */
108
+ private record;
109
+ private box;
110
+ private boxRaw;
111
+ /**
112
+ * A handle as a box whose corners meet. The 2D painter strokes a circle's
113
+ * outline *centred* on its edge — half the pen outside the radius — where
114
+ * a box's border is inset, so the disc is grown by half the pen to put the
115
+ * ring where the circle's was.
116
+ */
117
+ private handle;
118
+ /** A string as a box that samples its field in the atlas; counted as a
119
+ * gap when the atlas has nothing to draw it from yet — and packed all
120
+ * the same when its field is being set, drawn as nothing until it lands
121
+ * (`waiting`). */
122
+ private label;
123
+ private ink;
124
+ private rule;
125
+ /** A polyline as capsule segments, carrying the distance along it so a
126
+ * dash runs continuously round every vertex. */
127
+ private polyline;
128
+ /** A convex polygon as a triangle fan off its first vertex. Arrowheads
129
+ * are the only filled polygons a graph draws, and both kinds are
130
+ * convex. */
131
+ private polygon;
132
+ }
133
+ //# sourceMappingURL=pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../../src/flow/gl/pack.ts"],"names":[],"mappings":"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"}