@yamada-ui/react 2.2.1-dev-20260428160818 → 2.2.1-dev-20260428162524
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/dist/cjs/components/tree/use-tree.cjs +5 -5
- package/dist/cjs/components/tree/use-tree.cjs.map +1 -1
- package/dist/esm/components/tree/use-tree.js +5 -5
- package/dist/esm/components/tree/use-tree.js.map +1 -1
- package/dist/types/components/accordion/accordion.d.ts +2 -2
- package/dist/types/components/accordion/accordion.style.d.ts +1 -1
- package/dist/types/components/accordion/use-accordion.d.ts +11 -11
- package/dist/types/components/action-bar/action-bar.d.ts +2 -2
- package/dist/types/components/airy/airy.d.ts +2 -2
- package/dist/types/components/alert/alert.d.ts +2 -2
- package/dist/types/components/alpha-slider/alpha-slider.d.ts +2 -2
- package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +2 -2
- package/dist/types/components/autocomplete/autocomplete.d.ts +2 -2
- package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
- package/dist/types/components/autocomplete/use-autocomplete.d.ts +5 -5
- package/dist/types/components/avatar/avatar.d.ts +5 -5
- package/dist/types/components/avatar/use-avatar-group.d.ts +2 -2
- package/dist/types/components/badge/badge.d.ts +2 -2
- package/dist/types/components/bleed/bleed.d.ts +2 -2
- package/dist/types/components/blockquote/blockquote.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.style.d.ts +1 -1
- package/dist/types/components/breadcrumb/use-breadcrumb.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +2 -2
- package/dist/types/components/button/icon-button.d.ts +2 -2
- package/dist/types/components/calendar/calendar.d.ts +2 -2
- package/dist/types/components/calendar/calendar.style.d.ts +2 -2
- package/dist/types/components/calendar/use-calendar.d.ts +8 -8
- package/dist/types/components/card/card.d.ts +2 -2
- package/dist/types/components/carousel/carousel.d.ts +2 -2
- package/dist/types/components/carousel/carousel.style.d.ts +2 -2
- package/dist/types/components/carousel/use-carousel.d.ts +3 -3
- package/dist/types/components/center/center.d.ts +2 -2
- package/dist/types/components/chart/bar-chart.d.ts +2 -2
- package/dist/types/components/chart/cartesian-chart.style.d.ts +1 -1
- package/dist/types/components/chart/chart.d.ts +5 -5
- package/dist/types/components/chart/composed-chart.d.ts +2 -2
- package/dist/types/components/chart/donut-chart.d.ts +2 -2
- package/dist/types/components/chart/line-chart.d.ts +2 -2
- package/dist/types/components/chart/pie-chart.d.ts +2 -2
- package/dist/types/components/chart/polar-chart.style.d.ts +1 -1
- package/dist/types/components/chart/use-chart.d.ts +2 -2
- package/dist/types/components/checkbox/checkbox.d.ts +4 -4
- package/dist/types/components/checkbox/checkbox.style.d.ts +1 -1
- package/dist/types/components/checkbox/use-checkbox-group.d.ts +2 -2
- package/dist/types/components/checkbox-card/checkbox-card.d.ts +5 -5
- package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +1 -1
- package/dist/types/components/circle-progress/circle-progress.d.ts +2 -2
- package/dist/types/components/close-button/close-button.d.ts +2 -2
- package/dist/types/components/code/code.d.ts +2 -2
- package/dist/types/components/collapse/collapse.d.ts +2 -2
- package/dist/types/components/color-picker/color-picker.d.ts +2 -2
- package/dist/types/components/color-picker/use-color-picker.d.ts +2 -2
- package/dist/types/components/color-selector/color-selector.d.ts +2 -2
- package/dist/types/components/color-selector/use-color-selector.d.ts +3 -3
- package/dist/types/components/color-swatch/color-swatch.d.ts +2 -2
- package/dist/types/components/container/container.d.ts +2 -2
- package/dist/types/components/data-list/data-list.d.ts +2 -2
- package/dist/types/components/data-list/data-list.style.d.ts +1 -1
- package/dist/types/components/date-picker/date-picker.d.ts +2 -2
- package/dist/types/components/date-picker/use-date-picker.d.ts +4 -4
- package/dist/types/components/drawer/drawer.d.ts +2 -2
- package/dist/types/components/dropzone/dropzone.d.ts +4 -4
- package/dist/types/components/editable/editable.d.ts +4 -4
- package/dist/types/components/editable/use-editable.d.ts +2 -2
- package/dist/types/components/em/em.d.ts +2 -2
- package/dist/types/components/empty-state/empty-state.d.ts +2 -2
- package/dist/types/components/empty-state/empty-state.style.d.ts +2 -2
- package/dist/types/components/fade/fade.d.ts +2 -2
- package/dist/types/components/field/field.d.ts +3 -3
- package/dist/types/components/field/use-field-props.d.ts +3 -3
- package/dist/types/components/fieldset/fieldset.d.ts +3 -3
- package/dist/types/components/file-button/file-button.d.ts +2 -2
- package/dist/types/components/file-button/use-file-button.d.ts +18 -18
- package/dist/types/components/file-input/file-input.d.ts +2 -2
- package/dist/types/components/file-input/use-file-input.d.ts +15 -15
- package/dist/types/components/flex/flex.d.ts +2 -2
- package/dist/types/components/flip/flip.d.ts +4 -4
- package/dist/types/components/flip/flip.style.d.ts +1 -1
- package/dist/types/components/float/float.d.ts +2 -2
- package/dist/types/components/form/form.d.ts +3 -3
- package/dist/types/components/format/format-byte.d.ts +4 -4
- package/dist/types/components/format/format-date-time.d.ts +4 -4
- package/dist/types/components/format/format-number.d.ts +2 -2
- package/dist/types/components/grid/grid-item.d.ts +2 -2
- package/dist/types/components/grid/grid.d.ts +2 -2
- package/dist/types/components/group/group.d.ts +2 -2
- package/dist/types/components/group/use-group.d.ts +2 -2
- package/dist/types/components/heading/heading.d.ts +2 -2
- package/dist/types/components/hue-slider/hue-slider.d.ts +3 -3
- package/dist/types/components/icon/icon.d.ts +5 -5
- package/dist/types/components/image/image.d.ts +2 -2
- package/dist/types/components/indicator/indicator.d.ts +4 -4
- package/dist/types/components/infinite-scroll-area/infinite-scroll-area.d.ts +2 -2
- package/dist/types/components/input/input-addon.d.ts +2 -2
- package/dist/types/components/input/input-element.d.ts +2 -2
- package/dist/types/components/input/input.d.ts +2 -2
- package/dist/types/components/kbd/kbd.d.ts +2 -2
- package/dist/types/components/link/link.d.ts +2 -2
- package/dist/types/components/link-box/link-box.d.ts +2 -2
- package/dist/types/components/list/list.d.ts +2 -2
- package/dist/types/components/list/list.style.d.ts +2 -2
- package/dist/types/components/loading/loading-provider.d.ts +2 -2
- package/dist/types/components/loading/loading.d.ts +3 -3
- package/dist/types/components/mark/mark.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +2 -2
- package/dist/types/components/menu/menu.style.d.ts +2 -2
- package/dist/types/components/menu/use-menu.d.ts +11 -11
- package/dist/types/components/modal/modal.d.ts +2 -2
- package/dist/types/components/native-accordion/native-accordion.d.ts +2 -2
- package/dist/types/components/native-accordion/native-accordion.style.d.ts +2 -2
- package/dist/types/components/native-accordion/use-native-accordion.d.ts +2 -2
- package/dist/types/components/native-popover/native-popover.d.ts +2 -2
- package/dist/types/components/native-select/native-select.d.ts +2 -2
- package/dist/types/components/native-table/native-table.d.ts +4 -4
- package/dist/types/components/notice/notice.style.d.ts +1 -1
- package/dist/types/components/number-input/number-input.d.ts +2 -2
- package/dist/types/components/number-input/number-input.style.d.ts +1 -1
- package/dist/types/components/pagination/pagination.d.ts +2 -2
- package/dist/types/components/pagination/pagination.style.d.ts +1 -1
- package/dist/types/components/pagination/use-pagination.d.ts +2 -2
- package/dist/types/components/password-input/password-input.d.ts +2 -2
- package/dist/types/components/password-input/strength-meter.d.ts +2 -2
- package/dist/types/components/password-input/strength-meter.style.d.ts +1 -1
- package/dist/types/components/password-input/use-password-input.d.ts +2 -2
- package/dist/types/components/pin-input/pin-input.d.ts +2 -2
- package/dist/types/components/pin-input/use-pin-input.d.ts +7 -7
- package/dist/types/components/popover/popover.d.ts +2 -2
- package/dist/types/components/progress/progress.d.ts +4 -4
- package/dist/types/components/progress/use-progress.d.ts +706 -706
- package/dist/types/components/qr-code/qr-code.d.ts +2 -2
- package/dist/types/components/radio/radio.d.ts +5 -5
- package/dist/types/components/radio/radio.style.d.ts +1 -1
- package/dist/types/components/radio/use-radio-group.d.ts +2 -2
- package/dist/types/components/radio-card/radio-card.d.ts +5 -5
- package/dist/types/components/radio-card/radio-card.style.d.ts +1 -1
- package/dist/types/components/rating/rating.style.d.ts +2 -2
- package/dist/types/components/rating/use-rating.d.ts +7 -7
- package/dist/types/components/reorder/reorder.d.ts +2 -2
- package/dist/types/components/reorder/reorder.style.d.ts +1 -1
- package/dist/types/components/reorder/use-reorder.d.ts +3 -3
- package/dist/types/components/resizable/resizable.d.ts +2 -2
- package/dist/types/components/resizable/resizable.style.d.ts +2 -2
- package/dist/types/components/resizable/use-resizable.d.ts +2 -2
- package/dist/types/components/ripple/ripple.d.ts +2 -2
- package/dist/types/components/ripple/use-ripple.d.ts +2 -2
- package/dist/types/components/rotate/rotate.d.ts +2 -2
- package/dist/types/components/saturation-slider/saturation-slider.d.ts +2 -2
- package/dist/types/components/saturation-slider/use-saturation-slider.d.ts +2 -2
- package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
- package/dist/types/components/segmented-control/segmented-control.d.ts +2 -2
- package/dist/types/components/segmented-control/segmented-control.style.d.ts +2 -2
- package/dist/types/components/segmented-control/use-segmented-control.d.ts +9 -9
- package/dist/types/components/select/select.d.ts +2 -2
- package/dist/types/components/select/select.style.d.ts +1 -1
- package/dist/types/components/select/use-select.d.ts +4 -4
- package/dist/types/components/separator/separator.d.ts +2 -2
- package/dist/types/components/sidebar/sidebar.d.ts +2 -2
- package/dist/types/components/sidebar/use-sidebar.d.ts +9 -9
- package/dist/types/components/simple-grid/simple-grid.d.ts +2 -2
- package/dist/types/components/skeleton/skeleton.d.ts +2 -2
- package/dist/types/components/slide/slide.d.ts +2 -2
- package/dist/types/components/slide-fade/slide-fade.d.ts +2 -2
- package/dist/types/components/slider/slider.d.ts +2 -2
- package/dist/types/components/slider/use-slider.d.ts +2 -2
- package/dist/types/components/stack/h-stack.d.ts +2 -2
- package/dist/types/components/stack/stack.d.ts +2 -2
- package/dist/types/components/stack/v-stack.d.ts +2 -2
- package/dist/types/components/stack/z-stack.d.ts +2 -2
- package/dist/types/components/stat/stat.d.ts +2 -2
- package/dist/types/components/status/status.d.ts +2 -2
- package/dist/types/components/status/status.style.d.ts +2 -2
- package/dist/types/components/steps/steps.d.ts +2 -2
- package/dist/types/components/steps/steps.style.d.ts +1 -1
- package/dist/types/components/steps/use-steps.d.ts +10 -10
- package/dist/types/components/switch/switch.d.ts +2 -2
- package/dist/types/components/table/table.d.ts +2 -2
- package/dist/types/components/tabs/tabs.d.ts +2 -2
- package/dist/types/components/tabs/use-tabs.d.ts +16 -16
- package/dist/types/components/tag/tag.d.ts +2 -2
- package/dist/types/components/tag/tag.style.d.ts +1 -1
- package/dist/types/components/text/text.d.ts +2 -2
- package/dist/types/components/textarea/textarea.d.ts +2 -2
- package/dist/types/components/textarea/use-autosize.d.ts +2 -2
- package/dist/types/components/timeline/timeline.d.ts +5 -5
- package/dist/types/components/timeline/timeline.style.d.ts +1 -1
- package/dist/types/components/toggle/toggle.d.ts +5 -5
- package/dist/types/components/toggle/use-toggle-group.d.ts +2 -2
- package/dist/types/components/toggle/use-toggle.d.ts +2 -2
- package/dist/types/components/tooltip/tooltip.d.ts +2 -2
- package/dist/types/components/tree/tree.d.ts +2 -2
- package/dist/types/components/tree/tree.style.d.ts +1 -1
- package/dist/types/components/tree/use-tree.d.ts +182 -182
- package/dist/types/components/visually-hidden/visually-hidden.d.ts +2 -2
- package/dist/types/components/wrap/wrap.d.ts +2 -2
- package/dist/types/core/components/create-component.d.ts +7 -7
- package/dist/types/core/system/color-mode-provider.d.ts +2 -2
- package/dist/types/core/system/storage-script.d.ts +3 -3
- package/dist/types/core/system/styled.d.ts +2 -2
- package/dist/types/core/system/system-provider.d.ts +2 -2
- package/dist/types/hooks/use-breakpoint/use-breakpoint-state.d.ts +2 -2
- package/dist/types/hooks/use-descendants/index.d.ts +2 -2
- package/dist/types/hooks/use-field-sizing/index.d.ts +2 -2
- package/dist/types/hooks/use-hover/index.d.ts +2 -2
- package/dist/types/providers/i18n-provider/i18n-provider.d.ts +3 -3
- package/dist/types/providers/ui-provider/ui-provider.d.ts +2 -2
- package/dist/types/utils/children.d.ts +2 -2
- package/package.json +2 -2
|
@@ -6,6 +6,8 @@ const require_dom = require('../../utils/dom.cjs');
|
|
|
6
6
|
const require_effect = require('../../utils/effect.cjs');
|
|
7
7
|
const require_ref = require('../../utils/ref.cjs');
|
|
8
8
|
const require_utils_index = require('../../utils/index.cjs');
|
|
9
|
+
const require_props = require('../../core/components/props.cjs');
|
|
10
|
+
require('../../core/index.cjs');
|
|
9
11
|
const require_hooks_use_controllable_state_index = require('../../hooks/use-controllable-state/index.cjs');
|
|
10
12
|
const require_hooks_use_descendants_index = require('../../hooks/use-descendants/index.cjs');
|
|
11
13
|
const require_use_disclosure = require('../../hooks/use-disclosure/use-disclosure.cjs');
|
|
@@ -101,13 +103,11 @@ const useTree = ({ checkable = false, checkedValue: checkedValueProp, children,
|
|
|
101
103
|
expandedValue,
|
|
102
104
|
multiple,
|
|
103
105
|
selectedValue,
|
|
104
|
-
getRootProps: (0, react.useCallback)((props) => ({
|
|
106
|
+
getRootProps: (0, react.useCallback)((props) => require_props.mergeProps({
|
|
105
107
|
"aria-multiselectable": (0, require_utils_index.utils_exports.ariaAttr)(multiple || checkable),
|
|
106
108
|
children,
|
|
107
|
-
role: "tree"
|
|
108
|
-
|
|
109
|
-
...props
|
|
110
|
-
}), [
|
|
109
|
+
role: "tree"
|
|
110
|
+
}, rest, props)(), [
|
|
111
111
|
multiple,
|
|
112
112
|
checkable,
|
|
113
113
|
rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tree.cjs","names":["createDescendants","createContext","useControllableState","descendant","value","useIds","Children","level: number","value: string","useDisclosure","branchOpen: boolean[]","useAsyncCallback","selectedValue","parentTarget: string[]","children","indeterminate","getItemProps: PropGetter<\"li\">","mergeRefs","getGroupItemProps: PropGetter<\"li\">","getIndicatorProps: PropGetter<\"svg\">"],"sources":["../../../../src/components/tree/use-tree.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport type { HTMLProps, PropGetter } from \"../../core\"\nimport type { Descendant, Descendants } from \"../../hooks/use-descendants\"\nimport type { UseDisclosureProps } from \"../../hooks/use-disclosure\"\nimport type { UseCheckboxProps } from \"../checkbox\"\nimport { Children, useCallback, useRef, useState } from \"react\"\nimport { useAsyncCallback } from \"../../hooks/use-async-callback\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useDisclosure } from \"../../hooks/use-disclosure\"\nimport {\n ariaAttr,\n assignRef,\n createContext,\n cx,\n dataAttr,\n filterEmpty,\n handlerAll,\n isArray,\n isInputElement,\n isUndefined,\n match,\n mergeRefs,\n runKeyAction,\n setAttribute,\n useIds,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nexport interface TreeControl {\n collapse: () => void\n expand: () => void\n}\n\ninterface TreeDescendantProps {\n expanded: boolean\n group: boolean\n id: string\n value: string\n query?: string\n}\n\nconst {\n DescendantsContext: TreeDescendantsContext,\n useDescendant: useTreeDescendant,\n useDescendants: useTreeDescendants,\n} = createDescendants<HTMLElement, TreeDescendantProps>()\n\nexport { TreeDescendantsContext, useTreeDescendant, useTreeDescendants }\n\ninterface TreeContext extends Omit<\n UseTreeReturn,\n \"descendants\" | \"getRootProps\"\n> {}\n\nconst [TreeContext, useTreeContext] = createContext<TreeContext>({\n name: \"TreeContext\",\n})\n\nexport { TreeContext, useTreeContext }\n\ninterface TreeItemContext extends Pick<\n UseTreeItemReturn,\n | \"branchOpen\"\n | \"groupOpen\"\n | \"level\"\n | \"onGroupClose\"\n | \"onGroupOpen\"\n | \"onGroupToggle\"\n | \"value\"\n> {}\n\nconst [TreeItemContext, useTreeItemContext] = createContext<TreeItemContext>({\n name: \"TreeItemContext\",\n strict: false,\n})\n\nexport { TreeItemContext, useTreeItemContext }\n\nexport interface UseTreeProps<\n Multiple extends boolean = false,\n> extends HTMLProps<\"ul\"> {\n /**\n * If `true`, the tree will allow checkable items.\n *\n * @default false\n */\n checkable?: boolean\n /**\n * The checked value of the tree.\n */\n checkedValue?: string[]\n /**\n * Ref of the tree callbacks.\n */\n controlRef?: RefObject<null | TreeControl>\n /**\n * The initial checked value of the tree.\n */\n defaultCheckedValue?: string[]\n /**\n * The initial expanded value of the tree.\n */\n defaultExpandedValue?: string[]\n /**\n * The initial selected value of the tree.\n */\n defaultSelectedValue?: Multiple extends true ? string[] : string\n /**\n * The expanded value of the tree.\n */\n expandedValue?: string[]\n /**\n * If `true`, the tree will allow multiple selection.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The selected value of the tree.\n */\n selectedValue?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when checked value changes.\n */\n onCheckedChange?: (value: string[]) => void\n /**\n * The callback invoked when expanded value changes.\n */\n onExpandedChange?: (value: string[]) => void\n /**\n * The callback invoked when selected value changes.\n */\n onSelectedChange?: (value: Multiple extends true ? string[] : string) => void\n}\n\nexport const useTree = <Multiple extends boolean = false>({\n checkable = false,\n checkedValue: checkedValueProp,\n children,\n controlRef,\n defaultCheckedValue = [],\n defaultExpandedValue = [],\n defaultSelectedValue,\n expandedValue: expandedValueProp,\n multiple,\n selectedValue: selectedValueProp,\n onCheckedChange: onCheckedChangeProp,\n onExpandedChange: onExpandedChangeProp,\n onSelectedChange: onSelectedChangeProp,\n ...rest\n}: UseTreeProps<Multiple> = {}) => {\n type MaybeSelectedValue = Multiple extends true ? string[] : string\n\n const [selectedValue, setSelectedValue] = useControllableState({\n defaultValue:\n defaultSelectedValue ?? ((multiple ? [] : \"\") as MaybeSelectedValue),\n value: selectedValueProp,\n onChange: onSelectedChangeProp,\n })\n const [checkedValue, onCheckedChange] = useControllableState({\n defaultValue: defaultCheckedValue,\n value: checkedValueProp,\n onChange: onCheckedChangeProp,\n })\n const [expandedValue, setExpandedValue] = useControllableState({\n defaultValue: defaultExpandedValue,\n value: expandedValueProp,\n onChange: onExpandedChangeProp,\n })\n const descendants = useTreeDescendants()\n const activeDescendant = useRef<Descendant<\n HTMLElement,\n TreeDescendantProps\n > | null>(null)\n const searchRef = useRef<{ value: string; omitValue?: string }>({\n omitValue: undefined,\n value: \"\",\n })\n const timeoutRef = useRef<any>(null)\n\n const onExpandAll = useCallback(() => {\n const values = descendants.enabledValues()\n const group = values.filter(({ group }) => group)\n const value = group.map(({ value }) => value)\n\n setExpandedValue(value)\n }, [descendants, setExpandedValue])\n\n const onCollapseAll = useCallback(() => {\n setExpandedValue([])\n }, [setExpandedValue])\n\n const onActiveDescendant = useCallback(\n (\n descendant?: Descendant<HTMLElement, TreeDescendantProps>,\n shouldFocus = true,\n ) => {\n if (!descendant) return\n\n descendants.values().forEach(({ node }) => {\n node.tabIndex = -1\n })\n\n activeDescendant.current = descendant\n descendant.node.tabIndex = 0\n\n if (shouldFocus) descendant.node.focus()\n },\n [descendants],\n )\n\n const onSearch = useCallback(\n (value: string, omitValue: string) => {\n clearTimeout(timeoutRef.current)\n\n searchRef.current.value += value\n\n if (!searchRef.current.omitValue) searchRef.current.omitValue = omitValue\n\n timeoutRef.current = setTimeout(() => {\n searchRef.current = { omitValue: undefined, value: \"\" }\n }, 400)\n\n const values = descendants\n .enabledValues({ expanded: true })\n .filter(\n (descendant) =>\n !isUndefined(descendant.value) &&\n descendant.value !== searchRef.current.omitValue,\n )\n const descendant = values.find(({ query, value }) =>\n match(query ?? value, searchRef.current.value, \"startsWith\"),\n )\n\n if (descendant) onActiveDescendant(descendant)\n },\n [descendants, onActiveDescendant],\n )\n\n const onSelectedChange = useCallback(\n (value: SetStateAction<string | string[]>) => {\n setSelectedValue(value as SetStateAction<MaybeSelectedValue>)\n },\n [setSelectedValue],\n )\n\n const onExpandedChange = useCallback(\n (value: string) => {\n setExpandedValue((prev) => {\n if (prev.includes(value)) {\n return prev.filter((prevValue) => prevValue !== value)\n } else {\n return [...prev, value]\n }\n })\n },\n [setExpandedValue],\n )\n\n useSafeLayoutEffect(() => {\n const value = isArray(selectedValue) ? selectedValue.at(0) : selectedValue\n const expandedDescendants = descendants.enabledValues({ expanded: true })\n\n if (value) {\n const descendant = expandedDescendants.find(\n (descendant) => value === descendant.value,\n )\n\n if (descendant) {\n onActiveDescendant(descendant, false)\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n }, [children])\n\n assignRef(controlRef, { collapse: onCollapseAll, expand: onExpandAll })\n\n const getRootProps: PropGetter<\"ul\"> = useCallback(\n (props) => ({\n \"aria-multiselectable\": ariaAttr(multiple || checkable),\n children,\n role: \"tree\",\n ...rest,\n ...props,\n }),\n [multiple, checkable, rest, children],\n )\n\n return {\n activeDescendant,\n checkable,\n checkedValue,\n descendants,\n expandedValue,\n multiple,\n selectedValue,\n getRootProps,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n }\n}\n\nexport type UseTreeReturn = ReturnType<typeof useTree>\n\nconst getRootDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const rootValue = segments.at(0)\n\n return descendants.enabledValues().find(({ value }) => value === rootValue)\n }\n\nconst getParentDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const parentValue = segments.slice(0, -1).join(\"/\")\n\n return descendants\n .enabledValues()\n .find(({ value }) => value === parentValue)\n }\n\nconst getChildDescendants =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const children = descendants\n .enabledValues()\n .filter((descendant) => descendant.value.startsWith(value + \"/\"))\n const values = children\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n return { children, values }\n }\n\nconst getParentValues = (value: string) => {\n const segments = value.split(\"/\")\n\n return segments\n .reduce<string[]>((prev, current) => {\n const prevValue = prev.at(-1)\n return prevValue ? [...prev, [prevValue, current].join(\"/\")] : [current]\n }, [])\n .toReversed()\n}\n\nconst getCheckbox = (node?: HTMLElement) => {\n const el = node?.querySelector(\"input[type='checkbox']\")\n\n return isInputElement(el) ? el : null\n}\n\nconst getAllChecked = (\n descendants: Descendant<HTMLElement, TreeDescendantProps>[],\n trulyValues?: string[],\n falsyValues?: string[],\n) => {\n const checked = descendants.map(({ node, value }) => {\n if (value && trulyValues?.includes(value)) return true\n if (value && falsyValues?.includes(value)) return false\n\n const checkbox = getCheckbox(node)\n\n return !!checkbox?.checked\n })\n\n const allChecked = !!checked.length && checked.every(Boolean)\n const indeterminate = checked.some(Boolean) && !allChecked\n\n return { allChecked, checked, indeterminate }\n}\n\nconst getRangeValues =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (start: string, end: string) => {\n const values = descendants.enabledValues()\n const [startIndex, endIndex] = [\n values.findIndex((descendant) => descendant.value === start),\n values.findIndex((descendant) => descendant.value === end),\n ].sort((a, b) => a - b)\n\n return values\n .slice(startIndex, endIndex! + 1)\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n .sort((a, b) => {\n if (a === start && b !== start) return -1\n if (a !== start && b === start) return 1\n\n return 0\n })\n }\n\nexport interface UseTreeItemProps\n extends HTMLProps<\"div\">, Omit<UseDisclosureProps, \"timing\"> {\n /**\n * If `true`, the tree item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The query to search for in the tree item.\n */\n query?: string\n /**\n * The value of the item.\n */\n value?: string\n /**\n * If provided, the tree item will be rendered as an async tree item.\n */\n asyncChildren?: () => Promise<ReactNode>\n}\n\nexport const useTreeItem = ({\n asyncChildren,\n children: childrenProp,\n defaultOpen,\n disabled = false,\n open: openProp,\n query,\n value: valueProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n}: UseTreeItemProps = {}) => {\n const context = useTreeItemContext()\n const {\n activeDescendant,\n checkable,\n checkedValue,\n expandedValue,\n multiple,\n selectedValue,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n } = useTreeContext()\n const [children, setChildren] = useState<ReactNode>(childrenProp)\n const [indeterminate, setIndeterminate] = useState(false)\n const [itemId, labelId, checkboxId] = useIds()\n const initialAsyncRef = useRef(false)\n const async = !!asyncChildren\n const group = async || Children.count(children) > 0\n const level: number = (context?.level ?? 0) + 1\n const value: string = filterEmpty([context?.value, valueProp]).join(\"/\")\n const nested = !!context?.value\n const selected = isArray(selectedValue)\n ? !!value && selectedValue.includes(value)\n : !!value && selectedValue === value\n const checked = !!value && checkedValue.includes(value)\n const defaultExpanded = !!value && expandedValue.includes(value)\n const {\n open: groupOpen,\n onClose,\n onOpen,\n } = useDisclosure({\n defaultOpen: defaultOpen ?? defaultExpanded,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const branchOpen: boolean[] = nested\n ? [...context.branchOpen, groupOpen]\n : [groupOpen]\n const { descendants, register } = useTreeDescendant({\n id: itemId!,\n disabled,\n expanded: branchOpen.slice(0, -1).every(Boolean),\n group,\n query,\n value,\n })\n\n const [groupLoading, onGroupChildren] = useAsyncCallback(async () => {\n const children = await asyncChildren?.()\n\n setChildren(children)\n }, [asyncChildren])\n\n const onSelect = useCallback(\n (\n ev: (\n | Partial<KeyboardEvent<HTMLElement>>\n | Partial<MouseEvent<HTMLElement>>\n ) & { value?: string } = {},\n ) => {\n const selectedValue = ev.value ?? value\n\n if (disabled || !selectedValue) return\n\n if (multiple) {\n onSelectedChange((prev) => {\n if (!isArray(prev)) return prev\n\n if (ev.ctrlKey || ev.metaKey) {\n if (prev.includes(selectedValue)) {\n return prev.filter((prevValue) => prevValue !== selectedValue)\n } else {\n return [...prev, selectedValue]\n }\n } else if (ev.shiftKey && prev[0]) {\n if (prev[0] === selectedValue) return prev\n\n return getRangeValues(descendants)(prev[0], selectedValue)\n } else {\n return [selectedValue]\n }\n })\n } else {\n onSelectedChange(selectedValue)\n }\n },\n [descendants, disabled, multiple, onSelectedChange, value],\n )\n\n const onGroupOpen = useCallback(() => {\n if (disabled || !value) return\n\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n onExpandedChange(value)\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n onExpandedChange(value)\n }\n }, [disabled, async, onGroupChildren, onOpen, onExpandedChange, value])\n\n const onGroupClose = useCallback(() => {\n if (disabled || !value) return\n\n onClose()\n onExpandedChange(value)\n }, [disabled, onClose, onExpandedChange, value])\n\n const onGroupToggle = useCallback(() => {\n if (groupOpen) {\n onGroupClose()\n } else {\n onGroupOpen()\n }\n }, [groupOpen, onGroupClose, onGroupOpen])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLElement>) => {\n if (disabled || !value) return\n\n runKeyAction(ev, {\n a: () => {\n if (!multiple || !(ev.ctrlKey || ev.metaKey)) return\n\n const values = descendants\n .enabledValues()\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n onSelectedChange(values)\n },\n ArrowDown: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onExpandAll()\n } else {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n ArrowLeft: () => {\n if (group && groupOpen) {\n onGroupClose()\n } else if (nested) {\n const descendant = getParentDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n }\n },\n ArrowRight: () => {\n if (!group) return\n\n if (groupOpen) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n } else {\n if (!groupLoading) onGroupOpen()\n }\n },\n ArrowUp: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onCollapseAll()\n\n if (!nested) return\n\n const descendant = getRootDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n } else {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n End: () => {\n const descendant = descendants\n .enabledValues({ expanded: true })\n .at(-1)\n\n onActiveDescendant(descendant)\n },\n Enter: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n Home: () => {\n const descendant = descendants.enabledValues({ expanded: true }).at(0)\n\n onActiveDescendant(descendant)\n },\n Space: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n })\n\n if (ev.key.length !== 1) return\n if (ev.ctrlKey || ev.metaKey || ev.altKey) return\n\n ev.preventDefault()\n\n onSearch(ev.key, query ?? value)\n },\n [\n activeDescendant,\n descendants,\n disabled,\n group,\n groupLoading,\n groupOpen,\n multiple,\n nested,\n onActiveDescendant,\n onCollapseAll,\n onExpandAll,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n onSearch,\n onSelect,\n onSelectedChange,\n query,\n value,\n ],\n )\n\n const onItemClick = useCallback(\n (ev: MouseEvent<HTMLLIElement>) => {\n ev.stopPropagation()\n\n if (disabled || !value) return\n\n if (group && !groupLoading)\n if (!ev.ctrlKey && !ev.metaKey && !ev.shiftKey) onGroupToggle()\n\n onSelect(ev)\n },\n [disabled, group, groupLoading, onGroupToggle, onSelect, value],\n )\n\n const onCheckboxChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (disabled || !value) return\n\n ev.stopPropagation()\n\n if (group) setIndeterminate(false)\n\n onCheckedChange((prev) => {\n const target = [value]\n\n if (group) {\n const { values } = getChildDescendants(descendants)(value)\n\n target.push(...values)\n }\n\n if (nested) {\n const parentValues = getParentValues(context.value)\n const parentTarget: string[] = []\n\n parentValues.forEach((parentValue) => {\n const { children } = getChildDescendants(descendants)(parentValue)\n const { allChecked } = getAllChecked(\n children,\n [...parentTarget, ...(ev.target.checked ? target : [])],\n !ev.target.checked ? target : [],\n )\n\n if (allChecked) parentTarget.push(parentValue)\n })\n\n if (!ev.target.checked) parentTarget.push(...parentValues)\n\n target.push(...parentTarget)\n }\n\n if (ev.target.checked) {\n return [...new Set([...prev, ...target])]\n } else {\n return prev.filter((prevValue) => !target.includes(prevValue))\n }\n })\n },\n [disabled, group, onCheckedChange, value, nested, descendants, context],\n )\n\n useSafeLayoutEffect(() => {\n if (defaultExpanded) {\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n }\n } else {\n onClose()\n }\n }, [async, defaultExpanded, onClose, onGroupChildren, onOpen])\n\n useSafeLayoutEffect(() => {\n if (!group || !checkable) return\n\n const { children } = getChildDescendants(descendants)(value)\n const { indeterminate } = getAllChecked(children)\n\n setIndeterminate(indeterminate)\n }, [checkedValue])\n\n useSafeLayoutEffect(() => {\n if (!checkable) return\n\n const { node } = getParentDescendant(descendants)(value) ?? {}\n const checkbox = getCheckbox(node)\n\n if (!checkbox) return\n\n const cleanup = setAttribute(checkbox, \"aria-controls\", checkboxId)\n\n return cleanup\n }, [checkable, descendants])\n\n const getItemProps: PropGetter<\"li\"> = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: itemId,\n ref: mergeRefs(ref, register),\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"aria-level\": level,\n \"aria-selected\": ariaAttr(selected),\n \"data-disabled\": dataAttr(disabled),\n role: \"treeitem\",\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onItemClick),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [\n itemId,\n register,\n disabled,\n labelId,\n level,\n selected,\n onItemClick,\n onKeyDown,\n ],\n )\n\n const getGroupItemProps: PropGetter<\"li\"> = useCallback(\n (props = {}) => getItemProps({ \"aria-expanded\": groupOpen, ...props }),\n [getItemProps, groupOpen],\n )\n\n const getIndicatorProps: PropGetter<\"svg\"> = useCallback(\n (props) => ({\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-expanded\": groupOpen,\n \"aria-hidden\": true,\n \"data-disabled\": dataAttr(disabled),\n \"data-loading\": dataAttr(groupLoading),\n \"data-selected\": dataAttr(selected),\n role: \"presentation\",\n ...props,\n }),\n [disabled, groupOpen, selected, groupLoading],\n )\n\n const getCheckboxProps: PropGetter<UseCheckboxProps> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: checkboxId,\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-selected\": dataAttr(selected),\n checked,\n disabled,\n indeterminate,\n tabIndex: -1,\n ...props,\n onChange: handlerAll(props.onChange, onCheckboxChange),\n }),\n [\n checkboxId,\n labelId,\n selected,\n checked,\n disabled,\n indeterminate,\n onCheckboxChange,\n ],\n )\n\n const getGroupProps: PropGetter<\"ul\"> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n \"aria-busy\": ariaAttr(groupLoading),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-disabled\": dataAttr(disabled),\n role: \"group\",\n ...props,\n }),\n [labelId, disabled, groupLoading],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props = {}) => ({ id: labelId, ...props }),\n [labelId],\n )\n\n return {\n branchOpen,\n checked,\n children,\n disabled,\n group,\n groupLoading,\n groupOpen,\n indeterminate,\n level,\n props: rest,\n selected,\n value,\n getCheckboxProps,\n getGroupItemProps,\n getGroupProps,\n getIndicatorProps,\n getItemProps,\n getLabelProps,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n }\n}\n\nexport type UseTreeItemReturn = ReturnType<typeof useTreeItem>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-tree.cjs","names":["createDescendants","createContext","useControllableState","descendant","value","mergeProps","useIds","Children","level: number","value: string","useDisclosure","branchOpen: boolean[]","useAsyncCallback","selectedValue","parentTarget: string[]","children","indeterminate","getItemProps: PropGetter<\"li\">","mergeRefs","getGroupItemProps: PropGetter<\"li\">","getIndicatorProps: PropGetter<\"svg\">"],"sources":["../../../../src/components/tree/use-tree.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport type { HTMLProps, PropGetter } from \"../../core\"\nimport type { Descendant, Descendants } from \"../../hooks/use-descendants\"\nimport type { UseDisclosureProps } from \"../../hooks/use-disclosure\"\nimport type { UseCheckboxProps } from \"../checkbox\"\nimport { Children, useCallback, useRef, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useAsyncCallback } from \"../../hooks/use-async-callback\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useDisclosure } from \"../../hooks/use-disclosure\"\nimport {\n ariaAttr,\n assignRef,\n createContext,\n cx,\n dataAttr,\n filterEmpty,\n handlerAll,\n isArray,\n isInputElement,\n isUndefined,\n match,\n mergeRefs,\n runKeyAction,\n setAttribute,\n useIds,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nexport interface TreeControl {\n collapse: () => void\n expand: () => void\n}\n\ninterface TreeDescendantProps {\n expanded: boolean\n group: boolean\n id: string\n value: string\n query?: string\n}\n\nconst {\n DescendantsContext: TreeDescendantsContext,\n useDescendant: useTreeDescendant,\n useDescendants: useTreeDescendants,\n} = createDescendants<HTMLElement, TreeDescendantProps>()\n\nexport { TreeDescendantsContext, useTreeDescendant, useTreeDescendants }\n\ninterface TreeContext extends Omit<\n UseTreeReturn,\n \"descendants\" | \"getRootProps\"\n> {}\n\nconst [TreeContext, useTreeContext] = createContext<TreeContext>({\n name: \"TreeContext\",\n})\n\nexport { TreeContext, useTreeContext }\n\ninterface TreeItemContext extends Pick<\n UseTreeItemReturn,\n | \"branchOpen\"\n | \"groupOpen\"\n | \"level\"\n | \"onGroupClose\"\n | \"onGroupOpen\"\n | \"onGroupToggle\"\n | \"value\"\n> {}\n\nconst [TreeItemContext, useTreeItemContext] = createContext<TreeItemContext>({\n name: \"TreeItemContext\",\n strict: false,\n})\n\nexport { TreeItemContext, useTreeItemContext }\n\nexport interface UseTreeProps<\n Multiple extends boolean = false,\n> extends HTMLProps<\"ul\"> {\n /**\n * If `true`, the tree will allow checkable items.\n *\n * @default false\n */\n checkable?: boolean\n /**\n * The checked value of the tree.\n */\n checkedValue?: string[]\n /**\n * Ref of the tree callbacks.\n */\n controlRef?: RefObject<null | TreeControl>\n /**\n * The initial checked value of the tree.\n */\n defaultCheckedValue?: string[]\n /**\n * The initial expanded value of the tree.\n */\n defaultExpandedValue?: string[]\n /**\n * The initial selected value of the tree.\n */\n defaultSelectedValue?: Multiple extends true ? string[] : string\n /**\n * The expanded value of the tree.\n */\n expandedValue?: string[]\n /**\n * If `true`, the tree will allow multiple selection.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The selected value of the tree.\n */\n selectedValue?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when checked value changes.\n */\n onCheckedChange?: (value: string[]) => void\n /**\n * The callback invoked when expanded value changes.\n */\n onExpandedChange?: (value: string[]) => void\n /**\n * The callback invoked when selected value changes.\n */\n onSelectedChange?: (value: Multiple extends true ? string[] : string) => void\n}\n\nexport const useTree = <Multiple extends boolean = false>({\n checkable = false,\n checkedValue: checkedValueProp,\n children,\n controlRef,\n defaultCheckedValue = [],\n defaultExpandedValue = [],\n defaultSelectedValue,\n expandedValue: expandedValueProp,\n multiple,\n selectedValue: selectedValueProp,\n onCheckedChange: onCheckedChangeProp,\n onExpandedChange: onExpandedChangeProp,\n onSelectedChange: onSelectedChangeProp,\n ...rest\n}: UseTreeProps<Multiple> = {}) => {\n type MaybeSelectedValue = Multiple extends true ? string[] : string\n\n const [selectedValue, setSelectedValue] = useControllableState({\n defaultValue:\n defaultSelectedValue ?? ((multiple ? [] : \"\") as MaybeSelectedValue),\n value: selectedValueProp,\n onChange: onSelectedChangeProp,\n })\n const [checkedValue, onCheckedChange] = useControllableState({\n defaultValue: defaultCheckedValue,\n value: checkedValueProp,\n onChange: onCheckedChangeProp,\n })\n const [expandedValue, setExpandedValue] = useControllableState({\n defaultValue: defaultExpandedValue,\n value: expandedValueProp,\n onChange: onExpandedChangeProp,\n })\n const descendants = useTreeDescendants()\n const activeDescendant = useRef<Descendant<\n HTMLElement,\n TreeDescendantProps\n > | null>(null)\n const searchRef = useRef<{ value: string; omitValue?: string }>({\n omitValue: undefined,\n value: \"\",\n })\n const timeoutRef = useRef<any>(null)\n\n const onExpandAll = useCallback(() => {\n const values = descendants.enabledValues()\n const group = values.filter(({ group }) => group)\n const value = group.map(({ value }) => value)\n\n setExpandedValue(value)\n }, [descendants, setExpandedValue])\n\n const onCollapseAll = useCallback(() => {\n setExpandedValue([])\n }, [setExpandedValue])\n\n const onActiveDescendant = useCallback(\n (\n descendant?: Descendant<HTMLElement, TreeDescendantProps>,\n shouldFocus = true,\n ) => {\n if (!descendant) return\n\n descendants.values().forEach(({ node }) => {\n node.tabIndex = -1\n })\n\n activeDescendant.current = descendant\n descendant.node.tabIndex = 0\n\n if (shouldFocus) descendant.node.focus()\n },\n [descendants],\n )\n\n const onSearch = useCallback(\n (value: string, omitValue: string) => {\n clearTimeout(timeoutRef.current)\n\n searchRef.current.value += value\n\n if (!searchRef.current.omitValue) searchRef.current.omitValue = omitValue\n\n timeoutRef.current = setTimeout(() => {\n searchRef.current = { omitValue: undefined, value: \"\" }\n }, 400)\n\n const values = descendants\n .enabledValues({ expanded: true })\n .filter(\n (descendant) =>\n !isUndefined(descendant.value) &&\n descendant.value !== searchRef.current.omitValue,\n )\n const descendant = values.find(({ query, value }) =>\n match(query ?? value, searchRef.current.value, \"startsWith\"),\n )\n\n if (descendant) onActiveDescendant(descendant)\n },\n [descendants, onActiveDescendant],\n )\n\n const onSelectedChange = useCallback(\n (value: SetStateAction<string | string[]>) => {\n setSelectedValue(value as SetStateAction<MaybeSelectedValue>)\n },\n [setSelectedValue],\n )\n\n const onExpandedChange = useCallback(\n (value: string) => {\n setExpandedValue((prev) => {\n if (prev.includes(value)) {\n return prev.filter((prevValue) => prevValue !== value)\n } else {\n return [...prev, value]\n }\n })\n },\n [setExpandedValue],\n )\n\n useSafeLayoutEffect(() => {\n const value = isArray(selectedValue) ? selectedValue.at(0) : selectedValue\n const expandedDescendants = descendants.enabledValues({ expanded: true })\n\n if (value) {\n const descendant = expandedDescendants.find(\n (descendant) => value === descendant.value,\n )\n\n if (descendant) {\n onActiveDescendant(descendant, false)\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n }, [children])\n\n assignRef(controlRef, { collapse: onCollapseAll, expand: onExpandAll })\n\n const getRootProps: PropGetter<\"ul\"> = useCallback(\n (props) =>\n mergeProps(\n {\n \"aria-multiselectable\": ariaAttr(multiple || checkable),\n children,\n role: \"tree\",\n },\n rest,\n props,\n )(),\n [multiple, checkable, rest, children],\n )\n\n return {\n activeDescendant,\n checkable,\n checkedValue,\n descendants,\n expandedValue,\n multiple,\n selectedValue,\n getRootProps,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n }\n}\n\nexport type UseTreeReturn = ReturnType<typeof useTree>\n\nconst getRootDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const rootValue = segments.at(0)\n\n return descendants.enabledValues().find(({ value }) => value === rootValue)\n }\n\nconst getParentDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const parentValue = segments.slice(0, -1).join(\"/\")\n\n return descendants\n .enabledValues()\n .find(({ value }) => value === parentValue)\n }\n\nconst getChildDescendants =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const children = descendants\n .enabledValues()\n .filter((descendant) => descendant.value.startsWith(value + \"/\"))\n const values = children\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n return { children, values }\n }\n\nconst getParentValues = (value: string) => {\n const segments = value.split(\"/\")\n\n return segments\n .reduce<string[]>((prev, current) => {\n const prevValue = prev.at(-1)\n return prevValue ? [...prev, [prevValue, current].join(\"/\")] : [current]\n }, [])\n .toReversed()\n}\n\nconst getCheckbox = (node?: HTMLElement) => {\n const el = node?.querySelector(\"input[type='checkbox']\")\n\n return isInputElement(el) ? el : null\n}\n\nconst getAllChecked = (\n descendants: Descendant<HTMLElement, TreeDescendantProps>[],\n trulyValues?: string[],\n falsyValues?: string[],\n) => {\n const checked = descendants.map(({ node, value }) => {\n if (value && trulyValues?.includes(value)) return true\n if (value && falsyValues?.includes(value)) return false\n\n const checkbox = getCheckbox(node)\n\n return !!checkbox?.checked\n })\n\n const allChecked = !!checked.length && checked.every(Boolean)\n const indeterminate = checked.some(Boolean) && !allChecked\n\n return { allChecked, checked, indeterminate }\n}\n\nconst getRangeValues =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (start: string, end: string) => {\n const values = descendants.enabledValues()\n const [startIndex, endIndex] = [\n values.findIndex((descendant) => descendant.value === start),\n values.findIndex((descendant) => descendant.value === end),\n ].sort((a, b) => a - b)\n\n return values\n .slice(startIndex, endIndex! + 1)\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n .sort((a, b) => {\n if (a === start && b !== start) return -1\n if (a !== start && b === start) return 1\n\n return 0\n })\n }\n\nexport interface UseTreeItemProps\n extends HTMLProps<\"div\">, Omit<UseDisclosureProps, \"timing\"> {\n /**\n * If `true`, the tree item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The query to search for in the tree item.\n */\n query?: string\n /**\n * The value of the item.\n */\n value?: string\n /**\n * If provided, the tree item will be rendered as an async tree item.\n */\n asyncChildren?: () => Promise<ReactNode>\n}\n\nexport const useTreeItem = ({\n asyncChildren,\n children: childrenProp,\n defaultOpen,\n disabled = false,\n open: openProp,\n query,\n value: valueProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n}: UseTreeItemProps = {}) => {\n const context = useTreeItemContext()\n const {\n activeDescendant,\n checkable,\n checkedValue,\n expandedValue,\n multiple,\n selectedValue,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n } = useTreeContext()\n const [children, setChildren] = useState<ReactNode>(childrenProp)\n const [indeterminate, setIndeterminate] = useState(false)\n const [itemId, labelId, checkboxId] = useIds()\n const initialAsyncRef = useRef(false)\n const async = !!asyncChildren\n const group = async || Children.count(children) > 0\n const level: number = (context?.level ?? 0) + 1\n const value: string = filterEmpty([context?.value, valueProp]).join(\"/\")\n const nested = !!context?.value\n const selected = isArray(selectedValue)\n ? !!value && selectedValue.includes(value)\n : !!value && selectedValue === value\n const checked = !!value && checkedValue.includes(value)\n const defaultExpanded = !!value && expandedValue.includes(value)\n const {\n open: groupOpen,\n onClose,\n onOpen,\n } = useDisclosure({\n defaultOpen: defaultOpen ?? defaultExpanded,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const branchOpen: boolean[] = nested\n ? [...context.branchOpen, groupOpen]\n : [groupOpen]\n const { descendants, register } = useTreeDescendant({\n id: itemId!,\n disabled,\n expanded: branchOpen.slice(0, -1).every(Boolean),\n group,\n query,\n value,\n })\n\n const [groupLoading, onGroupChildren] = useAsyncCallback(async () => {\n const children = await asyncChildren?.()\n\n setChildren(children)\n }, [asyncChildren])\n\n const onSelect = useCallback(\n (\n ev: (\n | Partial<KeyboardEvent<HTMLElement>>\n | Partial<MouseEvent<HTMLElement>>\n ) & { value?: string } = {},\n ) => {\n const selectedValue = ev.value ?? value\n\n if (disabled || !selectedValue) return\n\n if (multiple) {\n onSelectedChange((prev) => {\n if (!isArray(prev)) return prev\n\n if (ev.ctrlKey || ev.metaKey) {\n if (prev.includes(selectedValue)) {\n return prev.filter((prevValue) => prevValue !== selectedValue)\n } else {\n return [...prev, selectedValue]\n }\n } else if (ev.shiftKey && prev[0]) {\n if (prev[0] === selectedValue) return prev\n\n return getRangeValues(descendants)(prev[0], selectedValue)\n } else {\n return [selectedValue]\n }\n })\n } else {\n onSelectedChange(selectedValue)\n }\n },\n [descendants, disabled, multiple, onSelectedChange, value],\n )\n\n const onGroupOpen = useCallback(() => {\n if (disabled || !value) return\n\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n onExpandedChange(value)\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n onExpandedChange(value)\n }\n }, [disabled, async, onGroupChildren, onOpen, onExpandedChange, value])\n\n const onGroupClose = useCallback(() => {\n if (disabled || !value) return\n\n onClose()\n onExpandedChange(value)\n }, [disabled, onClose, onExpandedChange, value])\n\n const onGroupToggle = useCallback(() => {\n if (groupOpen) {\n onGroupClose()\n } else {\n onGroupOpen()\n }\n }, [groupOpen, onGroupClose, onGroupOpen])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLElement>) => {\n if (disabled || !value) return\n\n runKeyAction(ev, {\n a: () => {\n if (!multiple || !(ev.ctrlKey || ev.metaKey)) return\n\n const values = descendants\n .enabledValues()\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n onSelectedChange(values)\n },\n ArrowDown: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onExpandAll()\n } else {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n ArrowLeft: () => {\n if (group && groupOpen) {\n onGroupClose()\n } else if (nested) {\n const descendant = getParentDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n }\n },\n ArrowRight: () => {\n if (!group) return\n\n if (groupOpen) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n } else {\n if (!groupLoading) onGroupOpen()\n }\n },\n ArrowUp: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onCollapseAll()\n\n if (!nested) return\n\n const descendant = getRootDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n } else {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n End: () => {\n const descendant = descendants\n .enabledValues({ expanded: true })\n .at(-1)\n\n onActiveDescendant(descendant)\n },\n Enter: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n Home: () => {\n const descendant = descendants.enabledValues({ expanded: true }).at(0)\n\n onActiveDescendant(descendant)\n },\n Space: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n })\n\n if (ev.key.length !== 1) return\n if (ev.ctrlKey || ev.metaKey || ev.altKey) return\n\n ev.preventDefault()\n\n onSearch(ev.key, query ?? value)\n },\n [\n activeDescendant,\n descendants,\n disabled,\n group,\n groupLoading,\n groupOpen,\n multiple,\n nested,\n onActiveDescendant,\n onCollapseAll,\n onExpandAll,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n onSearch,\n onSelect,\n onSelectedChange,\n query,\n value,\n ],\n )\n\n const onItemClick = useCallback(\n (ev: MouseEvent<HTMLLIElement>) => {\n ev.stopPropagation()\n\n if (disabled || !value) return\n\n if (group && !groupLoading)\n if (!ev.ctrlKey && !ev.metaKey && !ev.shiftKey) onGroupToggle()\n\n onSelect(ev)\n },\n [disabled, group, groupLoading, onGroupToggle, onSelect, value],\n )\n\n const onCheckboxChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (disabled || !value) return\n\n ev.stopPropagation()\n\n if (group) setIndeterminate(false)\n\n onCheckedChange((prev) => {\n const target = [value]\n\n if (group) {\n const { values } = getChildDescendants(descendants)(value)\n\n target.push(...values)\n }\n\n if (nested) {\n const parentValues = getParentValues(context.value)\n const parentTarget: string[] = []\n\n parentValues.forEach((parentValue) => {\n const { children } = getChildDescendants(descendants)(parentValue)\n const { allChecked } = getAllChecked(\n children,\n [...parentTarget, ...(ev.target.checked ? target : [])],\n !ev.target.checked ? target : [],\n )\n\n if (allChecked) parentTarget.push(parentValue)\n })\n\n if (!ev.target.checked) parentTarget.push(...parentValues)\n\n target.push(...parentTarget)\n }\n\n if (ev.target.checked) {\n return [...new Set([...prev, ...target])]\n } else {\n return prev.filter((prevValue) => !target.includes(prevValue))\n }\n })\n },\n [disabled, group, onCheckedChange, value, nested, descendants, context],\n )\n\n useSafeLayoutEffect(() => {\n if (defaultExpanded) {\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n }\n } else {\n onClose()\n }\n }, [async, defaultExpanded, onClose, onGroupChildren, onOpen])\n\n useSafeLayoutEffect(() => {\n if (!group || !checkable) return\n\n const { children } = getChildDescendants(descendants)(value)\n const { indeterminate } = getAllChecked(children)\n\n setIndeterminate(indeterminate)\n }, [checkedValue])\n\n useSafeLayoutEffect(() => {\n if (!checkable) return\n\n const { node } = getParentDescendant(descendants)(value) ?? {}\n const checkbox = getCheckbox(node)\n\n if (!checkbox) return\n\n const cleanup = setAttribute(checkbox, \"aria-controls\", checkboxId)\n\n return cleanup\n }, [checkable, descendants])\n\n const getItemProps: PropGetter<\"li\"> = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: itemId,\n ref: mergeRefs(ref, register),\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"aria-level\": level,\n \"aria-selected\": ariaAttr(selected),\n \"data-disabled\": dataAttr(disabled),\n role: \"treeitem\",\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onItemClick),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [\n itemId,\n register,\n disabled,\n labelId,\n level,\n selected,\n onItemClick,\n onKeyDown,\n ],\n )\n\n const getGroupItemProps: PropGetter<\"li\"> = useCallback(\n (props = {}) => getItemProps({ \"aria-expanded\": groupOpen, ...props }),\n [getItemProps, groupOpen],\n )\n\n const getIndicatorProps: PropGetter<\"svg\"> = useCallback(\n (props) => ({\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-expanded\": groupOpen,\n \"aria-hidden\": true,\n \"data-disabled\": dataAttr(disabled),\n \"data-loading\": dataAttr(groupLoading),\n \"data-selected\": dataAttr(selected),\n role: \"presentation\",\n ...props,\n }),\n [disabled, groupOpen, selected, groupLoading],\n )\n\n const getCheckboxProps: PropGetter<UseCheckboxProps> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: checkboxId,\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-selected\": dataAttr(selected),\n checked,\n disabled,\n indeterminate,\n tabIndex: -1,\n ...props,\n onChange: handlerAll(props.onChange, onCheckboxChange),\n }),\n [\n checkboxId,\n labelId,\n selected,\n checked,\n disabled,\n indeterminate,\n onCheckboxChange,\n ],\n )\n\n const getGroupProps: PropGetter<\"ul\"> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n \"aria-busy\": ariaAttr(groupLoading),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-disabled\": dataAttr(disabled),\n role: \"group\",\n ...props,\n }),\n [labelId, disabled, groupLoading],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props = {}) => ({ id: labelId, ...props }),\n [labelId],\n )\n\n return {\n branchOpen,\n checked,\n children,\n disabled,\n group,\n groupLoading,\n groupOpen,\n indeterminate,\n level,\n props: rest,\n selected,\n value,\n getCheckboxProps,\n getGroupItemProps,\n getGroupProps,\n getIndicatorProps,\n getItemProps,\n getLabelProps,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n }\n}\n\nexport type UseTreeItemReturn = ReturnType<typeof useTreeItem>\n"],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ import { runKeyAction, useIds } from "../../utils/dom.js";
|
|
|
5
5
|
import { useSafeLayoutEffect } from "../../utils/effect.js";
|
|
6
6
|
import { assignRef, mergeRefs } from "../../utils/ref.js";
|
|
7
7
|
import { utils_exports } from "../../utils/index.js";
|
|
8
|
+
import { mergeProps } from "../../core/components/props.js";
|
|
9
|
+
import "../../core/index.js";
|
|
8
10
|
import { useControllableState } from "../../hooks/use-controllable-state/index.js";
|
|
9
11
|
import { createDescendants } from "../../hooks/use-descendants/index.js";
|
|
10
12
|
import { useDisclosure } from "../../hooks/use-disclosure/use-disclosure.js";
|
|
@@ -100,13 +102,11 @@ const useTree = ({ checkable = false, checkedValue: checkedValueProp, children,
|
|
|
100
102
|
expandedValue,
|
|
101
103
|
multiple,
|
|
102
104
|
selectedValue,
|
|
103
|
-
getRootProps: useCallback((props) => ({
|
|
105
|
+
getRootProps: useCallback((props) => mergeProps({
|
|
104
106
|
"aria-multiselectable": (0, utils_exports.ariaAttr)(multiple || checkable),
|
|
105
107
|
children,
|
|
106
|
-
role: "tree"
|
|
107
|
-
|
|
108
|
-
...props
|
|
109
|
-
}), [
|
|
108
|
+
role: "tree"
|
|
109
|
+
}, rest, props)(), [
|
|
110
110
|
multiple,
|
|
111
111
|
checkable,
|
|
112
112
|
rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tree.js","names":["createContext","descendant","value","level: number","value: string","branchOpen: boolean[]","selectedValue","parentTarget: string[]","children","indeterminate","getItemProps: PropGetter<\"li\">","getGroupItemProps: PropGetter<\"li\">","getIndicatorProps: PropGetter<\"svg\">"],"sources":["../../../../src/components/tree/use-tree.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport type { HTMLProps, PropGetter } from \"../../core\"\nimport type { Descendant, Descendants } from \"../../hooks/use-descendants\"\nimport type { UseDisclosureProps } from \"../../hooks/use-disclosure\"\nimport type { UseCheckboxProps } from \"../checkbox\"\nimport { Children, useCallback, useRef, useState } from \"react\"\nimport { useAsyncCallback } from \"../../hooks/use-async-callback\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useDisclosure } from \"../../hooks/use-disclosure\"\nimport {\n ariaAttr,\n assignRef,\n createContext,\n cx,\n dataAttr,\n filterEmpty,\n handlerAll,\n isArray,\n isInputElement,\n isUndefined,\n match,\n mergeRefs,\n runKeyAction,\n setAttribute,\n useIds,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nexport interface TreeControl {\n collapse: () => void\n expand: () => void\n}\n\ninterface TreeDescendantProps {\n expanded: boolean\n group: boolean\n id: string\n value: string\n query?: string\n}\n\nconst {\n DescendantsContext: TreeDescendantsContext,\n useDescendant: useTreeDescendant,\n useDescendants: useTreeDescendants,\n} = createDescendants<HTMLElement, TreeDescendantProps>()\n\nexport { TreeDescendantsContext, useTreeDescendant, useTreeDescendants }\n\ninterface TreeContext extends Omit<\n UseTreeReturn,\n \"descendants\" | \"getRootProps\"\n> {}\n\nconst [TreeContext, useTreeContext] = createContext<TreeContext>({\n name: \"TreeContext\",\n})\n\nexport { TreeContext, useTreeContext }\n\ninterface TreeItemContext extends Pick<\n UseTreeItemReturn,\n | \"branchOpen\"\n | \"groupOpen\"\n | \"level\"\n | \"onGroupClose\"\n | \"onGroupOpen\"\n | \"onGroupToggle\"\n | \"value\"\n> {}\n\nconst [TreeItemContext, useTreeItemContext] = createContext<TreeItemContext>({\n name: \"TreeItemContext\",\n strict: false,\n})\n\nexport { TreeItemContext, useTreeItemContext }\n\nexport interface UseTreeProps<\n Multiple extends boolean = false,\n> extends HTMLProps<\"ul\"> {\n /**\n * If `true`, the tree will allow checkable items.\n *\n * @default false\n */\n checkable?: boolean\n /**\n * The checked value of the tree.\n */\n checkedValue?: string[]\n /**\n * Ref of the tree callbacks.\n */\n controlRef?: RefObject<null | TreeControl>\n /**\n * The initial checked value of the tree.\n */\n defaultCheckedValue?: string[]\n /**\n * The initial expanded value of the tree.\n */\n defaultExpandedValue?: string[]\n /**\n * The initial selected value of the tree.\n */\n defaultSelectedValue?: Multiple extends true ? string[] : string\n /**\n * The expanded value of the tree.\n */\n expandedValue?: string[]\n /**\n * If `true`, the tree will allow multiple selection.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The selected value of the tree.\n */\n selectedValue?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when checked value changes.\n */\n onCheckedChange?: (value: string[]) => void\n /**\n * The callback invoked when expanded value changes.\n */\n onExpandedChange?: (value: string[]) => void\n /**\n * The callback invoked when selected value changes.\n */\n onSelectedChange?: (value: Multiple extends true ? string[] : string) => void\n}\n\nexport const useTree = <Multiple extends boolean = false>({\n checkable = false,\n checkedValue: checkedValueProp,\n children,\n controlRef,\n defaultCheckedValue = [],\n defaultExpandedValue = [],\n defaultSelectedValue,\n expandedValue: expandedValueProp,\n multiple,\n selectedValue: selectedValueProp,\n onCheckedChange: onCheckedChangeProp,\n onExpandedChange: onExpandedChangeProp,\n onSelectedChange: onSelectedChangeProp,\n ...rest\n}: UseTreeProps<Multiple> = {}) => {\n type MaybeSelectedValue = Multiple extends true ? string[] : string\n\n const [selectedValue, setSelectedValue] = useControllableState({\n defaultValue:\n defaultSelectedValue ?? ((multiple ? [] : \"\") as MaybeSelectedValue),\n value: selectedValueProp,\n onChange: onSelectedChangeProp,\n })\n const [checkedValue, onCheckedChange] = useControllableState({\n defaultValue: defaultCheckedValue,\n value: checkedValueProp,\n onChange: onCheckedChangeProp,\n })\n const [expandedValue, setExpandedValue] = useControllableState({\n defaultValue: defaultExpandedValue,\n value: expandedValueProp,\n onChange: onExpandedChangeProp,\n })\n const descendants = useTreeDescendants()\n const activeDescendant = useRef<Descendant<\n HTMLElement,\n TreeDescendantProps\n > | null>(null)\n const searchRef = useRef<{ value: string; omitValue?: string }>({\n omitValue: undefined,\n value: \"\",\n })\n const timeoutRef = useRef<any>(null)\n\n const onExpandAll = useCallback(() => {\n const values = descendants.enabledValues()\n const group = values.filter(({ group }) => group)\n const value = group.map(({ value }) => value)\n\n setExpandedValue(value)\n }, [descendants, setExpandedValue])\n\n const onCollapseAll = useCallback(() => {\n setExpandedValue([])\n }, [setExpandedValue])\n\n const onActiveDescendant = useCallback(\n (\n descendant?: Descendant<HTMLElement, TreeDescendantProps>,\n shouldFocus = true,\n ) => {\n if (!descendant) return\n\n descendants.values().forEach(({ node }) => {\n node.tabIndex = -1\n })\n\n activeDescendant.current = descendant\n descendant.node.tabIndex = 0\n\n if (shouldFocus) descendant.node.focus()\n },\n [descendants],\n )\n\n const onSearch = useCallback(\n (value: string, omitValue: string) => {\n clearTimeout(timeoutRef.current)\n\n searchRef.current.value += value\n\n if (!searchRef.current.omitValue) searchRef.current.omitValue = omitValue\n\n timeoutRef.current = setTimeout(() => {\n searchRef.current = { omitValue: undefined, value: \"\" }\n }, 400)\n\n const values = descendants\n .enabledValues({ expanded: true })\n .filter(\n (descendant) =>\n !isUndefined(descendant.value) &&\n descendant.value !== searchRef.current.omitValue,\n )\n const descendant = values.find(({ query, value }) =>\n match(query ?? value, searchRef.current.value, \"startsWith\"),\n )\n\n if (descendant) onActiveDescendant(descendant)\n },\n [descendants, onActiveDescendant],\n )\n\n const onSelectedChange = useCallback(\n (value: SetStateAction<string | string[]>) => {\n setSelectedValue(value as SetStateAction<MaybeSelectedValue>)\n },\n [setSelectedValue],\n )\n\n const onExpandedChange = useCallback(\n (value: string) => {\n setExpandedValue((prev) => {\n if (prev.includes(value)) {\n return prev.filter((prevValue) => prevValue !== value)\n } else {\n return [...prev, value]\n }\n })\n },\n [setExpandedValue],\n )\n\n useSafeLayoutEffect(() => {\n const value = isArray(selectedValue) ? selectedValue.at(0) : selectedValue\n const expandedDescendants = descendants.enabledValues({ expanded: true })\n\n if (value) {\n const descendant = expandedDescendants.find(\n (descendant) => value === descendant.value,\n )\n\n if (descendant) {\n onActiveDescendant(descendant, false)\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n }, [children])\n\n assignRef(controlRef, { collapse: onCollapseAll, expand: onExpandAll })\n\n const getRootProps: PropGetter<\"ul\"> = useCallback(\n (props) => ({\n \"aria-multiselectable\": ariaAttr(multiple || checkable),\n children,\n role: \"tree\",\n ...rest,\n ...props,\n }),\n [multiple, checkable, rest, children],\n )\n\n return {\n activeDescendant,\n checkable,\n checkedValue,\n descendants,\n expandedValue,\n multiple,\n selectedValue,\n getRootProps,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n }\n}\n\nexport type UseTreeReturn = ReturnType<typeof useTree>\n\nconst getRootDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const rootValue = segments.at(0)\n\n return descendants.enabledValues().find(({ value }) => value === rootValue)\n }\n\nconst getParentDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const parentValue = segments.slice(0, -1).join(\"/\")\n\n return descendants\n .enabledValues()\n .find(({ value }) => value === parentValue)\n }\n\nconst getChildDescendants =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const children = descendants\n .enabledValues()\n .filter((descendant) => descendant.value.startsWith(value + \"/\"))\n const values = children\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n return { children, values }\n }\n\nconst getParentValues = (value: string) => {\n const segments = value.split(\"/\")\n\n return segments\n .reduce<string[]>((prev, current) => {\n const prevValue = prev.at(-1)\n return prevValue ? [...prev, [prevValue, current].join(\"/\")] : [current]\n }, [])\n .toReversed()\n}\n\nconst getCheckbox = (node?: HTMLElement) => {\n const el = node?.querySelector(\"input[type='checkbox']\")\n\n return isInputElement(el) ? el : null\n}\n\nconst getAllChecked = (\n descendants: Descendant<HTMLElement, TreeDescendantProps>[],\n trulyValues?: string[],\n falsyValues?: string[],\n) => {\n const checked = descendants.map(({ node, value }) => {\n if (value && trulyValues?.includes(value)) return true\n if (value && falsyValues?.includes(value)) return false\n\n const checkbox = getCheckbox(node)\n\n return !!checkbox?.checked\n })\n\n const allChecked = !!checked.length && checked.every(Boolean)\n const indeterminate = checked.some(Boolean) && !allChecked\n\n return { allChecked, checked, indeterminate }\n}\n\nconst getRangeValues =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (start: string, end: string) => {\n const values = descendants.enabledValues()\n const [startIndex, endIndex] = [\n values.findIndex((descendant) => descendant.value === start),\n values.findIndex((descendant) => descendant.value === end),\n ].sort((a, b) => a - b)\n\n return values\n .slice(startIndex, endIndex! + 1)\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n .sort((a, b) => {\n if (a === start && b !== start) return -1\n if (a !== start && b === start) return 1\n\n return 0\n })\n }\n\nexport interface UseTreeItemProps\n extends HTMLProps<\"div\">, Omit<UseDisclosureProps, \"timing\"> {\n /**\n * If `true`, the tree item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The query to search for in the tree item.\n */\n query?: string\n /**\n * The value of the item.\n */\n value?: string\n /**\n * If provided, the tree item will be rendered as an async tree item.\n */\n asyncChildren?: () => Promise<ReactNode>\n}\n\nexport const useTreeItem = ({\n asyncChildren,\n children: childrenProp,\n defaultOpen,\n disabled = false,\n open: openProp,\n query,\n value: valueProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n}: UseTreeItemProps = {}) => {\n const context = useTreeItemContext()\n const {\n activeDescendant,\n checkable,\n checkedValue,\n expandedValue,\n multiple,\n selectedValue,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n } = useTreeContext()\n const [children, setChildren] = useState<ReactNode>(childrenProp)\n const [indeterminate, setIndeterminate] = useState(false)\n const [itemId, labelId, checkboxId] = useIds()\n const initialAsyncRef = useRef(false)\n const async = !!asyncChildren\n const group = async || Children.count(children) > 0\n const level: number = (context?.level ?? 0) + 1\n const value: string = filterEmpty([context?.value, valueProp]).join(\"/\")\n const nested = !!context?.value\n const selected = isArray(selectedValue)\n ? !!value && selectedValue.includes(value)\n : !!value && selectedValue === value\n const checked = !!value && checkedValue.includes(value)\n const defaultExpanded = !!value && expandedValue.includes(value)\n const {\n open: groupOpen,\n onClose,\n onOpen,\n } = useDisclosure({\n defaultOpen: defaultOpen ?? defaultExpanded,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const branchOpen: boolean[] = nested\n ? [...context.branchOpen, groupOpen]\n : [groupOpen]\n const { descendants, register } = useTreeDescendant({\n id: itemId!,\n disabled,\n expanded: branchOpen.slice(0, -1).every(Boolean),\n group,\n query,\n value,\n })\n\n const [groupLoading, onGroupChildren] = useAsyncCallback(async () => {\n const children = await asyncChildren?.()\n\n setChildren(children)\n }, [asyncChildren])\n\n const onSelect = useCallback(\n (\n ev: (\n | Partial<KeyboardEvent<HTMLElement>>\n | Partial<MouseEvent<HTMLElement>>\n ) & { value?: string } = {},\n ) => {\n const selectedValue = ev.value ?? value\n\n if (disabled || !selectedValue) return\n\n if (multiple) {\n onSelectedChange((prev) => {\n if (!isArray(prev)) return prev\n\n if (ev.ctrlKey || ev.metaKey) {\n if (prev.includes(selectedValue)) {\n return prev.filter((prevValue) => prevValue !== selectedValue)\n } else {\n return [...prev, selectedValue]\n }\n } else if (ev.shiftKey && prev[0]) {\n if (prev[0] === selectedValue) return prev\n\n return getRangeValues(descendants)(prev[0], selectedValue)\n } else {\n return [selectedValue]\n }\n })\n } else {\n onSelectedChange(selectedValue)\n }\n },\n [descendants, disabled, multiple, onSelectedChange, value],\n )\n\n const onGroupOpen = useCallback(() => {\n if (disabled || !value) return\n\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n onExpandedChange(value)\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n onExpandedChange(value)\n }\n }, [disabled, async, onGroupChildren, onOpen, onExpandedChange, value])\n\n const onGroupClose = useCallback(() => {\n if (disabled || !value) return\n\n onClose()\n onExpandedChange(value)\n }, [disabled, onClose, onExpandedChange, value])\n\n const onGroupToggle = useCallback(() => {\n if (groupOpen) {\n onGroupClose()\n } else {\n onGroupOpen()\n }\n }, [groupOpen, onGroupClose, onGroupOpen])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLElement>) => {\n if (disabled || !value) return\n\n runKeyAction(ev, {\n a: () => {\n if (!multiple || !(ev.ctrlKey || ev.metaKey)) return\n\n const values = descendants\n .enabledValues()\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n onSelectedChange(values)\n },\n ArrowDown: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onExpandAll()\n } else {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n ArrowLeft: () => {\n if (group && groupOpen) {\n onGroupClose()\n } else if (nested) {\n const descendant = getParentDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n }\n },\n ArrowRight: () => {\n if (!group) return\n\n if (groupOpen) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n } else {\n if (!groupLoading) onGroupOpen()\n }\n },\n ArrowUp: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onCollapseAll()\n\n if (!nested) return\n\n const descendant = getRootDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n } else {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n End: () => {\n const descendant = descendants\n .enabledValues({ expanded: true })\n .at(-1)\n\n onActiveDescendant(descendant)\n },\n Enter: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n Home: () => {\n const descendant = descendants.enabledValues({ expanded: true }).at(0)\n\n onActiveDescendant(descendant)\n },\n Space: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n })\n\n if (ev.key.length !== 1) return\n if (ev.ctrlKey || ev.metaKey || ev.altKey) return\n\n ev.preventDefault()\n\n onSearch(ev.key, query ?? value)\n },\n [\n activeDescendant,\n descendants,\n disabled,\n group,\n groupLoading,\n groupOpen,\n multiple,\n nested,\n onActiveDescendant,\n onCollapseAll,\n onExpandAll,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n onSearch,\n onSelect,\n onSelectedChange,\n query,\n value,\n ],\n )\n\n const onItemClick = useCallback(\n (ev: MouseEvent<HTMLLIElement>) => {\n ev.stopPropagation()\n\n if (disabled || !value) return\n\n if (group && !groupLoading)\n if (!ev.ctrlKey && !ev.metaKey && !ev.shiftKey) onGroupToggle()\n\n onSelect(ev)\n },\n [disabled, group, groupLoading, onGroupToggle, onSelect, value],\n )\n\n const onCheckboxChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (disabled || !value) return\n\n ev.stopPropagation()\n\n if (group) setIndeterminate(false)\n\n onCheckedChange((prev) => {\n const target = [value]\n\n if (group) {\n const { values } = getChildDescendants(descendants)(value)\n\n target.push(...values)\n }\n\n if (nested) {\n const parentValues = getParentValues(context.value)\n const parentTarget: string[] = []\n\n parentValues.forEach((parentValue) => {\n const { children } = getChildDescendants(descendants)(parentValue)\n const { allChecked } = getAllChecked(\n children,\n [...parentTarget, ...(ev.target.checked ? target : [])],\n !ev.target.checked ? target : [],\n )\n\n if (allChecked) parentTarget.push(parentValue)\n })\n\n if (!ev.target.checked) parentTarget.push(...parentValues)\n\n target.push(...parentTarget)\n }\n\n if (ev.target.checked) {\n return [...new Set([...prev, ...target])]\n } else {\n return prev.filter((prevValue) => !target.includes(prevValue))\n }\n })\n },\n [disabled, group, onCheckedChange, value, nested, descendants, context],\n )\n\n useSafeLayoutEffect(() => {\n if (defaultExpanded) {\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n }\n } else {\n onClose()\n }\n }, [async, defaultExpanded, onClose, onGroupChildren, onOpen])\n\n useSafeLayoutEffect(() => {\n if (!group || !checkable) return\n\n const { children } = getChildDescendants(descendants)(value)\n const { indeterminate } = getAllChecked(children)\n\n setIndeterminate(indeterminate)\n }, [checkedValue])\n\n useSafeLayoutEffect(() => {\n if (!checkable) return\n\n const { node } = getParentDescendant(descendants)(value) ?? {}\n const checkbox = getCheckbox(node)\n\n if (!checkbox) return\n\n const cleanup = setAttribute(checkbox, \"aria-controls\", checkboxId)\n\n return cleanup\n }, [checkable, descendants])\n\n const getItemProps: PropGetter<\"li\"> = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: itemId,\n ref: mergeRefs(ref, register),\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"aria-level\": level,\n \"aria-selected\": ariaAttr(selected),\n \"data-disabled\": dataAttr(disabled),\n role: \"treeitem\",\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onItemClick),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [\n itemId,\n register,\n disabled,\n labelId,\n level,\n selected,\n onItemClick,\n onKeyDown,\n ],\n )\n\n const getGroupItemProps: PropGetter<\"li\"> = useCallback(\n (props = {}) => getItemProps({ \"aria-expanded\": groupOpen, ...props }),\n [getItemProps, groupOpen],\n )\n\n const getIndicatorProps: PropGetter<\"svg\"> = useCallback(\n (props) => ({\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-expanded\": groupOpen,\n \"aria-hidden\": true,\n \"data-disabled\": dataAttr(disabled),\n \"data-loading\": dataAttr(groupLoading),\n \"data-selected\": dataAttr(selected),\n role: \"presentation\",\n ...props,\n }),\n [disabled, groupOpen, selected, groupLoading],\n )\n\n const getCheckboxProps: PropGetter<UseCheckboxProps> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: checkboxId,\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-selected\": dataAttr(selected),\n checked,\n disabled,\n indeterminate,\n tabIndex: -1,\n ...props,\n onChange: handlerAll(props.onChange, onCheckboxChange),\n }),\n [\n checkboxId,\n labelId,\n selected,\n checked,\n disabled,\n indeterminate,\n onCheckboxChange,\n ],\n )\n\n const getGroupProps: PropGetter<\"ul\"> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n \"aria-busy\": ariaAttr(groupLoading),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-disabled\": dataAttr(disabled),\n role: \"group\",\n ...props,\n }),\n [labelId, disabled, groupLoading],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props = {}) => ({ id: labelId, ...props }),\n [labelId],\n )\n\n return {\n branchOpen,\n checked,\n children,\n disabled,\n group,\n groupLoading,\n groupOpen,\n indeterminate,\n level,\n props: rest,\n selected,\n value,\n getCheckboxProps,\n getGroupItemProps,\n getGroupProps,\n getIndicatorProps,\n getItemProps,\n getLabelProps,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n }\n}\n\nexport type UseTreeItemReturn = ReturnType<typeof useTreeItem>\n"],"mappings":";;;;;;;;;;;;;;;AAmDA,MAAM,EACJ,oBAAoB,wBACpB,eAAe,mBACf,gBAAgB,uBACd,mBAAqD;AASzD,MAAM,CAAC,aAAa,kBAAkBA,gBAA2B,EAC/D,MAAM,eACP,CAAC;AAeF,MAAM,CAAC,iBAAiB,sBAAsBA,gBAA+B;CAC3E,MAAM;CACN,QAAQ;CACT,CAAC;AA6DF,MAAa,WAA6C,EACxD,YAAY,OACZ,cAAc,kBACd,UACA,YACA,sBAAsB,EAAE,EACxB,uBAAuB,EAAE,EACzB,sBACA,eAAe,mBACf,UACA,eAAe,mBACf,iBAAiB,qBACjB,kBAAkB,sBAClB,kBAAkB,sBAClB,GAAG,SACuB,EAAE,KAAK;CAGjC,MAAM,CAAC,eAAe,oBAAoB,qBAAqB;EAC7D,cACE,yBAA0B,WAAW,EAAE,GAAG;EAC5C,OAAO;EACP,UAAU;EACX,CAAC;CACF,MAAM,CAAC,cAAc,mBAAmB,qBAAqB;EAC3D,cAAc;EACd,OAAO;EACP,UAAU;EACX,CAAC;CACF,MAAM,CAAC,eAAe,oBAAoB,qBAAqB;EAC7D,cAAc;EACd,OAAO;EACP,UAAU;EACX,CAAC;CACF,MAAM,cAAc,oBAAoB;CACxC,MAAM,mBAAmB,OAGf,KAAK;CACf,MAAM,YAAY,OAA8C;EAC9D,WAAW;EACX,OAAO;EACR,CAAC;CACF,MAAM,aAAa,OAAY,KAAK;CAEpC,MAAM,cAAc,kBAAkB;AAKpC,mBAJe,YAAY,eAAe,CACrB,QAAQ,EAAE,YAAY,MAAM,CAC7B,KAAK,EAAE,YAAY,MAAM,CAEtB;IACtB,CAAC,aAAa,iBAAiB,CAAC;CAEnC,MAAM,gBAAgB,kBAAkB;AACtC,mBAAiB,EAAE,CAAC;IACnB,CAAC,iBAAiB,CAAC;CAEtB,MAAM,qBAAqB,aAEvB,YACA,cAAc,SACX;AACH,MAAI,CAAC,WAAY;AAEjB,cAAY,QAAQ,CAAC,SAAS,EAAE,WAAW;AACzC,QAAK,WAAW;IAChB;AAEF,mBAAiB,UAAU;AAC3B,aAAW,KAAK,WAAW;AAE3B,MAAI,YAAa,YAAW,KAAK,OAAO;IAE1C,CAAC,YAAY,CACd;CAED,MAAM,WAAW,aACd,OAAe,cAAsB;AACpC,eAAa,WAAW,QAAQ;AAEhC,YAAU,QAAQ,SAAS;AAE3B,MAAI,CAAC,UAAU,QAAQ,UAAW,WAAU,QAAQ,YAAY;AAEhE,aAAW,UAAU,iBAAiB;AACpC,aAAU,UAAU;IAAE,WAAW;IAAW,OAAO;IAAI;KACtD,IAAI;EASP,MAAM,aAPS,YACZ,cAAc,EAAE,UAAU,MAAM,CAAC,CACjC,QACE,iBACC,gCAAaC,aAAW,MAAM,IAC9BA,aAAW,UAAU,UAAU,QAAQ,UAC1C,CACuB,MAAM,EAAE,OAAO,8CACjC,SAASC,SAAO,UAAU,QAAQ,OAAO,aAAa,CAC7D;AAED,MAAI,WAAY,oBAAmB,WAAW;IAEhD,CAAC,aAAa,mBAAmB,CAClC;CAED,MAAM,mBAAmB,aACtB,UAA6C;AAC5C,mBAAiB,MAA4C;IAE/D,CAAC,iBAAiB,CACnB;CAED,MAAM,mBAAmB,aACtB,UAAkB;AACjB,oBAAkB,SAAS;AACzB,OAAI,KAAK,SAAS,MAAM,CACtB,QAAO,KAAK,QAAQ,cAAc,cAAc,MAAM;OAEtD,QAAO,CAAC,GAAG,MAAM,MAAM;IAEzB;IAEJ,CAAC,iBAAiB,CACnB;AAED,2BAA0B;EACxB,MAAM,mCAAgB,cAAc,GAAG,cAAc,GAAG,EAAE,GAAG;EAC7D,MAAM,sBAAsB,YAAY,cAAc,EAAE,UAAU,MAAM,CAAC;AAEzE,MAAI,OAAO;GACT,MAAM,aAAa,oBAAoB,MACpC,iBAAe,UAAUD,aAAW,MACtC;AAED,OAAI,WACF,oBAAmB,YAAY,MAAM;OAErC,oBAAmB,oBAAoB,GAAG,EAAE,EAAE,MAAM;QAGtD,oBAAmB,oBAAoB,GAAG,EAAE,EAAE,MAAM;IAErD,CAAC,SAAS,CAAC;AAEd,WAAU,YAAY;EAAE,UAAU;EAAe,QAAQ;EAAa,CAAC;AAavE,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAnBqC,aACpC,WAAW;GACV,oDAAiC,YAAY,UAAU;GACvD;GACA,MAAM;GACN,GAAG;GACH,GAAG;GACJ,GACD;GAAC;GAAU;GAAW;GAAM;GAAS,CACtC;EAWC;EACA;EACA;EACA;EACA;EACA;EACA;EACD;;AAKH,MAAM,qBACH,iBACA,UAAkB;CACjB,MAAM,WAAW,MAAM,MAAM,IAAI;AAEjC,KAAI,SAAS,UAAU,EAAG;CAE1B,MAAM,YAAY,SAAS,GAAG,EAAE;AAEhC,QAAO,YAAY,eAAe,CAAC,MAAM,EAAE,qBAAYC,YAAU,UAAU;;AAG/E,MAAM,uBACH,iBACA,UAAkB;CACjB,MAAM,WAAW,MAAM,MAAM,IAAI;AAEjC,KAAI,SAAS,UAAU,EAAG;CAE1B,MAAM,cAAc,SAAS,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI;AAEnD,QAAO,YACJ,eAAe,CACf,MAAM,EAAE,qBAAYA,YAAU,YAAY;;AAGjD,MAAM,uBACH,iBACA,UAAkB;CACjB,MAAM,WAAW,YACd,eAAe,CACf,QAAQ,eAAe,WAAW,MAAM,WAAW,QAAQ,IAAI,CAAC;AAKnE,QAAO;EAAE;EAAU,QAJJ,SACZ,KAAK,EAAE,qBAAYA,QAAM,CACzB,QAAQ,YAAU,gCAAaA,QAAM,CAAC;EAEd;;AAG/B,MAAM,mBAAmB,UAAkB;AAGzC,QAFiB,MAAM,MAAM,IAAI,CAG9B,QAAkB,MAAM,YAAY;EACnC,MAAM,YAAY,KAAK,GAAG,GAAG;AAC7B,SAAO,YAAY,CAAC,GAAG,MAAM,CAAC,WAAW,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ;IACvE,EAAE,CAAC,CACL,YAAY;;AAGjB,MAAM,eAAe,SAAuB;CAC1C,MAAM,KAAK,MAAM,cAAc,yBAAyB;AAExD,0CAAsB,GAAG,GAAG,KAAK;;AAGnC,MAAM,iBACJ,aACA,aACA,gBACG;CACH,MAAM,UAAU,YAAY,KAAK,EAAE,MAAM,YAAY;AACnD,MAAI,SAAS,aAAa,SAAS,MAAM,CAAE,QAAO;AAClD,MAAI,SAAS,aAAa,SAAS,MAAM,CAAE,QAAO;AAIlD,SAAO,CAAC,CAFS,YAAY,KAAK,EAEf;GACnB;CAEF,MAAM,aAAa,CAAC,CAAC,QAAQ,UAAU,QAAQ,MAAM,QAAQ;AAG7D,QAAO;EAAE;EAAY;EAAS,eAFR,QAAQ,KAAK,QAAQ,IAAI,CAAC;EAEH;;AAG/C,MAAM,kBACH,iBACA,OAAe,QAAgB;CAC9B,MAAM,SAAS,YAAY,eAAe;CAC1C,MAAM,CAAC,YAAY,YAAY,CAC7B,OAAO,WAAW,eAAe,WAAW,UAAU,MAAM,EAC5D,OAAO,WAAW,eAAe,WAAW,UAAU,IAAI,CAC3D,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE;AAEvB,QAAO,OACJ,MAAM,YAAY,WAAY,EAAE,CAChC,KAAK,EAAE,YAAY,MAAM,CACzB,QAAQ,UAAU,gCAAa,MAAM,CAAC,CACtC,MAAM,GAAG,MAAM;AACd,MAAI,MAAM,SAAS,MAAM,MAAO,QAAO;AACvC,MAAI,MAAM,SAAS,MAAM,MAAO,QAAO;AAEvC,SAAO;GACP;;AAyBR,MAAa,eAAe,EAC1B,eACA,UAAU,cACV,aACA,WAAW,OACX,MAAM,UACN,OACA,OAAO,WACP,SAAS,aACT,QAAQ,YACR,GAAG,SACiB,EAAE,KAAK;CAC3B,MAAM,UAAU,oBAAoB;CACpC,MAAM,EACJ,kBACA,WACA,cACA,eACA,UACA,eACA,oBACA,iBACA,eACA,aACA,kBACA,UACA,qBACE,gBAAgB;CACpB,MAAM,CAAC,UAAU,eAAe,SAAoB,aAAa;CACjE,MAAM,CAAC,eAAe,oBAAoB,SAAS,MAAM;CACzD,MAAM,CAAC,QAAQ,SAAS,cAAc,QAAQ;CAC9C,MAAM,kBAAkB,OAAO,MAAM;CACrC,MAAM,QAAQ,CAAC,CAAC;CAChB,MAAM,QAAQ,SAAS,SAAS,MAAM,SAAS,GAAG;CAClD,MAAMC,SAAiB,SAAS,SAAS,KAAK;CAC9C,MAAMC,uCAA4B,CAAC,SAAS,OAAO,UAAU,CAAC,CAAC,KAAK,IAAI;CACxE,MAAM,SAAS,CAAC,CAAC,SAAS;CAC1B,MAAM,sCAAmB,cAAc,GACnC,CAAC,CAAC,SAAS,cAAc,SAAS,MAAM,GACxC,CAAC,CAAC,SAAS,kBAAkB;CACjC,MAAM,UAAU,CAAC,CAAC,SAAS,aAAa,SAAS,MAAM;CACvD,MAAM,kBAAkB,CAAC,CAAC,SAAS,cAAc,SAAS,MAAM;CAChE,MAAM,EACJ,MAAM,WACN,SACA,WACE,cAAc;EAChB,aAAa,eAAe;EAC5B,MAAM;EACN,SAAS;EACT,QAAQ;EACT,CAAC;CACF,MAAMC,aAAwB,SAC1B,CAAC,GAAG,QAAQ,YAAY,UAAU,GAClC,CAAC,UAAU;CACf,MAAM,EAAE,aAAa,aAAa,kBAAkB;EAClD,IAAI;EACJ;EACA,UAAU,WAAW,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ;EAChD;EACA;EACA;EACD,CAAC;CAEF,MAAM,CAAC,cAAc,mBAAmB,iBAAiB,YAAY;AAGnE,cAFiB,MAAM,iBAAiB,CAEnB;IACpB,CAAC,cAAc,CAAC;CAEnB,MAAM,WAAW,aAEb,KAGyB,EAAE,KACxB;EACH,MAAMC,kBAAgB,GAAG,SAAS;AAElC,MAAI,YAAY,CAACA,gBAAe;AAEhC,MAAI,SACF,mBAAkB,SAAS;AACzB,OAAI,4BAAS,KAAK,CAAE,QAAO;AAE3B,OAAI,GAAG,WAAW,GAAG,QACnB,KAAI,KAAK,SAASA,gBAAc,CAC9B,QAAO,KAAK,QAAQ,cAAc,cAAcA,gBAAc;OAE9D,QAAO,CAAC,GAAG,MAAMA,gBAAc;YAExB,GAAG,YAAY,KAAK,IAAI;AACjC,QAAI,KAAK,OAAOA,gBAAe,QAAO;AAEtC,WAAO,eAAe,YAAY,CAAC,KAAK,IAAIA,gBAAc;SAE1D,QAAO,CAACA,gBAAc;IAExB;MAEF,kBAAiBA,gBAAc;IAGnC;EAAC;EAAa;EAAU;EAAU;EAAkB;EAAM,CAC3D;CAED,MAAM,cAAc,kBAAkB;AACpC,MAAI,YAAY,CAAC,MAAO;AAExB,MAAI,SAAS,CAAC,gBAAgB,SAAS;AACrC,mBAAgB,UAAU;AAE1B,oBAAiB,CACd,WAAW;AACV,YAAQ;AACR,qBAAiB,MAAM;KACvB,CACD,YAAY;AACX,oBAAgB,UAAU;KAC1B;SACC;AACL,WAAQ;AACR,oBAAiB,MAAM;;IAExB;EAAC;EAAU;EAAO;EAAiB;EAAQ;EAAkB;EAAM,CAAC;CAEvE,MAAM,eAAe,kBAAkB;AACrC,MAAI,YAAY,CAAC,MAAO;AAExB,WAAS;AACT,mBAAiB,MAAM;IACtB;EAAC;EAAU;EAAS;EAAkB;EAAM,CAAC;CAEhD,MAAM,gBAAgB,kBAAkB;AACtC,MAAI,UACF,eAAc;MAEd,cAAa;IAEd;EAAC;EAAW;EAAc;EAAY,CAAC;CAE1C,MAAM,YAAY,aACf,OAAmC;AAClC,MAAI,YAAY,CAAC,MAAO;AAExB,eAAa,IAAI;GACf,SAAS;AACP,QAAI,CAAC,YAAY,EAAE,GAAG,WAAW,GAAG,SAAU;AAO9C,qBALe,YACZ,eAAe,CACf,KAAK,EAAE,qBAAYJ,QAAM,CACzB,QAAQ,YAAU,gCAAaA,QAAM,CAAC,CAEjB;;GAE1B,iBAAiB;AACf,SAAK,GAAG,WAAW,GAAG,YAAY,GAAG,SACnC,cAAa;SACR;KACL,MAAM,aAAa,YAAY,iBAC7B,iBAAiB,SACjB,OACA,EAAE,UAAU,MAAM,CACnB;AAED,wBAAmB,WAAW;AAE9B,SAAI,cAAc,GAAG,YAAY,SAC/B,UAAS;MAAE,SAAS;MAAM,OAAO,WAAW;MAAO,CAAC;;;GAG1D,iBAAiB;AACf,QAAI,SAAS,UACX,eAAc;aACL,OAGT,oBAFmB,oBAAoB,YAAY,CAAC,MAAM,CAE5B;;GAGlC,kBAAkB;AAChB,QAAI,CAAC,MAAO;AAEZ,QAAI,UAOF,oBANmB,YAAY,iBAC7B,iBAAiB,SACjB,OACA,EAAE,UAAU,MAAM,CACnB,CAE6B;aAE1B,CAAC,aAAc,cAAa;;GAGpC,eAAe;AACb,SAAK,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU;AAC7C,oBAAe;AAEf,SAAI,CAAC,OAAQ;AAIb,wBAFmB,kBAAkB,YAAY,CAAC,MAAM,CAE1B;WACzB;KACL,MAAM,aAAa,YAAY,iBAC7B,iBAAiB,SACjB,OACA,EAAE,UAAU,MAAM,CACnB;AAED,wBAAmB,WAAW;AAE9B,SAAI,cAAc,GAAG,YAAY,SAC/B,UAAS;MAAE,SAAS;MAAM,OAAO,WAAW;MAAO,CAAC;;;GAG1D,WAAW;AAKT,uBAJmB,YAChB,cAAc,EAAE,UAAU,MAAM,CAAC,CACjC,GAAG,GAAG,CAEqB;;GAEhC,aAAa;AACX,QAAI,MAAO,gBAAe;AAE1B,aAAS,GAAG;;GAEd,YAAY;AAGV,uBAFmB,YAAY,cAAc,EAAE,UAAU,MAAM,CAAC,CAAC,GAAG,EAAE,CAExC;;GAEhC,aAAa;AACX,QAAI,MAAO,gBAAe;AAE1B,aAAS,GAAG;;GAEf,CAAC;AAEF,MAAI,GAAG,IAAI,WAAW,EAAG;AACzB,MAAI,GAAG,WAAW,GAAG,WAAW,GAAG,OAAQ;AAE3C,KAAG,gBAAgB;AAEnB,WAAS,GAAG,KAAK,SAAS,MAAM;IAElC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,cAAc,aACjB,OAAkC;AACjC,KAAG,iBAAiB;AAEpB,MAAI,YAAY,CAAC,MAAO;AAExB,MAAI,SAAS,CAAC,cACZ;OAAI,CAAC,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC,GAAG,SAAU,gBAAe;;AAEjE,WAAS,GAAG;IAEd;EAAC;EAAU;EAAO;EAAc;EAAe;EAAU;EAAM,CAChE;CAED,MAAM,mBAAmB,aACtB,OAAsC;AACrC,MAAI,YAAY,CAAC,MAAO;AAExB,KAAG,iBAAiB;AAEpB,MAAI,MAAO,kBAAiB,MAAM;AAElC,mBAAiB,SAAS;GACxB,MAAM,SAAS,CAAC,MAAM;AAEtB,OAAI,OAAO;IACT,MAAM,EAAE,WAAW,oBAAoB,YAAY,CAAC,MAAM;AAE1D,WAAO,KAAK,GAAG,OAAO;;AAGxB,OAAI,QAAQ;IACV,MAAM,eAAe,gBAAgB,QAAQ,MAAM;IACnD,MAAMK,eAAyB,EAAE;AAEjC,iBAAa,SAAS,gBAAgB;KACpC,MAAM,EAAE,yBAAa,oBAAoB,YAAY,CAAC,YAAY;KAClE,MAAM,EAAE,eAAe,cACrBC,YACA,CAAC,GAAG,cAAc,GAAI,GAAG,OAAO,UAAU,SAAS,EAAE,CAAE,EACvD,CAAC,GAAG,OAAO,UAAU,SAAS,EAAE,CACjC;AAED,SAAI,WAAY,cAAa,KAAK,YAAY;MAC9C;AAEF,QAAI,CAAC,GAAG,OAAO,QAAS,cAAa,KAAK,GAAG,aAAa;AAE1D,WAAO,KAAK,GAAG,aAAa;;AAG9B,OAAI,GAAG,OAAO,QACZ,QAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;OAEzC,QAAO,KAAK,QAAQ,cAAc,CAAC,OAAO,SAAS,UAAU,CAAC;IAEhE;IAEJ;EAAC;EAAU;EAAO;EAAiB;EAAO;EAAQ;EAAa;EAAQ,CACxE;AAED,2BAA0B;AACxB,MAAI,gBACF,KAAI,SAAS,CAAC,gBAAgB,SAAS;AACrC,mBAAgB,UAAU;AAE1B,oBAAiB,CACd,WAAW;AACV,YAAQ;KACR,CACD,YAAY;AACX,oBAAgB,UAAU;KAC1B;QAEJ,SAAQ;MAGV,UAAS;IAEV;EAAC;EAAO;EAAiB;EAAS;EAAiB;EAAO,CAAC;AAE9D,2BAA0B;AACxB,MAAI,CAAC,SAAS,CAAC,UAAW;EAE1B,MAAM,EAAE,yBAAa,oBAAoB,YAAY,CAAC,MAAM;EAC5D,MAAM,EAAE,mCAAkB,cAAcA,WAAS;AAEjD,mBAAiBC,gBAAc;IAC9B,CAAC,aAAa,CAAC;AAElB,2BAA0B;AACxB,MAAI,CAAC,UAAW;EAEhB,MAAM,EAAE,SAAS,oBAAoB,YAAY,CAAC,MAAM,IAAI,EAAE;EAC9D,MAAM,WAAW,YAAY,KAAK;AAElC,MAAI,CAAC,SAAU;AAIf,yCAF6B,UAAU,iBAAiB,WAAW;IAGlE,CAAC,WAAW,YAAY,CAAC;CAE5B,MAAMC,eAAiC,aACpC,EAAE,KAAK,mBAAmB,gBAAgB,GAAG,UAAU,EAAE,MAAM;EAC9D,IAAI;EACJ,KAAK,UAAU,KAAK,SAAS;EAC7B,6CAA0B,SAAS;EACnC,yCAAsB,gBAAgB,QAAQ;EAC9C,cAAc;EACd,6CAA0B,SAAS;EACnC,6CAA0B,SAAS;EACnC,MAAM;EACN,UAAU;EACV,GAAG;EACH,uCAAoB,MAAM,SAAS,YAAY;EAC/C,yCAAsB,MAAM,WAAW,UAAU;EAClD,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAMC,oBAAsC,aACzC,QAAQ,EAAE,KAAK,aAAa;EAAE,iBAAiB;EAAW,GAAG;EAAO,CAAC,EACtE,CAAC,cAAc,UAAU,CAC1B;CAED,MAAMC,oBAAuC,aAC1C,WAAW;EACV,6CAA0B,SAAS;EACnC,iBAAiB;EACjB,eAAe;EACf,6CAA0B,SAAS;EACnC,4CAAyB,aAAa;EACtC,6CAA0B,SAAS;EACnC,MAAM;EACN,GAAG;EACJ,GACD;EAAC;EAAU;EAAW;EAAU;EAAa,CAC9C;AAyCD,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA,kBApDqD,aACpD,EAAE,mBAAmB,gBAAgB,GAAG,UAAU,EAAE,MAAM;GACzD,IAAI;GACJ,yCAAsB,gBAAgB,QAAQ;GAC9C,6CAA0B,SAAS;GACnC;GACA;GACA;GACA,UAAU;GACV,GAAG;GACH,wCAAqB,MAAM,UAAU,iBAAiB;GACvD,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACF;EAgCC;EACA,eA/BsC,aACrC,EAAE,mBAAmB,gBAAgB,GAAG,UAAU,EAAE,MAAM;GACzD,yCAAsB,aAAa;GACnC,yCAAsB,gBAAgB,QAAQ;GAC9C,6CAA0B,SAAS;GACnC,MAAM;GACN,GAAG;GACJ,GACD;GAAC;GAAS;GAAU;GAAa,CAClC;EAuBC;EACA;EACA,eAvBwC,aACvC,QAAQ,EAAE,MAAM;GAAE,IAAI;GAAS,GAAG;GAAO,GAC1C,CAAC,QAAQ,CACV;EAqBC;EACA;EACA;EACD"}
|
|
1
|
+
{"version":3,"file":"use-tree.js","names":["createContext","descendant","value","level: number","value: string","branchOpen: boolean[]","selectedValue","parentTarget: string[]","children","indeterminate","getItemProps: PropGetter<\"li\">","getGroupItemProps: PropGetter<\"li\">","getIndicatorProps: PropGetter<\"svg\">"],"sources":["../../../../src/components/tree/use-tree.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport type { HTMLProps, PropGetter } from \"../../core\"\nimport type { Descendant, Descendants } from \"../../hooks/use-descendants\"\nimport type { UseDisclosureProps } from \"../../hooks/use-disclosure\"\nimport type { UseCheckboxProps } from \"../checkbox\"\nimport { Children, useCallback, useRef, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useAsyncCallback } from \"../../hooks/use-async-callback\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useDisclosure } from \"../../hooks/use-disclosure\"\nimport {\n ariaAttr,\n assignRef,\n createContext,\n cx,\n dataAttr,\n filterEmpty,\n handlerAll,\n isArray,\n isInputElement,\n isUndefined,\n match,\n mergeRefs,\n runKeyAction,\n setAttribute,\n useIds,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nexport interface TreeControl {\n collapse: () => void\n expand: () => void\n}\n\ninterface TreeDescendantProps {\n expanded: boolean\n group: boolean\n id: string\n value: string\n query?: string\n}\n\nconst {\n DescendantsContext: TreeDescendantsContext,\n useDescendant: useTreeDescendant,\n useDescendants: useTreeDescendants,\n} = createDescendants<HTMLElement, TreeDescendantProps>()\n\nexport { TreeDescendantsContext, useTreeDescendant, useTreeDescendants }\n\ninterface TreeContext extends Omit<\n UseTreeReturn,\n \"descendants\" | \"getRootProps\"\n> {}\n\nconst [TreeContext, useTreeContext] = createContext<TreeContext>({\n name: \"TreeContext\",\n})\n\nexport { TreeContext, useTreeContext }\n\ninterface TreeItemContext extends Pick<\n UseTreeItemReturn,\n | \"branchOpen\"\n | \"groupOpen\"\n | \"level\"\n | \"onGroupClose\"\n | \"onGroupOpen\"\n | \"onGroupToggle\"\n | \"value\"\n> {}\n\nconst [TreeItemContext, useTreeItemContext] = createContext<TreeItemContext>({\n name: \"TreeItemContext\",\n strict: false,\n})\n\nexport { TreeItemContext, useTreeItemContext }\n\nexport interface UseTreeProps<\n Multiple extends boolean = false,\n> extends HTMLProps<\"ul\"> {\n /**\n * If `true`, the tree will allow checkable items.\n *\n * @default false\n */\n checkable?: boolean\n /**\n * The checked value of the tree.\n */\n checkedValue?: string[]\n /**\n * Ref of the tree callbacks.\n */\n controlRef?: RefObject<null | TreeControl>\n /**\n * The initial checked value of the tree.\n */\n defaultCheckedValue?: string[]\n /**\n * The initial expanded value of the tree.\n */\n defaultExpandedValue?: string[]\n /**\n * The initial selected value of the tree.\n */\n defaultSelectedValue?: Multiple extends true ? string[] : string\n /**\n * The expanded value of the tree.\n */\n expandedValue?: string[]\n /**\n * If `true`, the tree will allow multiple selection.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The selected value of the tree.\n */\n selectedValue?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when checked value changes.\n */\n onCheckedChange?: (value: string[]) => void\n /**\n * The callback invoked when expanded value changes.\n */\n onExpandedChange?: (value: string[]) => void\n /**\n * The callback invoked when selected value changes.\n */\n onSelectedChange?: (value: Multiple extends true ? string[] : string) => void\n}\n\nexport const useTree = <Multiple extends boolean = false>({\n checkable = false,\n checkedValue: checkedValueProp,\n children,\n controlRef,\n defaultCheckedValue = [],\n defaultExpandedValue = [],\n defaultSelectedValue,\n expandedValue: expandedValueProp,\n multiple,\n selectedValue: selectedValueProp,\n onCheckedChange: onCheckedChangeProp,\n onExpandedChange: onExpandedChangeProp,\n onSelectedChange: onSelectedChangeProp,\n ...rest\n}: UseTreeProps<Multiple> = {}) => {\n type MaybeSelectedValue = Multiple extends true ? string[] : string\n\n const [selectedValue, setSelectedValue] = useControllableState({\n defaultValue:\n defaultSelectedValue ?? ((multiple ? [] : \"\") as MaybeSelectedValue),\n value: selectedValueProp,\n onChange: onSelectedChangeProp,\n })\n const [checkedValue, onCheckedChange] = useControllableState({\n defaultValue: defaultCheckedValue,\n value: checkedValueProp,\n onChange: onCheckedChangeProp,\n })\n const [expandedValue, setExpandedValue] = useControllableState({\n defaultValue: defaultExpandedValue,\n value: expandedValueProp,\n onChange: onExpandedChangeProp,\n })\n const descendants = useTreeDescendants()\n const activeDescendant = useRef<Descendant<\n HTMLElement,\n TreeDescendantProps\n > | null>(null)\n const searchRef = useRef<{ value: string; omitValue?: string }>({\n omitValue: undefined,\n value: \"\",\n })\n const timeoutRef = useRef<any>(null)\n\n const onExpandAll = useCallback(() => {\n const values = descendants.enabledValues()\n const group = values.filter(({ group }) => group)\n const value = group.map(({ value }) => value)\n\n setExpandedValue(value)\n }, [descendants, setExpandedValue])\n\n const onCollapseAll = useCallback(() => {\n setExpandedValue([])\n }, [setExpandedValue])\n\n const onActiveDescendant = useCallback(\n (\n descendant?: Descendant<HTMLElement, TreeDescendantProps>,\n shouldFocus = true,\n ) => {\n if (!descendant) return\n\n descendants.values().forEach(({ node }) => {\n node.tabIndex = -1\n })\n\n activeDescendant.current = descendant\n descendant.node.tabIndex = 0\n\n if (shouldFocus) descendant.node.focus()\n },\n [descendants],\n )\n\n const onSearch = useCallback(\n (value: string, omitValue: string) => {\n clearTimeout(timeoutRef.current)\n\n searchRef.current.value += value\n\n if (!searchRef.current.omitValue) searchRef.current.omitValue = omitValue\n\n timeoutRef.current = setTimeout(() => {\n searchRef.current = { omitValue: undefined, value: \"\" }\n }, 400)\n\n const values = descendants\n .enabledValues({ expanded: true })\n .filter(\n (descendant) =>\n !isUndefined(descendant.value) &&\n descendant.value !== searchRef.current.omitValue,\n )\n const descendant = values.find(({ query, value }) =>\n match(query ?? value, searchRef.current.value, \"startsWith\"),\n )\n\n if (descendant) onActiveDescendant(descendant)\n },\n [descendants, onActiveDescendant],\n )\n\n const onSelectedChange = useCallback(\n (value: SetStateAction<string | string[]>) => {\n setSelectedValue(value as SetStateAction<MaybeSelectedValue>)\n },\n [setSelectedValue],\n )\n\n const onExpandedChange = useCallback(\n (value: string) => {\n setExpandedValue((prev) => {\n if (prev.includes(value)) {\n return prev.filter((prevValue) => prevValue !== value)\n } else {\n return [...prev, value]\n }\n })\n },\n [setExpandedValue],\n )\n\n useSafeLayoutEffect(() => {\n const value = isArray(selectedValue) ? selectedValue.at(0) : selectedValue\n const expandedDescendants = descendants.enabledValues({ expanded: true })\n\n if (value) {\n const descendant = expandedDescendants.find(\n (descendant) => value === descendant.value,\n )\n\n if (descendant) {\n onActiveDescendant(descendant, false)\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n }, [children])\n\n assignRef(controlRef, { collapse: onCollapseAll, expand: onExpandAll })\n\n const getRootProps: PropGetter<\"ul\"> = useCallback(\n (props) =>\n mergeProps(\n {\n \"aria-multiselectable\": ariaAttr(multiple || checkable),\n children,\n role: \"tree\",\n },\n rest,\n props,\n )(),\n [multiple, checkable, rest, children],\n )\n\n return {\n activeDescendant,\n checkable,\n checkedValue,\n descendants,\n expandedValue,\n multiple,\n selectedValue,\n getRootProps,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n }\n}\n\nexport type UseTreeReturn = ReturnType<typeof useTree>\n\nconst getRootDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const rootValue = segments.at(0)\n\n return descendants.enabledValues().find(({ value }) => value === rootValue)\n }\n\nconst getParentDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const parentValue = segments.slice(0, -1).join(\"/\")\n\n return descendants\n .enabledValues()\n .find(({ value }) => value === parentValue)\n }\n\nconst getChildDescendants =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const children = descendants\n .enabledValues()\n .filter((descendant) => descendant.value.startsWith(value + \"/\"))\n const values = children\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n return { children, values }\n }\n\nconst getParentValues = (value: string) => {\n const segments = value.split(\"/\")\n\n return segments\n .reduce<string[]>((prev, current) => {\n const prevValue = prev.at(-1)\n return prevValue ? [...prev, [prevValue, current].join(\"/\")] : [current]\n }, [])\n .toReversed()\n}\n\nconst getCheckbox = (node?: HTMLElement) => {\n const el = node?.querySelector(\"input[type='checkbox']\")\n\n return isInputElement(el) ? el : null\n}\n\nconst getAllChecked = (\n descendants: Descendant<HTMLElement, TreeDescendantProps>[],\n trulyValues?: string[],\n falsyValues?: string[],\n) => {\n const checked = descendants.map(({ node, value }) => {\n if (value && trulyValues?.includes(value)) return true\n if (value && falsyValues?.includes(value)) return false\n\n const checkbox = getCheckbox(node)\n\n return !!checkbox?.checked\n })\n\n const allChecked = !!checked.length && checked.every(Boolean)\n const indeterminate = checked.some(Boolean) && !allChecked\n\n return { allChecked, checked, indeterminate }\n}\n\nconst getRangeValues =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (start: string, end: string) => {\n const values = descendants.enabledValues()\n const [startIndex, endIndex] = [\n values.findIndex((descendant) => descendant.value === start),\n values.findIndex((descendant) => descendant.value === end),\n ].sort((a, b) => a - b)\n\n return values\n .slice(startIndex, endIndex! + 1)\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n .sort((a, b) => {\n if (a === start && b !== start) return -1\n if (a !== start && b === start) return 1\n\n return 0\n })\n }\n\nexport interface UseTreeItemProps\n extends HTMLProps<\"div\">, Omit<UseDisclosureProps, \"timing\"> {\n /**\n * If `true`, the tree item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The query to search for in the tree item.\n */\n query?: string\n /**\n * The value of the item.\n */\n value?: string\n /**\n * If provided, the tree item will be rendered as an async tree item.\n */\n asyncChildren?: () => Promise<ReactNode>\n}\n\nexport const useTreeItem = ({\n asyncChildren,\n children: childrenProp,\n defaultOpen,\n disabled = false,\n open: openProp,\n query,\n value: valueProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n}: UseTreeItemProps = {}) => {\n const context = useTreeItemContext()\n const {\n activeDescendant,\n checkable,\n checkedValue,\n expandedValue,\n multiple,\n selectedValue,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n } = useTreeContext()\n const [children, setChildren] = useState<ReactNode>(childrenProp)\n const [indeterminate, setIndeterminate] = useState(false)\n const [itemId, labelId, checkboxId] = useIds()\n const initialAsyncRef = useRef(false)\n const async = !!asyncChildren\n const group = async || Children.count(children) > 0\n const level: number = (context?.level ?? 0) + 1\n const value: string = filterEmpty([context?.value, valueProp]).join(\"/\")\n const nested = !!context?.value\n const selected = isArray(selectedValue)\n ? !!value && selectedValue.includes(value)\n : !!value && selectedValue === value\n const checked = !!value && checkedValue.includes(value)\n const defaultExpanded = !!value && expandedValue.includes(value)\n const {\n open: groupOpen,\n onClose,\n onOpen,\n } = useDisclosure({\n defaultOpen: defaultOpen ?? defaultExpanded,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const branchOpen: boolean[] = nested\n ? [...context.branchOpen, groupOpen]\n : [groupOpen]\n const { descendants, register } = useTreeDescendant({\n id: itemId!,\n disabled,\n expanded: branchOpen.slice(0, -1).every(Boolean),\n group,\n query,\n value,\n })\n\n const [groupLoading, onGroupChildren] = useAsyncCallback(async () => {\n const children = await asyncChildren?.()\n\n setChildren(children)\n }, [asyncChildren])\n\n const onSelect = useCallback(\n (\n ev: (\n | Partial<KeyboardEvent<HTMLElement>>\n | Partial<MouseEvent<HTMLElement>>\n ) & { value?: string } = {},\n ) => {\n const selectedValue = ev.value ?? value\n\n if (disabled || !selectedValue) return\n\n if (multiple) {\n onSelectedChange((prev) => {\n if (!isArray(prev)) return prev\n\n if (ev.ctrlKey || ev.metaKey) {\n if (prev.includes(selectedValue)) {\n return prev.filter((prevValue) => prevValue !== selectedValue)\n } else {\n return [...prev, selectedValue]\n }\n } else if (ev.shiftKey && prev[0]) {\n if (prev[0] === selectedValue) return prev\n\n return getRangeValues(descendants)(prev[0], selectedValue)\n } else {\n return [selectedValue]\n }\n })\n } else {\n onSelectedChange(selectedValue)\n }\n },\n [descendants, disabled, multiple, onSelectedChange, value],\n )\n\n const onGroupOpen = useCallback(() => {\n if (disabled || !value) return\n\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n onExpandedChange(value)\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n onExpandedChange(value)\n }\n }, [disabled, async, onGroupChildren, onOpen, onExpandedChange, value])\n\n const onGroupClose = useCallback(() => {\n if (disabled || !value) return\n\n onClose()\n onExpandedChange(value)\n }, [disabled, onClose, onExpandedChange, value])\n\n const onGroupToggle = useCallback(() => {\n if (groupOpen) {\n onGroupClose()\n } else {\n onGroupOpen()\n }\n }, [groupOpen, onGroupClose, onGroupOpen])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLElement>) => {\n if (disabled || !value) return\n\n runKeyAction(ev, {\n a: () => {\n if (!multiple || !(ev.ctrlKey || ev.metaKey)) return\n\n const values = descendants\n .enabledValues()\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n onSelectedChange(values)\n },\n ArrowDown: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onExpandAll()\n } else {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n ArrowLeft: () => {\n if (group && groupOpen) {\n onGroupClose()\n } else if (nested) {\n const descendant = getParentDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n }\n },\n ArrowRight: () => {\n if (!group) return\n\n if (groupOpen) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n } else {\n if (!groupLoading) onGroupOpen()\n }\n },\n ArrowUp: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onCollapseAll()\n\n if (!nested) return\n\n const descendant = getRootDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n } else {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n End: () => {\n const descendant = descendants\n .enabledValues({ expanded: true })\n .at(-1)\n\n onActiveDescendant(descendant)\n },\n Enter: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n Home: () => {\n const descendant = descendants.enabledValues({ expanded: true }).at(0)\n\n onActiveDescendant(descendant)\n },\n Space: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n })\n\n if (ev.key.length !== 1) return\n if (ev.ctrlKey || ev.metaKey || ev.altKey) return\n\n ev.preventDefault()\n\n onSearch(ev.key, query ?? value)\n },\n [\n activeDescendant,\n descendants,\n disabled,\n group,\n groupLoading,\n groupOpen,\n multiple,\n nested,\n onActiveDescendant,\n onCollapseAll,\n onExpandAll,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n onSearch,\n onSelect,\n onSelectedChange,\n query,\n value,\n ],\n )\n\n const onItemClick = useCallback(\n (ev: MouseEvent<HTMLLIElement>) => {\n ev.stopPropagation()\n\n if (disabled || !value) return\n\n if (group && !groupLoading)\n if (!ev.ctrlKey && !ev.metaKey && !ev.shiftKey) onGroupToggle()\n\n onSelect(ev)\n },\n [disabled, group, groupLoading, onGroupToggle, onSelect, value],\n )\n\n const onCheckboxChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (disabled || !value) return\n\n ev.stopPropagation()\n\n if (group) setIndeterminate(false)\n\n onCheckedChange((prev) => {\n const target = [value]\n\n if (group) {\n const { values } = getChildDescendants(descendants)(value)\n\n target.push(...values)\n }\n\n if (nested) {\n const parentValues = getParentValues(context.value)\n const parentTarget: string[] = []\n\n parentValues.forEach((parentValue) => {\n const { children } = getChildDescendants(descendants)(parentValue)\n const { allChecked } = getAllChecked(\n children,\n [...parentTarget, ...(ev.target.checked ? target : [])],\n !ev.target.checked ? target : [],\n )\n\n if (allChecked) parentTarget.push(parentValue)\n })\n\n if (!ev.target.checked) parentTarget.push(...parentValues)\n\n target.push(...parentTarget)\n }\n\n if (ev.target.checked) {\n return [...new Set([...prev, ...target])]\n } else {\n return prev.filter((prevValue) => !target.includes(prevValue))\n }\n })\n },\n [disabled, group, onCheckedChange, value, nested, descendants, context],\n )\n\n useSafeLayoutEffect(() => {\n if (defaultExpanded) {\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n }\n } else {\n onClose()\n }\n }, [async, defaultExpanded, onClose, onGroupChildren, onOpen])\n\n useSafeLayoutEffect(() => {\n if (!group || !checkable) return\n\n const { children } = getChildDescendants(descendants)(value)\n const { indeterminate } = getAllChecked(children)\n\n setIndeterminate(indeterminate)\n }, [checkedValue])\n\n useSafeLayoutEffect(() => {\n if (!checkable) return\n\n const { node } = getParentDescendant(descendants)(value) ?? {}\n const checkbox = getCheckbox(node)\n\n if (!checkbox) return\n\n const cleanup = setAttribute(checkbox, \"aria-controls\", checkboxId)\n\n return cleanup\n }, [checkable, descendants])\n\n const getItemProps: PropGetter<\"li\"> = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: itemId,\n ref: mergeRefs(ref, register),\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"aria-level\": level,\n \"aria-selected\": ariaAttr(selected),\n \"data-disabled\": dataAttr(disabled),\n role: \"treeitem\",\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onItemClick),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [\n itemId,\n register,\n disabled,\n labelId,\n level,\n selected,\n onItemClick,\n onKeyDown,\n ],\n )\n\n const getGroupItemProps: PropGetter<\"li\"> = useCallback(\n (props = {}) => getItemProps({ \"aria-expanded\": groupOpen, ...props }),\n [getItemProps, groupOpen],\n )\n\n const getIndicatorProps: PropGetter<\"svg\"> = useCallback(\n (props) => ({\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-expanded\": groupOpen,\n \"aria-hidden\": true,\n \"data-disabled\": dataAttr(disabled),\n \"data-loading\": dataAttr(groupLoading),\n \"data-selected\": dataAttr(selected),\n role: \"presentation\",\n ...props,\n }),\n [disabled, groupOpen, selected, groupLoading],\n )\n\n const getCheckboxProps: PropGetter<UseCheckboxProps> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: checkboxId,\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-selected\": dataAttr(selected),\n checked,\n disabled,\n indeterminate,\n tabIndex: -1,\n ...props,\n onChange: handlerAll(props.onChange, onCheckboxChange),\n }),\n [\n checkboxId,\n labelId,\n selected,\n checked,\n disabled,\n indeterminate,\n onCheckboxChange,\n ],\n )\n\n const getGroupProps: PropGetter<\"ul\"> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n \"aria-busy\": ariaAttr(groupLoading),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-disabled\": dataAttr(disabled),\n role: \"group\",\n ...props,\n }),\n [labelId, disabled, groupLoading],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props = {}) => ({ id: labelId, ...props }),\n [labelId],\n )\n\n return {\n branchOpen,\n checked,\n children,\n disabled,\n group,\n groupLoading,\n groupOpen,\n indeterminate,\n level,\n props: rest,\n selected,\n value,\n getCheckboxProps,\n getGroupItemProps,\n getGroupProps,\n getIndicatorProps,\n getItemProps,\n getLabelProps,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n }\n}\n\nexport type UseTreeItemReturn = ReturnType<typeof useTreeItem>\n"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import "../collapse/index.js";
|
|
|
9
9
|
import "../../index.js";
|
|
10
10
|
import { AccordionStyle } from "./accordion.style.js";
|
|
11
11
|
import { UseAccordionItemProps, UseAccordionProps } from "./use-accordion.js";
|
|
12
|
-
import * as
|
|
12
|
+
import * as react313 from "react";
|
|
13
13
|
|
|
14
14
|
//#region src/components/accordion/accordion.d.ts
|
|
15
15
|
interface AccordionCallBackProps {
|
|
@@ -33,7 +33,7 @@ interface AccordionRootProps extends Omit<HTMLStyledProps, "onChange">, ThemePro
|
|
|
33
33
|
*/
|
|
34
34
|
items?: AccordionItem[];
|
|
35
35
|
}
|
|
36
|
-
declare const AccordionPropsContext:
|
|
36
|
+
declare const AccordionPropsContext: react313.Context<Partial<AccordionRootProps> | undefined>, useAccordionPropsContext: () => Partial<AccordionRootProps> | undefined;
|
|
37
37
|
/**
|
|
38
38
|
* `Accordion` is a component for a list that displays information in an expandable or collapsible manner.
|
|
39
39
|
*
|
|
@@ -3,7 +3,7 @@ import { CSSModifierObject, CSSPropObject, CSSSlotObject } from "../../core/css/
|
|
|
3
3
|
import "../../index.js";
|
|
4
4
|
|
|
5
5
|
//#region src/components/accordion/accordion.style.d.ts
|
|
6
|
-
declare const accordionStyle: ComponentSlotStyle<"button" | "panel" | "icon" | "
|
|
6
|
+
declare const accordionStyle: ComponentSlotStyle<"button" | "panel" | "icon" | "root" | "item", CSSPropObject<CSSSlotObject<"button" | "panel" | "icon" | "root" | "item">>, CSSModifierObject<CSSSlotObject<"button" | "panel" | "icon" | "root" | "item">>, {
|
|
7
7
|
panel: {
|
|
8
8
|
button: {
|
|
9
9
|
rounded: "l2";
|
|
@@ -2,10 +2,10 @@ import { HTMLProps, PropGetter } from "../../core/components/index.types.js";
|
|
|
2
2
|
import "../../core/index.js";
|
|
3
3
|
import { Descendant } from "../../hooks/use-descendants/index.js";
|
|
4
4
|
import "../../index.js";
|
|
5
|
-
import * as
|
|
5
|
+
import * as react314 from "react";
|
|
6
6
|
|
|
7
7
|
//#region src/components/accordion/use-accordion.d.ts
|
|
8
|
-
declare const AccordionDescendantsContext:
|
|
8
|
+
declare const AccordionDescendantsContext: react314.Context<{
|
|
9
9
|
active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
|
|
10
10
|
count: (props?: Partial<{}> | undefined) => number;
|
|
11
11
|
destroy: () => void;
|
|
@@ -24,7 +24,7 @@ declare const AccordionDescendantsContext: react1021.Context<{
|
|
|
24
24
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
25
25
|
register: (props?: {
|
|
26
26
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
27
|
-
} | undefined) =>
|
|
27
|
+
} | undefined) => react314.RefCallback<HTMLButtonElement>;
|
|
28
28
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
29
29
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
30
30
|
values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
|
|
@@ -50,12 +50,12 @@ declare const AccordionDescendantsContext: react1021.Context<{
|
|
|
50
50
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
51
51
|
register: (props?: {
|
|
52
52
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
53
|
-
} | undefined) =>
|
|
53
|
+
} | undefined) => react314.RefCallback<HTMLButtonElement>;
|
|
54
54
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
55
55
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
56
56
|
values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
|
|
57
57
|
};
|
|
58
|
-
register:
|
|
58
|
+
register: react314.RefCallback<HTMLButtonElement>;
|
|
59
59
|
}, useAccordionDescendants: () => {
|
|
60
60
|
active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
|
|
61
61
|
count: (props?: Partial<{}> | undefined) => number;
|
|
@@ -75,15 +75,15 @@ declare const AccordionDescendantsContext: react1021.Context<{
|
|
|
75
75
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
76
76
|
register: (props?: {
|
|
77
77
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
78
|
-
} | undefined) =>
|
|
78
|
+
} | undefined) => react314.RefCallback<HTMLButtonElement>;
|
|
79
79
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
80
80
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
81
81
|
values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
|
|
82
82
|
};
|
|
83
83
|
interface AccordionContext extends Omit<UseAccordionReturn, "descendants" | "getRootProps"> {}
|
|
84
|
-
declare const AccordionContext:
|
|
84
|
+
declare const AccordionContext: react314.Context<AccordionContext>, useAccordionContext: () => AccordionContext;
|
|
85
85
|
interface AccordionItemContext extends Omit<UseAccordionItemReturn, "getItemProps"> {}
|
|
86
|
-
declare const AccordionItemContext:
|
|
86
|
+
declare const AccordionItemContext: react314.Context<AccordionItemContext>, useAccordionItemContext: () => AccordionItemContext;
|
|
87
87
|
interface UseAccordionProps extends Omit<HTMLProps, "onChange"> {
|
|
88
88
|
/**
|
|
89
89
|
* The initial index(es) of the accordion item to expand.
|
|
@@ -137,7 +137,7 @@ declare const useAccordion: ({
|
|
|
137
137
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
138
138
|
register: (props?: {
|
|
139
139
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
140
|
-
} | undefined) =>
|
|
140
|
+
} | undefined) => react314.RefCallback<HTMLButtonElement>;
|
|
141
141
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
142
142
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
143
143
|
values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
|
|
@@ -145,8 +145,8 @@ declare const useAccordion: ({
|
|
|
145
145
|
focusedIndex: number;
|
|
146
146
|
index: number | number[];
|
|
147
147
|
multiple: boolean | undefined;
|
|
148
|
-
setFocusedIndex:
|
|
149
|
-
setIndex:
|
|
148
|
+
setFocusedIndex: react314.Dispatch<react314.SetStateAction<number>>;
|
|
149
|
+
setIndex: react314.Dispatch<react314.SetStateAction<number | number[]>>;
|
|
150
150
|
toggle: boolean | undefined;
|
|
151
151
|
getRootProps: PropGetter<"div", undefined, undefined>;
|
|
152
152
|
};
|
|
@@ -7,7 +7,7 @@ import { UsePopupAnimationProps } from "../popover/popover.js";
|
|
|
7
7
|
import "../popover/index.js";
|
|
8
8
|
import { UseActionBarProps } from "./use-action-bar.js";
|
|
9
9
|
import "../../index.js";
|
|
10
|
-
import * as
|
|
10
|
+
import * as react312 from "react";
|
|
11
11
|
import { PropsWithChildren, ReactNode } from "react";
|
|
12
12
|
|
|
13
13
|
//#region src/components/action-bar/action-bar.d.ts
|
|
@@ -29,7 +29,7 @@ interface ActionBarRootProps extends Omit<HTMLStyledProps, "content">, ThemeProp
|
|
|
29
29
|
*/
|
|
30
30
|
onCloseComplete?: () => void;
|
|
31
31
|
}
|
|
32
|
-
declare const ActionBarPropsContext:
|
|
32
|
+
declare const ActionBarPropsContext: react312.Context<Partial<ActionBarRootProps> | undefined>, useActionBarPropsContext: () => Partial<ActionBarRootProps> | undefined;
|
|
33
33
|
/**
|
|
34
34
|
* `ActionBar` is a component that is used to display a bottom action bar with a set of actions.
|
|
35
35
|
*
|
|
@@ -5,7 +5,7 @@ import { HTMLMotionProps } from "../motion/index.types.js";
|
|
|
5
5
|
import "../motion/index.js";
|
|
6
6
|
import { AiryStyle } from "./airy.style.js";
|
|
7
7
|
import "../../index.js";
|
|
8
|
-
import * as
|
|
8
|
+
import * as react326 from "react";
|
|
9
9
|
import { ReactNode } from "react";
|
|
10
10
|
|
|
11
11
|
//#region src/components/airy/airy.d.ts
|
|
@@ -57,7 +57,7 @@ interface AiryProps extends Omit<HTMLMotionProps<"button">, "onChange">, ThemePr
|
|
|
57
57
|
*/
|
|
58
58
|
onChange?: (value: KeyframeIdent) => void;
|
|
59
59
|
}
|
|
60
|
-
declare const AiryPropsContext:
|
|
60
|
+
declare const AiryPropsContext: react326.Context<Partial<AiryProps> | undefined>, useAiryPropsContext: () => Partial<AiryProps> | undefined;
|
|
61
61
|
/**
|
|
62
62
|
* `Airy` is a component that creates an airy animation, switching between two elements when one is clicked.
|
|
63
63
|
*
|
|
@@ -9,7 +9,7 @@ import "../loading/index.js";
|
|
|
9
9
|
import { StatusScheme } from "../status/status.js";
|
|
10
10
|
import "../status/index.js";
|
|
11
11
|
import "../../index.js";
|
|
12
|
-
import * as
|
|
12
|
+
import * as react311 from "react";
|
|
13
13
|
|
|
14
14
|
//#region src/components/alert/alert.d.ts
|
|
15
15
|
interface AlertRootProps extends HTMLStyledProps, ThemeProps<AlertStyle> {
|
|
@@ -20,7 +20,7 @@ interface AlertRootProps extends HTMLStyledProps, ThemeProps<AlertStyle> {
|
|
|
20
20
|
*/
|
|
21
21
|
status?: StatusScheme;
|
|
22
22
|
}
|
|
23
|
-
declare const AlertPropsContext:
|
|
23
|
+
declare const AlertPropsContext: react311.Context<Partial<AlertRootProps> | undefined>, useAlertPropsContext: () => Partial<AlertRootProps> | undefined;
|
|
24
24
|
/**
|
|
25
25
|
* `Alert` is a component that conveys information to the user.
|
|
26
26
|
*
|
|
@@ -5,7 +5,7 @@ import { AlphaSliderStyle } from "./alpha-slider.style.js";
|
|
|
5
5
|
import { HueSliderOverlayProps, HueSliderRootProps, HueSliderThumbProps, HueSliderTrackProps } from "../hue-slider/hue-slider.js";
|
|
6
6
|
import "../hue-slider/index.js";
|
|
7
7
|
import "../../index.js";
|
|
8
|
-
import * as
|
|
8
|
+
import * as react310 from "react";
|
|
9
9
|
|
|
10
10
|
//#region src/components/alpha-slider/alpha-slider.d.ts
|
|
11
11
|
interface AlphaSliderRootProps extends WithoutThemeProps<Omit<HueSliderRootProps, "color" | "max" | "step" | "thumbProps" | "trackProps">, AlphaSliderStyle> {
|
|
@@ -38,7 +38,7 @@ interface AlphaSliderRootProps extends WithoutThemeProps<Omit<HueSliderRootProps
|
|
|
38
38
|
*/
|
|
39
39
|
trackProps?: AlphaSliderTrackProps;
|
|
40
40
|
}
|
|
41
|
-
declare const AlphaSliderPropsContext:
|
|
41
|
+
declare const AlphaSliderPropsContext: react310.Context<Partial<AlphaSliderRootProps> | undefined>, useAlphaSliderPropsContext: () => Partial<AlphaSliderRootProps> | undefined;
|
|
42
42
|
/**
|
|
43
43
|
* `AlphaSlider` is a component used to allow the user to select color transparency.
|
|
44
44
|
*
|
|
@@ -2,7 +2,7 @@ import { StyleValue } from "../../core/css/index.types.js";
|
|
|
2
2
|
import { Component, HTMLStyledProps } from "../../core/components/index.types.js";
|
|
3
3
|
import "../../core/index.js";
|
|
4
4
|
import "../../index.js";
|
|
5
|
-
import * as
|
|
5
|
+
import * as react309 from "react";
|
|
6
6
|
|
|
7
7
|
//#region src/components/aspect-ratio/aspect-ratio.d.ts
|
|
8
8
|
interface AspectRatioProps extends HTMLStyledProps {
|
|
@@ -13,7 +13,7 @@ interface AspectRatioProps extends HTMLStyledProps {
|
|
|
13
13
|
*/
|
|
14
14
|
ratio?: StyleValue<number>;
|
|
15
15
|
}
|
|
16
|
-
declare const AspectRatioPropsContext:
|
|
16
|
+
declare const AspectRatioPropsContext: react309.Context<Partial<AspectRatioProps> | undefined>, useAspectRatioPropsContext: () => Partial<AspectRatioProps> | undefined;
|
|
17
17
|
/**
|
|
18
18
|
* `AspectRatio` is a component for embedding things like videos and maps while maintaining the aspect ratio.
|
|
19
19
|
*
|