@aitianyu.cn/tianyu-store
Version:
tianyu storage for nodejs.
49 lines • 2.75 kB
JavaScript
;
/** @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