@aster-ui/prefixed 0.12.50

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 (388) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +40 -0
  3. package/dist/chart.d.ts +2 -0
  4. package/dist/chart.js +5 -0
  5. package/dist/chart.js.map +1 -0
  6. package/dist/components/Affix.d.ts +14 -0
  7. package/dist/components/Affix.js +57 -0
  8. package/dist/components/Affix.js.map +1 -0
  9. package/dist/components/Alert.d.ts +10 -0
  10. package/dist/components/Alert.js +31 -0
  11. package/dist/components/Alert.js.map +1 -0
  12. package/dist/components/Anchor.d.ts +55 -0
  13. package/dist/components/Anchor.js +116 -0
  14. package/dist/components/Anchor.js.map +1 -0
  15. package/dist/components/Autocomplete.d.ts +38 -0
  16. package/dist/components/Autocomplete.js +186 -0
  17. package/dist/components/Autocomplete.js.map +1 -0
  18. package/dist/components/Avatar.d.ts +28 -0
  19. package/dist/components/Avatar.js +65 -0
  20. package/dist/components/Avatar.js.map +1 -0
  21. package/dist/components/Badge.d.ts +39 -0
  22. package/dist/components/Badge.js +220 -0
  23. package/dist/components/Badge.js.map +1 -0
  24. package/dist/components/Breadcrumb.d.ts +32 -0
  25. package/dist/components/Breadcrumb.js +39 -0
  26. package/dist/components/Breadcrumb.js.map +1 -0
  27. package/dist/components/Browser.d.ts +7 -0
  28. package/dist/components/Browser.js +15 -0
  29. package/dist/components/Browser.js.map +1 -0
  30. package/dist/components/Button.d.ts +38 -0
  31. package/dist/components/Button.js +114 -0
  32. package/dist/components/Button.js.map +1 -0
  33. package/dist/components/Card.d.ts +57 -0
  34. package/dist/components/Card.js +202 -0
  35. package/dist/components/Card.js.map +1 -0
  36. package/dist/components/Carousel.d.ts +55 -0
  37. package/dist/components/Carousel.js +205 -0
  38. package/dist/components/Carousel.js.map +1 -0
  39. package/dist/components/Cascader.d.ts +71 -0
  40. package/dist/components/Cascader.js +416 -0
  41. package/dist/components/Cascader.js.map +1 -0
  42. package/dist/components/Chart.d.ts +19 -0
  43. package/dist/components/Chart.js +153 -0
  44. package/dist/components/Chart.js.map +1 -0
  45. package/dist/components/Chat.d.ts +11 -0
  46. package/dist/components/Chat.js +33 -0
  47. package/dist/components/Chat.js.map +1 -0
  48. package/dist/components/Checkbox.d.ts +42 -0
  49. package/dist/components/Checkbox.js +156 -0
  50. package/dist/components/Checkbox.js.map +1 -0
  51. package/dist/components/Code.d.ts +16 -0
  52. package/dist/components/Code.js +60 -0
  53. package/dist/components/Code.js.map +1 -0
  54. package/dist/components/Collapse.d.ts +45 -0
  55. package/dist/components/Collapse.js +115 -0
  56. package/dist/components/Collapse.js.map +1 -0
  57. package/dist/components/ColorPicker.d.ts +16 -0
  58. package/dist/components/ColorPicker.js +368 -0
  59. package/dist/components/ColorPicker.js.map +1 -0
  60. package/dist/components/Command.d.ts +65 -0
  61. package/dist/components/Command.js +422 -0
  62. package/dist/components/Command.js.map +1 -0
  63. package/dist/components/ConfigProvider.d.ts +59 -0
  64. package/dist/components/ConfigProvider.js +46 -0
  65. package/dist/components/ConfigProvider.js.map +1 -0
  66. package/dist/components/Container.d.ts +12 -0
  67. package/dist/components/Container.js +28 -0
  68. package/dist/components/Container.js.map +1 -0
  69. package/dist/components/ContextMenu.d.ts +59 -0
  70. package/dist/components/ContextMenu.js +206 -0
  71. package/dist/components/ContextMenu.js.map +1 -0
  72. package/dist/components/CopyButton.d.ts +37 -0
  73. package/dist/components/CopyButton.js +123 -0
  74. package/dist/components/CopyButton.js.map +1 -0
  75. package/dist/components/Countdown.d.ts +27 -0
  76. package/dist/components/Countdown.js +118 -0
  77. package/dist/components/Countdown.js.map +1 -0
  78. package/dist/components/DatePicker.d.ts +11 -0
  79. package/dist/components/DatePicker.js +188 -0
  80. package/dist/components/DatePicker.js.map +1 -0
  81. package/dist/components/Descriptions.d.ts +84 -0
  82. package/dist/components/Descriptions.js +234 -0
  83. package/dist/components/Descriptions.js.map +1 -0
  84. package/dist/components/Diff.d.ts +12 -0
  85. package/dist/components/Diff.js +22 -0
  86. package/dist/components/Diff.js.map +1 -0
  87. package/dist/components/Divider.d.ts +8 -0
  88. package/dist/components/Divider.js +36 -0
  89. package/dist/components/Divider.js.map +1 -0
  90. package/dist/components/Dock.d.ts +38 -0
  91. package/dist/components/Dock.js +47 -0
  92. package/dist/components/Dock.js.map +1 -0
  93. package/dist/components/Drawer.d.ts +81 -0
  94. package/dist/components/Drawer.js +246 -0
  95. package/dist/components/Drawer.js.map +1 -0
  96. package/dist/components/Dropdown.d.ts +104 -0
  97. package/dist/components/Dropdown.js +407 -0
  98. package/dist/components/Dropdown.js.map +1 -0
  99. package/dist/components/Empty.d.ts +17 -0
  100. package/dist/components/Empty.js +145 -0
  101. package/dist/components/Empty.js.map +1 -0
  102. package/dist/components/Fieldset.d.ts +21 -0
  103. package/dist/components/Fieldset.js +21 -0
  104. package/dist/components/Fieldset.js.map +1 -0
  105. package/dist/components/FileInput.d.ts +9 -0
  106. package/dist/components/FileInput.js +38 -0
  107. package/dist/components/FileInput.js.map +1 -0
  108. package/dist/components/Filter.d.ts +27 -0
  109. package/dist/components/Filter.js +57 -0
  110. package/dist/components/Filter.js.map +1 -0
  111. package/dist/components/Flex.d.ts +14 -0
  112. package/dist/components/Flex.js +66 -0
  113. package/dist/components/Flex.js.map +1 -0
  114. package/dist/components/FloatButton.d.ts +73 -0
  115. package/dist/components/FloatButton.js +187 -0
  116. package/dist/components/FloatButton.js.map +1 -0
  117. package/dist/components/Footer.d.ts +16 -0
  118. package/dist/components/Footer.js +22 -0
  119. package/dist/components/Footer.js.map +1 -0
  120. package/dist/components/Form.d.ts +107 -0
  121. package/dist/components/Form.js +277 -0
  122. package/dist/components/Form.js.map +1 -0
  123. package/dist/components/Grid.d.ts +26 -0
  124. package/dist/components/Grid.js +1090 -0
  125. package/dist/components/Grid.js.map +1 -0
  126. package/dist/components/Hero.d.ts +11 -0
  127. package/dist/components/Hero.js +21 -0
  128. package/dist/components/Hero.js.map +1 -0
  129. package/dist/components/HoverGallery.d.ts +10 -0
  130. package/dist/components/HoverGallery.js +20 -0
  131. package/dist/components/HoverGallery.js.map +1 -0
  132. package/dist/components/Image.d.ts +26 -0
  133. package/dist/components/Image.js +172 -0
  134. package/dist/components/Image.js.map +1 -0
  135. package/dist/components/Input.d.ts +36 -0
  136. package/dist/components/Input.js +263 -0
  137. package/dist/components/Input.js.map +1 -0
  138. package/dist/components/InputNumber.d.ts +19 -0
  139. package/dist/components/InputNumber.js +158 -0
  140. package/dist/components/InputNumber.js.map +1 -0
  141. package/dist/components/Join.d.ts +6 -0
  142. package/dist/components/Join.js +19 -0
  143. package/dist/components/Join.js.map +1 -0
  144. package/dist/components/Kbd.d.ts +9 -0
  145. package/dist/components/Kbd.js +20 -0
  146. package/dist/components/Kbd.js.map +1 -0
  147. package/dist/components/Layout.d.ts +67 -0
  148. package/dist/components/Layout.js +188 -0
  149. package/dist/components/Layout.js.map +1 -0
  150. package/dist/components/List.d.ts +79 -0
  151. package/dist/components/List.js +128 -0
  152. package/dist/components/List.js.map +1 -0
  153. package/dist/components/Loading.d.ts +9 -0
  154. package/dist/components/Loading.js +40 -0
  155. package/dist/components/Loading.js.map +1 -0
  156. package/dist/components/Mask.d.ts +14 -0
  157. package/dist/components/Mask.js +37 -0
  158. package/dist/components/Mask.js.map +1 -0
  159. package/dist/components/Masonry.d.ts +15 -0
  160. package/dist/components/Masonry.js +84 -0
  161. package/dist/components/Masonry.js.map +1 -0
  162. package/dist/components/Mention.d.ts +30 -0
  163. package/dist/components/Mention.js +179 -0
  164. package/dist/components/Mention.js.map +1 -0
  165. package/dist/components/Menu.d.ts +72 -0
  166. package/dist/components/Menu.js +163 -0
  167. package/dist/components/Menu.js.map +1 -0
  168. package/dist/components/Message.d.ts +20 -0
  169. package/dist/components/Message.js +57 -0
  170. package/dist/components/Message.js.map +1 -0
  171. package/dist/components/Modal.d.ts +57 -0
  172. package/dist/components/Modal.js +338 -0
  173. package/dist/components/Modal.js.map +1 -0
  174. package/dist/components/MonthCalendar.d.ts +31 -0
  175. package/dist/components/MonthCalendar.js +205 -0
  176. package/dist/components/MonthCalendar.js.map +1 -0
  177. package/dist/components/Navbar.d.ts +22 -0
  178. package/dist/components/Navbar.js +50 -0
  179. package/dist/components/Navbar.js.map +1 -0
  180. package/dist/components/Notification.d.ts +50 -0
  181. package/dist/components/Notification.js +150 -0
  182. package/dist/components/Notification.js.map +1 -0
  183. package/dist/components/OTPInput.d.ts +32 -0
  184. package/dist/components/OTPInput.js +114 -0
  185. package/dist/components/OTPInput.js.map +1 -0
  186. package/dist/components/Pagination.d.ts +18 -0
  187. package/dist/components/Pagination.js +175 -0
  188. package/dist/components/Pagination.js.map +1 -0
  189. package/dist/components/Phone.d.ts +8 -0
  190. package/dist/components/Phone.js +17 -0
  191. package/dist/components/Phone.js.map +1 -0
  192. package/dist/components/Popconfirm.d.ts +17 -0
  193. package/dist/components/Popconfirm.js +125 -0
  194. package/dist/components/Popconfirm.js.map +1 -0
  195. package/dist/components/Popover.d.ts +15 -0
  196. package/dist/components/Popover.js +89 -0
  197. package/dist/components/Popover.js.map +1 -0
  198. package/dist/components/Progress.d.ts +5 -0
  199. package/dist/components/Progress.js +23 -0
  200. package/dist/components/Progress.js.map +1 -0
  201. package/dist/components/QRCode.d.ts +19 -0
  202. package/dist/components/QRCode.js +75 -0
  203. package/dist/components/QRCode.js.map +1 -0
  204. package/dist/components/RadialProgress.d.ts +10 -0
  205. package/dist/components/RadialProgress.js +48 -0
  206. package/dist/components/RadialProgress.js.map +1 -0
  207. package/dist/components/Radio.d.ts +26 -0
  208. package/dist/components/Radio.js +61 -0
  209. package/dist/components/Radio.js.map +1 -0
  210. package/dist/components/Range.d.ts +16 -0
  211. package/dist/components/Range.js +57 -0
  212. package/dist/components/Range.js.map +1 -0
  213. package/dist/components/Rating.d.ts +30 -0
  214. package/dist/components/Rating.js +127 -0
  215. package/dist/components/Rating.js.map +1 -0
  216. package/dist/components/Responsive.d.ts +18 -0
  217. package/dist/components/Responsive.js +17 -0
  218. package/dist/components/Responsive.js.map +1 -0
  219. package/dist/components/ResponsiveDrawer.d.ts +34 -0
  220. package/dist/components/ResponsiveDrawer.js +75 -0
  221. package/dist/components/ResponsiveDrawer.js.map +1 -0
  222. package/dist/components/Result.d.ts +12 -0
  223. package/dist/components/Result.js +110 -0
  224. package/dist/components/Result.js.map +1 -0
  225. package/dist/components/RichTextEditor.d.ts +32 -0
  226. package/dist/components/RichTextEditor.js +335 -0
  227. package/dist/components/RichTextEditor.js.map +1 -0
  228. package/dist/components/Segmented.d.ts +37 -0
  229. package/dist/components/Segmented.js +73 -0
  230. package/dist/components/Segmented.js.map +1 -0
  231. package/dist/components/Select.d.ts +18 -0
  232. package/dist/components/Select.js +78 -0
  233. package/dist/components/Select.js.map +1 -0
  234. package/dist/components/Skeleton.d.ts +9 -0
  235. package/dist/components/Skeleton.js +24 -0
  236. package/dist/components/Skeleton.js.map +1 -0
  237. package/dist/components/Space.d.ts +11 -0
  238. package/dist/components/Space.js +61 -0
  239. package/dist/components/Space.js.map +1 -0
  240. package/dist/components/Splitter.d.ts +29 -0
  241. package/dist/components/Splitter.js +257 -0
  242. package/dist/components/Splitter.js.map +1 -0
  243. package/dist/components/Stat.d.ts +18 -0
  244. package/dist/components/Stat.js +26 -0
  245. package/dist/components/Stat.js.map +1 -0
  246. package/dist/components/Status.d.ts +18 -0
  247. package/dist/components/Status.js +34 -0
  248. package/dist/components/Status.js.map +1 -0
  249. package/dist/components/Steps.d.ts +52 -0
  250. package/dist/components/Steps.js +97 -0
  251. package/dist/components/Steps.js.map +1 -0
  252. package/dist/components/Table.d.ts +105 -0
  253. package/dist/components/Table.js +637 -0
  254. package/dist/components/Table.js.map +1 -0
  255. package/dist/components/Tabs.d.ts +45 -0
  256. package/dist/components/Tabs.js +86 -0
  257. package/dist/components/Tabs.js.map +1 -0
  258. package/dist/components/Tag.d.ts +34 -0
  259. package/dist/components/Tag.js +210 -0
  260. package/dist/components/Tag.js.map +1 -0
  261. package/dist/components/TextRotate.d.ts +13 -0
  262. package/dist/components/TextRotate.js +26 -0
  263. package/dist/components/TextRotate.js.map +1 -0
  264. package/dist/components/Textarea.d.ts +9 -0
  265. package/dist/components/Textarea.js +44 -0
  266. package/dist/components/Textarea.js.map +1 -0
  267. package/dist/components/ThemeController.d.ts +28 -0
  268. package/dist/components/ThemeController.js +162 -0
  269. package/dist/components/ThemeController.js.map +1 -0
  270. package/dist/components/TimePicker.d.ts +20 -0
  271. package/dist/components/TimePicker.js +304 -0
  272. package/dist/components/TimePicker.js.map +1 -0
  273. package/dist/components/Timeline.d.ts +79 -0
  274. package/dist/components/Timeline.js +151 -0
  275. package/dist/components/Timeline.js.map +1 -0
  276. package/dist/components/Toggle.d.ts +7 -0
  277. package/dist/components/Toggle.js +39 -0
  278. package/dist/components/Toggle.js.map +1 -0
  279. package/dist/components/Tooltip.d.ts +9 -0
  280. package/dist/components/Tooltip.js +37 -0
  281. package/dist/components/Tooltip.js.map +1 -0
  282. package/dist/components/Tour.d.ts +123 -0
  283. package/dist/components/Tour.js +400 -0
  284. package/dist/components/Tour.js.map +1 -0
  285. package/dist/components/Transfer.d.ts +22 -0
  286. package/dist/components/Transfer.js +214 -0
  287. package/dist/components/Transfer.js.map +1 -0
  288. package/dist/components/Tree.d.ts +118 -0
  289. package/dist/components/Tree.js +444 -0
  290. package/dist/components/Tree.js.map +1 -0
  291. package/dist/components/TreeSelect.d.ts +84 -0
  292. package/dist/components/TreeSelect.js +755 -0
  293. package/dist/components/TreeSelect.js.map +1 -0
  294. package/dist/components/Typography.d.ts +53 -0
  295. package/dist/components/Typography.js +182 -0
  296. package/dist/components/Typography.js.map +1 -0
  297. package/dist/components/Upload.d.ts +38 -0
  298. package/dist/components/Upload.js +261 -0
  299. package/dist/components/Upload.js.map +1 -0
  300. package/dist/components/VirtualList.d.ts +29 -0
  301. package/dist/components/VirtualList.js +69 -0
  302. package/dist/components/VirtualList.js.map +1 -0
  303. package/dist/components/Watermark.d.ts +40 -0
  304. package/dist/components/Watermark.js +129 -0
  305. package/dist/components/Watermark.js.map +1 -0
  306. package/dist/components/WeekCalendar.d.ts +35 -0
  307. package/dist/components/WeekCalendar.js +204 -0
  308. package/dist/components/WeekCalendar.js.map +1 -0
  309. package/dist/components/Window.d.ts +7 -0
  310. package/dist/components/Window.js +10 -0
  311. package/dist/components/Window.js.map +1 -0
  312. package/dist/contexts/IconSizeContext.d.ts +2 -0
  313. package/dist/contexts/IconSizeContext.js +6 -0
  314. package/dist/contexts/IconSizeContext.js.map +1 -0
  315. package/dist/editor.d.ts +1 -0
  316. package/dist/editor.js +5 -0
  317. package/dist/editor.js.map +1 -0
  318. package/dist/hooks/useBreakpoint.d.ts +10 -0
  319. package/dist/hooks/useBreakpoint.js +36 -0
  320. package/dist/hooks/useBreakpoint.js.map +1 -0
  321. package/dist/hooks/useClickOutside.d.ts +17 -0
  322. package/dist/hooks/useClickOutside.js +18 -0
  323. package/dist/hooks/useClickOutside.js.map +1 -0
  324. package/dist/hooks/useClipboard.d.ts +20 -0
  325. package/dist/hooks/useClipboard.js +17 -0
  326. package/dist/hooks/useClipboard.js.map +1 -0
  327. package/dist/hooks/useDebounce.d.ts +18 -0
  328. package/dist/hooks/useDebounce.js +16 -0
  329. package/dist/hooks/useDebounce.js.map +1 -0
  330. package/dist/hooks/useDisclosure.d.ts +20 -0
  331. package/dist/hooks/useDisclosure.js +9 -0
  332. package/dist/hooks/useDisclosure.js.map +1 -0
  333. package/dist/hooks/useHover.d.ts +18 -0
  334. package/dist/hooks/useHover.js +16 -0
  335. package/dist/hooks/useHover.js.map +1 -0
  336. package/dist/hooks/useKeyPress.d.ts +40 -0
  337. package/dist/hooks/useKeyPress.js +34 -0
  338. package/dist/hooks/useKeyPress.js.map +1 -0
  339. package/dist/hooks/useLocalStorage.d.ts +12 -0
  340. package/dist/hooks/useLocalStorage.js +49 -0
  341. package/dist/hooks/useLocalStorage.js.map +1 -0
  342. package/dist/hooks/usePrevious.d.ts +15 -0
  343. package/dist/hooks/usePrevious.js +11 -0
  344. package/dist/hooks/usePrevious.js.map +1 -0
  345. package/dist/hooks/useWindowSize.d.ts +21 -0
  346. package/dist/hooks/useWindowSize.js +21 -0
  347. package/dist/hooks/useWindowSize.js.map +1 -0
  348. package/dist/index.d.ts +216 -0
  349. package/dist/index.js +256 -0
  350. package/dist/index.js.map +1 -0
  351. package/dist/locale/de-DE.d.ts +3 -0
  352. package/dist/locale/de-DE.js +100 -0
  353. package/dist/locale/de-DE.js.map +1 -0
  354. package/dist/locale/en-CA.d.ts +3 -0
  355. package/dist/locale/en-CA.js +11 -0
  356. package/dist/locale/en-CA.js.map +1 -0
  357. package/dist/locale/en-GB.d.ts +3 -0
  358. package/dist/locale/en-GB.js +11 -0
  359. package/dist/locale/en-GB.js.map +1 -0
  360. package/dist/locale/en-US.d.ts +3 -0
  361. package/dist/locale/en-US.js +100 -0
  362. package/dist/locale/en-US.js.map +1 -0
  363. package/dist/locale/es-ES.d.ts +3 -0
  364. package/dist/locale/es-ES.js +100 -0
  365. package/dist/locale/es-ES.js.map +1 -0
  366. package/dist/locale/fr-FR.d.ts +3 -0
  367. package/dist/locale/fr-FR.js +100 -0
  368. package/dist/locale/fr-FR.js.map +1 -0
  369. package/dist/locale/index.d.ts +107 -0
  370. package/dist/locale/ja-JP.d.ts +3 -0
  371. package/dist/locale/ja-JP.js +100 -0
  372. package/dist/locale/ja-JP.js.map +1 -0
  373. package/dist/locale/ko-KR.d.ts +3 -0
  374. package/dist/locale/ko-KR.js +100 -0
  375. package/dist/locale/ko-KR.js.map +1 -0
  376. package/dist/locale/pt-BR.d.ts +3 -0
  377. package/dist/locale/pt-BR.js +100 -0
  378. package/dist/locale/pt-BR.js.map +1 -0
  379. package/dist/locale/zh-CN.d.ts +3 -0
  380. package/dist/locale/zh-CN.js +100 -0
  381. package/dist/locale/zh-CN.js.map +1 -0
  382. package/dist/qrcode.d.ts +2 -0
  383. package/dist/qrcode.js +5 -0
  384. package/dist/qrcode.js.map +1 -0
  385. package/dist/virtuallist.d.ts +2 -0
  386. package/dist/virtuallist.js +5 -0
  387. package/dist/virtuallist.js.map +1 -0
  388. package/package.json +130 -0
