File "context.js"
Full Path: /home/warrior1/public_html/languages/wp-content-20241001222009/plugins/elementor/app/modules/onboarding/assets/js/context/context.js
File size: 1.45 KB
MIME-type: text/x-java
Charset: utf-8
import { createContext, useCallback, useState } from 'react';
export const OnboardingContext = createContext( {} );
export function ContextProvider( props ) {
const onboardingConfig = elementorAppConfig.onboarding,
initialState = {
// eslint-disable-next-line camelcase
hasPro: elementorAppConfig.hasPro,
isLibraryConnected: onboardingConfig.isLibraryConnected,
isHelloThemeInstalled: onboardingConfig.helloInstalled,
isHelloThemeActivated: onboardingConfig.helloActivated,
siteName: onboardingConfig.siteName,
siteLogo: onboardingConfig.siteLogo,
proNotice: '',
currentStep: '',
nextStep: '',
steps: {
account: false,
hello: false,
siteName: false,
siteLogo: false,
goodToGo: false,
},
},
[ state, setState ] = useState( initialState ),
updateState = useCallback( ( newState ) => {
setState( ( prev ) => ( { ...prev, ...newState } ) );
}, [ setState ] ),
getStateObjectToUpdate = ( stateObject, mainChangedPropertyKey, subChangedPropertyKey, subChangedPropertyValue ) => {
const mutatedStateCopy = JSON.parse( JSON.stringify( stateObject ) );
mutatedStateCopy[ mainChangedPropertyKey ][ subChangedPropertyKey ] = subChangedPropertyValue;
return mutatedStateCopy;
};
return (
<OnboardingContext.Provider value={ { state, setState, updateState, getStateObjectToUpdate } }>
{ props.children }
</OnboardingContext.Provider>
);
}
ContextProvider.propTypes = {
children: PropTypes.any,
};