export var ActionType;
(function (ActionType) {
    ActionType[ActionType["SET_VALUE"] = 0] = "SET_VALUE";
    ActionType[ActionType["SET_ERROR"] = 1] = "SET_ERROR";
    ActionType[ActionType["SET_TOUCHED"] = 2] = "SET_TOUCHED";
    ActionType[ActionType["SET_IS_SUBMITTING"] = 3] = "SET_IS_SUBMITTING";
    ActionType[ActionType["RESET"] = 4] = "RESET";
})(ActionType || (ActionType = {}));
export function formReducer(state, action) {
    switch (action.type) {
        case ActionType.SET_VALUE:
            return {
                ...state,
                values: { ...state.values, [action.field]: action.value },
            };
        case ActionType.SET_ERROR:
            return {
                ...state,
                errors: { ...state.errors, [action.field]: action.error },
            };
        case ActionType.SET_TOUCHED:
            return {
                ...state,
                touched: { ...state.touched, [action.field]: action.touched },
            };
        case ActionType.SET_IS_SUBMITTING:
            return { ...state, isSubmitting: action.isSubmitting };
        case ActionType.RESET:
            return {
                values: action.initialValues,
                errors: {},
                touched: {},
                isSubmitting: false,
            };
        default:
            return state;
    }
}
