/// import { BaseComponent, IPoint, IRectangle } from '../../Utilities'; import { IMarqueeSelectionProps } from './MarqueeSelection.types'; export interface IMarqueeSelectionState { dragOrigin?: IPoint; dragRect?: IRectangle; } /** * MarqueeSelection component abstracts managing a draggable rectangle which sets items selected/not selected. * Elements which have data-selectable-index attributes are queried and measured once to determine if they * fall within the bounds of the rectangle. The measure is memoized during the drag as a performance optimization * so if the items change sizes while dragging, that could cause incorrect results. */ export declare class MarqueeSelectionBase extends BaseComponent { static defaultProps: { rootTagName: string; rootProps: {}; isEnabled: boolean; }; private _root; private _dragOrigin; private _rootRect; private _lastMouseEvent; private _autoScroll; private _selectedIndicies; private _preservedIndicies; private _itemRectCache; private _scrollableParent; private _scrollableSurface; private _scrollTop; private _isTouch; constructor(props: IMarqueeSelectionProps); componentDidMount(): void; componentWillUnmount(): void; render(): JSX.Element; /** Determine if the mouse event occured on a scrollbar of the target element. */ private _isMouseEventOnScrollbar(ev); private _onMouseDown; private _onTouchStart; private _onPointerDown; private _getRootRect(); private _onAsyncMouseMove(ev); private _onMouseMove(ev); private _onMouseUp(ev); private _isPointInRectangle(rectangle, point); /** * We do not want to start the marquee if we're trying to marquee * from within an existing marquee selection. */ private _isDragStartInSelection(ev); private _isInSelectionToggle(ev); private _evaluateSelection(dragRect, rootRect); }