@skokenes/slate-yjs
Version:
Yjs bindings for Slate.
38 lines • 3.29 kB
JavaScript
import { Transforms } from 'slate';
import invariant from 'tiny-invariant';
import { toSlateNode, toSlatePath } from '../utils/convert';
import { withoutNormalizingAndSelectionMod } from './util';
/**
* Applies a Yjs Array event to a Slate editor.
*
* @param event
*/
export default function applyArrayEvent(editor, event) {
let offset = 0;
const targetPath = toSlatePath(event.path);
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) {
for (let i = 0; i < ((_b = delta.delete) !== null && _b !== void 0 ? _b : 0); i += 1) {
Transforms.removeNodes(editor, {
at: [...targetPath, offset],
voids: true,
});
}
}
if ('insert' in delta) {
invariant(Array.isArray(delta.insert), `Unexpected array insert content type: expected array, got ${JSON.stringify(delta.insert)}`);
Transforms.insertNodes(editor, delta.insert.map(toSlateNode), {
at: [...targetPath, offset],
voids: true,
});
offset += delta.insert.length;
}
});
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBseVRvU2xhdGUvYXJyYXlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFDO0FBR3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTNEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxVQUFVLGVBQWUsQ0FDckMsTUFBYyxFQUNkLEtBQWlDO0lBRWpDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFM0MsaUNBQWlDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUM3QyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7WUFDcEMsSUFBSSxRQUFRLElBQUksS0FBSyxFQUFFO2dCQUNyQixNQUFNLElBQUksTUFBQSxLQUFLLENBQUMsTUFBTSxtQ0FBSSxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLFFBQVEsSUFBSSxLQUFLLEVBQUU7Z0JBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQUEsS0FBSyxDQUFDLE1BQU0sbUNBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDL0MsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7d0JBQzdCLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLE1BQU0sQ0FBQzt3QkFDM0IsS0FBSyxFQUFFLElBQUk7cUJBQ1osQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7WUFFRCxJQUFJLFFBQVEsSUFBSSxLQUFLLEVBQUU7Z0JBQ3JCLFNBQVMsQ0FDUCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDM0IsNkRBQTZELElBQUksQ0FBQyxTQUFTLENBQ3pFLEtBQUssQ0FBQyxNQUFNLENBQ2IsRUFBRSxDQUNKLENBQUM7Z0JBRUYsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQzVELEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLE1BQU0sQ0FBQztvQkFDM0IsS0FBSyxFQUFFLElBQUk7aUJBQ1osQ0FBQyxDQUFDO2dCQUVILE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUMvQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=