UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

39 lines (38 loc) 1.27 kB
import { PersistedSlice } from '../slice/PersistedSlice'; export class EditorSlices { txt; slices; constructor(txt, slices) { this.txt = txt; this.slices = slices; } insAtCursors(callback) { const slices = []; this.txt.editor.forCursor((cursor) => { const slice = callback(cursor); slices.push(slice); }); return slices; } insStack(type, data) { return this.insAtCursors((cursor) => this.slices.insStack(cursor.range(), type, data)); } insOne(type, data) { return this.insAtCursors((cursor) => this.slices.insOne(cursor.range(), type, data)); } insErase(type, data) { return this.insAtCursors((cursor) => this.slices.insErase(cursor.range(), type, data)); } insMarker(type, data, separator) { return this.insAtCursors((cursor) => { this.txt.editor.collapseCursor(cursor); const after = cursor.start.clone(); after.refAfter(); const marker = this.slices.insMarkerAfter(after.id, type, data, separator); return marker; }); } del(sliceOrId) { this.slices.del(sliceOrId instanceof PersistedSlice ? sliceOrId.id : sliceOrId); } }