mirror of
https://github.com/vercel/commerce.git
synced 2025-07-12 07:21:21 +00:00
Added util method for provider creation
This commit is contained in:
parent
760e26c35c
commit
f07b29c0f0
@ -1,23 +1,10 @@
|
|||||||
import {
|
import { getCommerceProvider, useCommerce as useCoreCommerce } from '@commerce'
|
||||||
CommerceProvider as CoreCommerceProvider,
|
|
||||||
CommerceProviderProps,
|
|
||||||
useCommerce as useCoreCommerce,
|
|
||||||
} from '@commerce'
|
|
||||||
import { bigcommerceProvider } from './provider'
|
import { bigcommerceProvider } from './provider'
|
||||||
import type { BigcommerceProvider } from './provider'
|
import type { BigcommerceProvider } from './provider'
|
||||||
|
|
||||||
export { bigcommerceProvider }
|
export { bigcommerceProvider }
|
||||||
export type { BigcommerceProvider }
|
export type { BigcommerceProvider }
|
||||||
|
|
||||||
export function CommerceProvider({
|
export const CommerceProvider = getCommerceProvider(bigcommerceProvider)
|
||||||
children,
|
|
||||||
...props
|
|
||||||
}: CommerceProviderProps) {
|
|
||||||
return (
|
|
||||||
<CoreCommerceProvider provider={{ ...bigcommerceProvider, ...props }}>
|
|
||||||
{children}
|
|
||||||
</CoreCommerceProvider>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useCommerce = () => useCoreCommerce<BigcommerceProvider>()
|
export const useCommerce = () => useCoreCommerce<BigcommerceProvider>()
|
||||||
|
@ -70,7 +70,7 @@ export type CommerceProviderProps = {
|
|||||||
children?: ReactNode
|
children?: ReactNode
|
||||||
} & Partial<CommerceConfig>
|
} & Partial<CommerceConfig>
|
||||||
|
|
||||||
export function CommerceProvider<P extends Provider>({
|
export function CoreCommerceProvider<P extends Provider>({
|
||||||
provider,
|
provider,
|
||||||
children,
|
children,
|
||||||
}: CommerceProps<P>) {
|
}: CommerceProps<P>) {
|
||||||
@ -88,6 +88,19 @@ export function CommerceProvider<P extends Provider>({
|
|||||||
return <Commerce.Provider value={cfg}>{children}</Commerce.Provider>
|
return <Commerce.Provider value={cfg}>{children}</Commerce.Provider>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getCommerceProvider<P extends Provider>(provider: P) {
|
||||||
|
return function CommerceProvider({
|
||||||
|
children,
|
||||||
|
...props
|
||||||
|
}: CommerceProviderProps) {
|
||||||
|
return (
|
||||||
|
<CoreCommerceProvider provider={{ ...provider, ...props }}>
|
||||||
|
{children}
|
||||||
|
</CoreCommerceProvider>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function useCommerce<P extends Provider>() {
|
export function useCommerce<P extends Provider>() {
|
||||||
return useContext(Commerce) as CommerceContextValue<P>
|
return useContext(Commerce) as CommerceContextValue<P>
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user