marshall-y-slate
Version:
Yjs bindings for Slate.
34 lines • 2.91 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] = (0, path_1.getParent)(doc, op.path);
const [to, toIndex] = (0, 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);
(0, tiny_invariant_1.default)(fromChildren, 'From element should not be a text node');
(0, tiny_invariant_1.default)(toChildren, 'To element should not be a text node');
const toMove = fromChildren.get(fromIndex);
const toInsert = (0, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS1ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcGx5LXRvLXlqcy9ub2RlL21vdmUtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLG9FQUF1QztBQUN2Qyx1Q0FBbUQ7QUFDbkQscUNBQXVDO0FBQ3ZDLHVDQUErQztBQUUvQzs7Ozs7R0FLRztBQUNILFNBQXdCLFFBQVEsQ0FDOUIsR0FBZSxFQUNmLEVBQXFCO0lBRXJCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsSUFBQSxnQkFBUyxFQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFBLGdCQUFTLEVBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVqRCxJQUNFLGdCQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVM7UUFDcEMsZ0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssU0FBUyxFQUNsQztRQUNBLE1BQU0sSUFBSSxTQUFTLENBQUMsMENBQTBDLENBQUMsQ0FBQztLQUNqRTtJQUVELE1BQU0sWUFBWSxHQUFHLGdCQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELE1BQU0sVUFBVSxHQUFHLGdCQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTVDLElBQUEsd0JBQVMsRUFBQyxZQUFZLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztJQUNsRSxJQUFBLHdCQUFTLEVBQUMsVUFBVSxFQUFFLHNDQUFzQyxDQUFDLENBQUM7SUFFOUQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFBLHdCQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRXBFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQTNCRCwyQkEyQkMifQ==