UNPKG

@aitianyu.cn/tianyu-store

Version:
49 lines 2.75 kB
"use strict"; /** @format */ Object.defineProperty(exports, "__esModule", { value: true }); exports.TianyuStoreRedoUndoInterface = exports.UndoActionCreator = exports.RedoActionCreator = void 0; const StoreHandlerUtils_1 = require("../utils/StoreHandlerUtils"); const ActionFactor_1 = require("./ActionFactor"); const SelectorFactor_1 = require("./SelectorFactor"); const RedoUndoActionImpl_1 = require("./storage/RedoUndoActionImpl"); const RedoUndoStack_1 = require("./storage/interface/RedoUndoStack"); const StoreState_1 = require("./storage/interface/StoreState"); exports.RedoActionCreator = (0, RedoUndoActionImpl_1.storeRedoActionCreatorImpl)(); exports.UndoActionCreator = (0, RedoUndoActionImpl_1.storeUndoActionCreatorImpl)(); const CleanRedoUndoStackAction = ActionFactor_1.ActionFactor.makeActionCreator().withHandler(function* (_action) { const redoUndoStack = yield* (0, StoreHandlerUtils_1.doReadExternal)(function (register) { return register.get(RedoUndoStack_1.STORE_STATE_EXTERNAL_REDOUNDO_STACK); }); redoUndoStack?.cleanHistory(); }); const GetRedoAvailableSelector = SelectorFactor_1.SelectorFactor.makeSelector(function (_state, externalResult) { return typeof externalResult === "boolean" ? externalResult : /* istanbul ignore next */ false; }, function (register) { const redoUndoStack = register.get(RedoUndoStack_1.STORE_STATE_EXTERNAL_REDOUNDO_STACK); return Boolean(redoUndoStack?.canRedo); }); const GetUndoAvailableSelector = SelectorFactor_1.SelectorFactor.makeSelector(function (_state, externalResult) { return typeof externalResult === "boolean" ? externalResult : /* istanbul ignore next */ false; }, function (register) { const redoUndoStack = register.get(RedoUndoStack_1.STORE_STATE_EXTERNAL_REDOUNDO_STACK); return Boolean(redoUndoStack?.canUndo); }); const GetRedoUndoEnabledSelector = SelectorFactor_1.SelectorFactor.makeSelector(function (state) { return Boolean(state[StoreState_1.STORE_STATE_SYSTEM].config.redoUndo); }); exports.TianyuStoreRedoUndoInterface = { stack: { redoAction: exports.RedoActionCreator, undoAction: exports.UndoActionCreator, /** Get current redo action is valid */ getRedoAvailable: GetRedoAvailableSelector, /** Get current undo action is valid */ getUndoAvailable: GetUndoAvailableSelector, /** Get redo/undo operation is enabled in current store entity */ getRedoUndoEnabled: GetRedoUndoEnabledSelector, /** Clean all redo/undo stack in current store entity */ cleanStackAction: CleanRedoUndoStackAction, }, }; exports.TianyuStoreRedoUndoInterface; //# sourceMappingURL=RedoUndoFactor.js.map