@daimo/pay 1.19.5 → 1.19.6

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 (436) hide show
  1. package/build/_virtual/common.js +4 -0
  2. package/build/_virtual/common.js.map +1 -0
  3. package/build/_virtual/common2.js +4 -0
  4. package/build/_virtual/common2.js.map +1 -0
  5. package/build/_virtual/hash.js +4 -0
  6. package/build/_virtual/hash.js.map +1 -0
  7. package/build/_virtual/hash2.js +4 -0
  8. package/build/_virtual/hash2.js.map +1 -0
  9. package/build/_virtual/index.js +4 -0
  10. package/build/_virtual/index.js.map +1 -0
  11. package/build/_virtual/index2.js +4 -0
  12. package/build/_virtual/index2.js.map +1 -0
  13. package/build/_virtual/inherits_browser.js +4 -0
  14. package/build/_virtual/inherits_browser.js.map +1 -0
  15. package/build/_virtual/ripemd.js +4 -0
  16. package/build/_virtual/ripemd.js.map +1 -0
  17. package/build/_virtual/sha.js +4 -0
  18. package/build/_virtual/sha.js.map +1 -0
  19. package/build/_virtual/utils.js +4 -0
  20. package/build/_virtual/utils.js.map +1 -0
  21. package/build/node_modules/@binance/w3w-utils/dist/index.js +7 -0
  22. package/build/node_modules/@binance/w3w-utils/dist/index.js.map +1 -0
  23. package/build/node_modules/@binance/w3w-utils/node_modules/eventemitter3/index.js +349 -0
  24. package/build/node_modules/@binance/w3w-utils/node_modules/eventemitter3/index.js.map +1 -0
  25. package/build/node_modules/hash.js/lib/hash/common.js +105 -0
  26. package/build/node_modules/hash.js/lib/hash/common.js.map +1 -0
  27. package/build/node_modules/hash.js/lib/hash/hmac.js +60 -0
  28. package/build/node_modules/hash.js/lib/hash/hmac.js.map +1 -0
  29. package/build/node_modules/hash.js/lib/hash/ripemd.js +159 -0
  30. package/build/node_modules/hash.js/lib/hash/ripemd.js.map +1 -0
  31. package/build/node_modules/hash.js/lib/hash/sha/1.js +88 -0
  32. package/build/node_modules/hash.js/lib/hash/sha/1.js.map +1 -0
  33. package/build/node_modules/hash.js/lib/hash/sha/224.js +42 -0
  34. package/build/node_modules/hash.js/lib/hash/sha/224.js.map +1 -0
  35. package/build/node_modules/hash.js/lib/hash/sha/256.js +120 -0
  36. package/build/node_modules/hash.js/lib/hash/sha/256.js.map +1 -0
  37. package/build/node_modules/hash.js/lib/hash/sha/384.js +48 -0
  38. package/build/node_modules/hash.js/lib/hash/sha/384.js.map +1 -0
  39. package/build/node_modules/hash.js/lib/hash/sha/512.js +344 -0
  40. package/build/node_modules/hash.js/lib/hash/sha/512.js.map +1 -0
  41. package/build/node_modules/hash.js/lib/hash/sha/common.js +61 -0
  42. package/build/node_modules/hash.js/lib/hash/sha/common.js.map +1 -0
  43. package/build/node_modules/hash.js/lib/hash/sha.js +23 -0
  44. package/build/node_modules/hash.js/lib/hash/sha.js.map +1 -0
  45. package/build/node_modules/hash.js/lib/hash/utils.js +291 -0
  46. package/build/node_modules/hash.js/lib/hash/utils.js.map +1 -0
  47. package/build/node_modules/hash.js/lib/hash.js +34 -0
  48. package/build/node_modules/hash.js/lib/hash.js.map +1 -0
  49. package/build/node_modules/inherits/inherits_browser.js +39 -0
  50. package/build/node_modules/inherits/inherits_browser.js.map +1 -0
  51. package/build/node_modules/minimalistic-assert/index.js +22 -0
  52. package/build/node_modules/minimalistic-assert/index.js.map +1 -0
  53. package/build/package.json.js +2 -2
  54. package/build/pay/packages/connectkit/package.json.js +123 -0
  55. package/build/pay/packages/connectkit/package.json.js.map +1 -0
  56. package/build/pay/packages/connectkit/src/assets/MobileWithLogos.js +329 -0
  57. package/build/pay/packages/connectkit/src/assets/MobileWithLogos.js.map +1 -0
  58. package/build/pay/packages/connectkit/src/assets/ScanIconWithLogos.js +243 -0
  59. package/build/pay/packages/connectkit/src/assets/ScanIconWithLogos.js.map +1 -0
  60. package/build/pay/packages/connectkit/src/assets/browsers.js +969 -0
  61. package/build/pay/packages/connectkit/src/assets/browsers.js.map +1 -0
  62. package/build/pay/packages/connectkit/src/assets/chains.js +639 -0
  63. package/build/pay/packages/connectkit/src/assets/chains.js.map +1 -0
  64. package/build/pay/packages/connectkit/src/assets/icons.js +273 -0
  65. package/build/pay/packages/connectkit/src/assets/icons.js.map +1 -0
  66. package/build/pay/packages/connectkit/src/assets/logos.js +1722 -0
  67. package/build/pay/packages/connectkit/src/assets/logos.js.map +1 -0
  68. package/build/pay/packages/connectkit/src/assets/wave.js +46 -0
  69. package/build/pay/packages/connectkit/src/assets/wave.js.map +1 -0
  70. package/build/pay/packages/connectkit/src/components/Common/Alert/index.js +13 -0
  71. package/build/pay/packages/connectkit/src/components/Common/Alert/index.js.map +1 -0
  72. package/build/pay/packages/connectkit/src/components/Common/Alert/styles.js +55 -0
  73. package/build/pay/packages/connectkit/src/components/Common/Alert/styles.js.map +1 -0
  74. package/build/pay/packages/connectkit/src/components/Common/AmountInput/AmountInputField.js +71 -0
  75. package/build/pay/packages/connectkit/src/components/Common/AmountInput/AmountInputField.js.map +1 -0
  76. package/build/pay/packages/connectkit/src/components/Common/AmountInput/index.js +159 -0
  77. package/build/pay/packages/connectkit/src/components/Common/AmountInput/index.js.map +1 -0
  78. package/build/pay/packages/connectkit/src/components/Common/Avatar/index.js +78 -0
  79. package/build/pay/packages/connectkit/src/components/Common/Avatar/index.js.map +1 -0
  80. package/build/pay/packages/connectkit/src/components/Common/Avatar/styles.js +54 -0
  81. package/build/pay/packages/connectkit/src/components/Common/Avatar/styles.js.map +1 -0
  82. package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/index.js +29 -0
  83. package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/index.js.map +1 -0
  84. package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/styles.js +20 -0
  85. package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/styles.js.map +1 -0
  86. package/build/pay/packages/connectkit/src/components/Common/Button/index.js +144 -0
  87. package/build/pay/packages/connectkit/src/components/Common/Button/index.js.map +1 -0
  88. package/build/pay/packages/connectkit/src/components/Common/Button/styles.js +287 -0
  89. package/build/pay/packages/connectkit/src/components/Common/Button/styles.js.map +1 -0
  90. package/build/pay/packages/connectkit/src/components/Common/Chain/index.js +141 -0
  91. package/build/pay/packages/connectkit/src/components/Common/Chain/index.js.map +1 -0
  92. package/build/pay/packages/connectkit/src/components/Common/Chain/styles.js +90 -0
  93. package/build/pay/packages/connectkit/src/components/Common/Chain/styles.js.map +1 -0
  94. package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/index.js +250 -0
  95. package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/index.js.map +1 -0
  96. package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/styles.js +226 -0
  97. package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/styles.js.map +1 -0
  98. package/build/pay/packages/connectkit/src/components/Common/CircleTimer.js +92 -0
  99. package/build/pay/packages/connectkit/src/components/Common/CircleTimer.js.map +1 -0
  100. package/build/pay/packages/connectkit/src/components/Common/ConnectorList/index.js +121 -0
  101. package/build/pay/packages/connectkit/src/components/Common/ConnectorList/index.js.map +1 -0
  102. package/build/pay/packages/connectkit/src/components/Common/ConnectorList/styles.js +344 -0
  103. package/build/pay/packages/connectkit/src/components/Common/ConnectorList/styles.js.map +1 -0
  104. package/build/pay/packages/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +78 -0
  105. package/build/pay/packages/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -0
  106. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/QRCode.js +132 -0
  107. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/QRCode.js.map +1 -0
  108. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/index.js +89 -0
  109. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/index.js.map +1 -0
  110. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/styles.js +142 -0
  111. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/styles.js.map +1 -0
  112. package/build/pay/packages/connectkit/src/components/Common/FitText/index.js +34 -0
  113. package/build/pay/packages/connectkit/src/components/Common/FitText/index.js.map +1 -0
  114. package/build/pay/packages/connectkit/src/components/Common/Modal/index.js +547 -0
  115. package/build/pay/packages/connectkit/src/components/Common/Modal/index.js.map +1 -0
  116. package/build/pay/packages/connectkit/src/components/Common/Modal/styles.js +665 -0
  117. package/build/pay/packages/connectkit/src/components/Common/Modal/styles.js.map +1 -0
  118. package/build/pay/packages/connectkit/src/components/Common/OptionsList/index.js +145 -0
  119. package/build/pay/packages/connectkit/src/components/Common/OptionsList/index.js.map +1 -0
  120. package/build/pay/packages/connectkit/src/components/Common/OptionsList/styles.js +138 -0
  121. package/build/pay/packages/connectkit/src/components/Common/OptionsList/styles.js.map +1 -0
  122. package/build/pay/packages/connectkit/src/components/Common/OrderHeader/index.js +148 -0
  123. package/build/pay/packages/connectkit/src/components/Common/OrderHeader/index.js.map +1 -0
  124. package/build/pay/packages/connectkit/src/components/Common/PaymentBreakdown/index.js +70 -0
  125. package/build/pay/packages/connectkit/src/components/Common/PaymentBreakdown/index.js.map +1 -0
  126. package/build/pay/packages/connectkit/src/components/Common/Portal/index.js +30 -0
  127. package/build/pay/packages/connectkit/src/components/Common/Portal/index.js.map +1 -0
  128. package/build/pay/packages/connectkit/src/components/Common/PoweredByFooter/index.js +39 -0
  129. package/build/pay/packages/connectkit/src/components/Common/PoweredByFooter/index.js.map +1 -0
  130. package/build/pay/packages/connectkit/src/components/Common/ScrollArea/index.js +120 -0
  131. package/build/pay/packages/connectkit/src/components/Common/ScrollArea/index.js.map +1 -0
  132. package/build/pay/packages/connectkit/src/components/Common/ScrollArea/styles.js +169 -0
  133. package/build/pay/packages/connectkit/src/components/Common/ScrollArea/styles.js.map +1 -0
  134. package/build/pay/packages/connectkit/src/components/Common/SelectAnotherMethodButton/index.js +96 -0
  135. package/build/pay/packages/connectkit/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -0
  136. package/build/pay/packages/connectkit/src/components/Common/Spinner/index.js +64 -0
  137. package/build/pay/packages/connectkit/src/components/Common/Spinner/index.js.map +1 -0
  138. package/build/pay/packages/connectkit/src/components/Common/Spinner/styles.js +22 -0
  139. package/build/pay/packages/connectkit/src/components/Common/Spinner/styles.js.map +1 -0
  140. package/build/pay/packages/connectkit/src/components/Common/SwitchButton/index.js +43 -0
  141. package/build/pay/packages/connectkit/src/components/Common/SwitchButton/index.js.map +1 -0
  142. package/build/pay/packages/connectkit/src/components/Common/ThemedButton/index.js +46 -0
  143. package/build/pay/packages/connectkit/src/components/Common/ThemedButton/index.js.map +1 -0
  144. package/build/pay/packages/connectkit/src/components/Common/ThemedButton/styles.js +152 -0
  145. package/build/pay/packages/connectkit/src/components/Common/ThemedButton/styles.js.map +1 -0
  146. package/build/pay/packages/connectkit/src/components/Common/TokenChainLogo/index.js +62 -0
  147. package/build/pay/packages/connectkit/src/components/Common/TokenChainLogo/index.js.map +1 -0
  148. package/build/pay/packages/connectkit/src/components/Common/Tooltip/index.js +129 -0
  149. package/build/pay/packages/connectkit/src/components/Common/Tooltip/index.js.map +1 -0
  150. package/build/pay/packages/connectkit/src/components/Common/Tooltip/styles.js +81 -0
  151. package/build/pay/packages/connectkit/src/components/Common/Tooltip/styles.js.map +1 -0
  152. package/build/pay/packages/connectkit/src/components/Common/WalletChainLogo/index.js +31 -0
  153. package/build/pay/packages/connectkit/src/components/Common/WalletChainLogo/index.js.map +1 -0
  154. package/build/pay/packages/connectkit/src/components/DaimoPayButton/index.js +196 -0
  155. package/build/pay/packages/connectkit/src/components/DaimoPayButton/index.js.map +1 -0
  156. package/build/pay/packages/connectkit/src/components/DaimoPayButton/styles.js +50 -0
  157. package/build/pay/packages/connectkit/src/components/DaimoPayButton/styles.js.map +1 -0
  158. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectUsing.js +70 -0
  159. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectUsing.js.map +1 -0
  160. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js +339 -0
  161. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -0
  162. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js +131 -0
  163. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -0
  164. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js +86 -0
  165. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -0
  166. package/build/pay/packages/connectkit/src/components/DaimoPayModal/index.js +605 -0
  167. package/build/pay/packages/connectkit/src/components/DaimoPayModal/index.js.map +1 -0
  168. package/build/pay/packages/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +25 -0
  169. package/build/pay/packages/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -0
  170. package/build/pay/packages/connectkit/src/components/Pages/About/graphics.js +853 -0
  171. package/build/pay/packages/connectkit/src/components/Pages/About/graphics.js.map +1 -0
  172. package/build/pay/packages/connectkit/src/components/Pages/About/index.js +222 -0
  173. package/build/pay/packages/connectkit/src/components/Pages/About/index.js.map +1 -0
  174. package/build/pay/packages/connectkit/src/components/Pages/About/styles.js +140 -0
  175. package/build/pay/packages/connectkit/src/components/Pages/About/styles.js.map +1 -0
  176. package/build/pay/packages/connectkit/src/components/Pages/Confirmation/index.js +126 -0
  177. package/build/pay/packages/connectkit/src/components/Pages/Confirmation/index.js.map +1 -0
  178. package/build/pay/packages/connectkit/src/components/Pages/Connectors/index.js +26 -0
  179. package/build/pay/packages/connectkit/src/components/Pages/Connectors/index.js.map +1 -0
  180. package/build/pay/packages/connectkit/src/components/Pages/Error/index.js +57 -0
  181. package/build/pay/packages/connectkit/src/components/Pages/Error/index.js.map +1 -0
  182. package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/index.js +108 -0
  183. package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/index.js.map +1 -0
  184. package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/styles.js +64 -0
  185. package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/styles.js.map +1 -0
  186. package/build/pay/packages/connectkit/src/components/Pages/Onboarding/index.js +34 -0
  187. package/build/pay/packages/connectkit/src/components/Pages/Onboarding/index.js.map +1 -0
  188. package/build/pay/packages/connectkit/src/components/Pages/Onboarding/styles.js +229 -0
  189. package/build/pay/packages/connectkit/src/components/Pages/Onboarding/styles.js.map +1 -0
  190. package/build/pay/packages/connectkit/src/components/Pages/PayWithToken/index.js +157 -0
  191. package/build/pay/packages/connectkit/src/components/Pages/PayWithToken/index.js.map +1 -0
  192. package/build/pay/packages/connectkit/src/components/Pages/SelectAmount/index.js +24 -0
  193. package/build/pay/packages/connectkit/src/components/Pages/SelectAmount/index.js.map +1 -0
  194. package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js +79 -0
  195. package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -0
  196. package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressChain/index.js +80 -0
  197. package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -0
  198. package/build/pay/packages/connectkit/src/components/Pages/SelectExchange/index.js +62 -0
  199. package/build/pay/packages/connectkit/src/components/Pages/SelectExchange/index.js.map +1 -0
  200. package/build/pay/packages/connectkit/src/components/Pages/SelectExternalAmount/index.js +80 -0
  201. package/build/pay/packages/connectkit/src/components/Pages/SelectExternalAmount/index.js.map +1 -0
  202. package/build/pay/packages/connectkit/src/components/Pages/SelectMethod/index.js +315 -0
  203. package/build/pay/packages/connectkit/src/components/Pages/SelectMethod/index.js.map +1 -0
  204. package/build/pay/packages/connectkit/src/components/Pages/SelectToken/index.js +99 -0
  205. package/build/pay/packages/connectkit/src/components/Pages/SelectToken/index.js.map +1 -0
  206. package/build/pay/packages/connectkit/src/components/Pages/SelectWalletAmount/index.js +71 -0
  207. package/build/pay/packages/connectkit/src/components/Pages/SelectWalletAmount/index.js.map +1 -0
  208. package/build/pay/packages/connectkit/src/components/Pages/SelectWalletChain/index.js +55 -0
  209. package/build/pay/packages/connectkit/src/components/Pages/SelectWalletChain/index.js.map +1 -0
  210. package/build/pay/packages/connectkit/src/components/Pages/SelectZKP/index.js +41 -0
  211. package/build/pay/packages/connectkit/src/components/Pages/SelectZKP/index.js.map +1 -0
  212. package/build/pay/packages/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js +94 -0
  213. package/build/pay/packages/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -0
  214. package/build/pay/packages/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js +92 -0
  215. package/build/pay/packages/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -0
  216. package/build/pay/packages/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js +24 -0
  217. package/build/pay/packages/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -0
  218. package/build/pay/packages/connectkit/src/components/Pages/SwitchNetworks/index.js +45 -0
  219. package/build/pay/packages/connectkit/src/components/Pages/SwitchNetworks/index.js.map +1 -0
  220. package/build/pay/packages/connectkit/src/components/Pages/WaitingDepositAddress/index.js +586 -0
  221. package/build/pay/packages/connectkit/src/components/Pages/WaitingDepositAddress/index.js.map +1 -0
  222. package/build/pay/packages/connectkit/src/components/Pages/WaitingExternal/index.js +174 -0
  223. package/build/pay/packages/connectkit/src/components/Pages/WaitingExternal/index.js.map +1 -0
  224. package/build/pay/packages/connectkit/src/components/Pages/WaitingWallet/index.js +49 -0
  225. package/build/pay/packages/connectkit/src/components/Pages/WaitingWallet/index.js.map +1 -0
  226. package/build/pay/packages/connectkit/src/components/Pages/Warning/index.js +56 -0
  227. package/build/pay/packages/connectkit/src/components/Pages/Warning/index.js.map +1 -0
  228. package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/index.js +104 -0
  229. package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/index.js.map +1 -0
  230. package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/styles.js +117 -0
  231. package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/styles.js.map +1 -0
  232. package/build/pay/packages/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js +29 -0
  233. package/build/pay/packages/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -0
  234. package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/index.js +68 -0
  235. package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/index.js.map +1 -0
  236. package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/styles.js +66 -0
  237. package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/styles.js.map +1 -0
  238. package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/index.js +24 -0
  239. package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -0
  240. package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js +40 -0
  241. package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -0
  242. package/build/pay/packages/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js +37 -0
  243. package/build/pay/packages/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -0
  244. package/build/pay/packages/connectkit/src/components/Spinners/styles.js +32 -0
  245. package/build/pay/packages/connectkit/src/components/Spinners/styles.js.map +1 -0
  246. package/build/pay/packages/connectkit/src/constants/defaultTheme.js +6 -0
  247. package/build/pay/packages/connectkit/src/constants/defaultTheme.js.map +1 -0
  248. package/build/pay/packages/connectkit/src/constants/limits.js +4 -0
  249. package/build/pay/packages/connectkit/src/constants/limits.js.map +1 -0
  250. package/build/pay/packages/connectkit/src/constants/paymentOptions.js +62 -0
  251. package/build/pay/packages/connectkit/src/constants/paymentOptions.js.map +1 -0
  252. package/build/pay/packages/connectkit/src/constants/routes.js +31 -0
  253. package/build/pay/packages/connectkit/src/constants/routes.js.map +1 -0
  254. package/build/pay/packages/connectkit/src/constants/wallets.js +7 -0
  255. package/build/pay/packages/connectkit/src/constants/wallets.js.map +1 -0
  256. package/build/pay/packages/connectkit/src/defaultConfig.js +64 -0
  257. package/build/pay/packages/connectkit/src/defaultConfig.js.map +1 -0
  258. package/build/pay/packages/connectkit/src/defaultConnectors.js +37 -0
  259. package/build/pay/packages/connectkit/src/defaultConnectors.js.map +1 -0
  260. package/build/pay/packages/connectkit/src/hooks/useChainIsSupported.js +10 -0
  261. package/build/pay/packages/connectkit/src/hooks/useChainIsSupported.js.map +1 -0
  262. package/build/pay/packages/connectkit/src/hooks/useChains.js +10 -0
  263. package/build/pay/packages/connectkit/src/hooks/useChains.js.map +1 -0
  264. package/build/pay/packages/connectkit/src/hooks/useConnect.js +61 -0
  265. package/build/pay/packages/connectkit/src/hooks/useConnect.js.map +1 -0
  266. package/build/pay/packages/connectkit/src/hooks/useConnectCallback.js +21 -0
  267. package/build/pay/packages/connectkit/src/hooks/useConnectCallback.js.map +1 -0
  268. package/build/pay/packages/connectkit/src/hooks/useConnectors.js +20 -0
  269. package/build/pay/packages/connectkit/src/hooks/useConnectors.js.map +1 -0
  270. package/build/pay/packages/connectkit/src/hooks/useDaimoPay.js +131 -0
  271. package/build/pay/packages/connectkit/src/hooks/useDaimoPay.js.map +1 -0
  272. package/build/pay/packages/connectkit/src/hooks/useDaimoPayStatus.js +12 -0
  273. package/build/pay/packages/connectkit/src/hooks/useDaimoPayStatus.js.map +1 -0
  274. package/build/pay/packages/connectkit/src/hooks/useDaimoPayUI.js +15 -0
  275. package/build/pay/packages/connectkit/src/hooks/useDaimoPayUI.js.map +1 -0
  276. package/build/pay/packages/connectkit/src/hooks/useDepositAddressOptions.js +35 -0
  277. package/build/pay/packages/connectkit/src/hooks/useDepositAddressOptions.js.map +1 -0
  278. package/build/pay/packages/connectkit/src/hooks/useEnsFallbackConfig.js +16 -0
  279. package/build/pay/packages/connectkit/src/hooks/useEnsFallbackConfig.js.map +1 -0
  280. package/build/pay/packages/connectkit/src/hooks/useExternalPaymentOptions.js +79 -0
  281. package/build/pay/packages/connectkit/src/hooks/useExternalPaymentOptions.js.map +1 -0
  282. package/build/pay/packages/connectkit/src/hooks/useFitText.js +133 -0
  283. package/build/pay/packages/connectkit/src/hooks/useFitText.js.map +1 -0
  284. package/build/pay/packages/connectkit/src/hooks/useFocusTrap.js +53 -0
  285. package/build/pay/packages/connectkit/src/hooks/useFocusTrap.js.map +1 -0
  286. package/build/pay/packages/connectkit/src/hooks/useIsMobile.js +11 -0
  287. package/build/pay/packages/connectkit/src/hooks/useIsMobile.js.map +1 -0
  288. package/build/pay/packages/connectkit/src/hooks/useIsMounted.js +10 -0
  289. package/build/pay/packages/connectkit/src/hooks/useIsMounted.js.map +1 -0
  290. package/build/pay/packages/connectkit/src/hooks/useLastConnector.js +24 -0
  291. package/build/pay/packages/connectkit/src/hooks/useLastConnector.js.map +1 -0
  292. package/build/pay/packages/connectkit/src/hooks/useLocales.js +60 -0
  293. package/build/pay/packages/connectkit/src/hooks/useLocales.js.map +1 -0
  294. package/build/pay/packages/connectkit/src/hooks/useLockBodyScroll.js +47 -0
  295. package/build/pay/packages/connectkit/src/hooks/useLockBodyScroll.js.map +1 -0
  296. package/build/pay/packages/connectkit/src/hooks/useOrderUsdLimits.js +24 -0
  297. package/build/pay/packages/connectkit/src/hooks/useOrderUsdLimits.js.map +1 -0
  298. package/build/pay/packages/connectkit/src/hooks/usePayContext.js +11 -0
  299. package/build/pay/packages/connectkit/src/hooks/usePayContext.js.map +1 -0
  300. package/build/pay/packages/connectkit/src/hooks/usePaymentState.js +410 -0
  301. package/build/pay/packages/connectkit/src/hooks/usePaymentState.js.map +1 -0
  302. package/build/pay/packages/connectkit/src/hooks/usePrevious.js +13 -0
  303. package/build/pay/packages/connectkit/src/hooks/usePrevious.js.map +1 -0
  304. package/build/pay/packages/connectkit/src/hooks/useSolanaPaymentOptions.js +38 -0
  305. package/build/pay/packages/connectkit/src/hooks/useSolanaPaymentOptions.js.map +1 -0
  306. package/build/pay/packages/connectkit/src/hooks/useTokenOptions.js +152 -0
  307. package/build/pay/packages/connectkit/src/hooks/useTokenOptions.js.map +1 -0
  308. package/build/pay/packages/connectkit/src/hooks/useUntronAvailability.js +32 -0
  309. package/build/pay/packages/connectkit/src/hooks/useUntronAvailability.js.map +1 -0
  310. package/build/pay/packages/connectkit/src/hooks/useWalletPaymentOptions.js +97 -0
  311. package/build/pay/packages/connectkit/src/hooks/useWalletPaymentOptions.js.map +1 -0
  312. package/build/pay/packages/connectkit/src/hooks/useWindowSize.js +23 -0
  313. package/build/pay/packages/connectkit/src/hooks/useWindowSize.js.map +1 -0
  314. package/build/pay/packages/connectkit/src/index.js +14 -0
  315. package/build/pay/packages/connectkit/src/index.js.map +1 -0
  316. package/build/pay/packages/connectkit/src/localizations/index.js +48 -0
  317. package/build/pay/packages/connectkit/src/localizations/index.js.map +1 -0
  318. package/build/pay/packages/connectkit/src/localizations/locales/ar-AE.js +95 -0
  319. package/build/pay/packages/connectkit/src/localizations/locales/ar-AE.js.map +1 -0
  320. package/build/pay/packages/connectkit/src/localizations/locales/ca-AD.js +93 -0
  321. package/build/pay/packages/connectkit/src/localizations/locales/ca-AD.js.map +1 -0
  322. package/build/pay/packages/connectkit/src/localizations/locales/ee-EE.js +101 -0
  323. package/build/pay/packages/connectkit/src/localizations/locales/ee-EE.js.map +1 -0
  324. package/build/pay/packages/connectkit/src/localizations/locales/en-US.js +145 -0
  325. package/build/pay/packages/connectkit/src/localizations/locales/en-US.js.map +1 -0
  326. package/build/pay/packages/connectkit/src/localizations/locales/es-ES.js +138 -0
  327. package/build/pay/packages/connectkit/src/localizations/locales/es-ES.js.map +1 -0
  328. package/build/pay/packages/connectkit/src/localizations/locales/fa-IR.js +93 -0
  329. package/build/pay/packages/connectkit/src/localizations/locales/fa-IR.js.map +1 -0
  330. package/build/pay/packages/connectkit/src/localizations/locales/fr-FR.js +93 -0
  331. package/build/pay/packages/connectkit/src/localizations/locales/fr-FR.js.map +1 -0
  332. package/build/pay/packages/connectkit/src/localizations/locales/ja-JP.js +93 -0
  333. package/build/pay/packages/connectkit/src/localizations/locales/ja-JP.js.map +1 -0
  334. package/build/pay/packages/connectkit/src/localizations/locales/pt-BR.js +145 -0
  335. package/build/pay/packages/connectkit/src/localizations/locales/pt-BR.js.map +1 -0
  336. package/build/pay/packages/connectkit/src/localizations/locales/ru-RU.js +97 -0
  337. package/build/pay/packages/connectkit/src/localizations/locales/ru-RU.js.map +1 -0
  338. package/build/pay/packages/connectkit/src/localizations/locales/tr-TR.js +101 -0
  339. package/build/pay/packages/connectkit/src/localizations/locales/tr-TR.js.map +1 -0
  340. package/build/pay/packages/connectkit/src/localizations/locales/vi-VN.js +101 -0
  341. package/build/pay/packages/connectkit/src/localizations/locales/vi-VN.js.map +1 -0
  342. package/build/pay/packages/connectkit/src/localizations/locales/zh-CN.js +93 -0
  343. package/build/pay/packages/connectkit/src/localizations/locales/zh-CN.js.map +1 -0
  344. package/build/pay/packages/connectkit/src/payment/paymentEffects.js +268 -0
  345. package/build/pay/packages/connectkit/src/payment/paymentEffects.js.map +1 -0
  346. package/build/pay/packages/connectkit/src/payment/paymentFsm.js +234 -0
  347. package/build/pay/packages/connectkit/src/payment/paymentFsm.js.map +1 -0
  348. package/build/pay/packages/connectkit/src/payment/paymentStore.js +18 -0
  349. package/build/pay/packages/connectkit/src/payment/paymentStore.js.map +1 -0
  350. package/build/pay/packages/connectkit/src/payment/paymentUtils.js +10 -0
  351. package/build/pay/packages/connectkit/src/payment/paymentUtils.js.map +1 -0
  352. package/build/pay/packages/connectkit/src/provider/DaimoPayProvider.js +292 -0
  353. package/build/pay/packages/connectkit/src/provider/DaimoPayProvider.js.map +1 -0
  354. package/build/pay/packages/connectkit/src/provider/PayContext.js +6 -0
  355. package/build/pay/packages/connectkit/src/provider/PayContext.js.map +1 -0
  356. package/build/pay/packages/connectkit/src/provider/PaymentProvider.js +29 -0
  357. package/build/pay/packages/connectkit/src/provider/PaymentProvider.js.map +1 -0
  358. package/build/pay/packages/connectkit/src/provider/SolanaContextProvider.js +14 -0
  359. package/build/pay/packages/connectkit/src/provider/SolanaContextProvider.js.map +1 -0
  360. package/build/pay/packages/connectkit/src/provider/Web3ContextProvider.js +36 -0
  361. package/build/pay/packages/connectkit/src/provider/Web3ContextProvider.js.map +1 -0
  362. package/build/pay/packages/connectkit/src/stateStore.js +36 -0
  363. package/build/pay/packages/connectkit/src/stateStore.js.map +1 -0
  364. package/build/pay/packages/connectkit/src/styles/defaultTheme.js +80 -0
  365. package/build/pay/packages/connectkit/src/styles/defaultTheme.js.map +1 -0
  366. package/build/pay/packages/connectkit/src/styles/index.js +313 -0
  367. package/build/pay/packages/connectkit/src/styles/index.js.map +1 -0
  368. package/build/pay/packages/connectkit/src/styles/styled/index.js +6 -0
  369. package/build/pay/packages/connectkit/src/styles/styled/index.js.map +1 -0
  370. package/build/pay/packages/connectkit/src/styles/themes/base.js +141 -0
  371. package/build/pay/packages/connectkit/src/styles/themes/base.js.map +1 -0
  372. package/build/pay/packages/connectkit/src/styles/themes/index.js +13 -0
  373. package/build/pay/packages/connectkit/src/styles/themes/index.js.map +1 -0
  374. package/build/pay/packages/connectkit/src/styles/themes/midnight.js +76 -0
  375. package/build/pay/packages/connectkit/src/styles/themes/midnight.js.map +1 -0
  376. package/build/pay/packages/connectkit/src/styles/themes/minimal.js +96 -0
  377. package/build/pay/packages/connectkit/src/styles/themes/minimal.js.map +1 -0
  378. package/build/pay/packages/connectkit/src/styles/themes/nouns.js +81 -0
  379. package/build/pay/packages/connectkit/src/styles/themes/nouns.js.map +1 -0
  380. package/build/pay/packages/connectkit/src/styles/themes/retro.js +106 -0
  381. package/build/pay/packages/connectkit/src/styles/themes/retro.js.map +1 -0
  382. package/build/pay/packages/connectkit/src/styles/themes/rounded.js +106 -0
  383. package/build/pay/packages/connectkit/src/styles/themes/rounded.js.map +1 -0
  384. package/build/pay/packages/connectkit/src/styles/themes/soft.js +71 -0
  385. package/build/pay/packages/connectkit/src/styles/themes/soft.js.map +1 -0
  386. package/build/pay/packages/connectkit/src/styles/themes/web95.js +132 -0
  387. package/build/pay/packages/connectkit/src/styles/themes/web95.js.map +1 -0
  388. package/build/pay/packages/connectkit/src/utils/exports.js +6 -0
  389. package/build/pay/packages/connectkit/src/utils/exports.js.map +1 -0
  390. package/build/pay/packages/connectkit/src/utils/format.js +45 -0
  391. package/build/pay/packages/connectkit/src/utils/format.js.map +1 -0
  392. package/build/pay/packages/connectkit/src/utils/index.js +42 -0
  393. package/build/pay/packages/connectkit/src/utils/index.js.map +1 -0
  394. package/build/pay/packages/connectkit/src/utils/p3.js +15 -0
  395. package/build/pay/packages/connectkit/src/utils/p3.js.map +1 -0
  396. package/build/pay/packages/connectkit/src/utils/platform.js +11 -0
  397. package/build/pay/packages/connectkit/src/utils/platform.js.map +1 -0
  398. package/build/pay/packages/connectkit/src/utils/polling.js +35 -0
  399. package/build/pay/packages/connectkit/src/utils/polling.js.map +1 -0
  400. package/build/pay/packages/connectkit/src/utils/supportUrl.js +16 -0
  401. package/build/pay/packages/connectkit/src/utils/supportUrl.js.map +1 -0
  402. package/build/pay/packages/connectkit/src/utils/trpc.js +19 -0
  403. package/build/pay/packages/connectkit/src/utils/trpc.js.map +1 -0
  404. package/build/pay/packages/connectkit/src/utils/validateInput.js +16 -0
  405. package/build/pay/packages/connectkit/src/utils/validateInput.js.map +1 -0
  406. package/build/pay/packages/connectkit/src/wallets/index.js +21 -0
  407. package/build/pay/packages/connectkit/src/wallets/index.js.map +1 -0
  408. package/build/pay/packages/connectkit/src/wallets/useWallets.js +278 -0
  409. package/build/pay/packages/connectkit/src/wallets/useWallets.js.map +1 -0
  410. package/build/pay/packages/connectkit/src/wallets/walletConfigs.js +281 -0
  411. package/build/pay/packages/connectkit/src/wallets/walletConfigs.js.map +1 -0
  412. package/build/pay/packages/connectkit/src/world-mini-app/WorldPayButton.js +165 -0
  413. package/build/pay/packages/connectkit/src/world-mini-app/WorldPayButton.js.map +1 -0
  414. package/build/pay/packages/connectkit/src/world-mini-app/promptWorldPayment.js +59 -0
  415. package/build/pay/packages/connectkit/src/world-mini-app/promptWorldPayment.js.map +1 -0
  416. package/build/pay/packages/connectkit/src/world-mini-app/useWithdrawToWorld.js +76 -0
  417. package/build/pay/packages/connectkit/src/world-mini-app/useWithdrawToWorld.js.map +1 -0
  418. package/build/pay/packages/connectkit/src/world-mini-app/useWorldSignIn.js +74 -0
  419. package/build/pay/packages/connectkit/src/world-mini-app/useWorldSignIn.js.map +1 -0
  420. package/build/pay/packages/connectkit/src/world.js +4 -0
  421. package/build/pay/packages/connectkit/src/world.js.map +1 -0
  422. package/build/src/components/Common/PoweredByFooter/index.js +10 -37
  423. package/build/src/components/Common/PoweredByFooter/index.js.map +1 -1
  424. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +3 -0
  425. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
  426. package/build/src/components/Pages/Confirmation/index.js +8 -10
  427. package/build/src/components/Pages/Confirmation/index.js.map +1 -1
  428. package/build/src/payment/paymentEffects.js +9 -7
  429. package/build/src/payment/paymentEffects.js.map +1 -1
  430. package/build/src/provider/DaimoPayProvider.js +9 -1
  431. package/build/src/provider/DaimoPayProvider.js.map +1 -1
  432. package/build/src/provider/PaymentProvider.js +9 -3
  433. package/build/src/provider/PaymentProvider.js.map +1 -1
  434. package/build/src/utils/polling.js +14 -5
  435. package/build/src/utils/polling.js.map +1 -1
  436. package/package.json +2 -2
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useMemo, useEffect } from 'react';
3
3
  import { usePayContext } from '../../../hooks/usePayContext.js';
4
4
  import { PageContent, ModalContent, ModalH1, Link, ModalBody } from '../../Common/Modal/styles.js';
5
- import { getOrderDestChainId, assertNotNull, getOrderSourceChainId, assert, getChainExplorerTxUrl } from '@daimo/pay-common';
5
+ import { getOrderDestChainId, assertNotNull, getOrderSourceChainId, assert, getChainExplorerTxUrl, writeDaimoPayOrderID } from '@daimo/pay-common';
6
6
  import { motion } from 'framer-motion';
7
7
  import { TickIcon, LoadingCircleIcon } from '../../../assets/icons.js';
8
8
  import { useDaimoPay } from '../../../hooks/useDaimoPay.js';
@@ -38,6 +38,12 @@ const Confirmation = () => {
38
38
  onSuccess();
39
39
  }
40
40
  }, [done, onSuccess]);
41
+ let supportUrl, receiptUrl;
42
+ if (order?.id != null) {
43
+ const screen = done ? "Confirmed" : "Confirming";
44
+ supportUrl = getSupportUrl(order.id.toString(), screen);
45
+ receiptUrl = `https://pay.daimo.com/receipt?id=${writeDaimoPayOrderID(BigInt(order.id))}`;
46
+ }
41
47
  return /* @__PURE__ */ jsx(
42
48
  PageContent,
43
49
  {
@@ -64,15 +70,7 @@ const Confirmation = () => {
64
70
  /* @__PURE__ */ jsx(ModalH1, { children: /* @__PURE__ */ jsx(Link, { href: txURL, target: "_blank", rel: "noopener noreferrer", children: "Payment Completed" }) }),
65
71
  confirmationMessage && /* @__PURE__ */ jsx(ModalBody, { children: confirmationMessage })
66
72
  ] }),
