{"version":3,"file":"cash-app-pay.es.mjs","sources":["../../../src/components/cash-app-pay/cash-app-pay.tsx"],"sourcesContent":["// Dependencies\nimport * as React from 'react';\nimport type * as Square from '@square/web-sdk';\n\n// Internals\nimport { useForm } from '~/contexts/form';\nimport type { CashAppPayProps } from './cash-app-pay.types';\n\nfunction CashAppPay({\n  callbacks,\n  id = 'rswps-cash-app-pay',\n  redirectURL,\n  referenceId,\n  shape = 'round',\n  size = 'medium',\n  values = 'dark',\n  width = 'static',\n  ...props\n}: CashAppPayProps) {\n  const [cashApp, setCashApp] = React.useState<Square.CashAppPay>();\n  const { createPaymentRequest, payments } = useForm();\n\n  const paymentRequestOptions: Square.CashAppPaymentRequestOptions = React.useMemo(\n    () => ({\n      redirectURL: redirectURL || window.location.href,\n      referenceId,\n    }),\n    [redirectURL, referenceId]\n  );\n\n  const options: Square.CashAppPayButtonOptions = React.useMemo(() => {\n    const baseOptions = {\n      shape,\n      size,\n      values,\n      width,\n    };\n\n    // if a value from options is undefined delete it from the options object\n    return Object.keys(baseOptions).reduce((acc: Record<string, unknown>, key) => {\n      if (baseOptions[key as keyof typeof baseOptions] !== undefined) {\n        acc[key as string] = baseOptions[key as keyof typeof baseOptions];\n      }\n\n      return acc;\n    }, {});\n  }, [shape, size, values, width]);\n\n  React.useEffect(() => {\n    if (!createPaymentRequest) {\n      throw new Error('`createPaymentRequest()` is required when using digital wallets');\n    }\n\n    const abortController = new AbortController();\n    const { signal } = abortController;\n    let cashApp: Square.CashAppPay | undefined;\n\n    const start = async (signal: AbortSignal) => {\n      const paymentRequest = payments?.paymentRequest(createPaymentRequest);\n\n      if (!paymentRequest) {\n        throw new Error('`paymentRequest` is required when using digital wallets');\n      }\n\n      try {\n        cashApp = await payments?.cashAppPay(paymentRequest, paymentRequestOptions).then((res) => {\n          if (signal?.aborted) {\n            return;\n          }\n\n          setCashApp(res);\n\n          return res;\n        });\n\n        await cashApp?.attach(`#${id}`, options);\n      } catch (error) {\n        console.error('Initializing Cash App Pay failed', error);\n      }\n    };\n\n    start(signal);\n\n    return () => {\n      abortController.abort();\n      cashApp?.destroy();\n    };\n  }, [createPaymentRequest, options, paymentRequestOptions, payments]);\n\n  if (callbacks) {\n    for (const callback of Object.keys(callbacks)) {\n      cashApp?.addEventListener(\n        callback.toLowerCase() as 'ontokenization',\n        (callbacks as Record<string, (event: Square.SqEvent<Square.CashAppPayEventData>) => void>)[callback]\n      );\n    }\n  }\n\n  return <div {...props} id={id} />;\n}\n\nexport default CashAppPay;\nexport * from './cash-app-pay.types';\n"],"names":["CashAppPay","callbacks","id","redirectURL","referenceId","shape","size","values","width","props","cashApp","setCashApp","React","createPaymentRequest","payments","useForm","paymentRequestOptions","options","baseOptions","acc","key","abortController","signal","paymentRequest","res","error","callback"],"mappings":";;AAQA,SAASA,EAAW;AAAA,EAClB,WAAAC;AAAA,EACA,IAAAC,IAAK;AAAA,EACL,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,QAAAC,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,KACLC;AACL,GAAoB;AAClB,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAM,SAA4B,GAC1D,EAAE,sBAAAC,GAAsB,UAAAC,EAAS,IAAIC,EAAQ,GAE7CC,IAA6DJ,EAAM;AAAA,IACvE,OAAO;AAAA,MACL,aAAaT,KAAe,OAAO,SAAS;AAAA,MAC5C,aAAAC;AAAA,IAAA;AAAA,IAEF,CAACD,GAAaC,CAAW;AAAA,EAAA,GAGrBa,IAA0CL,EAAM,QAAQ,MAAM;AAClE,UAAMM,IAAc;AAAA,MAClB,OAAAb;AAAA,MACA,MAAAC;AAAA,MACA,QAAAC;AAAA,MACA,OAAAC;AAAA,IAAA;AAIF,WAAO,OAAO,KAAKU,CAAW,EAAE,OAAO,CAACC,GAA8BC,OAChEF,EAAYE,OAAqC,WACnDD,EAAIC,KAAiBF,EAAYE,KAG5BD,IACN,CAAE,CAAA;AAAA,KACJ,CAACd,GAAOC,GAAMC,GAAQC,CAAK,CAAC;AA2C/B,MAzCAI,EAAM,UAAU,MAAM;AACpB,QAAI,CAACC;AACG,YAAA,IAAI,MAAM,iEAAiE;AAG7E,UAAAQ,IAAkB,IAAI,mBACtB,EAAE,QAAAC,EAAW,IAAAD;AACfX,QAAAA;AA0BJ,YAxBc,OAAOY,MAAwB;AACrC,YAAAC,IAAiBT,GAAU,eAAeD,CAAoB;AAEpE,UAAI,CAACU;AACG,cAAA,IAAI,MAAM,yDAAyD;AAGvE,UAAA;AACFb,QAAAA,IAAU,MAAMI,GAAU,WAAWS,GAAgBP,CAAqB,EAAE,KAAK,CAACQ,MAAQ;AACxF,cAAIF,CAAAA,GAAQ;AAIZ,mBAAAX,EAAWa,CAAG,GAEPA;AAAA,QAAA,CACR,GAED,MAAMd,GAAS,OAAO,IAAIR,KAAMe,CAAO;AAAA,eAChCQ;AACC,gBAAA,MAAM,oCAAoCA,CAAK;AAAA,MACzD;AAAA,IAAA,GAGIH,CAAM,GAEL,MAAM;AACX,MAAAD,EAAgB,MAAM,GACtBX,GAAS,QAAQ;AAAA,IAAA;AAAA,KAElB,CAACG,GAAsBI,GAASD,GAAuBF,CAAQ,CAAC,GAE/Db;AACF,eAAWyB,KAAY,OAAO,KAAKzB,CAAS;AACjC,MAAAS,GAAA;AAAA,QACPgB,EAAS,YAAY;AAAA,QACpBzB,EAA0FyB;AAAA,MAAA;AAKjG,SAAQ,gBAAAd,EAAA,cAAA,OAAA,EAAK,GAAGH,GAAO,IAAAP,EAAQ,CAAA;AACjC;"}