UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

47 lines (46 loc) 2.21 kB
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; }