@daimo/pay 1.19.10 → 1.19.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/package.json +2 -2
  2. package/build/index.d.ts +0 -619
  3. package/build/package.json.js +0 -118
  4. package/build/package.json.js.map +0 -1
  5. package/build/src/assets/MobileWithLogos.js +0 -329
  6. package/build/src/assets/MobileWithLogos.js.map +0 -1
  7. package/build/src/assets/ScanIconWithLogos.js +0 -243
  8. package/build/src/assets/ScanIconWithLogos.js.map +0 -1
  9. package/build/src/assets/browsers.js +0 -969
  10. package/build/src/assets/browsers.js.map +0 -1
  11. package/build/src/assets/chains.js +0 -683
  12. package/build/src/assets/chains.js.map +0 -1
  13. package/build/src/assets/icons.js +0 -273
  14. package/build/src/assets/icons.js.map +0 -1
  15. package/build/src/assets/logos.js +0 -1694
  16. package/build/src/assets/logos.js.map +0 -1
  17. package/build/src/assets/wave.js +0 -46
  18. package/build/src/assets/wave.js.map +0 -1
  19. package/build/src/components/Common/Alert/index.js +0 -13
  20. package/build/src/components/Common/Alert/index.js.map +0 -1
  21. package/build/src/components/Common/Alert/styles.js +0 -55
  22. package/build/src/components/Common/Alert/styles.js.map +0 -1
  23. package/build/src/components/Common/AmountInput/AmountInputField.js +0 -62
  24. package/build/src/components/Common/AmountInput/AmountInputField.js.map +0 -1
  25. package/build/src/components/Common/AmountInput/index.js +0 -166
  26. package/build/src/components/Common/AmountInput/index.js.map +0 -1
  27. package/build/src/components/Common/Avatar/index.js +0 -78
  28. package/build/src/components/Common/Avatar/index.js.map +0 -1
  29. package/build/src/components/Common/Avatar/styles.js +0 -54
  30. package/build/src/components/Common/Avatar/styles.js.map +0 -1
  31. package/build/src/components/Common/BrowserIcon/index.js +0 -29
  32. package/build/src/components/Common/BrowserIcon/index.js.map +0 -1
  33. package/build/src/components/Common/BrowserIcon/styles.js +0 -20
  34. package/build/src/components/Common/BrowserIcon/styles.js.map +0 -1
  35. package/build/src/components/Common/Button/index.js +0 -144
  36. package/build/src/components/Common/Button/index.js.map +0 -1
  37. package/build/src/components/Common/Button/styles.js +0 -287
  38. package/build/src/components/Common/Button/styles.js.map +0 -1
  39. package/build/src/components/Common/Chain/index.js +0 -141
  40. package/build/src/components/Common/Chain/index.js.map +0 -1
  41. package/build/src/components/Common/Chain/styles.js +0 -90
  42. package/build/src/components/Common/Chain/styles.js.map +0 -1
  43. package/build/src/components/Common/ChainSelectList/index.js +0 -250
  44. package/build/src/components/Common/ChainSelectList/index.js.map +0 -1
  45. package/build/src/components/Common/ChainSelectList/styles.js +0 -226
  46. package/build/src/components/Common/ChainSelectList/styles.js.map +0 -1
  47. package/build/src/components/Common/CircleTimer.js +0 -92
  48. package/build/src/components/Common/CircleTimer.js.map +0 -1
  49. package/build/src/components/Common/ConnectorList/index.js +0 -121
  50. package/build/src/components/Common/ConnectorList/index.js.map +0 -1
  51. package/build/src/components/Common/ConnectorList/styles.js +0 -344
  52. package/build/src/components/Common/ConnectorList/styles.js.map +0 -1
  53. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +0 -78
  54. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +0 -1
  55. package/build/src/components/Common/CustomQRCode/QRCode.js +0 -132
  56. package/build/src/components/Common/CustomQRCode/QRCode.js.map +0 -1
  57. package/build/src/components/Common/CustomQRCode/index.js +0 -89
  58. package/build/src/components/Common/CustomQRCode/index.js.map +0 -1
  59. package/build/src/components/Common/CustomQRCode/styles.js +0 -142
  60. package/build/src/components/Common/CustomQRCode/styles.js.map +0 -1
  61. package/build/src/components/Common/FitText/index.js +0 -34
  62. package/build/src/components/Common/FitText/index.js.map +0 -1
  63. package/build/src/components/Common/Modal/index.js +0 -558
  64. package/build/src/components/Common/Modal/index.js.map +0 -1
  65. package/build/src/components/Common/Modal/styles.js +0 -665
  66. package/build/src/components/Common/Modal/styles.js.map +0 -1
  67. package/build/src/components/Common/OptionsList/index.js +0 -145
  68. package/build/src/components/Common/OptionsList/index.js.map +0 -1
  69. package/build/src/components/Common/OptionsList/styles.js +0 -138
  70. package/build/src/components/Common/OptionsList/styles.js.map +0 -1
  71. package/build/src/components/Common/OrderHeader/index.js +0 -148
  72. package/build/src/components/Common/OrderHeader/index.js.map +0 -1
  73. package/build/src/components/Common/PaymentBreakdown/index.js +0 -70
  74. package/build/src/components/Common/PaymentBreakdown/index.js.map +0 -1
  75. package/build/src/components/Common/Portal/index.js +0 -30
  76. package/build/src/components/Common/Portal/index.js.map +0 -1
  77. package/build/src/components/Common/PoweredByFooter/index.js +0 -39
  78. package/build/src/components/Common/PoweredByFooter/index.js.map +0 -1
  79. package/build/src/components/Common/ScrollArea/index.js +0 -120
  80. package/build/src/components/Common/ScrollArea/index.js.map +0 -1
  81. package/build/src/components/Common/ScrollArea/styles.js +0 -169
  82. package/build/src/components/Common/ScrollArea/styles.js.map +0 -1
  83. package/build/src/components/Common/SelectAnotherMethodButton/index.js +0 -96
  84. package/build/src/components/Common/SelectAnotherMethodButton/index.js.map +0 -1
  85. package/build/src/components/Common/Spinner/index.js +0 -64
  86. package/build/src/components/Common/Spinner/index.js.map +0 -1
  87. package/build/src/components/Common/Spinner/styles.js +0 -22
  88. package/build/src/components/Common/Spinner/styles.js.map +0 -1
  89. package/build/src/components/Common/SwitchButton/index.js +0 -43
  90. package/build/src/components/Common/SwitchButton/index.js.map +0 -1
  91. package/build/src/components/Common/ThemedButton/index.js +0 -46
  92. package/build/src/components/Common/ThemedButton/index.js.map +0 -1
  93. package/build/src/components/Common/ThemedButton/styles.js +0 -152
  94. package/build/src/components/Common/ThemedButton/styles.js.map +0 -1
  95. package/build/src/components/Common/TokenChainLogo/index.js +0 -62
  96. package/build/src/components/Common/TokenChainLogo/index.js.map +0 -1
  97. package/build/src/components/Common/Tooltip/index.js +0 -129
  98. package/build/src/components/Common/Tooltip/index.js.map +0 -1
  99. package/build/src/components/Common/Tooltip/styles.js +0 -81
  100. package/build/src/components/Common/Tooltip/styles.js.map +0 -1
  101. package/build/src/components/Common/WalletChainLogo/index.js +0 -31
  102. package/build/src/components/Common/WalletChainLogo/index.js.map +0 -1
  103. package/build/src/components/DaimoPayButton/index.js +0 -196
  104. package/build/src/components/DaimoPayButton/index.js.map +0 -1
  105. package/build/src/components/DaimoPayButton/styles.js +0 -50
  106. package/build/src/components/DaimoPayButton/styles.js.map +0 -1
  107. package/build/src/components/DaimoPayModal/ConnectUsing.js +0 -70
  108. package/build/src/components/DaimoPayModal/ConnectUsing.js.map +0 -1
  109. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +0 -339
  110. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +0 -1
  111. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +0 -131
  112. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +0 -1
  113. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +0 -89
  114. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +0 -1
  115. package/build/src/components/DaimoPayModal/index.js +0 -605
  116. package/build/src/components/DaimoPayModal/index.js.map +0 -1
  117. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +0 -25
  118. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +0 -1
  119. package/build/src/components/Pages/About/graphics.js +0 -853
  120. package/build/src/components/Pages/About/graphics.js.map +0 -1
  121. package/build/src/components/Pages/About/index.js +0 -222
  122. package/build/src/components/Pages/About/index.js.map +0 -1
  123. package/build/src/components/Pages/About/styles.js +0 -140
  124. package/build/src/components/Pages/About/styles.js.map +0 -1
  125. package/build/src/components/Pages/Confirmation/index.js +0 -126
  126. package/build/src/components/Pages/Confirmation/index.js.map +0 -1
  127. package/build/src/components/Pages/Connectors/index.js +0 -26
  128. package/build/src/components/Pages/Connectors/index.js.map +0 -1
  129. package/build/src/components/Pages/Error/index.js +0 -57
  130. package/build/src/components/Pages/Error/index.js.map +0 -1
  131. package/build/src/components/Pages/MobileConnectors/index.js +0 -108
  132. package/build/src/components/Pages/MobileConnectors/index.js.map +0 -1
  133. package/build/src/components/Pages/MobileConnectors/styles.js +0 -64
  134. package/build/src/components/Pages/MobileConnectors/styles.js.map +0 -1
  135. package/build/src/components/Pages/Onboarding/index.js +0 -34
  136. package/build/src/components/Pages/Onboarding/index.js.map +0 -1
  137. package/build/src/components/Pages/Onboarding/styles.js +0 -229
  138. package/build/src/components/Pages/Onboarding/styles.js.map +0 -1
  139. package/build/src/components/Pages/PayWithToken/index.js +0 -157
  140. package/build/src/components/Pages/PayWithToken/index.js.map +0 -1
  141. package/build/src/components/Pages/SelectAmount/index.js +0 -24
  142. package/build/src/components/Pages/SelectAmount/index.js.map +0 -1
  143. package/build/src/components/Pages/SelectDepositAddressAmount/index.js +0 -79
  144. package/build/src/components/Pages/SelectDepositAddressAmount/index.js.map +0 -1
  145. package/build/src/components/Pages/SelectDepositAddressChain/index.js +0 -80
  146. package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +0 -1
  147. package/build/src/components/Pages/SelectExchange/index.js +0 -62
  148. package/build/src/components/Pages/SelectExchange/index.js.map +0 -1
  149. package/build/src/components/Pages/SelectExternalAmount/index.js +0 -80
  150. package/build/src/components/Pages/SelectExternalAmount/index.js.map +0 -1
  151. package/build/src/components/Pages/SelectMethod/index.js +0 -315
  152. package/build/src/components/Pages/SelectMethod/index.js.map +0 -1
  153. package/build/src/components/Pages/SelectToken/index.js +0 -99
  154. package/build/src/components/Pages/SelectToken/index.js.map +0 -1
  155. package/build/src/components/Pages/SelectWalletAmount/index.js +0 -71
  156. package/build/src/components/Pages/SelectWalletAmount/index.js.map +0 -1
  157. package/build/src/components/Pages/SelectWalletChain/index.js +0 -55
  158. package/build/src/components/Pages/SelectWalletChain/index.js.map +0 -1
  159. package/build/src/components/Pages/SelectZKP/index.js +0 -41
  160. package/build/src/components/Pages/SelectZKP/index.js.map +0 -1
  161. package/build/src/components/Pages/Solana/ConnectorSolana/index.js +0 -94
  162. package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +0 -1
  163. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +0 -92
  164. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +0 -1
  165. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js +0 -24
  166. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +0 -1
  167. package/build/src/components/Pages/SwitchNetworks/index.js +0 -45
  168. package/build/src/components/Pages/SwitchNetworks/index.js.map +0 -1
  169. package/build/src/components/Pages/WaitingDepositAddress/index.js +0 -586
  170. package/build/src/components/Pages/WaitingDepositAddress/index.js.map +0 -1
  171. package/build/src/components/Pages/WaitingExternal/index.js +0 -174
  172. package/build/src/components/Pages/WaitingExternal/index.js.map +0 -1
  173. package/build/src/components/Pages/WaitingWallet/index.js +0 -49
  174. package/build/src/components/Pages/WaitingWallet/index.js.map +0 -1
  175. package/build/src/components/Pages/Warning/index.js +0 -56
  176. package/build/src/components/Pages/Warning/index.js.map +0 -1
  177. package/build/src/components/Spinners/CircleSpinner/index.js +0 -104
  178. package/build/src/components/Spinners/CircleSpinner/index.js.map +0 -1
  179. package/build/src/components/Spinners/CircleSpinner/styles.js +0 -117
  180. package/build/src/components/Spinners/CircleSpinner/styles.js.map +0 -1
  181. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js +0 -29
  182. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js.map +0 -1
  183. package/build/src/components/Spinners/SquircleSpinner/index.js +0 -68
  184. package/build/src/components/Spinners/SquircleSpinner/index.js.map +0 -1
  185. package/build/src/components/Spinners/SquircleSpinner/styles.js +0 -66
  186. package/build/src/components/Spinners/SquircleSpinner/styles.js.map +0 -1
  187. package/build/src/components/Spinners/TokenLogoSpinner/index.js +0 -24
  188. package/build/src/components/Spinners/TokenLogoSpinner/index.js.map +0 -1
  189. package/build/src/components/Spinners/TokenLogoSpinner/styles.js +0 -40
  190. package/build/src/components/Spinners/TokenLogoSpinner/styles.js.map +0 -1
  191. package/build/src/components/Spinners/WalletPaymentSpinner/index.js +0 -37
  192. package/build/src/components/Spinners/WalletPaymentSpinner/index.js.map +0 -1
  193. package/build/src/components/Spinners/styles.js +0 -32
  194. package/build/src/components/Spinners/styles.js.map +0 -1
  195. package/build/src/constants/defaultTheme.js +0 -6
  196. package/build/src/constants/defaultTheme.js.map +0 -1
  197. package/build/src/constants/limits.js +0 -4
  198. package/build/src/constants/limits.js.map +0 -1
  199. package/build/src/constants/paymentOptions.js +0 -61
  200. package/build/src/constants/paymentOptions.js.map +0 -1
  201. package/build/src/constants/routes.js +0 -31
  202. package/build/src/constants/routes.js.map +0 -1
  203. package/build/src/constants/wallets.js +0 -7
  204. package/build/src/constants/wallets.js.map +0 -1
  205. package/build/src/defaultConfig.js +0 -66
  206. package/build/src/defaultConfig.js.map +0 -1
  207. package/build/src/defaultConnectors.js +0 -37
  208. package/build/src/defaultConnectors.js.map +0 -1
  209. package/build/src/hooks/useChainIsSupported.js +0 -10
  210. package/build/src/hooks/useChainIsSupported.js.map +0 -1
  211. package/build/src/hooks/useChains.js +0 -10
  212. package/build/src/hooks/useChains.js.map +0 -1
  213. package/build/src/hooks/useConnect.js +0 -61
  214. package/build/src/hooks/useConnect.js.map +0 -1
  215. package/build/src/hooks/useConnectCallback.js +0 -21
  216. package/build/src/hooks/useConnectCallback.js.map +0 -1
  217. package/build/src/hooks/useConnectors.js +0 -20
  218. package/build/src/hooks/useConnectors.js.map +0 -1
  219. package/build/src/hooks/useDaimoPay.js +0 -131
  220. package/build/src/hooks/useDaimoPay.js.map +0 -1
  221. package/build/src/hooks/useDaimoPayStatus.js +0 -12
  222. package/build/src/hooks/useDaimoPayStatus.js.map +0 -1
  223. package/build/src/hooks/useDaimoPayUI.js +0 -15
  224. package/build/src/hooks/useDaimoPayUI.js.map +0 -1
  225. package/build/src/hooks/useEnsFallbackConfig.js +0 -16
  226. package/build/src/hooks/useEnsFallbackConfig.js.map +0 -1
  227. package/build/src/hooks/useFitText.js +0 -133
  228. package/build/src/hooks/useFitText.js.map +0 -1
  229. package/build/src/hooks/useFocusTrap.js +0 -53
  230. package/build/src/hooks/useFocusTrap.js.map +0 -1
  231. package/build/src/hooks/useIsMobile.js +0 -11
  232. package/build/src/hooks/useIsMobile.js.map +0 -1
  233. package/build/src/hooks/useIsMounted.js +0 -10
  234. package/build/src/hooks/useIsMounted.js.map +0 -1
  235. package/build/src/hooks/useLastConnector.js +0 -24
  236. package/build/src/hooks/useLastConnector.js.map +0 -1
  237. package/build/src/hooks/useLocales.js +0 -60
  238. package/build/src/hooks/useLocales.js.map +0 -1
  239. package/build/src/hooks/useLockBodyScroll.js +0 -47
  240. package/build/src/hooks/useLockBodyScroll.js.map +0 -1
  241. package/build/src/hooks/useOrderUsdLimits.js +0 -24
  242. package/build/src/hooks/useOrderUsdLimits.js.map +0 -1
  243. package/build/src/hooks/usePayContext.js +0 -11
  244. package/build/src/hooks/usePayContext.js.map +0 -1
  245. package/build/src/hooks/usePaymentOptions.js +0 -185
  246. package/build/src/hooks/usePaymentOptions.js.map +0 -1
  247. package/build/src/hooks/usePaymentState.js +0 -399
  248. package/build/src/hooks/usePaymentState.js.map +0 -1
  249. package/build/src/hooks/usePrevious.js +0 -13
  250. package/build/src/hooks/usePrevious.js.map +0 -1
  251. package/build/src/hooks/useTokenOptions.js +0 -156
  252. package/build/src/hooks/useTokenOptions.js.map +0 -1
  253. package/build/src/hooks/useUntronAvailability.js +0 -32
  254. package/build/src/hooks/useUntronAvailability.js.map +0 -1
  255. package/build/src/hooks/useWindowSize.js +0 -23
  256. package/build/src/hooks/useWindowSize.js.map +0 -1
  257. package/build/src/index.js +0 -14
  258. package/build/src/index.js.map +0 -1
  259. package/build/src/localizations/index.js +0 -48
  260. package/build/src/localizations/index.js.map +0 -1
  261. package/build/src/localizations/locales/ar-AE.js +0 -95
  262. package/build/src/localizations/locales/ar-AE.js.map +0 -1
  263. package/build/src/localizations/locales/ca-AD.js +0 -93
  264. package/build/src/localizations/locales/ca-AD.js.map +0 -1
  265. package/build/src/localizations/locales/ee-EE.js +0 -101
  266. package/build/src/localizations/locales/ee-EE.js.map +0 -1
  267. package/build/src/localizations/locales/en-US.js +0 -145
  268. package/build/src/localizations/locales/en-US.js.map +0 -1
  269. package/build/src/localizations/locales/es-ES.js +0 -138
  270. package/build/src/localizations/locales/es-ES.js.map +0 -1
  271. package/build/src/localizations/locales/fa-IR.js +0 -93
  272. package/build/src/localizations/locales/fa-IR.js.map +0 -1
  273. package/build/src/localizations/locales/fr-FR.js +0 -93
  274. package/build/src/localizations/locales/fr-FR.js.map +0 -1
  275. package/build/src/localizations/locales/ja-JP.js +0 -93
  276. package/build/src/localizations/locales/ja-JP.js.map +0 -1
  277. package/build/src/localizations/locales/pt-BR.js +0 -145
  278. package/build/src/localizations/locales/pt-BR.js.map +0 -1
  279. package/build/src/localizations/locales/ru-RU.js +0 -97
  280. package/build/src/localizations/locales/ru-RU.js.map +0 -1
  281. package/build/src/localizations/locales/tr-TR.js +0 -101
  282. package/build/src/localizations/locales/tr-TR.js.map +0 -1
  283. package/build/src/localizations/locales/vi-VN.js +0 -101
  284. package/build/src/localizations/locales/vi-VN.js.map +0 -1
  285. package/build/src/localizations/locales/zh-CN.js +0 -93
  286. package/build/src/localizations/locales/zh-CN.js.map +0 -1
  287. package/build/src/payment/paymentEffects.js +0 -270
  288. package/build/src/payment/paymentEffects.js.map +0 -1
  289. package/build/src/payment/paymentFsm.js +0 -234
  290. package/build/src/payment/paymentFsm.js.map +0 -1
  291. package/build/src/payment/paymentStore.js +0 -18
  292. package/build/src/payment/paymentStore.js.map +0 -1
  293. package/build/src/payment/paymentUtils.js +0 -10
  294. package/build/src/payment/paymentUtils.js.map +0 -1
  295. package/build/src/provider/DaimoPayProvider.js +0 -300
  296. package/build/src/provider/DaimoPayProvider.js.map +0 -1
  297. package/build/src/provider/PayContext.js +0 -6
  298. package/build/src/provider/PayContext.js.map +0 -1
  299. package/build/src/provider/PaymentProvider.js +0 -35
  300. package/build/src/provider/PaymentProvider.js.map +0 -1
  301. package/build/src/provider/SolanaContextProvider.js +0 -14
  302. package/build/src/provider/SolanaContextProvider.js.map +0 -1
  303. package/build/src/provider/Web3ContextProvider.js +0 -36
  304. package/build/src/provider/Web3ContextProvider.js.map +0 -1
  305. package/build/src/stateStore.js +0 -36
  306. package/build/src/stateStore.js.map +0 -1
  307. package/build/src/styles/defaultTheme.js +0 -80
  308. package/build/src/styles/defaultTheme.js.map +0 -1
  309. package/build/src/styles/index.js +0 -313
  310. package/build/src/styles/index.js.map +0 -1
  311. package/build/src/styles/styled/index.js +0 -6
  312. package/build/src/styles/styled/index.js.map +0 -1
  313. package/build/src/styles/themes/base.js +0 -141
  314. package/build/src/styles/themes/base.js.map +0 -1
  315. package/build/src/styles/themes/index.js +0 -13
  316. package/build/src/styles/themes/index.js.map +0 -1
  317. package/build/src/styles/themes/midnight.js +0 -76
  318. package/build/src/styles/themes/midnight.js.map +0 -1
  319. package/build/src/styles/themes/minimal.js +0 -96
  320. package/build/src/styles/themes/minimal.js.map +0 -1
  321. package/build/src/styles/themes/nouns.js +0 -81
  322. package/build/src/styles/themes/nouns.js.map +0 -1
  323. package/build/src/styles/themes/retro.js +0 -106
  324. package/build/src/styles/themes/retro.js.map +0 -1
  325. package/build/src/styles/themes/rounded.js +0 -106
  326. package/build/src/styles/themes/rounded.js.map +0 -1
  327. package/build/src/styles/themes/soft.js +0 -71
  328. package/build/src/styles/themes/soft.js.map +0 -1
  329. package/build/src/styles/themes/web95.js +0 -132
  330. package/build/src/styles/themes/web95.js.map +0 -1
  331. package/build/src/utils/exports.js +0 -6
  332. package/build/src/utils/exports.js.map +0 -1
  333. package/build/src/utils/format.js +0 -48
  334. package/build/src/utils/format.js.map +0 -1
  335. package/build/src/utils/index.js +0 -42
  336. package/build/src/utils/index.js.map +0 -1
  337. package/build/src/utils/p3.js +0 -15
  338. package/build/src/utils/p3.js.map +0 -1
  339. package/build/src/utils/platform.js +0 -11
  340. package/build/src/utils/platform.js.map +0 -1
  341. package/build/src/utils/polling.js +0 -44
  342. package/build/src/utils/polling.js.map +0 -1
  343. package/build/src/utils/supportUrl.js +0 -16
  344. package/build/src/utils/supportUrl.js.map +0 -1
  345. package/build/src/utils/trpc.js +0 -19
  346. package/build/src/utils/trpc.js.map +0 -1
  347. package/build/src/utils/validateInput.js +0 -16
  348. package/build/src/utils/validateInput.js.map +0 -1
  349. package/build/src/wallets/index.js +0 -21
  350. package/build/src/wallets/index.js.map +0 -1
  351. package/build/src/wallets/useWallets.js +0 -278
  352. package/build/src/wallets/useWallets.js.map +0 -1
  353. package/build/src/wallets/walletConfigs.js +0 -190
  354. package/build/src/wallets/walletConfigs.js.map +0 -1
  355. package/build/src/world-mini-app/WorldPayButton.js +0 -165
  356. package/build/src/world-mini-app/WorldPayButton.js.map +0 -1
  357. package/build/src/world-mini-app/promptWorldPayment.js +0 -59
  358. package/build/src/world-mini-app/promptWorldPayment.js.map +0 -1
  359. package/build/src/world-mini-app/useWithdrawToWorld.js +0 -76
  360. package/build/src/world-mini-app/useWithdrawToWorld.js.map +0 -1
  361. package/build/src/world-mini-app/useWorldSignIn.js +0 -74
  362. package/build/src/world-mini-app/useWorldSignIn.js.map +0 -1
  363. package/build/src/world.js +0 -4
  364. package/build/src/world.js.map +0 -1
  365. package/build/types-26343050.d.ts +0 -65
  366. package/build/world.d.ts +0 -108
