import * as RadixMenu from '@radix-ui/react-dropdown-menu' import Block from '../Primitives/Block/Block' import PrimitiveText from '../Primitives/PrimitiveText/PrimitiveText' import VirtualList from '../VirtualList/VirtualList' import type { VirtualListItem } from '../VirtualList/types' import type { MultiSelectV2TokensType } from './multiSelectV2.tokens' import type { FlattenedMultiSelectV2Item, MultiSelectV2ItemType, } from './multiSelectV2.types' import MultiSelectV2MenuItem from './MultiSelectV2MenuItem' export type MultiSelectV2MenuVirtualListProps = { flattenedItems: FlattenedMultiSelectV2Item[] itemIndexMap: Map allItemsFlat: MultiSelectV2ItemType[] selected: string[] onSelect: (value: string) => void maxSelections?: number tokens: MultiSelectV2TokensType height: number itemHeight: number overscan?: number onEndReached?: () => void endReachedThreshold?: number hasMore?: boolean focusIdentityEnabled?: boolean } const MultiSelectV2MenuVirtualList = ({ flattenedItems, itemIndexMap, allItemsFlat, selected, onSelect, maxSelections, tokens, height, itemHeight, overscan = 5, onEndReached, endReachedThreshold, hasMore, focusIdentityEnabled, }: MultiSelectV2MenuVirtualListProps) => ( { const typed = flatItem as FlattenedMultiSelectV2Item if (typed.type === 'label') { return ( {typed.label} ) } if (typed.type === 'separator') { return ( ) } if (typed.type === 'item' && typed.item) { const itemIndex = itemIndexMap.get(typed.id) ?? 0 return ( ) } return null }} /> ) MultiSelectV2MenuVirtualList.displayName = 'MultiSelectV2MenuVirtualList' export default MultiSelectV2MenuVirtualList