UNPKG

marshall-y-slate

Version:
96 lines 8.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.withUndoManager = void 0; const Y = __importStar(require("yjs")); const yjs_editor_1 = require("./yjs-editor"); const utils_1 = require("../cursor/utils"); const slate_1 = require("slate"); function withUndoManager(editor, options = { trackedOrigins: [], captureTimeout: 300, deleteFilter: () => true }) { const e = editor; const { onChange } = e; let previousSelection; const undoManager = new Y.UndoManager(e.sharedType, Object.assign(Object.assign({}, options), { trackedOrigins: new Set([editor].concat(options.trackedOrigins)) })); e.onChange = () => { onChange(); if (!yjs_editor_1.YjsEditor.isRemote(e)) { try { const lastOperation = e.operations[e.operations.length - 1]; if (lastOperation && lastOperation.type === 'set_selection' && lastOperation.newProperties) { const { anchor, focus } = lastOperation.newProperties; const anchorRelative = anchor && (0, utils_1.absolutePositionToRelativePosition)(e.sharedType, anchor); const focusRelative = focus && (0, utils_1.absolutePositionToRelativePosition)(e.sharedType, focus); if (anchorRelative && focusRelative) { previousSelection = { anchorRelative, focusRelative }; } } } catch (error) { const e = editor; if (e.onError) { e.onError({ code: 10004, name: 'get previous relative', nativeError: error }); } } } }; undoManager.on('stack-item-added', (event) => { if (event.changedParentTypes.has(e.sharedType) && previousSelection) { event.stackItem.meta.set(e, previousSelection); previousSelection = null; } }); undoManager.on('stack-item-popped', (event) => { const selection = event.stackItem.meta.get(e); if (selection) { const anchor = (0, utils_1.relativePositionToAbsolutePosition)(e.sharedType, selection.anchorRelative); const focus = (0, utils_1.relativePositionToAbsolutePosition)(e.sharedType, selection.focusRelative); if ((anchor === null || anchor === void 0 ? void 0 : anchor.path) && (focus === null || focus === void 0 ? void 0 : focus.path) && slate_1.Editor.hasPath(e, anchor.path) && slate_1.Editor.hasPath(e, focus.path)) { slate_1.Transforms.setSelection(e, { anchor: anchor, focus: focus }); } } }); e.undoManager = undoManager; e.undo = () => { yjs_editor_1.YjsEditor.asUndo(e, () => { e.undoManager.undo(); }); Promise.resolve().then(() => slate_1.Editor.normalize(editor)); }; e.redo = () => { yjs_editor_1.YjsEditor.asUndo(e, () => { e.undoManager.redo(); }); Promise.resolve().then(() => slate_1.Editor.normalize(editor)); }; return e; } exports.withUndoManager = withUndoManager; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kby1tYW5hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2luL3VuZG8tbWFuYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx1Q0FBeUI7QUFDekIsNkNBQXlDO0FBQ3pDLDJDQUF5RztBQUN6RyxpQ0FBd0U7QUFReEUsU0FBZ0IsZUFBZSxDQUM3QixNQUFTLEVBQ1QsT0FBTyxHQUFHO0lBQ1IsY0FBYyxFQUFFLEVBQUU7SUFDbEIsY0FBYyxFQUFFLEdBQUc7SUFDbkIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7Q0FDekI7SUFFRCxNQUFNLENBQUMsR0FBRyxNQUEyQixDQUFDO0lBQ3RDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkIsSUFBSSxpQkFBbUcsQ0FBQztJQUN4RyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsa0NBQzdDLE9BQU8sS0FDVixjQUFjLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQ2hFLENBQUM7SUFFSCxDQUFDLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNoQixRQUFRLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxzQkFBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxQixJQUFJO2dCQUNGLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssZUFBZSxJQUFJLGFBQWEsQ0FBQyxhQUFhLEVBQUU7b0JBQzFGLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFF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