UNPKG

@b2bfinance/products-embed

Version:
112 lines (101 loc) 3.49 kB
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; import { FILTERS_GROUP_RESET, FILTERS_RESET, FILTERS_TOGGLE, PRODUCTS_ERROR, PRODUCTS_INCREASE_LIMIT, PRODUCTS_LOADING, PRODUCTS_SET } from "./actions"; import { makeFilterQueryString } from "./filter"; var embedReducer = function embedReducer(state, action) { switch (action.type) { case PRODUCTS_SET: { return _extends({}, state, { productsLoading: false, products: action.products }); } case PRODUCTS_LOADING: { return _extends({}, state, { productsLoading: true }); } case PRODUCTS_ERROR: { return _extends({}, state, { productsError: true }); } case PRODUCTS_INCREASE_LIMIT: { return _extends({}, state, { productsLimit: state.productsLimit + 10 }); } case FILTERS_TOGGLE: { var newFilters = state.filters.map(function (filter) { if (filter.key === action.filter.key) { // Check the selected store to see if we have this filter selected. var isAlreadySet = filter.selected.indexOf(action.choice.value) !== -1; if (isAlreadySet) { // We already have this filter selected so we need to remove it // from the selected store. return _extends({}, filter, { selected: filter.selected.filter(function (value) { return value !== action.choice.value; }) }); } if (filter.multiChoice) { // Filter is not already selected and is a multiChoice so we // need to add it to the already present selected. return _extends({}, filter, { selected: [].concat(filter.selected, [action.choice.value]) }); } // By the power of deduction we know this choice is not set // and it's not a multiChoice so we'll create an array with // only this choice. return _extends({}, filter, { selected: [action.choice.value] }); } // Simply return filters that are not related to our action. return filter; }); return _extends({}, state, { filterQuery: makeFilterQueryString(newFilters), filters: newFilters }); } case FILTERS_RESET: { var _newFilters = state.filters.map(function (filter) { return _extends({}, filter, { selected: [] }); }); return _extends({}, state, { filterQuery: "", filters: _newFilters }); } case FILTERS_GROUP_RESET: { var _newFilters2 = state.filters.map(function (filter) { if (filter.key === action.filter.key) { return _extends({}, filter, { selected: [] }); } return filter; }); return _extends({}, state, { filterQuery: makeFilterQueryString(_newFilters2), filters: _newFilters2 }); } default: { return state; } } }; export default embedReducer;