k5kit
Version:
Utilities for TypeScript and Svelte
26 lines (25 loc) • 1.21 kB
TypeScript
import { type Writable } from 'svelte/store';
import { type SelectionOptions } from './selection-js.ts';
export declare class KSelection<T> {
#private;
readonly subscribe: Writable<Set<T>>['subscribe'];
readonly items: Set<T>;
constructor(all_items: T[], options: SelectionOptions<T>);
find_first_index(): number | null;
find_first(): T | undefined;
items_as_array(): T[];
get_selected_indexes(): number[];
add_index(index: number): void;
clear(): void;
update_all_items(all: T[]): void;
handle_mousedown(e: MouseEvent, index: number): void;
handle_contextmenu(e: MouseEvent, index: number): void;
handle_click(e: MouseEvent, index: number): void;
handle_keydown(e: KeyboardEvent): void;
/** This adds all row events, and keydown.
* The listener should return row index.
* Returns an unlisten function. */
add_event_listeners(element: HTMLElement, listener: (e: MouseEvent | KeyboardEvent) => number | null): () => void;
/** This adds all row events, and keydown. The listener should return row index. */
attach_events(listener: (e: MouseEvent | KeyboardEvent) => number | null): (element: HTMLElement) => () => void;
}