/** * External dependencies */ import { createContext, useContext, useState, useCallback, } from '@wordpress/element'; /** * Internal dependencies */ import { DEFAULT_STATE, DEFAULT_BILLING_CONTEXT_DATA } from './constants'; /** * @typedef {import('@woocommerce/type-defs/contexts').BillingDataContext} BillingDataContext */ const BillingDataContext = createContext( DEFAULT_BILLING_CONTEXT_DATA ); /** * @return {BillingDataContext} Returns data and functions related to billing. */ export const useBillingDataContext = () => { return useContext( BillingDataContext ); }; export const BillingDataProvider = ( { children } ) => { const [ billingData, setBillingDataState ] = useState( DEFAULT_STATE ); const setBillingData = useCallback( ( newData ) => { setBillingDataState( ( prevState ) => ( { ...prevState, ...newData, } ) ); }, [ setBillingDataState ] ); /** * @type {BillingDataContext} */ const billingDataValue = { billingData, setBillingData, }; return ( { children } ); };