json-joy
Version:
Collection of libraries for building collaborative editing apps.
32 lines (31 loc) • 1.32 kB
TypeScript
import type { Peritext } from '../../../json-crdt-extensions/peritext';
import type { PeritextEventTarget } from '../../events/PeritextEventTarget';
import type { TypedEventTarget } from '../../../util/events/TypedEventTarget';
import type { CompositionController } from './CompositionController';
import type { UiLifeCycles } from '../types';
export interface InputControllerEventSourceMap {
beforeinput: HTMLElementEventMap['beforeinput'];
keydown: HTMLElementEventMap['keydown'];
copy: HTMLElementEventMap['copy'];
cut: HTMLElementEventMap['cut'];
paste: HTMLElementEventMap['paste'];
}
export type InputControllerEventSource = TypedEventTarget<InputControllerEventSourceMap>;
export interface InputControllerOpts {
source: InputControllerEventSource;
txt: Peritext;
et: PeritextEventTarget;
comp: CompositionController;
}
/**
* Processes incoming DOM "input" events (such as "beforeinput", "input",
* "keydown", etc.) and translates them into Peritext events.
*/
export declare class InputController implements UiLifeCycles {
protected readonly opts: InputControllerOpts;
protected readonly source: InputControllerEventSource;
protected readonly txt: Peritext;
readonly et: PeritextEventTarget;
constructor(opts: InputControllerOpts);
start(): () => void;
}