@funkit/connect 3.0.0-next.5 → 3.0.0-next.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/components/FunkitProvider/FunkitCheckoutContext.d.ts +2 -2
- package/dist/hooks/useDynamicFont.d.ts +0 -1
- package/dist/hooks/useInputAmountRestriction.d.ts +7 -0
- package/dist/hooks/useUsableWalletAssetsForCheckout.d.ts +4 -0
- package/dist/index.js +237 -236
- package/dist/utils/colors.d.ts +1 -1
- package/dist/utils/moonpay.d.ts +0 -1
- package/dist/wallets/walletConnectors/argentWallet/argentWallet.js +2 -2
- package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +3 -3
- package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +3 -3
- package/dist/wallets/walletConnectors/bloomWallet/bloomWallet.js +2 -2
- package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
- package/dist/wallets/walletConnectors/chunk-DBP432DI.js +102 -0
- package/dist/wallets/walletConnectors/chunk-IEVZW3XR.js +101 -0
- package/dist/wallets/walletConnectors/chunk-ISJYPD3T.js +95 -0
- package/dist/wallets/walletConnectors/chunk-KL5Z3XHJ.js +71 -0
- package/dist/wallets/walletConnectors/chunk-LCOUKF2U.js +98 -0
- package/dist/wallets/walletConnectors/chunk-QP2BIVXD.js +73 -0
- package/dist/wallets/walletConnectors/chunk-UWZQZY4S.js +149 -0
- package/dist/wallets/walletConnectors/chunk-UZEMNN3Q.js +96 -0
- package/dist/wallets/walletConnectors/chunk-X45WXZDO.js +108 -0
- package/dist/wallets/walletConnectors/chunk-YIJ5ULO3.js +94 -0
- package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
- package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
- package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
- package/dist/wallets/walletConnectors/dawnWallet/dawnWallet.js +2 -2
- package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
- package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +3 -3
- package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +3 -3
- package/dist/wallets/walletConnectors/index.js +84 -84
- package/dist/wallets/walletConnectors/ledgerWallet/ledgerWallet.js +2 -2
- package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +3 -3
- package/dist/wallets/walletConnectors/oktoWallet/oktoWallet.js +2 -2
- package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +3 -3
- package/dist/wallets/walletConnectors/omniWallet/omniWallet.js +2 -2
- package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +3 -3
- package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
- package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
- package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
- package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +3 -3
- package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +3 -3
- package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +3 -3
- package/package.json +4 -4
- package/dist/wallets/walletConnectors/chunk-A6MZY5ZZ.js +0 -81
- package/dist/wallets/walletConnectors/chunk-ARIYPPEC.js +0 -92
- package/dist/wallets/walletConnectors/chunk-BEAW5Y5M.js +0 -60
- package/dist/wallets/walletConnectors/chunk-PIZ2XVGH.js +0 -60
- package/dist/wallets/walletConnectors/chunk-RXUGTOMT.js +0 -60
- package/dist/wallets/walletConnectors/{chunk-N562TVO2.js → chunk-2EMZOYQI.js} +3 -3
- package/dist/wallets/walletConnectors/{chunk-S6UDLDVQ.js → chunk-5HXH52SO.js} +3 -3
- package/dist/wallets/walletConnectors/{chunk-I4RN7PK4.js → chunk-5K4DIMYR.js} +3 -3
- package/dist/wallets/walletConnectors/{chunk-JSW2MDVV.js → chunk-AUVBWDIK.js} +3 -3
- package/dist/wallets/walletConnectors/{chunk-FCP4ZXSK.js → chunk-AXPQHNUI.js} +3 -3
- package/dist/wallets/walletConnectors/{chunk-3A3KT3GZ.js → chunk-B7FHT3CB.js} +3 -3
- package/dist/wallets/walletConnectors/{chunk-JTOJ3GAD.js → chunk-EFIENLEE.js} +3 -3
- package/dist/wallets/walletConnectors/{chunk-BUVITE4U.js → chunk-L7QI6PBN.js} +3 -3
- package/dist/wallets/walletConnectors/{chunk-P4ECTFIG.js → chunk-ODRDT73B.js} +4 -4
- package/dist/wallets/walletConnectors/{chunk-WKNMWQZZ.js → chunk-OHJBALD3.js} +4 -4
package/dist/index.js
CHANGED
|
@@ -522,7 +522,7 @@ import React169, {
|
|
|
522
522
|
useCallback as useCallback31,
|
|
523
523
|
useContext as useContext18,
|
|
524
524
|
useEffect as useEffect35,
|
|
525
|
-
useMemo as
|
|
525
|
+
useMemo as useMemo34,
|
|
526
526
|
useState as useState43
|
|
527
527
|
} from "react";
|
|
528
528
|
import { useConfig as useConfig5, useConnect as useConnect2, useDisconnect as useDisconnect2 } from "wagmi";
|
|
@@ -733,22 +733,6 @@ import React9, {
|
|
|
733
733
|
} from "react";
|
|
734
734
|
import { useConfig } from "wagmi";
|
|
735
735
|
|
|
736
|
-
// src/utils/memoize.ts
|
|
737
|
-
var memoize = (fn) => {
|
|
738
|
-
const cache = /* @__PURE__ */ new Map();
|
|
739
|
-
const memoizedFn = (...args) => {
|
|
740
|
-
const key = JSON.stringify(args);
|
|
741
|
-
if (cache.has(key)) {
|
|
742
|
-
return cache.get(key);
|
|
743
|
-
}
|
|
744
|
-
const result = fn(...args);
|
|
745
|
-
cache.set(key, result);
|
|
746
|
-
return result;
|
|
747
|
-
};
|
|
748
|
-
memoizedFn.cache = cache;
|
|
749
|
-
return memoizedFn;
|
|
750
|
-
};
|
|
751
|
-
|
|
752
736
|
// src/utils/mesh.ts
|
|
753
737
|
import {
|
|
754
738
|
meshGetCryptocurrencyHoldings,
|
|
@@ -941,6 +925,22 @@ var flagConfig = {
|
|
|
941
925
|
// src/utils/flags/impl.ts
|
|
942
926
|
import { datadogLogs as datadogLogs2 } from "@datadog/browser-logs";
|
|
943
927
|
|
|
928
|
+
// src/utils/memoize.ts
|
|
929
|
+
var memoize = (fn) => {
|
|
930
|
+
const cache = /* @__PURE__ */ new Map();
|
|
931
|
+
const memoizedFn = (...args) => {
|
|
932
|
+
const key = JSON.stringify(args);
|
|
933
|
+
if (cache.has(key)) {
|
|
934
|
+
return cache.get(key);
|
|
935
|
+
}
|
|
936
|
+
const result = fn(...args);
|
|
937
|
+
cache.set(key, result);
|
|
938
|
+
return result;
|
|
939
|
+
};
|
|
940
|
+
memoizedFn.cache = cache;
|
|
941
|
+
return memoizedFn;
|
|
942
|
+
};
|
|
943
|
+
|
|
944
944
|
// src/utils/flags/endpoint.ts
|
|
945
945
|
var FLAG_ENDPOINT_HOST = "sdk-cdn.fun.xyz";
|
|
946
946
|
var FLAG_PROD_ENDPOINT_PATH = "flags/v0/config.json";
|
|
@@ -1073,7 +1073,14 @@ var FeatureFlag = class _FeatureFlag {
|
|
|
1073
1073
|
return fallback;
|
|
1074
1074
|
}
|
|
1075
1075
|
const flagValue = this.derivedFlags?.[flagKey];
|
|
1076
|
-
|
|
1076
|
+
const flagResult = typeof flagValue === "boolean" ? flagValue : fallback;
|
|
1077
|
+
logger.log("flagExposure_getBool", {
|
|
1078
|
+
flagKey,
|
|
1079
|
+
fallback,
|
|
1080
|
+
flagValue,
|
|
1081
|
+
type: "number"
|
|
1082
|
+
});
|
|
1083
|
+
return flagResult;
|
|
1077
1084
|
}
|
|
1078
1085
|
getNumber(flagKey, fallback) {
|
|
1079
1086
|
if (this.derivedFlags === null) {
|
|
@@ -1084,7 +1091,14 @@ var FeatureFlag = class _FeatureFlag {
|
|
|
1084
1091
|
return fallback;
|
|
1085
1092
|
}
|
|
1086
1093
|
const flagValue = this.derivedFlags?.[flagKey];
|
|
1087
|
-
|
|
1094
|
+
const flagResult = typeof flagValue === "number" ? flagValue : fallback;
|
|
1095
|
+
logger.log("flagExposure_getNumber", {
|
|
1096
|
+
flagKey,
|
|
1097
|
+
fallback,
|
|
1098
|
+
flagValue,
|
|
1099
|
+
type: "number"
|
|
1100
|
+
});
|
|
1101
|
+
return flagResult;
|
|
1088
1102
|
}
|
|
1089
1103
|
getString(flagKey, fallback) {
|
|
1090
1104
|
if (this.derivedFlags === null) {
|
|
@@ -1095,47 +1109,30 @@ var FeatureFlag = class _FeatureFlag {
|
|
|
1095
1109
|
return fallback;
|
|
1096
1110
|
}
|
|
1097
1111
|
const flagValue = this.derivedFlags?.[flagKey];
|
|
1098
|
-
|
|
1112
|
+
const flagResult = typeof flagValue === "string" ? flagValue : fallback;
|
|
1113
|
+
logger.log("flagExposure_getString", {
|
|
1114
|
+
flagKey,
|
|
1115
|
+
fallback,
|
|
1116
|
+
flagValue,
|
|
1117
|
+
type: "bool"
|
|
1118
|
+
});
|
|
1119
|
+
return flagResult;
|
|
1099
1120
|
}
|
|
1100
1121
|
};
|
|
1101
1122
|
|
|
1102
1123
|
// src/utils/flags/index.ts
|
|
1103
1124
|
var singleton = new FeatureFlag(flagConfig);
|
|
1104
|
-
var getBool =
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
});
|
|
1114
|
-
var getNumber = memoize((...args) => {
|
|
1115
|
-
const result = singleton.getNumber(...args);
|
|
1116
|
-
logger.log("flag_exposure", {
|
|
1117
|
-
flagKey: args[0],
|
|
1118
|
-
fallback: args[1],
|
|
1119
|
-
flagValue: result,
|
|
1120
|
-
type: "number"
|
|
1121
|
-
});
|
|
1122
|
-
return result;
|
|
1123
|
-
});
|
|
1124
|
-
var getString = memoize((...args) => {
|
|
1125
|
-
const result = singleton.getString(...args);
|
|
1126
|
-
logger.log("flag_exposure", {
|
|
1127
|
-
flagKey: args[0],
|
|
1128
|
-
fallback: args[1],
|
|
1129
|
-
flagValue: result,
|
|
1130
|
-
type: "string"
|
|
1131
|
-
});
|
|
1132
|
-
return result;
|
|
1133
|
-
});
|
|
1125
|
+
var getBool = (...args) => {
|
|
1126
|
+
return singleton.getBool(...args);
|
|
1127
|
+
};
|
|
1128
|
+
var getNumber = (...args) => {
|
|
1129
|
+
return singleton.getNumber(...args);
|
|
1130
|
+
};
|
|
1131
|
+
var getString = (...args) => {
|
|
1132
|
+
return singleton.getString(...args);
|
|
1133
|
+
};
|
|
1134
1134
|
var init = (context) => {
|
|
1135
1135
|
singleton.init(context);
|
|
1136
|
-
getBool.cache = /* @__PURE__ */ new Map();
|
|
1137
|
-
getNumber.cache = /* @__PURE__ */ new Map();
|
|
1138
|
-
getString.cache = /* @__PURE__ */ new Map();
|
|
1139
1136
|
};
|
|
1140
1137
|
var flags = {
|
|
1141
1138
|
init,
|
|
@@ -1417,7 +1414,7 @@ import React168, {
|
|
|
1417
1414
|
useCallback as useCallback30,
|
|
1418
1415
|
useContext as useContext17,
|
|
1419
1416
|
useEffect as useEffect34,
|
|
1420
|
-
useMemo as
|
|
1417
|
+
useMemo as useMemo33,
|
|
1421
1418
|
useState as useState42
|
|
1422
1419
|
} from "react";
|
|
1423
1420
|
import { useAccount as useAccount10, useAccountEffect as useAccountEffect2, useConfig as useConfig4 } from "wagmi";
|
|
@@ -4810,22 +4807,6 @@ var generateMoonpayCurrencyCode = (tokenSymbol, chainId) => {
|
|
|
4810
4807
|
const mpCurrencyCode = `${tokenSymbol}${moonpayChainName}`.toLowerCase();
|
|
4811
4808
|
return mpCurrencyCode;
|
|
4812
4809
|
};
|
|
4813
|
-
function colorToHex(color) {
|
|
4814
|
-
let hexColor = color;
|
|
4815
|
-
const rgbMatch = color.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
|
|
4816
|
-
if (rgbMatch) {
|
|
4817
|
-
const [, r, g, b] = rgbMatch.map(Number);
|
|
4818
|
-
const rHex = r.toString(16).padStart(2, "0");
|
|
4819
|
-
const gHex = g.toString(16).padStart(2, "0");
|
|
4820
|
-
const bHex = b.toString(16).padStart(2, "0");
|
|
4821
|
-
hexColor = `#${rHex}${gHex}${bHex}`;
|
|
4822
|
-
}
|
|
4823
|
-
const hexMatch = color.match(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i);
|
|
4824
|
-
if (hexMatch) {
|
|
4825
|
-
hexColor = hexMatch[0].toLowerCase();
|
|
4826
|
-
}
|
|
4827
|
-
return hexColor;
|
|
4828
|
-
}
|
|
4829
4810
|
|
|
4830
4811
|
// src/utils/payment.ts
|
|
4831
4812
|
function generateSourceOfFundString({
|
|
@@ -5604,7 +5585,7 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
5604
5585
|
}),
|
|
5605
5586
|
clientMetadata: _generateClientMetadataForBackend(checkoutId)
|
|
5606
5587
|
});
|
|
5607
|
-
checkoutItem?.initSettings?.onConfirmation?.();
|
|
5588
|
+
checkoutItem?.initSettings?.onConfirmation?.(depositAddress);
|
|
5608
5589
|
logger.log("checkoutConfirmed", { depositAddress });
|
|
5609
5590
|
setActiveCheckouts({
|
|
5610
5591
|
...activeCheckouts,
|
|
@@ -5981,7 +5962,8 @@ function FunKeyValue({
|
|
|
5981
5962
|
flexDirection: "row",
|
|
5982
5963
|
display: "flex",
|
|
5983
5964
|
alignItems: "center",
|
|
5984
|
-
justifyContent: "flex-end"
|
|
5965
|
+
justifyContent: "flex-end",
|
|
5966
|
+
color: valueTextColor
|
|
5985
5967
|
},
|
|
5986
5968
|
valueIcon
|
|
5987
5969
|
) : null;
|
|
@@ -6408,10 +6390,8 @@ var FunTwoFaInput = ({
|
|
|
6408
6390
|
borderWidth: "1",
|
|
6409
6391
|
borderColor: getBorderColor(),
|
|
6410
6392
|
borderRadius: "10",
|
|
6411
|
-
|
|
6412
|
-
|
|
6413
|
-
cursor: isFocused ? "default" : "pointer"
|
|
6414
|
-
},
|
|
6393
|
+
cursor: isFocused ? "default" : "pointer",
|
|
6394
|
+
style: { overflowX: "auto" },
|
|
6415
6395
|
onFocus,
|
|
6416
6396
|
onBlur,
|
|
6417
6397
|
onMouseDown: handleMouseDown
|
|
@@ -6426,7 +6406,7 @@ var FunTwoFaInput = ({
|
|
|
6426
6406
|
style: {
|
|
6427
6407
|
textAlign: "center",
|
|
6428
6408
|
padding: 0,
|
|
6429
|
-
width: "
|
|
6409
|
+
width: "20px",
|
|
6430
6410
|
fontSize: 13,
|
|
6431
6411
|
fontWeight: "inherit",
|
|
6432
6412
|
cursor: "inherit"
|
|
@@ -10908,7 +10888,7 @@ import {
|
|
|
10908
10888
|
FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO8,
|
|
10909
10889
|
getTokenInfo as getTokenInfo2
|
|
10910
10890
|
} from "@funkit/core";
|
|
10911
|
-
import React167, { useCallback as useCallback29, useEffect as useEffect33, useMemo as
|
|
10891
|
+
import React167, { useCallback as useCallback29, useEffect as useEffect33, useMemo as useMemo32, useRef as useRef15, useState as useState41 } from "react";
|
|
10912
10892
|
import { arbitrum, mainnet as mainnet6, mantle as mantle2, zkSync as zkSync3 } from "viem/chains";
|
|
10913
10893
|
|
|
10914
10894
|
// src/hooks/useCheckoutAccountBalanceTransfer.ts
|
|
@@ -12953,6 +12933,27 @@ function FunPaymentMeshType({
|
|
|
12953
12933
|
import { getMoonpayUrlSignature } from "@funkit/api-base";
|
|
12954
12934
|
import React141, { memo, useEffect as useEffect28, useMemo as useMemo24, useState as useState32 } from "react";
|
|
12955
12935
|
|
|
12936
|
+
// src/utils/colors.ts
|
|
12937
|
+
function colorToHex(color) {
|
|
12938
|
+
let hexColor = color;
|
|
12939
|
+
const rgbMatch = color.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
|
|
12940
|
+
if (rgbMatch) {
|
|
12941
|
+
const [, r, g, b] = rgbMatch.map(Number);
|
|
12942
|
+
const rHex = r.toString(16).padStart(2, "0");
|
|
12943
|
+
const gHex = g.toString(16).padStart(2, "0");
|
|
12944
|
+
const bHex = b.toString(16).padStart(2, "0");
|
|
12945
|
+
hexColor = `#${rHex}${gHex}${bHex}`;
|
|
12946
|
+
}
|
|
12947
|
+
const hexMatch = color.match(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i);
|
|
12948
|
+
if (hexMatch) {
|
|
12949
|
+
hexColor = hexMatch[0].toLowerCase();
|
|
12950
|
+
}
|
|
12951
|
+
return hexColor;
|
|
12952
|
+
}
|
|
12953
|
+
var isHexString = (color) => {
|
|
12954
|
+
return /^#([0-9a-f]{3}){1,2}$/i.test(color);
|
|
12955
|
+
};
|
|
12956
|
+
|
|
12956
12957
|
// src/components/FunPayments/FunPaymentMoonpayType.css.ts
|
|
12957
12958
|
var mpClass = "_1kmpeyf0";
|
|
12958
12959
|
var stretchStyle = "_1kmpeyf1";
|
|
@@ -13201,7 +13202,7 @@ import {
|
|
|
13201
13202
|
meshPreviewTransfer as meshPreviewTransfer2
|
|
13202
13203
|
} from "@funkit/api-base";
|
|
13203
13204
|
import { ERC20_ABI, isAddress as isAddress3, USDT_ABI } from "@funkit/core";
|
|
13204
|
-
import React154, { useCallback as useCallback24, useMemo as
|
|
13205
|
+
import React154, { useCallback as useCallback24, useMemo as useMemo29, useState as useState36 } from "react";
|
|
13205
13206
|
import { createPortal as createPortal5 } from "react-dom";
|
|
13206
13207
|
import { useAccount as useAccount9, useSendTransaction, useWriteContract } from "wagmi";
|
|
13207
13208
|
|
|
@@ -13225,9 +13226,34 @@ function isMainnetUsdt(chainId, address) {
|
|
|
13225
13226
|
|
|
13226
13227
|
// src/components/FunPayments/FunPaymentMethods.tsx
|
|
13227
13228
|
import { getAssetPriceInfo as getAssetPriceInfo3 } from "@funkit/api-base";
|
|
13228
|
-
import React148, { useCallback as useCallback23, useMemo as
|
|
13229
|
+
import React148, { useCallback as useCallback23, useMemo as useMemo26, useState as useState33 } from "react";
|
|
13229
13230
|
import { createPortal as createPortal4 } from "react-dom";
|
|
13230
13231
|
|
|
13232
|
+
// src/hooks/useUsableWalletAssetsForCheckout.ts
|
|
13233
|
+
import { useMemo as useMemo25 } from "react";
|
|
13234
|
+
function useUsableWalletAssetsForCheckout(checkoutId) {
|
|
13235
|
+
const { checkoutItem } = useFunkitPreCheckoutInternal(checkoutId);
|
|
13236
|
+
const { walletAssets, isWeb3Login, isWeb2Login } = useGeneralWallet();
|
|
13237
|
+
return useMemo25(() => {
|
|
13238
|
+
if (!walletAssets || !checkoutItem) return;
|
|
13239
|
+
const usableAssets = {};
|
|
13240
|
+
for (const [assetKey, asset] of Object.entries(walletAssets)) {
|
|
13241
|
+
const { isUsable } = isAssetUsableToPayForCheckout(
|
|
13242
|
+
checkoutItem,
|
|
13243
|
+
"balance" /* ACCOUNT_BALANCE */,
|
|
13244
|
+
asset.chainId,
|
|
13245
|
+
asset.contractAddress,
|
|
13246
|
+
isWeb2Login,
|
|
13247
|
+
isWeb3Login
|
|
13248
|
+
);
|
|
13249
|
+
if (isUsable) {
|
|
13250
|
+
usableAssets[assetKey] = asset;
|
|
13251
|
+
}
|
|
13252
|
+
}
|
|
13253
|
+
return usableAssets;
|
|
13254
|
+
}, [checkoutItem, isWeb2Login, isWeb3Login, walletAssets]);
|
|
13255
|
+
}
|
|
13256
|
+
|
|
13231
13257
|
// src/components/FunPaymentMethodItem/FunPaymentMethodItem.tsx
|
|
13232
13258
|
import React145 from "react";
|
|
13233
13259
|
function FunPaymentMethodItem({
|
|
@@ -13413,6 +13439,7 @@ function AddPaymentMethodItem({
|
|
|
13413
13439
|
const { textCustomizations } = useFunkitConfig();
|
|
13414
13440
|
const { walletAddress, walletAssets, isWeb3Login, isWeb2Login, userInfo } = useGeneralWallet();
|
|
13415
13441
|
const { checkoutItem } = useFunkitPreCheckoutInternal(checkoutId);
|
|
13442
|
+
const usableWalletAssets = useUsableWalletAssetsForCheckout(checkoutId);
|
|
13416
13443
|
const isEnabledForFlow = config.isEnabledForCheckout;
|
|
13417
13444
|
const labelText = config.labelDynamic(
|
|
13418
13445
|
textCustomizations,
|
|
@@ -13428,36 +13455,27 @@ function AddPaymentMethodItem({
|
|
|
13428
13455
|
return /* @__PURE__ */ React148.createElement(React148.Fragment, null);
|
|
13429
13456
|
}
|
|
13430
13457
|
const getDynamicValueIconComponent = () => {
|
|
13431
|
-
if (paymentMethod !== "balance" /* ACCOUNT_BALANCE */ || !checkoutItem) {
|
|
13458
|
+
if (paymentMethod !== "balance" /* ACCOUNT_BALANCE */ || !checkoutItem || !usableWalletAssets) {
|
|
13432
13459
|
return config.conditionalIcon;
|
|
13433
13460
|
}
|
|
13434
|
-
const
|
|
13435
|
-
(asset) =>
|
|
13436
|
-
|
|
13437
|
-
|
|
13438
|
-
|
|
13439
|
-
asset.contractAddress,
|
|
13440
|
-
isWeb2Login,
|
|
13441
|
-
isWeb3Login
|
|
13442
|
-
).isUsable
|
|
13443
|
-
).map((asset) => {
|
|
13444
|
-
return chainMetadataById[asset.chainId];
|
|
13445
|
-
});
|
|
13446
|
-
const uniqueChains = Array.from(new Set(availableChainMetadata));
|
|
13447
|
-
return /* @__PURE__ */ React148.createElement(Box, { display: "flex", alignItems: "center", justifyContent: "flex-end" }, uniqueChains.map((chain, index) => {
|
|
13461
|
+
const uniqueChainIds = Array.from(
|
|
13462
|
+
new Set(Object.values(usableWalletAssets).map((asset) => asset.chainId))
|
|
13463
|
+
);
|
|
13464
|
+
return /* @__PURE__ */ React148.createElement(Box, { display: "flex", alignItems: "center", justifyContent: "flex-end" }, uniqueChainIds.map((chainId, index) => {
|
|
13465
|
+
const metadata = chainMetadataById[chainId];
|
|
13448
13466
|
return /* @__PURE__ */ React148.createElement(
|
|
13449
13467
|
Box,
|
|
13450
13468
|
{
|
|
13451
|
-
key:
|
|
13469
|
+
key: metadata.name,
|
|
13452
13470
|
position: "relative",
|
|
13453
|
-
style: { right: `${(
|
|
13471
|
+
style: { right: `${(uniqueChainIds.length - index - 1) * -2}px` }
|
|
13454
13472
|
},
|
|
13455
13473
|
/* @__PURE__ */ React148.createElement(
|
|
13456
13474
|
AsyncImage,
|
|
13457
13475
|
{
|
|
13458
|
-
alt:
|
|
13476
|
+
alt: metadata.name,
|
|
13459
13477
|
borderRadius: "full",
|
|
13460
|
-
src:
|
|
13478
|
+
src: metadata.iconUrl,
|
|
13461
13479
|
height: 12,
|
|
13462
13480
|
width: 12
|
|
13463
13481
|
}
|
|
@@ -13534,46 +13552,50 @@ function FunPaymentMethods({
|
|
|
13534
13552
|
}) {
|
|
13535
13553
|
const { apiKey } = useFunkitConfig();
|
|
13536
13554
|
useWalletAssetsListener();
|
|
13537
|
-
const {
|
|
13538
|
-
walletAssets,
|
|
13539
|
-
totalWalletAssetsUsd,
|
|
13540
|
-
isWeb3Login,
|
|
13541
|
-
isWeb2Login,
|
|
13542
|
-
isUserLoggedIn
|
|
13543
|
-
} = useGeneralWallet();
|
|
13555
|
+
const { isUserLoggedIn } = useGeneralWallet();
|
|
13544
13556
|
const { checkoutItem, updateTargetAssetAmount, getCheckoutDraftDollarValue } = useFunkitPreCheckoutInternal(checkoutId);
|
|
13545
13557
|
const defaultPaymentMethod = checkoutItem?.initSettings.config.defaultPaymentMethod;
|
|
13546
13558
|
const [selectedOption, setSelectedOption] = useState33(
|
|
13547
13559
|
defaultPaymentMethod || null
|
|
13548
13560
|
);
|
|
13549
|
-
const
|
|
13550
|
-
|
|
13561
|
+
const usableWalletAssets = useUsableWalletAssetsForCheckout(checkoutId);
|
|
13562
|
+
const totalUsableWalletAssetsUsd = Object.values(
|
|
13563
|
+
usableWalletAssets ?? {}
|
|
13564
|
+
).reduce((total, asset) => total + (asset.totalUsdValue || 0), 0);
|
|
13565
|
+
const maxUsdUsableAsset = useMemo26(() => {
|
|
13566
|
+
if (!depositAmount || !usableWalletAssets) {
|
|
13551
13567
|
return null;
|
|
13552
13568
|
}
|
|
13553
|
-
let
|
|
13554
|
-
for (const assetKey
|
|
13555
|
-
const asset =
|
|
13556
|
-
if (!
|
|
13557
|
-
|
|
13558
|
-
}
|
|
13559
|
-
const { isUsable } = isAssetUsableToPayForCheckout(
|
|
13560
|
-
checkoutItem,
|
|
13561
|
-
"balance" /* ACCOUNT_BALANCE */,
|
|
13562
|
-
asset.chainId,
|
|
13563
|
-
asset.contractAddress,
|
|
13564
|
-
isWeb2Login,
|
|
13565
|
-
isWeb3Login
|
|
13566
|
-
);
|
|
13567
|
-
if (!isUsable) {
|
|
13568
|
-
continue;
|
|
13569
|
-
}
|
|
13570
|
-
if (!maybeAsset || maybeAsset.totalUsdValue < asset.totalUsdValue) {
|
|
13571
|
-
maybeAsset = asset;
|
|
13569
|
+
let maxAsset = null;
|
|
13570
|
+
for (const assetKey in usableWalletAssets) {
|
|
13571
|
+
const asset = usableWalletAssets[assetKey];
|
|
13572
|
+
if (!maxAsset || maxAsset.totalUsdValue < asset.totalUsdValue) {
|
|
13573
|
+
maxAsset = asset;
|
|
13572
13574
|
}
|
|
13573
13575
|
}
|
|
13574
|
-
return
|
|
13575
|
-
}, [
|
|
13576
|
-
const
|
|
13576
|
+
return maxAsset;
|
|
13577
|
+
}, [depositAmount, usableWalletAssets]);
|
|
13578
|
+
const recommendedCheckoutUsdAmountWithMaxUsdUsableAsset = useMemo26(() => {
|
|
13579
|
+
if (!maxUsdUsableAsset || !checkoutItem || selectedOption !== "balance" /* ACCOUNT_BALANCE */) {
|
|
13580
|
+
return 0;
|
|
13581
|
+
}
|
|
13582
|
+
const maxUsdAssetHoldingItem = {
|
|
13583
|
+
iconSrc: maxUsdUsableAsset.logo,
|
|
13584
|
+
symbol: maxUsdUsableAsset.symbol,
|
|
13585
|
+
amount: getNormalizedTokenBalance(
|
|
13586
|
+
Number(maxUsdUsableAsset.tokenBalance),
|
|
13587
|
+
maxUsdUsableAsset.decimals
|
|
13588
|
+
),
|
|
13589
|
+
usdAmount: maxUsdUsableAsset.totalUsdValue,
|
|
13590
|
+
tokenAddress: maxUsdUsableAsset.contractAddress,
|
|
13591
|
+
pickedChainId: maxUsdUsableAsset.chainId
|
|
13592
|
+
};
|
|
13593
|
+
return Math.max(
|
|
13594
|
+
maxUsdAssetHoldingItem.usdAmount - getFeesUsdEstimate(checkoutItem, maxUsdAssetHoldingItem),
|
|
13595
|
+
1
|
|
13596
|
+
);
|
|
13597
|
+
}, [checkoutItem, maxUsdUsableAsset, selectedOption]);
|
|
13598
|
+
const hasSufficientBalance2 = useMemo26(() => {
|
|
13577
13599
|
if (!depositAmount) return true;
|
|
13578
13600
|
return maxUsdUsableAsset && maxUsdUsableAsset.totalUsdValue >= parseFloat(depositAmount);
|
|
13579
13601
|
}, [depositAmount, maxUsdUsableAsset]);
|
|
@@ -13591,26 +13613,7 @@ function FunPaymentMethods({
|
|
|
13591
13613
|
assetTokenAddress: checkoutItem.initSettings.config.targetAsset
|
|
13592
13614
|
});
|
|
13593
13615
|
if (!info || !info.unitPrice) return;
|
|
13594
|
-
const
|
|
13595
|
-
const maxUsdAsset = maxUsdUsableAsset;
|
|
13596
|
-
if (!maxUsdAsset) return 0;
|
|
13597
|
-
const maxUsdAssetHoldingItem = {
|
|
13598
|
-
iconSrc: maxUsdAsset.logo,
|
|
13599
|
-
symbol: maxUsdAsset.symbol,
|
|
13600
|
-
amount: getNormalizedTokenBalance(
|
|
13601
|
-
Number(maxUsdAsset.tokenBalance),
|
|
13602
|
-
maxUsdAsset.decimals
|
|
13603
|
-
),
|
|
13604
|
-
usdAmount: maxUsdAsset.totalUsdValue,
|
|
13605
|
-
tokenAddress: maxUsdAsset.contractAddress,
|
|
13606
|
-
pickedChainId: maxUsdAsset.chainId
|
|
13607
|
-
};
|
|
13608
|
-
return Math.max(
|
|
13609
|
-
maxUsdAssetHoldingItem.usdAmount - getFeesUsdEstimate(checkoutItem, maxUsdAssetHoldingItem),
|
|
13610
|
-
1
|
|
13611
|
-
);
|
|
13612
|
-
};
|
|
13613
|
-
const newTargetAmountUsd = selectedOption === "card" /* CARD */ ? MINIMUM_MOONPAY_DEPOSIT_AMOUNT_USD : selectedOption === "balance" /* ACCOUNT_BALANCE */ ? maxUsdAmountFromHolding() : 0;
|
|
13616
|
+
const newTargetAmountUsd = selectedOption === "card" /* CARD */ ? MINIMUM_MOONPAY_DEPOSIT_AMOUNT_USD : selectedOption === "balance" /* ACCOUNT_BALANCE */ ? recommendedCheckoutUsdAmountWithMaxUsdUsableAsset : 0;
|
|
13614
13617
|
const minTargetAmount = roundUpToXDecimalPlaces(
|
|
13615
13618
|
(newTargetAmountUsd / info.unitPrice).toString(),
|
|
13616
13619
|
5
|
|
@@ -13619,21 +13622,22 @@ function FunPaymentMethods({
|
|
|
13619
13622
|
await getCheckoutDraftDollarValue();
|
|
13620
13623
|
}, [
|
|
13621
13624
|
apiKey,
|
|
13622
|
-
checkoutItem,
|
|
13625
|
+
checkoutItem?.initSettings.config.targetAsset,
|
|
13626
|
+
checkoutItem?.initSettings.config.targetChain,
|
|
13623
13627
|
getCheckoutDraftDollarValue,
|
|
13624
|
-
|
|
13628
|
+
recommendedCheckoutUsdAmountWithMaxUsdUsableAsset,
|
|
13625
13629
|
selectedOption,
|
|
13626
13630
|
updateTargetAssetAmount
|
|
13627
13631
|
]);
|
|
13628
|
-
const
|
|
13629
|
-
const notificationConfig = useMemo25(() => {
|
|
13632
|
+
const notificationConfig = useMemo26(() => {
|
|
13630
13633
|
const isInvalidMoonpay = "card" /* CARD */ === selectedOption && isAmountInvalidForMoonpay({ amountUsd: depositAmount });
|
|
13631
13634
|
const isInvalidAccBalance = "balance" /* ACCOUNT_BALANCE */ === selectedOption && !hasSufficientBalance2;
|
|
13632
13635
|
const isContinuable = !isDisabled && !isInvalidMoonpay && !isInvalidAccBalance;
|
|
13633
|
-
const continueErrorText = isInvalidMoonpay ? generateInsufficientAmountForMoonpayError(true) : isInvalidAccBalance ?
|
|
13634
|
-
|
|
13636
|
+
const continueErrorText = isInvalidMoonpay ? generateInsufficientAmountForMoonpayError(true) : isInvalidAccBalance ? recommendedCheckoutUsdAmountWithMaxUsdUsableAsset > 0.01 ? `${formatCurrencyAndStringify(
|
|
13637
|
+
recommendedCheckoutUsdAmountWithMaxUsdUsableAsset
|
|
13635
13638
|
)} maximum order` : `Insufficient balance.` : "";
|
|
13636
13639
|
const hasQuoteError = messageType === "error";
|
|
13640
|
+
const isWalletEmpty = totalUsableWalletAssetsUsd === 0;
|
|
13637
13641
|
return {
|
|
13638
13642
|
isUpdateNeeded: !isContinuable || hasQuoteError,
|
|
13639
13643
|
isUpdatePossible: "balance" /* ACCOUNT_BALANCE */ !== selectedOption || !isWalletEmpty,
|
|
@@ -13642,24 +13646,23 @@ function FunPaymentMethods({
|
|
|
13642
13646
|
notificationType: hasQuoteError ? "error" : !isContinuable ? "warning" : "default"
|
|
13643
13647
|
};
|
|
13644
13648
|
}, [
|
|
13645
|
-
|
|
13646
|
-
maxUsdUsableAsset?.totalUsdValue,
|
|
13649
|
+
recommendedCheckoutUsdAmountWithMaxUsdUsableAsset,
|
|
13647
13650
|
depositAmount,
|
|
13648
13651
|
hasSufficientBalance2,
|
|
13649
13652
|
isDisabled,
|
|
13650
|
-
isWalletEmpty,
|
|
13651
13653
|
messageType,
|
|
13652
13654
|
quoteMessage,
|
|
13653
|
-
selectedOption
|
|
13655
|
+
selectedOption,
|
|
13656
|
+
totalUsableWalletAssetsUsd
|
|
13654
13657
|
]);
|
|
13655
|
-
const enabledPaymentMethods =
|
|
13658
|
+
const enabledPaymentMethods = useMemo26(() => {
|
|
13656
13659
|
return Object.keys(PAYMENT_METHOD_CONFIG).filter((paymentMethod) => {
|
|
13657
13660
|
const disabled = paymentMethod === "transfer" /* TRANSFER */ || paymentMethod === "balance" /* ACCOUNT_BALANCE */ && !isUserLoggedIn;
|
|
13658
13661
|
return !disabled;
|
|
13659
13662
|
});
|
|
13660
13663
|
}, [isUserLoggedIn]);
|
|
13661
13664
|
const [isContinuing, setIsContinuing] = useState33(false);
|
|
13662
|
-
const canContinue =
|
|
13665
|
+
const canContinue = useMemo26(() => {
|
|
13663
13666
|
return isNotNullish(selectedOption) && Object.values(PaymentMethod).includes(selectedOption) && !isContinuing && !checkoutItem?.isDrafting && enabledPaymentMethods.includes(selectedOption);
|
|
13664
13667
|
}, [
|
|
13665
13668
|
isContinuing,
|
|
@@ -13694,7 +13697,7 @@ function FunPaymentMethods({
|
|
|
13694
13697
|
isClickable: !isContinuing,
|
|
13695
13698
|
onClick: () => setSelectedOption(expressOption),
|
|
13696
13699
|
disclaimerText: PAYMENT_METHOD_CONFIG[expressOption].disclaimerTextFn(
|
|
13697
|
-
formatCurrencyAndStringify(
|
|
13700
|
+
formatCurrencyAndStringify(totalUsableWalletAssetsUsd)
|
|
13698
13701
|
)
|
|
13699
13702
|
}
|
|
13700
13703
|
), /* @__PURE__ */ React148.createElement(Text, { size: "13", weight: "medium", color: "secondaryText" }, "More options"), enabledPaymentMethods.filter((pm) => pm !== expressOption).map((paymentMethod) => {
|
|
@@ -13708,7 +13711,7 @@ function FunPaymentMethods({
|
|
|
13708
13711
|
isClickable: !isContinuing,
|
|
13709
13712
|
onClick: () => setSelectedOption(paymentMethod),
|
|
13710
13713
|
disclaimerText: PAYMENT_METHOD_CONFIG[paymentMethod].disclaimerTextFn(
|
|
13711
|
-
formatCurrencyAndStringify(
|
|
13714
|
+
formatCurrencyAndStringify(totalUsableWalletAssetsUsd)
|
|
13712
13715
|
)
|
|
13713
13716
|
}
|
|
13714
13717
|
);
|
|
@@ -13751,7 +13754,7 @@ function FunPaymentMethods({
|
|
|
13751
13754
|
}
|
|
13752
13755
|
|
|
13753
13756
|
// src/components/FunTransactionSummary/FunTransactionSummary.tsx
|
|
13754
|
-
import React151, { useMemo as
|
|
13757
|
+
import React151, { useMemo as useMemo27, useState as useState34 } from "react";
|
|
13755
13758
|
|
|
13756
13759
|
// src/components/Icons/CaretDownIcon.tsx
|
|
13757
13760
|
import React149 from "react";
|
|
@@ -14033,7 +14036,7 @@ function FunTransactionSummary({
|
|
|
14033
14036
|
)
|
|
14034
14037
|
};
|
|
14035
14038
|
const estTime = (checkoutItem?.latestQuote?.finalTimeEstimationMs || 0) / 1e3 || 0;
|
|
14036
|
-
const paymentTokenString =
|
|
14039
|
+
const paymentTokenString = useMemo27(() => {
|
|
14037
14040
|
return formatCryptoAndStringify(
|
|
14038
14041
|
parseFloat(checkoutItem?.latestQuote?.finalPaymentTokenAmount || "0"),
|
|
14039
14042
|
`${checkoutItem?.selectedSourceAssetInfo?.symbol}` || ""
|
|
@@ -14114,7 +14117,7 @@ var FunInfoIcon = ({ size = 14 }) => /* @__PURE__ */ React152.createElement(
|
|
|
14114
14117
|
);
|
|
14115
14118
|
|
|
14116
14119
|
// src/components/FunCheckoutModal/FunCheckoutPrimaryInfo.tsx
|
|
14117
|
-
import React153, { useEffect as useEffect29, useMemo as
|
|
14120
|
+
import React153, { useEffect as useEffect29, useMemo as useMemo28, useState as useState35 } from "react";
|
|
14118
14121
|
function CheckoutPrimaryInfoSnapshot({
|
|
14119
14122
|
checkoutItem,
|
|
14120
14123
|
isLoading,
|
|
@@ -14122,10 +14125,10 @@ function CheckoutPrimaryInfoSnapshot({
|
|
|
14122
14125
|
preserveMinHeight = true
|
|
14123
14126
|
}) {
|
|
14124
14127
|
const checkoutConfig = checkoutItem.initSettings.config;
|
|
14125
|
-
const displaySubtitle =
|
|
14128
|
+
const displaySubtitle = useMemo28(() => {
|
|
14126
14129
|
return getCheckoutItemDisplay(checkoutConfig, checkoutItem);
|
|
14127
14130
|
}, [checkoutConfig, checkoutItem]);
|
|
14128
|
-
const displayDollarValue =
|
|
14131
|
+
const displayDollarValue = useMemo28(() => {
|
|
14129
14132
|
const prioritizedValue = prioritizeDraftValue ? checkoutItem.draftDollarValue : checkoutItem.finalDollarValue;
|
|
14130
14133
|
const fallbackValue = prioritizeDraftValue ? checkoutItem.finalDollarValue : checkoutItem.draftDollarValue;
|
|
14131
14134
|
return prioritizedValue || fallbackValue || 0;
|
|
@@ -14544,7 +14547,7 @@ function FunCheckoutConfirmationStep({
|
|
|
14544
14547
|
const stepMessage = isRegeneratingQuote ? "Regenerating quote..." : postCheckoutStepMessage || checkoutStepMessage;
|
|
14545
14548
|
const hasStepMessage = !hasError && Boolean(stepMessage);
|
|
14546
14549
|
const bottomSectionRef = document.getElementById(CHECKOUT_MODAL_BOTTOM_BAR_ID);
|
|
14547
|
-
const cardDisclaimer =
|
|
14550
|
+
const cardDisclaimer = useMemo29(() => {
|
|
14548
14551
|
const finalConvertedAssetName = getCheckoutItemDisplay(
|
|
14549
14552
|
// @ts-expect-error - TODO: Add guardrail for this being undefined (technically it should never be undefined)
|
|
14550
14553
|
checkoutItem?.initSettings.config,
|
|
@@ -14825,17 +14828,14 @@ var FunCheckoutConnectExchangeStep = ({
|
|
|
14825
14828
|
|
|
14826
14829
|
// src/components/FunCheckoutModal/FunCheckoutInputAmountStep.tsx
|
|
14827
14830
|
import { getAssetPriceInfo as getAssetPriceInfo4 } from "@funkit/api-base";
|
|
14828
|
-
import React162, { useCallback as useCallback27, useEffect as useEffect31, useMemo as
|
|
14831
|
+
import React162, { useCallback as useCallback27, useEffect as useEffect31, useMemo as useMemo30, useState as useState39 } from "react";
|
|
14829
14832
|
import { createPortal as createPortal7 } from "react-dom";
|
|
14830
14833
|
|
|
14831
14834
|
// src/hooks/useDynamicFont.ts
|
|
14832
14835
|
import { useCallback as useCallback26, useEffect as useEffect30, useRef as useRef14, useState as useState38 } from "react";
|
|
14833
14836
|
var SIZE_STEP = 1;
|
|
14834
|
-
var MIN_WIDTH = 10;
|
|
14835
|
-
var MAX_WIDTH = 235;
|
|
14836
14837
|
var ALLOWANCE = 20;
|
|
14837
14838
|
var useDynamicFont = (inputValue, max, min = 16) => {
|
|
14838
|
-
const [textWidth, setTextWidth] = useState38(MIN_WIDTH);
|
|
14839
14839
|
const [fontSize, setFontSize] = useState38(max);
|
|
14840
14840
|
const inputRef = useRef14(null);
|
|
14841
14841
|
const canvasRef = useRef14(document.createElement("canvas"));
|
|
@@ -14851,22 +14851,30 @@ var useDynamicFont = (inputValue, max, min = 16) => {
|
|
|
14851
14851
|
};
|
|
14852
14852
|
const resizeText = () => {
|
|
14853
14853
|
if (!inputRef.current) return;
|
|
14854
|
-
const
|
|
14855
|
-
if (
|
|
14856
|
-
|
|
14857
|
-
if (fontSize > min &&
|
|
14854
|
+
const textWidth = measureTextWidth(inputValue);
|
|
14855
|
+
if (textWidth === void 0) return;
|
|
14856
|
+
const maxWidth = inputRef.current.getBoundingClientRect().width;
|
|
14857
|
+
if (fontSize > min && textWidth > maxWidth) {
|
|
14858
14858
|
setFontSize((prevSize) => prevSize - SIZE_STEP);
|
|
14859
|
-
} else if (fontSize < max &&
|
|
14859
|
+
} else if (fontSize < max && textWidth < maxWidth - ALLOWANCE) {
|
|
14860
14860
|
setFontSize((prevSize) => prevSize + SIZE_STEP);
|
|
14861
14861
|
}
|
|
14862
14862
|
};
|
|
14863
14863
|
resizeText();
|
|
14864
14864
|
}, [max, min, inputValue, fontSize]);
|
|
14865
|
-
const resetText = useCallback26(() =>
|
|
14866
|
-
|
|
14867
|
-
|
|
14868
|
-
|
|
14869
|
-
|
|
14865
|
+
const resetText = useCallback26(() => setFontSize(max), [max]);
|
|
14866
|
+
return { ref: inputRef, fontSize, resetText };
|
|
14867
|
+
};
|
|
14868
|
+
|
|
14869
|
+
// src/hooks/useInputAmountRestriction.ts
|
|
14870
|
+
var MAX_AMOUNT = 2e3;
|
|
14871
|
+
var useAmountRestriction = (currentAmount) => {
|
|
14872
|
+
const { apiKey } = useFunkitConfig();
|
|
14873
|
+
const isDydx = apiKey === "NJq0CGrsE19xBbP1vHyBOp8xJvzYo9kayJHqDFP5";
|
|
14874
|
+
const isOverLimit = currentAmount > MAX_AMOUNT && isDydx;
|
|
14875
|
+
return {
|
|
14876
|
+
error: isOverLimit && `$${MAX_AMOUNT} maximum order`
|
|
14877
|
+
};
|
|
14870
14878
|
};
|
|
14871
14879
|
|
|
14872
14880
|
// src/components/Icons/SwitchIcon.tsx
|
|
@@ -14915,7 +14923,7 @@ var FunCheckoutInputAmountStep = ({
|
|
|
14915
14923
|
const [errorMessage, setErrorMessage] = useState39("");
|
|
14916
14924
|
const inputPlaceholder = isAmountInAbsolute ? "0.0000" : "$0";
|
|
14917
14925
|
const inputValue = amountInput === "" ? "" : isAmountInAbsolute ? amountInput : `$${amountInput}`;
|
|
14918
|
-
const { ref, fontSize,
|
|
14926
|
+
const { ref, fontSize, resetText } = useDynamicFont(
|
|
14919
14927
|
inputValue || inputPlaceholder,
|
|
14920
14928
|
BASE_FONT_SIZE
|
|
14921
14929
|
);
|
|
@@ -14952,7 +14960,7 @@ var FunCheckoutInputAmountStep = ({
|
|
|
14952
14960
|
}
|
|
14953
14961
|
setIsInited(true);
|
|
14954
14962
|
}, [initialAssetAmount, isAmountInAbsolute, isInited, unitPrice]);
|
|
14955
|
-
const finalAmounts =
|
|
14963
|
+
const finalAmounts = useMemo30(() => {
|
|
14956
14964
|
if (unitPrice == null) {
|
|
14957
14965
|
return {
|
|
14958
14966
|
usdEquivalent: 0,
|
|
@@ -14966,6 +14974,9 @@ var FunCheckoutInputAmountStep = ({
|
|
|
14966
14974
|
absoluteEquivalent: parseFloat(absoluteEquivalent.toFixed(5))
|
|
14967
14975
|
};
|
|
14968
14976
|
}, [amountInput, isAmountInAbsolute, unitPrice]);
|
|
14977
|
+
const { error: inputLimitError } = useAmountRestriction(
|
|
14978
|
+
finalAmounts.usdEquivalent
|
|
14979
|
+
);
|
|
14969
14980
|
const [isContinuing, setIsContinuing] = useState39(false);
|
|
14970
14981
|
const onClickContinue = useCallback27(async () => {
|
|
14971
14982
|
setIsContinuing(true);
|
|
@@ -15029,10 +15040,10 @@ var FunCheckoutInputAmountStep = ({
|
|
|
15029
15040
|
flexDirection: "column",
|
|
15030
15041
|
alignItems: "center",
|
|
15031
15042
|
justifyContent: "center",
|
|
15032
|
-
gap: "
|
|
15043
|
+
gap: "8",
|
|
15033
15044
|
width: "full"
|
|
15034
15045
|
},
|
|
15035
|
-
unitPrice == null && !errorMessage ? /* @__PURE__ */ React162.createElement(
|
|
15046
|
+
unitPrice == null && !errorMessage ? /* @__PURE__ */ React162.createElement(FunSkeletonBlock, { height: fontSize, width: fontSize * 3 }) : /* @__PURE__ */ React162.createElement(
|
|
15036
15047
|
Box,
|
|
15037
15048
|
{
|
|
15038
15049
|
display: "flex",
|
|
@@ -15041,41 +15052,29 @@ var FunCheckoutInputAmountStep = ({
|
|
|
15041
15052
|
alignItems: "flex-end"
|
|
15042
15053
|
},
|
|
15043
15054
|
/* @__PURE__ */ React162.createElement(
|
|
15044
|
-
|
|
15055
|
+
FunInput,
|
|
15045
15056
|
{
|
|
15046
|
-
|
|
15047
|
-
|
|
15048
|
-
|
|
15049
|
-
|
|
15050
|
-
|
|
15051
|
-
|
|
15052
|
-
|
|
15053
|
-
|
|
15054
|
-
|
|
15055
|
-
|
|
15056
|
-
|
|
15057
|
-
|
|
15058
|
-
|
|
15059
|
-
|
|
15060
|
-
|
|
15061
|
-
|
|
15062
|
-
|
|
15063
|
-
|
|
15064
|
-
|
|
15065
|
-
|
|
15066
|
-
|
|
15067
|
-
padding: "0px",
|
|
15068
|
-
fontSize: `${fontSize}px`,
|
|
15069
|
-
lineHeight: `${fontSize}px`,
|
|
15070
|
-
maxWidth: `${textWidth}px`
|
|
15071
|
-
},
|
|
15072
|
-
textColor: "primaryText",
|
|
15073
|
-
overrideBorderWidth: "0",
|
|
15074
|
-
overrideBackground: "transparent"
|
|
15075
|
-
}
|
|
15076
|
-
)
|
|
15077
|
-
),
|
|
15078
|
-
ticker && isAmountInAbsolute && /* @__PURE__ */ React162.createElement(Text, { size: "20", color: "primaryText", weight: "semibold" }, ticker)
|
|
15057
|
+
ref,
|
|
15058
|
+
value: inputValue,
|
|
15059
|
+
placeholder: inputPlaceholder,
|
|
15060
|
+
onChange: handleInputChange,
|
|
15061
|
+
inputProps: {
|
|
15062
|
+
type: isAmountInAbsolute ? "number" : "text",
|
|
15063
|
+
autoFocus: true,
|
|
15064
|
+
disabled: unitPrice == null,
|
|
15065
|
+
// get ios to use numpad key with period
|
|
15066
|
+
inputMode: "decimal"
|
|
15067
|
+
},
|
|
15068
|
+
inputStyle: {
|
|
15069
|
+
textAlign: "center",
|
|
15070
|
+
padding: "0px",
|
|
15071
|
+
fontSize: `${fontSize}px`
|
|
15072
|
+
},
|
|
15073
|
+
textColor: "primaryText",
|
|
15074
|
+
overrideBorderWidth: "0",
|
|
15075
|
+
overrideBackground: "transparent"
|
|
15076
|
+
}
|
|
15077
|
+
)
|
|
15079
15078
|
),
|
|
15080
15079
|
ticker && /* @__PURE__ */ React162.createElement(
|
|
15081
15080
|
Box,
|
|
@@ -15112,6 +15111,13 @@ var FunCheckoutInputAmountStep = ({
|
|
|
15112
15111
|
type: "error",
|
|
15113
15112
|
description: errorMessage
|
|
15114
15113
|
}
|
|
15114
|
+
), /* @__PURE__ */ React162.createElement(
|
|
15115
|
+
FunNotification,
|
|
15116
|
+
{
|
|
15117
|
+
isVisible: !!inputLimitError,
|
|
15118
|
+
type: "warning",
|
|
15119
|
+
description: inputLimitError
|
|
15120
|
+
}
|
|
15115
15121
|
), showAssetAvailableElement && targetAssetInWallet && !!targetAssetInWallet.totalUsdValue && /* @__PURE__ */ React162.createElement(
|
|
15116
15122
|
Box,
|
|
15117
15123
|
{
|
|
@@ -15138,7 +15144,7 @@ var FunCheckoutInputAmountStep = ({
|
|
|
15138
15144
|
actionButtonProps: {
|
|
15139
15145
|
title: "Continue",
|
|
15140
15146
|
onClick: onClickContinue,
|
|
15141
|
-
isDisabled: unitPrice == null || isContinuing || (finalAmounts.absoluteEquivalent || 0) <= 0 || finalAmounts.usdEquivalent <= 0,
|
|
15147
|
+
isDisabled: unitPrice == null || isContinuing || (finalAmounts.absoluteEquivalent || 0) <= 0 || finalAmounts.usdEquivalent <= 0 || !!inputLimitError,
|
|
15142
15148
|
isLoading: isContinuing
|
|
15143
15149
|
}
|
|
15144
15150
|
}
|
|
@@ -15152,7 +15158,7 @@ import {
|
|
|
15152
15158
|
FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS3,
|
|
15153
15159
|
FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO7
|
|
15154
15160
|
} from "@funkit/core";
|
|
15155
|
-
import React165, { useCallback as useCallback28, useEffect as useEffect32, useMemo as
|
|
15161
|
+
import React165, { useCallback as useCallback28, useEffect as useEffect32, useMemo as useMemo31, useState as useState40 } from "react";
|
|
15156
15162
|
import { createPortal as createPortal8 } from "react-dom";
|
|
15157
15163
|
|
|
15158
15164
|
// src/components/FunAsset/FunAssetItem.tsx
|
|
@@ -15435,7 +15441,7 @@ function MeshOrAccountSelectAsset({
|
|
|
15435
15441
|
generateAccountHoldingsMapForMesh,
|
|
15436
15442
|
generateAccountHoldingsMapForBalance
|
|
15437
15443
|
]);
|
|
15438
|
-
const defaultTokenSymbols =
|
|
15444
|
+
const defaultTokenSymbols = useMemo31(() => {
|
|
15439
15445
|
if (!checkoutItem) {
|
|
15440
15446
|
return [];
|
|
15441
15447
|
}
|
|
@@ -15452,7 +15458,7 @@ function MeshOrAccountSelectAsset({
|
|
|
15452
15458
|
}
|
|
15453
15459
|
return [];
|
|
15454
15460
|
}, [checkoutItem, accountHoldingsMap]);
|
|
15455
|
-
const assetOptions =
|
|
15461
|
+
const assetOptions = useMemo31(() => {
|
|
15456
15462
|
if (!checkoutItem || !checkoutItem.selectedPaymentMethodInfo?.paymentMethod)
|
|
15457
15463
|
return [];
|
|
15458
15464
|
return Object.keys(accountHoldingsMap).map((chainSymbolKey) => {
|
|
@@ -15520,7 +15526,7 @@ function MeshOrAccountSelectAsset({
|
|
|
15520
15526
|
const { messageType, quoteMessage } = quoteNotification;
|
|
15521
15527
|
const hasError = hasFetchAssetsError || hasInsufficientAssetError || messageType === "error";
|
|
15522
15528
|
const showQuoteMessage = messageType === "step" && !hasError;
|
|
15523
|
-
const errorMessage =
|
|
15529
|
+
const errorMessage = useMemo31(() => {
|
|
15524
15530
|
if (hasFetchAssetsError) {
|
|
15525
15531
|
return /* @__PURE__ */ React165.createElement("div", null, fetchAssetsError, /* @__PURE__ */ React165.createElement(
|
|
15526
15532
|
FunLinkButton,
|
|
@@ -15963,7 +15969,7 @@ function FunCheckoutModal({
|
|
|
15963
15969
|
setAnimateOut(false);
|
|
15964
15970
|
}, ANIMATION_DELAY4);
|
|
15965
15971
|
};
|
|
15966
|
-
const titleConfig =
|
|
15972
|
+
const titleConfig = useMemo32(() => {
|
|
15967
15973
|
const baseTitle = checkoutItem?.initSettings?.config?.modalTitle || "Checkout";
|
|
15968
15974
|
const selectedPaymentMethod2 = checkoutItem?.selectedPaymentMethodInfo?.paymentMethod;
|
|
15969
15975
|
switch (checkoutStep) {
|
|
@@ -16335,7 +16341,7 @@ function ModalProvider({ children }) {
|
|
|
16335
16341
|
return /* @__PURE__ */ React168.createElement(
|
|
16336
16342
|
ModalContext.Provider,
|
|
16337
16343
|
{
|
|
16338
|
-
value:
|
|
16344
|
+
value: useMemo33(
|
|
16339
16345
|
() => ({
|
|
16340
16346
|
accountModalOpen,
|
|
16341
16347
|
chainModalOpen,
|
|
@@ -17077,7 +17083,7 @@ var FunkitWeb2Provider = ({
|
|
|
17077
17083
|
},
|
|
17078
17084
|
[privy]
|
|
17079
17085
|
);
|
|
17080
|
-
const web2UserInfo =
|
|
17086
|
+
const web2UserInfo = useMemo34(() => {
|
|
17081
17087
|
if (!loggedInUser || !loggedInUser?.linked_accounts || !loggedInUser?.linked_accounts?.length) {
|
|
17082
17088
|
return PLACEHOLDER_FUNKIT_USER_INFO;
|
|
17083
17089
|
}
|
|
@@ -17575,11 +17581,6 @@ var computeWalletConnectMetaData = ({
|
|
|
17575
17581
|
};
|
|
17576
17582
|
};
|
|
17577
17583
|
|
|
17578
|
-
// src/utils/colors.ts
|
|
17579
|
-
var isHexString = (color) => {
|
|
17580
|
-
return /^#([0-9a-f]{3}){1,2}$/i.test(color);
|
|
17581
|
-
};
|
|
17582
|
-
|
|
17583
17584
|
// src/utils/omitUndefinedValues.ts
|
|
17584
17585
|
function omitUndefinedValues(obj) {
|
|
17585
17586
|
return Object.fromEntries(
|
|
@@ -18359,7 +18360,7 @@ function setFunkitConnectVersion({ version }) {
|
|
|
18359
18360
|
localStorage.setItem(storageKey5, version);
|
|
18360
18361
|
}
|
|
18361
18362
|
function getCurrentSdkVersion() {
|
|
18362
|
-
return "3.0.0-next.
|
|
18363
|
+
return "3.0.0-next.6";
|
|
18363
18364
|
}
|
|
18364
18365
|
function useFingerprint() {
|
|
18365
18366
|
const fingerprint = useCallback33(() => {
|