UNPKG

marshall-y-slate

Version:
71 lines 6.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCursors = void 0; const react_1 = require("react"); const slate_1 = require("slate"); const utils_1 = require("../cursor/utils"); const useCursors = (editor) => { const [cursors, setCursorData] = (0, react_1.useState)([]); (0, react_1.useEffect)(() => { editor.awareness.on('update', () => { const newCursorData = Array.from(editor.awareness.getStates()) .filter(([clientId]) => { var _a; return clientId !== ((_a = editor.sharedType.doc) === null || _a === void 0 ? void 0 : _a.clientID); }) .map(([, awareness]) => { let anchor = null; let focus = null; if (awareness.anchor) { anchor = (0, utils_1.relativePositionToAbsolutePosition)(editor.sharedType, awareness.anchor); } if (awareness.focus) { focus = (0, utils_1.relativePositionToAbsolutePosition)(editor.sharedType, awareness.focus); } return { anchor, focus, data: awareness }; }) .filter((cursor) => cursor.anchor && cursor.focus); setCursorData(newCursorData); }); }, [editor]); const decorate = (0, react_1.useCallback)(([node, path]) => { const ranges = []; if (slate_1.Text.isText(node) && (cursors === null || cursors === void 0 ? void 0 : cursors.length)) { cursors.forEach((cursor) => { if (slate_1.Range.includes(cursor, path)) { const { focus, anchor, data } = cursor; const isFocusNode = slate_1.Path.equals(focus.path, path); const isAnchorNode = slate_1.Path.equals(anchor.path, path); const isForward = slate_1.Range.isForward({ anchor, focus }); ranges.push({ data, isForward, originAnchorPath: anchor.path, originFocusPath: focus.path, isCaret: isFocusNode, anchor: { path, // eslint-disable-next-line no-nested-ternary offset: isAnchorNode ? anchor.offset : isForward ? 0 : node.text.length, }, focus: { path, // eslint-disable-next-line no-nested-ternary offset: isFocusNode ? focus.offset : isForward ? node.text.length : 0, }, }); } }); } return ranges; }, [cursors]); return { decorate, cursors }; }; exports.useCursors = useCursors; exports.default = exports.useCursors; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWN1cnNvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2luL3VzZS1jdXJzb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUF5RDtBQUN6RCxpQ0FBcUQ7QUFFckQsMkNBQXFFO0FBRzlELE1BQU0sVUFBVSxHQUFHLENBQ3RCLE1BQW9CLEVBSXRCLEVBQUU7SUFDQSxNQUFNLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBVyxFQUFFLENBQUMsQ0FBQztJQUV4RCxJQUFBLGlCQUFTLEVBQUMsR0FBRyxFQUFFO1FBQ1gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUMvQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQ3pELE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxXQUFDLE9BQUEsUUFBUSxNQUFLLE1BQUEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLDBDQUFFLFFBQVEsQ0FBQSxDQUFBLEVBQUEsQ0FBQztpQkFDcEUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUU7b0JBQ2xCLE1BQU0sR0FBRyxJQUFBLDBDQUFrQyxFQUN2QyxNQUFNLENBQUMsVUFBVSxFQUNqQixTQUFTLENBQUMsTUFBTSxDQUNuQixDQUFDO2lCQUNMO2dCQUVELElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtvQkFDakIsS0FBSyxHQUFHLElBQUEsMENBQWtDLEVBQ3RDLE1BQU0sQ0FBQyxVQUFVLEVBQ2pCLFNBQVMs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