edix
Version:
An experimental, framework agnostic, small (~3kB) contenteditable state manager.
18 lines (17 loc) • 636 B
TypeScript
export declare const NODE_TEXT = 1;
export declare const NODE_VOID = 2;
export type TextNode = Readonly<{
type: typeof NODE_TEXT;
text: string;
}>;
export type VoidNode = Readonly<{
type: typeof NODE_VOID;
data: Record<string, unknown>;
}>;
export type NodeData = TextNode | VoidNode;
export type DocFragment = readonly (readonly NodeData[])[];
export type Position = readonly [line: number, offset: number];
export type SelectionSnapshot = readonly [anchor: Position, focus: Position];
export type Writeable<T> = T extends Record<string, unknown> | readonly unknown[] ? {
-readonly [key in keyof T]: T[key];
} : T;