p5.js-web-editor/client/modules/IDE/reducers/ide.js

47 lines
1.6 KiB
JavaScript
Raw Normal View History

2016-06-22 21:58:23 +02:00
import * as ActionTypes from '../../../constants';
2016-05-11 22:13:17 +02:00
const initialState = {
2016-07-08 20:57:22 +02:00
isPlaying: false,
selectedFile: '1',
consoleEvent: {
method: undefined,
arguments: []
2016-07-18 01:15:13 +02:00
},
2016-07-14 18:47:54 +02:00
modalIsVisible: false,
sidebarIsExpanded: true,
consoleIsExpanded: false
2016-06-24 00:29:55 +02:00
};
2016-05-11 22:13:17 +02:00
const ide = (state = initialState, action) => {
2016-06-24 00:29:55 +02:00
switch (action.type) {
case ActionTypes.TOGGLE_SKETCH:
2016-07-11 21:22:29 +02:00
return Object.assign({}, state, { isPlaying: !state.isPlaying });
2016-06-24 00:29:55 +02:00
case ActionTypes.START_SKETCH:
2016-07-11 21:22:29 +02:00
return Object.assign({}, state, { isPlaying: true });
2016-06-24 00:29:55 +02:00
case ActionTypes.STOP_SKETCH:
2016-07-11 21:22:29 +02:00
return Object.assign({}, state, { isPlaying: false });
2016-07-08 20:57:22 +02:00
case ActionTypes.SET_SELECTED_FILE:
case ActionTypes.SET_PROJECT:
case ActionTypes.NEW_PROJECT:
return Object.assign({}, state, { selectedFile: action.selectedFile });
case ActionTypes.CONSOLE_EVENT:
return Object.assign({}, state, { consoleEvent: action.event });
case ActionTypes.SHOW_MODAL:
return Object.assign({}, state, { modalIsVisible: true });
case ActionTypes.HIDE_MODAL:
return Object.assign({}, state, { modalIsVisible: false });
2016-07-14 18:47:54 +02:00
case ActionTypes.COLLAPSE_SIDEBAR:
return Object.assign({}, state, { sidebarIsExpanded: false });
case ActionTypes.EXPAND_SIDEBAR:
return Object.assign({}, state, { sidebarIsExpanded: true });
case ActionTypes.COLLAPSE_CONSOLE:
return Object.assign({}, state, { consoleIsExpanded: false });
case ActionTypes.EXPAND_CONSOLE:
return Object.assign({}, state, { consoleIsExpanded: true });
2016-06-24 00:29:55 +02:00
default:
return state;
}
};
2016-05-11 22:13:17 +02:00
2016-06-24 00:29:55 +02:00
export default ide;