@skokenes/slate-yjs
Version:
Yjs bindings for Slate.
31 lines • 2.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const slate_1 = require("slate");
const convert_1 = require("../utils/convert");
const util_1 = require("./util");
/**
* Applies a Yjs map event to a Slate editor.
*
* @param event
*/
function applyMapEvent(editor, event) {
const targetPath = convert_1.toSlatePath(event.path);
const targetElement = event.target;
const keyChanges = Array.from(event.changes.keys.entries());
const removedProperties = keyChanges
.filter(([, info]) => info.action === 'delete')
.map(([key]) => key);
const newProperties = keyChanges
.filter(([, info]) => info.action !== 'delete')
.reduce((curr, [key]) => (Object.assign(Object.assign({}, curr), { [key]: targetElement.get(key) })), {});
util_1.withoutNormalizingAndSelectionMod(editor, () => {
if (removedProperties.length > 0) {
slate_1.Transforms.unsetNodes(editor, removedProperties, { at: targetPath });
}
if (Object.keys(newProperties).length > 0) {
slate_1.Transforms.setNodes(editor, newProperties, { at: targetPath });
}
});
}
exports.default = applyMapEvent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwRXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbHlUb1NsYXRlL21hcEV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQTJDO0FBRzNDLDhDQUErQztBQUMvQyxpQ0FBMkQ7QUFFM0Q7Ozs7R0FJRztBQUNILFNBQXdCLGFBQWEsQ0FDbkMsTUFBYyxFQUNkLEtBQTJCO0lBRTNCLE1BQU0sVUFBVSxHQUFHLHFCQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO0lBRWxELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUU1RCxNQUFNLGlCQUFpQixHQUFHLFVBQVU7U0FDakMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQztTQUM5QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV2QixNQUFNLGFBQWEsR0FBNEIsVUFBVTtTQUN0RCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDO1NBQzlDLE1BQU0sQ0FDTCxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQ0FDWixJQUFJLEtBQ1AsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUM3QixFQUNGLEVBQUUsQ0FDSCxDQUFDO0lBRUosd0NBQWlDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUM3QyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEMsa0JBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDdEU7UUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QyxrQkFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFoQ0QsZ0NBZ0NDIn0=