Skip to content
Snippets Groups Projects
  • chrisgarrity's avatar
    44c76e57
    Combine GUI reducers · 44c76e57
    chrisgarrity authored
    * Export initial states for each reducer
    * combine all gui reducers (excludes scratchPaint and intl)
    * combine all initial states to create default guiState for preloading in www
    * expect all of the gui state to be accessible at `state.scratchGui`
    44c76e57
    History
    Combine GUI reducers
    chrisgarrity authored
    * Export initial states for each reducer
    * combine all gui reducers (excludes scratchPaint and intl)
    * combine all initial states to create default guiState for preloading in www
    * expect all of the gui state to be accessible at `state.scratchGui`
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
color-picker.js 1.45 KiB
const ACTIVATE_COLOR_PICKER = 'scratch-gui/color-picker/ACTIVATE_COLOR_PICKER';
const DEACTIVATE_COLOR_PICKER = 'scratch-gui/color-picker/DEACTIVATE_COLOR_PICKER';
const SET_CALLBACK = 'scratch-gui/color-picker/SET_CALLBACK';

const initialState = {
    active: false,
    callback: () => {
        throw new Error('Color picker callback not initialized');
    }
};

const reducer = function (state, action) {
    if (typeof state === 'undefined') state = initialState;
    switch (action.type) {
    case ACTIVATE_COLOR_PICKER:
        return Object.assign({}, state, {active: true, callback: action.callback});
    case DEACTIVATE_COLOR_PICKER:
        // Can be called without a string to deactivate without setting color
        // i.e. when clicking on the modal background
        if (typeof action.color === 'string') {
            state.callback(action.color);
        }
        return Object.assign({}, state, {active: false});
    case SET_CALLBACK:
        return Object.assign({}, state, {callback: action.callback});
    default:
        return state;
    }
};

const activateColorPicker = callback => ({type: ACTIVATE_COLOR_PICKER, callback: callback});
const deactivateColorPicker = color => ({type: DEACTIVATE_COLOR_PICKER, color: color});
const setCallback = callback => ({type: SET_CALLBACK, callback: callback});

export {
    reducer as default,
    initialState as colorPickerInitialState,
    activateColorPicker,
    deactivateColorPicker,
    setCallback
};