Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
} else if (action === ACTIONS.PREV) {
t = this.state.steps[index - 1]
}
if(!t) return
const a = document.querySelector(t.target)
centerDiv(a)
}
// Update state to advance the tour
//this.setState({ stepIndex: index + (action === ACTIONS.PREV ? -1 : 1) });
}
else if ([STATUS.FINISHED, STATUS.SKIPPED].includes(status)) {
// Need to set our running state to false, so we can restart if we click start again.
this.setState({ run: false });
}
console.groupCollapsed(type);
console.log(data); //eslint-disable-line no-console
console.groupEnd();
};
handleJoyrideCallback = data => {
const { action, index, status, type } = data;
if ([EVENTS.STEP_AFTER, EVENTS.TARGET_NOT_FOUND].includes(type)) {
// Update state to advance the tour
this.setState({ stepIndex: index + (action === ACTIONS.PREV ? -1 : 1) });
}
else if ([STATUS.FINISHED, STATUS.SKIPPED].includes(status)) {
// Need to set our running state to false, so we can restart if we click start again.
this.setState({ run: false });
this.registerEvent(status)
}
console.groupCollapsed(type);
console.log(data); //eslint-disable-line no-console
console.groupEnd();
};
handleJoyrideCallback = data => {
const { action, index, status, type } = data;
if ([EVENTS.STEP_AFTER, EVENTS.TARGET_NOT_FOUND].includes(type)) {
// Update state to advance the tour
this.setState({ stepIndex: index + (action === ACTIONS.PREV ? -1 : 1) });
}
else if ([STATUS.FINISHED, STATUS.SKIPPED].includes(status)) {
// Need to set our running state to false, so we can restart if we click start again.
this.setState({ run: false });
this.registerEvent(status)
}
console.groupCollapsed(type);
console.log(data); //eslint-disable-line no-console
console.groupEnd();
};
handleJoyrideCallback = data => {
const { action, index, status, type } = data;
if ([EVENTS.STEP_AFTER, EVENTS.TARGET_NOT_FOUND].includes(type)) {
// Update state to advance the tour
this.setState({ stepIndex: index + (action === ACTIONS.PREV ? -1 : 1) });
}
else if ([STATUS.FINISHED, STATUS.SKIPPED].includes(status)) {
// Need to set our running state to false, so we can restart if we click start again.
this.setState({ run: false });
this.registerEvent(status)
}
console.groupCollapsed(type);
console.log(data); //eslint-disable-line no-console
console.groupEnd();
};
//console.log(data)
const centerDiv = (element)=>{
const elementRect = element.getBoundingClientRect();
const absoluteElementTop = elementRect.top + window.pageYOffset;
const middle = absoluteElementTop - (window.innerHeight / 2);
window.scrollTo(0, middle);
}
if ([EVENTS.STEP_AFTER, EVENTS.TARGET_NOT_FOUND].includes(type)) {
if (action === ACTIONS.NEXT || action === ACTIONS.PREV) {
let t = null
if (action === ACTIONS.NEXT){
t = this.state.steps[index + 1]
} else if (action === ACTIONS.PREV) {
t = this.state.steps[index - 1]
}
if(!t) return
const a = document.querySelector(t.target)
centerDiv(a)
}
// Update state to advance the tour
//this.setState({ stepIndex: index + (action === ACTIONS.PREV ? -1 : 1) });
}
mutationObserver = new MutationObserver(mutationHandler);
mutationObserver.observe(document.body, {
childList: true,
attributes: true,
subtree: true
});
// call it once manually after the event was registered as the
// element might already be visible in the DOM at which point we're
// already done.
mutationHandler();
}
if (callbackProps.status === STATUS.SKIPPED || callbackProps.status === STATUS.FINISHED) {
try {
// FIXME?
// this.setState({ run: false, stepIndex: 0 });
switch (callbackProps.status) {
case STATUS.SKIPPED:
RendererAnalytics.event({category: 'tour-result', action: 'skipped'});
RendererAnalytics.event({category: 'tour-skip', action: 'skipped-at-step-' + callbackProps.index});
LifecycleToggle.mark(LifecycleEvents.TOUR_SKIPPED);
break;
case STATUS.FINISHED:
RendererAnalytics.event({category: 'tour-result', action: 'finished'});
const handleJoyrideCallback = (data) => {
const {
action, index, type, status,
} = data;
if ([EVENTS.TOUR_START].includes(type)) {
document.addEventListener('mouseup', onClick);
} else if ([ACTIONS.START].includes(action) && index === 0) {
// if the guide is restarted there will be no EVENTS.TOUR_START, the EventListener must
// be added on ACTION.START and step 0.
document.addEventListener('mouseup', onClick);
} else if ([ACTIONS.CLOSE].includes(action) || [STATUS.FINISHED, STATUS.SKIPPED].includes(status)) {
if (runGuide) {
endGuide();
}
} else if ([EVENTS.STEP_AFTER].includes(type)) {
const newStepIndex = index + (action === ACTIONS.PREV ? -1 : 1);
if (action !== ACTIONS.PREV && !readyToProceed(newStepIndex)) {
// we are not ready to proceed to the next step. Reset the current step.
// The stop/start of the guide is needed to reset the Joyride events, or it will
// be somewhere in between steps, statewise.
setRunGuide(false);
setStepIndex(index);
setTimeout(() => setRunGuide(true), 100);
} else {
// Update state to advance the guide
setStepIndex(newStepIndex);
}
callback={data => {
const { action, index, type, status, step } = data;
const { actions } = step || {};
const { prev, next } = actions || {};
if ([STATUS.FINISHED, STATUS.SKIPPED].includes(status)) {
// Need to set our running state to false, so we can restart if we click start again.
handleStateChange({ open: false, stepIndex: 0, stepsKey: '' });
} else if (data.action === 'close' || data.type === 'tour:end') {
handleStateChange({
stepIndex: 0,
open: false
});
} else if (
[
EVENTS.STEP_AFTER,
EVENTS.TARGET_NOT_FOUND,
EVENTS.TOUR_START
].includes(type)
) {
const newStepIndex = index + (action === ACTIONS.PREV ? -1 : 1);
// Update state to advance the tour
if (callbackProps.status === STATUS.SKIPPED || callbackProps.status === STATUS.FINISHED) {
try {
// FIXME?
// this.setState({ run: false, stepIndex: 0 });
switch (callbackProps.status) {
case STATUS.SKIPPED:
RendererAnalytics.event({category: 'tour-result', action: 'skipped'});
RendererAnalytics.event({category: 'tour-skip', action: 'skipped-at-step-' + callbackProps.index});
LifecycleToggle.mark(LifecycleEvents.TOUR_SKIPPED);
break;
case STATUS.FINISHED:
RendererAnalytics.event({category: 'tour-result', action: 'finished'});
LifecycleToggle.mark(LifecycleEvents.TOUR_FINISHED);
break;
}
} finally {
LifecycleToggle.mark(LifecycleEvents.TOUR_TERMINATED);
}
} else if (callbackProps.type === EVENTS.STEP_AFTER) {
if ( ! this.state.run) {
setTimeout(() => {
if (tour.step && tour.step.callback && type === 'tooltip' /* && undone*/) {
let doneSteps = (new Set(this.state.doneSteps)).add(index);
tour.step.callback();
this.setState({ doneSteps });
}
}
if (action === ACTIONS.CLOSE) {
this.h.toggleTour(false);
this.setState({ doneSteps: new Set(), stepIndex: 0 });
}
if (type === EVENTS.TOUR_END) {
this.h.toggleTour(false);
this.setState({ doneSteps: new Set(), stepIndex: 0 });
} else if ([EVENTS.STEP_AFTER, EVENTS.CLOSE, EVENTS.TARGET_NOT_FOUND].includes(type)) {
// Since this is a controlled tour you'll need to update the state to advance the tour
this.setState({ stepIndex: index + (action === ACTIONS.PREV ? -1 : 1) });
}
}
}