openreplay/frontend/app/duck/components/targetDefiner.js
2023-01-13 17:36:35 +01:00

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,
};
}