state) { return Object.assign({}, state, { playbackRates: getPlaybackRates([], state.animations), }); }, [UPDATE_SELECTED_ANIMATION](state, { selectedAnimation }) { const detailVisibility = !!selectedAnimation; return Object.assign({}, state, { detailVisibility, selectedAnimation, }); }, [UPDATE_SIDEBAR_SIZE](state, { sidebarSize }) { return Object.assign({}, state, { sidebarSize, }); }, }; function getPlaybackRates(basePlaybackRate, animations) { return [ ...new Set( animations.map(a => a.state.playbackRate).concat(basePlaybackRate) ), ]; } module.exports = function (state = INITIAL_STATE, action) { const reducer = reducers[action.type]; return reducer ? reducer(state, action) : state; }; PK