json-joy
Version:
Collection of libraries for building collaborative editing apps.
44 lines (43 loc) • 2.27 kB
TypeScript
import { PersistedSlice } from './PersistedSlice';
import { SliceStacking } from './constants';
import { MarkerSlice } from './MarkerSlice';
import type { Range } from '../rga/Range';
import type { Slice, SliceType } from './types';
import type { ITimestampStruct } from '../../../json-crdt-patch/clock';
import type { Stateful } from '../types';
import type { Printable } from 'tree-dump/lib/types';
import type { ArrChunk, ArrNode } from '../../../json-crdt/nodes';
import type { AbstractRga } from '../../../json-crdt/nodes/rga';
import type { Peritext } from '../Peritext';
import type { UndefIterator } from '../../../util/iterator';
export declare class Slices<T = string> implements Stateful, Printable {
/** The text RGA. */
protected readonly txt: Peritext<T>;
/** The `arr` node, used as a set, where slices are stored. */
readonly set: ArrNode;
private list;
protected readonly rga: AbstractRga<T>;
constructor(
/** The text RGA. */
txt: Peritext<T>,
/** The `arr` node, used as a set, where slices are stored. */
set: ArrNode);
ins<S extends PersistedSlice<T>, K extends new (...args: ConstructorParameters<typeof PersistedSlice<T>>) => S>(range: Range<T>, stacking: SliceStacking, type: SliceType, data?: unknown, Klass?: K): S;
insMarker(range: Range<T>, type: SliceType, data?: unknown | ITimestampStruct): MarkerSlice<T>;
insMarkerAfter(after: ITimestampStruct, type: SliceType, data?: unknown, separator?: string): MarkerSlice<T>;
insStack(range: Range<T>, type: SliceType, data?: unknown | ITimestampStruct): PersistedSlice<T>;
insOne(range: Range<T>, type: SliceType, data?: unknown | ITimestampStruct): PersistedSlice<T>;
insErase(range: Range<T>, type: SliceType, data?: unknown | ITimestampStruct): PersistedSlice<T>;
protected unpack(chunk: ArrChunk): PersistedSlice<T>;
get(id: ITimestampStruct): PersistedSlice<T> | undefined;
del(id: ITimestampStruct): void;
delSlices(slices: Iterable<Slice<T>>): boolean;
size(): number;
iterator0(): UndefIterator<Slice<T>>;
forEach(callback: (item: Slice<T>) => void): void;
private _topologyHash;
hash: number;
refresh(): number;
toStringName(): string;
toString(tab?: string): string;
}