json-joy
Version:
Collection of libraries for building collaborative editing apps.
47 lines (46 loc) • 2.21 kB
TypeScript
import { Slice } from './Slice';
import { SliceStacking } from './constants';
import { UndEndIterator, type UndEndNext } from '../../../util/iterator';
import type { Range } from '../rga/Range';
import type { 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';
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 Slice<T>, K extends new (...args: ConstructorParameters<typeof Slice<T>>) => S>(range: Range<T>, stacking: SliceStacking, type: SliceType, data?: unknown, Klass?: K): S;
insMarker(range: Range<T>, type: SliceType, data?: unknown | ITimestampStruct): Slice<T>;
insMarkerAfter(after: ITimestampStruct, type: SliceType, data?: unknown): Slice<T>;
insStack(range: Range<T>, type: SliceType, data?: unknown | ITimestampStruct): Slice<T>;
insOne(range: Range<T>, type: SliceType, data?: unknown | ITimestampStruct): Slice<T>;
insErase(range: Range<T>, type: SliceType, data?: unknown | ITimestampStruct): Slice<T>;
protected unpack(arr: ArrNode, chunk: ArrChunk): Slice<T>;
get(id: ITimestampStruct): Slice<T> | undefined;
del(id: ITimestampStruct): void;
delSlices(slices: Iterable<Slice<T>>): boolean;
size(): number;
/**
* @todo Rename to `each0`.
*/
iterator0(): UndEndNext<Slice<T>>;
each(): UndEndIterator<Slice<T>>;
forEach(callback: (item: Slice<T>) => void): void;
private _topologyHash;
hash: number;
refresh(): number;
toStringName(): string;
toString(tab?: string): string;
}