@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.
- package/LICENSE +15 -0
- package/README.md +40 -0
- package/dist/chart.d.ts +2 -0
- package/dist/chart.js +5 -0
- package/dist/chart.js.map +1 -0
- package/dist/components/Affix.d.ts +14 -0
- package/dist/components/Affix.js +57 -0
- package/dist/components/Affix.js.map +1 -0
- package/dist/components/Alert.d.ts +10 -0
- package/dist/components/Alert.js +31 -0
- package/dist/components/Alert.js.map +1 -0
- package/dist/components/Anchor.d.ts +55 -0
- package/dist/components/Anchor.js +116 -0
- package/dist/components/Anchor.js.map +1 -0
- package/dist/components/Autocomplete.d.ts +38 -0
- package/dist/components/Autocomplete.js +186 -0
- package/dist/components/Autocomplete.js.map +1 -0
- package/dist/components/Avatar.d.ts +28 -0
- package/dist/components/Avatar.js +65 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Badge.d.ts +39 -0
- package/dist/components/Badge.js +220 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Breadcrumb.d.ts +32 -0
- package/dist/components/Breadcrumb.js +39 -0
- package/dist/components/Breadcrumb.js.map +1 -0
- package/dist/components/Browser.d.ts +7 -0
- package/dist/components/Browser.js +15 -0
- package/dist/components/Browser.js.map +1 -0
- package/dist/components/Button.d.ts +38 -0
- package/dist/components/Button.js +114 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Card.d.ts +57 -0
- package/dist/components/Card.js +202 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Carousel.d.ts +55 -0
- package/dist/components/Carousel.js +205 -0
- package/dist/components/Carousel.js.map +1 -0
- package/dist/components/Cascader.d.ts +71 -0
- package/dist/components/Cascader.js +416 -0
- package/dist/components/Cascader.js.map +1 -0
- package/dist/components/Chart.d.ts +19 -0
- package/dist/components/Chart.js +153 -0
- package/dist/components/Chart.js.map +1 -0
- package/dist/components/Chat.d.ts +11 -0
- package/dist/components/Chat.js +33 -0
- package/dist/components/Chat.js.map +1 -0
- package/dist/components/Checkbox.d.ts +42 -0
- package/dist/components/Checkbox.js +156 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/Code.d.ts +16 -0
- package/dist/components/Code.js +60 -0
- package/dist/components/Code.js.map +1 -0
- package/dist/components/Collapse.d.ts +45 -0
- package/dist/components/Collapse.js +115 -0
- package/dist/components/Collapse.js.map +1 -0
- package/dist/components/ColorPicker.d.ts +16 -0
- package/dist/components/ColorPicker.js +368 -0
- package/dist/components/ColorPicker.js.map +1 -0
- package/dist/components/Command.d.ts +65 -0
- package/dist/components/Command.js +422 -0
- package/dist/components/Command.js.map +1 -0
- package/dist/components/ConfigProvider.d.ts +59 -0
- package/dist/components/ConfigProvider.js +46 -0
- package/dist/components/ConfigProvider.js.map +1 -0
- package/dist/components/Container.d.ts +12 -0
- package/dist/components/Container.js +28 -0
- package/dist/components/Container.js.map +1 -0
- package/dist/components/ContextMenu.d.ts +59 -0
- package/dist/components/ContextMenu.js +206 -0
- package/dist/components/ContextMenu.js.map +1 -0
- package/dist/components/CopyButton.d.ts +37 -0
- package/dist/components/CopyButton.js +123 -0
- package/dist/components/CopyButton.js.map +1 -0
- package/dist/components/Countdown.d.ts +27 -0
- package/dist/components/Countdown.js +118 -0
- package/dist/components/Countdown.js.map +1 -0
- package/dist/components/DatePicker.d.ts +11 -0
- package/dist/components/DatePicker.js +188 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/Descriptions.d.ts +84 -0
- package/dist/components/Descriptions.js +234 -0
- package/dist/components/Descriptions.js.map +1 -0
- package/dist/components/Diff.d.ts +12 -0
- package/dist/components/Diff.js +22 -0
- package/dist/components/Diff.js.map +1 -0
- package/dist/components/Divider.d.ts +8 -0
- package/dist/components/Divider.js +36 -0
- package/dist/components/Divider.js.map +1 -0
- package/dist/components/Dock.d.ts +38 -0
- package/dist/components/Dock.js +47 -0
- package/dist/components/Dock.js.map +1 -0
- package/dist/components/Drawer.d.ts +81 -0
- package/dist/components/Drawer.js +246 -0
- package/dist/components/Drawer.js.map +1 -0
- package/dist/components/Dropdown.d.ts +104 -0
- package/dist/components/Dropdown.js +407 -0
- package/dist/components/Dropdown.js.map +1 -0
- package/dist/components/Empty.d.ts +17 -0
- package/dist/components/Empty.js +145 -0
- package/dist/components/Empty.js.map +1 -0
- package/dist/components/Fieldset.d.ts +21 -0
- package/dist/components/Fieldset.js +21 -0
- package/dist/components/Fieldset.js.map +1 -0
- package/dist/components/FileInput.d.ts +9 -0
- package/dist/components/FileInput.js +38 -0
- package/dist/components/FileInput.js.map +1 -0
- package/dist/components/Filter.d.ts +27 -0
- package/dist/components/Filter.js +57 -0
- package/dist/components/Filter.js.map +1 -0
- package/dist/components/Flex.d.ts +14 -0
- package/dist/components/Flex.js +66 -0
- package/dist/components/Flex.js.map +1 -0
- package/dist/components/FloatButton.d.ts +73 -0
- package/dist/components/FloatButton.js +187 -0
- package/dist/components/FloatButton.js.map +1 -0
- package/dist/components/Footer.d.ts +16 -0
- package/dist/components/Footer.js +22 -0
- package/dist/components/Footer.js.map +1 -0
- package/dist/components/Form.d.ts +107 -0
- package/dist/components/Form.js +277 -0
- package/dist/components/Form.js.map +1 -0
- package/dist/components/Grid.d.ts +26 -0
- package/dist/components/Grid.js +1090 -0
- package/dist/components/Grid.js.map +1 -0
- package/dist/components/Hero.d.ts +11 -0
- package/dist/components/Hero.js +21 -0
- package/dist/components/Hero.js.map +1 -0
- package/dist/components/HoverGallery.d.ts +10 -0
- package/dist/components/HoverGallery.js +20 -0
- package/dist/components/HoverGallery.js.map +1 -0
- package/dist/components/Image.d.ts +26 -0
- package/dist/components/Image.js +172 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/Input.d.ts +36 -0
- package/dist/components/Input.js +263 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/InputNumber.d.ts +19 -0
- package/dist/components/InputNumber.js +158 -0
- package/dist/components/InputNumber.js.map +1 -0
- package/dist/components/Join.d.ts +6 -0
- package/dist/components/Join.js +19 -0
- package/dist/components/Join.js.map +1 -0
- package/dist/components/Kbd.d.ts +9 -0
- package/dist/components/Kbd.js +20 -0
- package/dist/components/Kbd.js.map +1 -0
- package/dist/components/Layout.d.ts +67 -0
- package/dist/components/Layout.js +188 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/List.d.ts +79 -0
- package/dist/components/List.js +128 -0
- package/dist/components/List.js.map +1 -0
- package/dist/components/Loading.d.ts +9 -0
- package/dist/components/Loading.js +40 -0
- package/dist/components/Loading.js.map +1 -0
- package/dist/components/Mask.d.ts +14 -0
- package/dist/components/Mask.js +37 -0
- package/dist/components/Mask.js.map +1 -0
- package/dist/components/Masonry.d.ts +15 -0
- package/dist/components/Masonry.js +84 -0
- package/dist/components/Masonry.js.map +1 -0
- package/dist/components/Mention.d.ts +30 -0
- package/dist/components/Mention.js +179 -0
- package/dist/components/Mention.js.map +1 -0
- package/dist/components/Menu.d.ts +72 -0
- package/dist/components/Menu.js +163 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/Message.d.ts +20 -0
- package/dist/components/Message.js +57 -0
- package/dist/components/Message.js.map +1 -0
- package/dist/components/Modal.d.ts +57 -0
- package/dist/components/Modal.js +338 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/MonthCalendar.d.ts +31 -0
- package/dist/components/MonthCalendar.js +205 -0
- package/dist/components/MonthCalendar.js.map +1 -0
- package/dist/components/Navbar.d.ts +22 -0
- package/dist/components/Navbar.js +50 -0
- package/dist/components/Navbar.js.map +1 -0
- package/dist/components/Notification.d.ts +50 -0
- package/dist/components/Notification.js +150 -0
- package/dist/components/Notification.js.map +1 -0
- package/dist/components/OTPInput.d.ts +32 -0
- package/dist/components/OTPInput.js +114 -0
- package/dist/components/OTPInput.js.map +1 -0
- package/dist/components/Pagination.d.ts +18 -0
- package/dist/components/Pagination.js +175 -0
- package/dist/components/Pagination.js.map +1 -0
- package/dist/components/Phone.d.ts +8 -0
- package/dist/components/Phone.js +17 -0
- package/dist/components/Phone.js.map +1 -0
- package/dist/components/Popconfirm.d.ts +17 -0
- package/dist/components/Popconfirm.js +125 -0
- package/dist/components/Popconfirm.js.map +1 -0
- package/dist/components/Popover.d.ts +15 -0
- package/dist/components/Popover.js +89 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Progress.d.ts +5 -0
- package/dist/components/Progress.js +23 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/QRCode.d.ts +19 -0
- package/dist/components/QRCode.js +75 -0
- package/dist/components/QRCode.js.map +1 -0
- package/dist/components/RadialProgress.d.ts +10 -0
- package/dist/components/RadialProgress.js +48 -0
- package/dist/components/RadialProgress.js.map +1 -0
- package/dist/components/Radio.d.ts +26 -0
- package/dist/components/Radio.js +61 -0
- package/dist/components/Radio.js.map +1 -0
- package/dist/components/Range.d.ts +16 -0
- package/dist/components/Range.js +57 -0
- package/dist/components/Range.js.map +1 -0
- package/dist/components/Rating.d.ts +30 -0
- package/dist/components/Rating.js +127 -0
- package/dist/components/Rating.js.map +1 -0
- package/dist/components/Responsive.d.ts +18 -0
- package/dist/components/Responsive.js +17 -0
- package/dist/components/Responsive.js.map +1 -0
- package/dist/components/ResponsiveDrawer.d.ts +34 -0
- package/dist/components/ResponsiveDrawer.js +75 -0
- package/dist/components/ResponsiveDrawer.js.map +1 -0
- package/dist/components/Result.d.ts +12 -0
- package/dist/components/Result.js +110 -0
- package/dist/components/Result.js.map +1 -0
- package/dist/components/RichTextEditor.d.ts +32 -0
- package/dist/components/RichTextEditor.js +335 -0
- package/dist/components/RichTextEditor.js.map +1 -0
- package/dist/components/Segmented.d.ts +37 -0
- package/dist/components/Segmented.js +73 -0
- package/dist/components/Segmented.js.map +1 -0
- package/dist/components/Select.d.ts +18 -0
- package/dist/components/Select.js +78 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Skeleton.d.ts +9 -0
- package/dist/components/Skeleton.js +24 -0
- package/dist/components/Skeleton.js.map +1 -0
- package/dist/components/Space.d.ts +11 -0
- package/dist/components/Space.js +61 -0
- package/dist/components/Space.js.map +1 -0
- package/dist/components/Splitter.d.ts +29 -0
- package/dist/components/Splitter.js +257 -0
- package/dist/components/Splitter.js.map +1 -0
- package/dist/components/Stat.d.ts +18 -0
- package/dist/components/Stat.js +26 -0
- package/dist/components/Stat.js.map +1 -0
- package/dist/components/Status.d.ts +18 -0
- package/dist/components/Status.js +34 -0
- package/dist/components/Status.js.map +1 -0
- package/dist/components/Steps.d.ts +52 -0
- package/dist/components/Steps.js +97 -0
- package/dist/components/Steps.js.map +1 -0
- package/dist/components/Table.d.ts +105 -0
- package/dist/components/Table.js +637 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.d.ts +45 -0
- package/dist/components/Tabs.js +86 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Tag.d.ts +34 -0
- package/dist/components/Tag.js +210 -0
- package/dist/components/Tag.js.map +1 -0
- package/dist/components/TextRotate.d.ts +13 -0
- package/dist/components/TextRotate.js +26 -0
- package/dist/components/TextRotate.js.map +1 -0
- package/dist/components/Textarea.d.ts +9 -0
- package/dist/components/Textarea.js +44 -0
- package/dist/components/Textarea.js.map +1 -0
- package/dist/components/ThemeController.d.ts +28 -0
- package/dist/components/ThemeController.js +162 -0
- package/dist/components/ThemeController.js.map +1 -0
- package/dist/components/TimePicker.d.ts +20 -0
- package/dist/components/TimePicker.js +304 -0
- package/dist/components/TimePicker.js.map +1 -0
- package/dist/components/Timeline.d.ts +79 -0
- package/dist/components/Timeline.js +151 -0
- package/dist/components/Timeline.js.map +1 -0
- package/dist/components/Toggle.d.ts +7 -0
- package/dist/components/Toggle.js +39 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/Tooltip.d.ts +9 -0
- package/dist/components/Tooltip.js +37 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/Tour.d.ts +123 -0
- package/dist/components/Tour.js +400 -0
- package/dist/components/Tour.js.map +1 -0
- package/dist/components/Transfer.d.ts +22 -0
- package/dist/components/Transfer.js +214 -0
- package/dist/components/Transfer.js.map +1 -0
- package/dist/components/Tree.d.ts +118 -0
- package/dist/components/Tree.js +444 -0
- package/dist/components/Tree.js.map +1 -0
- package/dist/components/TreeSelect.d.ts +84 -0
- package/dist/components/TreeSelect.js +755 -0
- package/dist/components/TreeSelect.js.map +1 -0
- package/dist/components/Typography.d.ts +53 -0
- package/dist/components/Typography.js +182 -0
- package/dist/components/Typography.js.map +1 -0
- package/dist/components/Upload.d.ts +38 -0
- package/dist/components/Upload.js +261 -0
- package/dist/components/Upload.js.map +1 -0
- package/dist/components/VirtualList.d.ts +29 -0
- package/dist/components/VirtualList.js +69 -0
- package/dist/components/VirtualList.js.map +1 -0
- package/dist/components/Watermark.d.ts +40 -0
- package/dist/components/Watermark.js +129 -0
- package/dist/components/Watermark.js.map +1 -0
- package/dist/components/WeekCalendar.d.ts +35 -0
- package/dist/components/WeekCalendar.js +204 -0
- package/dist/components/WeekCalendar.js.map +1 -0
- package/dist/components/Window.d.ts +7 -0
- package/dist/components/Window.js +10 -0
- package/dist/components/Window.js.map +1 -0
- package/dist/contexts/IconSizeContext.d.ts +2 -0
- package/dist/contexts/IconSizeContext.js +6 -0
- package/dist/contexts/IconSizeContext.js.map +1 -0
- package/dist/editor.d.ts +1 -0
- package/dist/editor.js +5 -0
- package/dist/editor.js.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +10 -0
- package/dist/hooks/useBreakpoint.js +36 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks/useClickOutside.d.ts +17 -0
- package/dist/hooks/useClickOutside.js +18 -0
- package/dist/hooks/useClickOutside.js.map +1 -0
- package/dist/hooks/useClipboard.d.ts +20 -0
- package/dist/hooks/useClipboard.js +17 -0
- package/dist/hooks/useClipboard.js.map +1 -0
- package/dist/hooks/useDebounce.d.ts +18 -0
- package/dist/hooks/useDebounce.js +16 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/hooks/useDisclosure.d.ts +20 -0
- package/dist/hooks/useDisclosure.js +9 -0
- package/dist/hooks/useDisclosure.js.map +1 -0
- package/dist/hooks/useHover.d.ts +18 -0
- package/dist/hooks/useHover.js +16 -0
- package/dist/hooks/useHover.js.map +1 -0
- package/dist/hooks/useKeyPress.d.ts +40 -0
- package/dist/hooks/useKeyPress.js +34 -0
- package/dist/hooks/useKeyPress.js.map +1 -0
- package/dist/hooks/useLocalStorage.d.ts +12 -0
- package/dist/hooks/useLocalStorage.js +49 -0
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/hooks/usePrevious.d.ts +15 -0
- package/dist/hooks/usePrevious.js +11 -0
- package/dist/hooks/usePrevious.js.map +1 -0
- package/dist/hooks/useWindowSize.d.ts +21 -0
- package/dist/hooks/useWindowSize.js +21 -0
- package/dist/hooks/useWindowSize.js.map +1 -0
- package/dist/index.d.ts +216 -0
- package/dist/index.js +256 -0
- package/dist/index.js.map +1 -0
- package/dist/locale/de-DE.d.ts +3 -0
- package/dist/locale/de-DE.js +100 -0
- package/dist/locale/de-DE.js.map +1 -0
- package/dist/locale/en-CA.d.ts +3 -0
- package/dist/locale/en-CA.js +11 -0
- package/dist/locale/en-CA.js.map +1 -0
- package/dist/locale/en-GB.d.ts +3 -0
- package/dist/locale/en-GB.js +11 -0
- package/dist/locale/en-GB.js.map +1 -0
- package/dist/locale/en-US.d.ts +3 -0
- package/dist/locale/en-US.js +100 -0
- package/dist/locale/en-US.js.map +1 -0
- package/dist/locale/es-ES.d.ts +3 -0
- package/dist/locale/es-ES.js +100 -0
- package/dist/locale/es-ES.js.map +1 -0
- package/dist/locale/fr-FR.d.ts +3 -0
- package/dist/locale/fr-FR.js +100 -0
- package/dist/locale/fr-FR.js.map +1 -0
- package/dist/locale/index.d.ts +107 -0
- package/dist/locale/ja-JP.d.ts +3 -0
- package/dist/locale/ja-JP.js +100 -0
- package/dist/locale/ja-JP.js.map +1 -0
- package/dist/locale/ko-KR.d.ts +3 -0
- package/dist/locale/ko-KR.js +100 -0
- package/dist/locale/ko-KR.js.map +1 -0
- package/dist/locale/pt-BR.d.ts +3 -0
- package/dist/locale/pt-BR.js +100 -0
- package/dist/locale/pt-BR.js.map +1 -0
- package/dist/locale/zh-CN.d.ts +3 -0
- package/dist/locale/zh-CN.js +100 -0
- package/dist/locale/zh-CN.js.map +1 -0
- package/dist/qrcode.d.ts +2 -0
- package/dist/qrcode.js +5 -0
- package/dist/qrcode.js.map +1 -0
- package/dist/virtuallist.d.ts +2 -0
- package/dist/virtuallist.js +5 -0
- package/dist/virtuallist.js.map +1 -0
- 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 };
|