UNPKG

@stackend/api

Version:

JS bindings to api.stackend.com

119 lines 5.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CATEGORIES_REMOVE_SELECTION = exports.CATEGORIES_TOGGLE_SELECTED = exports.INVALIDATE_AVAILABLE_CATEGORIES = exports.RECEIVE_AVAILABLE_CATEGORIES = exports.REQUEST_AVAILABLE_CATEGORIES = void 0; // @flow var immutability_helper_1 = __importDefault(require("immutability-helper")); ////Action Type exports.REQUEST_AVAILABLE_CATEGORIES = 'REQUEST_AVAILABLE_CATEGORIES'; exports.RECEIVE_AVAILABLE_CATEGORIES = 'RECEIVE_AVAILABLE_CATEGORIES'; exports.INVALIDATE_AVAILABLE_CATEGORIES = 'INVALIDATE_AVAILABLE_CATEGORIES'; exports.CATEGORIES_TOGGLE_SELECTED = 'CATEGORIES_TOGGLE_SELECTED'; exports.CATEGORIES_REMOVE_SELECTION = 'CATEGORIES_REMOVE_SELECTION'; //Reducer function categories(state, action) { var _a, _b, _c, _d, _e, _f; if (state === void 0) { state = {}; } switch (action.type) { case exports.REQUEST_AVAILABLE_CATEGORIES: return (0, immutability_helper_1.default)(state, (_a = {}, _a[action.context] = { $apply: function (context) { return (0, immutability_helper_1.default)(context || { selected: {} }, { isFetching: { $set: true }, didInvalidate: { $set: false }, available: { $set: state[action.context] ? state[action.context].available : '' } }); } }, _a)); case exports.RECEIVE_AVAILABLE_CATEGORIES: return (0, immutability_helper_1.default)(state, (_b = {}, _b[action.context] = { $apply: function (context) { return (0, immutability_helper_1.default)(context || { selected: {} }, { isFetching: { $set: false }, didInvalidate: { $set: false }, available: { $set: action.json }, lastUpdated: { $set: Date.now() } }); } }, _b)); case exports.INVALIDATE_AVAILABLE_CATEGORIES: return (0, immutability_helper_1.default)(state, (_c = {}, _c[action.context] = { $apply: function (context) { return (0, immutability_helper_1.default)(context || { selected: {} }, { didInvalidate: { $set: true } }); } }, _c)); case exports.CATEGORIES_TOGGLE_SELECTED: { var categories_1 = !!state[action.context] && !!state[action.context].selected && // @ts-ignore state[action.context].selected[action.reference]; var idOfClickedCategory_1 = categories_1 ? categories_1.map(function (category) { return category.id; }).indexOf(action.category.id) : -1; if (idOfClickedCategory_1 !== -1) { //category clicked is selected -> remove selection return (0, immutability_helper_1.default)(state, (_d = {}, _d[action.context] = { $apply: function (context) { var _a; return (0, immutability_helper_1.default)(context || { selected: {} }, { selected: (_a = {}, _a[action.reference] = { $apply: function (reference) { return (0, immutability_helper_1.default)(reference || [], { $splice: [[idOfClickedCategory_1, 1]] }); } }, _a) }); } }, _d)); } else { //category clicked is not selected -> set selection return (0, immutability_helper_1.default)(state, (_e = {}, _e[action.context] = { $apply: function (context) { var _a; return (0, immutability_helper_1.default)(context || { selected: {} }, { selected: (_a = {}, _a[action.reference] = { $apply: function (reference) { return (0, immutability_helper_1.default)(reference || [], { $push: [action.category] }); } }, _a) }); } }, _e)); } } case exports.CATEGORIES_REMOVE_SELECTION: return (0, immutability_helper_1.default)(state, (_f = {}, _f[action.context] = { $apply: function (context) { var _a; return (0, immutability_helper_1.default)(context || { selected: {} }, { // @ts-ignore selected: (_a = {}, _a[action.reference] = { $apply: function (reference) { return (0, immutability_helper_1.default)(reference || [], { $set: [] }); } }, _a) }); } }, _f)); default: return state; } } exports.default = categories; //# sourceMappingURL=categoryReducer.js.map