@brizy/media-gallery
Version:
188 lines (187 loc) • 7.63 kB
JavaScript
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;
}
};