48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as React from 'react'
 | 
						|
import swell from 'swell-js'
 | 
						|
import { ReactNode } from 'react'
 | 
						|
 | 
						|
import {
 | 
						|
  CommerceConfig,
 | 
						|
  CommerceProvider as CoreCommerceProvider,
 | 
						|
  useCommerce as useCoreCommerce,
 | 
						|
} from '@commerce'
 | 
						|
 | 
						|
import { swellProvider, SwellProvider } from './provider'
 | 
						|
import {
 | 
						|
  SWELL_CHECKOUT_ID_COOKIE,
 | 
						|
  SWELL_STORE_ID,
 | 
						|
  SWELL_PUBLIC_KEY,
 | 
						|
} from './const'
 | 
						|
swell.init(SWELL_STORE_ID, SWELL_PUBLIC_KEY)
 | 
						|
 | 
						|
export { swellProvider }
 | 
						|
export type { SwellProvider }
 | 
						|
 | 
						|
export const swellConfig: any = {
 | 
						|
  locale: 'en-us',
 | 
						|
  cartCookie: SWELL_CHECKOUT_ID_COOKIE,
 | 
						|
  swell,
 | 
						|
}
 | 
						|
 | 
						|
export type SwellConfig = Partial<CommerceConfig>
 | 
						|
 | 
						|
export type SwellProps = {
 | 
						|
  children?: ReactNode
 | 
						|
  locale: string
 | 
						|
} & SwellConfig
 | 
						|
 | 
						|
export function CommerceProvider({ children, ...config }: SwellProps) {
 | 
						|
  return (
 | 
						|
    <CoreCommerceProvider
 | 
						|
      // TODO: Fix this type
 | 
						|
      provider={swellProvider as any}
 | 
						|
      config={{ ...swellConfig, ...config }}
 | 
						|
    >
 | 
						|
      {children}
 | 
						|
    </CoreCommerceProvider>
 | 
						|
  )
 | 
						|
}
 | 
						|
 | 
						|
export const useCommerce = () => useCoreCommerce()
 |