@crossmint/client-sdk-react-ui 1.10.5 → 1.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/{chunk-LD66M6G7.cjs → chunk-3D7QOJVP.cjs} +3 -3
  2. package/dist/{chunk-YP4CPG34.js → chunk-3LEJNXQ7.js} +2 -2
  3. package/dist/{chunk-YP4CPG34.js.map → chunk-3LEJNXQ7.js.map} +1 -1
  4. package/dist/{chunk-LF3XEXLA.js → chunk-3SZJ67OS.js} +2 -2
  5. package/dist/chunk-54YISYPC.js +31 -0
  6. package/dist/chunk-54YISYPC.js.map +1 -0
  7. package/dist/{chunk-3LHIEADG.cjs → chunk-5GHTVW5Q.cjs} +3 -3
  8. package/dist/chunk-6CPZDD6Y.js +29 -0
  9. package/dist/chunk-6CPZDD6Y.js.map +1 -0
  10. package/dist/{chunk-U5EONMPH.js → chunk-6FG6NL44.js} +4 -4
  11. package/dist/{chunk-FKRBO2MK.js → chunk-6RXJMBVF.js} +2 -2
  12. package/dist/{chunk-HYP7ISWS.js → chunk-B7RB7HT4.js} +2 -2
  13. package/dist/{chunk-EBMORHG3.cjs → chunk-C7VFXQ2G.cjs} +17 -252
  14. package/dist/chunk-C7VFXQ2G.cjs.map +1 -0
  15. package/dist/{chunk-4BGD6LSC.js → chunk-D2OKRE2Q.js} +2 -2
  16. package/dist/{chunk-E7KTAG6X.cjs → chunk-DKAVLLP6.cjs} +3 -3
  17. package/dist/chunk-I2JDM7WL.cjs +81 -0
  18. package/dist/chunk-I2JDM7WL.cjs.map +1 -0
  19. package/dist/{chunk-NKOG6FTK.js → chunk-I7CLJXJR.js} +2 -2
  20. package/dist/chunk-KB5JOTFH.js +81 -0
  21. package/dist/chunk-KB5JOTFH.js.map +1 -0
  22. package/dist/chunk-LGY5FQOZ.cjs +29 -0
  23. package/dist/chunk-LGY5FQOZ.cjs.map +1 -0
  24. package/dist/{chunk-CPISBXIR.cjs → chunk-MPRVUXM6.cjs} +2 -2
  25. package/dist/{chunk-CPISBXIR.cjs.map → chunk-MPRVUXM6.cjs.map} +1 -1
  26. package/dist/{chunk-G526QBKQ.cjs → chunk-N4SZG3S7.cjs} +3 -3
  27. package/dist/{chunk-MBJBFR2H.js → chunk-PEKX75WN.js} +2 -2
  28. package/dist/{chunk-T5WAVOPI.js → chunk-QTTQHZ7M.js} +55 -290
  29. package/dist/chunk-QTTQHZ7M.js.map +1 -0
  30. package/dist/chunk-RJZBV7LG.js +64 -0
  31. package/dist/chunk-RJZBV7LG.js.map +1 -0
  32. package/dist/chunk-RO53MWJE.cjs +31 -0
  33. package/dist/chunk-RO53MWJE.cjs.map +1 -0
  34. package/dist/{chunk-KAXBBO66.cjs → chunk-SBTNHVSD.cjs} +3 -3
  35. package/dist/{chunk-NTAMXW3Z.cjs → chunk-TM3K5JAV.cjs} +3 -3
  36. package/dist/{chunk-6AFXSTEN.cjs → chunk-UAA5ZXHF.cjs} +3 -3
  37. package/dist/{chunk-HR57IU52.cjs → chunk-UIJHPGDV.cjs} +3 -3
  38. package/dist/chunk-VD456OB7.cjs +64 -0
  39. package/dist/chunk-VD456OB7.cjs.map +1 -0
  40. package/dist/{chunk-7YHGZZ6G.js → chunk-WLHVMKYD.js} +2 -2
  41. package/dist/{chunk-GGVJALEH.cjs → chunk-WPTTXLNL.cjs} +3 -3
  42. package/dist/{chunk-JZYMJ733.js → chunk-WV5WYSUU.js} +2 -2
  43. package/dist/components/CrossmintNFTCollectionView.cjs +3 -3
  44. package/dist/components/CrossmintNFTCollectionView.js +2 -2
  45. package/dist/components/CrossmintNFTDetail.cjs +3 -3
  46. package/dist/components/CrossmintNFTDetail.js +2 -2
  47. package/dist/components/auth/AuthForm.cjs +5 -11
  48. package/dist/components/auth/AuthForm.js +4 -10
  49. package/dist/components/auth/AuthFormBackButton.cjs +5 -11
  50. package/dist/components/auth/AuthFormBackButton.js +4 -10
  51. package/dist/components/auth/AuthFormDialog.cjs +5 -11
  52. package/dist/components/auth/AuthFormDialog.js +4 -10
  53. package/dist/components/auth/EmbeddedAuthForm.cjs +6 -12
  54. package/dist/components/auth/EmbeddedAuthForm.js +5 -11
  55. package/dist/components/auth/methods/email/EmailAuthFlow.cjs +5 -11
  56. package/dist/components/auth/methods/email/EmailAuthFlow.js +4 -10
  57. package/dist/components/auth/methods/email/EmailOTPInput.cjs +5 -11
  58. package/dist/components/auth/methods/email/EmailOTPInput.js +4 -10
  59. package/dist/components/auth/methods/email/EmailSignIn.cjs +5 -11
  60. package/dist/components/auth/methods/email/EmailSignIn.js +4 -10
  61. package/dist/components/auth/methods/farcaster/FarcasterSignIn.cjs +5 -11
  62. package/dist/components/auth/methods/farcaster/FarcasterSignIn.js +4 -10
  63. package/dist/components/auth/methods/google/GoogleSignIn.cjs +5 -11
  64. package/dist/components/auth/methods/google/GoogleSignIn.js +4 -10
  65. package/dist/components/auth/methods/web3/Web3AuthFlow.cjs +43 -12
  66. package/dist/components/auth/methods/web3/Web3AuthFlow.cjs.map +1 -1
  67. package/dist/components/auth/methods/web3/Web3AuthFlow.d.cts +1 -1
  68. package/dist/components/auth/methods/web3/Web3AuthFlow.d.ts +1 -1
  69. package/dist/components/auth/methods/web3/Web3AuthFlow.js +43 -12
  70. package/dist/components/auth/methods/web3/Web3AuthFlow.js.map +1 -1
  71. package/dist/components/auth/methods/web3/Web3AuthFlowButton.cjs +8 -11
  72. package/dist/components/auth/methods/web3/Web3AuthFlowButton.js +7 -10
  73. package/dist/components/auth/methods/web3/Web3Connector.cjs +58 -4
  74. package/dist/components/auth/methods/web3/Web3Connector.cjs.map +1 -1
  75. package/dist/components/auth/methods/web3/Web3Connector.js +58 -4
  76. package/dist/components/auth/methods/web3/Web3Connector.js.map +1 -1
  77. package/dist/components/auth/methods/web3/Web3ConnectorButton.cjs +48 -4
  78. package/dist/components/auth/methods/web3/Web3ConnectorButton.cjs.map +1 -1
  79. package/dist/components/auth/methods/web3/Web3ConnectorButton.js +48 -4
  80. package/dist/components/auth/methods/web3/Web3ConnectorButton.js.map +1 -1
  81. package/dist/components/auth/methods/web3/Web3Connectors.cjs +6 -11
  82. package/dist/components/auth/methods/web3/Web3Connectors.js +5 -10
  83. package/dist/components/common/Divider.cjs +5 -11
  84. package/dist/components/common/Divider.js +4 -10
  85. package/dist/components/embed/index.cjs +4 -4
  86. package/dist/components/embed/index.js +3 -3
  87. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.cjs +7 -13
  88. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.js +6 -12
  89. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.cjs +6 -12
  90. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.js +5 -11
  91. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.cjs +4 -22
  92. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.cjs.map +1 -1
  93. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.js +3 -21
  94. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.js.map +1 -1
  95. package/dist/components/embed/v3/index.cjs +7 -13
  96. package/dist/components/embed/v3/index.js +6 -12
  97. package/dist/components/hosted/CrossmintPayButton.cjs +3 -3
  98. package/dist/components/hosted/CrossmintPayButton.js +2 -2
  99. package/dist/components/hosted/index.cjs +3 -3
  100. package/dist/components/hosted/index.js +2 -2
  101. package/dist/components/index.cjs +15 -21
  102. package/dist/components/index.js +14 -20
  103. package/dist/consts/version.cjs +2 -2
  104. package/dist/consts/version.js +1 -1
  105. package/dist/hooks/index.cjs +5 -11
  106. package/dist/hooks/index.js +4 -10
  107. package/dist/hooks/useAuth.cjs +5 -11
  108. package/dist/hooks/useAuth.js +4 -10
  109. package/dist/hooks/useCrossmintAuth.cjs +5 -11
  110. package/dist/hooks/useCrossmintAuth.js +4 -10
  111. package/dist/hooks/useCrossmintCheckout.cjs +4 -4
  112. package/dist/hooks/useCrossmintCheckout.js +3 -3
  113. package/dist/hooks/useOAuthWindowListener.cjs +5 -11
  114. package/dist/hooks/useOAuthWindowListener.js +4 -10
  115. package/dist/hooks/useWallet.cjs +5 -11
  116. package/dist/hooks/useWallet.js +4 -10
  117. package/dist/icons/base64Icons.cjs +6 -6
  118. package/dist/icons/base64Icons.cjs.map +1 -1
  119. package/dist/icons/base64Icons.js +5 -5
  120. package/dist/icons/base64Icons.js.map +1 -1
  121. package/dist/index.cjs +15 -21
  122. package/dist/index.cjs.map +1 -1
  123. package/dist/index.js +14 -20
  124. package/dist/index.js.map +1 -1
  125. package/dist/providers/CrossmintAuthProvider.cjs +5 -11
  126. package/dist/providers/CrossmintAuthProvider.js +4 -10
  127. package/dist/providers/CrossmintWalletProvider.cjs +5 -11
  128. package/dist/providers/CrossmintWalletProvider.js +4 -10
  129. package/dist/providers/auth/AuthFormProvider.cjs +5 -11
  130. package/dist/providers/auth/AuthFormProvider.js +4 -10
  131. package/dist/providers/auth/web3/DynamicWeb3WalletConnect.cjs +33 -0
  132. package/dist/providers/auth/web3/DynamicWeb3WalletConnect.d.cts +10 -0
  133. package/dist/providers/auth/web3/DynamicWeb3WalletConnect.d.ts +10 -0
  134. package/dist/providers/auth/web3/DynamicWeb3WalletConnect.js +33 -0
  135. package/dist/providers/index.cjs +5 -11
  136. package/dist/providers/index.js +4 -10
  137. package/dist/utils/createCrossmintApiClient.cjs +3 -3
  138. package/dist/utils/createCrossmintApiClient.js +2 -2
  139. package/dist/utils/dynamic/dynamicChainToCrossmintChain.cjs +8 -0
  140. package/dist/utils/dynamic/dynamicChainToCrossmintChain.d.cts +6 -0
  141. package/dist/utils/dynamic/dynamicChainToCrossmintChain.d.ts +6 -0
  142. package/dist/utils/dynamic/dynamicChainToCrossmintChain.js +8 -0
  143. package/package.json +5 -8
  144. package/src/components/auth/AuthForm.tsx +9 -2
  145. package/src/components/auth/methods/web3/Web3AuthFlow.tsx +18 -0
  146. package/src/components/auth/methods/web3/Web3Connectors.tsx +5 -72
  147. package/src/components/embed/v3/crypto/CryptoWalletConnectionHandler.tsx +3 -24
  148. package/src/providers/CrossmintAuthProvider.test.tsx +0 -4
  149. package/src/providers/CrossmintWalletProvider.test.tsx +0 -6
  150. package/src/providers/auth/AuthFormProvider.test.tsx +0 -5
  151. package/src/providers/auth/AuthFormProvider.tsx +1 -6
  152. package/src/providers/auth/web3/DynamicWeb3WalletConnect.tsx +73 -0
  153. package/src/utils/dynamic/dynamicChainToCrossmintChain.ts +20 -0
  154. package/dist/chunk-5S4VO6RB.cjs +0 -55
  155. package/dist/chunk-5S4VO6RB.cjs.map +0 -1
  156. package/dist/chunk-EBMORHG3.cjs.map +0 -1
  157. package/dist/chunk-HSLAH2PN.cjs +0 -54
  158. package/dist/chunk-HSLAH2PN.cjs.map +0 -1
  159. package/dist/chunk-NFWMF6T7.js +0 -54
  160. package/dist/chunk-NFWMF6T7.js.map +0 -1
  161. package/dist/chunk-OZS4WEKF.js +0 -55
  162. package/dist/chunk-OZS4WEKF.js.map +0 -1
  163. package/dist/chunk-Q3UM7UCM.cjs +0 -64
  164. package/dist/chunk-Q3UM7UCM.cjs.map +0 -1
  165. package/dist/chunk-QFQWKKVU.js +0 -11
  166. package/dist/chunk-QFQWKKVU.js.map +0 -1
  167. package/dist/chunk-QK5J7FD3.cjs +0 -11
  168. package/dist/chunk-QK5J7FD3.cjs.map +0 -1
  169. package/dist/chunk-T5WAVOPI.js.map +0 -1
  170. package/dist/chunk-ZSWTJ6E7.js +0 -64
  171. package/dist/chunk-ZSWTJ6E7.js.map +0 -1
  172. package/dist/components/auth/methods/web3/Web3ConnectorContainer.cjs +0 -36
  173. package/dist/components/auth/methods/web3/Web3ConnectorContainer.d.cts +0 -10
  174. package/dist/components/auth/methods/web3/Web3ConnectorContainer.d.ts +0 -10
  175. package/dist/components/auth/methods/web3/Web3ConnectorContainer.js +0 -36
  176. package/dist/providers/auth/web3/WagmiAuthProvider.cjs +0 -8
  177. package/dist/providers/auth/web3/WagmiAuthProvider.d.cts +0 -8
  178. package/dist/providers/auth/web3/WagmiAuthProvider.d.ts +0 -8
  179. package/dist/providers/auth/web3/WagmiAuthProvider.js +0 -8
  180. package/src/components/auth/methods/web3/Web3ConnectorContainer.tsx +0 -87
  181. package/src/providers/auth/web3/WagmiAuthProvider.tsx +0 -56
  182. /package/dist/{chunk-LD66M6G7.cjs.map → chunk-3D7QOJVP.cjs.map} +0 -0
  183. /package/dist/{chunk-LF3XEXLA.js.map → chunk-3SZJ67OS.js.map} +0 -0
  184. /package/dist/{chunk-3LHIEADG.cjs.map → chunk-5GHTVW5Q.cjs.map} +0 -0
  185. /package/dist/{chunk-U5EONMPH.js.map → chunk-6FG6NL44.js.map} +0 -0
  186. /package/dist/{chunk-FKRBO2MK.js.map → chunk-6RXJMBVF.js.map} +0 -0
  187. /package/dist/{chunk-HYP7ISWS.js.map → chunk-B7RB7HT4.js.map} +0 -0
  188. /package/dist/{chunk-4BGD6LSC.js.map → chunk-D2OKRE2Q.js.map} +0 -0
  189. /package/dist/{chunk-E7KTAG6X.cjs.map → chunk-DKAVLLP6.cjs.map} +0 -0
  190. /package/dist/{chunk-NKOG6FTK.js.map → chunk-I7CLJXJR.js.map} +0 -0
  191. /package/dist/{chunk-G526QBKQ.cjs.map → chunk-N4SZG3S7.cjs.map} +0 -0
  192. /package/dist/{chunk-MBJBFR2H.js.map → chunk-PEKX75WN.js.map} +0 -0
  193. /package/dist/{chunk-KAXBBO66.cjs.map → chunk-SBTNHVSD.cjs.map} +0 -0
  194. /package/dist/{chunk-NTAMXW3Z.cjs.map → chunk-TM3K5JAV.cjs.map} +0 -0
  195. /package/dist/{chunk-6AFXSTEN.cjs.map → chunk-UAA5ZXHF.cjs.map} +0 -0
  196. /package/dist/{chunk-HR57IU52.cjs.map → chunk-UIJHPGDV.cjs.map} +0 -0
  197. /package/dist/{chunk-7YHGZZ6G.js.map → chunk-WLHVMKYD.js.map} +0 -0
  198. /package/dist/{chunk-GGVJALEH.cjs.map → chunk-WPTTXLNL.cjs.map} +0 -0
  199. /package/dist/{chunk-JZYMJ733.js.map → chunk-WV5WYSUU.js.map} +0 -0
  200. /package/dist/{components/auth/methods/web3/Web3ConnectorContainer.cjs.map → providers/auth/web3/DynamicWeb3WalletConnect.cjs.map} +0 -0
  201. /package/dist/{components/auth/methods/web3/Web3ConnectorContainer.js.map → providers/auth/web3/DynamicWeb3WalletConnect.js.map} +0 -0
  202. /package/dist/{providers/auth/web3/WagmiAuthProvider.cjs.map → utils/dynamic/dynamicChainToCrossmintChain.cjs.map} +0 -0
  203. /package/dist/{providers/auth/web3/WagmiAuthProvider.js.map → utils/dynamic/dynamicChainToCrossmintChain.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/CrossmintWalletProvider.tsx","../src/hooks/useWallet.ts","../src/hooks/useAuth.ts","../src/providers/CrossmintAuthProvider.tsx","../src/components/auth/AuthFormDialog.tsx","../src/providers/auth/AuthFormProvider.tsx","../src/hooks/useCrossmintAuth.ts","../src/components/auth/AuthForm.tsx","../src/components/auth/methods/email/EmailAuthFlow.tsx","../src/components/auth/methods/email/EmailOTPInput.tsx","../src/components/auth/AuthFormBackButton.tsx","../src/components/auth/methods/email/EmailSignIn.tsx","../src/components/common/Divider.tsx","../src/hooks/useOAuthWindowListener.ts","../src/components/auth/methods/google/GoogleSignIn.tsx","../src/components/auth/methods/farcaster/FarcasterSignIn.tsx"],"names":["createContext","useMemo","useState","useContext","useEffect","useRef","oauthUrlMap","error","Color","jsx","_a","_b","jsxs","_e","Fragment","user"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAyB,iBAAAA,gBAAe,WAAAC,UAAS,YAAAC,iBAAgB;AACjE,SAAS,oBAAoB;AAE7B;AAAA,EAGI;AAAA,EACA;AAAA,OAGG;;;ACVP,SAAS,kBAAkB;AAIpB,SAAS,YAAY;AACxB,QAAM,gBAAgB,WAAW,aAAa;AAE9C,MAAI,CAAC,eAAe;AAChB,UAAM,IAAI,MAAM,gFAAgF;AAAA,EACpG;AAEA,SAAO;AACX;;;ACZA,SAAS,cAAAC,mBAAkB;;;ACA3B,SAAyB,iBAAAH,gBAAe,aAAAI,YAAW,WAAAH,UAAS,UAAAI,SAAQ,YAAAH,iBAAgB;AAEpF,SAAS,eAAe,iBAAiB;AAEzC,SAAwB,4CAA4C;AACpE,SAAoC,sBAA4C;;;ACLhF,SAAS,sBAAsB;;;ACA/B,SAAS,eAAe,aAAa,cAAAC,aAAY,WAAW,gBAAgC;;;ACA5F,SAAS,cAAAA,mBAAkB;AAGpB,SAAS,mBAAmB;AAC/B,QAAM,UAAUA,YAAW,WAAW;AAEtC,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAClF;AAEA,SAAO;AACX;;;ADgGW;AAlGX,IAAM,qBAAkC;AAAA,EACpC,QAAQ;AAAA;AAEZ;AAsBA,IAAM,kBAAkB,cAA+C,MAAS;AAEzE,IAAM,cAAc,MAAM;AAC7B,QAAM,UAAUA,YAAW,eAAe;AAC1C,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACzE;AACA,SAAO;AACX;AAEO,IAAM,mBAAmB,CAAC;AAAA,EAC7B;AAAA,EACA;AACJ,MAAuE;AACnE,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB,SAAS;AACpD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAsB,kBAAkB;AAC9E,QAAM,CAAC,sBAAsB,uBAAuB,IAAI,SAAS,IAAI;AAErE,QAAM,EAAE,cAAc,SAAS,eAAe,YAAY,gBAAgB,IAAI;AAE9E,MAAI,aAAa,SAAS,MAAM,MAAK,mDAAiB,mBAAkB,aAAa;AACjF,UAAM,IAAI,MAAM,sEAAsE;AAAA,EAC1F;AAEA,QAAM,yBAAyB,YAAY,MAAY;AACnD,4BAAwB,IAAI;AAC5B,QAAI;AACA,YAAM,iBAAiB,aAAa;AAAA,QAChC,CAAC,WAAoC,UAAU;AAAA,MACnD;AAEA,YAAM,mBAAmB,eAAe,IAAI,CAAO,aAAa;AAC5D,cAAM,MAAM,MAAM,+CAAe,YAAY;AAC7C,eAAO,EAAE,CAAC,QAAQ,GAAG,IAAI;AAAA,MAC7B,EAAC;AAED,YAAMG,eAAc,OAAO,OAAO,CAAC,GAAG,GAAI,MAAM,QAAQ,IAAI,gBAAgB,CAAE;AAC9E,qBAAeA,YAAW;AAAA,IAC9B,SAASC,QAAO;AACZ,cAAQ,MAAM,8BAA8BA,MAAK;AACjD,eAAS,yDAAyD;AAAA,IACtE,UAAE;AACE,8BAAwB,KAAK;AAAA,IACjC;AAAA,EACJ,IAAG,CAAC,cAAc,aAAa,CAAC;AAEhC,YAAU,MAAM;AACZ,2BAAuB;AAAA,EAC3B,GAAG,CAAC,sBAAsB,CAAC;AAE3B,QAAM,qBAAqB,CAAC,SAAkB;AAC1C,mDAAgB;AAChB,QAAI,CAAC,MAAM;AAEP,iBAAW,MAAM,QAAQ,SAAS,GAAG,GAAG;AAAA,IAC5C;AAAA,EACJ;AAEA,QAAM,QAA6B;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,EACJ;AAEA,SAAO,oBAAC,gBAAgB,UAAhB,EAAyB,OAAe,UAAS;AAC7D;;;AE5GA,SAAS,YAAY;AACrB,OAAOC,YAAW;;;ACDlB,SAAS,YAAAN,iBAAgB;;;ACAzB,SAAS,YAAAA,iBAAgB;;;AC0Bb,gBAAAO,YAAA;AArBL,IAAM,qBAAqB,CAAC,OAMyD;AANzD,eAC/B;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EATJ,IAKmC,IAK5B,kBAL4B,IAK5B;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,EAAE,SAAS,IAAI,YAAY;AAEjC,SACI,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACA,SAAS,CAAC,UAAU;AAChB,iBAAS,IAAI;AACb,2CAAU;AAAA,MACd;AAAA,OACI,QATP;AAAA,MAWG,0BAAAA,KAAC,iBAAc,WAAU,WAAU,OAAO,EAAE,OAAO,UAAU,GAAG;AAAA;AAAA,EACpE;AAER;;;ADoBY,gBAAAA,MA+CY,YA/CZ;AAzCL,IAAM,kCAAkC;AAExC,SAAS,cAAc;AAAA,EAC1B;AAAA,EACA;AACJ,GAAsG;AAbtG;AAcI,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,EAAE,YAAY,eAAe,SAAS,SAAS,IAAI,YAAY;AAErE,QAAM,CAAC,OAAO,QAAQ,IAAIP,UAAS,EAAE;AACrC,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAS,KAAK;AAC9C,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAE5C,QAAM,iBAAiB,MAAY;AArBvC,QAAAQ,KAAAC;AAsBQ,eAAW,IAAI;AACf,QAAI;AACA,YAAM,gBAAgB,MAAM,+CAAe;AAAA,SACvCD,MAAA,6CAAc,UAAd,OAAAA,MAAuB;AAAA,SACvBC,MAAA,6CAAc,YAAd,OAAAA,MAAyB;AAAA,QACzB;AAAA;AAGJ,YAAM,+CAAe,0BAA0B;AAC/C,oBAAc,KAAK;AACnB,cAAQ,SAAS;AAAA,IACrB,SAAS,OAAO;AACZ,cAAQ,MAAM,8BAA8B,KAAK;AACjD,eAAS,iCAAiC;AAC1C,kBAAY,IAAI;AAAA,IACpB,UAAE;AACE,iBAAW,KAAK;AAAA,IACpB;AAAA,EACJ;AAEA,QAAM,eAAe,MAAM;AACvB,YAAQ,SAAS;AACjB,oBAAgB,IAAI;AAAA,EACxB;AAEA,SACI,qBAAC,SACG;AAAA,oBAAAF;AAAA,MAAC;AAAA;AAAA,QACG,SAAS;AAAA,QACT,YAAW,8CAAY,WAAZ,mBAAoB;AAAA,QAC/B,YAAW,8CAAY,WAAZ,mBAAoB;AAAA;AAAA,IACnC;AAAA,IAEA,qBAAC,SAAI,WAAU,mDACX;AAAA,sBAAAA,KAAC,SAAI,WAAU,mBACX,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACG,oBAAmB,8CAAY,WAAZ,mBAAoB;AAAA,UACvC,8BAA6B,8CAAY,WAAZ,mBAAoB;AAAA,UACjD,wBAAuB,8CAAY,WAAZ,mBAAoB;AAAA;AAAA,MAC/C,GACJ;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,YAAY;AAAA,UAE/C;AAAA;AAAA,MACL;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,cAAc;AAAA,UAEjD;AAAA;AAAA,MACL;AAAA,MACA,gBAAAA,KAAC,SAAI,WAAU,QACX,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACG,WAAW;AAAA,UACX,OAAO;AAAA,UACP,UAAU,CAAC,QAAQ;AACf,qBAAS,GAAG;AACZ,wBAAY,KAAK;AACjB,qBAAS,IAAI;AAAA,UACjB;AAAA,UACA,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,cAAc;AAAA,YACV,SAAQ,oDAAY,WAAZ,mBAAoB,WAApB,YAA8B;AAAA,YACtC,SAAQ,oDAAY,WAAZ,mBAAoB,WAApB,YAA8B;AAAA,YACtC,SAAQ,oDAAY,WAAZ,mBAAoB,WAApB,YAA8B;AAAA,YACtC,cAAa,oDAAY,WAAZ,mBAAoB,gBAApB,YAAmC;AAAA,YAChD,mBAAkB,oDAAY,WAAZ,mBAAoB,qBAApB,YAAwC;AAAA,YAC1D,kBAAiB,oDAAY,WAAZ,mBAAoB,oBAApB,YAAuC;AAAA,YACxD,cAAc,yCAAY;AAAA,UAC9B;AAAA,UAEA,+BAAC,iBACG;AAAA,4BAAAA,KAAC,gBAAa,OAAO,GAAG,UAAoB;AAAA,YAC5C,gBAAAA,KAAC,gBAAa,OAAO,GAAG,UAAoB;AAAA,YAC5C,gBAAAA,KAAC,gBAAa,OAAO,GAAG,UAAoB;AAAA,YAC5C,gBAAAA,KAAC,gBAAa,OAAO,GAAG,UAAoB;AAAA,YAC5C,gBAAAA,KAAC,gBAAa,OAAO,GAAG,UAAoB;AAAA,YAC5C,gBAAAA,KAAC,gBAAa,OAAO,GAAG,UAAoB;AAAA,aAChD;AAAA;AAAA,MACJ,GACJ;AAAA,MAEA,qBAAC,OAAE,WAAU,4DACT;AAAA,wBAAAA,KAAC,UAAK,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,cAAc,GAAG,gEAE3D;AAAA,QAAQ;AAAA,QACR,gBAAAA;AAAA,UAAC;AAAA;AAAA,YAEG,WAAU;AAAA,YACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,SAAS;AAAA,YAC7C,MAAK;AAAA,YACR;AAAA;AAAA,UAJO;AAAA,QAMR;AAAA,SACJ;AAAA,OACJ;AAAA,KACJ;AAER;;;AE3HA,SAAyB,YAAAP,iBAAgB;AACzC,OAAO,WAAW;AAKlB,SAAS,oBAAoB;AAoCrB,mBASgB,OAAAO,MA+BA,QAAAG,aAxChB;AA/BD,SAAS,YAAY,EAAE,gBAAgB,GAAyD;AAXvG;AAYI,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,EAAE,YAAY,SAAS,SAAS,IAAI,YAAY;AAEtD,QAAM,CAAC,YAAY,aAAa,IAAIV,UAAS,EAAE;AAC/C,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,EAAE;AAC/C,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAS,KAAK;AAEhD,WAAe,eAAe,GAA+B;AAAA;AACzD,QAAE,eAAe;AAEjB,UAAI,CAAC,aAAa,UAAU,GAAG;AAC3B,sBAAc,oCAAoC;AAClD;AAAA,MACJ;AAEA,mBAAa,IAAI;AAEjB,UAAI;AACA,cAAM,oBAAoB,WAAW,KAAK,EAAE,YAAY;AACxD,cAAM,iBAAkB,MAAM,+CAAe,aAAa;AAE1D,wBAAgB,EAAE,OAAO,mBAAmB,SAAS,eAAe,QAAQ,CAAC;AAC7E,gBAAQ,KAAK;AAAA,MACjB,SAASW,KAAa;AAClB,qBAAa,KAAK;AAClB,iBAAS,4DAA4D;AAAA,MACzE;AAAA,IACJ;AAAA;AAEA,SACI,gBAAAJ,KAAA,YACI,0BAAAA,KAAC,SAAI,WAAU,6DACX,0BAAAG,MAAC,SAAI,WAAU,UACX;AAAA,oBAAAA;AAAA,MAAC;AAAA;AAAA,QACG,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU;AAAA,QACV,YAAU;AAAA,QAEV;AAAA,0BAAAH,KAAC,WAAM,SAAQ,cAAa,WAAU,WAAU,mBAEhD;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACG,WAAW;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA;AAAA;AAAA,gBACA,aAAa,mBAAmB;AAAA,cACpC;AAAA,cACA,OAAO;AAAA,gBACH,QAAO,8CAAY,WAAZ,mBAAoB;AAAA,gBAC3B,cAAc,yCAAY;AAAA,gBAC1B,aAAa,cAAa,8CAAY,WAAZ,mBAAoB,UAAS,8CAAY,WAAZ,mBAAoB;AAAA,gBAC3E,kBAAiB,8CAAY,WAAZ,mBAAoB;AAAA;AAAA,gBAErC,sBAAsB,IAAI,OAAM,oDAAY,WAAZ,mBAAoB,WAApB,YAA8B,SAAS,EAClE,MAAM,IAAI,EACV,SAAS;AAAA,cAClB;AAAA,cACA,MAAK;AAAA,cACL,aAAY;AAAA,cACZ,OAAO;AAAA,cACP,UAAU,CAAC,MAAM;AACb,8BAAc,EAAE,OAAO,KAAK;AAC5B,8BAAc,EAAE;AAChB,yBAAS,IAAI;AAAA,cACjB;AAAA,cACA,UAAU;AAAA,cACV,oBAAiB;AAAA;AAAA,UACrB;AAAA,UACA,gBAAAG,MAAC,SAAI,WAAU,qDACV;AAAA,0BAAc,gBAAAH,KAAC,aAAU,cAAa,8CAAY,WAAZ,mBAAoB,QAAQ;AAAA,YAClE,aACG,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACG,OAAO;AAAA,kBACH,QAAO,8CAAY,WAAZ,mBAAoB;AAAA,kBAC3B,OAAM,8CAAY,WAAZ,mBAAoB;AAAA,gBAC9B;AAAA;AAAA,YACJ;AAAA,YAEH,CAAC,cAAc,CAAC,aACb,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACG,MAAK;AAAA,gBACL,WAAW,WAAW,uDAAuD;AAAA,gBAC7E,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,OAAO;AAAA,gBAC3C,UAAU,CAAC;AAAA,gBACd;AAAA;AAAA,YAED;AAAA,aAER;AAAA;AAAA;AAAA,IACJ;AAAA,IACC,cAAc,gBAAAA,KAAC,OAAE,WAAU,kCAAkC,sBAAW;AAAA,KAC7E,GACJ,GACJ;AAER;;;AHlGe,gBAAAA,YAAA;AALR,SAAS,gBAAgB;AAC5B,QAAM,EAAE,KAAK,IAAI,YAAY;AAC7B,QAAM,CAAC,cAAc,eAAe,IAAIP,UAAiC,IAAI;AAE7E,MAAI,SAAS,OAAO;AAChB,WAAO,gBAAAO,KAAC,iBAAc,cAA4B,iBAAkC;AAAA,EACxF;AACA,MAAI,SAAS,WAAW;AACpB,WAAO,gBAAAA,KAAC,eAAY,iBAAkC;AAAA,EAC1D;AAEA,SAAO;AACX;;;AIPQ,SACI,OAAAA,MADJ,QAAAG,aAAA;AARD,SAAS,QAAQ,EAAE,YAAY,KAAK,GAA6C;AAHxF;AAII,QAAM,EAAE,KAAK,IAAI,YAAY;AAE7B,MAAI,SAAS,WAAW;AACpB,WAAO;AAAA,EACX;AAEA,SACI,gBAAAA,MAAC,SAAI,WAAU,qDACX;AAAA,oBAAAH,KAAC,UAAK,WAAU,+BAA8B,OAAO,EAAE,kBAAiB,8CAAY,WAAZ,mBAAoB,OAAO,GAAG;AAAA,IACrG,QAAQ,OACL,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACG,WAAU;AAAA,QACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,cAAc;AAAA,QAEjD;AAAA;AAAA,IACL,IACA;AAAA,IACJ,gBAAAA,KAAC,UAAK,WAAU,+BAA8B,OAAO,EAAE,kBAAiB,8CAAY,WAAZ,mBAAoB,OAAO,GAAG;AAAA,KAC1G;AAER;;;ACvBA,SAAS,aAAa,mBAAmB;AACzC,SAAS,aAAAL,YAAW,QAAQ,YAAAF,iBAAgB;AAC5C,SAAS,SAAS;AAIX,IAAM,yBAAyB,CAAC,aAA4B;AAC/D,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,EAAE,aAAa,SAAS,IAAI,YAAY;AAC9C,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAS,KAAK;AAChD,QAAM,WAAW,OAA2D,IAAI;AAEhF,EAAAE,WAAU,MAAM;AACZ,QAAI,SAAS,WAAW,MAAM;AAC1B,eAAS,UAAU,IAAI,YAA4C,OAAO,UAAU,OAAO,QAAQ,KAAK;AAAA,QACpG;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,WAAO,MAAM;AACT,UAAI,SAAS,WAAW,MAAM;AAC1B,iBAAS,QAAQ,IAAI,+BAA+B;AAAA,MACxD;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,QAAM,+BAA+B,MAAY;AAC7C,QAAI,SAAS,WAAW,MAAM;AAC1B,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AACA,iBAAa,IAAI;AACjB,aAAS,IAAI;AACb,UAAM,QAAQ,MAAM,YAAY,KAAK,YAAY,QAAQ,GAAG;AAAA,MACxD,aAAa;AAAA,MACb,aAAa;AAAA,MACb,OAAO;AAAA,MACP,QAAQ;AAAA,IACZ,CAAC;AAED,UAAM,qBAAqB,CAAO,SAAoC;AAxC9E;AAyCY,YAAM,+CAAe,0BAA0B,KAAK;AACpD,qBAAS,YAAT,mBAAkB,IAAI;AACtB,YAAM,OAAO,MAAM;AACnB,mBAAa,KAAK;AAAA,IACtB;AAEA,UAAM,cAAc,CAAC,SAA4B;AA/CzD;AAgDY,eAAS,KAAK,KAAK;AACnB,qBAAS,YAAT,mBAAkB,IAAI;AACtB,YAAM,OAAO,MAAM;AACnB,mBAAa,KAAK;AAAA,IACtB;AAEA,aAAS,QAAQ,GAAG,iCAAiC,kBAAkB;AACvE,aAAS,QAAQ,GAAG,0BAA0B,WAAW;AAGzD,UAAM,qBAAqB,YAAY,MAAM;AA1DrD;AA2DY,UAAI,MAAM,OAAO,QAAQ;AACrB,sBAAc,kBAAkB;AAChC,qBAAa,KAAK;AAClB,uBAAS,YAAT,mBAAkB,IAAI;AAAA,MAC1B;AAAA,IACJ,GAAG,IAAI;AAAA,EACX;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,EACJ;AACJ;AAEA,IAAM,iBAAiB;AAAA,EACnB,+BAA+B,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AAAA,EACrE,wBAAwB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1D;;;AC7CY,qBAAAU,WACI,OAAAL,MADJ,QAAAG,aAAA;AAxBL,SAAS,aAAa,IAAuD;AAAvD,MAAK,kBAAL,IAAK;AAPlC,MAAAF,KAAA;AAQI,QAAM,EAAE,MAAM,YAAY,qBAAqB,IAAI,YAAY;AAC/D,QAAM,EAAE,8BAA8B,WAAW,qBAAqB,IAAI,uBAAuB,QAAQ;AACzG,QAAM,YAAY,wBAAwB;AAE1C,MAAI,SAAS,WAAW;AACpB,WAAO;AAAA,EACX;AAEA,SACI,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY,iDAAiD;AAAA,MACjE;AAAA,MACA,OAAO;AAAA,QACH,cAAc,yCAAY;AAAA,QAC1B,kBAAiBF,MAAA,yCAAY,WAAZ,gBAAAA,IAAoB;AAAA,MACzC;AAAA,MACA,SAAS,YAAY,SAAY;AAAA,OAC7B,QAZP;AAAA,MAcG;AAAA,wBAAAE,MAAAE,WAAA,EACI;AAAA,0BAAAL,KAAC,cAAW,WAAU,0CAAyC;AAAA,UAC9D,YACG,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACG,OAAO;AAAA,gBACH,QAAO,8CAAY,WAAZ,mBAAoB;AAAA,gBAC3B,OAAM,8CAAY,WAAZ,mBAAoB;AAAA,cAC9B;AAAA;AAAA,UACJ,IAEA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACG,WAAU;AAAA,cACV,OAAO,EAAE,QAAQ,YAAY,QAAO,8CAAY,WAAZ,mBAAoB,YAAY;AAAA,cACvE;AAAA;AAAA,UAED;AAAA,WAER;AAAA,QACA,gBAAAA,KAAC,UAAK,WAAU,WAAU,iCAAmB;AAAA;AAAA;AAAA,EACjD;AAER;;;ACpDA,SAAS,aAAAL,YAAW,SAAS,YAAAF,iBAAgB;AAC7C,SAAS,WAAW,cAAkC;AAatC,SAqII,YAAAY,WAtHA,OAAAL,MAfJ,QAAAG,aAAA;AANT,SAAS,kBAAkB;AARlC;AASI,QAAM,EAAE,MAAM,YAAY,SAAS,SAAS,IAAI,YAAY;AAE5D,MAAI,SAAS,WAAW;AACpB,WACI,gBAAAH,KAAC,SACG,0BAAAG;AAAA,MAAC;AAAA;AAAA,QACG,WAAW;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA,OAAO;AAAA,UACH,cAAc,yCAAY;AAAA,UAC1B,kBAAiB,8CAAY,WAAZ,mBAAoB;AAAA,QACzC;AAAA,QACA,SAAS,MAAM;AACX,kBAAQ,QAAQ;AAChB,mBAAS,IAAI;AAAA,QACjB;AAAA,QAEA;AAAA,0BAAAH,KAAC,iBAAc,WAAU,0CAAyC;AAAA,UAClE,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACG,WAAU;AAAA,cACV,OAAO,EAAE,QAAQ,YAAY,QAAO,8CAAY,WAAZ,mBAAoB,YAAY;AAAA,cACvE;AAAA;AAAA,UAED;AAAA,UACA,gBAAAA,KAAC,UAAK,WAAU,WAAU,oCAAsB;AAAA;AAAA;AAAA,IACpD,GACJ;AAAA,EAER;AAEA,MAAI,SAAS,UAAU;AACnB,WAAO,gBAAAA,KAAC,mBAAgB;AAAA,EAC5B;AAEA,SAAO;AACX;AAGA,SAAS,kBAAkB;AAlD3B;AAmDI,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,EAAE,YAAY,SAAS,eAAe,SAAS,IAAI,YAAY;AACrE,QAAM,CAAC,eAAe,gBAAgB,IAAIP,UAA+B,IAAI;AAE7E,QAAM,iBAAiB;AAAA,IACnB,OAAO;AAAA,MACH,WAAW,CAAC,SAAwB;AAEhC,yBAAiB,IAAI;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,CAAC;AAAA,EACL;AAEA,QAAM,EAAE,QAAQ,KAAK,WAAW,SAAS,SAAS,YAAY,IAAI,UAAU,cAAc;AAE1F,QAAM,wBAAwB,CAAO,SAAwB;AACzD,aAAS,IAAI;AACb,QAAI;AACA,YAAM,gBAAgB,MAAM,+CAAe,oBAAoB;AAE/D,YAAM,+CAAe,0BAA0B;AAC/C,oBAAc,KAAK;AACnB,cAAQ,SAAS;AAAA,IACrB,SAAS,OAAO;AACZ,cAAQ,MAAM,mCAAmC,KAAK;AACtD,eAAS,kCAAkC;AAAA,IAC/C;AAAA,EACJ;AAEA,EAAAE,WAAU,MAAM;AACZ,QAAI,iBAAiB,MAAM;AAEvB,4BAAsB,aAAa;AAAA,IACvC;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,EAAAA,WAAU,MAAM;AACZ,QAAI,aAAa;AAEb,aAAO;AAAA,IACX;AAAA,EACJ,GAAG,CAAC,WAAW,CAAC;AAEhB,EAAAA,WAAU,MAAM;AAEZ,YAAQ;AAAA,EACZ,GAAG,CAAC,CAAC;AAEL,SACI,gBAAAQ,MAAC,SACG;AAAA,oBAAAH;AAAA,MAAC;AAAA;AAAA,QACG,SAAS,MAAM;AACX,kBAAQ;AACR,kBAAQ,SAAS;AAAA,QACrB;AAAA,QACA,YAAW,8CAAY,WAAZ,mBAAoB;AAAA,QAC/B,YAAW,8CAAY,WAAZ,mBAAoB;AAAA;AAAA,IACnC;AAAA,IAEA,gBAAAG,MAAC,SAAI,WAAU,oCACX;AAAA,sBAAAA,MAAC,SAAI,WAAU,eACX;AAAA,wBAAAH;AAAA,UAAC;AAAA;AAAA,YACG,WAAU;AAAA,YACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,YAAY;AAAA,YACnD;AAAA;AAAA,QAED;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACG,WAAU;AAAA,YACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,cAAc;AAAA,YACrD;AAAA;AAAA,QAED;AAAA,SACJ;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAO;AAAA,YACH,kBAAiB,8CAAY,WAAZ,mBAAoB;AAAA,YACrC,cAAc,yCAAY;AAAA,UAC9B;AAAA,UAEC,uBAAa,OACV,gBAAAA,KAAC,UAAO,KAAK,WAAW,MAAM,KAAK,IAEnC,gBAAAA,KAAC,SAAI,WAAU,kDACX,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACG,OAAO;AAAA,gBACH,QAAO,8CAAY,WAAZ,mBAAoB;AAAA,gBAC3B,OAAM,8CAAY,WAAZ,mBAAoB;AAAA,cAC9B;AAAA;AAAA,UACJ,GACJ;AAAA;AAAA,MAER;AAAA,MACC,YACG,gBAAAG,MAAAE,WAAA,EACI;AAAA,wBAAAL;AAAA,UAAC;AAAA;AAAA,YACG,WAAU;AAAA,YACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,cAAc;AAAA,YACrD;AAAA;AAAA,QAED;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACG,MAAM;AAAA,YACN,KAAI;AAAA,YACJ,QAAO;AAAA,YACP,WAAU;AAAA,YACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,SAAS;AAAA,YAChD;AAAA;AAAA,QAED;AAAA,SACJ,IACA;AAAA,OACR;AAAA,KACJ;AAER;;;AR1IgB,SA+BA,YAAAK,WAzBI,OAAAL,MANJ,QAAAG,aAAA;AAlBhB,IAAM,eAAe;AAAA,EAAK;AAAA;AAAA,IAEtB,OAAO,iDAA6B,EAAE,KAAK,CAAC,SAAS;AAAA,MACjD,SAAS,IAAI;AAAA,IACjB,EAAE;AAAA;AACN;AAEO,SAAS,SAAS,EAAE,UAAU,GAA2B;AAnBhE;AAoBI,QAAM,EAAE,MAAM,YAAY,cAAc,SAAS,MAAM,IAAI,YAAY;AAEvE,SACI,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MAEC;AAAA,gBACG,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACG,WAAU;AAAA,YACV,OAAO;AAAA,cACH,iBAAiB,IAAIJ,QAAM,oDAAY,WAAZ,mBAAoB,WAApB,YAA8B,SAAS,EAAE,MAAM,IAAI,EAAE,SAAS;AAAA,YAC7F;AAAA,YAEA;AAAA,8BAAAC,KAAC,aAAU,cAAa,oDAAY,WAAZ,mBAAoB,WAApB,YAA8B,WAAW;AAAA,cACjE,gBAAAA,KAAC,OAAE,WAAU,gBAAe,OAAO,EAAE,QAAO,oDAAY,WAAZ,mBAAoB,WAApB,YAA8B,UAAU,GAC/E,iBACL;AAAA;AAAA;AAAA,QACJ,IACA;AAAA,QAEH,SAAS,YACN,gBAAAG,MAAC,SACG;AAAA,0BAAAH;AAAA,YAAC;AAAA;AAAA,cACG,WAAU;AAAA,cACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,YAAY;AAAA,cACnD;AAAA;AAAA,UAED;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACG,WAAU;AAAA,cACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,cAAc;AAAA,cACrD;AAAA;AAAA,UAED;AAAA,WACJ,IACA;AAAA,QAEH,aAAa,SAAS,OAAO,IAC1B,gBAAAG,MAAAE,WAAA,EACI;AAAA,0BAAAL,KAAC,iBAAc;AAAA,UACd,aAAa,SAAS,IAAI,gBAAAA,KAAC,WAAQ,YAAwB,MAAK,MAAK,IAAK;AAAA,WAC/E,IACA;AAAA,QAEH,aAAa,SAAS,QAAQ,IAAI,gBAAAA,KAAC,gBAAa,IAAK;AAAA,QACrD,aAAa,SAAS,WAAW,IAC9B,gBAAAA,KAAC,qBAAkB,SACf,0BAAAA,KAAC,mBAAgB,GACrB,IACA;AAAA,QACH,aAAa,SAAS,MAAM,IAAI,gBAAAA,KAAC,gBAAa,IAAK;AAAA,QAEnD,SAAS,aAAa,SAAS,QAC5B,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACG,WAAU;AAAA,YACV,QAAO,oDAAY,WAAZ,mBAAoB,kBAApB,YAAqC;AAAA;AAAA,QAChD,IACA;AAAA;AAAA;AAAA,EACR;AAER;;;AH/EA,SAAS,aAAAL,kBAAiB;AAWd,SAYQ,OAAAK,OAZR,QAAAG,aAAA;AATG,SAAR,eAAgC,EAAE,KAAK,GAAsB;AANpE;AAOI,QAAM,EAAE,YAAY,cAAc,IAAI,YAAY;AAElD,EAAAR,WAAU,MAAM;AACZ,aAAS,KAAK,MAAM,WAAW,OAAO,WAAW;AAAA,EACrD,GAAG,CAAC,IAAI,CAAC;AAET,SACI,gBAAAK,MAAC,UAAO,OAAO,OAAO,MAAY,cAAc,eAC5C,0BAAAG;AAAA,IAAC;AAAA;AAAA,MACG,mBAAmB,CAAC,MAAM,EAAE,eAAe;AAAA,MAC3C,iBAAiB,CAAC,MAAM,EAAE,eAAe;AAAA,MACzC,mBAAkB,8CAAY,WAAZ,mBAAoB;AAAA,MACtC,uBAAsB,8CAAY,WAAZ,mBAAoB;AAAA,MAC1C,WAAU;AAAA,MACV,OAAO;AAAA,QACH,cAAc,yCAAY;AAAA,QAC1B,kBAAiB,8CAAY,WAAZ,mBAAoB;AAAA,MACzC;AAAA,MAEA;AAAA,wBAAAH,MAAC,kBAAe,SAAO,MACnB,0BAAAA,MAAC,eAAY,4BAAc,GAC/B;AAAA,QACA,gBAAAA,MAAC,kBAAe,SAAO,MACnB,0BAAAA,MAAC,qBAAkB,mCAAqB,GAC5C;AAAA,QAEA,gBAAAA,MAAC,YAAS,WAAU,iBAAgB;AAAA;AAAA;AAAA,EACxC,GACJ;AAER;;;AD+HoB,SA6CT,YAAAK,WApCa,OAAAL,OATJ,QAAAG,aAAA;AAzHpB,IAAM,sBAAuC;AAAA,EACzC,eAAe;AAAA,EACf,OAAO,MAAM;AAAA,EAAC;AAAA,EACd,QAAQ,MAAM;AAAA,EAAC;AAAA,EACf,KAAK;AAAA,EACL,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS,MAAM;AAAA,EAAC;AACpB;AAEO,IAAM,cAAcZ,eAA+B,mBAAmB;AAE7E,IAAM,yBAAoD;AAAA,EACtD,cAAc;AAAA,EACd,eAAe;AAAA,EACf,MAAM;AACV;AAEO,SAAS,sBAAsB;AAAA,EAClC,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,eAAe,CAAC,SAAS,QAAQ;AAAA,EACjC;AAAA,EACA;AACJ,GAA+B;AAC3B,QAAM,CAAC,MAAM,OAAO,IAAIE,UAAsC,MAAS;AACvE,QAAM,EAAE,WAAW,OAAO,IAAI,aAAa,6DAA6D;AAGxG,QAAM,mBAAmBG,QAA6B,IAAI;AAE1D,QAAM,gBAAgBJ,SAAQ,MAAM;AAChC,QAAI,CAAC,iBAAiB,SAAS;AAC3B,uBAAiB,UAAU,cAAc,KAAK,WAAW;AAAA,QACrD,WAAW;AAAA,UACP,UAAU,MAAM;AACZ,mBAAO,MAAS;AAChB,oBAAQ,MAAS;AAAA,UACrB;AAAA,UACA,gBAAgB,CAAC,iBAAuC;AACpD,mBAAO,aAAa,GAAG;AACvB,oBAAQ,aAAa,IAAI;AAAA,UAC7B;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AACA,WAAO,iBAAiB;AAAA,EAC5B,GAAG,CAAC,CAAC;AAEL,QAAM,mBAAmB,qCAAqC,UAAU,MAAM;AAC9E,QAAM,CAAC,YAAY,aAAa,IAAIC,UAAS,KAAK;AAElD,EAAAE,WAAU,MAAM;AACZ,QAAI,UAAU,OAAO,MAAM;AACvB,YAAM,MAAM,UAAU,cAAc;AACpC,aAAO,GAAG;AAAA,IACd;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,EAAAA,WAAU,MAAM;AACZ,QAAI,UAAU,OAAO,MAAM;AACvB;AAAA,IACJ;AAEA,kBAAc,KAAK;AAAA,EACvB,GAAG,CAAC,UAAU,GAAG,CAAC;AAElB,QAAM,QAAQ,MAAM;AAChB,QAAI,UAAU,OAAO,MAAM;AACvB,cAAQ,IAAI,wBAAwB;AACpC;AAAA,IACJ;AAEA,kBAAc,IAAI;AAAA,EACtB;AAEA,QAAM,SAAS,MAAM;AACjB,kBAAc,OAAO;AAAA,EACzB;AAEA,QAAM,gBAAgB,MAAkB;AACpC,QAAI,UAAU,OAAO,MAAM;AACvB,aAAO;AAAA,IACX;AACA,QAAI,YAAY;AACZ,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAEA,QAAM,UAAU,MAAY;AACxB,QAAI,UAAU,OAAO,MAAM;AACvB,cAAQ,IAAI,oBAAoB;AAChC;AAAA,IACJ;AAEA,UAAMW,QAAO,MAAM,cAAc,QAAQ;AACzC,YAAQA,KAAI;AAAA,EAChB;AAEA,SACI,gBAAAN,MAAC,iBACG,0BAAAA;AAAA,IAAC,YAAY;AAAA,IAAZ;AAAA,MACG,OAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK,UAAU;AAAA,QACf;AAAA,QACA,QAAQ,cAAc;AAAA,QACtB;AAAA,MACJ;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACG,cAAc,gBAAgB;AAAA,UAC9B,oBAAoB,gBAAgB;AAAA,UACpC;AAAA,UAEA,0BAAAG;AAAA,YAAC;AAAA;AAAA,cACG,cAAc;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,SAAS;AAAA,cACb;AAAA,cAEA;AAAA,gCAAAH,MAAC,iBAAc,iBAAkC,aAAa,UAAU,KACnE,UACL;AAAA,gBAEA,gBAAAA,MAAC,kBAAe,MAAM,YAAY;AAAA;AAAA;AAAA,UACtC;AAAA;AAAA,MACJ;AAAA;AAAA,EACJ,GACJ;AAER;AAEA,SAAS,cAAc;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AACJ,GAIG;AACC,QAAM,EAAE,mBAAmB,aAAa,OAAO,IAAI,UAAU;AAE7D,EAAAL,WAAU,MAAM;AACZ,QAAI,gBAAgB,kBAAkB,eAAe,WAAW,gBAAgB,eAAe,MAAM;AACjG,wBAAkB;AAAA,QACd,MAAM,gBAAgB;AAAA,QACtB,QAAQ,EAAE,MAAM,UAAU;AAAA,MAC9B,CAAC;AAAA,IACL;AAEA,QAAI,WAAW,YAAY,eAAe,MAAM;AAC5C,kBAAY;AAAA,IAChB;AAAA,EACJ,GAAG,CAAC,aAAa,MAAM,CAAC;AAExB,SAAO,gBAAAK,MAAAK,WAAA,EAAG,UAAS;AACvB;;;AD9MO,SAAS,UAA2B;AACvC,QAAM,UAAUX,YAAW,WAAW;AACtC,MAAI,YAAY,QAAW;AACvB,UAAM,IAAI,MAAM,6CAA6C;AAAA,EACjE;AACA,SAAO;AACX;;;AF+HQ,SAGuB,OAAAM,OAHvB,QAAAG,aAAA;AAzFD,IAAM,gBAAgBZ,eAA6B;AAAA,EACtD,QAAQ;AAAA,EACR,mBAAmB,MAAM,QAAQ,QAAQ,EAAE,iBAAiB,MAAM,CAAC;AAAA,EACnE,aAAa,MAAM;AAAA,EAAC;AACxB,CAAC;AAIM,SAAS,wBAAwB;AAAA,EACpC;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA;AAAA,EACrB;AACJ,GAKG;AACC,QAAM,EAAE,UAAU,IAAI,aAAa,+DAA+D;AAClG,QAAM,iBAAiBC,SAAQ,MAAM,eAAe,KAAK,EAAE,cAAc,UAAU,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC;AAEhH,QAAM,CAAC,aAAa,cAAc,IAAIC,UAA2B,EAAE,QAAQ,aAAa,CAAC;AACzF,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,UAA6B,EAAE,MAAM,MAAM,CAAC;AAEhG,QAAM,oBAAoB,IAErB,yCADD,SAAuB,EAAE,MAAM,oBAAoB,QAAQ,EAAE,MAAM,UAAU,EAAE,GAC9E;AACD,QAAI,YAAY,UAAU,eAAe;AACrC,cAAQ,IAAI,wBAAwB;AACpC,aAAO,EAAE,iBAAiB,OAAO,QAAQ,6BAA6B;AAAA,IAC1E;AAEA,QAAI,UAAU,OAAO,MAAM;AACvB,aAAO,EAAE,iBAAiB,OAAO,QAAQ,sCAAsC;AAAA,IACnF;AAEA,QAAI;AACA,qBAAe,EAAE,QAAQ,cAAc,CAAC;AACxC,YAAM,SAAS,MAAM,eAAe;AAAA,QAChC,EAAE,KAAK,UAAU,IAAc;AAAA,QAC/B;AAAA,QACA,gCAAgC,MAAM;AAAA,MAC1C;AACA,qBAAe,EAAE,QAAQ,UAAU,OAAO,CAAC;AAAA,IAC/C,SAAS,OAAgB;AACrB,cAAQ,MAAM,yCAAyC,KAAK;AAC5D,qBAAe,iBAAiB,KAAK,CAAC;AAAA,IAC1C;AACA,WAAO,EAAE,iBAAiB,KAAK;AAAA,EACnC;AAEA,QAAM,kCAAkC,CAAC,WAAyB;AAC9D,QAAI,sBAAuB,OAAO,OAAyB,SAAS,WAAW;AAC3E,aAAO,iCACA,SADA;AAAA,QAEH,QAAQ,iCACD,OAAO,SADN;AAAA,UAEJ,0BAA0B,oBAAoB,eAAe;AAAA,UAC7D,4BAA4B,oBAAoB,qBAAqB;AAAA,UACrE,2BAA2B,oBAAoB,aAAa;AAAA,UAC5D,gCAAgC,oBAAoB,mBAAmB;AAAA,QAC3E;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAEA,QAAM,sBAAsB,CAAC,SAAiC,MAC1D,IAAI,QAAc,CAAC,YAAY;AAC3B,0BAAsB;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,MACN,sBAAsB,MAAM;AACxB,8BAAsB,EAAE,MAAM,MAAM,CAAC;AACrC,gBAAQ;AAAA,MACZ;AAAA,MACA,wBAAwB,MAAM;AAC1B,8BAAsB,EAAE,MAAM,MAAM,CAAC;AACrC,gBAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAEL,QAAM,cAAc,MAAM;AACtB,mBAAe,EAAE,QAAQ,aAAa,CAAC;AAAA,EAC3C;AAEA,SACI,gBAAAU,MAAC,cAAc,UAAd,EAAuB,OAAO,iCAAK,cAAL,EAAkB,mBAAmB,YAAY,IAC3E;AAAA;AAAA,IACA,mBAAmB,OACd,aAAa,gBAAAH,MAAC,iBAAc,OAAO,oBAAoB,YAAwB,GAAI,SAAS,IAAI,IAChG;AAAA,KACV;AAER;AAEA,SAAS,iBAAiB,OAAsE;AAC5F,MAAI,iBAAiB,kBAAkB;AACnC,WAAO,EAAE,QAAQ,iBAAiB,MAAM;AAAA,EAC5C;AAEA,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,QAAM,QAAQ,iBAAiB,QAAQ,MAAM,QAAQ;AACrD,SAAO,EAAE,QAAQ,iBAAiB,OAAO,IAAI,iBAAiB,yBAAyB,OAAO,IAAI,KAAK,EAAE;AAC7G","sourcesContent":["import { type ReactNode, createContext, useMemo, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n type EVMSmartWallet,\n type EVMSmartWalletChain,\n SmartWalletError,\n SmartWalletSDK,\n type WalletParams,\n type PasskeySigner,\n} from \"@crossmint/client-sdk-smart-wallet\";\n\nimport { useCrossmint } from \"../hooks\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport { PasskeyPrompt } from \"@/components/auth/PasskeyPrompt\";\n\ntype WalletStatus = \"not-loaded\" | \"in-progress\" | \"loaded\" | \"loading-error\";\n\ntype ValidPasskeyPromptType =\n | \"create-wallet\"\n | \"transaction\"\n | \"not-supported\"\n | \"create-wallet-error\"\n | \"transaction-error\";\ntype PasskeyPromptState =\n | {\n type: ValidPasskeyPromptType;\n open: true;\n primaryActionOnClick: () => void;\n secondaryActionOnClick?: () => void;\n }\n | { open: false };\n\ntype ValidWalletState =\n | { status: \"not-loaded\" | \"in-progress\" }\n | { status: \"loaded\"; wallet: EVMSmartWallet }\n | { status: \"loading-error\"; error: SmartWalletError };\n\ntype WalletContext = {\n status: WalletStatus;\n wallet?: EVMSmartWallet;\n error?: SmartWalletError;\n getOrCreateWallet: (\n config?: Pick<WalletConfig, \"signer\" | \"type\">\n ) => Promise<{ startedCreation: boolean; reason?: string }>;\n clearWallet: () => void;\n};\n\nexport const WalletContext = createContext<WalletContext>({\n status: \"not-loaded\",\n getOrCreateWallet: () => Promise.resolve({ startedCreation: false }),\n clearWallet: () => {},\n});\n\nexport type WalletConfig = WalletParams & { type: \"evm-smart-wallet\" };\n\nexport function CrossmintWalletProvider({\n children,\n defaultChain,\n showPasskeyHelpers = true, // enabled by default\n appearance,\n}: {\n children: ReactNode;\n defaultChain: EVMSmartWalletChain;\n showPasskeyHelpers?: boolean;\n appearance?: UIConfig;\n}) {\n const { crossmint } = useCrossmint(\"CrossmintWalletProvider must be used within CrossmintProvider\");\n const smartWalletSDK = useMemo(() => SmartWalletSDK.init({ clientApiKey: crossmint.apiKey }), [crossmint.apiKey]);\n\n const [walletState, setWalletState] = useState<ValidWalletState>({ status: \"not-loaded\" });\n const [passkeyPromptState, setPasskeyPromptState] = useState<PasskeyPromptState>({ open: false });\n\n const getOrCreateWallet = async (\n config: WalletConfig = { type: \"evm-smart-wallet\", signer: { type: \"PASSKEY\" } }\n ) => {\n if (walletState.status == \"in-progress\") {\n console.log(\"Wallet already loading\");\n return { startedCreation: false, reason: \"Wallet is already loading.\" };\n }\n\n if (crossmint.jwt == null) {\n return { startedCreation: false, reason: `Jwt not set in \"CrossmintProvider\".` };\n }\n\n try {\n setWalletState({ status: \"in-progress\" });\n const wallet = await smartWalletSDK.getOrCreateWallet(\n { jwt: crossmint.jwt as string },\n defaultChain,\n enhanceConfigWithPasskeyPrompts(config)\n );\n setWalletState({ status: \"loaded\", wallet });\n } catch (error: unknown) {\n console.error(\"There was an error creating a wallet \", error);\n setWalletState(deriveErrorState(error));\n }\n return { startedCreation: true };\n };\n\n const enhanceConfigWithPasskeyPrompts = (config: WalletConfig) => {\n if (showPasskeyHelpers && (config.signer as PasskeySigner).type === \"PASSKEY\") {\n return {\n ...config,\n signer: {\n ...config.signer,\n onPrePasskeyRegistration: createPasskeyPrompt(\"create-wallet\"),\n onPasskeyRegistrationError: createPasskeyPrompt(\"create-wallet-error\"),\n onFirstTimePasskeySigning: createPasskeyPrompt(\"transaction\"),\n onFirstTimePasskeySigningError: createPasskeyPrompt(\"transaction-error\"),\n },\n };\n }\n return config;\n };\n\n const createPasskeyPrompt = (type: ValidPasskeyPromptType) => () =>\n new Promise<void>((resolve) => {\n setPasskeyPromptState({\n type,\n open: true,\n primaryActionOnClick: () => {\n setPasskeyPromptState({ open: false });\n resolve();\n },\n secondaryActionOnClick: () => {\n setPasskeyPromptState({ open: false });\n resolve();\n },\n });\n });\n\n const clearWallet = () => {\n setWalletState({ status: \"not-loaded\" });\n };\n\n return (\n <WalletContext.Provider value={{ ...walletState, getOrCreateWallet, clearWallet }}>\n {children}\n {passkeyPromptState.open\n ? createPortal(<PasskeyPrompt state={passkeyPromptState} appearance={appearance} />, document.body)\n : null}\n </WalletContext.Provider>\n );\n}\n\nfunction deriveErrorState(error: unknown): { status: \"loading-error\"; error: SmartWalletError } {\n if (error instanceof SmartWalletError) {\n return { status: \"loading-error\", error };\n }\n\n const message = error instanceof Error ? error.message : String(error);\n const stack = error instanceof Error ? error.stack : undefined;\n return { status: \"loading-error\", error: new SmartWalletError(`Unknown Wallet Error: ${message}`, stack) };\n}\n","import { useContext } from \"react\";\n\nimport { WalletContext } from \"../providers/CrossmintWalletProvider\";\n\nexport function useWallet() {\n const walletContext = useContext(WalletContext);\n\n if (!walletContext) {\n throw new Error(\"useWallet must be used within CrossmintAuthProvider or CrossmintWalletProvider\");\n }\n\n return walletContext;\n}\n","import { useContext } from \"react\";\n\nimport { AuthContext, type AuthContextType } from \"../providers\";\n\nexport function useAuth(): AuthContextType {\n const context = useContext(AuthContext);\n if (context === undefined) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return context;\n}\n","import { type ReactNode, createContext, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { CrossmintAuth, getCookie } from \"@crossmint/client-sdk-auth\";\nimport type { EVMSmartWalletChain } from \"@crossmint/client-sdk-smart-wallet\";\nimport { type UIConfig, validateApiKeyAndGetCrossmintBaseUrl } from \"@crossmint/common-sdk-base\";\nimport { type AuthMaterialWithUser, SESSION_PREFIX, type SDKExternalUser } from \"@crossmint/common-sdk-auth\";\n\nimport AuthFormDialog from \"../components/auth/AuthFormDialog\";\nimport { useCrossmint, useWallet } from \"../hooks\";\nimport { CrossmintWalletProvider } from \"./CrossmintWalletProvider\";\nimport { AuthFormProvider } from \"./auth/AuthFormProvider\";\nimport { TwindProvider } from \"./TwindProvider\";\n\nexport type CrossmintAuthWalletConfig = {\n defaultChain: EVMSmartWalletChain;\n createOnLogin: \"all-users\" | \"off\";\n type: \"evm-smart-wallet\";\n showPasskeyHelpers?: boolean;\n};\n\nexport type LoginMethod = \"email\" | \"google\" | \"farcaster\" | \"web3\";\n\nexport type CrossmintAuthProviderProps = {\n embeddedWallets?: CrossmintAuthWalletConfig;\n appearance?: UIConfig;\n children: ReactNode;\n loginMethods?: LoginMethod[];\n refreshRoute?: string;\n logoutRoute?: string;\n};\n\ntype AuthStatus = \"logged-in\" | \"logged-out\" | \"in-progress\";\n\nexport interface AuthContextType {\n crossmintAuth?: CrossmintAuth;\n login: () => void;\n logout: () => void;\n jwt?: string;\n user?: SDKExternalUser;\n status: AuthStatus;\n getUser: () => void;\n}\n\nconst defaultContextValue: AuthContextType = {\n crossmintAuth: undefined,\n login: () => {},\n logout: () => {},\n jwt: undefined,\n user: undefined,\n status: \"logged-out\",\n getUser: () => {},\n};\n\nexport const AuthContext = createContext<AuthContextType>(defaultContextValue);\n\nconst defaultEmbeddedWallets: CrossmintAuthWalletConfig = {\n defaultChain: \"base-sepolia\",\n createOnLogin: \"off\",\n type: \"evm-smart-wallet\",\n};\n\nexport function CrossmintAuthProvider({\n embeddedWallets = defaultEmbeddedWallets,\n children,\n appearance,\n loginMethods = [\"email\", \"google\"],\n refreshRoute,\n logoutRoute,\n}: CrossmintAuthProviderProps) {\n const [user, setUser] = useState<SDKExternalUser | undefined>(undefined);\n const { crossmint, setJwt } = useCrossmint(\"CrossmintAuthProvider must be used within CrossmintProvider\");\n // Only create the CrossmintAuth instance once, even in StrictMode, as the constructor calls /refresh\n // It can only be called once to avoid race conditions\n const crossmintAuthRef = useRef<CrossmintAuth | null>(null);\n // biome-ignore lint/correctness/useExhaustiveDependencies: crossmint can't be a dependency because it updates with each jwt change\n const crossmintAuth = useMemo(() => {\n if (!crossmintAuthRef.current) {\n crossmintAuthRef.current = CrossmintAuth.from(crossmint, {\n callbacks: {\n onLogout: () => {\n setJwt(undefined);\n setUser(undefined);\n },\n onTokenRefresh: (authMaterial: AuthMaterialWithUser) => {\n setJwt(authMaterial.jwt);\n setUser(authMaterial.user);\n },\n },\n refreshRoute,\n logoutRoute,\n });\n }\n return crossmintAuthRef.current;\n }, []);\n\n const crossmintBaseUrl = validateApiKeyAndGetCrossmintBaseUrl(crossmint.apiKey);\n const [dialogOpen, setDialogOpen] = useState(false);\n\n useEffect(() => {\n if (crossmint.jwt == null) {\n const jwt = getCookie(SESSION_PREFIX);\n setJwt(jwt);\n }\n }, []);\n\n useEffect(() => {\n if (crossmint.jwt == null) {\n return;\n }\n\n setDialogOpen(false);\n }, [crossmint.jwt]);\n\n const login = () => {\n if (crossmint.jwt != null) {\n console.log(\"User already logged in\");\n return;\n }\n\n setDialogOpen(true);\n };\n\n const logout = () => {\n crossmintAuth.logout();\n };\n\n const getAuthStatus = (): AuthStatus => {\n if (crossmint.jwt != null) {\n return \"logged-in\";\n }\n if (dialogOpen) {\n return \"in-progress\";\n }\n return \"logged-out\";\n };\n\n const getUser = async () => {\n if (crossmint.jwt == null) {\n console.log(\"User not logged in\");\n return;\n }\n\n const user = await crossmintAuth.getUser();\n setUser(user);\n };\n\n return (\n <TwindProvider>\n <AuthContext.Provider\n value={{\n crossmintAuth,\n login,\n logout,\n jwt: crossmint.jwt,\n user,\n status: getAuthStatus(),\n getUser,\n }}\n >\n <CrossmintWalletProvider\n defaultChain={embeddedWallets.defaultChain}\n showPasskeyHelpers={embeddedWallets.showPasskeyHelpers}\n appearance={appearance}\n >\n <AuthFormProvider\n initialState={{\n appearance,\n setDialogOpen,\n loginMethods,\n embeddedWallets,\n baseUrl: crossmintBaseUrl,\n }}\n >\n <WalletManager embeddedWallets={embeddedWallets} accessToken={crossmint.jwt}>\n {children}\n </WalletManager>\n\n <AuthFormDialog open={dialogOpen} />\n </AuthFormProvider>\n </CrossmintWalletProvider>\n </AuthContext.Provider>\n </TwindProvider>\n );\n}\n\nfunction WalletManager({\n embeddedWallets,\n children,\n accessToken,\n}: {\n embeddedWallets: CrossmintAuthWalletConfig;\n children: ReactNode;\n accessToken: string | undefined;\n}) {\n const { getOrCreateWallet, clearWallet, status } = useWallet();\n\n useEffect(() => {\n if (embeddedWallets.createOnLogin === \"all-users\" && status === \"not-loaded\" && accessToken != null) {\n getOrCreateWallet({\n type: embeddedWallets.type,\n signer: { type: \"PASSKEY\" },\n });\n }\n\n if (status === \"loaded\" && accessToken == null) {\n clearWallet();\n }\n }, [accessToken, status]);\n\n return <>{children}</>;\n}\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { AuthForm } from \"./AuthForm\";\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from \"../common/Dialog\";\nimport { useEffect } from \"react\";\n\nexport default function AuthFormDialog({ open }: { open: boolean }) {\n const { appearance, setDialogOpen } = useAuthForm();\n\n useEffect(() => {\n document.body.style.overflow = open ? \"hidden\" : \"\";\n }, [open]);\n\n return (\n <Dialog modal={false} open={open} onOpenChange={setDialogOpen}>\n <DialogContent\n onInteractOutside={(e) => e.preventDefault()}\n onOpenAutoFocus={(e) => e.preventDefault()}\n closeButtonColor={appearance?.colors?.textPrimary}\n closeButtonRingColor={appearance?.colors?.accent}\n className=\"cm-responsive-border-radius-auth-dialog !p-0 !min-[480px]:p-0\"\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.background,\n }}\n >\n <VisuallyHidden asChild>\n <DialogTitle>Crossmint Auth</DialogTitle>\n </VisuallyHidden>\n <VisuallyHidden asChild>\n <DialogDescription>Sign in via Crossmint</DialogDescription>\n </VisuallyHidden>\n\n <AuthForm className=\"max-w-[448px]\" />\n </DialogContent>\n </Dialog>\n );\n}\n","import { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from \"react\";\nimport type { OAuthProvider } from \"@crossmint/common-sdk-auth\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport type { CrossmintAuthWalletConfig, LoginMethod } from \"../CrossmintAuthProvider\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\n\ntype AuthStep = \"initial\" | \"otp\" | \"qrCode\" | \"web3\" | \"web3/metamask\" | \"web3/walletconnect\";\n\ntype OAuthUrlMap = Record<OAuthProvider, string>;\nconst initialOAuthUrlMap: OAuthUrlMap = {\n google: \"\",\n // Farcaster is not included here as it uses a different authentication method\n};\ninterface AuthFormContextType {\n step: AuthStep;\n error: string | null;\n appearance?: UIConfig;\n loginMethods: LoginMethod[];\n oauthUrlMap: OAuthUrlMap;\n isLoadingOauthUrlMap: boolean;\n baseUrl: string;\n setStep: (step: AuthStep) => void;\n setError: (error: string | null) => void;\n setDialogOpen: (open: boolean) => void;\n}\n\ntype ContextInitialStateProps = {\n appearance?: UIConfig;\n loginMethods: LoginMethod[];\n baseUrl: string;\n setDialogOpen?: (open: boolean) => void;\n embeddedWallets: CrossmintAuthWalletConfig;\n};\n\nconst AuthFormContext = createContext<AuthFormContextType | undefined>(undefined);\n\nexport const useAuthForm = () => {\n const context = useContext(AuthFormContext);\n if (!context) {\n throw new Error(\"useAuthForm must be used within an AuthFormProvider\");\n }\n return context;\n};\n\nexport const AuthFormProvider = ({\n children,\n initialState,\n}: { children: ReactNode; initialState: ContextInitialStateProps }) => {\n const { crossmintAuth } = useCrossmintAuth();\n const [step, setStep] = useState<AuthStep>(\"initial\");\n const [error, setError] = useState<string | null>(null);\n const [oauthUrlMap, setOauthUrlMap] = useState<OAuthUrlMap>(initialOAuthUrlMap);\n const [isLoadingOauthUrlMap, setIsLoadingOauthUrlMap] = useState(true);\n\n const { loginMethods, baseUrl, setDialogOpen, appearance, embeddedWallets } = initialState;\n\n if (loginMethods.includes(\"web3\") && embeddedWallets?.createOnLogin === \"all-users\") {\n throw new Error(\"Creating wallets on login is not yet supported for web3 login method\");\n }\n\n const preFetchAndSetOauthUrl = useCallback(async () => {\n setIsLoadingOauthUrlMap(true);\n try {\n const oauthProviders = loginMethods.filter(\n (method): method is OAuthProvider => method in initialOAuthUrlMap\n );\n\n const oauthPromiseList = oauthProviders.map(async (provider) => {\n const url = await crossmintAuth?.getOAuthUrl(provider);\n return { [provider]: url };\n });\n\n const oauthUrlMap = Object.assign({}, ...(await Promise.all(oauthPromiseList)));\n setOauthUrlMap(oauthUrlMap);\n } catch (error) {\n console.error(\"Error fetching OAuth URLs:\", error);\n setError(\"Unable to load oauth providers. Please try again later.\");\n } finally {\n setIsLoadingOauthUrlMap(false);\n }\n }, [loginMethods, crossmintAuth]);\n\n useEffect(() => {\n preFetchAndSetOauthUrl();\n }, [preFetchAndSetOauthUrl]);\n\n const handleToggleDialog = (open: boolean) => {\n setDialogOpen?.(open);\n if (!open) {\n // Delay to allow the close transition to complete before resetting the step\n setTimeout(() => setStep(\"initial\"), 250);\n }\n };\n\n const value: AuthFormContextType = {\n step,\n error,\n baseUrl,\n appearance,\n loginMethods,\n oauthUrlMap,\n isLoadingOauthUrlMap,\n setDialogOpen: handleToggleDialog,\n setError,\n setStep,\n };\n\n return <AuthFormContext.Provider value={value}>{children}</AuthFormContext.Provider>;\n};\n","import { useContext } from \"react\";\nimport { AuthContext } from \"../providers/CrossmintAuthProvider\";\n\nexport function useCrossmintAuth() {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useCrossmintAuth must be used within a CrossmintAuthProvider\");\n }\n\n return context;\n}\n","import { lazy } from \"react\";\nimport Color from \"color\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { EmailAuthFlow } from \"./methods/email/EmailAuthFlow\";\nimport { Divider } from \"../common/Divider\";\nimport { GoogleSignIn } from \"./methods/google/GoogleSignIn\";\nimport { FarcasterSignIn } from \"./methods/farcaster/FarcasterSignIn\";\nimport { PoweredByCrossmint } from \"../common/PoweredByCrossmint\";\nimport { FarcasterProvider } from \"../../providers/auth/FarcasterProvider\";\nimport { classNames } from \"@/utils/classNames\";\nimport { AlertIcon } from \"@/icons/alert\";\n\nconst Web3AuthFlow = lazy(() =>\n // @ts-expect-error - Error because we dont use 'module' field in tsconfig, which is expected because we use tsup to compile\n import(\"./methods/web3/Web3AuthFlow\").then((mod) => ({\n default: mod.Web3AuthFlow,\n }))\n);\n\nexport function AuthForm({ className }: { className?: string }) {\n const { step, appearance, loginMethods, baseUrl, error } = useAuthForm();\n\n return (\n <div\n className={classNames(\n \"relative p-6 pb-4 !min-[480px]:p-10 !min-[480px]:pb-8 flex flex-col gap-[10px] antialiased animate-none\",\n className\n )}\n >\n {error ? (\n <div\n className=\"flex items-start justify-start w-full rounded-lg p-2 mt-4 bg-cm-danger-muted\"\n style={{\n backgroundColor: new Color(appearance?.colors?.danger ?? \"#f44336\").alpha(0.12).toString(),\n }}\n >\n <AlertIcon customColor={appearance?.colors?.danger ?? \"#f44336\"} />\n <p className=\"ml-2 text-sm\" style={{ color: appearance?.colors?.danger ?? \"#f44336\" }}>\n {error}\n </p>\n </div>\n ) : null}\n\n {step === \"initial\" ? (\n <div>\n <h1\n className=\"text-2xl font-bold text-cm-text-primary\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n Sign In\n </h1>\n <p\n className=\"text-base font-normal mb-3 text-cm-text-secondary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n Sign in using one of the options below\n </p>\n </div>\n ) : null}\n\n {loginMethods.includes(\"email\") ? (\n <>\n <EmailAuthFlow />\n {loginMethods.length > 1 ? <Divider appearance={appearance} text=\"OR\" /> : null}\n </>\n ) : null}\n\n {loginMethods.includes(\"google\") ? <GoogleSignIn /> : null}\n {loginMethods.includes(\"farcaster\") ? (\n <FarcasterProvider baseUrl={baseUrl}>\n <FarcasterSignIn />\n </FarcasterProvider>\n ) : null}\n {loginMethods.includes(\"web3\") ? <Web3AuthFlow /> : null}\n\n {step === \"initial\" || step === \"otp\" ? (\n <PoweredByCrossmint\n className=\"mt-4 justify-center\"\n color={appearance?.colors?.textSecondary ?? \"#A4AFB2\"}\n />\n ) : null}\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { EmailOTPInput } from \"./EmailOTPInput\";\nimport { EmailSignIn } from \"./EmailSignIn\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { OtpEmailPayload } from \"@/types/auth\";\n\nexport function EmailAuthFlow() {\n const { step } = useAuthForm();\n const [otpEmailData, setOtpEmailData] = useState<OtpEmailPayload | null>(null);\n\n if (step === \"otp\") {\n return <EmailOTPInput otpEmailData={otpEmailData} setOtpEmailData={setOtpEmailData} />;\n }\n if (step === \"initial\") {\n return <EmailSignIn setOtpEmailData={setOtpEmailData} />;\n }\n\n return null;\n}\n","import { useState } from \"react\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/common/InputOTP\";\nimport { EmailOtpIcon } from \"@/icons/emailOTP\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { OtpEmailPayload } from \"@/types/auth\";\nimport { AuthFormBackButton } from \"../../AuthFormBackButton\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\n\nexport const EMAIL_VERIFICATION_TOKEN_LENGTH = 6;\n\nexport function EmailOTPInput({\n otpEmailData,\n setOtpEmailData,\n}: { otpEmailData: OtpEmailPayload | null; setOtpEmailData: (data: OtpEmailPayload | null) => void }) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, setDialogOpen, setStep, setError } = useAuthForm();\n\n const [token, setToken] = useState(\"\");\n const [hasError, setHasError] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const handleOnSubmit = async () => {\n setLoading(true);\n try {\n const oneTimeSecret = await crossmintAuth?.confirmEmailOtp(\n otpEmailData?.email ?? \"\",\n otpEmailData?.emailId ?? \"\",\n token\n );\n\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret as string);\n setDialogOpen(false);\n setStep(\"initial\");\n } catch (error) {\n console.error(\"Error confirming email OTP\", error);\n setError(\"Invalid code. Please try again.\");\n setHasError(true);\n } finally {\n setLoading(false);\n }\n };\n\n const handleOnBack = () => {\n setStep(\"initial\");\n setOtpEmailData(null);\n };\n\n return (\n <div>\n <AuthFormBackButton\n onClick={handleOnBack}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n\n <div className=\"flex flex-col items-center justify-start w-full\">\n <div className=\"relative left-3\">\n <EmailOtpIcon\n customAccentColor={appearance?.colors?.accent}\n customButtonBackgroundColor={appearance?.colors?.buttonBackground}\n customBackgroundColor={appearance?.colors?.background}\n />\n </div>\n <p\n className=\"text-base font-normal mt-4 mb-1 text-center text-cm-text-primary\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n {\"Check your email\"}\n </p>\n <p\n className=\"text-center text-cm-text-secondary px-4\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n {\"A temporary login code has been sent to your email\"}\n </p>\n <div className=\"py-8\">\n <InputOTP\n maxLength={EMAIL_VERIFICATION_TOKEN_LENGTH}\n value={token}\n onChange={(val) => {\n setToken(val);\n setHasError(false);\n setError(null);\n }}\n onComplete={handleOnSubmit}\n disabled={loading}\n customStyles={{\n accent: appearance?.colors?.accent ?? \"#04AA6D\",\n danger: appearance?.colors?.danger ?? \"#f44336\",\n border: appearance?.colors?.border ?? \"#E5E7EB\",\n textPrimary: appearance?.colors?.textPrimary ?? \"#909ca3\",\n buttonBackground: appearance?.colors?.buttonBackground ?? \"#eff6ff\",\n inputBackground: appearance?.colors?.inputBackground ?? \"#FFFFFF\",\n borderRadius: appearance?.borderRadius,\n }}\n >\n <InputOTPGroup>\n <InputOTPSlot index={0} hasError={hasError} />\n <InputOTPSlot index={1} hasError={hasError} />\n <InputOTPSlot index={2} hasError={hasError} />\n <InputOTPSlot index={3} hasError={hasError} />\n <InputOTPSlot index={4} hasError={hasError} />\n <InputOTPSlot index={5} hasError={hasError} />\n </InputOTPGroup>\n </InputOTP>\n </div>\n\n <p className=\"text-sm leading-tight text-cm-text-secondary text-center\">\n <span style={{ color: appearance?.colors?.textSecondary }}>\n Can't find the email? Check spam folder or contact\n </span>{\" \"}\n <a\n key=\"resend-email-link\"\n className=\"transition-opacity duration-150 text-cm-link hover:opacity-70\"\n style={{ color: appearance?.colors?.textLink }}\n href=\"mailto:support@crossmint.io\"\n >\n support@crossmint.io\n </a>\n </p>\n </div>\n </div>\n );\n}\n","import type React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport { LeftArrowIcon } from \"@/icons/leftArrow\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\n\nexport const AuthFormBackButton = ({\n className,\n iconColor,\n ringColor,\n onClick,\n ...props\n}: React.HTMLAttributes<HTMLButtonElement> & { iconColor?: string; ringColor?: string }) => {\n const { setError } = useAuthForm();\n\n return (\n <button\n className={classNames(\n \"absolute left-4 top-4 min-[480px]:!left-6 min-[480px]:!top-6 rounded-full opacity-70 ring-offset-background text-cm-text-primary transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-cm-accent focus:ring-offset-2 disabled:pointer-events-none\",\n className\n )}\n onClick={(event) => {\n setError(null);\n onClick?.(event);\n }}\n {...props}\n >\n <LeftArrowIcon className=\"w-6 h-6\" style={{ color: iconColor }} />\n </button>\n );\n};\n","import { type FormEvent, useState } from \"react\";\nimport Color from \"color\";\n\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { classNames } from \"@/utils/classNames\";\nimport { AlertIcon } from \"../../../../icons/alert\";\nimport { isEmailValid } from \"@crossmint/common-sdk-auth\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { OtpEmailPayload } from \"@/types/auth\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\n\nexport function EmailSignIn({ setOtpEmailData }: { setOtpEmailData: (data: OtpEmailPayload) => void }) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, setStep, setError } = useAuthForm();\n\n const [emailInput, setEmailInput] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n\n async function handleOnSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n\n if (!isEmailValid(emailInput)) {\n setEmailError(\"Please enter a valid email address\");\n return;\n }\n\n setIsLoading(true);\n\n try {\n const trimmedEmailInput = emailInput.trim().toLowerCase();\n const emailSignInRes = (await crossmintAuth?.sendEmailOtp(trimmedEmailInput)) as { emailId: string };\n\n setOtpEmailData({ email: trimmedEmailInput, emailId: emailSignInRes.emailId });\n setStep(\"otp\");\n } catch (_e: unknown) {\n setIsLoading(false);\n setError(\"Failed to send email. Please try again or contact support.\");\n }\n }\n\n return (\n <>\n <div className=\"flex flex-col items-start justify-start w-full rounded-lg\">\n <div className=\"w-full\">\n <form\n role=\"form\"\n className=\"relative\"\n onSubmit={handleOnSubmit}\n noValidate // we want to handle validation ourselves\n >\n <label htmlFor=\"emailInput\" className=\"sr-only\">\n Email\n </label>\n <input\n className={classNames(\n \"flex-grow text-cm-text-secondary text-left pl-[16px] pr-[80px] h-[58px] w-full border border-cm-border rounded-xl bg-cm-background-primary placeholder:text-sm placeholder:text-opacity-60\",\n \"transition-none duration-200 ease-in-out\",\n \"focus:outline-none focus-ring-custom\", // Add focus ring\n emailError ? \"border-red-500\" : \"\"\n )}\n style={{\n color: appearance?.colors?.textPrimary,\n borderRadius: appearance?.borderRadius,\n borderColor: emailError ? appearance?.colors?.danger : appearance?.colors?.border,\n backgroundColor: appearance?.colors?.inputBackground,\n // @ts-expect-error Add custom ring color to tailwind\n \"--focus-ring-color\": new Color(appearance?.colors?.accent ?? \"#04AA6D\")\n .alpha(0.18)\n .toString(),\n }}\n type=\"email\"\n placeholder=\"Enter email\"\n value={emailInput}\n onChange={(e) => {\n setEmailInput(e.target.value);\n setEmailError(\"\");\n setError(null);\n }}\n readOnly={isLoading}\n aria-describedby=\"emailError\"\n />\n <div className=\"absolute inset-y-0 right-0 flex items-center pr-4\">\n {emailError && <AlertIcon customColor={appearance?.colors?.danger} />}\n {isLoading && (\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n )}\n {!emailError && !isLoading && (\n <button\n type=\"submit\"\n className={classNames(\"cursor-pointer font-medium text-cm-accent text-nowrap\")}\n style={{ color: appearance?.colors?.accent }}\n disabled={!emailInput}\n >\n Sign in\n </button>\n )}\n </div>\n </form>\n {emailError && <p className=\"text-xs text-red-500 mb-2 pt-2\">{emailError}</p>}\n </div>\n </div>\n </>\n );\n}\n","import { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\n\nexport function Divider({ appearance, text }: { appearance?: UIConfig; text?: string }) {\n const { step } = useAuthForm();\n\n if (step !== \"initial\") {\n return null;\n }\n\n return (\n <div className=\"flex items-center justify-center w-full pt-2 pb-3\">\n <span className=\"w-full h-[1px] bg-cm-border\" style={{ backgroundColor: appearance?.colors?.border }} />\n {text != null ? (\n <p\n className=\"flex-none px-2 text-sm text-cm-text-primary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n {text}\n </p>\n ) : null}\n <span className=\"w-full h-[1px] bg-cm-border\" style={{ backgroundColor: appearance?.colors?.border }} />\n </div>\n );\n}\n","import type { OAuthProvider } from \"@crossmint/common-sdk-auth\";\nimport { ChildWindow, PopupWindow } from \"@crossmint/client-sdk-window\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { z } from \"zod\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { useCrossmintAuth } from \"./useCrossmintAuth\";\n\nexport const useOAuthWindowListener = (provider: OAuthProvider) => {\n const { crossmintAuth } = useCrossmintAuth();\n const { oauthUrlMap, setError } = useAuthForm();\n const [isLoading, setIsLoading] = useState(false);\n const childRef = useRef<ChildWindow<IncomingEvents, OutgoingEvents> | null>(null);\n\n useEffect(() => {\n if (childRef.current == null) {\n childRef.current = new ChildWindow<IncomingEvents, OutgoingEvents>(window.opener || window.parent, \"*\", {\n incomingEvents,\n });\n }\n\n return () => {\n if (childRef.current != null) {\n childRef.current.off(\"authMaterialFromPopupCallback\");\n }\n };\n }, []);\n\n const createPopupAndSetupListeners = async () => {\n if (childRef.current == null) {\n throw new Error(\"Child window not initialized\");\n }\n setIsLoading(true);\n setError(null);\n const popup = await PopupWindow.init(oauthUrlMap[provider], {\n awaitToLoad: false,\n crossOrigin: true,\n width: 400,\n height: 700,\n });\n\n const handleAuthMaterial = async (data: { oneTimeSecret: string }) => {\n await crossmintAuth?.handleRefreshAuthMaterial(data.oneTimeSecret);\n childRef.current?.off(\"authMaterialFromPopupCallback\");\n popup.window.close();\n setIsLoading(false);\n };\n\n const handleError = (data: { error: string }) => {\n setError(data.error);\n childRef.current?.off(\"errorFromPopupCallback\");\n popup.window.close();\n setIsLoading(false);\n };\n\n childRef.current.on(\"authMaterialFromPopupCallback\", handleAuthMaterial);\n childRef.current.on(\"errorFromPopupCallback\", handleError);\n // Add a check for manual window closure\n // Ideally we should find a more explicit way of doing this, but I think this is fine for now.\n const checkWindowClosure = setInterval(() => {\n if (popup.window.closed) {\n clearInterval(checkWindowClosure);\n setIsLoading(false);\n childRef.current?.off(\"authMaterialFromPopupCallback\");\n }\n }, 2500); // Check every 2.5 seconds\n };\n\n return {\n createPopupAndSetupListeners,\n isLoading,\n };\n};\n\nconst incomingEvents = {\n authMaterialFromPopupCallback: z.object({ oneTimeSecret: z.string() }),\n errorFromPopupCallback: z.object({ error: z.string() }),\n};\n\ntype IncomingEvents = {\n authMaterialFromPopupCallback: typeof incomingEvents.authMaterialFromPopupCallback;\n errorFromPopupCallback: typeof incomingEvents.errorFromPopupCallback;\n};\n\ntype OutgoingEvents = Record<string, never>;\n","import type { ButtonHTMLAttributes } from \"react\";\nimport { GoogleIcon } from \"@/icons/google\";\nimport { useOAuthWindowListener } from \"@/hooks/useOAuthWindowListener\";\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { classNames } from \"@/utils/classNames\";\n\nexport function GoogleSignIn({ ...props }: ButtonHTMLAttributes<HTMLButtonElement>) {\n const { step, appearance, isLoadingOauthUrlMap } = useAuthForm();\n const { createPopupAndSetupListeners, isLoading: isLoadingOAuthWindow } = useOAuthWindowListener(\"google\");\n const isLoading = isLoadingOauthUrlMap || isLoadingOAuthWindow;\n\n if (step !== \"initial\") {\n return null;\n }\n\n return (\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\",\n isLoading ? \"cursor-not-allowed hover:bg-cm-muted-primary\" : \"\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={isLoading ? undefined : createPopupAndSetupListeners}\n {...props}\n >\n <>\n <GoogleIcon className=\"h-[25px] w-[25px] absolute left-[18px]\" />\n {isLoading ? (\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n ) : (\n <span\n className=\"font-medium\"\n style={{ margin: \"0px 32px\", color: appearance?.colors?.textPrimary }}\n >\n Sign in with Google\n </span>\n )}\n </>\n <span className=\"sr-only\">Sign in with Google</span>\n </button>\n );\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useSignIn, QRCode, type UseSignInData } from \"@farcaster/auth-kit\";\nimport { FarcasterIcon } from \"@/icons/farcaster\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { classNames } from \"@/utils/classNames\";\nimport { AuthFormBackButton } from \"../../AuthFormBackButton\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nexport function FarcasterSignIn() {\n const { step, appearance, setStep, setError } = useAuthForm();\n\n if (step === \"initial\") {\n return (\n <div>\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={() => {\n setStep(\"qrCode\");\n setError(null);\n }}\n >\n <FarcasterIcon className=\"h-[25px] w-[25px] absolute left-[18px]\" />\n <span\n className=\"font-medium\"\n style={{ margin: \"0px 32px\", color: appearance?.colors?.textPrimary }}\n >\n Sign in with Farcaster\n </span>\n <span className=\"sr-only\">Sign in with Farcaster</span>\n </button>\n </div>\n );\n }\n\n if (step === \"qrCode\") {\n return <FarcasterQRCode />;\n }\n\n return null;\n}\n\n// We want this to be a separate component so it can completely un-render when the user goes back to the initial screen\nfunction FarcasterQRCode() {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, setStep, setDialogOpen, setError } = useAuthForm();\n const [farcasterData, setFarcasterData] = useState<UseSignInData | null>(null);\n\n const farcasterProps = useMemo(\n () => ({\n onSuccess: (data: UseSignInData) => {\n // Step 3. set the farcaster data once the sign in is successful\n setFarcasterData(data);\n },\n }),\n []\n );\n\n const { signIn, url: qrCodeUrl, connect, signOut, isConnected } = useSignIn(farcasterProps);\n\n const handleFarcasterSignIn = async (data: UseSignInData) => {\n setError(null);\n try {\n const oneTimeSecret = await crossmintAuth?.signInWithFarcaster(data);\n // Step 5. fetch the auth material, close the dialog, and unrender any farcaster client stuff\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret as string);\n setDialogOpen(false);\n setStep(\"initial\");\n } catch (error) {\n console.error(\"Error during Farcaster sign-in:\", error);\n setError(\"Failed to sign in with Farcaster\");\n }\n };\n\n useEffect(() => {\n if (farcasterData != null) {\n // Step 4. call the handleFarcasterSignInfunction to handle the sign in\n handleFarcasterSignIn(farcasterData);\n }\n }, [farcasterData]);\n\n useEffect(() => {\n if (isConnected) {\n // Step 2. once connected, call the signIn function to start the sign in process\n signIn();\n }\n }, [isConnected]);\n\n useEffect(() => {\n // Step 1. call the connect function to initialize the connection\n connect();\n }, []);\n\n return (\n <div>\n <AuthFormBackButton\n onClick={() => {\n signOut();\n setStep(\"initial\");\n }}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n\n <div className=\"flex flex-col items-center gap-4\">\n <div className=\"text-center\">\n <h3\n className=\"text-lg font-semibold text-cm-text-primary mb-2\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n Sign in with Farcaster\n </h3>\n <p\n className=\"text-base font-normal text-cm-text-secondary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n Scan with your phone's camera to continue.\n </p>\n </div>\n <div\n className=\"bg-white aspect-square rounded-lg p-4\"\n style={{\n backgroundColor: appearance?.colors?.inputBackground,\n borderRadius: appearance?.borderRadius,\n }}\n >\n {qrCodeUrl != null ? (\n <QRCode uri={qrCodeUrl} size={280} />\n ) : (\n <div className=\"min-h-[246px] flex items-center justify-center\">\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n </div>\n )}\n </div>\n {qrCodeUrl ? (\n <>\n <p\n className=\"text-base text-center font-normal text-cm-text-secondary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n Alternatively, click on this link to open Warpcast.\n </p>\n <a\n href={qrCodeUrl}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n className=\"text-base font-normal text-cm-link\"\n style={{ color: appearance?.colors?.textLink }}\n >\n Open Warpcast\n </a>\n </>\n ) : null}\n </div>\n </div>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  LIB_VERSION
3
- } from "./chunk-YP4CPG34.js";
3
+ } from "./chunk-3LEJNXQ7.js";
4
4
 
