bindings/jupyter-modules/jupyter-ma-causal/src/reducer.js (28 lines of code) (raw):
import {handleActions} from 'redux-actions';
import {UPDATE_DATA, UPDATE_SLIDER_VALUES} from './actions';
const DEFAULT_STATE = {
containerWidth: 800,
containerHeight: 800,
data: [],
sliderValues: [], // associative array
};
const handleUpdateData = (state, {payload}) => {
return {
...state,
data: payload,
};
};
/**
* @params payload - {[idx]: value, ...}
*/
const handleUpdateSliderValues = (state, {payload}) => ({
...state,
sliderValues: Object.entries(payload).reduce((values, [index, value]) => {
values[index] = value;
return values;
}, state.sliderValues.slice(0)),
});
export default handleActions(
{
[UPDATE_DATA]: handleUpdateData,
[UPDATE_SLIDER_VALUES]: handleUpdateSliderValues,
},
DEFAULT_STATE
);