@@ -0,0 +1,444 @@
1
+ import { jsx as k, jsxs as fe } from "react/jsx-runtime";
2
+ import ue, { forwardRef as Ke, useCallback as I, useMemo as U, useState as X, createContext as Te, useRef as Le, useEffect as Ee, useContext as Se } from "react";
3
+ const Ie = "d-checkbox", $e = "d-checkbox-xs", De = "d-checkbox-sm", Ae = "d-checkbox-lg", Me = "d-checkbox-xl", je = "d-checkbox-primary", Fe = "d-checkbox-secondary", Re = "d-checkbox-accent", _e = "d-checkbox-neutral", ze = "d-checkbox-info", Be = "d-checkbox-success", Xe = "d-checkbox-warning", Pe = "d-checkbox-error", Ve = "d-loading", We = "d-loading-spinner", qe = "d-loading-xs", ke = Te(null);
4
+ function He() {
5
+ const e = Se(ke);
6
+ if (!e)
7
+ throw new Error("Tree components must be used within a Tree");
8
+ return e;
9
+ }
10
+ function Oe(e) {
11
+ const a = [], r = (d) => {
12
+ d.forEach((h) => {
13
+ a.push(h.key), h.children && r(h.children);
14
+ });
15
+ };
16
+ return r(e), a;
17
+ }
18
+ function de(e) {
19
+ const a = [], r = (d) => {
20
+ d.children && d.children.forEach((h) => {
21
+ a.push(h.key), r(h);
22
+ });
23
+ };
24
+ return r(e), a;
25
+ }
26
+ function be(e) {
27
+ const a = /* @__PURE__ */ new Map(), r = (d, h) => {
28
+ d.forEach((f) => {
29
+ a.set(f.key, h), f.children && r(f.children, f.key);
30
+ });
31
+ };
32
+ return r(e, null), a;
33
+ }
34
+ function ye(e, a) {
35
+ for (const r of e) {
36
+ if (r.key === a) return r;
37
+ if (r.children) {
38
+ const d = ye(r.children, a);
39
+ if (d) return d;
40
+ }
41
+ }
42
+ return null;
43
+ }
44
+ function Ue(e, a) {
45
+ const r = [], d = (h) => {
46
+ h.forEach((f) => {
47
+ r.push(f), f.children && a.includes(f.key) && d(f.children);
48
+ });
49
+ };
50
+ return d(e), r;
51
+ }
52
+ function Ge(e, a) {
53
+ const r = be(e), d = [];
54
+ let h = r.get(a);
55
+ for (; h; )
56
+ d.push(h), h = r.get(h);
57
+ return d;
58
+ }
59
+ function pe({ node: e, level: a }) {
60
+ const {
61
+ checkable: r,
62
+ checkboxColor: d,
63
+ checkboxSize: h,
64
+ selectable: f,
65
+ showLine: G,
66
+ showIcon: L,
67
+ blockNode: J,
68
+ expandedKeys: E,
69
+ selectedKeys: $,
70
+ loadingKeys: Q,
71
+ switcherIcon: v,
72
+ titleRender: P,
73
+ filterTreeNode: S,
74
+ onToggle: K,
75
+ onSelect: D,
76
+ onCheck: A,
77
+ onRightClick: V,
78
+ getCheckedState: Y,
79
+ focusedKey: T,
80
+ setFocusedKey: w,
81
+ flattenedNodes: N,
82
+ baseTestId: Z
83
+ } = He(), M = Le(null), j = e.children && e.children.length > 0, p = e.isLeaf ?? !j, g = E.includes(e.key), y = $.includes(e.key), ee = Q.includes(e.key), F = T === e.key, { checked: R, indeterminate: _ } = Y(e), W = S ? S(e) : !1, C = e.disabled;
84
+ Ee(() => {
85
+ F && M.current && M.current.focus();
86
+ }, [F]);
87
+ const x = (s) => {
88
+ s.stopPropagation(), !p && !C && K(e.key, e);
89
+ }, te = (s) => {
90
+ f && e.selectable !== !1 && !C && D(e.key, e);
91
+ }, z = (s) => {
92
+ s.stopPropagation(), !C && !e.disableCheckbox && A(e.key, e);
93
+ }, ne = (s) => {
94
+ V && (s.preventDefault(), V({ event: s, node: e }));
95
+ }, se = (s) => {
96
+ const m = N.findIndex((i) => i.key === e.key);
97
+ switch (s.key) {
98
+ case "ArrowDown": {
99
+ s.preventDefault();
100
+ const i = N[m + 1];
101
+ i && w(i.key);
102
+ break;
103
+ }
104
+ case "ArrowUp": {
105
+ s.preventDefault();
106
+ const i = N[m - 1];
107
+ i && w(i.key);
108
+ break;
109
+ }
110
+ case "ArrowRight": {
111
+ if (s.preventDefault(), !p && !g)
112
+ K(e.key, e);
113
+ else if (j && g) {
114
+ const i = e.children[0];
115
+ w(i.key);
116
+ }
117
+ break;
118
+ }
119
+ case "ArrowLeft": {
120
+ s.preventDefault(), !p && g && K(e.key, e);
121
+ break;
122
+ }
123
+ case "Enter":
124
+ case " ": {
125
+ s.preventDefault(), r && e.checkable !== !1 ? A(e.key, e) : f && e.selectable !== !1 ? D(e.key, e) : p || K(e.key, e);
126
+ break;
127
+ }
128
+ case "Home": {
129
+ s.preventDefault();
130
+ const i = N[0];
131
+ i && w(i.key);
132
+ break;
133
+ }
134
+ case "End": {
135
+ s.preventDefault();
136
+ const i = N[N.length - 1];
137
+ i && w(i.key);
138
+ break;
139
+ }
140
+ }
141
+ }, ce = {
142
+ xs: $e,
143
+ sm: De,
144
+ md: "",
145
+ lg: Ae,
146
+ xl: Me
147
+ }, re = {
148
+ primary: je,
149
+ secondary: Fe,
150
+ accent: Re,
151
+ neutral: _e,
152
+ info: ze,
153
+ success: Be,
154
+ warning: Xe,
155
+ error: Pe
156
+ }, ie = ce[h], ae = re[d], le = () => ee ? /* @__PURE__ */ k("span", { className: `${Ve} ${We} ${qe}` }) : p ? /* @__PURE__ */ k("span", { className: "w-4 h-4" }) : v ? typeof v == "function" ? v(g) : v : /* @__PURE__ */ k(
157
+ "svg",
158
+ {
159
+ className: `w-4 h-4 transition-transform duration-200 ${g ? "rotate-90" : ""}`,
160
+ fill: "none",
161
+ viewBox: "0 0 24 24",
162
+ stroke: "currentColor",
163
+ "aria-hidden": "true",
164
+ children: /* @__PURE__ */ k("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })
165
+ }
166
+ ), B = () => P ? P(e) : e.title, q = y ? "selected" : g ? "expanded" : "collapsed";
167
+ return /* @__PURE__ */ fe(
168
+ "div",
169
+ {
170
+ className: "tree-node",
171
+ role: "treeitem",
172
+ "aria-expanded": p ? void 0 : g,
173
+ "aria-selected": y,
174
+ "aria-checked": r ? _ ? "mixed" : R : void 0,
175
+ "aria-disabled": C,
176
+ "aria-level": a + 1,
177
+ "data-testid": `${Z}-node-${e.key}`,
178
+ "data-state": q,
179
+ "data-key": e.key,
180
+ children: [
181
+ /* @__PURE__ */ fe(
182
+ "div",
183
+ {
184
+ ref: M,
185
+ className: [
186
+ "flex items-center py-1 px-1 rounded transition-colors outline-none",
187
+ "focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-1",
188
+ f && !C && "cursor-pointer hover:bg-base-200",
189
+ y && "bg-primary/10 text-primary",
190
+ C && "opacity-50 cursor-not-allowed",
191
+ W && "bg-warning/20",
192
+ J && "w-full"
193
+ ].filter(Boolean).join(" "),
194
+ style: { paddingLeft: `${a * 20}px` },
195
+ tabIndex: F ? 0 : -1,
196
+ onClick: te,
197
+ onContextMenu: ne,
198
+ onKeyDown: se,
199
+ onFocus: () => w(e.key),
200
+ children: [
201
+ /* @__PURE__ */ k(
202
+ "span",
203
+ {
204
+ className: [
205
+ "w-5 h-5 flex items-center justify-center flex-shrink-0",
206
+ !p && !C && "cursor-pointer hover:bg-base-300 rounded"
207
+ ].filter(Boolean).join(" "),
208
+ onClick: x,
209
+ "aria-hidden": "true",
210
+ children: le()
211
+ }
212
+ ),
213
+ r && e.checkable !== !1 && /* @__PURE__ */ k("span", { className: "mr-1 flex-shrink-0", onClick: z, children: /* @__PURE__ */ k(
214
+ "input",
215
+ {
216
+ type: "checkbox",
217
+ className: `${Ie} ${ie} ${ae}`,
218
+ checked: R,
219
+ ref: (s) => {
220
+ s && (s.indeterminate = _);
221
+ },
222
+ disabled: C || e.disableCheckbox,
223
+ onChange: z,
224
+ tabIndex: -1,
225
+ "aria-hidden": "true",
226
+ "data-state": _ ? "indeterminate" : R ? "checked" : "unchecked"
227
+ }
228
+ ) }),
229
+ L && e.icon && /* @__PURE__ */ k("span", { className: "mr-1 flex-shrink-0", "aria-hidden": "true", children: e.icon }),
230
+ /* @__PURE__ */ k("span", { className: "flex-1 truncate select-none", children: B() })
231
+ ]
232
+ }
233
+ ),
234
+ j && g && /* @__PURE__ */ k(
235
+ "div",
236
+ {
237
+ className: G ? "border-l border-base-300 ml-2.5" : "",
238
+ role: "group",
239
+ "aria-label": `${e.title} children`,
240
+ children: e.children.map((s) => /* @__PURE__ */ k(pe, { node: s, level: a + 1 }, s.key))
241
+ }
242
+ )
243
+ ]
244
+ }
245
+ );
246
+ }
247
+ function he(e) {
248
+ return null;
249
+ }
250
+ he.displayName = "Tree.Node";
251
+ function Je(e) {
252
+ return e.type === he || typeof e.type == "function" && e.type.displayName === "Tree.Node";
253
+ }
254
+ const et = Object.assign(
255
+ Ke(function({
256
+ treeData: a,
257
+ children: r,
258
+ checkable: d = !1,
259
+ checkboxColor: h = "primary",
260
+ checkboxSize: f = "sm",
261
+ selectable: G = !0,
262
+ multiple: L = !1,
263
+ defaultExpandAll: J = !1,
264
+ defaultExpandedKeys: E = [],
265
+ expandedKeys: $,
266
+ defaultSelectedKeys: Q = [],
267
+ selectedKeys: v,
268
+ defaultCheckedKeys: P = [],
269
+ checkedKeys: S,
270
+ onExpand: K,
271
+ onSelect: D,
272
+ onCheck: A,
273
+ showLine: V = !1,
274
+ showIcon: Y = !1,
275
+ checkStrictly: T = !1,
276
+ autoExpandParent: w = !0,
277
+ blockNode: N = !1,
278
+ switcherIcon: Z,
279
+ titleRender: M,
280
+ filterTreeNode: j,
281
+ loadData: p,
282
+ onRightClick: g,
283
+ fieldNames: y,
284
+ className: ee = "",
285
+ "data-testid": F,
286
+ ...R
287
+ }, _) {
288
+ const W = F ?? "tree", C = I((t, o, n) => {
289
+ }, []), x = U(() => {
290
+ if (a) {
291
+ if (y) {
292
+ const o = (n) => {
293
+ const c = y.key ? n[y.key] : n.key, l = y.title ? n[y.title] : n.title, u = y.children ? n[y.children] : n.children;
294
+ return {
295
+ ...n,
296
+ key: c,
297
+ title: l,
298
+ children: Array.isArray(u) ? u.map((b) => o(b)) : void 0
299
+ };
300
+ };
301
+ return a.map(o);
302
+ }
303
+ return a;
304
+ }
305
+ const t = (o) => {
306
+ const n = [];
307
+ return ue.Children.forEach(o, (c) => {
308
+ if (ue.isValidElement(c) && Je(c)) {
309
+ const l = c.props, u = c.key;
310
+ if (!u) {
311
+ console.warn("Tree.Node requires a key prop");
312
+ return;
313
+ }
314
+ const b = {
315
+ key: u,
316
+ title: l.title,
317
+ icon: l.icon,
318
+ disabled: l.disabled,
319
+ disableCheckbox: l.disableCheckbox,
320
+ selectable: l.selectable,
321
+ checkable: l.checkable,
322
+ isLeaf: l.isLeaf,
323
+ children: l.children ? t(l.children) : void 0
324
+ };
325
+ n.push(b);
326
+ }
327
+ }), n;
328
+ };
329
+ return t(r);
330
+ }, [a, r, y]), [te, z] = X([]), ne = U(() => {
331
+ if (J)
332
+ return Oe(x);
333
+ if (w && E.length > 0) {
334
+ const t = new Set(E);
335
+ return E.forEach((o) => {
336
+ Ge(x, o).forEach((n) => t.add(n));
337
+ }), Array.from(t);
338
+ }
339
+ return E;
340
+ }, []), [se, ce] = X(ne), [re, ie] = X(Q), [ae, le] = X(P), [B, q] = X(null), s = $ ?? se, m = v ?? re, i = S ?? ae, oe = U(() => be(x), [x]), H = U(() => Ue(x, s), [x, s]), xe = I(
341
+ (t) => {
342
+ if (T)
343
+ return { checked: i.includes(t.key), indeterminate: !1 };
344
+ if (!t.children || t.children.length === 0)
345
+ return { checked: i.includes(t.key), indeterminate: !1 };
346
+ const o = de(t), n = o.filter((c) => i.includes(c));
347
+ return n.length === 0 ? { checked: i.includes(t.key), indeterminate: !1 } : n.length === o.length ? { checked: !0, indeterminate: !1 } : { checked: !1, indeterminate: !0 };
348
+ },
349
+ [i, T]
350
+ ), ge = I(
351
+ async (t, o) => {
352
+ const n = s.includes(t);
353
+ if (p && !n && !o.isLeaf && (!o.children || o.children.length === 0)) {
354
+ z((l) => [...l, t]);
355
+ try {
356
+ await p(o);
357
+ } finally {
358
+ z((l) => l.filter((u) => u !== t));
359
+ }
360
+ }
361
+ const c = n ? s.filter((l) => l !== t) : [...s, t];
362
+ $ === void 0 && ce(c), K?.(c, { node: o, expanded: !n });
363
+ },
364
+ [s, $, K, p]
365
+ ), Ce = I(
366
+ (t, o) => {
367
+ let n;
368
+ L ? m.includes(t) ? n = m.filter((c) => c !== t) : n = [...m, t] : n = m.includes(t) ? [] : [t], v === void 0 && ie(n), D?.(n, { node: o, selected: n.includes(t) });
369
+ },
370
+ [m, L, v, D]
371
+ ), me = I(
372
+ (t, o) => {
373
+ const n = i.includes(t);
374
+ let c = [...i];
375
+ if (T)
376
+ n ? c = c.filter((l) => l !== t) : c.push(t);
377
+ else {
378
+ const l = de(o);
379
+ n ? c = c.filter((b) => b !== t && !l.includes(b)) : (c.push(t), l.forEach((b) => {
380
+ c.includes(b) || c.push(b);
381
+ }));
382
+ let u = oe.get(t) ?? null;
383
+ for (; u; ) {
384
+ const b = ye(x, u);
385
+ b && b.children && (b.children.every(
386
+ (O) => c.includes(O.key) || de(O).every((Ne) => c.includes(Ne))
387
+ ) ? c.includes(u) || c.push(u) : c = c.filter((O) => O !== u)), u = oe.get(u) ?? null;
388
+ }
389
+ }
390
+ S === void 0 && le(c), A?.(c, { node: o, checked: !n });
391
+ },
392
+ [i, S, A, oe, x, T]
393
+ ), ve = I(() => {
394
+ !B && H.length > 0 && q(H[0].key);
395
+ }, [B, H]), we = {
396
+ checkable: d,
397
+ checkboxColor: h,
398
+ checkboxSize: f,
399
+ selectable: G,
400
+ multiple: L,
401
+ showLine: V,
402
+ showIcon: Y,
403
+ blockNode: N,
404
+ checkStrictly: T,
405
+ expandedKeys: s,
406
+ selectedKeys: m,
407
+ checkedKeys: i,
408
+ loadingKeys: te,
409
+ switcherIcon: Z,
410
+ titleRender: M,
411
+ filterTreeNode: j,
412
+ onToggle: ge,
413
+ onSelect: Ce,
414
+ onCheck: me,
415
+ onRightClick: g,
416
+ getCheckedState: xe,
417
+ focusedKey: B,
418
+ setFocusedKey: q,
419
+ flattenedNodes: H,
420
+ registerNode: C,
421
+ baseTestId: W
422
+ };
423
+ return /* @__PURE__ */ k(ke.Provider, { value: we, children: /* @__PURE__ */ k(
424
+ "div",
425
+ {
426
+ ref: _,
427
+ className: `tree ${ee}`,
428
+ role: "tree",
429
+ "aria-multiselectable": L,
430
+ "data-testid": W,
431
+ onFocus: ve,
432
+ ...R,
433
+ children: x.map((t) => /* @__PURE__ */ k(pe, { node: t, level: 0 }, t.key))
434
+ }
435
+ ) });
436
+ }),
437
+ {
438
+ Node: he
439
+ }
440
+ );
441
+ export {
442
+ et as Tree
443
+ };
444
+ //# sourceMappingURL=Tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tree.js","sources":["../../src/components/Tree.tsx"],"sourcesContent":["import React, {\n useState,\n useCallback,\n useMemo,\n useRef,\n useContext,\n createContext,\n forwardRef,\n useEffect,\n} from 'react'\n\n// DaisyUI classes\nconst dCheckbox = 'd-checkbox'\nconst dCheckboxXs = 'd-checkbox-xs'\nconst dCheckboxSm = 'd-checkbox-sm'\nconst dCheckboxLg = 'd-checkbox-lg'\nconst dCheckboxXl = 'd-checkbox-xl'\nconst dCheckboxPrimary = 'd-checkbox-primary'\nconst dCheckboxSecondary = 'd-checkbox-secondary'\nconst dCheckboxAccent = 'd-checkbox-accent'\nconst dCheckboxNeutral = 'd-checkbox-neutral'\nconst dCheckboxInfo = 'd-checkbox-info'\nconst dCheckboxSuccess = 'd-checkbox-success'\nconst dCheckboxWarning = 'd-checkbox-warning'\nconst dCheckboxError = 'd-checkbox-error'\nconst dLoading = 'd-loading'\nconst dLoadingSpinner = 'd-loading-spinner'\nconst dLoadingXs = 'd-loading-xs'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type TreeColor =\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'neutral'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n\nexport type TreeSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface TreeDataNode {\n key: string\n title: React.ReactNode\n children?: TreeDataNode[]\n disabled?: boolean\n disableCheckbox?: boolean\n selectable?: boolean\n checkable?: boolean\n icon?: React.ReactNode\n isLeaf?: boolean\n}\n\nexport interface TreeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n /** Tree data structure (alternative to compound pattern) */\n treeData?: TreeDataNode[] | undefined\n /** Children for compound pattern */\n children?: React.ReactNode\n /** Show checkbox for each node */\n checkable?: boolean\n /** Checkbox color (DaisyUI) */\n checkboxColor?: TreeColor\n /** Checkbox size (DaisyUI) */\n checkboxSize?: TreeSize\n /** Enable node selection */\n selectable?: boolean\n /** Allow multiple selection */\n multiple?: boolean\n /** Expand all nodes by default */\n defaultExpandAll?: boolean\n /** Default expanded keys */\n defaultExpandedKeys?: string[]\n /** Controlled expanded keys */\n expandedKeys?: string[]\n /** Default selected keys */\n defaultSelectedKeys?: string[]\n /** Controlled selected keys */\n selectedKeys?: string[]\n /** Default checked keys */\n defaultCheckedKeys?: string[]\n /** Controlled checked keys */\n checkedKeys?: string[]\n /** Callback when node is expanded */\n onExpand?: (expandedKeys: string[], info: { node: TreeDataNode; expanded: boolean }) => void\n /** Callback when node is selected */\n onSelect?: (selectedKeys: string[], info: { node: TreeDataNode; selected: boolean }) => void\n /** Callback when node is checked */\n onCheck?: (checkedKeys: string[], info: { node: TreeDataNode; checked: boolean }) => void\n /** Show connecting lines */\n showLine?: boolean\n /** Show node icons */\n showIcon?: boolean\n /** Decouple parent-child checkbox relationship */\n checkStrictly?: boolean\n /** Auto expand parent nodes when expandedKeys change */\n autoExpandParent?: boolean\n /** Make node fill remaining horizontal space */\n blockNode?: boolean\n /** Custom expand/collapse icon */\n switcherIcon?: React.ReactNode | ((expanded: boolean) => React.ReactNode)\n /** Custom title render function */\n titleRender?: (node: TreeDataNode) => React.ReactNode\n /** Filter function for highlighting nodes */\n filterTreeNode?: (node: TreeDataNode) => boolean\n /** Async data loading */\n loadData?: (node: TreeDataNode) => Promise<void>\n /** Right click handler */\n onRightClick?: (info: { event: React.MouseEvent; node: TreeDataNode }) => void\n /** Custom field names for data mapping */\n fieldNames?: { key?: string; title?: string; children?: string }\n /** Test ID for the component */\n 'data-testid'?: string\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\ninterface TreeContextValue {\n checkable: boolean\n checkboxColor: TreeColor\n checkboxSize: TreeSize\n selectable: boolean\n multiple: boolean\n showLine: boolean\n showIcon: boolean\n blockNode: boolean\n checkStrictly: boolean\n expandedKeys: string[]\n selectedKeys: string[]\n checkedKeys: string[]\n loadingKeys: string[]\n switcherIcon?: React.ReactNode | ((expanded: boolean) => React.ReactNode)\n titleRender?: (node: TreeDataNode) => React.ReactNode\n filterTreeNode?: (node: TreeDataNode) => boolean\n onToggle: (key: string, node: TreeDataNode) => void\n onSelect: (key: string, node: TreeDataNode) => void\n onCheck: (key: string, node: TreeDataNode) => void\n onRightClick?: (info: { event: React.MouseEvent; node: TreeDataNode }) => void\n getCheckedState: (node: TreeDataNode) => { checked: boolean; indeterminate: boolean }\n focusedKey: string | null\n setFocusedKey: (key: string | null) => void\n flattenedNodes: TreeDataNode[]\n registerNode: (key: string, node: TreeDataNode, level: number) => void\n baseTestId: string\n}\n\nconst TreeContext = createContext<TreeContextValue | null>(null)\n\nfunction useTreeContext() {\n const context = useContext(TreeContext)\n if (!context) {\n throw new Error('Tree components must be used within a Tree')\n }\n return context\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nfunction getAllKeys(data: TreeDataNode[]): string[] {\n const keys: string[] = []\n const traverse = (nodes: TreeDataNode[]) => {\n nodes.forEach((node) => {\n keys.push(node.key)\n if (node.children) {\n traverse(node.children)\n }\n })\n }\n traverse(data)\n return keys\n}\n\nfunction getDescendantKeys(node: TreeDataNode): string[] {\n const keys: string[] = []\n const traverse = (n: TreeDataNode) => {\n if (n.children) {\n n.children.forEach((child) => {\n keys.push(child.key)\n traverse(child)\n })\n }\n }\n traverse(node)\n return keys\n}\n\nfunction getParentMap(data: TreeDataNode[]): Map<string, string | null> {\n const map = new Map<string, string | null>()\n const traverse = (nodes: TreeDataNode[], parentKey: string | null) => {\n nodes.forEach((node) => {\n map.set(node.key, parentKey)\n if (node.children) {\n traverse(node.children, node.key)\n }\n })\n }\n traverse(data, null)\n return map\n}\n\nfunction findNode(data: TreeDataNode[], key: string): TreeDataNode | null {\n for (const node of data) {\n if (node.key === key) return node\n if (node.children) {\n const found = findNode(node.children, key)\n if (found) return found\n }\n }\n return null\n}\n\nfunction flattenTree(data: TreeDataNode[], expandedKeys: string[]): TreeDataNode[] {\n const result: TreeDataNode[] = []\n const traverse = (nodes: TreeDataNode[]) => {\n nodes.forEach((node) => {\n result.push(node)\n if (node.children && expandedKeys.includes(node.key)) {\n traverse(node.children)\n }\n })\n }\n traverse(data)\n return result\n}\n\nfunction getAncestorKeys(data: TreeDataNode[], key: string): string[] {\n const parentMap = getParentMap(data)\n const ancestors: string[] = []\n let currentKey: string | null | undefined = parentMap.get(key)\n while (currentKey) {\n ancestors.push(currentKey)\n currentKey = parentMap.get(currentKey)\n }\n return ancestors\n}\n\n// ============================================================================\n// TreeNode Component\n// ============================================================================\n\ninterface TreeNodeInternalProps {\n node: TreeDataNode\n level: number\n}\n\nfunction TreeNodeInternal({ node, level }: TreeNodeInternalProps) {\n const {\n checkable,\n checkboxColor,\n checkboxSize,\n selectable,\n showLine,\n showIcon,\n blockNode,\n expandedKeys,\n selectedKeys,\n loadingKeys,\n switcherIcon,\n titleRender,\n filterTreeNode,\n onToggle,\n onSelect,\n onCheck,\n onRightClick,\n getCheckedState,\n focusedKey,\n setFocusedKey,\n flattenedNodes,\n baseTestId,\n } = useTreeContext()\n\n const nodeRef = useRef<HTMLDivElement>(null)\n const hasChildren = node.children && node.children.length > 0\n const isLeaf = node.isLeaf ?? !hasChildren\n const isExpanded = expandedKeys.includes(node.key)\n const isSelected = selectedKeys.includes(node.key)\n const isLoading = loadingKeys.includes(node.key)\n const isFocused = focusedKey === node.key\n const { checked, indeterminate } = getCheckedState(node)\n const isFiltered = filterTreeNode ? filterTreeNode(node) : false\n const isDisabled = node.disabled\n\n // Focus management\n useEffect(() => {\n if (isFocused && nodeRef.current) {\n nodeRef.current.focus()\n }\n }, [isFocused])\n\n const handleToggle = (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation()\n if (!isLeaf && !isDisabled) {\n onToggle(node.key, node)\n }\n }\n\n const handleSelect = (_e: React.MouseEvent | React.KeyboardEvent) => {\n if (selectable && node.selectable !== false && !isDisabled) {\n onSelect(node.key, node)\n }\n }\n\n const handleCheck = (e: React.MouseEvent | React.ChangeEvent) => {\n e.stopPropagation()\n if (!isDisabled && !node.disableCheckbox) {\n onCheck(node.key, node)\n }\n }\n\n const handleContextMenu = (e: React.MouseEvent) => {\n if (onRightClick) {\n e.preventDefault()\n onRightClick({ event: e, node })\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const currentIndex = flattenedNodes.findIndex((n) => n.key === node.key)\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n const nextNode = flattenedNodes[currentIndex + 1]\n if (nextNode) {\n setFocusedKey(nextNode.key)\n }\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n const prevNode = flattenedNodes[currentIndex - 1]\n if (prevNode) {\n setFocusedKey(prevNode.key)\n }\n break\n }\n case 'ArrowRight': {\n e.preventDefault()\n if (!isLeaf && !isExpanded) {\n onToggle(node.key, node)\n } else if (hasChildren && isExpanded) {\n const firstChild = node.children![0]\n setFocusedKey(firstChild.key)\n }\n break\n }\n case 'ArrowLeft': {\n e.preventDefault()\n if (!isLeaf && isExpanded) {\n onToggle(node.key, node)\n }\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n if (checkable && node.checkable !== false) {\n onCheck(node.key, node)\n } else if (selectable && node.selectable !== false) {\n onSelect(node.key, node)\n } else if (!isLeaf) {\n onToggle(node.key, node)\n }\n break\n }\n case 'Home': {\n e.preventDefault()\n const firstNode = flattenedNodes[0]\n if (firstNode) {\n setFocusedKey(firstNode.key)\n }\n break\n }\n case 'End': {\n e.preventDefault()\n const lastNode = flattenedNodes[flattenedNodes.length - 1]\n if (lastNode) {\n setFocusedKey(lastNode.key)\n }\n break\n }\n }\n }\n\n // Checkbox classes - must use static strings for Tailwind JIT\n const checkboxSizeClasses: Record<TreeSize, string> = {\n xs: dCheckboxXs,\n sm: dCheckboxSm,\n md: '',\n lg: dCheckboxLg,\n xl: dCheckboxXl,\n }\n const checkboxColorClasses: Record<TreeColor, string> = {\n primary: dCheckboxPrimary,\n secondary: dCheckboxSecondary,\n accent: dCheckboxAccent,\n neutral: dCheckboxNeutral,\n info: dCheckboxInfo,\n success: dCheckboxSuccess,\n warning: dCheckboxWarning,\n error: dCheckboxError,\n }\n const checkboxSizeClass = checkboxSizeClasses[checkboxSize]\n const checkboxColorClass = checkboxColorClasses[checkboxColor]\n\n // Render switcher icon\n const renderSwitcher = () => {\n if (isLoading) {\n return <span className={`${dLoading} ${dLoadingSpinner} ${dLoadingXs}`} />\n }\n\n if (isLeaf) {\n return <span className=\"w-4 h-4\" />\n }\n\n if (switcherIcon) {\n return typeof switcherIcon === 'function' ? switcherIcon(isExpanded) : switcherIcon\n }\n\n return (\n <svg\n className={`w-4 h-4 transition-transform duration-200 ${isExpanded ? 'rotate-90' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n }\n\n // Render title\n const renderTitle = () => {\n if (titleRender) {\n return titleRender(node)\n }\n return node.title\n }\n\n const nodeState = isSelected ? 'selected' : isExpanded ? 'expanded' : 'collapsed'\n\n return (\n <div\n className=\"tree-node\"\n role=\"treeitem\"\n aria-expanded={!isLeaf ? isExpanded : undefined}\n aria-selected={isSelected}\n aria-checked={checkable ? (indeterminate ? 'mixed' : checked) : undefined}\n aria-disabled={isDisabled}\n aria-level={level + 1}\n data-testid={`${baseTestId}-node-${node.key}`}\n data-state={nodeState}\n data-key={node.key}\n >\n <div\n ref={nodeRef}\n className={[\n 'flex items-center py-1 px-1 rounded transition-colors outline-none',\n 'focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-1',\n selectable && !isDisabled && 'cursor-pointer hover:bg-base-200',\n isSelected && 'bg-primary/10 text-primary',\n isDisabled && 'opacity-50 cursor-not-allowed',\n isFiltered && 'bg-warning/20',\n blockNode && 'w-full',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ paddingLeft: `${level * 20}px` }}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleSelect}\n onContextMenu={handleContextMenu}\n onKeyDown={handleKeyDown}\n onFocus={() => setFocusedKey(node.key)}\n >\n {/* Expand/Collapse icon */}\n <span\n className={[\n 'w-5 h-5 flex items-center justify-center flex-shrink-0',\n !isLeaf && !isDisabled && 'cursor-pointer hover:bg-base-300 rounded',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={handleToggle}\n aria-hidden=\"true\"\n >\n {renderSwitcher()}\n </span>\n\n {/* Checkbox */}\n {checkable && node.checkable !== false && (\n <span className=\"mr-1 flex-shrink-0\" onClick={handleCheck}>\n <input\n type=\"checkbox\"\n className={`${dCheckbox} ${checkboxSizeClass} ${checkboxColorClass}`}\n checked={checked}\n ref={(el) => {\n if (el) el.indeterminate = indeterminate\n }}\n disabled={isDisabled || node.disableCheckbox}\n onChange={handleCheck}\n tabIndex={-1}\n aria-hidden=\"true\"\n data-state={indeterminate ? 'indeterminate' : checked ? 'checked' : 'unchecked'}\n />\n </span>\n )}\n\n {/* Custom icon */}\n {showIcon && node.icon && (\n <span className=\"mr-1 flex-shrink-0\" aria-hidden=\"true\">\n {node.icon}\n </span>\n )}\n\n {/* Title */}\n <span className=\"flex-1 truncate select-none\">{renderTitle()}</span>\n </div>\n\n {/* Children */}\n {hasChildren && isExpanded && (\n <div\n className={showLine ? 'border-l border-base-300 ml-2.5' : ''}\n role=\"group\"\n aria-label={`${node.title} children`}\n >\n {node.children!.map((child) => (\n <TreeNodeInternal key={child.key} node={child} level={level + 1} />\n ))}\n </div>\n )}\n </div>\n )\n}\n\n// ============================================================================\n// Tree.Node Component (Compound Pattern)\n// ============================================================================\n\nexport interface TreeNodeProps {\n /** Unique key for the node (uses React's key prop) */\n key: string\n /** Display title */\n title: React.ReactNode\n /** Custom icon */\n icon?: React.ReactNode\n /** Disable the node */\n disabled?: boolean\n /** Disable checkbox for this node */\n disableCheckbox?: boolean\n /** Whether node can be selected */\n selectable?: boolean\n /** Whether node shows checkbox */\n checkable?: boolean\n /** Force node to be a leaf */\n isLeaf?: boolean\n /** Child nodes */\n children?: React.ReactNode\n}\n\nfunction TreeNode(_props: TreeNodeProps): null {\n // The actual rendering is handled by the Tree component via buildTree\n return null\n}\n\n// Mark the component for identification after bundling\nTreeNode.displayName = 'Tree.Node'\n\nfunction isTreeNode(element: React.ReactElement): boolean {\n return (\n element.type === TreeNode ||\n (typeof element.type === 'function' &&\n (element.type as { displayName?: string }).displayName === 'Tree.Node')\n )\n}\n\n// ============================================================================\n// Main Tree Component\n// ============================================================================\n\nexport const Tree = Object.assign(\n forwardRef<HTMLDivElement, TreeProps>(function Tree(\n {\n treeData: treeDataProp,\n children,\n checkable = false,\n checkboxColor = 'primary',\n checkboxSize = 'sm',\n selectable = true,\n multiple = false,\n defaultExpandAll = false,\n defaultExpandedKeys = [],\n expandedKeys: controlledExpandedKeys,\n defaultSelectedKeys = [],\n selectedKeys: controlledSelectedKeys,\n defaultCheckedKeys = [],\n checkedKeys: controlledCheckedKeys,\n onExpand,\n onSelect,\n onCheck,\n showLine = false,\n showIcon = false,\n checkStrictly = false,\n autoExpandParent = true,\n blockNode = false,\n switcherIcon,\n titleRender,\n filterTreeNode,\n loadData,\n onRightClick,\n fieldNames,\n className = '',\n 'data-testid': testId,\n ...rest\n },\n ref\n ) {\n const baseTestId = testId ?? 'tree'\n // Handle compound pattern: collect nodes from children\n const registerNode = useCallback((_key: string, _node: TreeDataNode, _level: number) => {\n // Registration is handled by the buildTree function parsing children\n }, [])\n\n // Build tree data from compound children or use treeData prop\n const treeData = useMemo(() => {\n if (treeDataProp) {\n // Apply fieldNames mapping if provided\n if (fieldNames) {\n const mapNode = (node: Record<string, unknown>): TreeDataNode => {\n const key = fieldNames.key ? (node[fieldNames.key] as string) : (node.key as string)\n const title = fieldNames.title ? node[fieldNames.title] : node.title\n const children = fieldNames.children ? node[fieldNames.children] : node.children\n\n return {\n ...node,\n key,\n title: title as React.ReactNode,\n children: Array.isArray(children)\n ? children.map((child) => mapNode(child as Record<string, unknown>))\n : undefined,\n } as TreeDataNode\n }\n return (treeDataProp as unknown as Record<string, unknown>[]).map(mapNode)\n }\n return treeDataProp\n }\n\n // Build from compound pattern\n const buildTree = (nodes: React.ReactNode): TreeDataNode[] => {\n const result: TreeDataNode[] = []\n React.Children.forEach(nodes, (child) => {\n if (React.isValidElement(child) && isTreeNode(child)) {\n const props = child.props as Omit<TreeNodeProps, 'key'>\n // React's key is accessed via child.key, not child.props.key\n const key = child.key as string\n if (!key) {\n console.warn('Tree.Node requires a key prop')\n return\n }\n const node: TreeDataNode = {\n key,\n title: props.title,\n icon: props.icon,\n disabled: props.disabled,\n disableCheckbox: props.disableCheckbox,\n selectable: props.selectable,\n checkable: props.checkable,\n isLeaf: props.isLeaf,\n children: props.children ? buildTree(props.children) : undefined,\n }\n result.push(node)\n }\n })\n return result\n }\n\n return buildTree(children)\n }, [treeDataProp, children, fieldNames])\n\n // Loading state for async data\n const [loadingKeys, setLoadingKeys] = useState<string[]>([])\n\n // Initialize expanded keys\n const initialExpandedKeys = useMemo(() => {\n if (defaultExpandAll) {\n return getAllKeys(treeData)\n }\n if (autoExpandParent && defaultExpandedKeys.length > 0) {\n const allKeys = new Set(defaultExpandedKeys)\n defaultExpandedKeys.forEach((key) => {\n getAncestorKeys(treeData, key).forEach((k) => allKeys.add(k))\n })\n return Array.from(allKeys)\n }\n return defaultExpandedKeys\n }, [])\n\n const [internalExpandedKeys, setInternalExpandedKeys] = useState<string[]>(initialExpandedKeys)\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<string[]>(defaultSelectedKeys)\n const [internalCheckedKeys, setInternalCheckedKeys] = useState<string[]>(defaultCheckedKeys)\n const [focusedKey, setFocusedKey] = useState<string | null>(null)\n\n const expandedKeys = controlledExpandedKeys ?? internalExpandedKeys\n const selectedKeys = controlledSelectedKeys ?? internalSelectedKeys\n const checkedKeys = controlledCheckedKeys ?? internalCheckedKeys\n\n const parentMap = useMemo(() => getParentMap(treeData), [treeData])\n\n // Flatten visible nodes for keyboard navigation\n const flattenedNodes = useMemo(() => flattenTree(treeData, expandedKeys), [treeData, expandedKeys])\n\n // Calculate checked state for each node\n const getCheckedState = useCallback(\n (node: TreeDataNode): { checked: boolean; indeterminate: boolean } => {\n if (checkStrictly) {\n return { checked: checkedKeys.includes(node.key), indeterminate: false }\n }\n\n if (!node.children || node.children.length === 0) {\n return { checked: checkedKeys.includes(node.key), indeterminate: false }\n }\n\n const descendantKeys = getDescendantKeys(node)\n const checkedDescendants = descendantKeys.filter((k) => checkedKeys.includes(k))\n\n if (checkedDescendants.length === 0) {\n return { checked: checkedKeys.includes(node.key), indeterminate: false }\n }\n\n if (checkedDescendants.length === descendantKeys.length) {\n return { checked: true, indeterminate: false }\n }\n\n return { checked: false, indeterminate: true }\n },\n [checkedKeys, checkStrictly]\n )\n\n const handleToggle = useCallback(\n async (key: string, node: TreeDataNode) => {\n const isExpanded = expandedKeys.includes(key)\n\n // Handle async loading\n if (loadData && !isExpanded && !node.isLeaf && (!node.children || node.children.length === 0)) {\n setLoadingKeys((prev) => [...prev, key])\n try {\n await loadData(node)\n } finally {\n setLoadingKeys((prev) => prev.filter((k) => k !== key))\n }\n }\n\n const newExpandedKeys = isExpanded\n ? expandedKeys.filter((k) => k !== key)\n : [...expandedKeys, key]\n\n if (controlledExpandedKeys === undefined) {\n setInternalExpandedKeys(newExpandedKeys)\n }\n\n onExpand?.(newExpandedKeys, { node, expanded: !isExpanded })\n },\n [expandedKeys, controlledExpandedKeys, onExpand, loadData]\n )\n\n const handleSelect = useCallback(\n (key: string, node: TreeDataNode) => {\n let newSelectedKeys: string[]\n\n if (multiple) {\n if (selectedKeys.includes(key)) {\n newSelectedKeys = selectedKeys.filter((k) => k !== key)\n } else {\n newSelectedKeys = [...selectedKeys, key]\n }\n } else {\n newSelectedKeys = selectedKeys.includes(key) ? [] : [key]\n }\n\n if (controlledSelectedKeys === undefined) {\n setInternalSelectedKeys(newSelectedKeys)\n }\n\n onSelect?.(newSelectedKeys, { node, selected: newSelectedKeys.includes(key) })\n },\n [selectedKeys, multiple, controlledSelectedKeys, onSelect]\n )\n\n const handleCheck = useCallback(\n (key: string, node: TreeDataNode) => {\n const isChecked = checkedKeys.includes(key)\n let newCheckedKeys = [...checkedKeys]\n\n if (checkStrictly) {\n // Simple toggle without parent-child relationship\n if (isChecked) {\n newCheckedKeys = newCheckedKeys.filter((k) => k !== key)\n } else {\n newCheckedKeys.push(key)\n }\n } else {\n // Get all descendant keys\n const descendantKeys = getDescendantKeys(node)\n\n if (isChecked) {\n // Uncheck this node and all descendants\n newCheckedKeys = newCheckedKeys.filter((k) => k !== key && !descendantKeys.includes(k))\n } else {\n // Check this node and all descendants\n newCheckedKeys.push(key)\n descendantKeys.forEach((dk) => {\n if (!newCheckedKeys.includes(dk)) {\n newCheckedKeys.push(dk)\n }\n })\n }\n\n // Update parent states\n let currentKey: string | null = parentMap.get(key) ?? null\n while (currentKey) {\n const parentNode = findNode(treeData, currentKey)\n if (parentNode && parentNode.children) {\n const allChildrenChecked = parentNode.children.every(\n (child) =>\n newCheckedKeys.includes(child.key) ||\n getDescendantKeys(child).every((dk) => newCheckedKeys.includes(dk))\n )\n\n if (allChildrenChecked) {\n if (!newCheckedKeys.includes(currentKey)) {\n newCheckedKeys.push(currentKey)\n }\n } else {\n newCheckedKeys = newCheckedKeys.filter((k) => k !== currentKey)\n }\n }\n currentKey = parentMap.get(currentKey) ?? null\n }\n }\n\n if (controlledCheckedKeys === undefined) {\n setInternalCheckedKeys(newCheckedKeys)\n }\n\n onCheck?.(newCheckedKeys, { node, checked: !isChecked })\n },\n [checkedKeys, controlledCheckedKeys, onCheck, parentMap, treeData, checkStrictly]\n )\n\n // Handle initial focus\n const handleTreeFocus = useCallback(() => {\n if (!focusedKey && flattenedNodes.length > 0) {\n setFocusedKey(flattenedNodes[0].key)\n }\n }, [focusedKey, flattenedNodes])\n\n const contextValue: TreeContextValue = {\n checkable,\n checkboxColor,\n checkboxSize,\n selectable,\n multiple,\n showLine,\n showIcon,\n blockNode,\n checkStrictly,\n expandedKeys,\n selectedKeys,\n checkedKeys,\n loadingKeys,\n switcherIcon,\n titleRender,\n filterTreeNode,\n onToggle: handleToggle,\n onSelect: handleSelect,\n onCheck: handleCheck,\n onRightClick,\n getCheckedState,\n focusedKey,\n setFocusedKey,\n flattenedNodes,\n registerNode,\n baseTestId,\n }\n\n return (\n <TreeContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={`tree ${className}`}\n role=\"tree\"\n aria-multiselectable={multiple}\n data-testid={baseTestId}\n onFocus={handleTreeFocus}\n {...rest}\n >\n {treeData.map((node) => (\n <TreeNodeInternal key={node.key} node={node} level={0} />\n ))}\n </div>\n </TreeContext.Provider>\n )\n }),\n {\n Node: TreeNode,\n }\n)\n"],"names":["dCheckbox","dCheckboxXs","dCheckboxSm","dCheckboxLg","dCheckboxXl","dCheckboxPrimary","dCheckboxSecondary","dCheckboxAccent","dCheckboxNeutral","dCheckboxInfo","dCheckboxSuccess","dCheckboxWarning","dCheckboxError","dLoading","dLoadingSpinner","dLoadingXs","TreeContext","createContext","useTreeContext","context","useContext","getAllKeys","data","keys","traverse","nodes","node","getDescendantKeys","n","child","getParentMap","map","parentKey","findNode","key","found","flattenTree","expandedKeys","result","getAncestorKeys","parentMap","ancestors","currentKey","TreeNodeInternal","level","checkable","checkboxColor","checkboxSize","selectable","showLine","showIcon","blockNode","selectedKeys","loadingKeys","switcherIcon","titleRender","filterTreeNode","onToggle","onSelect","onCheck","onRightClick","getCheckedState","focusedKey","setFocusedKey","flattenedNodes","baseTestId","nodeRef","useRef","hasChildren","isLeaf","isExpanded","isSelected","isLoading","isFocused","checked","indeterminate","isFiltered","isDisabled","useEffect","handleToggle","e","handleSelect","_e","handleCheck","handleContextMenu","handleKeyDown","currentIndex","nextNode","prevNode","firstChild","firstNode","lastNode","checkboxSizeClasses","checkboxColorClasses","checkboxSizeClass","checkboxColorClass","renderSwitcher","jsx","renderTitle","nodeState","jsxs","el","TreeNode","_props","isTreeNode","element","Tree","forwardRef","treeDataProp","children","multiple","defaultExpandAll","defaultExpandedKeys","controlledExpandedKeys","defaultSelectedKeys","controlledSelectedKeys","defaultCheckedKeys","controlledCheckedKeys","onExpand","checkStrictly","autoExpandParent","loadData","fieldNames","className","testId","rest","ref","registerNode","useCallback","_key","_node","_level","treeData","useMemo","mapNode","title","buildTree","React","props","setLoadingKeys","useState","initialExpandedKeys","allKeys","k","internalExpandedKeys","setInternalExpandedKeys","internalSelectedKeys","setInternalSelectedKeys","internalCheckedKeys","setInternalCheckedKeys","checkedKeys","descendantKeys","checkedDescendants","prev","newExpandedKeys","newSelectedKeys","isChecked","newCheckedKeys","dk","parentNode","handleTreeFocus","contextValue"],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { default as React } from 'react';
2
+ import { TreeDataNode } from './Tree';
3
+ export type TreeSelectSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ export type TreeSelectColor = 'primary' | 'secondary' | 'accent' | 'neutral' | 'info' | 'success' | 'warning' | 'error';
5
+ export type TreeSelectStatus = 'error' | 'warning';
6
+ export type TreeSelectVariant = 'outlined' | 'filled' | 'borderless';
7
+ export type ShowCheckedStrategy = 'SHOW_ALL' | 'SHOW_PARENT' | 'SHOW_CHILD';
8
+ export interface TreeSelectFieldNames {
9
+ label?: string;
10
+ value?: string;
11
+ children?: string;
12
+ }
13
+ /** Value type when labelInValue is true */
14
+ export interface LabeledValue {
15
+ value: string;
16
+ label: React.ReactNode;
17
+ }
18
+ export interface TreeSelectProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
19
+ treeData: TreeDataNode[];
20
+ value?: string | string[] | LabeledValue | LabeledValue[];
21
+ defaultValue?: string | string[] | LabeledValue | LabeledValue[];
22
+ onChange?: (value: string | string[] | LabeledValue | LabeledValue[], labels: React.ReactNode[], extra?: {
23
+ triggerValue: string;
24
+ triggerNode: TreeDataNode;
25
+ }) => void;
26
+ multiple?: boolean;
27
+ treeCheckable?: boolean;
28
+ treeCheckStrictly?: boolean;
29
+ showCheckedStrategy?: ShowCheckedStrategy;
30
+ showSearch?: boolean;
31
+ searchValue?: string;
32
+ onSearch?: (value: string) => void;
33
+ filterTreeNode?: (searchValue: string, node: TreeDataNode) => boolean;
34
+ placeholder?: string;
35
+ allowClear?: boolean;
36
+ disabled?: boolean;
37
+ treeDefaultExpandAll?: boolean;
38
+ treeDefaultExpandedKeys?: string[];
39
+ treeExpandedKeys?: string[];
40
+ onTreeExpand?: (expandedKeys: string[]) => void;
41
+ size?: TreeSelectSize;
42
+ color?: TreeSelectColor;
43
+ status?: TreeSelectStatus;
44
+ /** Visual variant style */
45
+ variant?: TreeSelectVariant;
46
+ /** Ghost style with no background */
47
+ ghost?: boolean;
48
+ /** Maximum number of tags to show (multiple/treeCheckable mode) */
49
+ maxTagCount?: number | 'responsive';
50
+ maxTagPlaceholder?: React.ReactNode | ((omittedValues: string[]) => React.ReactNode);
51
+ /** Maximum number of selections allowed */
52
+ maxCount?: number;
53
+ /** Return object with value and label instead of just value */
54
+ labelInValue?: boolean;
55
+ /** Custom tag render function */
56
+ tagRender?: (props: {
57
+ label: React.ReactNode;
58
+ value: string;
59
+ closable: boolean;
60
+ onClose: () => void;
61
+ }) => React.ReactNode;
62
+ treeLine?: boolean;
63
+ /** Show tree node icon */
64
+ treeIcon?: boolean;
65
+ loadData?: (node: TreeDataNode) => Promise<void>;
66
+ fieldNames?: TreeSelectFieldNames;
67
+ open?: boolean;
68
+ onDropdownVisibleChange?: (open: boolean) => void;
69
+ suffixIcon?: React.ReactNode;
70
+ switcherIcon?: React.ReactNode | ((props: {
71
+ expanded: boolean;
72
+ }) => React.ReactNode);
73
+ notFoundContent?: React.ReactNode;
74
+ dropdownRender?: (menu: React.ReactNode) => React.ReactNode;
75
+ popupClassName?: string;
76
+ 'data-testid'?: string;
77
+ }
78
+ export declare const TreeSelect: React.ForwardRefExoticComponent<TreeSelectProps & React.RefAttributes<HTMLDivElement>>;
79
+ export declare const TreeSelectComponent: React.ForwardRefExoticComponent<TreeSelectProps & React.RefAttributes<HTMLDivElement>> & {
80
+ SHOW_ALL: "SHOW_ALL";
81
+ SHOW_PARENT: "SHOW_PARENT";
82
+ SHOW_CHILD: "SHOW_CHILD";
83
+ };
84
+ export { TreeSelectComponent as default };