{"version":3,"file":"index.mjs","names":["isBrowser"],"sources":["../src/utils.ts","../src/state.ts","../src/constants.ts","../src/formStateProvider.tsx","../src/Fields.tsx","../src/provider.tsx","../src/Form.tsx","../src/Session.tsx"],"sourcesContent":["function generateUUID() {\n  function getRandomHex(length: number) {\n    let result = '';\n    for (let i = 0; i < length; i++) {\n      result += Math.floor(Math.random() * 16).toString(16);\n    }\n    return result;\n  }\n\n  return (\n    getRandomHex(8) +\n    '-' +\n    getRandomHex(4) +\n    '-' +\n    '4' +\n    getRandomHex(3) +\n    '-' +\n    (Math.floor(Math.random() * 4) + 8).toString(16) +\n    getRandomHex(3) +\n    '-' +\n    getRandomHex(12)\n  );\n}\n\nexport { generateUUID };\n","import { IVGSCollectForm } from './types/Form';\n\nlet form = {} as IVGSCollectForm;\n\nconst setFormInstance = (newVal: IVGSCollectForm) => {\n  form = newVal;\n};\n\nconst getFormInstance = () => form;\n\nexport { setFormInstance, getFormInstance };\n","const FIELD_EVENTS = {\n  onFocus: 'focus',\n  onBlur: 'blur',\n  onUpdate: 'update',\n  onDelete: 'delete',\n  onKeyUp: 'keyup',\n  onKeyDown: 'keydown',\n  onKeyPress: 'keypress'\n};\n\nconst DEFAULT_CONFIG = {\n  TEXT: {\n    type: 'text',\n    placeholder: 'Cardholder Name'\n  },\n  CARDHOLDER: {\n    type: 'text',\n    placeholder: 'Cardholder',\n    name: 'cardholder'\n  },\n  CARD_NUMBER: {\n    type: 'card-number',\n    name: 'pan',\n    validations: ['required', 'validCardNumber'],\n    placeholder: 'Credit Card Number'\n  },\n  CARD_EXPIRATION_DATE: {\n    type: 'card-expiration-date',\n    name: 'exp-date',\n    placeholder: 'Card Expiration Date',\n    yearLength: 2,\n    validations: ['required', 'validCardExpirationDate']\n  },\n  CARD_SECURITY_CODE: {\n    name: 'cvc',\n    type: 'card-security-code',\n    placeholder: 'CVC/CVV',\n    validations: ['required', 'validCardSecurityCode']\n  },\n  PASSWORD: {\n    type: 'password',\n    placeholder: 'Enter password'\n  },\n  SSN: {\n    type: 'ssn',\n    placeholder: 'SSN'\n  },\n  ZIP_CODE: {\n    type: 'zip-code',\n    placeholder: 'Zip Code'\n  },\n  TEXTAREA: {\n    type: 'textarea',\n    placeholder: 'Comment'\n  },\n  NUMBER: {\n    type: 'number',\n    placeholder: 'Number'\n  },\n  FILE: {\n    type: 'file',\n    placeholder: ''\n  },\n  DATE: {\n    type: 'date',\n    placeholder: ''\n  }\n};\n\nexport { DEFAULT_CONFIG, FIELD_EVENTS };\n","import React, { createContext, useContext, useReducer, useMemo, Dispatch } from 'react';\n\ntype GlobalFormContext = { formCreated: boolean } | undefined;\n\nexport const initialFormState = { formCreated: false };\n\nexport const GlobalFormContext = createContext<GlobalFormContext>(initialFormState);\nexport const DispatchFormContext = createContext({} as Dispatch<any>);\n\ntype Action = { type: 'FORM_MOUNTED' } | { type: 'FORM_UNMOUNTED' };\n\nconst formReducer = (state: GlobalFormContext, action: Action) => {\n  switch (action.type) {\n    case 'FORM_MOUNTED':\n      return { ...state, formCreated: true };\n    case 'FORM_UNMOUNTED':\n      return { ...state, formCreated: false };\n    default:\n      return state;\n  }\n};\n\nexport const FormStateProvider = ({ children }: any) => {\n  const [formState, dispatchFormState] = useReducer(formReducer, initialFormState);\n\n  const memoFormState = useMemo(() => formState, [formState]);\n\n  return (\n    <div>\n      <GlobalFormContext.Provider value={memoFormState}>\n        <DispatchFormContext.Provider value={dispatchFormState}>{children}</DispatchFormContext.Provider>\n      </GlobalFormContext.Provider>\n    </div>\n  );\n};\n\nexport const useVGSCollectFormState = () => [useContext(GlobalFormContext)];\n","import React from 'react';\nimport { useEffect } from 'react';\nimport { generateUUID } from './utils';\nimport { getFormInstance } from './state';\nimport { DEFAULT_CONFIG, FIELD_EVENTS } from './constants';\nimport { useVGSCollectFormState } from './formStateProvider';\nimport {\n  IVGSCollectTextField,\n  IVGSCollectCardholderField,\n  IVGSCollectCardNumberField,\n  IVGSCollectCardExpirationField,\n  IVGSCollectCardCVCField,\n  IVGSCollectPasswordField,\n  IVGSCollectSSNField,\n  IVGSCollectNumberField,\n  IVGSCollectZipCodeField,\n  IVGSCollectTextareaField,\n  IVGSCollectFileField,\n  IVGSCollectDateField,\n  IVGSCollectForm,\n  VGSCollectStateParams\n} from './types/Form';\n\nimport { VGSCollectKeyboardEventData, VGSCollectFocusEventData } from './types/Field';\n\ntype GeneralFieldProps = {\n  className: string;\n  onFocus: (info: VGSCollectFocusEventData) => void;\n  onBlur: (info: VGSCollectFocusEventData) => void;\n  onUpdate: (state: VGSCollectStateParams) => void;\n  onDelete: () => void;\n  onKeyUp: (info: VGSCollectKeyboardEventData) => void;\n  onKeyDown: (info: VGSCollectKeyboardEventData) => void;\n  onKeyPress: (info: VGSCollectKeyboardEventData) => void;\n};\n\nfunction RenderField(props: any) {\n  const { className, onFocus, onBlur, onUpdate, onDelete, onKeyPress, onKeyUp, onKeyDown, style, ...fieldPropsRaw } =\n    props;\n\n  const fieldProps = {\n    ...fieldPropsRaw,\n    ...(style && { css: style }) //Add css, if style exists\n  };\n\n  if (!props.name) {\n    throw new Error(`@vgs/collect-js-react: name attribute for ${props.type} is required.`);\n  }\n\n  const [fieldId] = React.useState(() => `vgs-${generateUUID()}`);\n  const events = {\n    onFocus,\n    onBlur,\n    onUpdate,\n    onKeyUp,\n    onKeyDown,\n    onKeyPress,\n    onDelete\n  };\n  const [formState] = useVGSCollectFormState();\n  const eventsToListen = Object.keys(events).filter((e) => events[e] !== undefined);\n\n  useEffect(() => {\n    const collectFormInstance = getFormInstance() as IVGSCollectForm;\n\n    if (Object.keys(collectFormInstance).length !== 0 && formState?.formCreated === true) {\n      const secureField = collectFormInstance.field(`#${fieldId}`, fieldProps);\n\n      eventsToListen.forEach((event) => {\n        secureField.on(FIELD_EVENTS[event], (info) => {\n          events[event](info);\n        });\n      });\n\n      return () => {\n        try {\n          secureField?.delete?.();\n        } catch (error) {\n          if (\n            !(error instanceof Error) ||\n            (error instanceof Error && error.message !== `The field '${fieldProps?.name}' is already deleted`)\n          ) {\n            throw error;\n          }\n        }\n        eventsToListen.forEach((event) => {\n          secureField.off(FIELD_EVENTS[event], (info) => {\n            events[event](info);\n          });\n        });\n      };\n    }\n  }, [formState?.formCreated]);\n\n  return (\n    <div\n      className={`vgs-collect-iframe-wr ${className ? className : ''}`}\n      id={fieldId}\n      data-testid='vgs-collect-field-wrapper'\n    />\n  );\n}\n\nconst TextField = React.memo((props: Partial<IVGSCollectTextField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.TEXT\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst CardholderField = React.memo((props: Partial<IVGSCollectCardholderField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.CARDHOLDER\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst CardNumberField = React.memo((props: Partial<IVGSCollectCardNumberField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.CARD_NUMBER\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst CardExpirationDateField = React.memo((props: Partial<IVGSCollectCardExpirationField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.CARD_EXPIRATION_DATE\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst CardSecurityCodeField = React.memo((props: Partial<IVGSCollectCardCVCField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.CARD_SECURITY_CODE\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst PasswordField = React.memo((props: Partial<IVGSCollectPasswordField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.PASSWORD\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst SSNField = React.memo((props: Partial<IVGSCollectSSNField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.SSN\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst ZipCodeField = React.memo((props: Partial<IVGSCollectZipCodeField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.ZIP_CODE\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst TextareaField = React.memo((props: Partial<IVGSCollectTextareaField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.TEXTAREA\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst NumberField = React.memo((props: Partial<IVGSCollectNumberField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.NUMBER\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst DateField = React.memo((props: Partial<IVGSCollectDateField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.DATE\n        },\n        props\n      )}\n    />\n  );\n});\n\nconst FileField = React.memo((props: Partial<IVGSCollectFileField & GeneralFieldProps>) => {\n  return (\n    <RenderField\n      {...Object.assign(\n        {\n          ...DEFAULT_CONFIG.FILE\n        },\n        props\n      )}\n    />\n  );\n});\n\nexport {\n  TextField,\n  CardholderField,\n  CardNumberField,\n  CardExpirationDateField,\n  CardSecurityCodeField,\n  PasswordField,\n  SSNField,\n  ZipCodeField,\n  TextareaField,\n  NumberField,\n  FileField,\n  DateField,\n  getFormInstance\n};\n","import React, { createContext, useContext, useReducer, useMemo, Dispatch } from 'react';\nimport { HttpStatusCode } from 'types/HttpStatusCode';\nimport { VGSCollectFormState } from './types/Form';\n\ntype GlobalStateContext = VGSCollectFormState | undefined;\ntype GlobalSubmitContext = { status: HttpStatusCode; data: any } | undefined;\ntype GlobalFormInstanceContext = any;\n\nexport const initialState = undefined;\n\nexport const GlobalSubmitContext = createContext<GlobalSubmitContext>(initialState);\nexport const DispatchSubmitContext = createContext({} as Dispatch<any>);\nexport const GlobalStateContext = createContext<GlobalStateContext>(initialState);\nexport const DispatchStateContext = createContext({} as Dispatch<any>);\nexport const GlobalFormInstanceContext = createContext<GlobalFormInstanceContext>(false);\nexport const DispatchFormInstanceContext = createContext({} as Dispatch<any>);\n\nexport const GlobalStateProvider = ({ children }: any) => {\n  const [state, dispatch] = useReducer((_state: GlobalStateContext, newValue: any) => {\n    return newValue ? { ...newValue } : initialState;\n  }, initialState);\n  const [response, dispatchSubmit] = useReducer((_state: GlobalSubmitContext, newValue: any) => {\n    return newValue ? { ...newValue } : initialState;\n  }, initialState);\n\n  const [formInstance, dispatchFormInstance] = useReducer((_form: any, formInstance: any) => {\n    return formInstance ? formInstance : null;\n  }, null);\n\n  const memoState = useMemo(() => state, [state]);\n\n  const memoResponse = useMemo(() => response, [response]);\n\n  const memoFormInstance = useMemo(() => formInstance, [formInstance]);\n\n  return (\n    <div>\n      <GlobalStateContext.Provider value={memoState}>\n        <DispatchStateContext.Provider value={dispatch}>\n          <GlobalSubmitContext.Provider value={memoResponse}>\n            <DispatchSubmitContext.Provider value={dispatchSubmit}>\n              <GlobalFormInstanceContext.Provider value={memoFormInstance}>\n                <DispatchFormInstanceContext.Provider value={dispatchFormInstance}>\n                  {children}\n                </DispatchFormInstanceContext.Provider>\n              </GlobalFormInstanceContext.Provider>\n            </DispatchSubmitContext.Provider>\n          </GlobalSubmitContext.Provider>\n        </DispatchStateContext.Provider>\n      </GlobalStateContext.Provider>\n    </div>\n  );\n};\n\nexport const useVGSCollectState = () => [useContext(GlobalStateContext)];\n\nexport const useVGSCollectResponse = () => [useContext(GlobalSubmitContext)];\n\nexport const useVGSCollectFormInstance = () => [useContext(GlobalFormInstanceContext)];\n\nexport const VGSCollectProvider = ({ children }: any) => {\n  return <GlobalStateProvider>{children}</GlobalStateProvider>;\n};\n","import {\n  CardExpirationDateField,\n  CardNumberField,\n  CardholderField,\n  CardSecurityCodeField,\n  DateField,\n  FileField,\n  NumberField,\n  PasswordField,\n  SSNField,\n  TextField,\n  TextareaField,\n  ZipCodeField\n} from './Fields';\nimport { DispatchStateContext, DispatchSubmitContext, DispatchFormInstanceContext } from './provider';\nimport { FormStateProvider, DispatchFormContext } from './formStateProvider';\nimport { ICollectFormProps, IVGSCollectForm, VGSCollectFormState } from './types/Form';\nimport React, { useContext, useEffect } from 'react';\nimport { getFormInstance, setFormInstance } from './state';\n\nimport { HttpStatusCode } from './types/HttpStatusCode';\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction CollectForm(props: ICollectFormProps) {\n  const {\n    vaultId,\n    environment = 'sandbox',\n    action = '/',\n    cname,\n    routeId,\n    submitParameters,\n    tokenizationAPI = false,\n    onCustomSubmit,\n    onUpdateCallback,\n    onSubmitCallback,\n    onErrorCallback,\n    children\n  } = props;\n\n  if (!vaultId) {\n    throw new Error(`@vgs/collect-js-react: vaultId is required.`);\n  }\n\n  const dispatchFormStateUpdate = useContext(DispatchStateContext);\n  const dispatchResponseUpdate = useContext(DispatchSubmitContext);\n  const dispatchFormСontext = useContext(DispatchFormContext);\n  const dispatchFormInstanceContextUpdate = useContext(DispatchFormInstanceContext);\n\n  const isProviderExists =\n    typeof dispatchFormStateUpdate === 'function' && typeof dispatchResponseUpdate === 'function';\n\n  useEffect(() => {\n    if (isBrowser && window.VGSCollect && Object.keys(getFormInstance()).length === 0) {\n      const form: IVGSCollectForm = window.VGSCollect.create(vaultId, environment, (state: VGSCollectFormState) => {\n        if (onUpdateCallback) {\n          onUpdateCallback(state);\n        }\n        isProviderExists && dispatchFormStateUpdate(state);\n      });\n\n      dispatchFormСontext({ type: 'FORM_MOUNTED' });\n\n      if (cname) {\n        form.useCname(cname);\n      }\n\n      if (routeId) {\n        form.setRouteId(routeId);\n      }\n\n      setFormInstance(form);\n      dispatchFormInstanceContextUpdate(getFormInstance());\n    }\n\n    return () => {\n      const activeForm = getFormInstance();\n      if (Object.keys(activeForm).length !== 0) {\n        activeForm.unmount();\n        setFormInstance({} as IVGSCollectForm);\n      }\n      if (isProviderExists) {\n        dispatchFormStateUpdate(null);\n        dispatchResponseUpdate(null);\n      }\n      dispatchFormСontext({ type: 'FORM_UNMOUNTED' });\n    };\n  }, []);\n\n  const submitHandler = async (e: React.SyntheticEvent) => {\n    e.preventDefault();\n\n    const form: IVGSCollectForm = getFormInstance();\n\n    if (!form) {\n      throw new Error('@vgs/collect-js-react: VGS Collect form not found.');\n    }\n    if (submitParameters?.createCard) {\n      const authToken =\n        typeof submitParameters?.createCard?.auth === 'function'\n          ? await submitParameters.createCard.auth()\n          : submitParameters.createCard.auth;\n      if (typeof authToken === 'string') {\n        submitParameters.createCard.auth = authToken;\n      } else {\n        throw new Error('Access token should be a string');\n      }\n\n      form.createCard(\n        submitParameters.createCard,\n        (status: HttpStatusCode | null, resp: any) => {\n          if (onSubmitCallback) {\n            onSubmitCallback(status, resp);\n          }\n        },\n        (errors: any) => {\n          if (onErrorCallback) {\n            onErrorCallback(errors);\n          }\n        }\n      );\n    } else if (tokenizationAPI) {\n      form.tokenize(\n        (status: HttpStatusCode | null, resp: any) => {\n          if (onSubmitCallback) {\n            onSubmitCallback(status, resp);\n          }\n        },\n        (errors: any) => {\n          if (onErrorCallback) {\n            onErrorCallback(errors);\n          }\n        }\n      );\n    } else {\n      form.submit(\n        action,\n        submitParameters ? submitParameters : '',\n        (status: HttpStatusCode | null, data: any) => {\n          if (onSubmitCallback) {\n            onSubmitCallback(status, data);\n          }\n          dispatchResponseUpdate({\n            status,\n            data\n          });\n        },\n        (errors: any) => {\n          if (onErrorCallback) {\n            onErrorCallback(errors);\n          }\n        }\n      );\n    }\n  };\n\n  return <form onSubmit={(event) => (onCustomSubmit || submitHandler)(event)}>{children}</form>;\n}\n\nexport function VGSCollectForm(props: ICollectFormProps) {\n  return (\n    <FormStateProvider>\n      <CollectForm {...props} />\n    </FormStateProvider>\n  );\n}\n\nVGSCollectForm.TextField = TextField;\nVGSCollectForm.CardholderField = CardholderField;\nVGSCollectForm.CardNumberField = CardNumberField;\nVGSCollectForm.CardExpirationDateField = CardExpirationDateField;\nVGSCollectForm.CardSecurityCodeField = CardSecurityCodeField;\nVGSCollectForm.PasswordField = PasswordField;\nVGSCollectForm.SSNField = SSNField;\nVGSCollectForm.ZipCodeField = ZipCodeField;\nVGSCollectForm.TextareaField = TextareaField;\nVGSCollectForm.NumberField = NumberField;\nVGSCollectForm.FileField = FileField;\nVGSCollectForm.DateField = DateField;\n","import {\n  CardExpirationDateField,\n  CardNumberField,\n  CardholderField,\n  CardSecurityCodeField,\n  DateField,\n  FileField,\n  NumberField,\n  PasswordField,\n  SSNField,\n  TextField,\n  TextareaField,\n  ZipCodeField\n} from './Fields';\nimport { DispatchStateContext, DispatchSubmitContext, DispatchFormInstanceContext } from './provider';\nimport { FormStateProvider, DispatchFormContext } from './formStateProvider';\nimport { ICollectSessionProps, ICollectSessionSubmit, IVGSCollectForm, VGSCollectFormState } from './types/Form';\nimport React, { useContext, useEffect } from 'react';\nimport { getFormInstance, setFormInstance } from './state';\n\nimport { HttpStatusCode } from './types/HttpStatusCode';\n\nconst isBrowser = typeof window !== 'undefined';\n\nconst DEFAULT_PROXY_ACTION = '/';\n\nconst resolveCMPSubmitParameters = async (submitParameters?: Record<string, any>) => {\n  const cmpSubmitParameters = {\n    ...(submitParameters || {})\n  };\n\n  if (typeof cmpSubmitParameters.auth !== 'undefined') {\n    const authToken =\n      typeof cmpSubmitParameters.auth === 'function' ? await cmpSubmitParameters.auth() : cmpSubmitParameters.auth;\n\n    if (typeof authToken === 'string') {\n      cmpSubmitParameters.auth = authToken;\n    } else {\n      throw new Error('Access token should be a string');\n    }\n  }\n\n  return cmpSubmitParameters;\n};\n\nfunction CollectSession(props: ICollectSessionProps) {\n  const {\n    vaultId,\n    env,\n    environment = 'sandbox',\n    cname,\n    routeId,\n    formId,\n    configuration,\n    authHandler,\n    submit,\n    onCustomSubmit,\n    stateCallback,\n    onUpdateCallback,\n    onSubmitCallback,\n    onErrorCallback,\n    onGetCardAttributesSuccess,\n    onGetCardAttributesError,\n    children\n  } = props;\n\n  if (!vaultId) {\n    throw new Error(`@vgs/collect-js-react: vaultId is required.`);\n  }\n\n  const dispatchFormStateUpdate = useContext(DispatchStateContext);\n  const dispatchResponseUpdate = useContext(DispatchSubmitContext);\n  const dispatchFormContext = useContext(DispatchFormContext);\n  const dispatchFormInstanceContextUpdate = useContext(DispatchFormInstanceContext);\n\n  const isProviderExists =\n    typeof dispatchFormStateUpdate === 'function' && typeof dispatchResponseUpdate === 'function';\n\n  useEffect(() => {\n    let isMounted = true;\n    let sessionForm: IVGSCollectForm | null = null;\n\n    if (isBrowser && window.VGSCollect && Object.keys(getFormInstance()).length === 0) {\n      void window.VGSCollect.session({\n        vaultId,\n        env: env || environment,\n        formId,\n        configuration,\n        authHandler,\n        routeId,\n        onErrorCallback,\n        stateCallback: (state: VGSCollectFormState) => {\n          if (stateCallback) {\n            stateCallback(state);\n          }\n          if (onUpdateCallback) {\n            onUpdateCallback(state);\n          }\n          isProviderExists && dispatchFormStateUpdate(state);\n        }\n      })\n        .then((form: IVGSCollectForm) => {\n          if (!isMounted) {\n            form.unmount();\n            return;\n          }\n\n          sessionForm = form;\n\n          if (cname) {\n            form.useCname(cname);\n          }\n\n          if (onGetCardAttributesSuccess) {\n            form.on('getCardAttributesSuccess', onGetCardAttributesSuccess);\n          }\n\n          if (onGetCardAttributesError) {\n            form.on('getCardAttributesError', onGetCardAttributesError);\n          }\n\n          setFormInstance(form);\n          dispatchFormInstanceContextUpdate(getFormInstance());\n          dispatchFormContext({ type: 'FORM_MOUNTED' });\n        })\n        .catch((error: any) => {\n          if (onErrorCallback) {\n            onErrorCallback(error);\n          }\n        });\n    }\n\n    return () => {\n      isMounted = false;\n\n      const activeForm = sessionForm || getFormInstance();\n\n      if (activeForm && Object.keys(activeForm).length !== 0) {\n        if (onGetCardAttributesSuccess) {\n          activeForm.off('getCardAttributesSuccess', onGetCardAttributesSuccess);\n        }\n\n        if (onGetCardAttributesError) {\n          activeForm.off('getCardAttributesError', onGetCardAttributesError);\n        }\n\n        activeForm.unmount();\n        setFormInstance({} as IVGSCollectForm);\n      }\n\n      if (isProviderExists) {\n        dispatchFormStateUpdate(null);\n        dispatchResponseUpdate(null);\n      }\n\n      dispatchFormContext({ type: 'FORM_UNMOUNTED' });\n    };\n  }, []);\n\n  const submitHandler = async (e: React.SyntheticEvent) => {\n    e.preventDefault();\n\n    const form: IVGSCollectForm = getFormInstance();\n    const submitConfiguration: ICollectSessionSubmit = submit || { api: 'proxy', action: DEFAULT_PROXY_ACTION };\n\n    if (!form) {\n      throw new Error('@vgs/collect-js-react: VGS Collect form not found.');\n    }\n\n    if (submitConfiguration.api === 'cmp') {\n      if (submitConfiguration.operation === 'createCard') {\n        const cmpSubmitParameters = await resolveCMPSubmitParameters(submitConfiguration.submitParameters);\n\n        form.createCard(\n          cmpSubmitParameters,\n          (status: HttpStatusCode | null, resp: any) => {\n            if (onSubmitCallback) {\n              onSubmitCallback(status, resp);\n            }\n          },\n          (errors: any) => {\n            if (onErrorCallback) {\n              onErrorCallback(errors);\n            }\n          }\n        );\n      } else {\n        form.updateCard(\n          submitConfiguration.params,\n          (status: HttpStatusCode | null, resp: any) => {\n            if (onSubmitCallback) {\n              onSubmitCallback(status, resp);\n            }\n          },\n          (errors: any) => {\n            if (onErrorCallback) {\n              onErrorCallback(errors);\n            }\n          }\n        );\n      }\n    } else if (submitConfiguration.api === 'vault') {\n      form.createAliases(\n        submitConfiguration.submitParameters || {},\n        (status: HttpStatusCode | null, resp: any) => {\n          if (onSubmitCallback) {\n            onSubmitCallback(status, resp);\n          }\n        },\n        (errors: any) => {\n          if (onErrorCallback) {\n            onErrorCallback(errors);\n          }\n        }\n      );\n    } else if (submitConfiguration.api === 'tokenization') {\n      if (submitConfiguration.routeId) {\n        form.setRouteId(submitConfiguration.routeId);\n      }\n\n      form.tokenize(\n        (status: HttpStatusCode | null, resp: any) => {\n          if (onSubmitCallback) {\n            onSubmitCallback(status, resp);\n          }\n        },\n        (errors: any) => {\n          if (onErrorCallback) {\n            onErrorCallback(errors);\n          }\n        }\n      );\n    } else if (submitConfiguration.api === 'proxy') {\n      if (submitConfiguration.routeId) {\n        form.setRouteId(submitConfiguration.routeId);\n      }\n\n      let isProxySubmitHandled = false;\n\n      const handleProxySuccess = (status: HttpStatusCode | null, data: any) => {\n        if (isProxySubmitHandled) {\n          return;\n        }\n\n        isProxySubmitHandled = true;\n\n        if (onSubmitCallback) {\n          onSubmitCallback(status, data);\n        }\n        dispatchResponseUpdate({\n          status,\n          data\n        });\n      };\n\n      const handleProxyError = (errors: any) => {\n        if (isProxySubmitHandled) {\n          return;\n        }\n\n        isProxySubmitHandled = true;\n\n        if (onErrorCallback) {\n          onErrorCallback(errors);\n        }\n      };\n\n      form.submit(\n        submitConfiguration.action,\n        submitConfiguration.submitParameters || {},\n        handleProxySuccess,\n        handleProxyError\n      );\n    }\n  };\n\n  return <form onSubmit={(event) => (onCustomSubmit || submitHandler)(event)}>{children}</form>;\n}\n\nexport function VGSCollectSession(props: ICollectSessionProps) {\n  return (\n    <FormStateProvider>\n      <CollectSession {...props} />\n    </FormStateProvider>\n  );\n}\n\nVGSCollectSession.TextField = TextField;\nVGSCollectSession.CardholderField = CardholderField;\nVGSCollectSession.CardNumberField = CardNumberField;\nVGSCollectSession.CardExpirationDateField = CardExpirationDateField;\nVGSCollectSession.CardSecurityCodeField = CardSecurityCodeField;\nVGSCollectSession.PasswordField = PasswordField;\nVGSCollectSession.SSNField = SSNField;\nVGSCollectSession.ZipCodeField = ZipCodeField;\nVGSCollectSession.TextareaField = TextareaField;\nVGSCollectSession.NumberField = NumberField;\nVGSCollectSession.FileField = FileField;\nVGSCollectSession.DateField = DateField;\n"],"mappings":"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"}