72 lines
1.6 KiB
JavaScript
72 lines
1.6 KiB
JavaScript
import { Map } from 'immutable';
|
|
import Target from 'Types/target';
|
|
import TargetCustom from 'Types/targetCustom';
|
|
|
|
const EDIT = 'targetDefiner/EDIT';
|
|
const SHOW = 'targetDefiner/SHOW';
|
|
const HIDE = 'targetDefiner/HIDE';
|
|
const TOGGLE_INSPECTOR_MODE = 'targetDefiner/TOGGLE_INSPECTOR_MODE';
|
|
|
|
const initialState = Map({
|
|
isDisplayed: false,
|
|
target: Target(),
|
|
inspectorMode: false,
|
|
});
|
|
|
|
const reducer = (state = initialState, action = {}) => {
|
|
switch (action.type) {
|
|
case EDIT:
|
|
return state.setIn([ 'target', 'label' ], action.label);
|
|
case SHOW:
|
|
const target = action.target && !action.target.isCustom
|
|
? Target(action.target)
|
|
: TargetCustom(action.target);
|
|
return state
|
|
.set('isDisplayed', true)
|
|
.set('target', target)
|
|
.set('inspectorMode', false);
|
|
case HIDE:
|
|
return state
|
|
.set('isDisplayed', false)
|
|
.set('target', Target())
|
|
case TOGGLE_INSPECTOR_MODE:
|
|
const inspectorMode = action.flag !== undefined
|
|
? action.flag
|
|
: !state.get('inspectorMode');
|
|
let returnState = state.set('inspectorMode', inspectorMode);
|
|
if (inspectorMode) {
|
|
returnState = returnState.set('isDisplayed', false).set('target', Target());
|
|
}
|
|
return returnState;
|
|
}
|
|
return state;
|
|
};
|
|
|
|
export default reducer;
|
|
|
|
export function show(target) {
|
|
return {
|
|
type: SHOW,
|
|
target,
|
|
};
|
|
}
|
|
|
|
export function hide() {
|
|
return {
|
|
type: HIDE,
|
|
};
|
|
}
|
|
|
|
export function edit(label) {
|
|
return {
|
|
type: EDIT,
|
|
label,
|
|
};
|
|
}
|
|
|
|
export function toggleInspectorMode(flag) {
|
|
return {
|
|
type: TOGGLE_INSPECTOR_MODE,
|
|
flag,
|
|
};
|
|
}
|