UNPKG

@wordpress/data

Version:
134 lines (130 loc) 3.88 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _equivalentKeyMap = _interopRequireDefault(require("equivalent-key-map")); var _utils = require("./utils"); /** * External dependencies */ /** * Internal dependencies */ /** * Reducer function returning next state for selector resolution of * subkeys, object form: * * selectorName -> EquivalentKeyMap<Array,boolean> */ const subKeysIsResolved = (0, _utils.onSubKey)('selectorName')((state = new _equivalentKeyMap.default(), action) => { switch (action.type) { case 'START_RESOLUTION': { const nextState = new _equivalentKeyMap.default(state); nextState.set((0, _utils.selectorArgsToStateKey)(action.args), { status: 'resolving' }); return nextState; } case 'FINISH_RESOLUTION': { const nextState = new _equivalentKeyMap.default(state); nextState.set((0, _utils.selectorArgsToStateKey)(action.args), { status: 'finished' }); return nextState; } case 'FAIL_RESOLUTION': { const nextState = new _equivalentKeyMap.default(state); nextState.set((0, _utils.selectorArgsToStateKey)(action.args), { status: 'error', error: action.error }); return nextState; } case 'START_RESOLUTIONS': { const nextState = new _equivalentKeyMap.default(state); for (const resolutionArgs of action.args) { nextState.set((0, _utils.selectorArgsToStateKey)(resolutionArgs), { status: 'resolving' }); } return nextState; } case 'FINISH_RESOLUTIONS': { const nextState = new _equivalentKeyMap.default(state); for (const resolutionArgs of action.args) { nextState.set((0, _utils.selectorArgsToStateKey)(resolutionArgs), { status: 'finished' }); } return nextState; } case 'FAIL_RESOLUTIONS': { const nextState = new _equivalentKeyMap.default(state); action.args.forEach((resolutionArgs, idx) => { const resolutionState = { status: 'error', error: undefined }; const error = action.errors[idx]; if (error) { resolutionState.error = error; } nextState.set((0, _utils.selectorArgsToStateKey)(resolutionArgs), resolutionState); }); return nextState; } case 'INVALIDATE_RESOLUTION': { const nextState = new _equivalentKeyMap.default(state); nextState.delete((0, _utils.selectorArgsToStateKey)(action.args)); return nextState; } } return state; }); /** * Reducer function returning next state for selector resolution, object form: * * selectorName -> EquivalentKeyMap<Array, boolean> * * @param state Current state. * @param action Dispatched action. * * @return Next state. */ const isResolved = (state = {}, action) => { switch (action.type) { case 'INVALIDATE_RESOLUTION_FOR_STORE': return {}; case 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR': { if (action.selectorName in state) { const { [action.selectorName]: removedSelector, ...restState } = state; return restState; } return state; } case 'START_RESOLUTION': case 'FINISH_RESOLUTION': case 'FAIL_RESOLUTION': case 'START_RESOLUTIONS': case 'FINISH_RESOLUTIONS': case 'FAIL_RESOLUTIONS': case 'INVALIDATE_RESOLUTION': return subKeysIsResolved(state, action); } return state; }; var _default = exports.default = isResolved; //# sourceMappingURL=reducer.js.map