UNPKG

loro-codemirror

Version:
52 lines (51 loc) 1.68 kB
import { type EditorView, type PluginValue, type ViewUpdate } from "@codemirror/view"; import { EphemeralStore, LoroDoc, LoroText, type Subscription } from "loro-crdt"; import { type UserState, type CursorState } from "./awareness.ts"; import { StateField, type Extension } from "@codemirror/state"; export declare const ephemeralEffect: import("@codemirror/state").StateEffectType<EphemeralEffect>; export declare const ephemeralStateField: StateField<{ remoteCursors: Map<string, { anchor: number; head?: number; }>; remoteUsers: Map<string, UserState | undefined>; isCheckout: boolean; }>; type EphemeralEffect = { type: "delete"; peer: string; } | { type: "cursor"; peer: string; cursor: { anchor: number; head?: number; }; } | { type: "user"; peer: string; user?: UserState; } | { type: "checkout"; checkout: boolean; }; export type EphemeralState = { [key: `${string}-cm-cursor`]: CursorState; [key: `${string}-cm-user`]: UserState | undefined; }; export declare const createCursorLayer: () => Extension; export declare const createSelectionLayer: () => Extension; export declare class EphemeralPlugin implements PluginValue { view: EditorView; doc: LoroDoc; user: UserState; ephemeralStore: EphemeralStore<EphemeralState>; private getTextFromDoc; sub: Subscription; ephemeralSub: Subscription; initUser: boolean; constructor(view: EditorView, doc: LoroDoc, user: UserState, ephemeralStore: EphemeralStore<EphemeralState>, getTextFromDoc: (doc: LoroDoc) => LoroText); update(update: ViewUpdate): void; destroy(): void; } export {};