export {CheckoutElementsProvider} from './components/CheckoutElementsProvider'; export { useCheckout, StripeUseCheckoutResult, StripeCheckoutValue, } from './components/CheckoutContext'; export {CheckoutFormProvider} from './components/CheckoutFormProvider'; export * from './types'; import React from 'react'; import createElementComponent from '../components/createElementComponent'; import {isServer} from '../utils/isServer'; import { CurrencySelectorElementComponent, BillingAddressElementComponent, ShippingAddressElementComponent, PaymentElementComponent, CheckoutFormComponent, ExpressCheckoutElementComponent, TaxIdElementComponent, ContactDetailsElementComponent, } from './types'; export const CurrencySelectorElement: CurrencySelectorElementComponent = createElementComponent( 'currencySelector', isServer ); export const PaymentElement: PaymentElementComponent = createElementComponent( 'payment', isServer ); export const CheckoutForm: CheckoutFormComponent = createElementComponent( 'paymentForm', isServer, 'CheckoutForm' ); export const ExpressCheckoutElement: ExpressCheckoutElementComponent = createElementComponent( 'expressCheckout', isServer ); export const TaxIdElement: TaxIdElementComponent = createElementComponent( 'taxId', isServer ); export const ContactDetailsElement: ContactDetailsElementComponent = createElementComponent( 'contactDetails', isServer ); const AddressElementBase = createElementComponent('address', isServer) as any; export const BillingAddressElement: BillingAddressElementComponent = (( props ) => { const {options, ...rest} = props as any; const merged = {...options, mode: 'billing'}; return React.createElement(AddressElementBase, {...rest, options: merged}); }) as BillingAddressElementComponent; export const ShippingAddressElement: ShippingAddressElementComponent = (( props ) => { const {options, ...rest} = props as any; const merged = {...options, mode: 'shipping'}; return React.createElement(AddressElementBase, {...rest, options: merged}); }) as ShippingAddressElementComponent;