@ifhover/leaf-ui 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/autocomplete/autocomplete.cjs +7 -3
- package/dist/cjs/autocomplete/autocomplete.cjs.map +1 -1
- package/dist/cjs/autocomplete/autocomplete.d.cts +2 -0
- package/dist/cjs/autocomplete/autocomplete.d.cts.map +1 -1
- package/dist/cjs/browser/modules/autocomplete/autocomplete.cjs +7 -3
- package/dist/cjs/browser/modules/autocomplete/autocomplete.cjs.map +1 -1
- package/dist/cjs/browser/modules/button/button.cjs.map +1 -1
- package/dist/cjs/browser/modules/cascader/cascader.cjs +9 -2
- package/dist/cjs/browser/modules/cascader/cascader.cjs.map +1 -1
- package/dist/cjs/browser/modules/colors.cjs +73 -7
- package/dist/cjs/browser/modules/colors.cjs.map +1 -1
- package/dist/cjs/browser/modules/commandpalette/commandpalette.cjs +10 -3
- package/dist/cjs/browser/modules/commandpalette/commandpalette.cjs.map +1 -1
- package/dist/cjs/browser/modules/config-provider/component-defaults.cjs.map +1 -1
- package/dist/cjs/browser/modules/config-provider/use-color-variables.cjs +18 -2
- package/dist/cjs/browser/modules/config-provider/use-color-variables.cjs.map +1 -1
- package/dist/cjs/browser/modules/drawer/drawer.cjs +7 -1
- package/dist/cjs/browser/modules/drawer/drawer.cjs.map +1 -1
- package/dist/cjs/browser/modules/dropdown/dropdown.cjs +25 -4
- package/dist/cjs/browser/modules/dropdown/dropdown.cjs.map +1 -1
- package/dist/cjs/browser/modules/form/form.cjs +38 -21
- package/dist/cjs/browser/modules/form/form.cjs.map +1 -1
- package/dist/cjs/browser/modules/image/viewer.cjs +8 -2
- package/dist/cjs/browser/modules/image/viewer.cjs.map +1 -1
- package/dist/cjs/browser/modules/index.cjs +3 -4
- package/dist/cjs/browser/modules/layout/layout.cjs +4 -1
- package/dist/cjs/browser/modules/layout/layout.cjs.map +1 -1
- package/dist/cjs/browser/modules/mentions/mentions.cjs +4 -2
- package/dist/cjs/browser/modules/mentions/mentions.cjs.map +1 -1
- package/dist/cjs/browser/modules/menu/index.cjs +5 -2
- package/dist/cjs/browser/modules/menu/menu.cjs +60 -18
- package/dist/cjs/browser/modules/menu/menu.cjs.map +1 -1
- package/dist/cjs/browser/modules/scrollbar/scrollbar.cjs +69 -19
- package/dist/cjs/browser/modules/scrollbar/scrollbar.cjs.map +1 -1
- package/dist/cjs/browser/modules/select/select.cjs +3 -3
- package/dist/cjs/browser/modules/select/select.cjs.map +1 -1
- package/dist/cjs/browser/modules/shared/floating.cjs +49 -20
- package/dist/cjs/browser/modules/shared/floating.cjs.map +1 -1
- package/dist/cjs/browser/modules/shared/scoped-portal.cjs +2 -23
- package/dist/cjs/browser/modules/shared/scoped-portal.cjs.map +1 -1
- package/dist/cjs/browser/modules/{segmented/index.cjs → shared/theme-variables.cjs} +27 -5
- package/dist/cjs/browser/modules/shared/theme-variables.cjs.map +1 -0
- package/dist/cjs/browser/modules/splitter/splitter.cjs +4 -1
- package/dist/cjs/browser/modules/splitter/splitter.cjs.map +1 -1
- package/dist/cjs/browser/modules/tabs/tabs.cjs +14 -8
- package/dist/cjs/browser/modules/tabs/tabs.cjs.map +1 -1
- package/dist/cjs/browser/modules/tailwind-tokens.cjs +1 -1
- package/dist/cjs/browser/modules/tailwind-tokens.cjs.map +1 -1
- package/dist/cjs/browser/modules/textarea/textarea.cjs +49 -21
- package/dist/cjs/browser/modules/textarea/textarea.cjs.map +1 -1
- package/dist/cjs/browser/modules/theme.cjs +53 -29
- package/dist/cjs/browser/modules/theme.cjs.map +1 -1
- package/dist/cjs/browser/modules/timeline/timeline.cjs +1 -1
- package/dist/cjs/browser/modules/timeline/timeline.cjs.map +1 -1
- package/dist/cjs/browser/modules/timepicker/time-panel.cjs +8 -2
- package/dist/cjs/browser/modules/timepicker/time-panel.cjs.map +1 -1
- package/dist/cjs/browser/modules/transfer/transfer.cjs +5 -5
- package/dist/cjs/browser/modules/transfer/transfer.cjs.map +1 -1
- package/dist/cjs/browser/modules/tree/tree.cjs +13 -6
- package/dist/cjs/browser/modules/tree/tree.cjs.map +1 -1
- package/dist/cjs/browser/modules/treeselect/treeselect.cjs +5 -4
- package/dist/cjs/browser/modules/treeselect/treeselect.cjs.map +1 -1
- package/dist/cjs/browser/modules/virtuallist/virtuallist.cjs +9 -3
- package/dist/cjs/browser/modules/virtuallist/virtuallist.cjs.map +1 -1
- package/dist/cjs/button/button.cjs.map +1 -1
- package/dist/cjs/button/button.d.cts +7 -2
- package/dist/cjs/button/button.d.cts.map +1 -1
- package/dist/cjs/cascader/cascader.cjs +9 -2
- package/dist/cjs/cascader/cascader.cjs.map +1 -1
- package/dist/cjs/cascader/cascader.d.cts +2 -0
- package/dist/cjs/cascader/cascader.d.cts.map +1 -1
- package/dist/cjs/colors.cjs +73 -7
- package/dist/cjs/colors.cjs.map +1 -1
- package/dist/cjs/colors.d.cts +3 -1
- package/dist/cjs/colors.d.cts.map +1 -1
- package/dist/cjs/commandpalette/commandpalette.cjs +10 -3
- package/dist/cjs/commandpalette/commandpalette.cjs.map +1 -1
- package/dist/cjs/commandpalette/commandpalette.d.cts.map +1 -1
- package/dist/cjs/config-provider/component-defaults.cjs.map +1 -1
- package/dist/cjs/config-provider/component-defaults.d.cts +3 -4
- package/dist/cjs/config-provider/component-defaults.d.cts.map +1 -1
- package/dist/cjs/config-provider/index.d.cts +1 -1
- package/dist/cjs/config-provider/index.d.cts.map +1 -1
- package/dist/cjs/config-provider/use-color-variables.cjs +18 -2
- package/dist/cjs/config-provider/use-color-variables.cjs.map +1 -1
- package/dist/cjs/config-provider/use-color-variables.d.cts.map +1 -1
- package/dist/cjs/drawer/drawer.cjs +7 -1
- package/dist/cjs/drawer/drawer.cjs.map +1 -1
- package/dist/cjs/drawer/drawer.d.cts.map +1 -1
- package/dist/cjs/dropdown/dropdown.cjs +25 -4
- package/dist/cjs/dropdown/dropdown.cjs.map +1 -1
- package/dist/cjs/dropdown/dropdown.d.cts +9 -1
- package/dist/cjs/dropdown/dropdown.d.cts.map +1 -1
- package/dist/cjs/form/form.cjs +38 -21
- package/dist/cjs/form/form.cjs.map +1 -1
- package/dist/cjs/form/form.d.cts +3 -1
- package/dist/cjs/form/form.d.cts.map +1 -1
- package/dist/cjs/image/viewer.cjs +8 -2
- package/dist/cjs/image/viewer.cjs.map +1 -1
- package/dist/cjs/image/viewer.d.cts.map +1 -1
- package/dist/cjs/index.cjs +3 -4
- package/dist/cjs/index.d.cts +3 -5
- package/dist/cjs/index.d.cts.map +1 -1
- package/dist/cjs/layout/layout.cjs +4 -1
- package/dist/cjs/layout/layout.cjs.map +1 -1
- package/dist/cjs/layout/layout.d.cts.map +1 -1
- package/dist/cjs/mentions/mentions.cjs +4 -2
- package/dist/cjs/mentions/mentions.cjs.map +1 -1
- package/dist/cjs/mentions/mentions.d.cts +2 -0
- package/dist/cjs/mentions/mentions.d.cts.map +1 -1
- package/dist/cjs/menu/index.cjs +5 -2
- package/dist/cjs/menu/index.d.cts +2 -2
- package/dist/cjs/menu/index.d.cts.map +1 -1
- package/dist/cjs/menu/menu.cjs +60 -18
- package/dist/cjs/menu/menu.cjs.map +1 -1
- package/dist/cjs/menu/menu.d.cts +4 -0
- package/dist/cjs/menu/menu.d.cts.map +1 -1
- package/dist/cjs/scrollbar/scrollbar.cjs +69 -19
- package/dist/cjs/scrollbar/scrollbar.cjs.map +1 -1
- package/dist/cjs/scrollbar/scrollbar.d.cts +12 -2
- package/dist/cjs/scrollbar/scrollbar.d.cts.map +1 -1
- package/dist/cjs/select/select.cjs +3 -3
- package/dist/cjs/select/select.cjs.map +1 -1
- package/dist/cjs/shared/floating.cjs +49 -20
- package/dist/cjs/shared/floating.cjs.map +1 -1
- package/dist/cjs/shared/floating.d.cts +3 -1
- package/dist/cjs/shared/floating.d.cts.map +1 -1
- package/dist/cjs/shared/scoped-portal.cjs +2 -23
- package/dist/cjs/shared/scoped-portal.cjs.map +1 -1
- package/dist/cjs/shared/scoped-portal.d.cts.map +1 -1
- package/dist/cjs/{segmented/index.cjs → shared/theme-variables.cjs} +27 -5
- package/dist/cjs/shared/theme-variables.cjs.map +1 -0
- package/dist/cjs/shared/theme-variables.d.cts +4 -0
- package/dist/cjs/shared/theme-variables.d.cts.map +1 -0
- package/dist/cjs/splitter/splitter.cjs +4 -1
- package/dist/cjs/splitter/splitter.cjs.map +1 -1
- package/dist/cjs/splitter/splitter.d.cts.map +1 -1
- package/dist/cjs/styles/alert.css +1 -1
- package/dist/cjs/styles/anchor.css +1 -1
- package/dist/cjs/styles/appbar.css +1 -1
- package/dist/cjs/styles/autocomplete.css +1 -1
- package/dist/cjs/styles/avatar.css +1 -1
- package/dist/cjs/styles/backtop.css +1 -1
- package/dist/cjs/styles/badge.css +1 -1
- package/dist/cjs/styles/breadcrumb.css +1 -1
- package/dist/cjs/styles/button.css +1 -1
- package/dist/cjs/styles/calendar.css +1 -1
- package/dist/cjs/styles/card.css +1 -1
- package/dist/cjs/styles/carousel.css +1 -1
- package/dist/cjs/styles/cascader.css +1 -1
- package/dist/cjs/styles/checkbox.css +1 -1
- package/dist/cjs/styles/collapse.css +1 -1
- package/dist/cjs/styles/colorpicker.css +1 -1
- package/dist/cjs/styles/commandpalette.css +1 -1
- package/dist/cjs/styles/components/alert.css +1 -1
- package/dist/cjs/styles/components/anchor.css +1 -1
- package/dist/cjs/styles/components/appbar.css +1 -1
- package/dist/cjs/styles/components/autocomplete.css +1 -1
- package/dist/cjs/styles/components/avatar.css +1 -1
- package/dist/cjs/styles/components/breadcrumb.css +1 -1
- package/dist/cjs/styles/components/button.css +1 -1
- package/dist/cjs/styles/components/calendar.css +1 -1
- package/dist/cjs/styles/components/card.css +1 -1
- package/dist/cjs/styles/components/carousel.css +1 -1
- package/dist/cjs/styles/components/cascader.css +1 -1
- package/dist/cjs/styles/components/checkbox.css +1 -1
- package/dist/cjs/styles/components/collapse.css +1 -1
- package/dist/cjs/styles/components/colorpicker.css +1 -1
- package/dist/cjs/styles/components/commandpalette.css +1 -1
- package/dist/cjs/styles/components/datepicker.css +1 -1
- package/dist/cjs/styles/components/descriptions.css +1 -1
- package/dist/cjs/styles/components/drawer.css +1 -1
- package/dist/cjs/styles/components/dropdown.css +1 -1
- package/dist/cjs/styles/components/errorboundary.css +1 -1
- package/dist/cjs/styles/components/filelist.css +1 -1
- package/dist/cjs/styles/components/form.css +1 -1
- package/dist/cjs/styles/components/image.css +1 -1
- package/dist/cjs/styles/components/input.css +1 -1
- package/dist/cjs/styles/components/inputnumber.css +1 -1
- package/dist/cjs/styles/components/inputotp.css +1 -1
- package/dist/cjs/styles/components/layout.css +1 -1
- package/dist/cjs/styles/components/loading.css +1 -1
- package/dist/cjs/styles/components/loadingbar.css +1 -1
- package/dist/cjs/styles/components/mentions.css +1 -1
- package/dist/cjs/styles/components/menu.css +1 -1
- package/dist/cjs/styles/components/message.css +1 -1
- package/dist/cjs/styles/components/modal.css +1 -1
- package/dist/cjs/styles/components/notification.css +1 -1
- package/dist/cjs/styles/components/pagination.css +1 -1
- package/dist/cjs/styles/components/popover.css +1 -1
- package/dist/cjs/styles/components/progress.css +1 -1
- package/dist/cjs/styles/components/radio.css +1 -1
- package/dist/cjs/styles/components/rate.css +1 -1
- package/dist/cjs/styles/components/scrollarea.css +1 -1
- package/dist/cjs/styles/components/scrollbar.css +1 -1
- package/dist/cjs/styles/components/select.css +1 -1
- package/dist/cjs/styles/components/shared-calendar.css +1 -1
- package/dist/cjs/styles/components/slider.css +1 -1
- package/dist/cjs/styles/components/splitter.css +1 -1
- package/dist/cjs/styles/components/steps.css +1 -1
- package/dist/cjs/styles/components/switch.css +1 -1
- package/dist/cjs/styles/components/table.css +1 -1
- package/dist/cjs/styles/components/tabletanstack.css +1 -1
- package/dist/cjs/styles/components/tabs.css +1 -1
- package/dist/cjs/styles/components/tag.css +1 -1
- package/dist/cjs/styles/components/textarea.css +1 -1
- package/dist/cjs/styles/components/timepicker.css +1 -1
- package/dist/cjs/styles/components/tooltip.css +1 -1
- package/dist/cjs/styles/components/tour.css +1 -1
- package/dist/cjs/styles/components/transfer.css +1 -1
- package/dist/cjs/styles/components/tree.css +1 -1
- package/dist/cjs/styles/components/treeselect.css +1 -1
- package/dist/cjs/styles/components/typography.css +1 -1
- package/dist/cjs/styles/components/upload.css +1 -1
- package/dist/cjs/styles/components/virtuallist.css +1 -1
- package/dist/cjs/styles/config-provider.css +1 -1
- package/dist/cjs/styles/confirm.css +1 -1
- package/dist/cjs/styles/datepicker.css +1 -1
- package/dist/cjs/styles/daterangepicker.css +1 -1
- package/dist/cjs/styles/datetimepicker.css +1 -1
- package/dist/cjs/styles/descriptions.css +1 -1
- package/dist/cjs/styles/divider.css +1 -1
- package/dist/cjs/styles/drawer.css +1 -1
- package/dist/cjs/styles/dropdown.css +1 -1
- package/dist/cjs/styles/empty.css +1 -1
- package/dist/cjs/styles/errorboundary.css +1 -1
- package/dist/cjs/styles/filelist.css +1 -1
- package/dist/cjs/styles/flex.css +1 -1
- package/dist/cjs/styles/floatbutton.css +1 -1
- package/dist/cjs/styles/form.css +1 -1
- package/dist/cjs/styles/foundation.css +1 -1
- package/dist/cjs/styles/grid.css +1 -1
- package/dist/cjs/styles/image.css +1 -1
- package/dist/cjs/styles/index.css +1380 -716
- package/dist/cjs/styles/index.css.map +1 -1
- package/dist/cjs/styles/infinitescroll.css +1 -1
- package/dist/cjs/styles/input.css +1 -1
- package/dist/cjs/styles/inputmask.css +1 -1
- package/dist/cjs/styles/inputnumber.css +1 -1
- package/dist/cjs/styles/inputotp.css +1 -1
- package/dist/cjs/styles/layout.css +1 -1
- package/dist/cjs/styles/loading.css +1 -1
- package/dist/cjs/styles/loadingbar.css +1 -1
- package/dist/cjs/styles/masonry.css +1 -1
- package/dist/cjs/styles/mentions.css +1 -1
- package/dist/cjs/styles/menu.css +1 -1
- package/dist/cjs/styles/message.css +1 -1
- package/dist/cjs/styles/modal.css +1 -1
- package/dist/cjs/styles/notification.css +1 -1
- package/dist/cjs/styles/pagination.css +1 -1
- package/dist/cjs/styles/popconfirm.css +1 -1
- package/dist/cjs/styles/popover.css +1 -1
- package/dist/cjs/styles/progress.css +1 -1
- package/dist/cjs/styles/qrcode.css +1 -1
- package/dist/cjs/styles/radio.css +1 -1
- package/dist/cjs/styles/rate.css +1 -1
- package/dist/cjs/styles/result.css +1 -1
- package/dist/cjs/styles/scrollarea.css +1 -1
- package/dist/cjs/styles/scrollbar.css +1 -1
- package/dist/cjs/styles/select.css +1 -1
- package/dist/cjs/styles/skeleton.css +1 -1
- package/dist/cjs/styles/slider.css +1 -1
- package/dist/cjs/styles/space.css +1 -1
- package/dist/cjs/styles/splitter.css +1 -1
- package/dist/cjs/styles/statistic.css +1 -1
- package/dist/cjs/styles/steps.css +1 -1
- package/dist/cjs/styles/switch.css +1 -1
- package/dist/cjs/styles/table.css +1 -1
- package/dist/cjs/styles/tabletanstack.css +1 -1
- package/dist/cjs/styles/tabs.css +1 -1
- package/dist/cjs/styles/tag.css +1 -1
- package/dist/cjs/styles/textarea.css +1 -1
- package/dist/cjs/styles/timeline.css +1 -1
- package/dist/cjs/styles/timepicker.css +1 -1
- package/dist/cjs/styles/timerangepicker.css +1 -1
- package/dist/cjs/styles/tooltip.css +1 -1
- package/dist/cjs/styles/tour.css +1 -1
- package/dist/cjs/styles/transfer.css +1 -1
- package/dist/cjs/styles/tree.css +1 -1
- package/dist/cjs/styles/treeselect.css +1 -1
- package/dist/cjs/styles/typography.css +1 -1
- package/dist/cjs/styles/upload.css +1 -1
- package/dist/cjs/styles/virtuallist.css +1 -1
- package/dist/cjs/tabs/tabs.cjs +14 -8
- package/dist/cjs/tabs/tabs.cjs.map +1 -1
- package/dist/cjs/tabs/tabs.d.cts +4 -2
- package/dist/cjs/tabs/tabs.d.cts.map +1 -1
- package/dist/cjs/tailwind-tokens.cjs +1 -1
- package/dist/cjs/tailwind-tokens.cjs.map +1 -1
- package/dist/cjs/tailwind-tokens.d.cts.map +1 -1
- package/dist/cjs/textarea/textarea.cjs +49 -21
- package/dist/cjs/textarea/textarea.cjs.map +1 -1
- package/dist/cjs/textarea/textarea.d.cts.map +1 -1
- package/dist/cjs/theme.cjs +53 -29
- package/dist/cjs/theme.cjs.map +1 -1
- package/dist/cjs/theme.d.cts +15 -0
- package/dist/cjs/theme.d.cts.map +1 -1
- package/dist/cjs/timeline/timeline.cjs +1 -1
- package/dist/cjs/timeline/timeline.cjs.map +1 -1
- package/dist/cjs/timeline/timeline.d.cts.map +1 -1
- package/dist/cjs/timepicker/time-panel.cjs +8 -2
- package/dist/cjs/timepicker/time-panel.cjs.map +1 -1
- package/dist/cjs/timepicker/time-panel.d.cts.map +1 -1
- package/dist/cjs/transfer/transfer.cjs +5 -5
- package/dist/cjs/transfer/transfer.cjs.map +1 -1
- package/dist/cjs/transfer/transfer.d.cts.map +1 -1
- package/dist/cjs/tree/tree.cjs +13 -6
- package/dist/cjs/tree/tree.cjs.map +1 -1
- package/dist/cjs/tree/tree.d.cts.map +1 -1
- package/dist/cjs/treeselect/treeselect.cjs +5 -4
- package/dist/cjs/treeselect/treeselect.cjs.map +1 -1
- package/dist/cjs/treeselect/treeselect.d.cts.map +1 -1
- package/dist/cjs/virtuallist/virtuallist.cjs +9 -3
- package/dist/cjs/virtuallist/virtuallist.cjs.map +1 -1
- package/dist/cjs/virtuallist/virtuallist.d.cts.map +1 -1
- package/dist/esm/autocomplete/autocomplete.d.ts +2 -0
- package/dist/esm/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/esm/autocomplete/autocomplete.js +7 -3
- package/dist/esm/autocomplete/autocomplete.js.map +1 -1
- package/dist/esm/browser/modules/autocomplete/autocomplete.js +7 -3
- package/dist/esm/browser/modules/autocomplete/autocomplete.js.map +1 -1
- package/dist/esm/browser/modules/button/button.js.map +1 -1
- package/dist/esm/browser/modules/cascader/cascader.js +9 -2
- package/dist/esm/browser/modules/cascader/cascader.js.map +1 -1
- package/dist/esm/browser/modules/colors.js +69 -6
- package/dist/esm/browser/modules/colors.js.map +1 -1
- package/dist/esm/browser/modules/commandpalette/commandpalette.js +10 -3
- package/dist/esm/browser/modules/commandpalette/commandpalette.js.map +1 -1
- package/dist/esm/browser/modules/config-provider/component-defaults.js.map +1 -1
- package/dist/esm/browser/modules/config-provider/use-color-variables.js +18 -2
- package/dist/esm/browser/modules/config-provider/use-color-variables.js.map +1 -1
- package/dist/esm/browser/modules/drawer/drawer.js +7 -1
- package/dist/esm/browser/modules/drawer/drawer.js.map +1 -1
- package/dist/esm/browser/modules/dropdown/dropdown.js +25 -4
- package/dist/esm/browser/modules/dropdown/dropdown.js.map +1 -1
- package/dist/esm/browser/modules/form/form.js +38 -21
- package/dist/esm/browser/modules/form/form.js.map +1 -1
- package/dist/esm/browser/modules/image/viewer.js +8 -2
- package/dist/esm/browser/modules/image/viewer.js.map +1 -1
- package/dist/esm/browser/modules/index.js +1 -2
- package/dist/esm/browser/modules/layout/layout.js +4 -1
- package/dist/esm/browser/modules/layout/layout.js.map +1 -1
- package/dist/esm/browser/modules/mentions/mentions.js +4 -2
- package/dist/esm/browser/modules/mentions/mentions.js.map +1 -1
- package/dist/esm/browser/modules/menu/index.js +1 -1
- package/dist/esm/browser/modules/menu/menu.js +57 -18
- package/dist/esm/browser/modules/menu/menu.js.map +1 -1
- package/dist/esm/browser/modules/scrollbar/scrollbar.js +69 -19
- package/dist/esm/browser/modules/scrollbar/scrollbar.js.map +1 -1
- package/dist/esm/browser/modules/select/select.js +3 -3
- package/dist/esm/browser/modules/select/select.js.map +1 -1
- package/dist/esm/browser/modules/shared/floating.js +49 -20
- package/dist/esm/browser/modules/shared/floating.js.map +1 -1
- package/dist/esm/browser/modules/shared/scoped-portal.js +2 -23
- package/dist/esm/browser/modules/shared/scoped-portal.js.map +1 -1
- package/dist/esm/browser/modules/shared/theme-variables.js +27 -0
- package/dist/esm/browser/modules/shared/theme-variables.js.map +1 -0
- package/dist/esm/browser/modules/splitter/splitter.js +4 -1
- package/dist/esm/browser/modules/splitter/splitter.js.map +1 -1
- package/dist/esm/browser/modules/tabs/tabs.js +14 -8
- package/dist/esm/browser/modules/tabs/tabs.js.map +1 -1
- package/dist/esm/browser/modules/tailwind-tokens.js +1 -1
- package/dist/esm/browser/modules/tailwind-tokens.js.map +1 -1
- package/dist/esm/browser/modules/textarea/textarea.js +50 -22
- package/dist/esm/browser/modules/textarea/textarea.js.map +1 -1
- package/dist/esm/browser/modules/theme.js +53 -29
- package/dist/esm/browser/modules/theme.js.map +1 -1
- package/dist/esm/browser/modules/timeline/timeline.js +1 -1
- package/dist/esm/browser/modules/timeline/timeline.js.map +1 -1
- package/dist/esm/browser/modules/timepicker/time-panel.js +8 -2
- package/dist/esm/browser/modules/timepicker/time-panel.js.map +1 -1
- package/dist/esm/browser/modules/transfer/transfer.js +5 -5
- package/dist/esm/browser/modules/transfer/transfer.js.map +1 -1
- package/dist/esm/browser/modules/tree/tree.js +13 -6
- package/dist/esm/browser/modules/tree/tree.js.map +1 -1
- package/dist/esm/browser/modules/treeselect/treeselect.js +5 -4
- package/dist/esm/browser/modules/treeselect/treeselect.js.map +1 -1
- package/dist/esm/browser/modules/virtuallist/virtuallist.js +9 -3
- package/dist/esm/browser/modules/virtuallist/virtuallist.js.map +1 -1
- package/dist/esm/button/button.d.ts +7 -2
- package/dist/esm/button/button.d.ts.map +1 -1
- package/dist/esm/button/button.js.map +1 -1
- package/dist/esm/cascader/cascader.d.ts +2 -0
- package/dist/esm/cascader/cascader.d.ts.map +1 -1
- package/dist/esm/cascader/cascader.js +9 -2
- package/dist/esm/cascader/cascader.js.map +1 -1
- package/dist/esm/colors.d.ts +3 -1
- package/dist/esm/colors.d.ts.map +1 -1
- package/dist/esm/colors.js +69 -6
- package/dist/esm/colors.js.map +1 -1
- package/dist/esm/commandpalette/commandpalette.d.ts.map +1 -1
- package/dist/esm/commandpalette/commandpalette.js +10 -3
- package/dist/esm/commandpalette/commandpalette.js.map +1 -1
- package/dist/esm/config-provider/component-defaults.d.ts +3 -4
- package/dist/esm/config-provider/component-defaults.d.ts.map +1 -1
- package/dist/esm/config-provider/component-defaults.js.map +1 -1
- package/dist/esm/config-provider/index.d.ts +1 -1
- package/dist/esm/config-provider/index.d.ts.map +1 -1
- package/dist/esm/config-provider/use-color-variables.d.ts.map +1 -1
- package/dist/esm/config-provider/use-color-variables.js +18 -2
- package/dist/esm/config-provider/use-color-variables.js.map +1 -1
- package/dist/esm/drawer/drawer.d.ts.map +1 -1
- package/dist/esm/drawer/drawer.js +7 -1
- package/dist/esm/drawer/drawer.js.map +1 -1
- package/dist/esm/dropdown/dropdown.d.ts +9 -1
- package/dist/esm/dropdown/dropdown.d.ts.map +1 -1
- package/dist/esm/dropdown/dropdown.js +25 -4
- package/dist/esm/dropdown/dropdown.js.map +1 -1
- package/dist/esm/form/form.d.ts +3 -1
- package/dist/esm/form/form.d.ts.map +1 -1
- package/dist/esm/form/form.js +38 -21
- package/dist/esm/form/form.js.map +1 -1
- package/dist/esm/image/viewer.d.ts.map +1 -1
- package/dist/esm/image/viewer.js +8 -2
- package/dist/esm/image/viewer.js.map +1 -1
- package/dist/esm/index.d.ts +3 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/layout/layout.d.ts.map +1 -1
- package/dist/esm/layout/layout.js +4 -1
- package/dist/esm/layout/layout.js.map +1 -1
- package/dist/esm/mentions/mentions.d.ts +2 -0
- package/dist/esm/mentions/mentions.d.ts.map +1 -1
- package/dist/esm/mentions/mentions.js +4 -2
- package/dist/esm/mentions/mentions.js.map +1 -1
- package/dist/esm/menu/index.d.ts +2 -2
- package/dist/esm/menu/index.d.ts.map +1 -1
- package/dist/esm/menu/index.js +1 -1
- package/dist/esm/menu/menu.d.ts +4 -0
- package/dist/esm/menu/menu.d.ts.map +1 -1
- package/dist/esm/menu/menu.js +57 -18
- package/dist/esm/menu/menu.js.map +1 -1
- package/dist/esm/scrollbar/scrollbar.d.ts +12 -2
- package/dist/esm/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/esm/scrollbar/scrollbar.js +69 -19
- package/dist/esm/scrollbar/scrollbar.js.map +1 -1
- package/dist/esm/select/select.js +3 -3
- package/dist/esm/select/select.js.map +1 -1
- package/dist/esm/shared/floating.d.ts +3 -1
- package/dist/esm/shared/floating.d.ts.map +1 -1
- package/dist/esm/shared/floating.js +49 -20
- package/dist/esm/shared/floating.js.map +1 -1
- package/dist/esm/shared/scoped-portal.d.ts.map +1 -1
- package/dist/esm/shared/scoped-portal.js +2 -23
- package/dist/esm/shared/scoped-portal.js.map +1 -1
- package/dist/esm/shared/theme-variables.d.ts +4 -0
- package/dist/esm/shared/theme-variables.d.ts.map +1 -0
- package/dist/esm/shared/theme-variables.js +27 -0
- package/dist/esm/shared/theme-variables.js.map +1 -0
- package/dist/esm/splitter/splitter.d.ts.map +1 -1
- package/dist/esm/splitter/splitter.js +4 -1
- package/dist/esm/splitter/splitter.js.map +1 -1
- package/dist/esm/styles/alert.css +1 -1
- package/dist/esm/styles/anchor.css +1 -1
- package/dist/esm/styles/appbar.css +1 -1
- package/dist/esm/styles/autocomplete.css +1 -1
- package/dist/esm/styles/avatar.css +1 -1
- package/dist/esm/styles/backtop.css +1 -1
- package/dist/esm/styles/badge.css +1 -1
- package/dist/esm/styles/breadcrumb.css +1 -1
- package/dist/esm/styles/button.css +1 -1
- package/dist/esm/styles/calendar.css +1 -1
- package/dist/esm/styles/card.css +1 -1
- package/dist/esm/styles/carousel.css +1 -1
- package/dist/esm/styles/cascader.css +1 -1
- package/dist/esm/styles/checkbox.css +1 -1
- package/dist/esm/styles/collapse.css +1 -1
- package/dist/esm/styles/colorpicker.css +1 -1
- package/dist/esm/styles/commandpalette.css +1 -1
- package/dist/esm/styles/components/alert.css +1 -1
- package/dist/esm/styles/components/anchor.css +1 -1
- package/dist/esm/styles/components/appbar.css +1 -1
- package/dist/esm/styles/components/autocomplete.css +1 -1
- package/dist/esm/styles/components/avatar.css +1 -1
- package/dist/esm/styles/components/breadcrumb.css +1 -1
- package/dist/esm/styles/components/button.css +1 -1
- package/dist/esm/styles/components/calendar.css +1 -1
- package/dist/esm/styles/components/card.css +1 -1
- package/dist/esm/styles/components/carousel.css +1 -1
- package/dist/esm/styles/components/cascader.css +1 -1
- package/dist/esm/styles/components/checkbox.css +1 -1
- package/dist/esm/styles/components/collapse.css +1 -1
- package/dist/esm/styles/components/colorpicker.css +1 -1
- package/dist/esm/styles/components/commandpalette.css +1 -1
- package/dist/esm/styles/components/datepicker.css +1 -1
- package/dist/esm/styles/components/descriptions.css +1 -1
- package/dist/esm/styles/components/drawer.css +1 -1
- package/dist/esm/styles/components/dropdown.css +1 -1
- package/dist/esm/styles/components/errorboundary.css +1 -1
- package/dist/esm/styles/components/filelist.css +1 -1
- package/dist/esm/styles/components/form.css +1 -1
- package/dist/esm/styles/components/image.css +1 -1
- package/dist/esm/styles/components/input.css +1 -1
- package/dist/esm/styles/components/inputnumber.css +1 -1
- package/dist/esm/styles/components/inputotp.css +1 -1
- package/dist/esm/styles/components/layout.css +1 -1
- package/dist/esm/styles/components/loading.css +1 -1
- package/dist/esm/styles/components/loadingbar.css +1 -1
- package/dist/esm/styles/components/mentions.css +1 -1
- package/dist/esm/styles/components/menu.css +1 -1
- package/dist/esm/styles/components/message.css +1 -1
- package/dist/esm/styles/components/modal.css +1 -1
- package/dist/esm/styles/components/notification.css +1 -1
- package/dist/esm/styles/components/pagination.css +1 -1
- package/dist/esm/styles/components/popover.css +1 -1
- package/dist/esm/styles/components/progress.css +1 -1
- package/dist/esm/styles/components/radio.css +1 -1
- package/dist/esm/styles/components/rate.css +1 -1
- package/dist/esm/styles/components/scrollarea.css +1 -1
- package/dist/esm/styles/components/scrollbar.css +1 -1
- package/dist/esm/styles/components/select.css +1 -1
- package/dist/esm/styles/components/shared-calendar.css +1 -1
- package/dist/esm/styles/components/slider.css +1 -1
- package/dist/esm/styles/components/splitter.css +1 -1
- package/dist/esm/styles/components/steps.css +1 -1
- package/dist/esm/styles/components/switch.css +1 -1
- package/dist/esm/styles/components/table.css +1 -1
- package/dist/esm/styles/components/tabletanstack.css +1 -1
- package/dist/esm/styles/components/tabs.css +1 -1
- package/dist/esm/styles/components/tag.css +1 -1
- package/dist/esm/styles/components/textarea.css +1 -1
- package/dist/esm/styles/components/timepicker.css +1 -1
- package/dist/esm/styles/components/tooltip.css +1 -1
- package/dist/esm/styles/components/tour.css +1 -1
- package/dist/esm/styles/components/transfer.css +1 -1
- package/dist/esm/styles/components/tree.css +1 -1
- package/dist/esm/styles/components/treeselect.css +1 -1
- package/dist/esm/styles/components/typography.css +1 -1
- package/dist/esm/styles/components/upload.css +1 -1
- package/dist/esm/styles/components/virtuallist.css +1 -1
- package/dist/esm/styles/config-provider.css +1 -1
- package/dist/esm/styles/confirm.css +1 -1
- package/dist/esm/styles/datepicker.css +1 -1
- package/dist/esm/styles/daterangepicker.css +1 -1
- package/dist/esm/styles/datetimepicker.css +1 -1
- package/dist/esm/styles/descriptions.css +1 -1
- package/dist/esm/styles/divider.css +1 -1
- package/dist/esm/styles/drawer.css +1 -1
- package/dist/esm/styles/dropdown.css +1 -1
- package/dist/esm/styles/empty.css +1 -1
- package/dist/esm/styles/errorboundary.css +1 -1
- package/dist/esm/styles/filelist.css +1 -1
- package/dist/esm/styles/flex.css +1 -1
- package/dist/esm/styles/floatbutton.css +1 -1
- package/dist/esm/styles/form.css +1 -1
- package/dist/esm/styles/foundation.css +1 -1
- package/dist/esm/styles/grid.css +1 -1
- package/dist/esm/styles/image.css +1 -1
- package/dist/esm/styles/index.css +1380 -716
- package/dist/esm/styles/index.css.map +1 -1
- package/dist/esm/styles/infinitescroll.css +1 -1
- package/dist/esm/styles/input.css +1 -1
- package/dist/esm/styles/inputmask.css +1 -1
- package/dist/esm/styles/inputnumber.css +1 -1
- package/dist/esm/styles/inputotp.css +1 -1
- package/dist/esm/styles/layout.css +1 -1
- package/dist/esm/styles/loading.css +1 -1
- package/dist/esm/styles/loadingbar.css +1 -1
- package/dist/esm/styles/masonry.css +1 -1
- package/dist/esm/styles/mentions.css +1 -1
- package/dist/esm/styles/menu.css +1 -1
- package/dist/esm/styles/message.css +1 -1
- package/dist/esm/styles/modal.css +1 -1
- package/dist/esm/styles/notification.css +1 -1
- package/dist/esm/styles/pagination.css +1 -1
- package/dist/esm/styles/popconfirm.css +1 -1
- package/dist/esm/styles/popover.css +1 -1
- package/dist/esm/styles/progress.css +1 -1
- package/dist/esm/styles/qrcode.css +1 -1
- package/dist/esm/styles/radio.css +1 -1
- package/dist/esm/styles/rate.css +1 -1
- package/dist/esm/styles/result.css +1 -1
- package/dist/esm/styles/scrollarea.css +1 -1
- package/dist/esm/styles/scrollbar.css +1 -1
- package/dist/esm/styles/select.css +1 -1
- package/dist/esm/styles/skeleton.css +1 -1
- package/dist/esm/styles/slider.css +1 -1
- package/dist/esm/styles/space.css +1 -1
- package/dist/esm/styles/splitter.css +1 -1
- package/dist/esm/styles/statistic.css +1 -1
- package/dist/esm/styles/steps.css +1 -1
- package/dist/esm/styles/switch.css +1 -1
- package/dist/esm/styles/table.css +1 -1
- package/dist/esm/styles/tabletanstack.css +1 -1
- package/dist/esm/styles/tabs.css +1 -1
- package/dist/esm/styles/tag.css +1 -1
- package/dist/esm/styles/textarea.css +1 -1
- package/dist/esm/styles/timeline.css +1 -1
- package/dist/esm/styles/timepicker.css +1 -1
- package/dist/esm/styles/timerangepicker.css +1 -1
- package/dist/esm/styles/tooltip.css +1 -1
- package/dist/esm/styles/tour.css +1 -1
- package/dist/esm/styles/transfer.css +1 -1
- package/dist/esm/styles/tree.css +1 -1
- package/dist/esm/styles/treeselect.css +1 -1
- package/dist/esm/styles/typography.css +1 -1
- package/dist/esm/styles/upload.css +1 -1
- package/dist/esm/styles/virtuallist.css +1 -1
- package/dist/esm/tabs/tabs.d.ts +4 -2
- package/dist/esm/tabs/tabs.d.ts.map +1 -1
- package/dist/esm/tabs/tabs.js +14 -8
- package/dist/esm/tabs/tabs.js.map +1 -1
- package/dist/esm/tailwind-tokens.d.ts.map +1 -1
- package/dist/esm/tailwind-tokens.js +1 -1
- package/dist/esm/tailwind-tokens.js.map +1 -1
- package/dist/esm/textarea/textarea.d.ts.map +1 -1
- package/dist/esm/textarea/textarea.js +50 -22
- package/dist/esm/textarea/textarea.js.map +1 -1
- package/dist/esm/theme.d.ts +15 -0
- package/dist/esm/theme.d.ts.map +1 -1
- package/dist/esm/theme.js +53 -29
- package/dist/esm/theme.js.map +1 -1
- package/dist/esm/timeline/timeline.d.ts.map +1 -1
- package/dist/esm/timeline/timeline.js +1 -1
- package/dist/esm/timeline/timeline.js.map +1 -1
- package/dist/esm/timepicker/time-panel.d.ts.map +1 -1
- package/dist/esm/timepicker/time-panel.js +8 -2
- package/dist/esm/timepicker/time-panel.js.map +1 -1
- package/dist/esm/transfer/transfer.d.ts.map +1 -1
- package/dist/esm/transfer/transfer.js +5 -5
- package/dist/esm/transfer/transfer.js.map +1 -1
- package/dist/esm/tree/tree.d.ts.map +1 -1
- package/dist/esm/tree/tree.js +13 -6
- package/dist/esm/tree/tree.js.map +1 -1
- package/dist/esm/treeselect/treeselect.d.ts.map +1 -1
- package/dist/esm/treeselect/treeselect.js +5 -4
- package/dist/esm/treeselect/treeselect.js.map +1 -1
- package/dist/esm/virtuallist/virtuallist.d.ts.map +1 -1
- package/dist/esm/virtuallist/virtuallist.js +9 -3
- package/dist/esm/virtuallist/virtuallist.js.map +1 -1
- package/dist/tailwind.css +1 -1
- package/package.json +1 -22
- package/dist/cjs/browser/modules/segmented/index.cjs.map +0 -1
- package/dist/cjs/browser/modules/segmented/segmented.cjs +0 -127
- package/dist/cjs/browser/modules/segmented/segmented.cjs.map +0 -1
- package/dist/cjs/browser/segmented.cjs +0 -2
- package/dist/cjs/segmented/index.cjs.map +0 -1
- package/dist/cjs/segmented/index.d.cts +0 -3
- package/dist/cjs/segmented/index.d.cts.map +0 -1
- package/dist/cjs/segmented/segmented.cjs +0 -125
- package/dist/cjs/segmented/segmented.cjs.map +0 -1
- package/dist/cjs/segmented/segmented.d.cts +0 -21
- package/dist/cjs/segmented/segmented.d.cts.map +0 -1
- package/dist/cjs/styles/components/segmented.css +0 -1
- package/dist/cjs/styles/segmented.css +0 -1
- package/dist/esm/browser/modules/segmented/index.js +0 -2
- package/dist/esm/browser/modules/segmented/segmented.js +0 -89
- package/dist/esm/browser/modules/segmented/segmented.js.map +0 -1
- package/dist/esm/browser/segmented.js +0 -2
- package/dist/esm/segmented/index.d.ts +0 -3
- package/dist/esm/segmented/index.d.ts.map +0 -1
- package/dist/esm/segmented/index.js +0 -2
- package/dist/esm/segmented/segmented.d.ts +0 -21
- package/dist/esm/segmented/segmented.d.ts.map +0 -1
- package/dist/esm/segmented/segmented.js +0 -87
- package/dist/esm/segmented/segmented.js.map +0 -1
- package/dist/esm/styles/components/segmented.css +0 -1
- package/dist/esm/styles/segmented.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree/tree.js","sources":["../../../src/tree/tree.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ChevronRight, File, Folder, FolderOpen, LoaderCircle } from 'lucide-react';\nimport {\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CheckboxControl as Checkbox } from '../checkbox/checkbox';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { estimateControlHeight } from '../density';\nimport { ResultControl as Result } from '../result/result';\nimport { classes } from '../shared/classes';\nimport { inertProps } from '../shared/inert';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { TreeDragRow, TreeDragScope } from './drag';\nimport { treeChecks, treeMatches, treeModel } from './model';\n\nexport interface TreeNode {\n key: string;\n title: ReactNode;\n children?: readonly TreeNode[];\n icon?: ReactNode;\n disabled?: boolean;\n selectable?: boolean;\n checkable?: boolean;\n disableCheckbox?: boolean;\n searchLabel?: string;\n isLeaf?: boolean;\n}\nexport interface TreeSelectInfo {\n node: TreeNode;\n selected: boolean;\n selectedNodes: readonly TreeNode[];\n}\nexport interface TreeCheckInfo {\n node: TreeNode;\n checked: boolean;\n checkedNodes: readonly TreeNode[];\n halfCheckedKeys: readonly string[];\n}\nexport interface TreeExpandInfo {\n node: TreeNode;\n expanded: boolean;\n}\nexport interface TreeDropInfo {\n node: TreeNode;\n target: TreeNode;\n position: 'before' | 'inside' | 'after';\n data: TreeNode[];\n}\nexport interface TreeProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect' | 'onDrop' | 'onLoad' | 'draggable'> {\n data: readonly TreeNode[];\n selectedKeys?: readonly string[];\n defaultSelectedKeys?: readonly string[];\n onSelect?: (keys: string[], info: TreeSelectInfo) => void;\n multiple?: boolean;\n selectable?: boolean;\n checkable?: boolean;\n checkStrictly?: boolean;\n checkedKeys?: readonly string[];\n defaultCheckedKeys?: readonly string[];\n onCheck?: (keys: string[], info: TreeCheckInfo) => void;\n expandedKeys?: readonly string[];\n defaultExpandedKeys?: readonly string[];\n defaultExpandAll?: boolean;\n onExpand?: (keys: string[], info: TreeExpandInfo) => void;\n disabled?: boolean;\n showLine?: boolean;\n showIcon?: boolean;\n searchValue?: string;\n filterTreeNode?: (node: TreeNode, query: string) => boolean;\n notFoundContent?: ReactNode;\n loadData?: (node: TreeNode, signal: AbortSignal) => Promise<readonly TreeNode[]>;\n cacheKey?: string | number;\n nodeRender?: (node: TreeNode) => ReactNode;\n onLoad?: (node: TreeNode, children: readonly TreeNode[]) => void;\n onLoadError?: (error: unknown, node: TreeNode) => void;\n virtual?: boolean;\n height?: number;\n itemHeight?: number;\n draggable?: boolean | ((node: TreeNode) => boolean);\n allowDrop?: (info: Omit<TreeDropInfo, 'data'>) => boolean;\n onDrop?: (info: TreeDropInfo) => void;\n}\nexport function TreeControl({\n data: suppliedData,\n selectedKeys,\n defaultSelectedKeys = [],\n onSelect,\n multiple = false,\n selectable = true,\n checkable = false,\n checkOnClick = false,\n expandOnClick = false,\n checkStrictly = false,\n checkedKeys,\n defaultCheckedKeys = [],\n onCheck,\n expandedKeys,\n defaultExpandedKeys = [],\n defaultExpandAll = false,\n onExpand,\n disabled = false,\n showLine = false,\n showIcon = false,\n searchValue = '',\n filterTreeNode,\n notFoundContent,\n loadData,\n cacheKey,\n nodeRender,\n onLoad,\n onLoadError,\n virtual = false,\n height = 320,\n itemHeight: itemHeightProp,\n draggable = false,\n allowDrop,\n onDrop,\n className,\n 'aria-label': label,\n ...props\n}: TreeProps & { checkOnClick?: boolean; expandOnClick?: boolean }) {\n const { messages, direction, theme, density } = useLeafConfig();\n const format = useFormattedText();\n const itemHeight = itemHeightProp ?? estimateControlHeight(theme, density) + 6;\n const [loaded, setLoaded] = useState<Map<string, readonly TreeNode[]>>(new Map());\n const [loading, setLoading] = useState<readonly string[]>([]);\n const requests = useRef(new Map<string, AbortController>());\n const latestLoad = useRef({ loadData, onLoad, onLoadError });\n latestLoad.current = { loadData, onLoad, onLoadError };\n // biome-ignore lint/correctness/useExhaustiveDependencies: Invalidate node caches whenever the supplied data, loader or cache version changes.\n useEffect(() => {\n for (const request of requests.current.values()) request.abort();\n requests.current.clear();\n setLoaded(new Map());\n setLoading([]);\n }, [suppliedData, loadData, cacheKey]);\n const data = useMemo(() => {\n const merge = (nodes: readonly TreeNode[]): TreeNode[] =>\n nodes.map((node) => {\n const children = node.children ?? loaded.get(node.key);\n return children\n ? { ...node, children: merge(children), isLeaf: children.length === 0 }\n : node;\n });\n return merge(suppliedData);\n }, [suppliedData, loaded]);\n useEffect(\n () => () => {\n for (const request of requests.current.values()) request.abort();\n requests.current.clear();\n },\n [],\n );\n const load = useCallback(\n (node: TreeNode) => {\n const callback = latestLoad.current.loadData;\n if (\n !callback ||\n node.isLeaf ||\n node.children !== undefined ||\n loaded.has(node.key) ||\n requests.current.has(node.key)\n )\n return;\n const request = new AbortController();\n requests.current.set(node.key, request);\n setLoading((previous) => [...previous, node.key]);\n Promise.resolve()\n .then(() => (request.signal.aborted ? [] : callback(node, request.signal)))\n .then((children) => {\n if (request.signal.aborted) return;\n setLoaded((previous) => new Map(previous).set(node.key, children ?? []));\n latestLoad.current.onLoad?.(node, children ?? []);\n })\n .catch((reason) => {\n if (!request.signal.aborted) latestLoad.current.onLoadError?.(reason, node);\n })\n .finally(() => {\n // A replayed effect may have started a newer request for the same node.\n if (requests.current.get(node.key) !== request) return;\n requests.current.delete(node.key);\n if (!request.signal.aborted)\n setLoading((previous) => previous.filter((key) => key !== node.key));\n });\n },\n [loaded],\n );\n const records = useMemo(() => treeModel(data), [data]);\n const [selection, setSelection] = useState<readonly string[]>(defaultSelectedKeys);\n const [checks, setChecks] = useState<readonly string[]>(defaultCheckedKeys);\n const [expansion, setExpansion] = useState<readonly string[]>(() =>\n defaultExpandAll ? [...records.keys()] : defaultExpandedKeys,\n );\n const selected = selectedKeys ?? selection;\n const expanded = new Set(expandedKeys ?? expansion);\n useEffect(() => {\n if (disabled) return;\n for (const key of expandedKeys ?? expansion) {\n const record = records.get(key);\n if (record) load(record.node);\n }\n }, [records, expandedKeys, expansion, disabled, load]);\n const state = useMemo(\n () => treeChecks(records, checkedKeys ?? checks, checkStrictly),\n [records, checkedKeys, checks, checkStrictly],\n );\n const checked = new Set(state.checked);\n const half = new Set(state.half);\n const matches = useMemo(\n () => treeMatches(records, searchValue, filterTreeNode),\n [records, searchValue, filterTreeNode],\n );\n const [active, setActive] = useState<string>();\n const elements = useRef(new Map<string, HTMLDivElement>());\n const anchor = useRef<string | undefined>(undefined);\n const typeAhead = useRef({ text: '', time: 0 });\n const visible: TreeNode[] = [];\n const isExpanded = (key: string) => (matches ? matches.visible.has(key) : expanded.has(key));\n const collect = (nodes: readonly TreeNode[]) => {\n for (const node of nodes) {\n if (matches && !matches.visible.has(node.key)) continue;\n visible.push(node);\n if (isExpanded(node.key) && node.children) collect(node.children);\n }\n };\n collect(data);\n const root = useRef<HTMLDivElement>(null);\n const virtualizer = useVirtualizer({\n count: visible.length,\n getScrollElement: () => root.current,\n estimateSize: () => Math.max(24, itemHeight),\n overscan: 5,\n enabled: virtual,\n initialRect: { height, width: 400 },\n getItemKey: (index) => visible[index]?.key ?? index,\n });\n const focusKey = visible.some((node) => node.key === active)\n ? active\n : (visible.find((node) => selected.includes(node.key))?.key ?? visible[0]?.key);\n const focus = (key?: string) => {\n if (key) {\n setActive(key);\n if (virtual) {\n const index = visible.findIndex((node) => node.key === key);\n if (index >= 0) virtualizer.scrollToIndex(index, { align: 'auto' });\n requestAnimationFrame(() => elements.current.get(key)?.focus());\n }\n elements.current.get(key)?.focus();\n }\n };\n const expand = (node: TreeNode, next: boolean) => {\n if (disabled) return;\n if (next) load(node);\n const keys = next\n ? [...new Set([...expanded, node.key])]\n : [...expanded].filter((key) => key !== node.key);\n if (expandedKeys === undefined) setExpansion(keys);\n onExpand?.(keys, { node, expanded: next });\n };\n const select = (\n node: TreeNode,\n modifiers?: { shiftKey: boolean; ctrlKey: boolean; metaKey: boolean },\n ) => {\n if (disabled || node.disabled || !selectable || node.selectable === false) return;\n let next = selected.includes(node.key) ? [] : [node.key];\n if (multiple) {\n if (modifiers?.shiftKey && anchor.current) {\n const first = visible.findIndex((item) => item.key === anchor.current);\n const last = visible.indexOf(node);\n next = visible\n .slice(Math.max(0, Math.min(first, last)), Math.max(first, last) + 1)\n .filter((item) => !item.disabled && item.selectable !== false)\n .map((item) => item.key);\n } else\n next = selected.includes(node.key)\n ? selected.filter((key) => key !== node.key)\n : [...selected, node.key];\n }\n if (!modifiers?.shiftKey) anchor.current = node.key;\n if (selectedKeys === undefined) setSelection(next);\n onSelect?.(next, {\n node,\n selected: next.includes(node.key),\n selectedNodes: next.flatMap((key) => records.get(key)?.node ?? []),\n });\n };\n const check = (node: TreeNode) => {\n if (disabled || node.disabled || node.disableCheckbox || node.checkable === false) return;\n const next = treeChecks(records, state.checked, checkStrictly, {\n key: node.key,\n checked: !checked.has(node.key),\n });\n if (checkedKeys === undefined) setChecks(next.checked);\n onCheck?.(next.checked, {\n node,\n checked: !checked.has(node.key),\n checkedNodes: next.checked.flatMap((key) => records.get(key)?.node ?? []),\n halfCheckedKeys: next.half,\n });\n };\n const keyDown = (event: KeyboardEvent<HTMLDivElement>, node: TreeNode) => {\n if (\n event.target !== event.currentTarget &&\n (event.target as HTMLElement).closest(\n 'input,textarea,select,button,a[href],[contenteditable=\"true\"]',\n )\n )\n return;\n if (event.defaultPrevented || (event.target as HTMLElement).closest('.leaf-tree__drag-handle'))\n return;\n event.stopPropagation();\n const index = visible.indexOf(node);\n const hasChildren = Boolean(\n node.children?.length || (loadData && !node.isLeaf && node.children === undefined),\n );\n if (event.key === 'ArrowDown') focus(visible[Math.min(index + 1, visible.length - 1)]?.key);\n else if (event.key === 'ArrowUp') focus(visible[Math.max(0, index - 1)]?.key);\n else if (event.key === 'Home') focus(visible[0]?.key);\n else if (event.key === 'End') focus(visible.at(-1)?.key);\n else if (event.key === (direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight')) {\n if (hasChildren && !isExpanded(node.key)) expand(node, true);\n else if (hasChildren)\n focus(node.children?.find((child) => !matches || matches.visible.has(child.key))?.key);\n } else if (event.key === (direction === 'rtl' ? 'ArrowRight' : 'ArrowLeft')) {\n if (hasChildren && isExpanded(node.key)) expand(node, false);\n else focus(records.get(node.key)?.parent);\n } else if (event.key === ' ' || event.key === 'Enter') {\n if (checkable && (event.key === ' ' || checkOnClick)) check(node);\n else if (expandOnClick && hasChildren && (!selectable || node.selectable === false))\n expand(node, !isExpanded(node.key));\n else select(node, event);\n } else if (event.key.length === 1 && !event.altKey && !event.ctrlKey && !event.metaKey) {\n const now = Date.now();\n typeAhead.current = {\n text:\n (now - typeAhead.current.time < 600 ? typeAhead.current.text : '') +\n event.key.toLocaleLowerCase(),\n time: now,\n };\n const ordered = [...visible.slice(index + 1), ...visible.slice(0, index + 1)];\n focus(\n ordered.find((item) =>\n (item.searchLabel ?? (typeof item.title === 'string' ? item.title : item.key))\n .toLocaleLowerCase()\n .startsWith(typeAhead.current.text),\n )?.key,\n );\n } else return;\n event.preventDefault();\n };\n const renderNode = (\n node: TreeNode,\n level: number,\n index: number,\n setSize: number,\n flat = false,\n ): ReactNode => {\n const hasChildren = Boolean(\n node.children?.length || (loadData && !node.isLeaf && node.children === undefined),\n );\n const opened = hasChildren && isExpanded(node.key);\n const inactive = disabled || node.disabled;\n const Icon = hasChildren ? (opened ? FolderOpen : Folder) : File;\n return (\n <div\n role=\"treeitem\"\n key={node.key}\n aria-level={level}\n aria-label={node.searchLabel ?? (typeof node.title === 'string' ? node.title : undefined)}\n aria-posinset={index + 1}\n aria-setsize={setSize}\n aria-expanded={hasChildren ? opened : undefined}\n aria-selected={\n selectable && node.selectable !== false ? selected.includes(node.key) : undefined\n }\n aria-checked={\n checkable && node.checkable !== false\n ? half.has(node.key)\n ? 'mixed'\n : checked.has(node.key)\n : undefined\n }\n aria-disabled={inactive || undefined}\n tabIndex={focusKey === node.key ? 0 : -1}\n className=\"leaf-tree__item\"\n data-node-key={node.key}\n ref={(element) => {\n if (element) elements.current.set(node.key, element);\n else elements.current.delete(node.key);\n }}\n onFocus={(event) => {\n if (event.target === event.currentTarget) setActive(node.key);\n }}\n onKeyDown={(event) => keyDown(event, node)}\n onClick={(event) => {\n event.stopPropagation();\n if (\n !event.currentTarget.firstElementChild?.contains(event.target as Node) ||\n (event.target as HTMLElement).closest(\n '.leaf-tree__check, .leaf-tree__drag-handle, input, textarea, select, button, a[href], [contenteditable=\"true\"]',\n )\n )\n return;\n focus(node.key);\n if (checkable && checkOnClick) check(node);\n else if (expandOnClick && hasChildren && (!selectable || node.selectable === false))\n expand(node, !opened);\n else select(node, event);\n }}\n >\n <TreeRow\n enabled={Boolean(draggable)}\n node={node}\n draggable={\n !disabled && Boolean(typeof draggable === 'function' ? draggable(node) : draggable)\n }\n >\n {' '}\n <div\n className=\"leaf-tree__row\"\n data-selected={selected.includes(node.key) || undefined}\n data-disabled={inactive || undefined}\n style={{ paddingInlineStart: `${(level - 1) * 20 + 4}px` }}\n >\n <button\n type=\"button\"\n className=\"leaf-tree__toggle\"\n tabIndex={-1}\n aria-label={format(opened ? 'tree.collapseNode' : 'tree.expandNode', {\n label: node.searchLabel ?? (typeof node.title === 'string' ? node.title : node.key),\n })}\n disabled={disabled}\n data-hidden={!hasChildren || undefined}\n data-open={opened || undefined}\n aria-hidden={!hasChildren || undefined}\n onClick={(event) => {\n event.stopPropagation();\n focus(node.key);\n expand(node, !opened);\n }}\n >\n {loading.includes(node.key) ? (\n <LoaderCircle size={14} className=\"leaf-tree__spinner\" aria-hidden=\"true\" />\n ) : (\n hasChildren && <ChevronRight size={14} aria-hidden=\"true\" />\n )}\n </button>\n {checkable && node.checkable !== false && (\n <span className=\"leaf-tree__check\">\n <Checkbox\n checked={checked.has(node.key)}\n indeterminate={half.has(node.key)}\n disabled={inactive || node.disableCheckbox}\n tabIndex={-1}\n aria-label={\n node.searchLabel ?? (typeof node.title === 'string' ? node.title : node.key)\n }\n onChange={() => {\n focus(node.key);\n check(node);\n }}\n />\n </span>\n )}\n {(showIcon || node.icon) && (\n <span className=\"leaf-tree__icon\" aria-hidden=\"true\">\n {node.icon ?? <Icon size={16} />}\n </span>\n )}\n <span\n className=\"leaf-tree__title\"\n data-match={matches?.matched.has(node.key) || undefined}\n >\n {nodeRender?.(node) ?? node.title}\n </span>\n </div>\n </TreeRow>\n {hasChildren && !flat && (\n <TreeGroup\n open={opened}\n style={{ '--leaf-tree-line-left': `${(level - 1) * 20 + 14}px` } as CSSProperties}\n >\n {() => renderNodes(node.children ?? [], level + 1)}\n </TreeGroup>\n )}\n </div>\n );\n };\n\n const renderNodes = (nodes: readonly TreeNode[], level: number): ReactNode => {\n const siblings = nodes.filter((node) => !matches || matches.visible.has(node.key));\n return siblings.map((node, index) => renderNode(node, level, index, siblings.length));\n };\n const content = (\n <div\n {...props}\n ref={root}\n style={{ ...(virtual ? { height, overflow: 'auto' } : {}), ...props.style }}\n role=\"tree\"\n aria-label={label ?? messages.tree.label}\n aria-multiselectable={multiple || checkable || undefined}\n aria-disabled={disabled || undefined}\n className={classes('leaf-tree', showLine && 'leaf-tree--lines', className)}\n >\n {visible.length ? (\n virtual ? (\n <div style={{ position: 'relative', height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((row) => {\n const node = visible[row.index];\n if (!node) return null;\n const record = records.get(node.key);\n const siblings = (\n record?.parent ? (records.get(record.parent)?.node.children ?? []) : data\n ).filter((item) => !matches || matches.visible.has(item.key));\n return (\n <div\n key={node.key}\n ref={virtualizer.measureElement}\n data-index={row.index}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${row.start}px)`,\n }}\n >\n {renderNode(\n node,\n record?.level ?? 1,\n siblings.findIndex((item) => item.key === node.key),\n siblings.length,\n true,\n )}\n </div>\n );\n })}\n </div>\n ) : (\n renderNodes(data, 1)\n )\n ) : (\n (notFoundContent ?? <Result size=\"sm\" title={messages.select.empty} icon={null} />)\n )}\n </div>\n );\n return draggable ? (\n <TreeDragScope data={data} nodes={records} allowDrop={allowDrop} onDrop={onDrop}>\n {content}\n </TreeDragScope>\n ) : (\n content\n );\n}\n\nfunction TreeGroup({\n open,\n style,\n children,\n}: {\n open: boolean;\n style: CSSProperties;\n children: () => ReactNode;\n}) {\n const [visited, setVisited] = useState(open);\n if (open && !visited) setVisited(true);\n return (\n <fieldset\n className=\"leaf-tree__group\"\n style={style}\n aria-hidden={!open || undefined}\n {...inertProps(!open)}\n data-open={open || undefined}\n >\n <div className=\"leaf-tree__group-inner\">\n <div className=\"leaf-tree__group-content\">{visited && children()}</div>\n </div>\n </fieldset>\n );\n}\n\nfunction TreeRow({\n enabled,\n node,\n draggable,\n children,\n}: {\n enabled: boolean;\n node: TreeNode;\n draggable: boolean;\n children: ReactNode;\n}) {\n return enabled ? (\n <TreeDragRow node={node} draggable={draggable}>\n {children}\n </TreeDragRow>\n ) : (\n children\n );\n}\n\nexport function Tree(rawProps: TreeProps) {\n const props = useComponentProps('Tree', rawProps);\n return <TreeControl {...props} />;\n}\n"],"names":["TreeControl","suppliedData","selectedKeys","defaultSelectedKeys","onSelect","multiple","selectable","checkable","checkOnClick","expandOnClick","checkStrictly","checkedKeys","defaultCheckedKeys","onCheck","expandedKeys","defaultExpandedKeys","defaultExpandAll","onExpand","disabled","showLine","showIcon","searchValue","filterTreeNode","notFoundContent","loadData","cacheKey","nodeRender","onLoad","onLoadError","virtual","height","itemHeightProp","draggable","allowDrop","onDrop","className","label","props","messages","direction","theme","density","useLeafConfig","format","useFormattedText","itemHeight","estimateControlHeight","loaded","setLoaded","useState","Map","loading","setLoading","requests","useRef","latestLoad","useEffect","request","data","useMemo","merge","nodes","node","children","load","useCallback","callback","undefined","AbortController","previous","Promise","reason","key","records","treeModel","selection","setSelection","checks","setChecks","expansion","setExpansion","selected","expanded","Set","record","state","treeChecks","checked","half","matches","treeMatches","active","setActive","elements","anchor","typeAhead","visible","isExpanded","collect","root","virtualizer","useVirtualizer","Math","index","focusKey","focus","requestAnimationFrame","expand","next","keys","select","modifiers","first","item","last","check","keyDown","event","hasChildren","Boolean","child","now","Date","ordered","renderNode","level","setSize","flat","opened","inactive","Icon","FolderOpen","Folder","File","element","TreeRow","LoaderCircle","ChevronRight","Checkbox","TreeGroup","renderNodes","siblings","content","classes","row","Result","TreeDragScope","open","style","visited","setVisited","inertProps","enabled","TreeDragRow","Tree","rawProps","useComponentProps"],"mappings":";;;;;;;;;;;;;;;AA4FO,SAASA,YAAY,EAC1B,MAAMC,YAAY,EAClBC,YAAY,EACZC,sBAAsB,EAAE,EACxBC,QAAQ,EACRC,WAAW,KAAK,EAChBC,aAAa,IAAI,EACjBC,YAAY,KAAK,EACjBC,eAAe,KAAK,EACpBC,gBAAgB,KAAK,EACrBC,gBAAgB,KAAK,EACrBC,WAAW,EACXC,qBAAqB,EAAE,EACvBC,OAAO,EACPC,YAAY,EACZC,sBAAsB,EAAE,EACxBC,mBAAmB,KAAK,EACxBC,QAAQ,EACRC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,cAAc,EAAE,EAChBC,cAAc,EACdC,eAAe,EACfC,QAAQ,EACRC,QAAQ,EACRC,UAAU,EACVC,MAAM,EACNC,WAAW,EACXC,UAAU,KAAK,EACfC,SAAS,GAAG,EACZ,YAAYC,cAAc,EAC1BC,YAAY,KAAK,EACjBC,SAAS,EACTC,MAAM,EACNC,SAAS,EACT,cAAcC,KAAK,EACnB,GAAGC,OAC6D;IAChE,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGC;IAChD,MAAMC,SAASC;IACf,MAAMC,aAAad,kBAAkBe,sBAAsBN,OAAOC,WAAW;IAC7E,MAAM,CAACM,QAAQC,UAAU,GAAGC,SAA2C,IAAIC;IAC3E,MAAM,CAACC,SAASC,WAAW,GAAGH,SAA4B,EAAE;IAC5D,MAAMI,WAAWC,OAAO,IAAIJ;IAC5B,MAAMK,aAAaD,OAAO;QAAE9B;QAAUG;QAAQC;IAAY;IAC1D2B,WAAW,OAAO,GAAG;QAAE/B;QAAUG;QAAQC;IAAY;IAErD4B,UAAU;QACR,KAAK,MAAMC,WAAWJ,SAAS,OAAO,CAAC,MAAM,GAAII,QAAQ,KAAK;QAC9DJ,SAAS,OAAO,CAAC,KAAK;QACtBL,UAAU,IAAIE;QACdE,WAAW,EAAE;IACf,GAAG;QAACnD;QAAcuB;QAAUC;KAAS;IACrC,MAAMiC,OAAOC,QAAQ;QACnB,MAAMC,QAAQ,CAACC,QACbA,MAAM,GAAG,CAAC,CAACC;gBACT,MAAMC,WAAWD,KAAK,QAAQ,IAAIf,OAAO,GAAG,CAACe,KAAK,GAAG;gBACrD,OAAOC,WACH;oBAAE,GAAGD,IAAI;oBAAE,UAAUF,MAAMG;oBAAW,QAAQA,AAAoB,MAApBA,SAAS,MAAM;gBAAO,IACpED;YACN;QACF,OAAOF,MAAM3D;IACf,GAAG;QAACA;QAAc8C;KAAO;IACzBS,UACE,IAAM;YACJ,KAAK,MAAMC,WAAWJ,SAAS,OAAO,CAAC,MAAM,GAAII,QAAQ,KAAK;YAC9DJ,SAAS,OAAO,CAAC,KAAK;QACxB,GACA,EAAE;IAEJ,MAAMW,OAAOC,YACX,CAACH;QACC,MAAMI,WAAWX,WAAW,OAAO,CAAC,QAAQ;QAC5C,IACE,CAACW,YACDJ,KAAK,MAAM,IACXA,AAAkBK,WAAlBL,KAAK,QAAQ,IACbf,OAAO,GAAG,CAACe,KAAK,GAAG,KACnBT,SAAS,OAAO,CAAC,GAAG,CAACS,KAAK,GAAG,GAE7B;QACF,MAAML,UAAU,IAAIW;QACpBf,SAAS,OAAO,CAAC,GAAG,CAACS,KAAK,GAAG,EAAEL;QAC/BL,WAAW,CAACiB,WAAa;mBAAIA;gBAAUP,KAAK,GAAG;aAAC;QAChDQ,QAAQ,OAAO,GACZ,IAAI,CAAC,IAAOb,QAAQ,MAAM,CAAC,OAAO,GAAG,EAAE,GAAGS,SAASJ,MAAML,QAAQ,MAAM,GACvE,IAAI,CAAC,CAACM;YACL,IAAIN,QAAQ,MAAM,CAAC,OAAO,EAAE;YAC5BT,UAAU,CAACqB,WAAa,IAAInB,IAAImB,UAAU,GAAG,CAACP,KAAK,GAAG,EAAEC,YAAY,EAAE;YACtER,WAAW,OAAO,CAAC,MAAM,GAAGO,MAAMC,YAAY,EAAE;QAClD,GACC,KAAK,CAAC,CAACQ;YACN,IAAI,CAACd,QAAQ,MAAM,CAAC,OAAO,EAAEF,WAAW,OAAO,CAAC,WAAW,GAAGgB,QAAQT;QACxE,GACC,OAAO,CAAC;YAEP,IAAIT,SAAS,OAAO,CAAC,GAAG,CAACS,KAAK,GAAG,MAAML,SAAS;YAChDJ,SAAS,OAAO,CAAC,MAAM,CAACS,KAAK,GAAG;YAChC,IAAI,CAACL,QAAQ,MAAM,CAAC,OAAO,EACzBL,WAAW,CAACiB,WAAaA,SAAS,MAAM,CAAC,CAACG,MAAQA,QAAQV,KAAK,GAAG;QACtE;IACJ,GACA;QAACf;KAAO;IAEV,MAAM0B,UAAUd,QAAQ,IAAMe,UAAUhB,OAAO;QAACA;KAAK;IACrD,MAAM,CAACiB,WAAWC,aAAa,GAAG3B,SAA4B9C;IAC9D,MAAM,CAAC0E,QAAQC,UAAU,GAAG7B,SAA4BrC;IACxD,MAAM,CAACmE,WAAWC,aAAa,GAAG/B,SAA4B,IAC5DjC,mBAAmB;eAAIyD,QAAQ,IAAI;SAAG,GAAG1D;IAE3C,MAAMkE,WAAW/E,gBAAgByE;IACjC,MAAMO,WAAW,IAAIC,IAAIrE,gBAAgBiE;IACzCvB,UAAU;QACR,IAAItC,UAAU;QACd,KAAK,MAAMsD,OAAO1D,gBAAgBiE,UAAW;YAC3C,MAAMK,SAASX,QAAQ,GAAG,CAACD;YAC3B,IAAIY,QAAQpB,KAAKoB,OAAO,IAAI;QAC9B;IACF,GAAG;QAACX;QAAS3D;QAAciE;QAAW7D;QAAU8C;KAAK;IACrD,MAAMqB,QAAQ1B,QACZ,IAAM2B,WAAWb,SAAS9D,eAAekE,QAAQnE,gBACjD;QAAC+D;QAAS9D;QAAakE;QAAQnE;KAAc;IAE/C,MAAM6E,UAAU,IAAIJ,IAAIE,MAAM,OAAO;IACrC,MAAMG,OAAO,IAAIL,IAAIE,MAAM,IAAI;IAC/B,MAAMI,UAAU9B,QACd,IAAM+B,YAAYjB,SAASpD,aAAaC,iBACxC;QAACmD;QAASpD;QAAaC;KAAe;IAExC,MAAM,CAACqE,QAAQC,UAAU,GAAG3C;IAC5B,MAAM4C,WAAWvC,OAAO,IAAIJ;IAC5B,MAAM4C,SAASxC,OAA2Ba;IAC1C,MAAM4B,YAAYzC,OAAO;QAAE,MAAM;QAAI,MAAM;IAAE;IAC7C,MAAM0C,UAAsB,EAAE;IAC9B,MAAMC,aAAa,CAACzB,MAAiBiB,UAAUA,QAAQ,OAAO,CAAC,GAAG,CAACjB,OAAOU,SAAS,GAAG,CAACV;IACvF,MAAM0B,UAAU,CAACrC;QACf,KAAK,MAAMC,QAAQD,MACjB,IAAI4B,CAAAA,WAAYA,QAAQ,OAAO,CAAC,GAAG,CAAC3B,KAAK,GAAG;YAC5CkC,QAAQ,IAAI,CAAClC;YACb,IAAImC,WAAWnC,KAAK,GAAG,KAAKA,KAAK,QAAQ,EAAEoC,QAAQpC,KAAK,QAAQ;;IAEpE;IACAoC,QAAQxC;IACR,MAAMyC,OAAO7C,OAAuB;IACpC,MAAM8C,cAAcC,eAAe;QACjC,OAAOL,QAAQ,MAAM;QACrB,kBAAkB,IAAMG,KAAK,OAAO;QACpC,cAAc,IAAMG,KAAK,GAAG,CAAC,IAAIzD;QACjC,UAAU;QACV,SAAShB;QACT,aAAa;YAAEC;YAAQ,OAAO;QAAI;QAClC,YAAY,CAACyE,QAAUP,OAAO,CAACO,MAAM,EAAE,OAAOA;IAChD;IACA,MAAMC,WAAWR,QAAQ,IAAI,CAAC,CAAClC,OAASA,KAAK,GAAG,KAAK6B,UACjDA,SACCK,QAAQ,IAAI,CAAC,CAAClC,OAASmB,SAAS,QAAQ,CAACnB,KAAK,GAAG,IAAI,OAAOkC,OAAO,CAAC,EAAE,EAAE;IAC7E,MAAMS,QAAQ,CAACjC;QACb,IAAIA,KAAK;YACPoB,UAAUpB;YACV,IAAI3C,SAAS;gBACX,MAAM0E,QAAQP,QAAQ,SAAS,CAAC,CAAClC,OAASA,KAAK,GAAG,KAAKU;gBACvD,IAAI+B,SAAS,GAAGH,YAAY,aAAa,CAACG,OAAO;oBAAE,OAAO;gBAAO;gBACjEG,sBAAsB,IAAMb,SAAS,OAAO,CAAC,GAAG,CAACrB,MAAM;YACzD;YACAqB,SAAS,OAAO,CAAC,GAAG,CAACrB,MAAM;QAC7B;IACF;IACA,MAAMmC,SAAS,CAAC7C,MAAgB8C;QAC9B,IAAI1F,UAAU;QACd,IAAI0F,MAAM5C,KAAKF;QACf,MAAM+C,OAAOD,OACT;eAAI,IAAIzB,IAAI;mBAAID;gBAAUpB,KAAK,GAAG;aAAC;SAAE,GACrC;eAAIoB;SAAS,CAAC,MAAM,CAAC,CAACV,MAAQA,QAAQV,KAAK,GAAG;QAClD,IAAIhD,AAAiBqD,WAAjBrD,cAA4BkE,aAAa6B;QAC7C5F,WAAW4F,MAAM;YAAE/C;YAAM,UAAU8C;QAAK;IAC1C;IACA,MAAME,SAAS,CACbhD,MACAiD;QAEA,IAAI7F,YAAY4C,KAAK,QAAQ,IAAI,CAACxD,cAAcwD,AAAoB,UAApBA,KAAK,UAAU,EAAY;QAC3E,IAAI8C,OAAO3B,SAAS,QAAQ,CAACnB,KAAK,GAAG,IAAI,EAAE,GAAG;YAACA,KAAK,GAAG;SAAC;QACxD,IAAIzD,UACF,IAAI0G,WAAW,YAAYjB,OAAO,OAAO,EAAE;YACzC,MAAMkB,QAAQhB,QAAQ,SAAS,CAAC,CAACiB,OAASA,KAAK,GAAG,KAAKnB,OAAO,OAAO;YACrE,MAAMoB,OAAOlB,QAAQ,OAAO,CAAClC;YAC7B8C,OAAOZ,QACJ,KAAK,CAACM,KAAK,GAAG,CAAC,GAAGA,KAAK,GAAG,CAACU,OAAOE,QAAQZ,KAAK,GAAG,CAACU,OAAOE,QAAQ,GAClE,MAAM,CAAC,CAACD,OAAS,CAACA,KAAK,QAAQ,IAAIA,AAAoB,UAApBA,KAAK,UAAU,EAClD,GAAG,CAAC,CAACA,OAASA,KAAK,GAAG;QAC3B,OACEL,OAAO3B,SAAS,QAAQ,CAACnB,KAAK,GAAG,IAC7BmB,SAAS,MAAM,CAAC,CAACT,MAAQA,QAAQV,KAAK,GAAG,IACzC;eAAImB;YAAUnB,KAAK,GAAG;SAAC;QAE/B,IAAI,CAACiD,WAAW,UAAUjB,OAAO,OAAO,GAAGhC,KAAK,GAAG;QACnD,IAAI5D,AAAiBiE,WAAjBjE,cAA4B0E,aAAagC;QAC7CxG,WAAWwG,MAAM;YACf9C;YACA,UAAU8C,KAAK,QAAQ,CAAC9C,KAAK,GAAG;YAChC,eAAe8C,KAAK,OAAO,CAAC,CAACpC,MAAQC,QAAQ,GAAG,CAACD,MAAM,QAAQ,EAAE;QACnE;IACF;IACA,MAAM2C,QAAQ,CAACrD;QACb,IAAI5C,YAAY4C,KAAK,QAAQ,IAAIA,KAAK,eAAe,IAAIA,AAAmB,UAAnBA,KAAK,SAAS,EAAY;QACnF,MAAM8C,OAAOtB,WAAWb,SAASY,MAAM,OAAO,EAAE3E,eAAe;YAC7D,KAAKoD,KAAK,GAAG;YACb,SAAS,CAACyB,QAAQ,GAAG,CAACzB,KAAK,GAAG;QAChC;QACA,IAAInD,AAAgBwD,WAAhBxD,aAA2BmE,UAAU8B,KAAK,OAAO;QACrD/F,UAAU+F,KAAK,OAAO,EAAE;YACtB9C;YACA,SAAS,CAACyB,QAAQ,GAAG,CAACzB,KAAK,GAAG;YAC9B,cAAc8C,KAAK,OAAO,CAAC,OAAO,CAAC,CAACpC,MAAQC,QAAQ,GAAG,CAACD,MAAM,QAAQ,EAAE;YACxE,iBAAiBoC,KAAK,IAAI;QAC5B;IACF;IACA,MAAMQ,UAAU,CAACC,OAAsCvD;QACrD,IACEuD,MAAM,MAAM,KAAKA,MAAM,aAAa,IACnCA,MAAM,MAAM,CAAiB,OAAO,CACnC,kEAGF;QACF,IAAIA,MAAM,gBAAgB,IAAKA,MAAM,MAAM,CAAiB,OAAO,CAAC,4BAClE;QACFA,MAAM,eAAe;QACrB,MAAMd,QAAQP,QAAQ,OAAO,CAAClC;QAC9B,MAAMwD,cAAcC,QAClBzD,KAAK,QAAQ,EAAE,UAAWtC,YAAY,CAACsC,KAAK,MAAM,IAAIA,AAAkBK,WAAlBL,KAAK,QAAQ;QAErE,IAAIuD,AAAc,gBAAdA,MAAM,GAAG,EAAkBZ,MAAMT,OAAO,CAACM,KAAK,GAAG,CAACC,QAAQ,GAAGP,QAAQ,MAAM,GAAG,GAAG,EAAE;aAClF,IAAIqB,AAAc,cAAdA,MAAM,GAAG,EAAgBZ,MAAMT,OAAO,CAACM,KAAK,GAAG,CAAC,GAAGC,QAAQ,GAAG,EAAE;aACpE,IAAIc,AAAc,WAAdA,MAAM,GAAG,EAAaZ,MAAMT,OAAO,CAAC,EAAE,EAAE;aAC5C,IAAIqB,AAAc,UAAdA,MAAM,GAAG,EAAYZ,MAAMT,QAAQ,EAAE,CAAC,KAAK;aAC/C,IAAIqB,MAAM,GAAG,KAAM9E,CAAAA,AAAc,UAAdA,YAAsB,cAAc,YAAW,GACrE;YAAA,IAAI+E,eAAe,CAACrB,WAAWnC,KAAK,GAAG,GAAG6C,OAAO7C,MAAM;iBAClD,IAAIwD,aACPb,MAAM3C,KAAK,QAAQ,EAAE,KAAK,CAAC0D,QAAU,CAAC/B,WAAWA,QAAQ,OAAO,CAAC,GAAG,CAAC+B,MAAM,GAAG,IAAI;QAAI,OACnF,IAAIH,MAAM,GAAG,KAAM9E,CAAAA,AAAc,UAAdA,YAAsB,eAAe,WAAU,GACvE,IAAI+E,eAAerB,WAAWnC,KAAK,GAAG,GAAG6C,OAAO7C,MAAM;aACjD2C,MAAMhC,QAAQ,GAAG,CAACX,KAAK,GAAG,GAAG;aAC7B,IAAIuD,AAAc,QAAdA,MAAM,GAAG,IAAYA,AAAc,YAAdA,MAAM,GAAG,EACvC,IAAI9G,aAAc8G,CAAAA,AAAc,QAAdA,MAAM,GAAG,IAAY7G,YAAW,GAAI2G,MAAMrD;aACvD,IAAIrD,iBAAiB6G,eAAgB,EAAChH,cAAcwD,AAAoB,UAApBA,KAAK,UAAU,AAAS,GAC/E6C,OAAO7C,MAAM,CAACmC,WAAWnC,KAAK,GAAG;aAC9BgD,OAAOhD,MAAMuD;aACoE;YAAjF,IAAIA,AAAqB,MAArBA,MAAM,GAAG,CAAC,MAAM,IAAWA,MAAM,MAAM,IAAKA,MAAM,OAAO,IAAKA,MAAM,OAAO,EAgB/E;YAfL,MAAMI,MAAMC,KAAK,GAAG;YACpB3B,UAAU,OAAO,GAAG;gBAClB,MACG0B,AAAAA,CAAAA,MAAM1B,UAAU,OAAO,CAAC,IAAI,GAAG,MAAMA,UAAU,OAAO,CAAC,IAAI,GAAG,EAAC,IAChEsB,MAAM,GAAG,CAAC,iBAAiB;gBAC7B,MAAMI;YACR;YACA,MAAME,UAAU;mBAAI3B,QAAQ,KAAK,CAACO,QAAQ;mBAAOP,QAAQ,KAAK,CAAC,GAAGO,QAAQ;aAAG;YAC7EE,MACEkB,QAAQ,IAAI,CAAC,CAACV,OACXA,AAAAA,CAAAA,KAAK,WAAW,IAAK,CAAsB,YAAtB,OAAOA,KAAK,KAAK,GAAgBA,KAAK,KAAK,GAAGA,KAAK,GAAE,GACxE,iBAAiB,GACjB,UAAU,CAAClB,UAAU,OAAO,CAAC,IAAI,IACnC;QAEP;QACAsB,MAAM,cAAc;IACtB;IACA,MAAMO,aAAa,CACjB9D,MACA+D,OACAtB,OACAuB,SACAC,OAAO,KAAK;QAEZ,MAAMT,cAAcC,QAClBzD,KAAK,QAAQ,EAAE,UAAWtC,YAAY,CAACsC,KAAK,MAAM,IAAIA,AAAkBK,WAAlBL,KAAK,QAAQ;QAErE,MAAMkE,SAASV,eAAerB,WAAWnC,KAAK,GAAG;QACjD,MAAMmE,WAAW/G,YAAY4C,KAAK,QAAQ;QAC1C,MAAMoE,OAAOZ,cAAeU,SAASG,aAAaC,SAAUC;QAC5D,OAAO,WAAP,GACE,KAAC;YACC,MAAK;YAEL,cAAYR;YACZ,cAAY/D,KAAK,WAAW,IAAK,CAAsB,YAAtB,OAAOA,KAAK,KAAK,GAAgBA,KAAK,KAAK,GAAGK,MAAQ;YACvF,iBAAeoC,QAAQ;YACvB,gBAAcuB;YACd,iBAAeR,cAAcU,SAAS7D;YACtC,iBACE7D,cAAcwD,AAAoB,UAApBA,KAAK,UAAU,GAAamB,SAAS,QAAQ,CAACnB,KAAK,GAAG,IAAIK;YAE1E,gBACE5D,aAAauD,AAAmB,UAAnBA,KAAK,SAAS,GACvB0B,KAAK,GAAG,CAAC1B,KAAK,GAAG,IACf,UACAyB,QAAQ,GAAG,CAACzB,KAAK,GAAG,IACtBK;YAEN,iBAAe8D,YAAY9D;YAC3B,UAAUqC,aAAa1C,KAAK,GAAG,GAAG,IAAI;YACtC,WAAU;YACV,iBAAeA,KAAK,GAAG;YACvB,KAAK,CAACwE;gBACJ,IAAIA,SAASzC,SAAS,OAAO,CAAC,GAAG,CAAC/B,KAAK,GAAG,EAAEwE;qBACvCzC,SAAS,OAAO,CAAC,MAAM,CAAC/B,KAAK,GAAG;YACvC;YACA,SAAS,CAACuD;gBACR,IAAIA,MAAM,MAAM,KAAKA,MAAM,aAAa,EAAEzB,UAAU9B,KAAK,GAAG;YAC9D;YACA,WAAW,CAACuD,QAAUD,QAAQC,OAAOvD;YACrC,SAAS,CAACuD;gBACRA,MAAM,eAAe;gBACrB,IACE,CAACA,MAAM,aAAa,CAAC,iBAAiB,EAAE,SAASA,MAAM,MAAM,KAC5DA,MAAM,MAAM,CAAiB,OAAO,CACnC,mHAGF;gBACFZ,MAAM3C,KAAK,GAAG;gBACd,IAAIvD,aAAaC,cAAc2G,MAAMrD;qBAChC,IAAIrD,iBAAiB6G,eAAgB,EAAChH,cAAcwD,AAAoB,UAApBA,KAAK,UAAU,AAAS,GAC/E6C,OAAO7C,MAAM,CAACkE;qBACXlB,OAAOhD,MAAMuD;YACpB;;8BAEA,KAACkB,SAAOA;oBACN,SAAShB,QAAQvF;oBACjB,MAAM8B;oBACN,WACE,CAAC5C,YAAYqG,QAAQ,AAAqB,cAArB,OAAOvF,YAA2BA,UAAU8B,QAAQ9B;;wBAG1E;sCACD,KAAC;4BACC,WAAU;4BACV,iBAAeiD,SAAS,QAAQ,CAACnB,KAAK,GAAG,KAAKK;4BAC9C,iBAAe8D,YAAY9D;4BAC3B,OAAO;gCAAE,oBAAoB,GAAI0D,AAAAA,CAAAA,QAAQ,KAAK,KAAK,EAAE,EAAE,CAAC;4BAAC;;8CAEzD,IAAC;oCACC,MAAK;oCACL,WAAU;oCACV,UAAU;oCACV,cAAYlF,OAAOqF,SAAS,sBAAsB,mBAAmB;wCACnE,OAAOlE,KAAK,WAAW,IAAK,CAAsB,YAAtB,OAAOA,KAAK,KAAK,GAAgBA,KAAK,KAAK,GAAGA,KAAK,GAAE;oCACnF;oCACA,UAAU5C;oCACV,eAAa,CAACoG,eAAenD;oCAC7B,aAAW6D,UAAU7D;oCACrB,eAAa,CAACmD,eAAenD;oCAC7B,SAAS,CAACkD;wCACRA,MAAM,eAAe;wCACrBZ,MAAM3C,KAAK,GAAG;wCACd6C,OAAO7C,MAAM,CAACkE;oCAChB;8CAEC7E,QAAQ,QAAQ,CAACW,KAAK,GAAG,IAAI,WAAJ,GACxB,IAAC0E,cAAYA;wCAAC,MAAM;wCAAI,WAAU;wCAAqB,eAAY;yCAEnElB,eAAe,WAAfA,GAAe,IAACmB,cAAYA;wCAAC,MAAM;wCAAI,eAAY;;;gCAGtDlI,aAAauD,AAAmB,UAAnBA,KAAK,SAAS,IAAc,WAAT,GAC/B,IAAC;oCAAK,WAAU;8CACd,kBAAC4E,iBAAQA;wCACP,SAASnD,QAAQ,GAAG,CAACzB,KAAK,GAAG;wCAC7B,eAAe0B,KAAK,GAAG,CAAC1B,KAAK,GAAG;wCAChC,UAAUmE,YAAYnE,KAAK,eAAe;wCAC1C,UAAU;wCACV,cACEA,KAAK,WAAW,IAAK,CAAsB,YAAtB,OAAOA,KAAK,KAAK,GAAgBA,KAAK,KAAK,GAAGA,KAAK,GAAE;wCAE5E,UAAU;4CACR2C,MAAM3C,KAAK,GAAG;4CACdqD,MAAMrD;wCACR;;;gCAIJ1C,CAAAA,YAAY0C,KAAK,IAAG,mBACpB,IAAC;oCAAK,WAAU;oCAAkB,eAAY;8CAC3CA,KAAK,IAAI,IAAI,WAAJ,GAAI,IAACoE,MAAAA;wCAAK,MAAM;;;8CAG9B,IAAC;oCACC,WAAU;oCACV,cAAYzC,SAAS,QAAQ,IAAI3B,KAAK,GAAG,KAAKK;8CAE7CzC,aAAaoC,SAASA,KAAK,KAAK;;;;;;gBAItCwD,eAAe,CAACS,QAAQ,WAARA,GACf,IAACY,WAASA;oBACR,MAAMX;oBACN,OAAO;wBAAE,yBAAyB,GAAIH,AAAAA,CAAAA,QAAQ,KAAK,KAAK,GAAG,EAAE,CAAC;oBAAC;8BAE9D,IAAMe,YAAY9E,KAAK,QAAQ,IAAI,EAAE,EAAE+D,QAAQ;;;WApH/C/D,KAAK,GAAG;IAyHnB;IAEA,MAAM8E,cAAc,CAAC/E,OAA4BgE;QAC/C,MAAMgB,WAAWhF,MAAM,MAAM,CAAC,CAACC,OAAS,CAAC2B,WAAWA,QAAQ,OAAO,CAAC,GAAG,CAAC3B,KAAK,GAAG;QAChF,OAAO+E,SAAS,GAAG,CAAC,CAAC/E,MAAMyC,QAAUqB,WAAW9D,MAAM+D,OAAOtB,OAAOsC,SAAS,MAAM;IACrF;IACA,MAAMC,UAAU,WAAVA,GACJ,IAAC;QACE,GAAGzG,KAAK;QACT,KAAK8D;QACL,OAAO;YAAE,GAAItE,UAAU;gBAAEC;gBAAQ,UAAU;YAAO,IAAI,CAAC,CAAC;YAAG,GAAGO,MAAM,KAAK;QAAC;QAC1E,MAAK;QACL,cAAYD,SAASE,SAAS,IAAI,CAAC,KAAK;QACxC,wBAAsBjC,YAAYE,aAAa4D;QAC/C,iBAAejD,YAAYiD;QAC3B,WAAW4E,QAAQ,aAAa5H,YAAY,oBAAoBgB;kBAE/D6D,QAAQ,MAAM,GACbnE,UAAU,WAAVA,GACE,IAAC;YAAI,OAAO;gBAAE,UAAU;gBAAY,QAAQuE,YAAY,YAAY;YAAG;sBACpEA,YAAY,eAAe,GAAG,GAAG,CAAC,CAAC4C;gBAClC,MAAMlF,OAAOkC,OAAO,CAACgD,IAAI,KAAK,CAAC;gBAC/B,IAAI,CAAClF,MAAM,OAAO;gBAClB,MAAMsB,SAASX,QAAQ,GAAG,CAACX,KAAK,GAAG;gBACnC,MAAM+E,WACJzD,AAAAA,CAAAA,QAAQ,SAAUX,QAAQ,GAAG,CAACW,OAAO,MAAM,GAAG,KAAK,YAAY,EAAE,GAAI1B,IAAG,EACxE,MAAM,CAAC,CAACuD,OAAS,CAACxB,WAAWA,QAAQ,OAAO,CAAC,GAAG,CAACwB,KAAK,GAAG;gBAC3D,OAAO,WAAP,GACE,IAAC;oBAEC,KAAKb,YAAY,cAAc;oBAC/B,cAAY4C,IAAI,KAAK;oBACrB,OAAO;wBACL,UAAU;wBACV,KAAK;wBACL,MAAM;wBACN,OAAO;wBACP,WAAW,CAAC,WAAW,EAAEA,IAAI,KAAK,CAAC,GAAG,CAAC;oBACzC;8BAECpB,WACC9D,MACAsB,QAAQ,SAAS,GACjByD,SAAS,SAAS,CAAC,CAAC5B,OAASA,KAAK,GAAG,KAAKnD,KAAK,GAAG,GAClD+E,SAAS,MAAM,EACf;mBAhBG/E,KAAK,GAAG;YAoBnB;aAGF8E,YAAYlF,MAAM,KAGnBnC,mBAAmB,WAAnBA,GAAmB,IAAC0H,eAAMA;YAAC,MAAK;YAAK,OAAO3G,SAAS,MAAM,CAAC,KAAK;YAAE,MAAM;;;IAIhF,OAAON,YAAY,WAAZA,GACL,IAACkH,eAAaA;QAAC,MAAMxF;QAAM,OAAOe;QAAS,WAAWxC;QAAW,QAAQC;kBACtE4G;SAGHA;AAEJ;AAEA,SAASH,UAAU,EACjBQ,IAAI,EACJC,KAAK,EACLrF,QAAQ,EAKT;IACC,MAAM,CAACsF,SAASC,WAAW,GAAGrG,SAASkG;IACvC,IAAIA,QAAQ,CAACE,SAASC,WAAW;IACjC,OAAO,WAAP,GACE,IAAC;QACC,WAAU;QACV,OAAOF;QACP,eAAa,CAACD,QAAQhF;QACrB,GAAGoF,WAAW,CAACJ,KAAK;QACrB,aAAWA,QAAQhF;kBAEnB,kBAAC;YAAI,WAAU;sBACb,kBAAC;gBAAI,WAAU;0BAA4BkF,WAAWtF;;;;AAI9D;AAEA,SAASwE,QAAQ,EACfiB,OAAO,EACP1F,IAAI,EACJ9B,SAAS,EACT+B,QAAQ,EAMT;IACC,OAAOyF,UAAU,WAAVA,GACL,IAACC,aAAWA;QAAC,MAAM3F;QAAM,WAAW9B;kBACjC+B;SAGHA;AAEJ;AAEO,SAAS2F,KAAKC,QAAmB;IACtC,MAAMtH,QAAQuH,kBAAkB,QAAQD;IACxC,OAAO,WAAP,GAAO,IAAC3J,aAAWA;QAAE,GAAGqC,KAAK;;AAC/B"}
|
|
1
|
+
{"version":3,"file":"tree/tree.js","sources":["../../../src/tree/tree.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { ChevronRight, File, Folder, FolderOpen, LoaderCircle } from 'lucide-react';\nimport {\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CheckboxControl as Checkbox } from '../checkbox/checkbox';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { estimateControlHeight } from '../density';\nimport { ResultControl as Result } from '../result/result';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { classes } from '../shared/classes';\nimport { inertProps } from '../shared/inert';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { TreeDragRow, TreeDragScope } from './drag';\nimport { treeChecks, treeMatches, treeModel } from './model';\n\nexport interface TreeNode {\n key: string;\n title: ReactNode;\n children?: readonly TreeNode[];\n icon?: ReactNode;\n disabled?: boolean;\n selectable?: boolean;\n checkable?: boolean;\n disableCheckbox?: boolean;\n searchLabel?: string;\n isLeaf?: boolean;\n}\nexport interface TreeSelectInfo {\n node: TreeNode;\n selected: boolean;\n selectedNodes: readonly TreeNode[];\n}\nexport interface TreeCheckInfo {\n node: TreeNode;\n checked: boolean;\n checkedNodes: readonly TreeNode[];\n halfCheckedKeys: readonly string[];\n}\nexport interface TreeExpandInfo {\n node: TreeNode;\n expanded: boolean;\n}\nexport interface TreeDropInfo {\n node: TreeNode;\n target: TreeNode;\n position: 'before' | 'inside' | 'after';\n data: TreeNode[];\n}\nexport interface TreeProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect' | 'onDrop' | 'onLoad' | 'draggable'> {\n data: readonly TreeNode[];\n selectedKeys?: readonly string[];\n defaultSelectedKeys?: readonly string[];\n onSelect?: (keys: string[], info: TreeSelectInfo) => void;\n multiple?: boolean;\n selectable?: boolean;\n checkable?: boolean;\n checkStrictly?: boolean;\n checkedKeys?: readonly string[];\n defaultCheckedKeys?: readonly string[];\n onCheck?: (keys: string[], info: TreeCheckInfo) => void;\n expandedKeys?: readonly string[];\n defaultExpandedKeys?: readonly string[];\n defaultExpandAll?: boolean;\n onExpand?: (keys: string[], info: TreeExpandInfo) => void;\n disabled?: boolean;\n showLine?: boolean;\n showIcon?: boolean;\n searchValue?: string;\n filterTreeNode?: (node: TreeNode, query: string) => boolean;\n notFoundContent?: ReactNode;\n loadData?: (node: TreeNode, signal: AbortSignal) => Promise<readonly TreeNode[]>;\n cacheKey?: string | number;\n nodeRender?: (node: TreeNode) => ReactNode;\n onLoad?: (node: TreeNode, children: readonly TreeNode[]) => void;\n onLoadError?: (error: unknown, node: TreeNode) => void;\n virtual?: boolean;\n height?: number;\n itemHeight?: number;\n draggable?: boolean | ((node: TreeNode) => boolean);\n allowDrop?: (info: Omit<TreeDropInfo, 'data'>) => boolean;\n onDrop?: (info: TreeDropInfo) => void;\n}\nexport function TreeControl({\n data: suppliedData,\n selectedKeys,\n defaultSelectedKeys = [],\n onSelect,\n multiple = false,\n selectable = true,\n checkable = false,\n checkOnClick = false,\n expandOnClick = false,\n checkStrictly = false,\n checkedKeys,\n defaultCheckedKeys = [],\n onCheck,\n expandedKeys,\n defaultExpandedKeys = [],\n defaultExpandAll = false,\n onExpand,\n disabled = false,\n showLine = false,\n showIcon = false,\n searchValue = '',\n filterTreeNode,\n notFoundContent,\n loadData,\n cacheKey,\n nodeRender,\n onLoad,\n onLoadError,\n virtual = false,\n height = 320,\n itemHeight: itemHeightProp,\n draggable = false,\n allowDrop,\n onDrop,\n className,\n 'aria-label': label,\n ...props\n}: TreeProps & { checkOnClick?: boolean; expandOnClick?: boolean }) {\n const { messages, direction, theme, density } = useLeafConfig();\n const format = useFormattedText();\n const itemHeight = itemHeightProp ?? estimateControlHeight(theme, density) + 6;\n const [loaded, setLoaded] = useState<Map<string, readonly TreeNode[]>>(new Map());\n const [loading, setLoading] = useState<readonly string[]>([]);\n const requests = useRef(new Map<string, AbortController>());\n const latestLoad = useRef({ loadData, onLoad, onLoadError });\n latestLoad.current = { loadData, onLoad, onLoadError };\n // biome-ignore lint/correctness/useExhaustiveDependencies: Invalidate node caches whenever the supplied data, loader or cache version changes.\n useEffect(() => {\n for (const request of requests.current.values()) request.abort();\n requests.current.clear();\n setLoaded(new Map());\n setLoading([]);\n }, [suppliedData, loadData, cacheKey]);\n const data = useMemo(() => {\n const merge = (nodes: readonly TreeNode[]): TreeNode[] =>\n nodes.map((node) => {\n const children = node.children ?? loaded.get(node.key);\n return children\n ? { ...node, children: merge(children), isLeaf: children.length === 0 }\n : node;\n });\n return merge(suppliedData);\n }, [suppliedData, loaded]);\n useEffect(\n () => () => {\n for (const request of requests.current.values()) request.abort();\n requests.current.clear();\n },\n [],\n );\n const load = useCallback(\n (node: TreeNode) => {\n const callback = latestLoad.current.loadData;\n if (\n !callback ||\n node.isLeaf ||\n node.children !== undefined ||\n loaded.has(node.key) ||\n requests.current.has(node.key)\n )\n return;\n const request = new AbortController();\n requests.current.set(node.key, request);\n setLoading((previous) => [...previous, node.key]);\n Promise.resolve()\n .then(() => (request.signal.aborted ? [] : callback(node, request.signal)))\n .then((children) => {\n if (request.signal.aborted) return;\n setLoaded((previous) => new Map(previous).set(node.key, children ?? []));\n latestLoad.current.onLoad?.(node, children ?? []);\n })\n .catch((reason) => {\n if (!request.signal.aborted) latestLoad.current.onLoadError?.(reason, node);\n })\n .finally(() => {\n // A replayed effect may have started a newer request for the same node.\n if (requests.current.get(node.key) !== request) return;\n requests.current.delete(node.key);\n if (!request.signal.aborted)\n setLoading((previous) => previous.filter((key) => key !== node.key));\n });\n },\n [loaded],\n );\n const records = useMemo(() => treeModel(data), [data]);\n const [selection, setSelection] = useState<readonly string[]>(defaultSelectedKeys);\n const [checks, setChecks] = useState<readonly string[]>(defaultCheckedKeys);\n const [expansion, setExpansion] = useState<readonly string[]>(() =>\n defaultExpandAll ? [...records.keys()] : defaultExpandedKeys,\n );\n const selected = selectedKeys ?? selection;\n const expanded = new Set(expandedKeys ?? expansion);\n useEffect(() => {\n if (disabled) return;\n for (const key of expandedKeys ?? expansion) {\n const record = records.get(key);\n if (record) load(record.node);\n }\n }, [records, expandedKeys, expansion, disabled, load]);\n const state = useMemo(\n () => treeChecks(records, checkedKeys ?? checks, checkStrictly),\n [records, checkedKeys, checks, checkStrictly],\n );\n const checked = new Set(state.checked);\n const half = new Set(state.half);\n const matches = useMemo(\n () => treeMatches(records, searchValue, filterTreeNode),\n [records, searchValue, filterTreeNode],\n );\n const [active, setActive] = useState<string>();\n const elements = useRef(new Map<string, HTMLDivElement>());\n const anchor = useRef<string | undefined>(undefined);\n const typeAhead = useRef({ text: '', time: 0 });\n const visible: TreeNode[] = [];\n const isExpanded = (key: string) => (matches ? matches.visible.has(key) : expanded.has(key));\n const collect = (nodes: readonly TreeNode[]) => {\n for (const node of nodes) {\n if (matches && !matches.visible.has(node.key)) continue;\n visible.push(node);\n if (isExpanded(node.key) && node.children) collect(node.children);\n }\n };\n collect(data);\n const root = useRef<HTMLDivElement>(null);\n const virtualizer = useVirtualizer({\n count: visible.length,\n getScrollElement: () => root.current,\n estimateSize: () => Math.max(24, itemHeight),\n overscan: 5,\n enabled: virtual,\n initialRect: { height, width: 400 },\n getItemKey: (index) => visible[index]?.key ?? index,\n });\n const focusKey = visible.some((node) => node.key === active)\n ? active\n : (visible.find((node) => selected.includes(node.key))?.key ?? visible[0]?.key);\n const focus = (key?: string) => {\n if (key) {\n setActive(key);\n if (virtual) {\n const index = visible.findIndex((node) => node.key === key);\n if (index >= 0) virtualizer.scrollToIndex(index, { align: 'auto' });\n requestAnimationFrame(() => elements.current.get(key)?.focus());\n }\n elements.current.get(key)?.focus();\n }\n };\n const expand = (node: TreeNode, next: boolean) => {\n if (disabled) return;\n if (next) load(node);\n const keys = next\n ? [...new Set([...expanded, node.key])]\n : [...expanded].filter((key) => key !== node.key);\n if (expandedKeys === undefined) setExpansion(keys);\n onExpand?.(keys, { node, expanded: next });\n };\n const select = (\n node: TreeNode,\n modifiers?: { shiftKey: boolean; ctrlKey: boolean; metaKey: boolean },\n ) => {\n if (disabled || node.disabled || !selectable || node.selectable === false) return;\n let next = selected.includes(node.key) ? [] : [node.key];\n if (multiple) {\n if (modifiers?.shiftKey && anchor.current) {\n const first = visible.findIndex((item) => item.key === anchor.current);\n const last = visible.indexOf(node);\n next = visible\n .slice(Math.max(0, Math.min(first, last)), Math.max(first, last) + 1)\n .filter((item) => !item.disabled && item.selectable !== false)\n .map((item) => item.key);\n } else\n next = selected.includes(node.key)\n ? selected.filter((key) => key !== node.key)\n : [...selected, node.key];\n }\n if (!modifiers?.shiftKey) anchor.current = node.key;\n if (selectedKeys === undefined) setSelection(next);\n onSelect?.(next, {\n node,\n selected: next.includes(node.key),\n selectedNodes: next.flatMap((key) => records.get(key)?.node ?? []),\n });\n };\n const check = (node: TreeNode) => {\n if (disabled || node.disabled || node.disableCheckbox || node.checkable === false) return;\n const next = treeChecks(records, state.checked, checkStrictly, {\n key: node.key,\n checked: !checked.has(node.key),\n });\n if (checkedKeys === undefined) setChecks(next.checked);\n onCheck?.(next.checked, {\n node,\n checked: !checked.has(node.key),\n checkedNodes: next.checked.flatMap((key) => records.get(key)?.node ?? []),\n halfCheckedKeys: next.half,\n });\n };\n const keyDown = (event: KeyboardEvent<HTMLDivElement>, node: TreeNode) => {\n if (\n event.target !== event.currentTarget &&\n (event.target as HTMLElement).closest(\n 'input,textarea,select,button,a[href],[contenteditable=\"true\"]',\n )\n )\n return;\n if (event.defaultPrevented || (event.target as HTMLElement).closest('.leaf-tree__drag-handle'))\n return;\n event.stopPropagation();\n const index = visible.indexOf(node);\n const hasChildren = Boolean(\n node.children?.length || (loadData && !node.isLeaf && node.children === undefined),\n );\n if (event.key === 'ArrowDown') focus(visible[Math.min(index + 1, visible.length - 1)]?.key);\n else if (event.key === 'ArrowUp') focus(visible[Math.max(0, index - 1)]?.key);\n else if (event.key === 'Home') focus(visible[0]?.key);\n else if (event.key === 'End') focus(visible.at(-1)?.key);\n else if (event.key === (direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight')) {\n if (hasChildren && !isExpanded(node.key)) expand(node, true);\n else if (hasChildren)\n focus(node.children?.find((child) => !matches || matches.visible.has(child.key))?.key);\n } else if (event.key === (direction === 'rtl' ? 'ArrowRight' : 'ArrowLeft')) {\n if (hasChildren && isExpanded(node.key)) expand(node, false);\n else focus(records.get(node.key)?.parent);\n } else if (event.key === ' ' || event.key === 'Enter') {\n if (checkable && (event.key === ' ' || checkOnClick)) check(node);\n else if (expandOnClick && hasChildren && (!selectable || node.selectable === false))\n expand(node, !isExpanded(node.key));\n else select(node, event);\n } else if (event.key.length === 1 && !event.altKey && !event.ctrlKey && !event.metaKey) {\n const now = Date.now();\n typeAhead.current = {\n text:\n (now - typeAhead.current.time < 600 ? typeAhead.current.text : '') +\n event.key.toLocaleLowerCase(),\n time: now,\n };\n const ordered = [...visible.slice(index + 1), ...visible.slice(0, index + 1)];\n focus(\n ordered.find((item) =>\n (item.searchLabel ?? (typeof item.title === 'string' ? item.title : item.key))\n .toLocaleLowerCase()\n .startsWith(typeAhead.current.text),\n )?.key,\n );\n } else return;\n event.preventDefault();\n };\n const renderNode = (\n node: TreeNode,\n level: number,\n index: number,\n setSize: number,\n flat = false,\n ): ReactNode => {\n const hasChildren = Boolean(\n node.children?.length || (loadData && !node.isLeaf && node.children === undefined),\n );\n const opened = hasChildren && isExpanded(node.key);\n const inactive = disabled || node.disabled;\n const Icon = hasChildren ? (opened ? FolderOpen : Folder) : File;\n return (\n <div\n role=\"treeitem\"\n key={node.key}\n aria-level={level}\n aria-label={node.searchLabel ?? (typeof node.title === 'string' ? node.title : undefined)}\n aria-posinset={index + 1}\n aria-setsize={setSize}\n aria-expanded={hasChildren ? opened : undefined}\n aria-selected={\n selectable && node.selectable !== false ? selected.includes(node.key) : undefined\n }\n aria-checked={\n checkable && node.checkable !== false\n ? half.has(node.key)\n ? 'mixed'\n : checked.has(node.key)\n : undefined\n }\n aria-disabled={inactive || undefined}\n tabIndex={focusKey === node.key ? 0 : -1}\n className=\"leaf-tree__item\"\n data-node-key={node.key}\n ref={(element) => {\n if (element) elements.current.set(node.key, element);\n else elements.current.delete(node.key);\n }}\n onFocus={(event) => {\n if (event.target === event.currentTarget) setActive(node.key);\n }}\n onKeyDown={(event) => keyDown(event, node)}\n onClick={(event) => {\n event.stopPropagation();\n if (\n !event.currentTarget.firstElementChild?.contains(event.target as Node) ||\n (event.target as HTMLElement).closest(\n '.leaf-tree__check, .leaf-tree__drag-handle, input, textarea, select, button, a[href], [contenteditable=\"true\"]',\n )\n )\n return;\n focus(node.key);\n if (checkable && checkOnClick) check(node);\n else if (expandOnClick && hasChildren && (!selectable || node.selectable === false))\n expand(node, !opened);\n else select(node, event);\n }}\n >\n <TreeRow\n enabled={Boolean(draggable)}\n node={node}\n draggable={\n !disabled && Boolean(typeof draggable === 'function' ? draggable(node) : draggable)\n }\n >\n {' '}\n <div\n className=\"leaf-tree__row\"\n data-selected={selected.includes(node.key) || undefined}\n data-disabled={inactive || undefined}\n style={{ paddingInlineStart: `${(level - 1) * 20 + 4}px` }}\n >\n <button\n type=\"button\"\n className=\"leaf-tree__toggle\"\n tabIndex={-1}\n aria-label={format(opened ? 'tree.collapseNode' : 'tree.expandNode', {\n label: node.searchLabel ?? (typeof node.title === 'string' ? node.title : node.key),\n })}\n disabled={disabled}\n data-hidden={!hasChildren || undefined}\n data-open={opened || undefined}\n aria-hidden={!hasChildren || undefined}\n onClick={(event) => {\n event.stopPropagation();\n focus(node.key);\n expand(node, !opened);\n }}\n >\n {loading.includes(node.key) ? (\n <LoaderCircle size={14} className=\"leaf-tree__spinner\" aria-hidden=\"true\" />\n ) : (\n hasChildren && <ChevronRight size={14} aria-hidden=\"true\" />\n )}\n </button>\n {checkable && node.checkable !== false && (\n <span className=\"leaf-tree__check\">\n <Checkbox\n checked={checked.has(node.key)}\n indeterminate={half.has(node.key)}\n disabled={inactive || node.disableCheckbox}\n tabIndex={-1}\n aria-label={\n node.searchLabel ?? (typeof node.title === 'string' ? node.title : node.key)\n }\n onChange={() => {\n focus(node.key);\n check(node);\n }}\n />\n </span>\n )}\n {(showIcon || node.icon) && (\n <span className=\"leaf-tree__icon\" aria-hidden=\"true\">\n {node.icon ?? <Icon size={16} />}\n </span>\n )}\n <span\n className=\"leaf-tree__title\"\n data-match={matches?.matched.has(node.key) || undefined}\n >\n {nodeRender?.(node) ?? node.title}\n </span>\n </div>\n </TreeRow>\n {hasChildren && !flat && (\n <TreeGroup\n open={opened}\n style={{ '--leaf-tree-line-left': `${(level - 1) * 20 + 14}px` } as CSSProperties}\n >\n {() => renderNodes(node.children ?? [], level + 1)}\n </TreeGroup>\n )}\n </div>\n );\n };\n\n const renderNodes = (nodes: readonly TreeNode[], level: number): ReactNode => {\n const siblings = nodes.filter((node) => !matches || matches.visible.has(node.key));\n return siblings.map((node, index) => renderNode(node, level, index, siblings.length));\n };\n const content = (\n <ScrollbarControl\n ref={root}\n viewportProps={{\n ...props,\n 'aria-multiselectable': multiple || checkable || undefined,\n 'aria-disabled': disabled || undefined,\n }}\n style={{ ...(virtual ? { height } : {}), ...props.style }}\n viewportStyle={{ position: 'relative' }}\n role=\"tree\"\n aria-label={label ?? messages.tree.label}\n tabIndex={-1}\n scrollbarTabIndex={-1}\n className={classes('leaf-tree', showLine && 'leaf-tree--lines', className)}\n >\n {visible.length ? (\n virtual ? (\n <div style={{ position: 'relative', height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((row) => {\n const node = visible[row.index];\n if (!node) return null;\n const record = records.get(node.key);\n const siblings = (\n record?.parent ? (records.get(record.parent)?.node.children ?? []) : data\n ).filter((item) => !matches || matches.visible.has(item.key));\n return (\n <div\n key={node.key}\n ref={virtualizer.measureElement}\n data-index={row.index}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${row.start}px)`,\n }}\n >\n {renderNode(\n node,\n record?.level ?? 1,\n siblings.findIndex((item) => item.key === node.key),\n siblings.length,\n true,\n )}\n </div>\n );\n })}\n </div>\n ) : (\n renderNodes(data, 1)\n )\n ) : (\n (notFoundContent ?? <Result size=\"sm\" title={messages.select.empty} icon={null} />)\n )}\n </ScrollbarControl>\n );\n return draggable ? (\n <TreeDragScope data={data} nodes={records} allowDrop={allowDrop} onDrop={onDrop}>\n {content}\n </TreeDragScope>\n ) : (\n content\n );\n}\n\nfunction TreeGroup({\n open,\n style,\n children,\n}: {\n open: boolean;\n style: CSSProperties;\n children: () => ReactNode;\n}) {\n const [visited, setVisited] = useState(open);\n if (open && !visited) setVisited(true);\n return (\n <fieldset\n className=\"leaf-tree__group\"\n style={style}\n aria-hidden={!open || undefined}\n {...inertProps(!open)}\n data-open={open || undefined}\n >\n <div className=\"leaf-tree__group-inner\">\n <div className=\"leaf-tree__group-content\">{visited && children()}</div>\n </div>\n </fieldset>\n );\n}\n\nfunction TreeRow({\n enabled,\n node,\n draggable,\n children,\n}: {\n enabled: boolean;\n node: TreeNode;\n draggable: boolean;\n children: ReactNode;\n}) {\n return enabled ? (\n <TreeDragRow node={node} draggable={draggable}>\n {children}\n </TreeDragRow>\n ) : (\n children\n );\n}\n\nexport function Tree(rawProps: TreeProps) {\n const props = useComponentProps('Tree', rawProps);\n return <TreeControl {...props} />;\n}\n"],"names":["TreeControl","suppliedData","selectedKeys","defaultSelectedKeys","onSelect","multiple","selectable","checkable","checkOnClick","expandOnClick","checkStrictly","checkedKeys","defaultCheckedKeys","onCheck","expandedKeys","defaultExpandedKeys","defaultExpandAll","onExpand","disabled","showLine","showIcon","searchValue","filterTreeNode","notFoundContent","loadData","cacheKey","nodeRender","onLoad","onLoadError","virtual","height","itemHeightProp","draggable","allowDrop","onDrop","className","label","props","messages","direction","theme","density","useLeafConfig","format","useFormattedText","itemHeight","estimateControlHeight","loaded","setLoaded","useState","Map","loading","setLoading","requests","useRef","latestLoad","useEffect","request","data","useMemo","merge","nodes","node","children","load","useCallback","callback","undefined","AbortController","previous","Promise","reason","key","records","treeModel","selection","setSelection","checks","setChecks","expansion","setExpansion","selected","expanded","Set","record","state","treeChecks","checked","half","matches","treeMatches","active","setActive","elements","anchor","typeAhead","visible","isExpanded","collect","root","virtualizer","useVirtualizer","Math","index","focusKey","focus","requestAnimationFrame","expand","next","keys","select","modifiers","first","item","last","check","keyDown","event","hasChildren","Boolean","child","now","Date","ordered","renderNode","level","setSize","flat","opened","inactive","Icon","FolderOpen","Folder","File","element","TreeRow","LoaderCircle","ChevronRight","Checkbox","TreeGroup","renderNodes","siblings","content","ScrollbarControl","classes","row","Result","TreeDragScope","open","style","visited","setVisited","inertProps","enabled","TreeDragRow","Tree","rawProps","useComponentProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeselect.d.ts","sourceRoot":"","sources":["../../../src/treeselect/treeselect.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"treeselect.d.ts","sourceRoot":"","sources":["../../../src/treeselect/treeselect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ import { SelectionContent } from "../shared/selection-content.js";
|
|
|
14
14
|
import { treeModel } from "../tree/model.js";
|
|
15
15
|
import { TreeControl } from "../tree/tree.js";
|
|
16
16
|
const emptyKeys = [];
|
|
17
|
-
const InternalTreeSelect = /*#__PURE__*/ forwardRef(function({ options, value, defaultValue = null, onChange, multiple = false, treeCheckable = false, checkStrictly = false, showCheckedStrategy = 'child', showSearch = true, onSearch, allowClear = true, defaultExpandAll = false, treeDefaultExpandedKeys = emptyKeys, size = 'md', status: statusProp, disabled: disabledProp, required: requiredProp, popupWidth
|
|
18
|
-
const { messages, theme, density } = useLeafConfig();
|
|
17
|
+
const InternalTreeSelect = /*#__PURE__*/ forwardRef(function({ options, value, defaultValue = null, onChange, multiple = false, treeCheckable = false, checkStrictly = false, showCheckedStrategy = 'child', showSearch = true, onSearch, allowClear = true, defaultExpandAll = false, treeDefaultExpandedKeys = emptyKeys, size = 'md', status: statusProp, disabled: disabledProp, required: requiredProp, popupWidth = 'trigger', popupMaxWidth, notFoundContent, onOpenChange, loadData, onLoadError, virtual = false, listHeight = 256, itemHeight: itemHeightProp, inputReadOnly, open: controlledOpen, defaultOpen, maxTagCount, tagWrap = true, maxCount = 1 / 0, treeExpandedKeys, onExpand, filterTreeNode, nodeRender, cacheKey, popupPlacement, popupClassName, popupStyle, popupRender, getPopupContainer, name, form, className, style, placeholder, 'aria-label': label, ...props }, forwardedRef) {
|
|
18
|
+
const { messages, theme, density, direction: configuredDirection } = useLeafConfig();
|
|
19
19
|
const itemHeight = itemHeightProp ?? Math.max(24, estimateControlHeight(theme, density) - 4) + 6;
|
|
20
20
|
const field = useFormField();
|
|
21
21
|
const disabled = disabledProp || field?.disabled;
|
|
@@ -158,6 +158,7 @@ const InternalTreeSelect = /*#__PURE__*/ forwardRef(function({ options, value, d
|
|
|
158
158
|
ref: root,
|
|
159
159
|
className: classes('leaf-tree-select', `leaf-tree-select--${size}`, multi && 'leaf-tree-select--multiple', className),
|
|
160
160
|
style: style,
|
|
161
|
+
dir: props.dir ?? configuredDirection,
|
|
161
162
|
"data-disabled": disabled || void 0,
|
|
162
163
|
"data-status": status,
|
|
163
164
|
"data-open": open || void 0,
|
|
@@ -330,8 +331,8 @@ const InternalTreeSelect = /*#__PURE__*/ forwardRef(function({ options, value, d
|
|
|
330
331
|
open: open,
|
|
331
332
|
triggerRef: root,
|
|
332
333
|
panelRef: panel,
|
|
333
|
-
|
|
334
|
-
width: popupWidth
|
|
334
|
+
matchWidth: 'trigger' === popupWidth,
|
|
335
|
+
width: 'trigger' === popupWidth ? void 0 : 'auto' === popupWidth ? 'max-content' : popupWidth,
|
|
335
336
|
maxWidth: popupMaxWidth,
|
|
336
337
|
maxHeight: 320,
|
|
337
338
|
className: classes('leaf-floating leaf-tree-select__panel', popupClassName),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeselect/treeselect.js","sources":["../../../src/treeselect/treeselect.tsx"],"sourcesContent":["import { ChevronDown, X } from 'lucide-react';\nimport {\n forwardRef,\n type InputHTMLAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { estimateControlHeight } from '../density';\nimport { FieldScope, useFormField } from '../form/form';\nimport { classes } from '../shared/classes';\nimport { FormValue, useFieldValue, useMergedRef } from '../shared/field';\nimport {\n FloatingPanel,\n type PopupOptions,\n useFloatingDismiss,\n usePopupState,\n} from '../shared/floating';\nimport { useListMotion } from '../shared/motion';\nimport { SelectionContent } from '../shared/selection-content';\nimport type { ControlSize, ControlStatus } from '../shared/types';\nimport type { TreeNode } from '../tree';\nimport { treeModel } from '../tree/model';\nimport { TreeControl as Tree } from '../tree/tree';\n\nexport interface TreeSelectOption {\n value: string;\n label: ReactNode;\n children?: readonly TreeSelectOption[];\n disabled?: boolean;\n selectable?: boolean;\n disableCheckbox?: boolean;\n icon?: ReactNode;\n searchLabel?: string;\n isLeaf?: boolean;\n}\nexport type TreeSelectValue = string | readonly string[] | null;\ninterface InternalTreeSelectProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'defaultValue' | 'onChange' | 'size' | 'multiple'\n >,\n PopupOptions {\n options: readonly TreeSelectOption[];\n value?: TreeSelectValue;\n defaultValue?: TreeSelectValue;\n onChange?: (value: TreeSelectValue) => void;\n multiple?: boolean;\n treeCheckable?: boolean;\n checkStrictly?: boolean;\n showCheckedStrategy?: 'child' | 'parent' | 'all';\n showSearch?: boolean;\n onSearch?: (query: string) => void;\n allowClear?: boolean;\n defaultExpandAll?: boolean;\n treeDefaultExpandedKeys?: readonly string[];\n size?: ControlSize;\n status?: ControlStatus;\n popupWidth?: number | string;\n popupMaxWidth?: number | string;\n notFoundContent?: ReactNode;\n onOpenChange?: (open: boolean) => void;\n loadData?: (\n option: TreeSelectOption,\n signal: AbortSignal,\n ) => Promise<readonly TreeSelectOption[]>;\n onLoadError?: (error: unknown, option: TreeSelectOption) => void;\n virtual?: boolean;\n listHeight?: number;\n itemHeight?: number;\n inputReadOnly?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n maxTagCount?: number | 'responsive';\n tagWrap?: boolean;\n maxCount?: number;\n treeExpandedKeys?: readonly string[];\n onExpand?: (keys: string[]) => void;\n filterTreeNode?: (option: TreeSelectOption, query: string) => boolean;\n nodeRender?: (option: TreeSelectOption) => ReactNode;\n cacheKey?: string | number;\n}\nconst emptyKeys: readonly string[] = [];\nconst InternalTreeSelect = forwardRef<HTMLInputElement, InternalTreeSelectProps>(\n function TreeSelect(\n {\n options,\n value,\n defaultValue = null,\n onChange,\n multiple = false,\n treeCheckable = false,\n checkStrictly = false,\n showCheckedStrategy = 'child',\n showSearch = true,\n onSearch,\n allowClear = true,\n defaultExpandAll = false,\n treeDefaultExpandedKeys = emptyKeys,\n size = 'md',\n status: statusProp,\n disabled: disabledProp,\n required: requiredProp,\n popupWidth,\n popupMaxWidth = 420,\n notFoundContent,\n onOpenChange,\n loadData,\n onLoadError,\n virtual = false,\n listHeight = 256,\n itemHeight: itemHeightProp,\n inputReadOnly,\n open: controlledOpen,\n defaultOpen,\n maxTagCount,\n tagWrap = true,\n maxCount = Infinity,\n treeExpandedKeys,\n onExpand,\n filterTreeNode,\n nodeRender,\n cacheKey,\n popupPlacement,\n popupClassName,\n popupStyle,\n popupRender,\n getPopupContainer,\n name,\n form,\n className,\n style,\n placeholder,\n 'aria-label': label,\n ...props\n },\n forwardedRef,\n ) {\n const { messages, theme, density } = useLeafConfig();\n const itemHeight =\n itemHeightProp ?? Math.max(24, estimateControlHeight(theme, density) - 4) + 6;\n const field = useFormField();\n const disabled = disabledProp || field?.disabled;\n const required = requiredProp ?? field?.required;\n const status = statusProp ?? (field?.error ? 'error' : undefined);\n const multi = multiple || treeCheckable;\n const trigger = useRef<HTMLInputElement>(null);\n const ref = useMergedRef(trigger, forwardedRef);\n const root = useRef<HTMLDivElement>(null);\n const panel = useRef<HTMLDivElement>(null);\n const pendingFocus = useRef(false);\n const [current, setCurrent] = useFieldValue(value, defaultValue, trigger, form);\n const selected = typeof current === 'string' ? [current] : (current ?? emptyKeys);\n useListMotion(root, selected[0], multi ? '' : '.leaf-tree-select__input-wrap[data-motion-key]');\n const [query, setQuery] = useState<string | null>(null);\n const searchQuery = query ?? '';\n const [open, setOpen] = usePopupState(\n disabled || props.readOnly,\n onOpenChange,\n controlledOpen,\n defaultOpen,\n );\n const id = `${useId()}-tree-select`;\n const [loadedOptions, setLoadedOptions] = useState<Map<string, readonly TreeSelectOption[]>>(\n new Map(),\n );\n const generation = useRef(0);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Invalidate lazy options on source and cache-version changes.\n useEffect(() => {\n generation.current++;\n setLoadedOptions(new Map());\n }, [options, loadData, cacheKey]);\n const allOptions = useMemo(() => {\n const merge = (entries: readonly TreeSelectOption[]): TreeSelectOption[] =>\n entries.map((option) => {\n const children = option.children ?? loadedOptions.get(option.value);\n return children ? { ...option, children: merge(children) } : option;\n });\n return merge(options);\n }, [options, loadedOptions]);\n const optionRecords = useMemo(() => {\n const map = new Map<string, TreeSelectOption>();\n const visit = (entries: readonly TreeSelectOption[]) => {\n for (const option of entries) {\n map.set(option.value, option);\n if (option.children) visit(option.children);\n }\n };\n visit(allOptions);\n return map;\n }, [allOptions]);\n const latestLoader = useRef({ loadData, optionRecords });\n latestLoader.current = { loadData, optionRecords };\n const lazyLoad = useCallback(async (node: TreeNode, signal: AbortSignal) => {\n const snapshot = generation.current;\n const option = latestLoader.current.optionRecords.get(node.key);\n if (!option || !latestLoader.current.loadData) return [];\n const children = await latestLoader.current.loadData(option, signal);\n if (!signal.aborted && snapshot === generation.current)\n setLoadedOptions((previous) => new Map(previous).set(node.key, children));\n const convert = (entries: readonly TreeSelectOption[]): TreeNode[] =>\n entries.map(({ value: key, label: title, children, ...entry }) => ({\n ...entry,\n key,\n title,\n children: children ? convert(children) : undefined,\n }));\n return convert(children);\n }, []);\n const data = useMemo(() => {\n const convert = (nodes: readonly TreeSelectOption[]): TreeNode[] =>\n nodes.map(({ value: key, label: title, children, ...node }) => ({\n ...node,\n key,\n title,\n children: children ? convert(children) : undefined,\n }));\n return convert(allOptions);\n }, [allOptions]);\n const records = useMemo(() => treeModel(data), [data]);\n const [expandedKeys, setExpandedKeys] = useState<readonly string[]>(() =>\n defaultExpandAll ? [...records.keys()] : treeDefaultExpandedKeys,\n );\n const close = () => {\n setOpen(false);\n setQuery(null);\n };\n useFloatingDismiss(open, close, trigger, panel, root);\n useEffect(() => {\n if (!open) setQuery(null);\n else if (pendingFocus.current) {\n panel.current?.querySelector<HTMLElement>('[role=\"treeitem\"][tabindex=\"0\"]')?.focus();\n pendingFocus.current = false;\n }\n }, [open]);\n const commit = (keys: readonly string[]) => {\n if (disabled || props.readOnly || keys.length > maxCount) return;\n const next: TreeSelectValue = multi ? [...keys] : (keys[0] ?? null);\n setCurrent(next);\n onChange?.(next);\n setQuery(null);\n if (!multi) {\n setOpen(false);\n trigger.current?.focus();\n }\n };\n const canRemove = (key: string) =>\n !records.get(key)?.node.disabled && !records.get(key)?.node.disableCheckbox;\n const clearable = allowClear && selected.some(canRemove) && !disabled && !props.readOnly;\n const caption = (key: string) => records.get(key)?.node.title ?? key;\n const a11yCaption = (key: string) =>\n records.get(key)?.node.searchLabel ??\n (typeof caption(key) === 'string' || typeof caption(key) === 'number'\n ? String(caption(key))\n : key);\n const selectedCaption = selected[0] === undefined ? undefined : caption(selected[0]);\n const hasRichCaption =\n selectedCaption !== undefined &&\n typeof selectedCaption !== 'string' &&\n typeof selectedCaption !== 'number';\n const showCaption = !multi && hasRichCaption && (!showSearch || !open || query === null);\n const inputValue = multi\n ? searchQuery\n : showSearch && open\n ? (query ?? (selected[0] === undefined ? '' : a11yCaption(selected[0])))\n : selected[0] === undefined\n ? ''\n : a11yCaption(selected[0]);\n const beginSearch = () => {\n if (!showSearch || disabled || props.readOnly || inputReadOnly) return;\n if (!multi && query === null) trigger.current?.select();\n setOpen(true);\n };\n return (\n <>\n {/* biome-ignore lint/a11y/noStaticElementInteractions: The wrapper extends the input's clickable area, as in Select. */}\n {/* biome-ignore lint/a11y/useKeyWithClickEvents: The enclosed combobox owns keyboard interaction. */}\n <div\n ref={root}\n className={classes(\n 'leaf-tree-select',\n `leaf-tree-select--${size}`,\n multi && 'leaf-tree-select--multiple',\n className,\n )}\n style={style}\n data-disabled={disabled || undefined}\n data-status={status}\n data-open={open || undefined}\n data-clearable={clearable || undefined}\n data-searchable={showSearch || undefined}\n onMouseDown={(event) => {\n if (\n !disabled &&\n event.target instanceof Element &&\n !event.target.closest('input, button, a')\n )\n event.preventDefault();\n }}\n onClick={(event) => {\n if (\n !disabled &&\n event.target instanceof Element &&\n !event.target.closest('input, button, a')\n ) {\n trigger.current?.focus();\n trigger.current?.click();\n }\n }}\n >\n <SelectionContent\n className=\"leaf-tree-select__content\"\n tagClassName=\"leaf-tree-select__tag\"\n tagWrap={tagWrap}\n maxTagCount={maxTagCount}\n searchable={showSearch && !props.readOnly && !inputReadOnly}\n query={searchQuery}\n removeLabel={messages.common.remove}\n items={\n multi\n ? selected.map((key) => ({\n key,\n label: caption(key),\n text: a11yCaption(key),\n remove:\n canRemove(key) && !disabled && !props.readOnly\n ? () => {\n commit(selected.filter((item) => item !== key));\n trigger.current?.focus();\n }\n : undefined,\n }))\n : undefined\n }\n >\n <span className=\"leaf-tree-select__input-wrap\" data-motion-key={selected[0] ?? ''}>\n {showCaption && (\n <span className=\"leaf-tree-select__value\" aria-hidden=\"true\">\n {selectedCaption}\n </span>\n )}\n <input\n {...props}\n ref={ref}\n id={props.id ?? field?.id}\n role=\"combobox\"\n aria-haspopup=\"tree\"\n aria-expanded={open}\n aria-controls={open ? id : undefined}\n aria-autocomplete={showSearch ? 'list' : undefined}\n aria-label={label ?? (field?.labelId ? undefined : messages.treeSelect.placeholder)}\n aria-labelledby={props['aria-labelledby'] ?? field?.labelId}\n aria-describedby={\n [props['aria-describedby'], field?.descriptionId].filter(Boolean).join(' ') ||\n undefined\n }\n aria-required={required || undefined}\n aria-invalid={status === 'error' || props['aria-invalid']}\n autoComplete=\"off\"\n className={classes(\n 'leaf-tree-select__input',\n showCaption && 'leaf-tree-select__input--caption',\n )}\n value={inputValue}\n readOnly={!showSearch || props.readOnly || inputReadOnly}\n disabled={disabled}\n placeholder={\n selected.length ? undefined : (placeholder ?? messages.treeSelect.placeholder)\n }\n onClick={(event) => {\n props.onClick?.(event);\n if (event.defaultPrevented) return;\n if (open && !showSearch) close();\n else setOpen(true);\n }}\n onBeforeInput={(event) => {\n props.onBeforeInput?.(event);\n if (!event.defaultPrevented) beginSearch();\n }}\n onPaste={(event) => {\n props.onPaste?.(event);\n if (!event.defaultPrevented) beginSearch();\n }}\n onCompositionStart={(event) => {\n props.onCompositionStart?.(event);\n if (!event.defaultPrevented) beginSearch();\n }}\n onChange={(event) => {\n setQuery(event.target.value);\n onSearch?.(event.target.value);\n setOpen(true);\n }}\n onKeyDown={(event) => {\n props.onKeyDown?.(event);\n if (event.defaultPrevented || disabled || event.nativeEvent.isComposing) return;\n if (\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n (event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete')\n )\n beginSearch();\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!open) {\n pendingFocus.current = true;\n setOpen(true);\n } else\n panel.current\n ?.querySelector<HTMLElement>('[role=\"treeitem\"][tabindex=\"0\"]')\n ?.focus();\n } else if (event.key === 'Enter' && !open) {\n event.preventDefault();\n setOpen(true);\n } else if (event.key === 'Backspace' && !searchQuery && multi) {\n const last = [...selected].reverse().find(canRemove);\n if (last) {\n event.preventDefault();\n commit(selected.filter((key) => key !== last));\n }\n }\n }}\n />\n </span>\n </SelectionContent>\n {clearable && (\n <button\n type=\"button\"\n className=\"leaf-tree-select__clear\"\n aria-label={messages.treeSelect.clear}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n commit(selected.filter((key) => !canRemove(key)));\n trigger.current?.focus();\n }}\n >\n <X size={14} aria-hidden=\"true\" />\n </button>\n )}\n <button\n type=\"button\"\n className=\"leaf-tree-select__arrow\"\n tabIndex={-1}\n disabled={disabled}\n aria-label={messages.treeSelect.placeholder}\n onClick={() => {\n trigger.current?.focus();\n if (open) close();\n else setOpen(true);\n }}\n >\n <ChevronDown size={16} aria-hidden=\"true\" />\n </button>\n <FormValue\n value={selected[0] ?? ''}\n name={name}\n form={form}\n required={required}\n disabled={disabled}\n triggerRef={trigger}\n />\n {selected.slice(1).map((key) => (\n <input\n type=\"hidden\"\n key={key}\n name={name}\n form={form}\n value={key}\n disabled={disabled}\n />\n ))}\n </div>\n <FloatingPanel\n placement={popupPlacement}\n container={getPopupContainer}\n render={popupRender}\n style={popupStyle}\n open={open}\n triggerRef={root}\n panelRef={panel}\n minWidth=\"trigger\"\n width={popupWidth ?? 'max-content'}\n maxWidth={popupMaxWidth}\n maxHeight={320}\n className={classes('leaf-floating leaf-tree-select__panel', popupClassName)}\n >\n <FieldScope>\n <Tree\n virtual={virtual}\n height={listHeight}\n itemHeight={itemHeight}\n loadData={loadData ? lazyLoad : undefined}\n cacheKey={cacheKey}\n disabled={disabled || props.readOnly}\n expandedKeys={treeExpandedKeys ?? expandedKeys}\n onExpand={(keys) => {\n if (treeExpandedKeys === undefined) setExpandedKeys(keys);\n onExpand?.(keys);\n }}\n checkOnClick={treeCheckable}\n expandOnClick\n filterTreeNode={\n filterTreeNode\n ? (node, query) => {\n const option = optionRecords.get(node.key);\n return !!option && filterTreeNode(option, query);\n }\n : undefined\n }\n nodeRender={\n nodeRender\n ? (node) => {\n const option = optionRecords.get(node.key);\n return option ? nodeRender(option) : node.title;\n }\n : undefined\n }\n onLoadError={(error, node) => {\n const option = optionRecords.get(node.key);\n if (option) onLoadError?.(error, option);\n }}\n id={id}\n data={data}\n aria-label={label ?? messages.treeSelect.placeholder}\n multiple={multi}\n selectable={!treeCheckable}\n checkable={treeCheckable}\n checkStrictly={checkStrictly}\n selectedKeys={treeCheckable ? emptyKeys : selected}\n checkedKeys={selected}\n searchValue={searchQuery}\n notFoundContent={notFoundContent ?? messages.treeSelect.empty}\n onSelect={(keys) => commit(keys)}\n onCheck={(keys) => {\n const checked = new Set(keys);\n commit(\n checkStrictly || showCheckedStrategy === 'all'\n ? keys\n : keys.filter((key) => {\n const record = records.get(key);\n if (!record) return false;\n if (showCheckedStrategy === 'parent')\n return !record.parent || !checked.has(record.parent);\n return !(record.node.children ?? []).some((child) =>\n checked.has(child.key),\n );\n }),\n );\n }}\n />\n </FieldScope>\n </FloatingPanel>\n </>\n );\n },\n);\nInternalTreeSelect.displayName = 'TreeSelect';\nexport type TreeSelectProps = Omit<\n InternalTreeSelectProps,\n 'value' | 'defaultValue' | 'onChange' | 'multiple' | 'treeCheckable'\n> &\n (\n | {\n multiple?: false;\n treeCheckable?: false;\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string | null) => void;\n }\n | {\n multiple: true;\n treeCheckable?: boolean;\n value?: readonly string[];\n defaultValue?: readonly string[];\n onChange?: (value: readonly string[]) => void;\n }\n | {\n treeCheckable: true;\n multiple?: boolean;\n value?: readonly string[];\n defaultValue?: readonly string[];\n onChange?: (value: readonly string[]) => void;\n }\n );\nexport const TreeSelectControl = InternalTreeSelect as React.ForwardRefExoticComponent<\n TreeSelectProps & React.RefAttributes<HTMLInputElement>\n>;\nexport const TreeSelect = forwardRef<HTMLInputElement, TreeSelectProps>(\n function TreeSelect(rawProps, ref) {\n const props = useComponentProps('TreeSelect', rawProps);\n return <TreeSelectControl {...props} ref={ref} />;\n },\n);\nTreeSelect.displayName = 'TreeSelect';\n"],"names":["emptyKeys","InternalTreeSelect","forwardRef","options","value","defaultValue","onChange","multiple","treeCheckable","checkStrictly","showCheckedStrategy","showSearch","onSearch","allowClear","defaultExpandAll","treeDefaultExpandedKeys","size","statusProp","disabledProp","requiredProp","popupWidth","popupMaxWidth","notFoundContent","onOpenChange","loadData","onLoadError","virtual","listHeight","itemHeightProp","inputReadOnly","controlledOpen","defaultOpen","maxTagCount","tagWrap","maxCount","Infinity","treeExpandedKeys","onExpand","filterTreeNode","nodeRender","cacheKey","popupPlacement","popupClassName","popupStyle","popupRender","getPopupContainer","name","form","className","style","placeholder","label","props","forwardedRef","messages","theme","density","useLeafConfig","itemHeight","Math","estimateControlHeight","field","useFormField","disabled","required","status","undefined","multi","trigger","useRef","ref","useMergedRef","root","panel","pendingFocus","current","setCurrent","useFieldValue","selected","useListMotion","query","setQuery","useState","searchQuery","open","setOpen","usePopupState","id","useId","loadedOptions","setLoadedOptions","Map","generation","useEffect","allOptions","useMemo","merge","entries","option","children","optionRecords","map","visit","latestLoader","lazyLoad","useCallback","node","signal","snapshot","previous","convert","key","title","entry","data","nodes","records","treeModel","expandedKeys","setExpandedKeys","close","useFloatingDismiss","commit","keys","next","canRemove","clearable","caption","a11yCaption","String","selectedCaption","hasRichCaption","showCaption","inputValue","beginSearch","classes","event","Element","SelectionContent","item","Boolean","last","X","ChevronDown","FormValue","FloatingPanel","FieldScope","Tree","error","checked","Set","record","child","TreeSelectControl","TreeSelect","rawProps","useComponentProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"treeselect/treeselect.js","sources":["../../../src/treeselect/treeselect.tsx"],"sourcesContent":["import { ChevronDown, X } from 'lucide-react';\nimport {\n forwardRef,\n type InputHTMLAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { estimateControlHeight } from '../density';\nimport { FieldScope, useFormField } from '../form/form';\nimport { classes } from '../shared/classes';\nimport { FormValue, useFieldValue, useMergedRef } from '../shared/field';\nimport {\n FloatingPanel,\n type PopupOptions,\n useFloatingDismiss,\n usePopupState,\n} from '../shared/floating';\nimport { useListMotion } from '../shared/motion';\nimport { SelectionContent } from '../shared/selection-content';\nimport type { ControlSize, ControlStatus } from '../shared/types';\nimport type { TreeNode } from '../tree';\nimport { treeModel } from '../tree/model';\nimport { TreeControl as Tree } from '../tree/tree';\n\nexport interface TreeSelectOption {\n value: string;\n label: ReactNode;\n children?: readonly TreeSelectOption[];\n disabled?: boolean;\n selectable?: boolean;\n disableCheckbox?: boolean;\n icon?: ReactNode;\n searchLabel?: string;\n isLeaf?: boolean;\n}\nexport type TreeSelectValue = string | readonly string[] | null;\ninterface InternalTreeSelectProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'defaultValue' | 'onChange' | 'size' | 'multiple'\n >,\n PopupOptions {\n options: readonly TreeSelectOption[];\n value?: TreeSelectValue;\n defaultValue?: TreeSelectValue;\n onChange?: (value: TreeSelectValue) => void;\n multiple?: boolean;\n treeCheckable?: boolean;\n checkStrictly?: boolean;\n showCheckedStrategy?: 'child' | 'parent' | 'all';\n showSearch?: boolean;\n onSearch?: (query: string) => void;\n allowClear?: boolean;\n defaultExpandAll?: boolean;\n treeDefaultExpandedKeys?: readonly string[];\n size?: ControlSize;\n status?: ControlStatus;\n popupWidth?: number | string;\n popupMaxWidth?: number | string;\n notFoundContent?: ReactNode;\n onOpenChange?: (open: boolean) => void;\n loadData?: (\n option: TreeSelectOption,\n signal: AbortSignal,\n ) => Promise<readonly TreeSelectOption[]>;\n onLoadError?: (error: unknown, option: TreeSelectOption) => void;\n virtual?: boolean;\n listHeight?: number;\n itemHeight?: number;\n inputReadOnly?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n maxTagCount?: number | 'responsive';\n tagWrap?: boolean;\n maxCount?: number;\n treeExpandedKeys?: readonly string[];\n onExpand?: (keys: string[]) => void;\n filterTreeNode?: (option: TreeSelectOption, query: string) => boolean;\n nodeRender?: (option: TreeSelectOption) => ReactNode;\n cacheKey?: string | number;\n}\nconst emptyKeys: readonly string[] = [];\nconst InternalTreeSelect = forwardRef<HTMLInputElement, InternalTreeSelectProps>(\n function TreeSelect(\n {\n options,\n value,\n defaultValue = null,\n onChange,\n multiple = false,\n treeCheckable = false,\n checkStrictly = false,\n showCheckedStrategy = 'child',\n showSearch = true,\n onSearch,\n allowClear = true,\n defaultExpandAll = false,\n treeDefaultExpandedKeys = emptyKeys,\n size = 'md',\n status: statusProp,\n disabled: disabledProp,\n required: requiredProp,\n popupWidth = 'trigger',\n popupMaxWidth,\n notFoundContent,\n onOpenChange,\n loadData,\n onLoadError,\n virtual = false,\n listHeight = 256,\n itemHeight: itemHeightProp,\n inputReadOnly,\n open: controlledOpen,\n defaultOpen,\n maxTagCount,\n tagWrap = true,\n maxCount = Infinity,\n treeExpandedKeys,\n onExpand,\n filterTreeNode,\n nodeRender,\n cacheKey,\n popupPlacement,\n popupClassName,\n popupStyle,\n popupRender,\n getPopupContainer,\n name,\n form,\n className,\n style,\n placeholder,\n 'aria-label': label,\n ...props\n },\n forwardedRef,\n ) {\n const { messages, theme, density, direction: configuredDirection } = useLeafConfig();\n const itemHeight =\n itemHeightProp ?? Math.max(24, estimateControlHeight(theme, density) - 4) + 6;\n const field = useFormField();\n const disabled = disabledProp || field?.disabled;\n const required = requiredProp ?? field?.required;\n const status = statusProp ?? (field?.error ? 'error' : undefined);\n const multi = multiple || treeCheckable;\n const trigger = useRef<HTMLInputElement>(null);\n const ref = useMergedRef(trigger, forwardedRef);\n const root = useRef<HTMLDivElement>(null);\n const panel = useRef<HTMLDivElement>(null);\n const pendingFocus = useRef(false);\n const [current, setCurrent] = useFieldValue(value, defaultValue, trigger, form);\n const selected = typeof current === 'string' ? [current] : (current ?? emptyKeys);\n useListMotion(root, selected[0], multi ? '' : '.leaf-tree-select__input-wrap[data-motion-key]');\n const [query, setQuery] = useState<string | null>(null);\n const searchQuery = query ?? '';\n const [open, setOpen] = usePopupState(\n disabled || props.readOnly,\n onOpenChange,\n controlledOpen,\n defaultOpen,\n );\n const id = `${useId()}-tree-select`;\n const [loadedOptions, setLoadedOptions] = useState<Map<string, readonly TreeSelectOption[]>>(\n new Map(),\n );\n const generation = useRef(0);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Invalidate lazy options on source and cache-version changes.\n useEffect(() => {\n generation.current++;\n setLoadedOptions(new Map());\n }, [options, loadData, cacheKey]);\n const allOptions = useMemo(() => {\n const merge = (entries: readonly TreeSelectOption[]): TreeSelectOption[] =>\n entries.map((option) => {\n const children = option.children ?? loadedOptions.get(option.value);\n return children ? { ...option, children: merge(children) } : option;\n });\n return merge(options);\n }, [options, loadedOptions]);\n const optionRecords = useMemo(() => {\n const map = new Map<string, TreeSelectOption>();\n const visit = (entries: readonly TreeSelectOption[]) => {\n for (const option of entries) {\n map.set(option.value, option);\n if (option.children) visit(option.children);\n }\n };\n visit(allOptions);\n return map;\n }, [allOptions]);\n const latestLoader = useRef({ loadData, optionRecords });\n latestLoader.current = { loadData, optionRecords };\n const lazyLoad = useCallback(async (node: TreeNode, signal: AbortSignal) => {\n const snapshot = generation.current;\n const option = latestLoader.current.optionRecords.get(node.key);\n if (!option || !latestLoader.current.loadData) return [];\n const children = await latestLoader.current.loadData(option, signal);\n if (!signal.aborted && snapshot === generation.current)\n setLoadedOptions((previous) => new Map(previous).set(node.key, children));\n const convert = (entries: readonly TreeSelectOption[]): TreeNode[] =>\n entries.map(({ value: key, label: title, children, ...entry }) => ({\n ...entry,\n key,\n title,\n children: children ? convert(children) : undefined,\n }));\n return convert(children);\n }, []);\n const data = useMemo(() => {\n const convert = (nodes: readonly TreeSelectOption[]): TreeNode[] =>\n nodes.map(({ value: key, label: title, children, ...node }) => ({\n ...node,\n key,\n title,\n children: children ? convert(children) : undefined,\n }));\n return convert(allOptions);\n }, [allOptions]);\n const records = useMemo(() => treeModel(data), [data]);\n const [expandedKeys, setExpandedKeys] = useState<readonly string[]>(() =>\n defaultExpandAll ? [...records.keys()] : treeDefaultExpandedKeys,\n );\n const close = () => {\n setOpen(false);\n setQuery(null);\n };\n useFloatingDismiss(open, close, trigger, panel, root);\n useEffect(() => {\n if (!open) setQuery(null);\n else if (pendingFocus.current) {\n panel.current?.querySelector<HTMLElement>('[role=\"treeitem\"][tabindex=\"0\"]')?.focus();\n pendingFocus.current = false;\n }\n }, [open]);\n const commit = (keys: readonly string[]) => {\n if (disabled || props.readOnly || keys.length > maxCount) return;\n const next: TreeSelectValue = multi ? [...keys] : (keys[0] ?? null);\n setCurrent(next);\n onChange?.(next);\n setQuery(null);\n if (!multi) {\n setOpen(false);\n trigger.current?.focus();\n }\n };\n const canRemove = (key: string) =>\n !records.get(key)?.node.disabled && !records.get(key)?.node.disableCheckbox;\n const clearable = allowClear && selected.some(canRemove) && !disabled && !props.readOnly;\n const caption = (key: string) => records.get(key)?.node.title ?? key;\n const a11yCaption = (key: string) =>\n records.get(key)?.node.searchLabel ??\n (typeof caption(key) === 'string' || typeof caption(key) === 'number'\n ? String(caption(key))\n : key);\n const selectedCaption = selected[0] === undefined ? undefined : caption(selected[0]);\n const hasRichCaption =\n selectedCaption !== undefined &&\n typeof selectedCaption !== 'string' &&\n typeof selectedCaption !== 'number';\n const showCaption = !multi && hasRichCaption && (!showSearch || !open || query === null);\n const inputValue = multi\n ? searchQuery\n : showSearch && open\n ? (query ?? (selected[0] === undefined ? '' : a11yCaption(selected[0])))\n : selected[0] === undefined\n ? ''\n : a11yCaption(selected[0]);\n const beginSearch = () => {\n if (!showSearch || disabled || props.readOnly || inputReadOnly) return;\n if (!multi && query === null) trigger.current?.select();\n setOpen(true);\n };\n return (\n <>\n {/* biome-ignore lint/a11y/noStaticElementInteractions: The wrapper extends the input's clickable area, as in Select. */}\n {/* biome-ignore lint/a11y/useKeyWithClickEvents: The enclosed combobox owns keyboard interaction. */}\n <div\n ref={root}\n className={classes(\n 'leaf-tree-select',\n `leaf-tree-select--${size}`,\n multi && 'leaf-tree-select--multiple',\n className,\n )}\n style={style}\n dir={props.dir ?? configuredDirection}\n data-disabled={disabled || undefined}\n data-status={status}\n data-open={open || undefined}\n data-clearable={clearable || undefined}\n data-searchable={showSearch || undefined}\n onMouseDown={(event) => {\n if (\n !disabled &&\n event.target instanceof Element &&\n !event.target.closest('input, button, a')\n )\n event.preventDefault();\n }}\n onClick={(event) => {\n if (\n !disabled &&\n event.target instanceof Element &&\n !event.target.closest('input, button, a')\n ) {\n trigger.current?.focus();\n trigger.current?.click();\n }\n }}\n >\n <SelectionContent\n className=\"leaf-tree-select__content\"\n tagClassName=\"leaf-tree-select__tag\"\n tagWrap={tagWrap}\n maxTagCount={maxTagCount}\n searchable={showSearch && !props.readOnly && !inputReadOnly}\n query={searchQuery}\n removeLabel={messages.common.remove}\n items={\n multi\n ? selected.map((key) => ({\n key,\n label: caption(key),\n text: a11yCaption(key),\n remove:\n canRemove(key) && !disabled && !props.readOnly\n ? () => {\n commit(selected.filter((item) => item !== key));\n trigger.current?.focus();\n }\n : undefined,\n }))\n : undefined\n }\n >\n <span className=\"leaf-tree-select__input-wrap\" data-motion-key={selected[0] ?? ''}>\n {showCaption && (\n <span className=\"leaf-tree-select__value\" aria-hidden=\"true\">\n {selectedCaption}\n </span>\n )}\n <input\n {...props}\n ref={ref}\n id={props.id ?? field?.id}\n role=\"combobox\"\n aria-haspopup=\"tree\"\n aria-expanded={open}\n aria-controls={open ? id : undefined}\n aria-autocomplete={showSearch ? 'list' : undefined}\n aria-label={label ?? (field?.labelId ? undefined : messages.treeSelect.placeholder)}\n aria-labelledby={props['aria-labelledby'] ?? field?.labelId}\n aria-describedby={\n [props['aria-describedby'], field?.descriptionId].filter(Boolean).join(' ') ||\n undefined\n }\n aria-required={required || undefined}\n aria-invalid={status === 'error' || props['aria-invalid']}\n autoComplete=\"off\"\n className={classes(\n 'leaf-tree-select__input',\n showCaption && 'leaf-tree-select__input--caption',\n )}\n value={inputValue}\n readOnly={!showSearch || props.readOnly || inputReadOnly}\n disabled={disabled}\n placeholder={\n selected.length ? undefined : (placeholder ?? messages.treeSelect.placeholder)\n }\n onClick={(event) => {\n props.onClick?.(event);\n if (event.defaultPrevented) return;\n if (open && !showSearch) close();\n else setOpen(true);\n }}\n onBeforeInput={(event) => {\n props.onBeforeInput?.(event);\n if (!event.defaultPrevented) beginSearch();\n }}\n onPaste={(event) => {\n props.onPaste?.(event);\n if (!event.defaultPrevented) beginSearch();\n }}\n onCompositionStart={(event) => {\n props.onCompositionStart?.(event);\n if (!event.defaultPrevented) beginSearch();\n }}\n onChange={(event) => {\n setQuery(event.target.value);\n onSearch?.(event.target.value);\n setOpen(true);\n }}\n onKeyDown={(event) => {\n props.onKeyDown?.(event);\n if (event.defaultPrevented || disabled || event.nativeEvent.isComposing) return;\n if (\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n (event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete')\n )\n beginSearch();\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!open) {\n pendingFocus.current = true;\n setOpen(true);\n } else\n panel.current\n ?.querySelector<HTMLElement>('[role=\"treeitem\"][tabindex=\"0\"]')\n ?.focus();\n } else if (event.key === 'Enter' && !open) {\n event.preventDefault();\n setOpen(true);\n } else if (event.key === 'Backspace' && !searchQuery && multi) {\n const last = [...selected].reverse().find(canRemove);\n if (last) {\n event.preventDefault();\n commit(selected.filter((key) => key !== last));\n }\n }\n }}\n />\n </span>\n </SelectionContent>\n {clearable && (\n <button\n type=\"button\"\n className=\"leaf-tree-select__clear\"\n aria-label={messages.treeSelect.clear}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n commit(selected.filter((key) => !canRemove(key)));\n trigger.current?.focus();\n }}\n >\n <X size={14} aria-hidden=\"true\" />\n </button>\n )}\n <button\n type=\"button\"\n className=\"leaf-tree-select__arrow\"\n tabIndex={-1}\n disabled={disabled}\n aria-label={messages.treeSelect.placeholder}\n onClick={() => {\n trigger.current?.focus();\n if (open) close();\n else setOpen(true);\n }}\n >\n <ChevronDown size={16} aria-hidden=\"true\" />\n </button>\n <FormValue\n value={selected[0] ?? ''}\n name={name}\n form={form}\n required={required}\n disabled={disabled}\n triggerRef={trigger}\n />\n {selected.slice(1).map((key) => (\n <input\n type=\"hidden\"\n key={key}\n name={name}\n form={form}\n value={key}\n disabled={disabled}\n />\n ))}\n </div>\n <FloatingPanel\n placement={popupPlacement}\n container={getPopupContainer}\n render={popupRender}\n style={popupStyle}\n open={open}\n triggerRef={root}\n panelRef={panel}\n matchWidth={popupWidth === 'trigger'}\n width={\n popupWidth === 'trigger'\n ? undefined\n : popupWidth === 'auto'\n ? 'max-content'\n : popupWidth\n }\n maxWidth={popupMaxWidth}\n maxHeight={320}\n className={classes('leaf-floating leaf-tree-select__panel', popupClassName)}\n >\n <FieldScope>\n <Tree\n virtual={virtual}\n height={listHeight}\n itemHeight={itemHeight}\n loadData={loadData ? lazyLoad : undefined}\n cacheKey={cacheKey}\n disabled={disabled || props.readOnly}\n expandedKeys={treeExpandedKeys ?? expandedKeys}\n onExpand={(keys) => {\n if (treeExpandedKeys === undefined) setExpandedKeys(keys);\n onExpand?.(keys);\n }}\n checkOnClick={treeCheckable}\n expandOnClick\n filterTreeNode={\n filterTreeNode\n ? (node, query) => {\n const option = optionRecords.get(node.key);\n return !!option && filterTreeNode(option, query);\n }\n : undefined\n }\n nodeRender={\n nodeRender\n ? (node) => {\n const option = optionRecords.get(node.key);\n return option ? nodeRender(option) : node.title;\n }\n : undefined\n }\n onLoadError={(error, node) => {\n const option = optionRecords.get(node.key);\n if (option) onLoadError?.(error, option);\n }}\n id={id}\n data={data}\n aria-label={label ?? messages.treeSelect.placeholder}\n multiple={multi}\n selectable={!treeCheckable}\n checkable={treeCheckable}\n checkStrictly={checkStrictly}\n selectedKeys={treeCheckable ? emptyKeys : selected}\n checkedKeys={selected}\n searchValue={searchQuery}\n notFoundContent={notFoundContent ?? messages.treeSelect.empty}\n onSelect={(keys) => commit(keys)}\n onCheck={(keys) => {\n const checked = new Set(keys);\n commit(\n checkStrictly || showCheckedStrategy === 'all'\n ? keys\n : keys.filter((key) => {\n const record = records.get(key);\n if (!record) return false;\n if (showCheckedStrategy === 'parent')\n return !record.parent || !checked.has(record.parent);\n return !(record.node.children ?? []).some((child) =>\n checked.has(child.key),\n );\n }),\n );\n }}\n />\n </FieldScope>\n </FloatingPanel>\n </>\n );\n },\n);\nInternalTreeSelect.displayName = 'TreeSelect';\nexport type TreeSelectProps = Omit<\n InternalTreeSelectProps,\n 'value' | 'defaultValue' | 'onChange' | 'multiple' | 'treeCheckable'\n> &\n (\n | {\n multiple?: false;\n treeCheckable?: false;\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string | null) => void;\n }\n | {\n multiple: true;\n treeCheckable?: boolean;\n value?: readonly string[];\n defaultValue?: readonly string[];\n onChange?: (value: readonly string[]) => void;\n }\n | {\n treeCheckable: true;\n multiple?: boolean;\n value?: readonly string[];\n defaultValue?: readonly string[];\n onChange?: (value: readonly string[]) => void;\n }\n );\nexport const TreeSelectControl = InternalTreeSelect as React.ForwardRefExoticComponent<\n TreeSelectProps & React.RefAttributes<HTMLInputElement>\n>;\nexport const TreeSelect = forwardRef<HTMLInputElement, TreeSelectProps>(\n function TreeSelect(rawProps, ref) {\n const props = useComponentProps('TreeSelect', rawProps);\n return <TreeSelectControl {...props} ref={ref} />;\n },\n);\nTreeSelect.displayName = 'TreeSelect';\n"],"names":["emptyKeys","InternalTreeSelect","forwardRef","options","value","defaultValue","onChange","multiple","treeCheckable","checkStrictly","showCheckedStrategy","showSearch","onSearch","allowClear","defaultExpandAll","treeDefaultExpandedKeys","size","statusProp","disabledProp","requiredProp","popupWidth","popupMaxWidth","notFoundContent","onOpenChange","loadData","onLoadError","virtual","listHeight","itemHeightProp","inputReadOnly","controlledOpen","defaultOpen","maxTagCount","tagWrap","maxCount","Infinity","treeExpandedKeys","onExpand","filterTreeNode","nodeRender","cacheKey","popupPlacement","popupClassName","popupStyle","popupRender","getPopupContainer","name","form","className","style","placeholder","label","props","forwardedRef","messages","theme","density","configuredDirection","useLeafConfig","itemHeight","Math","estimateControlHeight","field","useFormField","disabled","required","status","undefined","multi","trigger","useRef","ref","useMergedRef","root","panel","pendingFocus","current","setCurrent","useFieldValue","selected","useListMotion","query","setQuery","useState","searchQuery","open","setOpen","usePopupState","id","useId","loadedOptions","setLoadedOptions","Map","generation","useEffect","allOptions","useMemo","merge","entries","option","children","optionRecords","map","visit","latestLoader","lazyLoad","useCallback","node","signal","snapshot","previous","convert","key","title","entry","data","nodes","records","treeModel","expandedKeys","setExpandedKeys","close","useFloatingDismiss","commit","keys","next","canRemove","clearable","caption","a11yCaption","String","selectedCaption","hasRichCaption","showCaption","inputValue","beginSearch","classes","event","Element","SelectionContent","item","Boolean","last","X","ChevronDown","FormValue","FloatingPanel","FieldScope","Tree","error","checked","Set","record","child","TreeSelectControl","TreeSelect","rawProps","useComponentProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtuallist.d.ts","sourceRoot":"","sources":["../../../src/virtuallist/virtuallist.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,aAAa,EAGnB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"virtuallist.d.ts","sourceRoot":"","sources":["../../../src/virtuallist/virtuallist.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,aAAa,EAGnB,MAAM,OAAO,CAAC;AAQf,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC;IACpF,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AACD,MAAM,WAAW,gBAAgB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC3F,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACzC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAmFD,eAAO,MAAM,kBAAkB,EAAkC,CAAC,CAAC,EACjE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAC1D,YAAY,CAAC;AASlB,eAAO,MAAM,WAAW,EAAmC,CAAC,CAAC,EAC3D,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAC1D,YAAY,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { useVirtualizer } from "@tanstack/react-virtual";
|
|
|
4
4
|
import { forwardRef, useImperativeHandle, useRef } from "react";
|
|
5
5
|
import { mergeComponentProps, useGenericComponentDefaults } from "../config-provider/component-defaults.js";
|
|
6
6
|
import { ResultControl } from "../result/result.js";
|
|
7
|
+
import { ScrollbarControl } from "../scrollbar/scrollbar.js";
|
|
7
8
|
import { classes } from "../shared/classes.js";
|
|
8
9
|
function VirtualListRoot(rawProps, ref) {
|
|
9
10
|
const { items, itemKey, renderItem, height = 320, estimateSize = 40, overscan = 5, emptyContent, horizontal = false, className, style, ...props } = rawProps;
|
|
@@ -29,12 +30,17 @@ function VirtualListRoot(rawProps, ref) {
|
|
|
29
30
|
}), [
|
|
30
31
|
virtualizer
|
|
31
32
|
]);
|
|
32
|
-
return /*#__PURE__*/ jsx(
|
|
33
|
-
...props,
|
|
33
|
+
return /*#__PURE__*/ jsx(ScrollbarControl, {
|
|
34
34
|
ref: root,
|
|
35
|
-
|
|
35
|
+
viewportProps: props,
|
|
36
|
+
role: props.role ?? 'presentation',
|
|
36
37
|
tabIndex: props.tabIndex ?? 0,
|
|
37
38
|
className: classes('leaf-virtual-list', className),
|
|
39
|
+
viewportClassName: "leaf-virtual-list__viewport",
|
|
40
|
+
viewportStyle: {
|
|
41
|
+
position: 'relative'
|
|
42
|
+
},
|
|
43
|
+
scrollbarTabIndex: -1,
|
|
38
44
|
style: {
|
|
39
45
|
height,
|
|
40
46
|
...style
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtuallist/virtuallist.js","sources":["../../../src/virtuallist/virtuallist.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport {\n forwardRef,\n type HTMLAttributes,\n type Key,\n type ReactElement,\n type ReactNode,\n type Ref,\n type RefAttributes,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport {\n mergeComponentProps,\n useGenericComponentDefaults,\n} from '../config-provider/component-defaults';\nimport { ResultControl as Result } from '../result/result';\nimport { classes } from '../shared/classes';\nexport interface VirtualListHandle {\n element: HTMLDivElement | null;\n scrollToIndex: (index: number, align?: 'auto' | 'start' | 'center' | 'end') => void;\n scrollToOffset: (offset: number) => void;\n}\nexport interface VirtualListProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n items: readonly T[];\n itemKey: (item: T, index: number) => Key;\n renderItem: (item: T, index: number) => ReactNode;\n height?: number;\n estimateSize?: number | ((item: T, index: number) => number);\n overscan?: number;\n emptyContent?: ReactNode;\n horizontal?: boolean;\n}\nfunction VirtualListRoot<T>(rawProps: VirtualListProps<T>, ref: Ref<VirtualListHandle>) {\n const {\n items,\n itemKey,\n renderItem,\n height = 320,\n estimateSize = 40,\n overscan = 5,\n emptyContent,\n horizontal = false,\n className,\n style,\n ...props\n } = rawProps;\n const root = useRef<HTMLDivElement>(null);\n const virtualizer = useVirtualizer<HTMLDivElement, HTMLLIElement>({\n count: items.length,\n getScrollElement: () => root.current,\n estimateSize: (index) =>\n typeof estimateSize === 'number'\n ? Math.max(1, estimateSize)\n : Math.max(1, estimateSize(items[index] as T, index)),\n getItemKey: (index) => itemKey(items[index] as T, index),\n overscan: Math.max(0, overscan),\n horizontal,\n initialRect: { height, width: 640 },\n });\n useImperativeHandle(\n ref,\n () => ({\n element: root.current,\n scrollToIndex: (index, align = 'auto') => virtualizer.scrollToIndex(index, { align }),\n scrollToOffset: (offset) => virtualizer.scrollToOffset(offset),\n }),\n [virtualizer],\n );\n return (\n <
|
|
1
|
+
{"version":3,"file":"virtuallist/virtuallist.js","sources":["../../../src/virtuallist/virtuallist.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport {\n forwardRef,\n type HTMLAttributes,\n type Key,\n type ReactElement,\n type ReactNode,\n type Ref,\n type RefAttributes,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport {\n mergeComponentProps,\n useGenericComponentDefaults,\n} from '../config-provider/component-defaults';\nimport { ResultControl as Result } from '../result/result';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { classes } from '../shared/classes';\nexport interface VirtualListHandle {\n element: HTMLDivElement | null;\n scrollToIndex: (index: number, align?: 'auto' | 'start' | 'center' | 'end') => void;\n scrollToOffset: (offset: number) => void;\n}\nexport interface VirtualListProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n items: readonly T[];\n itemKey: (item: T, index: number) => Key;\n renderItem: (item: T, index: number) => ReactNode;\n height?: number;\n estimateSize?: number | ((item: T, index: number) => number);\n overscan?: number;\n emptyContent?: ReactNode;\n horizontal?: boolean;\n}\nfunction VirtualListRoot<T>(rawProps: VirtualListProps<T>, ref: Ref<VirtualListHandle>) {\n const {\n items,\n itemKey,\n renderItem,\n height = 320,\n estimateSize = 40,\n overscan = 5,\n emptyContent,\n horizontal = false,\n className,\n style,\n ...props\n } = rawProps;\n const root = useRef<HTMLDivElement>(null);\n const virtualizer = useVirtualizer<HTMLDivElement, HTMLLIElement>({\n count: items.length,\n getScrollElement: () => root.current,\n estimateSize: (index) =>\n typeof estimateSize === 'number'\n ? Math.max(1, estimateSize)\n : Math.max(1, estimateSize(items[index] as T, index)),\n getItemKey: (index) => itemKey(items[index] as T, index),\n overscan: Math.max(0, overscan),\n horizontal,\n initialRect: { height, width: 640 },\n });\n useImperativeHandle(\n ref,\n () => ({\n element: root.current,\n scrollToIndex: (index, align = 'auto') => virtualizer.scrollToIndex(index, { align }),\n scrollToOffset: (offset) => virtualizer.scrollToOffset(offset),\n }),\n [virtualizer],\n );\n return (\n <ScrollbarControl\n ref={root}\n viewportProps={props}\n role={props.role ?? 'presentation'}\n tabIndex={props.tabIndex ?? 0}\n className={classes('leaf-virtual-list', className)}\n viewportClassName=\"leaf-virtual-list__viewport\"\n viewportStyle={{ position: 'relative' }}\n scrollbarTabIndex={-1}\n style={{ height, ...style }}\n >\n {!items.length ? (\n (emptyContent ?? <Result status=\"empty\" />)\n ) : (\n <ul\n className=\"leaf-virtual-list__canvas\"\n style={{\n height: horizontal ? '100%' : virtualizer.getTotalSize(),\n width: horizontal ? virtualizer.getTotalSize() : '100%',\n }}\n >\n {virtualizer.getVirtualItems().map((row) => (\n <li\n key={row.key}\n ref={virtualizer.measureElement}\n data-index={row.index}\n aria-posinset={row.index + 1}\n aria-setsize={items.length}\n className=\"leaf-virtual-list__item\"\n style={{\n top: 0,\n left: 0,\n width: horizontal ? undefined : '100%',\n height: horizontal ? '100%' : undefined,\n transform: `translate${horizontal ? 'X' : 'Y'}(${row.start}px)`,\n }}\n >\n {renderItem(items[row.index] as T, row.index)}\n </li>\n ))}\n </ul>\n )}\n </ScrollbarControl>\n );\n}\nexport const VirtualListControl = forwardRef(VirtualListRoot) as <T>(\n props: VirtualListProps<T> & RefAttributes<VirtualListHandle>,\n) => ReactElement;\n\nfunction VirtualListEntry<T>(rawProps: VirtualListProps<T>, ref: Ref<VirtualListHandle>) {\n const props = mergeComponentProps<VirtualListProps<T>>(\n useGenericComponentDefaults('VirtualList'),\n rawProps,\n );\n return <VirtualListControl {...props} ref={ref} />;\n}\nexport const VirtualList = forwardRef(VirtualListEntry) as <T>(\n props: VirtualListProps<T> & RefAttributes<VirtualListHandle>,\n) => ReactElement;\n"],"names":["VirtualListRoot","rawProps","ref","items","itemKey","renderItem","height","estimateSize","overscan","emptyContent","horizontal","className","style","props","root","useRef","virtualizer","useVirtualizer","index","Math","useImperativeHandle","align","offset","ScrollbarControl","classes","row","undefined","Result","VirtualListControl","forwardRef","VirtualListEntry","mergeComponentProps","useGenericComponentDefaults","VirtualList"],"mappings":";;;;;;;;AAkCA,SAASA,gBAAmBC,QAA6B,EAAEC,GAA2B;IACpF,MAAM,EACJC,KAAK,EACLC,OAAO,EACPC,UAAU,EACVC,SAAS,GAAG,EACZC,eAAe,EAAE,EACjBC,WAAW,CAAC,EACZC,YAAY,EACZC,aAAa,KAAK,EAClBC,SAAS,EACTC,KAAK,EACL,GAAGC,OACJ,GAAGZ;IACJ,MAAMa,OAAOC,OAAuB;IACpC,MAAMC,cAAcC,eAA8C;QAChE,OAAOd,MAAM,MAAM;QACnB,kBAAkB,IAAMW,KAAK,OAAO;QACpC,cAAc,CAACI,QACb,AAAwB,YAAxB,OAAOX,eACHY,KAAK,GAAG,CAAC,GAAGZ,gBACZY,KAAK,GAAG,CAAC,GAAGZ,aAAaJ,KAAK,CAACe,MAAM,EAAOA;QAClD,YAAY,CAACA,QAAUd,QAAQD,KAAK,CAACe,MAAM,EAAOA;QAClD,UAAUC,KAAK,GAAG,CAAC,GAAGX;QACtBE;QACA,aAAa;YAAEJ;YAAQ,OAAO;QAAI;IACpC;IACAc,oBACElB,KACA,IAAO;YACL,SAASY,KAAK,OAAO;YACrB,eAAe,CAACI,OAAOG,QAAQ,MAAM,GAAKL,YAAY,aAAa,CAACE,OAAO;oBAAEG;gBAAM;YACnF,gBAAgB,CAACC,SAAWN,YAAY,cAAc,CAACM;QACzD,IACA;QAACN;KAAY;IAEf,OAAO,WAAP,GACE,IAACO,kBAAgBA;QACf,KAAKT;QACL,eAAeD;QACf,MAAMA,MAAM,IAAI,IAAI;QACpB,UAAUA,MAAM,QAAQ,IAAI;QAC5B,WAAWW,QAAQ,qBAAqBb;QACxC,mBAAkB;QAClB,eAAe;YAAE,UAAU;QAAW;QACtC,mBAAmB;QACnB,OAAO;YAAEL;YAAQ,GAAGM,KAAK;QAAC;kBAEzB,AAACT,MAAM,MAAM,iBAGZ,IAAC;YACC,WAAU;YACV,OAAO;gBACL,QAAQO,aAAa,SAASM,YAAY,YAAY;gBACtD,OAAON,aAAaM,YAAY,YAAY,KAAK;YACnD;sBAECA,YAAY,eAAe,GAAG,GAAG,CAAC,CAACS,MAAAA,WAAAA,GAClC,IAAC;oBAEC,KAAKT,YAAY,cAAc;oBAC/B,cAAYS,IAAI,KAAK;oBACrB,iBAAeA,IAAI,KAAK,GAAG;oBAC3B,gBAActB,MAAM,MAAM;oBAC1B,WAAU;oBACV,OAAO;wBACL,KAAK;wBACL,MAAM;wBACN,OAAOO,aAAagB,SAAY;wBAChC,QAAQhB,aAAa,SAASgB;wBAC9B,WAAW,CAAC,SAAS,EAAEhB,aAAa,MAAM,IAAI,CAAC,EAAEe,IAAI,KAAK,CAAC,GAAG,CAAC;oBACjE;8BAECpB,WAAWF,KAAK,CAACsB,IAAI,KAAK,CAAC,EAAOA,IAAI,KAAK;mBAdvCA,IAAI,GAAG;aAXjBhB,gBAAgB,WAAhBA,GAAgB,IAACkB,eAAMA;YAAC,QAAO;;;AAgCxC;AACO,MAAMC,qBAAqB,WAAHA,GAAGC,WAAW7B;AAI7C,SAAS8B,iBAAoB7B,QAA6B,EAAEC,GAA2B;IACrF,MAAMW,QAAQkB,oBACZC,4BAA4B,gBAC5B/B;IAEF,OAAO,WAAP,GAAO,IAAC2B,oBAAkBA;QAAE,GAAGf,KAAK;QAAE,KAAKX;;AAC7C;AACO,MAAM+B,cAAc,WAAHA,GAAGJ,WAAWC"}
|
package/dist/tailwind.css
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
--color-leaf-border-hover: var(--leaf-color-border-hover);
|
|
23
23
|
--color-leaf-divider: var(--leaf-color-divider);
|
|
24
24
|
--color-leaf-option-hover: var(--leaf-color-option-hover);
|
|
25
|
-
--color-leaf-focus: var(--leaf-color-focus, var(--leaf-color-primary-alpha-42));
|
|
25
|
+
--color-leaf-focus: var(--leaf-color-focus, var(--leaf-color-primary-focus, var(--leaf-color-primary-alpha-42)));
|
|
26
26
|
--radius-leaf: var(--leaf-radius);
|
|
27
27
|
--radius-leaf-sm: var(--leaf-radius-sm);
|
|
28
28
|
--radius-leaf-md: var(--leaf-radius-md);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifhover/leaf-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "A lightweight React component library with CSS variable theming.",
|
|
5
5
|
"homepage": "https://ifhover.github.io/leaf-ui/",
|
|
6
6
|
"repository": {
|
|
@@ -1242,27 +1242,6 @@
|
|
|
1242
1242
|
}
|
|
1243
1243
|
},
|
|
1244
1244
|
"./scrollbar/style.css": "./dist/esm/styles/scrollbar.css",
|
|
1245
|
-
"./segmented": {
|
|
1246
|
-
"browser": {
|
|
1247
|
-
"import": {
|
|
1248
|
-
"types": "./dist/esm/segmented/index.d.ts",
|
|
1249
|
-
"default": "./dist/esm/browser/segmented.js"
|
|
1250
|
-
},
|
|
1251
|
-
"require": {
|
|
1252
|
-
"types": "./dist/cjs/segmented/index.d.cts",
|
|
1253
|
-
"default": "./dist/cjs/browser/segmented.cjs"
|
|
1254
|
-
}
|
|
1255
|
-
},
|
|
1256
|
-
"import": {
|
|
1257
|
-
"types": "./dist/esm/segmented/index.d.ts",
|
|
1258
|
-
"default": "./dist/esm/segmented/index.js"
|
|
1259
|
-
},
|
|
1260
|
-
"require": {
|
|
1261
|
-
"types": "./dist/cjs/segmented/index.d.cts",
|
|
1262
|
-
"default": "./dist/cjs/segmented/index.cjs"
|
|
1263
|
-
}
|
|
1264
|
-
},
|
|
1265
|
-
"./segmented/style.css": "./dist/esm/styles/segmented.css",
|
|
1266
1245
|
"./select": {
|
|
1267
1246
|
"browser": {
|
|
1268
1247
|
"import": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"segmented/index.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D"}
|