@@ -1,234 +0,0 @@
1
- import { assert, DaimoPayOrderMode, DaimoPayIntentStatus, isHydrated } from '@daimo/pay-common';
2
- import { parseUnits } from 'viem';
3
- import { getDisplayExpiresAt } from './paymentUtils.js';
4
-
5
- const initialPaymentState = { type: "idle" };
6
- function paymentReducer(state, event) {
7
- switch (state.type) {
8
- case "idle":
9
- return reduceIdle(state, event);
10
- case "preview":
11
- return reducePreview(state, event);
12
- case "unhydrated":
13
- return reduceUnhydrated(state, event);
14
- case "payment_unpaid":
15
- return reducePaymentUnpaid(state, event);
16
- case "payment_started":
17
- return reducePaymentStarted(state, event);
18
- case "payment_completed":
19
- case "payment_bounced":
20
- case "error":
21
- case "warning":
22
- return reduceTerminal(state, event);
23
- /* satisfies exhaustiveness */
24
- default:
25
- const _exhaustive = state;
26
- return _exhaustive;
27
- }
28
- }
29
- function reduceIdle(state, event) {
30
- switch (event.type) {
31
- case "preview_generated": {
32
- const stateFromOrder = getStateFromOrder(event.order);
33
- if (stateFromOrder.type !== "unhydrated") {
34
- return stateFromOrder;
35
- }
36
- return {
37
- type: "preview",
38
- order: event.order,
39
- payParamsData: event.payParamsData
40
- };
41
- }
42
- case "order_loaded": {
43
- return getStateFromOrder(event.order);
44
- }
45
- case "error":
46
- return {
47
- type: "error",
48
- order: event.order,
49
- message: event.message
50
- };
51
- case "warning":
52
- return {
53
- type: "warning",
54
- order: event.order,
55
- message: event.message
56
- };
57
- case "reset":
58
- return initialPaymentState;
59
- default:
60
- return state;
61
- }
62
- }
63
- function reducePreview(state, event) {
64
- assert(
65
- state.order.mode !== DaimoPayOrderMode.HYDRATED,
66
- "reducePreview called on hydrated order"
67
- );
68
- switch (event.type) {
69
- case "order_hydrated":
70
- return getStateFromHydratedOrder(event.order);
71
- case "set_chosen_usd": {
72
- const token = state.order.destFinalCallTokenAmount.token;
73
- const tokenUnits = (event.usd / token.priceFromUsd).toString();
74
- const tokenAmount = parseUnits(tokenUnits, token.decimals);
75
- return {
76
- type: "preview",
77
- order: {
78
- ...state.order,
79
- destFinalCallTokenAmount: {
80
- token,
81
- amount: tokenAmount.toString(),
82
- usd: event.usd
83
- }
84
- },
85
- payParamsData: state.payParamsData
86
- };
87
- }
88
- case "error":
89
- return {
90
- type: "error",
91
- order: event.order,
92
- message: event.message
93
- };
94
- case "warning":
95
- return {
96
- type: "warning",
97
- order: event.order,
98
- message: event.message
99
- };
100
- case "reset":
101
- return initialPaymentState;
102
- default:
103
- return state;
104
- }
105
- }
106
- function reduceUnhydrated(state, event) {
107
- switch (event.type) {
108
- case "order_hydrated":
109
- return { type: "payment_unpaid", order: event.order };
110
- case "error":
111
- return {
112
- type: "error",
113
- order: event.order,
114
- message: event.message
115
- };
116
- case "warning":
117
- return {
118
- type: "warning",
119
- order: event.order,
120
- message: event.message
121
- };
122
- case "reset":
123
- return initialPaymentState;
124
- default:
125
- return state;
126
- }
127
- }
128
- function reducePaymentUnpaid(state, event) {
129
- switch (event.type) {
130
- case "payment_verified": {
131
- if (event.order.intentStatus === DaimoPayIntentStatus.UNPAID) {
132
- return {
133
- type: "error",
134
- order: event.order,
135
- message: "Payment failed"
136
- };
137
- }
138
- return getStateFromHydratedOrder(event.order);
139
- }
140
- case "order_refreshed":
141
- return getStateFromHydratedOrder(event.order);
142
- case "error":
143
- return {
144
- type: "error",
145
- order: event.order,
146
- message: event.message
147
- };
148
- case "warning":
149
- return {
150
- type: "warning",
151
- order: event.order,
152
- message: event.message
153
- };
154
- case "reset":
155
- return initialPaymentState;
156
- default:
157
- return state;
158
- }
159
- }
160
- function reducePaymentStarted(state, event) {
161
- switch (event.type) {
162
- case "order_refreshed":
163
- return getStateFromHydratedOrder(event.order);
164
- case "error":
165
- return {
166
- type: "error",
167
- order: event.order,
168
- message: event.message
169
- };
170
- case "warning":
171
- return {
172
- type: "warning",
173
- order: event.order,
174
- message: event.message
175
- };
176
- case "reset":
177
- return initialPaymentState;
178
- default:
179
- return state;
180
- }
181
- }
182
- function getStateFromOrder(order) {
183
- if (order.mode === DaimoPayOrderMode.HYDRATED) {
184
- return getStateFromHydratedOrder(order);
185
- } else {
186
- return { type: "unhydrated", order };
187
- }
188
- }
189
- function getStateFromHydratedOrder(order) {
190
- assert(isHydrated(order), `[PAYMENT_REDUCER] unhydrated`);
191
- switch (order.intentStatus) {
192
- case DaimoPayIntentStatus.COMPLETED:
193
- return { type: "payment_completed", order };
194
- case DaimoPayIntentStatus.BOUNCED:
195
- return { type: "payment_bounced", order };
196
- }
197
- const displayExpiresAt = getDisplayExpiresAt(order);
198
- if (Date.now() / 1e3 > displayExpiresAt) {
199
- return {
200
- type: "error",
201
- order,
202
- message: "Payment expired. Please restart."
203
- };
204
- }
205
- switch (order.intentStatus) {
206
- case DaimoPayIntentStatus.UNPAID:
207
- return { type: "payment_unpaid", order };
208
- case DaimoPayIntentStatus.STARTED:
209
- return { type: "payment_started", order };
210
- default:
211
- return { type: "error", order, message: `Status: ${order.intentStatus}` };
212
- }
213
- }
214
- function reduceTerminal(state, event) {
215
- switch (event.type) {
216
- case "dismiss_warning": {
217
- if (state.type === "warning") {
218
- if (event.order) {
219
- return getStateFromOrder(event.order);
220
- }
221
- return initialPaymentState;
222
- }
223
- return state;
224
- }
225
- case "reset":
226
- return initialPaymentState;
227
- // In terminal states we ignore everything except reset
228
- default:
229
- return state;
230
- }
231
- }
232
-
233
- export { initialPaymentState, paymentReducer };
234
- //# sourceMappingURL=paymentFsm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentFsm.js","sources":["../../../src/payment/paymentFsm.ts"],"sourcesContent":["import {\n assert,\n DaimoPayHydratedOrderWithOrg,\n DaimoPayIntentStatus,\n DaimoPayOrder,\n DaimoPayOrderID,\n DaimoPayOrderMode,\n DaimoPayOrderWithOrg,\n DaimoPayUserMetadata,\n ExternalPaymentOptionsString,\n isHydrated,\n SolanaPublicKey,\n} from \"@daimo/pay-common\";\nimport { Address, Hex, parseUnits } from \"viem\";\nimport { getDisplayExpiresAt } from \"./paymentUtils\";\n\n/** Payment parameters. The payment is created only after user taps pay. */\nexport interface PayParams {\n /** App ID, for authentication. */\n appId: string;\n /** Destination chain ID. */\n toChain: number;\n /** The destination token to send. */\n toToken: Address;\n /**\n * The amount of the token to send.\n * If not provided, the user will be prompted to enter an amount.\n */\n toUnits?: string;\n /** The final address to transfer to or contract to call. */\n toAddress: Address;\n /** Calldata for final call, or empty data for transfer. */\n toCallData?: Hex;\n /** The intent verb, such as Pay, Deposit, or Purchase. Default: Pay */\n intent?: string;\n /** Payment options. By default, all are enabled. Supports nested arrays for mobile wallet filtering. */\n paymentOptions?: (\n | ExternalPaymentOptionsString\n | ExternalPaymentOptionsString[]\n )[];\n /** Preferred chain IDs. */\n preferredChains?: number[];\n /** Preferred tokens. These appear first in the token list. */\n preferredTokens?: { chain: number; address: Address }[];\n /** Only allow payments on these EVM chains. */\n evmChains?: number[];\n /** External ID. E.g. a correlation ID. */\n externalId?: string;\n /** Developer metadata. E.g. correlation ID. */\n metadata?: DaimoPayUserMetadata;\n /** The address to refund to if the payment bounces or a refund is requested. */\n refundAddress?: Address;\n /** Pass-through tokens. If the user pays via these tokens, they're sent directly without swapping. */\n passthroughTokens?: { chain: number; address: Address }[];\n}\n\nexport type PaymentState =\n // payParams and payId are set\n | { type: \"idle\" }\n // payParams are set, payId is not set. A preview order has been created\n // but not saved to the db\n | {\n type: \"preview\";\n order: DaimoPayOrderWithOrg;\n payParamsData: PayParamsData;\n }\n // payId is set, payParams are not set. An unhydrated order has been created\n // and saved to the db\n | { type: \"unhydrated\"; order: DaimoPayOrderWithOrg }\n // Order was hydrated and is waiting to be paid\n | { type: \"payment_unpaid\"; order: DaimoPayHydratedOrderWithOrg }\n // Order was paid, destination was not processed\n | { type: \"payment_started\"; order: DaimoPayHydratedOrderWithOrg }\n // Order was paid and processed successfully\n | { type: \"payment_completed\"; order: DaimoPayHydratedOrderWithOrg }\n // Order was paid but the destination failed to process\n | { type: \"payment_bounced\"; order: DaimoPayHydratedOrderWithOrg }\n // An error occurred\n | { type: \"error\"; order: DaimoPayOrder | undefined; message: string }\n // A non-fatal UI pause to confirm a potentially destructive action\n // why: temporarily blocks navigation to ask user confirmation (e.g. end tron session)\n | { type: \"warning\"; order: DaimoPayOrder | undefined; message: string };\n\nexport type PaymentStateType = PaymentState[\"type\"];\n\nexport const initialPaymentState: PaymentState = { type: \"idle\" };\n\nexport type PaymentEvent =\n /* command events (kick off an effect) */\n | { type: \"set_pay_params\"; payParams: PayParams }\n | { type: \"set_pay_id\"; payId: DaimoPayOrderID }\n // HACK: edit the order in-memory to change the amount in deposit flow\n | { type: \"set_chosen_usd\"; usd: number }\n | { type: \"hydrate_order\"; refundAddress?: Address }\n | {\n type: \"pay_source\";\n }\n | {\n type: \"pay_ethereum_source\";\n paymentTxHash: Hex;\n sourceChainId: number;\n payerAddress: Address;\n sourceToken: Address;\n sourceAmount: bigint;\n }\n | {\n type: \"pay_solana_source\";\n paymentTxHash: string;\n sourceToken: SolanaPublicKey;\n }\n /* result events (effect finished) */\n | {\n type: \"preview_generated\";\n order: DaimoPayOrderWithOrg;\n payParamsData: PayParamsData;\n }\n | { type: \"order_loaded\"; order: DaimoPayOrderWithOrg }\n | { type: \"order_hydrated\"; order: DaimoPayHydratedOrderWithOrg }\n | {\n type: \"payment_verified\";\n order: DaimoPayHydratedOrderWithOrg;\n }\n | {\n type: \"order_refreshed\";\n order: DaimoPayOrderWithOrg | DaimoPayHydratedOrderWithOrg;\n }\n | { type: \"dest_processed\"; order: DaimoPayHydratedOrderWithOrg }\n /* failure / util */\n | {\n type: \"error\";\n order: DaimoPayOrder | undefined;\n message: string;\n }\n // enter the temporary confirmation screen with a user-facing message\n | {\n type: \"warning\";\n order: DaimoPayOrder | undefined;\n message: string;\n }\n // exit the warning screen; if an order snapshot is provided, resume its derived state,\n // otherwise fall back to initial state\n | {\n type: \"dismiss_warning\";\n order: DaimoPayOrderWithOrg | DaimoPayHydratedOrderWithOrg | undefined;\n }\n | { type: \"reset\" };\n\ntype PayParamsData = {\n appId: string;\n};\n\n/**\n * Master payment reducer.\n */\nexport function paymentReducer(\n state: PaymentState,\n event: PaymentEvent,\n): PaymentState {\n switch (state.type) {\n case \"idle\":\n return reduceIdle(state, event);\n case \"preview\":\n return reducePreview(state, event);\n case \"unhydrated\":\n return reduceUnhydrated(state, event);\n case \"payment_unpaid\":\n return reducePaymentUnpaid(state, event);\n case \"payment_started\":\n return reducePaymentStarted(state, event);\n case \"payment_completed\":\n case \"payment_bounced\":\n case \"error\":\n case \"warning\":\n return reduceTerminal(state, event);\n /* satisfies exhaustiveness */\n default:\n // Exhaustive check: Using `never` will cause lint failure if not all\n // state types are handled\n const _exhaustive: never = state;\n return _exhaustive;\n }\n}\n\n/* --------------------------------------------------\n reducer helpers – one function per state\n---------------------------------------------------*/\n\nfunction reduceIdle(\n state: Extract<PaymentState, { type: \"idle\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"preview_generated\": {\n const stateFromOrder = getStateFromOrder(event.order);\n\n // If order is already hydrated or in terminal state, use that state\n if (stateFromOrder.type !== \"unhydrated\") {\n return stateFromOrder;\n }\n\n // Order is not hydrated/processed, handle as preview\n return {\n type: \"preview\",\n order: event.order,\n payParamsData: event.payParamsData,\n };\n }\n case \"order_loaded\": {\n return getStateFromOrder(event.order);\n }\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reducePreview(\n state: Extract<PaymentState, { type: \"preview\" }>,\n event: PaymentEvent,\n): PaymentState {\n assert(\n state.order.mode !== DaimoPayOrderMode.HYDRATED,\n \"reducePreview called on hydrated order\",\n );\n\n switch (event.type) {\n case \"order_hydrated\":\n return getStateFromHydratedOrder(event.order);\n case \"set_chosen_usd\": {\n const token = state.order.destFinalCallTokenAmount.token;\n const tokenUnits = (event.usd / token.priceFromUsd).toString();\n const tokenAmount = parseUnits(tokenUnits, token.decimals);\n\n // Stay in preview state, but update the order's destFinalCallTokenAmount\n return {\n type: \"preview\",\n order: {\n ...state.order,\n destFinalCallTokenAmount: {\n token,\n amount: tokenAmount.toString() as `${bigint}`,\n usd: event.usd,\n },\n },\n payParamsData: state.payParamsData,\n };\n }\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reduceUnhydrated(\n state: Extract<PaymentState, { type: \"unhydrated\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"order_hydrated\":\n return { type: \"payment_unpaid\", order: event.order };\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reducePaymentUnpaid(\n state: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"payment_verified\": {\n if (event.order.intentStatus === DaimoPayIntentStatus.UNPAID) {\n // The payment was not detected on chain, or some other error occurred.\n return {\n type: \"error\",\n order: event.order,\n message: \"Payment failed\",\n };\n }\n return getStateFromHydratedOrder(event.order);\n }\n case \"order_refreshed\":\n return getStateFromHydratedOrder(event.order);\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\nfunction reducePaymentStarted(\n state: Extract<PaymentState, { type: \"payment_started\" }>,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"order_refreshed\":\n return getStateFromHydratedOrder(event.order);\n case \"error\":\n return {\n type: \"error\",\n order: event.order,\n message: event.message,\n };\n case \"warning\":\n return {\n type: \"warning\",\n order: event.order,\n message: event.message,\n };\n case \"reset\":\n return initialPaymentState;\n default:\n return state;\n }\n}\n\n/**\n * Determines the appropriate payment state based on an order's status and mode.\n * Returns the appropriate payment state based on the order's mode and intent status.\n */\nfunction getStateFromOrder(order: DaimoPayOrderWithOrg): PaymentState {\n if (order.mode === DaimoPayOrderMode.HYDRATED) {\n return getStateFromHydratedOrder(order);\n } else {\n return { type: \"unhydrated\", order };\n }\n}\n\n/**\n * Determines the appropriate payment state for a hydrated order. Progresses\n * the payment through different processing states.\n */\nfunction getStateFromHydratedOrder(order: DaimoPayOrderWithOrg): PaymentState {\n assert(isHydrated(order), `[PAYMENT_REDUCER] unhydrated`);\n\n // Handle finished orders first\n switch (order.intentStatus) {\n case DaimoPayIntentStatus.COMPLETED:\n return { type: \"payment_completed\", order };\n case DaimoPayIntentStatus.BOUNCED:\n return { type: \"payment_bounced\", order };\n }\n\n // If unfinished, check if expired\n const displayExpiresAt = getDisplayExpiresAt(order);\n if (Date.now() / 1e3 > displayExpiresAt) {\n return {\n type: \"error\",\n order,\n message: \"Payment expired. Please restart.\",\n };\n }\n\n // Unfinished but not expired\n switch (order.intentStatus) {\n case DaimoPayIntentStatus.UNPAID:\n return { type: \"payment_unpaid\", order };\n case DaimoPayIntentStatus.STARTED:\n return { type: \"payment_started\", order };\n default:\n return { type: \"error\", order, message: `Status: ${order.intentStatus}` };\n }\n}\n\nfunction reduceTerminal(\n state: Extract<\n PaymentState,\n { type: \"payment_completed\" | \"payment_bounced\" | \"error\" | \"warning\" }\n >,\n event: PaymentEvent,\n): PaymentState {\n switch (event.type) {\n case \"dismiss_warning\": {\n // leave the confirmation screen and restore previous state when possible\n if (state.type === \"warning\") {\n if (event.order) {\n return getStateFromOrder(event.order);\n }\n return initialPaymentState;\n }\n return state;\n }\n case \"reset\":\n return initialPaymentState;\n // In terminal states we ignore everything except reset\n default:\n return state;\n }\n}\n"],"names":[],"mappings":";;;;AAqFa,MAAA,mBAAA,GAAoC,EAAE,IAAA,EAAM,MAAO,GAAA;AAqEhD,SAAA,cAAA,CACd,OACA,KACc,EAAA;AACd,EAAA,QAAQ,MAAM,IAAM;AAAA,IAClB,KAAK,MAAA;AACH,MAAO,OAAA,UAAA,CAAW,OAAO,KAAK,CAAA,CAAA;AAAA,IAChC,KAAK,SAAA;AACH,MAAO,OAAA,aAAA,CAAc,OAAO,KAAK,CAAA,CAAA;AAAA,IACnC,KAAK,YAAA;AACH,MAAO,OAAA,gBAAA,CAAiB,OAAO,KAAK,CAAA,CAAA;AAAA,IACtC,KAAK,gBAAA;AACH,MAAO,OAAA,mBAAA,CAAoB,OAAO,KAAK,CAAA,CAAA;AAAA,IACzC,KAAK,iBAAA;AACH,MAAO,OAAA,oBAAA,CAAqB,OAAO,KAAK,CAAA,CAAA;AAAA,IAC1C,KAAK,mBAAA,CAAA;AAAA,IACL,KAAK,iBAAA,CAAA;AAAA,IACL,KAAK,OAAA,CAAA;AAAA,IACL,KAAK,SAAA;AACH,MAAO,OAAA,cAAA,CAAe,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA,IAEpC;AAGE,MAAA,MAAM,WAAqB,GAAA,KAAA,CAAA;AAC3B,MAAO,OAAA,WAAA,CAAA;AAAA,GACX;AACF,CAAA;AAMA,SAAS,UAAA,CACP,OACA,KACc,EAAA;AACd,EAAA,QAAQ,MAAM,IAAM;AAAA,IAClB,KAAK,mBAAqB,EAAA;AACxB,MAAM,MAAA,cAAA,GAAiB,iBAAkB,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAGpD,MAAI,IAAA,cAAA,CAAe,SAAS,YAAc,EAAA;AACxC,QAAO,OAAA,cAAA,CAAA;AAAA,OACT;AAGA,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,eAAe,KAAM,CAAA,aAAA;AAAA,OACvB,CAAA;AAAA,KACF;AAAA,IACA,KAAK,cAAgB,EAAA;AACnB,MAAO,OAAA,iBAAA,CAAkB,MAAM,KAAK,CAAA,CAAA;AAAA,KACtC;AAAA,IACA,KAAK,OAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAO,OAAA,mBAAA,CAAA;AAAA,IACT;AACE,MAAO,OAAA,KAAA,CAAA;AAAA,GACX;AACF,CAAA;AAEA,SAAS,aAAA,CACP,OACA,KACc,EAAA;AACd,EAAA,MAAA;AAAA,IACE,KAAA,CAAM,KAAM,CAAA,IAAA,KAAS,iBAAkB,CAAA,QAAA;AAAA,IACvC,wCAAA;AAAA,GACF,CAAA;AAEA,EAAA,QAAQ,MAAM,IAAM;AAAA,IAClB,KAAK,gBAAA;AACH,MAAO,OAAA,yBAAA,CAA0B,MAAM,KAAK,CAAA,CAAA;AAAA,IAC9C,KAAK,gBAAkB,EAAA;AACrB,MAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,CAAM,wBAAyB,CAAA,KAAA,CAAA;AACnD,MAAA,MAAM,UAAc,GAAA,CAAA,KAAA,CAAM,GAAM,GAAA,KAAA,CAAM,cAAc,QAAS,EAAA,CAAA;AAC7D,MAAA,MAAM,WAAc,GAAA,UAAA,CAAW,UAAY,EAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AAGzD,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,KAAO,EAAA;AAAA,UACL,GAAG,KAAM,CAAA,KAAA;AAAA,UACT,wBAA0B,EAAA;AAAA,YACxB,KAAA;AAAA,YACA,MAAA,EAAQ,YAAY,QAAS,EAAA;AAAA,YAC7B,KAAK,KAAM,CAAA,GAAA;AAAA,WACb;AAAA,SACF;AAAA,QACA,eAAe,KAAM,CAAA,aAAA;AAAA,OACvB,CAAA;AAAA,KACF;AAAA,IACA,KAAK,OAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAO,OAAA,mBAAA,CAAA;AAAA,IACT;AACE,MAAO,OAAA,KAAA,CAAA;AAAA,GACX;AACF,CAAA;AAEA,SAAS,gBAAA,CACP,OACA,KACc,EAAA;AACd,EAAA,QAAQ,MAAM,IAAM;AAAA,IAClB,KAAK,gBAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,gBAAkB,EAAA,KAAA,EAAO,MAAM,KAAM,EAAA,CAAA;AAAA,IACtD,KAAK,OAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAO,OAAA,mBAAA,CAAA;AAAA,IACT;AACE,MAAO,OAAA,KAAA,CAAA;AAAA,GACX;AACF,CAAA;AAEA,SAAS,mBAAA,CACP,OACA,KACc,EAAA;AACd,EAAA,QAAQ,MAAM,IAAM;AAAA,IAClB,KAAK,kBAAoB,EAAA;AACvB,MAAA,IAAI,KAAM,CAAA,KAAA,CAAM,YAAiB,KAAA,oBAAA,CAAqB,MAAQ,EAAA;AAE5D,QAAO,OAAA;AAAA,UACL,IAAM,EAAA,OAAA;AAAA,UACN,OAAO,KAAM,CAAA,KAAA;AAAA,UACb,OAAS,EAAA,gBAAA;AAAA,SACX,CAAA;AAAA,OACF;AACA,MAAO,OAAA,yBAAA,CAA0B,MAAM,KAAK,CAAA,CAAA;AAAA,KAC9C;AAAA,IACA,KAAK,iBAAA;AACH,MAAO,OAAA,yBAAA,CAA0B,MAAM,KAAK,CAAA,CAAA;AAAA,IAC9C,KAAK,OAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAO,OAAA,mBAAA,CAAA;AAAA,IACT;AACE,MAAO,OAAA,KAAA,CAAA;AAAA,GACX;AACF,CAAA;AAEA,SAAS,oBAAA,CACP,OACA,KACc,EAAA;AACd,EAAA,QAAQ,MAAM,IAAM;AAAA,IAClB,KAAK,iBAAA;AACH,MAAO,OAAA,yBAAA,CAA0B,MAAM,KAAK,CAAA,CAAA;AAAA,IAC9C,KAAK,OAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SAAS,KAAM,CAAA,OAAA;AAAA,OACjB,CAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAO,OAAA,mBAAA,CAAA;AAAA,IACT;AACE,MAAO,OAAA,KAAA,CAAA;AAAA,GACX;AACF,CAAA;AAMA,SAAS,kBAAkB,KAA2C,EAAA;AACpE,EAAI,IAAA,KAAA,CAAM,IAAS,KAAA,iBAAA,CAAkB,QAAU,EAAA;AAC7C,IAAA,OAAO,0BAA0B,KAAK,CAAA,CAAA;AAAA,GACjC,MAAA;AACL,IAAO,OAAA,EAAE,IAAM,EAAA,YAAA,EAAc,KAAM,EAAA,CAAA;AAAA,GACrC;AACF,CAAA;AAMA,SAAS,0BAA0B,KAA2C,EAAA;AAC5E,EAAO,MAAA,CAAA,UAAA,CAAW,KAAK,CAAA,EAAG,CAA8B,4BAAA,CAAA,CAAA,CAAA;AAGxD,EAAA,QAAQ,MAAM,YAAc;AAAA,IAC1B,KAAK,oBAAqB,CAAA,SAAA;AACxB,MAAO,OAAA,EAAE,IAAM,EAAA,mBAAA,EAAqB,KAAM,EAAA,CAAA;AAAA,IAC5C,KAAK,oBAAqB,CAAA,OAAA;AACxB,MAAO,OAAA,EAAE,IAAM,EAAA,iBAAA,EAAmB,KAAM,EAAA,CAAA;AAAA,GAC5C;AAGA,EAAM,MAAA,gBAAA,GAAmB,oBAAoB,KAAK,CAAA,CAAA;AAClD,EAAA,IAAI,IAAK,CAAA,GAAA,EAAQ,GAAA,GAAA,GAAM,gBAAkB,EAAA;AACvC,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,KAAA;AAAA,MACA,OAAS,EAAA,kCAAA;AAAA,KACX,CAAA;AAAA,GACF;AAGA,EAAA,QAAQ,MAAM,YAAc;AAAA,IAC1B,KAAK,oBAAqB,CAAA,MAAA;AACxB,MAAO,OAAA,EAAE,IAAM,EAAA,gBAAA,EAAkB,KAAM,EAAA,CAAA;AAAA,IACzC,KAAK,oBAAqB,CAAA,OAAA;AACxB,MAAO,OAAA,EAAE,IAAM,EAAA,iBAAA,EAAmB,KAAM,EAAA,CAAA;AAAA,IAC1C;AACE,MAAO,OAAA,EAAE,MAAM,OAAS,EAAA,KAAA,EAAO,SAAS,CAAW,QAAA,EAAA,KAAA,CAAM,YAAY,CAAG,CAAA,EAAA,CAAA;AAAA,GAC5E;AACF,CAAA;AAEA,SAAS,cAAA,CACP,OAIA,KACc,EAAA;AACd,EAAA,QAAQ,MAAM,IAAM;AAAA,IAClB,KAAK,iBAAmB,EAAA;AAEtB,MAAI,IAAA,KAAA,CAAM,SAAS,SAAW,EAAA;AAC5B,QAAA,IAAI,MAAM,KAAO,EAAA;AACf,UAAO,OAAA,iBAAA,CAAkB,MAAM,KAAK,CAAA,CAAA;AAAA,SACtC;AACA,QAAO,OAAA,mBAAA,CAAA;AAAA,OACT;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,IACA,KAAK,OAAA;AACH,MAAO,OAAA,mBAAA,CAAA;AAAA;AAAA,IAET;AACE,MAAO,OAAA,KAAA,CAAA;AAAA,GACX;AACF;;;;"}
@@ -1,18 +0,0 @@
1
- import { waitForState, createStore } from '../stateStore.js';
2
- import { paymentReducer, initialPaymentState } from './paymentFsm.js';
3
-
4
- function createPaymentStore() {
5
- const store = createStore(paymentReducer, initialPaymentState);
6
- return store;
7
- }
8
- function waitForPaymentState(store, ...validTypes) {
9
- return waitForState(
10
- store,
11
- (s) => validTypes.includes(s.type),
12
- (s) => s.type === "error",
13
- (s) => s.message
14
- );
15
- }
16
-
17
- export { createPaymentStore, waitForPaymentState };
18
- //# sourceMappingURL=paymentStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentStore.js","sources":["../../../src/payment/paymentStore.ts"],"sourcesContent":["import { createStore, waitForState } from \"../stateStore\";\nimport {\n initialPaymentState,\n PaymentEvent,\n paymentReducer,\n PaymentState,\n} from \"./paymentFsm\";\n\nexport type PaymentStore = ReturnType<\n typeof createStore<PaymentState, PaymentEvent>\n>;\n\nexport function createPaymentStore(): PaymentStore {\n const store = createStore(paymentReducer, initialPaymentState);\n return store;\n}\n\n/**\n * Wait for the `PaymentStore` to enter a state matching any of `validTypes`,\n * or reject as soon as it hits the `\"error\"` state.\n *\n * @returns Promise<T> resolving with the first matching state or rejecting with\n * the error message\n */\nexport function waitForPaymentState<\n const T extends readonly PaymentState[\"type\"][],\n>(\n store: PaymentStore,\n ...validTypes: T\n): Promise<Extract<PaymentState, { type: T[number] }>> {\n return waitForState<\n PaymentState,\n PaymentEvent,\n Extract<PaymentState, { type: T[number] }>\n >(\n store,\n (s): s is Extract<PaymentState, { type: T[number] }> =>\n (validTypes as readonly PaymentState[\"type\"][]).includes(s.type),\n (s) => s.type === \"error\",\n (s) => (s as Extract<PaymentState, { type: \"error\" }>).message,\n );\n}\n"],"names":[],"mappings":";;;AAYO,SAAS,kBAAmC,GAAA;AACjD,EAAM,MAAA,KAAA,GAAQ,WAAY,CAAA,cAAA,EAAgB,mBAAmB,CAAA,CAAA;AAC7D,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AASgB,SAAA,mBAAA,CAGd,UACG,UACkD,EAAA;AACrD,EAAO,OAAA,YAAA;AAAA,IAKL,KAAA;AAAA,IACA,CAAC,CAAA,KACE,UAA+C,CAAA,QAAA,CAAS,EAAE,IAAI,CAAA;AAAA,IACjE,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA,OAAA;AAAA,IAClB,CAAC,MAAO,CAA+C,CAAA,OAAA;AAAA,GACzD,CAAA;AACF;;;;"}
@@ -1,10 +0,0 @@
1
- function getDisplayExpiresAt(order) {
2
- if (order.expirationTs == null) {
3
- return 1e9;
4
- }
5
- const expirationTs = Number(order.expirationTs);
6
- return expirationTs - 3600;
7
- }
8
-
9
- export { getDisplayExpiresAt };
10
- //# sourceMappingURL=paymentUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentUtils.js","sources":["../../../src/payment/paymentUtils.ts"],"sourcesContent":["import { DaimoPayHydratedOrder } from \"@daimo/pay-common\";\n\n/**\n * Display payments as \"expired\" 1h before their actual expiration.\n * This ensures that users don't send payments that may arrive post-expiry.\n */\nexport function getDisplayExpiresAt(order: DaimoPayHydratedOrder) {\n if (order.expirationTs == null) {\n return 1e9; // past expiration\n }\n const expirationTs = Number(order.expirationTs);\n return expirationTs - 3600;\n}\n"],"names":[],"mappings":"AAMO,SAAS,oBAAoB,KAA8B,EAAA;AAChE,EAAI,IAAA,KAAA,CAAM,gBAAgB,IAAM,EAAA;AAC9B,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,YAAA,GAAe,MAAO,CAAA,KAAA,CAAM,YAAY,CAAA,CAAA;AAC9C,EAAA,OAAO,YAAe,GAAA,IAAA,CAAA;AACxB;;;;"}
@@ -1,300 +0,0 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { debugJson, DaimoPayOrderMode, DaimoPayOrderStatusSource } from '@daimo/pay-common';
3
- import { Buffer } from 'buffer';
4
- import React, { useMemo, useState, useRef, useCallback, useEffect, createElement } from 'react';
5
- import { ThemeProvider } from 'styled-components';
6
- import { WagmiContext } from 'wagmi';
7
- import { DaimoPayModal } from '../components/DaimoPayModal/index.js';
8
- import { ROUTES } from '../constants/routes.js';
9
- import { REQUIRED_CHAINS } from '../defaultConfig.js';
10
- import { useChains } from '../hooks/useChains.js';
11
- import { useConnectCallback } from '../hooks/useConnectCallback.js';
12
- import { useDaimoPay } from '../hooks/useDaimoPay.js';
13
- import { usePaymentState } from '../hooks/usePaymentState.js';
14
- import { PaymentProvider, PaymentContext } from './PaymentProvider.js';
15
- import defaultTheme from '../styles/defaultTheme.js';
16
- import { createTrpcClient } from '../utils/trpc.js';
17
- import { setInWalletPaymentUrlFromApiUrl } from '../wallets/walletConfigs.js';
18
- import { PayContext } from './PayContext.js';
19
- import { SolanaContextProvider } from './SolanaContextProvider.js';
20
- import { Web3ContextProvider } from './Web3ContextProvider.js';
21
-
22
- const DaimoPayUIProvider = ({
23
- children,
24
- theme = "auto",
25
- mode = "auto",
26
- customTheme,
27
- options,
28
- onConnect,
29
- onDisconnect,
30
- debugMode = false,
31
- payApiUrl,
32
- log
33
- }) => {
34
- if (!React.useContext(PaymentContext)) {
35
- throw Error("DaimoPayProvider must be within a PaymentProvider");
36
- }
37
- if (!React.useContext(WagmiContext)) {
38
- throw Error("DaimoPayProvider must be within a WagmiProvider");
39
- }
40
- if (React.useContext(PayContext)) {
41
- throw new Error(
42
- "Multiple, nested usages of DaimoPayProvider detected. Please use only one."
43
- );
44
- }
45
- useConnectCallback({
46
- onConnect,
47
- onDisconnect
48
- });
49
- const chains = useChains();
50
- for (const requiredChain of REQUIRED_CHAINS) {
51
- if (!chains.some((c) => c.id === requiredChain.id)) {
52
- throw new Error(
53
- `Daimo Pay requires chains ${REQUIRED_CHAINS.map((c) => c.name).join(", ")}. Use \`getDefaultConfig\` to automatically configure required chains.`
54
- );
55
- }
56
- }
57
- const defaultOptions = {
58
- language: "en-US",
59
- hideBalance: false,
60
- hideTooltips: false,
61
- hideQuestionMarkCTA: false,
62
- hideRecentBadge: false,
63
- avoidLayoutShift: true,
64
- embedGoogleFonts: false,
65
- truncateLongENSAddress: true,
66
- reducedMotion: false,
67
- disclaimer: null,
68
- bufferPolyfill: true,
69
- customAvatar: void 0,
70
- initialChainId: void 0,
71
- enforceSupportedChains: false,
72
- ethereumOnboardingUrl: void 0,
73
- walletOnboardingUrl: void 0,
74
- overlayBlur: void 0,
75
- disableMobileInjector: false
76
- };
77
- const opts = Object.assign(
78
- {},
79
- defaultOptions,
80
- options
81
- );
82
- if (typeof window !== "undefined") {
83
- if (opts.bufferPolyfill) window.Buffer = window.Buffer ?? Buffer;
84
- }
85
- const pay = useDaimoPay();
86
- const [ckTheme, setTheme] = useState(theme);
87
- const [ckMode, setMode] = useState(mode);
88
- const [ckCustomTheme, setCustomTheme] = useState(
89
- customTheme ?? {}
90
- );
91
- const [ckLang, setLang] = useState("en-US");
92
- const [disableMobileInjector, setDisableMobileInjector] = useState(
93
- opts.disableMobileInjector ?? false
94
- );
95
- const onOpenRef = useRef();
96
- const onCloseRef = useRef();
97
- const setOnOpen = useCallback((fn) => {
98
- onOpenRef.current = fn;
99
- }, []);
100
- const setOnClose = useCallback((fn) => {
101
- onCloseRef.current = fn;
102
- }, []);
103
- const [open, setOpenState] = useState(false);
104
- const [lockPayParams, setLockPayParams] = useState(false);
105
- const [paymentCompleted, setPaymentCompleted] = useState(false);
106
- const [route, setRouteState] = useState(ROUTES.SELECT_METHOD);
107
- const [modalOptions, setModalOptions] = useState();
108
- const [uniquePaymentMethodPage, setUniquePaymentMethodPage] = useState(ROUTES.SELECT_METHOD);
109
- const [pendingConnectorId, setPendingConnectorId] = useState(void 0);
110
- const [sessionId] = useState(() => crypto.randomUUID().replaceAll("-", ""));
111
- const [solanaConnector, setSolanaConnector] = useState();
112
- const [errorMessage, setErrorMessage] = useState("");
113
- const [showContactSupport, setShowContactSupport] = useState(true);
114
- const [confirmationMessage, setConfirmationMessage] = useState(void 0);
115
- const [redirectReturnUrl, setRedirectReturnUrl] = useState(void 0);
116
- const trpc = useMemo(() => {
117
- return createTrpcClient(payApiUrl, sessionId);
118
- }, [payApiUrl, sessionId]);
119
- const [resize, onResize] = useState(0);
120
- useEffect(() => {
121
- setInWalletPaymentUrlFromApiUrl(payApiUrl);
122
- }, [payApiUrl]);
123
- const setOpen = useCallback(
124
- (open2, meta) => {
125
- setOpenState(open2);
126
- if (open2) {
127
- setLockPayParams(true);
128
- }
129
- if (!open2 && paymentCompleted && modalOptions?.resetOnSuccess) {
130
- setPaymentCompleted(false);
131
- setLockPayParams(false);
132
- paymentState.resetOrder();
133
- }
134
- trpc.nav.mutate({
135
- action: open2 ? "navOpenPay" : "navClosePay",
136
- orderId: pay.order?.id?.toString(),
137
- data: meta ?? {}
138
- });
139
- if (open2) onOpenRef.current?.();
140
- else onCloseRef.current?.();
141
- },
142
- // We don't have good caching on paymentState, so don't include it as a dep
143
- // eslint-disable-next-line react-hooks/exhaustive-deps
144
- [trpc, pay.order?.id, modalOptions?.resetOnSuccess, paymentCompleted]
145
- );
146
- const onSuccess = useCallback(() => {
147
- if (modalOptions?.closeOnSuccess) {
148
- setTimeout(() => setOpen(false, { event: "wait-success" }), 1e3);
149
- }
150
- setPaymentCompleted(true);
151
- }, [modalOptions?.closeOnSuccess, setOpen, setPaymentCompleted]);
152
- const setRoute = useCallback(
153
- (route2, data) => {
154
- const action = route2.replace("daimoPay", "");
155
- log(`[SET ROUTE] ${action} ${pay.order?.id} ${debugJson(data ?? {})}`);
156
- trpc.nav.mutate({
157
- action,
158
- orderId: pay.order?.id?.toString(),
159
- data: data ?? {}
160
- });
161
- setRouteState(route2);
162
- },
163
- [trpc, pay.order?.id, log]
164
- );
165
- useEffect(() => setTheme(theme), [theme]);
166
- useEffect(() => setLang(opts.language || "en-US"), [opts.language]);
167
- useEffect(
168
- () => setDisableMobileInjector(opts.disableMobileInjector ?? false),
169
- [opts.disableMobileInjector]
170
- );
171
- useEffect(() => setErrorMessage(null), [route, open]);
172
- const paymentState = usePaymentState({
173
- trpc,
174
- lockPayParams,
175
- setRoute,
176
- log,
177
- redirectReturnUrl
178
- });
179
- const showPayment = async (modalOptions2) => {
180
- const id = pay.order?.id;
181
- log(
182
- `[PAY] showing modal ${debugJson({ id, modalOptions: modalOptions2, paymentFsmState: pay.paymentState })}`
183
- );
184
- setModalOptions(modalOptions2);
185
- setOpen(true);
186
- if (modalOptions2.connectedWalletOnly) {
187
- paymentState.setTokenMode("all");
188
- }
189
- if (pay.paymentState === "error") {
190
- setRoute(ROUTES.ERROR);
191
- } else if (pay.paymentState === "payment_started" || pay.paymentState === "payment_completed" || pay.paymentState === "payment_bounced") {
192
- setRoute(ROUTES.CONFIRMATION);
193
- } else if (modalOptions2.connectedWalletOnly) {
194
- setRoute(ROUTES.SELECT_TOKEN);
195
- } else {
196
- setRoute(ROUTES.SELECT_METHOD);
197
- }
198
- };
199
- const isUnderpaid = pay.order?.mode === DaimoPayOrderMode.HYDRATED && pay.order.sourceStatus === DaimoPayOrderStatusSource.WAITING_PAYMENT && pay.order.sourceTokenAmount != null;
200
- useEffect(() => {
201
- if (pay.paymentState === "error") {
202
- setRoute(ROUTES.ERROR);
203
- } else if (pay.paymentState === "payment_started" || pay.paymentState === "payment_completed" || pay.paymentState === "payment_bounced") {
204
- setRoute(ROUTES.CONFIRMATION, { event: "payment-started" });
205
- } else if (isUnderpaid) {
206
- paymentState.setSelectedDepositAddressOption(void 0);
207
- setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS);
208
- }
209
- }, [pay.paymentState, setRoute, isUnderpaid]);
210
- const value = {
211
- theme: ckTheme,
212
- setTheme,
213
- mode: ckMode,
214
- setMode,
215
- customTheme,
216
- setCustomTheme,
217
- lang: ckLang,
218
- setLang,
219
- disableMobileInjector,
220
- setDisableMobileInjector,
221
- setOnOpen,
222
- setOnClose,
223
- open,
224
- setOpen,
225
- route,
226
- setRoute,
227
- // Daimo Pay context
228
- uniquePaymentMethodPage,
229
- setUniquePaymentMethodPage,
230
- pendingConnectorId,
231
- setPendingConnectorId,
232
- sessionId,
233
- solanaConnector,
234
- setSolanaConnector,
235
- onConnect,
236
- // Other configuration
237
- options: opts,
238
- errorMessage,
239
- onSuccess,
240
- showContactSupport,
241
- setShowContactSupport,
242
- confirmationMessage,
243
- setConfirmationMessage,
244
- redirectReturnUrl,
245
- setRedirectReturnUrl,
246
- debugMode,
247
- log,
248
- displayError: (message, code) => {
249
- setErrorMessage(message);
250
- console.log("---------DAIMOPAY DEBUG---------");
251
- console.log(message);
252
- if (code) console.table(code);
253
- console.log("---------/DAIMOPAY DEBUG---------");
254
- },
255
- resize,
256
- triggerResize: () => onResize((prev) => prev + 1),
257
- // Above: generic ConnectKit context
258
- // Below: Daimo Pay context
259
- showPayment,
260
- paymentState,
261
- trpc
262
- };
263
- return createElement(
264
- PayContext.Provider,
265
- { value },
266
- /* @__PURE__ */ jsx(Web3ContextProvider, { children: /* @__PURE__ */ jsxs(ThemeProvider, { theme: defaultTheme, children: [
267
- children,
268
- /* @__PURE__ */ jsx(
269
- DaimoPayModal,
270
- {
271
- lang: ckLang,
272
- theme: ckTheme,
273
- mode,
274
- customTheme: ckCustomTheme,
275
- disableMobileInjector
276
- }
277
- )
278
- ] }) })
279
- );
280
- };
281
- const DaimoPayProvider = (props) => {
282
- const payApiUrl = props.payApiUrl ?? "https://pay-api.daimo.xyz/";
283
- const log = useMemo(
284
- () => props.debugMode ? (...args) => console.log(...args) : () => {
285
- },
286
- [props.debugMode]
287
- );
288
- return /* @__PURE__ */ jsx(
289
- PaymentProvider,
290
- {
291
- payApiUrl,
292
- log,
293
- debugMode: props.debugMode,
294
- children: /* @__PURE__ */ jsx(SolanaContextProvider, { solanaRpcUrl: props.solanaRpcUrl, children: /* @__PURE__ */ jsx(DaimoPayUIProvider, { ...props, payApiUrl, log }) })
295
- }
296
- );
297
- };
298
-
299
- export { DaimoPayProvider };
300
- //# sourceMappingURL=DaimoPayProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DaimoPayProvider.js","sources":["../../../src/provider/DaimoPayProvider.tsx"],"sourcesContent":["import {\n DaimoPayOrderMode,\n DaimoPayOrderStatusSource,\n debugJson,\n} from \"@daimo/pay-common\";\nimport { Buffer } from \"buffer\";\nimport React, {\n createElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ThemeProvider } from \"styled-components\";\nimport { WagmiContext } from \"wagmi\";\n\nimport { DaimoPayModal } from \"../components/DaimoPayModal\";\nimport { ROUTES } from \"../constants/routes\";\nimport { REQUIRED_CHAINS } from \"../defaultConfig\";\nimport { useChains } from \"../hooks/useChains\";\nimport {\n useConnectCallback,\n useConnectCallbackProps,\n} from \"../hooks/useConnectCallback\";\nimport { useDaimoPay } from \"../hooks/useDaimoPay\";\nimport { usePaymentState } from \"../hooks/usePaymentState\";\nimport { PaymentContext, PaymentProvider } from \"../provider/PaymentProvider\";\nimport defaultTheme from \"../styles/defaultTheme\";\nimport {\n CustomTheme,\n DaimoPayContextOptions,\n DaimoPayModalOptions,\n Languages,\n Mode,\n Theme,\n} from \"../types\";\nimport { createTrpcClient } from \"../utils/trpc\";\nimport { setInWalletPaymentUrlFromApiUrl } from \"../wallets/walletConfigs\";\nimport { PayContext, PayContextValue } from \"./PayContext\";\nimport {\n SolanaContextProvider,\n SolanaWalletName,\n} from \"./SolanaContextProvider\";\nimport { Web3ContextProvider } from \"./Web3ContextProvider\";\n\ntype DaimoPayUIProviderProps = {\n children?: React.ReactNode;\n theme?: Theme;\n mode?: Mode;\n customTheme?: CustomTheme;\n options?: DaimoPayContextOptions;\n debugMode?: boolean;\n /** Custom Pay API, useful for test and staging. */\n payApiUrl: string;\n log: (msg: string, ...props: any[]) => void;\n} & useConnectCallbackProps;\n\nconst DaimoPayUIProvider = ({\n children,\n theme = \"auto\",\n mode = \"auto\",\n customTheme,\n options,\n onConnect,\n onDisconnect,\n debugMode = false,\n payApiUrl,\n log,\n}: DaimoPayUIProviderProps) => {\n if (!React.useContext(PaymentContext)) {\n throw Error(\"DaimoPayProvider must be within a PaymentProvider\");\n }\n\n if (!React.useContext(WagmiContext)) {\n throw Error(\"DaimoPayProvider must be within a WagmiProvider\");\n }\n\n // Only allow for mounting DaimoPayProvider once, so we avoid weird global\n // state collisions.\n if (React.useContext(PayContext)) {\n throw new Error(\n \"Multiple, nested usages of DaimoPayProvider detected. Please use only one.\",\n );\n }\n\n useConnectCallback({\n onConnect,\n onDisconnect,\n });\n\n const chains = useChains();\n\n for (const requiredChain of REQUIRED_CHAINS) {\n if (!chains.some((c) => c.id === requiredChain.id)) {\n throw new Error(\n `Daimo Pay requires chains ${REQUIRED_CHAINS.map((c) => c.name).join(\", \")}. Use \\`getDefaultConfig\\` to automatically configure required chains.`,\n );\n }\n }\n\n // Default config options\n const defaultOptions: DaimoPayContextOptions = {\n language: \"en-US\",\n hideBalance: false,\n hideTooltips: false,\n hideQuestionMarkCTA: false,\n hideRecentBadge: false,\n avoidLayoutShift: true,\n embedGoogleFonts: false,\n truncateLongENSAddress: true,\n reducedMotion: false,\n disclaimer: null,\n bufferPolyfill: true,\n customAvatar: undefined,\n initialChainId: undefined,\n enforceSupportedChains: false,\n ethereumOnboardingUrl: undefined,\n walletOnboardingUrl: undefined,\n overlayBlur: undefined,\n disableMobileInjector: false,\n };\n\n const opts: DaimoPayContextOptions = Object.assign(\n {},\n defaultOptions,\n options,\n );\n\n if (typeof window !== \"undefined\") {\n // Buffer Polyfill, needed for bundlers that don't provide Node polyfills (e.g CRA, Vite, etc.)\n if (opts.bufferPolyfill) window.Buffer = window.Buffer ?? Buffer;\n\n // Some bundlers may need `global` and `process.env` polyfills as well\n // Not implemented here to avoid unexpected behaviors, but leaving example here for future reference\n /*\n * window.global = window.global ?? window;\n * window.process = window.process ?? { env: {} };\n */\n }\n\n const pay = useDaimoPay();\n\n const [ckTheme, setTheme] = useState<Theme>(theme);\n const [ckMode, setMode] = useState<Mode>(mode);\n const [ckCustomTheme, setCustomTheme] = useState<CustomTheme | undefined>(\n customTheme ?? {},\n );\n const [ckLang, setLang] = useState<Languages>(\"en-US\");\n const [disableMobileInjector, setDisableMobileInjector] = useState<boolean>(\n opts.disableMobileInjector ?? false,\n );\n\n const onOpenRef = useRef<(() => void) | undefined>();\n const onCloseRef = useRef<(() => void) | undefined>();\n const setOnOpen = useCallback((fn?: () => void) => {\n onOpenRef.current = fn;\n }, []);\n const setOnClose = useCallback((fn?: () => void) => {\n onCloseRef.current = fn;\n }, []);\n const [open, setOpenState] = useState<boolean>(false);\n const [lockPayParams, setLockPayParams] = useState<boolean>(false);\n const [paymentCompleted, setPaymentCompleted] = useState<boolean>(false);\n const [route, setRouteState] = useState<ROUTES>(ROUTES.SELECT_METHOD);\n const [modalOptions, setModalOptions] = useState<DaimoPayModalOptions>();\n\n // Daimo Pay context\n const [uniquePaymentMethodPage, setUniquePaymentMethodPage] =\n useState<ROUTES>(ROUTES.SELECT_METHOD);\n const [pendingConnectorId, setPendingConnectorId] = useState<\n string | undefined\n >(undefined);\n // Track sessions. Each generates separate intent IDs unless using externalId.\n const [sessionId] = useState(() => crypto.randomUUID().replaceAll(\"-\", \"\"));\n const [solanaConnector, setSolanaConnector] = useState<\n SolanaWalletName | undefined\n >();\n\n // Other configuration\n const [errorMessage, setErrorMessage] = useState<\n string | React.ReactNode | null\n >(\"\");\n const [showContactSupport, setShowContactSupport] = useState<boolean>(true);\n const [confirmationMessage, setConfirmationMessage] = useState<\n string | undefined\n >(undefined);\n const [redirectReturnUrl, setRedirectReturnUrl] = useState<\n string | undefined\n >(undefined);\n // Connect to the Daimo Pay TRPC API\n const trpc = useMemo(() => {\n return createTrpcClient(payApiUrl, sessionId);\n }, [payApiUrl, sessionId]);\n const [resize, onResize] = useState<number>(0);\n\n useEffect(() => {\n setInWalletPaymentUrlFromApiUrl(payApiUrl);\n }, [payApiUrl]);\n\n const setOpen = useCallback(\n (open: boolean, meta?: Record<string, any>) => {\n setOpenState(open);\n\n // Lock pay params starting from the first time the modal is opened to\n // prevent the daimo pay order from changing from under the user\n if (open) {\n setLockPayParams(true);\n }\n // Reset payment state on close if resetOnSuccess is true\n if (!open && paymentCompleted && modalOptions?.resetOnSuccess) {\n setPaymentCompleted(false);\n setLockPayParams(false);\n paymentState.resetOrder();\n }\n\n // Log the open/close event\n trpc.nav.mutate({\n action: open ? \"navOpenPay\" : \"navClosePay\",\n orderId: pay.order?.id?.toString(),\n data: meta ?? {},\n });\n\n // Run the onOpen and onClose callbacks\n if (open) onOpenRef.current?.();\n else onCloseRef.current?.();\n },\n // We don't have good caching on paymentState, so don't include it as a dep\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [trpc, pay.order?.id, modalOptions?.resetOnSuccess, paymentCompleted],\n );\n\n // Callback when a payment is successfully completed (regardless of whether\n // the final call succeeded or bounced)\n const onSuccess = useCallback(() => {\n if (modalOptions?.closeOnSuccess) {\n setTimeout(() => setOpen(false, { event: \"wait-success\" }), 1000);\n }\n setPaymentCompleted(true);\n }, [modalOptions?.closeOnSuccess, setOpen, setPaymentCompleted]);\n\n const setRoute = useCallback(\n (route: ROUTES, data?: Record<string, any>) => {\n const action = route.replace(\"daimoPay\", \"\");\n log(`[SET ROUTE] ${action} ${pay.order?.id} ${debugJson(data ?? {})}`);\n trpc.nav.mutate({\n action,\n orderId: pay.order?.id?.toString(),\n data: data ?? {},\n });\n setRouteState(route);\n },\n [trpc, pay.order?.id, log],\n );\n\n // Other Configuration\n useEffect(() => setTheme(theme), [theme]);\n useEffect(() => setLang(opts.language || \"en-US\"), [opts.language]);\n useEffect(\n () => setDisableMobileInjector(opts.disableMobileInjector ?? false),\n [opts.disableMobileInjector],\n );\n useEffect(() => setErrorMessage(null), [route, open]);\n\n // TODO: replace with dispatcher pattern; remove hook slop\n const paymentState = usePaymentState({\n trpc,\n lockPayParams,\n setRoute,\n log,\n redirectReturnUrl,\n });\n\n const showPayment = async (modalOptions: DaimoPayModalOptions) => {\n const id = pay.order?.id;\n log(\n `[PAY] showing modal ${debugJson({ id, modalOptions, paymentFsmState: pay.paymentState })}`,\n );\n\n setModalOptions(modalOptions);\n setOpen(true);\n if (modalOptions.connectedWalletOnly) {\n paymentState.setTokenMode(\"all\");\n }\n\n if (pay.paymentState === \"error\") {\n setRoute(ROUTES.ERROR);\n } else if (\n pay.paymentState === \"payment_started\" ||\n pay.paymentState === \"payment_completed\" ||\n pay.paymentState === \"payment_bounced\"\n ) {\n setRoute(ROUTES.CONFIRMATION);\n } else if (modalOptions.connectedWalletOnly) {\n setRoute(ROUTES.SELECT_TOKEN);\n } else {\n setRoute(ROUTES.SELECT_METHOD);\n }\n };\n\n // Watch when the order gets paid and navigate to confirmation\n // ...if underpaid, go to the deposit addr screen, let the user finish paying.\n const isUnderpaid =\n pay.order?.mode === DaimoPayOrderMode.HYDRATED &&\n pay.order.sourceStatus === DaimoPayOrderStatusSource.WAITING_PAYMENT &&\n pay.order.sourceTokenAmount != null;\n useEffect(() => {\n if (pay.paymentState === \"error\") {\n setRoute(ROUTES.ERROR);\n } else if (\n pay.paymentState === \"payment_started\" ||\n pay.paymentState === \"payment_completed\" ||\n pay.paymentState === \"payment_bounced\"\n ) {\n setRoute(ROUTES.CONFIRMATION, { event: \"payment-started\" });\n } else if (isUnderpaid) {\n paymentState.setSelectedDepositAddressOption(undefined);\n setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.paymentState, setRoute, isUnderpaid]);\n\n const value: PayContextValue = {\n theme: ckTheme,\n setTheme,\n mode: ckMode,\n setMode,\n customTheme,\n setCustomTheme,\n lang: ckLang,\n setLang,\n disableMobileInjector,\n setDisableMobileInjector,\n setOnOpen,\n setOnClose,\n open,\n setOpen,\n route,\n setRoute,\n // Daimo Pay context\n uniquePaymentMethodPage,\n setUniquePaymentMethodPage,\n pendingConnectorId,\n setPendingConnectorId,\n sessionId,\n solanaConnector,\n setSolanaConnector,\n onConnect,\n // Other configuration\n options: opts,\n errorMessage,\n onSuccess,\n showContactSupport,\n setShowContactSupport,\n confirmationMessage,\n setConfirmationMessage,\n redirectReturnUrl,\n setRedirectReturnUrl,\n debugMode,\n log,\n displayError: (message: string | React.ReactNode | null, code?: any) => {\n setErrorMessage(message);\n console.log(\"---------DAIMOPAY DEBUG---------\");\n console.log(message);\n if (code) console.table(code);\n console.log(\"---------/DAIMOPAY DEBUG---------\");\n },\n resize,\n triggerResize: () => onResize((prev) => prev + 1),\n\n // Above: generic ConnectKit context\n // Below: Daimo Pay context\n showPayment,\n paymentState,\n trpc,\n };\n\n return createElement(\n PayContext.Provider,\n { value },\n <Web3ContextProvider>\n <ThemeProvider theme={defaultTheme}>\n {children}\n <DaimoPayModal\n lang={ckLang}\n theme={ckTheme}\n mode={mode}\n customTheme={ckCustomTheme}\n disableMobileInjector={disableMobileInjector}\n />\n </ThemeProvider>\n </Web3ContextProvider>,\n );\n};\n\ntype DaimoPayProviderProps = {\n children?: React.ReactNode;\n theme?: Theme;\n mode?: Mode;\n customTheme?: CustomTheme;\n options?: DaimoPayContextOptions;\n debugMode?: boolean;\n /**\n * Be careful with this endpoint, some endpoints (incl. Alchemy) don't support\n * `signatureSubscribe` which leads to txes behaving erratically\n * (ex. successful txes take minutes to confirm instead of seconds)\n */\n solanaRpcUrl?: string;\n /** Custom Pay API, useful for test and staging. */\n payApiUrl?: string;\n} & useConnectCallbackProps;\n\n/**\n * Provides context for DaimoPayButton and hooks. Place in app root or layout.\n */\nexport const DaimoPayProvider = (props: DaimoPayProviderProps) => {\n const payApiUrl = props.payApiUrl ?? \"https://pay-api.daimo.xyz/\";\n const log = useMemo(\n () =>\n props.debugMode ? (...args: any[]) => console.log(...args) : () => {},\n [props.debugMode],\n );\n\n return (\n <PaymentProvider\n payApiUrl={payApiUrl}\n log={log}\n debugMode={props.debugMode}\n >\n <SolanaContextProvider solanaRpcUrl={props.solanaRpcUrl}>\n <DaimoPayUIProvider {...props} payApiUrl={payApiUrl} log={log} />\n </SolanaContextProvider>\n </PaymentProvider>\n );\n};\n"],"names":["open","route","modalOptions"],"mappings":"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"}