@basic-ui/core 0.0.59 → 0.0.61
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/build/cjs/index.js.map +1 -1
- package/build/esm/Accordion/AccordionBody.d.ts.map +1 -1
- package/build/esm/Accordion/AccordionBody.js +6 -26
- package/build/esm/Accordion/AccordionBody.js.map +1 -1
- package/build/esm/Accordion/AccordionHeader.d.ts.map +1 -1
- package/build/esm/Accordion/AccordionHeader.js +21 -69
- package/build/esm/Accordion/AccordionHeader.js.map +1 -1
- package/build/esm/Accordion/AccordionItem.d.ts.map +1 -1
- package/build/esm/Accordion/AccordionItem.js +31 -18
- package/build/esm/Accordion/AccordionItem.js.map +1 -1
- package/build/esm/Accordion/context.d.ts +0 -8
- package/build/esm/Accordion/context.d.ts.map +1 -1
- package/build/esm/Accordion/context.js +0 -11
- package/build/esm/Accordion/context.js.map +1 -1
- package/build/esm/Accordion/scopeQuery.d.ts +1 -0
- package/build/esm/Accordion/scopeQuery.d.ts.map +1 -1
- package/build/esm/Accordion/scopeQuery.js +3 -0
- package/build/esm/Accordion/scopeQuery.js.map +1 -1
- package/build/esm/Collapsible/Collapsible.d.ts +13 -0
- package/build/esm/Collapsible/Collapsible.d.ts.map +1 -0
- package/build/esm/Collapsible/Collapsible.js +53 -0
- package/build/esm/Collapsible/Collapsible.js.map +1 -0
- package/build/esm/Collapsible/CollapsiblePanel.d.ts +10 -0
- package/build/esm/Collapsible/CollapsiblePanel.d.ts.map +1 -0
- package/build/esm/Collapsible/CollapsiblePanel.js +85 -0
- package/build/esm/Collapsible/CollapsiblePanel.js.map +1 -0
- package/build/esm/Collapsible/CollapsibleTrigger.d.ts +11 -0
- package/build/esm/Collapsible/CollapsibleTrigger.d.ts.map +1 -0
- package/build/esm/Collapsible/CollapsibleTrigger.js +51 -0
- package/build/esm/Collapsible/CollapsibleTrigger.js.map +1 -0
- package/build/esm/Collapsible/context.d.ts +16 -0
- package/build/esm/Collapsible/context.d.ts.map +1 -0
- package/build/esm/Collapsible/context.js +11 -0
- package/build/esm/Collapsible/context.js.map +1 -0
- package/build/esm/Collapsible/index.d.ts +4 -0
- package/build/esm/Collapsible/index.d.ts.map +1 -0
- package/build/esm/Collapsible/index.js +4 -0
- package/build/esm/Collapsible/index.js.map +1 -0
- package/build/esm/Menu/Menu.d.ts +3 -2
- package/build/esm/Menu/Menu.d.ts.map +1 -1
- package/build/esm/Menu/Menu.js +64 -4
- package/build/esm/Menu/Menu.js.map +1 -1
- package/build/esm/Menu/MenuButton.d.ts.map +1 -1
- package/build/esm/Menu/MenuButton.js +85 -8
- package/build/esm/Menu/MenuButton.js.map +1 -1
- package/build/esm/Menu/MenuItem.d.ts.map +1 -1
- package/build/esm/Menu/MenuItem.js +16 -4
- package/build/esm/Menu/MenuItem.js.map +1 -1
- package/build/esm/Menu/MenuList.d.ts.map +1 -1
- package/build/esm/Menu/MenuList.js +47 -12
- package/build/esm/Menu/MenuList.js.map +1 -1
- package/build/esm/Menu/MenuPopover.d.ts.map +1 -1
- package/build/esm/Menu/MenuPopover.js +12 -1
- package/build/esm/Menu/MenuPopover.js.map +1 -1
- package/build/esm/Menu/MenuSubmenuTrigger.d.ts +8 -0
- package/build/esm/Menu/MenuSubmenuTrigger.d.ts.map +1 -0
- package/build/esm/Menu/MenuSubmenuTrigger.js +131 -0
- package/build/esm/Menu/MenuSubmenuTrigger.js.map +1 -0
- package/build/esm/Menu/context.d.ts +13 -3
- package/build/esm/Menu/context.d.ts.map +1 -1
- package/build/esm/Menu/context.js +1 -0
- package/build/esm/Menu/context.js.map +1 -1
- package/build/esm/Menu/index.d.ts +3 -0
- package/build/esm/Menu/index.d.ts.map +1 -1
- package/build/esm/Menu/index.js +2 -0
- package/build/esm/Menu/index.js.map +1 -1
- package/build/esm/Menu/scope.d.ts +1 -0
- package/build/esm/Menu/scope.d.ts.map +1 -1
- package/build/esm/Menu/scope.js +2 -1
- package/build/esm/Menu/scope.js.map +1 -1
- package/build/esm/MenuBar/MenuBar.d.ts +11 -0
- package/build/esm/MenuBar/MenuBar.d.ts.map +1 -0
- package/build/esm/MenuBar/MenuBar.js +153 -0
- package/build/esm/MenuBar/MenuBar.js.map +1 -0
- package/build/esm/MenuBar/context.d.ts +29 -0
- package/build/esm/MenuBar/context.d.ts.map +1 -0
- package/build/esm/MenuBar/context.js +7 -0
- package/build/esm/MenuBar/context.js.map +1 -0
- package/build/esm/MenuBar/index.d.ts +2 -0
- package/build/esm/MenuBar/index.d.ts.map +1 -0
- package/build/esm/MenuBar/index.js +2 -0
- package/build/esm/MenuBar/index.js.map +1 -0
- package/build/esm/Slider/Slider.d.ts +47 -1
- package/build/esm/Slider/Slider.d.ts.map +1 -1
- package/build/esm/Slider/Slider.js +91 -5
- package/build/esm/Slider/Slider.js.map +1 -1
- package/build/esm/ToggleGroup/ToggleGroup.d.ts +40 -0
- package/build/esm/ToggleGroup/ToggleGroup.d.ts.map +1 -0
- package/build/esm/ToggleGroup/ToggleGroup.js +113 -0
- package/build/esm/ToggleGroup/ToggleGroup.js.map +1 -0
- package/build/esm/ToggleGroup/ToggleGroupContext.d.ts +10 -0
- package/build/esm/ToggleGroup/ToggleGroupContext.d.ts.map +1 -0
- package/build/esm/ToggleGroup/ToggleGroupContext.js +6 -0
- package/build/esm/ToggleGroup/ToggleGroupContext.js.map +1 -0
- package/build/esm/ToggleGroup/index.d.ts +3 -0
- package/build/esm/ToggleGroup/index.d.ts.map +1 -0
- package/build/esm/ToggleGroup/index.js +3 -0
- package/build/esm/ToggleGroup/index.js.map +1 -0
- package/build/esm/Tooltip/Tooltip.d.ts.map +1 -1
- package/build/esm/Tooltip/Tooltip.js +2 -2
- package/build/esm/Tooltip/Tooltip.js.map +1 -1
- package/build/esm/Tree/Tree.d.ts +3 -0
- package/build/esm/Tree/Tree.d.ts.map +1 -0
- package/build/esm/Tree/Tree.js +730 -0
- package/build/esm/Tree/Tree.js.map +1 -0
- package/build/esm/Tree/TreeHeader.d.ts +3 -0
- package/build/esm/Tree/TreeHeader.d.ts.map +1 -0
- package/build/esm/Tree/TreeHeader.js +5 -0
- package/build/esm/Tree/TreeHeader.js.map +1 -0
- package/build/esm/Tree/TreeItem.d.ts +3 -0
- package/build/esm/Tree/TreeItem.d.ts.map +1 -0
- package/build/esm/Tree/TreeItem.js +5 -0
- package/build/esm/Tree/TreeItem.js.map +1 -0
- package/build/esm/Tree/TreeItemContent.d.ts +3 -0
- package/build/esm/Tree/TreeItemContent.d.ts.map +1 -0
- package/build/esm/Tree/TreeItemContent.js +69 -0
- package/build/esm/Tree/TreeItemContent.js.map +1 -0
- package/build/esm/Tree/TreeSection.d.ts +3 -0
- package/build/esm/Tree/TreeSection.d.ts.map +1 -0
- package/build/esm/Tree/TreeSection.js +5 -0
- package/build/esm/Tree/TreeSection.js.map +1 -0
- package/build/esm/Tree/collection.d.ts +18 -0
- package/build/esm/Tree/collection.d.ts.map +1 -0
- package/build/esm/Tree/collection.js +252 -0
- package/build/esm/Tree/collection.js.map +1 -0
- package/build/esm/Tree/context.d.ts +3 -0
- package/build/esm/Tree/context.d.ts.map +1 -0
- package/build/esm/Tree/context.js +3 -0
- package/build/esm/Tree/context.js.map +1 -0
- package/build/esm/Tree/index.d.ts +8 -0
- package/build/esm/Tree/index.d.ts.map +1 -0
- package/build/esm/Tree/index.js +7 -0
- package/build/esm/Tree/index.js.map +1 -0
- package/build/esm/Tree/types.d.ts +128 -0
- package/build/esm/Tree/types.d.ts.map +1 -0
- package/build/esm/Tree/types.js +2 -0
- package/build/esm/Tree/types.js.map +1 -0
- package/build/esm/hooks/index.d.ts +1 -0
- package/build/esm/hooks/index.d.ts.map +1 -1
- package/build/esm/hooks/index.js +1 -0
- package/build/esm/hooks/index.js.map +1 -1
- package/build/esm/hooks/useTransitionStatus.d.ts +7 -0
- package/build/esm/hooks/useTransitionStatus.d.ts.map +1 -0
- package/build/esm/hooks/useTransitionStatus.js +48 -0
- package/build/esm/hooks/useTransitionStatus.js.map +1 -0
- package/build/esm/index.d.ts +5 -0
- package/build/esm/index.d.ts.map +1 -1
- package/build/esm/index.js +5 -0
- package/build/esm/index.js.map +1 -1
- package/build/esm/toggle/Toggle.d.ts +28 -0
- package/build/esm/toggle/Toggle.d.ts.map +1 -0
- package/build/esm/toggle/Toggle.js +55 -0
- package/build/esm/toggle/Toggle.js.map +1 -0
- package/build/esm/toggle/index.d.ts +2 -0
- package/build/esm/toggle/index.d.ts.map +1 -0
- package/build/esm/toggle/index.js +2 -0
- package/build/esm/toggle/index.js.map +1 -0
- package/build/esm/utils/assign-ref.d.ts +3 -3
- package/build/esm/utils/assign-ref.d.ts.map +1 -1
- package/build/esm/utils/assign-ref.js +1 -1
- package/build/esm/utils/assign-ref.js.map +1 -1
- package/build/tsconfig-build.tsbuildinfo +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -4
- package/src/Accordion/AccordionBody.tsx +6 -35
- package/src/Accordion/AccordionHeader.tsx +29 -103
- package/src/Accordion/AccordionItem.tsx +40 -29
- package/src/Accordion/context.ts +0 -18
- package/src/Accordion/scopeQuery.ts +4 -0
- package/src/Collapsible/Collapsible.story.tsx +153 -0
- package/src/Collapsible/Collapsible.tsx +79 -0
- package/src/Collapsible/CollapsiblePanel.tsx +103 -0
- package/src/Collapsible/CollapsibleTrigger.tsx +60 -0
- package/src/Collapsible/context.ts +28 -0
- package/src/Collapsible/index.ts +3 -0
- package/src/Menu/Menu.story.tsx +70 -1
- package/src/Menu/Menu.tsx +141 -65
- package/src/Menu/MenuButton.tsx +115 -9
- package/src/Menu/MenuItem.tsx +20 -3
- package/src/Menu/MenuList.tsx +50 -13
- package/src/Menu/MenuPopover.tsx +12 -2
- package/src/Menu/MenuSubmenuTrigger.tsx +167 -0
- package/src/Menu/context.ts +20 -10
- package/src/Menu/index.ts +3 -0
- package/src/Menu/scope.ts +4 -1
- package/src/Menu/styles.css +57 -22
- package/src/MenuBar/MenuBar.story.tsx +92 -0
- package/src/MenuBar/MenuBar.tsx +236 -0
- package/src/MenuBar/context.ts +46 -0
- package/src/MenuBar/index.ts +1 -0
- package/src/MenuBar/styles.css +78 -0
- package/src/Slider/Slider.story.tsx +1 -1
- package/src/Slider/Slider.tsx +145 -8
- package/src/Toggle/Toggle.story.tsx +42 -0
- package/src/Toggle/Toggle.tsx +95 -0
- package/src/Toggle/index.ts +1 -0
- package/src/Toggle/styles.css +39 -0
- package/src/ToggleGroup/ToggleGroup.story.tsx +86 -0
- package/src/ToggleGroup/ToggleGroup.tsx +185 -0
- package/src/ToggleGroup/ToggleGroupContext.ts +17 -0
- package/src/ToggleGroup/index.ts +2 -0
- package/src/ToggleGroup/styles.css +66 -0
- package/src/Tooltip/Tooltip.tsx +4 -4
- package/src/Tree/Tree.story.tsx +221 -0
- package/src/Tree/Tree.tsx +1081 -0
- package/src/Tree/TreeHeader.tsx +9 -0
- package/src/Tree/TreeItem.tsx +9 -0
- package/src/Tree/TreeItemContent.tsx +91 -0
- package/src/Tree/TreeSection.tsx +9 -0
- package/src/Tree/collection.tsx +371 -0
- package/src/Tree/context.ts +6 -0
- package/src/Tree/index.ts +7 -0
- package/src/Tree/styles.css +135 -0
- package/src/Tree/types.ts +161 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useTransitionStatus.ts +65 -0
- package/src/index.ts +5 -0
- package/src/utils/assign-ref.ts +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tree.js","names":["forwardRef","useCallback","useEffect","useId","useMemo","useRef","useState","createElement","_createElement","flattenAllItems","parseTreeChildren","shouldRenderLoadingRow","useTreeCollection","TreeItemRenderContext","assignMultipleRefs","wrapEvent","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","TYPEAHEAD_TIMEOUT","Tree","props","forwardedRef","as","Comp","innerAs","children","selectionMode","selectionBehavior","selectedKeys","selectedKeysProp","defaultSelectedKeys","onSelectionChange","disallowEmptySelection","disabledKeys","disabledKeysProp","disabledBehavior","expandedKeys","expandedKeysProp","defaultExpandedKeys","onExpandedChange","autoFocus","onAction","keyboardNavigationBehavior","escapeKeyBehavior","shouldFocusWrap","disallowTypeAhead","disallowSelectAll","direction","directionProp","renderEmptyState","renderLoadingState","renderedRowIndices","onVisibleRowsChange","onFocusedKeyChange","renderRow","onKeyDown","onFocus","onBlur","onMouseDown","id","idProp","tabIndex","otherProps","generatedId","treeId","rootRef","itemRefs","Map","typeaheadStringRef","typeaheadTimeoutRef","undefined","isFocused","setFocused","isFocusVisible","setFocusVisible","focusedKey","setFocusedKey","pressedKey","setPressedKey","lastSelectedKeyRef","Set","parsedTree","allItems","allItemKeys","map","item","key","expandableKeys","filter","hasChildItems","childItems","length","uncontrolledExpandedKeys","setUncontrolledExpandedKeys","makeKeySet","uncontrolledSelectedKeys","setUncontrolledSelectedKeys","treeCollection","visibleItems","visibleRows","focusableItems","isItemDisabled","document","dir","expandKey","collapseKey","setExpandedKeys","keys","setSelectedKeys","getItemByKey","find","canSelectItem","focusItem","rowIndex","findIndex","row","type","requestAnimationFrame","current","get","focus","preventScroll","updateSelection","event","options","next","isSelected","has","delete","range","some","visibleItem","addRangeToSelection","candidate","forceToggle","ctrlKey","metaKey","size","add","toggleExpanded","navigateByIndex","currentKey","delta","currentIndex","nextIndex","navigateToEdge","edge","handleTypeahead","altKey","preventDefault","toLocaleLowerCase","slice","clearTimeout","setTimeout","search","i","index","textValue","startsWith","handleKeyDown","target","Node","contains","stopPropagation","shiftKey","isInteractionDisabled","handleFocus","firstVisibleSelectedKey","handleBlur","relatedTarget","handleMouseDown","process","env","NODE_ENV","console","warn","renderState","renderItem","arguments","isDisabled","isExpanded","rowId","sanitizeId","keyString","rowProps","getItemDOMProps","canSelect","itemOnClick","onClick","itemOnDoubleClick","onDoubleClick","itemOnFocus","itemOnKeyDownCapture","onKeyDownCapture","itemOnMouseDown","itemOnMouseUp","onMouseUp","itemOnMouseLeave","onMouseLeave","itemOnKeyDown","contextValue","toggleSelection","handleRowKeyDownCapture","activeElement","getActiveElement","parentKey","HTMLElement","focusables","getFocusableElements","indexOf","handleRowClick","isInteractiveEventTarget","handleRowDoubleClick","handleRowFocus","Provider","value","ref","node","measureElement","set","role","virtualIndex","style","level","posInSet","setSize","renderTreeItemContent","renderItemBranch","rows","forEach","childItem","push","renderLoadingRow","renderItemBranches","items","renderNode","sectionDOMProps","getSectionDOMProps","sectionProps","headerId","header","getHeaderDOMProps","headerProps","renderSectionRow","renderVisibleRow","defaultRow","section","emptyState","renderFlatRows","Array","from","context","title","content","slot","disabled","allKeys","anchorKey","anchorIndex","keyIndex","start","end","isLoading","domProps","replace","root","ownerDocument","querySelectorAll","element","hasAttribute","interactiveElement","closest","Boolean"],"sources":["../../../src/Tree/Tree.tsx"],"sourcesContent":["import type {\n CSSProperties,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n ReactNode,\n} from 'react';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport {\n flattenAllItems,\n parseTreeChildren,\n shouldRenderLoadingRow,\n useTreeCollection,\n} from './collection';\nimport { TreeItemRenderContext } from './context';\nimport type {\n ParsedTreeItem,\n ParsedTreeNode,\n ParsedTreeSection,\n TreeDisabledBehavior,\n TreeExpandedKeys,\n TreeHeaderProps,\n TreeItemProps,\n TreeItemRenderContextValue,\n TreeKey,\n TreeProps,\n TreeRenderState,\n TreeSectionProps,\n TreeSelection,\n TreeVisibleRow,\n} from './types';\nimport { assignMultipleRefs, wrapEvent } from '../utils';\n\nconst TYPEAHEAD_TIMEOUT = 500;\n\nexport const Tree = forwardRef<HTMLDivElement, TreeProps>(function Tree(\n props,\n forwardedRef\n) {\n const {\n as: Comp = 'div',\n innerAs,\n children,\n selectionMode = 'none',\n selectionBehavior = 'toggle',\n selectedKeys: selectedKeysProp,\n defaultSelectedKeys,\n onSelectionChange,\n disallowEmptySelection = false,\n disabledKeys: disabledKeysProp,\n disabledBehavior = 'all',\n expandedKeys: expandedKeysProp,\n defaultExpandedKeys,\n onExpandedChange,\n autoFocus = false,\n onAction,\n keyboardNavigationBehavior = 'arrow',\n escapeKeyBehavior = 'clearSelection',\n shouldFocusWrap = false,\n disallowTypeAhead = false,\n disallowSelectAll = false,\n direction: directionProp,\n renderEmptyState,\n renderLoadingState,\n renderedRowIndices,\n onVisibleRowsChange,\n onFocusedKeyChange,\n renderRow,\n onKeyDown,\n onFocus,\n onBlur,\n onMouseDown,\n id: idProp,\n tabIndex,\n ...otherProps\n } = props;\n\n const generatedId = useId();\n const treeId = idProp ?? generatedId;\n const rootRef = useRef<HTMLDivElement | null>(null);\n const itemRefs = useRef(new Map<TreeKey, HTMLDivElement>());\n const typeaheadStringRef = useRef('');\n const typeaheadTimeoutRef = useRef<\n ReturnType<typeof setTimeout> | undefined\n >(undefined);\n const [isFocused, setFocused] = useState(false);\n const [isFocusVisible, setFocusVisible] = useState(false);\n const [focusedKey, setFocusedKey] = useState<TreeKey | null>(null);\n const [pressedKey, setPressedKey] = useState<TreeKey | null>(null);\n const lastSelectedKeyRef = useRef<TreeKey | null>(null);\n\n const disabledKeys = useMemo(\n () => new Set(disabledKeysProp ?? []),\n [disabledKeysProp]\n );\n\n const parsedTree = useMemo(() => parseTreeChildren(children), [children]);\n const allItems = useMemo(() => flattenAllItems(parsedTree), [parsedTree]);\n const allItemKeys = useMemo(() => allItems.map((item) => item.key), [allItems]);\n const expandableKeys = useMemo(\n () =>\n allItems\n .filter((item) => item.hasChildItems || item.childItems.length > 0)\n .map((item) => item.key),\n [allItems]\n );\n\n const [uncontrolledExpandedKeys, setUncontrolledExpandedKeys] = useState(\n () => makeKeySet(defaultExpandedKeys, expandableKeys)\n );\n const expandedKeys =\n expandedKeysProp !== undefined\n ? makeKeySet(expandedKeysProp, expandableKeys)\n : uncontrolledExpandedKeys;\n\n const [uncontrolledSelectedKeys, setUncontrolledSelectedKeys] = useState(() =>\n makeKeySet(defaultSelectedKeys, allItemKeys)\n );\n const selectedKeys =\n selectedKeysProp !== undefined\n ? makeKeySet(selectedKeysProp, allItemKeys)\n : uncontrolledSelectedKeys;\n\n const treeCollection = useTreeCollection(children, {\n expandedKeys,\n renderLoadingState,\n });\n const visibleItems = treeCollection.visibleItems;\n const visibleRows = treeCollection.visibleRows;\n\n const focusableItems = useMemo(\n () =>\n visibleItems.filter(\n (item) => !(disabledBehavior === 'all' && isItemDisabled(item, disabledKeys))\n ),\n [disabledBehavior, disabledKeys, visibleItems]\n );\n\n const direction =\n directionProp ??\n (typeof document !== 'undefined' && document.dir === 'rtl' ? 'rtl' : 'ltr');\n const expandKey = direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n const collapseKey = direction === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n\n const setExpandedKeys = useCallback(\n (keys: Set<TreeKey>) => {\n if (expandedKeysProp === undefined) {\n setUncontrolledExpandedKeys(keys);\n }\n onExpandedChange?.(new Set(keys));\n },\n [expandedKeysProp, onExpandedChange]\n );\n\n const setSelectedKeys = useCallback(\n (keys: Set<TreeKey>) => {\n if (selectedKeysProp === undefined) {\n setUncontrolledSelectedKeys(keys);\n }\n onSelectionChange?.(new Set(keys));\n },\n [onSelectionChange, selectedKeysProp]\n );\n\n const getItemByKey = useCallback(\n (key: TreeKey | null) =>\n key == null ? undefined : allItems.find((item) => item.key === key),\n [allItems]\n );\n\n const canSelectItem = useCallback(\n (item: ParsedTreeItem) =>\n selectionMode !== 'none' && !isItemDisabled(item, disabledKeys),\n [disabledKeys, selectionMode]\n );\n\n const focusItem = useCallback(\n (key: TreeKey | null) => {\n setFocusedKey(key);\n if (key == null) {\n onFocusedKeyChange?.(null, null);\n return;\n }\n\n const rowIndex = visibleRows.findIndex(\n (row) => row.type === 'item' && row.item.key === key\n );\n onFocusedKeyChange?.(key, rowIndex === -1 ? null : rowIndex);\n\n requestAnimationFrame(() => {\n itemRefs.current.get(key)?.focus({ preventScroll: true });\n });\n },\n [onFocusedKeyChange, visibleRows]\n );\n\n const updateSelection = useCallback(\n (\n item: ParsedTreeItem,\n event?: MouseEvent<any> | KeyboardEvent<any>,\n options?: { forceToggle?: boolean; range?: boolean }\n ) => {\n if (!canSelectItem(item)) {\n return;\n }\n\n let next = new Set(selectedKeys);\n const isSelected = next.has(item.key);\n\n if (selectionMode === 'single') {\n if (isSelected && !disallowEmptySelection) {\n next.delete(item.key);\n } else {\n next = new Set([item.key]);\n }\n } else if (selectionMode === 'multiple') {\n if (\n options?.range &&\n lastSelectedKeyRef.current != null &&\n visibleItems.some((visibleItem) => visibleItem.key === lastSelectedKeyRef.current)\n ) {\n next = addRangeToSelection(\n visibleItems,\n lastSelectedKeyRef.current,\n item.key,\n selectedKeys,\n (candidate) => canSelectItem(candidate)\n );\n } else if (\n options?.forceToggle ||\n selectionBehavior === 'toggle' ||\n event?.ctrlKey ||\n event?.metaKey\n ) {\n if (isSelected) {\n if (!disallowEmptySelection || next.size > 1) {\n next.delete(item.key);\n }\n } else {\n next.add(item.key);\n }\n } else {\n next = new Set([item.key]);\n }\n }\n\n lastSelectedKeyRef.current = item.key;\n setSelectedKeys(next);\n },\n [\n canSelectItem,\n disallowEmptySelection,\n selectedKeys,\n selectionBehavior,\n selectionMode,\n setSelectedKeys,\n visibleItems,\n ]\n );\n\n const toggleExpanded = useCallback(\n (item: ParsedTreeItem) => {\n if (!item.hasChildItems && item.childItems.length === 0) {\n return;\n }\n\n const next = new Set(expandedKeys);\n if (next.has(item.key)) {\n next.delete(item.key);\n } else {\n next.add(item.key);\n }\n setExpandedKeys(next);\n },\n [expandedKeys, setExpandedKeys]\n );\n\n const navigateByIndex = useCallback(\n (currentKey: TreeKey | null, delta: number) => {\n if (focusableItems.length === 0) {\n return;\n }\n\n const currentIndex = focusableItems.findIndex(\n (item) => item.key === currentKey\n );\n let nextIndex = currentIndex === -1 ? (delta > 0 ? 0 : -1) : currentIndex + delta;\n\n if (nextIndex < 0 || nextIndex >= focusableItems.length) {\n if (!shouldFocusWrap) {\n return;\n }\n nextIndex =\n ((nextIndex % focusableItems.length) + focusableItems.length) %\n focusableItems.length;\n }\n\n focusItem(focusableItems[nextIndex].key);\n },\n [focusItem, focusableItems, shouldFocusWrap]\n );\n\n const navigateToEdge = useCallback(\n (edge: 'first' | 'last') => {\n const item =\n edge === 'first' ? focusableItems[0] : focusableItems[focusableItems.length - 1];\n if (item) {\n focusItem(item.key);\n }\n },\n [focusItem, focusableItems]\n );\n\n const handleTypeahead = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (disallowTypeAhead || event.key.length !== 1 || event.ctrlKey || event.metaKey || event.altKey) {\n return false;\n }\n\n event.preventDefault();\n const key = event.key.toLocaleLowerCase();\n if (\n typeaheadStringRef.current.length === 0 ||\n typeaheadStringRef.current.slice(-1) !== key\n ) {\n typeaheadStringRef.current += key;\n }\n\n clearTimeout(typeaheadTimeoutRef.current);\n typeaheadTimeoutRef.current = setTimeout(() => {\n typeaheadStringRef.current = '';\n }, TYPEAHEAD_TIMEOUT);\n\n const search = typeaheadStringRef.current;\n const currentIndex = focusableItems.findIndex(\n (item) => item.key === focusedKey\n );\n for (\n let i = search.length === 1 ? 1 : 0;\n i <= focusableItems.length;\n i++\n ) {\n const index =\n ((currentIndex + i) % focusableItems.length + focusableItems.length) %\n focusableItems.length;\n const item = focusableItems[index];\n if (item?.textValue.toLocaleLowerCase().startsWith(search)) {\n focusItem(item.key);\n return true;\n }\n }\n\n return true;\n },\n [disallowTypeAhead, focusItem, focusableItems, focusedKey]\n );\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const target = event.target;\n if (!(target instanceof Node) || !rootRef.current?.contains(target)) {\n return;\n }\n\n setFocusVisible(true);\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n navigateByIndex(focusedKey, 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n navigateByIndex(focusedKey, -1);\n break;\n case 'Home':\n event.preventDefault();\n navigateToEdge('first');\n break;\n case 'End':\n event.preventDefault();\n navigateToEdge('last');\n break;\n case 'a':\n if (\n (event.ctrlKey || event.metaKey) &&\n selectionMode === 'multiple' &&\n !disallowSelectAll\n ) {\n event.preventDefault();\n setSelectedKeys(\n new Set(\n allItems\n .filter((item) => canSelectItem(item))\n .map((item) => item.key)\n )\n );\n } else {\n handleTypeahead(event);\n }\n break;\n case 'Escape':\n if (\n escapeKeyBehavior === 'clearSelection' &&\n !disallowEmptySelection &&\n selectedKeys.size > 0\n ) {\n event.preventDefault();\n event.stopPropagation();\n setSelectedKeys(new Set());\n }\n break;\n case ' ':\n if (focusedKey != null && event.target === itemRefs.current.get(focusedKey)) {\n const item = getItemByKey(focusedKey);\n if (item) {\n event.preventDefault();\n updateSelection(item, event, {\n forceToggle: true,\n range: event.shiftKey,\n });\n }\n }\n break;\n case 'Enter':\n if (focusedKey != null && event.target === itemRefs.current.get(focusedKey)) {\n const item = getItemByKey(focusedKey);\n if (item && !isInteractionDisabled(item, disabledKeys, disabledBehavior)) {\n event.preventDefault();\n if (item.props.onAction) {\n item.props.onAction();\n } else if (onAction) {\n onAction(item.key);\n } else if (selectionMode === 'none' && item.hasChildItems) {\n toggleExpanded(item);\n }\n }\n }\n break;\n default:\n handleTypeahead(event);\n break;\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLDivElement>) => {\n if (!rootRef.current?.contains(event.target)) {\n return;\n }\n\n setFocused(true);\n if (event.target === rootRef.current) {\n const key =\n focusedKey ??\n firstVisibleSelectedKey(visibleItems, selectedKeys) ??\n focusableItems[0]?.key ??\n null;\n focusItem(key);\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (\n event.relatedTarget instanceof Node &&\n rootRef.current?.contains(event.relatedTarget)\n ) {\n return;\n }\n\n setFocused(false);\n };\n\n const handleMouseDown = () => {\n setFocusVisible(false);\n };\n\n useEffect(() => {\n if (focusedKey != null && !focusableItems.some((item) => item.key === focusedKey)) {\n setFocusedKey(focusableItems[0]?.key ?? null);\n }\n }, [focusableItems, focusedKey]);\n\n useEffect(() => {\n onVisibleRowsChange?.(visibleRows);\n }, [onVisibleRowsChange, visibleRows]);\n\n useEffect(() => {\n if (!autoFocus) {\n return;\n }\n\n const key =\n autoFocus === 'last'\n ? focusableItems[focusableItems.length - 1]?.key\n : firstVisibleSelectedKey(visibleItems, selectedKeys) ??\n focusableItems[0]?.key;\n if (key != null) {\n setFocused(true);\n focusItem(key);\n } else {\n rootRef.current?.focus();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n return () => {\n clearTimeout(typeaheadTimeoutRef.current);\n };\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!otherProps['aria-label'] && !otherProps['aria-labelledby']) {\n console.warn(\n 'An aria-label or aria-labelledby prop is required for <Tree> accessibility.'\n );\n }\n }\n\n const renderState: TreeRenderState = {\n allItems,\n visibleItems,\n visibleRows,\n focusedKey,\n expandedKeys,\n selectedKeys,\n selectionMode,\n selectionBehavior,\n };\n\n const renderItem = (\n item: ParsedTreeItem,\n options: {\n rowIndex?: number;\n virtualIndex?: number;\n measureElement?: (element: HTMLElement | null) => void;\n } = {}\n ) => {\n const isDisabled = isInteractionDisabled(item, disabledKeys, disabledBehavior);\n const isExpanded = expandedKeys.has(item.key);\n const isSelected = selectedKeys.has(item.key);\n const rowId = `${treeId}-row-${sanitizeId(item.keyString)}`;\n const rowProps = getItemDOMProps(item.props);\n const canSelect = canSelectItem(item);\n const itemOnClick = rowProps.onClick;\n const itemOnDoubleClick = rowProps.onDoubleClick;\n const itemOnFocus = rowProps.onFocus;\n const itemOnKeyDownCapture = rowProps.onKeyDownCapture;\n const itemOnMouseDown = rowProps.onMouseDown;\n const itemOnMouseUp = rowProps.onMouseUp;\n const itemOnMouseLeave = rowProps.onMouseLeave;\n const itemOnKeyDown = rowProps.onKeyDown;\n\n const contextValue: TreeItemRenderContextValue = {\n item,\n rowId,\n isExpanded,\n isSelected,\n isDisabled,\n canSelect,\n selectionMode,\n selectionBehavior,\n toggleExpanded: (event) => {\n event.preventDefault();\n event.stopPropagation();\n if (!isDisabled) {\n toggleExpanded(item);\n focusItem(item.key);\n }\n },\n toggleSelection: (event) => {\n event.stopPropagation();\n updateSelection(item, event, { forceToggle: true });\n focusItem(item.key);\n },\n };\n\n const handleRowKeyDownCapture = (event: KeyboardEvent<HTMLDivElement>) => {\n if (!rootRef.current || !itemRefs.current.get(item.key)) {\n return;\n }\n\n const row = itemRefs.current.get(item.key)!;\n const activeElement = getActiveElement(row);\n\n if (activeElement === row) {\n if (event.key === expandKey && item.hasChildItems && !isExpanded && !isDisabled) {\n event.preventDefault();\n event.stopPropagation();\n toggleExpanded(item);\n } else if (event.key === collapseKey) {\n if (item.hasChildItems && isExpanded && !isDisabled) {\n event.preventDefault();\n event.stopPropagation();\n toggleExpanded(item);\n } else if (item.parentKey != null) {\n event.preventDefault();\n event.stopPropagation();\n focusItem(item.parentKey);\n }\n }\n return;\n }\n\n if (\n keyboardNavigationBehavior === 'arrow' &&\n activeElement instanceof HTMLElement &&\n row.contains(activeElement) &&\n (event.key === 'ArrowLeft' || event.key === 'ArrowRight')\n ) {\n const focusables = getFocusableElements(row);\n const currentIndex = focusables.indexOf(activeElement);\n const delta =\n (event.key === 'ArrowRight' && direction === 'ltr') ||\n (event.key === 'ArrowLeft' && direction === 'rtl')\n ? 1\n : -1;\n const next = focusables[currentIndex + delta] ?? row;\n event.preventDefault();\n event.stopPropagation();\n next.focus({ preventScroll: true });\n }\n };\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (isDisabled || isInteractiveEventTarget(event, itemRefs.current.get(item.key))) {\n return;\n }\n\n focusItem(item.key);\n\n if (selectionMode === 'none') {\n if (item.props.onAction) {\n item.props.onAction();\n } else if (onAction) {\n onAction(item.key);\n } else if (item.hasChildItems) {\n toggleExpanded(item);\n }\n return;\n }\n\n updateSelection(item, event, { range: event.shiftKey });\n };\n\n const handleRowDoubleClick = () => {\n if (\n selectionBehavior === 'replace' &&\n !isDisabled &&\n (item.props.onAction || onAction)\n ) {\n item.props.onAction?.();\n if (!item.props.onAction) {\n onAction?.(item.key);\n }\n }\n };\n\n const handleRowFocus = () => {\n setFocusedKey(item.key);\n };\n\n return (\n <TreeItemRenderContext.Provider key={item.keyString} value={contextValue}>\n <div\n {...rowProps}\n ref={(node) => {\n options.measureElement?.(node);\n if (node) {\n itemRefs.current.set(item.key, node);\n } else {\n itemRefs.current.delete(item.key);\n }\n }}\n id={rowId}\n role=\"row\"\n data-index={options.virtualIndex}\n aria-rowindex={options.rowIndex}\n tabIndex={focusedKey === item.key ? 0 : -1}\n aria-label={(item.props['aria-label'] ?? item.textValue) || undefined}\n style={\n {\n ...rowProps.style,\n '--tree-item-level': item.level,\n } as CSSProperties\n }\n aria-expanded={item.hasChildItems ? isExpanded : undefined}\n aria-level={item.level}\n aria-posinset={item.posInSet}\n aria-setsize={item.setSize}\n aria-selected={canSelect ? isSelected : undefined}\n aria-disabled={isDisabled || undefined}\n data-tree-item=\"\"\n data-key={item.keyString}\n data-expanded={item.hasChildItems && isExpanded ? '' : undefined}\n data-has-child-items={item.hasChildItems ? '' : undefined}\n data-level={item.level}\n data-selected={isSelected ? '' : undefined}\n data-disabled={isDisabled ? '' : undefined}\n data-focused={focusedKey === item.key && isFocused ? '' : undefined}\n data-focus-visible={\n focusedKey === item.key && isFocusVisible ? '' : undefined\n }\n data-pressed={pressedKey === item.key ? '' : undefined}\n data-selection-mode={\n selectionMode === 'none' ? undefined : selectionMode\n }\n onClick={wrapEvent(itemOnClick as any, handleRowClick)}\n onDoubleClick={wrapEvent(\n itemOnDoubleClick as any,\n handleRowDoubleClick\n )}\n onFocus={wrapEvent(itemOnFocus as any, handleRowFocus)}\n onKeyDownCapture={wrapEvent(\n itemOnKeyDownCapture as any,\n handleRowKeyDownCapture\n )}\n onKeyDown={itemOnKeyDown}\n onMouseDown={wrapEvent(itemOnMouseDown as any, () => {\n if (!isDisabled) {\n setPressedKey(item.key);\n }\n })}\n onMouseUp={wrapEvent(itemOnMouseUp as any, () => {\n setPressedKey(null);\n })}\n onMouseLeave={wrapEvent(itemOnMouseLeave as any, () => {\n setPressedKey(null);\n })}\n >\n <div role=\"gridcell\" aria-colindex={1}>\n {renderTreeItemContent(item, contextValue)}\n </div>\n </div>\n </TreeItemRenderContext.Provider>\n );\n };\n\n const renderItemBranch = (item: ParsedTreeItem): ReactNode[] => {\n const rows: ReactNode[] = [renderItem(item)];\n if (expandedKeys.has(item.key)) {\n item.childItems.forEach((childItem) => {\n rows.push(...renderItemBranch(childItem));\n });\n if (\n shouldRenderLoadingRow(item, renderLoadingState)\n ) {\n rows.push(renderLoadingRow(item));\n }\n }\n return rows;\n };\n\n const renderItemBranches = (items: ParsedTreeItem[]) => {\n const rows: ReactNode[] = [];\n items.forEach((item) => {\n rows.push(...renderItemBranch(item));\n });\n return rows;\n };\n\n const renderNode = (node: ParsedTreeNode) => {\n if (node.type === 'item') {\n return renderItemBranch(node);\n }\n\n const sectionDOMProps = getSectionDOMProps(node.sectionProps);\n const headerId = `${treeId}-section-${sanitizeId(node.key)}-header`;\n return (\n <div\n {...sectionDOMProps}\n key={node.key}\n role=\"rowgroup\"\n aria-labelledby={node.header ? headerId : undefined}\n aria-label={\n node.header ? undefined : node.sectionProps['aria-label'] ?? undefined\n }\n >\n {node.header ? (\n <div role=\"row\">\n <div\n {...getHeaderDOMProps(node.headerProps)}\n id={headerId}\n role=\"rowheader\"\n >\n {node.header}\n </div>\n </div>\n ) : null}\n {renderItemBranches(node.items)}\n </div>\n );\n };\n\n const renderSectionRow = (\n node: ParsedTreeSection,\n options: {\n rowIndex?: number;\n virtualIndex?: number;\n measureElement?: (element: HTMLElement | null) => void;\n } = {}\n ) => {\n const headerId = `${treeId}-section-${sanitizeId(node.key)}-header`;\n return (\n <div\n key={node.key}\n ref={options.measureElement}\n role=\"row\"\n data-index={options.virtualIndex}\n aria-rowindex={options.rowIndex}\n >\n <div\n {...getHeaderDOMProps(node.headerProps)}\n id={headerId}\n role=\"rowheader\"\n >\n {node.header}\n </div>\n </div>\n );\n };\n\n const renderLoadingRow = (\n item: ParsedTreeItem,\n options: {\n rowIndex?: number;\n virtualIndex?: number;\n measureElement?: (element: HTMLElement | null) => void;\n } = {}\n ) => (\n <div\n key={`${item.keyString}-loading`}\n ref={options.measureElement}\n role=\"row\"\n data-index={options.virtualIndex}\n aria-level={item.level + 1}\n aria-rowindex={options.rowIndex}\n data-tree-loading-row=\"\"\n data-level={item.level + 1}\n style={\n {\n '--tree-item-level': item.level + 1,\n } as CSSProperties\n }\n >\n <div role=\"gridcell\" aria-colindex={1}>\n {renderLoadingState?.(item)}\n </div>\n </div>\n );\n\n const renderVisibleRow = (\n row: TreeVisibleRow,\n index: number,\n measureElement?: (element: HTMLElement | null) => void\n ) => {\n let defaultRow: ReactElement;\n if (row.type === 'item') {\n defaultRow = renderItem(row.item, {\n rowIndex: index + 1,\n virtualIndex: index,\n measureElement,\n });\n } else if (row.type === 'section') {\n defaultRow = renderSectionRow(row.section, {\n rowIndex: index + 1,\n virtualIndex: index,\n measureElement,\n });\n } else {\n defaultRow = renderLoadingRow(row.item, {\n rowIndex: index + 1,\n virtualIndex: index,\n measureElement,\n });\n }\n\n return renderRow?.(row, defaultRow, renderState) ?? defaultRow;\n };\n\n const emptyState =\n allItems.length === 0 && renderEmptyState ? (\n <div role=\"row\" aria-level={1}>\n <div role=\"gridcell\" aria-colindex={1}>\n {renderEmptyState()}\n </div>\n </div>\n ) : null;\n\n return (\n <Comp\n {...otherProps}\n as={innerAs}\n ref={assignMultipleRefs(forwardedRef, rootRef)}\n id={treeId}\n role=\"treegrid\"\n aria-rowcount={renderedRowIndices ? visibleRows.length : undefined}\n tabIndex={focusedKey == null ? tabIndex ?? 0 : tabIndex ?? -1}\n aria-multiselectable={selectionMode === 'multiple' ? true : undefined}\n data-tree=\"\"\n data-empty={allItems.length === 0 ? '' : undefined}\n data-focused={isFocused ? '' : undefined}\n data-focus-visible={isFocusVisible ? '' : undefined}\n data-selection-mode={selectionMode}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n onFocus={wrapEvent(onFocus, handleFocus)}\n onBlur={wrapEvent(onBlur, handleBlur)}\n onMouseDown={wrapEvent(onMouseDown, handleMouseDown)}\n >\n {emptyState ??\n (renderedRowIndices\n ? renderFlatRows(visibleRows, renderedRowIndices, renderVisibleRow)\n : parsedTree.map(renderNode))}\n </Comp>\n );\n});\n\nfunction renderFlatRows(\n visibleRows: TreeVisibleRow[],\n renderedRowIndices: Iterable<number>,\n renderVisibleRow: (\n row: TreeVisibleRow,\n index: number\n ) => ReactNode\n) {\n return Array.from(renderedRowIndices, (index) => {\n const row = visibleRows[index];\n return row ? renderVisibleRow(row, index) : null;\n });\n}\n\nfunction renderTreeItemContent(\n item: ParsedTreeItem,\n context: TreeItemRenderContextValue\n) {\n if (item.props.title === undefined || !item.hasChildItems) {\n return item.content;\n }\n\n return (\n <>\n <button\n type=\"button\"\n slot=\"chevron\"\n aria-expanded={context.isExpanded}\n aria-label={context.isExpanded ? 'Collapse' : 'Expand'}\n aria-labelledby={context.rowId}\n disabled={context.isDisabled}\n tabIndex={-1}\n onClick={context.toggleExpanded}\n >\n <span aria-hidden=\"true\">></span>\n </button>\n {item.content}\n </>\n );\n}\n\nfunction makeKeySet(\n keys: TreeSelection | TreeExpandedKeys | undefined,\n allKeys: TreeKey[]\n) {\n if (!keys) {\n return new Set<TreeKey>();\n }\n\n if (keys === 'all') {\n return new Set(allKeys);\n }\n\n return new Set(keys);\n}\n\nfunction addRangeToSelection(\n visibleItems: ParsedTreeItem[],\n anchorKey: TreeKey,\n key: TreeKey,\n selectedKeys: Set<TreeKey>,\n canSelect: (item: ParsedTreeItem) => boolean\n) {\n const anchorIndex = visibleItems.findIndex((item) => item.key === anchorKey);\n const keyIndex = visibleItems.findIndex((item) => item.key === key);\n if (anchorIndex === -1 || keyIndex === -1) {\n return new Set(selectedKeys);\n }\n\n const [start, end] =\n anchorIndex < keyIndex ? [anchorIndex, keyIndex] : [keyIndex, anchorIndex];\n const next = new Set(selectedKeys);\n for (let index = start; index <= end; index++) {\n const item = visibleItems[index];\n if (canSelect(item)) {\n next.add(item.key);\n }\n }\n return next;\n}\n\nfunction firstVisibleSelectedKey(\n visibleItems: ParsedTreeItem[],\n selectedKeys: Set<TreeKey>\n) {\n return visibleItems.find((item) => selectedKeys.has(item.key))?.key ?? null;\n}\n\nfunction isItemDisabled(item: ParsedTreeItem, disabledKeys: Set<TreeKey>) {\n return item.disabled || disabledKeys.has(item.key);\n}\n\nfunction isInteractionDisabled(\n item: ParsedTreeItem,\n disabledKeys: Set<TreeKey>,\n disabledBehavior: TreeDisabledBehavior\n) {\n return disabledBehavior === 'all' && isItemDisabled(item, disabledKeys);\n}\n\nfunction getItemDOMProps(props: TreeItemProps) {\n const {\n id,\n title,\n textValue,\n isDisabled,\n disabled,\n hasChildItems,\n isLoading,\n onAction,\n children,\n ...domProps\n } = props;\n return domProps;\n}\n\nfunction getSectionDOMProps(props: TreeSectionProps) {\n const { as, innerAs, children, ...domProps } = props;\n return domProps;\n}\n\nfunction getHeaderDOMProps(props: TreeHeaderProps) {\n const { as, innerAs, children, ...domProps } = props;\n return domProps;\n}\n\nfunction sanitizeId(value: string) {\n return value.replace(/[^A-Za-z0-9_-]/g, '-');\n}\n\nfunction getActiveElement(root: HTMLElement) {\n return root.ownerDocument.activeElement;\n}\n\nfunction getFocusableElements(root: HTMLElement) {\n return Array.from(\n root.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n )\n ).filter((element) => !element.hasAttribute('disabled'));\n}\n\nfunction isInteractiveEventTarget(\n event: MouseEvent<HTMLElement>,\n row: HTMLElement | undefined\n) {\n if (!row || !(event.target instanceof HTMLElement) || event.target === row) {\n return false;\n }\n\n const interactiveElement = event.target.closest(\n 'a[href], button, input, select, textarea, [role=\"button\"], [role=\"checkbox\"], [tabindex]'\n );\n return Boolean(interactiveElement && interactiveElement !== row);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeHeader.d.ts","sourceRoot":"","sources":["../../../src/Tree/TreeHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,UAAU,4GAItB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeHeader.js","names":["forwardRef","TreeHeader"],"sources":["../../../src/Tree/TreeHeader.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nimport type { TreeHeaderProps } from './types';\n\nexport const TreeHeader = forwardRef<HTMLDivElement, TreeHeaderProps>(\n function TreeHeader() {\n return null;\n }\n);\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAIlC,OAAO,MAAMC,UAAU,gBAAGD,UAAU,CAClC,SAASC,UAAUA,CAAA,EAAG;EACpB,OAAO,IAAI;AACb,CACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeItem.d.ts","sourceRoot":"","sources":["../../../src/Tree/TreeItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,QAAQ,0GAIpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeItem.js","names":["forwardRef","TreeItem"],"sources":["../../../src/Tree/TreeItem.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nimport type { TreeItemProps } from './types';\n\nexport const TreeItem = forwardRef<HTMLDivElement, TreeItemProps>(\n function TreeItem() {\n return null;\n }\n);\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAIlC,OAAO,MAAMC,QAAQ,gBAAGD,UAAU,CAChC,SAASC,QAAQA,CAAA,EAAG;EAClB,OAAO,IAAI;AACb,CACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeItemContent.d.ts","sourceRoot":"","sources":["../../../src/Tree/TreeItemContent.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,eAAe,iHAoB1B,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Children, cloneElement, forwardRef, isValidElement, useContext } from 'react';
|
|
2
|
+
import { TreeItemRenderContext } from './context';
|
|
3
|
+
import { wrapEvent } from '../utils';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
export const TreeItemContent = /*#__PURE__*/forwardRef(function TreeItemContent(props, forwardedRef) {
|
|
6
|
+
const {
|
|
7
|
+
as: Comp = 'div',
|
|
8
|
+
innerAs,
|
|
9
|
+
children,
|
|
10
|
+
...otherProps
|
|
11
|
+
} = props;
|
|
12
|
+
const context = useContext(TreeItemRenderContext);
|
|
13
|
+
if (!context) {
|
|
14
|
+
return /*#__PURE__*/_jsx(Comp, {
|
|
15
|
+
ref: forwardedRef,
|
|
16
|
+
as: innerAs,
|
|
17
|
+
...otherProps,
|
|
18
|
+
children: children
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return /*#__PURE__*/_jsx(Comp, {
|
|
22
|
+
ref: forwardedRef,
|
|
23
|
+
as: innerAs,
|
|
24
|
+
...otherProps,
|
|
25
|
+
children: Children.map(children, child => enhanceSlottedChild(child, context))
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
function enhanceSlottedChild(child, context) {
|
|
29
|
+
if (! /*#__PURE__*/isValidElement(child)) {
|
|
30
|
+
return child;
|
|
31
|
+
}
|
|
32
|
+
const element = child;
|
|
33
|
+
const slot = element.props.slot;
|
|
34
|
+
if (slot === 'chevron') {
|
|
35
|
+
return /*#__PURE__*/cloneElement(element, {
|
|
36
|
+
'aria-expanded': context.item.hasChildItems ? context.isExpanded : undefined,
|
|
37
|
+
'aria-label': context.isExpanded ? 'Collapse' : 'Expand',
|
|
38
|
+
'aria-labelledby': context.rowId,
|
|
39
|
+
disabled: context.isDisabled || !context.item.hasChildItems,
|
|
40
|
+
tabIndex: -1,
|
|
41
|
+
onClick: wrapEvent(element.props.onClick, context.toggleExpanded),
|
|
42
|
+
onKeyDown: wrapEvent(element.props.onKeyDown, event => {
|
|
43
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
44
|
+
context.toggleExpanded(event);
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
if (slot === 'selection') {
|
|
50
|
+
return /*#__PURE__*/cloneElement(element, {
|
|
51
|
+
checked: context.isSelected,
|
|
52
|
+
disabled: !context.canSelect,
|
|
53
|
+
'aria-label': 'Select',
|
|
54
|
+
'aria-labelledby': context.rowId,
|
|
55
|
+
tabIndex: -1,
|
|
56
|
+
onClick: wrapEvent(element.props.onClick, event => {
|
|
57
|
+
event.stopPropagation();
|
|
58
|
+
}),
|
|
59
|
+
onChange: wrapEvent(element.props.onChange, context.toggleSelection)
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (slot === 'drag') {
|
|
63
|
+
return /*#__PURE__*/cloneElement(element, {
|
|
64
|
+
'data-tree-drag-handle': ''
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return child;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=TreeItemContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeItemContent.js","names":["Children","cloneElement","forwardRef","isValidElement","useContext","TreeItemRenderContext","wrapEvent","jsx","_jsx","TreeItemContent","props","forwardedRef","as","Comp","innerAs","children","otherProps","context","ref","map","child","enhanceSlottedChild","element","slot","item","hasChildItems","isExpanded","undefined","rowId","disabled","isDisabled","tabIndex","onClick","toggleExpanded","onKeyDown","event","key","checked","isSelected","canSelect","stopPropagation","onChange","toggleSelection"],"sources":["../../../src/Tree/TreeItemContent.tsx"],"sourcesContent":["import type { KeyboardEvent, MouseEvent, ReactElement, ReactNode } from 'react';\nimport {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n useContext,\n} from 'react';\n\nimport { TreeItemRenderContext } from './context';\nimport type {\n TreeItemContentProps,\n TreeItemRenderContextValue,\n} from './types';\nimport { wrapEvent } from '../utils';\n\nexport const TreeItemContent = forwardRef<\n HTMLDivElement,\n TreeItemContentProps\n>(function TreeItemContent(props, forwardedRef) {\n const { as: Comp = 'div', innerAs, children, ...otherProps } = props;\n const context = useContext(TreeItemRenderContext);\n\n if (!context) {\n return (\n <Comp ref={forwardedRef} as={innerAs} {...otherProps}>\n {children}\n </Comp>\n );\n }\n\n return (\n <Comp ref={forwardedRef} as={innerAs} {...otherProps}>\n {Children.map(children, (child) => enhanceSlottedChild(child, context))}\n </Comp>\n );\n});\n\nfunction enhanceSlottedChild(\n child: ReactNode,\n context: TreeItemRenderContextValue\n) {\n if (!isValidElement(child)) {\n return child;\n }\n\n const element = child as ReactElement<any>;\n const slot = (element.props as { slot?: string }).slot;\n if (slot === 'chevron') {\n return cloneElement(element, {\n 'aria-expanded': context.item.hasChildItems\n ? context.isExpanded\n : undefined,\n 'aria-label': context.isExpanded ? 'Collapse' : 'Expand',\n 'aria-labelledby': context.rowId,\n disabled: context.isDisabled || !context.item.hasChildItems,\n tabIndex: -1,\n onClick: wrapEvent(element.props.onClick, context.toggleExpanded),\n onKeyDown: wrapEvent(\n element.props.onKeyDown,\n (event: KeyboardEvent<any>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n context.toggleExpanded(event);\n }\n }\n ),\n });\n }\n\n if (slot === 'selection') {\n return cloneElement(element, {\n checked: context.isSelected,\n disabled: !context.canSelect,\n 'aria-label': 'Select',\n 'aria-labelledby': context.rowId,\n tabIndex: -1,\n onClick: wrapEvent(element.props.onClick, (event: MouseEvent<any>) => {\n event.stopPropagation();\n }),\n onChange: wrapEvent(element.props.onChange, context.toggleSelection),\n });\n }\n\n if (slot === 'drag') {\n return cloneElement(element, {\n 'data-tree-drag-handle': '',\n });\n }\n\n return child;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeSection.d.ts","sourceRoot":"","sources":["../../../src/Tree/TreeSection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,WAAW,6GAIvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeSection.js","names":["forwardRef","TreeSection"],"sources":["../../../src/Tree/TreeSection.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nimport type { TreeSectionProps } from './types';\n\nexport const TreeSection = forwardRef<HTMLDivElement, TreeSectionProps>(\n function TreeSection() {\n return null;\n }\n);\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAIlC,OAAO,MAAMC,WAAW,gBAAGD,UAAU,CACnC,SAASC,WAAWA,CAAA,EAAG;EACrB,OAAO,IAAI;AACb,CACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ParsedTreeItem, ParsedTreeNode, TreeKey, TreeProps, TreeVisibleRow } from './types';
|
|
3
|
+
export interface TreeCollectionState {
|
|
4
|
+
parsedTree: ParsedTreeNode[];
|
|
5
|
+
allItems: ParsedTreeItem[];
|
|
6
|
+
visibleItems: ParsedTreeItem[];
|
|
7
|
+
visibleRows: TreeVisibleRow[];
|
|
8
|
+
}
|
|
9
|
+
export declare function useTreeCollection(children: ReactNode, options?: {
|
|
10
|
+
expandedKeys?: Iterable<TreeKey>;
|
|
11
|
+
renderLoadingState?: TreeProps['renderLoadingState'];
|
|
12
|
+
}): TreeCollectionState;
|
|
13
|
+
export declare function parseTreeChildren(children: ReactNode): ParsedTreeNode[];
|
|
14
|
+
export declare function flattenAllItems(nodes: ParsedTreeNode[]): ParsedTreeItem[];
|
|
15
|
+
export declare function flattenVisibleItems(nodes: ParsedTreeNode[], expandedKeys: Set<TreeKey>): ParsedTreeItem[];
|
|
16
|
+
export declare function flattenVisibleRows(nodes: ParsedTreeNode[], expandedKeys: Set<TreeKey>, renderLoadingState: TreeProps['renderLoadingState']): TreeVisibleRow[];
|
|
17
|
+
export declare function shouldRenderLoadingRow(item: ParsedTreeItem, renderLoadingState: TreeProps['renderLoadingState']): boolean;
|
|
18
|
+
//# sourceMappingURL=collection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../../src/Tree/collection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,OAAO,CAAC;AAMrD,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAId,OAAO,EACP,SAAS,EAET,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,EACnB,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,kBAAkB,CAAC,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC;CACjD,GACL,mBAAmB,CAsBrB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,GAAG,cAAc,EAAE,CAqCvE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAgBzE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EAAE,EACvB,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,GACzB,cAAc,EAAE,CAkBlB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EAAE,EACvB,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,EAC1B,kBAAkB,EAAE,SAAS,CAAC,oBAAoB,CAAC,GAClD,cAAc,EAAE,CAqClB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,cAAc,EACpB,kBAAkB,EAAE,SAAS,CAAC,oBAAoB,CAAC,WAQpD"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { Children, Fragment, isValidElement, useMemo } from 'react';
|
|
2
|
+
import { TreeHeader } from './TreeHeader';
|
|
3
|
+
import { TreeItem } from './TreeItem';
|
|
4
|
+
import { TreeSection } from './TreeSection';
|
|
5
|
+
export function useTreeCollection(children) {
|
|
6
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
7
|
+
const expandedKeys = useMemo(() => new Set(options.expandedKeys ?? []), [options.expandedKeys]);
|
|
8
|
+
const parsedTree = useMemo(() => parseTreeChildren(children), [children]);
|
|
9
|
+
const allItems = useMemo(() => flattenAllItems(parsedTree), [parsedTree]);
|
|
10
|
+
const visibleItems = useMemo(() => flattenVisibleItems(parsedTree, expandedKeys), [expandedKeys, parsedTree]);
|
|
11
|
+
const visibleRows = useMemo(() => flattenVisibleRows(parsedTree, expandedKeys, options.renderLoadingState), [expandedKeys, options.renderLoadingState, parsedTree]);
|
|
12
|
+
return {
|
|
13
|
+
parsedTree,
|
|
14
|
+
allItems,
|
|
15
|
+
visibleItems,
|
|
16
|
+
visibleRows
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function parseTreeChildren(children) {
|
|
20
|
+
const nodes = [];
|
|
21
|
+
let itemIndex = 0;
|
|
22
|
+
const visitChild = (child, index) => {
|
|
23
|
+
if (! /*#__PURE__*/isValidElement(child)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (isFragmentElement(child)) {
|
|
27
|
+
Children.forEach(child.props.children, visitChild);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (isTreeSectionElement(child)) {
|
|
31
|
+
const section = parseTreeSection(child, index);
|
|
32
|
+
nodes.push(section);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (isTreeItemElement(child)) {
|
|
36
|
+
const item = parseTreeItem(child, {
|
|
37
|
+
level: 1,
|
|
38
|
+
parentKey: null,
|
|
39
|
+
index: itemIndex,
|
|
40
|
+
posInSet: itemIndex + 1,
|
|
41
|
+
setSize: countTreeItems(children),
|
|
42
|
+
path: [itemIndex]
|
|
43
|
+
});
|
|
44
|
+
itemIndex += 1;
|
|
45
|
+
nodes.push(item);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
Children.forEach(children, visitChild);
|
|
49
|
+
return nodes;
|
|
50
|
+
}
|
|
51
|
+
export function flattenAllItems(nodes) {
|
|
52
|
+
const items = [];
|
|
53
|
+
const append = item => {
|
|
54
|
+
items.push(item);
|
|
55
|
+
item.childItems.forEach(append);
|
|
56
|
+
};
|
|
57
|
+
nodes.forEach(node => {
|
|
58
|
+
if (node.type === 'item') {
|
|
59
|
+
append(node);
|
|
60
|
+
} else {
|
|
61
|
+
node.items.forEach(append);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return items;
|
|
65
|
+
}
|
|
66
|
+
export function flattenVisibleItems(nodes, expandedKeys) {
|
|
67
|
+
const items = [];
|
|
68
|
+
const append = item => {
|
|
69
|
+
items.push(item);
|
|
70
|
+
if (expandedKeys.has(item.key)) {
|
|
71
|
+
item.childItems.forEach(append);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
nodes.forEach(node => {
|
|
75
|
+
if (node.type === 'item') {
|
|
76
|
+
append(node);
|
|
77
|
+
} else {
|
|
78
|
+
node.items.forEach(append);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return items;
|
|
82
|
+
}
|
|
83
|
+
export function flattenVisibleRows(nodes, expandedKeys, renderLoadingState) {
|
|
84
|
+
const rows = [];
|
|
85
|
+
const append = item => {
|
|
86
|
+
rows.push({
|
|
87
|
+
type: 'item',
|
|
88
|
+
key: item.key,
|
|
89
|
+
item
|
|
90
|
+
});
|
|
91
|
+
if (expandedKeys.has(item.key)) {
|
|
92
|
+
item.childItems.forEach(append);
|
|
93
|
+
if (shouldRenderLoadingRow(item, renderLoadingState)) {
|
|
94
|
+
rows.push({
|
|
95
|
+
type: 'loading',
|
|
96
|
+
key: `${item.keyString}-loading`,
|
|
97
|
+
item,
|
|
98
|
+
level: item.level + 1
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
nodes.forEach(node => {
|
|
104
|
+
if (node.type === 'section') {
|
|
105
|
+
if (node.header) {
|
|
106
|
+
rows.push({
|
|
107
|
+
type: 'section',
|
|
108
|
+
key: node.key,
|
|
109
|
+
section: node
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
node.items.forEach(append);
|
|
113
|
+
} else {
|
|
114
|
+
append(node);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
return rows;
|
|
118
|
+
}
|
|
119
|
+
export function shouldRenderLoadingRow(item, renderLoadingState) {
|
|
120
|
+
return Boolean(renderLoadingState && item.hasChildItems && item.childItems.length === 0 && item.props.isLoading);
|
|
121
|
+
}
|
|
122
|
+
function parseTreeSection(element, sectionIndex) {
|
|
123
|
+
const childrenArray = Children.toArray(element.props.children);
|
|
124
|
+
let header = null;
|
|
125
|
+
let headerProps = {};
|
|
126
|
+
const itemElements = [];
|
|
127
|
+
const visitChild = child => {
|
|
128
|
+
if (! /*#__PURE__*/isValidElement(child)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (isFragmentElement(child)) {
|
|
132
|
+
Children.forEach(child.props.children, visitChild);
|
|
133
|
+
} else if (isTreeHeaderElement(child)) {
|
|
134
|
+
header = child.props.children;
|
|
135
|
+
headerProps = child.props;
|
|
136
|
+
} else if (isTreeItemElement(child)) {
|
|
137
|
+
itemElements.push(child);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
childrenArray.forEach(visitChild);
|
|
141
|
+
const items = itemElements.map((itemElement, index) => parseTreeItem(itemElement, {
|
|
142
|
+
level: 1,
|
|
143
|
+
parentKey: null,
|
|
144
|
+
index,
|
|
145
|
+
posInSet: index + 1,
|
|
146
|
+
setSize: itemElements.length,
|
|
147
|
+
path: [sectionIndex, index]
|
|
148
|
+
}));
|
|
149
|
+
return {
|
|
150
|
+
type: 'section',
|
|
151
|
+
key: `section-${sectionIndex}`,
|
|
152
|
+
header,
|
|
153
|
+
headerProps,
|
|
154
|
+
sectionProps: element.props,
|
|
155
|
+
items
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function parseTreeItem(element, options) {
|
|
159
|
+
const {
|
|
160
|
+
content,
|
|
161
|
+
childElements
|
|
162
|
+
} = splitTreeItemChildren(element.props);
|
|
163
|
+
const key = element.props.id ?? options.path.join('.');
|
|
164
|
+
const childItems = childElements.map((childElement, index) => parseTreeItem(childElement, {
|
|
165
|
+
level: options.level + 1,
|
|
166
|
+
parentKey: key,
|
|
167
|
+
index,
|
|
168
|
+
posInSet: index + 1,
|
|
169
|
+
setSize: childElements.length,
|
|
170
|
+
path: [...options.path, index]
|
|
171
|
+
}));
|
|
172
|
+
const textValue = element.props.textValue ?? getTextValue(element.props.title) ?? getTextValue(content) ?? '';
|
|
173
|
+
if (process.env.NODE_ENV !== 'production' && !textValue) {
|
|
174
|
+
console.warn('A textValue, title, or text content is required for <TreeItem> elements to support typeahead.');
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
type: 'item',
|
|
178
|
+
key,
|
|
179
|
+
keyString: String(key),
|
|
180
|
+
level: options.level,
|
|
181
|
+
index: options.index,
|
|
182
|
+
posInSet: options.posInSet,
|
|
183
|
+
setSize: options.setSize,
|
|
184
|
+
parentKey: options.parentKey,
|
|
185
|
+
content,
|
|
186
|
+
textValue,
|
|
187
|
+
disabled: element.props.disabled || element.props.isDisabled || false,
|
|
188
|
+
hasChildItems: element.props.hasChildItems || childItems.length > 0,
|
|
189
|
+
childItems,
|
|
190
|
+
props: element.props
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function splitTreeItemChildren(props) {
|
|
194
|
+
const childElements = [];
|
|
195
|
+
const contentChildren = [];
|
|
196
|
+
const visitChild = child => {
|
|
197
|
+
if (/*#__PURE__*/isValidElement(child) && isTreeItemElement(child)) {
|
|
198
|
+
childElements.push(child);
|
|
199
|
+
} else if (/*#__PURE__*/isValidElement(child) && isTreeSectionElement(child)) {
|
|
200
|
+
Children.forEach(child.props.children, sectionChild => {
|
|
201
|
+
visitChild(sectionChild);
|
|
202
|
+
});
|
|
203
|
+
} else if (/*#__PURE__*/isValidElement(child) && isFragmentElement(child)) {
|
|
204
|
+
Children.forEach(child.props.children, visitChild);
|
|
205
|
+
} else if (child !== null && child !== undefined) {
|
|
206
|
+
contentChildren.push(child);
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
Children.forEach(props.children, visitChild);
|
|
210
|
+
return {
|
|
211
|
+
content: props.title ?? contentChildren,
|
|
212
|
+
childElements
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
function countTreeItems(children) {
|
|
216
|
+
let count = 0;
|
|
217
|
+
const visitChild = child => {
|
|
218
|
+
if (/*#__PURE__*/isValidElement(child) && isTreeItemElement(child)) {
|
|
219
|
+
count += 1;
|
|
220
|
+
} else if (/*#__PURE__*/isValidElement(child) && isFragmentElement(child)) {
|
|
221
|
+
Children.forEach(child.props.children, visitChild);
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
Children.forEach(children, visitChild);
|
|
225
|
+
return count;
|
|
226
|
+
}
|
|
227
|
+
function getTextValue(node) {
|
|
228
|
+
if (typeof node === 'string' || typeof node === 'number') {
|
|
229
|
+
return String(node);
|
|
230
|
+
}
|
|
231
|
+
if (Array.isArray(node)) {
|
|
232
|
+
const text = node.map(child => getTextValue(child)).filter(Boolean).join('');
|
|
233
|
+
return text || undefined;
|
|
234
|
+
}
|
|
235
|
+
if (/*#__PURE__*/isValidElement(node)) {
|
|
236
|
+
return getTextValue(node.props.children);
|
|
237
|
+
}
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
function isTreeItemElement(child) {
|
|
241
|
+
return /*#__PURE__*/isValidElement(child) && child.type === TreeItem;
|
|
242
|
+
}
|
|
243
|
+
function isTreeSectionElement(child) {
|
|
244
|
+
return /*#__PURE__*/isValidElement(child) && child.type === TreeSection;
|
|
245
|
+
}
|
|
246
|
+
function isTreeHeaderElement(child) {
|
|
247
|
+
return /*#__PURE__*/isValidElement(child) && child.type === TreeHeader;
|
|
248
|
+
}
|
|
249
|
+
function isFragmentElement(child) {
|
|
250
|
+
return /*#__PURE__*/isValidElement(child) && child.type === Fragment;
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=collection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.js","names":["Children","Fragment","isValidElement","useMemo","TreeHeader","TreeItem","TreeSection","useTreeCollection","children","options","arguments","length","undefined","expandedKeys","Set","parsedTree","parseTreeChildren","allItems","flattenAllItems","visibleItems","flattenVisibleItems","visibleRows","flattenVisibleRows","renderLoadingState","nodes","itemIndex","visitChild","child","index","isFragmentElement","forEach","props","isTreeSectionElement","section","parseTreeSection","push","isTreeItemElement","item","parseTreeItem","level","parentKey","posInSet","setSize","countTreeItems","path","items","append","childItems","node","type","has","key","rows","shouldRenderLoadingRow","keyString","header","Boolean","hasChildItems","isLoading","element","sectionIndex","childrenArray","toArray","headerProps","itemElements","isTreeHeaderElement","map","itemElement","sectionProps","content","childElements","splitTreeItemChildren","id","join","childElement","textValue","getTextValue","title","process","env","NODE_ENV","console","warn","String","disabled","isDisabled","contentChildren","sectionChild","count","Array","isArray","text","filter"],"sources":["../../../src/Tree/collection.tsx"],"sourcesContent":["import type { ReactElement, ReactNode } from 'react';\nimport { Children, Fragment, isValidElement, useMemo } from 'react';\n\nimport { TreeHeader } from './TreeHeader';\nimport { TreeItem } from './TreeItem';\nimport { TreeSection } from './TreeSection';\nimport type {\n ParsedTreeItem,\n ParsedTreeNode,\n ParsedTreeSection,\n TreeHeaderProps,\n TreeItemProps,\n TreeKey,\n TreeProps,\n TreeSectionProps,\n TreeVisibleRow,\n} from './types';\n\nexport interface TreeCollectionState {\n parsedTree: ParsedTreeNode[];\n allItems: ParsedTreeItem[];\n visibleItems: ParsedTreeItem[];\n visibleRows: TreeVisibleRow[];\n}\n\nexport function useTreeCollection(\n children: ReactNode,\n options: {\n expandedKeys?: Iterable<TreeKey>;\n renderLoadingState?: TreeProps['renderLoadingState'];\n } = {}\n): TreeCollectionState {\n const expandedKeys = useMemo(\n () => new Set(options.expandedKeys ?? []),\n [options.expandedKeys]\n );\n const parsedTree = useMemo(() => parseTreeChildren(children), [children]);\n const allItems = useMemo(() => flattenAllItems(parsedTree), [parsedTree]);\n const visibleItems = useMemo(\n () => flattenVisibleItems(parsedTree, expandedKeys),\n [expandedKeys, parsedTree]\n );\n const visibleRows = useMemo(\n () => flattenVisibleRows(parsedTree, expandedKeys, options.renderLoadingState),\n [expandedKeys, options.renderLoadingState, parsedTree]\n );\n\n return {\n parsedTree,\n allItems,\n visibleItems,\n visibleRows,\n };\n}\n\nexport function parseTreeChildren(children: ReactNode): ParsedTreeNode[] {\n const nodes: ParsedTreeNode[] = [];\n let itemIndex = 0;\n\n const visitChild = (child: ReactNode, index: number) => {\n if (!isValidElement(child)) {\n return;\n }\n\n if (isFragmentElement(child)) {\n Children.forEach(child.props.children, visitChild);\n return;\n }\n\n if (isTreeSectionElement(child)) {\n const section = parseTreeSection(child, index);\n nodes.push(section);\n return;\n }\n\n if (isTreeItemElement(child)) {\n const item = parseTreeItem(child, {\n level: 1,\n parentKey: null,\n index: itemIndex,\n posInSet: itemIndex + 1,\n setSize: countTreeItems(children),\n path: [itemIndex],\n });\n itemIndex += 1;\n nodes.push(item);\n }\n };\n\n Children.forEach(children, visitChild);\n\n return nodes;\n}\n\nexport function flattenAllItems(nodes: ParsedTreeNode[]): ParsedTreeItem[] {\n const items: ParsedTreeItem[] = [];\n const append = (item: ParsedTreeItem) => {\n items.push(item);\n item.childItems.forEach(append);\n };\n\n nodes.forEach((node) => {\n if (node.type === 'item') {\n append(node);\n } else {\n node.items.forEach(append);\n }\n });\n\n return items;\n}\n\nexport function flattenVisibleItems(\n nodes: ParsedTreeNode[],\n expandedKeys: Set<TreeKey>\n): ParsedTreeItem[] {\n const items: ParsedTreeItem[] = [];\n const append = (item: ParsedTreeItem) => {\n items.push(item);\n if (expandedKeys.has(item.key)) {\n item.childItems.forEach(append);\n }\n };\n\n nodes.forEach((node) => {\n if (node.type === 'item') {\n append(node);\n } else {\n node.items.forEach(append);\n }\n });\n\n return items;\n}\n\nexport function flattenVisibleRows(\n nodes: ParsedTreeNode[],\n expandedKeys: Set<TreeKey>,\n renderLoadingState: TreeProps['renderLoadingState']\n): TreeVisibleRow[] {\n const rows: TreeVisibleRow[] = [];\n const append = (item: ParsedTreeItem) => {\n rows.push({\n type: 'item',\n key: item.key,\n item,\n });\n if (expandedKeys.has(item.key)) {\n item.childItems.forEach(append);\n if (shouldRenderLoadingRow(item, renderLoadingState)) {\n rows.push({\n type: 'loading',\n key: `${item.keyString}-loading`,\n item,\n level: item.level + 1,\n });\n }\n }\n };\n\n nodes.forEach((node) => {\n if (node.type === 'section') {\n if (node.header) {\n rows.push({\n type: 'section',\n key: node.key,\n section: node,\n });\n }\n node.items.forEach(append);\n } else {\n append(node);\n }\n });\n\n return rows;\n}\n\nexport function shouldRenderLoadingRow(\n item: ParsedTreeItem,\n renderLoadingState: TreeProps['renderLoadingState']\n) {\n return Boolean(\n renderLoadingState &&\n item.hasChildItems &&\n item.childItems.length === 0 &&\n item.props.isLoading\n );\n}\n\nfunction parseTreeSection(\n element: ReactElement<TreeSectionProps>,\n sectionIndex: number\n): ParsedTreeSection {\n const childrenArray = Children.toArray(element.props.children);\n let header: ReactNode = null;\n let headerProps: TreeHeaderProps = {};\n const itemElements: ReactElement<TreeItemProps>[] = [];\n\n const visitChild = (child: ReactNode) => {\n if (!isValidElement(child)) {\n return;\n }\n\n if (isFragmentElement(child)) {\n Children.forEach(child.props.children, visitChild);\n } else if (isTreeHeaderElement(child)) {\n header = child.props.children;\n headerProps = child.props;\n } else if (isTreeItemElement(child)) {\n itemElements.push(child);\n }\n };\n\n childrenArray.forEach(visitChild);\n\n const items = itemElements.map((itemElement, index) =>\n parseTreeItem(itemElement, {\n level: 1,\n parentKey: null,\n index,\n posInSet: index + 1,\n setSize: itemElements.length,\n path: [sectionIndex, index],\n })\n );\n\n return {\n type: 'section',\n key: `section-${sectionIndex}`,\n header,\n headerProps,\n sectionProps: element.props,\n items,\n };\n}\n\nfunction parseTreeItem(\n element: ReactElement<TreeItemProps>,\n options: {\n level: number;\n parentKey: TreeKey | null;\n index: number;\n posInSet: number;\n setSize: number;\n path: number[];\n }\n): ParsedTreeItem {\n const { content, childElements } = splitTreeItemChildren(element.props);\n const key = element.props.id ?? options.path.join('.');\n const childItems = childElements.map((childElement, index) =>\n parseTreeItem(childElement, {\n level: options.level + 1,\n parentKey: key,\n index,\n posInSet: index + 1,\n setSize: childElements.length,\n path: [...options.path, index],\n })\n );\n const textValue =\n element.props.textValue ??\n getTextValue(element.props.title) ??\n getTextValue(content) ??\n '';\n\n if (process.env.NODE_ENV !== 'production' && !textValue) {\n console.warn(\n 'A textValue, title, or text content is required for <TreeItem> elements to support typeahead.'\n );\n }\n\n return {\n type: 'item',\n key,\n keyString: String(key),\n level: options.level,\n index: options.index,\n posInSet: options.posInSet,\n setSize: options.setSize,\n parentKey: options.parentKey,\n content,\n textValue,\n disabled: element.props.disabled || element.props.isDisabled || false,\n hasChildItems: element.props.hasChildItems || childItems.length > 0,\n childItems,\n props: element.props,\n };\n}\n\nfunction splitTreeItemChildren(props: TreeItemProps) {\n const childElements: ReactElement<TreeItemProps>[] = [];\n const contentChildren: ReactNode[] = [];\n\n const visitChild = (child: ReactNode) => {\n if (isValidElement(child) && isTreeItemElement(child)) {\n childElements.push(child);\n } else if (isValidElement(child) && isTreeSectionElement(child)) {\n Children.forEach(child.props.children, (sectionChild) => {\n visitChild(sectionChild);\n });\n } else if (isValidElement(child) && isFragmentElement(child)) {\n Children.forEach(child.props.children, visitChild);\n } else if (child !== null && child !== undefined) {\n contentChildren.push(child);\n }\n };\n\n Children.forEach(props.children, visitChild);\n\n return {\n content: props.title ?? contentChildren,\n childElements,\n };\n}\n\nfunction countTreeItems(children: ReactNode) {\n let count = 0;\n const visitChild = (child: ReactNode) => {\n if (isValidElement(child) && isTreeItemElement(child)) {\n count += 1;\n } else if (isValidElement(child) && isFragmentElement(child)) {\n Children.forEach(child.props.children, visitChild);\n }\n };\n\n Children.forEach(children, visitChild);\n return count;\n}\n\nfunction getTextValue(node: ReactNode): string | undefined {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n const text = node\n .map((child) => getTextValue(child))\n .filter(Boolean)\n .join('');\n return text || undefined;\n }\n\n if (isValidElement(node)) {\n return getTextValue((node as ReactElement<any>).props.children);\n }\n\n return undefined;\n}\n\nfunction isTreeItemElement(\n child: ReactNode\n): child is ReactElement<TreeItemProps> {\n return isValidElement(child) && child.type === TreeItem;\n}\n\nfunction isTreeSectionElement(\n child: ReactNode\n): child is ReactElement<TreeSectionProps> {\n return isValidElement(child) && child.type === TreeSection;\n}\n\nfunction isTreeHeaderElement(\n child: ReactNode\n): child is ReactElement<TreeHeaderProps> {\n return isValidElement(child) && child.type === TreeHeader;\n}\n\nfunction isFragmentElement(child: ReactNode): child is ReactElement<{ children?: ReactNode }> {\n return isValidElement(child) && child.type === Fragment;\n}\n"],"mappings":"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","ignoreList":[]}
|