PluginProbe
Elementor Website Builder – more than just a page builder / 3.8.0-beta1
Elementor Website Builder – more than just a page builder v3.8.0-beta1
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 All 457 releases
elementor / app / modules / kit-library / assets / js / context / settings-context.js

settings-context.js in Elementor Website Builder – more than just a page builder 3.8.0-beta1, at app/modules/kit-library/assets/js/context/settings-context.js

43 lines 985 B
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { createContext, useContext, useState, useEffect, useCallback } from 'react';
2
3 const SettingsContext = createContext( {} );
4
5 /**
6 * Consume the context
7 *
8 * @return {{emptyTrashDays: number}} context value
9 */
10 export function useSettingsContext() {
11 return useContext( SettingsContext );
12 }
13
14 /**
15 * Settings Provider
16 *
17 * @param {*} props
18 * @return {JSX.Element} element
19 * @function Object() { [native code] }
20 */
21 export function SettingsProvider( props ) {
22 const [ settings, setSettings ] = useState( {} );
23
24 const updateSettings = useCallback( ( newSettings ) => {
25 setSettings( ( prev ) => ( { ...prev, ...newSettings } ) );
26 }, [ setSettings ] );
27
28 useEffect( () => {
29 setSettings( props.value );
30 }, [ setSettings ] );
31
32 return (
33 <SettingsContext.Provider value={ { settings, setSettings, updateSettings } }>
34 { props.children }
35 </SettingsContext.Provider>
36 );
37 }
38
39 SettingsProvider.propTypes = {
40 children: PropTypes.any,
41 value: PropTypes.object.isRequired,
42 };
43