@daimo/pay 1.16.0 → 1.16.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/hooks/useConnect.d.ts +8 -8
- package/build/index.d.ts +626 -15
- package/build/package.json.js +6 -4
- package/build/package.json.js.map +1 -1
- package/build/src/assets/MobileWithLogos.js +320 -1
- package/build/src/assets/MobileWithLogos.js.map +1 -1
- package/build/src/assets/ScanIconWithLogos.js +216 -10
- package/build/src/assets/ScanIconWithLogos.js.map +1 -1
- package/build/src/assets/browsers.js +963 -7
- package/build/src/assets/browsers.js.map +1 -1
- package/build/src/assets/chains.js +633 -103
- package/build/src/assets/chains.js.map +1 -1
- package/build/src/assets/coins.js +38 -1
- package/build/src/assets/coins.js.map +1 -1
- package/build/src/assets/crepe.js +35 -1
- package/build/src/assets/crepe.js.map +1 -1
- package/build/src/assets/icons.js +258 -15
- package/build/src/assets/icons.js.map +1 -1
- package/build/src/assets/logos.js +1510 -140
- package/build/src/assets/logos.js.map +1 -1
- package/build/src/assets/wallet.js +32 -1
- package/build/src/assets/wallet.js.map +1 -1
- package/build/src/assets/wave.js +41 -1
- package/build/src/assets/wave.js.map +1 -1
- package/build/src/components/Common/Alert/index.js +4 -1
- package/build/src/components/Common/Alert/index.js.map +1 -1
- package/build/src/components/Common/Alert/styles.js +4 -4
- package/build/src/components/Common/Alert/styles.js.map +1 -1
- package/build/src/components/Common/AmountInput/AmountInputField.js +29 -18
- package/build/src/components/Common/AmountInput/AmountInputField.js.map +1 -1
- package/build/src/components/Common/AmountInput/index.js +112 -99
- package/build/src/components/Common/AmountInput/index.js.map +1 -1
- package/build/src/components/Common/Avatar/index.js +63 -51
- package/build/src/components/Common/Avatar/index.js.map +1 -1
- package/build/src/components/Common/Avatar/styles.js +9 -14
- package/build/src/components/Common/Avatar/styles.js.map +1 -1
- package/build/src/components/Common/BrowserIcon/index.js +15 -14
- package/build/src/components/Common/BrowserIcon/index.js.map +1 -1
- package/build/src/components/Common/BrowserIcon/styles.js +1 -1
- package/build/src/components/Common/BrowserIcon/styles.js.map +1 -1
- package/build/src/components/Common/Button/index.js +131 -25
- package/build/src/components/Common/Button/index.js.map +1 -1
- package/build/src/components/Common/Button/styles.js +20 -24
- package/build/src/components/Common/Button/styles.js.map +1 -1
- package/build/src/components/Common/Chain/index.js +130 -14
- package/build/src/components/Common/Chain/index.js.map +1 -1
- package/build/src/components/Common/Chain/styles.js +9 -13
- package/build/src/components/Common/Chain/styles.js.map +1 -1
- package/build/src/components/Common/ChainSelectList/index.js +232 -89
- package/build/src/components/Common/ChainSelectList/index.js.map +1 -1
- package/build/src/components/Common/ChainSelectList/styles.js +11 -13
- package/build/src/components/Common/ChainSelectList/styles.js.map +1 -1
- package/build/src/components/Common/CircleTimer.js +85 -41
- package/build/src/components/Common/CircleTimer.js.map +1 -1
- package/build/src/components/Common/ConnectorList/index.js +106 -80
- package/build/src/components/Common/ConnectorList/index.js.map +1 -1
- package/build/src/components/Common/ConnectorList/styles.js +28 -36
- package/build/src/components/Common/ConnectorList/styles.js.map +1 -1
- package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +16 -9
- package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -1
- package/build/src/components/Common/CopyToClipboard/index.js +3 -5
- package/build/src/components/Common/CopyToClipboard/index.js.map +1 -1
- package/build/src/components/Common/CustomQRCode/QRCode.js +120 -57
- package/build/src/components/Common/CustomQRCode/QRCode.js.map +1 -1
- package/build/src/components/Common/CustomQRCode/index.js +60 -10
- package/build/src/components/Common/CustomQRCode/index.js.map +1 -1
- package/build/src/components/Common/CustomQRCode/styles.js +6 -6
- package/build/src/components/Common/CustomQRCode/styles.js.map +1 -1
- package/build/src/components/Common/FitText/index.js +24 -17
- package/build/src/components/Common/FitText/index.js.map +1 -1
- package/build/src/components/Common/Modal/index.js +481 -267
- package/build/src/components/Common/Modal/index.js.map +1 -1
- package/build/src/components/Common/Modal/styles.js +44 -48
- package/build/src/components/Common/Modal/styles.js.map +1 -1
- package/build/src/components/Common/OptionsList/index.js +75 -33
- package/build/src/components/Common/OptionsList/index.js.map +1 -1
- package/build/src/components/Common/OptionsList/styles.js +7 -8
- package/build/src/components/Common/OptionsList/styles.js.map +1 -1
- package/build/src/components/Common/OrderHeader/index.js +109 -65
- package/build/src/components/Common/OrderHeader/index.js.map +1 -1
- package/build/src/components/Common/PaymentBreakdown/index.js +29 -7
- package/build/src/components/Common/PaymentBreakdown/index.js.map +1 -1
- package/build/src/components/Common/Portal/index.js +21 -22
- package/build/src/components/Common/Portal/index.js.map +1 -1
- package/build/src/components/Common/PoweredByFooter/index.js +39 -21
- package/build/src/components/Common/PoweredByFooter/index.js.map +1 -1
- package/build/src/components/Common/ScrollArea/index.js +107 -52
- package/build/src/components/Common/ScrollArea/index.js.map +1 -1
- package/build/src/components/Common/ScrollArea/styles.js +7 -11
- package/build/src/components/Common/ScrollArea/styles.js.map +1 -1
- package/build/src/components/Common/SelectAnotherMethodButton/index.js +67 -55
- package/build/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -1
- package/build/src/components/Common/Spinner/index.js +56 -16
- package/build/src/components/Common/Spinner/index.js.map +1 -1
- package/build/src/components/Common/Spinner/styles.js +2 -2
- package/build/src/components/Common/Spinner/styles.js.map +1 -1
- package/build/src/components/Common/SwitchButton/index.js +18 -15
- package/build/src/components/Common/SwitchButton/index.js.map +1 -1
- package/build/src/components/Common/ThemedButton/index.js +37 -16
- package/build/src/components/Common/ThemedButton/index.js.map +1 -1
- package/build/src/components/Common/ThemedButton/styles.js +2 -2
- package/build/src/components/Common/ThemedButton/styles.js.map +1 -1
- package/build/src/components/Common/TokenChainLogo/index.js +14 -8
- package/build/src/components/Common/TokenChainLogo/index.js.map +1 -1
- package/build/src/components/Common/Tooltip/index.js +115 -83
- package/build/src/components/Common/Tooltip/index.js.map +1 -1
- package/build/src/components/Common/Tooltip/styles.js +8 -8
- package/build/src/components/Common/Tooltip/styles.js.map +1 -1
- package/build/src/components/Common/WalletChainLogo/index.js +13 -6
- package/build/src/components/Common/WalletChainLogo/index.js.map +1 -1
- package/build/src/components/DaimoPayButton/index.js +170 -180
- package/build/src/components/DaimoPayButton/index.js.map +1 -1
- package/build/src/components/DaimoPayButton/styles.js +4 -4
- package/build/src/components/DaimoPayButton/styles.js.map +1 -1
- package/build/src/components/DaimoPayModal/ConnectUsing.js +50 -24
- package/build/src/components/DaimoPayModal/ConnectUsing.js.map +1 -1
- package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +303 -163
- package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -1
- package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +10 -12
- package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -1
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +69 -39
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
- package/build/src/components/DaimoPayModal/index.js +409 -416
- package/build/src/components/DaimoPayModal/index.js.map +1 -1
- package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +15 -11
- package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -1
- package/build/src/components/Pages/About/graphics.js +796 -130
- package/build/src/components/Pages/About/graphics.js.map +1 -1
- package/build/src/components/Pages/About/index.js +203 -110
- package/build/src/components/Pages/About/index.js.map +1 -1
- package/build/src/components/Pages/About/styles.js +11 -15
- package/build/src/components/Pages/About/styles.js.map +1 -1
- package/build/src/components/Pages/Confirmation/index.js +71 -48
- package/build/src/components/Pages/Confirmation/index.js.map +1 -1
- package/build/src/components/Pages/Connectors/index.js +50 -16
- package/build/src/components/Pages/Connectors/index.js.map +1 -1
- package/build/src/components/Pages/Connectors/styles.js +10 -10
- package/build/src/components/Pages/Connectors/styles.js.map +1 -1
- package/build/src/components/Pages/DownloadApp/index.js +23 -18
- package/build/src/components/Pages/DownloadApp/index.js.map +1 -1
- package/build/src/components/Pages/Error/index.js +27 -15
- package/build/src/components/Pages/Error/index.js.map +1 -1
- package/build/src/components/Pages/MobileConnectors/index.js +50 -44
- package/build/src/components/Pages/MobileConnectors/index.js.map +1 -1
- package/build/src/components/Pages/MobileConnectors/styles.js +9 -11
- package/build/src/components/Pages/MobileConnectors/styles.js.map +1 -1
- package/build/src/components/Pages/Onboarding/index.js +20 -4
- package/build/src/components/Pages/Onboarding/index.js.map +1 -1
- package/build/src/components/Pages/Onboarding/styles.js +13 -13
- package/build/src/components/Pages/Onboarding/styles.js.map +1 -1
- package/build/src/components/Pages/PayWithToken/index.js +133 -122
- package/build/src/components/Pages/PayWithToken/index.js.map +1 -1
- package/build/src/components/Pages/SelectAmount/index.js +12 -5
- package/build/src/components/Pages/SelectAmount/index.js.map +1 -1
- package/build/src/components/Pages/SelectDepositAddressAmount/index.js +56 -38
- package/build/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -1
- package/build/src/components/Pages/SelectDepositAddressChain/index.js +57 -40
- package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -1
- package/build/src/components/Pages/SelectExchange/index.js +29 -24
- package/build/src/components/Pages/SelectExchange/index.js.map +1 -1
- package/build/src/components/Pages/SelectExternalAmount/index.js +57 -41
- package/build/src/components/Pages/SelectExternalAmount/index.js.map +1 -1
- package/build/src/components/Pages/SelectMethod/index.js +201 -183
- package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
- package/build/src/components/Pages/SelectToken/index.js +72 -46
- package/build/src/components/Pages/SelectToken/index.js.map +1 -1
- package/build/src/components/Pages/SelectWalletAmount/index.js +40 -32
- package/build/src/components/Pages/SelectWalletAmount/index.js.map +1 -1
- package/build/src/components/Pages/SelectWalletChain/index.js +40 -36
- package/build/src/components/Pages/SelectWalletChain/index.js.map +1 -1
- package/build/src/components/Pages/SelectZKP/index.js +29 -24
- package/build/src/components/Pages/SelectZKP/index.js.map +1 -1
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js +60 -45
- package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -1
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +73 -61
- package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -1
- package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js +12 -5
- package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -1
- package/build/src/components/Pages/SwitchNetworks/index.js +29 -10
- package/build/src/components/Pages/SwitchNetworks/index.js.map +1 -1
- package/build/src/components/Pages/WaitingDepositAddress/index.js +332 -184
- package/build/src/components/Pages/WaitingDepositAddress/index.js.map +1 -1
- package/build/src/components/Pages/WaitingExternal/index.js +69 -46
- package/build/src/components/Pages/WaitingExternal/index.js.map +1 -1
- package/build/src/components/Pages/WaitingWallet/index.js +37 -16
- package/build/src/components/Pages/WaitingWallet/index.js.map +1 -1
- package/build/src/components/Spinners/CircleSpinner/index.js +96 -7
- package/build/src/components/Spinners/CircleSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/CircleSpinner/styles.js +6 -7
- package/build/src/components/Spinners/CircleSpinner/styles.js.map +1 -1
- package/build/src/components/Spinners/ExternalPaymentSpinner/index.js +18 -9
- package/build/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/SquircleSpinner/index.js +60 -7
- package/build/src/components/Spinners/SquircleSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/SquircleSpinner/styles.js +4 -4
- package/build/src/components/Spinners/SquircleSpinner/styles.js.map +1 -1
- package/build/src/components/Spinners/TokenLogoSpinner/index.js +12 -1
- package/build/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/TokenLogoSpinner/styles.js +1 -1
- package/build/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -1
- package/build/src/components/Spinners/WalletPaymentSpinner/index.js +27 -20
- package/build/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -1
- package/build/src/components/Spinners/styles.js +3 -4
- package/build/src/components/Spinners/styles.js.map +1 -1
- package/build/src/constants/defaultTheme.js +1 -1
- package/build/src/constants/defaultTheme.js.map +1 -1
- package/build/src/constants/routes.js +29 -30
- package/build/src/constants/routes.js.map +1 -1
- package/build/src/defaultConfig.js +49 -46
- package/build/src/defaultConfig.js.map +1 -1
- package/build/src/defaultConnectors.js +32 -19
- package/build/src/defaultConnectors.js.map +1 -1
- package/build/src/hooks/useChainIsSupported.js +3 -5
- package/build/src/hooks/useChainIsSupported.js.map +1 -1
- package/build/src/hooks/useChains.js +3 -4
- package/build/src/hooks/useChains.js.map +1 -1
- package/build/src/hooks/useConnect.js +51 -39
- package/build/src/hooks/useConnect.js.map +1 -1
- package/build/src/hooks/useConnectCallback.js +15 -12
- package/build/src/hooks/useConnectCallback.js.map +1 -1
- package/build/src/hooks/useConnectors.js +2 -2
- package/build/src/hooks/useConnectors.js.map +1 -1
- package/build/src/hooks/useDaimoPay.js +98 -82
- package/build/src/hooks/useDaimoPay.js.map +1 -1
- package/build/src/hooks/useDaimoPayStatus.js +4 -15
- package/build/src/hooks/useDaimoPayStatus.js.map +1 -1
- package/build/src/hooks/useDaimoPayUI.js +7 -7
- package/build/src/hooks/useDaimoPayUI.js.map +1 -1
- package/build/src/hooks/useDepositAddressOptions.js +29 -25
- package/build/src/hooks/useDepositAddressOptions.js.map +1 -1
- package/build/src/hooks/useEnsFallbackConfig.js +5 -5
- package/build/src/hooks/useEnsFallbackConfig.js.map +1 -1
- package/build/src/hooks/useExternalPaymentOptions.js +57 -52
- package/build/src/hooks/useExternalPaymentOptions.js.map +1 -1
- package/build/src/hooks/useFitText.js +120 -135
- package/build/src/hooks/useFitText.js.map +1 -1
- package/build/src/hooks/useFocusTrap.js +33 -37
- package/build/src/hooks/useFocusTrap.js.map +1 -1
- package/build/src/hooks/useIsMobile.js +3 -3
- package/build/src/hooks/useIsMobile.js.map +1 -1
- package/build/src/hooks/useIsMounted.js +3 -5
- package/build/src/hooks/useIsMounted.js.map +1 -1
- package/build/src/hooks/useLastConnector.js +15 -15
- package/build/src/hooks/useLastConnector.js.map +1 -1
- package/build/src/hooks/useLocales.js +44 -42
- package/build/src/hooks/useLocales.js.map +1 -1
- package/build/src/hooks/useLockBodyScroll.js +38 -44
- package/build/src/hooks/useLockBodyScroll.js.map +1 -1
- package/build/src/hooks/useOrderUsdLimits.js +17 -19
- package/build/src/hooks/useOrderUsdLimits.js.map +1 -1
- package/build/src/hooks/usePayContext.js +3 -5
- package/build/src/hooks/usePayContext.js.map +1 -1
- package/build/src/hooks/usePaymentState.js +351 -324
- package/build/src/hooks/usePaymentState.js.map +1 -1
- package/build/src/hooks/usePrevious.js +6 -7
- package/build/src/hooks/usePrevious.js.map +1 -1
- package/build/src/hooks/useSolanaPaymentOptions.js +33 -33
- package/build/src/hooks/useSolanaPaymentOptions.js.map +1 -1
- package/build/src/hooks/useTokenOptions.js +129 -112
- package/build/src/hooks/useTokenOptions.js.map +1 -1
- package/build/src/hooks/useUntronAvailability.js +26 -34
- package/build/src/hooks/useUntronAvailability.js.map +1 -1
- package/build/src/hooks/useWalletPaymentOptions.js +83 -78
- package/build/src/hooks/useWalletPaymentOptions.js.map +1 -1
- package/build/src/hooks/useWindowSize.js +16 -16
- package/build/src/hooks/useWindowSize.js.map +1 -1
- package/build/src/localizations/index.js +28 -31
- package/build/src/localizations/index.js.map +1 -1
- package/build/src/localizations/locales/ar-AE.js +88 -88
- package/build/src/localizations/locales/ar-AE.js.map +1 -1
- package/build/src/localizations/locales/ca-AD.js +88 -88
- package/build/src/localizations/locales/ca-AD.js.map +1 -1
- package/build/src/localizations/locales/ee-EE.js +96 -88
- package/build/src/localizations/locales/ee-EE.js.map +1 -1
- package/build/src/localizations/locales/en-US.js +134 -126
- package/build/src/localizations/locales/en-US.js.map +1 -1
- package/build/src/localizations/locales/es-ES.js +126 -126
- package/build/src/localizations/locales/es-ES.js.map +1 -1
- package/build/src/localizations/locales/fa-IR.js +88 -88
- package/build/src/localizations/locales/fa-IR.js.map +1 -1
- package/build/src/localizations/locales/fr-FR.js +88 -88
- package/build/src/localizations/locales/fr-FR.js.map +1 -1
- package/build/src/localizations/locales/ja-JP.js +88 -88
- package/build/src/localizations/locales/ja-JP.js.map +1 -1
- package/build/src/localizations/locales/pt-BR.js +96 -88
- package/build/src/localizations/locales/pt-BR.js.map +1 -1
- package/build/src/localizations/locales/ru-RU.js +92 -88
- package/build/src/localizations/locales/ru-RU.js.map +1 -1
- package/build/src/localizations/locales/tr-TR.js +96 -88
- package/build/src/localizations/locales/tr-TR.js.map +1 -1
- package/build/src/localizations/locales/vi-VN.js +96 -88
- package/build/src/localizations/locales/vi-VN.js.map +1 -1
- package/build/src/localizations/locales/zh-CN.js +88 -88
- package/build/src/localizations/locales/zh-CN.js.map +1 -1
- package/build/src/payment/paymentEffects.js +237 -265
- package/build/src/payment/paymentEffects.js.map +1 -1
- package/build/src/payment/paymentFsm.js +165 -186
- package/build/src/payment/paymentFsm.js.map +1 -1
- package/build/src/payment/paymentStore.js +8 -10
- package/build/src/payment/paymentStore.js.map +1 -1
- package/build/src/payment/paymentUtils.js +5 -9
- package/build/src/payment/paymentUtils.js.map +1 -1
- package/build/src/provider/DaimoPayProvider.js +258 -249
- package/build/src/provider/DaimoPayProvider.js.map +1 -1
- package/build/src/provider/PayContext.js +0 -1
- package/build/src/provider/PayContext.js.map +1 -1
- package/build/src/provider/PaymentProvider.js +18 -17
- package/build/src/provider/PaymentProvider.js.map +1 -1
- package/build/src/provider/SolanaContextProvider.js +6 -3
- package/build/src/provider/SolanaContextProvider.js.map +1 -1
- package/build/src/provider/Web3ContextProvider.js +23 -23
- package/build/src/provider/Web3ContextProvider.js.map +1 -1
- package/build/src/stateStore.js +28 -74
- package/build/src/stateStore.js.map +1 -1
- package/build/src/styles/defaultTheme.js +64 -73
- package/build/src/styles/defaultTheme.js.map +1 -1
- package/build/src/styles/index.js +202 -217
- package/build/src/styles/index.js.map +1 -1
- package/build/src/styles/styled/index.js +0 -10
- package/build/src/styles/styled/index.js.map +1 -1
- package/build/src/styles/themes/base.js +136 -136
- package/build/src/styles/themes/base.js.map +1 -1
- package/build/src/styles/themes/index.js.map +1 -1
- package/build/src/styles/themes/midnight.js +71 -71
- package/build/src/styles/themes/midnight.js.map +1 -1
- package/build/src/styles/themes/minimal.js +75 -75
- package/build/src/styles/themes/minimal.js.map +1 -1
- package/build/src/styles/themes/nouns.js +76 -76
- package/build/src/styles/themes/nouns.js.map +1 -1
- package/build/src/styles/themes/retro.js +88 -88
- package/build/src/styles/themes/retro.js.map +1 -1
- package/build/src/styles/themes/rounded.js +84 -84
- package/build/src/styles/themes/rounded.js.map +1 -1
- package/build/src/styles/themes/soft.js +66 -66
- package/build/src/styles/themes/soft.js.map +1 -1
- package/build/src/styles/themes/web95.js +95 -95
- package/build/src/styles/themes/web95.js.map +1 -1
- package/build/src/utils/exports.js +0 -1
- package/build/src/utils/exports.js.map +1 -1
- package/build/src/utils/format.js +25 -63
- package/build/src/utils/format.js.map +1 -1
- package/build/src/utils/index.js +23 -20
- package/build/src/utils/index.js.map +1 -1
- package/build/src/utils/p3.js +8 -9
- package/build/src/utils/p3.js.map +1 -1
- package/build/src/utils/platform.js +6 -8
- package/build/src/utils/platform.js.map +1 -1
- package/build/src/utils/polling.js +31 -31
- package/build/src/utils/polling.js.map +1 -1
- package/build/src/utils/supportUrl.js +9 -9
- package/build/src/utils/supportUrl.js.map +1 -1
- package/build/src/utils/trpc.js +11 -11
- package/build/src/utils/trpc.js.map +1 -1
- package/build/src/utils/validateInput.js +9 -29
- package/build/src/utils/validateInput.js.map +1 -1
- package/build/src/wallets/index.js +13 -22
- package/build/src/wallets/index.js.map +1 -1
- package/build/src/wallets/useWallets.js +183 -181
- package/build/src/wallets/useWallets.js.map +1 -1
- package/build/src/wallets/walletConfigs.js +230 -235
- package/build/src/wallets/walletConfigs.js.map +1 -1
- package/build/src/world-mini-app/WorldPayButton.js +113 -118
- package/build/src/world-mini-app/WorldPayButton.js.map +1 -1
- package/build/src/world-mini-app/promptWorldPayment.js +49 -47
- package/build/src/world-mini-app/promptWorldPayment.js.map +1 -1
- package/build/types-7ed033b6.d.ts +66 -0
- package/build/world.d.ts +89 -1
- package/package.json +6 -4
|
@@ -3,13 +3,13 @@ import { mainnet } from 'wagmi/chains';
|
|
|
3
3
|
import { useChainIsSupported } from './useChainIsSupported.js';
|
|
4
4
|
|
|
5
5
|
const ensFallbackConfig = createConfig({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
chains: [mainnet],
|
|
7
|
+
transports: {
|
|
8
|
+
[mainnet.id]: http()
|
|
9
|
+
}
|
|
10
10
|
});
|
|
11
11
|
function useEnsFallbackConfig() {
|
|
12
|
-
|
|
12
|
+
return !useChainIsSupported(1) ? ensFallbackConfig : void 0;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export { useEnsFallbackConfig };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEnsFallbackConfig.js","sources":["../../../src/hooks/useEnsFallbackConfig.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"useEnsFallbackConfig.js","sources":["../../../src/hooks/useEnsFallbackConfig.ts"],"sourcesContent":["import type { Config } from \"@wagmi/core\";\nimport { createConfig, http } from \"wagmi\";\nimport { mainnet } from \"wagmi/chains\";\nimport { useChainIsSupported } from \"../hooks/useChainIsSupported\";\n\nconst ensFallbackConfig = createConfig({\n chains: [mainnet],\n transports: {\n [mainnet.id]: http(),\n },\n});\n\nexport function useEnsFallbackConfig(): Config | undefined {\n return !useChainIsSupported(1) ? ensFallbackConfig : undefined;\n}\n"],"names":[],"mappings":";;;;AAKA,MAAM,oBAAoB,YAAa,CAAA;AAAA,EACrC,MAAA,EAAQ,CAAC,OAAO,CAAA;AAAA,EAChB,UAAY,EAAA;AAAA,IACV,CAAC,OAAA,CAAQ,EAAE,GAAG,IAAK,EAAA;AAAA,GACrB;AACF,CAAC,CAAA,CAAA;AAEM,SAAS,oBAA2C,GAAA;AACzD,EAAA,OAAO,CAAC,mBAAA,CAAoB,CAAC,CAAA,GAAI,iBAAoB,GAAA,KAAA,CAAA,CAAA;AACvD;;;;"}
|
|
@@ -1,58 +1,63 @@
|
|
|
1
1
|
import { ExternalPaymentOptions } from '@daimo/pay-common';
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
3
|
|
|
4
|
-
const DEFAULT_EXTERNAL_PAYMENT_OPTIONS = Object.values(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
4
|
+
const DEFAULT_EXTERNAL_PAYMENT_OPTIONS = Object.values(
|
|
5
|
+
ExternalPaymentOptions
|
|
6
|
+
).filter(
|
|
7
|
+
(opt) => (
|
|
8
|
+
// Solana and ExternalChains are handled in the SelectMethod component.
|
|
9
|
+
opt !== ExternalPaymentOptions.ExternalChains && opt !== ExternalPaymentOptions.Daimo
|
|
10
|
+
)
|
|
11
|
+
);
|
|
12
|
+
function useExternalPaymentOptions({
|
|
13
|
+
trpc,
|
|
14
|
+
filterIds,
|
|
15
|
+
platform,
|
|
16
|
+
usdRequired,
|
|
17
|
+
mode
|
|
18
|
+
}) {
|
|
19
|
+
const [options, setOptions] = useState(/* @__PURE__ */ new Map());
|
|
20
|
+
const [loading, setLoading] = useState(false);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
const refreshExternalPaymentOptions = async (usd, mode2) => {
|
|
23
|
+
if (!platform) return;
|
|
24
|
+
setLoading(true);
|
|
25
|
+
try {
|
|
26
|
+
const newOptions = await trpc.getExternalPaymentOptions.query({
|
|
27
|
+
platform,
|
|
28
|
+
mode: mode2,
|
|
29
|
+
usdRequired: usd
|
|
30
|
+
});
|
|
31
|
+
const enabledExtPaymentOptions = filterIds || DEFAULT_EXTERNAL_PAYMENT_OPTIONS;
|
|
32
|
+
const hasAllPaymentApps = enabledExtPaymentOptions.includes(
|
|
33
|
+
ExternalPaymentOptions.AllPaymentApps
|
|
34
|
+
);
|
|
35
|
+
const hasAllExchanges = enabledExtPaymentOptions.includes(
|
|
36
|
+
ExternalPaymentOptions.AllExchanges
|
|
37
|
+
);
|
|
38
|
+
const filteredOptions = newOptions.filter(
|
|
39
|
+
(option) => enabledExtPaymentOptions.includes(option.id) || hasAllPaymentApps && option.optionType === "zkp2p" || hasAllExchanges && option.optionType === "exchange"
|
|
40
|
+
);
|
|
41
|
+
const optionsByType = /* @__PURE__ */ new Map();
|
|
42
|
+
filteredOptions.forEach((option) => {
|
|
43
|
+
const { optionType } = option;
|
|
44
|
+
if (!optionsByType.has(optionType)) {
|
|
45
|
+
optionsByType.set(optionType, []);
|
|
46
|
+
}
|
|
47
|
+
optionsByType.get(optionType).push(option);
|
|
48
|
+
});
|
|
49
|
+
setOptions(optionsByType);
|
|
50
|
+
} catch (error) {
|
|
51
|
+
console.error(error);
|
|
52
|
+
} finally {
|
|
53
|
+
setLoading(false);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
if (usdRequired != null && mode != null) {
|
|
57
|
+
refreshExternalPaymentOptions(usdRequired, mode);
|
|
58
|
+
}
|
|
59
|
+
}, [usdRequired, JSON.stringify(filterIds), platform, mode, trpc]);
|
|
60
|
+
return { options, loading };
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
export { useExternalPaymentOptions };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExternalPaymentOptions.js","sources":["../../../src/hooks/useExternalPaymentOptions.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AASA,MAAM,
|
|
1
|
+
{"version":3,"file":"useExternalPaymentOptions.js","sources":["../../../src/hooks/useExternalPaymentOptions.ts"],"sourcesContent":["import {\n DaimoPayOrderMode,\n ExternalPaymentOptionMetadata,\n ExternalPaymentOptions,\n PlatformType,\n} from \"@daimo/pay-common\";\nimport { useEffect, useState } from \"react\";\nimport { TrpcClient } from \"../utils/trpc\";\n\nconst DEFAULT_EXTERNAL_PAYMENT_OPTIONS = Object.values(\n ExternalPaymentOptions,\n).filter(\n (opt) =>\n // Solana and ExternalChains are handled in the SelectMethod component.\n opt !== ExternalPaymentOptions.ExternalChains &&\n opt !== ExternalPaymentOptions.Daimo,\n);\n\nexport function useExternalPaymentOptions({\n trpc,\n filterIds,\n platform,\n usdRequired,\n mode,\n}: {\n trpc: TrpcClient;\n filterIds: string[] | undefined;\n platform: PlatformType | undefined;\n usdRequired: number | undefined;\n mode: DaimoPayOrderMode | undefined;\n}): {\n /// Exteral options, organized by optionType\n options: Map<\n \"external\" | \"zkp2p\" | \"exchange\",\n ExternalPaymentOptionMetadata[]\n >;\n loading: boolean;\n} {\n const [options, setOptions] = useState<\n Map<\"external\" | \"zkp2p\" | \"exchange\", ExternalPaymentOptionMetadata[]>\n >(new Map());\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n const refreshExternalPaymentOptions = async (\n usd: number,\n mode: DaimoPayOrderMode,\n ) => {\n if (!platform) return;\n\n setLoading(true);\n try {\n const newOptions = await trpc.getExternalPaymentOptions.query({\n platform,\n mode,\n usdRequired: usd,\n });\n\n // Filter out options not in options JSON\n const enabledExtPaymentOptions =\n filterIds || DEFAULT_EXTERNAL_PAYMENT_OPTIONS;\n\n const hasAllPaymentApps = enabledExtPaymentOptions.includes(\n ExternalPaymentOptions.AllPaymentApps,\n );\n const hasAllExchanges = enabledExtPaymentOptions.includes(\n ExternalPaymentOptions.AllExchanges,\n );\n\n const filteredOptions = newOptions.filter(\n (option: ExternalPaymentOptionMetadata) =>\n enabledExtPaymentOptions.includes(option.id) ||\n (hasAllPaymentApps && option.optionType === \"zkp2p\") ||\n (hasAllExchanges && option.optionType === \"exchange\"),\n );\n const optionsByType: Map<\n \"external\" | \"zkp2p\" | \"exchange\",\n ExternalPaymentOptionMetadata[]\n > = new Map();\n filteredOptions.forEach((option) => {\n const { optionType } = option;\n if (!optionsByType.has(optionType)) {\n optionsByType.set(optionType, []);\n }\n optionsByType.get(optionType)!.push(option);\n });\n\n setOptions(optionsByType);\n } catch (error) {\n console.error(error);\n } finally {\n setLoading(false);\n }\n };\n\n if (usdRequired != null && mode != null) {\n refreshExternalPaymentOptions(usdRequired, mode);\n }\n // TODO: this is an ugly way to handle polling/refresh\n // Notice the load-bearing JSON.stringify() to prevent a visible infinite\n // refresh glitch on the SelectMethod screen. Replace this useEffect().\n //\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [usdRequired, JSON.stringify(filterIds), platform, mode, trpc]);\n\n return { options, loading };\n}\n"],"names":["mode"],"mappings":";;;AASA,MAAM,mCAAmC,MAAO,CAAA,MAAA;AAAA,EAC9C,sBAAA;AACF,CAAE,CAAA,MAAA;AAAA,EACA,CAAC,GAAA;AAAA;AAAA,IAEC,GAAQ,KAAA,sBAAA,CAAuB,cAC/B,IAAA,GAAA,KAAQ,sBAAuB,CAAA,KAAA;AAAA,GAAA;AACnC,CAAA,CAAA;AAEO,SAAS,yBAA0B,CAAA;AAAA,EACxC,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AACF,CAaE,EAAA;AACA,EAAA,MAAM,CAAC,OAAS,EAAA,UAAU,IAAI,QAE5B,iBAAA,IAAI,KAAK,CAAA,CAAA;AACX,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,6BAAA,GAAgC,OACpC,GAAA,EACAA,KACG,KAAA;AACH,MAAA,IAAI,CAAC,QAAU,EAAA,OAAA;AAEf,MAAA,UAAA,CAAW,IAAI,CAAA,CAAA;AACf,MAAI,IAAA;AACF,QAAA,MAAM,UAAa,GAAA,MAAM,IAAK,CAAA,yBAAA,CAA0B,KAAM,CAAA;AAAA,UAC5D,QAAA;AAAA,UACA,IAAAA,EAAAA,KAAAA;AAAA,UACA,WAAa,EAAA,GAAA;AAAA,SACd,CAAA,CAAA;AAGD,QAAA,MAAM,2BACJ,SAAa,IAAA,gCAAA,CAAA;AAEf,QAAA,MAAM,oBAAoB,wBAAyB,CAAA,QAAA;AAAA,UACjD,sBAAuB,CAAA,cAAA;AAAA,SACzB,CAAA;AACA,QAAA,MAAM,kBAAkB,wBAAyB,CAAA,QAAA;AAAA,UAC/C,sBAAuB,CAAA,YAAA;AAAA,SACzB,CAAA;AAEA,QAAA,MAAM,kBAAkB,UAAW,CAAA,MAAA;AAAA,UACjC,CAAC,MAAA,KACC,wBAAyB,CAAA,QAAA,CAAS,MAAO,CAAA,EAAE,CAC1C,IAAA,iBAAA,IAAqB,MAAO,CAAA,UAAA,KAAe,OAC3C,IAAA,eAAA,IAAmB,OAAO,UAAe,KAAA,UAAA;AAAA,SAC9C,CAAA;AACA,QAAM,MAAA,aAAA,uBAGE,GAAI,EAAA,CAAA;AACZ,QAAgB,eAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AAClC,UAAM,MAAA,EAAE,YAAe,GAAA,MAAA,CAAA;AACvB,UAAA,IAAI,CAAC,aAAA,CAAc,GAAI,CAAA,UAAU,CAAG,EAAA;AAClC,YAAc,aAAA,CAAA,GAAA,CAAI,UAAY,EAAA,EAAE,CAAA,CAAA;AAAA,WAClC;AACA,UAAA,aAAA,CAAc,GAAI,CAAA,UAAU,CAAG,CAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,SAC3C,CAAA,CAAA;AAED,QAAA,UAAA,CAAW,aAAa,CAAA,CAAA;AAAA,eACjB,KAAO,EAAA;AACd,QAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAA;AAAA,OACnB,SAAA;AACA,QAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,OAClB;AAAA,KACF,CAAA;AAEA,IAAI,IAAA,WAAA,IAAe,IAAQ,IAAA,IAAA,IAAQ,IAAM,EAAA;AACvC,MAAA,6BAAA,CAA8B,aAAa,IAAI,CAAA,CAAA;AAAA,KACjD;AAAA,GAMF,EAAG,CAAC,WAAA,EAAa,IAAK,CAAA,SAAA,CAAU,SAAS,CAAG,EAAA,QAAA,EAAU,IAAM,EAAA,IAAI,CAAC,CAAA,CAAA;AAEjE,EAAO,OAAA,EAAE,SAAS,OAAQ,EAAA,CAAA;AAC5B;;;;"}
|
|
@@ -1,147 +1,132 @@
|
|
|
1
1
|
import { useCallback, useRef, useState, useEffect, useLayoutEffect } from 'react';
|
|
2
2
|
import ResizeObserver from 'resize-observer-polyfill';
|
|
3
3
|
|
|
4
|
-
// https://github.com/saltycrane/use-fit-text
|
|
5
4
|
const LOG_LEVEL = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
debug: 10,
|
|
6
|
+
info: 20,
|
|
7
|
+
warn: 30,
|
|
8
|
+
error: 40,
|
|
9
|
+
none: 100
|
|
11
10
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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;
|
|
11
|
+
const useIsoLayoutEffect = typeof window !== "undefined" && window.document && window.document.createElement !== void 0 ? useLayoutEffect : useEffect;
|
|
12
|
+
const useFitText = ({
|
|
13
|
+
logLevel: logLevelOption = "info",
|
|
14
|
+
maxFontSize = 100,
|
|
15
|
+
minFontSize = 20,
|
|
16
|
+
onFinish,
|
|
17
|
+
onStart,
|
|
18
|
+
resolution = 5
|
|
19
|
+
} = {}) => {
|
|
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
|
+
let animationFrameId = null;
|
|
36
|
+
const [ro] = useState(
|
|
37
|
+
() => new ResizeObserver(() => {
|
|
38
|
+
animationFrameId = window.requestAnimationFrame(() => {
|
|
39
|
+
if (isCalculatingRef.current) {
|
|
40
|
+
return;
|
|
114
41
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
42
|
+
onStart && onStart();
|
|
43
|
+
isCalculatingRef.current = true;
|
|
44
|
+
setState({
|
|
45
|
+
...initState(),
|
|
46
|
+
calcKey: calcKey + 1
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
})
|
|
50
|
+
);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (ref.current) {
|
|
53
|
+
ro.observe(ref.current);
|
|
54
|
+
}
|
|
55
|
+
return () => {
|
|
56
|
+
animationFrameId && window.cancelAnimationFrame(animationFrameId);
|
|
57
|
+
ro.disconnect();
|
|
58
|
+
};
|
|
59
|
+
}, [animationFrameId, ro]);
|
|
60
|
+
const innerHtml = ref.current && ref.current.innerHTML;
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (calcKey === 0 || isCalculatingRef.current) return;
|
|
63
|
+
if (innerHtml !== innerHtmlPrevRef.current) {
|
|
64
|
+
onStart && onStart();
|
|
65
|
+
setState({
|
|
66
|
+
...initState(),
|
|
67
|
+
calcKey: calcKey + 1
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
innerHtmlPrevRef.current = innerHtml;
|
|
71
|
+
}, [calcKey, initState, innerHtml, onStart]);
|
|
72
|
+
useIsoLayoutEffect(() => {
|
|
73
|
+
if (calcKey === 0) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const isWithinResolution = Math.abs(fontSize - fontSizePrev) <= resolution;
|
|
77
|
+
const isOverflow = !!ref.current && (ref.current.scrollHeight > ref.current.offsetHeight || ref.current.scrollWidth > ref.current.offsetWidth);
|
|
78
|
+
const isFailed = isOverflow && fontSize === fontSizePrev;
|
|
79
|
+
const isAsc = fontSize > fontSizePrev;
|
|
80
|
+
if (isWithinResolution) {
|
|
81
|
+
if (isFailed) {
|
|
82
|
+
isCalculatingRef.current = false;
|
|
83
|
+
if (logLevel <= LOG_LEVEL.info) {
|
|
84
|
+
console.info(
|
|
85
|
+
`[use-fit-text] reached \`minFontSize = ${minFontSize}\` without fitting text`
|
|
86
|
+
);
|
|
126
87
|
}
|
|
88
|
+
} else if (isOverflow) {
|
|
127
89
|
setState({
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
90
|
+
fontSize: isAsc ? fontSizePrev : fontSizeMin,
|
|
91
|
+
fontSizeMax,
|
|
92
|
+
fontSizeMin,
|
|
93
|
+
fontSizePrev,
|
|
94
|
+
calcKey
|
|
133
95
|
});
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
fontSize
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
96
|
+
} else {
|
|
97
|
+
isCalculatingRef.current = false;
|
|
98
|
+
onFinish && onFinish(fontSize);
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
let delta;
|
|
103
|
+
let newMax = fontSizeMax;
|
|
104
|
+
let newMin = fontSizeMin;
|
|
105
|
+
if (isOverflow) {
|
|
106
|
+
delta = isAsc ? fontSizePrev - fontSize : fontSizeMin - fontSize;
|
|
107
|
+
newMax = Math.min(fontSizeMax, fontSize);
|
|
108
|
+
} else {
|
|
109
|
+
delta = isAsc ? fontSizeMax - fontSize : fontSizePrev - fontSize;
|
|
110
|
+
newMin = Math.max(fontSizeMin, fontSize);
|
|
111
|
+
}
|
|
112
|
+
setState({
|
|
113
|
+
calcKey,
|
|
114
|
+
fontSize: fontSize + delta / 2,
|
|
115
|
+
fontSizeMax: newMax,
|
|
116
|
+
fontSizeMin: newMin,
|
|
117
|
+
fontSizePrev: fontSize
|
|
118
|
+
});
|
|
119
|
+
}, [
|
|
120
|
+
calcKey,
|
|
121
|
+
fontSize,
|
|
122
|
+
fontSizeMax,
|
|
123
|
+
fontSizeMin,
|
|
124
|
+
fontSizePrev,
|
|
125
|
+
onFinish,
|
|
126
|
+
ref,
|
|
127
|
+
resolution
|
|
128
|
+
]);
|
|
129
|
+
return { fontSize, ref };
|
|
145
130
|
};
|
|
146
131
|
|
|
147
132
|
export { useFitText as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFitText.js","sources":["../../../src/hooks/useFitText.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"useFitText.js","sources":["../../../src/hooks/useFitText.tsx"],"sourcesContent":["// https://github.com/saltycrane/use-fit-text\n\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\nexport type TLogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"none\";\n\nexport type TOptions = {\n logLevel?: TLogLevel;\n maxFontSize?: number;\n minFontSize?: number;\n onFinish?: (fontSize: number) => void;\n onStart?: () => void;\n resolution?: number;\n};\n\nconst LOG_LEVEL: Record<TLogLevel, number> = {\n debug: 10,\n info: 20,\n warn: 30,\n error: 40,\n none: 100,\n};\n\n// Suppress `useLayoutEffect` warning when rendering on the server\n// https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useIsoLayoutEffect =\n typeof window !== \"undefined\" &&\n window.document &&\n window.document.createElement !== undefined\n ? useLayoutEffect\n : useEffect;\n\nconst useFitText = ({\n logLevel: logLevelOption = \"info\",\n maxFontSize = 100,\n minFontSize = 20,\n onFinish,\n onStart,\n resolution = 5,\n}: TOptions = {}) => {\n const logLevel = LOG_LEVEL[logLevelOption];\n\n const initState = useCallback(() => {\n return {\n calcKey: 0,\n fontSize: maxFontSize,\n fontSizePrev: minFontSize,\n fontSizeMax: maxFontSize,\n fontSizeMin: minFontSize,\n };\n }, [maxFontSize, minFontSize]);\n\n const ref = useRef<HTMLDivElement>(null);\n const innerHtmlPrevRef = useRef<string | null>();\n const isCalculatingRef = useRef(false);\n const [state, setState] = useState(initState);\n const { calcKey, fontSize, fontSizeMax, fontSizeMin, fontSizePrev } = state;\n\n // Montior div size changes and recalculate on resize\n let animationFrameId: number | null = null;\n const [ro] = useState(\n () =>\n new ResizeObserver(() => {\n animationFrameId = window.requestAnimationFrame(() => {\n if (isCalculatingRef.current) {\n return;\n }\n onStart && onStart();\n isCalculatingRef.current = true;\n // `calcKey` is used in the dependencies array of\n // `useIsoLayoutEffect` below. It is incremented so that the font size\n // will be recalculated even if the previous state didn't change (e.g.\n // when the text fit initially).\n setState({\n ...initState(),\n calcKey: calcKey + 1,\n });\n });\n }),\n );\n\n useEffect(() => {\n if (ref.current) {\n ro.observe(ref.current);\n }\n return () => {\n animationFrameId && window.cancelAnimationFrame(animationFrameId);\n ro.disconnect();\n };\n }, [animationFrameId, ro]);\n\n // Recalculate when the div contents change\n const innerHtml = ref.current && ref.current.innerHTML;\n useEffect(() => {\n if (calcKey === 0 || isCalculatingRef.current) return;\n\n if (innerHtml !== innerHtmlPrevRef.current) {\n onStart && onStart();\n setState({\n ...initState(),\n calcKey: calcKey + 1,\n });\n }\n innerHtmlPrevRef.current = innerHtml;\n }, [calcKey, initState, innerHtml, onStart]);\n\n // Check overflow and resize font\n useIsoLayoutEffect(() => {\n // Don't start calculating font size until the `resizeKey` is incremented\n // above in the `ResizeObserver` callback. This avoids an extra resize\n // on initialization.\n if (calcKey === 0) {\n return;\n }\n\n const isWithinResolution = Math.abs(fontSize - fontSizePrev) <= resolution;\n const isOverflow =\n !!ref.current &&\n (ref.current.scrollHeight > ref.current.offsetHeight ||\n ref.current.scrollWidth > ref.current.offsetWidth);\n const isFailed = isOverflow && fontSize === fontSizePrev;\n const isAsc = fontSize > fontSizePrev;\n\n // Return if the font size has been adjusted \"enough\" (change within `resolution`)\n // reduce font size by one increment if it's overflowing.\n if (isWithinResolution) {\n if (isFailed) {\n isCalculatingRef.current = false;\n if (logLevel <= LOG_LEVEL.info) {\n console.info(\n `[use-fit-text] reached \\`minFontSize = ${minFontSize}\\` without fitting text`,\n );\n }\n } else if (isOverflow) {\n setState({\n fontSize: isAsc ? fontSizePrev : fontSizeMin,\n fontSizeMax,\n fontSizeMin,\n fontSizePrev,\n calcKey,\n });\n } else {\n isCalculatingRef.current = false;\n onFinish && onFinish(fontSize);\n }\n return;\n }\n\n // Binary search to adjust font size\n let delta: number;\n let newMax = fontSizeMax;\n let newMin = fontSizeMin;\n if (isOverflow) {\n delta = isAsc ? fontSizePrev - fontSize : fontSizeMin - fontSize;\n newMax = Math.min(fontSizeMax, fontSize);\n } else {\n delta = isAsc ? fontSizeMax - fontSize : fontSizePrev - fontSize;\n newMin = Math.max(fontSizeMin, fontSize);\n }\n setState({\n calcKey,\n fontSize: fontSize + delta / 2,\n fontSizeMax: newMax,\n fontSizeMin: newMin,\n fontSizePrev: fontSize,\n });\n }, [\n calcKey,\n fontSize,\n fontSizeMax,\n fontSizeMin,\n fontSizePrev,\n onFinish,\n ref,\n resolution,\n ]);\n\n return { fontSize, ref };\n};\n\nexport default useFitText;\n"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,10 @@ import { useEffect, useRef } from 'react';
|
|
|
3
3
|
|
|
4
4
|
const KEYCODE_TAB = 9;
|
|
5
5
|
function useFocusTrap() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var focusableEls = elRef.current.querySelectorAll(`
|
|
6
|
+
const elRef = useRef(null);
|
|
7
|
+
function handleFocus(e) {
|
|
8
|
+
if (!elRef.current) return;
|
|
9
|
+
var focusableEls = elRef.current.querySelectorAll(`
|
|
11
10
|
a[href]:not(:disabled),
|
|
12
11
|
button:not(:disabled),
|
|
13
12
|
textarea:not(:disabled),
|
|
@@ -16,41 +15,38 @@ function useFocusTrap() {
|
|
|
16
15
|
input[type="checkbox"]:not(:disabled),
|
|
17
16
|
select:not(:disabled)
|
|
18
17
|
`), firstFocusableEl = focusableEls[0], lastFocusableEl = focusableEls[focusableEls.length - 1];
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
}
|
|
18
|
+
var isTabPressed = e.key === "Tab" || e.keyCode === KEYCODE_TAB;
|
|
19
|
+
if (!isTabPressed) {
|
|
20
|
+
return;
|
|
35
21
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
22
|
+
if (e.shiftKey) {
|
|
23
|
+
if (document.activeElement === firstFocusableEl) {
|
|
24
|
+
lastFocusableEl.focus();
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
}
|
|
27
|
+
} else {
|
|
28
|
+
if (document.activeElement === lastFocusableEl) {
|
|
29
|
+
firstFocusableEl.focus();
|
|
30
|
+
e.preventDefault();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
const el = elRef.current;
|
|
36
|
+
if (el == null) return;
|
|
37
|
+
el.addEventListener("keydown", handleFocus);
|
|
38
|
+
el.focus({ preventScroll: true });
|
|
39
|
+
return () => el.removeEventListener("keydown", handleFocus);
|
|
40
|
+
}, []);
|
|
41
|
+
return elRef;
|
|
45
42
|
}
|
|
46
43
|
function FocusTrap(props) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return (jsx("div", { ref: elRef, tabIndex: 0, children: props.children }));
|
|
44
|
+
const elRef = useFocusTrap();
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (!elRef.current) return;
|
|
47
|
+
elRef.current.focus({ preventScroll: true });
|
|
48
|
+
}, []);
|
|
49
|
+
return /* @__PURE__ */ jsx("div", { ref: elRef, tabIndex: 0, children: props.children });
|
|
54
50
|
}
|
|
55
51
|
|
|
56
52
|
export { FocusTrap as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFocusTrap.js","sources":["../../../src/hooks/useFocusTrap.tsx"],"sourcesContent":[null],"
|
|
1
|
+
{"version":3,"file":"useFocusTrap.js","sources":["../../../src/hooks/useFocusTrap.tsx"],"sourcesContent":["// Based on https://hiddedevries.nl/en/blog/2017-01-29-using-javascript-to-trap-focus-in-an-element\n\nimport { useEffect, useRef } from \"react\";\n\nconst KEYCODE_TAB = 9;\n\nfunction useFocusTrap() {\n const elRef = useRef<any>(null);\n\n function handleFocus(e: any) {\n if (!elRef.current) return;\n var focusableEls = elRef.current.querySelectorAll(`\n a[href]:not(:disabled),\n button:not(:disabled),\n textarea:not(:disabled),\n input[type=\"text\"]:not(:disabled),\n input[type=\"radio\"]:not(:disabled),\n input[type=\"checkbox\"]:not(:disabled),\n select:not(:disabled)\n `),\n firstFocusableEl = focusableEls[0],\n lastFocusableEl = focusableEls[focusableEls.length - 1];\n\n var isTabPressed = e.key === \"Tab\" || e.keyCode === KEYCODE_TAB;\n\n if (!isTabPressed) {\n return;\n }\n\n if (e.shiftKey) {\n /* shift + tab */ if (document.activeElement === firstFocusableEl) {\n lastFocusableEl.focus();\n e.preventDefault();\n }\n } /* tab */ else {\n if (document.activeElement === lastFocusableEl) {\n firstFocusableEl.focus();\n e.preventDefault();\n }\n }\n }\n\n useEffect(() => {\n const el = elRef.current;\n if (el == null) return;\n el.addEventListener(\"keydown\", handleFocus);\n el.focus({ preventScroll: true });\n return () => el.removeEventListener(\"keydown\", handleFocus);\n }, []);\n\n return elRef;\n}\n\nexport default function FocusTrap(props: any) {\n const elRef = useFocusTrap();\n\n useEffect(() => {\n if (!elRef.current) return;\n elRef.current.focus({ preventScroll: true });\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <div ref={elRef} tabIndex={0}>\n {props.children}\n </div>\n );\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,WAAc,GAAA,CAAA,CAAA;AAEpB,SAAS,YAAe,GAAA;AACtB,EAAM,MAAA,KAAA,GAAQ,OAAY,IAAI,CAAA,CAAA;AAE9B,EAAA,SAAS,YAAY,CAAQ,EAAA;AAC3B,IAAI,IAAA,CAAC,MAAM,OAAS,EAAA,OAAA;AACpB,IAAI,IAAA,YAAA,GAAe,KAAM,CAAA,OAAA,CAAQ,gBAAiB,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQ/C,CAAA,CAAA,EACD,mBAAmB,YAAa,CAAA,CAAC,GACjC,eAAkB,GAAA,YAAA,CAAa,YAAa,CAAA,MAAA,GAAS,CAAC,CAAA,CAAA;AAExD,IAAA,IAAI,YAAe,GAAA,CAAA,CAAE,GAAQ,KAAA,KAAA,IAAS,EAAE,OAAY,KAAA,WAAA,CAAA;AAEpD,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,EAAE,QAAU,EAAA;AACI,MAAI,IAAA,QAAA,CAAS,kBAAkB,gBAAkB,EAAA;AACjE,QAAA,eAAA,CAAgB,KAAM,EAAA,CAAA;AACtB,QAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,OACnB;AAAA,KACe,MAAA;AACf,MAAI,IAAA,QAAA,CAAS,kBAAkB,eAAiB,EAAA;AAC9C,QAAA,gBAAA,CAAiB,KAAM,EAAA,CAAA;AACvB,QAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,OACnB;AAAA,KACF;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,KAAM,CAAA,OAAA,CAAA;AACjB,IAAA,IAAI,MAAM,IAAM,EAAA,OAAA;AAChB,IAAG,EAAA,CAAA,gBAAA,CAAiB,WAAW,WAAW,CAAA,CAAA;AAC1C,IAAA,EAAA,CAAG,KAAM,CAAA,EAAE,aAAe,EAAA,IAAA,EAAM,CAAA,CAAA;AAChC,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAoB,CAAA,SAAA,EAAW,WAAW,CAAA,CAAA;AAAA,GAC5D,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEA,SAAwB,UAAU,KAAY,EAAA;AAC5C,EAAA,MAAM,QAAQ,YAAa,EAAA,CAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,MAAM,OAAS,EAAA,OAAA;AACpB,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA,CAAA;AAAA,GAC7C,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,2BACG,KAAI,EAAA,EAAA,GAAA,EAAK,OAAO,QAAU,EAAA,CAAA,EACxB,gBAAM,QACT,EAAA,CAAA,CAAA;AAEJ;;;;"}
|