json-joy
Version:
Collection of libraries for building collaborative editing apps.
41 lines (40 loc) • 2.45 kB
TypeScript
import { CursorAnchor, type Peritext } from '../../../../json-crdt-extensions/peritext';
import type { PeritextDataTransfer } from '../../../../json-crdt-extensions/peritext/transfer/PeritextDataTransfer';
import type { PeritextEventHandlerMap, PeritextEventTarget } from '../PeritextEventTarget';
import type * as events from '../types';
import type { PeritextClipboard } from '../clipboard/types';
import type { UndoCollector } from './types';
import type { UiHandle } from './ui/UiHandle';
import type { Point } from '../../../../json-crdt-extensions/peritext/rga/Point';
import type { EditorUi } from '../../../../json-crdt-extensions/peritext/editor/types';
export interface PeritextEventDefaultsOpts {
clipboard?: PeritextClipboard;
transfer?: PeritextDataTransfer;
}
/**
* Implementation of default handlers for Peritext events, such as "insert",
* "delete", "cursor", etc. These implementations are used by the
* {@link PeritextEventTarget} to provide default behavior for each event type.
* If `event.preventDefault()` is called on a Peritext event, the default handler
* will not be executed.
*/
export declare class PeritextEventDefaults implements PeritextEventHandlerMap {
readonly txt: Peritext;
readonly et: PeritextEventTarget;
readonly opts: PeritextEventDefaultsOpts;
undo?: UndoCollector;
ui?: UiHandle;
protected editorUi: EditorUi;
constructor(txt: Peritext, et: PeritextEventTarget, opts?: PeritextEventDefaultsOpts);
protected getSelSet({ at }: events.SelectionDetailPart): events.SelectionSet;
protected moveRange(start: Point, end: Point, anchor: CursorAnchor, move?: events.SelectionMoveInstruction[]): [start: Point, end: Point, anchor: CursorAnchor];
protected moveSelSet(set: events.SelectionSet, { move }: events.SelectionMoveDetailPart): void;
readonly change: (event: CustomEvent<events.ChangeDetail>) => void;
readonly insert: ({ detail }: CustomEvent<events.InsertDetail>) => void;
readonly delete: ({ detail }: CustomEvent<events.DeleteDetail>) => void;
readonly cursor: ({ detail }: CustomEvent<events.CursorDetail>) => void;
readonly format: ({ detail }: CustomEvent<events.FormatDetail>) => void;
readonly marker: ({ detail }: CustomEvent<events.MarkerDetail>) => void;
readonly buffer: ({ detail }: CustomEvent<events.BufferDetail>) => Promise<void>;
readonly annals: (event: CustomEvent<events.AnnalsDetail>) => void;
}