UNPKG

@brizy/media-gallery

Version:
188 lines (187 loc) 7.63 kB
function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _object_spread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _define_property(target, key, source[key]); }); } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _object_spread_props(target, source) { source = source != null ? source : {}; if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } import * as State from "./types/State"; import * as Actions from "./types/Actions"; import { isBulkSelected, isBulkNothingOrMultiple, isReadyOrNothing, isReadyOrNothingOrBulk, isReadyOrMultiple, isReadyOrMultipleInsert, isWithContent } from "./utils"; import { match } from "fp-utilities"; export var reducer = function(s, a) { switch(a.type){ case Actions.ActionTypes.LoadError: return State.isInit(s) ? State.loadError(_object_spread_props(_object_spread({}, s), { message: a.payload })) : s; case Actions.ActionTypes.LoadSuccess: return State.isInit(s) ? State.nothingSelected(_object_spread_props(_object_spread({}, s, a.payload), { newSearch: s.search })) : s; case Actions.ActionTypes.SetSearchValue: { return isReadyOrNothingOrBulk(s) ? match([ State.isBulkSelectMultiple, State.bulkSelectMultiple ], [ State.isBulkSelectNothing, State.bulkSelectNothing ], [ State.isBulkSelectReady, State.bulkSelectReady ], [ State.isReady, State.ready ], [ State.isNothingSelected, State.nothingSelected ])(_object_spread_props(_object_spread({}, s), { newSearch: a.payload })) : s; } case Actions.ActionTypes.Search: return isReadyOrNothingOrBulk(s) ? State.init(_object_spread_props(_object_spread({}, s), { search: a.payload, page: 1 })) : s; case Actions.ActionTypes.Prev: return isReadyOrNothingOrBulk(s) && s.page > 1 ? State.init(_object_spread_props(_object_spread({}, s), { page: s.page - 1 })) : s; case Actions.ActionTypes.Next: return isReadyOrNothingOrBulk(s) && !s.isLastPage ? State.init(_object_spread_props(_object_spread({}, s), { page: s.page + 1 })) : s; case Actions.ActionTypes.BulkSelect: return isReadyOrNothingOrBulk(s) && s.items.length ? isReadyOrNothing(s) ? match([ State.isReady, State.bulkSelectReady ], [ State.isNothingSelected, State.bulkSelectNothing ])(s) : isBulkSelected(s) ? match([ State.isBulkSelectReady, State.ready ], [ isBulkNothingOrMultiple, function(s) { return State.nothingSelected(_object_spread_props(_object_spread({}, s), { items: s.items.map(function(i) { return _object_spread_props(_object_spread({}, i), { isSelected: false }); }) })); } ])(s) : s : s; case Actions.ActionTypes.UnSelectAll: return isWithContent(s) ? State.nothingSelected(_object_spread_props(_object_spread({}, s), { items: s.items.map(function(i) { return _object_spread_props(_object_spread({}, i), { isSelected: false }); }) })) : s; case Actions.ActionTypes.SelectItem: if (isReadyOrNothingOrBulk(s)) { var items = s.items.map(function(i) { return _object_spread_props(_object_spread({}, i), { isSelected: i.id === a.payload ? !i.isSelected : !isReadyOrNothing(s) && i.isSelected }); }); var selectedLength = items.filter(function(i) { return i.isSelected; }).length; var selectedItem = items.find(function(i) { return i.isSelected; }); var newState = _object_spread_props(_object_spread({}, s), { items: items }); return selectedLength > 1 ? State.bulkSelectMultiple(newState) : match([ isReadyOrNothing, function(s) { return selectedItem ? State.ready(_object_spread_props(_object_spread({}, s), { selectedItem: selectedItem })) : State.nothingSelected(s); } ], [ isBulkSelected, function(s) { return selectedItem ? State.bulkSelectReady(_object_spread_props(_object_spread({}, s), { selectedItem: selectedItem })) : State.bulkSelectNothing(s); } ])(newState); } return s; case Actions.ActionTypes.InsertFiles: return isReadyOrMultiple(s) ? match([ State.isReady, State.insertFromReady ], [ State.isBulkSelectMultiple, State.insertFromBulkSelectMultiple ], [ State.isBulkSelectReady, State.insertFromBulkSelectReady ])(s) : s; case Actions.ActionTypes.InsertFilesError: return isReadyOrMultipleInsert(s) ? match([ State.isInsertFromReady, State.ready ], [ State.isInsertFromBulkSelectMultiple, State.bulkSelectMultiple ], [ State.isInsertFromBulkSelectReady, State.bulkSelectReady ])(s) : s; } };