UNPKG

@skokenes/slate-yjs

Version:
49 lines 4.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const tiny_invariant_1 = __importDefault(require("tiny-invariant")); const model_1 = require("../../model"); const path_1 = require("../../path"); const clone_1 = __importDefault(require("../../utils/clone")); /** * Applies a split node operation to a SharedType * * @param doc * @param op */ function splitNode(doc, op) { const [parent, index] = path_1.getParent(doc, op.path); const children = model_1.SyncNode.getChildren(parent); tiny_invariant_1.default(children, 'Parent of node should have children'); const target = children.get(index); const inject = clone_1.default(target); children.insert(index + 1, [inject]); Object.entries(op.properties).forEach(([key, value]) => inject.set(key, value)); if (model_1.SyncNode.getText(target) !== undefined) { const targetText = model_1.SyncNode.getText(target); const injectText = model_1.SyncNode.getText(inject); tiny_invariant_1.default(targetText); tiny_invariant_1.default(injectText); if (targetText.length > op.position) { targetText.delete(op.position, targetText.length - op.position); } if (injectText !== undefined && op.position !== undefined) { injectText.delete(0, op.position); } } else { const targetChildren = model_1.SyncNode.getChildren(target); const injectChildren = model_1.SyncNode.getChildren(inject); tiny_invariant_1.default(targetChildren); tiny_invariant_1.default(injectChildren); targetChildren.delete(op.position, targetChildren.length - op.position); if (op.position !== undefined) { injectChildren.delete(0, op.position); } } return doc; } exports.default = splitNode; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXROb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcGx5VG9ZanMvbm9kZS9zcGxpdE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxvRUFBdUM7QUFDdkMsdUNBQW1EO0FBQ25ELHFDQUF1QztBQUN2Qyw4REFBaUQ7QUFFakQ7Ozs7O0dBS0c7QUFDSCxTQUF3QixTQUFTLENBQy9CLEdBQWUsRUFDZixFQUFzQjtJQUV0QixNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUF1QixnQkFBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEUsTUFBTSxRQUFRLEdBQUcsZ0JBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsd0JBQVMsQ0FBQyxRQUFRLEVBQUUscUNBQXFDLENBQUMsQ0FBQztJQUUzRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLE1BQU0sTUFBTSxHQUFHLGVBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUVyQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUN2QixDQUFDO0lBRUYsSUFBSSxnQkFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFTLEVBQUU7UUFDMUMsTUFBTSxVQUFVLEdBQUcsZ0JBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsTUFBTSxVQUFVLEdBQUcsZ0JBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUMsd0JBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0Qix3QkFBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXRCLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQ25DLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksVUFBVSxLQUFLLFNBQVMsSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUN6RCxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkM7S0FDRjtTQUFNO1FBQ0wsTUFBTSxjQUFjLEdBQUcsZ0JBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsTUFBTSxjQUFjLEdBQUcsZ0JBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEQsd0JBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQix3QkFBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTFCLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4RSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQzdCLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QztLQUNGO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBOUNELDRCQThDQyJ9