Spaces:
Running
Running
File size: 2,223 Bytes
f2bee8a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
const ACTIVATE_CUSTOM_PROCEDURES = 'scratch-gui/custom-procedures/ACTIVATE_CUSTOM_PROCEDURES';
const DEACTIVATE_CUSTOM_PROCEDURES = 'scratch-gui/custom-procedures/DEACTIVATE_CUSTOM_PROCEDURES';
const SET_CALLBACK = 'scratch-gui/custom-procedures/SET_CALLBACK';
const initialState = {
active: false,
mutator: null,
callback: null
};
const reducer = function (state, action) {
if (typeof state === 'undefined') state = initialState;
switch (action.type) {
case ACTIVATE_CUSTOM_PROCEDURES:
return Object.assign({}, state, {
active: true,
mutator: action.mutator,
callback: action.callback
});
case DEACTIVATE_CUSTOM_PROCEDURES:
// Can be called without a mutator to deactivate without new procedure
// i.e. when clicking on the modal background
if (action.mutator) {
state.callback(action.mutator);
}
return Object.assign({}, state, {
active: false,
mutator: null,
callback: null
});
case SET_CALLBACK:
return Object.assign({}, state, {callback: action.callback});
default:
return state;
}
};
/**
* Action creator to open the custom procedures modal.
* @param {!Element} mutator The XML node of the mutator for the procedure.
* @param {!function(!Element)} callback The function to call when done editing procedure.
* Expect the callback to be a function that takes a new XML mutator node.
* @returns {object} An action object with type ACTIVATE_CUSTOM_PROCEDURES.
*/
const activateCustomProcedures = (mutator, callback) => ({
type: ACTIVATE_CUSTOM_PROCEDURES,
mutator: mutator,
callback: callback
});
/**
* Action creator to close the custom procedures modal.
* @param {?Element} mutator The new mutator, or null if the callback should not be called.
* @returns {object} An action object with type ACTIVATE_CUSTOM_PROCEDURES.
*/
const deactivateCustomProcedures = mutator => ({
type: DEACTIVATE_CUSTOM_PROCEDURES,
mutator: mutator
});
export {
reducer as default,
initialState as customProceduresInitialState,
activateCustomProcedures,
deactivateCustomProcedures
};
|