@react-x11/components 0.1.0 → 0.2.1

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 (788) hide show
  1. package/README.md +979 -21
  2. package/dist/ansi/cast.d.ts +48 -0
  3. package/dist/ansi/cast.d.ts.map +1 -0
  4. package/dist/ansi/cast.js +135 -0
  5. package/dist/ansi/cast.js.map +1 -0
  6. package/dist/ansi/index.d.ts +10 -0
  7. package/dist/ansi/index.d.ts.map +1 -0
  8. package/dist/ansi/index.js +27 -0
  9. package/dist/ansi/index.js.map +1 -0
  10. package/dist/ansi/palette.d.ts +79 -0
  11. package/dist/ansi/palette.d.ts.map +1 -0
  12. package/dist/ansi/palette.js +155 -0
  13. package/dist/ansi/palette.js.map +1 -0
  14. package/dist/ansi/parse.d.ts +114 -0
  15. package/dist/ansi/parse.d.ts.map +1 -0
  16. package/dist/ansi/parse.js +687 -0
  17. package/dist/ansi/parse.js.map +1 -0
  18. package/dist/ansi/sgr.d.ts +87 -0
  19. package/dist/ansi/sgr.d.ts.map +1 -0
  20. package/dist/ansi/sgr.js +302 -0
  21. package/dist/ansi/sgr.js.map +1 -0
  22. package/dist/ansi/utf8.d.ts +15 -0
  23. package/dist/ansi/utf8.d.ts.map +1 -0
  24. package/dist/ansi/utf8.js +82 -0
  25. package/dist/ansi/utf8.js.map +1 -0
  26. package/dist/calendar/Calendar.d.ts +136 -0
  27. package/dist/calendar/Calendar.d.ts.map +1 -0
  28. package/dist/calendar/Calendar.js +460 -0
  29. package/dist/calendar/Calendar.js.map +1 -0
  30. package/dist/calendar/DatePicker.d.ts +52 -0
  31. package/dist/calendar/DatePicker.d.ts.map +1 -0
  32. package/dist/calendar/DatePicker.js +257 -0
  33. package/dist/calendar/DatePicker.js.map +1 -0
  34. package/dist/calendar/dates.d.ts +90 -0
  35. package/dist/calendar/dates.d.ts.map +1 -0
  36. package/dist/calendar/dates.js +236 -0
  37. package/dist/calendar/dates.js.map +1 -0
  38. package/dist/calendar/index.d.ts +8 -0
  39. package/dist/calendar/index.d.ts.map +1 -0
  40. package/dist/calendar/index.js +15 -0
  41. package/dist/calendar/index.js.map +1 -0
  42. package/dist/charts/components.d.ts +141 -0
  43. package/dist/charts/components.d.ts.map +1 -0
  44. package/dist/charts/components.js +580 -0
  45. package/dist/charts/components.js.map +1 -0
  46. package/dist/charts/data.d.ts +198 -0
  47. package/dist/charts/data.d.ts.map +1 -0
  48. package/dist/charts/data.js +616 -0
  49. package/dist/charts/data.js.map +1 -0
  50. package/dist/charts/hx.d.ts +21 -0
  51. package/dist/charts/hx.d.ts.map +1 -0
  52. package/dist/charts/hx.js +15 -0
  53. package/dist/charts/hx.js.map +1 -0
  54. package/dist/charts/index.d.ts +27 -0
  55. package/dist/charts/index.d.ts.map +1 -0
  56. package/dist/charts/index.js +38 -0
  57. package/dist/charts/index.js.map +1 -0
  58. package/dist/charts/node.d.ts +96 -0
  59. package/dist/charts/node.d.ts.map +1 -0
  60. package/dist/charts/node.js +720 -0
  61. package/dist/charts/node.js.map +1 -0
  62. package/dist/charts/render.d.ts +153 -0
  63. package/dist/charts/render.d.ts.map +1 -0
  64. package/dist/charts/render.js +762 -0
  65. package/dist/charts/render.js.map +1 -0
  66. package/dist/charts/scale.d.ts +42 -0
  67. package/dist/charts/scale.d.ts.map +1 -0
  68. package/dist/charts/scale.js +173 -0
  69. package/dist/charts/scale.js.map +1 -0
  70. package/dist/charts/spec.d.ts +91 -0
  71. package/dist/charts/spec.d.ts.map +1 -0
  72. package/dist/charts/spec.js +33 -0
  73. package/dist/charts/spec.js.map +1 -0
  74. package/dist/charts/timers.d.ts +6 -0
  75. package/dist/charts/timers.d.ts.map +1 -0
  76. package/dist/charts/timers.js +14 -0
  77. package/dist/charts/timers.js.map +1 -0
  78. package/dist/code/hx.d.ts +24 -0
  79. package/dist/code/hx.d.ts.map +1 -0
  80. package/dist/code/hx.js +25 -0
  81. package/dist/code/hx.js.map +1 -0
  82. package/dist/code/index.d.ts +45 -0
  83. package/dist/code/index.d.ts.map +1 -0
  84. package/dist/code/index.js +93 -0
  85. package/dist/code/index.js.map +1 -0
  86. package/dist/code-editor/completion.d.ts +26 -0
  87. package/dist/code-editor/completion.d.ts.map +1 -0
  88. package/dist/code-editor/completion.js +129 -0
  89. package/dist/code-editor/completion.js.map +1 -0
  90. package/dist/code-editor/doc.d.ts +35 -0
  91. package/dist/code-editor/doc.d.ts.map +1 -0
  92. package/dist/code-editor/doc.js +162 -0
  93. package/dist/code-editor/doc.js.map +1 -0
  94. package/dist/code-editor/hx.d.ts +13 -0
  95. package/dist/code-editor/hx.d.ts.map +1 -0
  96. package/dist/code-editor/hx.js +10 -0
  97. package/dist/code-editor/hx.js.map +1 -0
  98. package/dist/code-editor/index.d.ts +88 -0
  99. package/dist/code-editor/index.d.ts.map +1 -0
  100. package/dist/code-editor/index.js +401 -0
  101. package/dist/code-editor/index.js.map +1 -0
  102. package/dist/code-editor/node.d.ts +343 -0
  103. package/dist/code-editor/node.d.ts.map +1 -0
  104. package/dist/code-editor/node.js +1521 -0
  105. package/dist/code-editor/node.js.map +1 -0
  106. package/dist/code-language/hljs.d.ts +47 -0
  107. package/dist/code-language/hljs.d.ts.map +1 -0
  108. package/dist/code-language/hljs.js +211 -0
  109. package/dist/code-language/hljs.js.map +1 -0
  110. package/dist/code-language/index.d.ts +22 -0
  111. package/dist/code-language/index.d.ts.map +1 -0
  112. package/dist/code-language/index.js +20 -0
  113. package/dist/code-language/index.js.map +1 -0
  114. package/dist/code-language/languages/glsl.d.ts +4 -0
  115. package/dist/code-language/languages/glsl.d.ts.map +1 -0
  116. package/dist/code-language/languages/glsl.js +99 -0
  117. package/dist/code-language/languages/glsl.js.map +1 -0
  118. package/dist/code-language/languages/javascript.d.ts +10 -0
  119. package/dist/code-language/languages/javascript.d.ts.map +1 -0
  120. package/dist/code-language/languages/javascript.js +360 -0
  121. package/dist/code-language/languages/javascript.js.map +1 -0
  122. package/dist/code-language/languages/json.d.ts +4 -0
  123. package/dist/code-language/languages/json.d.ts.map +1 -0
  124. package/dist/code-language/languages/json.js +68 -0
  125. package/dist/code-language/languages/json.js.map +1 -0
  126. package/dist/code-language/languages/shell.d.ts +4 -0
  127. package/dist/code-language/languages/shell.d.ts.map +1 -0
  128. package/dist/code-language/languages/shell.js +189 -0
  129. package/dist/code-language/languages/shell.js.map +1 -0
  130. package/dist/code-language/languages/sql.d.ts +11 -0
  131. package/dist/code-language/languages/sql.d.ts.map +1 -0
  132. package/dist/code-language/languages/sql.js +133 -0
  133. package/dist/code-language/languages/sql.js.map +1 -0
  134. package/dist/code-language/lezer.d.ts +24 -0
  135. package/dist/code-language/lezer.d.ts.map +1 -0
  136. package/dist/code-language/lezer.js +148 -0
  137. package/dist/code-language/lezer.js.map +1 -0
  138. package/dist/code-language/registry.d.ts +19 -0
  139. package/dist/code-language/registry.d.ts.map +1 -0
  140. package/dist/code-language/registry.js +56 -0
  141. package/dist/code-language/registry.js.map +1 -0
  142. package/dist/code-language/runs.d.ts +35 -0
  143. package/dist/code-language/runs.d.ts.map +1 -0
  144. package/dist/code-language/runs.js +88 -0
  145. package/dist/code-language/runs.js.map +1 -0
  146. package/dist/code-language/stream.d.ts +70 -0
  147. package/dist/code-language/stream.d.ts.map +1 -0
  148. package/dist/code-language/stream.js +243 -0
  149. package/dist/code-language/stream.js.map +1 -0
  150. package/dist/code-language/textmate.d.ts +27 -0
  151. package/dist/code-language/textmate.d.ts.map +1 -0
  152. package/dist/code-language/textmate.js +86 -0
  153. package/dist/code-language/textmate.js.map +1 -0
  154. package/dist/code-language/theme.d.ts +26 -0
  155. package/dist/code-language/theme.d.ts.map +1 -0
  156. package/dist/code-language/theme.js +108 -0
  157. package/dist/code-language/theme.js.map +1 -0
  158. package/dist/code-language/timers.d.ts +7 -0
  159. package/dist/code-language/timers.d.ts.map +1 -0
  160. package/dist/code-language/timers.js +22 -0
  161. package/dist/code-language/timers.js.map +1 -0
  162. package/dist/code-language/types.d.ts +173 -0
  163. package/dist/code-language/types.d.ts.map +1 -0
  164. package/dist/code-language/types.js +41 -0
  165. package/dist/code-language/types.js.map +1 -0
  166. package/dist/codeblock/index.d.ts +69 -0
  167. package/dist/codeblock/index.d.ts.map +1 -0
  168. package/dist/codeblock/index.js +85 -0
  169. package/dist/codeblock/index.js.map +1 -0
  170. package/dist/color-picker/ColorField.d.ts +39 -0
  171. package/dist/color-picker/ColorField.d.ts.map +1 -0
  172. package/dist/color-picker/ColorField.js +239 -0
  173. package/dist/color-picker/ColorField.js.map +1 -0
  174. package/dist/color-picker/ColorPicker.d.ts +109 -0
  175. package/dist/color-picker/ColorPicker.d.ts.map +1 -0
  176. package/dist/color-picker/ColorPicker.js +757 -0
  177. package/dist/color-picker/ColorPicker.js.map +1 -0
  178. package/dist/color-picker/color.d.ts +105 -0
  179. package/dist/color-picker/color.d.ts.map +1 -0
  180. package/dist/color-picker/color.js +313 -0
  181. package/dist/color-picker/color.js.map +1 -0
  182. package/dist/color-picker/index.d.ts +8 -0
  183. package/dist/color-picker/index.d.ts.map +1 -0
  184. package/dist/color-picker/index.js +19 -0
  185. package/dist/color-picker/index.js.map +1 -0
  186. package/dist/desktop-calendar/eds.d.ts +102 -0
  187. package/dist/desktop-calendar/eds.d.ts.map +1 -0
  188. package/dist/desktop-calendar/eds.js +356 -0
  189. package/dist/desktop-calendar/eds.js.map +1 -0
  190. package/dist/desktop-calendar/ical.d.ts +63 -0
  191. package/dist/desktop-calendar/ical.d.ts.map +1 -0
  192. package/dist/desktop-calendar/ical.js +57 -0
  193. package/dist/desktop-calendar/ical.js.map +1 -0
  194. package/dist/desktop-calendar/index.d.ts +72 -0
  195. package/dist/desktop-calendar/index.d.ts.map +1 -0
  196. package/dist/desktop-calendar/index.js +213 -0
  197. package/dist/desktop-calendar/index.js.map +1 -0
  198. package/dist/embed/client.d.ts +121 -0
  199. package/dist/embed/client.d.ts.map +1 -0
  200. package/dist/embed/client.js +203 -0
  201. package/dist/embed/client.js.map +1 -0
  202. package/dist/embed/host.d.ts +96 -0
  203. package/dist/embed/host.d.ts.map +1 -0
  204. package/dist/embed/host.js +266 -0
  205. package/dist/embed/host.js.map +1 -0
  206. package/dist/embed/index.d.ts +5 -0
  207. package/dist/embed/index.d.ts.map +1 -0
  208. package/dist/embed/index.js +13 -0
  209. package/dist/embed/index.js.map +1 -0
  210. package/dist/embed/timers.d.ts +6 -0
  211. package/dist/embed/timers.d.ts.map +1 -0
  212. package/dist/embed/timers.js +16 -0
  213. package/dist/embed/timers.js.map +1 -0
  214. package/dist/flow/draw.d.ts +45 -0
  215. package/dist/flow/draw.d.ts.map +1 -0
  216. package/dist/flow/draw.js +295 -0
  217. package/dist/flow/draw.js.map +1 -0
  218. package/dist/flow/index.d.ts +64 -0
  219. package/dist/flow/index.d.ts.map +1 -0
  220. package/dist/flow/index.js +306 -0
  221. package/dist/flow/index.js.map +1 -0
  222. package/dist/flow/model.d.ts +158 -0
  223. package/dist/flow/model.d.ts.map +1 -0
  224. package/dist/flow/model.js +566 -0
  225. package/dist/flow/model.js.map +1 -0
  226. package/dist/flow/node.d.ts +429 -0
  227. package/dist/flow/node.d.ts.map +1 -0
  228. package/dist/flow/node.js +3025 -0
  229. package/dist/flow/node.js.map +1 -0
  230. package/dist/flow/paths.d.ts +43 -0
  231. package/dist/flow/paths.d.ts.map +1 -0
  232. package/dist/flow/paths.js +327 -0
  233. package/dist/flow/paths.js.map +1 -0
  234. package/dist/flow/types.d.ts +561 -0
  235. package/dist/flow/types.d.ts.map +1 -0
  236. package/dist/flow/types.js +2 -0
  237. package/dist/flow/types.js.map +1 -0
  238. package/dist/formula/hx.d.ts +24 -0
  239. package/dist/formula/hx.d.ts.map +1 -0
  240. package/dist/formula/hx.js +25 -0
  241. package/dist/formula/hx.js.map +1 -0
  242. package/dist/formula/index.d.ts +74 -0
  243. package/dist/formula/index.d.ts.map +1 -0
  244. package/dist/formula/index.js +155 -0
  245. package/dist/formula/index.js.map +1 -0
  246. package/dist/formula/katex.d.ts +78 -0
  247. package/dist/formula/katex.d.ts.map +1 -0
  248. package/dist/formula/katex.js +130 -0
  249. package/dist/formula/katex.js.map +1 -0
  250. package/dist/formula/layout.d.ts +103 -0
  251. package/dist/formula/layout.d.ts.map +1 -0
  252. package/dist/formula/layout.js +716 -0
  253. package/dist/formula/layout.js.map +1 -0
  254. package/dist/formula/node.d.ts +50 -0
  255. package/dist/formula/node.d.ts.map +1 -0
  256. package/dist/formula/node.js +351 -0
  257. package/dist/formula/node.js.map +1 -0
  258. package/dist/html/controls.d.ts +48 -0
  259. package/dist/html/controls.d.ts.map +1 -0
  260. package/dist/html/controls.js +195 -0
  261. package/dist/html/controls.js.map +1 -0
  262. package/dist/html/css/cascade.d.ts +51 -0
  263. package/dist/html/css/cascade.d.ts.map +1 -0
  264. package/dist/html/css/cascade.js +552 -0
  265. package/dist/html/css/cascade.js.map +1 -0
  266. package/dist/html/css/parse.d.ts +74 -0
  267. package/dist/html/css/parse.d.ts.map +1 -0
  268. package/dist/html/css/parse.js +464 -0
  269. package/dist/html/css/parse.js.map +1 -0
  270. package/dist/html/css/style.d.ts +142 -0
  271. package/dist/html/css/style.d.ts.map +1 -0
  272. package/dist/html/css/style.js +1145 -0
  273. package/dist/html/css/style.js.map +1 -0
  274. package/dist/html/css/ua.d.ts +5 -0
  275. package/dist/html/css/ua.d.ts.map +1 -0
  276. package/dist/html/css/ua.js +171 -0
  277. package/dist/html/css/ua.js.map +1 -0
  278. package/dist/html/css/values.d.ts +78 -0
  279. package/dist/html/css/values.d.ts.map +1 -0
  280. package/dist/html/css/values.js +330 -0
  281. package/dist/html/css/values.js.map +1 -0
  282. package/dist/html/dom.d.ts +112 -0
  283. package/dist/html/dom.d.ts.map +1 -0
  284. package/dist/html/dom.js +374 -0
  285. package/dist/html/dom.js.map +1 -0
  286. package/dist/html/hx.d.ts +24 -0
  287. package/dist/html/hx.d.ts.map +1 -0
  288. package/dist/html/hx.js +29 -0
  289. package/dist/html/hx.js.map +1 -0
  290. package/dist/html/index.d.ts +137 -0
  291. package/dist/html/index.d.ts.map +1 -0
  292. package/dist/html/index.js +339 -0
  293. package/dist/html/index.js.map +1 -0
  294. package/dist/html/layout/block.d.ts +58 -0
  295. package/dist/html/layout/block.d.ts.map +1 -0
  296. package/dist/html/layout/block.js +724 -0
  297. package/dist/html/layout/block.js.map +1 -0
  298. package/dist/html/layout/boxes.d.ts +261 -0
  299. package/dist/html/layout/boxes.d.ts.map +1 -0
  300. package/dist/html/layout/boxes.js +725 -0
  301. package/dist/html/layout/boxes.js.map +1 -0
  302. package/dist/html/layout/flex.d.ts +16 -0
  303. package/dist/html/layout/flex.d.ts.map +1 -0
  304. package/dist/html/layout/flex.js +242 -0
  305. package/dist/html/layout/flex.js.map +1 -0
  306. package/dist/html/layout/floats.d.ts +50 -0
  307. package/dist/html/layout/floats.d.ts.map +1 -0
  308. package/dist/html/layout/floats.js +110 -0
  309. package/dist/html/layout/floats.js.map +1 -0
  310. package/dist/html/layout/inline.d.ts +44 -0
  311. package/dist/html/layout/inline.d.ts.map +1 -0
  312. package/dist/html/layout/inline.js +700 -0
  313. package/dist/html/layout/inline.js.map +1 -0
  314. package/dist/html/layout/table.d.ts +5 -0
  315. package/dist/html/layout/table.d.ts.map +1 -0
  316. package/dist/html/layout/table.js +340 -0
  317. package/dist/html/layout/table.js.map +1 -0
  318. package/dist/html/node.d.ts +149 -0
  319. package/dist/html/node.d.ts.map +1 -0
  320. package/dist/html/node.js +861 -0
  321. package/dist/html/node.js.map +1 -0
  322. package/dist/html/paint.d.ts +48 -0
  323. package/dist/html/paint.d.ts.map +1 -0
  324. package/dist/html/paint.js +495 -0
  325. package/dist/html/paint.js.map +1 -0
  326. package/dist/html/resources.d.ts +48 -0
  327. package/dist/html/resources.d.ts.map +1 -0
  328. package/dist/html/resources.js +156 -0
  329. package/dist/html/resources.js.map +1 -0
  330. package/dist/index.d.ts +48 -0
  331. package/dist/index.d.ts.map +1 -0
  332. package/dist/index.js +92 -0
  333. package/dist/index.js.map +1 -0
  334. package/dist/internal/heights.d.ts +88 -0
  335. package/dist/internal/heights.d.ts.map +1 -0
  336. package/dist/internal/heights.js +203 -0
  337. package/dist/internal/heights.js.map +1 -0
  338. package/dist/internal/hx.d.ts +24 -0
  339. package/dist/internal/hx.d.ts.map +1 -0
  340. package/dist/internal/hx.js +27 -0
  341. package/dist/internal/hx.js.map +1 -0
  342. package/dist/internal/scroll.d.ts +62 -0
  343. package/dist/internal/scroll.d.ts.map +1 -0
  344. package/dist/internal/scroll.js +224 -0
  345. package/dist/internal/scroll.js.map +1 -0
  346. package/dist/internal/text.d.ts +6 -0
  347. package/dist/internal/text.d.ts.map +1 -0
  348. package/dist/internal/text.js +44 -0
  349. package/dist/internal/text.js.map +1 -0
  350. package/dist/internal/timers.d.ts +8 -0
  351. package/dist/internal/timers.d.ts.map +1 -0
  352. package/dist/internal/timers.js +22 -0
  353. package/dist/internal/timers.js.map +1 -0
  354. package/dist/internal/widget.d.ts +40 -0
  355. package/dist/internal/widget.d.ts.map +1 -0
  356. package/dist/internal/widget.js +44 -0
  357. package/dist/internal/widget.js.map +1 -0
  358. package/dist/markdown/ast.d.ts +126 -0
  359. package/dist/markdown/ast.d.ts.map +1 -0
  360. package/dist/markdown/ast.js +8 -0
  361. package/dist/markdown/ast.js.map +1 -0
  362. package/dist/markdown/hx.d.ts +24 -0
  363. package/dist/markdown/hx.d.ts.map +1 -0
  364. package/dist/markdown/hx.js +25 -0
  365. package/dist/markdown/hx.js.map +1 -0
  366. package/dist/markdown/index.d.ts +90 -0
  367. package/dist/markdown/index.d.ts.map +1 -0
  368. package/dist/markdown/index.js +413 -0
  369. package/dist/markdown/index.js.map +1 -0
  370. package/dist/markdown/parse.d.ts +8 -0
  371. package/dist/markdown/parse.d.ts.map +1 -0
  372. package/dist/markdown/parse.js +911 -0
  373. package/dist/markdown/parse.js.map +1 -0
  374. package/dist/markdown/spans.d.ts +20 -0
  375. package/dist/markdown/spans.d.ts.map +1 -0
  376. package/dist/markdown/spans.js +96 -0
  377. package/dist/markdown/spans.js.map +1 -0
  378. package/dist/media-player/backends.d.ts +64 -0
  379. package/dist/media-player/backends.d.ts.map +1 -0
  380. package/dist/media-player/backends.js +110 -0
  381. package/dist/media-player/backends.js.map +1 -0
  382. package/dist/media-player/control.d.ts +40 -0
  383. package/dist/media-player/control.d.ts.map +1 -0
  384. package/dist/media-player/control.js +44 -0
  385. package/dist/media-player/control.js.map +1 -0
  386. package/dist/media-player/hx.d.ts +24 -0
  387. package/dist/media-player/hx.d.ts.map +1 -0
  388. package/dist/media-player/hx.js +25 -0
  389. package/dist/media-player/hx.js.map +1 -0
  390. package/dist/media-player/index.d.ts +107 -0
  391. package/dist/media-player/index.d.ts.map +1 -0
  392. package/dist/media-player/index.js +219 -0
  393. package/dist/media-player/index.js.map +1 -0
  394. package/dist/media-player/mpv.d.ts +4 -0
  395. package/dist/media-player/mpv.d.ts.map +1 -0
  396. package/dist/media-player/mpv.js +120 -0
  397. package/dist/media-player/mpv.js.map +1 -0
  398. package/dist/media-player/vlc.d.ts +8 -0
  399. package/dist/media-player/vlc.d.ts.map +1 -0
  400. package/dist/media-player/vlc.js +83 -0
  401. package/dist/media-player/vlc.js.map +1 -0
  402. package/dist/richtext/index.d.ts +19 -0
  403. package/dist/richtext/index.d.ts.map +1 -0
  404. package/dist/richtext/index.js +4 -0
  405. package/dist/richtext/index.js.map +1 -0
  406. package/dist/richtext/links.d.ts +12 -0
  407. package/dist/richtext/links.d.ts.map +1 -0
  408. package/dist/richtext/links.js +64 -0
  409. package/dist/richtext/links.js.map +1 -0
  410. package/dist/richtext/menu.d.ts +11 -0
  411. package/dist/richtext/menu.d.ts.map +1 -0
  412. package/dist/richtext/menu.js +43 -0
  413. package/dist/richtext/menu.js.map +1 -0
  414. package/dist/richtext/node.d.ts +151 -0
  415. package/dist/richtext/node.d.ts.map +1 -0
  416. package/dist/richtext/node.js +255 -0
  417. package/dist/richtext/node.js.map +1 -0
  418. package/dist/richtext/runs.d.ts +92 -0
  419. package/dist/richtext/runs.d.ts.map +1 -0
  420. package/dist/richtext/runs.js +158 -0
  421. package/dist/richtext/runs.js.map +1 -0
  422. package/dist/table/hx.d.ts +24 -0
  423. package/dist/table/hx.d.ts.map +1 -0
  424. package/dist/table/hx.js +25 -0
  425. package/dist/table/hx.js.map +1 -0
  426. package/dist/table/index.d.ts +169 -0
  427. package/dist/table/index.d.ts.map +1 -0
  428. package/dist/table/index.js +890 -0
  429. package/dist/table/index.js.map +1 -0
  430. package/dist/table/rows.d.ts +136 -0
  431. package/dist/table/rows.d.ts.map +1 -0
  432. package/dist/table/rows.js +146 -0
  433. package/dist/table/rows.js.map +1 -0
  434. package/dist/terminal/backends.d.ts +105 -0
  435. package/dist/terminal/backends.d.ts.map +1 -0
  436. package/dist/terminal/backends.js +185 -0
  437. package/dist/terminal/backends.js.map +1 -0
  438. package/dist/terminal/hx.d.ts +24 -0
  439. package/dist/terminal/hx.d.ts.map +1 -0
  440. package/dist/terminal/hx.js +25 -0
  441. package/dist/terminal/hx.js.map +1 -0
  442. package/dist/terminal/index.d.ts +160 -0
  443. package/dist/terminal/index.d.ts.map +1 -0
  444. package/dist/terminal/index.js +344 -0
  445. package/dist/terminal/index.js.map +1 -0
  446. package/dist/terminal/title.d.ts +24 -0
  447. package/dist/terminal/title.d.ts.map +1 -0
  448. package/dist/terminal/title.js +129 -0
  449. package/dist/terminal/title.js.map +1 -0
  450. package/dist/terminal/vt/colors.d.ts +63 -0
  451. package/dist/terminal/vt/colors.d.ts.map +1 -0
  452. package/dist/terminal/vt/colors.js +203 -0
  453. package/dist/terminal/vt/colors.js.map +1 -0
  454. package/dist/terminal/vt/diff.d.ts +117 -0
  455. package/dist/terminal/vt/diff.d.ts.map +1 -0
  456. package/dist/terminal/vt/diff.js +358 -0
  457. package/dist/terminal/vt/diff.js.map +1 -0
  458. package/dist/terminal/vt/fonts.d.ts +92 -0
  459. package/dist/terminal/vt/fonts.d.ts.map +1 -0
  460. package/dist/terminal/vt/fonts.js +178 -0
  461. package/dist/terminal/vt/fonts.js.map +1 -0
  462. package/dist/terminal/vt/index.d.ts +78 -0
  463. package/dist/terminal/vt/index.d.ts.map +1 -0
  464. package/dist/terminal/vt/index.js +312 -0
  465. package/dist/terminal/vt/index.js.map +1 -0
  466. package/dist/terminal/vt/keys.d.ts +74 -0
  467. package/dist/terminal/vt/keys.d.ts.map +1 -0
  468. package/dist/terminal/vt/keys.js +309 -0
  469. package/dist/terminal/vt/keys.js.map +1 -0
  470. package/dist/terminal/vt/mouse.d.ts +44 -0
  471. package/dist/terminal/vt/mouse.d.ts.map +1 -0
  472. package/dist/terminal/vt/mouse.js +106 -0
  473. package/dist/terminal/vt/mouse.js.map +1 -0
  474. package/dist/terminal/vt/node.d.ts +246 -0
  475. package/dist/terminal/vt/node.d.ts.map +1 -0
  476. package/dist/terminal/vt/node.js +1068 -0
  477. package/dist/terminal/vt/node.js.map +1 -0
  478. package/dist/terminal/vt/pty.d.ts +81 -0
  479. package/dist/terminal/vt/pty.d.ts.map +1 -0
  480. package/dist/terminal/vt/pty.js +201 -0
  481. package/dist/terminal/vt/pty.js.map +1 -0
  482. package/dist/terminal/vt/renderer.d.ts +179 -0
  483. package/dist/terminal/vt/renderer.d.ts.map +1 -0
  484. package/dist/terminal/vt/renderer.js +357 -0
  485. package/dist/terminal/vt/renderer.js.map +1 -0
  486. package/dist/terminal/vt/timers.d.ts +6 -0
  487. package/dist/terminal/vt/timers.d.ts.map +1 -0
  488. package/dist/terminal/vt/timers.js +16 -0
  489. package/dist/terminal/vt/timers.js.map +1 -0
  490. package/dist/terminal/vt/xterm.d.ts +142 -0
  491. package/dist/terminal/vt/xterm.d.ts.map +1 -0
  492. package/dist/terminal/vt/xterm.js +32 -0
  493. package/dist/terminal/vt/xterm.js.map +1 -0
  494. package/dist/terminal-output/hx.d.ts +24 -0
  495. package/dist/terminal-output/hx.d.ts.map +1 -0
  496. package/dist/terminal-output/hx.js +25 -0
  497. package/dist/terminal-output/hx.js.map +1 -0
  498. package/dist/terminal-output/index.d.ts +92 -0
  499. package/dist/terminal-output/index.d.ts.map +1 -0
  500. package/dist/terminal-output/index.js +179 -0
  501. package/dist/terminal-output/index.js.map +1 -0
  502. package/dist/terminal-output/runs.d.ts +27 -0
  503. package/dist/terminal-output/runs.d.ts.map +1 -0
  504. package/dist/terminal-output/runs.js +66 -0
  505. package/dist/terminal-output/runs.js.map +1 -0
  506. package/dist/three/canvas.d.ts +46 -0
  507. package/dist/three/canvas.d.ts.map +1 -0
  508. package/dist/three/canvas.js +305 -0
  509. package/dist/three/canvas.js.map +1 -0
  510. package/dist/three/events.d.ts +64 -0
  511. package/dist/three/events.d.ts.map +1 -0
  512. package/dist/three/events.js +146 -0
  513. package/dist/three/events.js.map +1 -0
  514. package/dist/three/geometries.d.ts +89 -0
  515. package/dist/three/geometries.d.ts.map +1 -0
  516. package/dist/three/geometries.js +345 -0
  517. package/dist/three/geometries.js.map +1 -0
  518. package/dist/three/globals.d.ts +7 -0
  519. package/dist/three/globals.d.ts.map +1 -0
  520. package/dist/three/globals.js +20 -0
  521. package/dist/three/globals.js.map +1 -0
  522. package/dist/three/hx.d.ts +9 -0
  523. package/dist/three/hx.d.ts.map +1 -0
  524. package/dist/three/hx.js +10 -0
  525. package/dist/three/hx.js.map +1 -0
  526. package/dist/three/index.d.ts +22 -0
  527. package/dist/three/index.d.ts.map +1 -0
  528. package/dist/three/index.js +24 -0
  529. package/dist/three/index.js.map +1 -0
  530. package/dist/three/jsx-dev-runtime.d.ts +19 -0
  531. package/dist/three/jsx-dev-runtime.d.ts.map +1 -0
  532. package/dist/three/jsx-dev-runtime.js +2 -0
  533. package/dist/three/jsx-dev-runtime.js.map +1 -0
  534. package/dist/three/jsx-runtime.d.ts +19 -0
  535. package/dist/three/jsx-runtime.d.ts.map +1 -0
  536. package/dist/three/jsx-runtime.js +2 -0
  537. package/dist/three/jsx-runtime.js.map +1 -0
  538. package/dist/three/jsx.d.ts +198 -0
  539. package/dist/three/jsx.d.ts.map +1 -0
  540. package/dist/three/jsx.js +2 -0
  541. package/dist/three/jsx.js.map +1 -0
  542. package/dist/three/materials.d.ts +125 -0
  543. package/dist/three/materials.d.ts.map +1 -0
  544. package/dist/three/materials.js +229 -0
  545. package/dist/three/materials.js.map +1 -0
  546. package/dist/three/math.d.ts +146 -0
  547. package/dist/three/math.d.ts.map +1 -0
  548. package/dist/three/math.js +464 -0
  549. package/dist/three/math.js.map +1 -0
  550. package/dist/three/objects.d.ts +185 -0
  551. package/dist/three/objects.d.ts.map +1 -0
  552. package/dist/three/objects.js +309 -0
  553. package/dist/three/objects.js.map +1 -0
  554. package/dist/three/passes.d.ts +54 -0
  555. package/dist/three/passes.d.ts.map +1 -0
  556. package/dist/three/passes.js +78 -0
  557. package/dist/three/passes.js.map +1 -0
  558. package/dist/three/postprocess.d.ts +85 -0
  559. package/dist/three/postprocess.d.ts.map +1 -0
  560. package/dist/three/postprocess.js +503 -0
  561. package/dist/three/postprocess.js.map +1 -0
  562. package/dist/three/raycast.d.ts +24 -0
  563. package/dist/three/raycast.d.ts.map +1 -0
  564. package/dist/three/raycast.js +138 -0
  565. package/dist/three/raycast.js.map +1 -0
  566. package/dist/three/reconciler.d.ts +48 -0
  567. package/dist/three/reconciler.d.ts.map +1 -0
  568. package/dist/three/reconciler.js +416 -0
  569. package/dist/three/reconciler.js.map +1 -0
  570. package/dist/three/renderer-direct.d.ts +102 -0
  571. package/dist/three/renderer-direct.d.ts.map +1 -0
  572. package/dist/three/renderer-direct.js +782 -0
  573. package/dist/three/renderer-direct.js.map +1 -0
  574. package/dist/three/renderer-indirect.d.ts +68 -0
  575. package/dist/three/renderer-indirect.d.ts.map +1 -0
  576. package/dist/three/renderer-indirect.js +438 -0
  577. package/dist/three/renderer-indirect.js.map +1 -0
  578. package/dist/three/store.d.ts +81 -0
  579. package/dist/three/store.d.ts.map +1 -0
  580. package/dist/three/store.js +110 -0
  581. package/dist/three/store.js.map +1 -0
  582. package/dist/timeline/hx.d.ts +18 -0
  583. package/dist/timeline/hx.d.ts.map +1 -0
  584. package/dist/timeline/hx.js +10 -0
  585. package/dist/timeline/hx.js.map +1 -0
  586. package/dist/timeline/index.d.ts +152 -0
  587. package/dist/timeline/index.d.ts.map +1 -0
  588. package/dist/timeline/index.js +383 -0
  589. package/dist/timeline/index.js.map +1 -0
  590. package/dist/tray-host/hx.d.ts +24 -0
  591. package/dist/tray-host/hx.d.ts.map +1 -0
  592. package/dist/tray-host/hx.js +25 -0
  593. package/dist/tray-host/hx.js.map +1 -0
  594. package/dist/tray-host/index.d.ts +110 -0
  595. package/dist/tray-host/index.d.ts.map +1 -0
  596. package/dist/tray-host/index.js +191 -0
  597. package/dist/tray-host/index.js.map +1 -0
  598. package/dist/tray-host/manager.d.ts +137 -0
  599. package/dist/tray-host/manager.d.ts.map +1 -0
  600. package/dist/tray-host/manager.js +462 -0
  601. package/dist/tray-host/manager.js.map +1 -0
  602. package/dist/tray-host/notify.d.ts +22 -0
  603. package/dist/tray-host/notify.d.ts.map +1 -0
  604. package/dist/tray-host/notify.js +74 -0
  605. package/dist/tray-host/notify.js.map +1 -0
  606. package/dist/tray-host/protocol.d.ts +106 -0
  607. package/dist/tray-host/protocol.d.ts.map +1 -0
  608. package/dist/tray-host/protocol.js +191 -0
  609. package/dist/tray-host/protocol.js.map +1 -0
  610. package/dist/tree/hx.d.ts +24 -0
  611. package/dist/tree/hx.d.ts.map +1 -0
  612. package/dist/tree/hx.js +25 -0
  613. package/dist/tree/hx.js.map +1 -0
  614. package/dist/tree/index.d.ts +221 -0
  615. package/dist/tree/index.d.ts.map +1 -0
  616. package/dist/tree/index.js +751 -0
  617. package/dist/tree/index.js.map +1 -0
  618. package/dist/tree/internal.d.ts +18 -0
  619. package/dist/tree/internal.d.ts.map +1 -0
  620. package/dist/tree/internal.js +66 -0
  621. package/dist/tree/internal.js.map +1 -0
  622. package/dist/tree/rows.d.ts +177 -0
  623. package/dist/tree/rows.d.ts.map +1 -0
  624. package/dist/tree/rows.js +179 -0
  625. package/dist/tree/rows.js.map +1 -0
  626. package/package.json +166 -12
  627. package/src/ansi/cast.ts +159 -0
  628. package/src/ansi/index.ts +53 -0
  629. package/src/ansi/palette.ts +226 -0
  630. package/src/ansi/parse.ts +780 -0
  631. package/src/ansi/sgr.ts +380 -0
  632. package/src/ansi/utf8.ts +84 -0
  633. package/src/calendar/Calendar.ts +744 -0
  634. package/src/calendar/DatePicker.ts +368 -0
  635. package/src/calendar/dates.ts +307 -0
  636. package/src/calendar/index.ts +51 -0
  637. package/src/charts/components.ts +864 -0
  638. package/src/charts/data.ts +776 -0
  639. package/src/charts/hx.ts +39 -0
  640. package/src/charts/index.ts +99 -0
  641. package/src/charts/node.ts +932 -0
  642. package/src/charts/render.ts +982 -0
  643. package/src/charts/scale.ts +214 -0
  644. package/src/charts/spec.ts +122 -0
  645. package/src/charts/timers.ts +24 -0
  646. package/src/code/hx.ts +51 -0
  647. package/src/code/index.ts +174 -0
  648. package/src/code-editor/completion.ts +161 -0
  649. package/src/code-editor/doc.ts +198 -0
  650. package/src/code-editor/hx.ts +26 -0
  651. package/src/code-editor/index.ts +615 -0
  652. package/src/code-editor/node.ts +1926 -0
  653. package/src/code-language/hljs.ts +302 -0
  654. package/src/code-language/index.ts +51 -0
  655. package/src/code-language/languages/glsl.ts +120 -0
  656. package/src/code-language/languages/javascript.ts +419 -0
  657. package/src/code-language/languages/json.ts +72 -0
  658. package/src/code-language/languages/shell.ts +221 -0
  659. package/src/code-language/languages/sql.ts +165 -0
  660. package/src/code-language/lezer.ts +190 -0
  661. package/src/code-language/registry.ts +66 -0
  662. package/src/code-language/runs.ts +128 -0
  663. package/src/code-language/stream.ts +306 -0
  664. package/src/code-language/textmate.ts +134 -0
  665. package/src/code-language/theme.ts +124 -0
  666. package/src/code-language/timers.ts +36 -0
  667. package/src/code-language/types.ts +252 -0
  668. package/src/codeblock/index.ts +146 -0
  669. package/src/color-picker/ColorField.ts +333 -0
  670. package/src/color-picker/ColorPicker.ts +1069 -0
  671. package/src/color-picker/color.ts +399 -0
  672. package/src/color-picker/index.ts +50 -0
  673. package/src/desktop-calendar/eds.ts +484 -0
  674. package/src/desktop-calendar/ical.ts +119 -0
  675. package/src/desktop-calendar/index.ts +287 -0
  676. package/src/embed/client.ts +311 -0
  677. package/src/embed/host.ts +432 -0
  678. package/src/embed/index.ts +33 -0
  679. package/src/embed/timers.ts +32 -0
  680. package/src/flow/draw.ts +418 -0
  681. package/src/flow/index.ts +473 -0
  682. package/src/flow/model.ts +687 -0
  683. package/src/flow/node.ts +3694 -0
  684. package/src/flow/paths.ts +403 -0
  685. package/src/flow/types.ts +634 -0
  686. package/src/formula/hx.ts +51 -0
  687. package/src/formula/index.ts +243 -0
  688. package/src/formula/katex.ts +209 -0
  689. package/src/formula/layout.ts +876 -0
  690. package/src/formula/node.ts +467 -0
  691. package/src/html/controls.ts +244 -0
  692. package/src/html/css/cascade.ts +606 -0
  693. package/src/html/css/parse.ts +500 -0
  694. package/src/html/css/style.ts +1371 -0
  695. package/src/html/css/ua.ts +174 -0
  696. package/src/html/css/values.ts +358 -0
  697. package/src/html/dom.ts +410 -0
  698. package/src/html/hx.ts +55 -0
  699. package/src/html/index.ts +545 -0
  700. package/src/html/layout/block.ts +876 -0
  701. package/src/html/layout/boxes.ts +981 -0
  702. package/src/html/layout/flex.ts +297 -0
  703. package/src/html/layout/floats.ts +125 -0
  704. package/src/html/layout/inline.ts +870 -0
  705. package/src/html/layout/table.ts +380 -0
  706. package/src/html/node.ts +967 -0
  707. package/src/html/paint.ts +605 -0
  708. package/src/html/resources.ts +214 -0
  709. package/src/index.ts +638 -0
  710. package/src/internal/heights.ts +222 -0
  711. package/src/internal/hx.ts +53 -0
  712. package/src/internal/scroll.ts +288 -0
  713. package/src/internal/text.ts +44 -0
  714. package/src/internal/timers.ts +44 -0
  715. package/src/internal/widget.ts +92 -0
  716. package/src/markdown/ast.ts +163 -0
  717. package/src/markdown/hx.ts +51 -0
  718. package/src/markdown/index.ts +686 -0
  719. package/src/markdown/parse.ts +1037 -0
  720. package/src/markdown/spans.ts +143 -0
  721. package/src/media-player/backends.ts +155 -0
  722. package/src/media-player/control.ts +70 -0
  723. package/src/media-player/hx.ts +51 -0
  724. package/src/media-player/index.ts +378 -0
  725. package/src/media-player/mpv.ts +146 -0
  726. package/src/media-player/vlc.ts +97 -0
  727. package/src/richtext/index.ts +42 -0
  728. package/src/richtext/links.ts +78 -0
  729. package/src/richtext/menu.ts +49 -0
  730. package/src/richtext/node.ts +406 -0
  731. package/src/richtext/runs.ts +253 -0
  732. package/src/table/hx.ts +51 -0
  733. package/src/table/index.ts +1270 -0
  734. package/src/table/rows.ts +275 -0
  735. package/src/terminal/backends.ts +242 -0
  736. package/src/terminal/hx.ts +51 -0
  737. package/src/terminal/index.ts +574 -0
  738. package/src/terminal/title.ts +172 -0
  739. package/src/terminal/vt/colors.ts +247 -0
  740. package/src/terminal/vt/diff.ts +467 -0
  741. package/src/terminal/vt/fonts.ts +233 -0
  742. package/src/terminal/vt/index.ts +443 -0
  743. package/src/terminal/vt/keys.ts +369 -0
  744. package/src/terminal/vt/mouse.ts +144 -0
  745. package/src/terminal/vt/node.ts +1242 -0
  746. package/src/terminal/vt/pty.ts +334 -0
  747. package/src/terminal/vt/renderer.ts +555 -0
  748. package/src/terminal/vt/timers.ts +31 -0
  749. package/src/terminal/vt/xterm.ts +193 -0
  750. package/src/terminal-output/hx.ts +51 -0
  751. package/src/terminal-output/index.ts +340 -0
  752. package/src/terminal-output/runs.ts +79 -0
  753. package/src/three/canvas.ts +451 -0
  754. package/src/three/events.ts +197 -0
  755. package/src/three/geometries.ts +429 -0
  756. package/src/three/globals.ts +34 -0
  757. package/src/three/hx.ts +22 -0
  758. package/src/three/index.ts +98 -0
  759. package/src/three/jsx-dev-runtime.ts +27 -0
  760. package/src/three/jsx-runtime.ts +38 -0
  761. package/src/three/jsx.ts +275 -0
  762. package/src/three/materials.ts +270 -0
  763. package/src/three/math.ts +585 -0
  764. package/src/three/objects.ts +397 -0
  765. package/src/three/passes.ts +90 -0
  766. package/src/three/postprocess.ts +677 -0
  767. package/src/three/raycast.ts +189 -0
  768. package/src/three/react-reconciler.d.ts +50 -0
  769. package/src/three/reconciler.ts +624 -0
  770. package/src/three/renderer-direct.ts +1055 -0
  771. package/src/three/renderer-indirect.ts +570 -0
  772. package/src/three/store.ts +207 -0
  773. package/src/timeline/hx.ts +31 -0
  774. package/src/timeline/index.ts +603 -0
  775. package/src/tray-host/hx.ts +51 -0
  776. package/src/tray-host/index.ts +331 -0
  777. package/src/tray-host/manager.ts +639 -0
  778. package/src/tray-host/notify.ts +102 -0
  779. package/src/tray-host/protocol.ts +235 -0
  780. package/src/tree/hx.ts +51 -0
  781. package/src/tree/index.ts +1127 -0
  782. package/src/tree/internal.ts +87 -0
  783. package/src/tree/rows.ts +334 -0
  784. package/src/index.d.ts +0 -2
  785. package/src/index.js +0 -9
  786. package/src/sparkline/index.d.ts +0 -29
  787. package/src/sparkline/index.js +0 -50
  788. package/src/sparkline/node.js +0 -72
