in packages/eui/src/components/tour/useEuiTour.tsx [23:79]
function reducer(state: EuiTourState, action: EuiTourAction): EuiTourState {
switch (action.type) {
case 'EUI_TOUR_FINISH': {
const currentTourStep = action.payload.resetTour
? 1
: state.currentTourStep;
return {
...state,
currentTourStep,
isTourActive: false,
};
}
case 'EUI_TOUR_RESET':
return {
...state,
currentTourStep: 1,
isTourActive: true,
};
case 'EUI_TOUR_NEXT': {
const nextStep =
state.currentTourStep === stepsArray.length
? state.currentTourStep
: state.currentTourStep + 1;
return {
...state,
currentTourStep: nextStep,
};
}
case 'EUI_TOUR_PREVIOUS': {
const prevStep =
state.currentTourStep === 1
? state.currentTourStep
: state.currentTourStep - 1;
return {
...state,
currentTourStep: prevStep,
};
}
case 'EUI_TOUR_GOTO': {
const step = action.payload.step;
const isTourActive =
typeof action.payload.isTourActive !== 'undefined'
? action.payload.isTourActive
: state.isTourActive;
const goTo =
step <= stepsArray.length && step > 0 ? step : state.currentTourStep;
return {
...state,
currentTourStep: goTo,
isTourActive,
};
}
default:
assertNever(action);
return state;
}
}