2016-06-22 19:58:23 +00:00
|
|
|
import * as ActionTypes from '../../../constants';
|
2016-05-11 20:13:17 +00:00
|
|
|
|
|
|
|
const initialState = {
|
2016-07-08 18:57:22 +00:00
|
|
|
isPlaying: false,
|
2017-05-31 19:23:30 +00:00
|
|
|
isAccessibleOutputPlaying: false,
|
2016-07-14 16:47:54 +00:00
|
|
|
modalIsVisible: false,
|
2016-09-04 00:47:30 +00:00
|
|
|
sidebarIsExpanded: false,
|
2017-01-09 21:31:39 +00:00
|
|
|
consoleIsExpanded: true,
|
2016-08-30 03:23:10 +00:00
|
|
|
preferencesIsVisible: false,
|
|
|
|
projectOptionsVisible: false,
|
2016-09-07 02:37:29 +00:00
|
|
|
newFolderModalVisible: false,
|
2019-08-12 15:21:42 +00:00
|
|
|
uploadFileModalVisible: false,
|
2016-09-07 20:33:01 +00:00
|
|
|
shareModalVisible: false,
|
2019-08-28 20:08:40 +00:00
|
|
|
shareModalProjectId: 'abcd',
|
|
|
|
shareModalProjectName: 'My Cute Sketch',
|
|
|
|
shareModalProjectUsername: 'p5_user',
|
2016-09-07 21:47:22 +00:00
|
|
|
editorOptionsVisible: false,
|
2016-09-20 22:27:10 +00:00
|
|
|
keyboardShortcutVisible: false,
|
2016-09-20 22:32:26 +00:00
|
|
|
unsavedChanges: false,
|
2016-09-28 22:05:14 +00:00
|
|
|
infiniteLoop: false,
|
2016-10-06 19:45:26 +00:00
|
|
|
previewIsRefreshing: false,
|
2016-10-27 23:45:09 +00:00
|
|
|
infiniteLoopMessage: '',
|
2017-01-24 18:04:51 +00:00
|
|
|
justOpenedProject: false,
|
2016-11-29 20:51:16 +00:00
|
|
|
previousPath: '/',
|
2017-07-26 18:46:59 +00:00
|
|
|
errorType: undefined,
|
|
|
|
runtimeErrorWarningVisible: true,
|
2019-10-08 20:39:47 +00:00
|
|
|
parentId: undefined
|
2016-06-23 22:29:55 +00:00
|
|
|
};
|
2016-05-11 20:13:17 +00:00
|
|
|
|
|
|
|
const ide = (state = initialState, action) => {
|
2016-06-23 22:29:55 +00:00
|
|
|
switch (action.type) {
|
|
|
|
case ActionTypes.START_SKETCH:
|
2016-07-11 19:22:29 +00:00
|
|
|
return Object.assign({}, state, { isPlaying: true });
|
2016-06-23 22:29:55 +00:00
|
|
|
case ActionTypes.STOP_SKETCH:
|
2016-07-11 19:22:29 +00:00
|
|
|
return Object.assign({}, state, { isPlaying: false });
|
2017-05-31 19:23:30 +00:00
|
|
|
case ActionTypes.START_ACCESSIBLE_OUTPUT:
|
|
|
|
return Object.assign({}, state, { isAccessibleOutputPlaying: true });
|
|
|
|
case ActionTypes.STOP_ACCESSIBLE_OUTPUT:
|
|
|
|
return Object.assign({}, state, { isAccessibleOutputPlaying: false });
|
2016-07-17 23:06:43 +00:00
|
|
|
case ActionTypes.CONSOLE_EVENT:
|
|
|
|
return Object.assign({}, state, { consoleEvent: action.event });
|
2016-07-13 20:13:28 +00:00
|
|
|
case ActionTypes.SHOW_MODAL:
|
2019-10-08 20:39:47 +00:00
|
|
|
return Object.assign({}, state, { modalIsVisible: true, parentId: action.parentId });
|
2016-07-13 20:13:28 +00:00
|
|
|
case ActionTypes.HIDE_MODAL:
|
|
|
|
return Object.assign({}, state, { modalIsVisible: false });
|
2016-07-14 16:47:54 +00:00
|
|
|
case ActionTypes.COLLAPSE_SIDEBAR:
|
|
|
|
return Object.assign({}, state, { sidebarIsExpanded: false });
|
|
|
|
case ActionTypes.EXPAND_SIDEBAR:
|
|
|
|
return Object.assign({}, state, { sidebarIsExpanded: true });
|
2016-07-21 04:33:41 +00:00
|
|
|
case ActionTypes.COLLAPSE_CONSOLE:
|
|
|
|
return Object.assign({}, state, { consoleIsExpanded: false });
|
|
|
|
case ActionTypes.EXPAND_CONSOLE:
|
|
|
|
return Object.assign({}, state, { consoleIsExpanded: true });
|
2016-08-01 17:55:49 +00:00
|
|
|
case ActionTypes.OPEN_PREFERENCES:
|
|
|
|
return Object.assign({}, state, { preferencesIsVisible: true });
|
|
|
|
case ActionTypes.CLOSE_PREFERENCES:
|
|
|
|
return Object.assign({}, state, { preferencesIsVisible: false });
|
2016-08-12 16:45:26 +00:00
|
|
|
case ActionTypes.RESET_PROJECT:
|
|
|
|
return initialState;
|
2016-08-30 03:23:10 +00:00
|
|
|
case ActionTypes.OPEN_PROJECT_OPTIONS:
|
|
|
|
return Object.assign({}, state, { projectOptionsVisible: true });
|
|
|
|
case ActionTypes.CLOSE_PROJECT_OPTIONS:
|
|
|
|
return Object.assign({}, state, { projectOptionsVisible: false });
|
|
|
|
case ActionTypes.SHOW_NEW_FOLDER_MODAL:
|
2019-10-08 20:39:47 +00:00
|
|
|
return Object.assign({}, state, { newFolderModalVisible: true, parentId: action.parentId });
|
2016-08-30 03:23:10 +00:00
|
|
|
case ActionTypes.CLOSE_NEW_FOLDER_MODAL:
|
|
|
|
return Object.assign({}, state, { newFolderModalVisible: false });
|
2016-09-07 02:37:29 +00:00
|
|
|
case ActionTypes.SHOW_SHARE_MODAL:
|
2019-06-19 20:21:25 +00:00
|
|
|
return Object.assign({}, state, {
|
|
|
|
shareModalVisible: true,
|
|
|
|
shareModalProjectId: action.payload.shareModalProjectId,
|
|
|
|
shareModalProjectName: action.payload.shareModalProjectName,
|
|
|
|
shareModalProjectUsername: action.payload.shareModalProjectUsername,
|
|
|
|
});
|
2016-09-07 02:37:29 +00:00
|
|
|
case ActionTypes.CLOSE_SHARE_MODAL:
|
|
|
|
return Object.assign({}, state, { shareModalVisible: false });
|
2016-09-07 20:33:01 +00:00
|
|
|
case ActionTypes.SHOW_EDITOR_OPTIONS:
|
|
|
|
return Object.assign({}, state, { editorOptionsVisible: true });
|
|
|
|
case ActionTypes.CLOSE_EDITOR_OPTIONS:
|
|
|
|
return Object.assign({}, state, { editorOptionsVisible: false });
|
2016-09-07 21:47:22 +00:00
|
|
|
case ActionTypes.SHOW_KEYBOARD_SHORTCUT_MODAL:
|
|
|
|
return Object.assign({}, state, { keyboardShortcutVisible: true });
|
|
|
|
case ActionTypes.CLOSE_KEYBOARD_SHORTCUT_MODAL:
|
|
|
|
return Object.assign({}, state, { keyboardShortcutVisible: false });
|
2016-09-20 22:27:10 +00:00
|
|
|
case ActionTypes.SET_UNSAVED_CHANGES:
|
|
|
|
return Object.assign({}, state, { unsavedChanges: action.value });
|
2016-09-12 05:31:30 +00:00
|
|
|
case ActionTypes.DETECT_INFINITE_LOOPS:
|
2016-10-06 19:45:26 +00:00
|
|
|
return Object.assign({}, state, { infiniteLoop: true, infiniteLoopMessage: action.message });
|
2016-09-12 05:31:30 +00:00
|
|
|
case ActionTypes.RESET_INFINITE_LOOPS:
|
2016-10-06 19:45:26 +00:00
|
|
|
return Object.assign({}, state, { infiniteLoop: false, infiniteLoopMessage: '' });
|
2016-09-28 22:05:14 +00:00
|
|
|
case ActionTypes.START_SKETCH_REFRESH:
|
|
|
|
return Object.assign({}, state, { previewIsRefreshing: true });
|
|
|
|
case ActionTypes.END_SKETCH_REFRESH:
|
|
|
|
return Object.assign({}, state, { previewIsRefreshing: false });
|
2016-10-27 23:45:09 +00:00
|
|
|
case ActionTypes.JUST_OPENED_PROJECT:
|
|
|
|
return Object.assign({}, state, { justOpenedProject: true });
|
|
|
|
case ActionTypes.RESET_JUST_OPENED_PROJECT:
|
|
|
|
return Object.assign({}, state, { justOpenedProject: false });
|
2016-11-10 21:13:00 +00:00
|
|
|
case ActionTypes.SET_PREVIOUS_PATH:
|
|
|
|
return Object.assign({}, state, { previousPath: action.path });
|
2017-01-24 20:29:25 +00:00
|
|
|
case ActionTypes.SHOW_ERROR_MODAL:
|
|
|
|
return Object.assign({}, state, { errorType: action.modalType });
|
|
|
|
case ActionTypes.HIDE_ERROR_MODAL:
|
|
|
|
return Object.assign({}, state, { errorType: undefined });
|
2017-07-26 18:46:59 +00:00
|
|
|
case ActionTypes.HIDE_RUNTIME_ERROR_WARNING:
|
|
|
|
return Object.assign({}, state, { runtimeErrorWarningVisible: false });
|
|
|
|
case ActionTypes.SHOW_RUNTIME_ERROR_WARNING:
|
|
|
|
return Object.assign({}, state, { runtimeErrorWarningVisible: true });
|
2019-08-12 15:21:42 +00:00
|
|
|
case ActionTypes.OPEN_UPLOAD_FILE_MODAL:
|
2020-03-03 21:33:52 +00:00
|
|
|
return Object.assign({}, state, { uploadFileModalVisible: true, parentId: action.parentId });
|
2019-08-12 15:21:42 +00:00
|
|
|
case ActionTypes.CLOSE_UPLOAD_FILE_MODAL:
|
|
|
|
return Object.assign({}, state, { uploadFileModalVisible: false });
|
2016-06-23 22:29:55 +00:00
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
};
|
2016-05-11 20:13:17 +00:00
|
|
|
|
2016-06-23 22:29:55 +00:00
|
|
|
export default ide;
|