UNPKG

react-journey

Version:

Create a delightful journey with React components.

43 lines (38 loc) 1.03 kB
import React, { useEffect, useState } from 'react'; import JourneyContext from './JourneyContext'; import Journey from './Journey'; const JourneyProvider = ({ children, Component }) => { const [active, setActive] = useState(false); const [steps, setSteps] = useState([]); const [value] = useState({ register(el, message) { setSteps(prevSteps => [...prevSteps, { el, message }]) }, run() { setActive(true); }, stop() { setActive(false); }, unRegister(el) { setSteps(prevSteps => prevSteps.filter(step => step.el !== el)); }, useStep(el, message) { return useEffect(() => { const { current } = el; value.register(current, message); return () => value.unRegister(current); }); } }); return ( <JourneyContext.Provider value={value}> {children} {active && steps?.length > 0 && <Journey Component={Component} steps={steps} />} </JourneyContext.Provider> ); }; export default JourneyProvider;