UNPKG

marshall-y-slate

Version:
43 lines 3.6 kB
import invariant from 'tiny-invariant'; import { absolutePositionToRelativePosition } from '../cursor/utils'; import { YjsEditor } from './yjs-editor'; const AWARENESS = new WeakMap(); export const CursorEditor = { awareness(editor) { const awareness = AWARENESS.get(editor); invariant(awareness, 'CursorEditor without attaches awareness'); return awareness; }, updateCursor: (editor) => { const sharedType = YjsEditor.sharedType(editor); const { selection } = editor; try { const anchor = selection && absolutePositionToRelativePosition(sharedType, selection.anchor); const focus = selection && absolutePositionToRelativePosition(sharedType, selection.focus); const awareness = CursorEditor.awareness(editor); awareness.setLocalState(Object.assign(Object.assign({}, awareness.getLocalState()), { anchor, focus })); } catch (error) { const e = editor; if (e.onError) { e.onError({ code: 10003, name: 'update cursor', nativeError: error }); } } } }; export function withCursor(editor, awareness) { const e = editor; AWARENESS.set(e, awareness); e.awareness = awareness; const { onChange } = editor; e.onChange = () => { setTimeout(() => CursorEditor.updateCursor(e), 0); if (onChange) { onChange(); } }; return e; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Vyc29yLWVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW4vY3Vyc29yLWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFNBQVMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE1BQU0sU0FBUyxHQUErQixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBTTVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUN4QixTQUFTLENBQUMsTUFBb0I7UUFDMUIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxTQUFTLENBQUMsU0FBUyxFQUFFLHlDQUF5QyxDQUFDLENBQUM7UUFDaEUsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksRUFBRSxDQUFDLE1BQW9CLEVBQVEsRUFBRTtRQUN6QyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFN0IsSUFBSTtZQUNBLE1BQU0sTUFBTSxHQUNSLFNBQVM7Z0JBQ1Qsa0NBQWtDLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVyRSxNQUFNLEtBQUssR0FDUCxTQUFTO2dCQUNULGtDQUFrQyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFcEUsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxTQUFTLENBQUMsYUFBYSxpQ0FBTSxTQUFTLENBQUMsYUFBYSxFQUFFLEtBQUUsTUFBTSxFQUFFLEtBQUssSUFBRyxDQUFDO1NBQzVFO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixNQUFNLENBQUMsR0FPSCxNQUFhLENBQUM7WUFDbEIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUNYLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDekU7U0FDSjtJQUNMLENBQUM7Q0FDSixDQUFDO0FBRUYsTUFBTSxVQUFVLFVBQVUsQ0FDdEIsTUFBUyxFQUNULFNBQW9CO0lBRXBCLE1BQU0sQ0FBQyxHQUFHLE1BQTBCLENBQUM7SUFFckMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFFeEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU1QixDQUFDLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNkLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWxELElBQUksUUFBUSxFQUFFO1lBQ1YsUUFBUSxFQUFFLENBQUM7U0FDZDtJQUNMLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyJ9