react-dyn-tabs
Version:
React dynamic tabs with full API
61 lines • 1.72 kB
JavaScript
import actions from './actions.js';
import helper from '../helper';
export default function reducer(state, action) {
switch (action.type) {
case actions.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.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.refresh:
return helper.getCopyState(state);
case actions.active:
{
var _tabId = action.tabId;
if (state.selectedTabID !== _tabId) return {
selectedTabID: _tabId,
openTabIDs: state.openTabIDs
};
return state;
}
case actions.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 + "'");
}
}