{"mappings":"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","sources":["packages/react-aria-components/src/Tree.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaTreeItemOptions, useTreeItem} from 'react-aria/useTree';\n\nimport {AriaTreeProps, useTree} from 'react-aria/useTree';\nimport {BaseCollection, CollectionNode, LoaderNode, SectionNode} from 'react-aria/private/collections/BaseCollection';\nimport {ButtonContext} from './Button';\nimport {CheckboxContext} from './Checkbox';\nimport {\n  ChildrenOrFunction,\n  ClassNameOrFunction,\n  ContextValue,\n  DEFAULT_SLOT,\n  dom,\n  DOMRenderProps,\n  Provider,\n  RenderProps,\n  SlotProps,\n  StyleRenderProps,\n  useContextProps,\n  useRenderProps\n} from './utils';\nimport {Collection} from 'react-aria/Collection';\nimport {CollectionBuilder, createBranchComponent, createLeafComponent} from 'react-aria/CollectionBuilder';\nimport {CollectionProps, CollectionRendererContext, DefaultCollectionRenderer, ItemRenderProps, SectionProps} from './Collection';\nimport {DisabledBehavior, DragPreviewRenderer, Expandable, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, MultipleSelection, PressEvents, RefObject, SelectionMode} from '@react-types/shared';\nimport {DragAndDropContext, DropIndicatorContext, useDndPersistedKeys, useRenderDropIndicator} from './DragAndDrop';\nimport {DragAndDropHooks} from './useDragAndDrop';\nimport {DraggableCollectionState} from 'react-stately/useDraggableCollectionState';\nimport {DraggableItemResult} from 'react-aria/useDraggableCollection';\nimport {DropIndicatorAria, DropIndicatorProps, DroppableCollectionResult} from 'react-aria/useDroppableCollection';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {GridListHeader, GridListHeaderContext, GridListHeaderInnerContext, GridListHeaderProps} from './GridList';\nimport {inertValue} from 'react-aria/private/utils/inertValue';\nimport {ListKeyboardDelegate} from 'react-aria/ListKeyboardDelegate';\nimport {LoadMoreSentinelProps, useLoadMoreSentinel} from 'react-aria/private/utils/useLoadMoreSentinel';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {Node, SelectionBehavior} from '@react-types/shared';\nimport React, {createContext, ForwardedRef, forwardRef, JSX, ReactNode, useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport {SelectionIndicatorContext} from './SelectionIndicator';\nimport {SharedElementTransition} from './SharedElementTransition';\nimport {TreeDropTargetDelegate} from './TreeDropTargetDelegate';\nimport {TreeState, useTreeState} from 'react-stately/useTreeState';\nimport {useCachedChildren} from 'react-aria/private/collections/useCachedChildren';\nimport {useCollator} from 'react-aria/useCollator';\nimport {useControlledState} from 'react-stately/useControlledState';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useGridListSection, useGridListSelectionCheckbox} from 'react-aria/useGridList';\nimport {useHover} from 'react-aria/useHover';\nimport {useId} from 'react-aria/useId';\nimport {useLocale} from 'react-aria/I18nProvider';\nimport {useObjectRef} from 'react-aria/useObjectRef';\nimport {useVisuallyHidden} from 'react-aria/VisuallyHidden';\n\nclass TreeCollection<T> extends BaseCollection<T> {\n  private expandedKeys: Set<Key> = new Set();\n\n  withExpandedKeys(lastExpandedKeys: Set<Key>, expandedKeys: Set<Key>) {\n    let collection = this.clone();\n    collection.expandedKeys = expandedKeys;\n\n    // Clone ancestor section nodes so React knows to re-render since the same item won't cause a new render but a clone creating a new object with the same value will\n    // Without this change, the items won't expand and collapse when virtualized inside a section\n    TreeCollection.cloneAncestorSections(expandedKeys, lastExpandedKeys, collection);\n    TreeCollection.cloneAncestorSections(lastExpandedKeys, expandedKeys, collection);   \n\n    collection.frozen = this.frozen;\n    return collection;\n  }\n\n  // diff lastExpandedKeys and expandedKeys so we only clone what has changed\n  private static cloneAncestorSections<T>(\n    keys: Iterable<Key>,\n    excludeSet: Set<Key>,\n    collection: TreeCollection<T>\n  ) {\n    for (let key of keys) {\n      if (!excludeSet.has(key)) {\n        let currentKey: Key | null = key;\n        while (currentKey != null) {\n          let item = collection.getItem(currentKey) as CollectionNode<T>;\n          if (item?.type === 'section') {\n            collection.keyMap.set(currentKey, item.clone());\n            break;\n          } else {\n            currentKey = item?.parentKey ?? null;\n          }\n        }\n      }\n    }\n  }\n\n  *[Symbol.iterator]() {\n    let firstKey = this.getFirstKey();\n    let node: Node<T> | null = firstKey != null ? this.getItem(firstKey) : null;\n\n    while (node) {\n      yield node as Node<T>;\n      if (node.type === 'section') {\n        node = node.nextKey ? this.getItem(node.nextKey) : null;\n      } else {\n        // This will include both item and content nodes\n        // We handle the content nodes in useCollectionRenderer and ListLayout\n        let key = this.getKeyAfter(node.key);\n        node = key ? this.getItem(key) : null;\n      }\n    }\n  }\n\n  getLastKey() {\n    // Find the deepest expanded child. We don't use collection.getLastKey() here\n    // because that will return the deepest child regardless of expandedKeys.\n    // Instead, start from the last top-level key and walk down.\n    let key = this.lastKey;\n    if (key == null) {\n      return null;\n    }\n\n    let node = this.getItem(key) as CollectionNode<T>;\n\n    while (node?.lastChildKey != null && (node.type !== 'item' || this.expandedKeys.has(node.key))) {\n      node = this.getItem(node.lastChildKey) as CollectionNode<T>;\n    }\n\n    return node?.key;\n  }\n\n  getKeyAfter(key: Key) {\n    let node = this.getItem(key) as CollectionNode<T>;\n    if (!node) {\n      return null;\n    }\n\n    if ((this.expandedKeys.has(node.key) || node.type !== 'item') && node.firstChildKey != null) {\n      return node.firstChildKey;\n    }\n\n    while (node) {\n      if (node.nextKey != null) {\n        return node.nextKey;\n      }\n\n      if (node.parentKey != null) {\n        node = this.getItem(node.parentKey) as CollectionNode<T>;\n      } else {\n        return null;\n      }\n    }\n\n    return null;\n  }\n\n  getKeyBefore(key: Key) {\n    let node = this.getItem(key) as CollectionNode<T>;\n    if (!node) {\n      return null;\n    }\n\n    if (node.prevKey != null) {\n      node = this.getItem(node.prevKey) as CollectionNode<T>;\n\n      // If the lastChildKey is expanded, check its lastChildKey\n      while (node && (node.type !== 'item' || this.expandedKeys.has(node.key)) && node.lastChildKey != null) {\n        node = this.getItem(node.lastChildKey) as CollectionNode<T>;\n      }\n\n      return node?.key ?? null;\n    }\n\n    return node.parentKey;\n  }\n\n  getChildren(key: Key): Iterable<Node<T>> {\n    let self = this;\n    return {\n      *[Symbol.iterator]() {\n        let parent = self.getItem(key) as CollectionNode<T> | null;\n        let node = parent?.firstChildKey != null ? self.getItem(parent.firstChildKey) as CollectionNode<T> : null;\n        if (parent && parent.type === 'section' && node) {\n          // Stop once either the node is null or the node is the parent's sibling\n          while (node && node.key !== parent.nextKey) {\n            yield self.getItem(node.key)!;\n            // This will include content nodes which we skip in ListLayout\n            let key = self.getKeyAfter(node.key);\n            node = key != null ? self.getItem(key)! as CollectionNode<T> : null;\n          }\n        } else {\n          while (node) {\n            yield node as Node<T>;\n            node = node.nextKey != null ? self.getItem(node.nextKey)! as CollectionNode<T> : null;\n          }\n        }\n      }\n    };\n  }\n\n  getTextValue(key: Key): string {\n    let item = this.getItem(key);\n    return item ? item.textValue : '';\n  }\n}\n\nexport interface TreeRenderProps {\n  /**\n   * Whether the tree has no items and should display its empty state.\n   * @selector [data-empty]\n   */\n  isEmpty: boolean,\n  /**\n   * Whether the tree is currently focused.\n   * @selector [data-focused]\n   */\n  isFocused: boolean,\n  /**\n   * Whether the tree is currently keyboard focused.\n   * @selector [data-focus-visible]\n   */\n  isFocusVisible: boolean,\n  /**\n   * The type of selection that is allowed in the collection.\n   * @selector [data-selection-mode=\"single | multiple\"]\n   */\n  selectionMode: SelectionMode,\n  /**\n   * Whether the tree allows dragging.\n   * @selector [data-allows-dragging]\n   */\n  allowsDragging: boolean,\n  /**\n   * State of the tree.\n   */\n  state: TreeState<unknown>\n}\n\nexport interface TreeEmptyStateRenderProps extends Omit<TreeRenderProps, 'isEmpty'> {}\n\nexport interface TreeProps<T> extends Omit<AriaTreeProps<T>, 'children'>, MultipleSelection, CollectionProps<T>, StyleRenderProps<TreeRenderProps>, SlotProps, Expandable, GlobalDOMAttributes<HTMLDivElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.\n   * @default 'react-aria-Tree'\n   */\n  className?: ClassNameOrFunction<TreeRenderProps>,\n  /**\n   * How multiple selection should behave in the tree.\n   * @default \"toggle\"\n   */\n  selectionBehavior?: SelectionBehavior,\n  /** Provides content to display when there are no items in the list. */\n  renderEmptyState?: (props: TreeEmptyStateRenderProps) => ReactNode,\n  /**\n   * Whether `disabledKeys` applies to all interactions, or only selection.\n   * @default 'all'\n   */\n  disabledBehavior?: DisabledBehavior,\n  /** The drag and drop hooks returned by `useDragAndDrop` used to enable drag and drop behavior for the Tree. */\n  dragAndDropHooks?: DragAndDropHooks<NoInfer<T>>\n}\n\n\nexport const TreeContext = createContext<ContextValue<TreeProps<any>, HTMLDivElement>>(null);\nexport const TreeStateContext = createContext<TreeState<any> | null>(null);\n\n/**\n * A tree provides users with a way to navigate nested hierarchical information, with support for keyboard navigation\n * and selection.\n */\nexport const Tree = /*#__PURE__*/ (forwardRef as forwardRefType)(function Tree<T extends object>(props: TreeProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n  // Render the portal first so that we have the collection by the time we render the DOM in SSR.\n  [props, ref] = useContextProps(props, ref, TreeContext);\n\n  return (\n    <CollectionBuilder content={<Collection {...props} />} createCollection={() => new TreeCollection<T>()}>\n      {collection => <TreeInner props={props} collection={collection} treeRef={ref} />}\n    </CollectionBuilder>\n  );\n});\n\nconst EXPANSION_KEYS = {\n  'expand': {\n    ltr: 'ArrowRight',\n    rtl: 'ArrowLeft'\n  },\n  'collapse': {\n    ltr: 'ArrowLeft',\n    rtl: 'ArrowRight'\n  }\n};\n\ninterface TreeInnerProps<T extends object> {\n  props: TreeProps<T>,\n  collection: TreeCollection<T>,\n  treeRef: RefObject<HTMLDivElement | null>\n}\n\nfunction TreeInner<T extends object>({props, collection, treeRef: ref}: TreeInnerProps<T>) {\n  const {dragAndDropHooks} = props;\n  let {direction} = useLocale();\n  let collator = useCollator({usage: 'search', sensitivity: 'base'});\n  let hasDragHooks = !!dragAndDropHooks?.useDraggableCollectionState;\n  let hasDropHooks = !!dragAndDropHooks?.useDroppableCollectionState;\n  let dragHooksProvided = useRef(hasDragHooks);\n  let dropHooksProvided = useRef(hasDropHooks);\n\n  useEffect(() => {\n    if (dragHooksProvided.current !== hasDragHooks) {\n      console.warn('Drag hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.');\n    }\n    if (dropHooksProvided.current !== hasDropHooks) {\n      console.warn('Drop hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.');\n    }\n  }, [hasDragHooks, hasDropHooks]);\n  let {\n    selectionMode = 'none',\n    expandedKeys: propExpandedKeys,\n    defaultExpandedKeys: propDefaultExpandedKeys,\n    onExpandedChange,\n    disabledBehavior = 'all'\n  } = props;\n  let {CollectionRoot, isVirtualized, layoutDelegate,  dropTargetDelegate: ctxDropTargetDelegate} = useContext(CollectionRendererContext);\n\n  // Kinda annoying that we have to replicate this code here as well as in useTreeState, but don't want to add\n  // flattenCollection stuff to useTreeState. Think about this later\n  let [expandedKeys, setExpandedKeys] = useControlledState(\n    propExpandedKeys ? new Set(propExpandedKeys) : undefined,\n    propDefaultExpandedKeys ? new Set(propDefaultExpandedKeys) : new Set(),\n    onExpandedChange\n  );\n\n  let [lastCollection, setLastCollection] = useState(collection);\n  let [lastExpandedKeys, setLastExpandedKeys] = useState(expandedKeys);\n  let [flattenedCollection, setFlattenedCollection] = useState(() => collection.withExpandedKeys(lastExpandedKeys, expandedKeys));\n\n\n  // if the lastExpandedKeys is not the same as the currentExpandedKeys or the collection has changed, then run this\n  if (!areSetsEqual(lastExpandedKeys, expandedKeys) || collection !== lastCollection) {\n    setFlattenedCollection(collection.withExpandedKeys(lastExpandedKeys, expandedKeys));\n    setLastCollection(collection);\n    setLastExpandedKeys(expandedKeys);\n  }\n\n  let state = useTreeState({\n    ...props,\n    selectionMode,\n    expandedKeys,\n    onExpandedChange: setExpandedKeys,\n    collection: flattenedCollection,\n    children: undefined,\n    disabledBehavior\n  });\n\n  let {gridProps} = useTree({\n    ...props,\n    isVirtualized,\n    layoutDelegate\n  }, state, ref);\n\n  let dragState: DraggableCollectionState | undefined = undefined;\n  let dropState: DroppableCollectionState | undefined = undefined;\n  let droppableCollection: DroppableCollectionResult | undefined = undefined;\n  let isRootDropTarget = false;\n  let dragPreview: JSX.Element | null = null;\n  let preview = useRef<DragPreviewRenderer>(null);\n\n  if (hasDragHooks && dragAndDropHooks) {\n    dragState = dragAndDropHooks.useDraggableCollectionState!({\n      collection: state.collection,\n      selectionManager: state.selectionManager,\n      preview: dragAndDropHooks.renderDragPreview ? preview : undefined\n    });\n    dragAndDropHooks.useDraggableCollection!({}, dragState, ref);\n\n    let DragPreview = dragAndDropHooks.DragPreview!;\n    dragPreview = dragAndDropHooks.renderDragPreview\n      ? <DragPreview ref={preview}>{dragAndDropHooks.renderDragPreview}</DragPreview>\n      : null;\n  }\n\n  let [treeDropTargetDelegate] = useState(() => new TreeDropTargetDelegate());\n  if (hasDropHooks && dragAndDropHooks) {\n    dropState = dragAndDropHooks.useDroppableCollectionState!({\n      collection: state.collection,\n      selectionManager: state.selectionManager\n    });\n    let dropTargetDelegate = dragAndDropHooks.dropTargetDelegate || ctxDropTargetDelegate || new dragAndDropHooks.ListDropTargetDelegate(state.collection, ref, {direction});\n    treeDropTargetDelegate.setup(dropTargetDelegate, state, direction);\n\n    let keyboardDelegate = new ListKeyboardDelegate({\n      collection: state.collection,\n      collator,\n      ref,\n      disabledKeys: state.selectionManager.disabledKeys,\n      disabledBehavior: state.selectionManager.disabledBehavior,\n      direction,\n      layoutDelegate\n    });\n\n    droppableCollection = dragAndDropHooks.useDroppableCollection!(\n      {\n        keyboardDelegate,\n        dropTargetDelegate: treeDropTargetDelegate,\n        onDropActivate: (e) => {\n          // Expand collapsed item when dragging over. For keyboard, allow collapsing.\n          if (e.target.type === 'item') {\n            let key = e.target.key;\n            let item = state.collection.getItem(key);\n            let isExpanded = expandedKeys.has(key);\n            if (item && item.hasChildNodes && (!isExpanded || dragAndDropHooks?.isVirtualDragging?.())) {\n              state.toggleKey(key);\n            }\n          }\n        },\n        onKeyDown: e => {\n          let target = dropState?.target;\n          if (target && target.type === 'item' && target.dropPosition === 'on') {\n            let item = state.collection.getItem(target.key);\n            if ((e.key === EXPANSION_KEYS['expand'][direction]) && item?.hasChildNodes && !state.expandedKeys.has(target.key)) {\n              state.toggleKey(target.key);\n            } else if ((e.key === EXPANSION_KEYS['collapse'][direction]) && item?.hasChildNodes && state.expandedKeys.has(target.key)) {\n              state.toggleKey(target.key);\n            }\n          }\n        }\n      },\n      dropState,\n      ref\n    );\n\n    isRootDropTarget = dropState.isDropTarget({type: 'root'});\n  }\n\n  let isTreeDraggable = !!(hasDragHooks && !dragState?.isDisabled);\n\n  let {focusProps, isFocused, isFocusVisible} = useFocusRing();\n  let renderValues = {\n    isEmpty: state.collection.size === 0,\n    isFocused,\n    isFocusVisible,\n    isDropTarget: isRootDropTarget,\n    selectionMode: state.selectionManager.selectionMode,\n    allowsDragging: !!isTreeDraggable,\n    state\n  };\n\n  let renderProps = useRenderProps({\n    ...props,\n    children: undefined,\n    defaultClassName: 'react-aria-Tree',\n    values: renderValues\n  });\n\n  let emptyState: ReactNode = null;\n  if (state.collection.size === 0 && props.renderEmptyState) {\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    let {isEmpty, ...values} = renderValues;\n    let content = props.renderEmptyState({...values});\n    let treeGridRowProps = {\n      'aria-level': 1\n    };\n\n    emptyState = (\n      <div role=\"row\" style={{display: 'contents'}} {...treeGridRowProps}>\n        <div role=\"gridcell\" style={{display: 'contents'}}>\n          {content}\n        </div>\n      </div>\n    );\n  }\n\n  let DOMProps = filterDOMProps(props, {global: true});\n\n  return (\n    <>\n      <FocusScope>\n        <dom.div\n          {...mergeProps(DOMProps, renderProps, gridProps, focusProps, droppableCollection?.collectionProps)}\n          ref={ref}\n          slot={props.slot || undefined}\n          data-empty={state.collection.size === 0 || undefined}\n          data-focused={isFocused || undefined}\n          data-drop-target={isRootDropTarget || undefined}\n          data-focus-visible={isFocusVisible || undefined}\n          data-selection-mode={state.selectionManager.selectionMode === 'none' ? undefined : state.selectionManager.selectionMode}\n          data-allows-dragging={!!isTreeDraggable || undefined}>\n          <Provider\n            values={[\n              [TreeStateContext, state],\n              [DragAndDropContext, {dragAndDropHooks, dragState, dropState}],\n              [DropIndicatorContext, {render: TreeDropIndicatorWrapper}]\n            ]}>\n            {hasDropHooks && <RootDropIndicator />}\n            <SharedElementTransition>\n              <CollectionRoot\n                collection={state.collection}\n                persistedKeys={useDndPersistedKeys(state.selectionManager, dragAndDropHooks, dropState)}\n                scrollRef={ref}\n                renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)} />\n            </SharedElementTransition>\n          </Provider>\n          {emptyState}\n        </dom.div>\n      </FocusScope>\n      {dragPreview}\n    </>\n  );\n}\n\n// TODO: readd the rest of the render props when tree supports them\nexport interface TreeItemRenderProps extends ItemRenderProps {\n  /**\n   * Whether the tree item is expanded.\n   * @selector [data-expanded]\n   */\n  isExpanded: boolean,\n  /**\n   * Whether the tree item has child tree items.\n   * @selector [data-has-child-items]\n   */\n  hasChildItems: boolean,\n  /**\n   * What level the tree item has within the tree.\n   * @selector [data-level=\"number\"]\n   */\n  level: number,\n  /**\n   * Whether the tree item's children have keyboard focus.\n   * @selector [data-focus-visible-within]\n   */\n  isFocusVisibleWithin: boolean,\n  /** The state of the tree. */\n  state: TreeState<unknown>,\n  /** The unique id of the tree row. */\n  id: Key\n}\n\nexport interface TreeItemContentRenderProps extends TreeItemRenderProps {}\n\n// The TreeItemContent is the one that accepts RenderProps because we would get much more complicated logic in TreeItem otherwise since we'd\n// need to do a bunch of check to figure out what is the Content and what are the actual collection elements (aka child rows) of the TreeItem\nexport interface TreeItemContentProps {\n  /** The children of the component. A function may be provided to alter the children based on component state. */\n  children: ChildrenOrFunction<TreeItemContentRenderProps>\n}\n\nclass TreeContentNode extends CollectionNode<any> {\n  static readonly type = 'content';\n}\n\nexport const TreeItemContent = /*#__PURE__*/ createLeafComponent(TreeContentNode, function TreeItemContent(props: TreeItemContentProps) {\n  let values = useContext(TreeItemContentContext)!;\n  let renderProps = useRenderProps({\n    children: props.children,\n    values\n  });\n  return (\n    <CollectionRendererContext.Provider value={DefaultCollectionRenderer}>\n      {renderProps.children}\n    </CollectionRendererContext.Provider>\n  );\n});\n\nexport const TreeItemContentContext = createContext<TreeItemContentRenderProps | null>(null);\n\nexport interface TreeItemProps<T = object> extends StyleRenderProps<TreeItemRenderProps>, LinkDOMProps, HoverEvents, PressEvents, Pick<AriaTreeItemOptions, 'hasChildItems'>, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.\n   * @default 'react-aria-TreeItem'\n   */\n  className?: ClassNameOrFunction<TreeItemRenderProps>,\n  /** The unique id of the tree row. */\n  id?: Key,\n  /** The object value that this tree item represents. When using dynamic collections, this is set automatically. */\n  value?: T,\n  /** A string representation of the tree item's contents, used for features like typeahead. */\n  textValue: string,\n  /** An accessibility label for this tree item. */\n  'aria-label'?: string,\n  /** The content of the tree item along with any nested children. Supports static nested tree items or use of a Collection to dynamically render nested tree items. */\n  children: ReactNode,\n  /** Whether the item is disabled. */\n  isDisabled?: boolean,\n  /**\n   * Handler that is called when a user performs an action on this tree item. The exact user event depends on\n   * the collection's `selectionBehavior` prop and the interaction modality.\n   */\n  onAction?: () => void\n}\n\nclass TreeItemNode extends CollectionNode<any> {\n  static readonly type = 'item';\n}\n\n/**\n * A TreeItem represents an individual item in a Tree.\n */\nexport const TreeItem = /*#__PURE__*/ createBranchComponent(TreeItemNode, <T extends object>(props: TreeItemProps<T>, ref: ForwardedRef<HTMLDivElement>, item: Node<T>) => {\n  let state = useContext(TreeStateContext)!;\n  ref = useObjectRef<HTMLDivElement>(ref);\n  let {dragAndDropHooks, dragState, dropState} = useContext(DragAndDropContext)!;\n\n  // TODO: remove this when we support description in tree row\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  let {rowProps, gridCellProps, expandButtonProps, descriptionProps, ...states} = useTreeItem({\n    node: item,\n    shouldSelectOnPressUp: !!dragState\n  }, state, ref);\n  let isExpanded = rowProps['aria-expanded'] === true;\n  let hasChildItems = props.hasChildItems || [...state.collection.getChildren!(item.key)]?.length > 1;\n  let level = rowProps['aria-level'] || 1;\n\n  let {hoverProps, isHovered} = useHover({\n    isDisabled: !states.allowsSelection && !states.hasAction,\n    onHoverStart: props.onHoverStart,\n    onHoverChange: props.onHoverChange,\n    onHoverEnd: props.onHoverEnd\n  });\n\n  let {isFocusVisible, focusProps} = useFocusRing();\n  let {\n    isFocusVisible: isFocusVisibleWithin,\n    focusProps: focusWithinProps\n  } = useFocusRing({within: true});\n  let {checkboxProps} = useGridListSelectionCheckbox(\n    {key: item.key},\n    state\n  );\n\n  let draggableItem: DraggableItemResult | null = null;\n  if (dragState && dragAndDropHooks) {\n    draggableItem = dragAndDropHooks.useDraggableItem!({key: item.key, hasDragButton: true}, dragState);\n  }\n\n  let dropIndicator: DropIndicatorAria | null = null;\n  let expandButtonRef = useRef<HTMLButtonElement>(null);\n  let dropIndicatorRef = useRef<HTMLDivElement>(null);\n  let activateButtonRef = useRef<HTMLDivElement>(null);\n  let {visuallyHiddenProps} = useVisuallyHidden();\n  if (dropState && dragAndDropHooks) {\n    dropIndicator = dragAndDropHooks.useDropIndicator!({\n      target: {type: 'item', key: item.key, dropPosition: 'on'},\n      activateButtonRef\n    }, dropState, dropIndicatorRef);\n  }\n\n  let isDragging = dragState && dragState.isDragging(item.key);\n  let isDropTarget = dropIndicator?.isDropTarget;\n\n  let selectionMode = state.selectionManager.selectionMode;\n  let selectionBehavior = state.selectionManager.selectionBehavior;\n  let renderPropValues = React.useMemo<TreeItemContentRenderProps>(() => ({\n    ...states,\n    isHovered,\n    isFocusVisible,\n    isExpanded,\n    hasChildItems,\n    level,\n    selectionMode,\n    selectionBehavior,\n    isFocusVisibleWithin,\n    state,\n    id: item.key,\n    allowsDragging: !!dragState,\n    isDragging,\n    isDropTarget\n  }), [states, isHovered, isFocusVisible, isExpanded, hasChildItems, level, isFocusVisibleWithin, state, item.key, dragState, isDragging, isDropTarget, selectionBehavior, selectionMode]);\n\n  let renderProps = useRenderProps({\n    ...props,\n    id: undefined,\n    children: item.rendered,\n    defaultClassName: 'react-aria-TreeItem',\n    defaultStyle: {\n      // @ts-ignore\n      '--tree-item-level': level\n    },\n    values: renderPropValues\n  });\n\n  useEffect(() => {\n    if (!item.textValue && process.env.NODE_ENV !== 'production') {\n      console.warn('A `textValue` prop is required for <TreeItem> elements in order to support accessibility features such as type to select.');\n    }\n  }, [item.textValue]);\n\n  useEffect(() => {\n    if (hasChildItems && !expandButtonRef.current && process.env.NODE_ENV !== 'production') {\n      console.warn('Expandable tree items must contain a expand button so screen reader users can expand/collapse the item.');\n    }\n  // eslint-disable-next-line\n  }, []);\n\n  let dragButtonRef = useRef<HTMLButtonElement>(null);\n  useEffect(() => {\n    if (dragState && !dragButtonRef.current && process.env.NODE_ENV !== 'production') {\n      console.warn('Draggable items in a Tree must contain a <Button slot=\"drag\"> element so that keyboard and screen reader users can drag them.');\n    }\n  // eslint-disable-next-line\n  }, []);\n\n  let children = useCachedChildren({\n    items: state.collection.getChildren!(item.key),\n    children: item => {\n      switch (item.type) {\n        case 'content': {\n          return item.render!(item);\n        }\n        // Skip item since we don't render the nested rows as children of the parent row, the flattened collection\n        // will render them each as siblings instead\n        case 'loader':\n        case 'item':\n          return <></>;\n        default:\n          throw new Error('Unsupported element type in TreeRow: ' + item.type);\n      }\n    }\n  });\n\n  let activateButtonId = useId();\n  let DOMProps = filterDOMProps(props as any, {global: true});\n  delete DOMProps.id;\n  delete DOMProps.onClick;\n\n  return (<>\n    {dropIndicator && !dropIndicator.isHidden && (\n    <div\n      role=\"row\"\n      aria-level={rowProps['aria-level']}\n      aria-expanded={rowProps['aria-expanded']}\n      aria-label={dropIndicator.dropIndicatorProps['aria-label']}>\n      <div role=\"gridcell\" aria-colindex={1} style={{display: 'contents'}}>\n        <div role=\"button\" {...visuallyHiddenProps} {...dropIndicator.dropIndicatorProps} ref={dropIndicatorRef} />\n        {rowProps['aria-expanded'] != null ? (\n          // Button to allow touch screen reader users to expand the item while dragging.\n          (<div\n            role=\"button\"\n            {...visuallyHiddenProps}\n            id={activateButtonId}\n            aria-label={expandButtonProps['aria-label']}\n            aria-labelledby={`${activateButtonId} ${rowProps.id}`}\n            tabIndex={-1}\n            ref={activateButtonRef} />)\n        ) : null}\n      </div>\n    </div>\n  )}\n    <dom.div\n      {...mergeProps(\n        DOMProps,\n        rowProps,\n        focusProps,\n        hoverProps,\n        focusWithinProps,\n        draggableItem?.dragProps\n      )}\n      {...renderProps}\n      ref={ref}\n    // TODO: missing selectionBehavior, hasAction and allowsSelection data attribute equivalents (available in renderProps). Do we want those?\n      data-expanded={(hasChildItems && isExpanded) || undefined}\n      data-has-child-items={hasChildItems || undefined}\n      data-level={level}\n      data-selected={states.isSelected || undefined}\n      data-disabled={states.isDisabled || undefined}\n      data-hovered={isHovered || undefined}\n      data-focused={states.isFocused || undefined}\n      data-focus-visible={isFocusVisible || undefined}\n      data-pressed={states.isPressed || undefined}\n      data-selection-mode={state.selectionManager.selectionMode === 'none' ? undefined : state.selectionManager.selectionMode}\n      data-allows-dragging={!!dragState || undefined}\n      data-dragging={isDragging || undefined}\n      data-drop-target={isDropTarget || undefined}>\n      <div {...gridCellProps} style={{display: 'contents'}}>\n        <Provider\n          values={[\n            [CheckboxContext, {\n              slots: {\n                selection: checkboxProps\n              }\n            }],\n          // TODO: support description in the tree row\n          // TODO: don't think I need to pass isExpanded to the button here since it can be sourced from the renderProps? Might be worthwhile passing it down?\n            [ButtonContext, {\n              slots: {\n                [DEFAULT_SLOT]: {},\n                chevron: {\n                  ...expandButtonProps,\n                  ref: expandButtonRef\n                },\n                drag: {\n                  ...draggableItem?.dragButtonProps,\n                  ref: dragButtonRef,\n                  style: {\n                    pointerEvents: 'none'\n                  }\n                }\n              }\n            }],\n            [TreeItemContentContext, {\n              ...renderPropValues\n            }],\n          [SelectionIndicatorContext, {isSelected: states.isSelected}]\n          ]}>\n          {children}\n        </Provider>\n      </div>\n    </dom.div>\n  </>);\n});\n\nexport interface TreeLoadMoreItemRenderProps {\n  /**\n   * What level the tree item has within the tree.\n   * @selector [data-level]\n   */\n  level: number\n}\n\nexport interface TreeLoadMoreItemProps extends Omit<LoadMoreSentinelProps, 'collection'>, RenderProps<TreeLoadMoreItemRenderProps> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.\n   * @default 'react-aria-TreeLoadMoreItem'\n   */\n  className?: ClassNameOrFunction<TreeLoadMoreItemRenderProps>,\n  /**\n   * The load more spinner to render when loading additional items.\n   */\n  children?: ChildrenOrFunction<TreeLoadMoreItemRenderProps>,\n  /**\n   * Whether or not the loading spinner should be rendered or not.\n   */\n  isLoading?: boolean\n}\n\nexport const TreeLoadMoreItem = createLeafComponent(LoaderNode, function TreeLoadingSentinel<T extends object>(props: TreeLoadMoreItemProps,  ref: ForwardedRef<HTMLDivElement>, item: Node<T>) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  let state = useContext(TreeStateContext)!;\n  let {isLoading, onLoadMore, scrollOffset, ...otherProps} = props;\n  let sentinelRef = useRef(null);\n  let memoedLoadMoreProps = useMemo(() => ({\n    onLoadMore,\n    // this collection will update anytime a row is expanded/collapsed becaused the flattenedRows will change.\n    // This means onLoadMore will trigger but that might be ok cause the user should have logic to handle multiple loadMore calls\n    collection: state?.collection,\n    sentinelRef,\n    scrollOffset\n  }), [onLoadMore, scrollOffset, state?.collection]);\n  useLoadMoreSentinel(memoedLoadMoreProps, sentinelRef);\n\n  ref = useObjectRef<HTMLDivElement>(ref);\n  let {rowProps, gridCellProps} = useTreeItem({node: item}, state, ref);\n  let level = rowProps['aria-level'] || 1;\n\n  // For now don't include aria-posinset and aria-setsize on loader since they aren't keyboard focusable\n  // Arguably shouldn't include them ever since it might be confusing to the user to include the loaders as part of the\n  // item count\n  let ariaProps = {\n    role: 'row',\n    'aria-level': rowProps['aria-level']\n  };\n\n  let renderProps = useRenderProps({\n    ...otherProps,\n    id: undefined,\n    children: item.rendered,\n    defaultClassName: 'react-aria-TreeLoader',\n    values: {\n      level\n    }\n  });\n  let style = {};\n\n  if (isVirtualized) {\n    style = {display: 'contents'};\n  }\n\n  return (\n    <>\n      {/* Alway render the sentinel. For now onus is on the user for styling when using flex + gap (this would introduce a gap even though it doesn't take room) */}\n      {/* @ts-ignore - compatibility with React < 19 */}\n      <div style={{position: 'relative', width: 0, height: 0}} inert={inertValue(true)} >\n        <div data-testid=\"loadMoreSentinel\" ref={sentinelRef} style={{position: 'absolute', height: 1, width: 1}} />\n      </div>\n      {isLoading && renderProps.children && (\n        <dom.div\n          ref={ref}\n          {...mergeProps(filterDOMProps(props as any), ariaProps)}\n          {...renderProps}\n          data-level={level}>\n          <div {...gridCellProps} style={style}>\n            {renderProps.children}\n          </div>\n        </dom.div>\n      )}\n    </>\n  );\n});\n\nfunction TreeDropIndicatorWrapper(props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>): JSX.Element | null {\n  ref = useObjectRef(ref);\n  let {dragAndDropHooks, dropState} = useContext(DragAndDropContext)!;\n  let buttonRef = useRef<HTMLDivElement>(null);\n  let {dropIndicatorProps, isHidden, isDropTarget} = dragAndDropHooks!.useDropIndicator!(\n    props,\n    dropState!,\n    buttonRef\n  );\n\n  if (isHidden) {\n    return null;\n  }\n\n  let level = dropState && props.target.type === 'item' ? (dropState.collection.getItem(props.target.key)?.level || 0) + 1 : 1;\n  return (\n    <TreeDropIndicatorForwardRef\n      {...props}\n      dropIndicatorProps={dropIndicatorProps}\n      isDropTarget={isDropTarget}\n      ref={ref}\n      buttonRef={buttonRef}\n      level={level} />\n  );\n}\n\ninterface TreeDropIndicatorProps extends DropIndicatorProps {\n  dropIndicatorProps: React.HTMLAttributes<HTMLElement>,\n  isDropTarget: boolean,\n  buttonRef: RefObject<HTMLDivElement | null>,\n  level: number\n}\n\nfunction TreeDropIndicator(props: TreeDropIndicatorProps, ref: ForwardedRef<HTMLElement>) {\n  let {\n    dropIndicatorProps,\n    isDropTarget,\n    buttonRef,\n    level,\n    ...otherProps\n  } = props;\n  let {visuallyHiddenProps} = useVisuallyHidden();\n  let renderProps = useRenderProps({\n    ...otherProps,\n    defaultClassName: 'react-aria-DropIndicator',\n    defaultStyle: {\n      position: 'relative',\n      // @ts-ignore\n      '--tree-item-level': level\n    },\n    values: {\n      isDropTarget\n    }\n  });\n\n  return (\n    <dom.div\n      {...renderProps}\n      role=\"row\"\n      aria-level={level}\n      ref={ref as RefObject<HTMLDivElement | null>}\n      data-drop-target={isDropTarget || undefined}>\n      <div role=\"gridcell\">\n        <div {...visuallyHiddenProps} role=\"button\" {...dropIndicatorProps} ref={buttonRef} />\n        {renderProps.children}\n      </div>\n    </dom.div>\n  );\n}\n\nconst TreeDropIndicatorForwardRef = forwardRef(TreeDropIndicator);\n\nfunction RootDropIndicator() {\n  let {dragAndDropHooks, dropState} = useContext(DragAndDropContext);\n  let ref = useRef<HTMLDivElement>(null);\n  let {dropIndicatorProps} = dragAndDropHooks!.useDropIndicator!({\n    target: {type: 'root'}\n  }, dropState!, ref);\n  let isDropTarget = dropState!.isDropTarget({type: 'root'});\n  let {visuallyHiddenProps} = useVisuallyHidden();\n\n  if (!isDropTarget && dropIndicatorProps['aria-hidden']) {\n    return null;\n  }\n\n  return (\n    <div role=\"row\" aria-hidden={dropIndicatorProps['aria-hidden']} style={{position: 'absolute'}}>\n      <div role=\"gridcell\">\n        <div role=\"button\" {...visuallyHiddenProps} {...dropIndicatorProps} ref={ref} />\n      </div>\n    </div>\n  );\n}\n\nexport interface GridListSectionProps<T> extends SectionProps<T>, DOMRenderProps<'div', undefined>  {}\n\n/**\n * A TreeSection represents a section within a Tree.\n */\nexport const TreeSection = /*#__PURE__*/ createBranchComponent(SectionNode, <T extends object>(props: GridListSectionProps<T>, ref: ForwardedRef<HTMLDivElement>, item: Node<T>) => {\n  let state = useContext(TreeStateContext)!;\n  let {CollectionBranch} = useContext(CollectionRendererContext);\n  let headingRef = useRef(null);\n  ref = useObjectRef<HTMLDivElement>(ref);\n  let {rowHeaderProps, rowProps, rowGroupProps} = useGridListSection({\n    'aria-label': props['aria-label'] ?? undefined\n  }, state, ref);\n  let renderProps = useRenderProps({\n    ...props,\n    id: undefined,\n    children: undefined,\n    defaultClassName: 'react-aria-TreeSection',\n    values: undefined\n  });\n\n  let DOMProps = filterDOMProps(props as any, {global: true});\n  delete DOMProps.id;\n\n  return (\n    <dom.div\n      {...mergeProps(DOMProps, renderProps, rowGroupProps)}\n      ref={ref}>\n      <Provider\n        values={[\n          [GridListHeaderContext, {...rowProps, ref: headingRef}],\n          [GridListHeaderInnerContext, {...rowHeaderProps}]\n        ]}>\n        <CollectionBranch\n          collection={state.collection}\n          parent={item} />\n      </Provider>\n    </dom.div>\n  );\n});\n\nexport const TreeHeader = (props: GridListHeaderProps): ReactNode => {\n  return (\n    <GridListHeader className=\"react-aria-TreeHeader\" {...props}>\n      {props.children}\n    </GridListHeader>\n  );\n};\n\nfunction areSetsEqual<T>(a: Set<T>, b: Set<T>) {\n  if (a.size !== b.size) {\n    return false;\n  }\n\n  for (let item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n  return true;\n}\n"],"names":[],"version":3,"file":"Tree.cjs.map"}