{"version":3,"sources":["jsdelivr-header.js","/npm/@vgs/collect-js-react@2.0.1/src/utils.ts","/npm/@vgs/collect-js-react@2.0.1/src/state.ts","/npm/@vgs/collect-js-react@2.0.1/src/constants.ts","/npm/@vgs/collect-js-react@2.0.1/src/formStateProvider.tsx","/npm/@vgs/collect-js-react@2.0.1/src/Fields.tsx","/npm/@vgs/collect-js-react@2.0.1/src/types/HttpStatusCode.ts","/npm/@vgs/collect-js-react@2.0.1/src/provider.tsx","/npm/@vgs/collect-js-react@2.0.1/src/Form.tsx"],"names":[],"mappings":"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","file":"/npm/@vgs/collect-js-react@2.0.1/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@vgs/collect-js-react@2.0.1/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","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    ></div>\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","enum HttpStatusCode {\n  CONTINUE = 100,\n  SWITCHING_PROTOCOLS = 101,\n  PROCESSING = 102,\n  OK = 200,\n  CREATED = 201,\n  ACCEPTED = 202,\n  NON_AUTHORITATIVE_INFORMATION = 203,\n  NO_CONTENT = 204,\n  RESET_CONTENT = 205,\n  PARTIAL_CONTENT = 206,\n  MULTI_STATUS = 207,\n  ALREADY_REPORTED = 208,\n  IM_USED = 226,\n  MULTIPLE_CHOICES = 300,\n  MOVED_PERMANENTLY = 301,\n  FOUND = 302,\n  SEE_OTHER = 303,\n  NOT_MODIFIED = 304,\n  USE_PROXY = 305,\n  SWITCH_PROXY = 306,\n  TEMPORARY_REDIRECT = 307,\n  PERMANENT_REDIRECT = 308,\n  BAD_REQUEST = 400,\n  UNAUTHORIZED = 401,\n  PAYMENT_REQUIRED = 402,\n  FORBIDDEN = 403,\n  NOT_FOUND = 404,\n  METHOD_NOT_ALLOWED = 405,\n  NOT_ACCEPTABLE = 406,\n  PROXY_AUTHENTICATION_REQUIRED = 407,\n  REQUEST_TIMEOUT = 408,\n  CONFLICT = 409,\n  GONE = 410,\n  LENGTH_REQUIRED = 411,\n  PRECONDITION_FAILED = 412,\n  PAYLOAD_TOO_LARGE = 413,\n  URI_TOO_LONG = 414,\n  UNSUPPORTED_MEDIA_TYPE = 415,\n  RANGE_NOT_SATISFIABLE = 416,\n  EXPECTATION_FAILED = 417,\n  I_AM_A_TEAPOT = 418,\n  MISDIRECTED_REQUEST = 421,\n  UNPROCESSABLE_ENTITY = 422,\n  LOCKED = 423,\n  FAILED_DEPENDENCY = 424,\n  UPGRADE_REQUIRED = 426,\n  PRECONDITION_REQUIRED = 428,\n  TOO_MANY_REQUESTS = 429,\n  REQUEST_HEADER_FIELDS_TOO_LARGE = 431,\n  UNAVAILABLE_FOR_LEGAL_REASONS = 451,\n  INTERNAL_SERVER_ERROR = 500,\n  NOT_IMPLEMENTED = 501,\n  BAD_GATEWAY = 502,\n  SERVICE_UNAVAILABLE = 503,\n  GATEWAY_TIMEOUT = 504,\n  HTTP_VERSION_NOT_SUPPORTED = 505,\n  VARIANT_ALSO_NEGOTIATES = 506,\n  INSUFFICIENT_STORAGE = 507,\n  LOOP_DETECTED = 508,\n  NOT_EXTENDED = 510,\n  NETWORK_AUTHENTICATION_REQUIRED = 511,\n  NETWORK_ERROR = 'Network Error'\n}\n\nexport { HttpStatusCode };\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"]}