@crossmint/client-sdk-react-native-ui 0.13.27 → 0.13.28

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 (297) hide show
  1. package/dist/chunk-24MMQ2R4.js +15 -0
  2. package/dist/chunk-24MMQ2R4.js.map +1 -0
  3. package/dist/chunk-2DNOAXOE.mjs +8 -0
  4. package/dist/chunk-2DNOAXOE.mjs.map +1 -0
  5. package/dist/chunk-2TEAOLM6.mjs +149 -0
  6. package/dist/chunk-2TEAOLM6.mjs.map +1 -0
  7. package/dist/chunk-34OVOZB2.mjs +111 -0
  8. package/dist/chunk-34OVOZB2.mjs.map +1 -0
  9. package/dist/chunk-3AWDWMZ2.mjs +18 -0
  10. package/dist/chunk-3AWDWMZ2.mjs.map +1 -0
  11. package/dist/chunk-3PJ6FXFT.mjs +1 -0
  12. package/dist/chunk-3PJ6FXFT.mjs.map +1 -0
  13. package/dist/chunk-3SFSPJXM.mjs +55 -0
  14. package/dist/chunk-3SFSPJXM.mjs.map +1 -0
  15. package/dist/chunk-4AJTICKY.mjs +44 -0
  16. package/dist/chunk-4AJTICKY.mjs.map +1 -0
  17. package/dist/chunk-4HKXTAVR.js +14 -0
  18. package/dist/chunk-4HKXTAVR.js.map +1 -0
  19. package/dist/chunk-4V7NDO5X.mjs +157 -0
  20. package/dist/chunk-4V7NDO5X.mjs.map +1 -0
  21. package/dist/chunk-4WJIXD7U.mjs +14 -0
  22. package/dist/chunk-4WJIXD7U.mjs.map +1 -0
  23. package/dist/chunk-5V6ONJWT.mjs +61 -0
  24. package/dist/chunk-5V6ONJWT.mjs.map +1 -0
  25. package/dist/chunk-5ZBDQUNG.js +1 -0
  26. package/dist/chunk-5ZBDQUNG.js.map +1 -0
  27. package/dist/chunk-6S5SEVGS.js +17 -0
  28. package/dist/chunk-6S5SEVGS.js.map +1 -0
  29. package/dist/chunk-6Z74KC25.mjs +1 -0
  30. package/dist/chunk-6Z74KC25.mjs.map +1 -0
  31. package/dist/chunk-7SPIOD4K.mjs +66 -0
  32. package/dist/chunk-7SPIOD4K.mjs.map +1 -0
  33. package/dist/chunk-ALMDA3KN.mjs +199 -0
  34. package/dist/chunk-ALMDA3KN.mjs.map +1 -0
  35. package/dist/chunk-BE4HT2U7.mjs +1 -0
  36. package/dist/chunk-BE4HT2U7.mjs.map +1 -0
  37. package/dist/chunk-BTH5QRIT.js +149 -0
  38. package/dist/chunk-BTH5QRIT.js.map +1 -0
  39. package/dist/chunk-BUB4U2GE.js +44 -0
  40. package/dist/chunk-BUB4U2GE.js.map +1 -0
  41. package/dist/chunk-BUTZZ7JB.js +36 -0
  42. package/dist/chunk-BUTZZ7JB.js.map +1 -0
  43. package/dist/chunk-CFHHVHNZ.mjs +157 -0
  44. package/dist/chunk-CFHHVHNZ.mjs.map +1 -0
  45. package/dist/chunk-CV6RWU2T.js +50 -0
  46. package/dist/chunk-CV6RWU2T.js.map +1 -0
  47. package/dist/chunk-DD2MVD6A.mjs +36 -0
  48. package/dist/chunk-DD2MVD6A.mjs.map +1 -0
  49. package/dist/chunk-EKXEDMRD.mjs +71 -0
  50. package/dist/chunk-EKXEDMRD.mjs.map +1 -0
  51. package/dist/chunk-FCDPEDXH.mjs +148 -0
  52. package/dist/chunk-FCDPEDXH.mjs.map +1 -0
  53. package/dist/chunk-FQID5LOL.js +22 -0
  54. package/dist/chunk-FQID5LOL.js.map +1 -0
  55. package/dist/chunk-FRD6HEIM.mjs +22 -0
  56. package/dist/chunk-FRD6HEIM.mjs.map +1 -0
  57. package/dist/chunk-GYBEEYGB.mjs +1 -0
  58. package/dist/chunk-GYBEEYGB.mjs.map +1 -0
  59. package/dist/chunk-HELXBZ7D.js +18 -0
  60. package/dist/chunk-HELXBZ7D.js.map +1 -0
  61. package/dist/chunk-IBQK5B7B.js +71 -0
  62. package/dist/chunk-IBQK5B7B.js.map +1 -0
  63. package/dist/chunk-IHZNXV5S.js +1 -0
  64. package/dist/chunk-IHZNXV5S.js.map +1 -0
  65. package/dist/chunk-IMME6ZBV.js +61 -0
  66. package/dist/chunk-IMME6ZBV.js.map +1 -0
  67. package/dist/chunk-J2MDWDV6.mjs +1 -0
  68. package/dist/chunk-J2MDWDV6.mjs.map +1 -0
  69. package/dist/chunk-KK4SQ7WF.js +1 -0
  70. package/dist/chunk-KK4SQ7WF.js.map +1 -0
  71. package/dist/chunk-KOUCOMBE.js +148 -0
  72. package/dist/chunk-KOUCOMBE.js.map +1 -0
  73. package/dist/chunk-MMVER6VO.js +1 -0
  74. package/dist/chunk-MMVER6VO.js.map +1 -0
  75. package/dist/chunk-MVLQR6RI.js +199 -0
  76. package/dist/chunk-MVLQR6RI.js.map +1 -0
  77. package/dist/chunk-NBWATZY4.js +157 -0
  78. package/dist/chunk-NBWATZY4.js.map +1 -0
  79. package/dist/chunk-OTRMAWWU.js +55 -0
  80. package/dist/chunk-OTRMAWWU.js.map +1 -0
  81. package/dist/chunk-P35PHJU5.mjs +17 -0
  82. package/dist/chunk-P35PHJU5.mjs.map +1 -0
  83. package/dist/chunk-PUTC7LI4.mjs +348 -0
  84. package/dist/chunk-PUTC7LI4.mjs.map +1 -0
  85. package/dist/chunk-Q2Y5CZT4.js +157 -0
  86. package/dist/chunk-Q2Y5CZT4.js.map +1 -0
  87. package/dist/chunk-Q7YPX4RJ.js +66 -0
  88. package/dist/chunk-Q7YPX4RJ.js.map +1 -0
  89. package/dist/chunk-R47XMJ32.js +1 -0
  90. package/dist/chunk-R47XMJ32.js.map +1 -0
  91. package/dist/chunk-RSCBYS6I.mjs +15 -0
  92. package/dist/chunk-RSCBYS6I.mjs.map +1 -0
  93. package/dist/chunk-RTLOANMR.mjs +50 -0
  94. package/dist/chunk-RTLOANMR.mjs.map +1 -0
  95. package/dist/chunk-S3OC5AT3.mjs +24 -0
  96. package/dist/chunk-S3OC5AT3.mjs.map +1 -0
  97. package/dist/chunk-SHSENRY7.js +24 -0
  98. package/dist/chunk-SHSENRY7.js.map +1 -0
  99. package/dist/chunk-TNPZITVL.mjs +1 -0
  100. package/dist/chunk-TNPZITVL.mjs.map +1 -0
  101. package/dist/chunk-UNIFCVYR.js +348 -0
  102. package/dist/chunk-UNIFCVYR.js.map +1 -0
  103. package/dist/chunk-VCF2YXCO.js +208 -0
  104. package/dist/chunk-VCF2YXCO.js.map +1 -0
  105. package/dist/chunk-XNVZRSGL.js +111 -0
  106. package/dist/chunk-XNVZRSGL.js.map +1 -0
  107. package/dist/chunk-XUGJXLWC.js +8 -0
  108. package/dist/chunk-XUGJXLWC.js.map +1 -0
  109. package/dist/chunk-XXJ7LQ44.js +1 -0
  110. package/dist/chunk-XXJ7LQ44.js.map +1 -0
  111. package/dist/chunk-Z7Y7COJM.mjs +208 -0
  112. package/dist/chunk-Z7Y7COJM.mjs.map +1 -0
  113. package/dist/components/embed/index.js +16 -1
  114. package/dist/components/embed/index.js.map +1 -0
  115. package/dist/components/embed/index.mjs +16 -1
  116. package/dist/components/embed/index.mjs.map +1 -0
  117. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.js +14 -1
  118. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.js.map +1 -0
  119. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.mjs +14 -1
  120. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.mjs.map +1 -0
  121. package/dist/components/embed/v3/EmbeddedCheckoutV3WebView.js +13 -1
  122. package/dist/components/embed/v3/EmbeddedCheckoutV3WebView.js.map +1 -0
  123. package/dist/components/embed/v3/EmbeddedCheckoutV3WebView.mjs +13 -1
  124. package/dist/components/embed/v3/EmbeddedCheckoutV3WebView.mjs.map +1 -0
  125. package/dist/components/embed/v3/crypto/PayerConnectionHandler.js +8 -1
  126. package/dist/components/embed/v3/crypto/PayerConnectionHandler.js.map +1 -0
  127. package/dist/components/embed/v3/crypto/PayerConnectionHandler.mjs +8 -1
  128. package/dist/components/embed/v3/crypto/PayerConnectionHandler.mjs.map +1 -0
  129. package/dist/components/embed/v3/index.js +15 -1
  130. package/dist/components/embed/v3/index.js.map +1 -0
  131. package/dist/components/embed/v3/index.mjs +15 -1
  132. package/dist/components/embed/v3/index.mjs.map +1 -0
  133. package/dist/components/index.js +34 -1
  134. package/dist/components/index.js.map +1 -0
  135. package/dist/components/index.mjs +34 -1
  136. package/dist/components/index.mjs.map +1 -0
  137. package/dist/components/signers/BaseCodeInput.js +9 -1
  138. package/dist/components/signers/BaseCodeInput.js.map +1 -0
  139. package/dist/components/signers/BaseCodeInput.mjs +9 -1
  140. package/dist/components/signers/BaseCodeInput.mjs.map +1 -0
  141. package/dist/components/signers/BaseConfirmation.js +9 -1
  142. package/dist/components/signers/BaseConfirmation.js.map +1 -0
  143. package/dist/components/signers/BaseConfirmation.mjs +9 -1
  144. package/dist/components/signers/BaseConfirmation.mjs.map +1 -0
  145. package/dist/components/signers/EmailSignersDialog.js +11 -1
  146. package/dist/components/signers/EmailSignersDialog.js.map +1 -0
  147. package/dist/components/signers/EmailSignersDialog.mjs +11 -1
  148. package/dist/components/signers/EmailSignersDialog.mjs.map +1 -0
  149. package/dist/components/signers/PhoneSignersDialog.js +11 -1
  150. package/dist/components/signers/PhoneSignersDialog.js.map +1 -0
  151. package/dist/components/signers/PhoneSignersDialog.mjs +11 -1
  152. package/dist/components/signers/PhoneSignersDialog.mjs.map +1 -0
  153. package/dist/components/signers/index.js +16 -1
  154. package/dist/components/signers/index.js.map +1 -0
  155. package/dist/components/signers/index.mjs +16 -1
  156. package/dist/components/signers/index.mjs.map +1 -0
  157. package/dist/components/wallets/ExportPrivateKeyButton.js +8 -1
  158. package/dist/components/wallets/ExportPrivateKeyButton.js.map +1 -0
  159. package/dist/components/wallets/ExportPrivateKeyButton.mjs +8 -1
  160. package/dist/components/wallets/ExportPrivateKeyButton.mjs.map +1 -0
  161. package/dist/components/wallets/index.js +9 -1
  162. package/dist/components/wallets/index.js.map +1 -0
  163. package/dist/components/wallets/index.mjs +9 -1
  164. package/dist/components/wallets/index.mjs.map +1 -0
  165. package/dist/hooks/index.js +26 -1
  166. package/dist/hooks/index.js.map +1 -0
  167. package/dist/hooks/index.mjs +26 -1
  168. package/dist/hooks/index.mjs.map +1 -0
  169. package/dist/hooks/useAuth.js +14 -1
  170. package/dist/hooks/useAuth.js.map +1 -0
  171. package/dist/hooks/useAuth.mjs +14 -1
  172. package/dist/hooks/useAuth.mjs.map +1 -0
  173. package/dist/hooks/useCrossmintCheckout.js +11 -1
  174. package/dist/hooks/useCrossmintCheckout.js.map +1 -0
  175. package/dist/hooks/useCrossmintCheckout.mjs +11 -1
  176. package/dist/hooks/useCrossmintCheckout.mjs.map +1 -0
  177. package/dist/hooks/useWalletEmailSigner.js +8 -1
  178. package/dist/hooks/useWalletEmailSigner.js.map +1 -0
  179. package/dist/hooks/useWalletEmailSigner.mjs +8 -1
  180. package/dist/hooks/useWalletEmailSigner.mjs.map +1 -0
  181. package/dist/index.js +79 -1
  182. package/dist/index.js.map +1 -0
  183. package/dist/index.mjs +79 -1
  184. package/dist/index.mjs.map +1 -0
  185. package/dist/logger/init.js +9 -1
  186. package/dist/logger/init.js.map +1 -0
  187. package/dist/logger/init.mjs +9 -1
  188. package/dist/logger/init.mjs.map +1 -0
  189. package/dist/plugin/mods/addQueryToAndroidManifest.js +8 -1
  190. package/dist/plugin/mods/addQueryToAndroidManifest.js.map +1 -0
  191. package/dist/plugin/mods/addQueryToAndroidManifest.mjs +8 -1
  192. package/dist/plugin/mods/addQueryToAndroidManifest.mjs.map +1 -0
  193. package/dist/plugin/withGooglePay.js +57 -1
  194. package/dist/plugin/withGooglePay.js.map +1 -0
  195. package/dist/plugin/withGooglePay.mjs +57 -1
  196. package/dist/plugin/withGooglePay.mjs.map +1 -0
  197. package/dist/providers/CrossmintAuthProvider.js +14 -1
  198. package/dist/providers/CrossmintAuthProvider.js.map +1 -0
  199. package/dist/providers/CrossmintAuthProvider.mjs +14 -1
  200. package/dist/providers/CrossmintAuthProvider.mjs.map +1 -0
  201. package/dist/providers/CrossmintProvider.js +12 -1
  202. package/dist/providers/CrossmintProvider.js.map +1 -0
  203. package/dist/providers/CrossmintProvider.mjs +12 -1
  204. package/dist/providers/CrossmintProvider.mjs.map +1 -0
  205. package/dist/providers/CrossmintWalletProvider.js +16 -1
  206. package/dist/providers/CrossmintWalletProvider.js.map +1 -0
  207. package/dist/providers/CrossmintWalletProvider.mjs +16 -1
  208. package/dist/providers/CrossmintWalletProvider.mjs.map +1 -0
  209. package/dist/providers/index.js +28 -1
  210. package/dist/providers/index.js.map +1 -0
  211. package/dist/providers/index.mjs +28 -1
  212. package/dist/providers/index.mjs.map +1 -0
  213. package/dist/styles/index.js +8 -1
  214. package/dist/styles/index.js.map +1 -0
  215. package/dist/styles/index.mjs +8 -1
  216. package/dist/styles/index.mjs.map +1 -0
  217. package/dist/styles/theme.js +8 -1
  218. package/dist/styles/theme.js.map +1 -0
  219. package/dist/styles/theme.mjs +8 -1
  220. package/dist/styles/theme.mjs.map +1 -0
  221. package/dist/types/auth.js +1 -1
  222. package/dist/types/auth.js.map +1 -0
  223. package/dist/types/auth.mjs +1 -0
  224. package/dist/types/auth.mjs.map +1 -0
  225. package/dist/utils/SecureStorage.js +8 -1
  226. package/dist/utils/SecureStorage.js.map +1 -0
  227. package/dist/utils/SecureStorage.mjs +8 -1
  228. package/dist/utils/SecureStorage.mjs.map +1 -0
  229. package/dist/utils/createCrossmintApiClient.js +9 -1
  230. package/dist/utils/createCrossmintApiClient.js.map +1 -0
  231. package/dist/utils/createCrossmintApiClient.mjs +9 -1
  232. package/dist/utils/createCrossmintApiClient.mjs.map +1 -0
  233. package/dist/utils/embed/userAgent.js +12 -1
  234. package/dist/utils/embed/userAgent.js.map +1 -0
  235. package/dist/utils/embed/userAgent.mjs +12 -1
  236. package/dist/utils/embed/userAgent.mjs.map +1 -0
  237. package/dist/utils/eventEmitter.js +8 -1
  238. package/dist/utils/eventEmitter.js.map +1 -0
  239. package/dist/utils/eventEmitter.mjs +8 -1
  240. package/dist/utils/eventEmitter.mjs.map +1 -0
  241. package/package.json +54 -58
  242. package/dist/chunk-26ALKCF5.js +0 -1
  243. package/dist/chunk-2D2RJCVX.js +0 -1
  244. package/dist/chunk-2PX34LDU.js +0 -1
  245. package/dist/chunk-3HU2PILN.js +0 -1
  246. package/dist/chunk-3QSVHCEH.mjs +0 -2
  247. package/dist/chunk-3RE54L4I.js +0 -1
  248. package/dist/chunk-5CLFJLE4.mjs +0 -0
  249. package/dist/chunk-5ZNJIO4M.js +0 -1
  250. package/dist/chunk-72MMCJ2E.js +0 -1
  251. package/dist/chunk-77GXCNDP.js +0 -1
  252. package/dist/chunk-7USVT6EZ.mjs +0 -1
  253. package/dist/chunk-7YKYLQL6.mjs +0 -1
  254. package/dist/chunk-AJMHVVST.js +0 -1
  255. package/dist/chunk-ASFGJDGB.mjs +0 -1
  256. package/dist/chunk-AV236X3H.mjs +0 -1
  257. package/dist/chunk-C62HRWJA.js +0 -1
  258. package/dist/chunk-D4347S2W.mjs +0 -1
  259. package/dist/chunk-D5QADN6Z.mjs +0 -1
  260. package/dist/chunk-DC5HCBPK.js +0 -1
  261. package/dist/chunk-DKQZSNOO.js +0 -1
  262. package/dist/chunk-EF2YTIUF.mjs +0 -1
  263. package/dist/chunk-EF5KYLDO.js +0 -1
  264. package/dist/chunk-EI5LOD4Y.js +0 -1
  265. package/dist/chunk-EJO7BAXE.js +0 -1
  266. package/dist/chunk-F7VXWATP.js +0 -1
  267. package/dist/chunk-FEGPD4LZ.mjs +0 -1
  268. package/dist/chunk-FFQ6EQCL.mjs +0 -1
  269. package/dist/chunk-FX23A4BR.mjs +0 -1
  270. package/dist/chunk-I3QSTPTV.mjs +0 -0
  271. package/dist/chunk-I4D3YJW2.js +0 -1
  272. package/dist/chunk-IDJHXN7Q.js +0 -1
  273. package/dist/chunk-IUDQDPIN.mjs +0 -1
  274. package/dist/chunk-J2XU2BUG.mjs +0 -1
  275. package/dist/chunk-J42HASCI.js +0 -1
  276. package/dist/chunk-J477SX6P.mjs +0 -1
  277. package/dist/chunk-J7Q2R6UH.mjs +0 -0
  278. package/dist/chunk-LK3AO6AY.mjs +0 -1
  279. package/dist/chunk-LOFHVHXQ.js +0 -1
  280. package/dist/chunk-MB7H3PBJ.mjs +0 -0
  281. package/dist/chunk-MKCQJOIO.js +0 -1
  282. package/dist/chunk-MVVSGLQL.js +0 -2
  283. package/dist/chunk-PCJMDUSI.mjs +0 -1
  284. package/dist/chunk-PSSAAY7D.mjs +0 -1
  285. package/dist/chunk-RQ5I5OCQ.mjs +0 -1
  286. package/dist/chunk-SHTETN4C.js +0 -1
  287. package/dist/chunk-TCTH7JIY.js +0 -1
  288. package/dist/chunk-TIQGKXQA.mjs +0 -0
  289. package/dist/chunk-TYFMPXM4.mjs +0 -1
  290. package/dist/chunk-UA34B5QB.js +0 -1
  291. package/dist/chunk-UBHIBMTA.mjs +0 -0
  292. package/dist/chunk-VACQTZRT.js +0 -1
  293. package/dist/chunk-XNDIT72O.mjs +0 -2
  294. package/dist/chunk-YJORUMPB.js +0 -2
  295. package/dist/chunk-YLJDAK2S.mjs +0 -1
  296. package/dist/chunk-YQEWHOQ7.js +0 -1
  297. package/dist/chunk-ZCKUSOGC.mjs +0 -1
