import React, { PureComponent } from 'react'; import memoize from 'memoizee'; import { type DraggableChildrenFn } from '@hello-pangea/dnd'; import { type Range } from '@deephaven/utils'; import ItemList, { type RenderItemProps, type DefaultListItem, type ItemListProps } from './ItemList'; import './DraggableItemList.scss'; export type DraggableRenderItemProps = RenderItemProps & { isClone?: boolean; selectedCount?: number; }; type DraggableRenderItemFn = (props: DraggableRenderItemProps) => React.ReactNode; type DraggableItemListProps = Omit, 'overscanCount' | 'focusSelector' | 'isDragSelect'> & { className: string; draggingItemClassName: string; isDropDisabled: boolean; hasPlaceholder: boolean; isDragDisabled: boolean; renderItem: DraggableRenderItemFn; style: React.CSSProperties; draggablePrefix: string; droppableId: string; 'data-testid'?: string; }; type DraggableItemListState = { selectedCount: number; }; /** * Show a draggable item list. It _must_ be used within a `DragDropContext`. * This implementation uses @hello-pangea/dnd for handling dragging and dropping of items. * We use ItemList to handle selection for multi drag and drop (not built in to @hello-pangea/dnd). * One caveat with the use of @hello-pangea/dnd is that it doesn't allow a drag to be initiated while * using a modifier key: https://github.com/atlassian/@hello-pangea/dnd/issues/1678 */ declare class DraggableItemList extends PureComponent, DraggableItemListState> { static DEFAULT_ROW_HEIGHT: number; static defaultProps: { className: string; draggingItemClassName: string; offset: number; items: never[]; rowHeight: number; isDeselectOnClick: boolean; isDoubleClickSelect: boolean; isDropDisabled: boolean; hasPlaceholder: boolean; isDragDisabled: boolean; isMultiSelect: boolean; isStickyBottom: boolean; disableSelect: boolean; style: null; onFocusChange(): void; onSelect(): void; onSelectionChange(): void; onViewportChange(): void; renderItem: typeof DraggableItemList.renderItem; selectedRanges: never[]; draggablePrefix: string; droppableId: string; 'data-testid': undefined; }; static renderHandle(): JSX.Element; static renderBadge({ text }: { text?: string; }): React.ReactNode; static renderTextItem({ text, badgeText, className, }: { text?: string; badgeText?: string; className: string; }): JSX.Element; static renderItem

({ item, isClone, selectedCount, }: DraggableRenderItemProps

): JSX.Element; static getDraggableId(draggablePrefix: string, itemIndex: number): string; static getDraggableIndex(draggableId: string): number; constructor(props: DraggableItemListProps); itemList: React.RefObject>; selectItem(itemIndex: number): void; focusItem(itemIndex: number): void; scrollToItem(itemIndex: number): void; getCachedDraggableItem: ((draggablePrefix: string, renderItem: DraggableRenderItemFn, item: T, itemIndex: number, isFocused: boolean, isSelected: boolean, isDragDisabled: boolean, style: React.CSSProperties) => import("react/jsx-runtime").JSX.Element) & memoize.Memoized<(draggablePrefix: string, renderItem: DraggableRenderItemFn, item: T, itemIndex: number, isFocused: boolean, isSelected: boolean, isDragDisabled: boolean, style: React.CSSProperties) => import("react/jsx-runtime").JSX.Element>; handleSelectionChange(selectedRanges: readonly Range[]): void; getCachedRenderDraggableItem: ((draggablePrefix: string, isDragDisabled: boolean, renderItem: DraggableRenderItemFn) => ({ item, itemIndex, isFocused, isSelected, style }: RenderItemProps) => import("react/jsx-runtime").JSX.Element) & memoize.Memoized<(draggablePrefix: string, isDragDisabled: boolean, renderItem: DraggableRenderItemFn) => ({ item, itemIndex, isFocused, isSelected, style }: RenderItemProps) => import("react/jsx-runtime").JSX.Element>; getCachedRenderClone: ((draggingItemClassName: string, items: readonly T[], offset: number, renderItem: DraggableRenderItemFn) => DraggableChildrenFn) & memoize.Memoized<(draggingItemClassName: string, items: readonly T[], offset: number, renderItem: DraggableRenderItemFn) => DraggableChildrenFn>; render(): JSX.Element; } export default DraggableItemList; //# sourceMappingURL=DraggableItemList.d.ts.map