@react-x11/components 0.1.0 → 0.2.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 (783) 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 +81 -0
  335. package/dist/internal/heights.d.ts.map +1 -0
  336. package/dist/internal/heights.js +193 -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/text.d.ts +6 -0
  343. package/dist/internal/text.d.ts.map +1 -0
  344. package/dist/internal/text.js +44 -0
  345. package/dist/internal/text.js.map +1 -0
  346. package/dist/internal/timers.d.ts +8 -0
  347. package/dist/internal/timers.d.ts.map +1 -0
  348. package/dist/internal/timers.js +22 -0
  349. package/dist/internal/timers.js.map +1 -0
  350. package/dist/internal/widget.d.ts +40 -0
  351. package/dist/internal/widget.d.ts.map +1 -0
  352. package/dist/internal/widget.js +44 -0
  353. package/dist/internal/widget.js.map +1 -0
  354. package/dist/markdown/ast.d.ts +126 -0
  355. package/dist/markdown/ast.d.ts.map +1 -0
  356. package/dist/markdown/ast.js +8 -0
  357. package/dist/markdown/ast.js.map +1 -0
  358. package/dist/markdown/hx.d.ts +24 -0
  359. package/dist/markdown/hx.d.ts.map +1 -0
  360. package/dist/markdown/hx.js +25 -0
  361. package/dist/markdown/hx.js.map +1 -0
  362. package/dist/markdown/index.d.ts +90 -0
  363. package/dist/markdown/index.d.ts.map +1 -0
  364. package/dist/markdown/index.js +413 -0
  365. package/dist/markdown/index.js.map +1 -0
  366. package/dist/markdown/parse.d.ts +8 -0
  367. package/dist/markdown/parse.d.ts.map +1 -0
  368. package/dist/markdown/parse.js +911 -0
  369. package/dist/markdown/parse.js.map +1 -0
  370. package/dist/markdown/spans.d.ts +20 -0
  371. package/dist/markdown/spans.d.ts.map +1 -0
  372. package/dist/markdown/spans.js +96 -0
  373. package/dist/markdown/spans.js.map +1 -0
  374. package/dist/media-player/backends.d.ts +64 -0
  375. package/dist/media-player/backends.d.ts.map +1 -0
  376. package/dist/media-player/backends.js +110 -0
  377. package/dist/media-player/backends.js.map +1 -0
  378. package/dist/media-player/control.d.ts +40 -0
  379. package/dist/media-player/control.d.ts.map +1 -0
  380. package/dist/media-player/control.js +44 -0
  381. package/dist/media-player/control.js.map +1 -0
  382. package/dist/media-player/hx.d.ts +24 -0
  383. package/dist/media-player/hx.d.ts.map +1 -0
  384. package/dist/media-player/hx.js +25 -0
  385. package/dist/media-player/hx.js.map +1 -0
  386. package/dist/media-player/index.d.ts +107 -0
  387. package/dist/media-player/index.d.ts.map +1 -0
  388. package/dist/media-player/index.js +219 -0
  389. package/dist/media-player/index.js.map +1 -0
  390. package/dist/media-player/mpv.d.ts +4 -0
  391. package/dist/media-player/mpv.d.ts.map +1 -0
  392. package/dist/media-player/mpv.js +120 -0
  393. package/dist/media-player/mpv.js.map +1 -0
  394. package/dist/media-player/vlc.d.ts +8 -0
  395. package/dist/media-player/vlc.d.ts.map +1 -0
  396. package/dist/media-player/vlc.js +83 -0
  397. package/dist/media-player/vlc.js.map +1 -0
  398. package/dist/richtext/index.d.ts +19 -0
  399. package/dist/richtext/index.d.ts.map +1 -0
  400. package/dist/richtext/index.js +4 -0
  401. package/dist/richtext/index.js.map +1 -0
  402. package/dist/richtext/links.d.ts +12 -0
  403. package/dist/richtext/links.d.ts.map +1 -0
  404. package/dist/richtext/links.js +64 -0
  405. package/dist/richtext/links.js.map +1 -0
  406. package/dist/richtext/menu.d.ts +11 -0
  407. package/dist/richtext/menu.d.ts.map +1 -0
  408. package/dist/richtext/menu.js +43 -0
  409. package/dist/richtext/menu.js.map +1 -0
  410. package/dist/richtext/node.d.ts +151 -0
  411. package/dist/richtext/node.d.ts.map +1 -0
  412. package/dist/richtext/node.js +255 -0
  413. package/dist/richtext/node.js.map +1 -0
  414. package/dist/richtext/runs.d.ts +92 -0
  415. package/dist/richtext/runs.d.ts.map +1 -0
  416. package/dist/richtext/runs.js +158 -0
  417. package/dist/richtext/runs.js.map +1 -0
  418. package/dist/table/hx.d.ts +24 -0
  419. package/dist/table/hx.d.ts.map +1 -0
  420. package/dist/table/hx.js +25 -0
  421. package/dist/table/hx.js.map +1 -0
  422. package/dist/table/index.d.ts +169 -0
  423. package/dist/table/index.d.ts.map +1 -0
  424. package/dist/table/index.js +844 -0
  425. package/dist/table/index.js.map +1 -0
  426. package/dist/table/rows.d.ts +136 -0
  427. package/dist/table/rows.d.ts.map +1 -0
  428. package/dist/table/rows.js +146 -0
  429. package/dist/table/rows.js.map +1 -0
  430. package/dist/terminal/backends.d.ts +105 -0
  431. package/dist/terminal/backends.d.ts.map +1 -0
  432. package/dist/terminal/backends.js +185 -0
  433. package/dist/terminal/backends.js.map +1 -0
  434. package/dist/terminal/hx.d.ts +24 -0
  435. package/dist/terminal/hx.d.ts.map +1 -0
  436. package/dist/terminal/hx.js +25 -0
  437. package/dist/terminal/hx.js.map +1 -0
  438. package/dist/terminal/index.d.ts +160 -0
  439. package/dist/terminal/index.d.ts.map +1 -0
  440. package/dist/terminal/index.js +344 -0
  441. package/dist/terminal/index.js.map +1 -0
  442. package/dist/terminal/title.d.ts +24 -0
  443. package/dist/terminal/title.d.ts.map +1 -0
  444. package/dist/terminal/title.js +129 -0
  445. package/dist/terminal/title.js.map +1 -0
  446. package/dist/terminal/vt/colors.d.ts +63 -0
  447. package/dist/terminal/vt/colors.d.ts.map +1 -0
  448. package/dist/terminal/vt/colors.js +203 -0
  449. package/dist/terminal/vt/colors.js.map +1 -0
  450. package/dist/terminal/vt/diff.d.ts +117 -0
  451. package/dist/terminal/vt/diff.d.ts.map +1 -0
  452. package/dist/terminal/vt/diff.js +358 -0
  453. package/dist/terminal/vt/diff.js.map +1 -0
  454. package/dist/terminal/vt/fonts.d.ts +92 -0
  455. package/dist/terminal/vt/fonts.d.ts.map +1 -0
  456. package/dist/terminal/vt/fonts.js +178 -0
  457. package/dist/terminal/vt/fonts.js.map +1 -0
  458. package/dist/terminal/vt/index.d.ts +78 -0
  459. package/dist/terminal/vt/index.d.ts.map +1 -0
  460. package/dist/terminal/vt/index.js +312 -0
  461. package/dist/terminal/vt/index.js.map +1 -0
  462. package/dist/terminal/vt/keys.d.ts +74 -0
  463. package/dist/terminal/vt/keys.d.ts.map +1 -0
  464. package/dist/terminal/vt/keys.js +309 -0
  465. package/dist/terminal/vt/keys.js.map +1 -0
  466. package/dist/terminal/vt/mouse.d.ts +44 -0
  467. package/dist/terminal/vt/mouse.d.ts.map +1 -0
  468. package/dist/terminal/vt/mouse.js +106 -0
  469. package/dist/terminal/vt/mouse.js.map +1 -0
  470. package/dist/terminal/vt/node.d.ts +246 -0
  471. package/dist/terminal/vt/node.d.ts.map +1 -0
  472. package/dist/terminal/vt/node.js +1068 -0
  473. package/dist/terminal/vt/node.js.map +1 -0
  474. package/dist/terminal/vt/pty.d.ts +81 -0
  475. package/dist/terminal/vt/pty.d.ts.map +1 -0
  476. package/dist/terminal/vt/pty.js +201 -0
  477. package/dist/terminal/vt/pty.js.map +1 -0
  478. package/dist/terminal/vt/renderer.d.ts +179 -0
  479. package/dist/terminal/vt/renderer.d.ts.map +1 -0
  480. package/dist/terminal/vt/renderer.js +357 -0
  481. package/dist/terminal/vt/renderer.js.map +1 -0
  482. package/dist/terminal/vt/timers.d.ts +6 -0
  483. package/dist/terminal/vt/timers.d.ts.map +1 -0
  484. package/dist/terminal/vt/timers.js +16 -0
  485. package/dist/terminal/vt/timers.js.map +1 -0
  486. package/dist/terminal/vt/xterm.d.ts +142 -0
  487. package/dist/terminal/vt/xterm.d.ts.map +1 -0
  488. package/dist/terminal/vt/xterm.js +32 -0
  489. package/dist/terminal/vt/xterm.js.map +1 -0
  490. package/dist/terminal-output/hx.d.ts +24 -0
  491. package/dist/terminal-output/hx.d.ts.map +1 -0
  492. package/dist/terminal-output/hx.js +25 -0
  493. package/dist/terminal-output/hx.js.map +1 -0
  494. package/dist/terminal-output/index.d.ts +92 -0
  495. package/dist/terminal-output/index.d.ts.map +1 -0
  496. package/dist/terminal-output/index.js +179 -0
  497. package/dist/terminal-output/index.js.map +1 -0
  498. package/dist/terminal-output/runs.d.ts +27 -0
  499. package/dist/terminal-output/runs.d.ts.map +1 -0
  500. package/dist/terminal-output/runs.js +66 -0
  501. package/dist/terminal-output/runs.js.map +1 -0
  502. package/dist/three/canvas.d.ts +46 -0
  503. package/dist/three/canvas.d.ts.map +1 -0
  504. package/dist/three/canvas.js +305 -0
  505. package/dist/three/canvas.js.map +1 -0
  506. package/dist/three/events.d.ts +64 -0
  507. package/dist/three/events.d.ts.map +1 -0
  508. package/dist/three/events.js +146 -0
  509. package/dist/three/events.js.map +1 -0
  510. package/dist/three/geometries.d.ts +89 -0
  511. package/dist/three/geometries.d.ts.map +1 -0
  512. package/dist/three/geometries.js +345 -0
  513. package/dist/three/geometries.js.map +1 -0
  514. package/dist/three/globals.d.ts +7 -0
  515. package/dist/three/globals.d.ts.map +1 -0
  516. package/dist/three/globals.js +20 -0
  517. package/dist/three/globals.js.map +1 -0
  518. package/dist/three/hx.d.ts +9 -0
  519. package/dist/three/hx.d.ts.map +1 -0
  520. package/dist/three/hx.js +10 -0
  521. package/dist/three/hx.js.map +1 -0
  522. package/dist/three/index.d.ts +22 -0
  523. package/dist/three/index.d.ts.map +1 -0
  524. package/dist/three/index.js +24 -0
  525. package/dist/three/index.js.map +1 -0
  526. package/dist/three/jsx-dev-runtime.d.ts +19 -0
  527. package/dist/three/jsx-dev-runtime.d.ts.map +1 -0
  528. package/dist/three/jsx-dev-runtime.js +2 -0
  529. package/dist/three/jsx-dev-runtime.js.map +1 -0
  530. package/dist/three/jsx-runtime.d.ts +19 -0
  531. package/dist/three/jsx-runtime.d.ts.map +1 -0
  532. package/dist/three/jsx-runtime.js +2 -0
  533. package/dist/three/jsx-runtime.js.map +1 -0
  534. package/dist/three/jsx.d.ts +198 -0
  535. package/dist/three/jsx.d.ts.map +1 -0
  536. package/dist/three/jsx.js +2 -0
  537. package/dist/three/jsx.js.map +1 -0
  538. package/dist/three/materials.d.ts +125 -0
  539. package/dist/three/materials.d.ts.map +1 -0
  540. package/dist/three/materials.js +229 -0
  541. package/dist/three/materials.js.map +1 -0
  542. package/dist/three/math.d.ts +146 -0
  543. package/dist/three/math.d.ts.map +1 -0
  544. package/dist/three/math.js +464 -0
  545. package/dist/three/math.js.map +1 -0
  546. package/dist/three/objects.d.ts +185 -0
  547. package/dist/three/objects.d.ts.map +1 -0
  548. package/dist/three/objects.js +309 -0
  549. package/dist/three/objects.js.map +1 -0
  550. package/dist/three/passes.d.ts +54 -0
  551. package/dist/three/passes.d.ts.map +1 -0
  552. package/dist/three/passes.js +78 -0
  553. package/dist/three/passes.js.map +1 -0
  554. package/dist/three/postprocess.d.ts +85 -0
  555. package/dist/three/postprocess.d.ts.map +1 -0
  556. package/dist/three/postprocess.js +503 -0
  557. package/dist/three/postprocess.js.map +1 -0
  558. package/dist/three/raycast.d.ts +24 -0
  559. package/dist/three/raycast.d.ts.map +1 -0
  560. package/dist/three/raycast.js +138 -0
  561. package/dist/three/raycast.js.map +1 -0
  562. package/dist/three/reconciler.d.ts +48 -0
  563. package/dist/three/reconciler.d.ts.map +1 -0
  564. package/dist/three/reconciler.js +416 -0
  565. package/dist/three/reconciler.js.map +1 -0
  566. package/dist/three/renderer-direct.d.ts +102 -0
  567. package/dist/three/renderer-direct.d.ts.map +1 -0
  568. package/dist/three/renderer-direct.js +782 -0
  569. package/dist/three/renderer-direct.js.map +1 -0
  570. package/dist/three/renderer-indirect.d.ts +68 -0
  571. package/dist/three/renderer-indirect.d.ts.map +1 -0
  572. package/dist/three/renderer-indirect.js +438 -0
  573. package/dist/three/renderer-indirect.js.map +1 -0
  574. package/dist/three/store.d.ts +81 -0
  575. package/dist/three/store.d.ts.map +1 -0
  576. package/dist/three/store.js +110 -0
  577. package/dist/three/store.js.map +1 -0
  578. package/dist/timeline/hx.d.ts +18 -0
  579. package/dist/timeline/hx.d.ts.map +1 -0
  580. package/dist/timeline/hx.js +10 -0
  581. package/dist/timeline/hx.js.map +1 -0
  582. package/dist/timeline/index.d.ts +152 -0
  583. package/dist/timeline/index.d.ts.map +1 -0
  584. package/dist/timeline/index.js +383 -0
  585. package/dist/timeline/index.js.map +1 -0
  586. package/dist/tray-host/hx.d.ts +24 -0
  587. package/dist/tray-host/hx.d.ts.map +1 -0
  588. package/dist/tray-host/hx.js +25 -0
  589. package/dist/tray-host/hx.js.map +1 -0
  590. package/dist/tray-host/index.d.ts +110 -0
  591. package/dist/tray-host/index.d.ts.map +1 -0
  592. package/dist/tray-host/index.js +191 -0
  593. package/dist/tray-host/index.js.map +1 -0
  594. package/dist/tray-host/manager.d.ts +137 -0
  595. package/dist/tray-host/manager.d.ts.map +1 -0
  596. package/dist/tray-host/manager.js +462 -0
  597. package/dist/tray-host/manager.js.map +1 -0
  598. package/dist/tray-host/notify.d.ts +22 -0
  599. package/dist/tray-host/notify.d.ts.map +1 -0
  600. package/dist/tray-host/notify.js +74 -0
  601. package/dist/tray-host/notify.js.map +1 -0
  602. package/dist/tray-host/protocol.d.ts +106 -0
  603. package/dist/tray-host/protocol.d.ts.map +1 -0
  604. package/dist/tray-host/protocol.js +191 -0
  605. package/dist/tray-host/protocol.js.map +1 -0
  606. package/dist/tree/hx.d.ts +24 -0
  607. package/dist/tree/hx.d.ts.map +1 -0
  608. package/dist/tree/hx.js +25 -0
  609. package/dist/tree/hx.js.map +1 -0
  610. package/dist/tree/index.d.ts +221 -0
  611. package/dist/tree/index.d.ts.map +1 -0
  612. package/dist/tree/index.js +716 -0
  613. package/dist/tree/index.js.map +1 -0
  614. package/dist/tree/internal.d.ts +18 -0
  615. package/dist/tree/internal.d.ts.map +1 -0
  616. package/dist/tree/internal.js +66 -0
  617. package/dist/tree/internal.js.map +1 -0
  618. package/dist/tree/rows.d.ts +177 -0
  619. package/dist/tree/rows.d.ts.map +1 -0
  620. package/dist/tree/rows.js +179 -0
  621. package/dist/tree/rows.js.map +1 -0
  622. package/package.json +166 -12
  623. package/src/ansi/cast.ts +159 -0
  624. package/src/ansi/index.ts +53 -0
  625. package/src/ansi/palette.ts +226 -0
  626. package/src/ansi/parse.ts +780 -0
  627. package/src/ansi/sgr.ts +380 -0
  628. package/src/ansi/utf8.ts +84 -0
  629. package/src/calendar/Calendar.ts +744 -0
  630. package/src/calendar/DatePicker.ts +368 -0
  631. package/src/calendar/dates.ts +307 -0
  632. package/src/calendar/index.ts +51 -0
  633. package/src/charts/components.ts +864 -0
  634. package/src/charts/data.ts +776 -0
  635. package/src/charts/hx.ts +39 -0
  636. package/src/charts/index.ts +99 -0
  637. package/src/charts/node.ts +932 -0
  638. package/src/charts/render.ts +982 -0
  639. package/src/charts/scale.ts +214 -0
  640. package/src/charts/spec.ts +122 -0
  641. package/src/charts/timers.ts +24 -0
  642. package/src/code/hx.ts +51 -0
  643. package/src/code/index.ts +174 -0
  644. package/src/code-editor/completion.ts +161 -0
  645. package/src/code-editor/doc.ts +198 -0
  646. package/src/code-editor/hx.ts +26 -0
  647. package/src/code-editor/index.ts +615 -0
  648. package/src/code-editor/node.ts +1926 -0
  649. package/src/code-language/hljs.ts +302 -0
  650. package/src/code-language/index.ts +51 -0
  651. package/src/code-language/languages/glsl.ts +120 -0
  652. package/src/code-language/languages/javascript.ts +419 -0
  653. package/src/code-language/languages/json.ts +72 -0
  654. package/src/code-language/languages/shell.ts +221 -0
  655. package/src/code-language/languages/sql.ts +165 -0
  656. package/src/code-language/lezer.ts +190 -0
  657. package/src/code-language/registry.ts +66 -0
  658. package/src/code-language/runs.ts +128 -0
  659. package/src/code-language/stream.ts +306 -0
  660. package/src/code-language/textmate.ts +134 -0
  661. package/src/code-language/theme.ts +124 -0
  662. package/src/code-language/timers.ts +36 -0
  663. package/src/code-language/types.ts +252 -0
  664. package/src/codeblock/index.ts +146 -0
  665. package/src/color-picker/ColorField.ts +333 -0
  666. package/src/color-picker/ColorPicker.ts +1069 -0
  667. package/src/color-picker/color.ts +399 -0
  668. package/src/color-picker/index.ts +50 -0
  669. package/src/desktop-calendar/eds.ts +484 -0
  670. package/src/desktop-calendar/ical.ts +119 -0
  671. package/src/desktop-calendar/index.ts +287 -0
  672. package/src/embed/client.ts +311 -0
  673. package/src/embed/host.ts +432 -0
  674. package/src/embed/index.ts +33 -0
  675. package/src/embed/timers.ts +32 -0
  676. package/src/flow/draw.ts +418 -0
  677. package/src/flow/index.ts +473 -0
  678. package/src/flow/model.ts +687 -0
  679. package/src/flow/node.ts +3694 -0
  680. package/src/flow/paths.ts +403 -0
  681. package/src/flow/types.ts +634 -0
  682. package/src/formula/hx.ts +51 -0
  683. package/src/formula/index.ts +243 -0
  684. package/src/formula/katex.ts +209 -0
  685. package/src/formula/layout.ts +876 -0
  686. package/src/formula/node.ts +467 -0
  687. package/src/html/controls.ts +244 -0
  688. package/src/html/css/cascade.ts +606 -0
  689. package/src/html/css/parse.ts +500 -0
  690. package/src/html/css/style.ts +1371 -0
  691. package/src/html/css/ua.ts +174 -0
  692. package/src/html/css/values.ts +358 -0
  693. package/src/html/dom.ts +410 -0
  694. package/src/html/hx.ts +55 -0
  695. package/src/html/index.ts +545 -0
  696. package/src/html/layout/block.ts +876 -0
  697. package/src/html/layout/boxes.ts +981 -0
  698. package/src/html/layout/flex.ts +297 -0
  699. package/src/html/layout/floats.ts +125 -0
  700. package/src/html/layout/inline.ts +870 -0
  701. package/src/html/layout/table.ts +380 -0
  702. package/src/html/node.ts +967 -0
  703. package/src/html/paint.ts +605 -0
  704. package/src/html/resources.ts +214 -0
  705. package/src/index.ts +638 -0
  706. package/src/internal/heights.ts +211 -0
  707. package/src/internal/hx.ts +53 -0
  708. package/src/internal/text.ts +44 -0
  709. package/src/internal/timers.ts +44 -0
  710. package/src/internal/widget.ts +92 -0
  711. package/src/markdown/ast.ts +163 -0
  712. package/src/markdown/hx.ts +51 -0
  713. package/src/markdown/index.ts +686 -0
  714. package/src/markdown/parse.ts +1037 -0
  715. package/src/markdown/spans.ts +143 -0
  716. package/src/media-player/backends.ts +155 -0
  717. package/src/media-player/control.ts +70 -0
  718. package/src/media-player/hx.ts +51 -0
  719. package/src/media-player/index.ts +378 -0
  720. package/src/media-player/mpv.ts +146 -0
  721. package/src/media-player/vlc.ts +97 -0
  722. package/src/richtext/index.ts +42 -0
  723. package/src/richtext/links.ts +78 -0
  724. package/src/richtext/menu.ts +49 -0
  725. package/src/richtext/node.ts +406 -0
  726. package/src/richtext/runs.ts +253 -0
  727. package/src/table/hx.ts +51 -0
  728. package/src/table/index.ts +1219 -0
  729. package/src/table/rows.ts +275 -0
  730. package/src/terminal/backends.ts +242 -0
  731. package/src/terminal/hx.ts +51 -0
  732. package/src/terminal/index.ts +574 -0
  733. package/src/terminal/title.ts +172 -0
  734. package/src/terminal/vt/colors.ts +247 -0
  735. package/src/terminal/vt/diff.ts +467 -0
  736. package/src/terminal/vt/fonts.ts +233 -0
  737. package/src/terminal/vt/index.ts +443 -0
  738. package/src/terminal/vt/keys.ts +369 -0
  739. package/src/terminal/vt/mouse.ts +144 -0
  740. package/src/terminal/vt/node.ts +1242 -0
  741. package/src/terminal/vt/pty.ts +334 -0
  742. package/src/terminal/vt/renderer.ts +555 -0
  743. package/src/terminal/vt/timers.ts +31 -0
  744. package/src/terminal/vt/xterm.ts +193 -0
  745. package/src/terminal-output/hx.ts +51 -0
  746. package/src/terminal-output/index.ts +340 -0
  747. package/src/terminal-output/runs.ts +79 -0
  748. package/src/three/canvas.ts +451 -0
  749. package/src/three/events.ts +197 -0
  750. package/src/three/geometries.ts +429 -0
  751. package/src/three/globals.ts +34 -0
  752. package/src/three/hx.ts +22 -0
  753. package/src/three/index.ts +98 -0
  754. package/src/three/jsx-dev-runtime.ts +27 -0
  755. package/src/three/jsx-runtime.ts +38 -0
  756. package/src/three/jsx.ts +275 -0
  757. package/src/three/materials.ts +270 -0
  758. package/src/three/math.ts +585 -0
  759. package/src/three/objects.ts +397 -0
  760. package/src/three/passes.ts +90 -0
  761. package/src/three/postprocess.ts +677 -0
  762. package/src/three/raycast.ts +189 -0
  763. package/src/three/react-reconciler.d.ts +50 -0
  764. package/src/three/reconciler.ts +624 -0
  765. package/src/three/renderer-direct.ts +1055 -0
  766. package/src/three/renderer-indirect.ts +570 -0
  767. package/src/three/store.ts +207 -0
  768. package/src/timeline/hx.ts +31 -0
  769. package/src/timeline/index.ts +603 -0
  770. package/src/tray-host/hx.ts +51 -0
  771. package/src/tray-host/index.ts +331 -0
  772. package/src/tray-host/manager.ts +639 -0
  773. package/src/tray-host/notify.ts +102 -0
  774. package/src/tray-host/protocol.ts +235 -0
  775. package/src/tree/hx.ts +51 -0
  776. package/src/tree/index.ts +1087 -0
  777. package/src/tree/internal.ts +87 -0
  778. package/src/tree/rows.ts +334 -0
  779. package/src/index.d.ts +0 -2
  780. package/src/index.js +0 -9
  781. package/src/sparkline/index.d.ts +0 -29
  782. package/src/sparkline/index.js +0 -50
  783. package/src/sparkline/node.js +0 -72
