@skokenes/slate-yjs
Version:
Yjs bindings for Slate.
43 lines • 3.3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const slate_1 = require("slate");
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
const convert_1 = require("../utils/convert");
const util_1 = require("./util");
/**
* Applies a Yjs Text event to a slate editor.
*
* @param event
*/
function applyTextEvent(editor, event) {
const targetPath = convert_1.toSlatePath(event.path);
let offset = 0;
util_1.withoutNormalizingAndSelectionMod(editor, () => {
event.changes.delta.forEach((delta) => {
var _a, _b;
if ('retain' in delta) {
offset += (_a = delta.retain) !== null && _a !== void 0 ? _a : 0;
}
if ('delete' in delta) {
slate_1.Transforms.insertText(editor, '', {
at: {
anchor: { path: targetPath, offset },
focus: { path: targetPath, offset: offset + ((_b = delta.delete) !== null && _b !== void 0 ? _b : 0) },
},
});
}
if ('insert' in delta) {
tiny_invariant_1.default(typeof delta.insert === 'string', `Unexpected text insert content type: expected string, got ${typeof delta.insert}`);
slate_1.Transforms.insertText(editor, delta.insert, {
at: { path: targetPath, offset },
});
offset += delta.insert.length;
}
});
});
}
exports.default = applyTextEvent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dEV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGx5VG9TbGF0ZS90ZXh0RXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBMkM7QUFDM0Msb0VBQXVDO0FBRXZDLDhDQUErQztBQUMvQyxpQ0FBMkQ7QUFFM0Q7Ozs7R0FJRztBQUNILFNBQXdCLGNBQWMsQ0FDcEMsTUFBYyxFQUNkLEtBQW1CO0lBRW5CLE1BQU0sVUFBVSxHQUFHLHFCQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVmLHdDQUFpQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7O1lBQ3BDLElBQUksUUFBUSxJQUFJLEtBQUssRUFBRTtnQkFDckIsTUFBTSxJQUFJLE1BQUEsS0FBSyxDQUFDLE1BQU0sbUNBQUksQ0FBQyxDQUFDO2FBQzdCO1lBRUQsSUFBSSxRQUFRLElBQUksS0FBSyxFQUFFO2dCQUNyQixrQkFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFO29CQUNoQyxFQUFFLEVBQUU7d0JBQ0YsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7d0JBQ3BDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLE1BQUEsS0FBSyxDQUFDLE1BQU0sbUNBQUksQ0FBQyxDQUFDLEVBQUU7cUJBQ2xFO2lCQUNGLENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxRQUFRLElBQUksS0FBSyxFQUFFO2dCQUNyQix3QkFBUyxDQUNQLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQ2hDLDZEQUE2RCxPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FDbkYsQ0FBQztnQkFFRixrQkFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDMUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7aUJBQ2pDLENBQUMsQ0FBQztnQkFFSCxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7YUFDL0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQXBDRCxpQ0FvQ0MifQ==