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

46 lines
1.4 KiB
JavaScript
Raw Normal View History

2016-06-22 19:58:23 +00:00
import * as ActionTypes from '../../../constants';
2016-06-17 17:37:29 +00:00
const initialState = {
2016-07-06 15:27:39 +00:00
fontSize: 18,
2016-07-11 13:00:44 +00:00
indentationAmount: 2,
2016-08-09 18:20:54 +00:00
isTabIndent: true,
2016-08-11 18:09:59 +00:00
autosave: true,
2016-08-12 19:50:33 +00:00
lintWarning: false,
textOutput: 0,
theme: 'light',
autorefresh: false
2016-06-23 22:29:55 +00:00
};
2016-06-17 17:37:29 +00:00
const preferences = (state = initialState, action) => {
2016-06-23 22:29:55 +00:00
switch (action.type) {
case ActionTypes.SET_FONT_SIZE:
return Object.assign({}, state, { fontSize: action.value });
case ActionTypes.SET_INDENTATION:
return Object.assign({}, state, { indentationAmount: action.value });
2016-07-11 02:52:48 +00:00
case ActionTypes.INDENT_WITH_TAB:
return Object.assign({}, state, {
isTabIndent: true
});
case ActionTypes.INDENT_WITH_SPACE:
return Object.assign({}, state, {
isTabIndent: false
});
2016-08-09 20:15:28 +00:00
case ActionTypes.SET_AUTOSAVE:
return Object.assign({}, state, { autosave: action.value });
2016-08-11 18:09:59 +00:00
case ActionTypes.SET_LINT_WARNING:
return Object.assign({}, state, { lintWarning: action.value });
2016-08-12 19:50:33 +00:00
case ActionTypes.SET_TEXT_OUTPUT:
return Object.assign({}, state, { textOutput: action.value });
case ActionTypes.SET_PREFERENCES:
return action.preferences;
case ActionTypes.SET_THEME:
return Object.assign({}, state, { theme: action.value });
case ActionTypes.SET_AUTOREFRESH:
return Object.assign({}, state, { autorefresh: action.value });
2016-06-23 22:29:55 +00:00
default:
return state;
}
};
2016-06-17 17:37:29 +00:00
2016-06-23 22:29:55 +00:00
export default preferences;