@@ -0,0 +1,383 @@
1
+ // <Timeline> — a vertical run of events: an indicator per step, a line
2
+ // between them, and content beside them.
3
+ //
4
+ // The API is [Chakra UI's Timeline](https://chakra-ui.com/docs/components/timeline)
5
+ // with its parts spelled flat — `Timeline.Root` is `<Timeline>`,
6
+ // `Timeline.Item` is `<TimelineItem>` — because that is how the rest of this
7
+ // package names a composition (see `/charts`), and because a namespace object
8
+ // is a module-scope mutation the tree-shaking guard would have to reason
9
+ // about. Everything else is Chakra's: the eight parts, `size`, `variant`, and
10
+ // the last item's line being off by default.
11
+ //
12
+ // It is pure composition of `<box>` and `<text>`, so there is no
13
+ // `registerElement` here and nothing for the reconciler to learn. The one
14
+ // piece that looks like it wants a custom drawing element — the line running
15
+ // down the gutter — is a 1px `<box>` positioned absolutely over the item's
16
+ // full height, which is exactly how the web does it and costs a rectangle
17
+ // instead of a paint callback.
18
+ import React from 'react';
19
+ import { useTheme } from 'react-x11';
20
+ import { interpolate, readableInk } from 'react-x11/style';
21
+ import { hx } from './hx.js';
22
+ const h = React.createElement;
23
+ // --- geometry ---------------------------------------------------------------
24
+ //
25
+ // Chakra's numbers, tightened for the desktop: a web timeline is read at arm's
26
+ // length down a column that owns the page, and a panel in an application
27
+ // window is not. Everything a caller is likely to want to move — the width of
28
+ // the whole thing, the space around it — is `style` on the root, so these stay
29
+ // constants rather than props.
30
+ /** The line. One pixel, at every size, the way every timeline draws it. */
31
+ const THICKNESS = 1;
32
+ /** Between the connector column and the content beside it. */
33
+ const ITEM_GAP = 12;
34
+ /** Between the rows inside one item's content. */
35
+ const CONTENT_GAP = 4;
36
+ /** Under one item's content: the run of line between two indicators. */
37
+ const STEP_GAP = 18;
38
+ /** Inside a title, between the label and whatever is set beside it. */
39
+ const TITLE_GAP = 6;
40
+ /**
41
+ * How far an indicator clears the line it sits on.
42
+ *
43
+ * Drawn as an `outline`, which is painted outside the border box and never
44
+ * seen by yoga — so the clearance cannot move the circle it surrounds, and a
45
+ * variant that turns it off cannot change the layout either.
46
+ */
47
+ const RING = 2;
48
+ // The indicator sizes are Chakra's (16/20/24/32). The type sizes are not:
49
+ // they step off the theme's own `fontSize` rather than a fixed scale, so a
50
+ // theme that sets 16 gets a timeline in 16 instead of one that ignores it.
51
+ const SIZES = {
52
+ sm: { indicator: 16, font: 10, titleStep: -2, titleTop: 0 },
53
+ md: { indicator: 20, font: 12, titleStep: 0, titleTop: 0 },
54
+ lg: { indicator: 24, font: 12, titleStep: 0, titleTop: 2 },
55
+ xl: { indicator: 32, font: 14, titleStep: 0, titleTop: 6 },
56
+ };
57
+ const LookContext = React.createContext(null);
58
+ /** Whether the item being rendered is the last one. */
59
+ const LastContext = React.createContext(false);
60
+ function useLook(part) {
61
+ const look = React.useContext(LookContext);
62
+ if (!look) {
63
+ throw new Error(`@react-x11/components: <${part}> has to be inside a <Timeline>. ` +
64
+ 'It reads the size, the variant and the accent from it.');
65
+ }
66
+ return look;
67
+ }
68
+ /**
69
+ * A colour prop, resolved against the palette.
70
+ *
71
+ * `$token` is normally the renderer's job — it resolves one against the
72
+ * nearest `theme` prop while painting — but `tint()` and `readableInk()` are
73
+ * arithmetic over real colours and run here, before any of that. So the two
74
+ * colours this component computes *from* are looked up eagerly, and every
75
+ * other colour it uses stays a `$token` in the style.
76
+ */
77
+ function resolveColor(value, theme, fallback) {
78
+ if (!value)
79
+ return fallback;
80
+ if (!value.startsWith('$'))
81
+ return value;
82
+ const named = theme[value.slice(1)];
83
+ return typeof named === 'string' ? named : fallback;
84
+ }
85
+ /**
86
+ * `accent` laid over `ground`, opaquely — a weak wash of the accent at
87
+ * `amount`, a strong one near 1.
88
+ *
89
+ * The obvious spelling of a `subtle` chip is `tint(accent, 0.22)`, and it is
90
+ * the wrong one here: the line runs *behind* every indicator, so a
91
+ * translucent chip has it showing through the middle of the mark. Mixing
92
+ * against the ground gives the same colour and stops the light — and it is
93
+ * still one expression for both palettes, because the ground is what
94
+ * differs between them.
95
+ *
96
+ * `interpolate` is the renderer's own colour lerp, the one that drives every
97
+ * `transition`; it answers null for anything it cannot parse, which is the
98
+ * same "keep going with what you were given" the rest of the style layer
99
+ * does.
100
+ */
101
+ function over(ground, accent, amount) {
102
+ const mixed = interpolate(ground, accent, amount);
103
+ return typeof mixed === 'string' ? mixed : accent;
104
+ }
105
+ /**
106
+ * Strings and numbers are only legal inside `<text>`, and every part here
107
+ * takes prose — `<TimelineTitle>Product shipped</TimelineTitle>` is the
108
+ * shortest thing that works and has to keep working. So a primitive child is
109
+ * wrapped, and an element child is left exactly as it was written.
110
+ *
111
+ * The wrapper carries no style of its own: `color`, `fontSize`, `fontFamily`
112
+ * and `fontWeight` inherit down the tree, so the box above it has already
113
+ * said everything there is to say — and an app's own `<text>` child inherits
114
+ * the same thing, which is what keeps the two forms looking alike.
115
+ */
116
+ function withText(children) {
117
+ let wrapped = false;
118
+ const mapped = React.Children.map(children, (child) => {
119
+ if (typeof child !== 'string' && typeof child !== 'number')
120
+ return child;
121
+ wrapped = true;
122
+ return hx('text', null, child);
123
+ });
124
+ return wrapped ? mapped : children;
125
+ }
126
+ /**
127
+ * The part's own style, then the caller's — later entries win, which is how
128
+ * every `style` prop in this renderer resolves precedence.
129
+ */
130
+ function styled(base, extra) {
131
+ if (!extra)
132
+ return [base];
133
+ return Array.isArray(extra) ? [base, ...extra] : [base, extra];
134
+ }
135
+ /**
136
+ * A timeline.
137
+ *
138
+ * ```jsx
139
+ * <Timeline>
140
+ * <TimelineItem>
141
+ * <TimelineConnector>
142
+ * <TimelineSeparator />
143
+ * <TimelineIndicator>1</TimelineIndicator>
144
+ * </TimelineConnector>
145
+ * <TimelineContent>
146
+ * <TimelineTitle>Product shipped</TimelineTitle>
147
+ * <TimelineDescription>13th May 2021</TimelineDescription>
148
+ * </TimelineContent>
149
+ * </TimelineItem>
150
+ * </Timeline>
151
+ * ```
152
+ */
153
+ export function Timeline(props) {
154
+ // `Theme` is an interface, so it has no implicit index signature — the same
155
+ // widening `hx.ts` documents for the `theme` prop.
156
+ const theme = useTheme();
157
+ const size = props.size ?? 'md';
158
+ const variant = props.variant ?? 'solid';
159
+ const accent = resolveColor(props.accent, theme, String(theme.accent));
160
+ const ground = resolveColor(props.ground, theme, String(theme.background));
161
+ const showLastSeparator = props.showLastSeparator ?? false;
162
+ const body = typeof theme.fontSize === 'number' ? theme.fontSize : 14;
163
+ const look = React.useMemo(() => {
164
+ const spec = SIZES[size] ?? SIZES.md;
165
+ return {
166
+ variant,
167
+ accent,
168
+ ground,
169
+ indicator: spec.indicator,
170
+ indicatorFont: spec.font,
171
+ titleFont: body + spec.titleStep,
172
+ titleTop: spec.titleTop,
173
+ // One size for every timeline, as in Chakra: a caption is a caption,
174
+ // and a description that grew with the indicator would make the
175
+ // biggest timeline the one whose dates are hardest to skim.
176
+ descriptionFont: body - 2,
177
+ showLastSeparator,
178
+ };
179
+ }, [size, variant, accent, ground, showLastSeparator, body]);
180
+ // Which item is last is a `:last-of-type` selector on the web and a walk
181
+ // here. `Children.toArray` drops the nulls a `{cond && <TimelineItem/>}`
182
+ // leaves behind, so "last" means the last one actually rendered.
183
+ const items = React.Children.toArray(props.children);
184
+ const end = items.length - 1;
185
+ return h(LookContext.Provider, { value: look }, hx('box', {
186
+ // A run of steps is a list, and saying so is what gets a screen
187
+ // reader to announce "list, 4 items" before reading the first one.
188
+ role: 'list',
189
+ style: styled({ flexDirection: 'column' }, props.style),
190
+ 'data-testname': props['data-testname'],
191
+ }, items.map((child, i) => h(LastContext.Provider, {
192
+ key: (React.isValidElement(child) && child.key) || i,
193
+ value: i === end,
194
+ }, child))));
195
+ }
196
+ /**
197
+ * One step: a connector column and the content beside it, in whichever order
198
+ * they are written. Putting a `<TimelineContent>` *before* the connector is
199
+ * how the two-sided layout is built.
200
+ */
201
+ export function TimelineItem(props) {
202
+ useLook('TimelineItem');
203
+ return hx('box', {
204
+ // `listitem` takes its accessible name from its contents, so the title
205
+ // and the date below are what an assistive technology reads out.
206
+ role: 'listitem',
207
+ style: styled({
208
+ flexDirection: 'row',
209
+ alignItems: 'flex-start',
210
+ flexShrink: 0,
211
+ gap: ITEM_GAP,
212
+ }, props.style),
213
+ 'data-testname': props['data-testname'],
214
+ }, props.children);
215
+ }
216
+ /**
217
+ * The gutter: the indicator, and the line running past it.
218
+ *
219
+ * `alignSelf: 'stretch'` is what makes it as tall as the item however tall
220
+ * the content beside it turns out to be, which is what the separator measures
221
+ * itself against.
222
+ *
223
+ * Which *side* it lands on is nobody's decision here: `<TimelineItem>` is a
224
+ * plain flex row, so an RTL subtree mirrors it and the marks end up on the
225
+ * right, where an RTL reader starts. That is the reason there is no `side`
226
+ * prop — `direction` already says this, and a second way to say it is a
227
+ * second thing that can disagree with the first.
228
+ */
229
+ export function TimelineConnector(props) {
230
+ useLook('TimelineConnector');
231
+ return hx('box', {
232
+ style: styled({ alignSelf: 'stretch', alignItems: 'center', flexShrink: 0 }, props.style),
233
+ 'data-testname': props['data-testname'],
234
+ }, props.children);
235
+ }
236
+ /**
237
+ * The line down the gutter.
238
+ *
239
+ * It spans the item's full height and the indicator is painted over it,
240
+ * rather than being two stubs above and below — that is the arrangement that
241
+ * needs no arithmetic about where the indicator ends, and it is why the
242
+ * indicator carries a `ground`-coloured ring: the ring is what cuts the line.
243
+ *
244
+ * `zIndex: -1` rather than an ordering rule: Chakra's snippets write the
245
+ * separator before the indicator, but a reader who writes it after should get
246
+ * the same picture, and paint order is otherwise document order.
247
+ */
248
+ export function TimelineSeparator(props) {
249
+ const look = useLook('TimelineSeparator');
250
+ const last = React.useContext(LastContext);
251
+ if (last && !look.showLastSeparator)
252
+ return null;
253
+ return hx('box', {
254
+ style: styled({
255
+ position: 'absolute',
256
+ top: 0,
257
+ bottom: 0,
258
+ width: THICKNESS,
259
+ // `start` rather than `left`, so an RTL timeline puts its gutter on
260
+ // the other side without anything here knowing which way it reads.
261
+ start: Math.round((look.indicator - THICKNESS) / 2),
262
+ backgroundColor: '$border',
263
+ zIndex: -1,
264
+ }, props.style),
265
+ 'data-testname': props['data-testname'],
266
+ });
267
+ }
268
+ /**
269
+ * The mark on the line: a filled circle by default, with a step number, a
270
+ * glyph or nothing inside it.
271
+ *
272
+ * An `<Icon>` in here needs no colour of its own — `color` inherits down the
273
+ * tree and a `mono` canvas resolves its ink the same way `<text>` does — but
274
+ * it does need a `size`, which does not inherit.
275
+ */
276
+ export function TimelineIndicator(props) {
277
+ const look = useLook('TimelineIndicator');
278
+ const theme = useTheme();
279
+ const variant = props.variant ?? look.variant;
280
+ const accent = props.accent === undefined
281
+ ? look.accent
282
+ : resolveColor(props.accent, theme, look.accent);
283
+ // The ink on a filled indicator. The palette has already answered this for
284
+ // its own accent (`accentText`, itself derived), so ask it rather than
285
+ // deriving a second answer that could disagree; a colour the app brought is
286
+ // measured the same way core measures one.
287
+ const onAccent = accent === theme.accent
288
+ ? String(theme.accentText)
289
+ : readableInk(accent, [String(theme.text), String(theme.background)]);
290
+ const paint = variant === 'solid'
291
+ ? { backgroundColor: accent, color: props.color ?? onAccent }
292
+ : variant === 'subtle'
293
+ ? {
294
+ backgroundColor: over(look.ground, accent, 0.22),
295
+ color: props.color ?? '$text',
296
+ }
297
+ : variant === 'outline'
298
+ ? {
299
+ backgroundColor: look.ground,
300
+ borderWidth: 1,
301
+ borderColor: over(look.ground, accent, 0.55),
302
+ color: props.color ?? '$text',
303
+ }
304
+ : // plain: no chip, but still opaque. The line runs *behind* every
305
+ // indicator, and a transparent one would have it struck through
306
+ // whatever is inside — which is the one thing a tick in a
307
+ // timeline must not look like.
308
+ { backgroundColor: look.ground, color: props.color ?? '$text' };
309
+ return hx('box', {
310
+ style: styled({
311
+ width: look.indicator,
312
+ height: look.indicator,
313
+ borderRadius: look.indicator / 2,
314
+ alignItems: 'center',
315
+ justifyContent: 'center',
316
+ flexShrink: 0,
317
+ fontSize: look.indicatorFont,
318
+ fontWeight: 'bold',
319
+ // The clearance around the mark. An explicit `outlineWidth` draws
320
+ // the ring whether or not anything is focused, which is what makes
321
+ // it usable as something other than a focus ring.
322
+ outlineWidth: RING,
323
+ outlineColor: look.ground,
324
+ outlineOffset: 0,
325
+ ...paint,
326
+ }, props.style),
327
+ 'data-testname': props['data-testname'],
328
+ }, withText(props.children));
329
+ }
330
+ /**
331
+ * What the step says. Its bottom padding is the run of line between this
332
+ * indicator and the next, so the gutter's length is decided by the content
333
+ * beside it rather than by a height anyone has to name — and the last item
334
+ * has none, which is what stops a timeline ending in a gap.
335
+ */
336
+ export function TimelineContent(props) {
337
+ useLook('TimelineContent');
338
+ const last = React.useContext(LastContext);
339
+ return hx('box', {
340
+ style: styled({
341
+ flexDirection: 'column',
342
+ flexGrow: 1,
343
+ flexShrink: 1,
344
+ gap: CONTENT_GAP,
345
+ paddingBottom: last ? 0 : STEP_GAP,
346
+ }, props.style),
347
+ 'data-testname': props['data-testname'],
348
+ }, withText(props.children));
349
+ }
350
+ /**
351
+ * The step's heading. A row, so a badge or a timestamp can sit beside the
352
+ * label, dropped by whatever it takes to line its letters up with the middle
353
+ * of the indicator at this size.
354
+ */
355
+ export function TimelineTitle(props) {
356
+ const look = useLook('TimelineTitle');
357
+ return hx('box', {
358
+ style: styled({
359
+ flexDirection: 'row',
360
+ flexWrap: 'wrap',
361
+ alignItems: 'center',
362
+ gap: TITLE_GAP,
363
+ marginTop: look.titleTop,
364
+ fontSize: look.titleFont,
365
+ fontWeight: 'bold',
366
+ color: '$text',
367
+ }, props.style),
368
+ 'data-testname': props['data-testname'],
369
+ }, withText(props.children));
370
+ }
371
+ /** The quiet line under the title: a date, a name, a status. */
372
+ export function TimelineDescription(props) {
373
+ const look = useLook('TimelineDescription');
374
+ return hx('box', {
375
+ style: styled({
376
+ flexDirection: 'column',
377
+ fontSize: look.descriptionFont,
378
+ color: '$textMuted',
379
+ }, props.style),
380
+ 'data-testname': props['data-testname'],
381
+ }, withText(props.children));
382
+ }
383
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/timeline/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Key, ReactElement, ReactNode } from 'react';
2
+ import type { ReactX11Elements, Theme } from 'react-x11';
3
+ /** The host elements, by name. */
4
+ export type Host = ReactX11Elements;
5
+ /**
6
+ * What every element takes on top of its own props.
7
+ *
8
+ * `theme` is honoured by **every** node — `Node.theme` merges `props.theme`
9
+ * over the inherited palette, whatever the kind — but react-x11's element
10
+ * declarations only put it on `<window>`. A widget re-declares the theme it
11
+ * read from context onto its own root so that `$token` values still resolve
12
+ * inside a `<popup>`, which is a separate window and does not inherit the
13
+ * trigger's node tree. So the prop is real; only the declaration is narrow.
14
+ */
15
+ interface CommonProps {
16
+ key?: Key;
17
+ /** `Theme` is listed alongside the record because it is an interface, and
18
+ * an interface has no implicit index signature — so the palette `useTheme`
19
+ * hands back is not assignable to the record react-x11 declares. */
20
+ theme?: Theme | Record<string, string | number>;
21
+ }
22
+ export declare function hx<K extends keyof Host>(type: K, props?: (Omit<Host[K], 'theme'> & CommonProps) | null, ...children: ReactNode[]): ReactElement;
23
+ export {};
24
+ //# sourceMappingURL=hx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx.d.ts","sourceRoot":"","sources":["../../src/tray-host/hx.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEzD,kCAAkC;AAClC,MAAM,MAAM,IAAI,GAAG,gBAAgB,CAAC;AAEpC;;;;;;;;;GASG;AACH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV;;yEAEqE;IACrE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CACjD;AAED,wBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,IAAI,EACrC,IAAI,EAAE,CAAC,EAIP,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,EACrD,GAAG,QAAQ,EAAE,SAAS,EAAE,GACvB,YAAY,CAKd"}
@@ -0,0 +1,25 @@
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
+ export function hx(type,
16
+ // `theme` is dropped from the element's own props before the merge:
17
+ // `<window>` and `<popup>` already declare it, narrower, and intersecting
18
+ // the two would demand a value satisfying both.
19
+ props, ...children) {
20
+ // The cast is the whole point of the wrapper: `createElement`'s string
21
+ // overload insists on DOM props, and the signature above has already
22
+ // checked these against the element that will actually receive them.
23
+ return React.createElement(type, props, ...children);
24
+ }
25
+ //# sourceMappingURL=hx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx.js","sourceRoot":"","sources":["../../src/tray-host/hx.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,8EAA8E;AAC9E,wEAAwE;AACxE,0EAA0E;AAC1E,kEAAkE;AAClE,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,wEAAwE;AACxE,OAAO,KAAK,MAAM,OAAO,CAAC;AAyB1B,MAAM,UAAU,EAAE,CAChB,IAAO;AACP,oEAAoE;AACpE,0EAA0E;AAC1E,gDAAgD;AAChD,KAAqD,EACrD,GAAG,QAAqB;IAExB,uEAAuE;IACvE,qEAAqE;IACrE,qEAAqE;IACrE,OAAO,KAAK,CAAC,aAAa,CAAC,IAAc,EAAE,KAAc,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,110 @@
1
+ import type { ReactElement, ReactNode, Ref } from 'react';
2
+ import type { Style } from 'react-x11/style';
3
+ import type { TrayConflict, TrayStatus } from './manager.js';
4
+ import type { TrayIcon, TrayMessage, TrayOrientation } from './protocol.js';
5
+ export { BalloonAssembler, MANAGER_ATOM, MESSAGE_DATA_ATOM, OPCODE_ATOM, ORIENTATION_ATOM, ORIENTATION_HORIZONTAL, ORIENTATION_VERTICAL, SYSTEM_TRAY_BEGIN_MESSAGE, SYSTEM_TRAY_CANCEL_MESSAGE, SYSTEM_TRAY_REQUEST_DOCK, VISUAL_ATOM, argbVisualOf, decodeUtf8, orientationValue, selectionNameFor, } from './protocol.js';
6
+ export type { TrayIcon, TrayMessage, TrayOrientation } from './protocol.js';
7
+ export { TrayManager } from './manager.js';
8
+ export type { TrayApp, TrayConflict, TrayManagerHandlers, TrayManagerStartOptions, TrayStatus, } from './manager.js';
9
+ export { BalloonNotifier } from './notify.js';
10
+ /** What a `ref` on `<TrayHost>` gets. */
11
+ export interface TrayHostHandle {
12
+ readonly status: TrayStatus;
13
+ /** Who owns the selection, when this host does not. */
14
+ readonly conflict: TrayConflict | null;
15
+ /** The docked icons, in the order they are rendered. */
16
+ readonly icons: readonly TrayIcon[];
17
+ /** The manager selection window — the address clients send opcodes to. */
18
+ readonly windowId: number | null;
19
+ }
20
+ export interface TrayHostProps {
21
+ /**
22
+ * Which way the icons run, and what `_NET_SYSTEM_TRAY_ORIENTATION` says so
23
+ * an icon can draw itself to match. Default `'horizontal'`.
24
+ */
25
+ orientation?: TrayOrientation;
26
+ /** The square each icon is laid out in, in pixels. Default 22. */
27
+ iconSize?: number;
28
+ /** Between icons. Default 2. */
29
+ spacing?: number;
30
+ /** Which screen's selection to own. Default 0. */
31
+ screen?: number;
32
+ /**
33
+ * Render order. Icons are otherwise in the order they docked.
34
+ *
35
+ * A comparator rather than a sorted list because **node identity has to
36
+ * stay with the icon**: each `<foreign>` is keyed on the window id and its
37
+ * `windowId` never changes, so reordering moves the node instead of
38
+ * releasing a client from one node and re-embedding it in another. That
39
+ * hand-off is a documented race — the client is parked at the root long
40
+ * enough for a window manager to frame it, and the second node then
41
+ * reports `onClientGone` for a live window.
42
+ */
43
+ sort?: (a: TrayIcon, b: TrayIcon) => number;
44
+ /** An application asked to be in the tray, and now is. */
45
+ onDock?: (icon: TrayIcon) => void;
46
+ /** Its window went away — the ordinary end of a tray icon's life, not an
47
+ * error. Also fires for every icon when the selection is lost. */
48
+ onUndock?: (icon: TrayIcon) => void;
49
+ /**
50
+ * Another tray already owns this screen's selection, so this one embeds
51
+ * nothing. A second panel on one display is a configuration mistake rather
52
+ * than an exception, which is why it arrives here instead of throwing.
53
+ */
54
+ onConflict?: (info: TrayConflict) => void;
55
+ onStatusChange?: (status: TrayStatus) => void;
56
+ /**
57
+ * A balloon message. **Providing this turns off the default**, which is to
58
+ * forward the text to the desktop's notification service — a panel that
59
+ * draws its own bubble should not also raise a notification.
60
+ */
61
+ onMessage?: (message: TrayMessage) => void;
62
+ /** A message was withdrawn before it finished arriving. */
63
+ onCancelMessage?: (info: {
64
+ windowId: number;
65
+ id: number;
66
+ }) => void;
67
+ /** Failures on the wire, and a notification that could not be delivered.
68
+ * Without a handler none of it is reported anywhere. */
69
+ onError?: (err: Error) => void;
70
+ /** False stops balloon messages being forwarded to the notification
71
+ * service. Ignored when `onMessage` is given, which already replaces it. */
72
+ notify?: boolean;
73
+ /** Who a forwarded balloon message is attributed to. Default
74
+ * `'System Tray'`. */
75
+ appName?: string;
76
+ /** Rendered instead of the tray when another host owns the selection. */
77
+ fallback?: ReactNode;
78
+ style?: Style | Style[];
79
+ ref?: Ref<TrayHostHandle>;
80
+ 'data-testname'?: string;
81
+ }
82
+ /**
83
+ * The system tray: applications dock their icons into it, and it lays them
84
+ * out like any other row of elements.
85
+ *
86
+ * ```jsx
87
+ * <TrayHost
88
+ * orientation="horizontal"
89
+ * iconSize={22}
90
+ * onDock={(icon) => log(`docked ${icon.id}`)}
91
+ * onUndock={(icon) => log(`gone ${icon.id}`)}
92
+ * />
93
+ * ```
94
+ *
95
+ * **One per display.** Mounting takes `_NET_SYSTEM_TRAY_S<screen>` and
96
+ * announces it to the root, which is what makes applications that were
97
+ * waiting start docking; unmounting gives the selection back and hands every
98
+ * client back to the root untouched.
99
+ *
100
+ * **An icon that never maps is normal.** Clients set `XEMBED_MAPPED` when
101
+ * they are ready, and some take a while about it. The square is laid out
102
+ * either way, because a tray that only reserved space for icons it could see
103
+ * would reflow every time one woke up.
104
+ *
105
+ * **Icons are not tab stops.** A tray icon is a click target, and Tab
106
+ * walking through eleven of them — several of which are invisible — is the
107
+ * worst version of this, so every `<foreign>` here is `focusable={false}`.
108
+ */
109
+ export declare function TrayHost(props: TrayHostProps): ReactElement;
110
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tray-host/index.ts"],"names":[],"mappings":"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"}