@skokenes/slate-yjs
Version:
Yjs bindings for Slate.
34 lines • 2.85 kB
JavaScript
;
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 utils_1 = require("../../utils");
/**
* Applies a move node operation to a SharedType.
*
* @param doc
* @param op
*/
function moveNode(doc, op) {
const [from, fromIndex] = path_1.getParent(doc, op.path);
const [to, toIndex] = path_1.getParent(doc, op.newPath);
if (model_1.SyncNode.getText(from) !== undefined ||
model_1.SyncNode.getText(to) !== undefined) {
throw new TypeError("Can't move node as child of a text node");
}
const fromChildren = model_1.SyncNode.getChildren(from);
const toChildren = model_1.SyncNode.getChildren(to);
tiny_invariant_1.default(fromChildren, 'From element should not be a text node');
tiny_invariant_1.default(toChildren, 'To element should not be a text node');
const toMove = fromChildren.get(fromIndex);
const toInsert = utils_1.cloneSyncElement(toMove);
fromChildren.delete(fromIndex);
toChildren.insert(Math.min(toIndex, toChildren.length), [toInsert]);
return doc;
}
exports.default = moveNode;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwbHlUb1lqcy9ub2RlL21vdmVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esb0VBQXVDO0FBQ3ZDLHVDQUFtRDtBQUNuRCxxQ0FBdUM7QUFDdkMsdUNBQStDO0FBRS9DOzs7OztHQUtHO0FBQ0gsU0FBd0IsUUFBUSxDQUM5QixHQUFlLEVBQ2YsRUFBcUI7SUFFckIsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxnQkFBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxnQkFBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFakQsSUFDRSxnQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTO1FBQ3BDLGdCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFNBQVMsRUFDbEM7UUFDQSxNQUFNLElBQUksU0FBUyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7S0FDaEU7SUFFRCxNQUFNLFlBQVksR0FBRyxnQkFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxNQUFNLFVBQVUsR0FBRyxnQkFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUU1Qyx3QkFBUyxDQUFDLFlBQVksRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDO0lBQ2xFLHdCQUFTLENBQUMsVUFBVSxFQUFFLHNDQUFzQyxDQUFDLENBQUM7SUFFOUQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyx3QkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUxQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVwRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUEzQkQsMkJBMkJDIn0=