@funkit/connect 6.14.15 → 6.14.17

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/dist/index.js CHANGED
@@ -522,7 +522,7 @@ import PrivyJS, {
522
522
  } from "@privy-io/js-sdk-core";
523
523
  import React245, {
524
524
  createContext as createContext18,
525
- useCallback as useCallback57,
525
+ useCallback as useCallback56,
526
526
  useContext as useContext18,
527
527
  useEffect as useEffect60,
528
528
  useMemo as useMemo48,
@@ -1090,7 +1090,7 @@ var useInitialChainId = () => useContext4(FunkitConnectChainContext).initialChai
1090
1090
  // src/providers/ModalContext.tsx
1091
1091
  import React244, {
1092
1092
  createContext as createContext17,
1093
- useCallback as useCallback56,
1093
+ useCallback as useCallback55,
1094
1094
  useContext as useContext17,
1095
1095
  useEffect as useEffect59,
1096
1096
  useMemo as useMemo47,
@@ -1112,7 +1112,7 @@ var topbarFadeWrapper = "_1r8f577";
1112
1112
  var topbarOverflowContent = "_1r8f576 _1rsrm2fes _1rsrm2ffp";
1113
1113
 
1114
1114
  // src/modals/WithdrwalModal/WithdrawalModal.tsx
1115
- import React222, { useCallback as useCallback52, useState as useState69 } from "react";
1115
+ import React222, { useCallback as useCallback51, useState as useState69 } from "react";
1116
1116
 
1117
1117
  // src/components/FunCheckoutHistory/useCustomStatusAnimationAboveTopbar.tsx
1118
1118
  import { clamp } from "@funkit/utils";
@@ -1182,7 +1182,7 @@ import {
1182
1182
  import { isNotNullish as isNotNullish3 } from "@funkit/utils";
1183
1183
  import React19, {
1184
1184
  createContext as createContext10,
1185
- useCallback as useCallback11,
1185
+ useCallback as useCallback10,
1186
1186
  useContext as useContext10,
1187
1187
  useEffect as useEffect9,
1188
1188
  useRef as useRef2,
@@ -1567,7 +1567,7 @@ import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS
1567
1567
  import { FlagKey as FlagKey6, isNotNullish as isNotNullish2 } from "@funkit/utils";
1568
1568
  import React18, {
1569
1569
  createContext as createContext9,
1570
- useCallback as useCallback10,
1570
+ useCallback as useCallback9,
1571
1571
  useContext as useContext9,
1572
1572
  useEffect as useEffect8,
1573
1573
  useState as useState6
@@ -1599,7 +1599,7 @@ function setFunkitConnectVersion({ version }) {
1599
1599
  localStorage.setItem(storageKey, version);
1600
1600
  }
1601
1601
  function getCurrentSdkVersion() {
1602
- return "6.14.15";
1602
+ return "6.14.17";
1603
1603
  }
1604
1604
  function useFingerprint() {
1605
1605
  const fingerprint = useCallback2(() => {
@@ -1700,7 +1700,6 @@ var WEB3_ACCOUNT_BALANCE_MESSAGE = {
1700
1700
 
1701
1701
  // src/providers/GeneralWalletProvider.tsx
1702
1702
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO } from "@funkit/chains";
1703
- import { Auth, Chain, FunWallet, configureEnvironment as configureEnvironment2 } from "@funkit/core";
1704
1703
  import { formatAddress as formatAddress2 } from "@funkit/utils";
1705
1704
  import React15, {
1706
1705
  createContext as createContext5,
@@ -1867,7 +1866,7 @@ var GeneralWalletContext = createContext5({
1867
1866
  logoutSymbol: void 0
1868
1867
  });
1869
1868
  function GeneralWalletProvider({ children }) {
1870
- const { address, connector, chain: activeChain } = useAccount2();
1869
+ const { address, connector } = useAccount2();
1871
1870
  const { connectors, disconnectAsync } = useDisconnect();
1872
1871
  const ensName = useMainnetEnsName(address);
1873
1872
  const ensAvatar = useMainnetEnsAvatar(ensName);
@@ -1943,16 +1942,6 @@ function GeneralWalletProvider({ children }) {
1943
1942
  if (!provider) {
1944
1943
  return;
1945
1944
  }
1946
- await configureEnvironment2({
1947
- chain: await Chain.getChain({ chainIdentifier: activeChain?.id })
1948
- });
1949
- newFunWalletAuth = new Auth({ provider });
1950
- newFunWallet = new FunWallet({
1951
- users: [{ userId: await newFunWalletAuth.getAddress() }],
1952
- uniqueId: await newFunWalletAuth.getWalletUniqueId(
1953
- DEFAULT_FUNWALLET_INDEX
1954
- )
1955
- });
1956
1945
  }
1957
1946
  logger.log("setupFunWallet_result", {
1958
1947
  newFunWallet,
@@ -1968,7 +1957,7 @@ function GeneralWalletProvider({ children }) {
1968
1957
  setupFunWallet().catch(
1969
1958
  (reason) => logger.error("setupFunWallet:error", reason)
1970
1959
  );
1971
- }, [connector, loginType, activeChain]);
1960
+ }, [connector, loginType]);
1972
1961
  const [logoutSymbol, triggerLogoutSymbol] = useSymbolRefresh_default();
1973
1962
  const handleLogout = useCallback4(async () => {
1974
1963
  logger.log("handleLogout_called");
@@ -3335,7 +3324,10 @@ function useRelayBypass() {
3335
3324
  "brokerage" /* BROKERAGE */,
3336
3325
  "card" /* CARD */
3337
3326
  ],
3338
- relayWithAAPaymentMethods: ["balance" /* ACCOUNT_BALANCE */]
3327
+ relayWithAAPaymentMethods: [
3328
+ "balance" /* ACCOUNT_BALANCE */,
3329
+ "brokerage" /* BROKERAGE */
3330
+ ]
3339
3331
  };
3340
3332
  }
3341
3333
  return {
@@ -3344,7 +3336,10 @@ function useRelayBypass() {
3344
3336
  "balance" /* ACCOUNT_BALANCE */,
3345
3337
  "brokerage" /* BROKERAGE */
3346
3338
  ],
3347
- relayWithAAPaymentMethods: ["balance" /* ACCOUNT_BALANCE */]
3339
+ relayWithAAPaymentMethods: [
3340
+ "balance" /* ACCOUNT_BALANCE */,
3341
+ "brokerage" /* BROKERAGE */
3342
+ ]
3348
3343
  };
3349
3344
  }, [apiKey]);
3350
3345
  return {
@@ -3605,7 +3600,6 @@ import {
3605
3600
  } from "@funkit/api-base";
3606
3601
  import { FlagKey as FlagKey5 } from "@funkit/utils";
3607
3602
  import { useQuery as useQuery3 } from "@tanstack/react-query";
3608
- import { useCallback as useCallback8 } from "react";
3609
3603
 
3610
3604
  // src/domains/clientMetadata.ts
3611
3605
  function generateClientMetadataForBackend({
@@ -3673,6 +3667,13 @@ function toApiSelectedPaymentMethodInfo(paymentMethodInfo) {
3673
3667
 
3674
3668
  // src/hooks/useCheckoutTransferInit.ts
3675
3669
  var COMMON_CLIENT_METADATA = generateClientMetadataForTokenTransfer();
3670
+ async function checkoutTransferFetch(params) {
3671
+ return await initializeCheckoutTokenTransferAddress({
3672
+ ...params,
3673
+ logger,
3674
+ clientMetadata: COMMON_CLIENT_METADATA
3675
+ });
3676
+ }
3676
3677
  var useCheckoutTransferInit = () => {
3677
3678
  const { checkoutItem } = useCheckoutContext();
3678
3679
  const checkoutConfig = checkoutItem?.initSettings.config;
@@ -3680,53 +3681,40 @@ var useCheckoutTransferInit = () => {
3680
3681
  const { apiKey } = useFunkitConfig();
3681
3682
  const isQrCodeEnabled = useFlag(FlagKey5.EnableTokenTransfer, false);
3682
3683
  const recipientAddr = checkoutConfig?.customRecipient || walletAddress || "0x";
3683
- const queryKey = {
3684
+ const queryKey = checkoutConfig?.targetAsset && checkoutConfig.targetAsset !== "0x" && checkoutConfig.targetChain && {
3684
3685
  userId: userInfo.id || "",
3685
- toChainId: checkoutConfig?.targetChain || "",
3686
- toTokenAddress: checkoutConfig?.targetAsset || "0x",
3686
+ toChainId: checkoutConfig.targetChain,
3687
+ toTokenAddress: checkoutConfig.targetAsset,
3687
3688
  recipientAddr,
3688
3689
  apiKey,
3689
3690
  actionType: checkoutConfig?.qrcodeActionType
3690
3691
  };
3691
- const queryFunction = useCallback8(
3692
- async (params) => {
3693
- return await initializeCheckoutTokenTransferAddress({
3694
- ...params,
3695
- logger,
3696
- clientMetadata: COMMON_CLIENT_METADATA
3697
- });
3698
- },
3699
- []
3700
- );
3701
3692
  const isQRCodeEnabledWithPostAction = !!checkoutConfig && // either no post action required
3702
3693
  (!isCheckoutPostActionRequired(checkoutConfig) || // or action type is set
3703
3694
  !!checkoutConfig?.qrcodeActionType);
3704
3695
  const { data, isFetching } = useQuery3({
3705
3696
  queryKey: ["initializeCheckoutTokenTransferAddress", queryKey],
3706
- queryFn: () => queryFunction(queryKey),
3697
+ queryFn: () => queryKey ? checkoutTransferFetch(queryKey) : void 0,
3707
3698
  refetchOnWindowFocus: false,
3708
3699
  refetchOnMount: false,
3709
- enabled: (
3710
- // Is flag enabled
3711
- isQrCodeEnabled && // QR Code is only supported for post action checkouts with action type
3712
- isQRCodeEnabledWithPostAction
3713
- )
3700
+ enabled: !!queryKey && // Is flag enabled
3701
+ isQrCodeEnabled && // QR Code is only supported for post action checkouts with action type
3702
+ isQRCodeEnabledWithPostAction
3714
3703
  });
3715
3704
  return {
3716
3705
  transferInit: isFetching ? void 0 : data,
3717
- recipientAddr,
3718
- manualFetch: queryFunction
3706
+ recipientAddr
3719
3707
  };
3720
3708
  };
3721
3709
 
3722
3710
  // src/hooks/useEffectEvent.ts
3723
- import { useCallback as useCallback9, useInsertionEffect, useRef } from "react";
3711
+ import { useCallback as useCallback8, useInsertionEffect, useRef } from "react";
3724
3712
  function useEffectEvent(fn) {
3725
3713
  const savedCallback = useRef(fn);
3726
3714
  useInsertionEffect(() => {
3727
3715
  savedCallback.current = fn;
3728
3716
  }, [fn]);
3729
- return useCallback9(
3717
+ return useCallback8(
3730
3718
  (...args) => {
3731
3719
  const f = savedCallback.current;
3732
3720
  return f(...args);
@@ -3833,18 +3821,17 @@ function FunkitCheckoutProvider({ children }) {
3833
3821
  const { walletAddress, logoutSymbol, loginType, userInfo } = useGeneralWallet();
3834
3822
  const { refreshCheckoutHistory } = useCheckoutHistoryContext();
3835
3823
  const { getDirectExecutionInfo, getWithdrawalDirectExecution } = useCheckoutDirectExecution();
3836
- const { manualFetch } = useCheckoutTransferInit();
3837
3824
  const { logEvent } = useTrack();
3838
3825
  const [activeCheckout, setActiveCheckout] = useState6(null);
3839
3826
  const [activeWithdrawal, setActiveWithdrawal] = useState6(null);
3840
3827
  const [checkoutsProgress, setCheckoutsProgress] = useState6({});
3841
- const getCheckoutProgress = useCallback10(
3828
+ const getCheckoutProgress = useCallback9(
3842
3829
  (checkoutId) => {
3843
3830
  return checkoutsProgress[checkoutId];
3844
3831
  },
3845
3832
  [checkoutsProgress]
3846
3833
  );
3847
- const setCheckoutProgress = useCallback10(
3834
+ const setCheckoutProgress = useCallback9(
3848
3835
  (checkoutId, progress) => {
3849
3836
  setCheckoutsProgress((data) => ({ ...data, [checkoutId]: progress }));
3850
3837
  },
@@ -3866,7 +3853,7 @@ function FunkitCheckoutProvider({ children }) {
3866
3853
  });
3867
3854
  }
3868
3855
  );
3869
- const initNewWithdrawal = useCallback10(
3856
+ const initNewWithdrawal = useCallback9(
3870
3857
  (props, checkoutConfig) => {
3871
3858
  const { onWithdrawalConfirmation, onWithdrawalError, config } = props;
3872
3859
  const newWithdrawalId = uuid();
@@ -3912,7 +3899,7 @@ function FunkitCheckoutProvider({ children }) {
3912
3899
  },
3913
3900
  [logEvent]
3914
3901
  );
3915
- const initNewCheckout = useCallback10(
3902
+ const initNewCheckout = useCallback9(
3916
3903
  ({ config, ...initSettings }) => {
3917
3904
  const newCheckoutId = uuid();
3918
3905
  const newActiveCheckoutItem = {
@@ -3992,7 +3979,7 @@ function FunkitCheckoutProvider({ children }) {
3992
3979
  });
3993
3980
  }
3994
3981
  );
3995
- const startDirectExecutionCheckout = useCallback10(
3982
+ const startDirectExecutionCheckout = useCallback9(
3996
3983
  async ({
3997
3984
  stepMessageSetter,
3998
3985
  latestQuote,
@@ -4076,7 +4063,7 @@ function FunkitCheckoutProvider({ children }) {
4076
4063
  });
4077
4064
  depositAddressOrHash = txHash;
4078
4065
  } else {
4079
- const newTransferInit = await manualFetch({
4066
+ const newTransferInit = await checkoutTransferFetch({
4080
4067
  userId: userInfo.id || "",
4081
4068
  toChainId: checkoutItem.initSettings.config.targetChain,
4082
4069
  toTokenAddress: checkoutItem.initSettings.config.targetAsset,
@@ -4118,11 +4105,10 @@ function FunkitCheckoutProvider({ children }) {
4118
4105
  updateActiveCheckout,
4119
4106
  walletAddress,
4120
4107
  getWithdrawalDirectExecution,
4121
- manualFetch,
4122
4108
  logEvent
4123
4109
  ]
4124
4110
  );
4125
- const startRegularCheckout = useCallback10(
4111
+ const startRegularCheckout = useCallback9(
4126
4112
  async ({
4127
4113
  stepMessageSetter,
4128
4114
  latestQuote,
@@ -4339,14 +4325,14 @@ function useFunkitCheckout(props) {
4339
4325
  const { connectModalOpen, openConnectModal } = useConnectModal();
4340
4326
  const { isUserLoggedIn } = useGeneralWallet();
4341
4327
  const isCheckoutActivated = useFlag(FlagKey6.IsCheckoutActivated);
4342
- const onErrorWrapper = useCallback10(
4328
+ const onErrorWrapper = useCallback9(
4343
4329
  (payload) => {
4344
4330
  logger.warn(payload.message, payload);
4345
4331
  onError?.(payload);
4346
4332
  },
4347
4333
  [onError]
4348
4334
  );
4349
- const onOpenWrapper = useCallback10(
4335
+ const onOpenWrapper = useCallback9(
4350
4336
  (newId) => {
4351
4337
  props?.onOpen?.();
4352
4338
  openFunCheckoutModal?.(newId);
@@ -4710,14 +4696,14 @@ var getInputErrorNotification = (error) => {
4710
4696
  return {
4711
4697
  message: `${formatCurrencyAndStringify(
4712
4698
  error.usdMaxAmount
4713
- )} maximum order`,
4699
+ )} maximum deposit`,
4714
4700
  type: "hint"
4715
4701
  };
4716
4702
  case "belowMin":
4717
4703
  return {
4718
4704
  message: `${formatCurrencyAndStringify(
4719
4705
  error.usdMinAmount
4720
- )} minimum order`,
4706
+ )} minimum deposit`,
4721
4707
  type: "hint"
4722
4708
  };
4723
4709
  }
@@ -4825,29 +4811,18 @@ function reformatIntegerPart(integerPart, locale, preserveLeadingZeroes) {
4825
4811
  import { mainnet as mainnet5 } from "viem/chains";
4826
4812
  var L1_FEES_ESTIMATE = 5;
4827
4813
  var L2_FEES_ESTIMATE = 1;
4828
- var MESH_L1_FEES_ESTIMATE = 8;
4829
- var MESH_L2_FEES_ESTIMATE = 2;
4830
- var MESH_CUSTOM_CLIENT_FEE_PERCENT = 0.055;
4831
- var getMeshFeesUsdEstimate = (assetChainId, assetUsdAmount) => {
4832
- let meshFeeEstimate = (assetUsdAmount || 0) * MESH_CUSTOM_CLIENT_FEE_PERCENT;
4833
- if (assetChainId === mainnet5.id.toString()) {
4834
- meshFeeEstimate += MESH_L1_FEES_ESTIMATE;
4835
- } else {
4836
- meshFeeEstimate += MESH_L2_FEES_ESTIMATE;
4837
- }
4838
- return meshFeeEstimate;
4839
- };
4814
+ var BROKERAGE_FEES_ESTIMATE = 0;
4840
4815
  var getBaseFeeUsdEstimate = (targetChainId, assetChainId) => {
4841
4816
  if (targetChainId !== mainnet5.id.toString() && assetChainId !== mainnet5.id.toString()) {
4842
4817
  return L2_FEES_ESTIMATE;
4843
4818
  }
4844
4819
  return L1_FEES_ESTIMATE;
4845
4820
  };
4846
- var getFeesUsdEstimate = (targetChainId, assetChainId, assetUsdAmount, paymentMethod) => {
4821
+ var getFeesUsdEstimate = (targetChainId, assetChainId, paymentMethod) => {
4847
4822
  const baseFeeEstimate = getBaseFeeUsdEstimate(targetChainId, assetChainId);
4848
4823
  const isBrokerage = paymentMethod === "brokerage" /* BROKERAGE */;
4849
- const meshFeeEstimate = isBrokerage ? getMeshFeesUsdEstimate(assetChainId, assetUsdAmount) : 0;
4850
- return baseFeeEstimate + meshFeeEstimate;
4824
+ const brokerageFeeEstimate = isBrokerage ? BROKERAGE_FEES_ESTIMATE : 0;
4825
+ return baseFeeEstimate + brokerageFeeEstimate;
4851
4826
  };
4852
4827
 
4853
4828
  // src/domains/asset.ts
@@ -4951,12 +4926,7 @@ function getUsdAvailableAmount(targetChainId, assetChainId, assetUsdAmount, paym
4951
4926
  if (!assetChainId || !assetUsdAmount) {
4952
4927
  return null;
4953
4928
  }
4954
- const fees = getFeesUsdEstimate(
4955
- targetChainId,
4956
- assetChainId,
4957
- assetUsdAmount,
4958
- paymentMethod
4959
- );
4929
+ const fees = getFeesUsdEstimate(targetChainId, assetChainId, paymentMethod);
4960
4930
  return Math.max(round(assetUsdAmount - fees, USD_DECIMALS, "floor"), 0);
4961
4931
  }
4962
4932
  var WITHDRAW_BLACK_LIST = {
@@ -5611,7 +5581,7 @@ function FunkitCheckoutHistoryProvider({
5611
5581
  const [isInited, setIsInited] = useState7(false);
5612
5582
  const [isRefreshing, setIsRefreshing] = useState7(true);
5613
5583
  const isGuestUserOnCheckoutHistory = !isUserLoggedIn && !!historyDepositAddress;
5614
- const _refreshCheckoutHistory = useCallback11(async () => {
5584
+ const _refreshCheckoutHistory = useCallback10(async () => {
5615
5585
  if (!funkitConfig.apiKey) {
5616
5586
  return;
5617
5587
  }
@@ -5679,7 +5649,7 @@ function FunkitCheckoutHistoryProvider({
5679
5649
  clearInterval(intervalRef.current);
5680
5650
  }
5681
5651
  }, [logoutSymbol]);
5682
- const startCheckoutHistoryListener = useCallback11(
5652
+ const startCheckoutHistoryListener = useCallback10(
5683
5653
  (singleDepositAddr, expedited = false) => {
5684
5654
  setHistoryDepositAddress(singleDepositAddr);
5685
5655
  clearInterval(intervalRef.current);
@@ -5695,7 +5665,7 @@ function FunkitCheckoutHistoryProvider({
5695
5665
  },
5696
5666
  [triggerRefreshSymbol]
5697
5667
  );
5698
- const stopCheckoutHistoryListener = useCallback11(
5668
+ const stopCheckoutHistoryListener = useCallback10(
5699
5669
  (cancelIntervalId) => {
5700
5670
  clearInterval(cancelIntervalId);
5701
5671
  if (cancelIntervalId === intervalRef.current) {
@@ -5856,7 +5826,7 @@ import {
5856
5826
  useAnimate
5857
5827
  } from "motion/react";
5858
5828
  import React26, {
5859
- useCallback as useCallback12,
5829
+ useCallback as useCallback11,
5860
5830
  useEffect as useEffect11,
5861
5831
  useRef as useRef3,
5862
5832
  useState as useState9
@@ -6584,11 +6554,11 @@ function TransactionStatus({
6584
6554
  const [transitioningToStatus, setTransitioningToStatus] = useState9(status);
6585
6555
  const [transitioningToStep, setTransitioningToStep] = useState9(step);
6586
6556
  const spinAnimationRef = useRef3();
6587
- const stopSpinning = useCallback12(() => {
6557
+ const stopSpinning = useCallback11(() => {
6588
6558
  spinAnimationRef.current?.cancel();
6589
6559
  spinAnimationRef.current = void 0;
6590
6560
  }, []);
6591
- const startSpinning = useCallback12(
6561
+ const startSpinning = useCallback11(
6592
6562
  (step2) => {
6593
6563
  stopSpinning();
6594
6564
  spinAnimationRef.current = animate(
@@ -6606,7 +6576,7 @@ function TransactionStatus({
6606
6576
  },
6607
6577
  [animate, stopSpinning]
6608
6578
  );
6609
- const animateCircleToSuccess = useCallback12(
6579
+ const animateCircleToSuccess = useCallback11(
6610
6580
  async (step2) => {
6611
6581
  const durationMs = 300;
6612
6582
  const checkmarkDelayMs = 50;
@@ -7260,7 +7230,7 @@ function isCustomWithdrawalConfig(config) {
7260
7230
  import { isMobile as isMobile3, isSafari } from "@funkit/utils";
7261
7231
  import clsx8 from "clsx";
7262
7232
  import React48, {
7263
- useCallback as useCallback15,
7233
+ useCallback as useCallback14,
7264
7234
  useContext as useContext12,
7265
7235
  useEffect as useEffect19,
7266
7236
  useRef as useRef8
@@ -8022,7 +7992,7 @@ function FunDivider({
8022
7992
 
8023
7993
  // src/components/FunTooltip/FunTooltip.tsx
8024
7994
  import React45, {
8025
- useCallback as useCallback13,
7995
+ useCallback as useCallback12,
8026
7996
  useEffect as useEffect15,
8027
7997
  useRef as useRef6,
8028
7998
  useState as useState14
@@ -8113,7 +8083,7 @@ var FunTooltip = ({
8113
8083
  const startDelayRef = useRef6();
8114
8084
  const delayRef = useRef6();
8115
8085
  const tooltipRef = useRef6(null);
8116
- const show = useCallback13(
8086
+ const show = useCallback12(
8117
8087
  (startHiding) => {
8118
8088
  startDelayRef.current = setTimeout(() => {
8119
8089
  setIsDisplayed(true);
@@ -8123,7 +8093,7 @@ var FunTooltip = ({
8123
8093
  },
8124
8094
  [startDelay]
8125
8095
  );
8126
- const hide = useCallback13(() => {
8096
+ const hide = useCallback12(() => {
8127
8097
  clearTimeout(startDelayRef.current);
8128
8098
  delayRef.current = setTimeout(() => {
8129
8099
  setIsDisplayed(false);
@@ -8236,7 +8206,7 @@ var HelpIcon = () => {
8236
8206
  };
8237
8207
 
8238
8208
  // src/components/Dialog/FocusTrap.tsx
8239
- import React47, { useCallback as useCallback14, useEffect as useEffect16, useRef as useRef7 } from "react";
8209
+ import React47, { useCallback as useCallback13, useEffect as useEffect16, useRef as useRef7 } from "react";
8240
8210
  var moveFocusWithin = (element2, position) => {
8241
8211
  const focusableElements = element2.querySelectorAll(
8242
8212
  "button:not(:disabled), a[href]"
@@ -8269,7 +8239,7 @@ function FocusTrap(props) {
8269
8239
  return /* @__PURE__ */ React47.createElement(React47.Fragment, null, /* @__PURE__ */ React47.createElement(
8270
8240
  "div",
8271
8241
  {
8272
- onFocus: useCallback14(
8242
+ onFocus: useCallback13(
8273
8243
  () => contentRef.current && moveFocusWithin(contentRef.current, "end"),
8274
8244
  []
8275
8245
  ),
@@ -8286,7 +8256,7 @@ function FocusTrap(props) {
8286
8256
  ), /* @__PURE__ */ React47.createElement(
8287
8257
  "div",
8288
8258
  {
8289
- onFocus: useCallback14(
8259
+ onFocus: useCallback13(
8290
8260
  () => contentRef.current && moveFocusWithin(contentRef.current, "start"),
8291
8261
  []
8292
8262
  ),
@@ -8422,7 +8392,7 @@ function Dialog({
8422
8392
  }
8423
8393
  return () => document.removeEventListener("keydown", handleEscape);
8424
8394
  }, [open, onClose, isSmartCloseable]);
8425
- const handleBackdropClick = useCallback15(
8395
+ const handleBackdropClick = useCallback14(
8426
8396
  () => isSmartCloseable ? onClose() : () => void 0,
8427
8397
  [isSmartCloseable, onClose]
8428
8398
  );
@@ -8972,7 +8942,7 @@ import React61 from "react";
8972
8942
  // src/components/Dropdown/BaseDropdown.tsx
8973
8943
  import { isMobile as isMobile4, noop as noop2 } from "@funkit/utils";
8974
8944
  import { AnimatePresence as AnimatePresence4, motion as motion5 } from "motion/react";
8975
- import React58, { useCallback as useCallback16, useEffect as useEffect23, useMemo as useMemo14, useRef as useRef10, useState as useState18 } from "react";
8945
+ import React58, { useCallback as useCallback15, useEffect as useEffect23, useMemo as useMemo14, useRef as useRef10, useState as useState18 } from "react";
8976
8946
 
8977
8947
  // src/consts/layout.ts
8978
8948
  var VERTICAL_SECTION_GAP = "18";
@@ -9605,7 +9575,7 @@ function BaseDropdown({
9605
9575
  ),
9606
9576
  [options, searchInput]
9607
9577
  );
9608
- const closeDropdown = useCallback16(() => {
9578
+ const closeDropdown = useCallback15(() => {
9609
9579
  setIsOpened(false);
9610
9580
  resetSearchOnClose && setSearchInput("");
9611
9581
  }, [resetSearchOnClose]);
@@ -12071,7 +12041,7 @@ var useTokenAndChainSelection = (transferInit, defaultValues, isWithdrawal) => {
12071
12041
  import { useState as useState26 } from "react";
12072
12042
 
12073
12043
  // src/hooks/useAutoClearState.ts
12074
- import { useCallback as useCallback17, useEffect as useEffect27, useRef as useRef12, useState as useState22 } from "react";
12044
+ import { useCallback as useCallback16, useEffect as useEffect27, useRef as useRef12, useState as useState22 } from "react";
12075
12045
  function useAutoClearState(initialValue = null) {
12076
12046
  const [state, setState] = useState22(initialValue);
12077
12047
  const timeoutRef = useRef12();
@@ -12084,7 +12054,7 @@ function useAutoClearState(initialValue = null) {
12084
12054
  }, []);
12085
12055
  return [
12086
12056
  state,
12087
- useCallback17((newState, durationMs) => {
12057
+ useCallback16((newState, durationMs) => {
12088
12058
  if (timeoutRef.current) {
12089
12059
  clearTimeout(timeoutRef.current);
12090
12060
  timeoutRef.current = void 0;
@@ -12120,7 +12090,7 @@ var useIsBlacklisted = (walletAddress, customRecipient) => {
12120
12090
  import { FlagKey as FlagKey14, isNotNullish as isNotNullish5 } from "@funkit/utils";
12121
12091
  import React72, {
12122
12092
  createContext as createContext14,
12123
- useCallback as useCallback19,
12093
+ useCallback as useCallback18,
12124
12094
  useContext as useContext14,
12125
12095
  useEffect as useEffect29,
12126
12096
  useState as useState24
@@ -12131,7 +12101,7 @@ import { useConfig as useConfig4 } from "wagmi";
12131
12101
  import { bluvoGetWithdrawableBalanceById as bluvoGetWithdrawableBalanceById2 } from "@funkit/api-base";
12132
12102
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO9 } from "@funkit/chains";
12133
12103
  import { keepPreviousData, useQuery as useQuery10 } from "@tanstack/react-query";
12134
- import { useCallback as useCallback18, useMemo as useMemo18 } from "react";
12104
+ import { useCallback as useCallback17, useMemo as useMemo18 } from "react";
12135
12105
 
12136
12106
  // src/domains/wallet.ts
12137
12107
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO7 } from "@funkit/chains";
@@ -12505,7 +12475,7 @@ var useBluvo = () => {
12505
12475
  const exchangeType = exchange ? exchange : void 0;
12506
12476
  const walletId = bluvoClient.context?.walletId;
12507
12477
  const quoteExpiresAt = bluvoClient.context?.quote?.expiresAt;
12508
- const handleStartWithdrawal = useCallback18(
12478
+ const handleStartWithdrawal = useCallback17(
12509
12479
  async (brokerType) => {
12510
12480
  try {
12511
12481
  if (!bluvoClient) {
@@ -12642,7 +12612,7 @@ function FunkitQuoteProvider({ children }) {
12642
12612
  });
12643
12613
  }
12644
12614
  }, [logoutSymbol]);
12645
- const setQuoteProgress = useCallback19(
12615
+ const setQuoteProgress = useCallback18(
12646
12616
  (state) => {
12647
12617
  setQuoteErrorMessage(state.quoteErrorMessage);
12648
12618
  setQuoteStepMessage(state.quoteStepMessage);
@@ -12650,7 +12620,7 @@ function FunkitQuoteProvider({ children }) {
12650
12620
  },
12651
12621
  []
12652
12622
  );
12653
- const clearCheckoutQuoteMessages = useCallback19(() => {
12623
+ const clearCheckoutQuoteMessages = useCallback18(() => {
12654
12624
  setQuoteStepMessage("");
12655
12625
  setQuoteErrorMessage("");
12656
12626
  }, []);
@@ -13985,7 +13955,7 @@ import {
13985
13955
  } from "@funkit/api-base";
13986
13956
  import { FlagKey as FlagKey17 } from "@funkit/utils";
13987
13957
  import { useQuery as useQuery11, useQueryClient } from "@tanstack/react-query";
13988
- import { useCallback as useCallback20 } from "react";
13958
+ import { useCallback as useCallback19 } from "react";
13989
13959
  var sepaCountryCode = [
13990
13960
  // EU countries that are part of SEPA
13991
13961
  "AT",
@@ -14084,13 +14054,13 @@ function useFrogAccounts() {
14084
14054
  function useClearFrogAccountsCache() {
14085
14055
  const { walletAddress } = useGeneralWallet();
14086
14056
  const queryClient = useQueryClient();
14087
- const clearFrogAccounts = useCallback20(() => {
14057
+ const clearFrogAccounts = useCallback19(() => {
14088
14058
  queryClient.removeQueries({
14089
14059
  queryKey: ["frogSubAccounts", walletAddress],
14090
14060
  exact: true
14091
14061
  });
14092
14062
  }, [queryClient, walletAddress]);
14093
- const clearVirtualFiatAccounts = useCallback20(() => {
14063
+ const clearVirtualFiatAccounts = useCallback19(() => {
14094
14064
  queryClient.removeQueries({
14095
14065
  queryKey: ["useVirtualFiatAccounts"]
14096
14066
  });
@@ -14164,7 +14134,7 @@ function useCreateVirtualBankAccount() {
14164
14134
  const destinationAddress = transferInit?.depositAddr || recipientAddr;
14165
14135
  const subAccountId = allFiatAccounts?.bridgeCustomer?.id;
14166
14136
  const { clearVirtualFiatAccounts } = useClearFrogAccountsCache();
14167
- const handleCreateVirtualFiatAccount = useCallback20(async () => {
14137
+ const handleCreateVirtualFiatAccount = useCallback19(async () => {
14168
14138
  try {
14169
14139
  if (!subAccountId || !targetChainId) {
14170
14140
  return {
@@ -15935,7 +15905,7 @@ var BankIconActive = ({ size = 20 }) => {
15935
15905
 
15936
15906
  // src/components/FunConnectOptions/FunSignInStep.tsx
15937
15907
  import { groupBy, isMobile as isMobile9, isSafari as isSafari3, redirectInMobile as redirectInMobile2 } from "@funkit/utils";
15938
- import React209, { Fragment as Fragment2, useCallback as useCallback49, useMemo as useMemo43, useState as useState66 } from "react";
15908
+ import React209, { Fragment as Fragment2, useCallback as useCallback48, useMemo as useMemo43, useState as useState66 } from "react";
15939
15909
 
15940
15910
  // src/providers/walletConnectDeepLink.ts
15941
15911
  var storageKey2 = "WALLETCONNECT_DEEPLINK_CHOICE";
@@ -16353,10 +16323,10 @@ var SocialsIcon = () => {
16353
16323
  };
16354
16324
 
16355
16325
  // src/components/FunConnectOptions/FunConnectOptions.tsx
16356
- import React208, { useCallback as useCallback48, useMemo as useMemo42, useState as useState65 } from "react";
16326
+ import React208, { useCallback as useCallback47, useMemo as useMemo42, useState as useState65 } from "react";
16357
16327
 
16358
16328
  // src/hooks/useAnimatedNavigation.ts
16359
- import { useCallback as useCallback21, useState as useState29 } from "react";
16329
+ import { useCallback as useCallback20, useState as useState29 } from "react";
16360
16330
 
16361
16331
  // src/css/modalTransitionStyles.css.ts
16362
16332
  var animateContentInClass = "stgjxl2";
@@ -16384,7 +16354,7 @@ function useAnimatedNavigation(callback) {
16384
16354
  const [animateOut, setAnimateOut] = useState29(false);
16385
16355
  const [isSkipped, setIsSkipped] = useState29(false);
16386
16356
  const [isReversed, setIsReversed] = useState29(false);
16387
- const navigateTo = useCallback21(
16357
+ const navigateTo = useCallback20(
16388
16358
  (page, params = {}) => {
16389
16359
  setIsSkipped(!!params.skip);
16390
16360
  if (params.skip) {
@@ -16399,7 +16369,7 @@ function useAnimatedNavigation(callback) {
16399
16369
  },
16400
16370
  [callback]
16401
16371
  );
16402
- const animate = useCallback21(
16372
+ const animate = useCallback20(
16403
16373
  (callback2, params = {}) => {
16404
16374
  setIsSkipped(!!params.skip);
16405
16375
  if (params.skip) {
@@ -16427,7 +16397,7 @@ import React198, { useEffect as useEffect50, useRef as useRef25, useState as use
16427
16397
 
16428
16398
  // src/modals/CheckoutModal/stepTransition.ts
16429
16399
  import {
16430
- useCallback as useCallback44,
16400
+ useCallback as useCallback43,
16431
16401
  useRef as useRef24,
16432
16402
  useState as useState61
16433
16403
  } from "react";
@@ -16721,7 +16691,7 @@ import {
16721
16691
  BridgeCustomerStatus as BridgeCustomerStatus4
16722
16692
  } from "@funkit/api-base";
16723
16693
  import { exhaustiveCheck as exhaustiveCheck4 } from "@funkit/utils";
16724
- import React98, { useCallback as useCallback22, useState as useState31 } from "react";
16694
+ import React98, { useCallback as useCallback21, useState as useState31 } from "react";
16725
16695
  import { createPortal as createPortal4 } from "react-dom";
16726
16696
 
16727
16697
  // src/components/Icons/HomeIcon.tsx
@@ -17323,7 +17293,7 @@ var VerifyAccountScreen = ({
17323
17293
  const kycUninitialized = !isSoftRejected2 && customerStatus && isKycUninitialized(customerStatus);
17324
17294
  const canStartKyc = kycUninitialized || isSoftRejected2;
17325
17295
  const handleCreateVirtualFiatAccount = useCreateVirtualBankAccount();
17326
- const onClick = useCallback22(async () => {
17296
+ const onClick = useCallback21(async () => {
17327
17297
  if (customerStatus === BridgeCustomerStatus4.ACTIVE) {
17328
17298
  setCreating(true);
17329
17299
  const result = await handleCreateVirtualFiatAccount();
@@ -17831,7 +17801,7 @@ function VirtualFiatAccount({
17831
17801
  }
17832
17802
 
17833
17803
  // src/modals/CheckoutModal/Brokerage/SelectBrokerage.tsx
17834
- import React111, { useState as useState32, useCallback as useCallback23 } from "react";
17804
+ import React111, { useState as useState32, useCallback as useCallback22 } from "react";
17835
17805
  import { createPortal as createPortal6 } from "react-dom";
17836
17806
 
17837
17807
  // src/components/FunSelectBrokerage/FunSelectBrokerage.tsx
@@ -17937,7 +17907,7 @@ function SelectBrokerage({
17937
17907
  const { updateSelectedPaymentMethodInfo } = useCheckoutContext();
17938
17908
  const [selectedExchange, setSelectedExchange] = useState32();
17939
17909
  const bottomSectionRef = useBottomSectionRef();
17940
- const handleSelect = useCallback23(
17910
+ const handleSelect = useCallback22(
17941
17911
  async (brokerType) => {
17942
17912
  try {
17943
17913
  setSelectedExchange(brokerType);
@@ -18006,7 +17976,7 @@ function getCheckoutCompletionTime(checkout) {
18006
17976
  }
18007
17977
 
18008
17978
  // src/components/FunCheckoutHistory/FunCheckoutHistoryDetail.tsx
18009
- import React117, { useCallback as useCallback25, useMemo as useMemo22, useState as useState34 } from "react";
17979
+ import React117, { useCallback as useCallback24, useMemo as useMemo22, useState as useState34 } from "react";
18010
17980
  import { createPortal as createPortal7 } from "react-dom";
18011
17981
 
18012
17982
  // src/components/HelpAlert/HelpAlert.tsx
@@ -18022,7 +17992,7 @@ var HelpAlert = ({ onHelp: onHelp2 }) => {
18022
17992
  };
18023
17993
 
18024
17994
  // src/hooks/useFunListeners.ts
18025
- import { useCallback as useCallback24, useEffect as useEffect32, useRef as useRef15 } from "react";
17995
+ import { useCallback as useCallback23, useEffect as useEffect32, useRef as useRef15 } from "react";
18026
17996
  function useCheckoutHistoryListener(activate = true, singleDepositAddr) {
18027
17997
  const activeIntervalRef = useRef15();
18028
17998
  const { startCheckoutHistoryListener, stopCheckoutHistoryListener } = useCheckoutHistoryContext();
@@ -18045,21 +18015,21 @@ function useSIWFarcasterListener(channelToken) {
18045
18015
  const { getFcConnectionStatus, handleFunkitWeb2Login } = useFunkitWeb2Login();
18046
18016
  const intervalRef = useRef15();
18047
18017
  const [refreshSymbol, triggerRefreshSymbol] = useSymbolRefresh_default();
18048
- const startStatusListener = useCallback24(() => {
18018
+ const startStatusListener = useCallback23(() => {
18049
18019
  clearInterval(intervalRef.current);
18050
18020
  triggerRefreshSymbol();
18051
18021
  intervalRef.current = setInterval(() => {
18052
18022
  triggerRefreshSymbol();
18053
18023
  }, FARCASTER_STATUS_INTERVAL);
18054
18024
  }, [triggerRefreshSymbol]);
18055
- const stopStatusListener = useCallback24(() => {
18025
+ const stopStatusListener = useCallback23(() => {
18056
18026
  clearInterval(intervalRef.current);
18057
18027
  }, []);
18058
18028
  useEffect32(() => {
18059
18029
  startStatusListener();
18060
18030
  return () => stopStatusListener();
18061
18031
  }, []);
18062
- const check = useCallback24(async () => {
18032
+ const check = useCallback23(async () => {
18063
18033
  if (!channelToken || !initalChainid) {
18064
18034
  return;
18065
18035
  }
@@ -18374,7 +18344,7 @@ function FunCheckoutHistoryDetail({
18374
18344
  useCheckoutHistoryListener(isProcessing, checkoutHistoryInfo?.depositAddr);
18375
18345
  useWalletAssets({ enableRefetchInterval: isProcessing || isCompleted });
18376
18346
  const { beginCheckout } = useFunkitCheckout({});
18377
- const handleNewCheckout = useCallback25(
18347
+ const handleNewCheckout = useCallback24(
18378
18348
  (fromCheckout) => {
18379
18349
  onClose({ isNewDeposit: true });
18380
18350
  const historicalCheckout = fromCheckout.clientMetadata;
@@ -18851,7 +18821,7 @@ import {
18851
18821
  formatTimestamp as formatTimestamp2,
18852
18822
  isTokenEquivalent as isTokenEquivalent4
18853
18823
  } from "@funkit/utils";
18854
- import React122, { useCallback as useCallback26, useMemo as useMemo24, useRef as useRef18, useState as useState36 } from "react";
18824
+ import React122, { useCallback as useCallback25, useMemo as useMemo24, useRef as useRef18, useState as useState36 } from "react";
18855
18825
  import { createPortal as createPortal9 } from "react-dom";
18856
18826
 
18857
18827
  // src/hooks/useReceiveAmountLabel.ts
@@ -18881,7 +18851,7 @@ function FunDirectExecutionHistoryDetail({
18881
18851
  const { checkoutItem } = useCheckoutContext();
18882
18852
  const { beginCheckout } = useFunkitCheckout({});
18883
18853
  const oldCheckoutConfig = checkoutItem?.initSettings.config;
18884
- const handleNewCheckout = useCallback26(
18854
+ const handleNewCheckout = useCallback25(
18885
18855
  (fromCheckout) => {
18886
18856
  onClose({ isNewDeposit: true });
18887
18857
  const historicalCheckout = fromCheckout.clientMetadata;
@@ -19142,11 +19112,11 @@ function FunCheckoutHistoryContent({
19142
19112
  }
19143
19113
 
19144
19114
  // src/modals/CheckoutModal/CheckoutComplete/useLogCheckoutCompletion.ts
19145
- import { useCallback as useCallback27 } from "react";
19115
+ import { useCallback as useCallback26 } from "react";
19146
19116
  function useLogCheckoutCompletion() {
19147
19117
  const { latestQuote } = useQuoteContext();
19148
19118
  const { checkoutItem } = useCheckoutContext();
19149
- const logCheckoutCompletion = useCallback27(
19119
+ const logCheckoutCompletion = useCallback26(
19150
19120
  (depositAddress) => {
19151
19121
  if (depositAddress) {
19152
19122
  logger.log("checkoutFundingCompleted", {
@@ -19871,11 +19841,11 @@ import { useState as useState40 } from "react";
19871
19841
  import { useEffect as useEffect37, useState as useState39 } from "react";
19872
19842
 
19873
19843
  // src/hooks/useCheckoutAccountBalanceTransfer.ts
19874
- import { useCallback as useCallback28 } from "react";
19844
+ import { useCallback as useCallback27 } from "react";
19875
19845
  function useCheckoutAccountBalanceTransfer() {
19876
19846
  const { checkoutItem } = useCheckoutContext();
19877
19847
  const { funWallet, funWalletAuth } = useGeneralWallet();
19878
- const generateCheckoutTransferOpItems = useCallback28(
19848
+ const generateCheckoutTransferOpItems = useCallback27(
19879
19849
  async (toAddress, tokenAmount) => {
19880
19850
  if (checkoutItem?.selectedSourceAssetInfo?.chainId) {
19881
19851
  const newConfig = getFunkitEnvForCheckoutEstimation({
@@ -20085,7 +20055,7 @@ import React136, { useState as useState41 } from "react";
20085
20055
  // src/modals/CheckoutModal/ConfirmationStep/useAccountBalanceTransfer.ts
20086
20056
  import { getPaymasterDataForCheckoutSponsoredTransfer } from "@funkit/api-base";
20087
20057
  import { ERC20_ABI, USDT_ABI } from "@funkit/core";
20088
- import { useCallback as useCallback29 } from "react";
20058
+ import { useCallback as useCallback28 } from "react";
20089
20059
  import { useAccount as useAccount5, useSendTransaction, useWriteContract } from "wagmi";
20090
20060
 
20091
20061
  // src/utils/isMainnetUsdt.ts
@@ -20109,7 +20079,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
20109
20079
  const { sendTransactionAsync } = useSendTransaction();
20110
20080
  const { cancelCheckout, checkoutItem } = useCheckoutContext();
20111
20081
  const { latestQuote } = useQuoteContext();
20112
- const handleWeb3AccountBalancePostCheckout = useCallback29(
20082
+ const handleWeb3AccountBalancePostCheckout = useCallback28(
20113
20083
  async (depositAddress) => {
20114
20084
  if (!latestQuote?.baseQuote.estTotalFromAmountBaseUnit) {
20115
20085
  return;
@@ -20215,7 +20185,7 @@ function useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage) {
20215
20185
  function useWeb2AccountBalancePostCheckout(apiKey) {
20216
20186
  const { latestQuote } = useQuoteContext();
20217
20187
  const { generateCheckoutTransferOpItems } = useCheckoutAccountBalanceTransfer();
20218
- const handleWeb2AccountBalancePostCheckout = useCallback29(
20188
+ const handleWeb2AccountBalancePostCheckout = useCallback28(
20219
20189
  async (depositAddress) => {
20220
20190
  const { rFunWallet, rFunWalletAuth, transferOp, envConfig } = await generateCheckoutTransferOpItems(
20221
20191
  depositAddress,
@@ -20264,7 +20234,7 @@ function useAccountBalancePostCheckout(setPostCheckoutStepMessage, apiKey) {
20264
20234
  const { loginType } = useGeneralWallet();
20265
20235
  const handleWeb2AccountBalancePostCheckout = useWeb2AccountBalancePostCheckout(apiKey);
20266
20236
  const handleWeb3AccountBalancePostCheckout = useWeb3AccountBalancePostCheckout(setPostCheckoutStepMessage);
20267
- const handleAccountBalancePostCheckout = useCallback29(
20237
+ const handleAccountBalancePostCheckout = useCallback28(
20268
20238
  async (depositAddress) => {
20269
20239
  if (loginType === "web2" /* Web2 */) {
20270
20240
  await handleWeb2AccountBalancePostCheckout(depositAddress);
@@ -20415,15 +20385,15 @@ function usePostCheckout({
20415
20385
  }
20416
20386
 
20417
20387
  // src/modals/CheckoutModal/ConfirmationStep/useQuoteRefresh.ts
20418
- import { useCallback as useCallback32, useEffect as useEffect39, useMemo as useMemo29, useRef as useRef20, useState as useState44 } from "react";
20388
+ import { useCallback as useCallback31, useEffect as useEffect39, useMemo as useMemo29, useRef as useRef20, useState as useState44 } from "react";
20419
20389
 
20420
20390
  // src/hooks/useCountdown.tsx
20421
20391
  import React138 from "react";
20422
- import { useCallback as useCallback31, useState as useState43 } from "react";
20392
+ import { useCallback as useCallback30, useState as useState43 } from "react";
20423
20393
 
20424
20394
  // src/components/FunCountdown/FunCountdown.tsx
20425
20395
  import { noop as noop7 } from "@funkit/utils";
20426
- import React137, { useCallback as useCallback30, useEffect as useEffect38, useState as useState42 } from "react";
20396
+ import React137, { useCallback as useCallback29, useEffect as useEffect38, useState as useState42 } from "react";
20427
20397
 
20428
20398
  // src/components/FunCountdown/FunCountdown.css.ts
20429
20399
  var backgroundRing = "_1t0bc111 _1rsrm2f1mm";
@@ -20459,7 +20429,7 @@ var FunCountdown = ({
20459
20429
  const onCountdownEndedOnce = useEffectEvent(onCountdownEnded);
20460
20430
  const onBeforeCountdownEndsOnce = useEffectEvent(onBeforeCountdownEnds);
20461
20431
  const onCountdownLastSecondOnce = useEffectEvent(onCountdownLastSecond);
20462
- const handleInterval = useCallback30(() => {
20432
+ const handleInterval = useCallback29(() => {
20463
20433
  if (isPaused) {
20464
20434
  return;
20465
20435
  }
@@ -20577,7 +20547,7 @@ function useCountdown({
20577
20547
  }) {
20578
20548
  const [countdownKey, setCountdownKey] = useState43(0);
20579
20549
  const [isLastSecond, setIsLastSecond] = useState43(false);
20580
- const restartCountdown = useCallback31(() => {
20550
+ const restartCountdown = useCallback30(() => {
20581
20551
  setIsLastSecond(false);
20582
20552
  setCountdownKey((key) => key + 1);
20583
20553
  }, []);
@@ -20632,7 +20602,7 @@ function useQuoteRefresh({
20632
20602
  preloadedQuoteRef.current = data;
20633
20603
  }
20634
20604
  );
20635
- const preloadQuote = useCallback32(() => {
20605
+ const preloadQuote = useCallback31(() => {
20636
20606
  if (!isSourceAssetConfirming) {
20637
20607
  onSourceAssetConfirmed(true);
20638
20608
  }
@@ -20646,7 +20616,7 @@ function useQuoteRefresh({
20646
20616
  onBeforeCountdownEnds: preloadQuote,
20647
20617
  onCountdownEnded: () => refreshQuote()
20648
20618
  });
20649
- const refreshQuote = useCallback32(
20619
+ const refreshQuote = useCallback31(
20650
20620
  async (forceHardRefresh = false) => {
20651
20621
  if (isOnHold) {
20652
20622
  setIsPendingRefresh(true);
@@ -21010,7 +20980,7 @@ function ConfirmationStep({
21010
20980
  }
21011
20981
 
21012
20982
  // src/modals/CheckoutModal/ConnectExchange.tsx
21013
- import React144, { useCallback as useCallback33, useEffect as useEffect41, useState as useState46 } from "react";
20983
+ import React144, { useCallback as useCallback32, useEffect as useEffect41, useState as useState46 } from "react";
21014
20984
  import { createPortal as createPortal12 } from "react-dom";
21015
20985
 
21016
20986
  // src/components/Icons/HandIcon.tsx
@@ -21165,7 +21135,7 @@ function ConnectExchange({
21165
21135
  navigateToBrokerage();
21166
21136
  }
21167
21137
  }, [isConnected]);
21168
- const onClickContinue = useCallback33(async () => {
21138
+ const onClickContinue = useCallback32(async () => {
21169
21139
  try {
21170
21140
  setIsLoadingMeshModal(true);
21171
21141
  setAuthError("");
@@ -22675,7 +22645,7 @@ var QuickOptions = ({
22675
22645
 
22676
22646
  // src/modals/CheckoutModal/InputAmount/useAmountInput.ts
22677
22647
  import {
22678
- useCallback as useCallback35,
22648
+ useCallback as useCallback34,
22679
22649
  useMemo as useMemo31,
22680
22650
  useReducer as useReducer3,
22681
22651
  useRef as useRef22,
@@ -22683,10 +22653,10 @@ import {
22683
22653
  } from "react";
22684
22654
 
22685
22655
  // src/hooks/useTextMeasurer.ts
22686
- import { useCallback as useCallback34, useRef as useRef21 } from "react";
22656
+ import { useCallback as useCallback33, useRef as useRef21 } from "react";
22687
22657
  function useTextMeasurer(inputRef) {
22688
22658
  const canvasRef = useRef21(document.createElement("canvas"));
22689
- const measureText = useCallback34(
22659
+ const measureText = useCallback33(
22690
22660
  (text, fontSize) => {
22691
22661
  if (!inputRef.current) {
22692
22662
  return void 0;
@@ -22990,7 +22960,7 @@ function useAmountInput(options) {
22990
22960
  const isCardCheckout = paymentMethodInfo.paymentMethod === "card" /* CARD */;
22991
22961
  const isMeldFlow = isCardCheckout && isMeldEnabled;
22992
22962
  const unitPrice = isStablecoin(checkoutConfig.targetAssetTicker) ? 1 : realUnitPrice;
22993
- const dispatchAndGetNewState = useCallback35(
22963
+ const dispatchAndGetNewState = useCallback34(
22994
22964
  (action) => {
22995
22965
  dispatch(action);
22996
22966
  return getDerivedState(
@@ -23181,7 +23151,7 @@ function useAmountInput(options) {
23181
23151
  return () => element2.removeEventListener("beforeinput", onBeforeInput2);
23182
23152
  }
23183
23153
  }, [inputDecimals, locale]);
23184
- const onChange = useCallback35(
23154
+ const onChange = useCallback34(
23185
23155
  (event) => {
23186
23156
  dispatch({
23187
23157
  type: "setInputValue",
@@ -23216,7 +23186,7 @@ function useAmountInput(options) {
23216
23186
  });
23217
23187
  }
23218
23188
  }, [defaultAmount]);
23219
- const setFiatAmount = useCallback35(
23189
+ const setFiatAmount = useCallback34(
23220
23190
  (fiatAmount) => {
23221
23191
  const newState = dispatchAndGetNewState({
23222
23192
  type: "setFiatAmount",
@@ -23228,7 +23198,7 @@ function useAmountInput(options) {
23228
23198
  },
23229
23199
  [dispatchAndGetNewState, unitPrice]
23230
23200
  );
23231
- const toggleInputInFiat = useCallback35(() => {
23201
+ const toggleInputInFiat = useCallback34(() => {
23232
23202
  dispatch({ type: "toggleInputInFiat" });
23233
23203
  inputRef.current?.focus();
23234
23204
  }, []);
@@ -23247,7 +23217,7 @@ function useAmountInput(options) {
23247
23217
 
23248
23218
  // src/modals/CheckoutModal/InputAmount/useMeld.tsx
23249
23219
  import { MeldServiceProvider as MeldServiceProvider2 } from "@funkit/api-base";
23250
- import React158, { useCallback as useCallback37 } from "react";
23220
+ import React158, { useCallback as useCallback36 } from "react";
23251
23221
 
23252
23222
  // src/components/SourceMeldQuoteItem/SourceMeldQuoteItem.tsx
23253
23223
  import React157 from "react";
@@ -23640,7 +23610,7 @@ import {
23640
23610
  katanaChain
23641
23611
  } from "@funkit/chains";
23642
23612
  import { getTokenAddressBySymbolAndChainId as getTokenAddressBySymbolAndChainId2 } from "@funkit/core";
23643
- import { useCallback as useCallback36, useState as useState48 } from "react";
23613
+ import { useCallback as useCallback35, useState as useState48 } from "react";
23644
23614
  import { mainnet as mainnet10, mantle, zksync as zksync2 } from "viem/chains";
23645
23615
  var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
23646
23616
  if (!checkoutItem?.initSettings.config.targetChain) {
@@ -23701,7 +23671,7 @@ function useUpdateCardSourceAsset() {
23701
23671
  const { checkoutItem, updateSourceAsset } = useCheckoutContext();
23702
23672
  const { userIpInfo } = useFunkitUserIp();
23703
23673
  const [isUpdating, setIsUpdating] = useState48(false);
23704
- const onSelectCard = useCallback36(async () => {
23674
+ const onSelectCard = useCallback35(async () => {
23705
23675
  setIsUpdating(true);
23706
23676
  try {
23707
23677
  const source = await pickSourceAssetForCard(checkoutItem, userIpInfo);
@@ -23806,7 +23776,7 @@ function useMeld(meldEnabled, manuallySelectedQuote, usdAmount, fiatCurrency) {
23806
23776
  );
23807
23777
  const isMeldMoonpaySelected = selectedQuote?.serviceProvider === MeldServiceProvider2.MOONPAY;
23808
23778
  const isMeldContinueDisabled = meldEnabled && (!!meldLimitError || isMeldLinkPending || !!meldQuotesQuery.error || meldQuotesQuery.isFetching || isSelectedQuoteUnavailable);
23809
- const getMeldError = useCallback37(
23779
+ const getMeldError = useCallback36(
23810
23780
  function getMeldError2() {
23811
23781
  if (isSelectedQuoteUnavailable) {
23812
23782
  return {
@@ -25577,7 +25547,7 @@ var TwoFactorInput = ({
25577
25547
  };
25578
25548
 
25579
25549
  // src/modals/CheckoutModal/MoonpaySetup.tsx
25580
- import React172, { useCallback as useCallback38, useMemo as useMemo37, useState as useState52 } from "react";
25550
+ import React172, { useCallback as useCallback37, useMemo as useMemo37, useState as useState52 } from "react";
25581
25551
 
25582
25552
  // src/components/FunPayments/FunPaymentMoonpayType.css.ts
25583
25553
  var mpClass = "_1kmpeyf0";
@@ -25698,7 +25668,7 @@ function MoonpaySetup({
25698
25668
  const { paymentAddress, token, tokenChainId, depositAmount } = modalState;
25699
25669
  const [isSupportedRegion, setIsSupportedRegion] = useState52(true);
25700
25670
  const [isContinueEnabled, setIsContinueEnabled] = useState52(false);
25701
- const handleOnCompleted = useCallback38(() => {
25671
+ const handleOnCompleted = useCallback37(() => {
25702
25672
  onNext({
25703
25673
  depositAddress: paymentAddress
25704
25674
  });
@@ -25736,6 +25706,7 @@ import { FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SU
25736
25706
  import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent8 } from "@funkit/utils";
25737
25707
  import React175, { useEffect as useEffect46, useMemo as useMemo39, useState as useState53 } from "react";
25738
25708
  import { createPortal as createPortal17 } from "react-dom";
25709
+ import { mainnet as mainnet11 } from "viem/chains";
25739
25710
 
25740
25711
  // src/components/Dropdown/ReceiveTokenDropdown.tsx
25741
25712
  import React173 from "react";
@@ -25864,7 +25835,7 @@ var NewTokenDepositAlert = ({
25864
25835
  // src/hooks/useAllowedAssets.ts
25865
25836
  import { getAllowedAssets } from "@funkit/api-base";
25866
25837
  import { useQuery as useQuery18 } from "@tanstack/react-query";
25867
- import { useCallback as useCallback39, useMemo as useMemo38 } from "react";
25838
+ import { useCallback as useCallback38, useMemo as useMemo38 } from "react";
25868
25839
  function useAllowedAssets() {
25869
25840
  const { apiKey } = useFunkitConfig();
25870
25841
  const { checkoutItem } = useCheckoutContext();
@@ -25889,7 +25860,7 @@ function useAllowedAssets() {
25889
25860
  }
25890
25861
  return ret;
25891
25862
  }, [allowedAssets]);
25892
- const isAllowed = useCallback39(
25863
+ const isAllowed = useCallback38(
25893
25864
  (chainId, tokenAddress) => {
25894
25865
  const disabledByCustomerList = checkoutItem?.initSettings.config.disabledSourceTokens?.some(
25895
25866
  (token) => {
@@ -26019,6 +25990,7 @@ function useAssetOptions({
26019
25990
  chainId,
26020
25991
  dynamicTargetAssetCandidates
26021
25992
  }) {
25993
+ const { apiKey } = useFunkitConfig();
26022
25994
  const assetOptions = useMemo39(() => {
26023
25995
  return enrichedAccountHoldings.filter(
26024
25996
  ({ asset }) => chainId !== void 0 ? asset.pickedChainId === chainId.toString() : true
@@ -26033,11 +26005,24 @@ function useAssetOptions({
26033
26005
  secondTokenChainId: userSelectedTargetAsset?.tokenChainId || "",
26034
26006
  secondTokenAddress: userSelectedTargetAsset?.tokenAddress || ""
26035
26007
  });
26008
+ let priority = 0;
26009
+ if (isDisabled) {
26010
+ priority = -1e3;
26011
+ }
26036
26012
  let badgeText = "";
26037
26013
  if (!isUsable) {
26038
26014
  badgeText = reason;
26039
26015
  } else if (!isKnown) {
26040
26016
  badgeText = "Unknown";
26017
+ } else if (isEtherealCustomer(apiKey) && isTokenEquivalent8({
26018
+ firstTokenChainId: mainnet11.id.toString(),
26019
+ firstTokenAddress: "0x90d2af7d622ca3141efa4d8f1f24d86e5974cc8f",
26020
+ // eUSDe (ethereum)
26021
+ secondTokenChainId: asset.pickedChainId,
26022
+ secondTokenAddress: asset.tokenAddress
26023
+ })) {
26024
+ badgeText = "Native";
26025
+ priority = 1e3;
26041
26026
  } else if (dynamicTargetAssetCandidates.some(
26042
26027
  (token) => isTokenEquivalent8({
26043
26028
  firstTokenChainId: token.tokenChainId,
@@ -26052,19 +26037,21 @@ function useAssetOptions({
26052
26037
  }
26053
26038
  return {
26054
26039
  asset,
26040
+ badgeText,
26055
26041
  isDefault,
26056
26042
  isDisabled,
26057
26043
  isUserSelected,
26058
- badgeText
26044
+ priority
26059
26045
  };
26060
26046
  }).sort(
26061
26047
  (a, b) => (
26062
- // Place non disabled tokens first
26063
- Number(a.isDisabled) - Number(b.isDisabled) || // Place higher usdAmount assets first
26048
+ // Place higher priority assets first
26049
+ b.priority - a.priority || // Place higher usdAmount assets first
26064
26050
  (b.asset.usdAmount || 0) - (a.asset.usdAmount || 0)
26065
26051
  )
26066
26052
  );
26067
26053
  }, [
26054
+ apiKey,
26068
26055
  defaultTokenSymbols,
26069
26056
  enrichedAccountHoldings,
26070
26057
  chainId,
@@ -26170,7 +26157,7 @@ function AccountSelectAsset({
26170
26157
  });
26171
26158
  return;
26172
26159
  }
26173
- const isCandidate = candidates.find(
26160
+ let candidate = candidates.find(
26174
26161
  (cand) => isTokenEquivalent8({
26175
26162
  firstTokenChainId: cand.tokenChainId,
26176
26163
  firstTokenAddress: cand.tokenAddress,
@@ -26178,15 +26165,15 @@ function AccountSelectAsset({
26178
26165
  secondTokenAddress: tokenItem.tokenAddress
26179
26166
  })
26180
26167
  );
26181
- if (isCandidate) {
26168
+ candidate = candidate || candidates.find((token) => token.isDefault) || candidates[0];
26169
+ if (candidate) {
26182
26170
  updateTargetAsset({
26183
- targetAsset: tokenItem.tokenAddress,
26184
- targetChain: tokenItem.pickedChainId,
26185
- targetAssetMinAmount: isCandidate.targetAssetMinAmount,
26186
- targetAssetTicker: checkoutConfig.targetAssetTicker,
26187
- iconSrc: checkoutConfig.iconSrc || tokenItem.iconSrc
26171
+ targetAsset: candidate.tokenAddress,
26172
+ targetChain: candidate.tokenChainId,
26173
+ targetAssetMinAmount: candidate.targetAssetMinAmount,
26174
+ targetAssetTicker: candidate.tokenSymbol,
26175
+ iconSrc: candidate.iconSrc
26188
26176
  });
26189
- return;
26190
26177
  }
26191
26178
  };
26192
26179
  const onClickContinue = useEffectEvent(() => {
@@ -26472,7 +26459,7 @@ function SelectAsset({
26472
26459
 
26473
26460
  // src/modals/CheckoutModal/SourceChange/SourceChange.tsx
26474
26461
  import { BridgeCustomerStatus as BridgeCustomerStatus6, MeldServiceProvider as MeldServiceProvider4 } from "@funkit/api-base";
26475
- import React177, { useCallback as useCallback40, useEffect as useEffect47, useState as useState54 } from "react";
26462
+ import React177, { useCallback as useCallback39, useEffect as useEffect47, useState as useState54 } from "react";
26476
26463
  import { createPortal as createPortal18 } from "react-dom";
26477
26464
 
26478
26465
  // src/modals/CheckoutModal/SourceChange/DefiPurchaseSection.tsx
@@ -26627,7 +26614,7 @@ function PayPal() {
26627
26614
  const isMeldEnabled = useIsMeldEnabled();
26628
26615
  const { checkoutItem } = useCheckoutContext();
26629
26616
  const isPaypalReady = false;
26630
- const onClick = useCallback40(() => {
26617
+ const onClick = useCallback39(() => {
26631
26618
  if (isMeldEnabled && isPaypalReady) {
26632
26619
  openMeldPopup(() => mutateAsync(MeldServiceProvider4.PAYPAL));
26633
26620
  } else {
@@ -26694,7 +26681,7 @@ function SourceChange({
26694
26681
  brokerageFailed: false
26695
26682
  });
26696
26683
  };
26697
- const onCloseConnectModal = useCallback40(() => {
26684
+ const onCloseConnectModal = useCallback39(() => {
26698
26685
  if (modalState.isSoftHidden) {
26699
26686
  setModalState((state) => ({ ...state, isSoftHidden: false }));
26700
26687
  }
@@ -26860,13 +26847,13 @@ import { createPortal as createPortal19 } from "react-dom";
26860
26847
 
26861
26848
  // src/components/CopyAddress/CopyInputDisplayedAddress.tsx
26862
26849
  import { truncateMiddleOfAddress } from "@funkit/utils";
26863
- import React178, { useCallback as useCallback42, useState as useState56 } from "react";
26850
+ import React178, { useCallback as useCallback41, useState as useState56 } from "react";
26864
26851
 
26865
26852
  // src/hooks/useCopyToClipboard.ts
26866
- import { useCallback as useCallback41, useEffect as useEffect48, useState as useState55 } from "react";
26853
+ import { useCallback as useCallback40, useEffect as useEffect48, useState as useState55 } from "react";
26867
26854
  var useCopyToClipboard = (text, delay = 1500) => {
26868
26855
  const [isCopied, setCopied] = useState55(false);
26869
- const handleCopy = useCallback41(() => {
26856
+ const handleCopy = useCallback40(() => {
26870
26857
  if (!text) {
26871
26858
  return;
26872
26859
  }
@@ -26906,7 +26893,7 @@ function CopyInputDisplayedAddress({
26906
26893
  const { handleCopy } = useCopyToClipboard(address);
26907
26894
  const [isActive, setIsActive] = useState56(null);
26908
26895
  const displayAddress = truncateAddress ? truncateMiddleOfAddress(address, 40, 24, 8) : address;
26909
- const handleClick = useCallback42(() => {
26896
+ const handleClick = useCallback41(() => {
26910
26897
  if (isActive) {
26911
26898
  return;
26912
26899
  }
@@ -28222,9 +28209,9 @@ var FiatAccountDetail = {
28222
28209
 
28223
28210
  // src/modals/CheckoutModal/VirtualFiatAccount/KycIframe.tsx
28224
28211
  import { BridgeCustomerStatus as BridgeCustomerStatus7 } from "@funkit/api-base";
28225
- import React197, { useCallback as useCallback43, useEffect as useEffect49, useMemo as useMemo41, useState as useState60 } from "react";
28212
+ import React197, { useCallback as useCallback42, useEffect as useEffect49, useMemo as useMemo41, useState as useState60 } from "react";
28226
28213
  function useIframeListener(listeners) {
28227
- const handleMessage = useCallback43(
28214
+ const handleMessage = useCallback42(
28228
28215
  (event) => {
28229
28216
  switch (event.data.name) {
28230
28217
  case "load": {
@@ -28453,7 +28440,7 @@ function initialState(checkoutItem) {
28453
28440
  function useCheckoutModalTransition(checkoutItem, onClose) {
28454
28441
  const { logEvent } = useTrack();
28455
28442
  const [modalState, setModalState] = useState61(() => initialState(checkoutItem));
28456
- const trackNextState = useCallback44(
28443
+ const trackNextState = useCallback43(
28457
28444
  (nextState) => {
28458
28445
  const trackEvent = trackEventFromNextState(nextState);
28459
28446
  logEvent(trackEvent);
@@ -28461,7 +28448,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
28461
28448
  [logEvent]
28462
28449
  );
28463
28450
  const { clearCheckoutQuoteMessages } = useCheckoutQuoteNotification();
28464
- const onCloseWrapper = useCallback44(
28451
+ const onCloseWrapper = useCallback43(
28465
28452
  (options) => {
28466
28453
  const normalizedIsNewDeposit = !!options?.isNewDeposit;
28467
28454
  checkoutItem.initSettings.onClose?.({
@@ -28486,7 +28473,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
28486
28473
  const [stateHistory, setHistory] = useState61([]);
28487
28474
  const prevStep = useRef24(null);
28488
28475
  const hasHistoryEntry = stateHistory.length > 1;
28489
- const onNext = useCallback44(
28476
+ const onNext = useCallback43(
28490
28477
  (payload) => {
28491
28478
  if (prevStep.current === modalState.step) {
28492
28479
  return;
@@ -28527,7 +28514,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
28527
28514
  trackNextState
28528
28515
  ]
28529
28516
  );
28530
- const onStepChange = useCallback44(
28517
+ const onStepChange = useCallback43(
28531
28518
  (nextState) => {
28532
28519
  if (prevStep.current === modalState.step) {
28533
28520
  return;
@@ -28541,7 +28528,7 @@ function useCheckoutModalTransition(checkoutItem, onClose) {
28541
28528
  },
28542
28529
  [modalState, animate, trackNextState]
28543
28530
  );
28544
- const onBack = useCallback44(() => {
28531
+ const onBack = useCallback43(() => {
28545
28532
  clearCheckoutQuoteMessages();
28546
28533
  const backStepOverride = checkoutBackMap[modalState.step];
28547
28534
  const prevState = [...stateHistory].reverse().find((s) => s.step === backStepOverride) ?? stateHistory[stateHistory.length - 1];
@@ -28744,7 +28731,7 @@ var FunConnectResultStep = ({
28744
28731
 
28745
28732
  // src/components/FunConnectOptions/FunFarcasterConnectingStep.tsx
28746
28733
  import { isMobile as isMobile8, isSafari as isSafari2, redirectInMobile } from "@funkit/utils";
28747
- import React202, { useCallback as useCallback45, useEffect as useEffect52 } from "react";
28734
+ import React202, { useCallback as useCallback44, useEffect as useEffect52 } from "react";
28748
28735
 
28749
28736
  // src/components/CopyAddress/OldCopyAddressButton.tsx
28750
28737
  import React201 from "react";
@@ -28797,7 +28784,7 @@ function FunFarcasterConnectingStep({
28797
28784
  }
28798
28785
  }, [farcasterUri, mobile, safari]);
28799
28786
  useSIWFarcasterListener(farcasterToken);
28800
- const svgUrl = useCallback45(async () => {
28787
+ const svgUrl = useCallback44(async () => {
28801
28788
  return (await import("./farcaster-MF6WINBA.js")).default;
28802
28789
  }, []);
28803
28790
  const promptText = mobile ? "To sign in with Farcaster, please open the Warpcast app." : "Scan this QR code or open the link with your mobile phone.";
@@ -28845,11 +28832,11 @@ function FunFarcasterConnectingStep({
28845
28832
 
28846
28833
  // src/components/FunConnectOptions/FunWeb2ConnectingStep.tsx
28847
28834
  import { isNotNullish as isNotNullish9 } from "@funkit/utils";
28848
- import React205, { useCallback as useCallback47, useEffect as useEffect54, useState as useState64 } from "react";
28835
+ import React205, { useCallback as useCallback46, useEffect as useEffect54, useState as useState64 } from "react";
28849
28836
 
28850
28837
  // src/components/FunInput/FunTwoFaInput.tsx
28851
28838
  import React203, {
28852
- useCallback as useCallback46,
28839
+ useCallback as useCallback45,
28853
28840
  useEffect as useEffect53,
28854
28841
  useRef as useRef26,
28855
28842
  useState as useState63
@@ -28876,12 +28863,12 @@ var FunTwoFaInput = ({
28876
28863
  setFocusIndex(0);
28877
28864
  }
28878
28865
  }, [value]);
28879
- const ensureFocus = useCallback46((nextIndex) => {
28866
+ const ensureFocus = useCallback45((nextIndex) => {
28880
28867
  setTimeout(() => {
28881
28868
  inputRefs.current[nextIndex]?.focus();
28882
28869
  }, 10);
28883
28870
  }, []);
28884
- const handleBackspace = useCallback46(
28871
+ const handleBackspace = useCallback45(
28885
28872
  (index) => {
28886
28873
  if (index === maxInputLength - 1 && value.length === maxInputLength) {
28887
28874
  onChange(value.slice(0, index));
@@ -28905,7 +28892,7 @@ var FunTwoFaInput = ({
28905
28892
  },
28906
28893
  [currentLength, initialInputLength, maxInputLength, onChange, value]
28907
28894
  );
28908
- const handleChange = useCallback46(
28895
+ const handleChange = useCallback45(
28909
28896
  (changeEvent) => {
28910
28897
  changeEvent.stopPropagation();
28911
28898
  const nativeEvent = changeEvent.nativeEvent;
@@ -29074,7 +29061,7 @@ var FunWeb2ConnectingStep = ({
29074
29061
  useEffect54(() => {
29075
29062
  clearLoginError();
29076
29063
  }, []);
29077
- const handleOtpComplete = useCallback47(
29064
+ const handleOtpComplete = useCallback46(
29078
29065
  async (finalOtpInput) => {
29079
29066
  if (isNotNullish9(initialChainId)) {
29080
29067
  await handleFunkitWeb2Login({
@@ -29221,7 +29208,7 @@ function FunConnectOptions({
29221
29208
  const { loginConfig } = useFunkitConfig();
29222
29209
  const prioritizedLoginType = loginConfig.prioritizedLogin;
29223
29210
  const hasSecondarySignIn = prioritizedLoginType !== "none" && loginConfig.web2 && loginConfig.web3;
29224
- const changeStep = useCallback48((newStep) => {
29211
+ const changeStep = useCallback47((newStep) => {
29225
29212
  setStep(newStep);
29226
29213
  if (isSignIn(newStep)) {
29227
29214
  setSelectedWallet(void 0);
@@ -29229,7 +29216,7 @@ function FunConnectOptions({
29229
29216
  }
29230
29217
  }, []);
29231
29218
  const { animation, navigateTo } = useAnimatedNavigation(changeStep);
29232
- const handleBackToSignIn = useCallback48(
29219
+ const handleBackToSignIn = useCallback47(
29233
29220
  (type) => {
29234
29221
  const isPrimary = !hasSecondarySignIn || type === prioritizedLoginType;
29235
29222
  navigateTo(
@@ -29240,7 +29227,7 @@ function FunConnectOptions({
29240
29227
  [navigateTo, hasSecondarySignIn, prioritizedLoginType]
29241
29228
  );
29242
29229
  const walletConnectors = usePreparedWalletConnectors();
29243
- const onRegenerateQrCode = useCallback48(
29230
+ const onRegenerateQrCode = useCallback47(
29244
29231
  async (wallet) => {
29245
29232
  const sWallet = walletConnectors.find((w) => wallet.id === w.id);
29246
29233
  const uri = await sWallet?.getQrCodeUri?.();
@@ -29248,7 +29235,7 @@ function FunConnectOptions({
29248
29235
  },
29249
29236
  [walletConnectors]
29250
29237
  );
29251
- const connectToWallet = useCallback48(
29238
+ const connectToWallet = useCallback47(
29252
29239
  async (wallet) => {
29253
29240
  if (!wallet.ready) {
29254
29241
  return;
@@ -29267,7 +29254,7 @@ function FunConnectOptions({
29267
29254
  },
29268
29255
  [changeStep, onRegenerateQrCode]
29269
29256
  );
29270
- const handleRetry = useCallback48(() => {
29257
+ const handleRetry = useCallback47(() => {
29271
29258
  if (!selectedWallet || selectedWallet.id === FUNKIT_CONNECT_WALLET_ID) {
29272
29259
  handleBackToSignIn("web2");
29273
29260
  } else {
@@ -29526,7 +29513,7 @@ function FunSignInStep({
29526
29513
  changeStep(3 /* PENDING_WALLET */);
29527
29514
  }
29528
29515
  };
29529
- const handleEmailSubmit = useCallback49(async () => {
29516
+ const handleEmailSubmit = useCallback48(async () => {
29530
29517
  if (!isEmailInputValid) {
29531
29518
  return;
29532
29519
  }
@@ -29866,7 +29853,7 @@ function PaymentMethodSummary({
29866
29853
 
29867
29854
  // src/modals/CheckoutModal/TransferToken/CheckoutNotifications.tsx
29868
29855
  import clsx22 from "clsx";
29869
- import React219, { useCallback as useCallback51, useEffect as useEffect57, useMemo as useMemo44, useState as useState68 } from "react";
29856
+ import React219, { useCallback as useCallback50, useEffect as useEffect57, useMemo as useMemo44, useState as useState68 } from "react";
29870
29857
 
29871
29858
  // src/components/FunNotificationBanner/FunNotificationShowMoreButton.tsx
29872
29859
  import React214 from "react";
@@ -30080,7 +30067,7 @@ var showMoreButtonStyle = "_4yitd93 _1rsrm2f12a _1rsrm2f1f _1rsrm2f1c _1rsrm2fls
30080
30067
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.tsx
30081
30068
  import clsx20 from "clsx";
30082
30069
  import { motion as motion12, useAnimate as useAnimate3 } from "motion/react";
30083
- import React215, { useCallback as useCallback50, useEffect as useEffect56, useRef as useRef27 } from "react";
30070
+ import React215, { useCallback as useCallback49, useEffect as useEffect56, useRef as useRef27 } from "react";
30084
30071
 
30085
30072
  // src/components/FunNotificationBanner/FunNotificationBannerIcon.css.ts
30086
30073
  var STATUS_SPINNER_BOTTOM_POSITION = -5;
@@ -30329,7 +30316,7 @@ var FunNotificationBannerIcon = ({
30329
30316
  fallbackIconUrl = FALLBACK_ASSET
30330
30317
  }) => {
30331
30318
  const [animationScope, animate] = useAnimate3();
30332
- const triggerAnimationProcessingToCompleted = useCallback50(async () => {
30319
+ const triggerAnimationProcessingToCompleted = useCallback49(async () => {
30333
30320
  const completedIconPath = document.querySelector(
30334
30321
  `.${generateAnimationPrefixClassName("icon-wrapper-completed")} path`
30335
30322
  );
@@ -30436,7 +30423,7 @@ var FunNotificationBannerIcon = ({
30436
30423
  )
30437
30424
  ]);
30438
30425
  }, [animate]);
30439
- const triggerAnimationDelayedToFailed = useCallback50(async () => {
30426
+ const triggerAnimationDelayedToFailed = useCallback49(async () => {
30440
30427
  await Promise.all([
30441
30428
  animate(
30442
30429
  `.${generateAnimationPrefixClassName("icon-wrapper")}`,
@@ -31115,7 +31102,7 @@ var CheckoutNotifications = ({
31115
31102
  }, [isExpanded, combinedNotifications]);
31116
31103
  const handleNotificationClose = (id) => setClosedNotifications((prev) => [...prev, id]);
31117
31104
  const { logEvent } = useTrack();
31118
- const handleNewNotification = useCallback51(
31105
+ const handleNewNotification = useCallback50(
31119
31106
  (item) => {
31120
31107
  const trackEvent = trackEventFromNotification(item);
31121
31108
  logEvent(trackEvent);
@@ -31308,7 +31295,7 @@ function WithdrawalModal({
31308
31295
  const [withdrawnAmount, setWithdrawnAmount] = useState69("");
31309
31296
  const [quote, setQuote] = useState69();
31310
31297
  const { logEvent } = useTrack();
31311
- const onCloseWrapper = useCallback52(() => {
31298
+ const onCloseWrapper = useCallback51(() => {
31312
31299
  const metadata = {
31313
31300
  checkoutStep: step,
31314
31301
  checkoutId: withdrawalItem?.id,
@@ -31419,7 +31406,7 @@ import React235 from "react";
31419
31406
  // src/modals/ProfileDetails/ActivityTraversalContext.tsx
31420
31407
  import React223, {
31421
31408
  createContext as createContext16,
31422
- useCallback as useCallback53,
31409
+ useCallback as useCallback52,
31423
31410
  useContext as useContext16,
31424
31411
  useMemo as useMemo45,
31425
31412
  useState as useState70
@@ -31441,7 +31428,7 @@ var ActivityTraversalProvider = ({
31441
31428
  const [returnViewPresets, setReturnViewPresets] = useState70(
31442
31429
  {}
31443
31430
  );
31444
- const onSelectActivity = useCallback53(
31431
+ const onSelectActivity = useCallback52(
31445
31432
  ({
31446
31433
  checkoutId,
31447
31434
  initialPage,
@@ -31459,7 +31446,7 @@ var ActivityTraversalProvider = ({
31459
31446
  },
31460
31447
  []
31461
31448
  );
31462
- const resetActivityTraversal = useCallback53(() => {
31449
+ const resetActivityTraversal = useCallback52(() => {
31463
31450
  setSelectedPurchaseId(void 0);
31464
31451
  setSelectedPurchaseInitView(void 0);
31465
31452
  setReturnView(void 0);
@@ -31489,7 +31476,7 @@ var useActivityTraversal = () => {
31489
31476
  };
31490
31477
 
31491
31478
  // src/modals/ProfileDetails/ProfileDetails.tsx
31492
- import React234, { useCallback as useCallback55, useState as useState73 } from "react";
31479
+ import React234, { useCallback as useCallback54, useState as useState73 } from "react";
31493
31480
 
31494
31481
  // src/hooks/useCheckoutModalTitle.ts
31495
31482
  function useCheckoutModalTitle(depositAddress, defaultTitle) {
@@ -31877,7 +31864,7 @@ var HomeTokenBalanceDisplayRowSkeleton = () => {
31877
31864
 
31878
31865
  // src/modals/ProfileDetails/FunProfileViews/Home/ProfileTitleSection.tsx
31879
31866
  import React231 from "react";
31880
- import { useCallback as useCallback54, useState as useState71 } from "react";
31867
+ import { useCallback as useCallback53, useState as useState71 } from "react";
31881
31868
 
31882
31869
  // src/components/Icons/LogoutIcon.tsx
31883
31870
  import React229 from "react";
@@ -31944,7 +31931,7 @@ var ProfileTitleSection = ({
31944
31931
  onClose
31945
31932
  }) => {
31946
31933
  const [isDisconnectExpanded, setIsDisconnectExpanded] = useState71(false);
31947
- const collapseDisconnect = useCallback54(
31934
+ const collapseDisconnect = useCallback53(
31948
31935
  () => setIsDisconnectExpanded(false),
31949
31936
  []
31950
31937
  );
@@ -32300,13 +32287,13 @@ function ProfileDetails({ onClose, defaultTab }) {
32300
32287
  const [singleActivityPage, setSingleActivityPage] = useState73(
32301
32288
  selectedPurchaseInitView ?? "detail" /* DETAIL */
32302
32289
  );
32303
- const resetView = useCallback55(() => {
32290
+ const resetView = useCallback54(() => {
32304
32291
  setView(returnView ?? 0 /* HOME */);
32305
32292
  setSelectedHomeTab("checkouts" /* CHECKOUTS */);
32306
32293
  resetActivityTraversal();
32307
32294
  }, [resetActivityTraversal, returnView]);
32308
32295
  const { animation, animate } = useAnimatedNavigation(void 0);
32309
- const onSelectActivityWrapper = useCallback55(
32296
+ const onSelectActivityWrapper = useCallback54(
32310
32297
  (activity) => {
32311
32298
  onSelectActivity({
32312
32299
  ...activity,
@@ -32343,7 +32330,7 @@ function ProfileDetails({ onClose, defaultTab }) {
32343
32330
  const isHelpPage = singleActivityPage === "help" /* HELP */;
32344
32331
  const isCheckoutDetailView = isSingleActivityView && singleActivityPage === "detail" /* DETAIL */;
32345
32332
  const withDivider = isSingleActivityView ? isHelpPage ? "scroll" : "always" : void 0;
32346
- const handleHelp = useCallback55(() => {
32333
+ const handleHelp = useCallback54(() => {
32347
32334
  animate(() => setSingleActivityPage("help" /* HELP */));
32348
32335
  }, [animate]);
32349
32336
  const { onScroll, topbar, withTopDivider } = useCustomStatusAnimationAboveTopbar({
@@ -32560,7 +32547,7 @@ function ChainLineItem({
32560
32547
  !hideChainName ? /* @__PURE__ */ React239.createElement("div", null, chainItem.name) : null
32561
32548
  );
32562
32549
  }
32563
- var Chain2 = ({
32550
+ var Chain = ({
32564
32551
  chainId,
32565
32552
  currentChainId,
32566
32553
  switchChain,
@@ -32622,7 +32609,7 @@ var Chain2 = ({
32622
32609
  ))
32623
32610
  ), mobile && idx < funkitConnectChains.length - 1 && /* @__PURE__ */ React239.createElement(Box, { background: "generalBorderDim", height: "1", marginX: "8" }));
32624
32611
  };
32625
- var Chain_default = Chain2;
32612
+ var Chain_default = Chain;
32626
32613
 
32627
32614
  // src/modals/ChainModal/ChainModal.css.ts
32628
32615
  var DesktopScrollClassName = "_1d2b1vf0";
@@ -32981,16 +32968,16 @@ function ConnectModal({
32981
32968
  function useModalStateValue() {
32982
32969
  const [isModalOpen, setModalOpen] = useState74(false);
32983
32970
  return {
32984
- closeModal: useCallback56(() => setModalOpen(false), []),
32971
+ closeModal: useCallback55(() => setModalOpen(false), []),
32985
32972
  isModalOpen,
32986
- openModal: useCallback56(() => setModalOpen(true), [])
32973
+ openModal: useCallback55(() => setModalOpen(true), [])
32987
32974
  };
32988
32975
  }
32989
32976
  function useModalStateValueWithProp() {
32990
32977
  const [isModalOpen, setModalOpen] = useState74(false);
32991
32978
  const [prop, setProp] = useState74(null);
32992
32979
  return {
32993
- closeModal: useCallback56(() => {
32980
+ closeModal: useCallback55(() => {
32994
32981
  setTimeout(
32995
32982
  () => {
32996
32983
  setProp(null);
@@ -33001,7 +32988,7 @@ function useModalStateValueWithProp() {
33001
32988
  }, []),
33002
32989
  isModalOpen,
33003
32990
  prop,
33004
- openModal: useCallback56((prop2) => {
32991
+ openModal: useCallback55((prop2) => {
33005
32992
  if (prop2 != null) {
33006
32993
  setProp(prop2);
33007
32994
  }
@@ -33489,7 +33476,7 @@ var FunkitWeb2Provider = ({
33489
33476
  const [isLoggingIn, setIsLoggingIn] = useState75(false);
33490
33477
  const [loginErrorMessage, setLoginErrorMessage] = useState75("");
33491
33478
  const [loggedInUser, setLoggedInUser] = useState75(null);
33492
- const setLoginMethodAndCache = useCallback57(
33479
+ const setLoginMethodAndCache = useCallback56(
33493
33480
  (method) => {
33494
33481
  try {
33495
33482
  setLoginMethod(method);
@@ -33513,7 +33500,7 @@ var FunkitWeb2Provider = ({
33513
33500
  setPrivyIframeUrl(newPrivy.embeddedWallet.getURL());
33514
33501
  setPrivy(newPrivy);
33515
33502
  }, [chains]);
33516
- const handleIframeMessage = useCallback57(
33503
+ const handleIframeMessage = useCallback56(
33517
33504
  (e) => {
33518
33505
  if (e.origin === PRIVY_AUTH_URL && privy) {
33519
33506
  const iframeHandler = privy.embeddedWallet.getMessageHandler();
@@ -33522,7 +33509,7 @@ var FunkitWeb2Provider = ({
33522
33509
  },
33523
33510
  [privy]
33524
33511
  );
33525
- const handleFunkitWeb2Logout = useCallback57(async () => {
33512
+ const handleFunkitWeb2Logout = useCallback56(async () => {
33526
33513
  if (privy) {
33527
33514
  logger.log("handleFunkitWeb2Logout_disconnecting_connectors", {
33528
33515
  numConnectors: connectors.length
@@ -33535,7 +33522,7 @@ var FunkitWeb2Provider = ({
33535
33522
  setLoginMethodAndCache(null);
33536
33523
  }
33537
33524
  }, [connectors, disconnectAsync, privy, setLoginMethodAndCache]);
33538
- const handleFreshPrivyLogin = useCallback57(
33525
+ const handleFreshPrivyLogin = useCallback56(
33539
33526
  async ({
33540
33527
  firstLoginCode,
33541
33528
  secondLoginCode,
@@ -33587,7 +33574,7 @@ var FunkitWeb2Provider = ({
33587
33574
  },
33588
33575
  [handleFunkitWeb2Logout, privy]
33589
33576
  );
33590
- const getPrivyUserEmbeddedWallet = useCallback57(
33577
+ const getPrivyUserEmbeddedWallet = useCallback56(
33591
33578
  async (inputPrivyUser) => {
33592
33579
  try {
33593
33580
  if (!privy || !inputPrivyUser) {
@@ -33606,7 +33593,7 @@ var FunkitWeb2Provider = ({
33606
33593
  },
33607
33594
  [privy]
33608
33595
  );
33609
- const getExistingPrivySession = useCallback57(async () => {
33596
+ const getExistingPrivySession = useCallback56(async () => {
33610
33597
  try {
33611
33598
  if (!privy) {
33612
33599
  throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
@@ -33617,7 +33604,7 @@ var FunkitWeb2Provider = ({
33617
33604
  return null;
33618
33605
  }
33619
33606
  }, [privy]);
33620
- const handleFunkitWeb2Login = useCallback57(
33607
+ const handleFunkitWeb2Login = useCallback56(
33621
33608
  async ({
33622
33609
  chainId,
33623
33610
  firstLoginCode,
@@ -33694,9 +33681,9 @@ var FunkitWeb2Provider = ({
33694
33681
  wallets
33695
33682
  ]
33696
33683
  );
33697
- const clearLoginError = useCallback57(() => setLoginErrorMessage(""), []);
33684
+ const clearLoginError = useCallback56(() => setLoginErrorMessage(""), []);
33698
33685
  const initChainId = useInitialChainId();
33699
- const handleAutoLoginFlows = useCallback57(async () => {
33686
+ const handleAutoLoginFlows = useCallback56(async () => {
33700
33687
  if (isNotNullish11(loginMethod) && isNotNullish11(initChainId)) {
33701
33688
  const queryParams = new URLSearchParams(window.location.search);
33702
33689
  const oauthCode = queryParams.get(PRIVY_OAUTH_CODE_URL_PARAM);
@@ -33740,7 +33727,7 @@ var FunkitWeb2Provider = ({
33740
33727
  initChainId
33741
33728
  // Do not include `handleAutoLoginFlows`,
33742
33729
  ]);
33743
- const handleOauthRedirect = useCallback57(
33730
+ const handleOauthRedirect = useCallback56(
33744
33731
  async (authProvider) => {
33745
33732
  if (!privy) {
33746
33733
  throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
@@ -33766,7 +33753,7 @@ var FunkitWeb2Provider = ({
33766
33753
  [privy, setLoginMethodAndCache]
33767
33754
  );
33768
33755
  const [isSendingOtpEmail, setIsSendingOtpEmail] = useState75(false);
33769
- const handleSendOtpEmail = useCallback57(
33756
+ const handleSendOtpEmail = useCallback56(
33770
33757
  async (emailAddress) => {
33771
33758
  try {
33772
33759
  if (!privy) {
@@ -33794,7 +33781,7 @@ var FunkitWeb2Provider = ({
33794
33781
  [privy, setLoginMethodAndCache]
33795
33782
  );
33796
33783
  const [isGeneratingFcUri, setIsGeneratingFcUri] = useState75(false);
33797
- const handleGenerateFcUri = useCallback57(async () => {
33784
+ const handleGenerateFcUri = useCallback56(async () => {
33798
33785
  try {
33799
33786
  if (!privy) {
33800
33787
  throw new Error(ERROR_MESSAGES2.PRIVY_NOT_INITIALIZED);
@@ -33821,7 +33808,7 @@ var FunkitWeb2Provider = ({
33821
33808
  setIsGeneratingFcUri(false);
33822
33809
  }
33823
33810
  }, [privy]);
33824
- const getFcConnectionStatus = useCallback57(
33811
+ const getFcConnectionStatus = useCallback56(
33825
33812
  async (channelToken) => {
33826
33813
  try {
33827
33814
  if (!privy) {
@@ -33968,7 +33955,7 @@ import React247 from "react";
33968
33955
  import { useAccount as useAccount12, useBalance, useConfig as useConfig8 } from "wagmi";
33969
33956
 
33970
33957
  // src/hooks/useIsMounted.ts
33971
- import { useCallback as useCallback58, useEffect as useEffect61, useState as useState77 } from "react";
33958
+ import { useCallback as useCallback57, useEffect as useEffect61, useState as useState77 } from "react";
33972
33959
  function useIsMounted() {
33973
33960
  const [isMounted, setIsMounted] = useState77(false);
33974
33961
  useEffect61(() => {
@@ -33977,7 +33964,7 @@ function useIsMounted() {
33977
33964
  setIsMounted(false);
33978
33965
  };
33979
33966
  }, []);
33980
- return useCallback58(() => isMounted, [isMounted]);
33967
+ return useCallback57(() => isMounted, [isMounted]);
33981
33968
  }
33982
33969
 
33983
33970
  // src/components/ConnectButton/abbreviateETHBalance.ts
@@ -34838,11 +34825,11 @@ function FunkitStatsigProvider({
34838
34825
 
34839
34826
  // src/providers/usePreloadImages.ts
34840
34827
  import { isNotNullish as isNotNullish12 } from "@funkit/utils";
34841
- import { useCallback as useCallback59, useEffect as useEffect63 } from "react";
34828
+ import { useCallback as useCallback58, useEffect as useEffect63 } from "react";
34842
34829
  function usePreloadImages() {
34843
34830
  const funkitConnectChains = useFunkitConnectChains();
34844
34831
  const walletConnectors = useWalletConnectors();
34845
- const preloadImages = useCallback59(() => {
34832
+ const preloadImages = useCallback58(() => {
34846
34833
  loadImages(
34847
34834
  ...walletConnectors.map((wallet) => wallet.iconUrl),
34848
34835
  ...funkitConnectChains.map((chain) => chain.iconUrl).filter(isNotNullish12)