marshall-y-slate
Version:
Yjs bindings for Slate.
39 lines • 3.19 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 merge node operation to a SharedType.
*
* @param doc
* @param op
*/
function mergeNode(doc, op) {
const [parent, index] = (0, path_1.getParent)(doc, op.path);
const children = model_1.SyncNode.getChildren(parent);
(0, tiny_invariant_1.default)(children, 'Parent of element should have children');
const prev = children.get(index - 1);
const next = children.get(index);
const prevText = model_1.SyncNode.getText(prev);
const nextText = model_1.SyncNode.getText(next);
if (prevText && nextText) {
prevText.insert(prevText.length, nextText.toString());
}
else {
const nextChildren = model_1.SyncNode.getChildren(next);
const prevChildren = model_1.SyncNode.getChildren(prev);
(0, tiny_invariant_1.default)(nextChildren, 'Next element should have children');
(0, tiny_invariant_1.default)(prevChildren, 'Prev element should have children');
const toPush = nextChildren.map(utils_1.cloneSyncElement);
prevChildren.push(toPush);
}
children.delete(index, 1);
return doc;
}
exports.default = mergeNode;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2Utbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHBseS10by15anMvbm9kZS9tZXJnZS1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esb0VBQXVDO0FBQ3ZDLHVDQUFtRDtBQUNuRCxxQ0FBdUM7QUFDdkMsdUNBQStDO0FBRS9DOzs7OztHQUtHO0FBQ0gsU0FBd0IsU0FBUyxDQUMvQixHQUFlLEVBQ2YsRUFBc0I7SUFFdEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxJQUFBLGdCQUFTLEVBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVoRCxNQUFNLFFBQVEsR0FBRyxnQkFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxJQUFBLHdCQUFTLEVBQUMsUUFBUSxFQUFFLHdDQUF3QyxDQUFDLENBQUM7SUFFOUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqQyxNQUFNLFFBQVEsR0FBRyxnQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxNQUFNLFFBQVEsR0FBRyxnQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV4QyxJQUFJLFFBQVEsSUFBSSxRQUFRLEVBQUU7UUFDeEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZEO1NBQU07UUFDTCxNQUFNLFlBQVksR0FBRyxnQkFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxnQkFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoRCxJQUFBLHdCQUFTLEVBQUMsWUFBWSxFQUFFLG1DQUFtQyxDQUFDLENBQUM7UUFDN0QsSUFBQSx3QkFBUyxFQUFDLFlBQVksRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO1FBRTdELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsd0JBQWdCLENBQUMsQ0FBQztRQUNsRCxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzNCO0lBRUQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBOUJELDRCQThCQyJ9