@miaixz/ui 0.5.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 (690) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +7 -0
  3. package/README.md +190 -0
  4. package/dist/accessibility/focus-scope.d.ts +57 -0
  5. package/dist/accessibility/focus-scope.d.ts.map +1 -0
  6. package/dist/accessibility/focus-scope.js +272 -0
  7. package/dist/accessibility/focus-scope.js.map +1 -0
  8. package/dist/accessibility/index.d.ts +2 -0
  9. package/dist/accessibility/index.d.ts.map +1 -0
  10. package/dist/accessibility/index.js +2 -0
  11. package/dist/accessibility/index.js.map +1 -0
  12. package/dist/components/alert/alert.d.ts +8 -0
  13. package/dist/components/alert/alert.d.ts.map +1 -0
  14. package/dist/components/alert/alert.js +24 -0
  15. package/dist/components/alert/alert.js.map +1 -0
  16. package/dist/components/alert/alert.types.d.ts +43 -0
  17. package/dist/components/alert/alert.types.d.ts.map +1 -0
  18. package/dist/components/alert/alert.types.js +2 -0
  19. package/dist/components/alert/alert.types.js.map +1 -0
  20. package/dist/components/alert/index.d.ts +4 -0
  21. package/dist/components/alert/index.d.ts.map +1 -0
  22. package/dist/components/alert/index.js +2 -0
  23. package/dist/components/alert/index.js.map +1 -0
  24. package/dist/components/avatar/avatar.d.ts +8 -0
  25. package/dist/components/avatar/avatar.d.ts.map +1 -0
  26. package/dist/components/avatar/avatar.js +29 -0
  27. package/dist/components/avatar/avatar.js.map +1 -0
  28. package/dist/components/avatar/avatar.types.d.ts +35 -0
  29. package/dist/components/avatar/avatar.types.d.ts.map +1 -0
  30. package/dist/components/avatar/avatar.types.js +2 -0
  31. package/dist/components/avatar/avatar.types.js.map +1 -0
  32. package/dist/components/avatar/index.d.ts +4 -0
  33. package/dist/components/avatar/index.d.ts.map +1 -0
  34. package/dist/components/avatar/index.js +2 -0
  35. package/dist/components/avatar/index.js.map +1 -0
  36. package/dist/components/badge/badge.d.ts +8 -0
  37. package/dist/components/badge/badge.d.ts.map +1 -0
  38. package/dist/components/badge/badge.js +12 -0
  39. package/dist/components/badge/badge.js.map +1 -0
  40. package/dist/components/badge/badge.types.d.ts +37 -0
  41. package/dist/components/badge/badge.types.d.ts.map +1 -0
  42. package/dist/components/badge/badge.types.js +2 -0
  43. package/dist/components/badge/badge.types.js.map +1 -0
  44. package/dist/components/badge/index.d.ts +3 -0
  45. package/dist/components/badge/index.d.ts.map +1 -0
  46. package/dist/components/badge/index.js +2 -0
  47. package/dist/components/badge/index.js.map +1 -0
  48. package/dist/components/breadcrumb/breadcrumb.d.ts +14 -0
  49. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  50. package/dist/components/breadcrumb/breadcrumb.js +22 -0
  51. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  52. package/dist/components/breadcrumb/breadcrumb.types.d.ts +30 -0
  53. package/dist/components/breadcrumb/breadcrumb.types.d.ts.map +1 -0
  54. package/dist/components/breadcrumb/breadcrumb.types.js +2 -0
  55. package/dist/components/breadcrumb/breadcrumb.types.js.map +1 -0
  56. package/dist/components/breadcrumb/index.d.ts +3 -0
  57. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  58. package/dist/components/breadcrumb/index.js +2 -0
  59. package/dist/components/breadcrumb/index.js.map +1 -0
  60. package/dist/components/button/button.d.ts +8 -0
  61. package/dist/components/button/button.d.ts.map +1 -0
  62. package/dist/components/button/button.js +16 -0
  63. package/dist/components/button/button.js.map +1 -0
  64. package/dist/components/button/button.types.d.ts +99 -0
  65. package/dist/components/button/button.types.d.ts.map +1 -0
  66. package/dist/components/button/button.types.js +2 -0
  67. package/dist/components/button/button.types.js.map +1 -0
  68. package/dist/components/button/index.d.ts +3 -0
  69. package/dist/components/button/index.d.ts.map +1 -0
  70. package/dist/components/button/index.js +2 -0
  71. package/dist/components/button/index.js.map +1 -0
  72. package/dist/components/checkbox/checkbox.d.ts +8 -0
  73. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  74. package/dist/components/checkbox/checkbox.js +18 -0
  75. package/dist/components/checkbox/checkbox.js.map +1 -0
  76. package/dist/components/checkbox/checkbox.types.d.ts +23 -0
  77. package/dist/components/checkbox/checkbox.types.d.ts.map +1 -0
  78. package/dist/components/checkbox/checkbox.types.js +2 -0
  79. package/dist/components/checkbox/checkbox.types.js.map +1 -0
  80. package/dist/components/checkbox/index.d.ts +3 -0
  81. package/dist/components/checkbox/index.d.ts.map +1 -0
  82. package/dist/components/checkbox/index.js +2 -0
  83. package/dist/components/checkbox/index.js.map +1 -0
  84. package/dist/components/combobox/combobox.d.ts +123 -0
  85. package/dist/components/combobox/combobox.d.ts.map +1 -0
  86. package/dist/components/combobox/combobox.js +378 -0
  87. package/dist/components/combobox/combobox.js.map +1 -0
  88. package/dist/components/combobox/combobox.types.d.ts +108 -0
  89. package/dist/components/combobox/combobox.types.d.ts.map +1 -0
  90. package/dist/components/combobox/combobox.types.js +2 -0
  91. package/dist/components/combobox/combobox.types.js.map +1 -0
  92. package/dist/components/combobox/index.d.ts +3 -0
  93. package/dist/components/combobox/index.d.ts.map +1 -0
  94. package/dist/components/combobox/index.js +2 -0
  95. package/dist/components/combobox/index.js.map +1 -0
  96. package/dist/components/confirm-dialog/confirm-dialog.d.ts +10 -0
  97. package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -0
  98. package/dist/components/confirm-dialog/confirm-dialog.js +70 -0
  99. package/dist/components/confirm-dialog/confirm-dialog.js.map +1 -0
  100. package/dist/components/confirm-dialog/confirm-dialog.types.d.ts +63 -0
  101. package/dist/components/confirm-dialog/confirm-dialog.types.d.ts.map +1 -0
  102. package/dist/components/confirm-dialog/confirm-dialog.types.js +2 -0
  103. package/dist/components/confirm-dialog/confirm-dialog.types.js.map +1 -0
  104. package/dist/components/confirm-dialog/index.d.ts +3 -0
  105. package/dist/components/confirm-dialog/index.d.ts.map +1 -0
  106. package/dist/components/confirm-dialog/index.js +2 -0
  107. package/dist/components/confirm-dialog/index.js.map +1 -0
  108. package/dist/components/data-table/data-table.d.ts +9 -0
  109. package/dist/components/data-table/data-table.d.ts.map +1 -0
  110. package/dist/components/data-table/data-table.js +198 -0
  111. package/dist/components/data-table/data-table.js.map +1 -0
  112. package/dist/components/data-table/data-table.types.d.ts +127 -0
  113. package/dist/components/data-table/data-table.types.d.ts.map +1 -0
  114. package/dist/components/data-table/data-table.types.js +2 -0
  115. package/dist/components/data-table/data-table.types.js.map +1 -0
  116. package/dist/components/data-table/index.d.ts +3 -0
  117. package/dist/components/data-table/index.d.ts.map +1 -0
  118. package/dist/components/data-table/index.js +2 -0
  119. package/dist/components/data-table/index.js.map +1 -0
  120. package/dist/components/dialog/dialog.d.ts +8 -0
  121. package/dist/components/dialog/dialog.d.ts.map +1 -0
  122. package/dist/components/dialog/dialog.js +45 -0
  123. package/dist/components/dialog/dialog.js.map +1 -0
  124. package/dist/components/dialog/dialog.types.d.ts +57 -0
  125. package/dist/components/dialog/dialog.types.d.ts.map +1 -0
  126. package/dist/components/dialog/dialog.types.js +2 -0
  127. package/dist/components/dialog/dialog.types.js.map +1 -0
  128. package/dist/components/dialog/index.d.ts +3 -0
  129. package/dist/components/dialog/index.d.ts.map +1 -0
  130. package/dist/components/dialog/index.js +2 -0
  131. package/dist/components/dialog/index.js.map +1 -0
  132. package/dist/components/divider/divider.d.ts +8 -0
  133. package/dist/components/divider/divider.d.ts.map +1 -0
  134. package/dist/components/divider/divider.js +12 -0
  135. package/dist/components/divider/divider.js.map +1 -0
  136. package/dist/components/divider/divider.types.d.ts +22 -0
  137. package/dist/components/divider/divider.types.d.ts.map +1 -0
  138. package/dist/components/divider/divider.types.js +2 -0
  139. package/dist/components/divider/divider.types.js.map +1 -0
  140. package/dist/components/divider/index.d.ts +3 -0
  141. package/dist/components/divider/index.d.ts.map +1 -0
  142. package/dist/components/divider/index.js +2 -0
  143. package/dist/components/divider/index.js.map +1 -0
  144. package/dist/components/drawer/drawer.d.ts +8 -0
  145. package/dist/components/drawer/drawer.d.ts.map +1 -0
  146. package/dist/components/drawer/drawer.js +45 -0
  147. package/dist/components/drawer/drawer.js.map +1 -0
  148. package/dist/components/drawer/drawer.types.d.ts +69 -0
  149. package/dist/components/drawer/drawer.types.d.ts.map +1 -0
  150. package/dist/components/drawer/drawer.types.js +2 -0
  151. package/dist/components/drawer/drawer.types.js.map +1 -0
  152. package/dist/components/drawer/index.d.ts +3 -0
  153. package/dist/components/drawer/index.d.ts.map +1 -0
  154. package/dist/components/drawer/index.js +2 -0
  155. package/dist/components/drawer/index.js.map +1 -0
  156. package/dist/components/dropdown/dropdown.d.ts +26 -0
  157. package/dist/components/dropdown/dropdown.d.ts.map +1 -0
  158. package/dist/components/dropdown/dropdown.js +70 -0
  159. package/dist/components/dropdown/dropdown.js.map +1 -0
  160. package/dist/components/dropdown/dropdown.types.d.ts +83 -0
  161. package/dist/components/dropdown/dropdown.types.d.ts.map +1 -0
  162. package/dist/components/dropdown/dropdown.types.js +2 -0
  163. package/dist/components/dropdown/dropdown.types.js.map +1 -0
  164. package/dist/components/dropdown/index.d.ts +3 -0
  165. package/dist/components/dropdown/index.d.ts.map +1 -0
  166. package/dist/components/dropdown/index.js +2 -0
  167. package/dist/components/dropdown/index.js.map +1 -0
  168. package/dist/components/dropzone/dropzone.d.ts +8 -0
  169. package/dist/components/dropzone/dropzone.d.ts.map +1 -0
  170. package/dist/components/dropzone/dropzone.js +98 -0
  171. package/dist/components/dropzone/dropzone.js.map +1 -0
  172. package/dist/components/dropzone/dropzone.types.d.ts +40 -0
  173. package/dist/components/dropzone/dropzone.types.d.ts.map +1 -0
  174. package/dist/components/dropzone/dropzone.types.js +2 -0
  175. package/dist/components/dropzone/dropzone.types.js.map +1 -0
  176. package/dist/components/dropzone/index.d.ts +3 -0
  177. package/dist/components/dropzone/index.d.ts.map +1 -0
  178. package/dist/components/dropzone/index.js +2 -0
  179. package/dist/components/dropzone/index.js.map +1 -0
  180. package/dist/components/empty-state/empty-state.d.ts +8 -0
  181. package/dist/components/empty-state/empty-state.d.ts.map +1 -0
  182. package/dist/components/empty-state/empty-state.js +13 -0
  183. package/dist/components/empty-state/empty-state.js.map +1 -0
  184. package/dist/components/empty-state/empty-state.types.d.ts +37 -0
  185. package/dist/components/empty-state/empty-state.types.d.ts.map +1 -0
  186. package/dist/components/empty-state/empty-state.types.js +2 -0
  187. package/dist/components/empty-state/empty-state.types.js.map +1 -0
  188. package/dist/components/empty-state/index.d.ts +3 -0
  189. package/dist/components/empty-state/index.d.ts.map +1 -0
  190. package/dist/components/empty-state/index.js +2 -0
  191. package/dist/components/empty-state/index.js.map +1 -0
  192. package/dist/components/file-upload/file-upload.d.ts +8 -0
  193. package/dist/components/file-upload/file-upload.d.ts.map +1 -0
  194. package/dist/components/file-upload/file-upload.js +359 -0
  195. package/dist/components/file-upload/file-upload.js.map +1 -0
  196. package/dist/components/file-upload/file-upload.types.d.ts +91 -0
  197. package/dist/components/file-upload/file-upload.types.d.ts.map +1 -0
  198. package/dist/components/file-upload/file-upload.types.js +2 -0
  199. package/dist/components/file-upload/file-upload.types.js.map +1 -0
  200. package/dist/components/file-upload/index.d.ts +3 -0
  201. package/dist/components/file-upload/index.d.ts.map +1 -0
  202. package/dist/components/file-upload/index.js +2 -0
  203. package/dist/components/file-upload/index.js.map +1 -0
  204. package/dist/components/form-field/form-field.d.ts +11 -0
  205. package/dist/components/form-field/form-field.d.ts.map +1 -0
  206. package/dist/components/form-field/form-field.js +41 -0
  207. package/dist/components/form-field/form-field.js.map +1 -0
  208. package/dist/components/form-field/form-field.types.d.ts +66 -0
  209. package/dist/components/form-field/form-field.types.d.ts.map +1 -0
  210. package/dist/components/form-field/form-field.types.js +2 -0
  211. package/dist/components/form-field/form-field.types.js.map +1 -0
  212. package/dist/components/form-field/index.d.ts +3 -0
  213. package/dist/components/form-field/index.d.ts.map +1 -0
  214. package/dist/components/form-field/index.js +2 -0
  215. package/dist/components/form-field/index.js.map +1 -0
  216. package/dist/components/icon/icon.d.ts +14 -0
  217. package/dist/components/icon/icon.d.ts.map +1 -0
  218. package/dist/components/icon/icon.js +48 -0
  219. package/dist/components/icon/icon.js.map +1 -0
  220. package/dist/components/icon/icon.types.d.ts +69 -0
  221. package/dist/components/icon/icon.types.d.ts.map +1 -0
  222. package/dist/components/icon/icon.types.js +2 -0
  223. package/dist/components/icon/icon.types.js.map +1 -0
  224. package/dist/components/icon/index.d.ts +3 -0
  225. package/dist/components/icon/index.d.ts.map +1 -0
  226. package/dist/components/icon/index.js +2 -0
  227. package/dist/components/icon/index.js.map +1 -0
  228. package/dist/components/index.d.ts +46 -0
  229. package/dist/components/index.d.ts.map +1 -0
  230. package/dist/components/index.js +45 -0
  231. package/dist/components/index.js.map +1 -0
  232. package/dist/components/inline-message/index.d.ts +4 -0
  233. package/dist/components/inline-message/index.d.ts.map +1 -0
  234. package/dist/components/inline-message/index.js +2 -0
  235. package/dist/components/inline-message/index.js.map +1 -0
  236. package/dist/components/inline-message/inline-message.d.ts +8 -0
  237. package/dist/components/inline-message/inline-message.d.ts.map +1 -0
  238. package/dist/components/inline-message/inline-message.js +20 -0
  239. package/dist/components/inline-message/inline-message.js.map +1 -0
  240. package/dist/components/inline-message/inline-message.types.d.ts +27 -0
  241. package/dist/components/inline-message/inline-message.types.d.ts.map +1 -0
  242. package/dist/components/inline-message/inline-message.types.js +2 -0
  243. package/dist/components/inline-message/inline-message.types.js.map +1 -0
  244. package/dist/components/input/index.d.ts +3 -0
  245. package/dist/components/input/index.d.ts.map +1 -0
  246. package/dist/components/input/index.js +2 -0
  247. package/dist/components/input/index.js.map +1 -0
  248. package/dist/components/input/input.d.ts +8 -0
  249. package/dist/components/input/input.d.ts.map +1 -0
  250. package/dist/components/input/input.js +13 -0
  251. package/dist/components/input/input.js.map +1 -0
  252. package/dist/components/input/input.types.d.ts +35 -0
  253. package/dist/components/input/input.types.d.ts.map +1 -0
  254. package/dist/components/input/input.types.js +2 -0
  255. package/dist/components/input/input.types.js.map +1 -0
  256. package/dist/components/list/index.d.ts +3 -0
  257. package/dist/components/list/index.d.ts.map +1 -0
  258. package/dist/components/list/index.js +2 -0
  259. package/dist/components/list/index.js.map +1 -0
  260. package/dist/components/list/list.d.ts +14 -0
  261. package/dist/components/list/list.d.ts.map +1 -0
  262. package/dist/components/list/list.js +21 -0
  263. package/dist/components/list/list.js.map +1 -0
  264. package/dist/components/list/list.types.d.ts +72 -0
  265. package/dist/components/list/list.types.d.ts.map +1 -0
  266. package/dist/components/list/list.types.js +2 -0
  267. package/dist/components/list/list.types.js.map +1 -0
  268. package/dist/components/loading-overlay/index.d.ts +3 -0
  269. package/dist/components/loading-overlay/index.d.ts.map +1 -0
  270. package/dist/components/loading-overlay/index.js +2 -0
  271. package/dist/components/loading-overlay/index.js.map +1 -0
  272. package/dist/components/loading-overlay/loading-overlay.d.ts +8 -0
  273. package/dist/components/loading-overlay/loading-overlay.d.ts.map +1 -0
  274. package/dist/components/loading-overlay/loading-overlay.js +13 -0
  275. package/dist/components/loading-overlay/loading-overlay.js.map +1 -0
  276. package/dist/components/loading-overlay/loading-overlay.types.d.ts +28 -0
  277. package/dist/components/loading-overlay/loading-overlay.types.d.ts.map +1 -0
  278. package/dist/components/loading-overlay/loading-overlay.types.js +2 -0
  279. package/dist/components/loading-overlay/loading-overlay.types.js.map +1 -0
  280. package/dist/components/multi-select/index.d.ts +3 -0
  281. package/dist/components/multi-select/index.d.ts.map +1 -0
  282. package/dist/components/multi-select/index.js +2 -0
  283. package/dist/components/multi-select/index.js.map +1 -0
  284. package/dist/components/multi-select/multi-select.d.ts +9 -0
  285. package/dist/components/multi-select/multi-select.d.ts.map +1 -0
  286. package/dist/components/multi-select/multi-select.js +74 -0
  287. package/dist/components/multi-select/multi-select.js.map +1 -0
  288. package/dist/components/multi-select/multi-select.types.d.ts +35 -0
  289. package/dist/components/multi-select/multi-select.types.d.ts.map +1 -0
  290. package/dist/components/multi-select/multi-select.types.js +2 -0
  291. package/dist/components/multi-select/multi-select.types.js.map +1 -0
  292. package/dist/components/navigation/index.d.ts +3 -0
  293. package/dist/components/navigation/index.d.ts.map +1 -0
  294. package/dist/components/navigation/index.js +2 -0
  295. package/dist/components/navigation/index.js.map +1 -0
  296. package/dist/components/navigation/navigation.d.ts +14 -0
  297. package/dist/components/navigation/navigation.d.ts.map +1 -0
  298. package/dist/components/navigation/navigation.js +29 -0
  299. package/dist/components/navigation/navigation.js.map +1 -0
  300. package/dist/components/navigation/navigation.types.d.ts +84 -0
  301. package/dist/components/navigation/navigation.types.d.ts.map +1 -0
  302. package/dist/components/navigation/navigation.types.js +2 -0
  303. package/dist/components/navigation/navigation.types.js.map +1 -0
  304. package/dist/components/page-layout/index.d.ts +3 -0
  305. package/dist/components/page-layout/index.d.ts.map +1 -0
  306. package/dist/components/page-layout/index.js +2 -0
  307. package/dist/components/page-layout/index.js.map +1 -0
  308. package/dist/components/page-layout/page-layout.d.ts +74 -0
  309. package/dist/components/page-layout/page-layout.d.ts.map +1 -0
  310. package/dist/components/page-layout/page-layout.js +103 -0
  311. package/dist/components/page-layout/page-layout.js.map +1 -0
  312. package/dist/components/page-layout/page-layout.types.d.ts +188 -0
  313. package/dist/components/page-layout/page-layout.types.d.ts.map +1 -0
  314. package/dist/components/page-layout/page-layout.types.js +2 -0
  315. package/dist/components/page-layout/page-layout.types.js.map +1 -0
  316. package/dist/components/pagination/index.d.ts +4 -0
  317. package/dist/components/pagination/index.d.ts.map +1 -0
  318. package/dist/components/pagination/index.js +2 -0
  319. package/dist/components/pagination/index.js.map +1 -0
  320. package/dist/components/pagination/pagination.d.ts +24 -0
  321. package/dist/components/pagination/pagination.d.ts.map +1 -0
  322. package/dist/components/pagination/pagination.js +48 -0
  323. package/dist/components/pagination/pagination.js.map +1 -0
  324. package/dist/components/pagination/pagination.types.d.ts +43 -0
  325. package/dist/components/pagination/pagination.types.d.ts.map +1 -0
  326. package/dist/components/pagination/pagination.types.js +2 -0
  327. package/dist/components/pagination/pagination.types.js.map +1 -0
  328. package/dist/components/panel/index.d.ts +3 -0
  329. package/dist/components/panel/index.d.ts.map +1 -0
  330. package/dist/components/panel/index.js +2 -0
  331. package/dist/components/panel/index.js.map +1 -0
  332. package/dist/components/panel/panel.d.ts +14 -0
  333. package/dist/components/panel/panel.d.ts.map +1 -0
  334. package/dist/components/panel/panel.js +22 -0
  335. package/dist/components/panel/panel.js.map +1 -0
  336. package/dist/components/panel/panel.types.d.ts +62 -0
  337. package/dist/components/panel/panel.types.d.ts.map +1 -0
  338. package/dist/components/panel/panel.types.js +2 -0
  339. package/dist/components/panel/panel.types.js.map +1 -0
  340. package/dist/components/popover/index.d.ts +3 -0
  341. package/dist/components/popover/index.d.ts.map +1 -0
  342. package/dist/components/popover/index.js +2 -0
  343. package/dist/components/popover/index.js.map +1 -0
  344. package/dist/components/popover/popover-context.d.ts +29 -0
  345. package/dist/components/popover/popover-context.d.ts.map +1 -0
  346. package/dist/components/popover/popover-context.js +14 -0
  347. package/dist/components/popover/popover-context.js.map +1 -0
  348. package/dist/components/popover/popover.d.ts +8 -0
  349. package/dist/components/popover/popover.d.ts.map +1 -0
  350. package/dist/components/popover/popover.js +60 -0
  351. package/dist/components/popover/popover.js.map +1 -0
  352. package/dist/components/popover/popover.types.d.ts +47 -0
  353. package/dist/components/popover/popover.types.d.ts.map +1 -0
  354. package/dist/components/popover/popover.types.js +2 -0
  355. package/dist/components/popover/popover.types.js.map +1 -0
  356. package/dist/components/progress/index.d.ts +3 -0
  357. package/dist/components/progress/index.d.ts.map +1 -0
  358. package/dist/components/progress/index.js +2 -0
  359. package/dist/components/progress/index.js.map +1 -0
  360. package/dist/components/progress/progress.d.ts +8 -0
  361. package/dist/components/progress/progress.d.ts.map +1 -0
  362. package/dist/components/progress/progress.js +32 -0
  363. package/dist/components/progress/progress.js.map +1 -0
  364. package/dist/components/progress/progress.types.d.ts +36 -0
  365. package/dist/components/progress/progress.types.d.ts.map +1 -0
  366. package/dist/components/progress/progress.types.js +2 -0
  367. package/dist/components/progress/progress.types.js.map +1 -0
  368. package/dist/components/radio/index.d.ts +3 -0
  369. package/dist/components/radio/index.d.ts.map +1 -0
  370. package/dist/components/radio/index.js +2 -0
  371. package/dist/components/radio/index.js.map +1 -0
  372. package/dist/components/radio/radio.d.ts +8 -0
  373. package/dist/components/radio/radio.d.ts.map +1 -0
  374. package/dist/components/radio/radio.js +12 -0
  375. package/dist/components/radio/radio.js.map +1 -0
  376. package/dist/components/radio/radio.types.d.ts +17 -0
  377. package/dist/components/radio/radio.types.d.ts.map +1 -0
  378. package/dist/components/radio/radio.types.js +2 -0
  379. package/dist/components/radio/radio.types.js.map +1 -0
  380. package/dist/components/search-input/index.d.ts +3 -0
  381. package/dist/components/search-input/index.d.ts.map +1 -0
  382. package/dist/components/search-input/index.js +2 -0
  383. package/dist/components/search-input/index.js.map +1 -0
  384. package/dist/components/search-input/search-input.d.ts +8 -0
  385. package/dist/components/search-input/search-input.d.ts.map +1 -0
  386. package/dist/components/search-input/search-input.js +35 -0
  387. package/dist/components/search-input/search-input.js.map +1 -0
  388. package/dist/components/search-input/search-input.types.d.ts +38 -0
  389. package/dist/components/search-input/search-input.types.d.ts.map +1 -0
  390. package/dist/components/search-input/search-input.types.js +2 -0
  391. package/dist/components/search-input/search-input.types.js.map +1 -0
  392. package/dist/components/select/index.d.ts +3 -0
  393. package/dist/components/select/index.d.ts.map +1 -0
  394. package/dist/components/select/index.js +2 -0
  395. package/dist/components/select/index.js.map +1 -0
  396. package/dist/components/select/select.d.ts +8 -0
  397. package/dist/components/select/select.d.ts.map +1 -0
  398. package/dist/components/select/select.js +14 -0
  399. package/dist/components/select/select.js.map +1 -0
  400. package/dist/components/select/select.types.d.ts +27 -0
  401. package/dist/components/select/select.types.d.ts.map +1 -0
  402. package/dist/components/select/select.types.js +2 -0
  403. package/dist/components/select/select.types.js.map +1 -0
  404. package/dist/components/shared.types.d.ts +13 -0
  405. package/dist/components/shared.types.d.ts.map +1 -0
  406. package/dist/components/shared.types.js +2 -0
  407. package/dist/components/shared.types.js.map +1 -0
  408. package/dist/components/skeleton/index.d.ts +3 -0
  409. package/dist/components/skeleton/index.d.ts.map +1 -0
  410. package/dist/components/skeleton/index.js +2 -0
  411. package/dist/components/skeleton/index.js.map +1 -0
  412. package/dist/components/skeleton/skeleton.d.ts +8 -0
  413. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  414. package/dist/components/skeleton/skeleton.js +12 -0
  415. package/dist/components/skeleton/skeleton.js.map +1 -0
  416. package/dist/components/skeleton/skeleton.types.d.ts +29 -0
  417. package/dist/components/skeleton/skeleton.types.d.ts.map +1 -0
  418. package/dist/components/skeleton/skeleton.types.js +2 -0
  419. package/dist/components/skeleton/skeleton.types.js.map +1 -0
  420. package/dist/components/spinner/index.d.ts +4 -0
  421. package/dist/components/spinner/index.d.ts.map +1 -0
  422. package/dist/components/spinner/index.js +2 -0
  423. package/dist/components/spinner/index.js.map +1 -0
  424. package/dist/components/spinner/spinner.d.ts +8 -0
  425. package/dist/components/spinner/spinner.d.ts.map +1 -0
  426. package/dist/components/spinner/spinner.js +19 -0
  427. package/dist/components/spinner/spinner.js.map +1 -0
  428. package/dist/components/spinner/spinner.types.d.ts +27 -0
  429. package/dist/components/spinner/spinner.types.d.ts.map +1 -0
  430. package/dist/components/spinner/spinner.types.js +2 -0
  431. package/dist/components/spinner/spinner.types.js.map +1 -0
  432. package/dist/components/status-indicator/index.d.ts +4 -0
  433. package/dist/components/status-indicator/index.d.ts.map +1 -0
  434. package/dist/components/status-indicator/index.js +2 -0
  435. package/dist/components/status-indicator/index.js.map +1 -0
  436. package/dist/components/status-indicator/status-indicator.d.ts +8 -0
  437. package/dist/components/status-indicator/status-indicator.d.ts.map +1 -0
  438. package/dist/components/status-indicator/status-indicator.js +12 -0
  439. package/dist/components/status-indicator/status-indicator.js.map +1 -0
  440. package/dist/components/status-indicator/status-indicator.types.d.ts +25 -0
  441. package/dist/components/status-indicator/status-indicator.types.d.ts.map +1 -0
  442. package/dist/components/status-indicator/status-indicator.types.js +2 -0
  443. package/dist/components/status-indicator/status-indicator.types.js.map +1 -0
  444. package/dist/components/switch/index.d.ts +3 -0
  445. package/dist/components/switch/index.d.ts.map +1 -0
  446. package/dist/components/switch/index.js +2 -0
  447. package/dist/components/switch/index.js.map +1 -0
  448. package/dist/components/switch/switch.d.ts +8 -0
  449. package/dist/components/switch/switch.d.ts.map +1 -0
  450. package/dist/components/switch/switch.js +12 -0
  451. package/dist/components/switch/switch.js.map +1 -0
  452. package/dist/components/switch/switch.types.d.ts +17 -0
  453. package/dist/components/switch/switch.types.d.ts.map +1 -0
  454. package/dist/components/switch/switch.types.js +2 -0
  455. package/dist/components/switch/switch.types.js.map +1 -0
  456. package/dist/components/table/index.d.ts +3 -0
  457. package/dist/components/table/index.d.ts.map +1 -0
  458. package/dist/components/table/index.js +2 -0
  459. package/dist/components/table/index.js.map +1 -0
  460. package/dist/components/table/table.d.ts +56 -0
  461. package/dist/components/table/table.d.ts.map +1 -0
  462. package/dist/components/table/table.js +76 -0
  463. package/dist/components/table/table.js.map +1 -0
  464. package/dist/components/table/table.types.d.ts +101 -0
  465. package/dist/components/table/table.types.d.ts.map +1 -0
  466. package/dist/components/table/table.types.js +2 -0
  467. package/dist/components/table/table.types.js.map +1 -0
  468. package/dist/components/tabs/index.d.ts +3 -0
  469. package/dist/components/tabs/index.d.ts.map +1 -0
  470. package/dist/components/tabs/index.js +2 -0
  471. package/dist/components/tabs/index.js.map +1 -0
  472. package/dist/components/tabs/tabs.d.ts +26 -0
  473. package/dist/components/tabs/tabs.d.ts.map +1 -0
  474. package/dist/components/tabs/tabs.js +122 -0
  475. package/dist/components/tabs/tabs.js.map +1 -0
  476. package/dist/components/tabs/tabs.types.d.ts +70 -0
  477. package/dist/components/tabs/tabs.types.d.ts.map +1 -0
  478. package/dist/components/tabs/tabs.types.js +2 -0
  479. package/dist/components/tabs/tabs.types.js.map +1 -0
  480. package/dist/components/textarea/index.d.ts +3 -0
  481. package/dist/components/textarea/index.d.ts.map +1 -0
  482. package/dist/components/textarea/index.js +2 -0
  483. package/dist/components/textarea/index.js.map +1 -0
  484. package/dist/components/textarea/textarea.d.ts +8 -0
  485. package/dist/components/textarea/textarea.d.ts.map +1 -0
  486. package/dist/components/textarea/textarea.js +13 -0
  487. package/dist/components/textarea/textarea.js.map +1 -0
  488. package/dist/components/textarea/textarea.types.d.ts +39 -0
  489. package/dist/components/textarea/textarea.types.d.ts.map +1 -0
  490. package/dist/components/textarea/textarea.types.js +2 -0
  491. package/dist/components/textarea/textarea.types.js.map +1 -0
  492. package/dist/components/toast/index.d.ts +3 -0
  493. package/dist/components/toast/index.d.ts.map +1 -0
  494. package/dist/components/toast/index.js +2 -0
  495. package/dist/components/toast/index.js.map +1 -0
  496. package/dist/components/toast/toast.d.ts +24 -0
  497. package/dist/components/toast/toast.d.ts.map +1 -0
  498. package/dist/components/toast/toast.js +111 -0
  499. package/dist/components/toast/toast.js.map +1 -0
  500. package/dist/components/toast/toast.types.d.ts +103 -0
  501. package/dist/components/toast/toast.types.d.ts.map +1 -0
  502. package/dist/components/toast/toast.types.js +2 -0
  503. package/dist/components/toast/toast.types.js.map +1 -0
  504. package/dist/components/toolbar/index.d.ts +3 -0
  505. package/dist/components/toolbar/index.d.ts.map +1 -0
  506. package/dist/components/toolbar/index.js +2 -0
  507. package/dist/components/toolbar/index.js.map +1 -0
  508. package/dist/components/toolbar/toolbar.d.ts +20 -0
  509. package/dist/components/toolbar/toolbar.d.ts.map +1 -0
  510. package/dist/components/toolbar/toolbar.js +28 -0
  511. package/dist/components/toolbar/toolbar.js.map +1 -0
  512. package/dist/components/toolbar/toolbar.types.d.ts +37 -0
  513. package/dist/components/toolbar/toolbar.types.d.ts.map +1 -0
  514. package/dist/components/toolbar/toolbar.types.js +2 -0
  515. package/dist/components/toolbar/toolbar.types.js.map +1 -0
  516. package/dist/components/tooltip/index.d.ts +3 -0
  517. package/dist/components/tooltip/index.d.ts.map +1 -0
  518. package/dist/components/tooltip/index.js +2 -0
  519. package/dist/components/tooltip/index.js.map +1 -0
  520. package/dist/components/tooltip/tooltip.d.ts +8 -0
  521. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  522. package/dist/components/tooltip/tooltip.js +84 -0
  523. package/dist/components/tooltip/tooltip.js.map +1 -0
  524. package/dist/components/tooltip/tooltip.types.d.ts +34 -0
  525. package/dist/components/tooltip/tooltip.types.d.ts.map +1 -0
  526. package/dist/components/tooltip/tooltip.types.js +2 -0
  527. package/dist/components/tooltip/tooltip.types.js.map +1 -0
  528. package/dist/components/tree-view/index.d.ts +3 -0
  529. package/dist/components/tree-view/index.d.ts.map +1 -0
  530. package/dist/components/tree-view/index.js +2 -0
  531. package/dist/components/tree-view/index.js.map +1 -0
  532. package/dist/components/tree-view/tree-view.d.ts +9 -0
  533. package/dist/components/tree-view/tree-view.d.ts.map +1 -0
  534. package/dist/components/tree-view/tree-view.js +573 -0
  535. package/dist/components/tree-view/tree-view.js.map +1 -0
  536. package/dist/components/tree-view/tree-view.types.d.ts +92 -0
  537. package/dist/components/tree-view/tree-view.types.d.ts.map +1 -0
  538. package/dist/components/tree-view/tree-view.types.js +2 -0
  539. package/dist/components/tree-view/tree-view.types.js.map +1 -0
  540. package/dist/components/visually-hidden/index.d.ts +3 -0
  541. package/dist/components/visually-hidden/index.d.ts.map +1 -0
  542. package/dist/components/visually-hidden/index.js +2 -0
  543. package/dist/components/visually-hidden/index.js.map +1 -0
  544. package/dist/components/visually-hidden/visually-hidden.d.ts +8 -0
  545. package/dist/components/visually-hidden/visually-hidden.d.ts.map +1 -0
  546. package/dist/components/visually-hidden/visually-hidden.js +12 -0
  547. package/dist/components/visually-hidden/visually-hidden.js.map +1 -0
  548. package/dist/components/visually-hidden/visually-hidden.types.d.ts +9 -0
  549. package/dist/components/visually-hidden/visually-hidden.types.d.ts.map +1 -0
  550. package/dist/components/visually-hidden/visually-hidden.types.js +2 -0
  551. package/dist/components/visually-hidden/visually-hidden.types.js.map +1 -0
  552. package/dist/errors/index.d.ts +2 -0
  553. package/dist/errors/index.d.ts.map +1 -0
  554. package/dist/errors/index.js +2 -0
  555. package/dist/errors/index.js.map +1 -0
  556. package/dist/errors/ui-error.d.ts +60 -0
  557. package/dist/errors/ui-error.d.ts.map +1 -0
  558. package/dist/errors/ui-error.js +219 -0
  559. package/dist/errors/ui-error.js.map +1 -0
  560. package/dist/i18n/i18n.d.ts +52 -0
  561. package/dist/i18n/i18n.d.ts.map +1 -0
  562. package/dist/i18n/i18n.js +156 -0
  563. package/dist/i18n/i18n.js.map +1 -0
  564. package/dist/i18n/index.d.ts +3 -0
  565. package/dist/i18n/index.d.ts.map +1 -0
  566. package/dist/i18n/index.js +3 -0
  567. package/dist/i18n/index.js.map +1 -0
  568. package/dist/icons/icon-names.d.ts +7 -0
  569. package/dist/icons/icon-names.d.ts.map +1 -0
  570. package/dist/icons/icon-names.js +2 -0
  571. package/dist/icons/icon-names.js.map +1 -0
  572. package/dist/icons/icon-registry.d.ts +30 -0
  573. package/dist/icons/icon-registry.d.ts.map +1 -0
  574. package/dist/icons/icon-registry.js +31 -0
  575. package/dist/icons/icon-registry.js.map +1 -0
  576. package/dist/icons/index.d.ts +4 -0
  577. package/dist/icons/index.d.ts.map +1 -0
  578. package/dist/icons/index.js +2 -0
  579. package/dist/icons/index.js.map +1 -0
  580. package/dist/index.d.ts +6 -0
  581. package/dist/index.d.ts.map +1 -0
  582. package/dist/index.js +5 -0
  583. package/dist/index.js.map +1 -0
  584. package/dist/internal/class-names.d.ts +8 -0
  585. package/dist/internal/class-names.d.ts.map +1 -0
  586. package/dist/internal/class-names.js +10 -0
  587. package/dist/internal/class-names.js.map +1 -0
  588. package/dist/internal/menu/index.d.ts +3 -0
  589. package/dist/internal/menu/index.d.ts.map +1 -0
  590. package/dist/internal/menu/index.js +2 -0
  591. package/dist/internal/menu/index.js.map +1 -0
  592. package/dist/internal/menu/menu.d.ts +33 -0
  593. package/dist/internal/menu/menu.d.ts.map +1 -0
  594. package/dist/internal/menu/menu.js +150 -0
  595. package/dist/internal/menu/menu.js.map +1 -0
  596. package/dist/internal/overlay/dismissible-layer.d.ts +38 -0
  597. package/dist/internal/overlay/dismissible-layer.d.ts.map +1 -0
  598. package/dist/internal/overlay/dismissible-layer.js +99 -0
  599. package/dist/internal/overlay/dismissible-layer.js.map +1 -0
  600. package/dist/internal/overlay/document-scroll-lock.d.ts +8 -0
  601. package/dist/internal/overlay/document-scroll-lock.d.ts.map +1 -0
  602. package/dist/internal/overlay/document-scroll-lock.js +58 -0
  603. package/dist/internal/overlay/document-scroll-lock.js.map +1 -0
  604. package/dist/internal/overlay/floating-position.d.ts +46 -0
  605. package/dist/internal/overlay/floating-position.d.ts.map +1 -0
  606. package/dist/internal/overlay/floating-position.js +137 -0
  607. package/dist/internal/overlay/floating-position.js.map +1 -0
  608. package/dist/internal/overlay/index.d.ts +8 -0
  609. package/dist/internal/overlay/index.d.ts.map +1 -0
  610. package/dist/internal/overlay/index.js +6 -0
  611. package/dist/internal/overlay/index.js.map +1 -0
  612. package/dist/internal/overlay/native-modal.d.ts +11 -0
  613. package/dist/internal/overlay/native-modal.d.ts.map +1 -0
  614. package/dist/internal/overlay/native-modal.js +160 -0
  615. package/dist/internal/overlay/native-modal.js.map +1 -0
  616. package/dist/internal/overlay/portal-target.d.ts +19 -0
  617. package/dist/internal/overlay/portal-target.d.ts.map +1 -0
  618. package/dist/internal/overlay/portal-target.js +113 -0
  619. package/dist/internal/overlay/portal-target.js.map +1 -0
  620. package/dist/internal/overlay/top-layer.d.ts +21 -0
  621. package/dist/internal/overlay/top-layer.d.ts.map +1 -0
  622. package/dist/internal/overlay/top-layer.js +51 -0
  623. package/dist/internal/overlay/top-layer.js.map +1 -0
  624. package/dist/internal/use-merged-ref.d.ts +11 -0
  625. package/dist/internal/use-merged-ref.d.ts.map +1 -0
  626. package/dist/internal/use-merged-ref.js +31 -0
  627. package/dist/internal/use-merged-ref.js.map +1 -0
  628. package/dist/internal/use-native-dialog.d.ts +9 -0
  629. package/dist/internal/use-native-dialog.d.ts.map +1 -0
  630. package/dist/internal/use-native-dialog.js +19 -0
  631. package/dist/internal/use-native-dialog.js.map +1 -0
  632. package/dist/runtime/appearance.d.ts +32 -0
  633. package/dist/runtime/appearance.d.ts.map +1 -0
  634. package/dist/runtime/appearance.js +123 -0
  635. package/dist/runtime/appearance.js.map +1 -0
  636. package/dist/styles/components/alert.css +99 -0
  637. package/dist/styles/components/avatar.css +70 -0
  638. package/dist/styles/components/badge.css +101 -0
  639. package/dist/styles/components/breadcrumb.css +65 -0
  640. package/dist/styles/components/button.css +136 -0
  641. package/dist/styles/components/choice.css +120 -0
  642. package/dist/styles/components/combobox.css +200 -0
  643. package/dist/styles/components/confirm-dialog.css +50 -0
  644. package/dist/styles/components/data-table.css +120 -0
  645. package/dist/styles/components/dialog.css +135 -0
  646. package/dist/styles/components/divider.css +27 -0
  647. package/dist/styles/components/drawer.css +160 -0
  648. package/dist/styles/components/dropdown.css +75 -0
  649. package/dist/styles/components/dropzone.css +94 -0
  650. package/dist/styles/components/empty-state.css +85 -0
  651. package/dist/styles/components/file-upload.css +145 -0
  652. package/dist/styles/components/form-field.css +49 -0
  653. package/dist/styles/components/icon.css +53 -0
  654. package/dist/styles/components/inline-message.css +33 -0
  655. package/dist/styles/components/input.css +77 -0
  656. package/dist/styles/components/list.css +132 -0
  657. package/dist/styles/components/loading-overlay.css +24 -0
  658. package/dist/styles/components/menu.css +6 -0
  659. package/dist/styles/components/multi-select.css +68 -0
  660. package/dist/styles/components/navigation.css +116 -0
  661. package/dist/styles/components/page-layout.css +279 -0
  662. package/dist/styles/components/pagination.css +99 -0
  663. package/dist/styles/components/panel.css +123 -0
  664. package/dist/styles/components/popover.css +41 -0
  665. package/dist/styles/components/progress.css +65 -0
  666. package/dist/styles/components/search-input.css +12 -0
  667. package/dist/styles/components/select.css +56 -0
  668. package/dist/styles/components/skeleton.css +93 -0
  669. package/dist/styles/components/spinner.css +27 -0
  670. package/dist/styles/components/status-indicator.css +54 -0
  671. package/dist/styles/components/switch.css +111 -0
  672. package/dist/styles/components/table.css +127 -0
  673. package/dist/styles/components/tabs.css +144 -0
  674. package/dist/styles/components/textarea.css +79 -0
  675. package/dist/styles/components/toast.css +134 -0
  676. package/dist/styles/components/toolbar.css +27 -0
  677. package/dist/styles/components/tooltip.css +32 -0
  678. package/dist/styles/components/tree-view.css +146 -0
  679. package/dist/styles/components.css +45 -0
  680. package/dist/styles/foundation/controls.css +91 -0
  681. package/dist/styles/foundation/density.css +76 -0
  682. package/dist/styles/foundation/icons.css +29 -0
  683. package/dist/styles/foundation/layout.css +150 -0
  684. package/dist/styles/foundation/motion.css +58 -0
  685. package/dist/styles/foundation/surface.css +60 -0
  686. package/dist/styles/foundation/theme.css +166 -0
  687. package/dist/styles/foundation/typography.css +84 -0
  688. package/dist/styles/foundation.css +10 -0
  689. package/dist/styles/miaixz.css +4 -0
  690. package/package.json +304 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-view.js","sourceRoot":"","sources":["../../../src/components/tree-view/tree-view.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type FocusEvent,\n type ForwardedRef,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type RefAttributes,\n} from \"react\";\n\nimport { createMiaixzUiError, MiaixzUiError } from \"../../errors/index.js\";\nimport { useMiaixzLocale, type MiaixzTranslator } from \"../../i18n/index.js\";\nimport { classNames } from \"../../internal/class-names.js\";\nimport { useMergedRef } from \"../../internal/use-merged-ref.js\";\nimport { Icon } from \"../icon/index.js\";\nimport type { TreeNode, TreeViewProps } from \"./tree-view.types.js\";\n\n/**\n * Defines the delay used to combine printable-key tree navigation.\n */\nconst miaixzTreeTypeaheadResetMilliseconds = 500;\n\n/**\n * Tracks the controlled modes selected during the first render.\n */\ninterface MiaixzTreeControlModes {\n /**\n * Identifies whether selection is controlled.\n */\n readonly selected: boolean;\n\n /**\n * Identifies whether expansion is controlled.\n */\n readonly expanded: boolean;\n}\n\n/**\n * Describes one indexed tree node and its structural relationship.\n *\n * @typeParam Value - Consumer-owned value attached to the node.\n */\ninterface MiaixzIndexedTreeNode<Value> {\n /**\n * Supplies the original public node.\n */\n readonly node: Readonly<TreeNode<Value>>;\n\n /**\n * Supplies the parent identifier when the node is not a root.\n */\n readonly parentId: string | null;\n\n /**\n * Supplies the one-based ARIA depth.\n */\n readonly level: number;\n\n /**\n * Supplies the one-based sibling position.\n */\n readonly position: number;\n\n /**\n * Supplies the sibling collection size.\n */\n readonly setSize: number;\n}\n\n/**\n * Describes the complete reachable tree index.\n *\n * @typeParam Value - Consumer-owned value attached to each node.\n */\ninterface MiaixzTreeIndex<Value> {\n /**\n * Maps every reachable identifier to its structural descriptor.\n */\n readonly byId: ReadonlyMap<string, MiaixzIndexedTreeNode<Value>>;\n\n /**\n * Lists every reachable identifier.\n */\n readonly ids: ReadonlySet<string>;\n}\n\n/**\n * Tracks one in-flight lazy child request.\n */\ninterface MiaixzPendingTreeLoad {\n /**\n * Cancels the request when its tree instance is removed.\n */\n readonly controller: AbortController;\n\n /**\n * Represents the shared in-flight request.\n */\n readonly promise: Promise<void>;\n}\n\n/**\n * Renders the public generic TreeView implementation.\n *\n * @typeParam Value - Consumer-owned value attached to each node.\n * @param props - Public tree configuration and native root attributes.\n * @param forwardedRef - Forwarded root div reference.\n * @returns A keyboard-navigable WAI-ARIA tree.\n */\nfunction TreeViewImplementation<Value = unknown>(\n props: TreeViewProps<Value>,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n const {\n nodes,\n selectionMode = \"single\",\n selectedIds,\n defaultSelectedIds,\n onSelectedIdsChange,\n expandedIds,\n defaultExpandedIds,\n onExpandedIdsChange,\n loadChildren,\n label,\n className,\n onBlurCapture,\n onFocusCapture,\n ...rootProps\n } = props;\n const { t } = useMiaixzLocale();\n const selectedControlled = selectedIds !== undefined;\n const expandedControlled = expandedIds !== undefined;\n validateMiaixzTreeControlledValue(\n t,\n selectedControlled,\n defaultSelectedIds !== undefined,\n onSelectedIdsChange !== undefined,\n );\n validateMiaixzTreeControlledValue(\n t,\n expandedControlled,\n defaultExpandedIds !== undefined,\n onExpandedIdsChange !== undefined,\n );\n useStableMiaixzTreeControlModes(t, selectedControlled, expandedControlled);\n\n const [internalSelectedIds, setInternalSelectedIds] = useState<readonly string[]>(() =>\n createUniqueMiaixzTreeIds(defaultSelectedIds ?? []),\n );\n const [internalExpandedIds, setInternalExpandedIds] = useState<readonly string[]>(() =>\n createUniqueMiaixzTreeIds(defaultExpandedIds ?? []),\n );\n const [childCache, setChildCache] = useState<ReadonlyMap<string, readonly TreeNode<Value>[]>>(\n () => new Map(),\n );\n const [loadingIds, setLoadingIds] = useState<ReadonlySet<string>>(() => new Set());\n const [failedIds, setFailedIds] = useState<ReadonlySet<string>>(() => new Set());\n const [focusedId, setFocusedId] = useState<string | null>(null);\n const [fatalError, setFatalError] = useState<MiaixzUiError | null>(null);\n const rootElementRef = useRef<HTMLDivElement | null>(null);\n const rootRef = useMergedRef(forwardedRef, rootElementRef);\n const itemRefs = useRef(new Map<string, HTMLDivElement>());\n const pendingLoadsRef = useRef(new Map<string, MiaixzPendingTreeLoad>());\n const childCacheRef = useRef<ReadonlyMap<string, readonly TreeNode<Value>[]>>(new Map());\n const selectedSnapshotRef = useRef<readonly string[]>(\n createUniqueMiaixzTreeIds(selectedIds ?? defaultSelectedIds ?? []),\n );\n const expandedSnapshotRef = useRef<readonly string[]>(\n createUniqueMiaixzTreeIds(expandedIds ?? defaultExpandedIds ?? []),\n );\n const typeaheadRef = useRef(\"\");\n const typeaheadTimerRef = useRef<number | undefined>(undefined);\n const treeHadFocusRef = useRef(false);\n\n const currentSelectedIds = createUniqueMiaixzTreeIds(\n selectedControlled ? (selectedIds ?? []) : internalSelectedIds,\n );\n const currentExpandedIds = createUniqueMiaixzTreeIds(\n expandedControlled ? (expandedIds ?? []) : internalExpandedIds,\n );\n const selectedSet = useMemo(() => new Set(currentSelectedIds), [currentSelectedIds]);\n const expandedSet = useMemo(() => new Set(currentExpandedIds), [currentExpandedIds]);\n const treeIndex = useMemo(\n () => createMiaixzTreeIndex(t, nodes, childCache),\n [childCache, nodes, t],\n );\n const visibleNodes = useMemo(\n () => createVisibleMiaixzTreeNodes(nodes, childCache, expandedSet),\n [childCache, expandedSet, nodes],\n );\n const visibleIdSet = useMemo(\n () => new Set(visibleNodes.map((entry) => entry.node.id)),\n [visibleNodes],\n );\n const resolvedFocusedId = resolveMiaixzTreeFocusedId(\n focusedId,\n currentSelectedIds,\n visibleNodes,\n visibleIdSet,\n treeIndex,\n );\n\n useEffect(() => {\n if (selectedControlled) selectedSnapshotRef.current = currentSelectedIds;\n }, [currentSelectedIds, selectedControlled]);\n\n useEffect(() => {\n if (expandedControlled) expandedSnapshotRef.current = currentExpandedIds;\n }, [currentExpandedIds, expandedControlled]);\n\n useEffect(() => {\n const reachableIds = treeIndex.ids;\n let cancelled = false;\n queueMicrotask(() => {\n if (cancelled) return;\n const nextCache = new Map(childCacheRef.current);\n let changed = false;\n for (const id of nextCache.keys()) {\n if (reachableIds.has(id)) continue;\n nextCache.delete(id);\n changed = true;\n }\n for (const [id, pending] of pendingLoadsRef.current) {\n if (reachableIds.has(id)) continue;\n pending.controller.abort();\n pendingLoadsRef.current.delete(id);\n }\n if (changed) {\n childCacheRef.current = nextCache;\n setChildCache(nextCache);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [treeIndex.ids]);\n\n useEffect(\n () => () => {\n if (typeaheadTimerRef.current !== undefined) {\n window.clearTimeout(typeaheadTimerRef.current);\n }\n for (const pending of pendingLoadsRef.current.values()) pending.controller.abort();\n pendingLoadsRef.current.clear();\n },\n [],\n );\n\n useLayoutEffect(() => {\n if (focusedId !== resolvedFocusedId && resolvedFocusedId !== null && treeHadFocusRef.current) {\n itemRefs.current.get(resolvedFocusedId)?.focus({ preventScroll: true });\n }\n }, [focusedId, resolvedFocusedId]);\n\n const emitSelectedIds = useCallback(\n (nextIds: readonly string[]) => {\n const normalizedIds = createUniqueMiaixzTreeIds(nextIds);\n if (!selectedControlled) {\n selectedSnapshotRef.current = normalizedIds;\n setInternalSelectedIds(normalizedIds);\n }\n onSelectedIdsChange?.(normalizedIds);\n },\n [onSelectedIdsChange, selectedControlled],\n );\n const emitExpandedIds = useCallback(\n (nextIds: readonly string[]) => {\n const normalizedIds = createUniqueMiaixzTreeIds(nextIds);\n if (!expandedControlled) {\n expandedSnapshotRef.current = normalizedIds;\n setInternalExpandedIds(normalizedIds);\n }\n onExpandedIdsChange?.(normalizedIds);\n },\n [expandedControlled, onExpandedIdsChange],\n );\n const setNodeExpanded = useCallback(\n (nodeId: string, expanded: boolean) => {\n const currentIds = expandedSnapshotRef.current;\n const nextIds = expanded\n ? currentIds.includes(nodeId)\n ? currentIds\n : [...currentIds, nodeId]\n : currentIds.filter((id) => id !== nodeId);\n emitExpandedIds(nextIds);\n },\n [emitExpandedIds],\n );\n const setNodeSelected = useCallback(\n (node: Readonly<TreeNode<Value>>) => {\n if (selectionMode === \"none\" || node.disabled === true) return;\n const currentIds = selectedSnapshotRef.current;\n if (selectionMode === \"single\") {\n emitSelectedIds([node.id]);\n return;\n }\n emitSelectedIds(\n currentIds.includes(node.id)\n ? currentIds.filter((id) => id !== node.id)\n : [...currentIds, node.id],\n );\n },\n [emitSelectedIds, selectionMode],\n );\n const focusNode = useCallback((nodeId: string) => {\n setFocusedId(nodeId);\n itemRefs.current.get(nodeId)?.focus({ preventScroll: true });\n }, []);\n const loadLazyChildren = useCallback(\n (node: Readonly<TreeNode<Value>>) => {\n if (loadChildren === undefined || node.disabled === true) return;\n const existing = pendingLoadsRef.current.get(node.id);\n if (existing !== undefined) return existing.promise;\n\n const controller = new AbortController();\n setLoadingIds((currentIds) => addMiaixzTreeSetValue(currentIds, node.id));\n setFailedIds((currentIds) => removeMiaixzTreeSetValue(currentIds, node.id));\n const promise = loadChildren(node, controller.signal)\n .then((children) => {\n if (controller.signal.aborted) return;\n const nextCache = new Map(childCacheRef.current);\n nextCache.set(node.id, children);\n createMiaixzTreeIndex(t, nodes, nextCache);\n childCacheRef.current = nextCache;\n setChildCache(nextCache);\n setFailedIds((currentIds) => removeMiaixzTreeSetValue(currentIds, node.id));\n if (children.length > 0) setNodeExpanded(node.id, true);\n })\n .catch((error: unknown) => {\n if (controller.signal.aborted) return;\n if (error instanceof MiaixzUiError && error.code === \"UI_TREE_DUPLICATE_ID\") {\n setFatalError(error);\n return;\n }\n setFailedIds((currentIds) => addMiaixzTreeSetValue(currentIds, node.id));\n })\n .finally(() => {\n const current = pendingLoadsRef.current.get(node.id);\n if (current?.promise === promise) pendingLoadsRef.current.delete(node.id);\n if (!controller.signal.aborted) {\n setLoadingIds((currentIds) => removeMiaixzTreeSetValue(currentIds, node.id));\n }\n });\n pendingLoadsRef.current.set(node.id, { controller, promise });\n return promise;\n },\n [loadChildren, nodes, setNodeExpanded, t],\n );\n const toggleNodeExpanded = useCallback(\n (node: Readonly<TreeNode<Value>>) => {\n if (node.disabled === true) return;\n if (expandedSnapshotRef.current.includes(node.id)) {\n setNodeExpanded(node.id, false);\n return;\n }\n const resolvedChildren = resolveMiaixzTreeChildren(node, childCache);\n if (resolvedChildren !== undefined) {\n if (resolvedChildren.length > 0) setNodeExpanded(node.id, true);\n return;\n }\n if (node.hasChildren === true) void loadLazyChildren(node);\n },\n [childCache, loadLazyChildren, setNodeExpanded],\n );\n const handleTreeItemKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>, entry: MiaixzIndexedTreeNode<Value>) => {\n event.stopPropagation();\n const visibleIndex = visibleNodes.findIndex(\n (candidate) => candidate.node.id === entry.node.id,\n );\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const next = visibleNodes[Math.min(visibleIndex + 1, visibleNodes.length - 1)];\n if (next !== undefined) focusNode(next.node.id);\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const previous = visibleNodes[Math.max(visibleIndex - 1, 0)];\n if (previous !== undefined) focusNode(previous.node.id);\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n const first = visibleNodes[0];\n if (first !== undefined) focusNode(first.node.id);\n return;\n }\n if (event.key === \"End\") {\n event.preventDefault();\n const last = visibleNodes[visibleNodes.length - 1];\n if (last !== undefined) focusNode(last.node.id);\n return;\n }\n if (event.key === \"ArrowRight\") {\n event.preventDefault();\n if (isMiaixzTreeNodeExpandable(entry.node, childCache) && !expandedSet.has(entry.node.id)) {\n toggleNodeExpanded(entry.node);\n return;\n }\n const next = visibleNodes[visibleIndex + 1];\n if (expandedSet.has(entry.node.id) && next?.parentId === entry.node.id) {\n focusNode(next.node.id);\n }\n return;\n }\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n if (expandedSet.has(entry.node.id)) {\n toggleNodeExpanded(entry.node);\n } else if (entry.parentId !== null) {\n focusNode(entry.parentId);\n }\n return;\n }\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setNodeSelected(entry.node);\n return;\n }\n if (isMiaixzTreeTypeaheadKey(event)) {\n typeaheadRef.current += event.key.toLocaleLowerCase();\n if (typeaheadTimerRef.current !== undefined) {\n window.clearTimeout(typeaheadTimerRef.current);\n }\n typeaheadTimerRef.current = window.setTimeout(() => {\n typeaheadRef.current = \"\";\n typeaheadTimerRef.current = undefined;\n }, miaixzTreeTypeaheadResetMilliseconds);\n const match = findMiaixzTreeTypeaheadMatch(\n visibleNodes,\n visibleIndex,\n typeaheadRef.current,\n );\n if (match !== undefined) focusNode(match.node.id);\n }\n },\n [childCache, expandedSet, focusNode, setNodeSelected, toggleNodeExpanded, visibleNodes],\n );\n const handleFocusCapture = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n treeHadFocusRef.current = true;\n onFocusCapture?.(event);\n },\n [onFocusCapture],\n );\n const handleBlurCapture = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget)) {\n queueMicrotask(() => {\n treeHadFocusRef.current =\n rootElementRef.current?.contains(document.activeElement) === true;\n });\n }\n onBlurCapture?.(event);\n },\n [onBlurCapture],\n );\n\n /**\n * Renders one sibling collection and its recursively expanded descendants.\n *\n * @param siblings - Ordered sibling nodes to render.\n * @returns Tree item elements for the supplied sibling collection.\n */\n const renderNodes = (siblings: readonly TreeNode<Value>[]) =>\n siblings.map((node) => {\n const entry = treeIndex.byId.get(node.id)!;\n const resolvedChildren = resolveMiaixzTreeChildren(node, childCache);\n const expandable = isMiaixzTreeNodeExpandable(node, childCache);\n const expanded = expandable && expandedSet.has(node.id);\n const selected = selectedSet.has(node.id);\n const loading = loadingIds.has(node.id);\n const failed = failedIds.has(node.id);\n const itemState = loading\n ? \"loading\"\n : failed\n ? \"error\"\n : expanded\n ? \"expanded\"\n : \"collapsed\";\n return (\n <div\n key={node.id}\n ref={(element) => {\n if (element === null) itemRefs.current.delete(node.id);\n else itemRefs.current.set(node.id, element);\n }}\n role=\"treeitem\"\n tabIndex={node.id === resolvedFocusedId ? 0 : -1}\n aria-level={entry.level}\n aria-posinset={entry.position}\n aria-setsize={entry.setSize}\n aria-label={getMiaixzTreeLabelText(node.label) || undefined}\n aria-expanded={expandable ? expanded : undefined}\n aria-selected={selectionMode === \"none\" ? undefined : selected}\n aria-disabled={node.disabled || undefined}\n aria-busy={loading || undefined}\n className=\"miaixz-tree-view-item\"\n data-state={itemState}\n data-disabled={node.disabled || undefined}\n onFocus={(event) => {\n event.stopPropagation();\n setFocusedId(node.id);\n }}\n onKeyDown={(event) => handleTreeItemKeyDown(event, entry)}\n >\n <div\n className=\"miaixz-tree-view-row\"\n onClick={() => {\n focusNode(node.id);\n setNodeSelected(node);\n }}\n >\n <span\n className=\"miaixz-tree-view-expander\"\n data-state={expandable ? (expanded ? \"expanded\" : \"collapsed\") : \"leaf\"}\n onClick={(event: MouseEvent<HTMLSpanElement>) => {\n event.stopPropagation();\n focusNode(node.id);\n if (expandable) toggleNodeExpanded(node);\n }}\n >\n {loading ? (\n <Icon name=\"LoaderCircle\" size=\"control\" className=\"miaixz-icon-spin\" />\n ) : expandable ? (\n <Icon name={expanded ? \"ChevronDown\" : \"ChevronRight\"} size=\"control\" />\n ) : null}\n </span>\n <span className=\"miaixz-tree-view-label\">{node.label}</span>\n {selected && selectionMode !== \"none\" && (\n <Icon name=\"Check\" size=\"control\" className=\"miaixz-tree-view-selection\" />\n )}\n </div>\n {failed && (\n <div className=\"miaixz-tree-view-error\" role=\"alert\">\n <span>{t(\"ui.tree.loadError\")}</span>\n <button\n type=\"button\"\n className=\"miaixz-tree-view-retry\"\n onClick={(event) => {\n event.stopPropagation();\n void loadLazyChildren(node);\n }}\n >\n <Icon name=\"RotateCcw\" size=\"indicator\" />\n {t(\"ui.action.retry\")}\n </button>\n </div>\n )}\n {expanded && resolvedChildren !== undefined && resolvedChildren.length > 0 && (\n <div role=\"group\" className=\"miaixz-tree-view-group\">\n {renderNodes(resolvedChildren)}\n </div>\n )}\n </div>\n );\n });\n\n if (fatalError !== null) throw fatalError;\n\n return (\n <div\n {...rootProps}\n ref={rootRef}\n role=\"tree\"\n aria-label={label}\n aria-multiselectable={selectionMode === \"multiple\" || undefined}\n className={classNames(\"miaixz-tree-view\", className)}\n onFocusCapture={handleFocusCapture}\n onBlurCapture={handleBlurCapture}\n >\n {renderNodes(nodes)}\n </div>\n );\n}\n\n/**\n * Renders a business-neutral WAI-ARIA tree view.\n *\n * @public\n */\nexport const TreeView = forwardRef(TreeViewImplementation) as <Value = unknown>(\n props: TreeViewProps<Value> & RefAttributes<HTMLDivElement>,\n) => ReactElement;\n\n/**\n * Validates one selected or expanded controlled-value contract.\n *\n * @param translate - Active localized message resolver.\n * @param controlled - Whether a controlled value was supplied.\n * @param hasDefault - Whether an uncontrolled default was supplied.\n * @param hasChangeHandler - Whether requested changes can be observed.\n */\nfunction validateMiaixzTreeControlledValue(\n translate: MiaixzTranslator,\n controlled: boolean,\n hasDefault: boolean,\n hasChangeHandler: boolean,\n): void {\n if (controlled && (!hasChangeHandler || hasDefault)) {\n throw createMiaixzUiError(translate, {\n code: \"UI_CONTROLLED_VALUE_INVALID\",\n messageKey: \"ui.error.controlled.valueInvalid\",\n });\n }\n}\n\n/**\n * Freezes selected and expanded control modes for the mounted lifetime.\n *\n * @param translate - Active localized message resolver.\n * @param selectedControlled - Current selection control mode.\n * @param expandedControlled - Current expansion control mode.\n */\nfunction useStableMiaixzTreeControlModes(\n translate: MiaixzTranslator,\n selectedControlled: boolean,\n expandedControlled: boolean,\n): void {\n const [initialModes] = useState<MiaixzTreeControlModes>({\n selected: selectedControlled,\n expanded: expandedControlled,\n });\n if (\n initialModes.selected !== selectedControlled ||\n initialModes.expanded !== expandedControlled\n ) {\n throw createMiaixzUiError(translate, {\n code: \"UI_CONTROL_MODE_CHANGED\",\n messageKey: \"ui.error.controlled.modeChanged\",\n });\n }\n}\n\n/**\n * Produces an ordered identifier list without duplicate values.\n *\n * @param ids - Source identifier collection.\n * @returns Ordered unique identifier collection.\n */\nfunction createUniqueMiaixzTreeIds(ids: readonly string[]): readonly string[] {\n return [...new Set(ids)];\n}\n\n/**\n * Builds the complete reachable tree index and validates identifier uniqueness.\n *\n * @typeParam Value - Consumer-owned value attached to each node.\n * @param translate - Active localized message resolver.\n * @param nodes - Root node collection.\n * @param childCache - Successful lazy child results.\n * @returns Complete immutable structural index.\n */\nfunction createMiaixzTreeIndex<Value>(\n translate: MiaixzTranslator,\n nodes: readonly TreeNode<Value>[],\n childCache: ReadonlyMap<string, readonly TreeNode<Value>[]>,\n): MiaixzTreeIndex<Value> {\n const byId = new Map<string, MiaixzIndexedTreeNode<Value>>();\n\n /**\n * Visits one sibling collection in source order.\n *\n * @param siblings - Ordered siblings at the current depth.\n * @param parentId - Parent identifier or null for roots.\n * @param level - One-based ARIA depth.\n */\n function visit(siblings: readonly TreeNode<Value>[], parentId: string | null, level: number) {\n siblings.forEach((node, index) => {\n if (byId.has(node.id)) {\n throw createMiaixzUiError(translate, {\n code: \"UI_TREE_DUPLICATE_ID\",\n messageKey: \"ui.error.tree.duplicateId\",\n details: { duplicateId: node.id },\n });\n }\n byId.set(node.id, {\n node,\n parentId,\n level,\n position: index + 1,\n setSize: siblings.length,\n });\n const children = resolveMiaixzTreeChildren(node, childCache);\n if (children !== undefined) visit(children, node.id, level + 1);\n });\n }\n\n visit(nodes, null, 1);\n return { byId, ids: new Set(byId.keys()) };\n}\n\n/**\n * Creates the ordered visible-node collection for current expansion state.\n *\n * @typeParam Value - Consumer-owned value attached to each node.\n * @param nodes - Root node collection.\n * @param childCache - Successful lazy child results.\n * @param expandedIds - Currently expanded identifiers.\n * @returns Visible nodes in depth-first keyboard order.\n */\nfunction createVisibleMiaixzTreeNodes<Value>(\n nodes: readonly TreeNode<Value>[],\n childCache: ReadonlyMap<string, readonly TreeNode<Value>[]>,\n expandedIds: ReadonlySet<string>,\n): readonly MiaixzIndexedTreeNode<Value>[] {\n const result: MiaixzIndexedTreeNode<Value>[] = [];\n\n /**\n * Appends one sibling collection and expanded descendants.\n *\n * @param siblings - Ordered siblings at the current depth.\n * @param parentId - Parent identifier or null for roots.\n * @param level - One-based ARIA depth.\n */\n function append(siblings: readonly TreeNode<Value>[], parentId: string | null, level: number) {\n siblings.forEach((node, index) => {\n result.push({\n node,\n parentId,\n level,\n position: index + 1,\n setSize: siblings.length,\n });\n const children = resolveMiaixzTreeChildren(node, childCache);\n if (expandedIds.has(node.id) && children !== undefined && children.length > 0) {\n append(children, node.id, level + 1);\n }\n });\n }\n\n append(nodes, null, 1);\n return result;\n}\n\n/**\n * Resolves static or successfully loaded children for one node.\n *\n * @typeParam Value - Consumer-owned value attached to the node.\n * @param node - Node whose children are requested.\n * @param childCache - Successful lazy child results.\n * @returns Loaded child collection, including an empty result, or undefined.\n */\nfunction resolveMiaixzTreeChildren<Value>(\n node: Readonly<TreeNode<Value>>,\n childCache: ReadonlyMap<string, readonly TreeNode<Value>[]>,\n): readonly TreeNode<Value>[] | undefined {\n return node.children ?? childCache.get(node.id);\n}\n\n/**\n * Reports whether one node currently exposes an expansion affordance.\n *\n * @typeParam Value - Consumer-owned value attached to the node.\n * @param node - Candidate tree node.\n * @param childCache - Successful lazy child results.\n * @returns Whether the node has visible or loadable children.\n */\nfunction isMiaixzTreeNodeExpandable<Value>(\n node: Readonly<TreeNode<Value>>,\n childCache: ReadonlyMap<string, readonly TreeNode<Value>[]>,\n): boolean {\n const children = resolveMiaixzTreeChildren(node, childCache);\n return children === undefined ? node.hasChildren === true : children.length > 0;\n}\n\n/**\n * Resolves the sole visible roving-tabindex node.\n *\n * @typeParam Value - Consumer-owned value attached to each node.\n * @param focusedId - Last explicitly focused identifier.\n * @param selectedIds - Ordered selected identifiers.\n * @param visibleNodes - Current depth-first visible nodes.\n * @param visibleIds - Set form of the visible identifiers.\n * @param treeIndex - Complete reachable tree index.\n * @returns Visible focused identifier or null for an empty tree.\n */\nfunction resolveMiaixzTreeFocusedId<Value>(\n focusedId: string | null,\n selectedIds: readonly string[],\n visibleNodes: readonly MiaixzIndexedTreeNode<Value>[],\n visibleIds: ReadonlySet<string>,\n treeIndex: MiaixzTreeIndex<Value>,\n): string | null {\n if (focusedId !== null) {\n let candidate: string | null = focusedId;\n while (candidate !== null) {\n if (visibleIds.has(candidate)) return candidate;\n candidate = treeIndex.byId.get(candidate)?.parentId ?? null;\n }\n }\n const selected = selectedIds.find((id) => visibleIds.has(id));\n return selected ?? visibleNodes[0]?.node.id ?? null;\n}\n\n/**\n * Adds one value to an immutable set snapshot.\n *\n * @param values - Current set snapshot.\n * @param value - Value to add.\n * @returns Original or updated set snapshot.\n */\nfunction addMiaixzTreeSetValue(values: ReadonlySet<string>, value: string): ReadonlySet<string> {\n if (values.has(value)) return values;\n const nextValues = new Set(values);\n nextValues.add(value);\n return nextValues;\n}\n\n/**\n * Removes one value from an immutable set snapshot.\n *\n * @param values - Current set snapshot.\n * @param value - Value to remove.\n * @returns Original or updated set snapshot.\n */\nfunction removeMiaixzTreeSetValue(values: ReadonlySet<string>, value: string): ReadonlySet<string> {\n if (!values.has(value)) return values;\n const nextValues = new Set(values);\n nextValues.delete(value);\n return nextValues;\n}\n\n/**\n * Reports whether a keyboard event contains one printable typeahead character.\n *\n * @param event - Tree-item keyboard event.\n * @returns Whether the key can participate in typeahead navigation.\n */\nfunction isMiaixzTreeTypeaheadKey(event: KeyboardEvent<HTMLDivElement>): boolean {\n return (\n event.key.length === 1 && event.key !== \" \" && !event.altKey && !event.ctrlKey && !event.metaKey\n );\n}\n\n/**\n * Finds the next visible node matching the current typeahead buffer.\n *\n * @typeParam Value - Consumer-owned value attached to each node.\n * @param visibleNodes - Current depth-first visible nodes.\n * @param currentIndex - Current visible node index.\n * @param query - Normalized accumulated typeahead query.\n * @returns Next matching node or undefined.\n */\nfunction findMiaixzTreeTypeaheadMatch<Value>(\n visibleNodes: readonly MiaixzIndexedTreeNode<Value>[],\n currentIndex: number,\n query: string,\n): MiaixzIndexedTreeNode<Value> | undefined {\n for (let offset = 1; offset <= visibleNodes.length; offset += 1) {\n const candidate = visibleNodes[(currentIndex + offset) % visibleNodes.length];\n if (\n candidate !== undefined &&\n getMiaixzTreeLabelText(candidate.node.label).toLocaleLowerCase().startsWith(query)\n ) {\n return candidate;\n }\n }\n return undefined;\n}\n\n/**\n * Extracts safe typeahead text from primitive React labels.\n *\n * @param label - Public React node label.\n * @returns String or numeric label text, otherwise an empty string.\n */\nfunction getMiaixzTreeLabelText(label: TreeNode[\"label\"]): string {\n return typeof label === \"string\" || typeof label === \"number\" ? String(label) : \"\";\n}\n"]}
@@ -0,0 +1,92 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ /**
3
+ * Describes one business-neutral node rendered by TreeView.
4
+ *
5
+ * @typeParam Value - Optional consumer-owned value attached to the node.
6
+ * @public
7
+ */
8
+ export interface TreeNode<Value = unknown> {
9
+ /**
10
+ * Supplies the globally unique node identifier within one tree.
11
+ */
12
+ readonly id: string;
13
+ /**
14
+ * Supplies the visible node label.
15
+ */
16
+ readonly label: ReactNode;
17
+ /**
18
+ * Supplies optional consumer-owned node data.
19
+ */
20
+ readonly value?: Value;
21
+ /**
22
+ * Supplies already loaded child nodes.
23
+ */
24
+ readonly children?: readonly TreeNode<Value>[];
25
+ /**
26
+ * Indicates that children can be loaded when no child collection is present.
27
+ */
28
+ readonly hasChildren?: boolean;
29
+ /**
30
+ * Prevents node selection and expansion.
31
+ */
32
+ readonly disabled?: boolean;
33
+ }
34
+ /**
35
+ * Defines Miaixz-owned TreeView properties before native div attributes are merged.
36
+ *
37
+ * @typeParam Value - Optional consumer-owned value attached to each node.
38
+ * @public
39
+ */
40
+ export interface MiaixzTreeViewOwnProps<Value = unknown> {
41
+ /**
42
+ * Supplies the complete root node collection.
43
+ */
44
+ nodes: readonly TreeNode<Value>[];
45
+ /**
46
+ * Selects whether nodes are not selectable, singly selectable, or multiply selectable.
47
+ *
48
+ * @defaultValue `"single"`
49
+ */
50
+ selectionMode?: "none" | "single" | "multiple";
51
+ /**
52
+ * Controls the ordered selected-node identifier collection.
53
+ */
54
+ selectedIds?: readonly string[];
55
+ /**
56
+ * Sets the initial uncontrolled selected-node identifier collection.
57
+ */
58
+ defaultSelectedIds?: readonly string[];
59
+ /**
60
+ * Receives requested selected-node identifier changes.
61
+ */
62
+ onSelectedIdsChange?: (ids: readonly string[]) => void;
63
+ /**
64
+ * Controls the ordered expanded-node identifier collection.
65
+ */
66
+ expandedIds?: readonly string[];
67
+ /**
68
+ * Sets the initial uncontrolled expanded-node identifier collection.
69
+ */
70
+ defaultExpandedIds?: readonly string[];
71
+ /**
72
+ * Receives requested expanded-node identifier changes.
73
+ */
74
+ onExpandedIdsChange?: (ids: readonly string[]) => void;
75
+ /**
76
+ * Loads children for nodes that declare children without supplying them.
77
+ */
78
+ loadChildren?: (node: Readonly<TreeNode<Value>>, signal: AbortSignal) => Promise<readonly TreeNode<Value>[]>;
79
+ /**
80
+ * Supplies the accessible tree label.
81
+ */
82
+ label: string;
83
+ }
84
+ /**
85
+ * Configures a business-neutral WAI-ARIA tree view.
86
+ *
87
+ * @typeParam Value - Optional consumer-owned value attached to each node.
88
+ * @public
89
+ */
90
+ export interface TreeViewProps<Value = unknown> extends Omit<HTMLAttributes<HTMLDivElement>, keyof MiaixzTreeViewOwnProps<Value>>, MiaixzTreeViewOwnProps<Value> {
91
+ }
92
+ //# sourceMappingURL=tree-view.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-view.types.d.ts","sourceRoot":"","sources":["../../../src/components/tree-view/tree-view.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,QAAQ,CAAC,KAAK,GAAG,OAAO;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAE/C;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB,CAAC,KAAK,GAAG,OAAO;IACrD;;OAEG;IACH,KAAK,EAAE,SAAS,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAElC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IAE/C;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEhC;;OAEG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IAEvD;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEhC;;OAEG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IAEvD;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC/B,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,SAAS,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEzC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,OAAO,CAC5C,SACE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAC,EACzE,sBAAsB,CAAC,KAAK,CAAC;CAAG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tree-view.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-view.types.js","sourceRoot":"","sources":["../../../src/components/tree-view/tree-view.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\n\n/**\n * Describes one business-neutral node rendered by TreeView.\n *\n * @typeParam Value - Optional consumer-owned value attached to the node.\n * @public\n */\nexport interface TreeNode<Value = unknown> {\n /**\n * Supplies the globally unique node identifier within one tree.\n */\n readonly id: string;\n\n /**\n * Supplies the visible node label.\n */\n readonly label: ReactNode;\n\n /**\n * Supplies optional consumer-owned node data.\n */\n readonly value?: Value;\n\n /**\n * Supplies already loaded child nodes.\n */\n readonly children?: readonly TreeNode<Value>[];\n\n /**\n * Indicates that children can be loaded when no child collection is present.\n */\n readonly hasChildren?: boolean;\n\n /**\n * Prevents node selection and expansion.\n */\n readonly disabled?: boolean;\n}\n\n/**\n * Defines Miaixz-owned TreeView properties before native div attributes are merged.\n *\n * @typeParam Value - Optional consumer-owned value attached to each node.\n * @public\n */\nexport interface MiaixzTreeViewOwnProps<Value = unknown> {\n /**\n * Supplies the complete root node collection.\n */\n nodes: readonly TreeNode<Value>[];\n\n /**\n * Selects whether nodes are not selectable, singly selectable, or multiply selectable.\n *\n * @defaultValue `\"single\"`\n */\n selectionMode?: \"none\" | \"single\" | \"multiple\";\n\n /**\n * Controls the ordered selected-node identifier collection.\n */\n selectedIds?: readonly string[];\n\n /**\n * Sets the initial uncontrolled selected-node identifier collection.\n */\n defaultSelectedIds?: readonly string[];\n\n /**\n * Receives requested selected-node identifier changes.\n */\n onSelectedIdsChange?: (ids: readonly string[]) => void;\n\n /**\n * Controls the ordered expanded-node identifier collection.\n */\n expandedIds?: readonly string[];\n\n /**\n * Sets the initial uncontrolled expanded-node identifier collection.\n */\n defaultExpandedIds?: readonly string[];\n\n /**\n * Receives requested expanded-node identifier changes.\n */\n onExpandedIdsChange?: (ids: readonly string[]) => void;\n\n /**\n * Loads children for nodes that declare children without supplying them.\n */\n loadChildren?: (\n node: Readonly<TreeNode<Value>>,\n signal: AbortSignal,\n ) => Promise<readonly TreeNode<Value>[]>;\n\n /**\n * Supplies the accessible tree label.\n */\n label: string;\n}\n\n/**\n * Configures a business-neutral WAI-ARIA tree view.\n *\n * @typeParam Value - Optional consumer-owned value attached to each node.\n * @public\n */\nexport interface TreeViewProps<Value = unknown>\n extends\n Omit<HTMLAttributes<HTMLDivElement>, keyof MiaixzTreeViewOwnProps<Value>>,\n MiaixzTreeViewOwnProps<Value> {}\n"]}
@@ -0,0 +1,3 @@
1
+ export { VisuallyHidden } from "./visually-hidden.js";
2
+ export type { VisuallyHiddenProps } from "./visually-hidden.types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/visually-hidden/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { VisuallyHidden } from "./visually-hidden.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/visually-hidden/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["export { VisuallyHidden } from \"./visually-hidden.js\";\nexport type { VisuallyHiddenProps } from \"./visually-hidden.types.js\";\n"]}
@@ -0,0 +1,8 @@
1
+ import type { VisuallyHiddenProps } from "./visually-hidden.types.js";
2
+ /**
3
+ * Renders assistive content with the shared Miaixz visually-hidden layout primitive.
4
+ *
5
+ * @public
6
+ */
7
+ export declare const VisuallyHidden: import("react").ForwardRefExoticComponent<VisuallyHiddenProps & import("react").RefAttributes<HTMLSpanElement>>;
8
+ //# sourceMappingURL=visually-hidden.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visually-hidden.d.ts","sourceRoot":"","sources":["../../../src/components/visually-hidden/visually-hidden.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,cAAc,iHAM1B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { classNames } from "../../internal/class-names.js";
4
+ /**
5
+ * Renders assistive content with the shared Miaixz visually-hidden layout primitive.
6
+ *
7
+ * @public
8
+ */
9
+ export const VisuallyHidden = forwardRef(function VisuallyHidden({ className, ...props }, ref) {
10
+ return (_jsx("span", { ...props, ref: ref, className: classNames("miaixz-visually-hidden", className) }));
11
+ });
12
+ //# sourceMappingURL=visually-hidden.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visually-hidden.js","sourceRoot":"","sources":["../../../src/components/visually-hidden/visually-hidden.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAClD,OAAO,CACL,kBAAU,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,wBAAwB,EAAE,SAAS,CAAC,GAAI,CAC1F,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["import { forwardRef } from \"react\";\n\nimport { classNames } from \"../../internal/class-names.js\";\nimport type { VisuallyHiddenProps } from \"./visually-hidden.types.js\";\n\n/**\n * Renders assistive content with the shared Miaixz visually-hidden layout primitive.\n *\n * @public\n */\nexport const VisuallyHidden = forwardRef<HTMLSpanElement, VisuallyHiddenProps>(\n function VisuallyHidden({ className, ...props }, ref) {\n return (\n <span {...props} ref={ref} className={classNames(\"miaixz-visually-hidden\", className)} />\n );\n },\n);\n"]}
@@ -0,0 +1,9 @@
1
+ import type { HTMLAttributes } from "react";
2
+ /**
3
+ * Configures content that remains available to assistive technology without visual display.
4
+ *
5
+ * @public
6
+ */
7
+ export interface VisuallyHiddenProps extends HTMLAttributes<HTMLSpanElement> {
8
+ }
9
+ //# sourceMappingURL=visually-hidden.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visually-hidden.types.d.ts","sourceRoot":"","sources":["../../../src/components/visually-hidden/visually-hidden.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,mBAAoB,SAAQ,cAAc,CAAC,eAAe,CAAC;CAAG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=visually-hidden.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visually-hidden.types.js","sourceRoot":"","sources":["../../../src/components/visually-hidden/visually-hidden.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { HTMLAttributes } from \"react\";\n\n/**\n * Configures content that remains available to assistive technology without visual display.\n *\n * @public\n */\nexport interface VisuallyHiddenProps extends HTMLAttributes<HTMLSpanElement> {}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from "./ui-error.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./ui-error.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC","sourcesContent":["export * from \"./ui-error.js\";\n"]}
@@ -0,0 +1,60 @@
1
+ import type { MiaixzTranslator } from "@miaixz/sdk/i18n";
2
+ /**
3
+ * Configures a stable UI runtime error.
4
+ *
5
+ * @public
6
+ */
7
+ export interface MiaixzUiErrorOptions {
8
+ /**
9
+ * Supplies the stable machine-readable error code.
10
+ */
11
+ readonly code: string;
12
+ /**
13
+ * Supplies the stable translation key used for the public message.
14
+ */
15
+ readonly messageKey: string;
16
+ /**
17
+ * Supplies optional diagnostic metadata that will be bounded and sanitized.
18
+ */
19
+ readonly details?: unknown;
20
+ /**
21
+ * Supplies the original failure for local diagnostics.
22
+ */
23
+ readonly cause?: unknown;
24
+ }
25
+ /**
26
+ * Error created by UI runtime contract validation.
27
+ *
28
+ * @public
29
+ */
30
+ export declare class MiaixzUiError extends Error {
31
+ /**
32
+ * Contains the stable machine-readable error code.
33
+ */
34
+ readonly code: string;
35
+ /**
36
+ * Contains the stable translation key for the public message.
37
+ */
38
+ readonly messageKey: string;
39
+ /**
40
+ * Contains optional immutable and sanitized diagnostic metadata.
41
+ */
42
+ readonly details?: unknown;
43
+ /**
44
+ * Creates a stable localized UI error.
45
+ *
46
+ * @param message - Localized public message.
47
+ * @param options - Stable error metadata and optional cause.
48
+ */
49
+ constructor(message: string, options: MiaixzUiErrorOptions);
50
+ }
51
+ /**
52
+ * Creates a UI error whose public message is resolved by the supplied translator.
53
+ *
54
+ * @param translate - Translator that resolves the registered message key.
55
+ * @param options - Stable error metadata and optional cause.
56
+ * @returns Localized UI runtime error.
57
+ * @public
58
+ */
59
+ export declare function createMiaixzUiError(translate: MiaixzTranslator, options: MiaixzUiErrorOptions): MiaixzUiError;
60
+ //# sourceMappingURL=ui-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-error.d.ts","sourceRoot":"","sources":["../../src/errors/ui-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AA0DzD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAyID;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;OAKG;IACH,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAOzD;CACF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,aAAa,CAEf"}
@@ -0,0 +1,219 @@
1
+ const miaixzUiSensitiveDetailKeys = new Set([
2
+ "accesstoken",
3
+ "account",
4
+ "address",
5
+ "apikey",
6
+ "authorization",
7
+ "body",
8
+ "content",
9
+ "cookie",
10
+ "csrf",
11
+ "data",
12
+ "email",
13
+ "filecontent",
14
+ "filename",
15
+ "filepath",
16
+ "fullname",
17
+ "idcard",
18
+ "key",
19
+ "mobile",
20
+ "name",
21
+ "password",
22
+ "phone",
23
+ "proxyauthorization",
24
+ "realname",
25
+ "refreshtoken",
26
+ "secret",
27
+ "setcookie",
28
+ "token",
29
+ "user",
30
+ "userid",
31
+ "username",
32
+ "xapikey",
33
+ "xcsrftoken",
34
+ ]);
35
+ const miaixzUiErrorMaximumDepth = 8;
36
+ const miaixzUiErrorMaximumCollectionSize = 100;
37
+ const miaixzUiErrorMaximumStringLength = 1_024;
38
+ const miaixzUiRedactedValue = "[REDACTED]";
39
+ const miaixzUiTruncatedValue = "[TRUNCATED]";
40
+ const miaixzUiCircularValue = "[CIRCULAR]";
41
+ /**
42
+ * Reports whether an object is safe to traverse as inert JSON-like metadata.
43
+ *
44
+ * @param value - Object candidate to inspect.
45
+ * @returns Whether the value is an object literal or null-prototype record.
46
+ */
47
+ function isPlainUiErrorObject(value) {
48
+ const prototype = Object.getPrototypeOf(value);
49
+ return prototype === Object.prototype || prototype === null;
50
+ }
51
+ /**
52
+ * Normalizes a detail key before comparing it with the sensitive-key registry.
53
+ *
54
+ * @param value - Detail key to normalize.
55
+ * @returns Lowercase alphanumeric key without separators.
56
+ */
57
+ function normalizeUiErrorDetailKey(value) {
58
+ return value.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
59
+ }
60
+ /**
61
+ * Truncates diagnostic strings by Unicode code point.
62
+ *
63
+ * @param value - Diagnostic string to constrain.
64
+ * @returns Original string or a safely truncated representation.
65
+ */
66
+ function truncateUiErrorString(value) {
67
+ const characters = [...value];
68
+ if (characters.length <= miaixzUiErrorMaximumStringLength)
69
+ return value;
70
+ return `${characters.slice(0, miaixzUiErrorMaximumStringLength).join("")}${miaixzUiTruncatedValue}`;
71
+ }
72
+ /**
73
+ * Creates a content-free summary for a non-JSON diagnostic value.
74
+ *
75
+ * @param value - Runtime value whose content must not be retained.
76
+ * @returns Frozen type and optional byte-size metadata.
77
+ */
78
+ function summarizeUiErrorValue(value) {
79
+ let type = typeof value;
80
+ let bytes;
81
+ if (typeof Blob !== "undefined" && value instanceof Blob) {
82
+ type = typeof File !== "undefined" && value instanceof File ? "File" : "Blob";
83
+ bytes = value.size;
84
+ }
85
+ else if (value instanceof ArrayBuffer) {
86
+ type = "ArrayBuffer";
87
+ bytes = value.byteLength;
88
+ }
89
+ else if (ArrayBuffer.isView(value)) {
90
+ type = "TypedArray";
91
+ bytes = value.byteLength;
92
+ }
93
+ else if (typeof FormData !== "undefined" && value instanceof FormData) {
94
+ type = "FormData";
95
+ }
96
+ else if (typeof URLSearchParams !== "undefined" && value instanceof URLSearchParams) {
97
+ type = "URLSearchParams";
98
+ bytes = new TextEncoder().encode(value.toString()).byteLength;
99
+ }
100
+ else if (typeof ReadableStream !== "undefined" && value instanceof ReadableStream) {
101
+ type = "ReadableStream";
102
+ }
103
+ else if (value !== null && typeof value === "object") {
104
+ type = "Object";
105
+ }
106
+ return Object.freeze(bytes === undefined ? { type } : { type, bytes });
107
+ }
108
+ /**
109
+ * Recursively creates bounded, immutable, getter-safe UI error details.
110
+ *
111
+ * @param value - Runtime value to sanitize.
112
+ * @param depth - Current recursive depth.
113
+ * @param ancestors - Objects in the active traversal path.
114
+ * @returns Frozen metadata without recognized sensitive values or file content.
115
+ */
116
+ function sanitizeUiErrorDetails(value, depth = 0, ancestors = new Set()) {
117
+ if (typeof value === "string")
118
+ return truncateUiErrorString(value);
119
+ if (value === null ||
120
+ typeof value === "number" ||
121
+ typeof value === "boolean" ||
122
+ typeof value === "undefined") {
123
+ return value;
124
+ }
125
+ if (typeof value !== "object")
126
+ return summarizeUiErrorValue(value);
127
+ if (ancestors.has(value))
128
+ return miaixzUiCircularValue;
129
+ if (depth >= miaixzUiErrorMaximumDepth)
130
+ return miaixzUiTruncatedValue;
131
+ if (!Array.isArray(value) && !isPlainUiErrorObject(value)) {
132
+ return summarizeUiErrorValue(value);
133
+ }
134
+ const nextAncestors = new Set(ancestors);
135
+ nextAncestors.add(value);
136
+ if (Array.isArray(value)) {
137
+ const limit = Math.min(value.length, miaixzUiErrorMaximumCollectionSize);
138
+ const result = [];
139
+ for (let index = 0; index < limit; index += 1) {
140
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
141
+ result.push(descriptor && "value" in descriptor
142
+ ? sanitizeUiErrorDetails(descriptor.value, depth + 1, nextAncestors)
143
+ : miaixzUiTruncatedValue);
144
+ }
145
+ if (value.length > miaixzUiErrorMaximumCollectionSize) {
146
+ result[miaixzUiErrorMaximumCollectionSize - 1] = miaixzUiTruncatedValue;
147
+ }
148
+ return Object.freeze(result);
149
+ }
150
+ const result = {};
151
+ const keys = Object.keys(value);
152
+ const limit = Math.min(keys.length, miaixzUiErrorMaximumCollectionSize);
153
+ for (let index = 0; index < limit; index += 1) {
154
+ const key = keys[index];
155
+ if (key === undefined)
156
+ continue;
157
+ if (miaixzUiSensitiveDetailKeys.has(normalizeUiErrorDetailKey(key))) {
158
+ result[key] = miaixzUiRedactedValue;
159
+ continue;
160
+ }
161
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
162
+ result[key] =
163
+ descriptor && "value" in descriptor
164
+ ? sanitizeUiErrorDetails(descriptor.value, depth + 1, nextAncestors)
165
+ : miaixzUiTruncatedValue;
166
+ }
167
+ if (keys.length > miaixzUiErrorMaximumCollectionSize) {
168
+ const lastKey = keys[miaixzUiErrorMaximumCollectionSize - 1];
169
+ if (lastKey !== undefined)
170
+ result[lastKey] = miaixzUiTruncatedValue;
171
+ }
172
+ return Object.freeze(result);
173
+ }
174
+ /**
175
+ * Error created by UI runtime contract validation.
176
+ *
177
+ * @public
178
+ */
179
+ export class MiaixzUiError extends Error {
180
+ /**
181
+ * Contains the stable machine-readable error code.
182
+ */
183
+ code;
184
+ /**
185
+ * Contains the stable translation key for the public message.
186
+ */
187
+ messageKey;
188
+ /**
189
+ * Contains optional immutable and sanitized diagnostic metadata.
190
+ */
191
+ details;
192
+ /**
193
+ * Creates a stable localized UI error.
194
+ *
195
+ * @param message - Localized public message.
196
+ * @param options - Stable error metadata and optional cause.
197
+ */
198
+ constructor(message, options) {
199
+ const safeCause = options.cause instanceof Error ? options.cause : undefined;
200
+ super(message, safeCause === undefined ? undefined : { cause: safeCause });
201
+ this.name = "MiaixzUiError";
202
+ this.code = options.code;
203
+ this.messageKey = options.messageKey;
204
+ if (options.details !== undefined)
205
+ this.details = sanitizeUiErrorDetails(options.details);
206
+ }
207
+ }
208
+ /**
209
+ * Creates a UI error whose public message is resolved by the supplied translator.
210
+ *
211
+ * @param translate - Translator that resolves the registered message key.
212
+ * @param options - Stable error metadata and optional cause.
213
+ * @returns Localized UI runtime error.
214
+ * @public
215
+ */
216
+ export function createMiaixzUiError(translate, options) {
217
+ return new MiaixzUiError(translate(options.messageKey), options);
218
+ }
219
+ //# sourceMappingURL=ui-error.js.map