{"mappings":"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","sources":["packages/@adobe/react-spectrum/src/table/TableViewBase.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 ArrowDownSmall from '@spectrum-icons/ui/ArrowDownSmall';\nimport {Checkbox} from '../checkbox/Checkbox';\nimport ChevronDownMedium from '@spectrum-icons/ui/ChevronDownMedium';\nimport ChevronLeftMedium from '@spectrum-icons/ui/ChevronLeftMedium';\nimport ChevronRightMedium from '@spectrum-icons/ui/ChevronRightMedium';\nimport {classNames} from '../utils/classNames';\nimport {ColumnSize} from 'react-stately/useTableState';\nimport {DOMRef, DropTarget, FocusableElement, FocusableRef, Key, RefObject} from '@react-types/shared';\nimport type {DragAndDropHooks} from '../dnd/useDragAndDrop';\nimport type {DraggableCollectionState} from 'react-stately/useDraggableCollectionState';\nimport type {DraggableItemResult} from 'react-aria/useDraggableCollection';\nimport type {DropIndicatorAria, DroppableCollectionResult} from 'react-aria/useDroppableCollection';\nimport type {DroppableCollectionState} from 'react-stately/useDroppableCollectionState';\nimport {FocusRing} from 'react-aria/FocusRing';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {getActiveElement, isFocusWithin} from 'react-aria/private/utils/shadowdom/DOMFunctions';\nimport {getInteractionModality, isFocusVisible} from 'react-aria/private/interactions/useFocusVisible';\nimport {GridNode} from 'react-stately/private/grid/GridCollection';\nimport {HoverProps, useHover} from 'react-aria/useHover';\nimport {InsertionIndicator} from './InsertionIndicator';\nimport intlMessages from '../../intl/table/*.json';\nimport {isAndroid} from 'react-aria/private/utils/platform';\nimport {Item} from 'react-stately/Item';\nimport {LayoutInfo, Rect, ReusableView} from 'react-stately/useVirtualizerState';\nimport {layoutInfoToStyle, VirtualizerItem} from 'react-aria/private/virtualizer/VirtualizerItem';\nimport ListGripper from '@spectrum-icons/ui/ListGripper';\nimport {ListKeyboardDelegate} from 'react-aria/ListKeyboardDelegate';\nimport {Menu} from '../menu/Menu';\nimport {MenuTrigger} from '../menu/MenuTrigger';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {Nubbin} from './Nubbin';\n// @ts-ignore\nimport {ProgressCircle} from '../progress/ProgressCircle';\nimport React, {DOMAttributes, HTMLAttributes, ReactElement, ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport {Resizer, ResizeStateContext} from './Resizer';\nimport {RootDropIndicator} from './RootDropIndicator';\nimport {scrollIntoView, scrollIntoViewport} from 'react-aria/private/utils/scrollIntoView';\nimport {ScrollView} from 'react-aria/private/virtualizer/ScrollView';\nimport {setScrollLeft} from 'react-aria/private/virtualizer/utils';\nimport {SpectrumColumnProps} from './types';\nimport {DragPreview as SpectrumDragPreview} from './DragPreview';\nimport {SpectrumTableProps} from './TableView';\nimport styles from '@adobe/spectrum-css-temp/components/table/vars.css';\nimport stylesOverrides from './table.css';\nimport {ITableCollection as TableCollection} from 'react-stately/private/table/TableCollection';\nimport {TableState, useTableColumnResizeState} from 'react-stately/useTableState';\nimport {TableViewLayout} from './TableViewLayout';\nimport {Tooltip} from '../tooltip/Tooltip';\nimport {TooltipTrigger} from '../tooltip/TooltipTrigger';\nimport {TreeGridState} from 'react-stately/private/table/useTreeGridState';\nimport {useButton} from 'react-aria/useButton';\nimport {useDOMRef, useFocusableRef, useUnwrapDOMRef} from '../utils/useDOMRef';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useLoadMore} from 'react-aria/private/utils/useLoadMore';\nimport {useLocale} from 'react-aria/I18nProvider';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {usePress} from 'react-aria/usePress';\nimport {useProvider, useProviderProps} from '../provider/Provider';\nimport {useStyleProps} from '../utils/styleProps';\nimport {\n  useTable,\n  useTableCell,\n  useTableColumnHeader,\n  useTableHeaderRow,\n  useTableRow,\n  useTableRowGroup,\n  useTableSelectAllCheckbox,\n  useTableSelectionCheckbox\n} from 'react-aria/useTable';\nimport {useVirtualizerState} from 'react-stately/useVirtualizerState';\nimport {useVisuallyHidden, VisuallyHidden} from 'react-aria/VisuallyHidden';\n\nconst DEFAULT_HEADER_HEIGHT = {\n  medium: 34,\n  large: 40\n};\n\nconst DEFAULT_HIDE_HEADER_CELL_WIDTH = {\n  medium: 38,\n  large: 46\n};\n\nconst ROW_HEIGHTS = {\n  compact: {\n    medium: 32,\n    large: 40\n  },\n  regular: {\n    medium: 40,\n    large: 50\n  },\n  spacious: {\n    medium: 48,\n    large: 60\n  }\n};\n\nconst SELECTION_CELL_DEFAULT_WIDTH = {\n  medium: 38,\n  large: 48\n};\n\nconst DRAG_BUTTON_CELL_DEFAULT_WIDTH = {\n  medium: 16,\n  large: 20\n};\n\nconst LEVEL_OFFSET_WIDTH = {\n  medium: 16,\n  large: 20\n};\n\nexport interface TableContextValue<T> {\n  state: TableState<T>,\n  dragState: DraggableCollectionState | null,\n  dropState: DroppableCollectionState | null,\n  dragAndDropHooks?: DragAndDropHooks<T>['dragAndDropHooks'],\n  isTableDraggable: boolean,\n  isTableDroppable: boolean,\n  layout: TableViewLayout<T>,\n  headerRowHovered: boolean,\n  isInResizeMode: boolean,\n  setIsInResizeMode: (val: boolean) => void,\n  isEmpty: boolean,\n  onFocusedResizer: () => void,\n  onResizeStart?: (widths: Map<Key, ColumnSize>) => void,\n  onResize?: (widths: Map<Key, ColumnSize>) => void,\n  onResizeEnd?: (widths: Map<Key, ColumnSize>) => void,\n  headerMenuOpen: boolean,\n  setHeaderMenuOpen: (val: boolean) => void,\n  renderEmptyState?: () => ReactElement\n}\n\nexport const TableContext = React.createContext<TableContextValue<unknown> | null>(null);\nexport function useTableContext(): TableContextValue<unknown> {\n  return useContext(TableContext)!;\n}\n\nexport const VirtualizerContext = React.createContext<{width: number, key: Key | null} | null>(null);\nexport function useVirtualizerContext(): {\n  width: number,\n  key: Key | null\n} | null {\n  return useContext(VirtualizerContext);\n}\n\ninterface TableBaseProps<T> extends SpectrumTableProps<T> {\n  state: TableState<T> | TreeGridState<T>\n}\n\ntype View = ReusableView<GridNode<unknown>, ReactNode>;\n\nfunction TableViewBase<T extends object>(props: TableBaseProps<T>, ref: DOMRef<HTMLDivElement>) {\n  props = useProviderProps(props);\n  let {\n    isQuiet,\n    onAction,\n    onResizeStart: propsOnResizeStart,\n    onResizeEnd: propsOnResizeEnd,\n    dragAndDropHooks,\n    state\n  } = props;\n  let isTableDraggable = !!dragAndDropHooks?.useDraggableCollectionState;\n  let isTableDroppable = !!dragAndDropHooks?.useDroppableCollectionState;\n  let dragHooksProvided = useRef(isTableDraggable);\n  let dropHooksProvided = useRef(isTableDroppable);\n  useEffect(() => {\n    if (process.env.NODE_ENV === 'production') {\n      return;\n    }\n    if (dragHooksProvided.current !== isTableDraggable) {\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 !== isTableDroppable) {\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    if ('keyMap' in state && (isTableDraggable || isTableDroppable)) {\n      console.warn('Drag and drop is not yet fully supported with expandable rows and may produce unexpected results.');\n    }\n  }, [isTableDraggable, isTableDroppable, state]);\n\n  let {styleProps} = useStyleProps(props);\n  let {scale} = useProvider();\n\n  // Starts when the user selects resize from the menu, ends when resizing ends\n  // used to control the visibility of the resizer Nubbin\n  let [isInResizeMode, setIsInResizeMode] = useState(false);\n  // Starts when the resizer is actually moved\n  // entering resizing/exiting resizing doesn't trigger a render\n  // with table layout, so we need to track it here\n  let [, setIsResizing] = useState(false);\n\n  let domRef = useDOMRef(ref);\n  let headerRef = useRef<HTMLDivElement | null>(null);\n  let bodyRef = useRef<HTMLDivElement | null>(null);\n\n  let density = props.density || 'regular';\n  let layout = useMemo(() => new TableViewLayout<T>({\n    // If props.rowHeight is auto, then use estimated heights based on scale, otherwise use fixed heights.\n    rowHeight: props.overflowMode === 'wrap'\n      ? undefined\n      : ROW_HEIGHTS[density][scale],\n    estimatedRowHeight: props.overflowMode === 'wrap'\n      ? ROW_HEIGHTS[density][scale]\n      : undefined,\n    headingHeight: props.overflowMode === 'wrap'\n      ? undefined\n      : DEFAULT_HEADER_HEIGHT[scale],\n    estimatedHeadingHeight: props.overflowMode === 'wrap'\n      ? DEFAULT_HEADER_HEIGHT[scale]\n      : undefined\n  }),\n    // don't recompute when state.collection changes, only used for initial value\n\n    [props.overflowMode, scale, density]\n  );\n\n  let dragState: DraggableCollectionState | null = null;\n  let preview = useRef(null);\n  if (isTableDraggable && dragAndDropHooks) {\n    dragState = dragAndDropHooks.useDraggableCollectionState!({\n      collection: state.collection,\n      selectionManager: state.selectionManager,\n      preview\n    });\n    dragAndDropHooks.useDraggableCollection!({}, dragState, domRef);\n  }\n\n  let DragPreview = dragAndDropHooks?.DragPreview;\n  let dropState: DroppableCollectionState | null = null;\n  let droppableCollection: DroppableCollectionResult | null = null;\n  let isRootDropTarget = false;\n  if (isTableDroppable && dragAndDropHooks) {\n    dropState = dragAndDropHooks.useDroppableCollectionState!({\n      collection: state.collection,\n      selectionManager: state.selectionManager\n    });\n    droppableCollection = dragAndDropHooks.useDroppableCollection!({\n      keyboardDelegate: new ListKeyboardDelegate({\n        collection: state.collection,\n        disabledKeys: state.selectionManager.disabledKeys,\n        ref: domRef,\n        layoutDelegate: layout\n      }),\n      dropTargetDelegate: layout\n    }, dropState, domRef);\n\n    isRootDropTarget = dropState.isDropTarget({type: 'root'});\n  }\n\n  let {gridProps} = useTable({\n    ...props,\n    isVirtualized: true,\n    layoutDelegate: layout,\n    onRowAction: onAction,\n    scrollRef: bodyRef\n  }, state, domRef);\n  let [headerMenuOpen, setHeaderMenuOpen] = useState(false);\n  let [headerRowHovered, setHeaderRowHovered] = useState(false);\n\n  // This overrides collection view's renderWrapper to support DOM hierarchy.\n  let renderWrapper = useCallback((parent: View | null, reusableView: View, children: View[], renderChildren: (views: View[]) => ReactElement[]): ReactElement => {\n    if (reusableView.viewType === 'rowgroup') {\n      return (\n        <TableRowGroup\n          key={reusableView.key}\n          layoutInfo={reusableView.layoutInfo!}\n          parent={parent?.layoutInfo ?? null}\n          // Override the default role=\"rowgroup\" with role=\"presentation\",\n          // in favor or adding role=\"rowgroup\" to the ScrollView with\n          // ref={bodyRef} in the TableVirtualizer below.\n          role=\"presentation\">\n          {renderChildren(children)}\n        </TableRowGroup>\n      );\n    }\n\n    if (reusableView.viewType === 'header') {\n      return (\n        <TableHeader\n          key={reusableView.key}\n          layoutInfo={reusableView.layoutInfo!}\n          parent={parent?.layoutInfo ?? null}>\n          {renderChildren(children)}\n        </TableHeader>\n      );\n    }\n\n    if (reusableView.viewType === 'row') {\n      return (\n        <TableRow\n          key={reusableView.key}\n          item={reusableView.content!}\n          layoutInfo={reusableView.layoutInfo!}\n          parent={parent?.layoutInfo ?? null}>\n          {renderChildren(children)}\n        </TableRow>\n      );\n    }\n\n    if (reusableView.viewType === 'headerrow') {\n      return (\n        <TableHeaderRow\n          onHoverChange={setHeaderRowHovered}\n          key={reusableView.key}\n          layoutInfo={reusableView.layoutInfo!}\n          parent={parent?.layoutInfo ?? null}\n          item={reusableView.content!}>\n          {renderChildren(children)}\n        </TableHeaderRow>\n      );\n    }\n\n    return (\n      <TableCellWrapper\n        key={reusableView.key}\n        layoutInfo={reusableView.layoutInfo!}\n        virtualizer={reusableView.virtualizer}\n        parent={parent!}>\n        {reusableView.rendered}\n      </TableCellWrapper>\n    );\n  }, []);\n\n  let renderView = useCallback((type: string, item: GridNode<T>) => {\n    switch (type) {\n      case 'header':\n      case 'rowgroup':\n      case 'section':\n      case 'row':\n      case 'headerrow':\n        return null;\n      case 'cell': {\n        if (item.props.isSelectionCell) {\n          return <TableCheckboxCell cell={item} />;\n        }\n\n        if (item.props.isDragButtonCell) {\n          return <TableDragCell cell={item} />;\n        }\n\n        return <TableCell cell={item} />;\n      }\n      case 'placeholder':\n        // TODO: move to react-aria?\n        return (\n          <div\n            role=\"gridcell\"\n            aria-colindex={item.index + 1}\n            aria-colspan={item.colSpan != null && item.colSpan > 1 ? item.colSpan : undefined} />\n        );\n      case 'column':\n        if (item.props.isSelectionCell) {\n          return <TableSelectAllCell column={item} />;\n        }\n\n        if (item.props.isDragButtonCell) {\n          return <TableDragHeaderCell column={item} />;\n        }\n\n        // TODO: consider this case, what if we have hidden headers and a empty table\n        if (item.props.hideHeader) {\n          return (\n            <TooltipTrigger placement=\"top\" trigger=\"focus\">\n              <TableColumnHeader column={item} />\n              <Tooltip placement=\"top\">{item.rendered}</Tooltip>\n            </TooltipTrigger>\n          );\n        }\n\n        if (item.props.allowsResizing && !item.hasChildNodes) {\n          return <ResizableTableColumnHeader column={item} />;\n        }\n\n        return (\n          <TableColumnHeader column={item} />\n        );\n      case 'loader':\n        return <LoadingState />;\n      case 'empty': {\n        return <EmptyState />;\n      }\n    }\n    return null;\n  }, []);\n\n  let [isVerticalScrollbarVisible, setVerticalScollbarVisible] = useState(false);\n  let [isHorizontalScrollbarVisible, setHorizontalScollbarVisible] = useState(false);\n  let viewport = useRef({x: 0, y: 0, width: 0, height: 0});\n  let onVisibleRectChange = useCallback((e) => {\n    if (viewport.current.width === e.width && viewport.current.height === e.height) {\n      return;\n    }\n    viewport.current = e;\n    if (bodyRef.current) {\n      setVerticalScollbarVisible(bodyRef.current.clientWidth + 2 < bodyRef.current.offsetWidth);\n      setHorizontalScollbarVisible(bodyRef.current.clientHeight + 2 < bodyRef.current.offsetHeight);\n    }\n  }, []);\n  let {isFocusVisible, focusProps} = useFocusRing();\n  let isEmpty = state.collection.size === 0;\n\n  let onFocusedResizer = () => {\n    if (bodyRef.current && headerRef.current) {\n      bodyRef.current.scrollLeft = headerRef.current.scrollLeft;\n    }\n  };\n\n  let onResizeStart = useCallback((widths) => {\n    setIsResizing(true);\n    propsOnResizeStart?.(widths);\n  }, [setIsResizing, propsOnResizeStart]);\n  let onResizeEnd = useCallback((widths) => {\n    setIsInResizeMode(false);\n    setIsResizing(false);\n    propsOnResizeEnd?.(widths);\n  }, [propsOnResizeEnd, setIsInResizeMode, setIsResizing]);\n\n  let focusedKey = state.selectionManager.focusedKey;\n  let dropTargetKey: Key | null = null;\n  if (dropState?.target?.type === 'item') {\n    dropTargetKey = dropState.target.key;\n    if (dropState.target.dropPosition === 'before' && dropTargetKey !== state.collection.getFirstKey()) {\n      // Normalize to the \"after\" drop position since we only render those in the DOM.\n      // The exception to this is for the first row in the table, where we also render the \"before\" position.\n      dropTargetKey = state.collection.getKeyBefore(dropTargetKey);\n    }\n  }\n\n  let persistedKeys = useMemo(() => {\n    return new Set([focusedKey, dropTargetKey].filter(k => k !== null));\n  }, [focusedKey, dropTargetKey]);\n\n  let mergedProps = mergeProps(\n    isTableDroppable ? droppableCollection?.collectionProps : null,\n    gridProps,\n    focusProps\n  );\n\n  if (dragAndDropHooks?.isVirtualDragging?.()) {\n    mergedProps.tabIndex = undefined;\n  }\n\n  return (\n    <TableContext.Provider\n      value={{\n        state: state as TableState<unknown>,\n        dragState,\n        dropState,\n        dragAndDropHooks,\n        isTableDraggable,\n        isTableDroppable,\n        layout,\n        onResizeStart,\n        onResize: props.onResize,\n        onResizeEnd,\n        headerRowHovered,\n        isInResizeMode,\n        setIsInResizeMode,\n        isEmpty,\n        onFocusedResizer,\n        headerMenuOpen,\n        setHeaderMenuOpen,\n        renderEmptyState: props.renderEmptyState\n      }}>\n      <TableVirtualizer\n        {...mergedProps}\n        {...styleProps}\n        className={\n          classNames(\n            styles,\n            'spectrum-Table',\n            `spectrum-Table--${density}`,\n            {\n              'spectrum-Table--quiet': isQuiet,\n              'spectrum-Table--wrap': props.overflowMode === 'wrap',\n              'spectrum-Table--loadingMore': state.collection.body.props.loadingState === 'loadingMore',\n              'spectrum-Table--isVerticalScrollbarVisible': isVerticalScrollbarVisible,\n              'spectrum-Table--isHorizontalScrollbarVisible': isHorizontalScrollbarVisible\n            },\n            classNames(\n              stylesOverrides,\n              'react-spectrum-Table'\n            ),\n            styleProps.className\n          )\n        }\n        tableState={state as TableState<T>}\n        layout={layout}\n        collection={state.collection}\n        persistedKeys={persistedKeys}\n        renderView={renderView}\n        renderWrapper={renderWrapper}\n        onVisibleRectChange={onVisibleRectChange}\n        domRef={domRef}\n        headerRef={headerRef}\n        bodyRef={bodyRef}\n        isFocusVisible={isFocusVisible}\n        isVirtualDragging={dragAndDropHooks?.isVirtualDragging?.() || false}\n        isRootDropTarget={isRootDropTarget} />\n      {DragPreview && isTableDraggable && dragAndDropHooks && dragState &&\n        <DragPreview ref={preview}>\n          {() => {\n            if (dragState.draggedKey == null) {\n              return null;\n            }\n            if (dragAndDropHooks.renderPreview) {\n              return dragAndDropHooks.renderPreview(dragState.draggingKeys, dragState.draggedKey);\n            }\n            let itemCount = dragState.draggingKeys.size;\n            let maxWidth = bodyRef.current!.getBoundingClientRect().width;\n            let height = ROW_HEIGHTS[density][scale];\n            let itemText = state.collection.getTextValue!(dragState.draggedKey);\n            return <SpectrumDragPreview itemText={itemText} itemCount={itemCount} height={height} maxWidth={maxWidth} />;\n          }}\n        </DragPreview>\n      }\n    </TableContext.Provider>\n  );\n}\n\ninterface TableVirtualizerProps<T> extends HTMLAttributes<HTMLElement> {\n  tableState: TableState<T>,\n  layout: TableViewLayout<T>,\n  collection: TableCollection<T>,\n  persistedKeys: Set<Key> | null,\n  renderView: (type: string, content: GridNode<T>) => ReactElement | null,\n  renderWrapper: (\n    parent: View | null,\n    reusableView: View,\n    children: View[],\n    renderChildren: (views: View[]) => ReactElement[]\n  ) => ReactElement | null,\n  domRef: RefObject<HTMLDivElement | null>,\n  bodyRef: RefObject<HTMLDivElement | null>,\n  headerRef: RefObject<HTMLDivElement | null>,\n  onVisibleRectChange: (rect: Rect) => void,\n  isFocusVisible: boolean,\n  isVirtualDragging: boolean,\n  isRootDropTarget: boolean\n}\n\n// This is a custom Virtualizer that also has a header that syncs its scroll position with the body.\nfunction TableVirtualizer<T>(props: TableVirtualizerProps<T>) {\n  let {tableState, layout, collection, persistedKeys, renderView, renderWrapper, domRef, bodyRef, headerRef, onVisibleRectChange: onVisibleRectChangeProp, isFocusVisible, isVirtualDragging, isRootDropTarget, ...otherProps} = props;\n  let {direction} = useLocale();\n  let loadingState = collection.body.props.loadingState;\n  let isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n  let onLoadMore = collection.body.props.onLoadMore;\n  let [tableWidth, setTableWidth] = useState(0);\n  let {scale} = useProvider();\n\n  const getDefaultWidth = useCallback(({props: {hideHeader, isSelectionCell, showDivider, isDragButtonCell}}: GridNode<T>): ColumnSize | null | undefined => {\n    if (hideHeader) {\n      let width = DEFAULT_HIDE_HEADER_CELL_WIDTH[scale];\n      return showDivider ? width + 1 : width;\n    } else if (isSelectionCell) {\n      return SELECTION_CELL_DEFAULT_WIDTH[scale];\n    } else if (isDragButtonCell) {\n      return DRAG_BUTTON_CELL_DEFAULT_WIDTH[scale];\n    }\n  }, [scale]);\n\n  const getDefaultMinWidth = useCallback(({props: {hideHeader, isSelectionCell, showDivider, isDragButtonCell}}: GridNode<T>): ColumnSize | null | undefined => {\n    if (hideHeader) {\n      let width = DEFAULT_HIDE_HEADER_CELL_WIDTH[scale];\n      return showDivider ? width + 1 : width;\n    } else if (isSelectionCell) {\n      return SELECTION_CELL_DEFAULT_WIDTH[scale];\n    } else if (isDragButtonCell) {\n      return DRAG_BUTTON_CELL_DEFAULT_WIDTH[scale];\n    }\n    return 75;\n  }, [scale]);\n\n  let columnResizeState = useTableColumnResizeState({\n    tableWidth,\n    getDefaultWidth,\n    getDefaultMinWidth\n  }, tableState);\n\n  let state = useVirtualizerState<GridNode<unknown>, ReactNode>({\n    layout,\n    collection,\n    renderView,\n    onVisibleRectChange(rect) {\n      if (bodyRef.current) {\n        bodyRef.current.scrollTop = rect.y;\n        setScrollLeft(bodyRef.current, direction, rect.x);\n      }\n    },\n    persistedKeys,\n    layoutOptions: useMemo(() => ({\n      columnWidths: columnResizeState.columnWidths\n    }), [columnResizeState.columnWidths])\n  });\n\n  useLoadMore({isLoading, onLoadMore, scrollOffset: 1}, bodyRef);\n  let onVisibleRectChange = useCallback((rect: Rect) => {\n    state.setVisibleRect(rect);\n  }, [state]);\n\n  let onVisibleRectChangeMemo = useCallback(rect => {\n    setTableWidth(rect.width);\n    onVisibleRectChange(rect);\n    onVisibleRectChangeProp(rect);\n  }, [onVisibleRectChange, onVisibleRectChangeProp]);\n\n  // this effect runs whenever the contentSize changes, it doesn't matter what the content size is\n  // only that it changes in a resize, and when that happens, we want to sync the body to the\n  // header scroll position\n  useEffect(() => {\n    if (getInteractionModality() === 'keyboard' && headerRef.current && isFocusWithin(headerRef.current) && bodyRef.current) {\n      let activeElement = getActiveElement() as HTMLElement;\n      scrollIntoView(headerRef.current, activeElement);\n      scrollIntoViewport(activeElement, {containingElement: domRef.current});\n      bodyRef.current.scrollLeft = headerRef.current.scrollLeft;\n    }\n  }, [state.contentSize, headerRef, bodyRef, domRef]);\n\n  let headerHeight = layout.getLayoutInfo('header')?.rect.height || 0;\n\n  // Sync the scroll position from the table body to the header container.\n  let onScroll = useCallback(() => {\n    if (headerRef.current && bodyRef.current) {\n      headerRef.current.scrollLeft = bodyRef.current.scrollLeft;\n    }\n  }, [bodyRef, headerRef]);\n\n  let resizerPosition = columnResizeState.resizingColumn != null ? layout.getLayoutInfo(columnResizeState.resizingColumn)!.rect.maxX - 2 : 0;\n\n  let resizerAtEdge = resizerPosition > Math.max(state.virtualizer.contentSize.width, state.virtualizer.visibleRect.width) - 3;\n  // this should be fine, every movement of the resizer causes a rerender\n  // scrolling can cause it to lag for a moment, but it's always updated\n  let resizerInVisibleRegion = resizerPosition < state.virtualizer.visibleRect.maxX;\n  let shouldHardCornerResizeCorner = resizerAtEdge && resizerInVisibleRegion;\n\n  // minimize re-render caused on Resizers by memoing this\n  let resizingColumnWidth = columnResizeState.resizingColumn != null ? columnResizeState.getColumnWidth(columnResizeState.resizingColumn) : 0;\n  let resizingColumn = useMemo(() => ({\n    width: resizingColumnWidth,\n    key: columnResizeState.resizingColumn\n  }), [resizingColumnWidth, columnResizeState.resizingColumn]);\n\n  if (isVirtualDragging) {\n    otherProps.tabIndex = undefined;\n  }\n\n  let firstColumn = collection.columns[0];\n  let scrollPadding = 0;\n  if (firstColumn.props.isSelectionCell || firstColumn.props.isDragButtonCell) {\n    scrollPadding = columnResizeState.getColumnWidth(firstColumn.key);\n  }\n\n  let visibleViews = renderChildren(null, state.visibleViews, renderWrapper);\n\n  return (\n    <VirtualizerContext.Provider value={resizingColumn}>\n      <FocusScope>\n        <div\n          {...otherProps}\n          ref={domRef}>\n          <div\n            role=\"presentation\"\n            className={classNames(styles, 'spectrum-Table-headWrapper')}\n            style={{\n              height: headerHeight,\n              overflow: 'hidden',\n              position: 'relative',\n              willChange: state.isScrolling ? 'scroll-position' : undefined,\n              scrollPaddingInlineStart: scrollPadding\n            }}\n            ref={headerRef}>\n            <ResizeStateContext.Provider value={columnResizeState}>\n              {visibleViews[0]}\n            </ResizeStateContext.Provider>\n          </div>\n          <ScrollView\n            className={\n              classNames(\n                styles,\n                'spectrum-Table-body',\n                {\n                  'focus-ring': isFocusVisible,\n                  'spectrum-Table-body--resizerAtTableEdge': shouldHardCornerResizeCorner\n                },\n                classNames(\n                  stylesOverrides,\n                  'react-spectrum-Table-body',\n                  {\n                    'react-spectrum-Table-body--dropTarget': !!isRootDropTarget\n                  }\n                )\n              )\n            }\n            //  Firefox and Chrome make generic elements using CSS overflow 'scroll' or 'auto' tabbable,\n            //  including them within the accessibility tree, which breaks the table structure in Firefox.\n            //  Using tabIndex={-1} prevents the ScrollView from being tabbable, and using role=\"rowgroup\"\n            //  here and role=\"presentation\" on the table body content fixes the table structure.\n            role=\"rowgroup\"\n            tabIndex={isVirtualDragging ? undefined : -1}\n            style={{\n              flex: 1,\n              scrollPaddingInlineStart: scrollPadding\n            }}\n            innerStyle={{overflow: 'visible'}}\n            ref={bodyRef}\n            contentSize={state.contentSize}\n            onVisibleRectChange={onVisibleRectChangeMemo}\n            onScrollStart={state.startScrolling}\n            onScrollEnd={state.endScrolling}\n            onScroll={onScroll}>\n            {visibleViews[1]}\n            <div\n              className={classNames(styles, 'spectrum-Table-bodyResizeIndicator')}\n              style={{[direction === 'ltr' ? 'left' : 'right']: `${resizerPosition}px`, height: `${Math.max(state.virtualizer.contentSize.height, state.virtualizer.visibleRect.height)}px`, display: columnResizeState.resizingColumn ? 'block' : 'none'}} />\n          </ScrollView>\n        </div>\n      </FocusScope>\n    </VirtualizerContext.Provider>\n  );\n}\n\nfunction renderChildren<T extends object>(parent: View | null, views: View[], renderWrapper: NonNullable<TableVirtualizerProps<T>['renderWrapper']>) {\n  return views.map(view => {\n    return renderWrapper(\n      parent,\n      view,\n      view.children ? Array.from(view.children) : [],\n      childViews => renderChildren(view, childViews, renderWrapper)\n    );\n  });\n}\n\nfunction useStyle(layoutInfo: LayoutInfo, parent: LayoutInfo | null) {\n  let {direction} = useLocale();\n  let style = layoutInfoToStyle(layoutInfo, direction, parent);\n  if (style.overflow === 'hidden') {\n    style.overflow = 'visible'; // needed to support position: sticky\n  }\n  return style;\n}\n\nfunction TableHeader({children, layoutInfo, parent, ...otherProps}: {children: ReactNode, layoutInfo: LayoutInfo, parent: LayoutInfo | null}) {\n  let {rowGroupProps} = useTableRowGroup();\n  let style = useStyle(layoutInfo, parent);\n\n  return (\n    <div {...rowGroupProps} {...otherProps} className={classNames(styles, 'spectrum-Table-head')} style={style}>\n      {children}\n    </div>\n  );\n}\n\nfunction TableColumnHeader(props) {\n  let {column} = props;\n  let ref = useRef<HTMLDivElement>(null);\n  let {state, isEmpty} = useTableContext();\n  let {pressProps, isPressed} = usePress({isDisabled: isEmpty});\n  let columnProps = column.props as SpectrumColumnProps<unknown>;\n  useEffect(() => {\n    if (column.hasChildNodes && columnProps.allowsResizing && process.env.NODE_ENV !== 'production') {\n      console.warn(`Column key: ${column.key}. Columns with child columns don't allow resizing.`);\n    }\n  }, [column.hasChildNodes, column.key, columnProps.allowsResizing]);\n\n  let {columnHeaderProps} = useTableColumnHeader({\n    node: column,\n    isVirtualized: true\n  }, state, ref);\n\n  let {hoverProps, isHovered} = useHover({...props, isDisabled: isEmpty});\n\n  const allProps = [columnHeaderProps, hoverProps, pressProps];\n\n  return (\n    <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n      <div\n        {...mergeProps(...allProps)}\n        ref={ref}\n        className={\n          classNames(\n            styles,\n            'spectrum-Table-headCell',\n            {\n              'is-active': isPressed,\n              'is-sortable': columnProps.allowsSorting,\n              'is-sorted-desc': state.sortDescriptor?.column === column.key && state.sortDescriptor?.direction === 'descending',\n              'is-sorted-asc': state.sortDescriptor?.column === column.key && state.sortDescriptor?.direction === 'ascending',\n              'is-hovered': isHovered,\n              'spectrum-Table-cell--hideHeader': columnProps.hideHeader\n            },\n            classNames(\n              stylesOverrides,\n              'react-spectrum-Table-cell',\n              {\n                'react-spectrum-Table-cell--alignCenter': columnProps.align === 'center' || column.colSpan > 1,\n                'react-spectrum-Table-cell--alignEnd': columnProps.align === 'end'\n              }\n            )\n          )\n        }>\n        {columnProps.allowsSorting &&\n          <ArrowDownSmall UNSAFE_className={classNames(styles, 'spectrum-Table-sortedIcon')} />\n        }\n        {columnProps.hideHeader ?\n          <VisuallyHidden>{column.rendered}</VisuallyHidden> :\n          <div className={classNames(styles, 'spectrum-Table-headCellContents')}>{column.rendered}</div>\n        }\n      </div>\n    </FocusRing>\n  );\n}\n\nlet ForwardTableColumnHeaderButton = (props, ref: FocusableRef<HTMLDivElement>) => {\n  let {focusProps, alignment, ...otherProps} = props;\n  let {isEmpty} = useTableContext();\n  let domRef = useFocusableRef(ref);\n  let {buttonProps} = useButton({...otherProps, elementType: 'div', isDisabled: isEmpty}, domRef);\n  let {hoverProps, isHovered} = useHover({...otherProps, isDisabled: isEmpty});\n\n  return (\n    <div\n      className={\n        classNames(\n          styles,\n          'spectrum-Table-headCellContents',\n          {\n            'is-hovered': isHovered\n          }\n        )\n      }\n      {...hoverProps}>\n      <div\n        className={\n          classNames(\n            styles,\n            'spectrum-Table-headCellButton',\n            {\n              'spectrum-Table-headCellButton--alignStart': alignment === 'start',\n              'spectrum-Table-headCellButton--alignCenter': alignment === 'center',\n              'spectrum-Table-headCellButton--alignEnd': alignment === 'end'\n            }\n          )\n        }\n        {...mergeProps(buttonProps, focusProps)}\n        ref={domRef}>\n        {props.children}\n      </div>\n    </div>\n  );\n};\nlet TableColumnHeaderButton = React.forwardRef(ForwardTableColumnHeaderButton);\n\nfunction ResizableTableColumnHeader(props) {\n  let {column} = props;\n  let ref = useRef(null);\n  let triggerRef = useRef(null);\n  let resizingRef = useRef(null);\n  let {\n    state,\n    onResizeStart,\n    onResize,\n    onResizeEnd,\n    headerRowHovered,\n    setIsInResizeMode,\n    isEmpty,\n    isInResizeMode,\n    headerMenuOpen,\n    setHeaderMenuOpen\n  } = useTableContext();\n  let columnResizeState = useContext(ResizeStateContext)!;\n  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/table');\n  let {pressProps, isPressed} = usePress({isDisabled: isEmpty});\n  let {columnHeaderProps} = useTableColumnHeader({\n    node: column,\n    isVirtualized: true\n  }, state, ref);\n\n  let {hoverProps, isHovered} = useHover({...props, isDisabled: isEmpty || headerMenuOpen});\n\n  const allProps = [columnHeaderProps, pressProps, hoverProps];\n\n  let columnProps = column.props as SpectrumColumnProps<unknown>;\n\n  let {isFocusVisible, focusProps} = useFocusRing();\n\n  const onMenuSelect = (key) => {\n    switch (key) {\n      case 'sort-asc':\n        state.sort(column.key, 'ascending');\n        break;\n      case 'sort-desc':\n        state.sort(column.key, 'descending');\n        break;\n      case 'resize':\n        columnResizeState.startResize(column.key);\n        setIsInResizeMode(true);\n        state.setKeyboardNavigationDisabled(true);\n        break;\n    }\n  };\n  let allowsSorting = column.props?.allowsSorting;\n  let items = useMemo(() => {\n    let options: {label: string, id: string}[] = [];\n    if (allowsSorting) {\n      options.push({\n        label: stringFormatter.format('sortAscending'),\n        id: 'sort-asc'\n      });\n      options.push({\n        label: stringFormatter.format('sortDescending'),\n        id: 'sort-desc'\n      });\n    }\n    options.push({\n      label: stringFormatter.format('resizeColumn'),\n      id: 'resize'\n    });\n    return options;\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [allowsSorting]);\n\n  let resizingColumn = columnResizeState.resizingColumn;\n  let showResizer = !isEmpty && ((headerRowHovered && getInteractionModality() !== 'keyboard') || resizingColumn != null);\n  let alignment = 'start';\n  let menuAlign = 'start' as 'start' | 'end';\n  if (columnProps.align === 'center' || column.colSpan > 1) {\n    alignment = 'center';\n  } else if (columnProps.align === 'end') {\n    alignment = 'end';\n    menuAlign = 'end';\n  }\n\n  return (\n    <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n      <div\n        {...mergeProps(...allProps)}\n        ref={ref}\n        className={\n          classNames(\n            styles,\n            'spectrum-Table-headCell',\n            {\n              'is-active': isPressed,\n              'is-resizable': columnProps.allowsResizing,\n              'is-sortable': columnProps.allowsSorting,\n              'is-sorted-desc': state.sortDescriptor?.column === column.key && state.sortDescriptor?.direction === 'descending',\n              'is-sorted-asc': state.sortDescriptor?.column === column.key && state.sortDescriptor?.direction === 'ascending',\n              'is-hovered': isHovered,\n              'focus-ring': isFocusVisible,\n              'spectrum-Table-cell--hideHeader': columnProps.hideHeader\n            },\n            classNames(\n              stylesOverrides,\n              'react-spectrum-Table-cell',\n              {\n                'react-spectrum-Table-cell--alignCenter': alignment === 'center',\n                'react-spectrum-Table-cell--alignEnd': alignment === 'end'\n              }\n            )\n          )\n        }>\n        <MenuTrigger onOpenChange={setHeaderMenuOpen} align={menuAlign}>\n          <TableColumnHeaderButton alignment={alignment} ref={triggerRef} focusProps={focusProps}>\n            {columnProps.allowsSorting &&\n              <ArrowDownSmall UNSAFE_className={classNames(styles, 'spectrum-Table-sortedIcon')} />\n            }\n            {columnProps.hideHeader ?\n              <VisuallyHidden>{column.rendered}</VisuallyHidden> :\n              <div className={classNames(styles, 'spectrum-Table-headerCellText')}>{column.rendered}</div>\n            }\n            {\n              columnProps.allowsResizing && <ChevronDownMedium UNSAFE_className={classNames(styles, 'spectrum-Table-menuChevron')} />\n            }\n          </TableColumnHeaderButton>\n          <Menu onAction={onMenuSelect} minWidth=\"size-2000\" items={items}>\n            {(item) => (\n              <Item>\n                {item.label}\n              </Item>\n            )}\n          </Menu>\n        </MenuTrigger>\n        <Resizer\n          ref={resizingRef}\n          column={column}\n          showResizer={showResizer}\n          onResizeStart={onResizeStart}\n          onResize={onResize}\n          onResizeEnd={onResizeEnd}\n          triggerRef={useUnwrapDOMRef(triggerRef)} />\n        <div\n          aria-hidden\n          className={classNames(\n            styles,\n            'spectrum-Table-colResizeIndicator',\n            {\n              'spectrum-Table-colResizeIndicator--visible': resizingColumn != null,\n              'spectrum-Table-colResizeIndicator--resizing': resizingColumn === column.key\n            }\n          )}>\n          <div\n            className={classNames(\n              styles,\n              'spectrum-Table-colResizeNubbin',\n              {\n                'spectrum-Table-colResizeNubbin--visible': isInResizeMode && resizingColumn === column.key\n              }\n            )}>\n            <Nubbin />\n          </div>\n        </div>\n      </div>\n    </FocusRing>\n  );\n}\n\nfunction TableSelectAllCell({column}) {\n  let ref = useRef<HTMLDivElement | null>(null);\n  let {state} = useTableContext();\n  let isSingleSelectionMode = state.selectionManager.selectionMode === 'single';\n  let {columnHeaderProps} = useTableColumnHeader({\n    node: column,\n    isVirtualized: true\n  }, state, ref);\n\n  let {checkboxProps} = useTableSelectAllCheckbox(state);\n  let {hoverProps, isHovered} = useHover({});\n\n  return (\n    <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n      <div\n        {...mergeProps(columnHeaderProps, hoverProps)}\n        ref={ref}\n        className={\n          classNames(\n            styles,\n            'spectrum-Table-headCell',\n            'spectrum-Table-checkboxCell',\n            {\n              'is-hovered': isHovered\n            }\n          )\n        }>\n        {\n          /*\n            In single selection mode, the checkbox will be hidden.\n            So to avoid leaving a column header with no accessible content,\n            we use a VisuallyHidden component to include the aria-label from the checkbox,\n            which for single selection will be \"Select.\"\n          */\n          isSingleSelectionMode &&\n          <VisuallyHidden>{checkboxProps['aria-label']}</VisuallyHidden>\n        }\n        <Checkbox\n          {...checkboxProps}\n          data-testid=\"selectAll\"\n          isEmphasized\n          UNSAFE_style={isSingleSelectionMode ? {visibility: 'hidden'} : undefined}\n          UNSAFE_className={classNames(styles, 'spectrum-Table-checkbox')} />\n      </div>\n    </FocusRing>\n  );\n}\n\nfunction TableDragHeaderCell({column}) {\n  let ref = useRef<HTMLDivElement | null>(null);\n  let {state} = useTableContext();\n  let {columnHeaderProps} = useTableColumnHeader({\n    node: column,\n    isVirtualized: true\n  }, state, ref);\n  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/table');\n\n  return (\n    <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n      <div\n        {...columnHeaderProps}\n        ref={ref}\n        className={\n          classNames(\n            styles,\n            'spectrum-Table-headCell',\n            classNames(\n              stylesOverrides,\n              'react-spectrum-Table-headCell',\n              'react-spectrum-Table-dragButtonHeadCell'\n            )\n          )\n        }>\n        <VisuallyHidden>{stringFormatter.format('drag')}</VisuallyHidden>\n      </div>\n    </FocusRing>\n  );\n}\n\nfunction TableRowGroup({children, layoutInfo, parent, ...otherProps}: {children: ReactNode, layoutInfo: LayoutInfo, parent: LayoutInfo | null, role: string}) {\n  let {rowGroupProps} = useTableRowGroup();\n  let {isTableDroppable} = useContext(TableContext)!;\n  let style = useStyle(layoutInfo, parent);\n\n  return (\n    <div {...rowGroupProps} style={style} {...otherProps}>\n      {isTableDroppable &&\n        <RootDropIndicator key=\"root\" />\n      }\n      {children}\n    </div>\n  );\n}\n\nfunction DragButton() {\n  let {dragButtonProps, dragButtonRef, isFocusVisibleWithin} = useTableRowContext();\n  let {visuallyHiddenProps} = useVisuallyHidden();\n  return (\n    <FocusRing focusRingClass={classNames(stylesOverrides, 'focus-ring')}>\n      <div\n        {...dragButtonProps as React.HTMLAttributes<HTMLElement>}\n        className={\n          classNames(\n            stylesOverrides,\n            'react-spectrum-Table-dragButton'\n          )\n        }\n        style={!isFocusVisibleWithin ? {...visuallyHiddenProps.style} : {}}\n        ref={dragButtonRef}\n        draggable=\"true\">\n        <ListGripper UNSAFE_className={classNames(stylesOverrides)} />\n      </div>\n    </FocusRing>\n  );\n}\n\ninterface TableRowContextValue {\n  dragButtonProps: React.HTMLAttributes<HTMLDivElement>,\n  dragButtonRef: React.RefObject<HTMLDivElement | null>,\n  isFocusVisibleWithin: boolean\n}\n\n\nconst TableRowContext = React.createContext<TableRowContextValue | null>(null);\nexport function useTableRowContext(): TableRowContextValue {\n  return useContext(TableRowContext)!;\n}\n\nfunction TableRow({item, children, layoutInfo, parent, ...otherProps}: {item: GridNode<unknown>, children: ReactNode, layoutInfo: LayoutInfo, parent: LayoutInfo | null}) {\n  let ref = useRef<HTMLDivElement | null>(null);\n  let {state, layout, dragAndDropHooks, isTableDraggable, isTableDroppable, dragState, dropState} = useTableContext();\n  let isSelected = state.selectionManager.isSelected(item.key);\n  let {rowProps, hasAction, allowsSelection} = useTableRow({\n    node: item,\n    isVirtualized: true,\n    shouldSelectOnPressUp: isTableDraggable\n  }, state, ref);\n\n  let isDisabled = state.selectionManager.isDisabled(item.key);\n  let isInteractive = !isDisabled && (hasAction || allowsSelection || isTableDraggable);\n  let {pressProps, isPressed} = usePress({isDisabled: !isInteractive});\n\n  // The row should show the focus background style when any cell inside it is focused.\n  // If the row itself is focused, then it should have a blue focus indicator on the left.\n  let {\n    isFocusVisible: isFocusVisibleWithin,\n    focusProps: focusWithinProps\n  } = useFocusRing({within: true});\n  let {isFocusVisible, focusProps} = useFocusRing();\n  let {hoverProps, isHovered} = useHover({isDisabled: !isInteractive});\n  let isFirstRow = state.collection.rows.find(row => row.type === 'item' && row.level === 0)?.key === item.key;\n  let isLastRow = item.nextKey == null;\n  // Figure out if the TableView content is equal or greater in height to the container. If so, we'll need to round the bottom\n  // border corners of the last row when selected.\n  let isFlushWithContainerBottom = false;\n  if (isLastRow) {\n    if (layout.getContentSize()?.height >= (layout.virtualizer?.visibleRect.height ?? 0)) {\n      isFlushWithContainerBottom = true;\n    }\n  }\n\n  let draggableItem: DraggableItemResult | null = null;\n  if (isTableDraggable && dragAndDropHooks && dragState) {\n    draggableItem = dragAndDropHooks.useDraggableItem!({key: item.key, hasDragButton: true}, dragState);\n    if (isDisabled) {\n      draggableItem = null;\n    }\n  }\n  let isDropTarget = false;\n  let dropIndicator: DropIndicatorAria | null = null;\n  let dropIndicatorRef = useRef<HTMLDivElement | null>(null);\n  if (isTableDroppable && dragAndDropHooks && dropState) {\n    let target = {type: 'item', key: item.key, dropPosition: 'on'} as DropTarget;\n    isDropTarget = dropState.isDropTarget(target);\n\n    dropIndicator = dragAndDropHooks.useDropIndicator!({target}, dropState, dropIndicatorRef);\n  }\n\n  let dragButtonRef = React.useRef<HTMLDivElement | null>(null);\n  let {buttonProps: dragButtonProps} = useButton({\n    ...draggableItem?.dragButtonProps,\n    elementType: 'div'\n  }, dragButtonRef);\n\n  let style = useStyle(layoutInfo, parent);\n\n  let props = mergeProps(\n    rowProps,\n    otherProps,\n    {style},\n    focusWithinProps,\n    focusProps,\n    hoverProps,\n    pressProps,\n    draggableItem?.dragProps,\n    // Remove tab index from list row if performing a screenreader drag. This prevents TalkBack from focusing the row,\n    // allowing for single swipe navigation between row drop indicator\n    dragAndDropHooks?.isVirtualDragging?.() ? {tabIndex: null} : null\n  ) as HTMLAttributes<HTMLElement> & DOMAttributes<FocusableElement>;\n\n  let {visuallyHiddenProps} = useVisuallyHidden();\n\n  return (\n    <TableRowContext.Provider value={{dragButtonProps, dragButtonRef, isFocusVisibleWithin}}>\n      {isTableDroppable && isFirstRow &&\n        <InsertionIndicator\n          rowProps={props}\n          key={`${item.key}-before`}\n          target={{key: item.key, type: 'item', dropPosition: 'before'}} />\n      }\n      {isTableDroppable && !dropIndicator?.isHidden &&\n        <div role=\"row\" {...visuallyHiddenProps}>\n          <div role=\"gridcell\">\n            <div role=\"button\" {...dropIndicator?.dropIndicatorProps} ref={dropIndicatorRef} />\n          </div>\n        </div>\n      }\n      <div\n        {...props}\n        ref={ref}\n        className={\n          classNames(\n            styles,\n            'spectrum-Table-row',\n            {\n              'is-active': isPressed,\n              'is-selected': isSelected,\n              'spectrum-Table-row--highlightSelection': state.selectionManager.selectionBehavior === 'replace',\n              'is-next-selected': item.nextKey != null && state.selectionManager.isSelected(item.nextKey),\n              'is-focused': isFocusVisibleWithin,\n              'focus-ring': isFocusVisible,\n              'is-hovered': isHovered,\n              'is-disabled': isDisabled,\n              'spectrum-Table-row--firstRow': isFirstRow,\n              'spectrum-Table-row--lastRow': isLastRow,\n              'spectrum-Table-row--isFlushBottom': isFlushWithContainerBottom\n            },\n            classNames(\n              stylesOverrides,\n              'react-spectrum-Table-row',\n              {'react-spectrum-Table-row--dropTarget': isDropTarget}\n            )\n          )\n        }>\n        {children}\n      </div>\n      {isTableDroppable &&\n        <InsertionIndicator\n          rowProps={props}\n          key={`${item.key}-after`}\n          target={{key: item.key, type: 'item', dropPosition: 'after'}} />\n      }\n    </TableRowContext.Provider>\n  );\n}\n\nfunction TableHeaderRow({item, children, layoutInfo, parent, ...props}: {item: GridNode<unknown>, children: ReactNode, layoutInfo: LayoutInfo, parent: LayoutInfo | null} & HoverProps) {\n  let {state, headerMenuOpen} = useTableContext();\n  let ref = useRef<HTMLDivElement | null>(null);\n  let {rowProps} = useTableHeaderRow({node: item, isVirtualized: true}, state, ref);\n  let {hoverProps} = useHover({...props, isDisabled: headerMenuOpen});\n  let style = useStyle(layoutInfo, parent);\n\n  return (\n    <div {...mergeProps(rowProps, hoverProps)} ref={ref} style={style}>\n      {children}\n    </div>\n  );\n}\n\nfunction TableDragCell({cell}) {\n  let ref = useRef<HTMLDivElement | null>(null);\n  let {state, isTableDraggable} = useTableContext();\n  let isDisabled = state.selectionManager.isDisabled(cell.parentKey);\n  let {gridCellProps} = useTableCell({\n    node: cell,\n    isVirtualized: true\n  }, state, ref);\n\n\n  return (\n    <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n      <div\n        {...gridCellProps}\n        ref={ref}\n        className={\n          classNames(\n            styles,\n            'spectrum-Table-cell',\n            {\n              'is-disabled': isDisabled\n            },\n            classNames(\n              stylesOverrides,\n              'react-spectrum-Table-cell',\n              'react-spectrum-Table-dragButtonCell'\n            )\n          )\n        }>\n        {isTableDraggable && !isDisabled && <DragButton />}\n      </div>\n    </FocusRing>\n  );\n}\n\nfunction TableCheckboxCell({cell}) {\n  let ref = useRef<HTMLDivElement | null>(null);\n  let {state} = useTableContext();\n  // The TableCheckbox should always render its disabled status if the row is disabled, regardless of disabledBehavior,\n  // but the cell itself should not render its disabled styles if disabledBehavior=\"selection\" because the row might have actions on it.\n  let isSelectionDisabled = state.disabledKeys.has(cell.parentKey);\n  let isDisabled = state.selectionManager.isDisabled(cell.parentKey);\n  let {gridCellProps} = useTableCell({\n    node: cell,\n    isVirtualized: true\n  }, state, ref);\n\n  let {checkboxProps} = useTableSelectionCheckbox({key: cell.parentKey}, state);\n\n  return (\n    <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n      <div\n        {...gridCellProps}\n        ref={ref}\n        className={\n          classNames(\n            styles,\n            'spectrum-Table-cell',\n            'spectrum-Table-checkboxCell',\n            {\n              'is-disabled': isDisabled\n            },\n            classNames(\n              stylesOverrides,\n              'react-spectrum-Table-cell'\n            )\n          )\n        }>\n        {state.selectionManager.selectionMode !== 'none' &&\n          <Checkbox\n            {...checkboxProps}\n            isEmphasized\n            isDisabled={isSelectionDisabled}\n            UNSAFE_className={classNames(styles, 'spectrum-Table-checkbox')} />\n        }\n      </div>\n    </FocusRing>\n  );\n}\n\nfunction TableCell({cell}) {\n  let {scale} = useProvider();\n  let state = useTableContext().state as TableState<unknown> | TreeGridState<unknown>;\n  let isExpandableTable = 'keyMap' in state;\n  let ref = useRef<HTMLDivElement | null>(null);\n  let columnProps = cell.column.props as SpectrumColumnProps<unknown>;\n  let isDisabled = state.selectionManager.isDisabled(cell.parentKey);\n  let {gridCellProps} = useTableCell({\n    node: cell,\n    isVirtualized: true\n  }, state as TableState<unknown>, ref);\n  let {id, ...otherGridCellProps} = gridCellProps;\n  let isFirstRowHeaderCell = state.collection.rowHeaderColumnKeys.keys().next().value === cell.column.key;\n  let isRowExpandable = false;\n  let showExpandCollapseButton = false;\n  let levelOffset = 0;\n\n  if ('keyMap' in state) {\n    isRowExpandable = state.keyMap.get(cell.parentKey)?.props.UNSTABLE_childItems?.length > 0 || state.keyMap.get(cell.parentKey)?.props?.children?.length > state.userColumnCount;\n    showExpandCollapseButton = isFirstRowHeaderCell && isRowExpandable;\n    // Offset based on level, and add additional offset if there is no expand/collapse button on a row\n    levelOffset = (cell.level - 1) * LEVEL_OFFSET_WIDTH[scale] + (!showExpandCollapseButton ? LEVEL_OFFSET_WIDTH[scale] * 2 : 0);\n  }\n\n  return (\n    <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n      <div\n        {...otherGridCellProps}\n        aria-labelledby={id}\n        ref={ref}\n        style={isExpandableTable && isFirstRowHeaderCell ? {paddingInlineStart: levelOffset} : {}}\n        className={\n          classNames(\n            styles,\n            'spectrum-Table-cell',\n            {\n              'spectrum-Table-cell--divider': columnProps.showDivider && cell.column.nextKey !== null,\n              'spectrum-Table-cell--hideHeader': columnProps.hideHeader,\n              'spectrum-Table-cell--hasExpandCollapseButton': showExpandCollapseButton,\n              'is-disabled': isDisabled\n            },\n            classNames(\n              stylesOverrides,\n              'react-spectrum-Table-cell',\n              {\n                'react-spectrum-Table-cell--alignStart': columnProps.align === 'start',\n                'react-spectrum-Table-cell--alignCenter': columnProps.align === 'center',\n                'react-spectrum-Table-cell--alignEnd': columnProps.align === 'end'\n              }\n            )\n          )\n        }>\n        {showExpandCollapseButton && <ExpandableRowChevron cell={cell} />}\n        <span\n          id={id}\n          className={\n            classNames(\n              styles,\n              'spectrum-Table-cellContents'\n            )\n        }>\n          {cell.rendered}\n        </span>\n      </div>\n    </FocusRing>\n  );\n}\n\nfunction TableCellWrapper({layoutInfo, virtualizer, parent, children}: {layoutInfo: LayoutInfo, virtualizer: any, parent: ReusableView<any, any>, children: ReactNode}) {\n  let {isTableDroppable, dropState} = useContext(TableContext)!;\n  let isDropTarget = false;\n  let isRootDroptarget = false;\n  if (isTableDroppable && dropState) {\n    if (parent.content) {\n      isDropTarget = dropState.isDropTarget({type: 'item', dropPosition: 'on', key: parent.content.key});\n    }\n    isRootDroptarget = dropState.isDropTarget({type: 'root'});\n  }\n\n  return (\n    <VirtualizerItem\n      layoutInfo={layoutInfo}\n      virtualizer={virtualizer}\n      parent={parent?.layoutInfo}\n      className={\n        useMemo(() => classNames(\n          styles,\n          'spectrum-Table-cellWrapper',\n          classNames(\n            stylesOverrides,\n            {\n              'react-spectrum-Table-cellWrapper': !layoutInfo.estimatedSize,\n              'react-spectrum-Table-cellWrapper--dropTarget': isDropTarget || isRootDroptarget\n            }\n          )\n        ), [layoutInfo.estimatedSize, isDropTarget, isRootDroptarget])\n      }>\n      {children}\n    </VirtualizerItem>\n  );\n}\n\nfunction ExpandableRowChevron({cell}) {\n   // TODO: move some/all of the chevron button setup into a separate hook?\n  let {direction} = useLocale();\n  let state = useTableContext().state as TableState<unknown> | TreeGridState<unknown>;\n  let expandButtonRef = useRef<HTMLSpanElement | null>(null);\n  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/table');\n  let isExpanded;\n\n  if ('keyMap' in state) {\n    isExpanded = state.expandedKeys === 'all' || state.expandedKeys.has(cell.parentKey);\n  }\n\n  // Will need to keep the chevron as a button for iOS VO at all times since VO doesn't focus the cell. Also keep as button if cellAction is defined by the user in the future\n  let {buttonProps} = useButton({\n    // Desktop and mobile both toggle expansion of a native expandable row on mouse/touch up\n    onPress: () => {\n      (state as TreeGridState<unknown>).toggleKey(cell.parentKey);\n      if (!isFocusVisible()) {\n        state.selectionManager.setFocused(true);\n        state.selectionManager.setFocusedKey(cell.parentKey);\n      }\n    },\n    elementType: 'span',\n    'aria-label': isExpanded ? stringFormatter.format('collapse') : stringFormatter.format('expand')\n  }, expandButtonRef);\n\n  return (\n    <span\n      {...buttonProps}\n      ref={expandButtonRef}\n      // Override tabindex so that grid keyboard nav skips over it. Needs -1 so android talkback can actually \"focus\" it\n      tabIndex={isAndroid() ? -1 : undefined}\n      className={\n        classNames(\n          styles,\n          'spectrum-Table-expandButton',\n          {\n            'is-open': isExpanded\n          }\n        )\n      }>\n      {direction === 'ltr' ? <ChevronRightMedium /> : <ChevronLeftMedium />}\n    </span>\n  );\n}\n\nfunction LoadingState() {\n  let {state} = useContext(TableContext)!;\n  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/table');\n  return (\n    <CenteredWrapper>\n      <ProgressCircle\n        isIndeterminate\n        aria-label={state.collection.size > 0 ? stringFormatter.format('loadingMore') : stringFormatter.format('loading')} />\n    </CenteredWrapper>\n  );\n}\n\nfunction EmptyState() {\n  let {renderEmptyState} = useContext(TableContext)!;\n  let emptyState = renderEmptyState ? renderEmptyState() : null;\n  if (emptyState == null) {\n    return null;\n  }\n\n  return (\n    <CenteredWrapper>\n      {emptyState}\n    </CenteredWrapper>\n  );\n}\n\nfunction CenteredWrapper({children}) {\n  let state = useTableContext().state as TableState<unknown> | TreeGridState<unknown>;\n  let rowProps;\n\n  if ('keyMap' in state) {\n    let topLevelRowCount = [...state.collection.body.childNodes].length;\n    rowProps = {\n      'aria-level': 1,\n      'aria-posinset': topLevelRowCount + 1,\n      'aria-setsize': topLevelRowCount + 1\n    };\n  } else {\n    rowProps = {\n      'aria-rowindex': state.collection.headerRows.length + state.collection.size + 1\n    };\n  }\n\n  return (\n    <div\n      role=\"row\"\n      {...rowProps}\n      className={classNames(stylesOverrides, 'react-spectrum-Table-centeredWrapper')}>\n      <div role=\"rowheader\" aria-colspan={state.collection.columns.length}>\n        {children}\n      </div>\n    </div>\n  );\n}\n\nconst ForwardTableViewBase = React.forwardRef(TableViewBase) as <T>(props: TableBaseProps<T> & {ref?: DOMRef<HTMLDivElement>}) => ReactElement;\n\nexport {ForwardTableViewBase as TableViewBase};\n"],"names":[],"version":3,"file":"TableViewBase.cjs.map"}