@daimo/pay 1.19.2 → 1.19.4
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.
- package/build/connectkit/package.json.js +117 -0
- package/build/connectkit/package.json.js.map +1 -0
- package/build/connectkit/src/assets/MobileWithLogos.js +329 -0
- package/build/connectkit/src/assets/MobileWithLogos.js.map +1 -0
- package/build/connectkit/src/assets/ScanIconWithLogos.js +243 -0
- package/build/connectkit/src/assets/ScanIconWithLogos.js.map +1 -0
- package/build/connectkit/src/assets/browsers.js +969 -0
- package/build/connectkit/src/assets/browsers.js.map +1 -0
- package/build/connectkit/src/assets/chains.js +648 -0
- package/build/connectkit/src/assets/chains.js.map +1 -0
- package/build/connectkit/src/assets/coins.js +43 -0
- package/build/connectkit/src/assets/coins.js.map +1 -0
- package/build/connectkit/src/assets/icons.js +273 -0
- package/build/connectkit/src/assets/icons.js.map +1 -0
- package/build/connectkit/src/assets/logos.js +1620 -0
- package/build/connectkit/src/assets/logos.js.map +1 -0
- package/build/connectkit/src/assets/wave.js +46 -0
- package/build/connectkit/src/assets/wave.js.map +1 -0
- package/build/connectkit/src/components/Common/Alert/index.js +13 -0
- package/build/connectkit/src/components/Common/Alert/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Alert/styles.js +55 -0
- package/build/connectkit/src/components/Common/Alert/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/AmountInput/AmountInputField.js +71 -0
- package/build/connectkit/src/components/Common/AmountInput/AmountInputField.js.map +1 -0
- package/build/connectkit/src/components/Common/AmountInput/index.js +159 -0
- package/build/connectkit/src/components/Common/AmountInput/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Avatar/index.js +78 -0
- package/build/connectkit/src/components/Common/Avatar/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Avatar/styles.js +54 -0
- package/build/connectkit/src/components/Common/Avatar/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/BrowserIcon/index.js +29 -0
- package/build/connectkit/src/components/Common/BrowserIcon/index.js.map +1 -0
- package/build/connectkit/src/components/Common/BrowserIcon/styles.js +20 -0
- package/build/connectkit/src/components/Common/BrowserIcon/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/Button/index.js +144 -0
- package/build/connectkit/src/components/Common/Button/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Button/styles.js +287 -0
- package/build/connectkit/src/components/Common/Button/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/Chain/index.js +141 -0
- package/build/connectkit/src/components/Common/Chain/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Chain/styles.js +90 -0
- package/build/connectkit/src/components/Common/Chain/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/ChainSelectList/index.js +250 -0
- package/build/connectkit/src/components/Common/ChainSelectList/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ChainSelectList/styles.js +226 -0
- package/build/connectkit/src/components/Common/ChainSelectList/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/CircleTimer.js +92 -0
- package/build/connectkit/src/components/Common/CircleTimer.js.map +1 -0
- package/build/connectkit/src/components/Common/ConnectorList/index.js +120 -0
- package/build/connectkit/src/components/Common/ConnectorList/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ConnectorList/styles.js +344 -0
- package/build/connectkit/src/components/Common/ConnectorList/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +78 -0
- package/build/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -0
- package/build/connectkit/src/components/Common/CopyToClipboard/index.js +33 -0
- package/build/connectkit/src/components/Common/CopyToClipboard/index.js.map +1 -0
- package/build/connectkit/src/components/Common/CustomQRCode/QRCode.js +128 -0
- package/build/connectkit/src/components/Common/CustomQRCode/QRCode.js.map +1 -0
- package/build/connectkit/src/components/Common/CustomQRCode/index.js +71 -0
- package/build/connectkit/src/components/Common/CustomQRCode/index.js.map +1 -0
- package/build/connectkit/src/components/Common/CustomQRCode/styles.js +139 -0
- package/build/connectkit/src/components/Common/CustomQRCode/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/FitText/index.js +34 -0
- package/build/connectkit/src/components/Common/FitText/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Modal/index.js +523 -0
- package/build/connectkit/src/components/Common/Modal/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Modal/styles.js +665 -0
- package/build/connectkit/src/components/Common/Modal/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/OptionsList/index.js +145 -0
- package/build/connectkit/src/components/Common/OptionsList/index.js.map +1 -0
- package/build/connectkit/src/components/Common/OptionsList/styles.js +138 -0
- package/build/connectkit/src/components/Common/OptionsList/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/OrderHeader/index.js +192 -0
- package/build/connectkit/src/components/Common/OrderHeader/index.js.map +1 -0
- package/build/connectkit/src/components/Common/PaymentBreakdown/index.js +70 -0
- package/build/connectkit/src/components/Common/PaymentBreakdown/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Portal/index.js +30 -0
- package/build/connectkit/src/components/Common/Portal/index.js.map +1 -0
- package/build/connectkit/src/components/Common/PoweredByFooter/index.js +66 -0
- package/build/connectkit/src/components/Common/PoweredByFooter/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ScrollArea/index.js +120 -0
- package/build/connectkit/src/components/Common/ScrollArea/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ScrollArea/styles.js +169 -0
- package/build/connectkit/src/components/Common/ScrollArea/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/SelectAnotherMethodButton/index.js +96 -0
- package/build/connectkit/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Spinner/index.js +64 -0
- package/build/connectkit/src/components/Common/Spinner/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Spinner/styles.js +22 -0
- package/build/connectkit/src/components/Common/Spinner/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/SwitchButton/index.js +43 -0
- package/build/connectkit/src/components/Common/SwitchButton/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ThemedButton/index.js +46 -0
- package/build/connectkit/src/components/Common/ThemedButton/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ThemedButton/styles.js +152 -0
- package/build/connectkit/src/components/Common/ThemedButton/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/TokenChainLogo/index.js +62 -0
- package/build/connectkit/src/components/Common/TokenChainLogo/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Tooltip/index.js +129 -0
- package/build/connectkit/src/components/Common/Tooltip/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Tooltip/styles.js +81 -0
- package/build/connectkit/src/components/Common/Tooltip/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/WalletChainLogo/index.js +31 -0
- package/build/connectkit/src/components/Common/WalletChainLogo/index.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayButton/index.js +197 -0
- package/build/connectkit/src/components/DaimoPayButton/index.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayButton/styles.js +50 -0
- package/build/connectkit/src/components/DaimoPayButton/styles.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectUsing.js +68 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectUsing.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js +335 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js +131 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js +99 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/index.js +462 -0
- package/build/connectkit/src/components/DaimoPayModal/index.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +25 -0
- package/build/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -0
- package/build/connectkit/src/components/Pages/About/graphics.js +853 -0
- package/build/connectkit/src/components/Pages/About/graphics.js.map +1 -0
- package/build/connectkit/src/components/Pages/About/index.js +222 -0
- package/build/connectkit/src/components/Pages/About/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/About/styles.js +140 -0
- package/build/connectkit/src/components/Pages/About/styles.js.map +1 -0
- package/build/connectkit/src/components/Pages/Confirmation/index.js +128 -0
- package/build/connectkit/src/components/Pages/Confirmation/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Connectors/index.js +28 -0
- package/build/connectkit/src/components/Pages/Connectors/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/DownloadApp/index.js +35 -0
- package/build/connectkit/src/components/Pages/DownloadApp/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Error/index.js +57 -0
- package/build/connectkit/src/components/Pages/Error/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/MobileConnectors/index.js +65 -0
- package/build/connectkit/src/components/Pages/MobileConnectors/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/MobileConnectors/styles.js +64 -0
- package/build/connectkit/src/components/Pages/MobileConnectors/styles.js.map +1 -0
- package/build/connectkit/src/components/Pages/Onboarding/index.js +34 -0
- package/build/connectkit/src/components/Pages/Onboarding/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Onboarding/styles.js +229 -0
- package/build/connectkit/src/components/Pages/Onboarding/styles.js.map +1 -0
- package/build/connectkit/src/components/Pages/PayWithToken/index.js +157 -0
- package/build/connectkit/src/components/Pages/PayWithToken/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectAmount/index.js +24 -0
- package/build/connectkit/src/components/Pages/SelectAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js +79 -0
- package/build/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectDepositAddressChain/index.js +72 -0
- package/build/connectkit/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectExchange/index.js +41 -0
- package/build/connectkit/src/components/Pages/SelectExchange/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectExternalAmount/index.js +80 -0
- package/build/connectkit/src/components/Pages/SelectExternalAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectMethod/index.js +230 -0
- package/build/connectkit/src/components/Pages/SelectMethod/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectToken/index.js +97 -0
- package/build/connectkit/src/components/Pages/SelectToken/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectWalletAmount/index.js +66 -0
- package/build/connectkit/src/components/Pages/SelectWalletAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectWalletChain/index.js +55 -0
- package/build/connectkit/src/components/Pages/SelectWalletChain/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectZKP/index.js +41 -0
- package/build/connectkit/src/components/Pages/SelectZKP/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js +94 -0
- package/build/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js +92 -0
- package/build/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js +24 -0
- package/build/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SwitchNetworks/index.js +45 -0
- package/build/connectkit/src/components/Pages/SwitchNetworks/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/WaitingDepositAddress/index.js +503 -0
- package/build/connectkit/src/components/Pages/WaitingDepositAddress/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/WaitingExternal/index.js +89 -0
- package/build/connectkit/src/components/Pages/WaitingExternal/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/WaitingWallet/index.js +49 -0
- package/build/connectkit/src/components/Pages/WaitingWallet/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/CircleSpinner/index.js +104 -0
- package/build/connectkit/src/components/Spinners/CircleSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/CircleSpinner/styles.js +117 -0
- package/build/connectkit/src/components/Spinners/CircleSpinner/styles.js.map +1 -0
- package/build/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js +29 -0
- package/build/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/SquircleSpinner/index.js +68 -0
- package/build/connectkit/src/components/Spinners/SquircleSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/SquircleSpinner/styles.js +66 -0
- package/build/connectkit/src/components/Spinners/SquircleSpinner/styles.js.map +1 -0
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/index.js +24 -0
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js +40 -0
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -0
- package/build/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js +37 -0
- package/build/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/styles.js +32 -0
- package/build/connectkit/src/components/Spinners/styles.js.map +1 -0
- package/build/connectkit/src/constants/defaultTheme.js +6 -0
- package/build/connectkit/src/constants/defaultTheme.js.map +1 -0
- package/build/connectkit/src/constants/routes.js +32 -0
- package/build/connectkit/src/constants/routes.js.map +1 -0
- package/build/connectkit/src/defaultConfig.js +63 -0
- package/build/connectkit/src/defaultConfig.js.map +1 -0
- package/build/connectkit/src/defaultConnectors.js +37 -0
- package/build/connectkit/src/defaultConnectors.js.map +1 -0
- package/build/connectkit/src/hooks/useChainIsSupported.js +10 -0
- package/build/connectkit/src/hooks/useChainIsSupported.js.map +1 -0
- package/build/connectkit/src/hooks/useChains.js +10 -0
- package/build/connectkit/src/hooks/useChains.js.map +1 -0
- package/build/connectkit/src/hooks/useConnect.js +61 -0
- package/build/connectkit/src/hooks/useConnect.js.map +1 -0
- package/build/connectkit/src/hooks/useConnectCallback.js +21 -0
- package/build/connectkit/src/hooks/useConnectCallback.js.map +1 -0
- package/build/connectkit/src/hooks/useConnectors.js +9 -0
- package/build/connectkit/src/hooks/useConnectors.js.map +1 -0
- package/build/connectkit/src/hooks/useDaimoPay.js +107 -0
- package/build/connectkit/src/hooks/useDaimoPay.js.map +1 -0
- package/build/connectkit/src/hooks/useDaimoPayStatus.js +12 -0
- package/build/connectkit/src/hooks/useDaimoPayStatus.js.map +1 -0
- package/build/connectkit/src/hooks/useDaimoPayUI.js +15 -0
- package/build/connectkit/src/hooks/useDaimoPayUI.js.map +1 -0
- package/build/connectkit/src/hooks/useDepositAddressOptions.js +35 -0
- package/build/connectkit/src/hooks/useDepositAddressOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useEnsFallbackConfig.js +16 -0
- package/build/connectkit/src/hooks/useEnsFallbackConfig.js.map +1 -0
- package/build/connectkit/src/hooks/useExternalPaymentOptions.js +64 -0
- package/build/connectkit/src/hooks/useExternalPaymentOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useFitText.js +133 -0
- package/build/connectkit/src/hooks/useFitText.js.map +1 -0
- package/build/connectkit/src/hooks/useFocusTrap.js +53 -0
- package/build/connectkit/src/hooks/useFocusTrap.js.map +1 -0
- package/build/connectkit/src/hooks/useIsMobile.js +11 -0
- package/build/connectkit/src/hooks/useIsMobile.js.map +1 -0
- package/build/connectkit/src/hooks/useIsMounted.js +10 -0
- package/build/connectkit/src/hooks/useIsMounted.js.map +1 -0
- package/build/connectkit/src/hooks/useLastConnector.js +24 -0
- package/build/connectkit/src/hooks/useLastConnector.js.map +1 -0
- package/build/connectkit/src/hooks/useLocales.js +60 -0
- package/build/connectkit/src/hooks/useLocales.js.map +1 -0
- package/build/connectkit/src/hooks/useLockBodyScroll.js +47 -0
- package/build/connectkit/src/hooks/useLockBodyScroll.js.map +1 -0
- package/build/connectkit/src/hooks/useOrderUsdLimits.js +24 -0
- package/build/connectkit/src/hooks/useOrderUsdLimits.js.map +1 -0
- package/build/connectkit/src/hooks/usePayContext.js +11 -0
- package/build/connectkit/src/hooks/usePayContext.js.map +1 -0
- package/build/connectkit/src/hooks/usePaymentState.js +376 -0
- package/build/connectkit/src/hooks/usePaymentState.js.map +1 -0
- package/build/connectkit/src/hooks/usePrevious.js +13 -0
- package/build/connectkit/src/hooks/usePrevious.js.map +1 -0
- package/build/connectkit/src/hooks/useSolanaPaymentOptions.js +40 -0
- package/build/connectkit/src/hooks/useSolanaPaymentOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useTokenOptions.js +152 -0
- package/build/connectkit/src/hooks/useTokenOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useUntronAvailability.js +32 -0
- package/build/connectkit/src/hooks/useUntronAvailability.js.map +1 -0
- package/build/connectkit/src/hooks/useWalletPaymentOptions.js +97 -0
- package/build/connectkit/src/hooks/useWalletPaymentOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useWindowSize.js +23 -0
- package/build/connectkit/src/hooks/useWindowSize.js.map +1 -0
- package/build/connectkit/src/index.js +14 -0
- package/build/connectkit/src/index.js.map +1 -0
- package/build/connectkit/src/localizations/index.js +48 -0
- package/build/connectkit/src/localizations/index.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ar-AE.js +95 -0
- package/build/connectkit/src/localizations/locales/ar-AE.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ca-AD.js +93 -0
- package/build/connectkit/src/localizations/locales/ca-AD.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ee-EE.js +101 -0
- package/build/connectkit/src/localizations/locales/ee-EE.js.map +1 -0
- package/build/connectkit/src/localizations/locales/en-US.js +139 -0
- package/build/connectkit/src/localizations/locales/en-US.js.map +1 -0
- package/build/connectkit/src/localizations/locales/es-ES.js +131 -0
- package/build/connectkit/src/localizations/locales/es-ES.js.map +1 -0
- package/build/connectkit/src/localizations/locales/fa-IR.js +93 -0
- package/build/connectkit/src/localizations/locales/fa-IR.js.map +1 -0
- package/build/connectkit/src/localizations/locales/fr-FR.js +93 -0
- package/build/connectkit/src/localizations/locales/fr-FR.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ja-JP.js +93 -0
- package/build/connectkit/src/localizations/locales/ja-JP.js.map +1 -0
- package/build/connectkit/src/localizations/locales/pt-BR.js +101 -0
- package/build/connectkit/src/localizations/locales/pt-BR.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ru-RU.js +97 -0
- package/build/connectkit/src/localizations/locales/ru-RU.js.map +1 -0
- package/build/connectkit/src/localizations/locales/tr-TR.js +101 -0
- package/build/connectkit/src/localizations/locales/tr-TR.js.map +1 -0
- package/build/connectkit/src/localizations/locales/vi-VN.js +101 -0
- package/build/connectkit/src/localizations/locales/vi-VN.js.map +1 -0
- package/build/connectkit/src/localizations/locales/zh-CN.js +93 -0
- package/build/connectkit/src/localizations/locales/zh-CN.js.map +1 -0
- package/build/connectkit/src/payment/paymentEffects.js +269 -0
- package/build/connectkit/src/payment/paymentEffects.js.map +1 -0
- package/build/connectkit/src/payment/paymentFsm.js +194 -0
- package/build/connectkit/src/payment/paymentFsm.js.map +1 -0
- package/build/connectkit/src/payment/paymentStore.js +18 -0
- package/build/connectkit/src/payment/paymentStore.js.map +1 -0
- package/build/connectkit/src/payment/paymentUtils.js +10 -0
- package/build/connectkit/src/payment/paymentUtils.js.map +1 -0
- package/build/connectkit/src/provider/DaimoPayProvider.js +293 -0
- package/build/connectkit/src/provider/DaimoPayProvider.js.map +1 -0
- package/build/connectkit/src/provider/PayContext.js +6 -0
- package/build/connectkit/src/provider/PayContext.js.map +1 -0
- package/build/connectkit/src/provider/PaymentProvider.js +29 -0
- package/build/connectkit/src/provider/PaymentProvider.js.map +1 -0
- package/build/connectkit/src/provider/SolanaContextProvider.js +14 -0
- package/build/connectkit/src/provider/SolanaContextProvider.js.map +1 -0
- package/build/connectkit/src/provider/Web3ContextProvider.js +36 -0
- package/build/connectkit/src/provider/Web3ContextProvider.js.map +1 -0
- package/build/connectkit/src/stateStore.js +36 -0
- package/build/connectkit/src/stateStore.js.map +1 -0
- package/build/connectkit/src/styles/defaultTheme.js +80 -0
- package/build/connectkit/src/styles/defaultTheme.js.map +1 -0
- package/build/connectkit/src/styles/index.js +313 -0
- package/build/connectkit/src/styles/index.js.map +1 -0
- package/build/connectkit/src/styles/styled/index.js +6 -0
- package/build/connectkit/src/styles/styled/index.js.map +1 -0
- package/build/connectkit/src/styles/themes/base.js +141 -0
- package/build/connectkit/src/styles/themes/base.js.map +1 -0
- package/build/connectkit/src/styles/themes/index.js +13 -0
- package/build/connectkit/src/styles/themes/index.js.map +1 -0
- package/build/connectkit/src/styles/themes/midnight.js +76 -0
- package/build/connectkit/src/styles/themes/midnight.js.map +1 -0
- package/build/connectkit/src/styles/themes/minimal.js +96 -0
- package/build/connectkit/src/styles/themes/minimal.js.map +1 -0
- package/build/connectkit/src/styles/themes/nouns.js +81 -0
- package/build/connectkit/src/styles/themes/nouns.js.map +1 -0
- package/build/connectkit/src/styles/themes/retro.js +106 -0
- package/build/connectkit/src/styles/themes/retro.js.map +1 -0
- package/build/connectkit/src/styles/themes/rounded.js +106 -0
- package/build/connectkit/src/styles/themes/rounded.js.map +1 -0
- package/build/connectkit/src/styles/themes/soft.js +71 -0
- package/build/connectkit/src/styles/themes/soft.js.map +1 -0
- package/build/connectkit/src/styles/themes/web95.js +132 -0
- package/build/connectkit/src/styles/themes/web95.js.map +1 -0
- package/build/connectkit/src/utils/exports.js +6 -0
- package/build/connectkit/src/utils/exports.js.map +1 -0
- package/build/connectkit/src/utils/format.js +45 -0
- package/build/connectkit/src/utils/format.js.map +1 -0
- package/build/connectkit/src/utils/index.js +42 -0
- package/build/connectkit/src/utils/index.js.map +1 -0
- package/build/connectkit/src/utils/p3.js +15 -0
- package/build/connectkit/src/utils/p3.js.map +1 -0
- package/build/connectkit/src/utils/platform.js +11 -0
- package/build/connectkit/src/utils/platform.js.map +1 -0
- package/build/connectkit/src/utils/polling.js +35 -0
- package/build/connectkit/src/utils/polling.js.map +1 -0
- package/build/connectkit/src/utils/supportUrl.js +16 -0
- package/build/connectkit/src/utils/supportUrl.js.map +1 -0
- package/build/connectkit/src/utils/trpc.js +19 -0
- package/build/connectkit/src/utils/trpc.js.map +1 -0
- package/build/connectkit/src/utils/validateInput.js +16 -0
- package/build/connectkit/src/utils/validateInput.js.map +1 -0
- package/build/connectkit/src/wallets/index.js +21 -0
- package/build/connectkit/src/wallets/index.js.map +1 -0
- package/build/connectkit/src/wallets/useWallets.js +207 -0
- package/build/connectkit/src/wallets/useWallets.js.map +1 -0
- package/build/connectkit/src/wallets/walletConfigs.js +277 -0
- package/build/connectkit/src/wallets/walletConfigs.js.map +1 -0
- package/build/connectkit/src/world-mini-app/WorldPayButton.js +148 -0
- package/build/connectkit/src/world-mini-app/WorldPayButton.js.map +1 -0
- package/build/connectkit/src/world-mini-app/promptWorldPayment.js +59 -0
- package/build/connectkit/src/world-mini-app/promptWorldPayment.js.map +1 -0
- package/build/connectkit/src/world.js +2 -0
- package/build/connectkit/src/world.js.map +1 -0
- package/build/package.json.js +2 -2
- package/build/pay-common/src/chain.js +9 -0
- package/build/pay-common/src/chain.js.map +1 -0
- package/build/src/assets/coins.js +43 -0
- package/build/src/assets/coins.js.map +1 -0
- package/build/src/components/Common/CopyToClipboard/index.js +33 -0
- package/build/src/components/Common/CopyToClipboard/index.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +1 -1
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
- package/build/src/components/DaimoPayModal/index.js +23 -3
- package/build/src/components/DaimoPayModal/index.js.map +1 -1
- package/build/src/components/Pages/DownloadApp/index.js +35 -0
- package/build/src/components/Pages/DownloadApp/index.js.map +1 -0
- package/build/src/components/Pages/SelectMethod/index.js +5 -3
- package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
- package/build/src/components/Pages/SelectToken/index.js +3 -1
- package/build/src/components/Pages/SelectToken/index.js.map +1 -1
- package/build/src/localizations/locales/en-US.js +1 -1
- package/build/src/localizations/locales/en-US.js.map +1 -1
- package/build/src/localizations/locales/es-ES.js +1 -1
- package/build/src/localizations/locales/es-ES.js.map +1 -1
- package/build/src/wallets/useWallets.js.map +1 -1
- package/build/types-20835014.d.ts +68 -0
- package/package.json +2 -2
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { detect } from 'detect-browser';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
const detectBrowser = () => {
|
|
5
|
+
const browser = detect();
|
|
6
|
+
return browser?.name ?? "";
|
|
7
|
+
};
|
|
8
|
+
const detectOS = () => {
|
|
9
|
+
const browser = detect();
|
|
10
|
+
return browser?.os ?? "";
|
|
11
|
+
};
|
|
12
|
+
const isIOS = () => {
|
|
13
|
+
const os = detectOS();
|
|
14
|
+
return os.toLowerCase().includes("ios");
|
|
15
|
+
};
|
|
16
|
+
const isAndroid = () => {
|
|
17
|
+
const os = detectOS();
|
|
18
|
+
return os.toLowerCase().includes("android");
|
|
19
|
+
};
|
|
20
|
+
const isMobile = () => {
|
|
21
|
+
const os = detectOS().toLowerCase();
|
|
22
|
+
return os.includes("android") || os.includes("ios");
|
|
23
|
+
};
|
|
24
|
+
function flattenChildren(children) {
|
|
25
|
+
const childrenArray = React.Children.toArray(children);
|
|
26
|
+
return childrenArray.reduce((flatChildren, child) => {
|
|
27
|
+
if (child.type === React.Fragment) {
|
|
28
|
+
return flatChildren.concat(
|
|
29
|
+
flattenChildren(child.props.children)
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
flatChildren.push(child);
|
|
33
|
+
return flatChildren;
|
|
34
|
+
}, []);
|
|
35
|
+
}
|
|
36
|
+
const isBaseAccountConnector = (connectorId) => connectorId === "baseAccount";
|
|
37
|
+
const isGeminiConnector = (connectorId) => connectorId === "gemini";
|
|
38
|
+
const isSafeConnector = (connectorId) => connectorId === "safe";
|
|
39
|
+
const isInjectedConnector = (connectorId) => connectorId === "injected";
|
|
40
|
+
|
|
41
|
+
export { detectBrowser, detectOS, flattenChildren, isAndroid, isBaseAccountConnector, isGeminiConnector, isIOS, isInjectedConnector, isMobile, isSafeConnector };
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/utils/index.ts"],"sourcesContent":["import { detect } from \"detect-browser\";\nimport React from \"react\";\n\nconst truncateRegex = /^(0x[a-zA-Z0-9]{4})[a-zA-Z0-9]+([a-zA-Z0-9]{4})$/;\n\nconst truncateEthAddress = (address?: string, separator: string = \"••••\") => {\n if (!address) return \"\";\n const match = address.match(truncateRegex);\n if (!match) return address;\n return `${match[1]}${separator}${match[2]}`;\n};\n\nconst truncateENSAddress = (ensName: string, maxLength: number) => {\n if (ensName.length > maxLength) {\n return ensName.replace(\".eth\", \"\").slice(0, maxLength) + \"...\";\n } else {\n return ensName;\n }\n};\n\nconst nFormatter = (num: number, digits: number = 2) => {\n if (num < 10000) return num.toFixed(2);\n const lookup = [\n { value: 1, symbol: \"\" },\n { value: 1e3, symbol: \"k\" },\n { value: 1e6, symbol: \"m\" },\n { value: 1e9, symbol: \"g\" },\n { value: 1e12, symbol: \"t\" },\n { value: 1e15, symbol: \"p\" },\n { value: 1e18, symbol: \"e\" },\n ];\n\n const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n var item = lookup\n .slice()\n .reverse()\n .find(function (item) {\n return num >= item.value;\n });\n return item\n ? (num / item.value).toFixed(digits).replace(rx, \"$1\") + item.symbol\n : \"0\";\n};\n\nexport const detectBrowser = () => {\n const browser = detect();\n return browser?.name ?? \"\";\n};\nexport const detectOS = () => {\n const browser = detect();\n return browser?.os ?? \"\";\n};\n\nexport const isIOS = () => {\n const os = detectOS();\n return os.toLowerCase().includes(\"ios\");\n};\nexport const isAndroid = () => {\n const os = detectOS();\n return os.toLowerCase().includes(\"android\");\n};\nexport const isMobile = () => {\n const os = detectOS().toLowerCase();\n return os.includes(\"android\") || os.includes(\"ios\");\n};\n\ntype ReactChildArray = ReturnType<typeof React.Children.toArray>;\nfunction flattenChildren(children: React.ReactNode): ReactChildArray {\n const childrenArray = React.Children.toArray(children);\n return childrenArray.reduce((flatChildren: ReactChildArray, child) => {\n if ((child as React.ReactElement<any>).type === React.Fragment) {\n return flatChildren.concat(\n flattenChildren((child as React.ReactElement<any>).props.children),\n );\n }\n flatChildren.push(child);\n return flatChildren;\n }, []);\n}\n\nexport const isMetaMaskConnector = (connectorId?: string) =>\n connectorId === \"metaMaskSDK\";\n\nexport const isBaseAccountConnector = (connectorId?: string) =>\n connectorId === \"baseAccount\";\n\nexport const isGeminiConnector = (connectorId?: string) =>\n connectorId === \"gemini\";\n\nexport const isLedgerConnector = (connectorId?: string) =>\n connectorId === \"ledger\";\n\nexport const isSafeConnector = (connectorId?: string) => connectorId === \"safe\";\n\nexport const isInjectedConnector = (connectorId?: string) =>\n connectorId === \"injected\";\n\nexport { flattenChildren, nFormatter, truncateENSAddress, truncateEthAddress };\n"],"names":[],"mappings":";;;AA4CO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,UAAU,MAAO,EAAA,CAAA;AACvB,EAAA,OAAO,SAAS,IAAQ,IAAA,EAAA,CAAA;AAC1B,EAAA;AACO,MAAM,WAAW,MAAM;AAC5B,EAAA,MAAM,UAAU,MAAO,EAAA,CAAA;AACvB,EAAA,OAAO,SAAS,EAAM,IAAA,EAAA,CAAA;AACxB,EAAA;AAEO,MAAM,QAAQ,MAAM;AACzB,EAAA,MAAM,KAAK,QAAS,EAAA,CAAA;AACpB,EAAA,OAAO,EAAG,CAAA,WAAA,EAAc,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AACxC,EAAA;AACO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,KAAK,QAAS,EAAA,CAAA;AACpB,EAAA,OAAO,EAAG,CAAA,WAAA,EAAc,CAAA,QAAA,CAAS,SAAS,CAAA,CAAA;AAC5C,EAAA;AACO,MAAM,WAAW,MAAM;AAC5B,EAAM,MAAA,EAAA,GAAK,QAAS,EAAA,CAAE,WAAY,EAAA,CAAA;AAClC,EAAA,OAAO,GAAG,QAAS,CAAA,SAAS,CAAK,IAAA,EAAA,CAAG,SAAS,KAAK,CAAA,CAAA;AACpD,EAAA;AAGA,SAAS,gBAAgB,QAA4C,EAAA;AACnE,EAAA,MAAM,aAAgB,GAAA,KAAA,CAAM,QAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AACrD,EAAA,OAAO,aAAc,CAAA,MAAA,CAAO,CAAC,YAAA,EAA+B,KAAU,KAAA;AACpE,IAAK,IAAA,KAAA,CAAkC,IAAS,KAAA,KAAA,CAAM,QAAU,EAAA;AAC9D,MAAA,OAAO,YAAa,CAAA,MAAA;AAAA,QAClB,eAAA,CAAiB,KAAkC,CAAA,KAAA,CAAM,QAAQ,CAAA;AAAA,OACnE,CAAA;AAAA,KACF;AACA,IAAA,YAAA,CAAa,KAAK,KAAK,CAAA,CAAA;AACvB,IAAO,OAAA,YAAA,CAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AACP,CAAA;AAKa,MAAA,sBAAA,GAAyB,CAAC,WAAA,KACrC,WAAgB,KAAA,cAAA;AAEL,MAAA,iBAAA,GAAoB,CAAC,WAAA,KAChC,WAAgB,KAAA,SAAA;AAKL,MAAA,eAAA,GAAkB,CAAC,WAAA,KAAyB,WAAgB,KAAA,OAAA;AAE5D,MAAA,mBAAA,GAAsB,CAAC,WAAA,KAClC,WAAgB,KAAA;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import 'styled-components';
|
|
2
|
+
|
|
3
|
+
const hexToP3 = (hex) => {
|
|
4
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
5
|
+
if (result == null) return hex;
|
|
6
|
+
const values = {
|
|
7
|
+
r: parseInt(result[1], 16),
|
|
8
|
+
g: parseInt(result[2], 16),
|
|
9
|
+
b: parseInt(result[3], 16)
|
|
10
|
+
};
|
|
11
|
+
return `color(display-p3 ${values.r / 255} ${values.g / 255} ${values.b / 255})`;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { hexToP3 };
|
|
15
|
+
//# sourceMappingURL=p3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p3.js","sources":["../../../../src/utils/p3.ts"],"sourcesContent":["import { css } from \"styled-components\";\n\nexport const hexToP3 = (hex: string) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (result == null) return hex;\n const values = {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n };\n return `color(display-p3 ${values.r / 255} ${values.g / 255} ${\n values.b / 255\n })`;\n};\n\nexport const p3Hex = (hex: string, property: string) => {\n const isSafari = true;\n const p3 = hexToP3(hex);\n if (!p3 || !isSafari) {\n return css`\n ${property}: ${hex};\n `;\n } else {\n return css`\n ${property}: ${hex};\n ${property}: ${p3};\n `;\n }\n};\n"],"names":[],"mappings":";;AAEa,MAAA,OAAA,GAAU,CAAC,GAAgB,KAAA;AACtC,EAAM,MAAA,MAAA,GAAS,2CAA4C,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AACnE,EAAI,IAAA,MAAA,IAAU,MAAa,OAAA,GAAA,CAAA;AAC3B,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,CAAG,EAAA,QAAA,CAAS,MAAO,CAAA,CAAC,GAAG,EAAE,CAAA;AAAA,IACzB,CAAG,EAAA,QAAA,CAAS,MAAO,CAAA,CAAC,GAAG,EAAE,CAAA;AAAA,IACzB,CAAG,EAAA,QAAA,CAAS,MAAO,CAAA,CAAC,GAAG,EAAE,CAAA;AAAA,GAC3B,CAAA;AACA,EAAO,OAAA,CAAA,iBAAA,EAAoB,MAAO,CAAA,CAAA,GAAI,GAAG,CAAA,CAAA,EAAI,MAAO,CAAA,CAAA,GAAI,GAAG,CAAA,CAAA,EACzD,MAAO,CAAA,CAAA,GAAI,GACb,CAAA,CAAA,CAAA,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sources":["../../../../src/utils/platform.ts"],"sourcesContent":["import { PlatformType } from \"@daimo/pay-common\";\n\nexport function detectPlatform(ua: string): PlatformType {\n // From https://dev.to/konyu/using-javascript-to-determine-whether-the-client-is-ios-or-android-4i1j\n if (/android/i.test(ua)) {\n return \"android\";\n } else if (/iPhone|iPod|iPad/.test(ua)) {\n return \"ios\";\n }\n return \"other\";\n}\n"],"names":[],"mappings":"AAEO,SAAS,eAAe,EAA0B,EAAA;AAEvD,EAAI,IAAA,UAAA,CAAW,IAAK,CAAA,EAAE,CAAG,EAAA;AACvB,IAAO,OAAA,SAAA,CAAA;AAAA,GACE,MAAA,IAAA,kBAAA,CAAmB,IAAK,CAAA,EAAE,CAAG,EAAA;AACtC,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,OAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
function startPolling({
|
|
2
|
+
key,
|
|
3
|
+
intervalMs,
|
|
4
|
+
pollFn,
|
|
5
|
+
onResult,
|
|
6
|
+
onError,
|
|
7
|
+
log = console.log
|
|
8
|
+
}) {
|
|
9
|
+
let active = true;
|
|
10
|
+
let timer;
|
|
11
|
+
const stop = () => {
|
|
12
|
+
active = false;
|
|
13
|
+
clearTimeout(timer);
|
|
14
|
+
log(`[POLL] ${key} stopped`);
|
|
15
|
+
};
|
|
16
|
+
const tick = async () => {
|
|
17
|
+
log(`[POLL] polling ${key}`);
|
|
18
|
+
try {
|
|
19
|
+
const res = await pollFn();
|
|
20
|
+
if (!active) return;
|
|
21
|
+
log(`[POLL] ${key} success`);
|
|
22
|
+
onResult(res);
|
|
23
|
+
} catch (e) {
|
|
24
|
+
if (!active) return;
|
|
25
|
+
log(`[POLL] ${key} error: ${e}`);
|
|
26
|
+
onError(e);
|
|
27
|
+
}
|
|
28
|
+
timer = setTimeout(tick, intervalMs);
|
|
29
|
+
};
|
|
30
|
+
tick();
|
|
31
|
+
return stop;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { startPolling };
|
|
35
|
+
//# sourceMappingURL=polling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling.js","sources":["../../../../src/utils/polling.ts"],"sourcesContent":["export type PollHandle = () => void;\n\n/**\n * Will poll the given function at the specified interval. Stops when the\n * returned handle is invoked.\n */\nexport function startPolling<T>({\n key,\n intervalMs,\n pollFn,\n onResult,\n onError,\n log = console.log,\n}: {\n key: string;\n intervalMs: number;\n pollFn: () => Promise<T>;\n onResult: (value: T) => void;\n onError: (err: unknown) => void;\n log?: (msg: string) => void;\n}): PollHandle {\n let active = true;\n let timer: NodeJS.Timeout;\n\n const stop = () => {\n active = false;\n clearTimeout(timer);\n log(`[POLL] ${key} stopped`);\n };\n\n const tick = async () => {\n log(`[POLL] polling ${key}`);\n try {\n const res = await pollFn();\n if (!active) return;\n log(`[POLL] ${key} success`);\n onResult(res);\n } catch (e) {\n if (!active) return;\n log(`[POLL] ${key} error: ${e}`);\n onError(e);\n }\n timer = setTimeout(tick, intervalMs);\n };\n\n tick();\n\n return stop;\n}\n"],"names":[],"mappings":"AAMO,SAAS,YAAgB,CAAA;AAAA,EAC9B,GAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAChB,CAOe,EAAA;AACb,EAAA,IAAI,MAAS,GAAA,IAAA,CAAA;AACb,EAAI,IAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,OAAO,MAAM;AACjB,IAAS,MAAA,GAAA,KAAA,CAAA;AACT,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAClB,IAAI,GAAA,CAAA,CAAA,OAAA,EAAU,GAAG,CAAU,QAAA,CAAA,CAAA,CAAA;AAAA,GAC7B,CAAA;AAEA,EAAA,MAAM,OAAO,YAAY;AACvB,IAAI,GAAA,CAAA,CAAA,eAAA,EAAkB,GAAG,CAAE,CAAA,CAAA,CAAA;AAC3B,IAAI,IAAA;AACF,MAAM,MAAA,GAAA,GAAM,MAAM,MAAO,EAAA,CAAA;AACzB,MAAA,IAAI,CAAC,MAAQ,EAAA,OAAA;AACb,MAAI,GAAA,CAAA,CAAA,OAAA,EAAU,GAAG,CAAU,QAAA,CAAA,CAAA,CAAA;AAC3B,MAAA,QAAA,CAAS,GAAG,CAAA,CAAA;AAAA,aACL,CAAG,EAAA;AACV,MAAA,IAAI,CAAC,MAAQ,EAAA,OAAA;AACb,MAAA,GAAA,CAAI,CAAU,OAAA,EAAA,GAAG,CAAW,QAAA,EAAA,CAAC,CAAE,CAAA,CAAA,CAAA;AAC/B,MAAA,OAAA,CAAQ,CAAC,CAAA,CAAA;AAAA,KACX;AACA,IAAQ,KAAA,GAAA,UAAA,CAAW,MAAM,UAAU,CAAA,CAAA;AAAA,GACrC,CAAA;AAEA,EAAK,IAAA,EAAA,CAAA;AAEL,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { daimoPayVersion } from './exports.js';
|
|
2
|
+
|
|
3
|
+
function getSupportUrl(payId, screen) {
|
|
4
|
+
const email = "support@daimo.com";
|
|
5
|
+
const subject = `Support${payId ? ` #${payId}` : ""}`;
|
|
6
|
+
let body = [
|
|
7
|
+
`Transaction: ${screen}`,
|
|
8
|
+
`Version: ${daimoPayVersion}`,
|
|
9
|
+
``,
|
|
10
|
+
`Tell us how we can help`
|
|
11
|
+
].join("\n");
|
|
12
|
+
return `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { getSupportUrl };
|
|
16
|
+
//# sourceMappingURL=supportUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supportUrl.js","sources":["../../../../src/utils/supportUrl.ts"],"sourcesContent":["import { DaimoPayOrderID } from \"@daimo/pay-common\";\nimport { daimoPayVersion } from \"./exports\";\n\nexport function getSupportUrl(payId: DaimoPayOrderID, screen: string): string {\n const email = \"support@daimo.com\";\n const subject = `Support${payId ? ` #${payId}` : \"\"}`;\n let body = [\n `Transaction: ${screen}`,\n `Version: ${daimoPayVersion}`,\n ``,\n `Tell us how we can help`,\n ].join(\"\\n\");\n\n return `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;\n}\n"],"names":[],"mappings":";;AAGgB,SAAA,aAAA,CAAc,OAAwB,MAAwB,EAAA;AAC5E,EAAA,MAAM,KAAQ,GAAA,mBAAA,CAAA;AACd,EAAA,MAAM,UAAU,CAAU,OAAA,EAAA,KAAA,GAAQ,CAAK,EAAA,EAAA,KAAK,KAAK,EAAE,CAAA,CAAA,CAAA;AACnD,EAAA,IAAI,IAAO,GAAA;AAAA,IACT,gBAAgB,MAAM,CAAA,CAAA;AAAA,IACtB,YAAY,eAAe,CAAA,CAAA;AAAA,IAC3B,CAAA,CAAA;AAAA,IACA,CAAA,uBAAA,CAAA;AAAA,GACF,CAAE,KAAK,IAAI,CAAA,CAAA;AAEX,EAAO,OAAA,CAAA,OAAA,EAAU,KAAK,CAAY,SAAA,EAAA,kBAAA,CAAmB,OAAO,CAAC,CAAA,MAAA,EAAS,kBAAmB,CAAA,IAAI,CAAC,CAAA,CAAA,CAAA;AAChG;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createTRPCClient, httpBatchLink } from '@trpc/client';
|
|
2
|
+
import { daimoPayVersion } from './exports.js';
|
|
3
|
+
|
|
4
|
+
function createTrpcClient(apiUrl, sessionId) {
|
|
5
|
+
return createTRPCClient({
|
|
6
|
+
links: [
|
|
7
|
+
httpBatchLink({
|
|
8
|
+
url: apiUrl,
|
|
9
|
+
headers: {
|
|
10
|
+
"x-pay-version": daimoPayVersion,
|
|
11
|
+
"x-session-id": sessionId
|
|
12
|
+
}
|
|
13
|
+
})
|
|
14
|
+
]
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { createTrpcClient };
|
|
19
|
+
//# sourceMappingURL=trpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trpc.js","sources":["../../../../src/utils/trpc.ts"],"sourcesContent":["import type { AppRouter } from \"@daimo/pay-api\";\nimport {\n CreateTRPCClient,\n createTRPCClient,\n httpBatchLink,\n} from \"@trpc/client\";\nimport { daimoPayVersion } from \"./exports\";\n\nexport type TrpcClient = CreateTRPCClient<AppRouter>;\n\nexport function createTrpcClient(\n apiUrl: string,\n sessionId: string,\n): TrpcClient {\n return createTRPCClient<AppRouter>({\n links: [\n httpBatchLink({\n url: apiUrl,\n headers: {\n \"x-pay-version\": daimoPayVersion,\n \"x-session-id\": sessionId,\n },\n }),\n ],\n });\n}\n"],"names":[],"mappings":";;;AAUgB,SAAA,gBAAA,CACd,QACA,SACY,EAAA;AACZ,EAAA,OAAO,gBAA4B,CAAA;AAAA,IACjC,KAAO,EAAA;AAAA,MACL,aAAc,CAAA;AAAA,QACZ,GAAK,EAAA,MAAA;AAAA,QACL,OAAS,EAAA;AAAA,UACP,eAAiB,EAAA,eAAA;AAAA,UACjB,cAAgB,EAAA,SAAA;AAAA,SAClB;AAAA,OACD,CAAA;AAAA,KACH;AAAA,GACD,CAAA,CAAA;AACH;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function isValidNumber(value, maxDecimals) {
|
|
2
|
+
if (value.length === 0) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
const match = /^\d*\.?(\d*)$/.exec(value);
|
|
6
|
+
if (match == null) return false;
|
|
7
|
+
return maxDecimals == null || match[1].length <= maxDecimals;
|
|
8
|
+
}
|
|
9
|
+
function sanitizeNumber(value) {
|
|
10
|
+
const cleaned = value.replace(/[^0-9.]/g, "");
|
|
11
|
+
if (!cleaned || cleaned === "." || !/^\d*\.?\d*$/.test(cleaned)) return "0";
|
|
12
|
+
return cleaned.startsWith(".") ? `0${cleaned}` : cleaned;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { isValidNumber, sanitizeNumber };
|
|
16
|
+
//# sourceMappingURL=validateInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateInput.js","sources":["../../../../src/utils/validateInput.ts"],"sourcesContent":["/**\n * Returns true if the value is a valid number.\n * @param value The value to validate.\n * @param maxDecimals The maximum number of decimal places.\n * @returns True if the value is a valid number, false otherwise.\n */\nexport function isValidNumber(value: string, maxDecimals?: number): boolean {\n if (value.length === 0) {\n return false;\n }\n\n // Test that the value is digits, followed by an optional decimal, followed\n // by more digits\n const match = /^\\d*\\.?(\\d*)$/.exec(value);\n if (match == null) return false;\n\n // Check that the number of digits after the decimal is less than or equal to\n // maxDecimals\n return maxDecimals == null || match[1].length <= maxDecimals;\n}\n\n/**\n * Sanitize a number input.\n * - Remove all non-numeric and non-decimal characters\n * - If the value is empty, return \"0\"\n * - Parse into a number\n * @param value The value to sanitize.\n * @returns The sanitized value.\n */\nexport function sanitizeNumber(value: string): string {\n const cleaned = value.replace(/[^0-9.]/g, \"\");\n if (!cleaned || cleaned === \".\" || !/^\\d*\\.?\\d*$/.test(cleaned)) return \"0\";\n return cleaned.startsWith(\".\") ? `0${cleaned}` : cleaned;\n}\n"],"names":[],"mappings":"AAMgB,SAAA,aAAA,CAAc,OAAe,WAA+B,EAAA;AAC1E,EAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAIA,EAAM,MAAA,KAAA,GAAQ,eAAgB,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AACxC,EAAI,IAAA,KAAA,IAAS,MAAa,OAAA,KAAA,CAAA;AAI1B,EAAA,OAAO,WAAe,IAAA,IAAA,IAAQ,KAAM,CAAA,CAAC,EAAE,MAAU,IAAA,WAAA,CAAA;AACnD,CAAA;AAUO,SAAS,eAAe,KAAuB,EAAA;AACpD,EAAA,MAAM,OAAU,GAAA,KAAA,CAAM,OAAQ,CAAA,UAAA,EAAY,EAAE,CAAA,CAAA;AAC5C,EAAI,IAAA,CAAC,WAAW,OAAY,KAAA,GAAA,IAAO,CAAC,aAAc,CAAA,IAAA,CAAK,OAAO,CAAA,EAAU,OAAA,GAAA,CAAA;AACxE,EAAA,OAAO,QAAQ,UAAW,CAAA,GAAG,CAAI,GAAA,CAAA,CAAA,EAAI,OAAO,CAAK,CAAA,GAAA,OAAA,CAAA;AACnD;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { injected } from '@wagmi/connectors';
|
|
2
|
+
import { walletConfigs } from './walletConfigs.js';
|
|
3
|
+
|
|
4
|
+
const wallets = Object.keys(walletConfigs).reduce((acc, key) => {
|
|
5
|
+
const config = walletConfigs[key];
|
|
6
|
+
const target = key.split(",")[0].trim();
|
|
7
|
+
const flag = config.name?.replace("Wallet", "").replace(" ", "") ?? target[0].toUpperCase() + target.slice(1);
|
|
8
|
+
const connector = injected({
|
|
9
|
+
target: {
|
|
10
|
+
id: target,
|
|
11
|
+
name: config.name ?? config.shortName ?? key,
|
|
12
|
+
provider: (w) => w?.ethereum?.[`is${flag}`]
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const name = (config.name ?? config.shortName ?? key).toLowerCase().replace(/(?:^|\s)\S/g, (a) => a.toUpperCase()).replace(/\s/g, "").replace(/(?:^|\s)\S/g, (a) => a.toLowerCase());
|
|
16
|
+
acc[name] = connector;
|
|
17
|
+
return acc;
|
|
18
|
+
}, {});
|
|
19
|
+
|
|
20
|
+
export { wallets };
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/wallets/index.ts"],"sourcesContent":["import { injected } from \"@wagmi/connectors\";\nimport { CreateConnectorFn } from \"wagmi\";\n\nimport { walletConfigs } from \"./walletConfigs\";\n\n/** Ethereum wallets, by name. */\nexport const wallets: {\n [key: string]: CreateConnectorFn;\n} = Object.keys(walletConfigs).reduce((acc, key) => {\n const config = walletConfigs[key];\n const target = key.split(\",\")[0].trim();\n const flag =\n config.name?.replace(\"Wallet\", \"\").replace(\" \", \"\") ??\n target[0].toUpperCase() + target.slice(1);\n\n const connector = injected({\n target: {\n id: target,\n name: config.name ?? config.shortName ?? key,\n provider: (w) => w?.ethereum?.[`is${flag}`],\n },\n });\n const name = (config.name ?? config.shortName ?? key)\n .toLowerCase()\n // capitalize first letter\n .replace(/(?:^|\\s)\\S/g, (a) => a.toUpperCase())\n // remove spaces\n .replace(/\\s/g, \"\")\n // lowercase first letter\n .replace(/(?:^|\\s)\\S/g, (a) => a.toLowerCase());\n\n acc[name] = connector;\n return acc;\n}, {});\n"],"names":[],"mappings":";;;AAMa,MAAA,OAAA,GAET,OAAO,IAAK,CAAA,aAAa,EAAE,MAAO,CAAA,CAAC,KAAK,GAAQ,KAAA;AAClD,EAAM,MAAA,MAAA,GAAS,cAAc,GAAG,CAAA,CAAA;AAChC,EAAA,MAAM,SAAS,GAAI,CAAA,KAAA,CAAM,GAAG,CAAE,CAAA,CAAC,EAAE,IAAK,EAAA,CAAA;AACtC,EAAA,MAAM,OACJ,MAAO,CAAA,IAAA,EAAM,QAAQ,QAAU,EAAA,EAAE,EAAE,OAAQ,CAAA,GAAA,EAAK,EAAE,CAAA,IAClD,OAAO,CAAC,CAAA,CAAE,aAAgB,GAAA,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AAE1C,EAAA,MAAM,YAAY,QAAS,CAAA;AAAA,IACzB,MAAQ,EAAA;AAAA,MACN,EAAI,EAAA,MAAA;AAAA,MACJ,IAAM,EAAA,MAAA,CAAO,IAAQ,IAAA,MAAA,CAAO,SAAa,IAAA,GAAA;AAAA,MACzC,UAAU,CAAC,CAAA,KAAM,GAAG,QAAW,GAAA,CAAA,EAAA,EAAK,IAAI,CAAE,CAAA,CAAA;AAAA,KAC5C;AAAA,GACD,CAAA,CAAA;AACD,EAAM,MAAA,IAAA,GAAA,CAAQ,MAAO,CAAA,IAAA,IAAQ,MAAO,CAAA,SAAA,IAAa,GAC9C,EAAA,WAAA,EAEA,CAAA,OAAA,CAAQ,aAAe,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,aAAa,CAAA,CAE7C,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA,CAEjB,OAAQ,CAAA,aAAA,EAAe,CAAC,CAAA,KAAM,CAAE,CAAA,WAAA,EAAa,CAAA,CAAA;AAEhD,EAAA,GAAA,CAAI,IAAI,CAAI,GAAA,SAAA,CAAA;AACZ,EAAO,OAAA,GAAA,CAAA;AACT,CAAA,EAAG,EAAE;;;;"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { assertNotNull } from '@daimo/pay-common';
|
|
3
|
+
import { useWallet as useWallet$1 } from '@solana/wallet-adapter-react';
|
|
4
|
+
import Logos, { WalletIcon, SquircleIcon } from '../assets/logos.js';
|
|
5
|
+
import { MobileWithLogos } from '../assets/MobileWithLogos.js';
|
|
6
|
+
import { useConnectors } from '../hooks/useConnectors.js';
|
|
7
|
+
import useLocales from '../hooks/useLocales.js';
|
|
8
|
+
import { usePayContext } from '../hooks/usePayContext.js';
|
|
9
|
+
import { isBaseAccountConnector, isGeminiConnector, isInjectedConnector, flattenChildren } from '../utils/index.js';
|
|
10
|
+
import { walletConfigs } from './walletConfigs.js';
|
|
11
|
+
|
|
12
|
+
const WALLET_ID_OTHER_WALLET = "otherWallet";
|
|
13
|
+
const WALLET_ID_MOBILE_WALLETS = "mobileWallets";
|
|
14
|
+
const useWallet = (id) => {
|
|
15
|
+
const wallets = useWallets();
|
|
16
|
+
const wallet = wallets.find((c) => c.id === id);
|
|
17
|
+
if (!wallet) return null;
|
|
18
|
+
return wallet;
|
|
19
|
+
};
|
|
20
|
+
const useWallets = (isMobile) => {
|
|
21
|
+
const connectors = useConnectors();
|
|
22
|
+
const context = usePayContext();
|
|
23
|
+
const { showSolanaPaymentMethod } = context.paymentState;
|
|
24
|
+
const { disableMobileInjector } = context;
|
|
25
|
+
const solanaWallet = useWallet$1();
|
|
26
|
+
const locales = useLocales();
|
|
27
|
+
if (isMobile) {
|
|
28
|
+
let addIfNotPresent2 = function(idList) {
|
|
29
|
+
if (mobileWallets.find((w) => idList.includes(w.id))) return;
|
|
30
|
+
if (mobileWallets.length >= 3) return;
|
|
31
|
+
const wallet = assertNotNull(
|
|
32
|
+
walletConfigs[idList],
|
|
33
|
+
() => `missing ${idList}`
|
|
34
|
+
);
|
|
35
|
+
mobileWallets.push({
|
|
36
|
+
id: idList,
|
|
37
|
+
...wallet
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const mobileWallets = [];
|
|
41
|
+
if (!disableMobileInjector) {
|
|
42
|
+
connectors.forEach((connector) => {
|
|
43
|
+
if (isBaseAccountConnector(connector.id)) return;
|
|
44
|
+
if (isGeminiConnector(connector.id)) return;
|
|
45
|
+
if (!isInjectedConnector(connector.type)) return;
|
|
46
|
+
if (connector.name?.toLowerCase().includes("walletconnect")) return;
|
|
47
|
+
mobileWallets.push({
|
|
48
|
+
id: connector.id,
|
|
49
|
+
connector,
|
|
50
|
+
shortName: connector.name,
|
|
51
|
+
iconConnector: connector.icon ? /* @__PURE__ */ jsx("img", { src: connector.icon, alt: connector.name }) : /* @__PURE__ */ jsx(WalletIcon, {}),
|
|
52
|
+
iconShape: "squircle"
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
addIfNotPresent2(
|
|
57
|
+
"metaMask, metaMask-io, io.metamask, io.metamask.mobile, metaMaskSDK"
|
|
58
|
+
);
|
|
59
|
+
addIfNotPresent2("com.trustwallet.app");
|
|
60
|
+
const otherWalletsString = flattenChildren(locales.otherWallets).join("");
|
|
61
|
+
const otherString = flattenChildren(locales.other).join("");
|
|
62
|
+
mobileWallets.push({
|
|
63
|
+
id: WALLET_ID_OTHER_WALLET,
|
|
64
|
+
name: otherWalletsString,
|
|
65
|
+
shortName: otherString,
|
|
66
|
+
iconConnector: /* @__PURE__ */ jsx(Logos.OtherWallets, {}),
|
|
67
|
+
iconShape: "square",
|
|
68
|
+
showInMobileConnectors: false
|
|
69
|
+
});
|
|
70
|
+
return mobileWallets;
|
|
71
|
+
}
|
|
72
|
+
const wallets = connectors.map((connector) => {
|
|
73
|
+
let walletConfigKey = Object.keys(walletConfigs).find(
|
|
74
|
+
(id) => id.split(",").map((i) => i.trim()).includes(connector.id)
|
|
75
|
+
);
|
|
76
|
+
if (!walletConfigKey && connector.name) {
|
|
77
|
+
walletConfigKey = Object.keys(walletConfigs).find((key) => {
|
|
78
|
+
const cfgName = walletConfigs[key].name?.toLowerCase();
|
|
79
|
+
const connName = connector.name.toLowerCase();
|
|
80
|
+
return cfgName && (cfgName.includes(connName) || connName.includes(cfgName));
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const c = {
|
|
84
|
+
id: connector.id,
|
|
85
|
+
name: connector.name ?? connector.id ?? connector.type,
|
|
86
|
+
icon: connector.icon ? /* @__PURE__ */ jsx(
|
|
87
|
+
"img",
|
|
88
|
+
{
|
|
89
|
+
src: connector.icon,
|
|
90
|
+
alt: connector.name,
|
|
91
|
+
width: "100%",
|
|
92
|
+
height: "100%"
|
|
93
|
+
}
|
|
94
|
+
) : /* @__PURE__ */ jsx(WalletIcon, {}),
|
|
95
|
+
connector,
|
|
96
|
+
iconShape: connector.id === "io.rabby" ? "circle" : "squircle",
|
|
97
|
+
isInstalled: connector.type === "mock" || connector.type === "injected" && connector.id !== "metaMask" || connector.type === "farcasterFrame" || isBaseAccountConnector(connector.id) || isGeminiConnector(connector.id)
|
|
98
|
+
};
|
|
99
|
+
if (walletConfigKey) {
|
|
100
|
+
const wallet = walletConfigs[walletConfigKey];
|
|
101
|
+
return {
|
|
102
|
+
...c,
|
|
103
|
+
iconConnector: connector.icon ? /* @__PURE__ */ jsx(
|
|
104
|
+
"img",
|
|
105
|
+
{
|
|
106
|
+
src: connector.icon,
|
|
107
|
+
alt: connector.name,
|
|
108
|
+
width: "100%",
|
|
109
|
+
height: "100%"
|
|
110
|
+
}
|
|
111
|
+
) : void 0,
|
|
112
|
+
...wallet
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return c;
|
|
116
|
+
});
|
|
117
|
+
wallets.push(walletConfigs.world);
|
|
118
|
+
wallets.push({
|
|
119
|
+
id: WALLET_ID_MOBILE_WALLETS,
|
|
120
|
+
name: "Mobile Wallets",
|
|
121
|
+
shortName: "Mobile",
|
|
122
|
+
icon: /* @__PURE__ */ jsx(
|
|
123
|
+
"div",
|
|
124
|
+
{
|
|
125
|
+
style: {
|
|
126
|
+
width: "100%",
|
|
127
|
+
height: "100%",
|
|
128
|
+
overflow: "hidden",
|
|
129
|
+
display: "flex",
|
|
130
|
+
alignItems: "center",
|
|
131
|
+
justifyContent: "center",
|
|
132
|
+
transform: "scale(1.2)",
|
|
133
|
+
transformOrigin: "center center"
|
|
134
|
+
},
|
|
135
|
+
children: /* @__PURE__ */ jsx(MobileWithLogos, {})
|
|
136
|
+
}
|
|
137
|
+
),
|
|
138
|
+
iconConnector: /* @__PURE__ */ jsx(
|
|
139
|
+
"div",
|
|
140
|
+
{
|
|
141
|
+
style: {
|
|
142
|
+
width: "100%",
|
|
143
|
+
height: "100%",
|
|
144
|
+
overflow: "hidden",
|
|
145
|
+
display: "flex",
|
|
146
|
+
alignItems: "center",
|
|
147
|
+
justifyContent: "center",
|
|
148
|
+
transform: "scale(1.2)",
|
|
149
|
+
transformOrigin: "center center"
|
|
150
|
+
},
|
|
151
|
+
children: /* @__PURE__ */ jsx(MobileWithLogos, {})
|
|
152
|
+
}
|
|
153
|
+
)
|
|
154
|
+
});
|
|
155
|
+
if (showSolanaPaymentMethod) {
|
|
156
|
+
const solanaAdapters = solanaWallet.wallets ?? [];
|
|
157
|
+
wallets.forEach((w) => {
|
|
158
|
+
if (!w.name) return;
|
|
159
|
+
const evm = w.name.toLowerCase();
|
|
160
|
+
const match = solanaAdapters.find((sw) => {
|
|
161
|
+
const sol = sw.adapter.name.toLowerCase();
|
|
162
|
+
return evm.includes(sol) || sol.includes(evm);
|
|
163
|
+
});
|
|
164
|
+
if (match) {
|
|
165
|
+
w.solanaConnectorName = match.adapter.name;
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
const unmatched = solanaAdapters.filter(
|
|
169
|
+
(sw) => !wallets.find((w) => w.solanaConnectorName === sw.adapter.name)
|
|
170
|
+
);
|
|
171
|
+
unmatched.forEach((sw) => {
|
|
172
|
+
wallets.push({
|
|
173
|
+
id: `solana-${sw.adapter.name}`,
|
|
174
|
+
name: sw.adapter.name,
|
|
175
|
+
shortName: sw.adapter.name,
|
|
176
|
+
icon: /* @__PURE__ */ jsx(SquircleIcon, { icon: sw.adapter.icon, alt: sw.adapter.name }),
|
|
177
|
+
iconConnector: /* @__PURE__ */ jsx(SquircleIcon, { icon: sw.adapter.icon, alt: sw.adapter.name }),
|
|
178
|
+
iconShape: "squircle",
|
|
179
|
+
solanaConnectorName: sw.adapter.name
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
return wallets.filter(
|
|
184
|
+
(wallet, index, self) => self.findIndex((w) => w.id === wallet.id) === index
|
|
185
|
+
).filter(
|
|
186
|
+
(wallet, index, self) => !(wallet.id === "coinbaseWalletSDK" && self.find((w) => w.id === "com.coinbase.wallet"))
|
|
187
|
+
).filter(
|
|
188
|
+
(wallet, index, self) => !((wallet.id === "metaMaskSDK" || wallet.id === "metaMask") && self.find(
|
|
189
|
+
(w) => w.id === "io.metamask" || w.id === "io.metamask.mobile"
|
|
190
|
+
))
|
|
191
|
+
).filter(
|
|
192
|
+
(wallet, index, self) => !(wallet.id === "com.warpcast.mobile" && self.find((w) => w.id === "farcaster"))
|
|
193
|
+
).sort((a, b) => {
|
|
194
|
+
const aIsInstalledInjected = a.isInstalled && isInjectedConnector(a.connector?.type);
|
|
195
|
+
const bIsInstalledInjected = b.isInstalled && isInjectedConnector(b.connector?.type);
|
|
196
|
+
if (aIsInstalledInjected && !bIsInstalledInjected) return -1;
|
|
197
|
+
if (!aIsInstalledInjected && bIsInstalledInjected) return 1;
|
|
198
|
+
return 0;
|
|
199
|
+
}).sort((a, b) => {
|
|
200
|
+
if (a.id === WALLET_ID_MOBILE_WALLETS) return 1;
|
|
201
|
+
if (b.id === WALLET_ID_MOBILE_WALLETS) return -1;
|
|
202
|
+
return 0;
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
export { WALLET_ID_MOBILE_WALLETS, WALLET_ID_OTHER_WALLET, useWallet, useWallets };
|
|
207
|
+
//# sourceMappingURL=useWallets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWallets.js","sources":["../../../../src/wallets/useWallets.tsx"],"sourcesContent":["import { assertNotNull } from \"@daimo/pay-common\";\nimport { Connector } from \"wagmi\";\n\nimport { useWallet as useSolanaWalletAdapter } from \"@solana/wallet-adapter-react\";\nimport Logos, { SquircleIcon, WalletIcon } from \"../assets/logos\";\nimport MobileWithLogos from \"../assets/MobileWithLogos\";\nimport { useConnectors } from \"../hooks/useConnectors\";\nimport useLocales from \"../hooks/useLocales\";\nimport { usePayContext } from \"../hooks/usePayContext\";\nimport { SolanaWalletName } from \"../provider/SolanaContextProvider\";\nimport {\n flattenChildren,\n isBaseAccountConnector,\n isGeminiConnector,\n isInjectedConnector,\n} from \"../utils\";\nimport { WalletConfigProps, walletConfigs } from \"./walletConfigs\";\n\n/** Special wallet ID for \"other wallets\" option. */\nexport const WALLET_ID_OTHER_WALLET = \"otherWallet\";\n/** Special wallet ID for \"mobile wallets\" option. */\nexport const WALLET_ID_MOBILE_WALLETS = \"mobileWallets\";\n\nexport type WalletProps = {\n id: string;\n connector?: Connector;\n isInstalled?: boolean;\n /** Name of the matching Solana wallet adapter (if any) */\n solanaConnectorName?: SolanaWalletName;\n} & WalletConfigProps;\n\nexport const useWallet = (id: string): WalletProps | null => {\n const wallets = useWallets();\n const wallet = wallets.find((c) => c.id === id);\n if (!wallet) return null;\n return wallet;\n};\n\nexport const useWallets = (isMobile?: boolean): WalletProps[] => {\n const connectors = useConnectors();\n const context = usePayContext();\n const { showSolanaPaymentMethod } = context.paymentState;\n const { disableMobileInjector } = context;\n // Solana wallets available in the session (desktop & mobile)\n const solanaWallet = useSolanaWalletAdapter();\n const locales = useLocales();\n if (isMobile) {\n const mobileWallets: WalletProps[] = [];\n\n // Add injected wallet (if any) first, unless disabled\n if (!disableMobileInjector) {\n connectors.forEach((connector) => {\n if (isBaseAccountConnector(connector.id)) return;\n if (isGeminiConnector(connector.id)) return;\n if (!isInjectedConnector(connector.type)) return;\n // Skip any connectors that mention WalletConnect\n if (connector.name?.toLowerCase().includes(\"walletconnect\")) return;\n mobileWallets.push({\n id: connector.id,\n connector,\n shortName: connector.name,\n iconConnector: connector.icon ? (\n <img src={connector.icon} alt={connector.name} />\n ) : (\n <WalletIcon />\n ),\n iconShape: \"squircle\",\n });\n });\n }\n\n function addIfNotPresent(idList: string) {\n if (mobileWallets.find((w) => idList.includes(w.id))) return;\n if (mobileWallets.length >= 3) return;\n const wallet = assertNotNull(\n walletConfigs[idList],\n () => `missing ${idList}`,\n );\n mobileWallets.push({\n id: idList,\n ...wallet,\n });\n }\n\n addIfNotPresent(\n \"metaMask, metaMask-io, io.metamask, io.metamask.mobile, metaMaskSDK\",\n );\n addIfNotPresent(\"com.trustwallet.app\");\n const otherWalletsString = flattenChildren(locales.otherWallets).join(\"\");\n const otherString = flattenChildren(locales.other).join(\"\");\n // Add other wallet\n mobileWallets.push({\n id: WALLET_ID_OTHER_WALLET,\n name: otherWalletsString,\n shortName: otherString,\n iconConnector: <Logos.OtherWallets />,\n iconShape: \"square\",\n showInMobileConnectors: false,\n });\n\n return mobileWallets;\n }\n\n const wallets = connectors.map((connector): WalletProps => {\n // First, attempt to find a config by matching connector.id (existing logic).\n let walletConfigKey: string | undefined = Object.keys(walletConfigs).find(\n (id) =>\n id\n .split(\",\")\n .map((i) => i.trim())\n .includes(connector.id),\n );\n\n // If not found by id, attempt a fuzzy match on connector.name.\n if (!walletConfigKey && connector.name) {\n walletConfigKey = Object.keys(walletConfigs).find((key) => {\n const cfgName = walletConfigs[key].name?.toLowerCase();\n const connName = connector.name!.toLowerCase();\n return (\n cfgName && (cfgName.includes(connName) || connName.includes(cfgName))\n );\n });\n }\n\n const c: WalletProps = {\n id: connector.id,\n name: connector.name ?? connector.id ?? connector.type,\n icon: connector.icon ? (\n <img\n src={connector.icon}\n alt={connector.name}\n width={\"100%\"}\n height={\"100%\"}\n />\n ) : (\n <WalletIcon />\n ),\n connector,\n iconShape: connector.id === \"io.rabby\" ? \"circle\" : \"squircle\",\n isInstalled:\n connector.type === \"mock\" ||\n (connector.type === \"injected\" && connector.id !== \"metaMask\") ||\n connector.type === \"farcasterFrame\" ||\n isBaseAccountConnector(connector.id) ||\n isGeminiConnector(connector.id),\n };\n\n if (walletConfigKey) {\n const wallet = walletConfigs[walletConfigKey];\n return {\n ...c,\n iconConnector: connector.icon ? (\n <img\n src={connector.icon}\n alt={connector.name}\n width={\"100%\"}\n height={\"100%\"}\n />\n ) : undefined,\n ...wallet,\n };\n }\n\n return c;\n });\n\n wallets.push(walletConfigs.world as WalletProps);\n\n wallets.push({\n id: WALLET_ID_MOBILE_WALLETS,\n name: \"Mobile Wallets\",\n shortName: \"Mobile\",\n icon: (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: \"scale(1.2)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n ),\n iconConnector: (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: \"scale(1.2)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n ),\n });\n\n if (showSolanaPaymentMethod) {\n const solanaAdapters = solanaWallet.wallets ?? [];\n\n // Merge by fuzzy name matching (includes comparison)\n wallets.forEach((w) => {\n // Skip wallets without a usable name to avoid matching everything\n if (!w.name) return;\n\n const evm = w.name.toLowerCase();\n const match = solanaAdapters.find((sw) => {\n const sol = sw.adapter.name.toLowerCase();\n return evm.includes(sol) || sol.includes(evm);\n });\n\n if (match) {\n w.solanaConnectorName = match.adapter.name;\n }\n });\n\n const unmatched = solanaAdapters.filter(\n (sw) => !wallets.find((w) => w.solanaConnectorName === sw.adapter.name),\n );\n\n unmatched.forEach((sw) => {\n wallets.push({\n id: `solana-${sw.adapter.name}`,\n name: sw.adapter.name,\n shortName: sw.adapter.name,\n icon: <SquircleIcon icon={sw.adapter.icon} alt={sw.adapter.name} />,\n iconConnector: (\n <SquircleIcon icon={sw.adapter.icon} alt={sw.adapter.name} />\n ),\n iconShape: \"squircle\",\n solanaConnectorName: sw.adapter.name,\n });\n });\n }\n\n return (\n wallets\n // remove duplicate ids\n .filter(\n (wallet, index, self) =>\n self.findIndex((w) => w.id === wallet.id) === index,\n )\n // remove wallet with id coinbaseWalletSDK if wallet with id 'com.coinbase.wallet' exists\n .filter(\n (wallet, index, self) =>\n !(\n wallet.id === \"coinbaseWalletSDK\" &&\n self.find((w) => w.id === \"com.coinbase.wallet\")\n ),\n )\n // remove wallet with id io.metamask if wallet with id 'metaMask' exists\n .filter(\n (wallet, index, self) =>\n !(\n (wallet.id === \"metaMaskSDK\" || wallet.id === \"metaMask\") &&\n self.find(\n (w) => w.id === \"io.metamask\" || w.id === \"io.metamask.mobile\",\n )\n ),\n )\n // remove wallet with id 'com.warpcast.mobile' if wallet with id 'farcaster' exists\n .filter(\n (wallet, index, self) =>\n !(\n wallet.id === \"com.warpcast.mobile\" &&\n self.find((w) => w.id === \"farcaster\")\n ),\n )\n // order by isInstalled injected connectors first\n .sort((a, b) => {\n const aIsInstalledInjected =\n a.isInstalled && isInjectedConnector(a.connector?.type);\n const bIsInstalledInjected =\n b.isInstalled && isInjectedConnector(b.connector?.type);\n\n if (aIsInstalledInjected && !bIsInstalledInjected) return -1;\n if (!aIsInstalledInjected && bIsInstalledInjected) return 1;\n return 0;\n })\n // order \"mobile wallets\" option last\n .sort((a, b) => {\n if (a.id === WALLET_ID_MOBILE_WALLETS) return 1;\n if (b.id === WALLET_ID_MOBILE_WALLETS) return -1;\n return 0;\n })\n );\n};\n"],"names":["useSolanaWalletAdapter","addIfNotPresent"],"mappings":"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"}
|