67
- /* @__PURE__ */ jsx(
68
- PoweredByFooter,
69
- {
70
- supportUrl: showContactSupport ? getSupportUrl(
71
- order?.id?.toString() ?? "",
72
- done ? "Confirmed" : "Confirming"
73
- ) : void 0
74
- }
75
- )
73
+ /* @__PURE__ */ jsx(PoweredByFooter, { supportUrl, receiptUrl })
76
74
  ]
77
75
  }
78
76
  )
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Confirmation/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport {\n Link,\n ModalBody,\n ModalContent,\n ModalH1,\n PageContent,\n} from \"../../Common/Modal/styles\";\n\nimport {\n assert,\n assertNotNull,\n getChainExplorerTxUrl,\n getOrderDestChainId,\n getOrderSourceChainId,\n} from \"@daimo/pay-common\";\nimport { motion } from \"framer-motion\";\nimport { Hex } from \"viem\";\nimport { LoadingCircleIcon, TickIcon } from \"../../../assets/icons\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport styled from \"../../../styles/styled\";\nimport { getSupportUrl } from \"../../../utils/supportUrl\";\nimport PoweredByFooter from \"../../Common/PoweredByFooter\";\n\nconst Confirmation: React.FC = () => {\n const { showContactSupport, confirmationMessage, onSuccess } =\n usePayContext();\n const { order, paymentState } = useDaimoPay();\n\n const { done, txURL } = useMemo(() => {\n if (\n paymentState === \"payment_completed\" ||\n paymentState === \"payment_bounced\"\n ) {\n let finalChainId: number;\n let finalTxHash: Hex | null;\n\n if (order.passedToAddress == null) {\n finalChainId = getOrderDestChainId(order);\n finalTxHash = order.destFastFinishTxHash ?? order.destClaimTxHash;\n } else {\n finalChainId = assertNotNull(getOrderSourceChainId(order));\n finalTxHash = order.sourceInitiateTxHash;\n }\n assert(\n finalTxHash != null,\n `[CONFIRMATION] paymentState: ${paymentState}, but missing txHash`,\n );\n const txURL = getChainExplorerTxUrl(finalChainId, finalTxHash);\n\n return { done: true, txURL };\n }\n return { done: false, txURL: undefined };\n }, [paymentState, order]);\n\n useEffect(() => {\n if (done) {\n onSuccess();\n }\n }, [done, onSuccess]);\n\n return (\n <PageContent\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <ModalContent\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n paddingBottom: 0,\n }}\n >\n <AnimationContainer>\n <InsetContainer>\n <Spinner $status={done} />\n <SuccessIcon $status={done} />\n </InsetContainer>\n </AnimationContainer>\n\n {!done ? (\n <ModalH1>Confirming...</ModalH1>\n ) : (\n <>\n <ModalH1>\n <Link href={txURL} target=\"_blank\" rel=\"noopener noreferrer\">\n Payment Completed\n </Link>\n </ModalH1>\n {confirmationMessage && (\n <ModalBody>{confirmationMessage}</ModalBody>\n )}\n </>\n )}\n\n <PoweredByFooter\n // If showContactSupport is false, we don't want to show the support\n // link, so we pass undefined\n supportUrl={\n showContactSupport\n ? getSupportUrl(\n order?.id?.toString() ?? \"\",\n done ? \"Confirmed\" : \"Confirming\",\n )\n : undefined\n }\n />\n </ModalContent>\n </PageContent>\n );\n};\n\nconst AnimationContainer = styled(motion.div)`\n position: relative;\n width: 100px;\n height: 100px;\n transition: transform 0.5s ease-in-out;\n margin-bottom: 16px;\n`;\n\nconst InsetContainer = styled(motion.div)`\n position: absolute;\n overflow: hidden;\n inset: 6px;\n border-radius: 50px;\n background: var(--ck-body-background);\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n position: absolute;\n width: 100%;\n height: 100%;\n }\n`;\n\nconst SuccessIcon = styled(TickIcon)<{ $status: boolean }>`\n color: var(--ck-body-color-valid);\n transition: all 0.2s ease-in-out;\n position: absolute;\n opacity: ${(props) => (props.$status ? 1 : 0)};\n transform: ${(props) => (props.$status ? \"scale(1)\" : \"scale(0.5)\")};\n`;\n\nconst Spinner = styled(LoadingCircleIcon)<{ $status: boolean }>`\n position: absolute;\n transition: all 0.2s ease-in-out;\n animation: rotateSpinner 400ms linear infinite;\n opacity: ${(props) => (props.$status ? 0 : 1)};\n\n @keyframes rotateSpinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nexport default Confirmation;\n"],"names":["txURL"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/Confirmation/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport {\n Link,\n ModalBody,\n ModalContent,\n ModalH1,\n PageContent,\n} from \"../../Common/Modal/styles\";\n\nimport {\n assert,\n assertNotNull,\n getChainExplorerTxUrl,\n getOrderDestChainId,\n getOrderSourceChainId,\n writeDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { motion } from \"framer-motion\";\nimport { Hex } from \"viem\";\nimport { LoadingCircleIcon, TickIcon } from \"../../../assets/icons\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport styled from \"../../../styles/styled\";\nimport { getSupportUrl } from \"../../../utils/supportUrl\";\nimport PoweredByFooter from \"../../Common/PoweredByFooter\";\n\nconst Confirmation: React.FC = () => {\n const { showContactSupport, confirmationMessage, onSuccess } =\n usePayContext();\n const { order, paymentState } = useDaimoPay();\n\n const { done, txURL } = useMemo(() => {\n if (\n paymentState === \"payment_completed\" ||\n paymentState === \"payment_bounced\"\n ) {\n let finalChainId: number;\n let finalTxHash: Hex | null;\n\n if (order.passedToAddress == null) {\n finalChainId = getOrderDestChainId(order);\n finalTxHash = order.destFastFinishTxHash ?? order.destClaimTxHash;\n } else {\n finalChainId = assertNotNull(getOrderSourceChainId(order));\n finalTxHash = order.sourceInitiateTxHash;\n }\n assert(\n finalTxHash != null,\n `[CONFIRMATION] paymentState: ${paymentState}, but missing txHash`,\n );\n const txURL = getChainExplorerTxUrl(finalChainId, finalTxHash);\n\n return { done: true, txURL };\n }\n return { done: false, txURL: undefined };\n }, [paymentState, order]);\n\n useEffect(() => {\n if (done) {\n onSuccess();\n }\n }, [done, onSuccess]);\n\n // Footer\n let supportUrl: string | undefined, receiptUrl: string | undefined;\n if (order?.id != null) {\n const screen = done ? \"Confirmed\" : \"Confirming\";\n supportUrl = getSupportUrl(order.id.toString(), screen);\n receiptUrl = `https://pay.daimo.com/receipt?id=${writeDaimoPayOrderID(BigInt(order.id))}`;\n }\n\n return (\n <PageContent\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <ModalContent\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n paddingBottom: 0,\n }}\n >\n <AnimationContainer>\n <InsetContainer>\n <Spinner $status={done} />\n <SuccessIcon $status={done} />\n </InsetContainer>\n </AnimationContainer>\n\n {!done ? (\n <ModalH1>Confirming...</ModalH1>\n ) : (\n <>\n <ModalH1>\n <Link href={txURL} target=\"_blank\" rel=\"noopener noreferrer\">\n Payment Completed\n </Link>\n </ModalH1>\n {confirmationMessage && (\n <ModalBody>{confirmationMessage}</ModalBody>\n )}\n </>\n )}\n <PoweredByFooter supportUrl={supportUrl} receiptUrl={receiptUrl} />\n </ModalContent>\n </PageContent>\n );\n};\n\nconst AnimationContainer = styled(motion.div)`\n position: relative;\n width: 100px;\n height: 100px;\n transition: transform 0.5s ease-in-out;\n margin-bottom: 16px;\n`;\n\nconst InsetContainer = styled(motion.div)`\n position: absolute;\n overflow: hidden;\n inset: 6px;\n border-radius: 50px;\n background: var(--ck-body-background);\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n position: absolute;\n width: 100%;\n height: 100%;\n }\n`;\n\nconst SuccessIcon = styled(TickIcon)<{ $status: boolean }>`\n color: var(--ck-body-color-valid);\n transition: all 0.2s ease-in-out;\n position: absolute;\n opacity: ${(props) => (props.$status ? 1 : 0)};\n transform: ${(props) => (props.$status ? \"scale(1)\" : \"scale(0.5)\")};\n`;\n\nconst Spinner = styled(LoadingCircleIcon)<{ $status: boolean }>`\n position: absolute;\n transition: all 0.2s ease-in-out;\n animation: rotateSpinner 400ms linear infinite;\n opacity: ${(props) => (props.$status ? 0 : 1)};\n\n @keyframes rotateSpinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nexport default Confirmation;\n"],"names":["txURL"],"mappings":"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"}
@@ -7,17 +7,17 @@ function stopPoller(key) {
7
7
  pollers.get(key)?.();
8
8
  pollers.delete(key);
9
9
  }