@@ -0,0 +1,275 @@
1
+ // The row and column model: everything a table decides before it draws.
2
+ //
3
+ // Pure, and deliberately so — the way `../tree/rows.ts` is. Which rows are
4
+ // shown in what order, what a cell's raw value is, how two rows compare, and
5
+ // how many pixels each column gets are all answerable with no display, and
6
+ // they are where the subtle table bugs live. The component only draws the
7
+ // answer, and the tests assert on the answer directly.
8
+
9
+ import type { ReactNode } from 'react';
10
+
11
+ /** What a row is keyed by. Numbers are allowed because a row often comes
12
+ * from a database, and stringifying an id is a chance to lose one. */
13
+ export type TableRowId = string | number;
14
+
15
+ /** One row of the current view: the app's row object, its resolved id, and
16
+ * its position **in sorted order** — the order everything else counts in. */
17
+ export interface TableRow<Row> {
18
+ id: TableRowId;
19
+ row: Row;
20
+ index: number;
21
+ }
22
+
23
+ /** A row, plus what only the render knows about it. */
24
+ export interface TableRowState<Row> extends TableRow<Row> {
25
+ selected: boolean;
26
+ /**
27
+ * The ink the row is painted in. Handed over by name because **colour does
28
+ * not cascade into a drawing**: an `<Icon>` or a `<canvas mono>` takes its
29
+ * colour from its own style, so a glyph inside a cell on the selected row
30
+ * has to be told. The `<text>` in a default cell needs nothing — text
31
+ * inherits.
32
+ */
33
+ color: string;
34
+ }
35
+
36
+ /** What `column.render` and `styles.cell` are told. `selected` and `column`
37
+ * are the two fields core's `<Table>` passed, kept under the same names. */
38
+ export interface TableCellState<Row> extends TableRowState<Row> {
39
+ column: TableColumn<Row>;
40
+ }
41
+
42
+ /** The sort descriptor. Core's shape, verbatim: `column` names a column id.
43
+ * `null` is "unsorted" — reachable through the controlled prop; the header
44
+ * click cycle is asc ↔ desc and never emits it. */
45
+ export interface TableSort {
46
+ column: string;
47
+ direction: 'asc' | 'desc';
48
+ }
49
+
50
+ /** What `column.renderHeader` and `styles.headerCell` are told. */
51
+ export interface TableHeaderCellState<Row> {
52
+ column: TableColumn<Row>;
53
+ /** The table's current sort — this column's when `sort.column` matches. */
54
+ sort: TableSort | null;
55
+ /** The width the column resolved to this layout, in pixels. */
56
+ resolvedWidth: number;
57
+ }
58
+
59
+ /**
60
+ * One column. `id`, `label`, `width`, `align`, `value` and `render` are
61
+ * core's `TableColumn`, kept compatible; the rest is this component's.
62
+ *
63
+ * Sizing: `flex` makes the column share the viewport width left over after
64
+ * the fixed columns; `width` alone makes it fixed. **A column declaring
65
+ * neither is `flex: 1` with a 120px floor** — so a table with no sizing
66
+ * config fills its box instead of parking dead space beside fixed-120
67
+ * columns. A user resize converts the column to fixed at the dragged width.
68
+ */
69
+ export interface TableColumn<Row = any> {
70
+ id: string;
71
+ /** The header caption. Defaults to the id. */
72
+ label?: string;
73
+ /** Fixed width, in pixels. Ignored when `flex` is set. */
74
+ width?: number;
75
+ /** Share of the leftover viewport width, by weight. */
76
+ flex?: number;
77
+ /** The narrowest the column may go — flex resolution and user resize both
78
+ * respect it. Defaults to 40 (core's resize floor); 120 for a column with
79
+ * neither `width` nor `flex`. */
80
+ minWidth?: number;
81
+ /** Logical, so bidi is the layout's problem and never the app's: `'end'`
82
+ * is the edge the row finishes at — where a column of figures lines up —
83
+ * and under RTL that is the left edge without anyone saying so. Core
84
+ * said `'left' | 'right'`; the successor says what it always meant. */
85
+ align?: 'start' | 'center' | 'end';
86
+ /** Whether the header click sorts on this column. Default true. */
87
+ sortable?: boolean;
88
+ /** The cell's raw value: feeds the default cell text **and** the sort.
89
+ * Defaults to `row[id]`. */
90
+ value?: (row: Row) => unknown;
91
+ /** The sort order, given the whole rows. Defaults to a natural comparison
92
+ * over `value()` — numbers numerically, everything else as text. */
93
+ compare?: (a: Row, b: Row) => number;
94
+ /** The cell, replaced entirely. The state says whether the cell is on the
95
+ * selected row — that row is a filled bar, and a colour picked against
96
+ * the resting background is unreadable on it. */
97
+ render?: (row: Row, state: TableCellState<Row>) => ReactNode;
98
+ /** The header cell's content — the caption and the sort mark's place. The
99
+ * header *box* stays the table's: it carries the width, the sort click
100
+ * and the resize grip beside it. */
101
+ renderHeader?: (state: TableHeaderCellState<Row>) => ReactNode;
102
+ }
103
+
104
+ /** A cell's raw value: `column.value`, or the property named by the id. */
105
+ export function columnValue<Row>(row: Row, column: TableColumn<Row>): unknown {
106
+ return column.value
107
+ ? column.value(row)
108
+ : (row as Record<string, unknown>)[column.id];
109
+ }
110
+
111
+ /** Core's comparator, verbatim: numbers numerically, everything else as
112
+ * text, with `null`/`undefined` sorting as the empty string. */
113
+ export function defaultCompare(a: unknown, b: unknown): number {
114
+ if (typeof a === 'number' && typeof b === 'number') return a - b;
115
+ return String(a ?? '').localeCompare(String(b ?? ''));
116
+ }
117
+
118
+ /**
119
+ * The id accessor with its default filled in — and its failure made loud.
120
+ *
121
+ * A row without an id cannot be selected, keyed, or measured, and rendering
122
+ * it anyway fails somewhere far away (a React key warning, a selection that
123
+ * silently never matches). The remedial throw here is the Calendar's
124
+ * precedent: name the fix, not just the fault.
125
+ */
126
+ export function resolveGetId<Row>(
127
+ getId: ((row: Row) => TableRowId) | undefined,
128
+ ): (row: Row, index: number) => TableRowId {
129
+ return (row: Row, index: number): TableRowId => {
130
+ const id = getId
131
+ ? getId(row)
132
+ : ((row as { id?: TableRowId }).id as TableRowId);
133
+ if (id === undefined || id === null) {
134
+ throw new TypeError(
135
+ `<Table> row ${index} has no id — every row needs one. ` +
136
+ 'Give rows an `id` field, or pass `getId` to read your own key.',
137
+ );
138
+ }
139
+ return id;
140
+ };
141
+ }
142
+
143
+ /**
144
+ * The rows in display order: ids resolved, sort applied.
145
+ *
146
+ * `sort` and *applying* the sort are separate on purpose (see the PRD's
147
+ * "Sort ownership, split in two"): pass `presorted` when the rows already
148
+ * arrive in display order — a server sorted them — and the descriptor only
149
+ * drives the header indicator. The sort is stable, so rows that compare
150
+ * equal keep the order the app gave them.
151
+ */
152
+ export function orderRows<Row>(
153
+ rows: readonly Row[],
154
+ columns: readonly TableColumn<Row>[],
155
+ getId: (row: Row, index: number) => TableRowId,
156
+ sort: TableSort | null,
157
+ presorted: boolean,
158
+ ): TableRow<Row>[] {
159
+ const entries = rows.map((row, index) => ({
160
+ id: getId(row, index),
161
+ row,
162
+ index,
163
+ }));
164
+ const column =
165
+ sort && !presorted ? columns.find((c) => c.id === sort.column) : undefined;
166
+ if (sort && column) {
167
+ const sign = sort.direction === 'desc' ? -1 : 1;
168
+ const compare =
169
+ column.compare ??
170
+ ((a: Row, b: Row) =>
171
+ defaultCompare(columnValue(a, column), columnValue(b, column)));
172
+ entries.sort((a, b) => sign * compare(a.row, b.row));
173
+ entries.forEach((entry, index) => {
174
+ entry.index = index;
175
+ });
176
+ }
177
+ return entries;
178
+ }
179
+
180
+ /** Core's resize floor, and the sized-column default for `minWidth`. */
181
+ export const MIN_COLUMN = 40;
182
+ /** What a column with neither `width` nor `flex` will not shrink below —
183
+ * core's fixed default, carried forward as a floor. */
184
+ export const UNSIZED_MIN = 120;
185
+
186
+ /** The pixels every column resolved to, in column order, plus their sum —
187
+ * the content width, and what the header row is sized to. */
188
+ export interface ResolvedWidths {
189
+ widths: number[];
190
+ total: number;
191
+ }
192
+
193
+ /**
194
+ * Columns resolve to pixels **once, at the table level** — the one problem
195
+ * no browser table library has, because HTML's table layout algorithm does
196
+ * not exist here, and per-row flex must not decide column widths (each row
197
+ * would negotiate its own grid).
198
+ *
199
+ * Fixed columns take their width; a user resize overrides anything; flex
200
+ * columns share `max(0, viewport − Σfixed)` by weight, floored at their
201
+ * `minWidth`. When nothing fits — the viewport is smaller than the floors —
202
+ * every flex column sits at its floor and the body scrolls horizontally.
203
+ * Before the first layout the viewport is 0, which lands in the same branch.
204
+ */
205
+ export function resolveWidths<Row>(
206
+ columns: readonly TableColumn<Row>[],
207
+ user: Readonly<Record<string, number>>,
208
+ viewport: number,
209
+ ): ResolvedWidths {
210
+ const widths = new Array<number>(columns.length).fill(0);
211
+ interface FlexEntry {
212
+ at: number;
213
+ weight: number;
214
+ min: number;
215
+ }
216
+ let flex: FlexEntry[] = [];
217
+ let fixedSum = 0;
218
+ columns.forEach((column, at) => {
219
+ const resized = user[column.id];
220
+ if (resized !== undefined) {
221
+ widths[at] = resized;
222
+ fixedSum += resized;
223
+ return;
224
+ }
225
+ if (column.flex === undefined && column.width !== undefined) {
226
+ widths[at] = column.width;
227
+ fixedSum += column.width;
228
+ return;
229
+ }
230
+ const unsized = column.flex === undefined && column.width === undefined;
231
+ flex.push({
232
+ at,
233
+ weight: column.flex ?? 1,
234
+ min: column.minWidth ?? (unsized ? UNSIZED_MIN : MIN_COLUMN),
235
+ });
236
+ });
237
+
238
+ if (flex.length) {
239
+ let pool = Math.max(0, viewport - fixedSum);
240
+ // Distribute, clamping to floors: a column whose share lands under its
241
+ // floor takes the floor and leaves the pool, and the rest re-share what
242
+ // is left. Terminates because every pass either clamps someone or
243
+ // distributes and stops.
244
+ for (;;) {
245
+ const minSum = flex.reduce((sum, f) => sum + f.min, 0);
246
+ if (pool <= minSum) {
247
+ for (const f of flex) widths[f.at] = f.min;
248
+ break;
249
+ }
250
+ const weightSum = flex.reduce((sum, f) => sum + f.weight, 0);
251
+ const clamped = flex.filter((f) => (pool * f.weight) / weightSum < f.min);
252
+ if (!clamped.length) {
253
+ // Cumulative rounding, so the integer widths sum to the pool exactly
254
+ // and the table's edge meets the viewport's rather than drifting a
255
+ // pixel per column.
256
+ let acc = 0;
257
+ let assigned = 0;
258
+ for (const f of flex) {
259
+ acc += (pool * f.weight) / weightSum;
260
+ const w = Math.round(acc) - assigned;
261
+ assigned += w;
262
+ widths[f.at] = w;
263
+ }
264
+ break;
265
+ }
266
+ for (const f of clamped) {
267
+ widths[f.at] = f.min;
268
+ pool -= f.min;
269
+ }
270
+ flex = flex.filter((f) => !clamped.includes(f));
271
+ }
272
+ }
273
+
274
+ return { widths, total: widths.reduce((sum, w) => sum + w, 0) };
275
+ }
@@ -0,0 +1,242 @@
1
+ // One table, three terminals, and the reason `<Terminal>` has a nice API at
2
+ // all.
3
+ //
4
+ // Every terminal emulator that can be embedded takes the same three things —
5
+ // a window to draw into, a font, a colour scheme — and spells all three
6
+ // differently. xterm wants X resources, urxvt wants an Xft font string,
7
+ // alacritty wants TOML on the command line. That asymmetry is the *only*
8
+ // difference between the backends, so it lives here and the component never
9
+ // mentions a binary by name.
10
+ //
11
+ // Pure functions over a plain description: no spawning, no probing, nothing
12
+ // async. `test/terminal.test.ts` asserts the argv of all three without a
13
+ // terminal installed anywhere, which is the point.
14
+
15
+ /**
16
+ * Which terminal to use.
17
+ *
18
+ * The first three are emulators this package *embeds* — a real xterm, urxvt
19
+ * or alacritty drawing into a `<foreign>`. `'vt'` is the one it *is*: a pty
20
+ * and a pure-JS emulator core rendered as a native element, which needs no
21
+ * program installed and is the only backend `write()` can work on.
22
+ *
23
+ * `'auto'` takes the first embeddable emulator that is installed and falls
24
+ * back to `'vt'`. That order — rather than vt first — is deliberate: an
25
+ * external emulator is battle-tested, and a user who installed one expressed
26
+ * a preference. Moving vt to the front is a later, deliberate decision.
27
+ */
28
+ export type TerminalBackendName =
29
+ 'auto' | 'xterm' | 'urxvt' | 'alacritty' | 'vt';
30
+
31
+ /**
32
+ * The colours a terminal is asked to use.
33
+ *
34
+ * `<Terminal>` fills these from the react-x11 theme by default, which is what
35
+ * makes an embedded terminal look like part of the app rather than a hole
36
+ * punched in it.
37
+ */
38
+ export interface TerminalColors {
39
+ background?: string;
40
+ foreground?: string;
41
+ /** The block/bar the terminal draws at the caret. */
42
+ cursor?: string;
43
+ /**
44
+ * ANSI 0–15, in the usual order (black, red, green, yellow, blue, magenta,
45
+ * cyan, white, then the eight bright ones). A shorter array sets what it
46
+ * has. Not every backend can take these from the command line — see
47
+ * `palette` on the backend.
48
+ */
49
+ palette?: readonly string[];
50
+ }
51
+
52
+ /** Everything the argv builders read. */
53
+ export interface TerminalLaunch {
54
+ /** The `<foreign>` container to draw into. */
55
+ windowId: number;
56
+ /** argv of the program to run. Empty means the user's shell. */
57
+ command?: readonly string[];
58
+ title?: string;
59
+ fontFamily?: string;
60
+ fontSize?: number;
61
+ /** Lines of scrollback. */
62
+ scrollback?: number;
63
+ colors?: TerminalColors;
64
+ }
65
+
66
+ export interface TerminalBackend {
67
+ name: Exclude<TerminalBackendName, 'auto'>;
68
+ /** Binaries to look for, in order. */
69
+ binaries: readonly string[];
70
+ /** Whether `colors.palette` reaches this backend from the command line. */
71
+ palette: boolean;
72
+ args(launch: TerminalLaunch): string[];
73
+ }
74
+
75
+ /** The ANSI names alacritty's TOML uses, in palette-index order. */
76
+ const ANSI_NAMES = [
77
+ 'black',
78
+ 'red',
79
+ 'green',
80
+ 'yellow',
81
+ 'blue',
82
+ 'magenta',
83
+ 'cyan',
84
+ 'white',
85
+ ] as const;
86
+
87
+ const DEFAULT_FAMILY = 'monospace';
88
+ const DEFAULT_SIZE = 12;
89
+
90
+ /**
91
+ * xterm.
92
+ *
93
+ * `-into` is the oldest and most reliable of the three embed flags — it
94
+ * predates XEmbed and does plain reparenting, which is exactly what
95
+ * `<foreign>`'s adopt path handles. `-b 0` drops the inner border, because a
96
+ * pane in an application should not have a margin the application did not ask
97
+ * for.
98
+ *
99
+ * Everything xterm cannot say as a flag it says as an X resource, which is
100
+ * how the ANSI palette gets set: `-xrm 'XTerm*color4: #…'` is a per-invocation
101
+ * resource and does not touch the user's database.
102
+ */
103
+ export const xterm: TerminalBackend = {
104
+ name: 'xterm',
105
+ binaries: ['xterm'],
106
+ palette: true,
107
+ args(launch) {
108
+ const args = ['-into', String(launch.windowId), '-b', '0'];
109
+ if (launch.title) args.push('-T', launch.title);
110
+
111
+ // `-fa` is what switches xterm to Xft at all; without it `-fs` is ignored
112
+ // and the bitmap font stays. So asking for either means passing both.
113
+ if (launch.fontFamily || launch.fontSize) {
114
+ args.push('-fa', launch.fontFamily ?? DEFAULT_FAMILY);
115
+ args.push('-fs', String(launch.fontSize ?? DEFAULT_SIZE));
116
+ }
117
+ if (launch.scrollback != null) args.push('-sl', String(launch.scrollback));
118
+
119
+ const colors = launch.colors ?? {};
120
+ if (colors.background) args.push('-bg', colors.background);
121
+ if (colors.foreground) args.push('-fg', colors.foreground);
122
+ if (colors.cursor) args.push('-cr', colors.cursor);
123
+ for (const [index, color] of (colors.palette ?? []).entries()) {
124
+ if (index > 15 || !color) continue;
125
+ args.push('-xrm', `XTerm*color${index}: ${color}`);
126
+ }
127
+
128
+ // `-e` consumes the rest of the line, so it is last and nothing may be
129
+ // appended after this point.
130
+ if (launch.command?.length) args.push('-e', ...launch.command);
131
+ return args;
132
+ },
133
+ };
134
+
135
+ /**
136
+ * rxvt-unicode.
137
+ *
138
+ * `-embed` rather than `-into`, and a single Xft font string rather than a
139
+ * family and a size. The ANSI palette is reachable only through the X
140
+ * resource database, which is the user's and not ours to write, so
141
+ * `palette: false` — `<Terminal>` still themes the background, foreground and
142
+ * cursor, which is most of what makes it look integrated.
143
+ */
144
+ export const urxvt: TerminalBackend = {
145
+ name: 'urxvt',
146
+ binaries: ['urxvt', 'rxvt-unicode'],
147
+ palette: false,
148
+ args(launch) {
149
+ const args = ['-embed', String(launch.windowId)];
150
+ if (launch.title) args.push('-title', launch.title);
151
+ if (launch.fontFamily || launch.fontSize) {
152
+ const family = launch.fontFamily ?? DEFAULT_FAMILY;
153
+ const size = launch.fontSize ?? DEFAULT_SIZE;
154
+ args.push('-fn', `xft:${family}:size=${size}`);
155
+ }
156
+ if (launch.scrollback != null) args.push('-sl', String(launch.scrollback));
157
+
158
+ const colors = launch.colors ?? {};
159
+ if (colors.background) args.push('-bg', colors.background);
160
+ if (colors.foreground) args.push('-fg', colors.foreground);
161
+ if (colors.cursor) args.push('-cr', colors.cursor);
162
+
163
+ if (launch.command?.length) args.push('-e', ...launch.command);
164
+ return args;
165
+ },
166
+ };
167
+
168
+ /**
169
+ * alacritty.
170
+ *
171
+ * Configuration is a file, and `-o` is the escape hatch: one TOML assignment
172
+ * per flag, applied over whatever the user's own config says. TOML means
173
+ * strings are quoted *inside the argument value* — `font.normal.family="Fira
174
+ * Code"` — which costs nothing here because each `-o` is its own argv element
175
+ * and no shell ever sees it.
176
+ */
177
+ export const alacritty: TerminalBackend = {
178
+ name: 'alacritty',
179
+ binaries: ['alacritty'],
180
+ palette: true,
181
+ args(launch) {
182
+ const args = ['--embed', String(launch.windowId)];
183
+ if (launch.title) args.push('--title', launch.title);
184
+
185
+ const set = (key: string, value: string): void => {
186
+ args.push('-o', `${key}=${value}`);
187
+ };
188
+ if (launch.fontFamily) set('font.normal.family', quote(launch.fontFamily));
189
+ if (launch.fontSize != null) set('font.size', String(launch.fontSize));
190
+ if (launch.scrollback != null) {
191
+ set('scrolling.history', String(launch.scrollback));
192
+ }
193
+
194
+ const colors = launch.colors ?? {};
195
+ if (colors.background)
196
+ set('colors.primary.background', quote(colors.background));
197
+ if (colors.foreground)
198
+ set('colors.primary.foreground', quote(colors.foreground));
199
+ if (colors.cursor) set('colors.cursor.cursor', quote(colors.cursor));
200
+ for (const [index, color] of (colors.palette ?? []).entries()) {
201
+ if (index > 15 || !color) continue;
202
+ const group = index < 8 ? 'normal' : 'bright';
203
+ set(`colors.${group}.${ANSI_NAMES[index % 8]}`, quote(color));
204
+ }
205
+
206
+ if (launch.command?.length) args.push('-e', ...launch.command);
207
+ return args;
208
+ },
209
+ };
210
+
211
+ /** A TOML string. Colours and font names have no quotes or backslashes in
212
+ * practice, but a family typed by a user is a user's string. */
213
+ function quote(value: string): string {
214
+ return `"${value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
215
+ }
216
+
217
+ /**
218
+ * Auto-detection order, and it is deliberately not "nicest first".
219
+ *
220
+ * xterm's `-into` is the embed path with the fewest surprises and is on
221
+ * almost every machine that has X at all; alacritty's `--embed` is newer and
222
+ * its window is a winit window with its own ideas about focus. An app that
223
+ * prefers a different one says so — `backend="alacritty"` is one prop.
224
+ */
225
+ export const TERMINAL_BACKENDS: readonly TerminalBackend[] = [
226
+ xterm,
227
+ urxvt,
228
+ alacritty,
229
+ ];
230
+
231
+ /**
232
+ * The *embeddable* backends a `backend` prop selects. `'auto'` is all of
233
+ * them, in order; `'vt'` is none of them, because nothing is spawned — the
234
+ * component takes that branch before it ever asks this.
235
+ */
236
+ export function backendsFor(
237
+ name: TerminalBackendName,
238
+ ): readonly TerminalBackend[] {
239
+ if (name === 'auto') return TERMINAL_BACKENDS;
240
+ const found = TERMINAL_BACKENDS.filter((b) => b.name === name);
241
+ return found;
242
+ }
@@ -0,0 +1,51 @@
1
+ // `React.createElement`, typed against react-x11's host elements.
2
+ //
3
+ // The library writes `h(...)` rather than JSX — a convention inherited from
4
+ // core, and worth keeping so moving code between the two repos stays a
5
+ // rename. But `React.createElement`'s own overloads are `@types/react`'s, and
6
+ // they describe the DOM: a `<box onKeyDown>` handler is checked against
7
+ // React's `KeyboardEvent`, not react-x11's, and the whole props object is
8
+ // measured against `DOMAttributes`. Everything interesting fails.
9
+ //
10
+ // So the element name is looked up in react-x11's own element table instead.
11
+ // `hx('box', …)` gets `<box>`'s real props — `ev.keysym` on a key handler,
12
+ // `onDraw` on a `<canvas>` — and `hx('div', …)` is an error, which is the
13
+ // same guarantee the JSX namespace gives `examples/` and `test/types/`.
14
+ import React from 'react';
15
+ import type { Key, ReactElement, ReactNode } from 'react';
16
+ import type { ReactX11Elements, Theme } from 'react-x11';
17
+
18
+ /** The host elements, by name. */
19
+ export type Host = ReactX11Elements;
20
+
21
+ /**
22
+ * What every element takes on top of its own props.
23
+ *
24
+ * `theme` is honoured by **every** node — `Node.theme` merges `props.theme`
25
+ * over the inherited palette, whatever the kind — but react-x11's element
26
+ * declarations only put it on `<window>`. A widget re-declares the theme it
27
+ * read from context onto its own root so that `$token` values still resolve
28
+ * inside a `<popup>`, which is a separate window and does not inherit the
29
+ * trigger's node tree. So the prop is real; only the declaration is narrow.
30
+ */
31
+ interface CommonProps {
32
+ key?: Key;
33
+ /** `Theme` is listed alongside the record because it is an interface, and
34
+ * an interface has no implicit index signature — so the palette `useTheme`
35
+ * hands back is not assignable to the record react-x11 declares. */
36
+ theme?: Theme | Record<string, string | number>;
37
+ }
38
+
39
+ export function hx<K extends keyof Host>(
40
+ type: K,
41
+ // `theme` is dropped from the element's own props before the merge:
42
+ // `<window>` and `<popup>` already declare it, narrower, and intersecting
43
+ // the two would demand a value satisfying both.
44
+ props?: (Omit<Host[K], 'theme'> & CommonProps) | null,
45
+ ...children: ReactNode[]
46
+ ): ReactElement {
47
+ // The cast is the whole point of the wrapper: `createElement`'s string
48
+ // overload insists on DOM props, and the signature above has already
49
+ // checked these against the element that will actually receive them.
50
+ return React.createElement(type as string, props as never, ...children);
51
+ }