{"mappings":"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","sources":["packages/react-aria-components/src/Table.tsx"],"sourcesContent":["import {\n  AriaLabelingProps,\n  GlobalDOMAttributes,\n  HoverEvents,\n  Key,\n  LinkDOMProps,\n  PressEvents,\n  RefObject\n} from '@react-types/shared';\nimport {\n  BaseCollection,\n  CollectionNode,\n  FilterableNode,\n  LoaderNode\n} from 'react-aria/private/collections/BaseCollection';\nimport {buildHeaderRows} from 'react-stately/private/table/TableCollection';\nimport {ButtonContext} from './Button';\nimport {CheckboxContext, CheckboxFieldContext} from './Checkbox';\nimport {\n  ClassNameOrFunction,\n  ContextValue,\n  DEFAULT_SLOT,\n  dom,\n  DOMProps,\n  DOMRenderProps,\n  Provider,\n  RenderProps,\n  SlotProps,\n  StyleProps,\n  StyleRenderProps,\n  useContextProps,\n  useRenderProps\n} from './utils';\nimport {Collection} from 'react-aria/Collection';\nimport {\n  CollectionBuilder,\n  createBranchComponent,\n  createLeafComponent\n} from 'react-aria/CollectionBuilder';\nimport {\n  CollectionProps,\n  CollectionRendererContext,\n  DefaultCollectionRenderer,\n  ItemRenderProps\n} from './Collection';\nimport {ColumnSize, ColumnStaticSize} from 'react-stately/useTableState';\nimport {\n  DisabledBehavior,\n  Node,\n  SelectionBehavior,\n  SelectionMode,\n  SortDirection\n} from '@react-types/shared';\nimport {\n  DragAndDropContext,\n  DropIndicatorContext,\n  DropIndicatorProps,\n  useDndPersistedKeys,\n  useRenderDropIndicator\n} from './DragAndDrop';\nimport {DragAndDropHooks} from './useDragAndDrop';\nimport {DraggableCollectionState} from 'react-stately/useDraggableCollectionState';\nimport {DraggableItemResult} from 'react-aria/useDraggableCollection';\nimport {DragPreviewRenderer} from '@react-types/shared';\nimport {DropIndicatorAria, DroppableCollectionResult} from 'react-aria/useDroppableCollection';\nimport {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {\n  FieldInputContext,\n  SelectableCollectionContext,\n  SelectableCollectionContextValue\n} from './Autocomplete';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {GridNode} from 'react-stately/private/grid/GridCollection';\nimport {inertValue} from 'react-aria/private/utils/inertValue';\nimport intlMessages from '../intl/*.json';\nimport {isScrollable} from 'react-aria/private/utils/isScrollable';\nimport {ITableCollection} from 'react-stately/private/table/TableCollection';\nimport {ListKeyboardDelegate} from 'react-aria/ListKeyboardDelegate';\nimport {\n  LoadMoreSentinelProps,\n  useLoadMoreSentinel\n} from 'react-aria/private/utils/useLoadMoreSentinel';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {mergeRefs} from 'react-aria/mergeRefs';\nimport {MultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport React, {\n  createContext,\n  ForwardedRef,\n  forwardRef,\n  JSX,\n  ReactElement,\n  ReactNode,\n  useCallback,\n  useContext,\n  useEffect,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport {SelectionIndicatorContext} from './SelectionIndicator';\nimport {SharedElementTransition} from './SharedElementTransition';\nimport {\n  TableProps as SharedTableProps,\n  TableState,\n  UNSTABLE_useFilteredTableState,\n  useTableColumnResizeState,\n  useTableState\n} from 'react-stately/useTableState';\nimport {TableColumnResizeState} from 'react-stately/useTableState';\nimport {TreeDropTargetDelegate} from './TreeDropTargetDelegate';\nimport {useCachedChildren} from 'react-aria/private/collections/useCachedChildren';\nimport {useControlledState} from 'react-stately/useControlledState';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useHover} from 'react-aria/useHover';\nimport {useLayoutEffect} from 'react-aria/private/utils/useLayoutEffect';\n// @ts-ignore\nimport {useLocale} from 'react-aria/I18nProvider';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useMultipleSelectionState} from 'react-stately/useMultipleSelectionState';\nimport {useObjectRef} from 'react-aria/useObjectRef';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\nimport {\n  useTable,\n  useTableCell,\n  useTableColumnHeader,\n  useTableColumnResize,\n  useTableHeaderRow,\n  useTableRow,\n  useTableRowGroup,\n  useTableSelectAllCheckbox,\n  useTableSelectionCheckbox\n} from 'react-aria/useTable';\nimport {useVisuallyHidden} from 'react-aria/VisuallyHidden';\n\nclass TableCollection<T> extends BaseCollection<T> implements ITableCollection<T> {\n  headerRows: GridNode<T>[] = [];\n  columns: GridNode<T>[] = [];\n  rows: GridNode<T>[] = [];\n  rowHeaderColumnKeys: Set<Key> = new Set();\n  head = new TableHeaderNode<T>(-1);\n  columnsDirty = true;\n  expandedKeys: Set<Key> = new Set();\n\n  withExpandedKeys(expandedKeys: Set<Key>) {\n    let collection = this.clone();\n    collection.expandedKeys = expandedKeys;\n    collection.frozen = this.frozen;\n    collection.rows = Array.from(collection.getRows());\n    return collection;\n  }\n\n  addNode(node: CollectionNode<T>) {\n    super.addNode(node);\n\n    this.columnsDirty ||= node.type === 'column';\n    if (node.type === 'tableheader') {\n      this.head = node;\n    }\n  }\n\n  private getRows(): GridNode<T>[] {\n    let rows: GridNode<T>[] = [];\n    for (let child of this) {\n      if (child.type === 'tablebody' || child.type === 'tablefooter') {\n        rows.push(...this.getChildren(child.key));\n      }\n    }\n    return rows;\n  }\n\n  // backward compatibility\n  get body() {\n    for (let child of this) {\n      if (child.type === 'tablebody') {\n        return child;\n      }\n    }\n    return new TableBodyNode<T>(-2);\n  }\n\n  commit(firstKey: Key, lastKey: Key, isSSR = false) {\n    this.updateColumns(isSSR);\n\n    this.firstKey = firstKey;\n    this.lastKey = lastKey;\n    this.rows = [];\n    for (let row of this.getRows()) {\n      let lastChildKey = (row as CollectionNode<T>).lastChildKey;\n      if (lastChildKey != null) {\n        let lastCell = this.getItem(lastChildKey) as GridNode<T> | null;\n        while (lastCell && lastCell.type !== 'cell') {\n          lastCell =\n            lastCell.prevKey != null\n              ? (this.getItem(lastCell.prevKey) as GridNode<T> | null)\n              : null;\n        }\n        if (lastCell) {\n          let numberOfCellsInRow = (lastCell.colIndex ?? lastCell.index) + (lastCell.colSpan ?? 1);\n          if (numberOfCellsInRow !== this.columns.length && !isSSR) {\n            throw new Error(\n              `Cell count must match column count. Found ${numberOfCellsInRow} cells and ${this.columns.length} columns.`\n            );\n          }\n        }\n      }\n      this.rows.push(row);\n    }\n\n    super.commit(firstKey, lastKey, isSSR);\n  }\n\n  private updateColumns(isSSR: boolean) {\n    if (!this.columnsDirty) {\n      return;\n    }\n\n    this.rowHeaderColumnKeys = new Set();\n    this.columns = [];\n    let columnKeyMap = new Map();\n    let visit = (node: Node<T>) => {\n      switch (node.type) {\n        case 'column':\n          columnKeyMap.set(node.key, node);\n          if (!node.hasChildNodes) {\n            node.index = this.columns.length;\n            this.columns.push(node);\n\n            if (node.props.isRowHeader) {\n              this.rowHeaderColumnKeys.add(node.key);\n            }\n          }\n          break;\n      }\n      for (let child of this.getChildren(node.key)) {\n        visit(child);\n      }\n    };\n\n    for (let node of this.getChildren(this.head.key)) {\n      visit(node);\n    }\n\n    this.headerRows = buildHeaderRows(columnKeyMap, this.columns);\n    this.columnsDirty = false;\n    if (this.rowHeaderColumnKeys.size === 0 && this.columns.length > 0 && !isSSR) {\n      throw new Error(\n        'A table must have at least one Column with the isRowHeader prop set to true'\n      );\n    }\n  }\n\n  get columnCount() {\n    return this.columns.length;\n  }\n\n  *[Symbol.iterator]() {\n    let key = this.firstKey;\n    while (key != null) {\n      let node = this.getItem(key);\n      if (node) {\n        yield node;\n      }\n      key = node?.nextKey ?? null;\n    }\n  }\n\n  getFirstKey() {\n    for (let child of this) {\n      if (child.type === 'tablebody') {\n        return child.firstChildKey ?? null;\n      }\n    }\n    return null;\n  }\n\n  getLastKey() {\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 (\n      node?.lastChildKey != null &&\n      (node.type !== 'item' || this.expandedKeys.has(node.key))\n    ) {\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?.type === 'column') {\n      return node.nextKey ?? null;\n    }\n\n    if (!node) {\n      return null;\n    }\n\n    // If this is an expanded item, return the first child item if any.\n    if (node.type === 'item' && node.firstChildKey != null && this.expandedKeys.has(node.key)) {\n      let child = this.getItem(node.firstChildKey) as CollectionNode<T> | null;\n      while (child) {\n        if (child.type === 'item') {\n          return child.key;\n        }\n\n        child = child.nextKey != null ? (this.getItem(child.nextKey) as CollectionNode<T>) : null;\n      }\n    }\n\n    return super.getKeyAfter(key);\n  }\n\n  getKeyBefore(key: Key) {\n    let node = this.getItem(key) as CollectionNode<T>;\n    if (node?.type === 'column') {\n      return node.prevKey ?? null;\n    }\n\n    if (!node) {\n      return null;\n    }\n\n    let k: Key | null = null;\n    if (node.prevKey != null) {\n      node = this.getItem(node.prevKey) as CollectionNode<T>;\n\n      // Traverse to the deepest expanded child.\n      while (\n        node &&\n        (node.type !== 'item' || this.expandedKeys.has(node.key)) &&\n        node.lastChildKey != null\n      ) {\n        node = this.getItem(node.lastChildKey) as CollectionNode<T>;\n      }\n\n      k = node?.key ?? null;\n    }\n\n    if (k == null) {\n      k = node.parentKey;\n    }\n\n    if (k != null && this.getItem(k)?.type === 'tableheader') {\n      return null;\n    }\n\n    return k;\n  }\n\n  getChildren(key: Key): Iterable<Node<T>> {\n    let item = this.getItem(key);\n    if (!item) {\n      for (let row of this.headerRows) {\n        if (row.key === key) {\n          return row.childNodes;\n        }\n      }\n    }\n\n    // Flatten all rows into the body.\n    let self = this;\n    if (item?.type === 'tablebody' || item?.type === 'tablefooter') {\n      return {\n        *[Symbol.iterator]() {\n          let firstKey = item.firstChildKey;\n          let node: Node<T> | null = firstKey != null ? self.getItem(firstKey) : null;\n\n          while (node) {\n            yield node as Node<T>;\n            let key = self.getKeyAfter(node.key);\n            node = key != null ? self.getItem(key) : null;\n            if (node && node.parentKey === item.parentKey) {\n              break;\n            }\n          }\n        }\n      };\n    }\n\n    return {\n      *[Symbol.iterator]() {\n        let parent = self.getItem(key) as CollectionNode<T> | null;\n        let node =\n          parent?.firstChildKey != null\n            ? (self.getItem(parent.firstChildKey) as CollectionNode<T> | null)\n            : null;\n        while (node) {\n          yield node as Node<T>;\n          node =\n            node.nextKey != null ? (self.getItem(node.nextKey) as CollectionNode<T> | null) : null;\n\n          // Return only cells as children of rows (nested rows are flattened into the body).\n          if (parent?.type === 'item' && node?.type !== 'cell') {\n            break;\n          }\n        }\n      }\n    };\n  }\n\n  clone() {\n    let collection = super.clone();\n    collection.headerRows = this.headerRows;\n    collection.columns = this.columns;\n    collection.rows = this.rows;\n    collection.rowHeaderColumnKeys = this.rowHeaderColumnKeys;\n    collection.head = this.head;\n    return collection;\n  }\n\n  getTextValue(key: Key): string {\n    let row = this.getItem(key);\n    if (!row) {\n      return '';\n    }\n\n    // If the row has a textValue, use that.\n    if (row.textValue) {\n      return row.textValue;\n    }\n\n    // Otherwise combine the text of each of the row header columns.\n    let rowHeaderColumnKeys = this.rowHeaderColumnKeys;\n    let text: string[] = [];\n    for (let cell of this.getChildren(key)) {\n      let column = this.columns[cell.index!];\n      if (rowHeaderColumnKeys.has(column.key) && cell.textValue) {\n        text.push(cell.textValue);\n      }\n\n      if (text.length === rowHeaderColumnKeys.size) {\n        break;\n      }\n    }\n\n    return text.join(' ');\n  }\n}\n\ninterface ResizableTableContainerContextValue {\n  tableWidth: number;\n  tableRef: RefObject<HTMLTableElement | null>;\n  scrollRef: RefObject<HTMLElement | null>;\n  // Dependency inject useTableColumnResizeState so it doesn't affect bundle size unless you're using ResizableTableContainer.\n  useTableColumnResizeState: typeof useTableColumnResizeState;\n  onResizeStart?: (widths: Map<Key, ColumnSize>) => void;\n  onResize?: (widths: Map<Key, ColumnSize>) => void;\n  onResizeEnd?: (widths: Map<Key, ColumnSize>) => void;\n}\n\nconst ResizableTableContainerContext = createContext<ResizableTableContainerContextValue | null>(\n  null\n);\n\nexport interface ResizableTableContainerProps\n  extends DOMProps, DOMRenderProps<'div', undefined>, GlobalDOMAttributes<HTMLDivElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element.\n   *\n   * @default 'react-aria-ResizableTableContainer'\n   */\n  className?: string;\n  /**\n   * Handler that is called when a user starts a column resize.\n   */\n  onResizeStart?: (widths: Map<Key, ColumnSize>) => void;\n  /**\n   * Handler that is called when a user performs a column resize.\n   * Can be used with the width property on columns to put the column widths into\n   * a controlled state.\n   */\n  onResize?: (widths: Map<Key, ColumnSize>) => void;\n  /**\n   * Handler that is called after a user performs a column resize.\n   * Can be used to store the widths of columns for another future session.\n   */\n  onResizeEnd?: (widths: Map<Key, ColumnSize>) => void;\n}\n\nexport const ResizableTableContainer = forwardRef(function ResizableTableContainer(\n  props: ResizableTableContainerProps,\n  ref: ForwardedRef<HTMLDivElement>\n) {\n  let containerRef = useObjectRef(ref);\n  let tableRef = useRef<HTMLTableElement>(null);\n  let scrollRef = useRef<HTMLElement | null>(null);\n  let [width, setWidth] = useState(0);\n\n  useLayoutEffect(() => {\n    // Walk up the DOM from the Table to the ResizableTableContainer and stop\n    // when we reach the first scrollable element. This is what we'll measure\n    // to determine column widths (important due to width of scrollbars).\n    // This will usually be the ResizableTableContainer for native tables, and\n    // the Table itself for virtualized tables.\n    let table = tableRef.current as HTMLElement | null;\n    while (table && table !== containerRef.current && !isScrollable(table)) {\n      table = table.parentElement;\n    }\n    scrollRef.current = table;\n  }, [containerRef]);\n\n  useResizeObserver({\n    ref: scrollRef,\n    box: 'border-box',\n    onResize() {\n      setWidth(scrollRef.current?.clientWidth ?? 0);\n    }\n  });\n\n  useLayoutEffect(() => {\n    setWidth(scrollRef.current?.clientWidth ?? 0);\n  }, []);\n\n  let ctx = useMemo(\n    () => ({\n      tableRef,\n      scrollRef,\n      tableWidth: width,\n      useTableColumnResizeState,\n      onResizeStart: props.onResizeStart,\n      onResize: props.onResize,\n      onResizeEnd: props.onResizeEnd\n    }),\n    [tableRef, width, props.onResizeStart, props.onResize, props.onResizeEnd]\n  );\n\n  return (\n    <dom.div\n      render={props.render}\n      {...filterDOMProps(props, {global: true})}\n      ref={containerRef}\n      className={props.className || 'react-aria-ResizableTableContainer'}\n      style={props.style}\n      onScroll={props.onScroll}>\n      <ResizableTableContainerContext.Provider value={ctx}>\n        {props.children}\n      </ResizableTableContainerContext.Provider>\n    </dom.div>\n  );\n});\n\nexport const TableContext =\n  createContext<ContextValue<TableProps, HTMLTableElement | HTMLDivElement>>(null);\nexport const TableStateContext = createContext<TableState<any> | null>(null);\nexport const TableColumnResizeStateContext = createContext<TableColumnResizeState<unknown> | null>(\n  null\n);\n\nexport interface TableRenderProps {\n  /**\n   * Whether the table is currently focused.\n   *\n   * @selector [data-focused]\n   */\n  isFocused: boolean;\n  /**\n   * Whether the table is currently keyboard focused.\n   *\n   * @selector [data-focus-visible]\n   */\n  isFocusVisible: boolean;\n  /**\n   * Whether the table is currently the active drop target.\n   *\n   * @selector [data-drop-target]\n   */\n  isDropTarget: boolean;\n  /**\n   * State of the table.\n   */\n  state: TableState<unknown>;\n}\n\nexport interface TableProps\n  extends\n    Omit<SharedTableProps<any>, 'children'>,\n    StyleRenderProps<TableRenderProps, 'table' | 'div'>,\n    SlotProps,\n    AriaLabelingProps,\n    GlobalDOMAttributes<HTMLTableElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element. A function may be provided to compute the class based on component state.\n   *\n   * @default 'react-aria-Table'\n   */\n  className?: ClassNameOrFunction<TableRenderProps>;\n  /** The elements that make up the table. Includes the TableHeader, TableBody, Columns, and Rows. */\n  children?: ReactNode;\n  /**\n   * How multiple selection should behave in the collection.\n   *\n   * @default 'toggle'\n   */\n  selectionBehavior?: SelectionBehavior;\n  /**\n   * Whether `disabledKeys` applies to all interactions, or only selection.\n   *\n   * @default 'all'\n   */\n  disabledBehavior?: DisabledBehavior;\n  /** Handler that is called when a user performs an action on the row. */\n  onRowAction?: (key: Key) => void;\n  /**\n   * The drag and drop hooks returned by `useDragAndDrop` used to enable drag and drop behavior for\n   * the Table.\n   */\n  dragAndDropHooks?: DragAndDropHooks;\n}\n\n/**\n * A table displays data in rows and columns and enables a user to navigate its contents via\n * directional navigation keys, and optionally supports row selection and sorting.\n */\nexport const Table = forwardRef(function Table(\n  props: TableProps,\n  ref: ForwardedRef<HTMLTableElement | HTMLDivElement>\n) {\n  [props, ref] = useContextProps(props, ref, TableContext);\n\n  // Separate selection state so we have access to it from collection components via useTableOptions.\n  let selectionState = useMultipleSelectionState(props);\n  let {selectionBehavior, selectionMode, disallowEmptySelection} = selectionState;\n  let hasDragHooks = !!props.dragAndDropHooks?.useDraggableCollectionState;\n  let ctx = useMemo(\n    () => ({\n      selectionBehavior: selectionMode === 'none' ? null : selectionBehavior,\n      selectionMode,\n      disallowEmptySelection,\n      allowsDragging: hasDragHooks\n    }),\n    [selectionBehavior, selectionMode, disallowEmptySelection, hasDragHooks]\n  );\n\n  let content = (\n    <TableOptionsContext.Provider value={ctx}>\n      <Collection {...props} />\n    </TableOptionsContext.Provider>\n  );\n\n  return (\n    <CollectionBuilder content={content} createCollection={() => new TableCollection<any>()}>\n      {collection => (\n        <TableInner\n          props={props}\n          forwardedRef={ref as any}\n          selectionState={selectionState}\n          collection={collection}\n        />\n      )}\n    </CollectionBuilder>\n  );\n});\n\ninterface TableInnerProps {\n  props: TableProps & SelectableCollectionContextValue<unknown>;\n  forwardedRef: ForwardedRef<HTMLElement>;\n  selectionState: MultipleSelectionState;\n  collection: TableCollection<Node<object>>;\n}\n\nlet TableElementType = forwardRef(function TableElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <dom.div {...props} ref={ref} />;\n  }\n  return <dom.table {...props} ref={ref} />;\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\nfunction TableInner({props, forwardedRef: ref, selectionState, collection}: TableInnerProps) {\n  [props, ref] = useContextProps(props, ref, SelectableCollectionContext);\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  let {shouldUseVirtualFocus, disallowTypeAhead, filter, ...DOMCollectionProps} = props;\n  let tableContainerContext = useContext(ResizableTableContainerContext);\n  ref = useObjectRef(\n    useMemo(\n      () => mergeRefs(ref, tableContainerContext?.tableRef),\n      [ref, tableContainerContext?.tableRef]\n    )\n  );\n  let [expandedKeys, setExpandedKeys] = useControlledState(\n    props.expandedKeys ? new Set(props.expandedKeys) : undefined,\n    props.defaultExpandedKeys ? new Set(props.defaultExpandedKeys) : new Set(),\n    props.onExpandedChange\n  );\n  collection = useMemo(() => collection.withExpandedKeys(expandedKeys), [collection, expandedKeys]);\n\n  let tableState = useTableState({\n    ...DOMCollectionProps,\n    collection,\n    children: undefined,\n    UNSAFE_selectionState: selectionState,\n    expandedKeys,\n    onExpandedChange: setExpandedKeys\n  });\n\n  let filteredState = UNSTABLE_useFilteredTableState(tableState, filter);\n  let {\n    isVirtualized,\n    layoutDelegate,\n    dropTargetDelegate: ctxDropTargetDelegate,\n    CollectionRoot\n  } = useContext(CollectionRendererContext);\n  let {dragAndDropHooks} = props;\n  let {gridProps} = useTable(\n    {\n      ...DOMCollectionProps,\n      layoutDelegate,\n      isVirtualized\n    },\n    filteredState,\n    ref\n  );\n  let selectionManager = filteredState.selectionManager;\n  let hasDragHooks = !!dragAndDropHooks?.useDraggableCollectionState;\n  let hasDropHooks = !!dragAndDropHooks?.useDroppableCollectionState;\n  let dragHooksProvided = useRef(hasDragHooks);\n  let dropHooksProvided = useRef(hasDropHooks);\n  useEffect(() => {\n    if (process.env.NODE_ENV === 'production') {\n      return;\n    }\n    if (dragHooksProvided.current !== hasDragHooks) {\n      console.warn(\n        'Drag hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.'\n      );\n    }\n    if (dropHooksProvided.current !== hasDropHooks) {\n      console.warn(\n        'Drop hooks were provided during one render, but not another. This should be avoided as it may produce unexpected behavior.'\n      );\n    }\n  }, [hasDragHooks, hasDropHooks]);\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  let {direction} = useLocale();\n  let [treeDropTargetDelegate] = useState(() => new TreeDropTargetDelegate());\n\n  if (hasDragHooks && dragAndDropHooks) {\n    dragState = dragAndDropHooks.useDraggableCollectionState!({\n      collection: filteredState.collection,\n      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  if (hasDropHooks && dragAndDropHooks) {\n    dropState = dragAndDropHooks.useDroppableCollectionState!({\n      collection: filteredState.collection,\n      selectionManager\n    });\n\n    let keyboardDelegate = new ListKeyboardDelegate({\n      collection: filteredState.collection,\n      disabledKeys: selectionManager.disabledKeys,\n      disabledBehavior: selectionManager.disabledBehavior,\n      ref,\n      layoutDelegate\n    });\n    let dropTargetDelegate =\n      dragAndDropHooks.dropTargetDelegate ||\n      ctxDropTargetDelegate ||\n      new dragAndDropHooks.ListDropTargetDelegate(collection.rows, ref);\n    treeDropTargetDelegate.setup(dropTargetDelegate, tableState, direction);\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 = tableState.collection.getItem(key);\n            let isExpanded = expandedKeys.has(key);\n            if (\n              item &&\n              item.hasChildNodes &&\n              (!isExpanded || dragAndDropHooks?.isVirtualDragging?.())\n            ) {\n              tableState.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 = tableState.collection.getItem(target.key);\n            if (\n              e.key === EXPANSION_KEYS['expand'][direction] &&\n              item?.hasChildNodes &&\n              !tableState.expandedKeys.has(target.key)\n            ) {\n              tableState.toggleKey(target.key);\n            } else if (\n              e.key === EXPANSION_KEYS['collapse'][direction] &&\n              item?.hasChildNodes &&\n              tableState.expandedKeys.has(target.key)\n            ) {\n              tableState.toggleKey(target.key);\n            }\n          }\n        }\n      },\n      dropState,\n      ref\n    );\n\n    isRootDropTarget = dropState.isDropTarget({type: 'root'});\n  }\n\n  let {focusProps, isFocused, isFocusVisible} = useFocusRing();\n  let renderProps = useRenderProps({\n    ...props,\n    children: undefined,\n    defaultClassName: 'react-aria-Table',\n    values: {\n      isDropTarget: isRootDropTarget,\n      isFocused,\n      isFocusVisible,\n      state: filteredState\n    }\n  });\n\n  let isListDraggable = !!(hasDragHooks && !dragState?.isDisabled);\n\n  let style = renderProps.style;\n  let layoutState: TableColumnResizeState<unknown> | null = null;\n  if (tableContainerContext) {\n    layoutState = tableContainerContext.useTableColumnResizeState(\n      {\n        tableWidth: tableContainerContext.tableWidth\n      },\n      filteredState\n    );\n    if (!isVirtualized) {\n      style = {\n        ...style,\n        tableLayout: 'fixed',\n        // due to https://bugzilla.mozilla.org/show_bug.cgi?id=1959353, we can't use \"fit-content\".\n        // Causes the table columns to grow to fill the available space in Firefox, ignoring user set column widths\n        width: 'min-content'\n      };\n    }\n  }\n\n  let DOMProps = filterDOMProps(props, {global: true});\n\n  return (\n    <Provider\n      values={[\n        [TableStateContext, filteredState],\n        [TableColumnResizeStateContext, layoutState],\n        [DragAndDropContext, {dragAndDropHooks, dragState, dropState}],\n        [DropIndicatorContext, {render: TableDropIndicatorWrapper}],\n        [SelectableCollectionContext, null],\n        [FieldInputContext, null]\n      ]}>\n      <FocusScope>\n        <TableElementType\n          {...mergeProps(\n            DOMProps,\n            renderProps,\n            gridProps,\n            focusProps,\n            droppableCollection?.collectionProps\n          )}\n          style={style}\n          ref={ref as RefObject<HTMLTableElement>}\n          slot={props.slot || undefined}\n          onScroll={props.onScroll}\n          data-allows-dragging={isListDraggable || undefined}\n          data-drop-target={isRootDropTarget || undefined}\n          data-focused={isFocused || undefined}\n          data-focus-visible={isFocusVisible || undefined}>\n          <SharedElementTransition>\n            <CollectionRoot\n              collection={filteredState.collection}\n              scrollRef={tableContainerContext?.scrollRef ?? ref}\n              persistedKeys={useDndPersistedKeys(selectionManager, dragAndDropHooks, dropState)}\n            />\n          </SharedElementTransition>\n        </TableElementType>\n      </FocusScope>\n      {dragPreview}\n    </Provider>\n  );\n}\n\nexport interface TableOptionsContextValue {\n  /** The type of selection that is allowed in the table. */\n  selectionMode: SelectionMode;\n  /** The selection behavior for the table. If selectionMode is `\"none\"`, this will be `null`. */\n  selectionBehavior: SelectionBehavior | null;\n  /** Whether the table allows empty selection. */\n  disallowEmptySelection: boolean;\n  /** Whether the table allows rows to be dragged. */\n  allowsDragging: boolean;\n}\n\nconst TableOptionsContext = createContext<TableOptionsContextValue | null>(null);\n\n/**\n * Returns options from the parent `<Table>` component.\n */\nexport function useTableOptions(): TableOptionsContextValue {\n  return useContext(TableOptionsContext)!;\n}\n\nexport interface TableHeaderRenderProps {\n  /**\n   * Whether the table header is currently hovered with a mouse.\n   *\n   * @selector [data-hovered]\n   */\n  isHovered: boolean;\n}\n\nexport interface TableHeaderProps<T>\n  extends\n    StyleRenderProps<TableHeaderRenderProps, 'thead' | 'div'>,\n    HoverEvents,\n    GlobalDOMAttributes<HTMLTableSectionElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element. A function may be provided to compute the class based on component state.\n   *\n   * @default 'react-aria-TableHeader'\n   */\n  className?: ClassNameOrFunction<TableHeaderRenderProps>;\n  /** A list of table columns. */\n  columns?: Iterable<T>;\n  /**\n   * A list of `Column(s)` or a function. If the latter, a list of columns must be provided using\n   * the `columns` prop.\n   */\n  children?: ReactNode | ((item: T) => ReactElement);\n  /** Values that should invalidate the column cache when using dynamic collections. */\n  dependencies?: ReadonlyArray<any>;\n}\n\nclass TableHeaderNode<T> extends CollectionNode<T> {\n  static readonly type = 'tableheader';\n}\n\nlet THeadElementType = forwardRef(function THeadElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <dom.div {...props} ref={ref} />;\n  }\n  return <dom.thead {...props} ref={ref} />;\n});\n\n/**\n * A header within a `<Table>`, containing the table columns.\n */\nexport const TableHeader = /*#__PURE__*/ createBranchComponent(\n  TableHeaderNode,\n  <T extends any>(\n    props: TableHeaderProps<T>,\n    ref: ForwardedRef<HTMLTableSectionElement | HTMLDivElement>\n  ) => {\n    let collection = useContext(TableStateContext)!.collection as TableCollection<unknown>;\n    let headerRows = useCachedChildren({\n      items: collection.headerRows,\n      children: useCallback((item: Node<unknown>) => {\n        switch (item.type) {\n          case 'headerrow':\n            return <TableHeaderRow item={item} />;\n          default:\n            throw new Error('Unsupported node type in TableHeader: ' + item.type);\n        }\n      }, [])\n    });\n\n    let {rowGroupProps} = useTableRowGroup();\n    let {hoverProps, isHovered} = useHover({\n      onHoverStart: props.onHoverStart,\n      onHoverChange: props.onHoverChange,\n      onHoverEnd: props.onHoverEnd\n    });\n\n    let renderProps = useRenderProps({\n      ...props,\n      children: undefined,\n      defaultClassName: 'react-aria-TableHeader',\n      values: {\n        isHovered\n      }\n    });\n\n    return (\n      <THeadElementType\n        {...mergeProps(filterDOMProps(props, {global: true}), rowGroupProps, hoverProps)}\n        {...renderProps}\n        ref={ref as any}\n        data-hovered={isHovered || undefined}>\n        {headerRows}\n      </THeadElementType>\n    );\n  },\n  props => (\n    <Collection dependencies={props.dependencies} items={props.columns}>\n      {props.children}\n    </Collection>\n  )\n);\n\nlet TableHeaderRowElementType = forwardRef(function TableHeaderRowElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <div {...props} ref={ref} />;\n  }\n  return <tr {...props} ref={ref} />;\n});\n\nfunction TableHeaderRow({item}: {item: GridNode<any>}) {\n  let ref = useRef<HTMLTableRowElement>(null);\n  let state = useContext(TableStateContext)!;\n  let {isVirtualized, CollectionBranch} = useContext(CollectionRendererContext);\n  let {rowProps} = useTableHeaderRow({node: item, isVirtualized}, state, ref);\n  let {checkboxProps} = useTableSelectAllCheckbox(state);\n\n  return (\n    <TableHeaderRowElementType {...rowProps} ref={ref}>\n      <Provider\n        values={[\n          [\n            CheckboxContext,\n            {\n              slots: {\n                selection: checkboxProps\n              }\n            }\n          ],\n          [\n            CheckboxFieldContext,\n            {\n              slots: {\n                selection: checkboxProps\n              }\n            }\n          ]\n        ]}>\n        <CollectionBranch collection={state.collection} parent={item} />\n      </Provider>\n    </TableHeaderRowElementType>\n  );\n}\n\nexport interface ColumnRenderProps {\n  /**\n   * Whether the column is currently hovered with a mouse.\n   *\n   * @selector [data-hovered]\n   */\n  isHovered: boolean;\n  /**\n   * Whether the column is currently in a pressed state.\n   *\n   * @selector [data-pressed]\n   */\n  isPressed: boolean;\n  /**\n   * Whether the column is currently focused.\n   *\n   * @selector [data-focused]\n   */\n  isFocused: boolean;\n  /**\n   * Whether the column is currently keyboard focused.\n   *\n   * @selector [data-focus-visible]\n   */\n  isFocusVisible: boolean;\n  /**\n   * Whether the column allows sorting.\n   *\n   * @selector [data-allows-sorting]\n   */\n  allowsSorting: boolean;\n  /**\n   * The current sort direction.\n   *\n   * @selector [data-sort-direction=\"ascending | descending\"]\n   */\n  sortDirection: SortDirection | undefined;\n  /**\n   * Whether the column is currently being resized.\n   *\n   * @selector [data-resizing]\n   */\n  isResizing: boolean;\n  /**\n   * Triggers sorting for this column in the given direction.\n   */\n  sort(direction: SortDirection): void;\n  /**\n   * Starts column resizing if the table is contained in a `<ResizableTableContainer>` element.\n   */\n  startResize(): void;\n}\n\nexport interface ColumnProps\n  extends\n    RenderProps<ColumnRenderProps, 'th' | 'div'>,\n    GlobalDOMAttributes<HTMLTableHeaderCellElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element. A function may be provided to compute the class based on component state.\n   *\n   * @default 'react-aria-Column'\n   */\n  className?: ClassNameOrFunction<ColumnRenderProps>;\n  /** The unique id of the column. */\n  id?: Key;\n  /** Whether the column allows sorting. */\n  allowsSorting?: boolean;\n  /**\n   * Whether a column is a [row header](https://www.w3.org/TR/wai-aria-1.1/#rowheader) and should be\n   * announced by assistive technology during row navigation.\n   */\n  isRowHeader?: boolean;\n  /** A string representation of the column's contents, used for accessibility announcements. */\n  textValue?: string;\n  /**\n   * The width of the column. This prop only applies when the `<Table>` is wrapped in a\n   * `<ResizableTableContainer>`.\n   */\n  width?: ColumnSize | null;\n  /**\n   * The default width of the column. This prop only applies when the `<Table>` is wrapped in a\n   * `<ResizableTableContainer>`.\n   */\n  defaultWidth?: ColumnSize | null;\n  /**\n   * The minimum width of the column. This prop only applies when the `<Table>` is wrapped in a\n   * `<ResizableTableContainer>`.\n   */\n  minWidth?: ColumnStaticSize | null;\n  /**\n   * The maximum width of the column. This prop only applies when the `<Table>` is wrapped in a\n   * `<ResizableTableContainer>`.\n   */\n  maxWidth?: ColumnStaticSize | null;\n}\n\nclass TableColumnNode extends CollectionNode<unknown> {\n  static readonly type = 'column';\n}\n\nlet ColumnElementType = forwardRef(function ColumnElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <dom.div {...props} ref={ref} />;\n  }\n  return <dom.th {...props} ref={ref} />;\n});\n\n/**\n * A column within a `<Table>`.\n */\nexport const Column = /*#__PURE__*/ createLeafComponent(\n  TableColumnNode,\n  (\n    props: ColumnProps,\n    forwardedRef: ForwardedRef<HTMLTableCellElement | HTMLDivElement>,\n    column: GridNode<unknown>\n  ) => {\n    let ref = useObjectRef<HTMLTableCellElement | HTMLDivElement>(forwardedRef);\n    let state = useContext(TableStateContext)!;\n    let {isVirtualized} = useContext(CollectionRendererContext);\n    let {columnHeaderProps, isPressed} = useTableColumnHeader(\n      {node: column, isVirtualized},\n      state,\n      ref\n    );\n    let {isFocused, isFocusVisible, focusProps} = useFocusRing();\n\n    let layoutState = useContext(TableColumnResizeStateContext);\n    let isResizing = false;\n    if (layoutState) {\n      isResizing = layoutState.resizingColumn === column.key;\n    } else if (process.env.NODE_ENV !== 'production') {\n      for (let prop in ['width', 'defaultWidth', 'minWidth', 'maxWidth']) {\n        if (prop in column.props) {\n          console.warn(\n            `The ${prop} prop on a <Column> only applies when a <Table> is wrapped in a <ResizableTableContainer>. If you aren't using column resizing, you can set the width of a column with CSS.`\n          );\n        }\n      }\n    }\n\n    let {hoverProps, isHovered} = useHover({isDisabled: !props.allowsSorting});\n    let renderProps = useRenderProps({\n      ...props,\n      id: undefined,\n      children: column.rendered,\n      defaultClassName: 'react-aria-Column',\n      values: {\n        isHovered,\n        isPressed,\n        isFocused,\n        isFocusVisible,\n        allowsSorting: column.props.allowsSorting,\n        sortDirection:\n          state.sortDescriptor?.column === column.key ? state.sortDescriptor.direction : undefined,\n        isResizing,\n        startResize: () => {\n          if (layoutState) {\n            layoutState.startResize(column.key);\n            state.setKeyboardNavigationDisabled(true);\n          } else {\n            throw new Error(\n              'Wrap your <Table> in a <ResizableTableContainer> to enable column resizing'\n            );\n          }\n        },\n        sort: direction => {\n          state.sort(column.key, direction);\n        }\n      }\n    });\n\n    let style = renderProps.style;\n    if (layoutState) {\n      style = {...style, width: layoutState.getColumnWidth(column.key)};\n    }\n\n    let DOMProps = filterDOMProps(props as any, {global: true});\n    delete DOMProps.id;\n\n    return (\n      <ColumnElementType\n        {...mergeProps(DOMProps, columnHeaderProps, focusProps, hoverProps)}\n        {...renderProps}\n        style={style}\n        ref={ref as any}\n        data-hovered={isHovered || undefined}\n        data-pressed={isPressed || undefined}\n        data-focused={isFocused || undefined}\n        data-focus-visible={isFocusVisible || undefined}\n        data-resizing={isResizing || undefined}\n        data-allows-sorting={column.props.allowsSorting || undefined}\n        data-sort-direction={\n          state.sortDescriptor?.column === column.key ? state.sortDescriptor.direction : undefined\n        }>\n        <Provider\n          values={[\n            [ColumnResizerContext, {column, triggerRef: ref}],\n            [CollectionRendererContext, DefaultCollectionRenderer]\n          ]}>\n          {renderProps.children}\n        </Provider>\n      </ColumnElementType>\n    );\n  }\n);\n\nexport interface ColumnResizerRenderProps {\n  /**\n   * Whether the resizer is currently hovered with a mouse.\n   *\n   * @selector [data-hovered]\n   */\n  isHovered: boolean;\n  /**\n   * Whether the resizer is currently focused.\n   *\n   * @selector [data-focused]\n   */\n  isFocused: boolean;\n  /**\n   * Whether the resizer is currently keyboard focused.\n   *\n   * @selector [data-focus-visible]\n   */\n  isFocusVisible: boolean;\n  /**\n   * Whether the resizer is currently being resized.\n   *\n   * @selector [data-resizing]\n   */\n  isResizing: boolean;\n  /**\n   * The direction that the column is currently resizable.\n   *\n   * @selector [data-resizable-direction=\"right | left | both\"]\n   */\n  resizableDirection: 'right' | 'left' | 'both';\n}\n\nexport interface ColumnResizerProps\n  extends HoverEvents, RenderProps<ColumnResizerRenderProps>, GlobalDOMAttributes<HTMLDivElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element. A function may be provided to compute the class based on component state.\n   *\n   * @default 'react-aria-ColumnResizer'\n   */\n  className?: ClassNameOrFunction<ColumnResizerRenderProps>;\n  /** A custom accessibility label for the resizer. */\n  'aria-label'?: string;\n}\n\ninterface ColumnResizerContextValue {\n  column: GridNode<unknown>;\n  triggerRef: RefObject<HTMLDivElement | null>;\n}\n\nconst ColumnResizerContext = createContext<ColumnResizerContextValue | null>(null);\n\nexport const ColumnResizer = forwardRef(function ColumnResizer(\n  props: ColumnResizerProps,\n  ref: ForwardedRef<HTMLDivElement>\n) {\n  let layoutState = useContext(TableColumnResizeStateContext);\n  if (!layoutState) {\n    throw new Error('Wrap your <Table> in a <ResizableTableContainer> to enable column resizing');\n  }\n  let stringFormatter = useLocalizedStringFormatter(intlMessages, 'react-aria-components');\n\n  let {onResizeStart, onResize, onResizeEnd} = useContext(ResizableTableContainerContext)!;\n  let {column, triggerRef} = useContext(ColumnResizerContext)!;\n  let inputRef = useRef<HTMLInputElement>(null);\n  let {resizerProps, inputProps, isResizing} = useTableColumnResize(\n    {\n      column,\n      'aria-label': props['aria-label'] || stringFormatter.format('tableResizer'),\n      onResizeStart,\n      onResize,\n      onResizeEnd,\n      triggerRef\n    },\n    layoutState,\n    inputRef\n  );\n  let {focusProps, isFocused, isFocusVisible} = useFocusRing();\n  let {hoverProps, isHovered} = useHover(props);\n\n  let isEResizable =\n    layoutState.getColumnMinWidth(column.key) >= layoutState.getColumnWidth(column.key);\n  let isWResizable =\n    layoutState.getColumnMaxWidth(column.key) <= layoutState.getColumnWidth(column.key);\n  let {direction} = useLocale();\n  let resizableDirection: ColumnResizerRenderProps['resizableDirection'] = 'both';\n  if (isEResizable) {\n    resizableDirection = direction === 'rtl' ? 'right' : 'left';\n  } else if (isWResizable) {\n    resizableDirection = direction === 'rtl' ? 'left' : 'right';\n  } else {\n    resizableDirection = 'both';\n  }\n\n  let objectRef = useObjectRef(ref);\n  let [cursor, setCursor] = useState('');\n  useEffect(() => {\n    if (!objectRef.current) {\n      return;\n    }\n    let style = window.getComputedStyle(objectRef.current);\n    setCursor(style.cursor);\n  }, [objectRef, resizableDirection]);\n\n  let renderProps = useRenderProps({\n    ...props,\n    defaultClassName: 'react-aria-ColumnResizer',\n    values: {\n      isFocused,\n      isFocusVisible,\n      isResizing,\n      isHovered,\n      resizableDirection\n    }\n  });\n\n  let [isMouseDown, setMouseDown] = useState(false);\n  let onPointerDown = (e: PointerEvent) => {\n    if (e.pointerType === 'mouse') {\n      setMouseDown(true);\n    }\n  };\n\n  if (!isResizing && isMouseDown) {\n    setMouseDown(false);\n  }\n\n  let DOMProps = filterDOMProps(props, {global: true});\n\n  return (\n    <dom.div\n      ref={objectRef}\n      role=\"presentation\"\n      {...mergeProps(DOMProps, renderProps, resizerProps, {onPointerDown}, hoverProps)}\n      data-hovered={isHovered || undefined}\n      data-focused={isFocused || undefined}\n      data-focus-visible={isFocusVisible || undefined}\n      data-resizing={isResizing || undefined}\n      data-resizable-direction={resizableDirection}>\n      {renderProps.children}\n      <input ref={inputRef} {...mergeProps(inputProps, focusProps)} />\n      {isResizing &&\n        isMouseDown &&\n        ReactDOM.createPortal(\n          <div style={{position: 'fixed', top: 0, left: 0, bottom: 0, right: 0, cursor}} />,\n          document.body\n        )}\n    </dom.div>\n  );\n});\n\nexport interface TableBodyRenderProps {\n  /**\n   * Whether the table body has no rows and should display its empty state.\n   *\n   * @selector [data-empty]\n   */\n  isEmpty: boolean;\n  /**\n   * Whether the Table is currently the active drop target.\n   *\n   * @selector [data-drop-target]\n   */\n  isDropTarget: boolean;\n}\n\nexport interface TableBodyProps<T>\n  extends\n    Omit<CollectionProps<T>, 'disabledKeys'>,\n    StyleRenderProps<TableBodyRenderProps, 'tbody' | 'div'>,\n    GlobalDOMAttributes<HTMLTableSectionElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element. A function may be provided to compute the class based on component state.\n   *\n   * @default 'react-aria-TableBody'\n   */\n  className?: ClassNameOrFunction<TableBodyRenderProps>;\n  /** Provides content to display when there are no rows in the table. */\n  renderEmptyState?: (props: TableBodyRenderProps) => ReactNode;\n}\n\nclass TableBodyNode<T> extends FilterableNode<T> {\n  static readonly type = 'tablebody';\n}\n\nlet TableBodyElementType = forwardRef(function TableBodyElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <dom.div {...props} ref={ref} />;\n  }\n  return <dom.tbody {...props} ref={ref} />;\n});\n\n/**\n * The body of a `<Table>`, containing the table rows.\n */\nexport const TableBody = /*#__PURE__*/ createBranchComponent(\n  TableBodyNode,\n  <T extends any>(\n    props: TableBodyProps<T>,\n    ref: ForwardedRef<HTMLTableSectionElement | HTMLDivElement>,\n    node: Node<T>\n  ) => {\n    let state = useContext(TableStateContext)!;\n    let {isVirtualized} = useContext(CollectionRendererContext);\n    let collection = state.collection;\n    let {CollectionBranch} = useContext(CollectionRendererContext);\n    let {dragAndDropHooks, dropState} = useContext(DragAndDropContext);\n    let isDroppable = !!dragAndDropHooks?.useDroppableCollectionState && !dropState?.isDisabled;\n    let isRootDropTarget =\n      isDroppable && !!dropState && (dropState.isDropTarget({type: 'root'}) ?? false);\n\n    let isEmpty = collection.size === 0;\n    let renderValues = {\n      isDropTarget: isRootDropTarget,\n      isEmpty\n    };\n    let renderProps = useRenderProps({\n      ...props,\n      id: undefined,\n      children: undefined,\n      defaultClassName: 'react-aria-TableBody',\n      values: renderValues\n    });\n\n    let emptyState;\n    let numColumns = collection.columnCount;\n\n    if (isEmpty && props.renderEmptyState && state) {\n      let rowProps = {};\n      let rowHeaderProps = {};\n      let style = {};\n      if (isVirtualized) {\n        rowHeaderProps['aria-colspan'] = numColumns;\n        style = {display: 'contents'};\n      } else {\n        rowHeaderProps['colSpan'] = numColumns;\n      }\n\n      emptyState = (\n        <TableRowElementType role=\"row\" {...rowProps} style={style}>\n          <TableCellElementType role=\"rowheader\" {...rowHeaderProps} style={style}>\n            {props.renderEmptyState(renderValues)}\n          </TableCellElementType>\n        </TableRowElementType>\n      );\n    }\n\n    let {rowGroupProps} = useTableRowGroup();\n\n    let DOMProps = filterDOMProps(props, {global: true});\n\n    // TODO: TableBody doesn't support being the scrollable body of the table yet, to revisit if needed. Would need to\n    // call useLoadMore here and walk up the DOM to the nearest scrollable element to set scrollRef\n    return (\n      <TableBodyElementType\n        {...mergeProps(DOMProps, renderProps, rowGroupProps)}\n        ref={ref as any}\n        data-empty={isEmpty || undefined}>\n        {isDroppable && <RootDropIndicator />}\n        <CollectionBranch\n          collection={collection}\n          parent={node}\n          renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)}\n        />\n        {emptyState}\n      </TableBodyElementType>\n    );\n  }\n);\n\nclass TableFooterNode<T> extends FilterableNode<T> {\n  static readonly type = 'tablefooter';\n}\n\nexport interface TableFooterProps<T>\n  extends\n    Omit<CollectionProps<T>, 'disabledKeys'>,\n    StyleProps,\n    GlobalDOMAttributes<HTMLTableSectionElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element.\n   *\n   * @default 'react-aria-TableFooter'\n   */\n  className?: string;\n}\n\nlet TableFooterElementType = forwardRef(function TableFooterElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <dom.div {...props} ref={ref} />;\n  }\n  return <dom.tfoot {...props} ref={ref} />;\n});\n\n/**\n * The footer of a `<Table>`, containing table rows.\n */\nexport const TableFooter = /*#__PURE__*/ createBranchComponent(\n  TableFooterNode,\n  <T extends any>(\n    props: TableFooterProps<T>,\n    ref: ForwardedRef<HTMLTableSectionElement | HTMLDivElement>,\n    node: Node<T>\n  ) => {\n    let state = useContext(TableStateContext)!;\n    let collection = state.collection as TableCollection<T>;\n    let {CollectionBranch} = useContext(CollectionRendererContext);\n    let {dragAndDropHooks, dropState} = useContext(DragAndDropContext);\n\n    let {rowGroupProps} = useTableRowGroup();\n    let DOMProps = filterDOMProps(props, {global: true});\n    let renderProps = useRenderProps({\n      style: props.style,\n      className: props.className,\n      defaultClassName: 'react-aria-TableFooter',\n      values: {}\n    });\n\n    return (\n      <TableFooterElementType\n        {...mergeProps(DOMProps, renderProps, rowGroupProps)}\n        ref={ref as any}>\n        <CollectionBranch\n          collection={collection}\n          parent={node}\n          renderDropIndicator={useRenderDropIndicator(dragAndDropHooks, dropState)}\n        />\n      </TableFooterElementType>\n    );\n  }\n);\n\nexport interface RowRenderProps extends ItemRenderProps {\n  /**\n   * Whether the row's children have keyboard focus.\n   *\n   * @selector [data-focus-visible-within]\n   */\n  isFocusVisibleWithin: boolean;\n  /** The unique id of the row. */\n  id?: Key;\n  /**\n   * Whether the row is expanded.\n   *\n   * @selector [data-expanded]\n   */\n  isExpanded: boolean;\n  /**\n   * Whether the row has child rows.\n   *\n   * @selector [data-has-child-items]\n   */\n  hasChildItems: boolean;\n  /**\n   * What level the row has within the table.\n   *\n   * @selector [data-level]\n   */\n  level: number;\n  /**\n   * State of the table.\n   */\n  state: TableState<unknown>;\n}\n\nexport interface RowFocusContextValue {\n  isFocusVisibleWithinRow: boolean;\n}\n\nexport const RowFocusContext = createContext<RowFocusContextValue>({\n  isFocusVisibleWithinRow: false\n});\n\nexport interface RowProps<T>\n  extends\n    StyleRenderProps<RowRenderProps, 'tr' | 'div'>,\n    LinkDOMProps,\n    HoverEvents,\n    PressEvents,\n    Omit<GlobalDOMAttributes<HTMLTableRowElement>, 'onClick'> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element. A function may be provided to compute the class based on component state.\n   *\n   * @default 'react-aria-Row'\n   */\n  className?: ClassNameOrFunction<RowRenderProps>;\n  /** A list of columns used when dynamically rendering cells. */\n  columns?: Iterable<T>;\n  /** The cells within the row. Supports static items or a function for dynamic rendering. */\n  children?: ReactNode | ((item: T) => ReactElement);\n  /**\n   * The object value that this row represents. When using dynamic collections, this is set\n   * automatically.\n   */\n  value?: T;\n  /** Values that should invalidate the cell cache when using dynamic collections. */\n  dependencies?: ReadonlyArray<any>;\n  /** A string representation of the row's contents, used for features like typeahead. */\n  textValue?: string;\n  /** Whether the row is disabled. */\n  isDisabled?: boolean;\n  /** Whether `disabledKeys` applies to all interactions, or only selection. */\n  disabledBehavior?: DisabledBehavior;\n  /**\n   * Handler that is called when a user performs an action on the row. The exact user event depends\n   * on the collection's `selectionBehavior` prop and the interaction modality.\n   */\n  onAction?: () => void;\n  /** The unique id of the row. */\n  id?: Key;\n  /** Whether this row has children, even if not loaded yet. */\n  hasChildItems?: boolean;\n}\n\nclass TableRowNode<T> extends CollectionNode<T> {\n  static readonly type = 'item';\n\n  filter(\n    collection: BaseCollection<T>,\n    newCollection: BaseCollection<T>,\n    filterFn: (textValue: string, node: Node<T>) => boolean\n  ): TableRowNode<T> | null {\n    let cells = collection.getChildren(this.key);\n    for (let cell of cells) {\n      if (filterFn(cell.textValue, cell)) {\n        let clone = this.clone();\n        newCollection.addDescendants(clone, collection);\n        return clone;\n      }\n    }\n\n    return null;\n  }\n}\n\nlet TableRowElementType = forwardRef(function TableRowElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <dom.div {...props} ref={ref} />;\n  }\n  return <dom.tr {...props} ref={ref} />;\n});\n\n/**\n * A row within a `<Table>`.\n */\nexport const Row = /*#__PURE__*/ createBranchComponent(\n  TableRowNode,\n  <T extends any>(\n    props: RowProps<T>,\n    forwardedRef: ForwardedRef<HTMLTableRowElement | HTMLDivElement>,\n    item: GridNode<T>\n  ) => {\n    let ref = useObjectRef<HTMLTableRowElement | HTMLDivElement>(forwardedRef);\n    let state = useContext(TableStateContext)!;\n    let {dragAndDropHooks, dragState, dropState} = useContext(DragAndDropContext);\n    let {isVirtualized, CollectionBranch} = useContext(CollectionRendererContext);\n    let isDraggable =\n      dragState && !(dragState.isDisabled || dragState.selectionManager.isDisabled(item.key));\n    let {rowProps, expandButtonProps, ...states} = useTableRow(\n      {\n        node: item,\n        shouldSelectOnPressUp: !!dragState,\n        isVirtualized\n      },\n      state,\n      ref\n    );\n    let {isFocused, isFocusVisible, focusProps} = useFocusRing();\n    let {isFocusVisible: isFocusVisibleWithin, focusProps: focusWithinProps} = useFocusRing({\n      within: true\n    });\n    let {hoverProps, isHovered} = useHover({\n      // because of https://bugs.webkit.org/show_bug.cgi?id=214609, supporting hover styles when a item is ONLY isDraggable\n      // results in hover styles sticking around after a reorder/drop operation...\n      isDisabled: !states.allowsSelection && !states.hasAction && !isDraggable,\n      onHoverStart: props.onHoverStart,\n      onHoverChange: props.onHoverChange,\n      onHoverEnd: props.onHoverEnd\n    });\n\n    let {checkboxProps} = useTableSelectionCheckbox({key: item.key}, state);\n\n    let draggableItem: DraggableItemResult | undefined = undefined;\n    if (dragState && dragAndDropHooks) {\n      draggableItem = dragAndDropHooks.useDraggableItem!(\n        {key: item.key, hasDragButton: true},\n        dragState\n      );\n    }\n\n    let dropIndicator: DropIndicatorAria | undefined = undefined;\n    let dropIndicatorRef = useRef<HTMLDivElement>(null);\n    let {visuallyHiddenProps} = useVisuallyHidden();\n    if (dropState && dragAndDropHooks) {\n      dropIndicator = dragAndDropHooks.useDropIndicator!(\n        {\n          target: {type: 'item', key: item.key, dropPosition: 'on'}\n        },\n        dropState,\n        dropIndicatorRef\n      );\n    }\n\n    let dragButtonRef = useRef<HTMLButtonElement>(null);\n    useEffect(() => {\n      if (dragState && !dragButtonRef.current && process.env.NODE_ENV !== 'production') {\n        console.warn(\n          'Draggable items in a Table must contain a <Button slot=\"drag\"> element so that keyboard and screen reader users can drag them.'\n        );\n      }\n      // eslint-disable-next-line\n    }, []);\n\n    let isDragging = dragState && dragState.isDragging(item.key);\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    let {children: _, ...restProps} = props;\n    let hasChildItems =\n      props.hasChildItems || state.collection.getItem(item.lastChildKey!)?.type !== 'cell';\n    let isExpanded = hasChildItems && state.expandedKeys.has(item.key);\n    let renderProps = useRenderProps({\n      ...restProps,\n      id: undefined,\n      defaultClassName: 'react-aria-Row',\n      defaultStyle: {\n        // @ts-ignore\n        '--table-row-level': item.level + 1\n      },\n      values: {\n        ...states,\n        state,\n        isHovered,\n        isFocused,\n        isFocusVisible,\n        selectionMode: state.selectionManager.selectionMode,\n        selectionBehavior: state.selectionManager.selectionBehavior,\n        isDragging,\n        isDropTarget: dropIndicator?.isDropTarget,\n        isFocusVisibleWithin,\n        id: item.key,\n        hasChildItems,\n        isExpanded,\n        level: item.level + 1\n      }\n    });\n\n    let DOMProps = filterDOMProps(props as any, {global: true});\n    delete DOMProps.id;\n    delete DOMProps.onClick;\n\n    return (\n      <>\n        {dropIndicator && !dropIndicator.isHidden && (\n          <TableRowElementType role=\"row\" style={{height: 0}}>\n            <TableCellElementType\n              role=\"gridcell\"\n              colSpan={state.collection.columnCount}\n              style={{padding: 0}}>\n              <div\n                role=\"button\"\n                {...visuallyHiddenProps}\n                {...dropIndicator.dropIndicatorProps}\n                ref={dropIndicatorRef}\n              />\n            </TableCellElementType>\n          </TableRowElementType>\n        )}\n        <TableRowElementType\n          {...mergeProps(\n            DOMProps,\n            renderProps,\n            rowProps,\n            focusProps,\n            hoverProps,\n            draggableItem?.dragProps,\n            focusWithinProps\n          )}\n          ref={ref as any}\n          data-disabled={states.isDisabled || undefined}\n          data-selected={states.isSelected || 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-dragging={isDragging || undefined}\n          data-drop-target={dropIndicator?.isDropTarget || undefined}\n          data-selection-mode={\n            state.selectionManager.selectionMode === 'none'\n              ? undefined\n              : state.selectionManager.selectionMode\n          }\n          data-focus-visible-within={isFocusVisibleWithin || undefined}\n          data-expanded={isExpanded || undefined}\n          data-has-child-items={hasChildItems || undefined}\n          data-level={item.level + 1}>\n          <Provider\n            values={[\n              [\n                CheckboxContext,\n                {\n                  slots: {\n                    [DEFAULT_SLOT]: {},\n                    selection: checkboxProps\n                  }\n                }\n              ],\n              [\n                CheckboxFieldContext,\n                {\n                  slots: {\n                    [DEFAULT_SLOT]: {},\n                    selection: checkboxProps\n                  }\n                }\n              ],\n              [\n                ButtonContext,\n                {\n                  slots: {\n                    [DEFAULT_SLOT]: {},\n                    chevron: expandButtonProps,\n                    drag: {\n                      ...draggableItem?.dragButtonProps,\n                      ref: dragButtonRef,\n                      style: {\n                        pointerEvents: 'none'\n                      }\n                    }\n                  }\n                }\n              ],\n              [SelectionIndicatorContext, {isSelected: states.isSelected}],\n              [RowFocusContext, {isFocusVisibleWithinRow: isFocusVisibleWithin}]\n            ]}>\n            <CollectionBranch collection={state.collection} parent={item} />\n          </Provider>\n        </TableRowElementType>\n      </>\n    );\n  },\n  props => {\n    if (props.id == null && typeof props.children === 'function') {\n      throw new Error(\n        'No id detected for the Row element. The Row element requires a id to be provided to it when the cells are rendered dynamically.'\n      );\n    }\n\n    let dependencies = [props.value].concat(props.dependencies);\n    return (\n      <Collection dependencies={dependencies} items={props.columns} idScope={props.id}>\n        {props.children}\n      </Collection>\n    );\n  }\n);\n\nexport interface CellRenderProps {\n  /**\n   * Whether the cell is currently in a pressed state.\n   *\n   * @selector [data-pressed]\n   */\n  isPressed: boolean;\n  /**\n   * Whether the cell is currently focused.\n   *\n   * @selector [data-focused]\n   */\n  isFocused: boolean;\n  /**\n   * Whether the cell is currently keyboard focused.\n   *\n   * @selector [data-focus-visible]\n   */\n  isFocusVisible: boolean;\n  /**\n   * Whether the cell is currently hovered with a mouse.\n   *\n   * @selector [data-hovered]\n   */\n  isHovered: boolean;\n  /**\n   * Whether the parent row is currently selected.\n   *\n   * @selector [data-selected]\n   */\n  isSelected: boolean;\n  /**\n   * Whether the parent row is non-interactive, i.e. both selection and actions are disabled and the\n   * item may not be focused. Dependent on `disabledKeys` and `disabledBehavior`.\n   *\n   * @selector [data-disabled]\n   */\n  isDisabled: boolean;\n  /**\n   * Whether keyboard focus is visible anywhere within the parent row.\n   *\n   * @selector [data-focus-visible-within-row]\n   */\n  isFocusVisibleWithinRow: boolean;\n  /**\n   * The unique id of the cell.\n   */\n  id?: Key;\n  /**\n   * The index of the column that this cell belongs to. Respects col spanning.\n   */\n  columnIndex?: number | null;\n  /**\n   * Whether the column displays hierarchical data.\n   *\n   * @selector [data-tree-column]\n   */\n  isTreeColumn: boolean;\n  /**\n   * Whether the parent row is expanded.\n   *\n   * @selector [data-expanded]\n   */\n  isExpanded: boolean;\n  /**\n   * Whether the parent row has child rows.\n   *\n   * @selector [data-has-child-items]\n   */\n  hasChildItems: boolean;\n  /**\n   * What level the parent row has within the table.\n   *\n   * @selector [data-level]\n   */\n  level: number;\n}\n\nexport interface CellProps\n  extends RenderProps<CellRenderProps, 'td' | 'div'>, GlobalDOMAttributes<HTMLTableCellElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element. A function may be provided to compute the class based on component state.\n   *\n   * @default 'react-aria-Cell'\n   */\n  className?: ClassNameOrFunction<CellRenderProps>;\n  /** The unique id of the cell. */\n  id?: Key;\n  /** A string representation of the cell's contents, used for features like typeahead. */\n  textValue?: string;\n  /** Indicates how many columns the data cell spans. */\n  colSpan?: number;\n}\n\nclass TableCellNode extends CollectionNode<unknown> {\n  static readonly type = 'cell';\n}\n\nlet TableCellElementType = forwardRef(function TableCellElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <dom.div {...props} ref={ref} />;\n  }\n  return <dom.td {...props} ref={ref} />;\n});\n\n/**\n * A cell within a table row.\n */\nexport const Cell = /*#__PURE__*/ createLeafComponent(\n  TableCellNode,\n  (\n    props: CellProps,\n    forwardedRef: ForwardedRef<HTMLTableCellElement | HTMLDivElement>,\n    cell: GridNode<unknown>\n  ) => {\n    let ref = useObjectRef<HTMLTableCellElement | HTMLDivElement>(forwardedRef);\n    let state = useContext(TableStateContext)!;\n    let {dragState} = useContext(DragAndDropContext);\n    let {isVirtualized} = useContext(CollectionRendererContext);\n\n    cell.column = state.collection.columns[cell.index];\n\n    let {gridCellProps, isPressed} = useTableCell(\n      {\n        node: cell,\n        shouldSelectOnPressUp: !!dragState,\n        isVirtualized\n      },\n      state,\n      ref\n    );\n    let {isFocused, isFocusVisible, focusProps} = useFocusRing();\n    let {hoverProps, isHovered} = useHover({});\n    let {isFocusVisibleWithinRow} = useContext(RowFocusContext);\n    let isSelected =\n      cell.parentKey != null ? state.selectionManager.isSelected(cell.parentKey) : false;\n    // colIndex is null, when there is so span, falling back to using the index\n    let columnIndex = cell.colIndex || cell.index;\n\n    let row = state.collection.getItem(cell.parentKey!)!;\n    let hasChildItems =\n      row.props.hasChildItems || state.collection.getItem(row.lastChildKey!)?.type !== 'cell';\n    let isExpanded = hasChildItems && state.expandedKeys.has(cell.parentKey!);\n    let isDisabled = state.selectionManager.isDisabled(cell.parentKey!);\n    let renderProps = useRenderProps({\n      ...props,\n      id: undefined,\n      defaultClassName: 'react-aria-Cell',\n      values: {\n        isFocused,\n        isFocusVisible,\n        isFocusVisibleWithinRow,\n        isPressed,\n        isHovered,\n        isSelected,\n        id: cell.key,\n        columnIndex,\n        hasChildItems,\n        isExpanded,\n        isDisabled,\n        level: row.level + 1,\n        isTreeColumn: cell.column.key === state.treeColumn\n      }\n    });\n\n    let DOMProps = filterDOMProps(props as any, {global: true});\n    delete DOMProps.id;\n\n    return (\n      <TableCellElementType\n        {...mergeProps(DOMProps, renderProps, gridCellProps, focusProps, hoverProps)}\n        ref={ref as any}\n        data-focused={isFocused || undefined}\n        data-focus-visible={isFocusVisible || undefined}\n        data-focus-visible-within-row={isFocusVisibleWithinRow || undefined}\n        data-pressed={isPressed || undefined}\n        data-selected={isSelected || undefined}\n        data-column-index={columnIndex}\n        data-expanded={isExpanded || undefined}\n        data-has-child-items={hasChildItems || undefined}\n        data-level={row.level + 1}\n        data-tree-column={cell.column.key === state.treeColumn || undefined}\n        data-disabled={isDisabled || undefined}>\n        <CollectionRendererContext.Provider value={DefaultCollectionRenderer}>\n          {renderProps.children}\n        </CollectionRendererContext.Provider>\n      </TableCellElementType>\n    );\n  }\n);\n\nfunction TableDropIndicatorWrapper(props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>) {\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 =\n    dropState && props.target.type === 'item'\n      ? (dropState.collection.getItem(props.target.key)?.level || 0) + 1\n      : 1;\n  return (\n    <TableDropIndicatorForwardRef\n      {...props}\n      dropIndicatorProps={dropIndicatorProps}\n      isDropTarget={isDropTarget}\n      buttonRef={buttonRef}\n      level={level}\n      ref={ref}\n    />\n  );\n}\n\ninterface TableDropIndicatorProps\n  extends DropIndicatorProps, GlobalDOMAttributes<HTMLTableRowElement> {\n  dropIndicatorProps: React.HTMLAttributes<HTMLElement>;\n  isDropTarget: boolean;\n  buttonRef: RefObject<HTMLDivElement | null>;\n  level: number;\n}\n\nlet TableDropIndicatorRowElementType = forwardRef(function TableDropIndicatorRowElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <dom.div {...props} ref={ref} />;\n  }\n  return <dom.tr {...props} ref={ref} />;\n});\nlet TableDropIndicatorTDElementType = forwardRef(function TableDropIndicatorTDElementType(\n  props: any,\n  ref: ForwardedRef<Element>\n) {\n  let {isVirtualized} = useContext(CollectionRendererContext);\n  if (isVirtualized) {\n    return <dom.div {...props} ref={ref} />;\n  }\n  return <dom.td {...props} ref={ref} />;\n});\n\nfunction TableDropIndicator(props: TableDropIndicatorProps, ref: ForwardedRef<HTMLElement>) {\n  let {dropIndicatorProps, isDropTarget, buttonRef, level, ...otherProps} = props;\n\n  let state = useContext(TableStateContext)!;\n  let {visuallyHiddenProps} = useVisuallyHidden();\n  let renderProps = useRenderProps({\n    ...otherProps,\n    defaultClassName: 'react-aria-DropIndicator',\n    defaultStyle: {\n      // @ts-ignore\n      '--table-row-level': level + 1\n    },\n    values: {\n      isDropTarget\n    }\n  });\n\n  return (\n    <TableDropIndicatorRowElementType\n      {...filterDOMProps(props as any, {global: true})}\n      {...renderProps}\n      role=\"row\"\n      ref={ref as RefObject<HTMLTableRowElement | null>}\n      data-drop-target={isDropTarget || undefined}\n      aria-level={level}>\n      <TableDropIndicatorTDElementType\n        role=\"gridcell\"\n        colSpan={state.collection.columnCount}\n        style={{padding: 0}}>\n        <div {...visuallyHiddenProps} role=\"button\" {...dropIndicatorProps} ref={buttonRef} />\n        {renderProps.children}\n      </TableDropIndicatorTDElementType>\n    </TableDropIndicatorRowElementType>\n  );\n}\n\nconst TableDropIndicatorForwardRef = forwardRef(TableDropIndicator);\n\nfunction RootDropIndicator() {\n  let state = useContext(TableStateContext)!;\n  let {dragAndDropHooks, dropState} = useContext(DragAndDropContext);\n  let ref = useRef<HTMLDivElement>(null);\n  let {dropIndicatorProps} = dragAndDropHooks!.useDropIndicator!(\n    {\n      target: {type: 'root'}\n    },\n    dropState!,\n    ref\n  );\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    <TableRowElementType\n      role=\"row\"\n      aria-hidden={dropIndicatorProps['aria-hidden']}\n      style={{height: 0}}>\n      <TableCellElementType\n        role=\"gridcell\"\n        colSpan={state.collection.columnCount}\n        style={{padding: 0}}>\n        <div role=\"button\" {...visuallyHiddenProps} {...dropIndicatorProps} ref={ref} />\n      </TableCellElementType>\n    </TableRowElementType>\n  );\n}\n\nexport interface TableLoadMoreItemProps\n  extends\n    Omit<LoadMoreSentinelProps, 'collection'>,\n    StyleProps,\n    DOMRenderProps<'tr' | 'div', undefined>,\n    GlobalDOMAttributes<HTMLTableRowElement> {\n  /**\n   * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n   * element.\n   *\n   * @default 'react-aria-TableLoadMoreItem'\n   */\n  className?: string;\n  /**\n   * The load more spinner to render when loading additional items.\n   */\n  children?: ReactNode;\n  /**\n   * Whether or not the loading spinner should be rendered or not.\n   */\n  isLoading?: boolean;\n}\n\nexport const TableLoadMoreItem = createLeafComponent(\n  LoaderNode,\n  function TableLoadingIndicator(\n    props: TableLoadMoreItemProps,\n    ref: ForwardedRef<HTMLTableRowElement>,\n    item: Node<object>\n  ) {\n    let state = useContext(TableStateContext)!;\n    let {isVirtualized} = useContext(CollectionRendererContext);\n    let {isLoading, onLoadMore, scrollOffset, ...otherProps} = props;\n    let numColumns = state.collection.columns.length;\n\n    let sentinelRef = useRef(null);\n    let memoedLoadMoreProps = useMemo(\n      () => ({\n        onLoadMore,\n        collection: state?.collection,\n        sentinelRef,\n        scrollOffset\n      }),\n      [onLoadMore, scrollOffset, state?.collection]\n    );\n    useLoadMoreSentinel(memoedLoadMoreProps, sentinelRef);\n\n    let renderProps = useRenderProps({\n      ...otherProps,\n      id: undefined,\n      children: item.rendered,\n      defaultClassName: 'react-aria-TableLoadingIndicator',\n      defaultStyle: {\n        // @ts-ignore\n        '--table-row-level': item.level + 1\n      },\n      values: undefined\n    });\n    let rowProps = {};\n    let rowHeaderProps = {};\n    let style = {};\n\n    if (isVirtualized) {\n      // For now don't include aria-rowindex 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      // row count\n      rowHeaderProps['aria-colspan'] = numColumns;\n      style = {display: 'contents'};\n    } else {\n      rowHeaderProps['colSpan'] = numColumns;\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        <TableRowElementType style={{height: 0}} inert={inertValue(true)}>\n          <TableCellElementType style={{padding: 0, border: 0}}>\n            <div\n              data-testid=\"loadMoreSentinel\"\n              ref={sentinelRef}\n              style={{position: 'relative', height: 1, width: 1}}\n            />\n          </TableCellElementType>\n        </TableRowElementType>\n        {isLoading && renderProps.children && (\n          <TableRowElementType\n            {...mergeProps(filterDOMProps(props, {global: true}), rowProps)}\n            {...renderProps}\n            role=\"row\"\n            ref={ref as ForwardedRef<HTMLTableRowElement>}\n            aria-level={item.level + 1}\n            data-level={item.level + 1}>\n            <TableCellElementType role=\"rowheader\" {...rowHeaderProps} style={style}>\n              {renderProps.children}\n            </TableCellElementType>\n          </TableRowElementType>\n        )}\n      </>\n    );\n  }\n);\n"],"names":[],"version":3,"file":"Table.cjs.map"}