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

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 @@
1
+ {"version":3,"sources":["../src/utils/createCrossmintApiClient.ts"],"names":[],"mappings":";;;;;AAAA,SAAyB,0BAAiE;AAGnF,SAAS,yBACZ,WACA,oBACF;AACE,SAAO,IAAI,mBAAmB,WAAW;AAAA,IACrC,gBAAgB;AAAA,MACZ,aAAa;AAAA,QACT,MAAM;AAAA,QACN,SAAS,gBAAY;AAAA,MACzB;AAAA,MACA;AAAA,IACJ;AAAA,EACJ,CAAC;AACL","sourcesContent":["import { type Crossmint, CrossmintApiClient, type CrossmintApiClientInternalConfig } from \"@crossmint/common-sdk-base\";\nimport packageJson from \"../../package.json\";\n\nexport function createCrossmintApiClient(\n crossmint: Crossmint,\n apiKeyExpectations?: CrossmintApiClientInternalConfig[\"apiKeyExpectations\"]\n) {\n return new CrossmintApiClient(crossmint, {\n internalConfig: {\n sdkMetadata: {\n name: \"@crossmint/client-sdk-react-native-ui\",\n version: packageJson.version,\n },\n apiKeyExpectations,\n },\n });\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import {
2
+ package_default
3
+ } from "./chunk-5V6ONJWT.mjs";
4
+
5
+ // src/utils/createCrossmintApiClient.ts
6
+ import { CrossmintApiClient } from "@crossmint/common-sdk-base";
7
+ function createCrossmintApiClient(crossmint, apiKeyExpectations) {
8
+ return new CrossmintApiClient(crossmint, {
9
+ internalConfig: {
10
+ sdkMetadata: {
11
+ name: "@crossmint/client-sdk-react-native-ui",
12
+ version: package_default.version
13
+ },
14
+ apiKeyExpectations
15
+ }
16
+ });
17
+ }
18
+
19
+ export {
20
+ createCrossmintApiClient
21
+ };
22
+ //# sourceMappingURL=chunk-FRD6HEIM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/createCrossmintApiClient.ts"],"sourcesContent":["import { type Crossmint, CrossmintApiClient, type CrossmintApiClientInternalConfig } from \"@crossmint/common-sdk-base\";\nimport packageJson from \"../../package.json\";\n\nexport function createCrossmintApiClient(\n crossmint: Crossmint,\n apiKeyExpectations?: CrossmintApiClientInternalConfig[\"apiKeyExpectations\"]\n) {\n return new CrossmintApiClient(crossmint, {\n internalConfig: {\n sdkMetadata: {\n name: \"@crossmint/client-sdk-react-native-ui\",\n version: packageJson.version,\n },\n apiKeyExpectations,\n },\n });\n}\n"],"mappings":";;;;;AAAA,SAAyB,0BAAiE;AAGnF,SAAS,yBACZ,WACA,oBACF;AACE,SAAO,IAAI,mBAAmB,WAAW;AAAA,IACrC,gBAAgB;AAAA,MACZ,aAAa;AAAA,QACT,MAAM;AAAA,QACN,SAAS,gBAAY;AAAA,MACzB;AAAA,MACA;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-GYBEEYGB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/styles/theme.ts
2
+ var theme = {
3
+ "cm-text-primary": "#00150D",
4
+ "cm-text-secondary": "#67797F",
5
+ "cm-background-primary": "#FFFFFF",
6
+ "cm-muted-primary": "#F0F2F4",
7
+ "cm-hover": "#E9ECF0",
8
+ "cm-border": "#D9D9D9",
9
+ "cm-link": "#1A74E9",
10
+ "cm-accent": "#4CAF50",
11
+ // old 04AA6D
12
+ "cm-danger": "#f44336"
13
+ };
14
+
15
+
16
+
17
+ exports.theme = theme;
18
+ //# sourceMappingURL=chunk-HELXBZ7D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/styles/theme.ts"],"names":[],"mappings":";AAAO,IAAM,QAAQ;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,WAAW;AAAA,EACX,aAAa;AAAA;AAAA,EACb,aAAa;AACjB","sourcesContent":["export const theme = {\n \"cm-text-primary\": \"#00150D\",\n \"cm-text-secondary\": \"#67797F\",\n \"cm-background-primary\": \"#FFFFFF\",\n \"cm-muted-primary\": \"#F0F2F4\",\n \"cm-hover\": \"#E9ECF0\",\n \"cm-border\": \"#D9D9D9\",\n \"cm-link\": \"#1A74E9\",\n \"cm-accent\": \"#4CAF50\", // old 04AA6D\n \"cm-danger\": \"#f44336\",\n} as const;\n"]}
@@ -0,0 +1,71 @@
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; } }
2
+
3
+ var _chunkQ7YPX4RJjs = require('./chunk-Q7YPX4RJ.js');
4
+
5
+ // src/utils/SecureStorage.ts
6
+ var _exposecurestore = require('expo-secure-store'); var SecureStore = _interopRequireWildcard(_exposecurestore);
7
+ var SecureStorage = class {
8
+ get(key) {
9
+ return _chunkQ7YPX4RJjs.__async.call(void 0, 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 _chunkQ7YPX4RJjs.__async.call(void 0, 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 _chunkQ7YPX4RJjs.__async.call(void 0, 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 _chunkQ7YPX4RJjs.__async.call(void 0, this, null, function* () {
59
+ try {
60
+ return yield SecureStore.isAvailableAsync();
61
+ } catch (e) {
62
+ return false;
63
+ }
64
+ });
65
+ }
66
+ };
67
+
68
+
69
+
70
+ exports.SecureStorage = SecureStorage;
71
+ //# sourceMappingURL=chunk-IBQK5B7B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/SecureStorage.ts"],"names":[],"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","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"]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-IHZNXV5S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// package.json
2
+ var package_default = {
3
+ name: "@crossmint/client-sdk-react-native-ui",
4
+ version: "0.13.28",
5
+ repository: "https://github.com/Crossmint/crossmint-sdk",
6
+ license: "Apache-2.0",
7
+ author: "Paella Labs Inc",
8
+ sideEffects: false,
9
+ main: "./dist/index.js",
10
+ module: "./dist/index.mjs",
11
+ types: "./dist/index.d.ts",
12
+ files: ["dist", "app.plugin.js", "LICENSE"],
13
+ scripts: {
14
+ build: "cross-env NODE_OPTIONS='--max-old-space-size=8192' tsup",
15
+ dev: "cross-env NODE_OPTIONS='--max-old-space-size=8192' tsup --watch",
16
+ "generate:docs": "typedoc && node scripts/generate-reference.mjs"
17
+ },
18
+ dependencies: {
19
+ "@crossmint/client-sdk-auth": "workspace:*",
20
+ "@crossmint/client-sdk-base": "workspace:*",
21
+ "@crossmint/client-sdk-react-base": "workspace:*",
22
+ "@crossmint/client-sdk-rn-window": "workspace:*",
23
+ "@crossmint/client-signers": "workspace:*",
24
+ "@crossmint/common-sdk-auth": "workspace:*",
25
+ "@crossmint/common-sdk-base": "workspace:*",
26
+ "@crossmint/wallets-sdk": "workspace:*",
27
+ "@solana/web3.js": "1.98.1",
28
+ bs58: "^5.0.0",
29
+ "lodash.clonedeep": "4.5.0",
30
+ "lodash.isequal": "4.5.0",
31
+ "lucide-react-native": "0.548.0",
32
+ mitt: "3.0.1",
33
+ "react-native-svg": "15.14.0",
34
+ zod: "3.22.4"
35
+ },
36
+ devDependencies: {
37
+ "@expo/config-plugins": "^9.0.17",
38
+ typedoc: "0.28.16",
39
+ "@types/react": "19.1.10",
40
+ "expo-constants": "~18.0.9",
41
+ "expo-device": "~8.0.9",
42
+ "expo-secure-store": "~15.0.7",
43
+ "expo-web-browser": "~15.0.8"
44
+ },
45
+ peerDependencies: {
46
+ "@expo/config-plugins": ">=9.0.0",
47
+ "@solana/web3.js": "^1.98.1",
48
+ "expo-constants": ">=17 <19",
49
+ "expo-device": ">=7 <9",
50
+ "expo-secure-store": ">=14 <16",
51
+ "expo-web-browser": ">=14 <16",
52
+ react: ">=17.0.2",
53
+ "react-native": ">=0.74.3",
54
+ "react-native-webview": ">=13.15.0 <14"
55
+ }
56
+ };
57
+
58
+
59
+
60
+ exports.package_default = package_default;
61
+ //# sourceMappingURL=chunk-IMME6ZBV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../package.json"],"names":[],"mappings":";AAAA;AAAA,EACI,MAAQ;AAAA,EACR,SAAW;AAAA,EACX,YAAc;AAAA,EACd,SAAW;AAAA,EACX,QAAU;AAAA,EACV,aAAe;AAAA,EACf,MAAQ;AAAA,EACR,QAAU;AAAA,EACV,OAAS;AAAA,EACT,OAAS,CAAC,QAAQ,iBAAiB,SAAS;AAAA,EAC5C,SAAW;AAAA,IACP,OAAS;AAAA,IACT,KAAO;AAAA,IACP,iBAAiB;AAAA,EACrB;AAAA,EACA,cAAgB;AAAA,IACZ,8BAA8B;AAAA,IAC9B,8BAA8B;AAAA,IAC9B,oCAAoC;AAAA,IACpC,mCAAmC;AAAA,IACnC,6BAA6B;AAAA,IAC7B,8BAA8B;AAAA,IAC9B,8BAA8B;AAAA,IAC9B,0BAA0B;AAAA,IAC1B,mBAAmB;AAAA,IACnB,MAAQ;AAAA,IACR,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB,uBAAuB;AAAA,IACvB,MAAQ;AAAA,IACR,oBAAoB;AAAA,IACpB,KAAO;AAAA,EACX;AAAA,EACA,iBAAmB;AAAA,IACf,wBAAwB;AAAA,IACxB,SAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,qBAAqB;AAAA,IACrB,oBAAoB;AAAA,EACxB;AAAA,EACA,kBAAoB;AAAA,IAChB,wBAAwB;AAAA,IACxB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,qBAAqB;AAAA,IACrB,oBAAoB;AAAA,IACpB,OAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,wBAAwB;AAAA,EAC5B;AACJ","sourcesContent":["{\n \"name\": \"@crossmint/client-sdk-react-native-ui\",\n \"version\": \"0.13.28\",\n \"repository\": \"https://github.com/Crossmint/crossmint-sdk\",\n \"license\": \"Apache-2.0\",\n \"author\": \"Paella Labs Inc\",\n \"sideEffects\": false,\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\"dist\", \"app.plugin.js\", \"LICENSE\"],\n \"scripts\": {\n \"build\": \"cross-env NODE_OPTIONS='--max-old-space-size=8192' tsup\",\n \"dev\": \"cross-env NODE_OPTIONS='--max-old-space-size=8192' tsup --watch\",\n \"generate:docs\": \"typedoc && node scripts/generate-reference.mjs\"\n },\n \"dependencies\": {\n \"@crossmint/client-sdk-auth\": \"workspace:*\",\n \"@crossmint/client-sdk-base\": \"workspace:*\",\n \"@crossmint/client-sdk-react-base\": \"workspace:*\",\n \"@crossmint/client-sdk-rn-window\": \"workspace:*\",\n \"@crossmint/client-signers\": \"workspace:*\",\n \"@crossmint/common-sdk-auth\": \"workspace:*\",\n \"@crossmint/common-sdk-base\": \"workspace:*\",\n \"@crossmint/wallets-sdk\": \"workspace:*\",\n \"@solana/web3.js\": \"1.98.1\",\n \"bs58\": \"^5.0.0\",\n \"lodash.clonedeep\": \"4.5.0\",\n \"lodash.isequal\": \"4.5.0\",\n \"lucide-react-native\": \"0.548.0\",\n \"mitt\": \"3.0.1\",\n \"react-native-svg\": \"15.14.0\",\n \"zod\": \"3.22.4\"\n },\n \"devDependencies\": {\n \"@expo/config-plugins\": \"^9.0.17\",\n \"typedoc\": \"0.28.16\",\n \"@types/react\": \"19.1.10\",\n \"expo-constants\": \"~18.0.9\",\n \"expo-device\": \"~8.0.9\",\n \"expo-secure-store\": \"~15.0.7\",\n \"expo-web-browser\": \"~15.0.8\"\n },\n \"peerDependencies\": {\n \"@expo/config-plugins\": \">=9.0.0\",\n \"@solana/web3.js\": \"^1.98.1\",\n \"expo-constants\": \">=17 <19\",\n \"expo-device\": \">=7 <9\",\n \"expo-secure-store\": \">=14 <16\",\n \"expo-web-browser\": \">=14 <16\",\n \"react\": \">=17.0.2\",\n \"react-native\": \">=0.74.3\",\n \"react-native-webview\": \">=13.15.0 <14\"\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-J2MDWDV6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-KK4SQ7WF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,148 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk24MMQ2R4js = require('./chunk-24MMQ2R4.js');
4
+
5
+
6
+ var _chunkBUB4U2GEjs = require('./chunk-BUB4U2GE.js');
7
+
8
+
9
+ var _chunkFQID5LOLjs = require('./chunk-FQID5LOL.js');
10
+
11
+
12
+ var _chunkXUGJXLWCjs = require('./chunk-XUGJXLWC.js');
13
+
14
+
15
+
16
+ var _chunkQ7YPX4RJjs = require('./chunk-Q7YPX4RJ.js');
17
+
18
+ // src/components/embed/v3/EmbeddedCheckoutV3WebView.tsx
19
+ var _clientsdkreactbase = require('@crossmint/client-sdk-react-base');
20
+ var _react = require('react');
21
+ var _reactnative = require('react-native');
22
+ var _clientsdkbase = require('@crossmint/client-sdk-base');
23
+ var _clientsdkrnwindow = require('@crossmint/client-sdk-rn-window');
24
+
25
+ var _jsxruntime = require('react/jsx-runtime');
26
+ function EmbeddedCheckoutV3WebView(props) {
27
+ var _a;
28
+ const [webViewClient, setWebViewClient] = _react.useState.call(void 0, null);
29
+ const [height, setHeight] = _react.useState.call(void 0, 0);
30
+ const initialChainRef = _react.useRef.call(void 0, (_a = props.payment.crypto.payer) == null ? void 0 : _a.initialChain);
31
+ const memoizedProps = _react.useRef.call(void 0, props);
32
+ if (havePropsChanged(props, memoizedProps.current)) {
33
+ const newProps = _chunkQ7YPX4RJjs.__spreadValues.call(void 0, {}, 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 } = _clientsdkreactbase.useCrossmint.call(void 0, );
41
+ const apiClient = _chunkFQID5LOLjs.createCrossmintApiClient.call(void 0, crossmint, {
42
+ usageOrigin: "client"
43
+ });
44
+ const embeddedCheckoutService = _clientsdkbase.crossmintEmbeddedCheckoutV3Service.call(void 0, { apiClient });
45
+ const webViewRef = _react.useRef.call(void 0, null);
46
+ _react.useEffect.call(void 0, () => {
47
+ const webView = webViewRef.current;
48
+ if (!webView || webViewClient) {
49
+ return;
50
+ }
51
+ const client = new (0, _clientsdkrnwindow.WebViewParent)(
52
+ { current: webView },
53
+ {
54
+ incomingEvents: _clientsdkbase.embeddedCheckoutV3IncomingEvents,
55
+ outgoingEvents: _clientsdkbase.embeddedCheckoutV3OutgoingEvents
56
+ }
57
+ );
58
+ setWebViewClient(client);
59
+ }, [webViewRef.current, webViewClient]);
60
+ _react.useEffect.call(void 0, () => {
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
+ _chunkXUGJXLWCjs.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__ */ _jsxruntime.jsxs.call(void 0, _reactnative.View, { style: { flex: 1 }, children: [
81
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
82
+ _clientsdkrnwindow.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: _chunk24MMQ2R4js.userAgent,
114
+ paymentRequestEnabled: true
115
+ }
116
+ ),
117
+ memoizedProps.current.payment.crypto.enabled ? memoizedProps.current.payment.crypto.payer != null ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
118
+ _chunkBUB4U2GEjs.PayerConnectionHandler,
119
+ {
120
+ payer: memoizedProps.current.payment.crypto.payer,
121
+ webViewClient
122
+ }
123
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, 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: _chunkQ7YPX4RJjs.__spreadProps.call(void 0, _chunkQ7YPX4RJjs.__spreadValues.call(void 0, {}, 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
+
146
+
147
+ exports.EmbeddedCheckoutV3WebView = EmbeddedCheckoutV3WebView;
148
+ //# sourceMappingURL=chunk-KOUCOMBE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/embed/v3/EmbeddedCheckoutV3WebView.tsx"],"names":[],"mappings":"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","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"]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-MMVER6VO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,199 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkHELXBZ7Djs = require('./chunk-HELXBZ7D.js');
4
+
5
+
6
+ var _chunkQ7YPX4RJjs = require('./chunk-Q7YPX4RJ.js');
7
+
8
+ // src/components/signers/BaseCodeInput.tsx
9
+ var _react = require('react');
10
+ var _reactnative = require('react-native');
11
+ var _jsxruntime = require('react/jsx-runtime');
12
+ function BaseCodeInput({
13
+ icon,
14
+ title,
15
+ description,
16
+ helpText,
17
+ onSubmitOTP,
18
+ onResendCode,
19
+ appearance,
20
+ otpLength = 9,
21
+ keyboardType = "default",
22
+ autoComplete = "one-time-code",
23
+ textContentType = "oneTimeCode"
24
+ }) {
25
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
26
+ const [otpCode, setOtpCode] = _react.useState.call(void 0, "");
27
+ const [isLoading, setIsLoading] = _react.useState.call(void 0, false);
28
+ const [error, setError] = _react.useState.call(void 0, null);
29
+ const [resendCooldown, setResendCooldown] = _react.useState.call(void 0, 0);
30
+ const handleSubmitOTP = () => _chunkQ7YPX4RJjs.__async.call(void 0, this, null, function* () {
31
+ if (otpCode.length === 0) {
32
+ return;
33
+ }
34
+ setIsLoading(true);
35
+ setError(null);
36
+ try {
37
+ yield onSubmitOTP(otpCode);
38
+ setOtpCode("");
39
+ } catch (error2) {
40
+ console.error("Failed to verify OTP", error2);
41
+ setError("Invalid code. Please try again.");
42
+ } finally {
43
+ setIsLoading(false);
44
+ }
45
+ });
46
+ const handleResendCode = () => _chunkQ7YPX4RJjs.__async.call(void 0, this, null, function* () {
47
+ if (resendCooldown > 0 || !onResendCode) {
48
+ return;
49
+ }
50
+ setIsLoading(true);
51
+ setError(null);
52
+ try {
53
+ yield onResendCode();
54
+ setResendCooldown(60);
55
+ const timer = setInterval(() => {
56
+ setResendCooldown((prev) => {
57
+ if (prev <= 1) {
58
+ clearInterval(timer);
59
+ return 0;
60
+ }
61
+ return prev - 1;
62
+ });
63
+ }, 1e3);
64
+ } catch (error2) {
65
+ console.error("Failed to resend OTP", error2);
66
+ setError("Failed to resend code. Please try again.");
67
+ } finally {
68
+ setIsLoading(false);
69
+ }
70
+ });
71
+ const dynamicStyles = _reactnative.StyleSheet.create({
72
+ container: {
73
+ width: "100%"
74
+ },
75
+ iconContainer: {
76
+ alignItems: "center",
77
+ marginBottom: 8
78
+ },
79
+ title: {
80
+ fontSize: 18,
81
+ fontWeight: "600",
82
+ color: ((_a = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _a.textPrimary) || _chunkHELXBZ7Djs.theme["cm-text-primary"],
83
+ textAlign: "center",
84
+ marginBottom: 8,
85
+ marginTop: 16
86
+ },
87
+ description: {
88
+ fontSize: 14,
89
+ color: ((_b = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _b.textSecondary) || _chunkHELXBZ7Djs.theme["cm-text-secondary"],
90
+ textAlign: "center",
91
+ marginBottom: 24,
92
+ lineHeight: 20
93
+ },
94
+ otpInput: {
95
+ borderWidth: 1,
96
+ borderColor: error ? ((_c = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _c.danger) || _chunkHELXBZ7Djs.theme["cm-danger"] : ((_d = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _d.border) || _chunkHELXBZ7Djs.theme["cm-border"],
97
+ borderRadius: (appearance == null ? void 0 : appearance.borderRadius) || 12,
98
+ backgroundColor: ((_e = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _e.inputBackground) || _chunkHELXBZ7Djs.theme["cm-muted-primary"],
99
+ padding: 16,
100
+ fontSize: 16,
101
+ color: ((_f = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _f.textPrimary) || _chunkHELXBZ7Djs.theme["cm-text-primary"],
102
+ marginBottom: 16,
103
+ textAlign: "center"
104
+ },
105
+ errorText: {
106
+ fontSize: 14,
107
+ color: ((_g = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _g.danger) || _chunkHELXBZ7Djs.theme["cm-danger"],
108
+ textAlign: "center",
109
+ marginBottom: 16
110
+ },
111
+ helpText: {
112
+ fontSize: 12,
113
+ color: ((_h = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _h.textSecondary) || _chunkHELXBZ7Djs.theme["cm-text-secondary"],
114
+ textAlign: "center",
115
+ marginBottom: 16,
116
+ lineHeight: 16
117
+ },
118
+ submitButton: {
119
+ backgroundColor: ((_i = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _i.accent) || _chunkHELXBZ7Djs.theme["cm-accent"],
120
+ paddingVertical: 16,
121
+ paddingHorizontal: 32,
122
+ borderRadius: (appearance == null ? void 0 : appearance.borderRadius) || 12,
123
+ alignItems: "center",
124
+ marginBottom: 16
125
+ },
126
+ submitButtonDisabled: {
127
+ opacity: 0.6
128
+ },
129
+ submitButtonText: {
130
+ fontSize: 16,
131
+ fontWeight: "500",
132
+ color: ((_j = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _j.background) || _chunkHELXBZ7Djs.theme["cm-background-primary"]
133
+ },
134
+ resendButton: {
135
+ alignSelf: "center",
136
+ paddingVertical: 12,
137
+ paddingHorizontal: 16
138
+ },
139
+ resendButtonText: {
140
+ fontSize: 14,
141
+ color: ((_k = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _k.accent) || _chunkHELXBZ7Djs.theme["cm-accent"],
142
+ textAlign: "center"
143
+ },
144
+ resendButtonDisabled: {
145
+ opacity: 0.6
146
+ }
147
+ });
148
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _reactnative.View, { style: dynamicStyles.container, children: [
149
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactnative.View, { style: dynamicStyles.iconContainer, children: icon }),
150
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactnative.Text, { style: dynamicStyles.title, children: title }),
151
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactnative.Text, { style: dynamicStyles.description, children: description }),
152
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
153
+ _reactnative.TextInput,
154
+ {
155
+ style: dynamicStyles.otpInput,
156
+ placeholder: "Enter code",
157
+ placeholderTextColor: ((_l = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _l.textSecondary) || _chunkHELXBZ7Djs.theme["cm-text-secondary"],
158
+ value: otpCode,
159
+ onChangeText: (text) => {
160
+ setOtpCode(text);
161
+ setError(null);
162
+ },
163
+ keyboardType,
164
+ autoComplete,
165
+ textContentType,
166
+ editable: !isLoading,
167
+ maxLength: otpLength
168
+ }
169
+ ),
170
+ error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactnative.Text, { style: dynamicStyles.errorText, children: error }),
171
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactnative.Text, { style: dynamicStyles.helpText, children: helpText }),
172
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
173
+ _reactnative.TouchableOpacity,
174
+ {
175
+ style: [
176
+ dynamicStyles.submitButton,
177
+ (otpCode.length === 0 || isLoading) && dynamicStyles.submitButtonDisabled
178
+ ],
179
+ onPress: handleSubmitOTP,
180
+ disabled: otpCode.length === 0 || isLoading,
181
+ children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactnative.ActivityIndicator, { color: ((_m = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _m.background) || _chunkHELXBZ7Djs.theme["cm-background-primary"] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactnative.Text, { style: dynamicStyles.submitButtonText, children: "Submit" })
182
+ }
183
+ ),
184
+ onResendCode && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
185
+ _reactnative.TouchableOpacity,
186
+ {
187
+ style: [dynamicStyles.resendButton, resendCooldown > 0 && dynamicStyles.resendButtonDisabled],
188
+ onPress: handleResendCode,
189
+ disabled: resendCooldown > 0 || isLoading,
190
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactnative.Text, { style: dynamicStyles.resendButtonText, children: resendCooldown > 0 ? `Re-send code in ${resendCooldown}s` : "Re-send code" })
191
+ }
192
+ )
193
+ ] });
194
+ }
195
+
196
+
197
+
198
+ exports.BaseCodeInput = BaseCodeInput;
199
+ //# sourceMappingURL=chunk-MVLQR6RI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/signers/BaseCodeInput.tsx"],"names":["error"],"mappings":"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","sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { View, Text, TextInput, TouchableOpacity, StyleSheet, ActivityIndicator } from \"react-native\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport { theme } from \"../../styles/theme\";\n\ninterface BaseCodeInputProps {\n contactInfo: string;\n contactType: \"email\" | \"phone\";\n icon: ReactNode;\n title: string;\n description: string | ReactNode;\n helpText: string;\n onSubmitOTP: (token: string) => Promise<void>;\n onResendCode?: () => Promise<void>;\n appearance?: UIConfig;\n otpLength?: number;\n keyboardType?: \"default\" | \"number-pad\";\n autoComplete?: \"one-time-code\" | \"sms-otp\";\n textContentType?: \"oneTimeCode\";\n}\n\nexport function BaseCodeInput({\n icon,\n title,\n description,\n helpText,\n onSubmitOTP,\n onResendCode,\n appearance,\n otpLength = 9,\n keyboardType = \"default\",\n autoComplete = \"one-time-code\",\n textContentType = \"oneTimeCode\",\n}: BaseCodeInputProps) {\n const [otpCode, setOtpCode] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [resendCooldown, setResendCooldown] = useState(0);\n\n const handleSubmitOTP = async () => {\n if (otpCode.length === 0) {\n return;\n }\n\n setIsLoading(true);\n setError(null);\n try {\n await onSubmitOTP(otpCode);\n setOtpCode(\"\");\n } catch (error) {\n console.error(\"Failed to verify OTP\", error);\n setError(\"Invalid code. Please try again.\");\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleResendCode = async () => {\n if (resendCooldown > 0 || !onResendCode) {\n return;\n }\n\n setIsLoading(true);\n setError(null);\n try {\n await onResendCode();\n setResendCooldown(60);\n const timer = setInterval(() => {\n setResendCooldown((prev) => {\n if (prev <= 1) {\n clearInterval(timer);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n } catch (error) {\n console.error(\"Failed to resend OTP\", error);\n setError(\"Failed to resend code. Please try again.\");\n } finally {\n setIsLoading(false);\n }\n };\n\n const dynamicStyles = StyleSheet.create({\n container: {\n width: \"100%\",\n },\n iconContainer: {\n alignItems: \"center\",\n marginBottom: 8,\n },\n title: {\n fontSize: 18,\n fontWeight: \"600\",\n color: appearance?.colors?.textPrimary || theme[\"cm-text-primary\"],\n textAlign: \"center\",\n marginBottom: 8,\n marginTop: 16,\n },\n description: {\n fontSize: 14,\n color: appearance?.colors?.textSecondary || theme[\"cm-text-secondary\"],\n textAlign: \"center\",\n marginBottom: 24,\n lineHeight: 20,\n },\n otpInput: {\n borderWidth: 1,\n borderColor: error\n ? appearance?.colors?.danger || theme[\"cm-danger\"]\n : appearance?.colors?.border || theme[\"cm-border\"],\n borderRadius: appearance?.borderRadius || 12,\n backgroundColor: appearance?.colors?.inputBackground || theme[\"cm-muted-primary\"],\n padding: 16,\n fontSize: 16,\n color: appearance?.colors?.textPrimary || theme[\"cm-text-primary\"],\n marginBottom: 16,\n textAlign: \"center\",\n },\n errorText: {\n fontSize: 14,\n color: appearance?.colors?.danger || theme[\"cm-danger\"],\n textAlign: \"center\",\n marginBottom: 16,\n },\n helpText: {\n fontSize: 12,\n color: appearance?.colors?.textSecondary || theme[\"cm-text-secondary\"],\n textAlign: \"center\",\n marginBottom: 16,\n lineHeight: 16,\n },\n submitButton: {\n backgroundColor: appearance?.colors?.accent || theme[\"cm-accent\"],\n paddingVertical: 16,\n paddingHorizontal: 32,\n borderRadius: appearance?.borderRadius || 12,\n alignItems: \"center\",\n marginBottom: 16,\n },\n submitButtonDisabled: {\n opacity: 0.6,\n },\n submitButtonText: {\n fontSize: 16,\n fontWeight: \"500\",\n color: appearance?.colors?.background || theme[\"cm-background-primary\"],\n },\n resendButton: {\n alignSelf: \"center\",\n paddingVertical: 12,\n paddingHorizontal: 16,\n },\n resendButtonText: {\n fontSize: 14,\n color: appearance?.colors?.accent || theme[\"cm-accent\"],\n textAlign: \"center\",\n },\n resendButtonDisabled: {\n opacity: 0.6,\n },\n });\n\n return (\n <View style={dynamicStyles.container}>\n <View style={dynamicStyles.iconContainer}>{icon}</View>\n\n <Text style={dynamicStyles.title}>{title}</Text>\n <Text style={dynamicStyles.description}>{description}</Text>\n\n <TextInput\n style={dynamicStyles.otpInput}\n placeholder=\"Enter code\"\n placeholderTextColor={appearance?.colors?.textSecondary || theme[\"cm-text-secondary\"]}\n value={otpCode}\n onChangeText={(text) => {\n setOtpCode(text);\n setError(null);\n }}\n keyboardType={keyboardType}\n autoComplete={autoComplete}\n textContentType={textContentType}\n editable={!isLoading}\n maxLength={otpLength}\n />\n\n {error && <Text style={dynamicStyles.errorText}>{error}</Text>}\n\n <Text style={dynamicStyles.helpText}>{helpText}</Text>\n\n <TouchableOpacity\n style={[\n dynamicStyles.submitButton,\n (otpCode.length === 0 || isLoading) && dynamicStyles.submitButtonDisabled,\n ]}\n onPress={handleSubmitOTP}\n disabled={otpCode.length === 0 || isLoading}\n >\n {isLoading ? (\n <ActivityIndicator color={appearance?.colors?.background || theme[\"cm-background-primary\"]} />\n ) : (\n <Text style={dynamicStyles.submitButtonText}>Submit</Text>\n )}\n </TouchableOpacity>\n\n {onResendCode && (\n <TouchableOpacity\n style={[dynamicStyles.resendButton, resendCooldown > 0 && dynamicStyles.resendButtonDisabled]}\n onPress={handleResendCode}\n disabled={resendCooldown > 0 || isLoading}\n >\n <Text style={dynamicStyles.resendButtonText}>\n {resendCooldown > 0 ? `Re-send code in ${resendCooldown}s` : \"Re-send code\"}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n );\n}\n"]}