import {Intersection} from '@utils'; export interface ChangedElements { added: Array; removed: Array; } export interface SelectionStore { touched: Array; stored: Array; selected: Array; changed: ChangedElements; } export interface SelectionEvent { event: MouseEvent | TouchEvent | null; store: SelectionStore; } export type SelectionEvents = { beforestart: (e: SelectionEvent) => boolean; start: (e: SelectionEvent) => void; move: (e: SelectionEvent) => void stop: (e: SelectionEvent) => void; } export type AreaLocation = { x1: number; y1: number; x2: number; y2: number; } export interface Coordinates { x: number; y: number; } export type TapMode = 'touch' | 'native'; export type OverlapMode = 'keep' | 'drop' | 'invert'; export interface Scrolling { speedDivider: number; manualSpeed: number; } export interface SingleTap { allow: boolean; intersect: TapMode; } export interface SelectionOptions { class: string; document: Document; intersect: Intersection; singleTap: SingleTap; startThreshold: number | Coordinates; allowTouch: boolean; overlap: OverlapMode; selectables: ReadonlyArray; scrolling: Scrolling; startareas: ReadonlyArray; boundaries: ReadonlyArray; container: string | HTMLElement | ReadonlyArray; } export interface ScrollEvent extends MouseEvent { deltaY: number; deltaX: number; }