@@ -0,0 +1,44 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkQ7YPX4RJjs = require('./chunk-Q7YPX4RJ.js');
4
+
5
+ // src/components/embed/v3/crypto/PayerConnectionHandler.tsx
6
+ var _react = require('react');
7
+ function PayerConnectionHandler({
8
+ payer,
9
+ webViewClient
10
+ }) {
11
+ _react.useEffect.call(void 0, () => {
12
+ if (webViewClient == null) {
13
+ return;
14
+ }
15
+ const signTransactionListener = webViewClient.on(
16
+ "crypto:send-transaction",
17
+ (_0) => _chunkQ7YPX4RJjs.__async.call(void 0, this, [_0], function* ({ chain, serializedTransaction }) {
18
+ try {
19
+ yield payer.handleChainSwitch(chain);
20
+ const tx = yield payer.handleSignAndSendTransaction(serializedTransaction);
21
+ if (tx.success) {
22
+ webViewClient.send("crypto:send-transaction:success", { txId: tx.txId });
23
+ } else {
24
+ webViewClient.send("crypto:send-transaction:failed", { error: tx.errorMessage });
25
+ }
26
+ } catch (error) {
27
+ console.error("[PayerConnectionHandler] Failed to send transaction", error);
28
+ webViewClient.send("crypto:send-transaction:failed", {
29
+ error: error.message || "An unknown error occurred"
30
+ });
31
+ }
32
+ })
33
+ );
34
+ return () => {
35
+ webViewClient.off(signTransactionListener);
36
+ };
37
+ }, [webViewClient]);
38
+ return null;
39
+ }
40
+
41
+
42
+
43
+ exports.PayerConnectionHandler = PayerConnectionHandler;
44
+ //# sourceMappingURL=chunk-BUB4U2GE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/embed/v3/crypto/PayerConnectionHandler.tsx"],"names":[],"mappings":";;;;;AAAA,SAAS,iBAAiB;AAMnB,SAAS,uBAAuB;AAAA,EACnC;AAAA,EACA;AACJ,GAMG;AACC,YAAU,MAAM;AACZ,QAAI,iBAAiB,MAAM;AACvB;AAAA,IACJ;AAEA,UAAM,0BAA0B,cAAc;AAAA,MAC1C;AAAA,MACA,CAAO,OAAqC,eAArC,KAAqC,WAArC,EAAE,OAAO,sBAAsB,GAAM;AACxC,YAAI;AACA,gBAAM,MAAM,kBAAkB,KAAkC;AAChE,gBAAM,KAAK,MAAM,MAAM,6BAA6B,qBAAqB;AACzE,cAAI,GAAG,SAAS;AACZ,0BAAc,KAAK,mCAAmC,EAAE,MAAM,GAAG,KAAK,CAAC;AAAA,UAC3E,OAAO;AACH,0BAAc,KAAK,kCAAkC,EAAE,OAAO,GAAG,aAAa,CAAC;AAAA,UACnF;AAAA,QACJ,SAAS,OAAO;AACZ,kBAAQ,MAAM,uDAAuD,KAAK;AAC1E,wBAAc,KAAK,kCAAkC;AAAA,YACjD,OAAQ,MAAgB,WAAW;AAAA,UACvC,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO,MAAM;AACT,oBAAc,IAAI,uBAAuB;AAAA,IAC7C;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,SAAO;AACX","sourcesContent":["import { useEffect } from \"react\";\nimport type { EmbeddedCheckoutPayer } from \"@crossmint/client-sdk-base\";\nimport type { PayerSupportedBlockchains } from \"@crossmint/common-sdk-base\";\nimport type { WebViewParent } from \"@crossmint/client-sdk-rn-window\";\nimport type { embeddedCheckoutV3IncomingEvents, embeddedCheckoutV3OutgoingEvents } from \"@crossmint/client-sdk-base\";\n\nexport function PayerConnectionHandler({\n payer,\n webViewClient,\n}: {\n payer: EmbeddedCheckoutPayer;\n webViewClient: WebViewParent<\n typeof embeddedCheckoutV3IncomingEvents,\n typeof embeddedCheckoutV3OutgoingEvents\n > | null;\n}) {\n useEffect(() => {\n if (webViewClient == null) {\n return;\n }\n\n const signTransactionListener = webViewClient.on(\n \"crypto:send-transaction\",\n async ({ chain, serializedTransaction }) => {\n try {\n await payer.handleChainSwitch(chain as PayerSupportedBlockchains);\n const tx = await payer.handleSignAndSendTransaction(serializedTransaction);\n if (tx.success) {\n webViewClient.send(\"crypto:send-transaction:success\", { txId: tx.txId });\n } else {\n webViewClient.send(\"crypto:send-transaction:failed\", { error: tx.errorMessage });\n }\n } catch (error) {\n console.error(\"[PayerConnectionHandler] Failed to send transaction\", error);\n webViewClient.send(\"crypto:send-transaction:failed\", {\n error: (error as Error).message || \"An unknown error occurred\",\n });\n }\n }\n );\n\n return () => {\n webViewClient.off(signTransactionListener);\n };\n }, [webViewClient]);\n\n return null;\n}\n"]}
@@ -0,0 +1,36 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkXUGJXLWCjs = require('./chunk-XUGJXLWC.js');
4
+
5
+ // src/hooks/useCrossmintCheckout.tsx
6
+ var _react = require('react');
7
+ var _jsxruntime = require('react/jsx-runtime');
8
+ var CrossmintCheckoutContext = _react.createContext.call(void 0, void 0);
9
+ function CrossmintCheckoutProvider({ children }) {
10
+ const [order, setOrder] = _react.useState.call(void 0, void 0);
11
+ const [orderClientSecret, setOrderClientSecret] = _react.useState.call(void 0, void 0);
12
+ _react.useEffect.call(void 0, () => {
13
+ const handleOrderUpdated = (data) => {
14
+ setOrder(data.order);
15
+ setOrderClientSecret(data.orderClientSecret);
16
+ };
17
+ _chunkXUGJXLWCjs.localEventEmitter.on("order:updated", handleOrderUpdated);
18
+ return () => {
19
+ _chunkXUGJXLWCjs.localEventEmitter.off("order:updated", handleOrderUpdated);
20
+ };
21
+ }, []);
22
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CrossmintCheckoutContext.Provider, { value: { order, orderClientSecret }, children });
23
+ }
24
+ function useCrossmintCheckout() {
25
+ const context = _react.useContext.call(void 0, CrossmintCheckoutContext);
26
+ if (!context) {
27
+ throw new Error("useCrossmintCheckout must be used within a CrossmintCheckoutProvider");
28
+ }
29
+ return context;
30
+ }
31
+
32
+
33
+
34
+
35
+ exports.CrossmintCheckoutProvider = CrossmintCheckoutProvider; exports.useCrossmintCheckout = useCrossmintCheckout;
36
+ //# sourceMappingURL=chunk-BUTZZ7JB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useCrossmintCheckout.tsx"],"names":[],"mappings":";;;;;AAAA,SAAS,eAA+B,YAAY,WAAW,gBAAgB;AA6BvE;AApBR,IAAM,2BAA2B,cAAoD,MAAS;AAEvF,SAAS,0BAA0B,EAAE,SAAS,GAA4B;AAC7E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA4B,MAAS;AAC/D,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAA6B,MAAS;AAExF,YAAU,MAAM;AACZ,UAAM,qBAAqB,CAAC,SAAmD;AAC3E,eAAS,KAAK,KAAK;AACnB,2BAAqB,KAAK,iBAAiB;AAAA,IAC/C;AAEA,sBAAkB,GAAG,iBAAiB,kBAAkB;AAExD,WAAO,MAAM;AACT,wBAAkB,IAAI,iBAAiB,kBAAkB;AAAA,IAC7D;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,SACI,oBAAC,yBAAyB,UAAzB,EAAkC,OAAO,EAAE,OAAO,kBAAkB,GAChE,UACL;AAER;AAEO,SAAS,uBAAuB;AACnC,QAAM,UAAU,WAAW,wBAAwB;AACnD,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,sEAAsE;AAAA,EAC1F;AACA,SAAO;AACX","sourcesContent":["import { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\nimport type { Order } from \"@crossmint/client-sdk-base\";\nimport { localEventEmitter, type LocalEventEmitterEvents } from \"@/utils/eventEmitter\";\n\nexport interface CrossmintCheckoutContext {\n order?: Order;\n orderClientSecret?: string;\n}\n\nconst CrossmintCheckoutContext = createContext<CrossmintCheckoutContext | undefined>(undefined);\n\nexport function CrossmintCheckoutProvider({ children }: { children: ReactNode }) {\n const [order, setOrder] = useState<Order | undefined>(undefined);\n const [orderClientSecret, setOrderClientSecret] = useState<string | undefined>(undefined);\n\n useEffect(() => {\n const handleOrderUpdated = (data: LocalEventEmitterEvents[\"order:updated\"]) => {\n setOrder(data.order);\n setOrderClientSecret(data.orderClientSecret);\n };\n\n localEventEmitter.on(\"order:updated\", handleOrderUpdated);\n\n return () => {\n localEventEmitter.off(\"order:updated\", handleOrderUpdated);\n };\n }, []);\n\n return (\n <CrossmintCheckoutContext.Provider value={{ order, orderClientSecret }}>\n {children}\n </CrossmintCheckoutContext.Provider>\n );\n}\n\nexport function useCrossmintCheckout() {\n const context = useContext(CrossmintCheckoutContext);\n if (!context) {\n throw new Error(\"useCrossmintCheckout must be used within a CrossmintCheckoutProvider\");\n }\n return context;\n}\n"]}
@@ -0,0 +1,157 @@
1
+ import {
2
+ BaseCodeInput
3
+ } from "./chunk-ALMDA3KN.mjs";
4
+ import {
5
+ BaseConfirmation
6
+ } from "./chunk-2TEAOLM6.mjs";
7
+ import {
8
+ theme
9
+ } from "./chunk-3AWDWMZ2.mjs";
10
+
11
+ // src/components/signers/EmailSignersDialog.tsx
12
+ import { View, Modal, StyleSheet, Dimensions, TouchableOpacity, Text } from "react-native";
13
+ import { MailCheckIcon, MailIcon, X } from "lucide-react-native";
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ var { width: screenWidth } = Dimensions.get("window");
16
+ function EmailSignersDialog({
17
+ email,
18
+ open,
19
+ setOpen,
20
+ step,
21
+ onSubmitOTP,
22
+ onResendOTPCode,
23
+ onSubmitEmail,
24
+ rejectRef,
25
+ appearance
26
+ }) {
27
+ var _a, _b, _c, _d, _e, _f;
28
+ function handleOnCancel() {
29
+ var _a2;
30
+ if (open) {
31
+ (_a2 = rejectRef.current) == null ? void 0 : _a2.call(rejectRef, new Error());
32
+ setOpen(false);
33
+ }
34
+ }
35
+ const dynamicStyles = StyleSheet.create({
36
+ centeredView: {
37
+ flex: 1,
38
+ backgroundColor: "rgba(0, 0, 0, 0.5)",
39
+ justifyContent: "center",
40
+ alignItems: "center",
41
+ padding: 16
42
+ },
43
+ modalView: {
44
+ backgroundColor: ((_a = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _a.background) || theme["cm-background-primary"],
45
+ borderRadius: (appearance == null ? void 0 : appearance.borderRadius) || 12,
46
+ padding: 32,
47
+ alignItems: "center",
48
+ width: Math.min(screenWidth - 32, 400),
49
+ maxHeight: "80%",
50
+ position: "relative",
51
+ shadowColor: "#000",
52
+ shadowOffset: {
53
+ width: 0,
54
+ height: 2
55
+ },
56
+ shadowOpacity: 0.25,
57
+ shadowRadius: 4,
58
+ elevation: 5
59
+ },
60
+ closeButton: {
61
+ position: "absolute",
62
+ top: 16,
63
+ right: 16,
64
+ width: 32,
65
+ height: 32,
66
+ borderRadius: 6,
67
+ backgroundColor: ((_b = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _b.inputBackground) || theme["cm-muted-primary"],
68
+ alignItems: "center",
69
+ justifyContent: "center",
70
+ zIndex: 1
71
+ }
72
+ });
73
+ if (!open) {
74
+ return null;
75
+ }
76
+ return /* @__PURE__ */ jsx(
77
+ Modal,
78
+ {
79
+ visible: open,
80
+ transparent: true,
81
+ animationType: "fade",
82
+ onRequestClose: handleOnCancel,
83
+ statusBarTranslucent: true,
84
+ children: /* @__PURE__ */ jsx(View, { style: dynamicStyles.centeredView, children: /* @__PURE__ */ jsxs(View, { style: dynamicStyles.modalView, children: [
85
+ /* @__PURE__ */ jsx(
86
+ TouchableOpacity,
87
+ {
88
+ style: dynamicStyles.closeButton,
89
+ onPress: handleOnCancel,
90
+ hitSlop: { top: 10, bottom: 10, left: 10, right: 10 },
91
+ children: /* @__PURE__ */ jsx(X, { size: 16, color: ((_c = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _c.textSecondary) || theme["cm-text-secondary"] })
92
+ }
93
+ ),
94
+ step === "initial" ? /* @__PURE__ */ jsx(
95
+ BaseConfirmation,
96
+ {
97
+ contactInfo: email != null ? email : "",
98
+ contactType: "email",
99
+ icon: /* @__PURE__ */ jsx(
100
+ MailIcon,
101
+ {
102
+ size: 22,
103
+ color: ((_d = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _d.textPrimary) || theme["cm-text-primary"]
104
+ }
105
+ ),
106
+ onConfirm: onSubmitEmail,
107
+ onCancel: handleOnCancel,
108
+ appearance
109
+ }
110
+ ) : /* @__PURE__ */ jsx(
111
+ BaseCodeInput,
112
+ {
113
+ contactInfo: email != null ? email : "",
114
+ contactType: "email",
115
+ icon: /* @__PURE__ */ jsx(
116
+ View,
117
+ {
118
+ style: {
119
+ backgroundColor: ((_e = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _e.accent) || theme["cm-accent"],
120
+ borderRadius: 999,
121
+ padding: 12
122
+ },
123
+ children: /* @__PURE__ */ jsx(
124
+ MailCheckIcon,
125
+ {
126
+ size: 22,
127
+ color: ((_f = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _f.background) || theme["cm-background-primary"]
128
+ }
129
+ )
130
+ }
131
+ ),
132
+ title: "Check your email",
133
+ description: /* @__PURE__ */ jsxs(Text, { children: [
134
+ "A temporary login code has been sent to",
135
+ " ",
136
+ /* @__PURE__ */ jsx(Text, { style: { fontWeight: "bold" }, children: email })
137
+ ] }),
138
+ helpText: `Can't find the email? Check spam folder.
139
+ Some emails may take several minutes to arrive.`,
140
+ onSubmitOTP,
141
+ onResendCode: onResendOTPCode,
142
+ appearance,
143
+ otpLength: 9,
144
+ keyboardType: "default",
145
+ autoComplete: "one-time-code",
146
+ textContentType: "oneTimeCode"
147
+ }
148
+ )
149
+ ] }) })
150
+ }
151
+ );
152
+ }
153
+
154
+ export {
155
+ EmailSignersDialog
156
+ };
157
+ //# sourceMappingURL=chunk-CFHHVHNZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/signers/EmailSignersDialog.tsx"],"sourcesContent":["import type { MutableRefObject } from \"react\";\nimport { View, Modal, StyleSheet, Dimensions, TouchableOpacity, Text } from \"react-native\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport { MailCheckIcon, MailIcon, X } from \"lucide-react-native\";\nimport { BaseConfirmation } from \"./BaseConfirmation\";\nimport { BaseCodeInput } from \"./BaseCodeInput\";\nimport { theme } from \"../../styles/theme\";\n\ninterface EmailSignersDialogProps {\n email?: string;\n open: boolean;\n setOpen: (open: boolean) => void;\n step: \"initial\" | \"otp\";\n onSubmitOTP: (token: string) => Promise<void>;\n onResendOTPCode: () => Promise<void>;\n onSubmitEmail: () => Promise<void>;\n rejectRef: MutableRefObject<((error: Error) => void) | undefined>;\n appearance?: UIConfig;\n}\n\nconst { width: screenWidth } = Dimensions.get(\"window\");\n\nexport function EmailSignersDialog({\n email,\n open,\n setOpen,\n step,\n onSubmitOTP,\n onResendOTPCode,\n onSubmitEmail,\n rejectRef,\n appearance,\n}: EmailSignersDialogProps) {\n function handleOnCancel() {\n if (open) {\n rejectRef.current?.(new Error());\n setOpen(false);\n }\n }\n\n const dynamicStyles = StyleSheet.create({\n centeredView: {\n flex: 1,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: 16,\n },\n modalView: {\n backgroundColor: appearance?.colors?.background || theme[\"cm-background-primary\"],\n borderRadius: appearance?.borderRadius || 12,\n padding: 32,\n alignItems: \"center\",\n width: Math.min(screenWidth - 32, 400),\n maxHeight: \"80%\",\n position: \"relative\",\n shadowColor: \"#000\",\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 5,\n },\n closeButton: {\n position: \"absolute\",\n top: 16,\n right: 16,\n width: 32,\n height: 32,\n borderRadius: 6,\n backgroundColor: appearance?.colors?.inputBackground || theme[\"cm-muted-primary\"],\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 1,\n },\n });\n\n if (!open) {\n return null;\n }\n\n return (\n <Modal\n visible={open}\n transparent={true}\n animationType=\"fade\"\n onRequestClose={handleOnCancel}\n statusBarTranslucent={true}\n >\n <View style={dynamicStyles.centeredView}>\n <View style={dynamicStyles.modalView}>\n <TouchableOpacity\n style={dynamicStyles.closeButton}\n onPress={handleOnCancel}\n hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }}\n >\n <X size={16} color={appearance?.colors?.textSecondary || theme[\"cm-text-secondary\"]} />\n </TouchableOpacity>\n\n {step === \"initial\" ? (\n <BaseConfirmation\n contactInfo={email ?? \"\"}\n contactType=\"email\"\n icon={\n <MailIcon\n size={22}\n color={appearance?.colors?.textPrimary || theme[\"cm-text-primary\"]}\n />\n }\n onConfirm={onSubmitEmail}\n onCancel={handleOnCancel}\n appearance={appearance}\n />\n ) : (\n <BaseCodeInput\n contactInfo={email ?? \"\"}\n contactType=\"email\"\n icon={\n <View\n style={{\n backgroundColor: appearance?.colors?.accent || theme[\"cm-accent\"],\n borderRadius: 999,\n padding: 12,\n }}\n >\n <MailCheckIcon\n size={22}\n color={appearance?.colors?.background || theme[\"cm-background-primary\"]}\n />\n </View>\n }\n title=\"Check your email\"\n description={\n <Text>\n A temporary login code has been sent to{\" \"}\n <Text style={{ fontWeight: \"bold\" }}>{email}</Text>\n </Text>\n }\n helpText={`Can't find the email? Check spam folder.\\nSome emails may take several minutes to arrive.`}\n onSubmitOTP={onSubmitOTP}\n onResendCode={onResendOTPCode}\n appearance={appearance}\n otpLength={9}\n keyboardType=\"default\"\n autoComplete=\"one-time-code\"\n textContentType=\"oneTimeCode\"\n />\n )}\n </View>\n </View>\n </Modal>\n );\n}\n"],"mappings":"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","names":["_a"]}
@@ -0,0 +1,50 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+ var _chunkIMME6ZBVjs = require('./chunk-IMME6ZBV.js');
4
+
5
+ // src/logger/init.ts
6
+ var _commonsdkbase = require('@crossmint/common-sdk-base');
7
+ var _reactnative = require('react-native');
8
+ var _expoconstants = require('expo-constants'); var _expoconstants2 = _interopRequireDefault(_expoconstants);
9
+ var _expodevice = require('expo-device'); var Device = _interopRequireWildcard(_expodevice);
10
+ function initReactNativeLogger(apiKey, consoleLogLevel) {
11
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
12
+ const validationResult = _commonsdkbase.validateAPIKey.call(void 0, apiKey);
13
+ if (!validationResult.isValid) {
14
+ throw new Error(`Invalid API key: ${validationResult.message}`);
15
+ }
16
+ const { environment, projectId } = validationResult;
17
+ const logger = new (0, _commonsdkbase.SdkLogger)({
18
+ packageName: _chunkIMME6ZBVjs.package_default.name,
19
+ packageVersion: _chunkIMME6ZBVjs.package_default.version,
20
+ environment,
21
+ projectId,
22
+ platform: "react-native",
23
+ consoleLogLevel
24
+ });
25
+ const bundleId = (_f = (_e = (_b = (_a = _expoconstants2.default.expoConfig) == null ? void 0 : _a.ios) == null ? void 0 : _b.bundleIdentifier) != null ? _e : (_d = (_c = _expoconstants2.default.expoConfig) == null ? void 0 : _c.android) == null ? void 0 : _d.package) != null ? _f : void 0;
26
+ const agentInfo = {};
27
+ if (Device != null) {
28
+ agentInfo.device = (_i = (_h = (_g = Device.modelName) != null ? _g : Device.deviceName) != null ? _h : Device.brand) != null ? _i : void 0;
29
+ agentInfo.os_version = (_j = Device.osVersion) != null ? _j : void 0;
30
+ agentInfo.os_name = (_k = Device.osName) != null ? _k : void 0;
31
+ }
32
+ const sink = new (0, _commonsdkbase.ReactNativeDatadogSink)(environment, bundleId, agentInfo);
33
+ logger.addSink(sink);
34
+ setupReactNativeFlushListeners(logger);
35
+ return logger;
36
+ }
37
+ function setupReactNativeFlushListeners(logger) {
38
+ _reactnative.AppState.addEventListener("change", (nextAppState) => {
39
+ if (nextAppState === "background" || nextAppState === "inactive") {
40
+ if (typeof logger.flush === "function") {
41
+ void logger.flush();
42
+ }
43
+ }
44
+ });
45
+ }
46
+
47
+
48
+
49
+ exports.initReactNativeLogger = initReactNativeLogger;
50
+ //# sourceMappingURL=chunk-CV6RWU2T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/logger/init.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,WAAW,wBAAwB,sBAA4C;AACxF,SAAS,gBAAgB;AACzB,OAAO,eAAe;AACtB,YAAY,YAAY;AAYjB,SAAS,sBAAsB,QAAgB,iBAA8C;AAfpG;AAgBI,QAAM,mBAAmB,eAAe,MAAM;AAC9C,MAAI,CAAC,iBAAiB,SAAS;AAC3B,UAAM,IAAI,MAAM,oBAAoB,iBAAiB,OAAO,EAAE;AAAA,EAClE;AACA,QAAM,EAAE,aAAa,UAAU,IAAI;AACnC,QAAM,SAAS,IAAI,UAAU;AAAA,IACzB,aAAa,gBAAY;AAAA,IACzB,gBAAgB,gBAAY;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EACJ,CAAC;AAGD,QAAM,YACF,iCAAU,eAAV,mBAAsB,QAAtB,mBAA2B,qBAA3B,aAA+C,qBAAU,eAAV,mBAAsB,YAAtB,mBAA+B,YAA9E,YAAyF;AAG7F,QAAM,YAAgD,CAAC;AACvD,MAAI,UAAU,MAAM;AAChB,cAAU,UAAS,iBAAO,qBAAP,YAA2B,sBAA3B,YAAgD,iBAAhD,YAAyD;AAC5E,cAAU,cAAa,KAAO,qBAAP,YAAoB;AAC3C,cAAU,WAAU,KAAO,kBAAP,YAAiB;AAAA,EACzC;AAKA,QAAM,OAAO,IAAI,uBAAuB,aAAa,UAAU,SAAS;AACxE,SAAO,QAAQ,IAAI;AAInB,iCAA+B,MAAM;AAErC,SAAO;AACX;AAKA,SAAS,+BAA+B,QAAyB;AAC7D,WAAS,iBAAiB,UAAU,CAAC,iBAAiB;AAElD,QAAI,iBAAiB,gBAAgB,iBAAiB,YAAY;AAC9D,UAAI,OAAO,OAAO,UAAU,YAAY;AACpC,aAAK,OAAO,MAAM;AAAA,MACtB;AAAA,IACJ;AAAA,EACJ,CAAC;AACL","sourcesContent":["import { SdkLogger, ReactNativeDatadogSink, validateAPIKey, type ConsoleLogLevel } from \"@crossmint/common-sdk-base\";\nimport { AppState } from \"react-native\";\nimport Constants from \"expo-constants\";\nimport * as Device from \"expo-device\";\nimport packageJson from \"../../package.json\";\n\n/**\n * Initialize the SDK logger for the React Native UI SDK\n * Should be called once when the SDK is initialized (typically in CrossmintProvider)\n * This handles React Native-specific Datadog sink initialization\n *\n * @param apiKey - API key to determine environment (development/staging/production) and project ID\n * @param consoleLogLevel - Minimum log level for console output (or \"silent\" to suppress all output). Defaults to \"debug\" for backward compatibility\n * @returns The initialized logger instance\n */\nexport function initReactNativeLogger(apiKey: string, consoleLogLevel?: ConsoleLogLevel): SdkLogger {\n const validationResult = validateAPIKey(apiKey);\n if (!validationResult.isValid) {\n throw new Error(`Invalid API key: ${validationResult.message}`);\n }\n const { environment, projectId } = validationResult;\n const logger = new SdkLogger({\n packageName: packageJson.name,\n packageVersion: packageJson.version,\n environment,\n projectId,\n platform: \"react-native\",\n consoleLogLevel,\n });\n\n // Get app bundle ID to use as service name in Datadog logs\n const bundleId: string | undefined =\n Constants.expoConfig?.ios?.bundleIdentifier ?? Constants.expoConfig?.android?.package ?? undefined;\n\n // Collect device and OS information for agent info\n const agentInfo: Record<string, string | undefined> = {};\n if (Device != null) {\n agentInfo.device = Device.modelName ?? Device.deviceName ?? Device.brand ?? undefined;\n agentInfo.os_version = Device.osVersion ?? undefined;\n agentInfo.os_name = Device.osName ?? undefined;\n }\n\n // Create HTTP-based Datadog sink that sends logs directly via telemetry proxy\n // This bypasses the Datadog React Native SDK entirely, ensuring isolation\n // Service name is set to the app bundle ID for better log identification\n const sink = new ReactNativeDatadogSink(environment, bundleId, agentInfo);\n logger.addSink(sink);\n\n // Set up app state change listener to flush logs when app goes to background\n // This ensures logs are sent before the app is closed or backgrounded\n setupReactNativeFlushListeners(logger);\n\n return logger;\n}\n\n/**\n * Set up React Native app state change listeners to flush logs when app goes to background\n */\nfunction setupReactNativeFlushListeners(logger: SdkLogger): void {\n AppState.addEventListener(\"change\", (nextAppState) => {\n // Flush logs when app goes to background or inactive\n if (nextAppState === \"background\" || nextAppState === \"inactive\") {\n if (typeof logger.flush === \"function\") {\n void logger.flush();\n }\n }\n });\n}\n"]}
@@ -0,0 +1,36 @@
1
+ import {
2
+ localEventEmitter
3
+ } from "./chunk-2DNOAXOE.mjs";
4
+
5
+ // src/hooks/useCrossmintCheckout.tsx
6
+ import { createContext, useContext, useEffect, useState } from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+ var CrossmintCheckoutContext = createContext(void 0);
9
+ function CrossmintCheckoutProvider({ children }) {
10
+ const [order, setOrder] = useState(void 0);
11
+ const [orderClientSecret, setOrderClientSecret] = useState(void 0);
12
+ useEffect(() => {
13
+ const handleOrderUpdated = (data) => {
14
+ setOrder(data.order);
15
+ setOrderClientSecret(data.orderClientSecret);
16
+ };
17
+ localEventEmitter.on("order:updated", handleOrderUpdated);
18
+ return () => {
19
+ localEventEmitter.off("order:updated", handleOrderUpdated);
20
+ };
21
+ }, []);
22
+ return /* @__PURE__ */ jsx(CrossmintCheckoutContext.Provider, { value: { order, orderClientSecret }, children });
23
+ }
24
+ function useCrossmintCheckout() {
25
+ const context = useContext(CrossmintCheckoutContext);
26
+ if (!context) {
27
+ throw new Error("useCrossmintCheckout must be used within a CrossmintCheckoutProvider");
28
+ }
29
+ return context;
30
+ }
31
+
32
+ export {
33
+ CrossmintCheckoutProvider,
34
+ useCrossmintCheckout
35
+ };
36
+ //# sourceMappingURL=chunk-DD2MVD6A.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useCrossmintCheckout.tsx"],"sourcesContent":["import { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\nimport type { Order } from \"@crossmint/client-sdk-base\";\nimport { localEventEmitter, type LocalEventEmitterEvents } from \"@/utils/eventEmitter\";\n\nexport interface CrossmintCheckoutContext {\n order?: Order;\n orderClientSecret?: string;\n}\n\nconst CrossmintCheckoutContext = createContext<CrossmintCheckoutContext | undefined>(undefined);\n\nexport function CrossmintCheckoutProvider({ children }: { children: ReactNode }) {\n const [order, setOrder] = useState<Order | undefined>(undefined);\n const [orderClientSecret, setOrderClientSecret] = useState<string | undefined>(undefined);\n\n useEffect(() => {\n const handleOrderUpdated = (data: LocalEventEmitterEvents[\"order:updated\"]) => {\n setOrder(data.order);\n setOrderClientSecret(data.orderClientSecret);\n };\n\n localEventEmitter.on(\"order:updated\", handleOrderUpdated);\n\n return () => {\n localEventEmitter.off(\"order:updated\", handleOrderUpdated);\n };\n }, []);\n\n return (\n <CrossmintCheckoutContext.Provider value={{ order, orderClientSecret }}>\n {children}\n </CrossmintCheckoutContext.Provider>\n );\n}\n\nexport function useCrossmintCheckout() {\n const context = useContext(CrossmintCheckoutContext);\n if (!context) {\n throw new Error(\"useCrossmintCheckout must be used within a CrossmintCheckoutProvider\");\n }\n return context;\n}\n"],"mappings":";;;;;AAAA,SAAS,eAA+B,YAAY,WAAW,gBAAgB;AA6BvE;AApBR,IAAM,2BAA2B,cAAoD,MAAS;AAEvF,SAAS,0BAA0B,EAAE,SAAS,GAA4B;AAC7E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA4B,MAAS;AAC/D,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAA6B,MAAS;AAExF,YAAU,MAAM;AACZ,UAAM,qBAAqB,CAAC,SAAmD;AAC3E,eAAS,KAAK,KAAK;AACnB,2BAAqB,KAAK,iBAAiB;AAAA,IAC/C;AAEA,sBAAkB,GAAG,iBAAiB,kBAAkB;AAExD,WAAO,MAAM;AACT,wBAAkB,IAAI,iBAAiB,kBAAkB;AAAA,IAC7D;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,SACI,oBAAC,yBAAyB,UAAzB,EAAkC,OAAO,EAAE,OAAO,kBAAkB,GAChE,UACL;AAER;AAEO,SAAS,uBAAuB;AACnC,QAAM,UAAU,WAAW,wBAAwB;AACnD,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,sEAAsE;AAAA,EAC1F;AACA,SAAO;AACX;","names":[]}
@@ -0,0 +1,71 @@
1
+ import {
2
+ __async
3
+ } from "./chunk-7SPIOD4K.mjs";
4
+
5
+ // src/utils/SecureStorage.ts
6
+ import * as SecureStore from "expo-secure-store";
7
+ var SecureStorage = class {
8
+ get(key) {
9
+ return __async(this, null, function* () {
10
+ try {
11
+ const storedData = yield SecureStore.getItemAsync(key);
12
+ if (!storedData) {
13
+ return void 0;
14
+ }
15
+ try {
16
+ const parsed = JSON.parse(storedData);
17
+ if (parsed.expiresAt && new Date(parsed.expiresAt) < /* @__PURE__ */ new Date()) {
18
+ yield this.remove(key);
19
+ return void 0;
20
+ }
21
+ return parsed.value;
22
+ } catch (e) {
23
+ return storedData;
24
+ }
25
+ } catch (error) {
26
+ console.error("Error reading from SecureStore:", error);
27
+ return void 0;
28
+ }
29
+ });
30
+ }
31
+ set(key, value, expiresAt) {
32
+ return __async(this, null, function* () {
33
+ try {
34
+ if (expiresAt) {
35
+ const data = JSON.stringify({
36
+ value,
37
+ expiresAt
38
+ });
39
+ yield SecureStore.setItemAsync(key, data);
40
+ } else {
41
+ yield SecureStore.setItemAsync(key, value);
42
+ }
43
+ } catch (error) {
44
+ console.error("Error writing to SecureStore:", error);
45
+ }
46
+ });
47
+ }
48
+ remove(key) {
49
+ return __async(this, null, function* () {
50
+ try {
51
+ yield SecureStore.deleteItemAsync(key);
52
+ } catch (error) {
53
+ console.error("Error removing from SecureStore:", error);
54
+ }
55
+ });
56
+ }
57
+ isAvailable() {
58
+ return __async(this, null, function* () {
59
+ try {
60
+ return yield SecureStore.isAvailableAsync();
61
+ } catch (e) {
62
+ return false;
63
+ }
64
+ });
65
+ }
66
+ };
67
+
68
+ export {
69
+ SecureStorage
70
+ };
71
+ //# sourceMappingURL=chunk-EKXEDMRD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/SecureStorage.ts"],"sourcesContent":["import * as SecureStore from \"expo-secure-store\";\nimport type { StorageProvider } from \"@crossmint/client-sdk-auth\";\n\nexport class SecureStorage implements StorageProvider {\n async get(key: string): Promise<string | undefined> {\n try {\n const storedData = await SecureStore.getItemAsync(key);\n if (!storedData) {\n return undefined;\n }\n\n // Check if it's a JSON string with expiry info\n try {\n const parsed = JSON.parse(storedData);\n if (parsed.expiresAt && new Date(parsed.expiresAt) < new Date()) {\n // Value has expired, remove it\n await this.remove(key);\n return undefined;\n }\n return parsed.value;\n } catch {\n // Not JSON, return the raw value\n return storedData;\n }\n } catch (error) {\n console.error(\"Error reading from SecureStore:\", error);\n return undefined;\n }\n }\n\n async set(key: string, value: string, expiresAt?: string): Promise<void> {\n try {\n if (expiresAt) {\n // Store with expiration information\n const data = JSON.stringify({\n value,\n expiresAt,\n });\n await SecureStore.setItemAsync(key, data);\n } else {\n await SecureStore.setItemAsync(key, value);\n }\n } catch (error) {\n console.error(\"Error writing to SecureStore:\", error);\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n await SecureStore.deleteItemAsync(key);\n } catch (error) {\n console.error(\"Error removing from SecureStore:\", error);\n }\n }\n\n async isAvailable(): Promise<boolean> {\n try {\n return await SecureStore.isAvailableAsync();\n } catch {\n return false;\n }\n }\n}\n"],"mappings":";;;;;AAAA,YAAY,iBAAiB;AAGtB,IAAM,gBAAN,MAA+C;AAAA,EAC5C,IAAI,KAA0C;AAAA;AAChD,UAAI;AACA,cAAM,aAAa,MAAkB,yBAAa,GAAG;AACrD,YAAI,CAAC,YAAY;AACb,iBAAO;AAAA,QACX;AAGA,YAAI;AACA,gBAAM,SAAS,KAAK,MAAM,UAAU;AACpC,cAAI,OAAO,aAAa,IAAI,KAAK,OAAO,SAAS,IAAI,oBAAI,KAAK,GAAG;AAE7D,kBAAM,KAAK,OAAO,GAAG;AACrB,mBAAO;AAAA,UACX;AACA,iBAAO,OAAO;AAAA,QAClB,SAAQ;AAEJ,iBAAO;AAAA,QACX;AAAA,MACJ,SAAS,OAAO;AACZ,gBAAQ,MAAM,mCAAmC,KAAK;AACtD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA;AAAA,EAEM,IAAI,KAAa,OAAe,WAAmC;AAAA;AACrE,UAAI;AACA,YAAI,WAAW;AAEX,gBAAM,OAAO,KAAK,UAAU;AAAA,YACxB;AAAA,YACA;AAAA,UACJ,CAAC;AACD,gBAAkB,yBAAa,KAAK,IAAI;AAAA,QAC5C,OAAO;AACH,gBAAkB,yBAAa,KAAK,KAAK;AAAA,QAC7C;AAAA,MACJ,SAAS,OAAO;AACZ,gBAAQ,MAAM,iCAAiC,KAAK;AAAA,MACxD;AAAA,IACJ;AAAA;AAAA,EAEM,OAAO,KAA4B;AAAA;AACrC,UAAI;AACA,cAAkB,4BAAgB,GAAG;AAAA,MACzC,SAAS,OAAO;AACZ,gBAAQ,MAAM,oCAAoC,KAAK;AAAA,MAC3D;AAAA,IACJ;AAAA;AAAA,EAEM,cAAgC;AAAA;AAClC,UAAI;AACA,eAAO,MAAkB,6BAAiB;AAAA,MAC9C,SAAQ;AACJ,eAAO;AAAA,MACX;AAAA,IACJ;AAAA;AACJ;","names":[]}
@@ -0,0 +1,148 @@
1
+ import {
2
+ userAgent
3
+ } from "./chunk-RSCBYS6I.mjs";
4
+ import {
5
+ PayerConnectionHandler
6
+ } from "./chunk-4AJTICKY.mjs";
7
+ import {
8
+ createCrossmintApiClient
9
+ } from "./chunk-FRD6HEIM.mjs";
10
+ import {
11
+ localEventEmitter
12
+ } from "./chunk-2DNOAXOE.mjs";
13
+ import {
14
+ __spreadProps,
15
+ __spreadValues
16
+ } from "./chunk-7SPIOD4K.mjs";
17
+
18
+ // src/components/embed/v3/EmbeddedCheckoutV3WebView.tsx
19
+ import { useCrossmint } from "@crossmint/client-sdk-react-base";
20
+ import { useEffect, useRef, useState } from "react";
21
+ import { View } from "react-native";
22
+ import { crossmintEmbeddedCheckoutV3Service } from "@crossmint/client-sdk-base";
23
+ import { RNWebView, WebViewParent } from "@crossmint/client-sdk-rn-window";
24
+ import { embeddedCheckoutV3IncomingEvents, embeddedCheckoutV3OutgoingEvents } from "@crossmint/client-sdk-base";
25
+ import { jsx, jsxs } from "react/jsx-runtime";
26
+ function EmbeddedCheckoutV3WebView(props) {
27
+ var _a;
28
+ const [webViewClient, setWebViewClient] = useState(null);
29
+ const [height, setHeight] = useState(0);
30
+ const initialChainRef = useRef((_a = props.payment.crypto.payer) == null ? void 0 : _a.initialChain);
31
+ const memoizedProps = useRef(props);
32
+ if (havePropsChanged(props, memoizedProps.current)) {
33
+ const newProps = __spreadValues({}, props);
34
+ const initialChainPreservation = shouldPreserveInitialChain(props, initialChainRef.current);
35
+ if (initialChainPreservation.shouldPreserve) {
36
+ newProps.payment.crypto.payer = initialChainPreservation.updatedPayer;
37
+ }
38
+ memoizedProps.current = newProps;
39
+ }
40
+ const { crossmint } = useCrossmint();
41
+ const apiClient = createCrossmintApiClient(crossmint, {
42
+ usageOrigin: "client"
43
+ });
44
+ const embeddedCheckoutService = crossmintEmbeddedCheckoutV3Service({ apiClient });
45
+ const webViewRef = useRef(null);
46
+ useEffect(() => {
47
+ const webView = webViewRef.current;
48
+ if (!webView || webViewClient) {
49
+ return;
50
+ }
51
+ const client = new WebViewParent(
52
+ { current: webView },
53
+ {
54
+ incomingEvents: embeddedCheckoutV3IncomingEvents,
55
+ outgoingEvents: embeddedCheckoutV3OutgoingEvents
56
+ }
57
+ );
58
+ setWebViewClient(client);
59
+ }, [webViewRef.current, webViewClient]);
60
+ useEffect(() => {
61
+ if (webViewClient == null) {
62
+ return;
63
+ }
64
+ const handleHeightChanged = (data) => setHeight(data.height);
65
+ webViewClient.on("ui:height.changed", handleHeightChanged);
66
+ const handleOrderUpdated = (data) => {
67
+ localEventEmitter.emit("order:updated", data);
68
+ };
69
+ webViewClient.on("order:updated", handleOrderUpdated);
70
+ return () => {
71
+ webViewClient.off("ui:height.changed");
72
+ webViewClient.off("order:updated");
73
+ };
74
+ }, [webViewClient]);
75
+ const handleMessage = (event) => {
76
+ if (webViewClient) {
77
+ webViewClient.handleMessage(event);
78
+ }
79
+ };
80
+ return /* @__PURE__ */ jsxs(View, { style: { flex: 1 }, children: [
81
+ /* @__PURE__ */ jsx(
82
+ RNWebView,
83
+ {
84
+ ref: webViewRef,
85
+ globals: crossmint.appId ? { crossmintAppId: crossmint.appId } : void 0,
86
+ source: { uri: embeddedCheckoutService.iframe.getUrl(memoizedProps.current) },
87
+ onMessage: handleMessage,
88
+ style: {
89
+ width: "100%",
90
+ minWidth: "100%",
91
+ height,
92
+ backgroundColor: "transparent",
93
+ overflow: "hidden",
94
+ opacity: 1,
95
+ padding: 0,
96
+ boxShadow: "none",
97
+ borderWidth: 0,
98
+ transform: [{ translateX: 0 }]
99
+ },
100
+ allowsInlineMediaPlayback: true,
101
+ mediaPlaybackRequiresUserAction: false,
102
+ allowsBackForwardNavigationGestures: false,
103
+ allowsLinkPreview: false,
104
+ scrollEnabled: false,
105
+ bounces: false,
106
+ showsHorizontalScrollIndicator: false,
107
+ showsVerticalScrollIndicator: false,
108
+ domStorageEnabled: true,
109
+ mixedContentMode: "always",
110
+ allowFileAccess: true,
111
+ allowUniversalAccessFromFileURLs: true,
112
+ geolocationEnabled: true,
113
+ userAgent,
114
+ paymentRequestEnabled: true
115
+ }
116
+ ),
117
+ memoizedProps.current.payment.crypto.enabled ? memoizedProps.current.payment.crypto.payer != null ? /* @__PURE__ */ jsx(
118
+ PayerConnectionHandler,
119
+ {
120
+ payer: memoizedProps.current.payment.crypto.payer,
121
+ webViewClient
122
+ }
123
+ ) : /* @__PURE__ */ jsx(ThrowError, { message: "If 'payment.crypto.enabled' is true, 'payment.crypto.payer' must be provided. Support for not providing a payer is not yet implemented." }) : null
124
+ ] });
125
+ }
126
+ function havePropsChanged(parentProps, currentRefProps) {
127
+ return JSON.stringify(parentProps) !== JSON.stringify(currentRefProps);
128
+ }
129
+ function shouldPreserveInitialChain(props, storedInitialChain) {
130
+ if (props.payment.crypto.payer && storedInitialChain != null) {
131
+ return {
132
+ shouldPreserve: true,
133
+ updatedPayer: __spreadProps(__spreadValues({}, props.payment.crypto.payer), {
134
+ initialChain: storedInitialChain
135
+ })
136
+ };
137
+ }
138
+ return { shouldPreserve: false };
139
+ }
140
+ function ThrowError({ message }) {
141
+ throw new Error(message);
142
+ return null;
143
+ }
144
+
145
+ export {
146
+ EmbeddedCheckoutV3WebView
147
+ };
148
+ //# sourceMappingURL=chunk-FCDPEDXH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/embed/v3/EmbeddedCheckoutV3WebView.tsx"],"sourcesContent":["import { useCrossmint } from \"@crossmint/client-sdk-react-base\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { View } from \"react-native\";\nimport type { WebView, WebViewMessageEvent } from \"react-native-webview\";\n\nimport { type CrossmintEmbeddedCheckoutV3Props, crossmintEmbeddedCheckoutV3Service } from \"@crossmint/client-sdk-base\";\nimport { RNWebView, WebViewParent } from \"@crossmint/client-sdk-rn-window\";\nimport { embeddedCheckoutV3IncomingEvents, embeddedCheckoutV3OutgoingEvents } from \"@crossmint/client-sdk-base\";\n\nimport { createCrossmintApiClient } from \"@/utils/createCrossmintApiClient\";\nimport { userAgent } from \"@/utils/embed/userAgent\";\nimport { PayerConnectionHandler } from \"./crypto/PayerConnectionHandler\";\nimport type { PayerSupportedBlockchains } from \"@crossmint/common-sdk-base\";\nimport { localEventEmitter, type LocalEventEmitterEvents } from \"@/utils/eventEmitter\";\n\nexport function EmbeddedCheckoutV3WebView(props: CrossmintEmbeddedCheckoutV3Props) {\n const [webViewClient, setWebViewClient] = useState<WebViewParent<\n typeof embeddedCheckoutV3IncomingEvents,\n typeof embeddedCheckoutV3OutgoingEvents\n > | null>(null);\n const [height, setHeight] = useState(0);\n\n const initialChainRef = useRef(props.payment.crypto.payer?.initialChain);\n\n const memoizedProps = useRef(props);\n if (havePropsChanged(props, memoizedProps.current)) {\n const newProps = { ...props };\n const initialChainPreservation = shouldPreserveInitialChain(props, initialChainRef.current);\n if (initialChainPreservation.shouldPreserve) {\n newProps.payment.crypto.payer = initialChainPreservation.updatedPayer;\n }\n memoizedProps.current = newProps;\n }\n\n const { crossmint } = useCrossmint();\n const apiClient = createCrossmintApiClient(crossmint, {\n usageOrigin: \"client\",\n });\n const embeddedCheckoutService = crossmintEmbeddedCheckoutV3Service({ apiClient });\n\n const webViewRef = useRef<WebView>(null);\n\n useEffect(() => {\n const webView = webViewRef.current;\n if (!webView || webViewClient) {\n return;\n }\n\n const client = new WebViewParent(\n { current: webView },\n {\n incomingEvents: embeddedCheckoutV3IncomingEvents,\n outgoingEvents: embeddedCheckoutV3OutgoingEvents,\n }\n );\n setWebViewClient(client);\n }, [webViewRef.current, webViewClient]);\n\n useEffect(() => {\n if (webViewClient == null) {\n return;\n }\n\n const handleHeightChanged = (data: { height: number }) => setHeight(data.height);\n webViewClient.on(\"ui:height.changed\", handleHeightChanged);\n\n // Listen for order:updated events and re-emit as local event\n const handleOrderUpdated = (data: LocalEventEmitterEvents[\"order:updated\"]) => {\n localEventEmitter.emit(\"order:updated\", data);\n };\n webViewClient.on(\"order:updated\", handleOrderUpdated);\n\n return () => {\n webViewClient.off(\"ui:height.changed\");\n webViewClient.off(\"order:updated\");\n };\n }, [webViewClient]);\n\n const handleMessage = (event: WebViewMessageEvent) => {\n if (webViewClient) {\n webViewClient.handleMessage(event);\n }\n };\n\n return (\n <View style={{ flex: 1 }}>\n <RNWebView\n ref={webViewRef}\n globals={crossmint.appId ? { crossmintAppId: crossmint.appId } : undefined}\n source={{ uri: embeddedCheckoutService.iframe.getUrl(memoizedProps.current) }}\n onMessage={handleMessage}\n style={{\n width: \"100%\",\n minWidth: \"100%\",\n height,\n backgroundColor: \"transparent\",\n overflow: \"hidden\",\n opacity: 1,\n padding: 0,\n boxShadow: \"none\",\n borderWidth: 0,\n transform: [{ translateX: 0 }],\n }}\n allowsInlineMediaPlayback={true}\n mediaPlaybackRequiresUserAction={false}\n allowsBackForwardNavigationGestures={false}\n allowsLinkPreview={false}\n scrollEnabled={false}\n bounces={false}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n domStorageEnabled={true}\n mixedContentMode=\"always\"\n allowFileAccess={true}\n allowUniversalAccessFromFileURLs={true}\n geolocationEnabled={true}\n userAgent={userAgent}\n paymentRequestEnabled={true}\n />\n {memoizedProps.current.payment.crypto.enabled ? (\n memoizedProps.current.payment.crypto.payer != null ? (\n <PayerConnectionHandler\n payer={memoizedProps.current.payment.crypto.payer}\n webViewClient={webViewClient}\n />\n ) : (\n <ThrowError message=\"If 'payment.crypto.enabled' is true, 'payment.crypto.payer' must be provided. Support for not providing a payer is not yet implemented.\" />\n )\n ) : null}\n </View>\n );\n}\n\nfunction havePropsChanged(\n parentProps: CrossmintEmbeddedCheckoutV3Props,\n currentRefProps: CrossmintEmbeddedCheckoutV3Props\n): boolean {\n return JSON.stringify(parentProps) !== JSON.stringify(currentRefProps);\n}\n\nfunction shouldPreserveInitialChain(\n props: CrossmintEmbeddedCheckoutV3Props,\n storedInitialChain: PayerSupportedBlockchains | undefined\n): { shouldPreserve: true; updatedPayer: typeof props.payment.crypto.payer } | { shouldPreserve: false } {\n if (props.payment.crypto.payer && storedInitialChain != null) {\n return {\n shouldPreserve: true,\n updatedPayer: {\n ...props.payment.crypto.payer,\n initialChain: storedInitialChain,\n },\n };\n }\n return { shouldPreserve: false };\n}\n\nfunction ThrowError({ message }: { message: string }) {\n throw new Error(message);\n // biome-ignore lint/correctness/noUnreachable: Need a return statement to satisfy JSX return type\n return null;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkIMME6ZBVjs = require('./chunk-IMME6ZBV.js');
4
+
5
+ // src/utils/createCrossmintApiClient.ts
6
+ var _commonsdkbase = require('@crossmint/common-sdk-base');
7
+ function createCrossmintApiClient(crossmint, apiKeyExpectations) {
8
+ return new (0, _commonsdkbase.CrossmintApiClient)(crossmint, {
9
+ internalConfig: {
10
+ sdkMetadata: {
11
+ name: "@crossmint/client-sdk-react-native-ui",
12
+ version: _chunkIMME6ZBVjs.package_default.version
13
+ },
14
+ apiKeyExpectations
15
+ }
16
+ });
17
+ }
18
+
19
+
20
+
21
+ exports.createCrossmintApiClient = createCrossmintApiClient;
22
+ //# sourceMappingURL=chunk-FQID5LOL.js.map