@daimo/pay 0.3.21 → 1.0.1
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/index.d.ts +132 -301
- package/build/package.json.js +103 -0
- package/build/package.json.js.map +1 -0
- package/build/src/assets/ScanIconWithLogos.js +34 -0
- package/build/src/assets/ScanIconWithLogos.js.map +1 -0
- package/build/src/assets/browsers.js +13 -0
- package/build/src/assets/browsers.js.map +1 -0
- package/build/src/assets/chains.js +152 -0
- package/build/src/assets/chains.js.map +1 -0
- package/build/src/assets/coins.js +6 -0
- package/build/src/assets/coins.js.map +1 -0
- package/build/src/assets/crepe.js +8 -0
- package/build/src/assets/crepe.js.map +1 -0
- package/build/src/assets/icons.js +28 -0
- package/build/src/assets/icons.js.map +1 -0
- package/build/src/assets/logos.js +131 -0
- package/build/src/assets/logos.js.map +1 -0
- package/build/src/assets/wallet.js +8 -0
- package/build/src/assets/wallet.js.map +1 -0
- package/build/src/assets/wave.js +6 -0
- package/build/src/assets/wave.js.map +1 -0
- package/build/src/components/Common/Alert/index.js +10 -0
- package/build/src/components/Common/Alert/index.js.map +1 -0
- package/build/src/components/Common/Alert/styles.js +55 -0
- package/build/src/components/Common/Alert/styles.js.map +1 -0
- package/build/src/components/Common/Avatar/index.js +66 -0
- package/build/src/components/Common/Avatar/index.js.map +1 -0
- package/build/src/components/Common/Avatar/styles.js +59 -0
- package/build/src/components/Common/Avatar/styles.js.map +1 -0
- package/build/src/components/Common/BrowserIcon/index.js +28 -0
- package/build/src/components/Common/BrowserIcon/index.js.map +1 -0
- package/build/src/components/Common/BrowserIcon/styles.js +20 -0
- package/build/src/components/Common/BrowserIcon/styles.js.map +1 -0
- package/build/src/components/Common/Button/index.js +38 -0
- package/build/src/components/Common/Button/index.js.map +1 -0
- package/build/src/components/Common/Button/styles.js +291 -0
- package/build/src/components/Common/Button/styles.js.map +1 -0
- package/build/src/components/Common/Chain/index.js +25 -0
- package/build/src/components/Common/Chain/index.js.map +1 -0
- package/build/src/components/Common/Chain/styles.js +94 -0
- package/build/src/components/Common/Chain/styles.js.map +1 -0
- package/build/src/components/Common/ChainSelectList/index.js +107 -0
- package/build/src/components/Common/ChainSelectList/index.js.map +1 -0
- package/build/src/components/Common/ChainSelectList/styles.js +228 -0
- package/build/src/components/Common/ChainSelectList/styles.js.map +1 -0
- package/build/src/components/Common/ConnectorList/index.js +70 -0
- package/build/src/components/Common/ConnectorList/index.js.map +1 -0
- package/build/src/components/Common/ConnectorList/styles.js +314 -0
- package/build/src/components/Common/ConnectorList/styles.js.map +1 -0
- package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +71 -0
- package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -0
- package/build/src/components/Common/CopyToClipboard/index.js +51 -0
- package/build/src/components/Common/CopyToClipboard/index.js.map +1 -0
- package/build/src/components/Common/CustomQRCode/QRCode.js +69 -0
- package/build/src/components/Common/CustomQRCode/QRCode.js.map +1 -0
- package/build/src/components/Common/CustomQRCode/index.js +22 -0
- package/build/src/components/Common/CustomQRCode/index.js.map +1 -0
- package/build/src/components/Common/CustomQRCode/styles.js +155 -0
- package/build/src/components/Common/CustomQRCode/styles.js.map +1 -0
- package/build/src/components/Common/FitText/index.js +27 -0
- package/build/src/components/Common/FitText/index.js.map +1 -0
- package/build/src/components/Common/Modal/index.js +297 -0
- package/build/src/components/Common/Modal/index.js.map +1 -0
- package/build/src/components/Common/Modal/styles.js +660 -0
- package/build/src/components/Common/Modal/styles.js.map +1 -0
- package/build/src/components/Common/OptionsList/index.js +106 -0
- package/build/src/components/Common/OptionsList/index.js.map +1 -0
- package/build/src/components/Common/OptionsList/styles.js +165 -0
- package/build/src/components/Common/OptionsList/styles.js.map +1 -0
- package/build/src/components/Common/OrderHeader/index.js +215 -0
- package/build/src/components/Common/OrderHeader/index.js.map +1 -0
- package/build/src/components/Common/Portal/index.js +31 -0
- package/build/src/components/Common/Portal/index.js.map +1 -0
- package/build/src/components/Common/PoweredByFooter/index.js +44 -0
- package/build/src/components/Common/PoweredByFooter/index.js.map +1 -0
- package/build/src/components/Common/ScrollArea/index.js +62 -0
- package/build/src/components/Common/ScrollArea/index.js.map +1 -0
- package/build/src/components/Common/ScrollArea/styles.js +168 -0
- package/build/src/components/Common/ScrollArea/styles.js.map +1 -0
- package/build/src/components/Common/Spinner/index.js +24 -0
- package/build/src/components/Common/Spinner/index.js.map +1 -0
- package/build/src/components/Common/Spinner/styles.js +22 -0
- package/build/src/components/Common/Spinner/styles.js.map +1 -0
- package/build/src/components/Common/ThemedButton/index.js +25 -0
- package/build/src/components/Common/ThemedButton/index.js.map +1 -0
- package/build/src/components/Common/ThemedButton/styles.js +152 -0
- package/build/src/components/Common/ThemedButton/styles.js.map +1 -0
- package/build/src/components/Common/Tooltip/index.js +97 -0
- package/build/src/components/Common/Tooltip/index.js.map +1 -0
- package/build/src/components/Common/Tooltip/styles.js +81 -0
- package/build/src/components/Common/Tooltip/styles.js.map +1 -0
- package/build/src/components/DaimoPay.js +232 -0
- package/build/src/components/DaimoPay.js.map +1 -0
- package/build/src/components/DaimoPayButton/index.js +129 -0
- package/build/src/components/DaimoPayButton/index.js.map +1 -0
- package/build/src/components/DaimoPayButton/styles.js +50 -0
- package/build/src/components/DaimoPayButton/styles.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectUsing.js +45 -0
- package/build/src/components/DaimoPayModal/ConnectUsing.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +202 -0
- package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +133 -0
- package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +75 -0
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -0
- package/build/src/components/DaimoPayModal/index.js +140 -0
- package/build/src/components/DaimoPayModal/index.js.map +1 -0
- package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +21 -0
- package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -0
- package/build/src/components/Pages/About/graphics.js +187 -0
- package/build/src/components/Pages/About/graphics.js.map +1 -0
- package/build/src/components/Pages/About/index.js +131 -0
- package/build/src/components/Pages/About/index.js.map +1 -0
- package/build/src/components/Pages/About/styles.js +144 -0
- package/build/src/components/Pages/About/styles.js.map +1 -0
- package/build/src/components/Pages/Confirmation/index.js +105 -0
- package/build/src/components/Pages/Confirmation/index.js.map +1 -0
- package/build/src/components/Pages/Connectors/index.js +20 -0
- package/build/src/components/Pages/Connectors/index.js.map +1 -0
- package/build/src/components/Pages/Connectors/styles.js +267 -0
- package/build/src/components/Pages/Connectors/styles.js.map +1 -0
- package/build/src/components/Pages/DownloadApp/index.js +30 -0
- package/build/src/components/Pages/DownloadApp/index.js.map +1 -0
- package/build/src/components/Pages/MobileConnectors/index.js +73 -0
- package/build/src/components/Pages/MobileConnectors/index.js.map +1 -0
- package/build/src/components/Pages/MobileConnectors/styles.js +65 -0
- package/build/src/components/Pages/MobileConnectors/styles.js.map +1 -0
- package/build/src/components/Pages/Onboarding/index.js +18 -0
- package/build/src/components/Pages/Onboarding/index.js.map +1 -0
- package/build/src/components/Pages/Onboarding/styles.js +229 -0
- package/build/src/components/Pages/Onboarding/styles.js.map +1 -0
- package/build/src/components/Pages/PayWithToken/index.js +204 -0
- package/build/src/components/Pages/PayWithToken/index.js.map +1 -0
- package/build/src/components/Pages/SelectDepositAddressChain/index.js +32 -0
- package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -0
- package/build/src/components/Pages/SelectMethod/index.js +113 -0
- package/build/src/components/Pages/SelectMethod/index.js.map +1 -0
- package/build/src/components/Pages/SelectToken/index.js +62 -0
- package/build/src/components/Pages/SelectToken/index.js.map +1 -0
- package/build/src/components/Pages/Solana/ConnectSolana/index.js +37 -0
- package/build/src/components/Pages/Solana/ConnectSolana/index.js.map +1 -0
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js +45 -0
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -0
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +85 -0
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -0
- package/build/src/components/Pages/Solana/SelectSolanaToken/index.js +38 -0
- package/build/src/components/Pages/Solana/SelectSolanaToken/index.js.map +1 -0
- package/build/src/components/Pages/SwitchNetworks/index.js +26 -0
- package/build/src/components/Pages/SwitchNetworks/index.js.map +1 -0
- package/build/src/components/Pages/WaitingDepositAddress/index.js +51 -0
- package/build/src/components/Pages/WaitingDepositAddress/index.js.map +1 -0
- package/build/src/components/Pages/WaitingOther/index.js +91 -0
- package/build/src/components/Pages/WaitingOther/index.js.map +1 -0
- package/build/src/components/Spinners/CircleSpinner/index.js +15 -0
- package/build/src/components/Spinners/CircleSpinner/index.js.map +1 -0
- package/build/src/components/Spinners/CircleSpinner/styles.js +118 -0
- package/build/src/components/Spinners/CircleSpinner/styles.js.map +1 -0
- package/build/src/components/Spinners/SquircleSpinner/index.js +15 -0
- package/build/src/components/Spinners/SquircleSpinner/index.js.map +1 -0
- package/build/src/components/Spinners/SquircleSpinner/styles.js +66 -0
- package/build/src/components/Spinners/SquircleSpinner/styles.js.map +1 -0
- package/build/src/components/contexts/solana/index.js +11 -0
- package/build/src/components/contexts/solana/index.js.map +1 -0
- package/build/src/components/contexts/web3/index.js +46 -0
- package/build/src/components/contexts/web3/index.js.map +1 -0
- package/build/src/constants/chainConfigs.js +306 -0
- package/build/src/constants/chainConfigs.js.map +1 -0
- package/build/src/constants/defaultTheme.js +6 -0
- package/build/src/constants/defaultTheme.js.map +1 -0
- package/build/src/defaultConfig.js +59 -0
- package/build/src/defaultConfig.js.map +1 -0
- package/build/src/defaultConnectors.js +43 -0
- package/build/src/defaultConnectors.js.map +1 -0
- package/build/src/hooks/connectors/useWalletConnectUri.js +93 -0
- package/build/src/hooks/connectors/useWalletConnectUri.js.map +1 -0
- package/build/src/hooks/useChainIsSupported.js +12 -0
- package/build/src/hooks/useChainIsSupported.js.map +1 -0
- package/build/src/hooks/useChains.js +11 -0
- package/build/src/hooks/useChains.js.map +1 -0
- package/build/src/hooks/useConnect.js +45 -0
- package/build/src/hooks/useConnect.js.map +1 -0
- package/build/src/hooks/useConnectCallback.js +18 -0
- package/build/src/hooks/useConnectCallback.js.map +1 -0
- package/build/src/hooks/useConnectors.js +29 -0
- package/build/src/hooks/useConnectors.js.map +1 -0
- package/build/src/hooks/useDaimoPayStatus.js +37 -0
- package/build/src/hooks/useDaimoPayStatus.js.map +1 -0
- package/build/src/hooks/useDepositAddressOptions.js +28 -0
- package/build/src/hooks/useDepositAddressOptions.js.map +1 -0
- package/build/src/hooks/useEnsFallbackConfig.js +16 -0
- package/build/src/hooks/useEnsFallbackConfig.js.map +1 -0
- package/build/src/hooks/useExternalPaymentOptions.js +46 -0
- package/build/src/hooks/useExternalPaymentOptions.js.map +1 -0
- package/build/src/hooks/useFitText.js +148 -0
- package/build/src/hooks/useFitText.js.map +1 -0
- package/build/src/hooks/useFocusTrap.js +60 -0
- package/build/src/hooks/useFocusTrap.js.map +1 -0
- package/build/src/hooks/useGoogleFont.js +45 -0
- package/build/src/hooks/useGoogleFont.js.map +1 -0
- package/build/src/hooks/useIsMobile.js +17 -0
- package/build/src/hooks/useIsMobile.js.map +1 -0
- package/build/src/hooks/useIsMounted.js +12 -0
- package/build/src/hooks/useIsMounted.js.map +1 -0
- package/build/src/hooks/useLastConnector.js +24 -0
- package/build/src/hooks/useLastConnector.js.map +1 -0
- package/build/src/hooks/useLocales.js +67 -0
- package/build/src/hooks/useLocales.js.map +1 -0
- package/build/src/hooks/useLockBodyScroll.js +53 -0
- package/build/src/hooks/useLockBodyScroll.js.map +1 -0
- package/build/src/hooks/useModal.js +35 -0
- package/build/src/hooks/useModal.js.map +1 -0
- package/build/src/hooks/usePayWithSolanaToken.js +50 -0
- package/build/src/hooks/usePayWithSolanaToken.js.map +1 -0
- package/build/src/hooks/usePayWithToken.js +57 -0
- package/build/src/hooks/usePayWithToken.js.map +1 -0
- package/build/src/hooks/usePaymentState.js +243 -0
- package/build/src/hooks/usePaymentState.js.map +1 -0
- package/build/src/hooks/usePrevious.js +14 -0
- package/build/src/hooks/usePrevious.js.map +1 -0
- package/build/src/hooks/useSolanaPaymentOptions.js +37 -0
- package/build/src/hooks/useSolanaPaymentOptions.js.map +1 -0
- package/build/src/hooks/useWalletConnectModal.js +52 -0
- package/build/src/hooks/useWalletConnectModal.js.map +1 -0
- package/build/src/hooks/useWalletPaymentOptions.js +40 -0
- package/build/src/hooks/useWalletPaymentOptions.js.map +1 -0
- package/build/src/hooks/useWindowSize.js +23 -0
- package/build/src/hooks/useWindowSize.js.map +1 -0
- package/build/src/index.js +10 -0
- package/build/src/index.js.map +1 -0
- package/build/src/localizations/index.js +57 -0
- package/build/src/localizations/index.js.map +1 -0
- package/build/src/localizations/locales/ar-AE.js +97 -0
- package/build/src/localizations/locales/ar-AE.js.map +1 -0
- package/build/src/localizations/locales/ca-AD.js +95 -0
- package/build/src/localizations/locales/ca-AD.js.map +1 -0
- package/build/src/localizations/locales/ee-EE.js +95 -0
- package/build/src/localizations/locales/ee-EE.js.map +1 -0
- package/build/src/localizations/locales/en-US.js +95 -0
- package/build/src/localizations/locales/en-US.js.map +1 -0
- package/build/src/localizations/locales/es-ES.js +95 -0
- package/build/src/localizations/locales/es-ES.js.map +1 -0
- package/build/src/localizations/locales/fa-IR.js +95 -0
- package/build/src/localizations/locales/fa-IR.js.map +1 -0
- package/build/src/localizations/locales/fr-FR.js +95 -0
- package/build/src/localizations/locales/fr-FR.js.map +1 -0
- package/build/src/localizations/locales/ja-JP.js +95 -0
- package/build/src/localizations/locales/ja-JP.js.map +1 -0
- package/build/src/localizations/locales/pt-BR.js +95 -0
- package/build/src/localizations/locales/pt-BR.js.map +1 -0
- package/build/src/localizations/locales/ru-RU.js +95 -0
- package/build/src/localizations/locales/ru-RU.js.map +1 -0
- package/build/src/localizations/locales/tr-TR.js +95 -0
- package/build/src/localizations/locales/tr-TR.js.map +1 -0
- package/build/src/localizations/locales/vi-VN.js +95 -0
- package/build/src/localizations/locales/vi-VN.js.map +1 -0
- package/build/src/localizations/locales/zh-CN.js +95 -0
- package/build/src/localizations/locales/zh-CN.js.map +1 -0
- package/build/src/styles/defaultTheme.js +89 -0
- package/build/src/styles/defaultTheme.js.map +1 -0
- package/build/src/styles/index.js +329 -0
- package/build/src/styles/index.js.map +1 -0
- package/build/src/styles/styled/index.js +16 -0
- package/build/src/styles/styled/index.js.map +1 -0
- package/build/src/styles/themes/base.js +141 -0
- package/build/src/styles/themes/base.js.map +1 -0
- package/build/src/styles/themes/index.js +13 -0
- package/build/src/styles/themes/index.js.map +1 -0
- package/build/src/styles/themes/midnight.js +76 -0
- package/build/src/styles/themes/midnight.js.map +1 -0
- package/build/src/styles/themes/minimal.js +96 -0
- package/build/src/styles/themes/minimal.js.map +1 -0
- package/build/src/styles/themes/nouns.js +81 -0
- package/build/src/styles/themes/nouns.js.map +1 -0
- package/build/src/styles/themes/retro.js +106 -0
- package/build/src/styles/themes/retro.js.map +1 -0
- package/build/src/styles/themes/rounded.js +106 -0
- package/build/src/styles/themes/rounded.js.map +1 -0
- package/build/src/styles/themes/soft.js +71 -0
- package/build/src/styles/themes/soft.js.map +1 -0
- package/build/src/styles/themes/web95.js +132 -0
- package/build/src/styles/themes/web95.js.map +1 -0
- package/build/src/utils/exports.js +12 -0
- package/build/src/utils/exports.js.map +1 -0
- package/build/src/utils/index.js +39 -0
- package/build/src/utils/index.js.map +1 -0
- package/build/src/utils/p3.js +16 -0
- package/build/src/utils/p3.js.map +1 -0
- package/build/src/utils/platform.js +13 -0
- package/build/src/utils/platform.js.map +1 -0
- package/build/src/utils/trpc.js +14 -0
- package/build/src/utils/trpc.js.map +1 -0
- package/build/src/utils/wallets.js +14 -0
- package/build/src/utils/wallets.js.map +1 -0
- package/build/src/wallets/index.js +32 -0
- package/build/src/wallets/index.js.map +1 -0
- package/build/src/wallets/useWallets.js +86 -0
- package/build/src/wallets/useWallets.js.map +1 -0
- package/build/src/wallets/walletConfigs.js +362 -0
- package/build/src/wallets/walletConfigs.js.map +1 -0
- package/package.json +5 -5
- package/build/index.es.js +0 -11565
- package/build/index.es.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { writeDaimoPayOrderID, DaimoPayOrderMode, DaimoPayIntentStatus, DaimoPayOrderStatusSource } from '@daimo/common';
|
|
2
|
+
import { usePayContext } from '../components/DaimoPay.js';
|
|
3
|
+
|
|
4
|
+
/** Returns the current payment, or undefined if there is none.
|
|
5
|
+
*
|
|
6
|
+
* Status values:
|
|
7
|
+
* - `payment_pending` - the user has not paid yet
|
|
8
|
+
* - `payment_started` - the user has paid & payment is in progress. This status
|
|
9
|
+
* typically lasts a few seconds.
|
|
10
|
+
* - `payment_completed` - the final call or transfer succeeded
|
|
11
|
+
* - `payment_bounced` - the final call or transfer reverted. Funds were sent
|
|
12
|
+
* to the payment's configured refund address on the destination chain.
|
|
13
|
+
*/
|
|
14
|
+
function useDaimoPayStatus() {
|
|
15
|
+
const { paymentState } = usePayContext();
|
|
16
|
+
if (!paymentState || !paymentState.daimoPayOrder)
|
|
17
|
+
return undefined;
|
|
18
|
+
const order = paymentState.daimoPayOrder;
|
|
19
|
+
const paymentId = writeDaimoPayOrderID(order.id);
|
|
20
|
+
if (order.mode === DaimoPayOrderMode.HYDRATED) {
|
|
21
|
+
if (order.intentStatus !== DaimoPayIntentStatus.PENDING) {
|
|
22
|
+
if (order.intentStatus === DaimoPayIntentStatus.SUCCESSFUL) {
|
|
23
|
+
return { paymentId, status: "payment_completed" };
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return { paymentId, status: "payment_bounced" };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else if (order.sourceStatus !== DaimoPayOrderStatusSource.WAITING_PAYMENT) {
|
|
30
|
+
return { paymentId, status: "payment_started" };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { paymentId, status: "payment_pending" };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { useDaimoPayStatus };
|
|
37
|
+
//# sourceMappingURL=useDaimoPayStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDaimoPayStatus.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
function useDepositAddressOptions({ trpc, usdRequired, }) {
|
|
4
|
+
const [options, setOptions] = useState([]);
|
|
5
|
+
const [loading, setLoading] = useState(false);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
const refreshDepositAddressOptions = async () => {
|
|
8
|
+
setLoading(true);
|
|
9
|
+
try {
|
|
10
|
+
const options = await trpc.getDepositAddressOptions.query({
|
|
11
|
+
usdRequired,
|
|
12
|
+
});
|
|
13
|
+
setOptions(options);
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
console.error(e);
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
setLoading(false);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
refreshDepositAddressOptions();
|
|
23
|
+
}, [usdRequired]);
|
|
24
|
+
return { options, loading };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { useDepositAddressOptions };
|
|
28
|
+
//# sourceMappingURL=useDepositAddressOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDepositAddressOptions.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createConfig, http } from 'wagmi';
|
|
2
|
+
import { mainnet } from 'wagmi/chains';
|
|
3
|
+
import { useChainIsSupported } from './useChainIsSupported.js';
|
|
4
|
+
|
|
5
|
+
const ensFallbackConfig = createConfig({
|
|
6
|
+
chains: [mainnet],
|
|
7
|
+
transports: {
|
|
8
|
+
[mainnet.id]: http(),
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
function useEnsFallbackConfig() {
|
|
12
|
+
return !useChainIsSupported(1) ? ensFallbackConfig : undefined;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { useEnsFallbackConfig };
|
|
16
|
+
//# sourceMappingURL=useEnsFallbackConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEnsFallbackConfig.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ExternalPaymentOptions } from '@daimo/common';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_EXTERNAL_PAYMENT_OPTIONS = [
|
|
5
|
+
ExternalPaymentOptions.Coinbase,
|
|
6
|
+
ExternalPaymentOptions.Binance,
|
|
7
|
+
ExternalPaymentOptions.Daimo,
|
|
8
|
+
ExternalPaymentOptions.RampNetwork,
|
|
9
|
+
];
|
|
10
|
+
function useExternalPaymentOptions({ trpc, filterIds, usdRequired, platform, }) {
|
|
11
|
+
const [options, setOptions] = useState([]);
|
|
12
|
+
const [loading, setLoading] = useState(false);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const refreshExternalPaymentOptions = async (usd) => {
|
|
15
|
+
if (!platform)
|
|
16
|
+
return;
|
|
17
|
+
setLoading(true);
|
|
18
|
+
try {
|
|
19
|
+
const newOptions = await trpc.getExternalPaymentOptions.query({
|
|
20
|
+
usdRequired: usd,
|
|
21
|
+
platform,
|
|
22
|
+
});
|
|
23
|
+
// Filter out options not in options JSON
|
|
24
|
+
const enabledExtPaymentOptions = filterIds || DEFAULT_EXTERNAL_PAYMENT_OPTIONS;
|
|
25
|
+
const filteredOptions = newOptions.filter((option) => enabledExtPaymentOptions.includes(option.id));
|
|
26
|
+
setOptions(filteredOptions);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error(error);
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
setLoading(false);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
if (usdRequired != null) {
|
|
36
|
+
refreshExternalPaymentOptions(usdRequired);
|
|
37
|
+
}
|
|
38
|
+
}, [usdRequired, filterIds, platform]);
|
|
39
|
+
return {
|
|
40
|
+
options,
|
|
41
|
+
loading,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { useExternalPaymentOptions };
|
|
46
|
+
//# sourceMappingURL=useExternalPaymentOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useExternalPaymentOptions.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { useCallback, useRef, useState, useEffect, useLayoutEffect } from 'react';
|
|
2
|
+
import ResizeObserver from 'resize-observer-polyfill';
|
|
3
|
+
|
|
4
|
+
// https://github.com/saltycrane/use-fit-text
|
|
5
|
+
const LOG_LEVEL = {
|
|
6
|
+
debug: 10,
|
|
7
|
+
info: 20,
|
|
8
|
+
warn: 30,
|
|
9
|
+
error: 40,
|
|
10
|
+
none: 100,
|
|
11
|
+
};
|
|
12
|
+
// Suppress `useLayoutEffect` warning when rendering on the server
|
|
13
|
+
// https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85
|
|
14
|
+
const useIsoLayoutEffect = typeof window !== "undefined" &&
|
|
15
|
+
window.document &&
|
|
16
|
+
window.document.createElement !== undefined
|
|
17
|
+
? useLayoutEffect
|
|
18
|
+
: useEffect;
|
|
19
|
+
const useFitText = ({ logLevel: logLevelOption = "info", maxFontSize = 100, minFontSize = 20, onFinish, onStart, resolution = 5, } = {}) => {
|
|
20
|
+
const logLevel = LOG_LEVEL[logLevelOption];
|
|
21
|
+
const initState = useCallback(() => {
|
|
22
|
+
return {
|
|
23
|
+
calcKey: 0,
|
|
24
|
+
fontSize: maxFontSize,
|
|
25
|
+
fontSizePrev: minFontSize,
|
|
26
|
+
fontSizeMax: maxFontSize,
|
|
27
|
+
fontSizeMin: minFontSize,
|
|
28
|
+
};
|
|
29
|
+
}, [maxFontSize, minFontSize]);
|
|
30
|
+
const ref = useRef(null);
|
|
31
|
+
const innerHtmlPrevRef = useRef();
|
|
32
|
+
const isCalculatingRef = useRef(false);
|
|
33
|
+
const [state, setState] = useState(initState);
|
|
34
|
+
const { calcKey, fontSize, fontSizeMax, fontSizeMin, fontSizePrev } = state;
|
|
35
|
+
// Montior div size changes and recalculate on resize
|
|
36
|
+
let animationFrameId = null;
|
|
37
|
+
const [ro] = useState(() => new ResizeObserver(() => {
|
|
38
|
+
animationFrameId = window.requestAnimationFrame(() => {
|
|
39
|
+
if (isCalculatingRef.current) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
onStart && onStart();
|
|
43
|
+
isCalculatingRef.current = true;
|
|
44
|
+
// `calcKey` is used in the dependencies array of
|
|
45
|
+
// `useIsoLayoutEffect` below. It is incremented so that the font size
|
|
46
|
+
// will be recalculated even if the previous state didn't change (e.g.
|
|
47
|
+
// when the text fit initially).
|
|
48
|
+
setState({
|
|
49
|
+
...initState(),
|
|
50
|
+
calcKey: calcKey + 1,
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}));
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
if (ref.current) {
|
|
56
|
+
ro.observe(ref.current);
|
|
57
|
+
}
|
|
58
|
+
return () => {
|
|
59
|
+
animationFrameId && window.cancelAnimationFrame(animationFrameId);
|
|
60
|
+
ro.disconnect();
|
|
61
|
+
};
|
|
62
|
+
}, [animationFrameId, ro]);
|
|
63
|
+
// Recalculate when the div contents change
|
|
64
|
+
const innerHtml = ref.current && ref.current.innerHTML;
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
if (calcKey === 0 || isCalculatingRef.current)
|
|
67
|
+
return;
|
|
68
|
+
if (innerHtml !== innerHtmlPrevRef.current) {
|
|
69
|
+
onStart && onStart();
|
|
70
|
+
setState({
|
|
71
|
+
...initState(),
|
|
72
|
+
calcKey: calcKey + 1,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
innerHtmlPrevRef.current = innerHtml;
|
|
76
|
+
}, [calcKey, initState, innerHtml, onStart]);
|
|
77
|
+
// Check overflow and resize font
|
|
78
|
+
useIsoLayoutEffect(() => {
|
|
79
|
+
// Don't start calculating font size until the `resizeKey` is incremented
|
|
80
|
+
// above in the `ResizeObserver` callback. This avoids an extra resize
|
|
81
|
+
// on initialization.
|
|
82
|
+
if (calcKey === 0) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const isWithinResolution = Math.abs(fontSize - fontSizePrev) <= resolution;
|
|
86
|
+
const isOverflow = !!ref.current &&
|
|
87
|
+
(ref.current.scrollHeight > ref.current.offsetHeight ||
|
|
88
|
+
ref.current.scrollWidth > ref.current.offsetWidth);
|
|
89
|
+
const isFailed = isOverflow && fontSize === fontSizePrev;
|
|
90
|
+
const isAsc = fontSize > fontSizePrev;
|
|
91
|
+
// Return if the font size has been adjusted "enough" (change within `resolution`)
|
|
92
|
+
// reduce font size by one increment if it's overflowing.
|
|
93
|
+
if (isWithinResolution) {
|
|
94
|
+
if (isFailed) {
|
|
95
|
+
isCalculatingRef.current = false;
|
|
96
|
+
if (logLevel <= LOG_LEVEL.info) {
|
|
97
|
+
console.info(`[use-fit-text] reached \`minFontSize = ${minFontSize}\` without fitting text`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else if (isOverflow) {
|
|
101
|
+
setState({
|
|
102
|
+
fontSize: isAsc ? fontSizePrev : fontSizeMin,
|
|
103
|
+
fontSizeMax,
|
|
104
|
+
fontSizeMin,
|
|
105
|
+
fontSizePrev,
|
|
106
|
+
calcKey,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
isCalculatingRef.current = false;
|
|
111
|
+
onFinish && onFinish(fontSize);
|
|
112
|
+
}
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Binary search to adjust font size
|
|
116
|
+
let delta;
|
|
117
|
+
let newMax = fontSizeMax;
|
|
118
|
+
let newMin = fontSizeMin;
|
|
119
|
+
if (isOverflow) {
|
|
120
|
+
delta = isAsc ? fontSizePrev - fontSize : fontSizeMin - fontSize;
|
|
121
|
+
newMax = Math.min(fontSizeMax, fontSize);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
delta = isAsc ? fontSizeMax - fontSize : fontSizePrev - fontSize;
|
|
125
|
+
newMin = Math.max(fontSizeMin, fontSize);
|
|
126
|
+
}
|
|
127
|
+
setState({
|
|
128
|
+
calcKey,
|
|
129
|
+
fontSize: fontSize + delta / 2,
|
|
130
|
+
fontSizeMax: newMax,
|
|
131
|
+
fontSizeMin: newMin,
|
|
132
|
+
fontSizePrev: fontSize,
|
|
133
|
+
});
|
|
134
|
+
}, [
|
|
135
|
+
calcKey,
|
|
136
|
+
fontSize,
|
|
137
|
+
fontSizeMax,
|
|
138
|
+
fontSizeMin,
|
|
139
|
+
fontSizePrev,
|
|
140
|
+
onFinish,
|
|
141
|
+
ref,
|
|
142
|
+
resolution,
|
|
143
|
+
]);
|
|
144
|
+
return { fontSize, ref };
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
export { useFitText as default };
|
|
148
|
+
//# sourceMappingURL=useFitText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFitText.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
|
|
4
|
+
const KEYCODE_TAB = 9;
|
|
5
|
+
function useFocusTrap() {
|
|
6
|
+
const elRef = useRef(null);
|
|
7
|
+
function handleFocus(e) {
|
|
8
|
+
if (!elRef.current)
|
|
9
|
+
return;
|
|
10
|
+
var focusableEls = elRef.current.querySelectorAll(`
|
|
11
|
+
a[href]:not(:disabled),
|
|
12
|
+
button:not(:disabled),
|
|
13
|
+
textarea:not(:disabled),
|
|
14
|
+
input[type="text"]:not(:disabled),
|
|
15
|
+
input[type="radio"]:not(:disabled),
|
|
16
|
+
input[type="checkbox"]:not(:disabled),
|
|
17
|
+
select:not(:disabled)
|
|
18
|
+
`), firstFocusableEl = focusableEls[0], lastFocusableEl = focusableEls[focusableEls.length - 1];
|
|
19
|
+
var isTabPressed = e.key === "Tab" || e.keyCode === KEYCODE_TAB;
|
|
20
|
+
if (!isTabPressed) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (e.shiftKey) {
|
|
24
|
+
/* shift + tab */ if (document.activeElement === firstFocusableEl) {
|
|
25
|
+
lastFocusableEl.focus();
|
|
26
|
+
e.preventDefault();
|
|
27
|
+
}
|
|
28
|
+
} /* tab */
|
|
29
|
+
else {
|
|
30
|
+
if (document.activeElement === lastFocusableEl) {
|
|
31
|
+
firstFocusableEl.focus();
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (elRef.current) {
|
|
38
|
+
elRef.current.addEventListener("keydown", handleFocus);
|
|
39
|
+
elRef.current.focus({ preventScroll: true });
|
|
40
|
+
}
|
|
41
|
+
return () => {
|
|
42
|
+
if (elRef.current) {
|
|
43
|
+
elRef.current.removeEventListener("keydown", handleFocus);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}, []);
|
|
47
|
+
return elRef;
|
|
48
|
+
}
|
|
49
|
+
function FocusTrap(props) {
|
|
50
|
+
const elRef = useFocusTrap();
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (!elRef.current)
|
|
53
|
+
return;
|
|
54
|
+
elRef.current.focus({ preventScroll: true });
|
|
55
|
+
}, []);
|
|
56
|
+
return (jsx("div", { ref: elRef, tabIndex: 0, children: props.children }));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { FocusTrap as default };
|
|
60
|
+
//# sourceMappingURL=useFocusTrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFocusTrap.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
function useGoogleFont(font) {
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (!font)
|
|
6
|
+
return;
|
|
7
|
+
font = font.replace(/ /g, "+");
|
|
8
|
+
const googleapis = document.createElement("link");
|
|
9
|
+
googleapis.href = `https://fonts.googleapis.com`;
|
|
10
|
+
googleapis.rel = "preconnect";
|
|
11
|
+
const gstatic = document.createElement("link");
|
|
12
|
+
gstatic.href = `https://fonts.gstatic.com`;
|
|
13
|
+
gstatic.rel = "preconnect";
|
|
14
|
+
gstatic.crossOrigin = "true";
|
|
15
|
+
const link = document.createElement("link");
|
|
16
|
+
link.href = `https://fonts.googleapis.com/css2?family=${font}:wght@400;500;600&display=swap`;
|
|
17
|
+
link.rel = "stylesheet";
|
|
18
|
+
document.head.appendChild(googleapis);
|
|
19
|
+
document.head.appendChild(gstatic);
|
|
20
|
+
document.head.appendChild(link);
|
|
21
|
+
return () => {
|
|
22
|
+
try {
|
|
23
|
+
document.head.removeChild(googleapis);
|
|
24
|
+
document.head.removeChild(gstatic);
|
|
25
|
+
document.head.removeChild(link);
|
|
26
|
+
}
|
|
27
|
+
catch { }
|
|
28
|
+
};
|
|
29
|
+
}, [font]);
|
|
30
|
+
}
|
|
31
|
+
// TODO: This could be dynamic if theming wasn't set up as css variables
|
|
32
|
+
function useThemeFont(theme) {
|
|
33
|
+
const themeFonts = {
|
|
34
|
+
web95: "Lato",
|
|
35
|
+
retro: "Nunito",
|
|
36
|
+
midnight: "Inter",
|
|
37
|
+
minimal: "Inter",
|
|
38
|
+
rounded: "Nunito",
|
|
39
|
+
};
|
|
40
|
+
const font = themeFonts[theme] ?? null;
|
|
41
|
+
useGoogleFont(font ?? "");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { useGoogleFont, useThemeFont };
|
|
45
|
+
//# sourceMappingURL=useGoogleFont.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGoogleFont.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
import { isMobile } from '../utils/index.js';
|
|
3
|
+
|
|
4
|
+
function useIsMobile() {
|
|
5
|
+
const [mobile, setMobile] = useState(isMobile());
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
const handleResize = () => {
|
|
8
|
+
setMobile(isMobile());
|
|
9
|
+
};
|
|
10
|
+
window.addEventListener("resize", handleResize);
|
|
11
|
+
return () => window.removeEventListener("resize", handleResize);
|
|
12
|
+
}, []);
|
|
13
|
+
return mobile;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { useIsMobile as default };
|
|
17
|
+
//# sourceMappingURL=useIsMobile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsMobile.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
/** Utility. Returns false on first render, true after.
|
|
4
|
+
* Useful for apps with SSR, for example. */
|
|
5
|
+
function useIsMounted() {
|
|
6
|
+
const [mounted, setMounted] = useState(false);
|
|
7
|
+
useEffect(() => setMounted(true), []);
|
|
8
|
+
return mounted;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { useIsMounted as default };
|
|
12
|
+
//# sourceMappingURL=useIsMounted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsMounted.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
import { useConfig } from 'wagmi';
|
|
3
|
+
|
|
4
|
+
const useLastConnector = () => {
|
|
5
|
+
const { storage } = useConfig();
|
|
6
|
+
const [lastConnectorId, setLastConnectorId] = useState(null);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const init = async () => {
|
|
9
|
+
const id = await storage?.getItem("recentConnectorId");
|
|
10
|
+
setLastConnectorId(id ?? "");
|
|
11
|
+
};
|
|
12
|
+
init();
|
|
13
|
+
}, []);
|
|
14
|
+
const update = (id) => {
|
|
15
|
+
storage?.setItem("recentConnectorId", id);
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
lastConnectorId,
|
|
19
|
+
updateLastConnectorId: update,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { useLastConnector };
|
|
24
|
+
//# sourceMappingURL=useLastConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLastConnector.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import React, { useMemo } from 'react';
|
|
3
|
+
import Logos from '../assets/logos.js';
|
|
4
|
+
import { usePayContext } from '../components/DaimoPay.js';
|
|
5
|
+
import { getLocale } from '../localizations/index.js';
|
|
6
|
+
|
|
7
|
+
function useLocales(replacements) {
|
|
8
|
+
const context = usePayContext();
|
|
9
|
+
const language = context.options?.language ?? "en-US";
|
|
10
|
+
const translations = useMemo(() => {
|
|
11
|
+
return getLocale(language);
|
|
12
|
+
}, [language]);
|
|
13
|
+
if (!translations) {
|
|
14
|
+
console.error(`Missing translations for: ${language}`);
|
|
15
|
+
return `Missing translations for: ${language}`;
|
|
16
|
+
}
|
|
17
|
+
const translated = {};
|
|
18
|
+
Object.keys(translations).map((key) => {
|
|
19
|
+
const string = translations[key];
|
|
20
|
+
return (translated[key] = localize(string, replacements));
|
|
21
|
+
});
|
|
22
|
+
return translated;
|
|
23
|
+
}
|
|
24
|
+
const localize = (text, replacements) => {
|
|
25
|
+
let parsedText = text;
|
|
26
|
+
if (replacements) {
|
|
27
|
+
Object.keys(replacements).forEach((key) => {
|
|
28
|
+
// use `replace` instead of `replaceAll` to support Node 14
|
|
29
|
+
parsedText = parsedText.replace(new RegExp(`({{ ${key} }})`, "g"), replacements[key]);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return replaceMarkdown(parsedText);
|
|
33
|
+
};
|
|
34
|
+
const replaceMarkdown = (markdownText) => {
|
|
35
|
+
let text = markdownText;
|
|
36
|
+
text = text.split("\n");
|
|
37
|
+
text = text.map((t, i) => {
|
|
38
|
+
return (jsxs(React.Fragment, { children: [wrapTags(t), i < text.length - 1 && jsx("br", {})] }, i));
|
|
39
|
+
});
|
|
40
|
+
return text;
|
|
41
|
+
};
|
|
42
|
+
const wrapTags = (text) => {
|
|
43
|
+
// Bold markdown handling
|
|
44
|
+
const textArray = text.split(/(\*\*[^\*]*\*\*)/g);
|
|
45
|
+
let result = textArray.map((str, i) => {
|
|
46
|
+
if (/(\*\*.*\*\*)/g.test(str)) {
|
|
47
|
+
// use `replace` instead of `replaceAll` to support Node 14
|
|
48
|
+
return jsx("strong", { children: str.replace(/\*\*/g, "") }, i);
|
|
49
|
+
}
|
|
50
|
+
return `${str}`;
|
|
51
|
+
});
|
|
52
|
+
// Replace text with logo
|
|
53
|
+
return result.map((r) => {
|
|
54
|
+
if (typeof r === "string") {
|
|
55
|
+
return r.split(/(\[WALLETCONNECTLOGO\])/g).map((s) => {
|
|
56
|
+
if (s === "[WALLETCONNECTLOGO]") {
|
|
57
|
+
return (jsx("span", { className: "ck-tt-logo", children: jsx(Logos.WalletConnect, {}) }, s));
|
|
58
|
+
}
|
|
59
|
+
return s;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return r;
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export { useLocales as default };
|
|
67
|
+
//# sourceMappingURL=useLocales.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocales.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useState, useEffect, useLayoutEffect } from 'react';
|
|
2
|
+
import { usePayContext } from '../components/DaimoPay.js';
|
|
3
|
+
|
|
4
|
+
const useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
|
|
5
|
+
function useLockBodyScroll(initialLocked) {
|
|
6
|
+
const [locked, setLocked] = useState(initialLocked);
|
|
7
|
+
const context = usePayContext();
|
|
8
|
+
useIsomorphicLayoutEffect(() => {
|
|
9
|
+
if (!locked)
|
|
10
|
+
return;
|
|
11
|
+
const original = {
|
|
12
|
+
overflow: document.body.style.overflow,
|
|
13
|
+
position: document.body.style.position,
|
|
14
|
+
touchAction: document.body.style.touchAction,
|
|
15
|
+
paddingRight: document.body.style.paddingRight,
|
|
16
|
+
//htmlOverflow: document.documentElement.style.overflow,
|
|
17
|
+
};
|
|
18
|
+
const style = getComputedStyle(document.body);
|
|
19
|
+
const offsetX = parseInt(style.marginRight) +
|
|
20
|
+
parseInt(style.paddingRight) +
|
|
21
|
+
parseInt(style.borderRight) +
|
|
22
|
+
parseInt(style.marginLeft) +
|
|
23
|
+
parseInt(style.paddingLeft) +
|
|
24
|
+
parseInt(style.borderLeft);
|
|
25
|
+
const scrollBarWidth = window.innerWidth - document.body.offsetWidth - offsetX;
|
|
26
|
+
document.documentElement.style.setProperty("--ck-scrollbar-width", `${scrollBarWidth}px`);
|
|
27
|
+
document.body.style.overflow = "hidden";
|
|
28
|
+
document.body.style.position = "relative";
|
|
29
|
+
document.body.style.touchAction = "none";
|
|
30
|
+
//document.documentElement.style.overflow = 'hidden'; // overflow:hidden; on <html> breaks position:sticky;
|
|
31
|
+
if (context.options?.avoidLayoutShift) {
|
|
32
|
+
document.body.style.paddingRight = `${scrollBarWidth}px`;
|
|
33
|
+
}
|
|
34
|
+
return () => {
|
|
35
|
+
document.documentElement.style.removeProperty("--ck-scrollbar-width");
|
|
36
|
+
document.body.style.overflow = original.overflow;
|
|
37
|
+
document.body.style.position = original.position;
|
|
38
|
+
document.body.style.touchAction = original.touchAction;
|
|
39
|
+
//document.documentElement.style.overflow = original.htmlOverflow;
|
|
40
|
+
if (context.options?.avoidLayoutShift) {
|
|
41
|
+
document.body.style.paddingRight = original.paddingRight;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}, [locked]);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (locked !== initialLocked)
|
|
47
|
+
setLocked(initialLocked);
|
|
48
|
+
}, [initialLocked]);
|
|
49
|
+
return [locked, setLocked];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export { useLockBodyScroll as default };
|
|
53
|
+
//# sourceMappingURL=useLockBodyScroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLockBodyScroll.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { usePayContext, ROUTES } from '../components/DaimoPay.js';
|
|
2
|
+
import { useConnectCallback } from './useConnectCallback.js';
|
|
3
|
+
|
|
4
|
+
/** Opens and closes the payment modal. */
|
|
5
|
+
const useModal = ({ onConnect, onDisconnect } = {}) => {
|
|
6
|
+
const context = usePayContext();
|
|
7
|
+
useConnectCallback({
|
|
8
|
+
onConnect,
|
|
9
|
+
onDisconnect,
|
|
10
|
+
});
|
|
11
|
+
const close = () => {
|
|
12
|
+
context.setOpen(false);
|
|
13
|
+
};
|
|
14
|
+
const open = () => {
|
|
15
|
+
context.setOpen(true);
|
|
16
|
+
};
|
|
17
|
+
const gotoAndOpen = (route) => {
|
|
18
|
+
context.setRoute(route);
|
|
19
|
+
open();
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
open: context.open,
|
|
23
|
+
setOpen: (show) => {
|
|
24
|
+
if (show) {
|
|
25
|
+
gotoAndOpen(ROUTES.SELECT_METHOD);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
close();
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { useModal };
|
|
35
|
+
//# sourceMappingURL=useModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useModal.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|