@skokenes/slate-yjs
Version:
Yjs bindings for Slate.
43 lines • 3.37 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.withCursor = exports.CursorEditor = void 0;
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
const utils_1 = require("../cursor/utils");
const yjsEditor_1 = require("./yjsEditor");
const AWARENESS = new WeakMap();
exports.CursorEditor = {
awareness(editor) {
const awareness = AWARENESS.get(editor);
tiny_invariant_1.default(awareness, 'CursorEditor without attaches awareness');
return awareness;
},
updateCursor: (editor) => {
const sharedType = yjsEditor_1.YjsEditor.sharedType(editor);
const { selection } = editor;
const anchor = selection &&
utils_1.absolutePositionToRelativePosition(sharedType, selection.anchor);
const focus = selection &&
utils_1.absolutePositionToRelativePosition(sharedType, selection.focus);
const awareness = exports.CursorEditor.awareness(editor);
awareness.setLocalStateField('anchor', anchor);
awareness.setLocalStateField('focus', focus);
},
};
function withCursor(editor, awareness) {
const e = editor;
AWARENESS.set(e, awareness);
e.awareness = awareness;
const { onChange } = editor;
e.onChange = () => {
setTimeout(() => exports.CursorEditor.updateCursor(e), 0);
if (onChange) {
onChange();
}
};
return e;
}
exports.withCursor = withCursor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Vyc29yRWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbi9jdXJzb3JFZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esb0VBQXVDO0FBRXZDLDJDQUFxRTtBQUNyRSwyQ0FBd0M7QUFFeEMsTUFBTSxTQUFTLEdBQStCLElBQUksT0FBTyxFQUFFLENBQUM7QUFNL0MsUUFBQSxZQUFZLEdBQUc7SUFDMUIsU0FBUyxDQUFDLE1BQW9CO1FBQzVCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsd0JBQVMsQ0FBQyxTQUFTLEVBQUUseUNBQXlDLENBQUMsQ0FBQztRQUNoRSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWSxFQUFFLENBQUMsTUFBb0IsRUFBUSxFQUFFO1FBQzNDLE1BQU0sVUFBVSxHQUFHLHFCQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFN0IsTUFBTSxNQUFNLEdBQ1YsU0FBUztZQUNULDBDQUFrQyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkUsTUFBTSxLQUFLLEdBQ1QsU0FBUztZQUNULDBDQUFrQyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEUsTUFBTSxTQUFTLEdBQUcsb0JBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRixDQUFDO0FBRUYsU0FBZ0IsVUFBVSxDQUN4QixNQUFTLEVBQ1QsU0FBb0I7SUFFcEIsTUFBTSxDQUFDLEdBQUcsTUFBMEIsQ0FBQztJQUVyQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUV4QixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTVCLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFO1FBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRCxJQUFJLFFBQVEsRUFBRTtZQUNaLFFBQVEsRUFBRSxDQUFDO1NBQ1o7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFwQkQsZ0NBb0JDIn0=