react-dyn-tabs
Version:
React dynamic tabs with full API
66 lines (65 loc) • 2 kB
JavaScript
exports.__esModule = true;
exports["default"] = reducer;
var _actions = _interopRequireDefault(require("./actions.js"));
var _helper = _interopRequireDefault(require("../helper"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function reducer(state, action) {
switch (action.type) {
case _actions["default"].close:
{
var arr = state.openTabIDs,
removedItemIndex = arr.indexOf(action.tabId);
if (removedItemIndex >= 0) {
var newArr = arr.slice();
newArr.splice(removedItemIndex, 1);
return {
selectedTabID: state.selectedTabID,
openTabIDs: newArr
};
}
return state;
}
case _actions["default"].open:
{
var _arr = state.openTabIDs,
tabId = action.tabId;
if (_arr.indexOf(tabId) === -1) {
var _newArr = _arr.slice();
_newArr.push(tabId);
return {
selectedTabID: state.selectedTabID,
openTabIDs: _newArr
};
}
return state;
}
case _actions["default"].refresh:
return _helper["default"].getCopyState(state);
case _actions["default"].active:
{
var _tabId = action.tabId;
if (state.selectedTabID !== _tabId) return {
selectedTabID: _tabId,
openTabIDs: state.openTabIDs
};
return state;
}
case _actions["default"].sort:
{
var _arr2 = state.openTabIDs,
_newArr2 = action.tabId,
newArrCount = _newArr2.length;
if (_arr2.length !== newArrCount) return state;
for (var i = 0; i < newArrCount; i++) {
if (_arr2.indexOf(_newArr2[i]) === -1) return state;
}
return {
selectedTabID: state.selectedTabID,
openTabIDs: _newArr2
};
}
default:
throw new Error("Undefined action type '" + action.type + "'");
}
}
;