@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,136 @@
1
+ import type { ReactElement, ReactNode, Ref } from 'react';
2
+ import type { Style } from 'react-x11/style';
3
+ import type { KeyboardEvent } from 'react-x11';
4
+ import type { Host } from '../internal/hx.js';
5
+ import type { WidgetChangeEvent } from '../internal/widget.js';
6
+ import type { CalendarDay, CalendarMonth, DayInput, DayParts } from './dates.js';
7
+ /**
8
+ * How big a `<Calendar>` lays out — exported because `DatePicker` has to size
9
+ * a real X window around one *before* it is laid out, and a popup that
10
+ * guesses is a popup that clips the last week of the month. Everything the
11
+ * sum reads is a constant above it, so the two cannot drift apart.
12
+ *
13
+ * Eight rows in the column (the header, the weekday names, six weeks), so
14
+ * seven gaps between them.
15
+ */
16
+ export declare const CALENDAR_WIDTH: number;
17
+ export declare const CALENDAR_HEIGHT: number;
18
+ /** A picked span. Either end may be null while it is being picked. */
19
+ export interface DateRange {
20
+ start: CalendarDay | null;
21
+ end: CalendarDay | null;
22
+ }
23
+ /** What a range calendar accepts as its value. */
24
+ export interface DateRangeInput {
25
+ start?: DayInput;
26
+ end?: DayInput;
27
+ }
28
+ /** What a cell is, when `dayContent` is asked what to draw in it. */
29
+ export interface CalendarDayState {
30
+ blocked: boolean;
31
+ /** A day of the neighbouring month, filling a corner of the grid. */
32
+ outside: boolean;
33
+ today: boolean;
34
+ selected: boolean;
35
+ inRange: boolean;
36
+ /** Inside a range that is being previewed rather than picked. */
37
+ preview: boolean;
38
+ focused: boolean;
39
+ /** The colour the day's number is drawn in — a marker that follows it
40
+ * stays legible on the filled ends of a range. */
41
+ color: string;
42
+ }
43
+ /** A `<Calendar>`'s imperative side, for a control that holds the keyboard on
44
+ * its behalf. `handleKey` reports whether the grid took the key. */
45
+ export interface CalendarHandle {
46
+ handleKey: (ev: KeyboardEvent) => boolean;
47
+ }
48
+ type BoxProps = Host['box'];
49
+ interface CalendarCommonProps extends Omit<BoxProps, 'style' | 'children' | 'ref' | 'onChange' | 'onKeyDown'> {
50
+ /** Visible month, `'2026-08'`; controlled with `onMonthChange`. */
51
+ month?: CalendarMonth | null;
52
+ defaultMonth?: DayInput | CalendarMonth;
53
+ onMonthChange?: (month: CalendarMonth) => void;
54
+ /** Earliest selectable day. */
55
+ min?: DayInput;
56
+ /** Latest selectable day. */
57
+ max?: DayInput;
58
+ /** Block a day for any other reason — weekends, holidays, taken slots. */
59
+ isDateBlocked?: (day: CalendarDay, parts: DayParts) => boolean;
60
+ /** Let a range run across blocked days, so only its ends must be free. */
61
+ spanBlocked?: boolean;
62
+ /** Rendered under the number, in a strip reserved only when this is given. */
63
+ dayContent?: (day: CalendarDay, state: CalendarDayState) => ReactNode;
64
+ /** The form-field name reported on the change event. */
65
+ name?: string;
66
+ locale?: string;
67
+ /** `0` Sunday … `6` Saturday. Defaults to the locale's own answer. */
68
+ weekStartsOn?: number;
69
+ /** Whether the grid is a tab stop. `false` for a grid inside a popup, whose
70
+ * trigger holds the keyboard on its behalf. */
71
+ focusable?: boolean;
72
+ /** Draw the day cursor regardless of whether the grid holds the focus. */
73
+ focusVisible?: boolean;
74
+ style?: Style | Style[];
75
+ ref?: Ref<CalendarHandle>;
76
+ }
77
+ export interface SingleCalendarProps extends CalendarCommonProps {
78
+ mode?: 'single';
79
+ value?: DayInput;
80
+ defaultValue?: DayInput;
81
+ onChange?: (ev: WidgetChangeEvent<CalendarDay | null>) => void;
82
+ }
83
+ export interface RangeCalendarProps extends CalendarCommonProps {
84
+ mode: 'range';
85
+ value?: DateRangeInput | null;
86
+ defaultValue?: DateRangeInput | null;
87
+ onChange?: (ev: WidgetChangeEvent<DateRange>) => void;
88
+ }
89
+ export type CalendarProps = SingleCalendarProps | RangeCalendarProps;
90
+ /**
91
+ * <Calendar value onChange …/> — a month grid: one date, or a range, with any
92
+ * day blockable.
93
+ *
94
+ * <Calendar value={day} onChange={(ev) => setDay(ev.value)} />
95
+ * <Calendar mode="range" value={{ start, end }} onChange={…} />
96
+ *
97
+ * **A day is a `'YYYY-MM-DD'` string** in and out (a `Date` is accepted on the
98
+ * way in and read as its local calendar day). See `dates.ts` for why: a square
99
+ * on a wall calendar is not an instant, and comparing two of them should not
100
+ * depend on which constructor built them.
101
+ *
102
+ * Blocking is `min`/`max` for the usual bounds and `isDateBlocked(day, parts)`
103
+ * for everything else — weekends, holidays, whatever the server said is taken.
104
+ * `parts` is `{ year, month, day, weekday, date }` so the common cases do not
105
+ * have to parse the string back apart.
106
+ *
107
+ * In `range` mode the first click sets the start and reports
108
+ * `{ start, end: null }`, the second completes it. Clicking before the start
109
+ * re-anchors rather than selecting backwards. **A range may not contain a
110
+ * blocked day**: the preview stops at the first one, because an app that
111
+ * blocked a date did not mean "unless it is in the middle", and a selection
112
+ * that quietly included it would have to be validated all over again on the
113
+ * way out. `spanBlocked` is the other reading — only the ends must be free —
114
+ * for holidays a booking is allowed to run across.
115
+ *
116
+ * `dayContent(day, state)` renders under the number, in a strip the grid
117
+ * reserves only when the prop is there. It is the seam for anything drawn per
118
+ * day — an event dot, a price, an availability count — and `state` carries
119
+ * `{ selected, inRange, blocked, outside, today, focused, color }` so a marker
120
+ * can stay legible on the filled ends of the range. `../desktop-calendar/` is
121
+ * the worked example: real events from the user's desktop, as dots.
122
+ *
123
+ * The grid is a **single tab stop**. Arrows move a day at a time and a week at
124
+ * a time, Home/End go to the ends of the week, PageUp/PageDown change month
125
+ * (with Shift, year), Enter and Space select. Moving off the edge of the month
126
+ * turns the page.
127
+ *
128
+ * A calendar inside a popup does not hold the keyboard — the trigger does, on
129
+ * its behalf, because an override-redirect window never takes focus. That is
130
+ * what `focusable: false` plus `focusVisible: true` say together: someone else
131
+ * is feeding this grid its keys through the `handleKey` on its ref, and the
132
+ * day cursor still has to be drawn or the arrows move something invisible.
133
+ */
134
+ export declare function Calendar(props: CalendarProps): ReactElement;
135
+ export {};
136
+ //# sourceMappingURL=Calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/calendar/Calendar.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAS,MAAM,WAAW,CAAC;AActD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAgB/D,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,EACT,MAAM,YAAY,CAAC;AAsBpB;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,QAAuB,CAAC;AACnD,eAAO,MAAM,eAAe,QAAmD,CAAC;AA2DhF,sEAAsE;AACtE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;CACzB;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB;uDACmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;qEACqE;AACrE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC;CAC3C;AAED,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAE5B,UAAU,mBAAoB,SAAQ,IAAI,CACxC,QAAQ,EACR,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,CACxD;IACC,mEAAmE;IACnE,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,+BAA+B;IAC/B,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,6BAA6B;IAC7B,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,0EAA0E;IAC1E,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;IAC/D,0EAA0E;IAC1E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,KAAK,SAAS,CAAC;IACtE,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;oDACgD;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AA+MrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CA+Q3D"}
@@ -0,0 +1,460 @@
1
+ // <Calendar> — a month grid: one date, or a range, with any day blockable.
2
+ //
3
+ // Ported from react-x11's `src/components/Calendar.js`. Built purely on the
4
+ // host primitives, so there is no `registerElement` here and nothing for the
5
+ // reconciler to learn — a `<Calendar>` is `<box>`es, `<text>` and, for the
6
+ // month nav, two glyphs out of core's system icon set.
7
+ import React, { useImperativeHandle, useMemo, useState } from 'react';
8
+ import { createStyles, tint } from 'react-x11/style';
9
+ import { Icon, useTheme } from 'react-x11';
10
+ import { XK_DOWN, XK_END, XK_HOME, XK_LEFT, XK_PAGE_DOWN, XK_PAGE_UP, XK_RETURN, XK_RIGHT, XK_UP, } from 'react-x11/keysyms';
11
+ import { hx } from '../internal/hx.js';
12
+ import { changeEvent } from '../internal/widget.js';
13
+ import { addDays, addMonths, clampDay, dayParts, firstOfMonth, formatMonth, localeWeekStart, monthGrid, monthOf, toDay, toMonth, today, weekdayLabels, } from './dates.js';
14
+ // The grid's geometry. A cell is the square the pointer aims at and the band
15
+ // runs through; the pill inside it is what gets filled, rounded and hovered,
16
+ // which is what leaves the band visible on either side of a selected end.
17
+ const CELL_W = 36;
18
+ const CELL_H = 32;
19
+ const PILL_W = 32;
20
+ const PILL_H = 28;
21
+ // Reserved under the number when `dayContent` is given — and only then, so a
22
+ // plain calendar is not 6×8 pixels taller for a feature it is not using.
23
+ const MARKER_H = 8;
24
+ const NAV = 26;
25
+ // The month-nav glyph inside its 26px button. The chevron this calendar drew
26
+ // itself was tall and narrow (7×12) so that it read as an arrow at all; a
27
+ // square box at 12 puts the same ink there, because a system chevron's long
28
+ // axis is its box and its short one is half of that.
29
+ const NAV_CHEVRON = 12;
30
+ const PAD = 8;
31
+ const GAP = 4;
32
+ const WEEKDAY_H = 20;
33
+ /**
34
+ * How big a `<Calendar>` lays out — exported because `DatePicker` has to size
35
+ * a real X window around one *before* it is laid out, and a popup that
36
+ * guesses is a popup that clips the last week of the month. Everything the
37
+ * sum reads is a constant above it, so the two cannot drift apart.
38
+ *
39
+ * Eight rows in the column (the header, the weekday names, six weeks), so
40
+ * seven gaps between them.
41
+ */
42
+ export const CALENDAR_WIDTH = CELL_W * 7 + PAD * 2;
43
+ export const CALENDAR_HEIGHT = PAD * 2 + NAV + WEEKDAY_H + CELL_H * 6 + GAP * 7;
44
+ const s = createStyles({
45
+ root: { alignItems: 'flex-start', padding: PAD, gap: GAP },
46
+ header: {
47
+ flexDirection: 'row',
48
+ alignItems: 'center',
49
+ width: CELL_W * 7,
50
+ height: NAV,
51
+ flexShrink: 0,
52
+ },
53
+ title: { flexGrow: 1, textAlign: 'center', fontWeight: 'bold' },
54
+ nav: {
55
+ width: NAV,
56
+ height: NAV,
57
+ alignItems: 'center',
58
+ justifyContent: 'center',
59
+ cursor: 'pointer',
60
+ transition: { backgroundColor: 80 },
61
+ },
62
+ week: { flexDirection: 'row', flexShrink: 0 },
63
+ weekdayCell: {
64
+ width: CELL_W,
65
+ height: WEEKDAY_H,
66
+ alignItems: 'center',
67
+ justifyContent: 'center',
68
+ },
69
+ weekdayLabel: { fontSize: 11 },
70
+ cell: {
71
+ width: CELL_W,
72
+ height: CELL_H,
73
+ alignItems: 'center',
74
+ justifyContent: 'center',
75
+ },
76
+ band: { position: 'absolute', top: 2, bottom: 2 },
77
+ pill: {
78
+ width: PILL_W,
79
+ height: PILL_H,
80
+ alignItems: 'center',
81
+ justifyContent: 'center',
82
+ borderWidth: 1,
83
+ // the 2px the pill gives up on each side of the cell are still part of
84
+ // its target, so the whole square is clickable and the gap between two
85
+ // days is not a dead strip
86
+ hitSlop: 2,
87
+ transition: { backgroundColor: 80 },
88
+ },
89
+ number: { fontSize: 13 },
90
+ markers: {
91
+ flexDirection: 'row',
92
+ height: MARKER_H,
93
+ alignItems: 'center',
94
+ justifyContent: 'center',
95
+ gap: 2,
96
+ },
97
+ });
98
+ const TRANSPARENT = 'transparent';
99
+ /** The selection, with every day normalized — and with the two shapes told
100
+ * apart loudly, since passing a range to a single-date calendar otherwise
101
+ * shows up as an empty calendar rather than as the mistake it is. */
102
+ function normalizeValue(mode, value) {
103
+ if (mode === 'range') {
104
+ if (value == null)
105
+ return { start: null, end: null };
106
+ if (typeof value !== 'object' || value instanceof Date) {
107
+ throw new TypeError("@react-x11/components: a range calendar's value is { start, end }, got " +
108
+ `${JSON.stringify(value)}. Drop mode="range" for a single date.`);
109
+ }
110
+ const range = value;
111
+ return { start: toDay(range.start), end: toDay(range.end) };
112
+ }
113
+ if (value != null && typeof value === 'object' && !(value instanceof Date)) {
114
+ throw new TypeError("@react-x11/components: a single-date calendar's value is one day, got " +
115
+ `${JSON.stringify(value)}. Pass mode="range" to select a span.`);
116
+ }
117
+ return toDay(value);
118
+ }
119
+ /**
120
+ * The first blocked day after `start`, up to `last` — where a range that may
121
+ * not contain a blocked day has to stop.
122
+ *
123
+ * Scanned over the days the grid can show rather than per candidate end:
124
+ * nothing off the grid is clickable, and the keyboard's focus is always on it.
125
+ * With no half-picked start there is nothing to scan for.
126
+ */
127
+ function firstBlockedAfter(start, last, blocked) {
128
+ if (!start)
129
+ return null;
130
+ for (let d = addDays(start, 1); d <= last; d = addDays(d, 1)) {
131
+ if (blocked(d))
132
+ return d;
133
+ }
134
+ return null;
135
+ }
136
+ /** The day in `month` with the same day-of-month as `day`, or the last one
137
+ * the month has — so paging from the 31st does not skip February. */
138
+ function sameDayIn(month, day) {
139
+ const wanted = Number(day.slice(8));
140
+ const last = Number(addDays(firstOfMonth(addMonths(month, 1)), -1).slice(8));
141
+ return `${month}-${String(Math.min(wanted, last)).padStart(2, '0')}`;
142
+ }
143
+ /**
144
+ * `direction` is the number of months the button steps, `-1` or `+1` — the
145
+ * argument it already hands `stepMonth`, rather than a second vocabulary
146
+ * beside it. Core's copy of this component took the same shape when the icon
147
+ * set landed, and there a `'left'`/`'right'` string sitting next to a
148
+ * `direction < 0` test had already made every button announce itself as "Next
149
+ * month". One name and one type is what leaves no second comparison to get
150
+ * wrong.
151
+ */
152
+ function NavButton({ direction, disabled, onPress, theme, }) {
153
+ return hx('box', {
154
+ role: 'button',
155
+ 'aria-label': direction < 0 ? 'Previous month' : 'Next month',
156
+ disabled: disabled || undefined,
157
+ onClick: disabled ? undefined : onPress,
158
+ style: [
159
+ s.nav,
160
+ {
161
+ borderRadius: theme.radius,
162
+ cursor: disabled ? 'default' : 'pointer',
163
+ },
164
+ !disabled && {
165
+ ':hover': { backgroundColor: theme.surfaceHover },
166
+ ':active': { backgroundColor: theme.surfaceActive },
167
+ },
168
+ ],
169
+ }, React.createElement(Icon, {
170
+ name: direction < 0 ? 'chevronLeft' : 'chevronRight',
171
+ size: NAV_CHEVRON,
172
+ // The button carries the `:hover`, but neither colour nor a state block
173
+ // reaches down to the glyph — disabled is the state that has to be
174
+ // handed over by name.
175
+ color: disabled ? theme.border : theme.textMuted,
176
+ }));
177
+ }
178
+ function DayCell({ day, state, theme, band, onPick, onHover, dayContent, }) {
179
+ const { blocked, outside, selected, focused } = state;
180
+ const color = selected
181
+ ? theme.accentText
182
+ : blocked || outside
183
+ ? theme.textMuted
184
+ : theme.text;
185
+ const markers = dayContent?.(day, { ...state, color });
186
+ return hx('box', {
187
+ role: 'gridcell',
188
+ 'aria-label': day,
189
+ 'aria-selected': selected,
190
+ disabled: blocked || undefined,
191
+ style: s.cell,
192
+ },
193
+ // Behind the pill and out of flow, so an end of the range keeps its own
194
+ // fill while the band still runs out of it towards the next day. Half a
195
+ // cell at each end is what joins one pill to the next without drawing
196
+ // over either.
197
+ band &&
198
+ hx('box', {
199
+ style: [
200
+ s.band,
201
+ {
202
+ left: band.opensRight ? CELL_W / 2 : 0,
203
+ right: band.opensLeft ? CELL_W / 2 : 0,
204
+ backgroundColor: tint(theme.accent, 0.18),
205
+ },
206
+ ],
207
+ }), hx('box', {
208
+ onClick: blocked ? undefined : () => onPick(day),
209
+ onMouseEnter: onHover ? () => onHover(day) : undefined,
210
+ style: [
211
+ s.pill,
212
+ {
213
+ cursor: blocked ? 'default' : 'pointer',
214
+ borderRadius: theme.radius,
215
+ backgroundColor: selected ? theme.accent : TRANSPARENT,
216
+ // today keeps its outline whatever else is going on, and every
217
+ // other cell carries the same border in nothing — a border that
218
+ // appears would inset the number by a pixel as the day turns
219
+ borderColor: focused
220
+ ? theme.borderFocus
221
+ : state.today
222
+ ? theme.accent
223
+ : TRANSPARENT,
224
+ },
225
+ !blocked && {
226
+ ':hover': {
227
+ backgroundColor: selected
228
+ ? theme.accentHover
229
+ : theme.surfaceHover,
230
+ },
231
+ ':active': {
232
+ backgroundColor: selected
233
+ ? theme.accentActive
234
+ : theme.surfaceActive,
235
+ },
236
+ },
237
+ ],
238
+ }, hx('text', { style: [s.number, { color }] }, String(Number(day.slice(8)))), markers ? hx('box', { style: s.markers }, markers) : null));
239
+ }
240
+ /**
241
+ * <Calendar value onChange …/> — a month grid: one date, or a range, with any
242
+ * day blockable.
243
+ *
244
+ * <Calendar value={day} onChange={(ev) => setDay(ev.value)} />
245
+ * <Calendar mode="range" value={{ start, end }} onChange={…} />
246
+ *
247
+ * **A day is a `'YYYY-MM-DD'` string** in and out (a `Date` is accepted on the
248
+ * way in and read as its local calendar day). See `dates.ts` for why: a square
249
+ * on a wall calendar is not an instant, and comparing two of them should not
250
+ * depend on which constructor built them.
251
+ *
252
+ * Blocking is `min`/`max` for the usual bounds and `isDateBlocked(day, parts)`
253
+ * for everything else — weekends, holidays, whatever the server said is taken.
254
+ * `parts` is `{ year, month, day, weekday, date }` so the common cases do not
255
+ * have to parse the string back apart.
256
+ *
257
+ * In `range` mode the first click sets the start and reports
258
+ * `{ start, end: null }`, the second completes it. Clicking before the start
259
+ * re-anchors rather than selecting backwards. **A range may not contain a
260
+ * blocked day**: the preview stops at the first one, because an app that
261
+ * blocked a date did not mean "unless it is in the middle", and a selection
262
+ * that quietly included it would have to be validated all over again on the
263
+ * way out. `spanBlocked` is the other reading — only the ends must be free —
264
+ * for holidays a booking is allowed to run across.
265
+ *
266
+ * `dayContent(day, state)` renders under the number, in a strip the grid
267
+ * reserves only when the prop is there. It is the seam for anything drawn per
268
+ * day — an event dot, a price, an availability count — and `state` carries
269
+ * `{ selected, inRange, blocked, outside, today, focused, color }` so a marker
270
+ * can stay legible on the filled ends of the range. `../desktop-calendar/` is
271
+ * the worked example: real events from the user's desktop, as dots.
272
+ *
273
+ * The grid is a **single tab stop**. Arrows move a day at a time and a week at
274
+ * a time, Home/End go to the ends of the week, PageUp/PageDown change month
275
+ * (with Shift, year), Enter and Space select. Moving off the edge of the month
276
+ * turns the page.
277
+ *
278
+ * A calendar inside a popup does not hold the keyboard — the trigger does, on
279
+ * its behalf, because an override-redirect window never takes focus. That is
280
+ * what `focusable: false` plus `focusVisible: true` say together: someone else
281
+ * is feeding this grid its keys through the `handleKey` on its ref, and the
282
+ * day cursor still has to be drawn or the arrows move something invisible.
283
+ */
284
+ export function Calendar(props) {
285
+ const { mode = 'single', value, defaultValue, onChange, name, month, defaultMonth, onMonthChange, min, max, isDateBlocked, spanBlocked = false, dayContent, locale, weekStartsOn, focusable = true, focusVisible, ref, style, ...boxProps } = props;
286
+ const isRange = mode === 'range';
287
+ const theme = useTheme();
288
+ const minDay = toDay(min);
289
+ const maxDay = toDay(max);
290
+ const todayKey = today();
291
+ const [ownValue, setOwnValue] = useState(() => normalizeValue(mode, defaultValue ?? null));
292
+ const selection = value === undefined ? ownValue : normalizeValue(mode, value);
293
+ const range = isRange ? selection : null;
294
+ const single = isRange ? null : selection;
295
+ const anchor = isRange ? range.start : single;
296
+ const [ownMonth, setOwnMonth] = useState(() => toMonth(defaultMonth) ??
297
+ monthOf(anchor ?? clampDay(todayKey, minDay, maxDay)));
298
+ const visibleMonth = month == null ? ownMonth : toMonth(month);
299
+ const [focusedDay, setFocusedDay] = useState(() => clampDay(anchor ?? todayKey, minDay, maxDay));
300
+ const [focused, setFocused] = useState(false);
301
+ // Only ever set while a range is half-picked, which is the only time the
302
+ // grid repaints on pointer movement: with nothing pending the highlight is
303
+ // a `:hover` block on one cell and React hears nothing about it.
304
+ const [hovered, setHovered] = useState(null);
305
+ const weekStart = weekStartsOn ?? localeWeekStart(locale);
306
+ const weeks = useMemo(() => monthGrid(visibleMonth, weekStart), [visibleMonth, weekStart]);
307
+ const weekdays = useMemo(() => weekdayLabels(locale, weekStart), [locale, weekStart]);
308
+ const isBlocked = (day) => {
309
+ if (minDay && day < minDay)
310
+ return true;
311
+ if (maxDay && day > maxDay)
312
+ return true;
313
+ return isDateBlocked ? Boolean(isDateBlocked(day, dayParts(day))) : false;
314
+ };
315
+ const pending = isRange && Boolean(range?.start && !range.end);
316
+ // The first blocked day after a half-picked start, which is where the range
317
+ // has to stop. Scanned once per render over the days the grid can actually
318
+ // show, rather than per candidate end: nothing outside the grid is clickable
319
+ // and the keyboard's focus is always on it.
320
+ const wall = firstBlockedAfter(pending && !spanBlocked ? range.start : null, weeks[5][6], isBlocked);
321
+ const canEndAt = (day) => pending &&
322
+ day >= range.start &&
323
+ !isBlocked(day) &&
324
+ (!wall || day < wall);
325
+ const preview = pending && hovered && canEndAt(hovered) ? hovered : null;
326
+ const bandStart = isRange ? range.start : null;
327
+ const bandEnd = isRange ? (range.end ?? preview) : null;
328
+ const setMonth = (next) => {
329
+ if (month == null)
330
+ setOwnMonth(next);
331
+ onMonthChange?.(next);
332
+ };
333
+ const commit = (next) => {
334
+ if (value === undefined)
335
+ setOwnValue(next);
336
+ onChange?.(changeEvent(isRange ? 'date-range' : 'date', name, next));
337
+ };
338
+ const show = (day) => {
339
+ setFocusedDay(day);
340
+ if (monthOf(day) !== visibleMonth)
341
+ setMonth(monthOf(day));
342
+ };
343
+ const pick = (day) => {
344
+ if (isBlocked(day))
345
+ return;
346
+ if (isRange) {
347
+ const start = range.start;
348
+ if (!pending || (start && day < start))
349
+ commit({ start: day, end: null });
350
+ else if (canEndAt(day))
351
+ commit({ start, end: day });
352
+ else
353
+ return;
354
+ }
355
+ else {
356
+ commit(day);
357
+ }
358
+ show(day);
359
+ };
360
+ const moveFocus = (delta) => show(clampDay(addDays(focusedDay, delta), minDay, maxDay));
361
+ const stepMonth = (delta) => {
362
+ const next = addMonths(visibleMonth, delta);
363
+ setMonth(next);
364
+ setFocusedDay(clampDay(sameDayIn(next, focusedDay), minDay, maxDay));
365
+ };
366
+ /** Returns whether the key was the calendar's — a picker wrapping this one
367
+ * still owns Escape and Tab, and has no other way to tell. */
368
+ const handleKey = (ev) => {
369
+ switch (ev.keysym) {
370
+ case XK_LEFT:
371
+ moveFocus(-1);
372
+ return true;
373
+ case XK_RIGHT:
374
+ moveFocus(1);
375
+ return true;
376
+ case XK_UP:
377
+ moveFocus(-7);
378
+ return true;
379
+ case XK_DOWN:
380
+ moveFocus(7);
381
+ return true;
382
+ case XK_HOME:
383
+ moveFocus(-((dayParts(focusedDay).weekday - weekStart + 7) % 7));
384
+ return true;
385
+ case XK_END:
386
+ moveFocus(6 - ((dayParts(focusedDay).weekday - weekStart + 7) % 7));
387
+ return true;
388
+ case XK_PAGE_UP:
389
+ stepMonth(ev.shiftKey ? -12 : -1);
390
+ return true;
391
+ case XK_PAGE_DOWN:
392
+ stepMonth(ev.shiftKey ? 12 : 1);
393
+ return true;
394
+ case XK_RETURN:
395
+ pick(focusedDay);
396
+ return true;
397
+ default:
398
+ break;
399
+ }
400
+ if (ev.codepoint === 32) {
401
+ pick(focusedDay);
402
+ return true;
403
+ }
404
+ return false;
405
+ };
406
+ useImperativeHandle(ref, () => ({ handleKey }));
407
+ const canGoBack = !minDay || firstOfMonth(visibleMonth) > minDay;
408
+ const canGoOn = !maxDay || firstOfMonth(addMonths(visibleMonth, 1)) <= maxDay;
409
+ return hx('box', {
410
+ theme,
411
+ role: 'grid',
412
+ focusable,
413
+ onKeyDown: handleKey,
414
+ onFocus: () => setFocused(true),
415
+ onBlur: () => setFocused(false),
416
+ // the preview belongs to the pointer, and the pointer has left
417
+ onMouseLeave: pending ? () => setHovered(null) : undefined,
418
+ ...boxProps,
419
+ style: [s.root, style],
420
+ }, hx('box', { style: s.header }, React.createElement(NavButton, {
421
+ direction: -1,
422
+ disabled: !canGoBack,
423
+ theme,
424
+ onPress: () => stepMonth(-1),
425
+ }), hx('text', { style: [s.title, { color: theme.text, fontSize: theme.fontSize }] }, formatMonth(visibleMonth, locale)), React.createElement(NavButton, {
426
+ direction: 1,
427
+ disabled: !canGoOn,
428
+ theme,
429
+ onPress: () => stepMonth(1),
430
+ })), hx('box', { style: s.week }, weekdays.map((label, i) => hx('box', { key: i, style: s.weekdayCell }, hx('text', { style: [s.weekdayLabel, { color: theme.textMuted }] }, label)))), weeks.map((days, w) => hx('box', { key: w, style: s.week }, days.map((day) => {
431
+ const inBand = bandStart != null &&
432
+ bandEnd != null &&
433
+ bandStart !== bandEnd &&
434
+ day >= bandStart &&
435
+ day <= bandEnd;
436
+ return React.createElement(DayCell, {
437
+ key: day,
438
+ day,
439
+ theme,
440
+ dayContent,
441
+ onPick: pick,
442
+ onHover: pending ? setHovered : undefined,
443
+ band: inBand
444
+ ? { opensRight: day === bandStart, opensLeft: day === bandEnd }
445
+ : null,
446
+ state: {
447
+ blocked: isBlocked(day),
448
+ outside: monthOf(day) !== visibleMonth,
449
+ today: day === todayKey,
450
+ selected: isRange
451
+ ? day === bandStart || day === bandEnd
452
+ : day === single,
453
+ inRange: inBand,
454
+ preview: inBand && range.end == null,
455
+ focused: (focusVisible ?? focused) && day === focusedDay,
456
+ },
457
+ });
458
+ }))));
459
+ }
460
+ //# sourceMappingURL=Calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Calendar.js","sourceRoot":"","sources":["../../src/calendar/Calendar.ts"],"names":[],"mappings":"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"}