10
- function attachPaymentEffectHandlers(store, trpc, log) {
10
+ function attachPaymentEffectHandlers(store, trpc, log, debugMode) {
11
11
  const unsubscribe = store.subscribe(({ prev, next, event }) => {
12
12
  log(
13
13
  `[EFFECT] processing effects for event ${event.type} on state transition ${prev.type} -> ${next.type}`
14
14
  );
15
15
  if (prev.type !== next.type) {
16
16
  if (next.type === "payment_unpaid") {
17
- pollFindPayments(store, trpc, next.order.id);
17
+ pollFindPayments(store, trpc, next.order.id, debugMode);
18
18
  }
19
19
  if (next.type === "payment_started") {
20
- pollRefreshOrder(store, trpc, next.order.id);
20
+ pollRefreshOrder(store, trpc, next.order.id, debugMode);
21
21
  }
22
22
  if (["payment_completed", "payment_bounced", "error", "idle"].includes(
23
23
  next.type
@@ -77,7 +77,7 @@ function attachPaymentEffectHandlers(store, trpc, log) {
77
77
  };
78
78
  return cleanup;
79
79
  }
80
- async function pollFindPayments(store, trpc, orderId) {
80
+ async function pollFindPayments(store, trpc, orderId, debugMode) {
81
81
  const key = `${"find_source_payment" /* FIND_SOURCE_PAYMENT */}:${orderId}`;
82
82
  const stopPolling = startPolling({
83
83
  key,
@@ -92,11 +92,12 @@ async function pollFindPayments(store, trpc, orderId) {
92
92
  store.dispatch({ type: "order_refreshed", order });
93
93
  },
94
94
  onError: () => {
95
- }
95
+ },
96
+ debugMode
96
97
  });
97
98
  pollers.set(key, stopPolling);
98
99
  }
99
- async function pollRefreshOrder(store, trpc, orderId) {
100
+ async function pollRefreshOrder(store, trpc, orderId, debugMode) {
100
101
  const key = `${"refresh_order" /* REFRESH_ORDER */}:${orderId}`;
101
102
  const stopPolling = startPolling({
102
103
  key,
@@ -112,7 +113,8 @@ async function pollRefreshOrder(store, trpc, orderId) {
112
113
  store.dispatch({ type: "order_refreshed", order });
113
114
  },
114
115
  onError: () => {
115
- }
116
+ },
117
+ debugMode
116
118
  });
117
119
  pollers.set(key, stopPolling);
118
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"paymentEffects.js","sources":["../../../src/payment/paymentEffects.ts"],"sourcesContent":["import {\n assert,\n DaimoPayOrderMode,\n DaimoPayOrderWithOrg,\n getOrderDestChainId,\n readDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { formatUnits, getAddress } from \"viem\";\nimport { PollHandle, startPolling } from \"../utils/polling\";\nimport { TrpcClient } from \"../utils/trpc\";\nimport { PaymentEvent, PaymentState } from \"./paymentFsm\";\nimport { PaymentStore } from \"./paymentStore\";\n\n// Maps poller identifier to poll handle which terminates the poller\n// key = `${type}:${orderId}`\nconst pollers = new Map<string, PollHandle>();\n\nenum PollerType {\n FIND_SOURCE_PAYMENT = \"find_source_payment\",\n REFRESH_ORDER = \"refresh_order\",\n}\n\nfunction stopPoller(key: string) {\n pollers.get(key)?.();\n pollers.delete(key);\n}\n\n/**\n * Add a subscriber to the payment store that runs side effects in response to\n * events.\n *\n * @param store The payment store to subscribe to.\n * @param trpc TRPC client pointing to the Daimo Pay API.\n * @param log The logger to use for logging.\n * @returns A function that can be used to unsubscribe from the store.\n */\nexport function attachPaymentEffectHandlers(\n store: PaymentStore,\n trpc: TrpcClient,\n log: (msg: string) => void,\n): () => void {\n const unsubscribe = store.subscribe(({ prev, next, event }) => {\n log(\n `[EFFECT] processing effects for event ${event.type} on state transition ${prev.type} -> ${next.type}`,\n );\n /* --------------------------------------------------\n * State-driven effects\n * -------------------------------------------------- */\n if (prev.type !== next.type) {\n // Start watching for source payment\n if (next.type === \"payment_unpaid\") {\n pollFindPayments(store, trpc, next.order.id);\n }\n\n // Refresh the order to watch for destination processing\n if (next.type === \"payment_started\") {\n pollRefreshOrder(store, trpc, next.order.id);\n }\n\n // Stop all pollers when the payment flow is completed or reset\n if (\n [\"payment_completed\", \"payment_bounced\", \"error\", \"idle\"].includes(\n next.type,\n )\n ) {\n if (\"order\" in prev && prev.order) {\n stopPoller(`${PollerType.FIND_SOURCE_PAYMENT}:${prev.order.id}`);\n stopPoller(`${PollerType.REFRESH_ORDER}:${prev.order.id}`);\n }\n }\n }\n\n /* --------------------------------------------------\n * Event-driven effects\n * -------------------------------------------------- */\n switch (event.type) {\n case \"set_pay_params\":\n runSetPayParamsEffects(store, trpc, event);\n break;\n case \"set_pay_id\":\n runSetPayIdEffects(store, trpc, event);\n break;\n case \"hydrate_order\": {\n if (prev.type === \"preview\") {\n runHydratePayParamsEffects(store, trpc, prev, event);\n } else if (prev.type === \"unhydrated\") {\n runHydratePayIdEffects(store, trpc, prev, event);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPaySourceEffects(store, trpc, prev);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_ethereum_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPayEthereumSourceEffects(store, trpc, prev, event);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_solana_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPaySolanaSourceEffects(store, trpc, prev, event);\n }\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n break;\n }\n default:\n break;\n }\n });\n\n const cleanup = () => {\n unsubscribe();\n pollers.forEach((_, key) => stopPoller(key));\n log(\"[EFFECT] unsubscribed from payment store and stopped all pollers\");\n };\n\n return cleanup;\n}\n\nasync function pollFindPayments(\n store: PaymentStore,\n trpc: TrpcClient,\n orderId: bigint,\n) {\n const key = `${PollerType.FIND_SOURCE_PAYMENT}:${orderId}`;\n\n const stopPolling = startPolling({\n key,\n intervalMs: 1_000,\n pollFn: () => trpc.findOrderPayments.query({ orderId: orderId.toString() }),\n onResult: (order) => {\n const state = store.getState();\n if (state.type !== \"payment_unpaid\") {\n stopPolling();\n return;\n }\n store.dispatch({ type: \"order_refreshed\", order });\n },\n onError: () => {},\n });\n\n pollers.set(key, stopPolling);\n}\n\nasync function pollRefreshOrder(\n store: PaymentStore,\n trpc: TrpcClient,\n orderId: bigint,\n) {\n const key = `${PollerType.REFRESH_ORDER}:${orderId}`;\n\n const stopPolling = startPolling({\n key,\n intervalMs: 300,\n pollFn: () => trpc.getOrder.query({ id: orderId.toString() }),\n onResult: (res) => {\n const state = store.getState();\n // Check that we're still in the payment_started state\n if (state.type !== \"payment_started\") {\n stopPolling();\n return;\n }\n\n const order = res.order;\n store.dispatch({ type: \"order_refreshed\", order });\n },\n onError: () => {},\n });\n\n pollers.set(key, stopPolling);\n}\n\nasync function runSetPayParamsEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n event: Extract<PaymentEvent, { type: \"set_pay_params\" }>,\n) {\n const payParams = event.payParams;\n // toUnits is undefined if and only if we're in deposit flow.\n // Set dummy value for deposit flow, since user can edit the amount.\n const toUnits = payParams.toUnits == null ? \"0\" : payParams.toUnits;\n\n // Validate payParams.\n assert(payParams.appId.length > 0, \"PayParams: appId required\");\n const isDepositFlow = payParams.toUnits == null;\n assert(\n !isDepositFlow || payParams.externalId == null,\n \"PayParams: externalId unsupported in deposit mode\",\n );\n\n try {\n const orderPreview = await trpc.previewOrder.query({\n appId: payParams.appId,\n toChain: payParams.toChain,\n toToken: payParams.toToken,\n toUnits,\n toAddress: payParams.toAddress,\n toCallData: payParams.toCallData,\n isAmountEditable: payParams.toUnits == null,\n metadata: {\n intent: payParams.intent ?? \"Pay\",\n items: [],\n payer: {\n paymentOptions: payParams.paymentOptions,\n preferredChains: payParams.preferredChains,\n preferredTokens: payParams.preferredTokens,\n evmChains: payParams.evmChains,\n passthroughTokens: payParams.passthroughTokens,\n },\n },\n externalId: payParams.externalId,\n userMetadata: payParams.metadata,\n refundAddress: payParams.refundAddress,\n });\n\n store.dispatch({\n type: \"preview_generated\",\n // TODO: Properly type this and fix hacky type casting\n order: orderPreview as unknown as DaimoPayOrderWithOrg,\n payParamsData: {\n appId: payParams.appId,\n },\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: undefined, message: e.message });\n }\n}\n\nasync function runSetPayIdEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n event: Extract<PaymentEvent, { type: \"set_pay_id\" }>,\n) {\n try {\n const { order } = await trpc.getOrder.query({\n id: readDaimoPayOrderID(event.payId).toString(),\n });\n\n store.dispatch({\n type: \"order_loaded\",\n order,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: undefined, message: e.message });\n }\n}\n\nasync function runHydratePayParamsEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"preview\" }>,\n event: Extract<PaymentEvent, { type: \"hydrate_order\" }>,\n) {\n const order = prev.order;\n\n const toUnits = formatUnits(\n BigInt(order.destFinalCallTokenAmount.amount),\n order.destFinalCallTokenAmount.token.decimals,\n );\n try {\n const { hydratedOrder } = await trpc.createOrder.mutate({\n appId: prev.payParamsData.appId,\n paymentInput: {\n id: order.id.toString(),\n toChain: getOrderDestChainId(order),\n toToken: getAddress(order.destFinalCallTokenAmount.token.token),\n toUnits,\n toAddress: getAddress(order.destFinalCall.to),\n toCallData: order.destFinalCall.data,\n isAmountEditable: order.mode === DaimoPayOrderMode.CHOOSE_AMOUNT,\n metadata: order.metadata,\n userMetadata: order.userMetadata,\n externalId: order.externalId ?? undefined,\n },\n // Prefer the refund address passed to this function, if specified. This\n // is for cases where the user pays from an EOA. Otherwise, use the refund\n // address specified by the dev.\n refundAddress: event.refundAddress ?? prev.order.refundAddr ?? undefined,\n });\n\n store.dispatch({\n type: \"order_hydrated\",\n order: hydratedOrder,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runHydratePayIdEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"unhydrated\" }>,\n event: Extract<PaymentEvent, { type: \"hydrate_order\" }>,\n) {\n const order = prev.order;\n\n try {\n const { hydratedOrder } = await trpc.hydrateOrder.query({\n id: order.id.toString(),\n refundAddress: event.refundAddress,\n });\n\n store.dispatch({\n type: \"order_hydrated\",\n order: hydratedOrder,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPaySourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.findOrderPayments.query({\n orderId: orderId.toString(),\n });\n store.dispatch({ type: \"order_refreshed\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPayEthereumSourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: Extract<PaymentEvent, { type: \"pay_ethereum_source\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.processSourcePayment.mutate({\n orderId: orderId.toString(),\n sourceInitiateTxHash: event.paymentTxHash,\n sourceChainId: event.sourceChainId,\n sourceFulfillerAddr: event.payerAddress,\n sourceToken: event.sourceToken,\n sourceAmount: event.sourceAmount.toString(),\n });\n store.dispatch({ type: \"payment_verified\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPaySolanaSourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: Extract<PaymentEvent, { type: \"pay_solana_source\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.processSolanaSourcePayment.mutate({\n orderId: orderId.toString(),\n startIntentTxHash: event.paymentTxHash,\n token: event.sourceToken,\n });\n store.dispatch({ type: \"payment_verified\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paymentEffects.js","sources":["../../../src/payment/paymentEffects.ts"],"sourcesContent":["import {\n assert,\n DaimoPayOrderMode,\n DaimoPayOrderWithOrg,\n getOrderDestChainId,\n readDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { formatUnits, getAddress } from \"viem\";\nimport { PollHandle, startPolling } from \"../utils/polling\";\nimport { TrpcClient } from \"../utils/trpc\";\nimport { PaymentEvent, PaymentState } from \"./paymentFsm\";\nimport { PaymentStore } from \"./paymentStore\";\n\n// Maps poller identifier to poll handle which terminates the poller\n// key = `${type}:${orderId}`\nconst pollers = new Map<string, PollHandle>();\n\nenum PollerType {\n FIND_SOURCE_PAYMENT = \"find_source_payment\",\n REFRESH_ORDER = \"refresh_order\",\n}\n\nfunction stopPoller(key: string) {\n pollers.get(key)?.();\n pollers.delete(key);\n}\n\n/**\n * Add a subscriber to the payment store that runs side effects in response to\n * events.\n *\n * @param store The payment store to subscribe to.\n * @param trpc TRPC client pointing to the Daimo Pay API.\n * @param log The logger to use for logging.\n * @param debugMode Whether to enable debug mode to log polling activity.\n * @returns A function that can be used to unsubscribe from the store.\n */\nexport function attachPaymentEffectHandlers(\n store: PaymentStore,\n trpc: TrpcClient,\n log: (msg: string) => void,\n debugMode: boolean,\n): () => void {\n const unsubscribe = store.subscribe(({ prev, next, event }) => {\n log(\n `[EFFECT] processing effects for event ${event.type} on state transition ${prev.type} -> ${next.type}`,\n );\n /* --------------------------------------------------\n * State-driven effects\n * -------------------------------------------------- */\n if (prev.type !== next.type) {\n // Start watching for source payment\n if (next.type === \"payment_unpaid\") {\n pollFindPayments(store, trpc, next.order.id, debugMode);\n }\n\n // Refresh the order to watch for destination processing\n if (next.type === \"payment_started\") {\n pollRefreshOrder(store, trpc, next.order.id, debugMode);\n }\n\n // Stop all pollers when the payment flow is completed or reset\n if (\n [\"payment_completed\", \"payment_bounced\", \"error\", \"idle\"].includes(\n next.type,\n )\n ) {\n if (\"order\" in prev && prev.order) {\n stopPoller(`${PollerType.FIND_SOURCE_PAYMENT}:${prev.order.id}`);\n stopPoller(`${PollerType.REFRESH_ORDER}:${prev.order.id}`);\n }\n }\n }\n\n /* --------------------------------------------------\n * Event-driven effects\n * -------------------------------------------------- */\n switch (event.type) {\n case \"set_pay_params\":\n runSetPayParamsEffects(store, trpc, event);\n break;\n case \"set_pay_id\":\n runSetPayIdEffects(store, trpc, event);\n break;\n case \"hydrate_order\": {\n if (prev.type === \"preview\") {\n runHydratePayParamsEffects(store, trpc, prev, event);\n } else if (prev.type === \"unhydrated\") {\n runHydratePayIdEffects(store, trpc, prev, event);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPaySourceEffects(store, trpc, prev);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_ethereum_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPayEthereumSourceEffects(store, trpc, prev, event);\n } else {\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n }\n break;\n }\n case \"pay_solana_source\": {\n if (prev.type === \"payment_unpaid\") {\n runPaySolanaSourceEffects(store, trpc, prev, event);\n }\n log(`[EFFECT] invalid event ${event.type} on state ${prev.type}`);\n break;\n }\n default:\n break;\n }\n });\n\n const cleanup = () => {\n unsubscribe();\n pollers.forEach((_, key) => stopPoller(key));\n log(\"[EFFECT] unsubscribed from payment store and stopped all pollers\");\n };\n\n return cleanup;\n}\n\nasync function pollFindPayments(\n store: PaymentStore,\n trpc: TrpcClient,\n orderId: bigint,\n debugMode: boolean,\n) {\n const key = `${PollerType.FIND_SOURCE_PAYMENT}:${orderId}`;\n\n const stopPolling = startPolling({\n key,\n intervalMs: 1_000,\n pollFn: () => trpc.findOrderPayments.query({ orderId: orderId.toString() }),\n onResult: (order) => {\n const state = store.getState();\n if (state.type !== \"payment_unpaid\") {\n stopPolling();\n return;\n }\n store.dispatch({ type: \"order_refreshed\", order });\n },\n onError: () => {},\n debugMode,\n });\n\n pollers.set(key, stopPolling);\n}\n\nasync function pollRefreshOrder(\n store: PaymentStore,\n trpc: TrpcClient,\n orderId: bigint,\n debugMode: boolean,\n) {\n const key = `${PollerType.REFRESH_ORDER}:${orderId}`;\n\n const stopPolling = startPolling({\n key,\n intervalMs: 300,\n pollFn: () => trpc.getOrder.query({ id: orderId.toString() }),\n onResult: (res) => {\n const state = store.getState();\n // Check that we're still in the payment_started state\n if (state.type !== \"payment_started\") {\n stopPolling();\n return;\n }\n\n const order = res.order;\n store.dispatch({ type: \"order_refreshed\", order });\n },\n onError: () => {},\n debugMode,\n });\n\n pollers.set(key, stopPolling);\n}\n\nasync function runSetPayParamsEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n event: Extract<PaymentEvent, { type: \"set_pay_params\" }>,\n) {\n const payParams = event.payParams;\n // toUnits is undefined if and only if we're in deposit flow.\n // Set dummy value for deposit flow, since user can edit the amount.\n const toUnits = payParams.toUnits == null ? \"0\" : payParams.toUnits;\n\n // Validate payParams.\n assert(payParams.appId.length > 0, \"PayParams: appId required\");\n const isDepositFlow = payParams.toUnits == null;\n assert(\n !isDepositFlow || payParams.externalId == null,\n \"PayParams: externalId unsupported in deposit mode\",\n );\n\n try {\n const orderPreview = await trpc.previewOrder.query({\n appId: payParams.appId,\n toChain: payParams.toChain,\n toToken: payParams.toToken,\n toUnits,\n toAddress: payParams.toAddress,\n toCallData: payParams.toCallData,\n isAmountEditable: payParams.toUnits == null,\n metadata: {\n intent: payParams.intent ?? \"Pay\",\n items: [],\n payer: {\n paymentOptions: payParams.paymentOptions,\n preferredChains: payParams.preferredChains,\n preferredTokens: payParams.preferredTokens,\n evmChains: payParams.evmChains,\n passthroughTokens: payParams.passthroughTokens,\n },\n },\n externalId: payParams.externalId,\n userMetadata: payParams.metadata,\n refundAddress: payParams.refundAddress,\n });\n\n store.dispatch({\n type: \"preview_generated\",\n // TODO: Properly type this and fix hacky type casting\n order: orderPreview as unknown as DaimoPayOrderWithOrg,\n payParamsData: {\n appId: payParams.appId,\n },\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: undefined, message: e.message });\n }\n}\n\nasync function runSetPayIdEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n event: Extract<PaymentEvent, { type: \"set_pay_id\" }>,\n) {\n try {\n const { order } = await trpc.getOrder.query({\n id: readDaimoPayOrderID(event.payId).toString(),\n });\n\n store.dispatch({\n type: \"order_loaded\",\n order,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: undefined, message: e.message });\n }\n}\n\nasync function runHydratePayParamsEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"preview\" }>,\n event: Extract<PaymentEvent, { type: \"hydrate_order\" }>,\n) {\n const order = prev.order;\n\n const toUnits = formatUnits(\n BigInt(order.destFinalCallTokenAmount.amount),\n order.destFinalCallTokenAmount.token.decimals,\n );\n try {\n const { hydratedOrder } = await trpc.createOrder.mutate({\n appId: prev.payParamsData.appId,\n paymentInput: {\n id: order.id.toString(),\n toChain: getOrderDestChainId(order),\n toToken: getAddress(order.destFinalCallTokenAmount.token.token),\n toUnits,\n toAddress: getAddress(order.destFinalCall.to),\n toCallData: order.destFinalCall.data,\n isAmountEditable: order.mode === DaimoPayOrderMode.CHOOSE_AMOUNT,\n metadata: order.metadata,\n userMetadata: order.userMetadata,\n externalId: order.externalId ?? undefined,\n },\n // Prefer the refund address passed to this function, if specified. This\n // is for cases where the user pays from an EOA. Otherwise, use the refund\n // address specified by the dev.\n refundAddress: event.refundAddress ?? prev.order.refundAddr ?? undefined,\n });\n\n store.dispatch({\n type: \"order_hydrated\",\n order: hydratedOrder,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runHydratePayIdEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"unhydrated\" }>,\n event: Extract<PaymentEvent, { type: \"hydrate_order\" }>,\n) {\n const order = prev.order;\n\n try {\n const { hydratedOrder } = await trpc.hydrateOrder.query({\n id: order.id.toString(),\n refundAddress: event.refundAddress,\n });\n\n store.dispatch({\n type: \"order_hydrated\",\n order: hydratedOrder,\n });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPaySourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.findOrderPayments.query({\n orderId: orderId.toString(),\n });\n store.dispatch({ type: \"order_refreshed\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPayEthereumSourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: Extract<PaymentEvent, { type: \"pay_ethereum_source\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.processSourcePayment.mutate({\n orderId: orderId.toString(),\n sourceInitiateTxHash: event.paymentTxHash,\n sourceChainId: event.sourceChainId,\n sourceFulfillerAddr: event.payerAddress,\n sourceToken: event.sourceToken,\n sourceAmount: event.sourceAmount.toString(),\n });\n store.dispatch({ type: \"payment_verified\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n\nasync function runPaySolanaSourceEffects(\n store: PaymentStore,\n trpc: TrpcClient,\n prev: Extract<PaymentState, { type: \"payment_unpaid\" }>,\n event: Extract<PaymentEvent, { type: \"pay_solana_source\" }>,\n) {\n const orderId = prev.order.id;\n\n try {\n const order = await trpc.processSolanaSourcePayment.mutate({\n orderId: orderId.toString(),\n startIntentTxHash: event.paymentTxHash,\n token: event.sourceToken,\n });\n store.dispatch({ type: \"payment_verified\", order });\n } catch (e: any) {\n store.dispatch({ type: \"error\", order: prev.order, message: e.message });\n }\n}\n"],"names":[],"mappings":"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"}
@@ -285,7 +285,15 @@ const DaimoPayProvider = (props) => {
285
285
  },
286
286
  [props.debugMode]
287
287
  );
288
- return /* @__PURE__ */ jsx(PaymentProvider, { payApiUrl, log, children: /* @__PURE__ */ jsx(SolanaContextProvider, { solanaRpcUrl: props.solanaRpcUrl, children: /* @__PURE__ */ jsx(DaimoPayUIProvider, { ...props, payApiUrl, log }) }) });
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
+ );
289
297
  };
290
298
 
291
299
  export { DaimoPayProvider };
@@ -1 +1 @@
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 payApiUrl={payApiUrl} log={log}>\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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"}
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":";;;;;;;;;;;;;;;;;;;;;AA0DA,MAAM,qBAAqB,CAAC;AAAA,EAC1B,QAAA;AAAA,EACA,KAAQ,GAAA,MAAA;AAAA,EACR,IAAO,GAAA,MAAA;AAAA,EACP,WAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAY,GAAA,KAAA;AAAA,EACZ,SAAA;AAAA,EACA,GAAA;AACF,CAA+B,KAAA;AAC7B,EAAA,IAAI,CAAC,KAAA,CAAM,UAAW,CAAA,cAAc,CAAG,EAAA;AACrC,IAAA,MAAM,MAAM,mDAAmD,CAAA,CAAA;AAAA,GACjE;AAEA,EAAA,IAAI,CAAC,KAAA,CAAM,UAAW,CAAA,YAAY,CAAG,EAAA;AACnC,IAAA,MAAM,MAAM,iDAAiD,CAAA,CAAA;AAAA,GAC/D;AAIA,EAAI,IAAA,KAAA,CAAM,UAAW,CAAA,UAAU,CAAG,EAAA;AAChC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,4EAAA;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAmB,kBAAA,CAAA;AAAA,IACjB,SAAA;AAAA,IACA,YAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AAEzB,EAAA,KAAA,MAAW,iBAAiB,eAAiB,EAAA;AAC3C,IAAI,IAAA,CAAC,OAAO,IAAK,CAAA,CAAC,MAAM,CAAE,CAAA,EAAA,KAAO,aAAc,CAAA,EAAE,CAAG,EAAA;AAClD,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,0BAAA,EAA6B,eAAgB,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA,CAAE,IAAK,CAAA,IAAI,CAAC,CAAA,sEAAA,CAAA;AAAA,OAC5E,CAAA;AAAA,KACF;AAAA,GACF;AAGA,EAAA,MAAM,cAAyC,GAAA;AAAA,IAC7C,QAAU,EAAA,OAAA;AAAA,IACV,WAAa,EAAA,KAAA;AAAA,IACb,YAAc,EAAA,KAAA;AAAA,IACd,mBAAqB,EAAA,KAAA;AAAA,IACrB,eAAiB,EAAA,KAAA;AAAA,IACjB,gBAAkB,EAAA,IAAA;AAAA,IAClB,gBAAkB,EAAA,KAAA;AAAA,IAClB,sBAAwB,EAAA,IAAA;AAAA,IACxB,aAAe,EAAA,KAAA;AAAA,IACf,UAAY,EAAA,IAAA;AAAA,IACZ,cAAgB,EAAA,IAAA;AAAA,IAChB,YAAc,EAAA,KAAA,CAAA;AAAA,IACd,cAAgB,EAAA,KAAA,CAAA;AAAA,IAChB,sBAAwB,EAAA,KAAA;AAAA,IACxB,qBAAuB,EAAA,KAAA,CAAA;AAAA,IACvB,mBAAqB,EAAA,KAAA,CAAA;AAAA,IACrB,WAAa,EAAA,KAAA,CAAA;AAAA,IACb,qBAAuB,EAAA,KAAA;AAAA,GACzB,CAAA;AAEA,EAAA,MAAM,OAA+B,MAAO,CAAA,MAAA;AAAA,IAC1C,EAAC;AAAA,IACD,cAAA;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AAEA,EAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AAEjC,IAAA,IAAI,IAAK,CAAA,cAAA,EAAuB,MAAA,CAAA,MAAA,GAAS,OAAO,MAAU,IAAA,MAAA,CAAA;AAAA,GAQ5D;AAEA,EAAA,MAAM,MAAM,WAAY,EAAA,CAAA;AAExB,EAAA,MAAM,CAAC,OAAA,EAAS,QAAQ,CAAA,GAAI,SAAgB,KAAK,CAAA,CAAA;AACjD,EAAA,MAAM,CAAC,MAAA,EAAQ,OAAO,CAAA,GAAI,SAAe,IAAI,CAAA,CAAA;AAC7C,EAAM,MAAA,CAAC,aAAe,EAAA,cAAc,CAAI,GAAA,QAAA;AAAA,IACtC,eAAe,EAAC;AAAA,GAClB,CAAA;AACA,EAAA,MAAM,CAAC,MAAA,EAAQ,OAAO,CAAA,GAAI,SAAoB,OAAO,CAAA,CAAA;AACrD,EAAM,MAAA,CAAC,qBAAuB,EAAA,wBAAwB,CAAI,GAAA,QAAA;AAAA,IACxD,KAAK,qBAAyB,IAAA,KAAA;AAAA,GAChC,CAAA;AAEA,EAAA,MAAM,YAAY,MAAiC,EAAA,CAAA;AACnD,EAAA,MAAM,aAAa,MAAiC,EAAA,CAAA;AACpD,EAAM,MAAA,SAAA,GAAY,WAAY,CAAA,CAAC,EAAoB,KAAA;AACjD,IAAA,SAAA,CAAU,OAAU,GAAA,EAAA,CAAA;AAAA,GACtB,EAAG,EAAE,CAAA,CAAA;AACL,EAAM,MAAA,UAAA,GAAa,WAAY,CAAA,CAAC,EAAoB,KAAA;AAClD,IAAA,UAAA,CAAW,OAAU,GAAA,EAAA,CAAA;AAAA,GACvB,EAAG,EAAE,CAAA,CAAA;AACL,EAAA,MAAM,CAAC,IAAA,EAAM,YAAY,CAAA,GAAI,SAAkB,KAAK,CAAA,CAAA;AACpD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAkB,KAAK,CAAA,CAAA;AACjE,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAkB,KAAK,CAAA,CAAA;AACvE,EAAA,MAAM,CAAC,KAAO,EAAA,aAAa,CAAI,GAAA,QAAA,CAAiB,OAAO,aAAa,CAAA,CAAA;AACpE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,QAA+B,EAAA,CAAA;AAGvE,EAAA,MAAM,CAAC,uBAAyB,EAAA,0BAA0B,CACxD,GAAA,QAAA,CAAiB,OAAO,aAAa,CAAA,CAAA;AACvC,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,SAElD,KAAS,CAAA,CAAA,CAAA;AAEX,EAAM,MAAA,CAAC,SAAS,CAAA,GAAI,QAAS,CAAA,MAAM,MAAO,CAAA,UAAA,EAAa,CAAA,UAAA,CAAW,GAAK,EAAA,EAAE,CAAC,CAAA,CAAA;AAC1E,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,QAE5C,EAAA,CAAA;AAGF,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAEtC,EAAE,CAAA,CAAA;AACJ,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,SAAkB,IAAI,CAAA,CAAA;AAC1E,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,SAEpD,KAAS,CAAA,CAAA,CAAA;AACX,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAEhD,KAAS,CAAA,CAAA,CAAA;AAEX,EAAM,MAAA,IAAA,GAAO,QAAQ,MAAM;AACzB,IAAO,OAAA,gBAAA,CAAiB,WAAW,SAAS,CAAA,CAAA;AAAA,GAC3C,EAAA,CAAC,SAAW,EAAA,SAAS,CAAC,CAAA,CAAA;AACzB,EAAA,MAAM,CAAC,MAAA,EAAQ,QAAQ,CAAA,GAAI,SAAiB,CAAC,CAAA,CAAA;AAE7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,+BAAA,CAAgC,SAAS,CAAA,CAAA;AAAA,GAC3C,EAAG,CAAC,SAAS,CAAC,CAAA,CAAA;AAEd,EAAA,MAAM,OAAU,GAAA,WAAA;AAAA,IACd,CAACA,OAAe,IAA+B,KAAA;AAC7C,MAAA,YAAA,CAAaA,KAAI,CAAA,CAAA;AAIjB,MAAA,IAAIA,KAAM,EAAA;AACR,QAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AAAA,OACvB;AAEA,MAAA,IAAI,CAACA,KAAAA,IAAQ,gBAAoB,IAAA,YAAA,EAAc,cAAgB,EAAA;AAC7D,QAAA,mBAAA,CAAoB,KAAK,CAAA,CAAA;AACzB,QAAA,gBAAA,CAAiB,KAAK,CAAA,CAAA;AACtB,QAAA,YAAA,CAAa,UAAW,EAAA,CAAA;AAAA,OAC1B;AAGA,MAAA,IAAA,CAAK,IAAI,MAAO,CAAA;AAAA,QACd,MAAA,EAAQA,QAAO,YAAe,GAAA,aAAA;AAAA,QAC9B,OAAS,EAAA,GAAA,CAAI,KAAO,EAAA,EAAA,EAAI,QAAS,EAAA;AAAA,QACjC,IAAA,EAAM,QAAQ,EAAC;AAAA,OAChB,CAAA,CAAA;AAGD,MAAIA,IAAAA,KAAAA,YAAgB,OAAU,IAAA,CAAA;AAAA,sBACd,OAAU,IAAA,CAAA;AAAA,KAC5B;AAAA;AAAA;AAAA,IAGA,CAAC,IAAM,EAAA,GAAA,CAAI,OAAO,EAAI,EAAA,YAAA,EAAc,gBAAgB,gBAAgB,CAAA;AAAA,GACtE,CAAA;AAIA,EAAM,MAAA,SAAA,GAAY,YAAY,MAAM;AAClC,IAAA,IAAI,cAAc,cAAgB,EAAA;AAChC,MAAW,UAAA,CAAA,MAAM,QAAQ,KAAO,EAAA,EAAE,OAAO,cAAe,EAAC,GAAG,GAAI,CAAA,CAAA;AAAA,KAClE;AACA,IAAA,mBAAA,CAAoB,IAAI,CAAA,CAAA;AAAA,KACvB,CAAC,YAAA,EAAc,cAAgB,EAAA,OAAA,EAAS,mBAAmB,CAAC,CAAA,CAAA;AAE/D,EAAA,MAAM,QAAW,GAAA,WAAA;AAAA,IACf,CAACC,QAAe,IAA+B,KAAA;AAC7C,MAAA,MAAM,MAASA,GAAAA,MAAAA,CAAM,OAAQ,CAAA,UAAA,EAAY,EAAE,CAAA,CAAA;AAC3C,MAAA,GAAA,CAAI,CAAe,YAAA,EAAA,MAAM,CAAI,CAAA,EAAA,GAAA,CAAI,KAAO,EAAA,EAAE,CAAI,CAAA,EAAA,SAAA,CAAU,IAAQ,IAAA,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AACrE,MAAA,IAAA,CAAK,IAAI,MAAO,CAAA;AAAA,QACd,MAAA;AAAA,QACA,OAAS,EAAA,GAAA,CAAI,KAAO,EAAA,EAAA,EAAI,QAAS,EAAA;AAAA,QACjC,IAAA,EAAM,QAAQ,EAAC;AAAA,OAChB,CAAA,CAAA;AACD,MAAA,aAAA,CAAcA,MAAK,CAAA,CAAA;AAAA,KACrB;AAAA,IACA,CAAC,IAAA,EAAM,GAAI,CAAA,KAAA,EAAO,IAAI,GAAG,CAAA;AAAA,GAC3B,CAAA;AAGA,EAAA,SAAA,CAAU,MAAM,QAAS,CAAA,KAAK,CAAG,EAAA,CAAC,KAAK,CAAC,CAAA,CAAA;AACxC,EAAU,SAAA,CAAA,MAAM,QAAQ,IAAK,CAAA,QAAA,IAAY,OAAO,CAAG,EAAA,CAAC,IAAK,CAAA,QAAQ,CAAC,CAAA,CAAA;AAClE,EAAA,SAAA;AAAA,IACE,MAAM,wBAAA,CAAyB,IAAK,CAAA,qBAAA,IAAyB,KAAK,CAAA;AAAA,IAClE,CAAC,KAAK,qBAAqB,CAAA;AAAA,GAC7B,CAAA;AACA,EAAA,SAAA,CAAU,MAAM,eAAgB,CAAA,IAAI,GAAG,CAAC,KAAA,EAAO,IAAI,CAAC,CAAA,CAAA;AAGpD,EAAA,MAAM,eAAe,eAAgB,CAAA;AAAA,IACnC,IAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,iBAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,WAAA,GAAc,OAAOC,aAAuC,KAAA;AAChE,IAAM,MAAA,EAAA,GAAK,IAAI,KAAO,EAAA,EAAA,CAAA;AACtB,IAAA,GAAA;AAAA,MACE,CAAA,oBAAA,EAAuB,SAAU,CAAA,EAAE,EAAI,EAAA,YAAA,EAAAA,eAAc,eAAiB,EAAA,GAAA,CAAI,YAAa,EAAC,CAAC,CAAA,CAAA;AAAA,KAC3F,CAAA;AAEA,IAAA,eAAA,CAAgBA,aAAY,CAAA,CAAA;AAC5B,IAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AACZ,IAAA,IAAIA,cAAa,mBAAqB,EAAA;AACpC,MAAA,YAAA,CAAa,aAAa,KAAK,CAAA,CAAA;AAAA,KACjC;AAEA,IAAI,IAAA,GAAA,CAAI,iBAAiB,OAAS,EAAA;AAChC,MAAA,QAAA,CAAS,OAAO,KAAK,CAAA,CAAA;AAAA,KACvB,MAAA,IACE,IAAI,YAAiB,KAAA,iBAAA,IACrB,IAAI,YAAiB,KAAA,mBAAA,IACrB,GAAI,CAAA,YAAA,KAAiB,iBACrB,EAAA;AACA,MAAA,QAAA,CAAS,OAAO,YAAY,CAAA,CAAA;AAAA,KAC9B,MAAA,IAAWA,cAAa,mBAAqB,EAAA;AAC3C,MAAA,QAAA,CAAS,OAAO,YAAY,CAAA,CAAA;AAAA,KACvB,MAAA;AACL,MAAA,QAAA,CAAS,OAAO,aAAa,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF,CAAA;AAIA,EAAA,MAAM,WACJ,GAAA,GAAA,CAAI,KAAO,EAAA,IAAA,KAAS,iBAAkB,CAAA,QAAA,IACtC,GAAI,CAAA,KAAA,CAAM,YAAiB,KAAA,yBAAA,CAA0B,eACrD,IAAA,GAAA,CAAI,MAAM,iBAAqB,IAAA,IAAA,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,GAAA,CAAI,iBAAiB,OAAS,EAAA;AAChC,MAAA,QAAA,CAAS,OAAO,KAAK,CAAA,CAAA;AAAA,KACvB,MAAA,IACE,IAAI,YAAiB,KAAA,iBAAA,IACrB,IAAI,YAAiB,KAAA,mBAAA,IACrB,GAAI,CAAA,YAAA,KAAiB,iBACrB,EAAA;AACA,MAAA,QAAA,CAAS,MAAO,CAAA,YAAA,EAAc,EAAE,KAAA,EAAO,mBAAmB,CAAA,CAAA;AAAA,eACjD,WAAa,EAAA;AACtB,MAAA,YAAA,CAAa,gCAAgC,KAAS,CAAA,CAAA,CAAA;AACtD,MAAA,QAAA,CAAS,OAAO,uBAAuB,CAAA,CAAA;AAAA,KACzC;AAAA,KAEC,CAAC,GAAA,CAAI,YAAc,EAAA,QAAA,EAAU,WAAW,CAAC,CAAA,CAAA;AAE5C,EAAA,MAAM,KAAyB,GAAA;AAAA,IAC7B,KAAO,EAAA,OAAA;AAAA,IACP,QAAA;AAAA,IACA,IAAM,EAAA,MAAA;AAAA,IACN,OAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,IAAM,EAAA,MAAA;AAAA,IACN,OAAA;AAAA,IACA,qBAAA;AAAA,IACA,wBAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA;AAAA,IAEA,uBAAA;AAAA,IACA,0BAAA;AAAA,IACA,kBAAA;AAAA,IACA,qBAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,SAAA;AAAA;AAAA,IAEA,OAAS,EAAA,IAAA;AAAA,IACT,YAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,qBAAA;AAAA,IACA,mBAAA;AAAA,IACA,sBAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAA;AAAA,IACA,YAAA,EAAc,CAAC,OAAA,EAA0C,IAAe,KAAA;AACtE,MAAA,eAAA,CAAgB,OAAO,CAAA,CAAA;AACvB,MAAA,OAAA,CAAQ,IAAI,kCAAkC,CAAA,CAAA;AAC9C,MAAA,OAAA,CAAQ,IAAI,OAAO,CAAA,CAAA;AACnB,MAAI,IAAA,IAAA,EAAc,OAAA,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAC5B,MAAA,OAAA,CAAQ,IAAI,mCAAmC,CAAA,CAAA;AAAA,KACjD;AAAA,IACA,MAAA;AAAA,IACA,eAAe,MAAM,QAAA,CAAS,CAAC,IAAA,KAAS,OAAO,CAAC,CAAA;AAAA;AAAA;AAAA,IAIhD,WAAA;AAAA,IACA,YAAA;AAAA,IACA,IAAA;AAAA,GACF,CAAA;AAEA,EAAO,OAAA,aAAA;AAAA,IACL,UAAW,CAAA,QAAA;AAAA,IACX,EAAE,KAAM,EAAA;AAAA,oBACP,GAAA,CAAA,mBAAA,EAAA,EACC,QAAC,kBAAA,IAAA,CAAA,aAAA,EAAA,EAAc,OAAO,YACnB,EAAA,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACD,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,IAAM,EAAA,MAAA;AAAA,UACN,KAAO,EAAA,OAAA;AAAA,UACP,IAAA;AAAA,UACA,WAAa,EAAA,aAAA;AAAA,UACb,qBAAA;AAAA,SAAA;AAAA,OACF;AAAA,KAAA,EACF,CACF,EAAA,CAAA;AAAA,GACF,CAAA;AACF,CAAA,CAAA;AAsBa,MAAA,gBAAA,GAAmB,CAAC,KAAiC,KAAA;AAChE,EAAM,MAAA,SAAA,GAAY,MAAM,SAAa,IAAA,4BAAA,CAAA;AACrC,EAAA,MAAM,GAAM,GAAA,OAAA;AAAA,IACV,MACE,KAAM,CAAA,SAAA,GAAY,CAAI,GAAA,IAAA,KAAgB,QAAQ,GAAI,CAAA,GAAG,IAAI,CAAA,GAAI,MAAM;AAAA,KAAC;AAAA,IACtE,CAAC,MAAM,SAAS,CAAA;AAAA,GAClB,CAAA;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,GAAA;AAAA,MACA,WAAW,KAAM,CAAA,SAAA;AAAA,MAEjB,QAAA,kBAAA,GAAA,CAAC,qBAAsB,EAAA,EAAA,YAAA,EAAc,KAAM,CAAA,YAAA,EACzC,QAAC,kBAAA,GAAA,CAAA,kBAAA,EAAA,EAAoB,GAAG,KAAA,EAAO,SAAsB,EAAA,GAAA,EAAU,CACjE,EAAA,CAAA;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ;;;;"}
@@ -8,7 +8,8 @@ const PaymentContext = createContext(null);
8
8
  function PaymentProvider({
9
9
  children,
10
10
  payApiUrl,
11
- log = console.log
11
+ log = console.log,
12
+ debugMode = false
12
13
  }) {
13
14
  const [sessionId] = useState(() => crypto.randomUUID().replaceAll("-", ""));
14
15
  const trpc = useMemo(() => {
@@ -18,10 +19,15 @@ function PaymentProvider({
18
19
  return createPaymentStore();
19
20
  }, []);
20
21
  useLayoutEffect(() => {
21
- const unsubscribe = attachPaymentEffectHandlers(store, trpc, log);
22
+ const unsubscribe = attachPaymentEffectHandlers(
23
+ store,
24
+ trpc,
25
+ log,
26
+ debugMode
27
+ );
22
28
  log("[EFFECT] subscribed to payment effects");
23
29
  return unsubscribe;
24
- }, [store, trpc, log]);
30
+ }, [store, trpc, log, debugMode]);
25
31
  return /* @__PURE__ */ jsx(PaymentContext.Provider, { value: store, children });
26
32
  }
27
33
 
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentProvider.js","sources":["../../../src/provider/PaymentProvider.tsx"],"sourcesContent":["import { createContext, useLayoutEffect, useMemo, useState } from \"react\";\nimport { attachPaymentEffectHandlers } from \"../payment/paymentEffects\";\nimport { createPaymentStore, PaymentStore } from \"../payment/paymentStore\";\nimport { createTrpcClient } from \"../utils/trpc\";\n\nexport const PaymentContext = createContext<PaymentStore | null>(null);\n\ntype PaymentProviderProps = {\n children: React.ReactNode;\n payApiUrl: string;\n log?: (msg: string) => void;\n};\n\nexport function PaymentProvider({\n children,\n payApiUrl,\n log = console.log,\n}: PaymentProviderProps) {\n // Generate unique sessionId for tracking in the backend\n const [sessionId] = useState(() => crypto.randomUUID().replaceAll(\"-\", \"\"));\n const trpc = useMemo(() => {\n return createTrpcClient(payApiUrl, sessionId);\n }, [payApiUrl, sessionId]);\n\n const store = useMemo(() => {\n return createPaymentStore();\n }, []);\n\n // Attach subscriber to run side effects in response to events. Use a\n // layout effect that runs before the first render.\n useLayoutEffect(() => {\n const unsubscribe = attachPaymentEffectHandlers(store, trpc, log);\n log(\"[EFFECT] subscribed to payment effects\");\n return unsubscribe;\n }, [store, trpc, log]);\n\n return (\n <PaymentContext.Provider value={store}>{children}</PaymentContext.Provider>\n );\n}\n"],"names":[],"mappings":";;;;;;AAKa,MAAA,cAAA,GAAiB,cAAmC,IAAI,EAAA;AAQ9D,SAAS,eAAgB,CAAA;AAAA,EAC9B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAChB,CAAyB,EAAA;AAEvB,EAAM,MAAA,CAAC,SAAS,CAAA,GAAI,QAAS,CAAA,MAAM,MAAO,CAAA,UAAA,EAAa,CAAA,UAAA,CAAW,GAAK,EAAA,EAAE,CAAC,CAAA,CAAA;AAC1E,EAAM,MAAA,IAAA,GAAO,QAAQ,MAAM;AACzB,IAAO,OAAA,gBAAA,CAAiB,WAAW,SAAS,CAAA,CAAA;AAAA,GAC3C,EAAA,CAAC,SAAW,EAAA,SAAS,CAAC,CAAA,CAAA;AAEzB,EAAM,MAAA,KAAA,GAAQ,QAAQ,MAAM;AAC1B,IAAA,OAAO,kBAAmB,EAAA,CAAA;AAAA,GAC5B,EAAG,EAAE,CAAA,CAAA;AAIL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,WAAc,GAAA,2BAAA,CAA4B,KAAO,EAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AAChE,IAAA,GAAA,CAAI,wCAAwC,CAAA,CAAA;AAC5C,IAAO,OAAA,WAAA,CAAA;AAAA,GACN,EAAA,CAAC,KAAO,EAAA,IAAA,EAAM,GAAG,CAAC,CAAA,CAAA;AAErB,EAAA,2BACG,cAAe,CAAA,QAAA,EAAf,EAAwB,KAAA,EAAO,OAAQ,QAAS,EAAA,CAAA,CAAA;AAErD;;;;"}
1
+ {"version":3,"file":"PaymentProvider.js","sources":["../../../src/provider/PaymentProvider.tsx"],"sourcesContent":["import { createContext, useLayoutEffect, useMemo, useState } from \"react\";\nimport { attachPaymentEffectHandlers } from \"../payment/paymentEffects\";\nimport { createPaymentStore, PaymentStore } from \"../payment/paymentStore\";\nimport { createTrpcClient } from \"../utils/trpc\";\n\nexport const PaymentContext = createContext<PaymentStore | null>(null);\n\ntype PaymentProviderProps = {\n children: React.ReactNode;\n payApiUrl: string;\n log?: (msg: string) => void;\n debugMode?: boolean;\n};\n\nexport function PaymentProvider({\n children,\n payApiUrl,\n log = console.log,\n debugMode = false,\n}: PaymentProviderProps) {\n // Generate unique sessionId for tracking in the backend\n const [sessionId] = useState(() => crypto.randomUUID().replaceAll(\"-\", \"\"));\n const trpc = useMemo(() => {\n return createTrpcClient(payApiUrl, sessionId);\n }, [payApiUrl, sessionId]);\n\n const store = useMemo(() => {\n return createPaymentStore();\n }, []);\n\n // Attach subscriber to run side effects in response to events. Use a\n // layout effect that runs before the first render.\n useLayoutEffect(() => {\n const unsubscribe = attachPaymentEffectHandlers(\n store,\n trpc,\n log,\n debugMode,\n );\n log(\"[EFFECT] subscribed to payment effects\");\n return unsubscribe;\n }, [store, trpc, log, debugMode]);\n\n return (\n <PaymentContext.Provider value={store}>{children}</PaymentContext.Provider>\n );\n}\n"],"names":[],"mappings":";;;;;;AAKa,MAAA,cAAA,GAAiB,cAAmC,IAAI,EAAA;AAS9D,SAAS,eAAgB,CAAA;AAAA,EAC9B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAAA,EACd,SAAY,GAAA,KAAA;AACd,CAAyB,EAAA;AAEvB,EAAM,MAAA,CAAC,SAAS,CAAA,GAAI,QAAS,CAAA,MAAM,MAAO,CAAA,UAAA,EAAa,CAAA,UAAA,CAAW,GAAK,EAAA,EAAE,CAAC,CAAA,CAAA;AAC1E,EAAM,MAAA,IAAA,GAAO,QAAQ,MAAM;AACzB,IAAO,OAAA,gBAAA,CAAiB,WAAW,SAAS,CAAA,CAAA;AAAA,GAC3C,EAAA,CAAC,SAAW,EAAA,SAAS,CAAC,CAAA,CAAA;AAEzB,EAAM,MAAA,KAAA,GAAQ,QAAQ,MAAM;AAC1B,IAAA,OAAO,kBAAmB,EAAA,CAAA;AAAA,GAC5B,EAAG,EAAE,CAAA,CAAA;AAIL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,WAAc,GAAA,2BAAA;AAAA,MAClB,KAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA;AAAA,KACF,CAAA;AACA,IAAA,GAAA,CAAI,wCAAwC,CAAA,CAAA;AAC5C,IAAO,OAAA,WAAA,CAAA;AAAA,KACN,CAAC,KAAA,EAAO,IAAM,EAAA,GAAA,EAAK,SAAS,CAAC,CAAA,CAAA;AAEhC,EAAA,2BACG,cAAe,CAAA,QAAA,EAAf,EAAwB,KAAA,EAAO,OAAQ,QAAS,EAAA,CAAA,CAAA;AAErD;;;;"}
@@ -4,25 +4,34 @@ function startPolling({
4
4
  pollFn,
5
5
  onResult,
6
6
  onError,
7
- log = console.log
7
+ log = console.log,
8
+ debugMode = false
8
9
  }) {
9
10
  let active = true;
10
11
  let timer;
11
12
  const stop = () => {
12
13
  active = false;
13
14
  clearTimeout(timer);
14
- log(`[POLL] ${key} stopped`);
15
+ if (debugMode) {
16
+ log(`[POLL] ${key} stopped`);
17
+ }
15
18
  };
16
19
  const tick = async () => {
17
- log(`[POLL] polling ${key}`);
20
+ if (debugMode) {
21
+ log(`[POLL] polling ${key}`);
22
+ }
18
23
  try {
19
24
  const res = await pollFn();
20
25
  if (!active) return;
21
- log(`[POLL] ${key} success`);
26
+ if (debugMode) {
27
+ log(`[POLL] ${key} success`);
28
+ }
22
29
  onResult(res);
23
30
  } catch (e) {
24
31
  if (!active) return;
25
- log(`[POLL] ${key} error: ${e}`);
32
+ if (debugMode) {
33
+ log(`[POLL] ${key} error: ${e}`);
34
+ }
26
35
  onError(e);
27
36
  }
28
37
  timer = setTimeout(tick, intervalMs);
@@ -1 +1 @@
1
- {"version":3,"file":"polling.js","sources":["../../../src/utils/polling.ts"],"sourcesContent":["export type PollHandle = () => void;\n\n/**\n * Will poll the given function at the specified interval. Stops when the\n * returned handle is invoked.\n */\nexport function startPolling<T>({\n key,\n intervalMs,\n pollFn,\n onResult,\n onError,\n log = console.log,\n}: {\n key: string;\n intervalMs: number;\n pollFn: () => Promise<T>;\n onResult: (value: T) => void;\n onError: (err: unknown) => void;\n log?: (msg: string) => void;\n}): PollHandle {\n let active = true;\n let timer: NodeJS.Timeout;\n\n const stop = () => {\n active = false;\n clearTimeout(timer);\n log(`[POLL] ${key} stopped`);\n };\n\n const tick = async () => {\n log(`[POLL] polling ${key}`);\n try {\n const res = await pollFn();\n if (!active) return;\n log(`[POLL] ${key} success`);\n onResult(res);\n } catch (e) {\n if (!active) return;\n log(`[POLL] ${key} error: ${e}`);\n onError(e);\n }\n timer = setTimeout(tick, intervalMs);\n };\n\n tick();\n\n return stop;\n}\n"],"names":[],"mappings":"AAMO,SAAS,YAAgB,CAAA;AAAA,EAC9B,GAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAChB,CAOe,EAAA;AACb,EAAA,IAAI,MAAS,GAAA,IAAA,CAAA;AACb,EAAI,IAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,OAAO,MAAM;AACjB,IAAS,MAAA,GAAA,KAAA,CAAA;AACT,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAClB,IAAI,GAAA,CAAA,CAAA,OAAA,EAAU,GAAG,CAAU,QAAA,CAAA,CAAA,CAAA;AAAA,GAC7B,CAAA;AAEA,EAAA,MAAM,OAAO,YAAY;AACvB,IAAI,GAAA,CAAA,CAAA,eAAA,EAAkB,GAAG,CAAE,CAAA,CAAA,CAAA;AAC3B,IAAI,IAAA;AACF,MAAM,MAAA,GAAA,GAAM,MAAM,MAAO,EAAA,CAAA;AACzB,MAAA,IAAI,CAAC,MAAQ,EAAA,OAAA;AACb,MAAI,GAAA,CAAA,CAAA,OAAA,EAAU,GAAG,CAAU,QAAA,CAAA,CAAA,CAAA;AAC3B,MAAA,QAAA,CAAS,GAAG,CAAA,CAAA;AAAA,aACL,CAAG,EAAA;AACV,MAAA,IAAI,CAAC,MAAQ,EAAA,OAAA;AACb,MAAA,GAAA,CAAI,CAAU,OAAA,EAAA,GAAG,CAAW,QAAA,EAAA,CAAC,CAAE,CAAA,CAAA,CAAA;AAC/B,MAAA,OAAA,CAAQ,CAAC,CAAA,CAAA;AAAA,KACX;AACA,IAAQ,KAAA,GAAA,UAAA,CAAW,MAAM,UAAU,CAAA,CAAA;AAAA,GACrC,CAAA;AAEA,EAAK,IAAA,EAAA,CAAA;AAEL,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"polling.js","sources":["../../../src/utils/polling.ts"],"sourcesContent":["export type PollHandle = () => void;\n\n/**\n * Will poll the given function at the specified interval. Stops when the\n * returned handle is invoked. If debugMode is false, polling is disabled.\n */\nexport function startPolling<T>({\n key,\n intervalMs,\n pollFn,\n onResult,\n onError,\n log = console.log,\n debugMode = false,\n}: {\n key: string;\n intervalMs: number;\n pollFn: () => Promise<T>;\n onResult: (value: T) => void;\n onError: (err: unknown) => void;\n log?: (msg: string) => void;\n debugMode?: boolean;\n}): PollHandle {\n let active = true;\n let timer: NodeJS.Timeout;\n\n const stop = () => {\n active = false;\n clearTimeout(timer);\n if (debugMode) {\n log(`[POLL] ${key} stopped`);\n }\n };\n\n const tick = async () => {\n if (debugMode) {\n log(`[POLL] polling ${key}`);\n }\n try {\n const res = await pollFn();\n if (!active) return;\n if (debugMode) {\n log(`[POLL] ${key} success`);\n }\n onResult(res);\n } catch (e) {\n if (!active) return;\n if (debugMode) {\n log(`[POLL] ${key} error: ${e}`);\n }\n onError(e);\n }\n timer = setTimeout(tick, intervalMs);\n };\n\n tick();\n\n return stop;\n}\n"],"names":[],"mappings":"AAMO,SAAS,YAAgB,CAAA;AAAA,EAC9B,GAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAAA,EACd,SAAY,GAAA,KAAA;AACd,CAQe,EAAA;AACb,EAAA,IAAI,MAAS,GAAA,IAAA,CAAA;AACb,EAAI,IAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,OAAO,MAAM;AACjB,IAAS,MAAA,GAAA,KAAA,CAAA;AACT,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAClB,IAAA,IAAI,SAAW,EAAA;AACb,MAAI,GAAA,CAAA,CAAA,OAAA,EAAU,GAAG,CAAU,QAAA,CAAA,CAAA,CAAA;AAAA,KAC7B;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,OAAO,YAAY;AACvB,IAAA,IAAI,SAAW,EAAA;AACb,MAAI,GAAA,CAAA,CAAA,eAAA,EAAkB,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,KAC7B;AACA,IAAI,IAAA;AACF,MAAM,MAAA,GAAA,GAAM,MAAM,MAAO,EAAA,CAAA;AACzB,MAAA,IAAI,CAAC,MAAQ,EAAA,OAAA;AACb,MAAA,IAAI,SAAW,EAAA;AACb,QAAI,GAAA,CAAA,CAAA,OAAA,EAAU,GAAG,CAAU,QAAA,CAAA,CAAA,CAAA;AAAA,OAC7B;AACA,MAAA,QAAA,CAAS,GAAG,CAAA,CAAA;AAAA,aACL,CAAG,EAAA;AACV,MAAA,IAAI,CAAC,MAAQ,EAAA,OAAA;AACb,MAAA,IAAI,SAAW,EAAA;AACb,QAAA,GAAA,CAAI,CAAU,OAAA,EAAA,GAAG,CAAW,QAAA,EAAA,CAAC,CAAE,CAAA,CAAA,CAAA;AAAA,OACjC;AACA,MAAA,OAAA,CAAQ,CAAC,CAAA,CAAA;AAAA,KACX;AACA,IAAQ,KAAA,GAAA,UAAA,CAAW,MAAM,UAAU,CAAA,CAAA;AAAA,GACrC,CAAA;AAEA,EAAK,IAAA,EAAA,CAAA;AAEL,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@daimo/pay",
3
3
  "private": false,
4
- "version": "1.19.5",
4
+ "version": "1.19.6",
5
5
  "author": "Daimo",
6
6
  "homepage": "https://pay.daimo.com",
7
7
  "license": "BSD-2-Clause license",
@@ -33,7 +33,7 @@
33
33
  "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}' --max-warnings=0"
34
34
  },
35
35
  "dependencies": {
36
- "@daimo/pay-common": "1.19.5",
36
+ "@daimo/pay-common": "1.19.6",
37
37
  "@solana/wallet-adapter-base": "^0.9.23",
38
38
  "@solana/wallet-adapter-react": "^0.15.35",
39
39
  "@solana/web3.js": "^1.95.4",