5
5
  // src/utils/createCrossmintApiClient.ts
6
6
  import { CrossmintApiClient } from "@crossmint/common-sdk-base";
@@ -19,4 +19,4 @@ function createCrossmintApiClient(crossmint, apiKeyExpectations) {
19
19
  export {
20
20
  createCrossmintApiClient
21
21
  };
22
- //# sourceMappingURL=chunk-4BGD6LSC.js.map
22
+ //# sourceMappingURL=chunk-D2OKRE2Q.js.map
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkCPISBXIRcjs = require('./chunk-CPISBXIR.cjs');
3
+ var _chunkMPRVUXM6cjs = require('./chunk-MPRVUXM6.cjs');
4
4
 
5
5
  // src/components/CrossmintNFTDetail.tsx
6
6
  var _clientsdkbase = require('@crossmint/client-sdk-base');
7
7
  var _jsxruntime = require('react/jsx-runtime');
8
8
  function CrossmintNFTDetail(props) {
9
9
  _clientsdkbase.assertValidValidateNFTDetailProps.call(void 0, props);
10
- const src = _clientsdkbase.getNFTDetailSrc.call(void 0, props, _chunkCPISBXIRcjs.LIB_VERSION);
10
+ const src = _clientsdkbase.getNFTDetailSrc.call(void 0, props, _chunkMPRVUXM6cjs.LIB_VERSION);
11
11
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12
12
  "iframe",
13
13
  {
@@ -28,4 +28,4 @@ function CrossmintNFTDetail(props) {
28
28
 
29
29
 
30
30
  exports.CrossmintNFTDetail = CrossmintNFTDetail;
31
- //# sourceMappingURL=chunk-E7KTAG6X.cjs.map
31
+ //# sourceMappingURL=chunk-DKAVLLP6.cjs.map
@@ -0,0 +1,81 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkLGY5FQOZcjs = require('./chunk-LGY5FQOZ.cjs');
4
+
5
+
6
+ var _chunkUQAKJ4T7cjs = require('./chunk-UQAKJ4T7.cjs');
7
+
8
+
9
+
10
+ var _chunkC7VFXQ2Gcjs = require('./chunk-C7VFXQ2G.cjs');
11
+
12
+
13
+ var _chunk4DAZAO6Ycjs = require('./chunk-4DAZAO6Y.cjs');
14
+
15
+ // src/providers/auth/web3/DynamicWeb3WalletConnect.tsx
16
+ var _ethereum = require('@dynamic-labs/ethereum');
17
+ var _solana = require('@dynamic-labs/solana');
18
+ var _jsxruntime = require('react/jsx-runtime');
19
+ function DynamicWeb3WalletConnect({
20
+ children,
21
+ apiKeyEnvironment
22
+ }) {
23
+ var _a, _b;
24
+ const { crossmintAuth } = _chunkC7VFXQ2Gcjs.useCrossmintAuth.call(void 0, );
25
+ const { appearance } = _chunkC7VFXQ2Gcjs.useAuthForm.call(void 0, );
26
+ const cssOverrides = `.powered-by-dynamic { display: none !important; } .wallet-list__scroll-container { padding: 0px !important; } .wallet-list__search-container { padding-left: 0px !important; padding-right: 0px !important; } .dynamic-footer { display: none !important; } h1 { color: ${(_a = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _a.textPrimary} !important; } * { color: ${(_b = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _b.textSecondary} !important; }`;
27
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
28
+ _chunkUQAKJ4T7cjs.DynamicContextProviderWrapper,
29
+ {
30
+ apiKeyEnvironment,
31
+ settings: {
32
+ cssOverrides,
33
+ walletConnectors: [_ethereum.EthereumWalletConnectors, _solana.SolanaWalletConnectors],
34
+ events: {
35
+ onAuthFlowCancel() {
36
+ console.log("[CryptoWalletConnectionHandler] onAuthFlowCancel");
37
+ },
38
+ onAuthFlowClose() {
39
+ console.log("[CryptoWalletConnectionHandler] onAuthFlowClose");
40
+ },
41
+ onAuthFailure(data, reason) {
42
+ console.error("[CryptoWalletConnectionHandler] onAuthFailure", data, reason);
43
+ },
44
+ onAuthSuccess(data) {
45
+ console.log("[CryptoWalletConnectionHandler] onAuthSuccess", data);
46
+ }
47
+ },
48
+ handlers: {
49
+ handleConnectedWallet: (wallet) => _chunk4DAZAO6Ycjs.__async.call(void 0, this, null, function* () {
50
+ var _a2;
51
+ console.log("[CryptoWalletConnectionHandler] handleConnectedWallet", wallet);
52
+ const address = wallet.address;
53
+ if (!address) {
54
+ console.error("[CryptoWalletConnectionHandler] handleConnectedWallet: address is missing");
55
+ return false;
56
+ }
57
+ const chain = yield _chunkLGY5FQOZcjs.dynamicChainToCrossmintChain.call(void 0, wallet);
58
+ console.log({ chain });
59
+ try {
60
+ const res = yield crossmintAuth == null ? void 0 : crossmintAuth.signInWithSmartWallet(address);
61
+ const signature = yield (_a2 = wallet.connector) == null ? void 0 : _a2.signMessage(res.challenge);
62
+ const authResponse = yield crossmintAuth == null ? void 0 : crossmintAuth.authenticateSmartWallet(address, signature);
63
+ const oneTimeSecret = authResponse.oneTimeSecret;
64
+ yield crossmintAuth == null ? void 0 : crossmintAuth.handleRefreshAuthMaterial(oneTimeSecret);
65
+ } catch (error) {
66
+ console.error("[CryptoWalletConnectionHandler] Error authenticating wallet:", error);
67
+ return false;
68
+ }
69
+ return true;
70
+ })
71
+ }
72
+ },
73
+ children
74
+ }
75
+ );
76
+ }
77
+
78
+
79
+
80
+ exports.DynamicWeb3WalletConnect = DynamicWeb3WalletConnect;
81
+ //# sourceMappingURL=chunk-I2JDM7WL.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/auth/web3/DynamicWeb3WalletConnect.tsx"],"names":["_a"],"mappings":";;;;;;;;;;;;;;;AACA,SAAS,gCAAgC;AACzC,SAAS,8BAA8B;AAiB/B;AAVD,SAAS,yBAAyB;AAAA,EACrC;AAAA,EACA;AACJ,GAA8E;AAZ9E;AAaI,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,EAAE,WAAW,IAAI,YAAY;AAEnC,QAAM,eAAe,4QAA2Q,8CAAY,WAAZ,mBAAoB,WAAW,8BAA6B,8CAAY,WAAZ,mBAAoB,aAAa;AAE7X,SACI;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA,UAAU;AAAA,QACN;AAAA,QACA,kBAAkB,CAAC,0BAA0B,sBAAsB;AAAA,QACnE,QAAQ;AAAA,UACJ,mBAAmB;AACf,oBAAQ,IAAI,kDAAkD;AAAA,UAClE;AAAA,UACA,kBAAkB;AACd,oBAAQ,IAAI,iDAAiD;AAAA,UACjE;AAAA,UACA,cAAc,MAAM,QAAQ;AACxB,oBAAQ,MAAM,iDAAiD,MAAM,MAAM;AAAA,UAC/E;AAAA,UACA,cAAc,MAAM;AAChB,oBAAQ,IAAI,iDAAiD,IAAI;AAAA,UACrE;AAAA,QACJ;AAAA,QACA,UAAU;AAAA,UACN,uBAAuB,CAAO,WAAW;AAvC7D,gBAAAA;AAwCwB,oBAAQ,IAAI,yDAAyD,MAAM;AAE3E,kBAAM,UAAU,OAAO;AACvB,gBAAI,CAAC,SAAS;AACV,sBAAQ,MAAM,2EAA2E;AACzF,qBAAO;AAAA,YACX;AAEA,kBAAM,QAAQ,MAAM,6BAA6B,MAAM;AACvD,oBAAQ,IAAI,EAAE,MAAM,CAAC;AAErB,gBAAI;AACA,oBAAM,MAAM,MAAM,+CAAe,sBAAsB;AACvD,oBAAM,YAAa,OAAMA,MAAA,OAAO,cAAP,gBAAAA,IAAkB,YAAY,IAAI;AAC3D,oBAAM,eAAgB,MAAM,+CAAe,wBAAwB,SAAS;AAG5E,oBAAM,gBAAgB,aAAa;AACnC,oBAAM,+CAAe,0BAA0B;AAAA,YACnD,SAAS,OAAO;AACZ,sBAAQ,MAAM,gEAAgE,KAAK;AACnF,qBAAO;AAAA,YACX;AAEA,mBAAO;AAAA,UACX;AAAA,QACJ;AAAA,MACJ;AAAA,MAEC;AAAA;AAAA,EACL;AAER","sourcesContent":["import type React from \"react\";\nimport { EthereumWalletConnectors } from \"@dynamic-labs/ethereum\";\nimport { SolanaWalletConnectors } from \"@dynamic-labs/solana\";\nimport type { APIKeyEnvironmentPrefix } from \"@crossmint/common-sdk-base\";\nimport DynamicContextProviderWrapper from \"@/components/dynamic-xyz/DynamicContextProviderWrapper\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nimport { useAuthForm } from \"../AuthFormProvider\";\nimport { dynamicChainToCrossmintChain } from \"@/utils/dynamic/dynamicChainToCrossmintChain\";\n\nexport function DynamicWeb3WalletConnect({\n children,\n apiKeyEnvironment,\n}: { children: React.ReactNode; apiKeyEnvironment: APIKeyEnvironmentPrefix }) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance } = useAuthForm();\n\n const cssOverrides = `.powered-by-dynamic { display: none !important; } .wallet-list__scroll-container { padding: 0px !important; } .wallet-list__search-container { padding-left: 0px !important; padding-right: 0px !important; } .dynamic-footer { display: none !important; } h1 { color: ${appearance?.colors?.textPrimary} !important; } * { color: ${appearance?.colors?.textSecondary} !important; }`;\n\n return (\n <DynamicContextProviderWrapper\n apiKeyEnvironment={apiKeyEnvironment}\n settings={{\n cssOverrides,\n walletConnectors: [EthereumWalletConnectors, SolanaWalletConnectors],\n events: {\n onAuthFlowCancel() {\n console.log(\"[CryptoWalletConnectionHandler] onAuthFlowCancel\");\n },\n onAuthFlowClose() {\n console.log(\"[CryptoWalletConnectionHandler] onAuthFlowClose\");\n },\n onAuthFailure(data, reason) {\n console.error(\"[CryptoWalletConnectionHandler] onAuthFailure\", data, reason);\n },\n onAuthSuccess(data) {\n console.log(\"[CryptoWalletConnectionHandler] onAuthSuccess\", data);\n },\n },\n handlers: {\n handleConnectedWallet: async (wallet) => {\n console.log(\"[CryptoWalletConnectionHandler] handleConnectedWallet\", wallet);\n\n const address = wallet.address;\n if (!address) {\n console.error(\"[CryptoWalletConnectionHandler] handleConnectedWallet: address is missing\");\n return false;\n }\n\n const chain = await dynamicChainToCrossmintChain(wallet);\n console.log({ chain });\n\n try {\n const res = await crossmintAuth?.signInWithSmartWallet(address);\n const signature = (await wallet.connector?.signMessage(res.challenge)) as `0x${string}`;\n const authResponse = (await crossmintAuth?.authenticateSmartWallet(address, signature)) as {\n oneTimeSecret: string;\n };\n const oneTimeSecret = authResponse.oneTimeSecret;\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret);\n } catch (error) {\n console.error(\"[CryptoWalletConnectionHandler] Error authenticating wallet:\", error);\n return false;\n }\n\n return true;\n },\n },\n }}\n >\n {children}\n </DynamicContextProviderWrapper>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AuthForm
3
- } from "./chunk-T5WAVOPI.js";
3
+ } from "./chunk-QTTQHZ7M.js";
4
4
 
5
5
  // src/components/auth/EmbeddedAuthForm.tsx
6
6
  import { jsx } from "react/jsx-runtime";
@@ -11,4 +11,4 @@ function EmbeddedAuthForm() {
11
11
  export {
12
12
  EmbeddedAuthForm
13
13
  };
14
- //# sourceMappingURL=chunk-NKOG6FTK.js.map
14
+ //# sourceMappingURL=chunk-I7CLJXJR.js.map
@@ -0,0 +1,81 @@
1
+ import {
2
+ dynamicChainToCrossmintChain
3
+ } from "./chunk-6CPZDD6Y.js";
4
+ import {
5
+ DynamicContextProviderWrapper
6
+ } from "./chunk-RZT2J42J.js";
7
+ import {
8
+ useAuthForm,
9
+ useCrossmintAuth
10
+ } from "./chunk-QTTQHZ7M.js";
11
+ import {
12
+ __async
13
+ } from "./chunk-CRTRMMJ7.js";
14
+
15
+ // src/providers/auth/web3/DynamicWeb3WalletConnect.tsx
16
+ import { EthereumWalletConnectors } from "@dynamic-labs/ethereum";
17
+ import { SolanaWalletConnectors } from "@dynamic-labs/solana";
18
+ import { jsx } from "react/jsx-runtime";
19
+ function DynamicWeb3WalletConnect({
20
+ children,
21
+ apiKeyEnvironment
22
+ }) {
23
+ var _a, _b;
24
+ const { crossmintAuth } = useCrossmintAuth();
25
+ const { appearance } = useAuthForm();
26
+ const cssOverrides = `.powered-by-dynamic { display: none !important; } .wallet-list__scroll-container { padding: 0px !important; } .wallet-list__search-container { padding-left: 0px !important; padding-right: 0px !important; } .dynamic-footer { display: none !important; } h1 { color: ${(_a = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _a.textPrimary} !important; } * { color: ${(_b = appearance == null ? void 0 : appearance.colors) == null ? void 0 : _b.textSecondary} !important; }`;
27
+ return /* @__PURE__ */ jsx(
28
+ DynamicContextProviderWrapper,
29
+ {
30
+ apiKeyEnvironment,
31
+ settings: {
32
+ cssOverrides,
33
+ walletConnectors: [EthereumWalletConnectors, SolanaWalletConnectors],
34
+ events: {
35
+ onAuthFlowCancel() {
36
+ console.log("[CryptoWalletConnectionHandler] onAuthFlowCancel");
37
+ },
38
+ onAuthFlowClose() {
39
+ console.log("[CryptoWalletConnectionHandler] onAuthFlowClose");
40
+ },
41
+ onAuthFailure(data, reason) {
42
+ console.error("[CryptoWalletConnectionHandler] onAuthFailure", data, reason);
43
+ },
44
+ onAuthSuccess(data) {
45
+ console.log("[CryptoWalletConnectionHandler] onAuthSuccess", data);
46
+ }
47
+ },
48
+ handlers: {
49
+ handleConnectedWallet: (wallet) => __async(this, null, function* () {
50
+ var _a2;
51
+ console.log("[CryptoWalletConnectionHandler] handleConnectedWallet", wallet);
52
+ const address = wallet.address;
53
+ if (!address) {
54
+ console.error("[CryptoWalletConnectionHandler] handleConnectedWallet: address is missing");
55
+ return false;
56
+ }
57
+ const chain = yield dynamicChainToCrossmintChain(wallet);
58
+ console.log({ chain });
59
+ try {
60
+ const res = yield crossmintAuth == null ? void 0 : crossmintAuth.signInWithSmartWallet(address);
61
+ const signature = yield (_a2 = wallet.connector) == null ? void 0 : _a2.signMessage(res.challenge);
62
+ const authResponse = yield crossmintAuth == null ? void 0 : crossmintAuth.authenticateSmartWallet(address, signature);
63
+ const oneTimeSecret = authResponse.oneTimeSecret;
64
+ yield crossmintAuth == null ? void 0 : crossmintAuth.handleRefreshAuthMaterial(oneTimeSecret);
65
+ } catch (error) {
66
+ console.error("[CryptoWalletConnectionHandler] Error authenticating wallet:", error);
67
+ return false;
68
+ }
69
+ return true;
70
+ })
71
+ }
72
+ },
73
+ children
74
+ }
75
+ );
76
+ }
77
+
78
+ export {
79
+ DynamicWeb3WalletConnect
80
+ };
81
+ //# sourceMappingURL=chunk-KB5JOTFH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/auth/web3/DynamicWeb3WalletConnect.tsx"],"sourcesContent":["import type React from \"react\";\nimport { EthereumWalletConnectors } from \"@dynamic-labs/ethereum\";\nimport { SolanaWalletConnectors } from \"@dynamic-labs/solana\";\nimport type { APIKeyEnvironmentPrefix } from \"@crossmint/common-sdk-base\";\nimport DynamicContextProviderWrapper from \"@/components/dynamic-xyz/DynamicContextProviderWrapper\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nimport { useAuthForm } from \"../AuthFormProvider\";\nimport { dynamicChainToCrossmintChain } from \"@/utils/dynamic/dynamicChainToCrossmintChain\";\n\nexport function DynamicWeb3WalletConnect({\n children,\n apiKeyEnvironment,\n}: { children: React.ReactNode; apiKeyEnvironment: APIKeyEnvironmentPrefix }) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance } = useAuthForm();\n\n const cssOverrides = `.powered-by-dynamic { display: none !important; } .wallet-list__scroll-container { padding: 0px !important; } .wallet-list__search-container { padding-left: 0px !important; padding-right: 0px !important; } .dynamic-footer { display: none !important; } h1 { color: ${appearance?.colors?.textPrimary} !important; } * { color: ${appearance?.colors?.textSecondary} !important; }`;\n\n return (\n <DynamicContextProviderWrapper\n apiKeyEnvironment={apiKeyEnvironment}\n settings={{\n cssOverrides,\n walletConnectors: [EthereumWalletConnectors, SolanaWalletConnectors],\n events: {\n onAuthFlowCancel() {\n console.log(\"[CryptoWalletConnectionHandler] onAuthFlowCancel\");\n },\n onAuthFlowClose() {\n console.log(\"[CryptoWalletConnectionHandler] onAuthFlowClose\");\n },\n onAuthFailure(data, reason) {\n console.error(\"[CryptoWalletConnectionHandler] onAuthFailure\", data, reason);\n },\n onAuthSuccess(data) {\n console.log(\"[CryptoWalletConnectionHandler] onAuthSuccess\", data);\n },\n },\n handlers: {\n handleConnectedWallet: async (wallet) => {\n console.log(\"[CryptoWalletConnectionHandler] handleConnectedWallet\", wallet);\n\n const address = wallet.address;\n if (!address) {\n console.error(\"[CryptoWalletConnectionHandler] handleConnectedWallet: address is missing\");\n return false;\n }\n\n const chain = await dynamicChainToCrossmintChain(wallet);\n console.log({ chain });\n\n try {\n const res = await crossmintAuth?.signInWithSmartWallet(address);\n const signature = (await wallet.connector?.signMessage(res.challenge)) as `0x${string}`;\n const authResponse = (await crossmintAuth?.authenticateSmartWallet(address, signature)) as {\n oneTimeSecret: string;\n };\n const oneTimeSecret = authResponse.oneTimeSecret;\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret);\n } catch (error) {\n console.error(\"[CryptoWalletConnectionHandler] Error authenticating wallet:\", error);\n return false;\n }\n\n return true;\n },\n },\n }}\n >\n {children}\n </DynamicContextProviderWrapper>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AACA,SAAS,gCAAgC;AACzC,SAAS,8BAA8B;AAiB/B;AAVD,SAAS,yBAAyB;AAAA,EACrC;AAAA,EACA;AACJ,GAA8E;AAZ9E;AAaI,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,EAAE,WAAW,IAAI,YAAY;AAEnC,QAAM,eAAe,4QAA2Q,8CAAY,WAAZ,mBAAoB,WAAW,8BAA6B,8CAAY,WAAZ,mBAAoB,aAAa;AAE7X,SACI;AAAA,IAAC;AAAA;AAAA,MACG;AAAA,MACA,UAAU;AAAA,QACN;AAAA,QACA,kBAAkB,CAAC,0BAA0B,sBAAsB;AAAA,QACnE,QAAQ;AAAA,UACJ,mBAAmB;AACf,oBAAQ,IAAI,kDAAkD;AAAA,UAClE;AAAA,UACA,kBAAkB;AACd,oBAAQ,IAAI,iDAAiD;AAAA,UACjE;AAAA,UACA,cAAc,MAAM,QAAQ;AACxB,oBAAQ,MAAM,iDAAiD,MAAM,MAAM;AAAA,UAC/E;AAAA,UACA,cAAc,MAAM;AAChB,oBAAQ,IAAI,iDAAiD,IAAI;AAAA,UACrE;AAAA,QACJ;AAAA,QACA,UAAU;AAAA,UACN,uBAAuB,CAAO,WAAW;AAvC7D,gBAAAA;AAwCwB,oBAAQ,IAAI,yDAAyD,MAAM;AAE3E,kBAAM,UAAU,OAAO;AACvB,gBAAI,CAAC,SAAS;AACV,sBAAQ,MAAM,2EAA2E;AACzF,qBAAO;AAAA,YACX;AAEA,kBAAM,QAAQ,MAAM,6BAA6B,MAAM;AACvD,oBAAQ,IAAI,EAAE,MAAM,CAAC;AAErB,gBAAI;AACA,oBAAM,MAAM,MAAM,+CAAe,sBAAsB;AACvD,oBAAM,YAAa,OAAMA,MAAA,OAAO,cAAP,gBAAAA,IAAkB,YAAY,IAAI;AAC3D,oBAAM,eAAgB,MAAM,+CAAe,wBAAwB,SAAS;AAG5E,oBAAM,gBAAgB,aAAa;AACnC,oBAAM,+CAAe,0BAA0B;AAAA,YACnD,SAAS,OAAO;AACZ,sBAAQ,MAAM,gEAAgE,KAAK;AACnF,qBAAO;AAAA,YACX;AAEA,mBAAO;AAAA,UACX;AAAA,QACJ;AAAA,MACJ;AAAA,MAEC;AAAA;AAAA,EACL;AAER;","names":["_a"]}
@@ -0,0 +1,29 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk4DAZAO6Ycjs = require('./chunk-4DAZAO6Y.cjs');
4
+
5
+ // src/utils/dynamic/dynamicChainToCrossmintChain.ts
6
+ var _commonsdkbase = require('@crossmint/common-sdk-base');
7
+ function dynamicChainToCrossmintChain(wallet) {
8
+ return _chunk4DAZAO6Ycjs.__async.call(void 0, this, null, function* () {
9
+ var _a;
10
+ const chain = wallet.chain;
11
+ if (chain === "SOL") {
12
+ return "solana";
13
+ }
14
+ const chainId = yield (_a = wallet.connector) == null ? void 0 : _a.getNetwork();
15
+ if (typeof chainId !== "number") {
16
+ throw new Error("chainId is not a number");
17
+ }
18
+ const chainFromChainId = _commonsdkbase.chainIdToBlockchain.call(void 0, chainId);
19
+ if (!chainFromChainId) {
20
+ throw new Error(`ChainId ${chainId} is not supported`);
21
+ }
22
+ return chainFromChainId;
23
+ });
24
+ }
25
+
26
+
27
+
28
+ exports.dynamicChainToCrossmintChain = dynamicChainToCrossmintChain;
29
+ //# sourceMappingURL=chunk-LGY5FQOZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/dynamic/dynamicChainToCrossmintChain.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,2BAA4D;AAGrE,SAAsB,6BAClB,QACmC;AAAA;AALvC;AAMI,UAAM,QAAQ,OAAO;AACrB,QAAI,UAAU,OAAO;AACjB,aAAO;AAAA,IACX;AACA,UAAM,UAAU,OAAM,YAAO,cAAP,mBAAkB;AACxC,QAAI,OAAO,YAAY,UAAU;AAC7B,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC7C;AACA,UAAM,mBAAmB,oBAAoB,OAAO;AACpD,QAAI,CAAC,kBAAkB;AACnB,YAAM,IAAI,MAAM,WAAW,OAAO,mBAAmB;AAAA,IACzD;AACA,WAAO;AAAA,EACX;AAAA","sourcesContent":["import { chainIdToBlockchain, type BlockchainIncludingTestnet } from \"@crossmint/common-sdk-base\";\nimport type { HandleConnectedWallet } from \"@dynamic-labs/sdk-react-core\";\n\nexport async function dynamicChainToCrossmintChain(\n wallet: Parameters<HandleConnectedWallet>[0]\n): Promise<BlockchainIncludingTestnet> {\n const chain = wallet.chain;\n if (chain === \"SOL\") {\n return \"solana\";\n }\n const chainId = await wallet.connector?.getNetwork();\n if (typeof chainId !== \"number\") {\n throw new Error(\"chainId is not a number\");\n }\n const chainFromChainId = chainIdToBlockchain(chainId);\n if (!chainFromChainId) {\n throw new Error(`ChainId ${chainId} is not supported`);\n }\n return chainFromChainId as BlockchainIncludingTestnet;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});// package.json
2
- var version = "1.10.5";
2
+ var version = "1.10.6";
3
3
 
4
4
  // src/consts/version.ts
5
5
  var LIB_VERSION = version;
@@ -7,4 +7,4 @@ var LIB_VERSION = version;
7
7
 
8
8
 
9
9
  exports.LIB_VERSION = LIB_VERSION;
10
- //# sourceMappingURL=chunk-CPISBXIR.cjs.map
10
+ //# sourceMappingURL=chunk-MPRVUXM6.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json","../src/consts/version.ts"],"names":[],"mappings":";AAEI,cAAW;;;ACAR,IAAM,cAAc","sourcesContent":["{\n \"name\": \"@crossmint/client-sdk-react-ui\",\n \"version\": \"1.10.5\",\n \"repository\": \"https://github.com/Crossmint/crossmint-sdk\",\n \"license\": \"Apache-2.0\",\n \"author\": \"Paella Labs Inc\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"exports\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\"dist\", \"src\", \"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 \"test:vitest\": \"vitest run\"\n },\n \"dependencies\": {\n \"@crossmint/client-sdk-auth\": \"workspace:*\",\n \"@crossmint/client-sdk-base\": \"workspace:*\",\n \"@crossmint/client-sdk-smart-wallet\": \"workspace:*\",\n \"@crossmint/client-sdk-window\": \"workspace:*\",\n \"@crossmint/common-sdk-auth\": \"workspace:*\",\n \"@crossmint/common-sdk-base\": \"workspace:*\",\n \"@dynamic-labs/ethereum\": \"2.6.3\",\n \"@dynamic-labs/sdk-react-core\": \"2.6.3\",\n \"@dynamic-labs/solana\": \"2.6.3\",\n \"@ethersproject/transactions\": \"5.7.0\",\n \"@farcaster/auth-kit\": \"0.6.0\",\n \"@headlessui/react\": \"2.1.5\",\n \"@radix-ui/react-dialog\": \"1.1.2\",\n \"@radix-ui/react-visually-hidden\": \"1.1.0\",\n \"@solana/web3.js\": \"1.95.1\",\n \"@tanstack/react-query\": \"5.51.18\",\n \"@twind/core\": \"1.1.3\",\n \"@twind/preset-tailwind\": \"1.1.4\",\n \"@wagmi/connectors\": \"5.3.3\",\n \"bs58\": \"5.0.0\",\n \"clsx\": \"2.1.1\",\n \"color\": \"4.2.3\",\n \"input-otp\": \"1.2.4\",\n \"lodash.isequal\": \"4.5.0\",\n \"react-jss\": \"10.10.0\",\n \"tailwind-merge\": \"2.4.0\",\n \"tailwindcss\": \"3.4.10\",\n \"viem\": \"2.17.5\",\n \"wagmi\": \"2.12.25\",\n \"zod\": \"3.22.4\"\n },\n \"devDependencies\": {\n \"@testing-library/react\": \"^16.0.1\",\n \"@types/color\": \"4.2.0\",\n \"@types/lodash.isequal\": \"4.5.6\",\n \"@types/react\": \"^18.3.0\",\n \"@types/react-dom\": \"^18.3.0\",\n \"react\": \"^18.3.0\",\n \"react-dom\": \"^18.3.0\"\n },\n \"peerDependencies\": {\n \"react\": \">=17.0.2\",\n \"react-dom\": \">=17.0.2\"\n }\n}\n","import { version } from \"../../package.json\";\n\nexport const LIB_VERSION = version;\n"]}
1
+ {"version":3,"sources":["../package.json","../src/consts/version.ts"],"names":[],"mappings":";AAEI,cAAW;;;ACAR,IAAM,cAAc","sourcesContent":["{\n \"name\": \"@crossmint/client-sdk-react-ui\",\n \"version\": \"1.10.6\",\n \"repository\": \"https://github.com/Crossmint/crossmint-sdk\",\n \"license\": \"Apache-2.0\",\n \"author\": \"Paella Labs Inc\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"exports\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\"dist\", \"src\", \"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 \"test:vitest\": \"vitest run\"\n },\n \"dependencies\": {\n \"@crossmint/client-sdk-auth\": \"workspace:*\",\n \"@crossmint/client-sdk-base\": \"workspace:*\",\n \"@crossmint/client-sdk-smart-wallet\": \"workspace:*\",\n \"@crossmint/client-sdk-window\": \"workspace:*\",\n \"@crossmint/common-sdk-auth\": \"workspace:*\",\n \"@crossmint/common-sdk-base\": \"workspace:*\",\n \"@dynamic-labs/ethereum\": \"2.6.3\",\n \"@dynamic-labs/sdk-react-core\": \"2.6.3\",\n \"@dynamic-labs/solana\": \"2.6.3\",\n \"@ethersproject/transactions\": \"5.7.0\",\n \"@farcaster/auth-kit\": \"0.6.0\",\n \"@headlessui/react\": \"2.1.5\",\n \"@radix-ui/react-dialog\": \"1.1.2\",\n \"@radix-ui/react-visually-hidden\": \"1.1.0\",\n \"@solana/web3.js\": \"1.95.1\",\n \"@twind/core\": \"1.1.3\",\n \"@twind/preset-tailwind\": \"1.1.4\",\n \"bs58\": \"5.0.0\",\n \"clsx\": \"2.1.1\",\n \"color\": \"4.2.3\",\n \"input-otp\": \"1.2.4\",\n \"lodash.isequal\": \"4.5.0\",\n \"react-jss\": \"10.10.0\",\n \"tailwind-merge\": \"2.4.0\",\n \"tailwindcss\": \"3.4.10\",\n \"viem\": \"2.17.5\",\n \"zod\": \"3.22.4\"\n },\n \"devDependencies\": {\n \"@testing-library/react\": \"^16.0.1\",\n \"@types/color\": \"4.2.0\",\n \"@types/lodash.isequal\": \"4.5.6\",\n \"@types/react\": \"^18.3.0\",\n \"@types/react-dom\": \"^18.3.0\",\n \"react\": \"^18.3.0\",\n \"react-dom\": \"^18.3.0\"\n },\n \"peerDependencies\": {\n \"react\": \">=17.0.2\",\n \"react-dom\": \">=17.0.2\"\n }\n}\n","import { version } from \"../../package.json\";\n\nexport const LIB_VERSION = version;\n"]}
@@ -1,14 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkEBMORHG3cjs = require('./chunk-EBMORHG3.cjs');
3
+ var _chunkC7VFXQ2Gcjs = require('./chunk-C7VFXQ2G.cjs');
4
4
 
5
5
  // src/components/auth/EmbeddedAuthForm.tsx
6
6
  var _jsxruntime = require('react/jsx-runtime');
7
7
  function EmbeddedAuthForm() {
8
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEBMORHG3cjs.AuthForm, { className: "w-full" });
8
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkC7VFXQ2Gcjs.AuthForm, { className: "w-full" });
9
9
  }
10
10
 
11
11
 
12
12
 
13
13
  exports.EmbeddedAuthForm = EmbeddedAuthForm;
14
- //# sourceMappingURL=chunk-G526QBKQ.cjs.map
14
+ //# sourceMappingURL=chunk-N4SZG3S7.cjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  LIB_VERSION
3
- } from "./chunk-YP4CPG34.js";
3
+ } from "./chunk-3LEJNXQ7.js";
4
4
 
5
5
  // src/components/CrossmintNFTDetail.tsx
6
6
  import { assertValidValidateNFTDetailProps, getNFTDetailSrc } from "@crossmint/client-sdk-base";
@@ -28,4 +28,4 @@ function CrossmintNFTDetail(props) {
28
28
  export {
29
29
  CrossmintNFTDetail
30
30
  };
31
- //# sourceMappingURL=chunk-MBJBFR2H.js.map
31
+ //# sourceMappingURL=chunk-PEKX75WN.js.map