UNPKG

@aitianyu.cn/tianyu-store

Version:
52 lines 2.75 kB
"use strict"; /** @format */ Object.defineProperty(exports, "__esModule", { value: true }); exports.storeRedoActionCreatorImpl = exports.storeUndoActionCreatorImpl = void 0; const types_1 = require("@aitianyu.cn/types"); const Action_1 = require("../../types/Action"); const RedoUndoStack_1 = require("../../types/RedoUndoStack"); const StoreHandlerUtils_1 = require("../../utils/StoreHandlerUtils"); const ActionBaseImpl_1 = require("../action/ActionBaseImpl"); const RedoUndoStack_2 = require("./interface/RedoUndoStack"); function storeUndoActionCreatorImpl() { const actionInstanceCaller = (0, ActionBaseImpl_1.actionBaseImpl)((0, types_1.guid)(), function* (_action) { const redoUndoStack = yield* (0, StoreHandlerUtils_1.doReadExternal)(function (register) { return register.get(RedoUndoStack_2.STORE_STATE_EXTERNAL_REDOUNDO_STACK); }); // this is used to reverse the diff data ensure the undo operation const diff = types_1.ObjectHelper.clone(redoUndoStack?.doUndo() || /* istanbul ignore next */ {}); for (const storeType of Object.keys(diff)) { const instances = diff[storeType]; for (const insKey of Object.keys(instances)) { const ins = instances[insKey]; const temp = ins.old; ins.old = ins.new; ins.new = temp; ins.type = ins.type === RedoUndoStack_1.DifferenceChangeType.Create ? RedoUndoStack_1.DifferenceChangeType.Delete : ins.type === RedoUndoStack_1.DifferenceChangeType.Delete ? RedoUndoStack_1.DifferenceChangeType.Create : RedoUndoStack_1.DifferenceChangeType.Change; } } return diff; }, Action_1.ActionType.UNDO, function (_state, data) { return data || /* istanbul ignore next */ {}; }); return actionInstanceCaller; } exports.storeUndoActionCreatorImpl = storeUndoActionCreatorImpl; function storeRedoActionCreatorImpl() { const actionInstanceCaller = (0, ActionBaseImpl_1.actionBaseImpl)((0, types_1.guid)(), function* (_action) { const redoUndoStack = yield* (0, StoreHandlerUtils_1.doReadExternal)(function (register) { return register.get(RedoUndoStack_2.STORE_STATE_EXTERNAL_REDOUNDO_STACK); }); return redoUndoStack?.doRedo(); }, Action_1.ActionType.REDO, function (_state, data) { return data || /* istanbul ignore next */ {}; }); return actionInstanceCaller; } exports.storeRedoActionCreatorImpl = storeRedoActionCreatorImpl; //# sourceMappingURL=RedoUndoActionImpl.js.map