@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,437 @@
1
+ // The grid track sizing algorithm (CSS Grid 1, 11.3 to 11.8), the same for
2
+ // a grid's columns and for its rows: arithmetic over each track's sizing
3
+ // functions and what each item in the tracks contributes, with no layout in
4
+ // it. `css-grid.ts` measures the items and resolves the percentages; this
5
+ // decides what the tracks come to.
6
+ //
7
+ // A track keeps a base size, which only grows, and a growth limit, the most
8
+ // it wants. The items in one track alone set both (11.5.2); an item that
9
+ // spans several shares what it needs past their sizes out among the ones
10
+ // its sizing functions let grow — equally, as far as each one's limit, and
11
+ // past the limits only to the ones sized by their content — a span at a
12
+ // time, the fewest first (11.5.3), and the items that cross an `fr` track
13
+ // out to those alone, by their factors (11.5.4). The free space then grows
14
+ // every track equally towards its limit (11.6), the `fr` tracks share what
15
+ // is left by their factors (11.7), and the `auto` ones stretch into what
16
+ // remains (11.8).
17
+
18
+ /** A track's least size: a length, or its content's. */
19
+ export type TrackMin = number | 'min-content' | 'max-content' | 'auto';
20
+
21
+ /** A track's greatest size: a length, its content's, a share of the space
22
+ * left, or its content's no larger than `fit-content()`'s argument. */
23
+ export type TrackMax =
24
+ | number
25
+ | 'min-content'
26
+ | 'max-content'
27
+ | 'auto'
28
+ | { fr: number }
29
+ | { fit: number };
30
+
31
+ export interface SizingTrack {
32
+ min: TrackMin;
33
+ max: TrackMax;
34
+ }
35
+
36
+ /** An item's place along the axis, and its margin box's size at its
37
+ * narrowest, at its widest, and the least it can be (the "minimum
38
+ * contribution"), each asked for only when a track needs it. */
39
+ export interface TrackItem {
40
+ start: number;
41
+ span: number;
42
+ minContent(): number;
43
+ maxContent(): number;
44
+ minimum(): number;
45
+ }
46
+
47
+ export interface TrackSpace {
48
+ /**
49
+ * The grid's content size along the axis: `Infinity` where it has none
50
+ * and is as large as its tracks want to be (a max-content constraint),
51
+ * 0 where it is as small as they can be (a min-content one).
52
+ */
53
+ available: number;
54
+ /** A least content size where `available` is infinite — a grid's
55
+ * `min-height` — which its `fr` and `auto` tracks fill. */
56
+ least: number;
57
+ gap: number;
58
+ /** Whether the `auto` tracks stretch into the space left, as a content
59
+ * distribution of `normal` or `stretch` has them. */
60
+ stretch: boolean;
61
+ }
62
+
63
+ const EPS = 1e-6;
64
+
65
+ const frOf = (max: TrackMax): number | null =>
66
+ typeof max === 'object' && 'fr' in max ? max.fr : null;
67
+ const fitOf = (max: TrackMax): number | null =>
68
+ typeof max === 'object' && 'fit' in max ? max.fit : null;
69
+ /** A maximum its content sizes: `min-content`, `max-content`, `auto` and
70
+ * `fit-content()`. */
71
+ const intrinsicMax = (max: TrackMax): boolean =>
72
+ typeof max === 'string' || fitOf(max) !== null;
73
+ /** A maximum its content's widest sizes, which `auto` is as a maximum. */
74
+ const maxContentMax = (max: TrackMax): boolean =>
75
+ max === 'max-content' || max === 'auto' || fitOf(max) !== null;
76
+
77
+ /** The largest of what the items say, and no less than nothing. */
78
+ function most(items: TrackItem[], size: (item: TrackItem) => number): number {
79
+ let out = 0;
80
+ for (const item of items) out = Math.max(out, size(item));
81
+ return out;
82
+ }
83
+
84
+ const minContentOf = (item: TrackItem) => item.minContent();
85
+ const maxContentOf = (item: TrackItem) => item.maxContent();
86
+ const minimumOf = (item: TrackItem) => item.minimum();
87
+
88
+ /**
89
+ * Share `room` out equally among `list`, freezing each track as its share
90
+ * reaches its headroom, and growing the rest on: what each gets is added to
91
+ * `inc`. Answers what is left once every track is frozen.
92
+ */
93
+ function share(
94
+ room: number,
95
+ list: number[],
96
+ headroom: (track: number) => number,
97
+ inc: number[],
98
+ ): number {
99
+ let open = list.filter((t) => headroom(t) - inc[t] > EPS);
100
+ while (room > EPS && open.length) {
101
+ let step = room / open.length;
102
+ for (const t of open) step = Math.min(step, headroom(t) - inc[t]);
103
+ for (const t of open) inc[t] += step;
104
+ room -= step * open.length;
105
+ open = open.filter((t) => headroom(t) - inc[t] > EPS);
106
+ }
107
+ return room;
108
+ }
109
+
110
+ /**
111
+ * The tracks' sizes, in order. An item past the last track is not counted,
112
+ * and one that runs past it is counted in the tracks it is in.
113
+ */
114
+ export function sizeTracks(
115
+ tracks: readonly SizingTrack[],
116
+ items: readonly TrackItem[],
117
+ space: TrackSpace,
118
+ ): number[] {
119
+ const n = tracks.length;
120
+ const { gap } = space;
121
+ const base: number[] = new Array<number>(n);
122
+ const limit: number[] = new Array<number>(n);
123
+ // 11.4: a track with a length for a minimum starts at it, and one with a
124
+ // length for a maximum stops at it
125
+ for (let t = 0; t < n; t += 1) {
126
+ const { min, max } = tracks[t];
127
+ base[t] = typeof min === 'number' ? min : 0;
128
+ limit[t] = typeof max === 'number' ? Math.max(max, base[t]) : Infinity;
129
+ }
130
+
131
+ const alone: TrackItem[][] = [];
132
+ const spans = new Map<number, TrackItem[]>();
133
+ const flexing: TrackItem[] = [];
134
+ for (const item of items) {
135
+ if (item.start >= n || item.span < 1) continue;
136
+ const end = Math.min(n, item.start + item.span);
137
+ let flexible = false;
138
+ for (let t = item.start; t < end; t += 1) {
139
+ if (frOf(tracks[t].max) !== null) flexible = true;
140
+ }
141
+ if (flexible) flexing.push(item);
142
+ else if (end - item.start === 1) (alone[item.start] ??= []).push(item);
143
+ else {
144
+ const group = spans.get(end - item.start);
145
+ if (group) group.push(item);
146
+ else spans.set(end - item.start, [item]);
147
+ }
148
+ }
149
+
150
+ // 11.5.2: the items in one track alone, which is not an `fr` one
151
+ for (let t = 0; t < n; t += 1) {
152
+ const list = alone[t];
153
+ if (!list) continue;
154
+ const { min, max } = tracks[t];
155
+ if (min === 'min-content')
156
+ base[t] = Math.max(base[t], most(list, minContentOf));
157
+ else if (min === 'max-content') {
158
+ base[t] = Math.max(base[t], most(list, maxContentOf));
159
+ } else if (min === 'auto')
160
+ base[t] = Math.max(base[t], most(list, minimumOf));
161
+ const fit = fitOf(max);
162
+ if (max === 'min-content') limit[t] = most(list, minContentOf);
163
+ else if (max === 'max-content' || max === 'auto') {
164
+ limit[t] = most(list, maxContentOf);
165
+ } else if (fit !== null) limit[t] = Math.min(fit, most(list, maxContentOf));
166
+ if (limit[t] < base[t]) limit[t] = base[t];
167
+ }
168
+
169
+ // a growth limit counts as its base size while it is infinite
170
+ const sizeOf = (t: number, limits: boolean): number =>
171
+ limits && Number.isFinite(limit[t]) ? limit[t] : base[t];
172
+ // a growth limit set in the step before, from infinite, grows on freely
173
+ const growable: boolean[] = new Array<boolean>(n).fill(false);
174
+ const planned: number[] = new Array<number>(n).fill(0);
175
+ const inc: number[] = new Array<number>(n).fill(0);
176
+ const affected: number[] = [];
177
+
178
+ /**
179
+ * 11.5.1: grow the base sizes, or the growth limits, of the tracks
180
+ * `affects` picks by what the items need past the sizes of all the
181
+ * tracks they span — each track by the most any one item asks of it.
182
+ * `past` names the tracks that take what is left once the others reach
183
+ * their limits: those whose maximums are content's (`intrinsic`), whose
184
+ * maximums are their content's widest (`max-content`), or all of them.
185
+ */
186
+ const grow = (
187
+ group: TrackItem[],
188
+ limits: boolean,
189
+ affects: (t: number) => boolean,
190
+ size: (item: TrackItem) => number,
191
+ past: 'intrinsic' | 'max-content' | 'all',
192
+ flexible: boolean,
193
+ fitted = false,
194
+ ): void => {
195
+ planned.fill(0);
196
+ for (const item of group) {
197
+ const end = Math.min(n, item.start + item.span);
198
+ affected.length = 0;
199
+ let taken = gap * (end - item.start - 1);
200
+ for (let t = item.start; t < end; t += 1) {
201
+ taken += sizeOf(t, limits);
202
+ if (affects(t)) affected.push(t);
203
+ }
204
+ if (!affected.length) continue;
205
+ let room = size(item) - taken;
206
+ if (!(room > EPS)) continue;
207
+ for (const t of affected) inc[t] = 0;
208
+ if (flexible) {
209
+ // across `fr` tracks, by their factors — the rest of the room
210
+ // equally where the factors come to less than one
211
+ let factors = 0;
212
+ for (const t of affected) factors += frOf(tracks[t].max)!;
213
+ for (const t of affected) {
214
+ const fr = frOf(tracks[t].max)!;
215
+ inc[t] =
216
+ factors >= 1
217
+ ? (room * fr) / factors
218
+ : room * fr + (room * (1 - factors)) / affected.length;
219
+ }
220
+ } else {
221
+ // equally, as far as each track's limit: a base size's is its
222
+ // growth limit, or `fit-content()`'s argument; a growth limit's is
223
+ // itself, but where it is infinite or has just stopped being
224
+ room = share(
225
+ room,
226
+ affected,
227
+ (t) => {
228
+ const fit = fitOf(tracks[t].max);
229
+ let cap: number;
230
+ if (!limits)
231
+ cap = fit === null ? limit[t] : Math.min(limit[t], fit);
232
+ else {
233
+ cap =
234
+ growable[t] || !Number.isFinite(limit[t]) ? Infinity : limit[t];
235
+ if (fitted && fit !== null) cap = Math.min(cap, fit);
236
+ }
237
+ return cap - sizeOf(t, limits);
238
+ },
239
+ inc,
240
+ );
241
+ if (room > EPS) {
242
+ // and past the limits, to the tracks whose maximums let them
243
+ let beyond = affected.slice();
244
+ if (past !== 'all') {
245
+ const kind = past === 'intrinsic' ? intrinsicMax : maxContentMax;
246
+ const picked = beyond.filter((t) => kind(tracks[t].max));
247
+ if (picked.length) beyond = picked;
248
+ }
249
+ share(
250
+ room,
251
+ beyond,
252
+ (t) => {
253
+ const fit = fitOf(tracks[t].max);
254
+ return fitted && fit !== null
255
+ ? fit - sizeOf(t, limits)
256
+ : Infinity;
257
+ },
258
+ inc,
259
+ );
260
+ }
261
+ }
262
+ for (const t of affected) if (inc[t] > planned[t]) planned[t] = inc[t];
263
+ }
264
+ for (let t = 0; t < n; t += 1) {
265
+ if (!(planned[t] > 0)) continue;
266
+ if (limits) limit[t] = sizeOf(t, true) + planned[t];
267
+ else base[t] += planned[t];
268
+ }
269
+ };
270
+
271
+ /** 11.5.3 and 11.5.4, for one group of items. */
272
+ const accommodate = (group: TrackItem[], flexible: boolean): void => {
273
+ // an item crossing an `fr` track grows the `fr` tracks alone
274
+ const may = (t: number) => !flexible || frOf(tracks[t].max) !== null;
275
+ grow(
276
+ group,
277
+ false,
278
+ (t) => may(t) && typeof tracks[t].min !== 'number',
279
+ minimumOf,
280
+ 'intrinsic',
281
+ flexible,
282
+ );
283
+ grow(
284
+ group,
285
+ false,
286
+ (t) =>
287
+ may(t) &&
288
+ (tracks[t].min === 'min-content' || tracks[t].min === 'max-content'),
289
+ minContentOf,
290
+ 'intrinsic',
291
+ flexible,
292
+ );
293
+ grow(
294
+ group,
295
+ false,
296
+ (t) => may(t) && tracks[t].min === 'max-content',
297
+ maxContentOf,
298
+ 'max-content',
299
+ flexible,
300
+ );
301
+ for (let t = 0; t < n; t += 1) if (limit[t] < base[t]) limit[t] = base[t];
302
+ // an `fr` track's maximum is not its content's
303
+ if (flexible) return;
304
+ const infinite = limit.map((l) => !Number.isFinite(l));
305
+ grow(
306
+ group,
307
+ true,
308
+ (t) => intrinsicMax(tracks[t].max),
309
+ minContentOf,
310
+ 'all',
311
+ false,
312
+ );
313
+ for (let t = 0; t < n; t += 1) {
314
+ growable[t] = infinite[t] && Number.isFinite(limit[t]);
315
+ }
316
+ grow(
317
+ group,
318
+ true,
319
+ (t) => maxContentMax(tracks[t].max),
320
+ maxContentOf,
321
+ 'all',
322
+ false,
323
+ true,
324
+ );
325
+ growable.fill(false);
326
+ };
327
+
328
+ for (const s of [...spans.keys()].sort((a, b) => a - b)) {
329
+ accommodate(spans.get(s)!, false);
330
+ }
331
+ if (flexing.length) accommodate(flexing, true);
332
+ for (let t = 0; t < n; t += 1) {
333
+ if (!Number.isFinite(limit[t])) limit[t] = base[t];
334
+ }
335
+
336
+ const used = (): number => {
337
+ let sum = gap * Math.max(0, n - 1);
338
+ for (let t = 0; t < n; t += 1) sum += base[t];
339
+ return sum;
340
+ };
341
+
342
+ // 11.6: the free space grows every track equally towards its limit, and
343
+ // with no end to it, all the way
344
+ if (!Number.isFinite(space.available)) {
345
+ for (let t = 0; t < n; t += 1) base[t] = Math.max(base[t], limit[t]);
346
+ } else {
347
+ const free = space.available - used();
348
+ if (free > EPS) {
349
+ inc.fill(0);
350
+ const all = tracks.map((_, t) => t);
351
+ share(free, all, (t) => limit[t] - base[t], inc);
352
+ for (let t = 0; t < n; t += 1) base[t] += inc[t];
353
+ }
354
+ }
355
+
356
+ // 11.7: the `fr` tracks, at what one `fr` comes to
357
+ const flex: number[] = [];
358
+ for (let t = 0; t < n; t += 1) if (frOf(tracks[t].max) !== null) flex.push(t);
359
+ if (flex.length) {
360
+ /** 11.7.1: what an `fr` is worth filling `fill` with `list`, found
361
+ * again without any `fr` track its base size is more than its share. */
362
+ const frSize = (list: number[], fill: number): number => {
363
+ const flexible = new Set(
364
+ list.filter((t) => frOf(tracks[t].max) !== null),
365
+ );
366
+ for (;;) {
367
+ let leftover = fill - gap * Math.max(0, list.length - 1);
368
+ let factors = 0;
369
+ for (const t of list) {
370
+ if (flexible.has(t)) factors += frOf(tracks[t].max)!;
371
+ else leftover -= base[t];
372
+ }
373
+ const unit = Math.max(0, leftover) / Math.max(1, factors);
374
+ let frozen = false;
375
+ for (const t of flexible) {
376
+ if (unit * frOf(tracks[t].max)! < base[t]) {
377
+ flexible.delete(t);
378
+ frozen = true;
379
+ }
380
+ }
381
+ if (!frozen) return unit;
382
+ }
383
+ };
384
+ const all = tracks.map((_, t) => t);
385
+ let unit: number;
386
+ if (Number.isFinite(space.available)) unit = frSize(all, space.available);
387
+ else {
388
+ // with no size of its own, the axis takes the `fr` that holds every
389
+ // track's base size and every item across `fr` tracks at its widest
390
+ unit = 0;
391
+ for (const t of flex) {
392
+ const fr = frOf(tracks[t].max)!;
393
+ unit = Math.max(unit, fr > 1 ? base[t] / fr : base[t]);
394
+ }
395
+ for (const item of flexing) {
396
+ const list: number[] = [];
397
+ for (
398
+ let t = item.start;
399
+ t < Math.min(n, item.start + item.span);
400
+ t += 1
401
+ ) {
402
+ list.push(t);
403
+ }
404
+ unit = Math.max(unit, frSize(list, item.maxContent()));
405
+ }
406
+ // and fills a least size it has
407
+ if (space.least > 0) {
408
+ let total = gap * Math.max(0, n - 1);
409
+ for (let t = 0; t < n; t += 1) {
410
+ const fr = frOf(tracks[t].max);
411
+ total += fr === null ? base[t] : Math.max(base[t], unit * fr);
412
+ }
413
+ if (total < space.least) unit = frSize(all, space.least);
414
+ }
415
+ }
416
+ for (const t of flex) {
417
+ const size = unit * frOf(tracks[t].max)!;
418
+ if (size > base[t]) base[t] = size;
419
+ }
420
+ }
421
+
422
+ // 11.8: the `auto` tracks stretch into what is left, where the axis has
423
+ // a size, or a least size
424
+ if (space.stretch) {
425
+ const room = Number.isFinite(space.available)
426
+ ? space.available
427
+ : space.least;
428
+ const free = room - used();
429
+ if (free > EPS) {
430
+ const stretchy: number[] = [];
431
+ for (let t = 0; t < n; t += 1)
432
+ if (tracks[t].max === 'auto') stretchy.push(t);
433
+ for (const t of stretchy) base[t] += free / stretchy.length;
434
+ }
435
+ }
436
+ return base;
437
+ }