collaborative-ui
Version:
React component library for building real-time collaborative editing applications.
31 lines (30 loc) • 1.08 kB
TypeScript
import { JsonCrdtRepo } from 'json-crdt-repo';
import { BehaviorSubject } from 'rxjs';
import type { EditSession } from 'json-crdt-repo/lib/session/EditSession';
import type { NiceUiNavService } from 'nice-ui/lib/context/services/NiceUiNavService';
import type { DemoDefinition } from './types';
export interface DemoFilePersistedState {
files: Omit<OpenDemoFile, 'session'>[];
selected: string;
}
export interface OpenDemoFile {
id: string;
session: EditSession;
}
export interface JsonCrdtDemosStateOpts {
wsApi?: string;
basePath: string[];
nav: NiceUiNavService;
}
export declare class JsonCrdtDemosState {
readonly opts: JsonCrdtDemosStateOpts;
readonly file$: BehaviorSubject<OpenDemoFile | null>;
readonly sid: number;
readonly repo: JsonCrdtRepo;
readonly steps$: BehaviorSubject<string[]>;
readonly selected$: BehaviorSubject<string>;
constructor(opts: JsonCrdtDemosStateOpts);
readonly select: (id: string) => void;
readonly create: (definition: DemoDefinition) => void;
url(id: string): string;
}