@velora-dex/widget 0.1.0-rc.0 → 0.1.0-rc.2
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/components/ui/drawer.js +1 -1
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/web3/providers.d.ts +3 -0
- package/dist/components/web3/providers.d.ts.map +1 -1
- package/dist/components/web3/providers.js +18 -1
- package/dist/components/web3/providers.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueList.d.ts.map +1 -1
- package/dist/components/widget/Details/DetailWithValueList.js +38 -28
- package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
- package/dist/components/widget/Details/types.d.ts +1 -1
- package/dist/components/widget/Details/types.d.ts.map +1 -1
- package/dist/components/widget/DexesList/DexItem.d.ts +3 -0
- package/dist/components/widget/DexesList/DexItem.d.ts.map +1 -0
- package/dist/components/widget/DexesList/DexItem.js +366 -0
- package/dist/components/widget/DexesList/DexItem.js.map +1 -0
- package/dist/components/widget/DexesList/DexesList.d.ts +10 -0
- package/dist/components/widget/DexesList/DexesList.d.ts.map +1 -0
- package/dist/components/widget/DexesList/DexesList.js +71 -0
- package/dist/components/widget/DexesList/DexesList.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/biswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/biswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/cheeseswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/cheeseswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/complusswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/complusswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/hashflow.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/hashflow.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/icons.json.d.ts +82 -0
- package/dist/components/widget/DexesList/assets/exchanges/icons.json.js +159 -0
- package/dist/components/widget/DexesList/assets/exchanges/icons.json.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/quickswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/quickswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/shibaswap.png.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/shibaswap.png.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/uniswap.svg.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/uniswap.svg.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/velora-dark.svg.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/velora-dark.svg.js.map +1 -0
- package/dist/components/widget/DexesList/assets/exchanges/velora-light.svg.js +4 -0
- package/dist/components/widget/DexesList/assets/exchanges/velora-light.svg.js.map +1 -0
- package/dist/components/widget/DexesList/assets/gas.svg.js +12 -0
- package/dist/components/widget/DexesList/assets/gas.svg.js.map +1 -0
- package/dist/components/widget/DexesList/assets/unknown-dex.svg.js +4 -0
- package/dist/components/widget/DexesList/assets/unknown-dex.svg.js.map +1 -0
- package/dist/components/widget/DexesList/constants.d.ts +2 -0
- package/dist/components/widget/DexesList/constants.d.ts.map +1 -0
- package/dist/components/widget/DexesList/constants.js +4 -0
- package/dist/components/widget/DexesList/constants.js.map +1 -0
- package/dist/components/widget/DexesList/getDexProps.d.ts +11 -0
- package/dist/components/widget/DexesList/getDexProps.d.ts.map +1 -0
- package/dist/components/widget/DexesList/getDexProps.js +94 -0
- package/dist/components/widget/DexesList/getDexProps.js.map +1 -0
- package/dist/components/widget/DexesList/types.d.ts +15 -0
- package/dist/components/widget/DexesList/types.d.ts.map +1 -0
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js.map +1 -1
- package/dist/components/widget/Drawer/Overlay.d.ts +9 -0
- package/dist/components/widget/Drawer/Overlay.d.ts.map +1 -0
- package/dist/components/widget/Drawer/Overlay.js +62 -0
- package/dist/components/widget/Drawer/Overlay.js.map +1 -0
- package/dist/components/widget/Drawer/index.d.ts.map +1 -1
- package/dist/components/widget/Drawer/index.js +2 -1
- package/dist/components/widget/Drawer/index.js.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts +3 -0
- package/dist/components/widget/Drawer/state/useDrawerControls.d.ts.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js +1 -2
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.d.ts.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js +44 -4
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
- package/dist/core/across/utils.d.ts.map +1 -1
- package/dist/core/across/utils.js +1 -2
- package/dist/core/across/utils.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +93 -85
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +1 -4
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.js +2 -2
- package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/inputs/state/store.d.ts +6 -0
- package/dist/core/inputs/state/store.d.ts.map +1 -0
- package/dist/core/inputs/state/store.js +6 -0
- package/dist/core/inputs/state/store.js.map +1 -0
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +4 -5
- package/dist/core/logger.js.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.d.ts.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.js +0 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
- package/dist/core/swapDetails/youGet.d.ts +1 -3
- package/dist/core/swapDetails/youGet.d.ts.map +1 -1
- package/dist/core/swapDetails/youGet.js +1 -3
- package/dist/core/swapDetails/youGet.js.map +1 -1
- package/dist/crosschain_token_list.json +3230 -0
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +3 -2
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts +6 -6
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +3 -3
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts +2 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +2 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +5 -2
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.d.ts +1 -1
- package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js +2 -1
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +4 -4
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/lib/constants/index.d.ts +1 -1
- package/dist/lib/constants/index.d.ts.map +1 -1
- package/dist/lib/constants/index.js +1 -1
- package/dist/lib/constants/index.js.map +1 -1
- package/dist/lib/utils/index.d.ts +2 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +4 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/price.d.ts +2 -6
- package/dist/lib/utils/price.d.ts.map +1 -1
- package/dist/lib/utils/price.js +6 -13
- package/dist/lib/utils/price.js.map +1 -1
- package/dist/lib/utils/savedAmountUSD.d.ts +3 -0
- package/dist/lib/utils/savedAmountUSD.d.ts.map +1 -0
- package/dist/lib/utils/savedAmountUSD.js +57 -0
- package/dist/lib/utils/savedAmountUSD.js.map +1 -0
- package/dist/lib/utils/toasts.d.ts +2 -2
- package/dist/lib/utils/toasts.d.ts.map +1 -1
- package/dist/lib/utils/toasts.js.map +1 -1
- package/dist/lib/web3/privy/config.js +1 -1
- package/dist/lib/web3/wagmi/config.js +1 -1
- package/dist/styles.css +23 -8
- package/dist/tokens/lists/lists.json.d.ts +84 -2
- package/dist/tokens/lists/lists.json.js +104 -2
- package/dist/tokens/lists/lists.json.js.map +1 -1
- package/dist/tokens/lists/state/observer.js +2 -2
- package/dist/tokens/lists/state/observer.js.map +1 -1
- package/dist/tokens/lists/utils.js +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { isSimplePath, isMultiSwap, isMegaSwap } from '../../../lib/utils/dexes.js';
|
|
2
|
+
import { VeloraDex } from './constants.js';
|
|
3
|
+
import { getSavedAmountUSD } from '../../../lib/utils/savedAmountUSD.js';
|
|
4
|
+
|
|
5
|
+
function getBestDexProps(marketPrice) {
|
|
6
|
+
const {
|
|
7
|
+
bestRoute,
|
|
8
|
+
srcAmount,
|
|
9
|
+
destAmount,
|
|
10
|
+
gasCostUSD
|
|
11
|
+
} = marketPrice;
|
|
12
|
+
const savedAmountUSD = getSavedAmountUSD(marketPrice);
|
|
13
|
+
if (isSimplePath(bestRoute)) {
|
|
14
|
+
const swapExchanges = bestRoute[0].swaps[0].swapExchanges;
|
|
15
|
+
const exchange = swapExchanges[0];
|
|
16
|
+
if (swapExchanges.length === 1 && exchange) {
|
|
17
|
+
return {
|
|
18
|
+
srcAmount: exchange.srcAmount,
|
|
19
|
+
destAmount: exchange.destAmount,
|
|
20
|
+
exchange: dropDEXStable(dropDEXVersion(exchange.exchange)),
|
|
21
|
+
gasCostUSD: exchange.data.gasUSD,
|
|
22
|
+
savedAmountUSD,
|
|
23
|
+
quote: exchange.exchange,
|
|
24
|
+
is100Percent: bestRoute[0].percent === 100
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
if (isMultiSwap(bestRoute)) {
|
|
30
|
+
return {
|
|
31
|
+
srcAmount,
|
|
32
|
+
destAmount,
|
|
33
|
+
exchange: VeloraDex,
|
|
34
|
+
gasCostUSD,
|
|
35
|
+
savedAmountUSD,
|
|
36
|
+
quote: "MultiSwap"
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (isMegaSwap(bestRoute)) {
|
|
40
|
+
return {
|
|
41
|
+
srcAmount,
|
|
42
|
+
destAmount,
|
|
43
|
+
exchange: VeloraDex,
|
|
44
|
+
gasCostUSD,
|
|
45
|
+
savedAmountUSD,
|
|
46
|
+
quote: "MegaSwap"
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
function getOtherDexesProps({
|
|
52
|
+
marketPrice,
|
|
53
|
+
bestDexProps,
|
|
54
|
+
maxDexes = 2
|
|
55
|
+
}) {
|
|
56
|
+
const otherDexes = marketPrice.others;
|
|
57
|
+
if (!otherDexes || otherDexes.length === 0) return null;
|
|
58
|
+
const sortedDexes = otherDexes.slice().sort((a, b) => {
|
|
59
|
+
const diff = BigInt(b.destAmount) - BigInt(a.destAmount);
|
|
60
|
+
if (diff > 0n) return 1;
|
|
61
|
+
if (diff < 0n) return -1;
|
|
62
|
+
return 0;
|
|
63
|
+
});
|
|
64
|
+
const addedDexes = /* @__PURE__ */ new Set([bestDexProps.exchange]);
|
|
65
|
+
const uniqueDexes = [];
|
|
66
|
+
sortedDexes.forEach((dex) => {
|
|
67
|
+
const trimmed = dropDEXStable(dropDEXVersion(dex.exchange));
|
|
68
|
+
if (!addedDexes.has(trimmed)) {
|
|
69
|
+
addedDexes.add(trimmed);
|
|
70
|
+
uniqueDexes.push({
|
|
71
|
+
srcAmount: dex.srcAmount,
|
|
72
|
+
destAmount: dex.destAmount,
|
|
73
|
+
exchange: trimmed,
|
|
74
|
+
gasCostUSD: dex.data.gasUSD,
|
|
75
|
+
quote: dex.exchange,
|
|
76
|
+
is100Percent: true
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
if (uniqueDexes.length === 0) return null;
|
|
81
|
+
const topDexes = uniqueDexes.slice(0, maxDexes);
|
|
82
|
+
return topDexes;
|
|
83
|
+
}
|
|
84
|
+
const versionRegex = /V\d+(?:\.\d+)*$/;
|
|
85
|
+
const stableRegex = /Stable$/i;
|
|
86
|
+
function dropDEXVersion(dexKey) {
|
|
87
|
+
return dexKey.replace(versionRegex, "");
|
|
88
|
+
}
|
|
89
|
+
function dropDEXStable(dexKey) {
|
|
90
|
+
return dexKey.replace(stableRegex, "");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export { getBestDexProps, getOtherDexesProps };
|
|
94
|
+
//# sourceMappingURL=getDexProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDexProps.js","sources":["../../../../src/components/widget/DexesList/getDexProps.ts"],"sourcesContent":["import { isSimplePath, isMultiSwap, isMegaSwap } from \"@/lib/utils/dexes\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport type { DexItemProps } from \"./types\";\nimport { VeloraDex } from \"./constants\";\nimport { getSavedAmountUSD } from \"@/lib/utils/savedAmountUSD\";\n\ntype DexProps = Pick<\n DexItemProps,\n | \"exchange\"\n | \"gasCostUSD\"\n | \"srcAmount\"\n | \"destAmount\"\n | \"savedAmountUSD\"\n | \"quote\"\n | \"is100Percent\"\n>;\n\nexport function getBestDexProps(marketPrice: OptimalRate): DexProps | null {\n const { bestRoute, srcAmount, destAmount, gasCostUSD } = marketPrice;\n\n const savedAmountUSD = getSavedAmountUSD(marketPrice);\n\n if (isSimplePath(bestRoute)) {\n const swapExchanges = bestRoute[0].swaps[0].swapExchanges;\n const exchange = swapExchanges[0];\n if (swapExchanges.length === 1 && exchange) {\n return {\n srcAmount: exchange.srcAmount,\n destAmount: exchange.destAmount,\n exchange: dropDEXStable(dropDEXVersion(exchange.exchange)),\n gasCostUSD: exchange.data.gasUSD,\n savedAmountUSD,\n quote: exchange.exchange,\n is100Percent: bestRoute[0].percent === 100,\n };\n }\n return null;\n }\n\n if (isMultiSwap(bestRoute)) {\n return {\n srcAmount,\n destAmount,\n exchange: VeloraDex,\n gasCostUSD,\n savedAmountUSD,\n quote: \"MultiSwap\",\n };\n }\n\n if (isMegaSwap(bestRoute)) {\n return {\n srcAmount,\n destAmount,\n exchange: VeloraDex,\n gasCostUSD,\n savedAmountUSD,\n quote: \"MegaSwap\",\n };\n }\n\n return null;\n}\n\nexport function getOtherDexesProps({\n marketPrice,\n bestDexProps,\n maxDexes = 2,\n}: {\n marketPrice: OptimalRate;\n bestDexProps: DexProps;\n maxDexes?: number;\n}): DexProps[] | null {\n const otherDexes = marketPrice.others;\n\n if (!otherDexes || otherDexes.length === 0) return null;\n\n // 1. sort by destAmount\n const sortedDexes = otherDexes.slice().sort((a, b) => {\n const diff = BigInt(b.destAmount) - BigInt(a.destAmount);\n if (diff > 0n) return 1;\n if (diff < 0n) return -1;\n return 0;\n });\n\n // 2. filter out bestDex and repeated dexes\n const addedDexes = new Set<string>([bestDexProps.exchange]);\n // filter out repeated dexes: [UniswapV3, UniswapV4] ---> [UniswapV3]\n const uniqueDexes: DexProps[] = [];\n\n sortedDexes.forEach((dex) => {\n const trimmed = dropDEXStable(dropDEXVersion(dex.exchange));\n\n if (!addedDexes.has(trimmed)) {\n addedDexes.add(trimmed);\n uniqueDexes.push({\n srcAmount: dex.srcAmount,\n destAmount: dex.destAmount,\n exchange: trimmed,\n gasCostUSD: dex.data.gasUSD,\n quote: dex.exchange,\n is100Percent: true,\n });\n }\n });\n\n if (uniqueDexes.length === 0) return null;\n\n // 3. take first `maxDexes` items\n const topDexes = uniqueDexes.slice(0, maxDexes);\n\n return topDexes;\n}\n\nconst versionRegex = /V\\d+(?:\\.\\d+)*$/; // UniswapV2,UniswapV3,PancakeSwapV2,PancakeswapV3,TraderJoeV2,TraderJoeV2.1\nconst stableRegex = /Stable$/i; // Zyberswap,ZyberswapStable\n\nfunction dropDEXVersion(dexKey: string): string {\n return dexKey.replace(versionRegex, \"\");\n}\nfunction dropDEXStable(dexKey: string): string {\n return dexKey.replace(stableRegex, \"\");\n}\n"],"names":["getBestDexProps","marketPrice","bestRoute","srcAmount","destAmount","gasCostUSD","savedAmountUSD","getSavedAmountUSD","isSimplePath","swapExchanges","swaps","exchange","length","dropDEXStable","dropDEXVersion","data","gasUSD","quote","is100Percent","percent","isMultiSwap","VeloraDex","isMegaSwap","getOtherDexesProps","bestDexProps","maxDexes","otherDexes","others","sortedDexes","slice","sort","a","b","diff","BigInt","addedDexes","Set","uniqueDexes","forEach","dex","trimmed","has","add","push","topDexes","versionRegex","stableRegex","dexKey","replace"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Token } from '../../../tokens/state/types';
|
|
2
|
+
import { OptimalRate } from '@velora-dex/sdk';
|
|
3
|
+
export type DexItemProps = {
|
|
4
|
+
price: OptimalRate;
|
|
5
|
+
srcAmount: string;
|
|
6
|
+
destAmount: string;
|
|
7
|
+
savedAmountUSD?: number;
|
|
8
|
+
srcToken: Token;
|
|
9
|
+
destToken: Token;
|
|
10
|
+
exchange: string;
|
|
11
|
+
gasCostUSD: string;
|
|
12
|
+
quote: string;
|
|
13
|
+
is100Percent?: boolean;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/widget/DexesList/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC"}
|
package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sources":["../../../../../../../src/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.ts"],"sourcesContent":["import {\n arbitrum,\n avalanche,\n base,\n bsc,\n gnosis,\n mainnet,\n optimism,\n polygon,\n sonic,\n unichain,\n} from \"@/lib/web3/wagmi/supportedChains\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { ETH_ADDRESS } from \"@/tokens/constants\";\n\ntype FrequentlyTradedToken = Required<Pick<Token, \"address\" | \"symbol\">>;\n\nconst ETH_TOKEN: FrequentlyTradedToken = {\n address: ETH_ADDRESS,\n symbol: \"ETH\",\n};\n\n// tokens to display separately for quick access\n// <=6 tokens is the optimal number, takes up 2 rows\nexport const chain2Tokens: Record<number, FrequentlyTradedToken[]> = {\n [mainnet.id]: [\n ETH_TOKEN,\n { address: \"0x6B175474E89094C44Da98b954EedeAC495271d0F\", symbol: \"DAI\" },\n { address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\", symbol: \"USDC\" },\n { address: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\", symbol: \"WETH\" },\n { address: \"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\", symbol: \"WBTC\" },\n { address: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\", symbol: \"USDT\" },\n ],\n [bsc.id]: [\n { ...ETH_TOKEN, symbol: \"BNB\" },\n { address: \"0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56\", symbol: \"BUSD\" },\n // { address: \"0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3\", symbol: \"DAI\" },\n { address: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\", symbol: \"USDC\" },\n { address: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\", symbol: \"WBNB\" },\n { address: \"0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c\", symbol: \"BTCB\" },\n { address: \"0x55d398326f99059fF775485246999027B3197955\", symbol: \"USDT\" },\n ],\n [polygon.id]: [\n { ...ETH_TOKEN, symbol: \"
|
|
1
|
+
{"version":3,"file":"tokens.js","sources":["../../../../../../../src/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.ts"],"sourcesContent":["import {\n arbitrum,\n avalanche,\n base,\n bsc,\n gnosis,\n mainnet,\n optimism,\n polygon,\n sonic,\n unichain,\n} from \"@/lib/web3/wagmi/supportedChains\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { ETH_ADDRESS } from \"@/tokens/constants\";\n\ntype FrequentlyTradedToken = Required<Pick<Token, \"address\" | \"symbol\">>;\n\nconst ETH_TOKEN: FrequentlyTradedToken = {\n address: ETH_ADDRESS,\n symbol: \"ETH\",\n};\n\n// tokens to display separately for quick access\n// <=6 tokens is the optimal number, takes up 2 rows\nexport const chain2Tokens: Record<number, FrequentlyTradedToken[]> = {\n [mainnet.id]: [\n ETH_TOKEN,\n { address: \"0x6B175474E89094C44Da98b954EedeAC495271d0F\", symbol: \"DAI\" },\n { address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\", symbol: \"USDC\" },\n { address: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\", symbol: \"WETH\" },\n { address: \"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\", symbol: \"WBTC\" },\n { address: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\", symbol: \"USDT\" },\n ],\n [bsc.id]: [\n { ...ETH_TOKEN, symbol: \"BNB\" },\n { address: \"0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56\", symbol: \"BUSD\" },\n // { address: \"0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3\", symbol: \"DAI\" },\n { address: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\", symbol: \"USDC\" },\n { address: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\", symbol: \"WBNB\" },\n { address: \"0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c\", symbol: \"BTCB\" },\n { address: \"0x55d398326f99059fF775485246999027B3197955\", symbol: \"USDT\" },\n ],\n [polygon.id]: [\n { ...ETH_TOKEN, symbol: \"POL\" },\n { address: \"0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063\", symbol: \"DAI\" },\n { address: \"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174\", symbol: \"USDC\" },\n { address: \"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270\", symbol: \"WMATIC\" },\n { address: \"0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6\", symbol: \"WBTC\" },\n { address: \"0xc2132D05D31c914a87C6611C10748AEb04B58e8F\", symbol: \"USDT\" },\n ],\n [avalanche.id]: [\n { ...ETH_TOKEN, symbol: \"AVAX\" },\n { address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\", symbol: \"USDC\" },\n { address: \"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7\", symbol: \"WAVAX\" },\n { address: \"0x50b7545627a5162F82A992c33b87aDc75187B218\", symbol: \"WBTC.e\" },\n { address: \"0x152b9d0FdC40C096757F570A51E494bd4b943E50\", symbol: \"BTC.b\" },\n { address: \"0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7\", symbol: \"USDT\" },\n ],\n [arbitrum.id]: [\n ETH_TOKEN,\n { address: \"0x912CE59144191C1204E64559FE8253a0e49E6548\", symbol: \"ARB\" },\n { address: \"0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8\", symbol: \"USDC\" },\n { address: \"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1\", symbol: \"WETH\" },\n { address: \"0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f\", symbol: \"WBTC\" },\n { address: \"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9\", symbol: \"USDT\" },\n ],\n [optimism.id]: [\n ETH_TOKEN,\n { address: \"0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1\", symbol: \"DAI\" },\n { address: \"0x7F5c764cBc14f9669B88837ca1490cCa17c31607\", symbol: \"USDC.e\" },\n { address: \"0x4200000000000000000000000000000000000042\", symbol: \"OP\" },\n { address: \"0x4200000000000000000000000000000000000006\", symbol: \"WETH\" },\n { address: \"0x68f180fcCe6836688e9084f035309E29Bf0A2095\", symbol: \"WBTC\" },\n { address: \"0x94b008aA00579c1307B0EF2c499aD98a8ce58e58\", symbol: \"USDT\" },\n ],\n [base.id]: [\n ETH_TOKEN,\n { address: \"0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca\", symbol: \"USDBC\" },\n { address: \"0x4200000000000000000000000000000000000006\", symbol: \"WETH\" },\n { address: \"0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22\", symbol: \"CBETH\" },\n { address: \"0xfa980ced6895ac314e7de34ef1bfae90a5add21b\", symbol: \"PRIME\" },\n ],\n [gnosis.id]: [\n { ...ETH_TOKEN, symbol: \"XDAI\" },\n { address: \"0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83\", symbol: \"USDC\" },\n { address: \"0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d\", symbol: \"WXDAI\" },\n { address: \"0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1\", symbol: \"WETH\" },\n { address: \"0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb\", symbol: \"GNO\" },\n { address: \"0x8e5bBbb09Ed1ebdE8674Cda39A0c169401db4252\", symbol: \"WBTC\" },\n ],\n [sonic.id]: [\n { ...ETH_TOKEN, symbol: \"S\" },\n { address: \"0x29219dd400f2Bf60E5a23d13Be72B486D4038894\", symbol: \"USDC\" },\n { address: \"0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38\", symbol: \"WS\" },\n { address: \"0x6047828dc181963ba44974801FF68e538dA5eaF9\", symbol: \"USDT\" },\n { address: \"0x50c42dEAcD8Fc9773493ED674b675bE577f2634b\", symbol: \"WETH\" },\n ],\n [unichain.id]: [\n ETH_TOKEN,\n { address: \"0x078d782b760474a361dda0af3839290b0ef57ad6\", symbol: \"USDC\" },\n { address: \"0x9151434b16b9763660705744891fa906f660ecc5\", symbol: \"USDT0\" },\n { address: \"0x4200000000000000000000000000000000000006\", symbol: \"WETH\" },\n ],\n};\n"],"names":["ETH_TOKEN","address","ETH_ADDRESS","symbol","chain2Tokens","mainnet","id","bsc","polygon","avalanche","arbitrum","optimism","base","gnosis","sonic","unichain"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type DrawerOverlayProps = {
|
|
2
|
+
open: boolean;
|
|
3
|
+
onClick?: () => void;
|
|
4
|
+
closeDrawerOnClick?: boolean;
|
|
5
|
+
className?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function InWidgetDrawerOverlay({ open, onClick, closeDrawerOnClick, className, }: DrawerOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=Overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../../src/components/widget/Drawer/Overlay.tsx"],"names":[],"mappings":"AAIA,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,OAAO,EACP,kBAAyB,EACzB,SAAS,GACV,EAAE,kBAAkB,2CAuBpB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { d as distExports } from '../../../_virtual/index.js';
|
|
3
|
+
import { cn } from '../../../lib/utils/index.js';
|
|
4
|
+
import { openDrawerAtom } from './state/useDrawerControls.js';
|
|
5
|
+
import { useSetAtom } from 'jotai';
|
|
6
|
+
|
|
7
|
+
function InWidgetDrawerOverlay(t0) {
|
|
8
|
+
const $ = distExports.c(12);
|
|
9
|
+
const {
|
|
10
|
+
open,
|
|
11
|
+
onClick,
|
|
12
|
+
closeDrawerOnClick: t1,
|
|
13
|
+
className
|
|
14
|
+
} = t0;
|
|
15
|
+
const closeDrawerOnClick = t1 === void 0 ? true : t1;
|
|
16
|
+
const setOpenDrawer = useSetAtom(openDrawerAtom);
|
|
17
|
+
const t2 = !open;
|
|
18
|
+
const t3 = !open;
|
|
19
|
+
let t4;
|
|
20
|
+
if ($[0] !== className || $[1] !== open || $[2] !== t2 || $[3] !== t3) {
|
|
21
|
+
t4 = cn("absolute inset-0 bg-gray-900 z-10 transition-opacity duration-300 rounded-xxl", {
|
|
22
|
+
"opacity-0": t2,
|
|
23
|
+
"opacity-75": open,
|
|
24
|
+
"pointer-events-none": t3
|
|
25
|
+
}, className);
|
|
26
|
+
$[0] = className;
|
|
27
|
+
$[1] = open;
|
|
28
|
+
$[2] = t2;
|
|
29
|
+
$[3] = t3;
|
|
30
|
+
$[4] = t4;
|
|
31
|
+
} else {
|
|
32
|
+
t4 = $[4];
|
|
33
|
+
}
|
|
34
|
+
let t5;
|
|
35
|
+
if ($[5] !== closeDrawerOnClick || $[6] !== onClick || $[7] !== setOpenDrawer) {
|
|
36
|
+
t5 = () => {
|
|
37
|
+
if (closeDrawerOnClick) {
|
|
38
|
+
setOpenDrawer(null);
|
|
39
|
+
}
|
|
40
|
+
onClick?.();
|
|
41
|
+
};
|
|
42
|
+
$[5] = closeDrawerOnClick;
|
|
43
|
+
$[6] = onClick;
|
|
44
|
+
$[7] = setOpenDrawer;
|
|
45
|
+
$[8] = t5;
|
|
46
|
+
} else {
|
|
47
|
+
t5 = $[8];
|
|
48
|
+
}
|
|
49
|
+
let t6;
|
|
50
|
+
if ($[9] !== t4 || $[10] !== t5) {
|
|
51
|
+
t6 = /* @__PURE__ */ jsx("div", { className: t4, onClick: t5 });
|
|
52
|
+
$[9] = t4;
|
|
53
|
+
$[10] = t5;
|
|
54
|
+
$[11] = t6;
|
|
55
|
+
} else {
|
|
56
|
+
t6 = $[11];
|
|
57
|
+
}
|
|
58
|
+
return t6;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export { InWidgetDrawerOverlay };
|
|
62
|
+
//# sourceMappingURL=Overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Overlay.js","sources":["../../../../src/components/widget/Drawer/Overlay.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\";\nimport { openDrawerAtom } from \"./state/useDrawerControls\";\nimport { useSetAtom } from \"jotai\";\n\ntype DrawerOverlayProps = {\n open: boolean;\n onClick?: () => void;\n closeDrawerOnClick?: boolean;\n className?: string;\n};\n// Used when Partial Drawer is open,\n// darkens the Widget in the background,\n// onClick closes the Partial Drawer\nexport function InWidgetDrawerOverlay({\n open,\n onClick,\n closeDrawerOnClick = true,\n className,\n}: DrawerOverlayProps) {\n const setOpenDrawer = useSetAtom(openDrawerAtom);\n\n return (\n <div\n className={cn(\n \"absolute inset-0 bg-gray-900 z-10 transition-opacity duration-300 rounded-xxl\",\n {\n \"opacity-0\": !open,\n \"opacity-75\": open,\n // allow clicking through when no drawer is open\n \"pointer-events-none\": !open,\n },\n className\n )}\n onClick={() => {\n if (closeDrawerOnClick) {\n setOpenDrawer(null);\n }\n onClick?.();\n }}\n />\n );\n}\n"],"names":["InWidgetDrawerOverlay","t0","$","_c","open","onClick","closeDrawerOnClick","t1","className","undefined","setOpenDrawer","useSetAtom","openDrawerAtom","t2","t3","t4","cn","t5","t6"],"mappings":";;;;;;AAaO,SAAAA,sBAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAA+B,EAAA,MAAA;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,kBAAAA,EAAAC,EAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAAP,EAAAA;AAGpC,EAAA,MAAAK,kBAAAA,GAAAC,EAAAA,KAAyBE,MAAAA,UAAzBF,EAAAA;AAGA,EAAA,MAAAG,aAAAA,GAAsBC,WAAAC,cAAyB,CAAA;AAO1B,EAAA,MAAAC,MAACT,IAAAA;AAGS,EAAA,MAAAU,MAACV,IAAAA;AAAI,EAAA,IAAAW,EAAAA;AAAA,EAAA,IAAAb,CAAAA,CAAA,CAAA,CAAA,KAAAM,SAAAA,IAAAN,EAAA,CAAA,CAAA,KAAAE,IAAAA,IAAAF,CAAAA,CAAA,CAAA,CAAA,KAAAW,EAAAA,IAAAX,CAAAA,QAAAY,EAAAA,EAAA;AANrBC,IAAAA,EAAAA,GAAAC,GACT,+EAAA,EAA+E;AAAA,MAAA,WAAA,EAEhEH,EAAAA;AAAAA,MAAK,YAAA,EACJT,IAAAA;AAAAA,MAAI,qBAAA,EAEKU;AAAAA,OAEzBN,SACF,CAAA;AAACN,IAAAA,CAAAA,MAAAM,SAAAA;AAAAN,IAAAA,CAAAA,MAAAE,IAAAA;AAAAF,IAAAA,CAAAA,MAAAW,EAAAA;AAAAX,IAAAA,CAAAA,MAAAY,EAAAA;AAAAZ,IAAAA,CAAAA,MAAAa,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAe,EAAAA;AAAA,EAAA,IAAAf,CAAAA,CAAA,CAAA,CAAA,KAAAI,kBAAAA,IAAAJ,CAAAA,QAAAG,OAAAA,IAAAH,CAAAA,CAAA,CAAA,CAAA,KAAAQ,aAAAA,EAAA;AACQO,IAAAA,EAAAA,GAAAA,MAAA;AAAA,MAAA,IACHX,kBAAAA,EAAkB;AACpBI,QAAAA,aAAAA,KAAkB,CAAA;AAAA,MAAC;AAErBL,MAAAA,OAAAA,IAAO;AAAA,IAAA,CAAA;AACRH,IAAAA,CAAAA,MAAAI,kBAAAA;AAAAJ,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAQ,aAAAA;AAAAR,IAAAA,CAAAA,MAAAe,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAf,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAgB,EAAAA;AAAA,EAAA,IAAAhB,EAAA,CAAA,CAAA,KAAAa,MAAAb,CAAAA,SAAAe,EAAAA,EAAA;AAhBHC,IAAAA,EAAAA,mBAAA,GAAA,CAAA,KAAA,EAAA,EACa,SAAA,EAAAH,EAAAA,EAUF,SAAAE,EAAAA,EAKR,CAAA;AACDf,IAAAA,CAAAA,MAAAa,EAAAA;AAAAb,IAAAA,CAAAA,OAAAe,EAAAA;AAAAf,IAAAA,CAAAA,OAAAgB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAhB,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAjBFgB,EAAAA;AAiBE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/widget/Drawer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAOP,MAAM,wBAAwB,CAAC;AAIhC,KAAK,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACjE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/widget/Drawer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAOP,MAAM,wBAAwB,CAAC;AAIhC,KAAK,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACjE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAsBF,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EAAE,UAAU,EACrB,KAAK,EACL,WAAW,EACX,eAAe,EACf,WAAmB,EACnB,cAAqB,EAAE,+CAA+C;AACtE,GAAG,KAAK,EACT,EAAE,qBAAqB,2CAwDvB"}
|
|
@@ -6,6 +6,7 @@ import { XIcon } from 'lucide-react';
|
|
|
6
6
|
|
|
7
7
|
function isElementVisibleInViewport(element) {
|
|
8
8
|
const rect = element.getBoundingClientRect();
|
|
9
|
+
console.log("🚀 ~ isElementVisibleInViewport ~ rect:", rect, rect.top <= window.innerHeight && rect.bottom >= 0 && rect.left <= window.innerWidth && rect.right >= 0);
|
|
9
10
|
return rect.top <= window.innerHeight && rect.bottom >= 0 && rect.left <= window.innerWidth && rect.right >= 0;
|
|
10
11
|
}
|
|
11
12
|
function ControlledDrawer(t0) {
|
|
@@ -55,7 +56,7 @@ function ControlledDrawer(t0) {
|
|
|
55
56
|
let t3;
|
|
56
57
|
if ($[9] !== props || $[10] !== scrollIntoView) {
|
|
57
58
|
t3 = scrollIntoView ? (event) => {
|
|
58
|
-
if (props.open && isElementVisibleInViewport(event.currentTarget)) {
|
|
59
|
+
if (props.open && !isElementVisibleInViewport(event.currentTarget)) {
|
|
59
60
|
event.currentTarget.scrollIntoView({
|
|
60
61
|
behavior: "smooth",
|
|
61
62
|
block: "nearest",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/widget/Drawer/index.tsx"],"sourcesContent":["import {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerTitle,\n DrawerPortal,\n DrawerDescription,\n} from \"@/components/ui/drawer\";\nimport { useContainerAtom } from \"@/core/state/containerAtom\";\nimport { XIcon } from \"lucide-react\";\n\ntype ControlledDrawerProps = React.ComponentProps<typeof Drawer> & {\n open: boolean;\n children?: React.ReactNode;\n container?: HTMLElement | null;\n title?: string;\n description?: string;\n showCloseButton?: boolean;\n scrollIntoView?: boolean;\n};\n\n// Helper function to check if an element is visible in the viewport\nfunction isElementVisibleInViewport(element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n\n return (\n rect.top <= window.innerHeight &&\n rect.bottom >= 0 &&\n rect.left <= window.innerWidth &&\n rect.right >= 0\n );\n}\n\nexport function ControlledDrawer({\n children,\n container: _container,\n title,\n description,\n showCloseButton,\n dismissible = false,\n scrollIntoView = true, // If Drawer Opened offscreen, scroll into view\n ...props\n}: ControlledDrawerProps) {\n const drawerContainer = useContainerAtom();\n const container = _container || drawerContainer;\n\n return (\n <Drawer\n {...props}\n container={container}\n dismissible={dismissible}\n modal={false}\n >\n <DrawerPortal>\n <DrawerContent\n className=\"absolute p-0 bg-contrast-8 dark:bg-contrast-1\"\n onAnimationEnd={\n scrollIntoView\n ? (event) => {\n // only after animated to Open state to prevent jiggle\n if (\n props.open &&\n isElementVisibleInViewport(event.currentTarget)\n ) {\n // On short screens a Drawer may open offscreen and not be noticable\n event.currentTarget.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n }\n : undefined\n }\n >\n {(title || showCloseButton) && (\n <DrawerHeader>\n <div className=\"flex items-center justify-between\">\n <DrawerTitle className=\"font-medium text-lg text-contrast-4 dark:text-contrast-6\">\n {title}\n </DrawerTitle>\n {showCloseButton && (\n <DrawerClose\n className=\"ring-offset-background cursor-pointer focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground dark:text-contrast-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n onClick={props.onClose}\n >\n <XIcon />\n </DrawerClose>\n )}\n </div>\n </DrawerHeader>\n )}\n <DrawerDescription>{description}</DrawerDescription>\n {children}\n </DrawerContent>\n </DrawerPortal>\n </Drawer>\n );\n}\n"],"names":["isElementVisibleInViewport","element","rect","getBoundingClientRect","top","window","innerHeight","bottom","left","innerWidth","right","ControlledDrawer","t0","$","_c","_container","children","description","props","showCloseButton","t1","t2","title","container","dismissible","scrollIntoView","undefined","drawerContainer","useContainerAtom","t3","event","open","currentTarget","behavior","block","inline","t4","onClose","t5","t6","t7"],"mappings":";;;;;;AAuBA,SAASA,2BAA2BC,OAAAA,EAA+B;AACjE,EAAA,MAAMC,IAAAA,GAAOD,QAAQE,qBAAAA,EAAsB;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/widget/Drawer/index.tsx"],"sourcesContent":["import {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerTitle,\n DrawerPortal,\n DrawerDescription,\n} from \"@/components/ui/drawer\";\nimport { useContainerAtom } from \"@/core/state/containerAtom\";\nimport { XIcon } from \"lucide-react\";\n\ntype ControlledDrawerProps = React.ComponentProps<typeof Drawer> & {\n open: boolean;\n children?: React.ReactNode;\n container?: HTMLElement | null;\n title?: string;\n description?: string;\n showCloseButton?: boolean;\n scrollIntoView?: boolean;\n};\n\n// Helper function to check if an element is visible in the viewport\nfunction isElementVisibleInViewport(element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n console.log(\n \"🚀 ~ isElementVisibleInViewport ~ rect:\",\n rect,\n rect.top <= window.innerHeight &&\n rect.bottom >= 0 &&\n rect.left <= window.innerWidth &&\n rect.right >= 0\n );\n\n return (\n rect.top <= window.innerHeight &&\n rect.bottom >= 0 &&\n rect.left <= window.innerWidth &&\n rect.right >= 0\n );\n}\n\nexport function ControlledDrawer({\n children,\n container: _container,\n title,\n description,\n showCloseButton,\n dismissible = false,\n scrollIntoView = true, // If Drawer Opened offscreen, scroll into view\n ...props\n}: ControlledDrawerProps) {\n const drawerContainer = useContainerAtom();\n const container = _container || drawerContainer;\n\n return (\n <Drawer\n {...props}\n container={container}\n dismissible={dismissible}\n modal={false}\n >\n <DrawerPortal>\n <DrawerContent\n className=\"absolute p-0 bg-contrast-8 dark:bg-contrast-1\"\n onAnimationEnd={\n scrollIntoView\n ? (event) => {\n // only after animated to Open state to prevent jiggle\n if (\n props.open &&\n !isElementVisibleInViewport(event.currentTarget)\n ) {\n // On short screens a Drawer may open offscreen and not be noticable\n event.currentTarget.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n }\n : undefined\n }\n >\n {(title || showCloseButton) && (\n <DrawerHeader>\n <div className=\"flex items-center justify-between\">\n <DrawerTitle className=\"font-medium text-lg text-contrast-4 dark:text-contrast-6\">\n {title}\n </DrawerTitle>\n {showCloseButton && (\n <DrawerClose\n className=\"ring-offset-background cursor-pointer focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground dark:text-contrast-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n onClick={props.onClose}\n >\n <XIcon />\n </DrawerClose>\n )}\n </div>\n </DrawerHeader>\n )}\n <DrawerDescription>{description}</DrawerDescription>\n {children}\n </DrawerContent>\n </DrawerPortal>\n </Drawer>\n );\n}\n"],"names":["isElementVisibleInViewport","element","rect","getBoundingClientRect","console","log","top","window","innerHeight","bottom","left","innerWidth","right","ControlledDrawer","t0","$","_c","_container","children","description","props","showCloseButton","t1","t2","title","container","dismissible","scrollIntoView","undefined","drawerContainer","useContainerAtom","t3","event","open","currentTarget","behavior","block","inline","t4","onClose","t5","t6","t7"],"mappings":"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"}
|
|
@@ -5,6 +5,9 @@ export type DrawerControls = {
|
|
|
5
5
|
onOpenChange: (open: boolean) => void;
|
|
6
6
|
};
|
|
7
7
|
export type DrawerId = "account-button-drawer" | "trade-parameters-drawer" | "receiver-address-drawer" | `empty-select-token-drawer-${"from" | "to" | undefined}` | `select-token-drawer-${"from" | "to" | undefined}` | "wrap-eth-drawer" | "connect-wallet-drawer" | "trade-flow-drawer";
|
|
8
|
+
export declare const openDrawerAtom: import('jotai').PrimitiveAtom<DrawerId | null> & {
|
|
9
|
+
init: DrawerId | null;
|
|
10
|
+
};
|
|
8
11
|
export declare const useOpenDrawerId: () => DrawerId | null;
|
|
9
12
|
export declare const useDrawerControls: ({ onOpen: _onOpen, onClose: _onClose, drawerId, }: {
|
|
10
13
|
onOpen?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDrawerControls.d.ts","sourceRoot":"","sources":["../../../../../src/components/widget/Drawer/state/useDrawerControls.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAChB,uBAAuB,GACvB,yBAAyB,GACzB,yBAAyB,GACzB,6BAA6B,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GACxD,uBAAuB,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAClD,iBAAiB,GACjB,uBAAuB,GACvB,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"useDrawerControls.d.ts","sourceRoot":"","sources":["../../../../../src/components/widget/Drawer/state/useDrawerControls.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAChB,uBAAuB,GACvB,yBAAyB,GACzB,yBAAyB,GACzB,6BAA6B,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GACxD,uBAAuB,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAClD,iBAAiB,GACjB,uBAAuB,GACvB,mBAAmB,CAAC;AAExB,eAAO,MAAM,cAAc;;CAA8B,CAAC;AAE1D,eAAO,MAAM,eAAe,QAAO,QAAQ,GAAG,IAE7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,mDAI/B;IACD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;CACpB,KAAG,cAwCH,CAAC;AAmBF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kCAAkC,QAAO;IACpD,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACrD,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CAsEvB,CAAC"}
|
|
@@ -174,5 +174,5 @@ const useDrawerContainerHeightTransition = () => {
|
|
|
174
174
|
return t4;
|
|
175
175
|
};
|
|
176
176
|
|
|
177
|
-
export { useDrawerContainerHeightTransition, useDrawerControls, useOpenDrawerId };
|
|
177
|
+
export { openDrawerAtom, useDrawerContainerHeightTransition, useDrawerControls, useOpenDrawerId };
|
|
178
178
|
//# sourceMappingURL=useDrawerControls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDrawerControls.js","sources":["../../../../../src/components/widget/Drawer/state/useDrawerControls.ts"],"sourcesContent":["import { useLogger } from \"@/core/logger\";\nimport { atom, useAtom, useAtomValue } from \"jotai\";\nimport { useLayoutEffect, useRef } from \"react\";\n\nexport type DrawerControls = {\n open: boolean;\n onOpen: () => void;\n onClose: () => void;\n onOpenChange: (open: boolean) => void;\n};\n\nexport type DrawerId =\n | \"account-button-drawer\"\n | \"trade-parameters-drawer\"\n | \"receiver-address-drawer\"\n | `empty-select-token-drawer-${\"from\" | \"to\" | undefined}`\n | `select-token-drawer-${\"from\" | \"to\" | undefined}`\n | \"wrap-eth-drawer\"\n | \"connect-wallet-drawer\"\n | \"trade-flow-drawer\";\n\nconst openDrawerAtom = atom<DrawerId | null>(null);\n\nexport const useOpenDrawerId = (): DrawerId | null => {\n return useAtomValue(openDrawerAtom);\n};\n\nexport const useDrawerControls = ({\n onOpen: _onOpen,\n onClose: _onClose,\n drawerId,\n}: {\n onOpen?: () => void;\n onClose?: () => void;\n drawerId: DrawerId;\n}): DrawerControls => {\n const [openDrawer, setOpenDrawer] = useAtom(openDrawerAtom);\n\n const open = openDrawer === drawerId;\n\n const logger = useLogger(\"DRAWER\");\n\n const onOpen = () => {\n logger.info(\"onOpen\", drawerId);\n setOpenDrawer(drawerId);\n _onOpen?.();\n };\n const onClose = () => {\n logger.info(\"onClose\", drawerId);\n setOpenDrawer((currentOpenDrawer) => {\n // only reset openDrawer if closing the drawer that is currently open,\n // so that we don't interfere with other drawers that are opening at the same time\n if (currentOpenDrawer === drawerId) {\n return null;\n }\n return currentOpenDrawer;\n });\n _onClose?.();\n };\n\n const onOpenChange = (open: boolean) => {\n if (open) {\n onOpen();\n } else {\n onClose();\n }\n };\n\n return {\n open,\n // expect onOpenChange not to be triggered for a controlled <Drawer open={open}/>.\n onOpenChange,\n onOpen,\n onClose,\n };\n};\n\n/**\n * Drawer IDs that should be considered full-cover drawers.\n *\n * When a full-cover drawer opens, the widget container height is transitioned to a fixed 590px height.\n * When the drawer closes, the widget container height is transitioned back to the natural height.\n */\nconst fullCoverDrawers = new Set<DrawerId>([\n \"trade-flow-drawer\",\n \"select-token-drawer-from\",\n \"select-token-drawer-to\",\n \"empty-select-token-drawer-from\",\n \"empty-select-token-drawer-to\",\n]);\n\nconst DRAWER_HEIGHT = 590;\nconst transition = \"height 0.3s ease-in-out\";\n\n/**\n * Hook that manages smooth height transitions for the main widget container when full-cover drawers open/close.\n *\n * When a full-cover drawer opens, this hook smoothly animates the widget height from its natural height\n * to a fixed 590px height. When the drawer closes, it animates back to the original height and then\n * resets to auto for natural sizing.\n *\n * This prevents jarring height jumps and provides a polished user experience during drawer interactions.\n *\n * @returns {Object} containerRef - React ref that should be attached to the widget container element\n *\n * @example\n * const { containerRef } = useDrawerContainerHeightTransition();\n * return <div ref={containerRef} className=\"widget-container\">...</div>\n */\nexport const useDrawerContainerHeightTransition = (): {\n containerRef: React.RefObject<HTMLDivElement | null>;\n drawerId: DrawerId | null;\n isDrawerFullCover: boolean;\n isDrawerOpen: boolean;\n} => {\n const containerRef = useRef<HTMLDivElement>(null);\n const previousHeightRef = useRef<number | null>(null);\n\n const currentDrawerId = useOpenDrawerId();\n const isDrawerFullCover =\n !!currentDrawerId && fullCoverDrawers.has(currentDrawerId);\n\n useLayoutEffect(() => {\n if (containerRef.current) {\n const container = containerRef.current;\n\n if (isDrawerFullCover) {\n // Get current height\n const currentHeight = container.scrollHeight;\n // widget will be fully covered by the drawer, won't see the transition\n const shouldSkipTransition = currentHeight <= DRAWER_HEIGHT;\n if (shouldSkipTransition) {\n return;\n }\n previousHeightRef.current = currentHeight;\n container.style.overflow = \"hidden\";\n\n // Set current height first (no transition)\n container.style.transition = \"none\";\n container.style.height = `${currentHeight}px`;\n\n // Use requestAnimationFrame to ensure the first height is painted\n requestAnimationFrame(() => {\n // Enable transition and set target height\n container.style.transition = transition;\n container.style.height = `${DRAWER_HEIGHT}px`;\n });\n } else if (previousHeightRef.current !== null) {\n // Only transition back if we have a previous height\n container.style.transition = transition;\n container.style.height = `${previousHeightRef.current}px`;\n previousHeightRef.current = null;\n\n // After transition completes, reset to auto\n const onTransitionEnd = (event: TransitionEvent) => {\n if (\n event.target === container &&\n event.propertyName === \"height\" &&\n event.type === \"transitionend\"\n ) {\n container.style.height = \"auto\";\n container.style.transition = \"\";\n container.style.overflow = \"\";\n\n container.removeEventListener(\"transitionend\", onTransitionEnd);\n }\n };\n container.addEventListener(\"transitionend\", onTransitionEnd);\n\n return () => {\n // cleanup just in case\n container.removeEventListener(\"transitionend\", onTransitionEnd);\n };\n }\n }\n }, [isDrawerFullCover]);\n\n return {\n containerRef,\n drawerId: currentDrawerId,\n isDrawerFullCover,\n isDrawerOpen: !!currentDrawerId,\n };\n};\n"],"names":["openDrawerAtom","atom","useOpenDrawerId","useAtomValue","useDrawerControls","t0","$","_c","onOpen","_onOpen","onClose","_onClose","drawerId","openDrawer","setOpenDrawer","useAtom","open","logger","useLogger","t1","info","t2","currentOpenDrawer","t3","open_0","onOpenChange","t4","fullCoverDrawers","Set","DRAWER_HEIGHT","transition","useDrawerContainerHeightTransition","containerRef","useRef","previousHeightRef","currentDrawerId","has","isDrawerFullCover","current","container","currentHeight","scrollHeight","shouldSkipTransition","style","overflow","height","requestAnimationFrame","onTransitionEnd","event","target","propertyName","type","removeEventListener","addEventListener","useLayoutEffect","isDrawerOpen"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDrawerControls.js","sources":["../../../../../src/components/widget/Drawer/state/useDrawerControls.ts"],"sourcesContent":["import { useLogger } from \"@/core/logger\";\nimport { atom, useAtom, useAtomValue } from \"jotai\";\nimport { useLayoutEffect, useRef } from \"react\";\n\nexport type DrawerControls = {\n open: boolean;\n onOpen: () => void;\n onClose: () => void;\n onOpenChange: (open: boolean) => void;\n};\n\nexport type DrawerId =\n | \"account-button-drawer\"\n | \"trade-parameters-drawer\"\n | \"receiver-address-drawer\"\n | `empty-select-token-drawer-${\"from\" | \"to\" | undefined}`\n | `select-token-drawer-${\"from\" | \"to\" | undefined}`\n | \"wrap-eth-drawer\"\n | \"connect-wallet-drawer\"\n | \"trade-flow-drawer\";\n\nexport const openDrawerAtom = atom<DrawerId | null>(null);\n\nexport const useOpenDrawerId = (): DrawerId | null => {\n return useAtomValue(openDrawerAtom);\n};\n\nexport const useDrawerControls = ({\n onOpen: _onOpen,\n onClose: _onClose,\n drawerId,\n}: {\n onOpen?: () => void;\n onClose?: () => void;\n drawerId: DrawerId;\n}): DrawerControls => {\n const [openDrawer, setOpenDrawer] = useAtom(openDrawerAtom);\n\n const open = openDrawer === drawerId;\n\n const logger = useLogger(\"DRAWER\");\n\n const onOpen = () => {\n logger.info(\"onOpen\", drawerId);\n setOpenDrawer(drawerId);\n _onOpen?.();\n };\n const onClose = () => {\n logger.info(\"onClose\", drawerId);\n setOpenDrawer((currentOpenDrawer) => {\n // only reset openDrawer if closing the drawer that is currently open,\n // so that we don't interfere with other drawers that are opening at the same time\n if (currentOpenDrawer === drawerId) {\n return null;\n }\n return currentOpenDrawer;\n });\n _onClose?.();\n };\n\n const onOpenChange = (open: boolean) => {\n if (open) {\n onOpen();\n } else {\n onClose();\n }\n };\n\n return {\n open,\n // expect onOpenChange not to be triggered for a controlled <Drawer open={open}/>.\n onOpenChange,\n onOpen,\n onClose,\n };\n};\n\n/**\n * Drawer IDs that should be considered full-cover drawers.\n *\n * When a full-cover drawer opens, the widget container height is transitioned to a fixed 590px height.\n * When the drawer closes, the widget container height is transitioned back to the natural height.\n */\nconst fullCoverDrawers = new Set<DrawerId>([\n \"trade-flow-drawer\",\n \"select-token-drawer-from\",\n \"select-token-drawer-to\",\n \"empty-select-token-drawer-from\",\n \"empty-select-token-drawer-to\",\n]);\n\nconst DRAWER_HEIGHT = 590;\nconst transition = \"height 0.3s ease-in-out\";\n\n/**\n * Hook that manages smooth height transitions for the main widget container when full-cover drawers open/close.\n *\n * When a full-cover drawer opens, this hook smoothly animates the widget height from its natural height\n * to a fixed 590px height. When the drawer closes, it animates back to the original height and then\n * resets to auto for natural sizing.\n *\n * This prevents jarring height jumps and provides a polished user experience during drawer interactions.\n *\n * @returns {Object} containerRef - React ref that should be attached to the widget container element\n *\n * @example\n * const { containerRef } = useDrawerContainerHeightTransition();\n * return <div ref={containerRef} className=\"widget-container\">...</div>\n */\nexport const useDrawerContainerHeightTransition = (): {\n containerRef: React.RefObject<HTMLDivElement | null>;\n drawerId: DrawerId | null;\n isDrawerFullCover: boolean;\n isDrawerOpen: boolean;\n} => {\n const containerRef = useRef<HTMLDivElement>(null);\n const previousHeightRef = useRef<number | null>(null);\n\n const currentDrawerId = useOpenDrawerId();\n const isDrawerFullCover =\n !!currentDrawerId && fullCoverDrawers.has(currentDrawerId);\n\n useLayoutEffect(() => {\n if (containerRef.current) {\n const container = containerRef.current;\n\n if (isDrawerFullCover) {\n // Get current height\n const currentHeight = container.scrollHeight;\n // widget will be fully covered by the drawer, won't see the transition\n const shouldSkipTransition = currentHeight <= DRAWER_HEIGHT;\n if (shouldSkipTransition) {\n return;\n }\n previousHeightRef.current = currentHeight;\n container.style.overflow = \"hidden\";\n\n // Set current height first (no transition)\n container.style.transition = \"none\";\n container.style.height = `${currentHeight}px`;\n\n // Use requestAnimationFrame to ensure the first height is painted\n requestAnimationFrame(() => {\n // Enable transition and set target height\n container.style.transition = transition;\n container.style.height = `${DRAWER_HEIGHT}px`;\n });\n } else if (previousHeightRef.current !== null) {\n // Only transition back if we have a previous height\n container.style.transition = transition;\n container.style.height = `${previousHeightRef.current}px`;\n previousHeightRef.current = null;\n\n // After transition completes, reset to auto\n const onTransitionEnd = (event: TransitionEvent) => {\n if (\n event.target === container &&\n event.propertyName === \"height\" &&\n event.type === \"transitionend\"\n ) {\n container.style.height = \"auto\";\n container.style.transition = \"\";\n container.style.overflow = \"\";\n\n container.removeEventListener(\"transitionend\", onTransitionEnd);\n }\n };\n container.addEventListener(\"transitionend\", onTransitionEnd);\n\n return () => {\n // cleanup just in case\n container.removeEventListener(\"transitionend\", onTransitionEnd);\n };\n }\n }\n }, [isDrawerFullCover]);\n\n return {\n containerRef,\n drawerId: currentDrawerId,\n isDrawerFullCover,\n isDrawerOpen: !!currentDrawerId,\n };\n};\n"],"names":["openDrawerAtom","atom","useOpenDrawerId","useAtomValue","useDrawerControls","t0","$","_c","onOpen","_onOpen","onClose","_onClose","drawerId","openDrawer","setOpenDrawer","useAtom","open","logger","useLogger","t1","info","t2","currentOpenDrawer","t3","open_0","onOpenChange","t4","fullCoverDrawers","Set","DRAWER_HEIGHT","transition","useDrawerContainerHeightTransition","containerRef","useRef","previousHeightRef","currentDrawerId","has","isDrawerFullCover","current","container","currentHeight","scrollHeight","shouldSkipTransition","style","overflow","height","requestAnimationFrame","onTransitionEnd","event","target","propertyName","type","removeEventListener","addEventListener","useLayoutEffect","isDrawerOpen"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/widget/ReceiverAddress/state/subscriptions.ts"],"names":[],"mappings":"AAaA,wBAAgB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/widget/ReceiverAddress/state/subscriptions.ts"],"names":[],"mappings":"AAaA,wBAAgB,yBAAyB,iDA2BxC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { wagmiConfig } from '../../../../lib/web3/wagmi/config.js';
|
|
2
2
|
import { watchAccount } from '@wagmi/core';
|
|
3
|
-
import { getDefaultStore } from 'jotai';
|
|
4
3
|
import { receiverAddressAtom } from './receiverAddressAtom.js';
|
|
5
4
|
import { queryClient } from '../../../../lib/queryClient.js';
|
|
6
5
|
import { isSupportedChainId } from '../../../../lib/web3/wagmi/utils.js';
|
|
7
6
|
import { constructIsContractAtAddressQueryKey, getIsContractAtAddress } from '../../../../hooks/getCode/query.js';
|
|
7
|
+
import { jotaiStore } from '../../../../core/inputs/state/store.js';
|
|
8
8
|
|
|
9
9
|
function subscribeToAccountChanges() {
|
|
10
10
|
return watchAccount(wagmiConfig, {
|
|
@@ -12,7 +12,6 @@ function subscribeToAccountChanges() {
|
|
|
12
12
|
address,
|
|
13
13
|
chainId
|
|
14
14
|
}) => {
|
|
15
|
-
const jotaiStore = getDefaultStore();
|
|
16
15
|
if (!address || chainId === void 0 || !isSupportedChainId(chainId)) {
|
|
17
16
|
jotaiStore.set(receiverAddressAtom, void 0);
|
|
18
17
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions.js","sources":["../../../../../src/components/widget/ReceiverAddress/state/subscriptions.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { watchAccount } from \"@wagmi/core\";\nimport {
|
|
1
|
+
{"version":3,"file":"subscriptions.js","sources":["../../../../../src/components/widget/ReceiverAddress/state/subscriptions.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { watchAccount } from \"@wagmi/core\";\nimport { receiverAddressAtom } from \"./receiverAddressAtom\";\n\nimport { queryClient } from \"@/lib/queryClient\";\n\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport {\n constructIsContractAtAddressQueryKey,\n getIsContractAtAddress,\n} from \"@/hooks/getCode/query\";\nimport { jotaiStore } from \"@/core/inputs/state/store\";\n\nexport function subscribeToAccountChanges() {\n return watchAccount(wagmiConfig, {\n onChange: async ({ address, chainId }) => {\n // reset the receiver address if the address is not valid or chainId is not supported\n if (!address || chainId === undefined || !isSupportedChainId(chainId)) {\n jotaiStore.set(receiverAddressAtom, undefined);\n return;\n }\n\n const queryKey = constructIsContractAtAddressQueryKey({\n chainId,\n address,\n });\n\n const isContractAtAddressResult = await queryClient.ensureQueryData({\n queryKey,\n queryFn: () =>\n getIsContractAtAddress({\n address,\n chainId,\n }),\n });\n\n if (isContractAtAddressResult?.isEOA)\n jotaiStore.set(receiverAddressAtom, address);\n },\n });\n}\n"],"names":["subscribeToAccountChanges","watchAccount","wagmiConfig","onChange","address","chainId","undefined","isSupportedChainId","jotaiStore","set","receiverAddressAtom","queryKey","constructIsContractAtAddressQueryKey","isContractAtAddressResult","queryClient","ensureQueryData","queryFn","getIsContractAtAddress","isEOA"],"mappings":";;;;;;;;AAaO,SAASA,yBAAAA,GAA4B;AAC1C,EAAA,OAAOC,aAAaC,WAAAA,EAAa;AAAA,IAC/BC,UAAU,OAAO;AAAA,MAAEC,OAAAA;AAAAA,MAASC;AAAAA,KAAQ,KAAM;AAExC,MAAA,IAAI,CAACD,OAAAA,IAAWC,OAAAA,KAAYC,UAAa,CAACC,kBAAAA,CAAmBF,OAAO,CAAA,EAAG;AACrEG,QAAAA,UAAAA,CAAWC,GAAAA,CAAIC,qBAAqBJ,MAAS,CAAA;AAC7C,QAAA;AAAA,MACF;AAEA,MAAA,MAAMK,WAAWC,oCAAAA,CAAqC;AAAA,QACpDP,OAAAA;AAAAA,QACAD;AAAAA,OACD,CAAA;AAED,MAAA,MAAMS,yBAAAA,GAA4B,MAAMC,WAAAA,CAAYC,eAAAA,CAAgB;AAAA,QAClEJ,QAAAA;AAAAA,QACAK,OAAAA,EAASA,MACPC,sBAAAA,CAAuB;AAAA,UACrBb,OAAAA;AAAAA,UACAC;AAAAA,SACD;AAAA,OACJ,CAAA;AAED,MAAA,IAAIQ,yBAAAA,EAA2BK,KAAAA,EAC7BV,UAAAA,CAAWC,GAAAA,CAAIC,qBAAqBN,OAAO,CAAA;AAAA,IAC/C;AAAA,GACD,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwapModeSwitcherExpandable.d.ts","sourceRoot":"","sources":["../../../../src/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"SwapModeSwitcherExpandable.d.ts","sourceRoot":"","sources":["../../../../src/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAW/D,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAC/C,+BAA+B,CA+BhC,CAAC"}
|
|
@@ -12,6 +12,9 @@ import { useSwapPrices } from '../../../hooks/swap/prices/useSwapPrices.js';
|
|
|
12
12
|
import { formatFiatPrice } from '../../../lib/utils/formatFiatPrice.js';
|
|
13
13
|
import { useIsCrossChain } from '../../../core/state/isCrosschainAtom.js';
|
|
14
14
|
import { useGlobalDeltaEnabled } from '../../../hooks/useGlobalDeltaEnabled.js';
|
|
15
|
+
import { DexesList } from '../DexesList/DexesList.js';
|
|
16
|
+
import { useWidgetTokens } from '../../../core/inputs/state/selectedTokenAtom.js';
|
|
17
|
+
import { ErrorBoundary } from 'react-error-boundary';
|
|
15
18
|
|
|
16
19
|
const SwapModeSwitcherExpandable = (t0) => {
|
|
17
20
|
const $ = distExports.c(11);
|
|
@@ -51,9 +54,12 @@ const SwapModeSwitcherExpandable = (t0) => {
|
|
|
51
54
|
}
|
|
52
55
|
let t5;
|
|
53
56
|
if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
|
|
54
|
-
t5 = /* @__PURE__ */ jsxs(AccordionContent, {
|
|
55
|
-
/* @__PURE__ */
|
|
56
|
-
|
|
57
|
+
t5 = /* @__PURE__ */ jsxs(AccordionContent, { children: [
|
|
58
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4", children: [
|
|
59
|
+
/* @__PURE__ */ jsx(DeltaModeItem, {}),
|
|
60
|
+
/* @__PURE__ */ jsx(MarketModeItem, {})
|
|
61
|
+
] }),
|
|
62
|
+
/* @__PURE__ */ jsx(DexesListWithErrorBoundary, {})
|
|
57
63
|
] });
|
|
58
64
|
$[5] = t5;
|
|
59
65
|
} else {
|
|
@@ -95,7 +101,7 @@ const SwapModeItem = (t0) => {
|
|
|
95
101
|
const t1 = swapMode === mode;
|
|
96
102
|
let t2;
|
|
97
103
|
if ($[0] !== classes?.root || $[1] !== t1) {
|
|
98
|
-
t2 = cn("py-[14px] px-4 flex flex-1 gap-3 items-center bg-contrast-7 dark:bg-contrast-
|
|
104
|
+
t2 = cn("py-[14px] px-4 flex flex-1 gap-3 items-center bg-contrast-7 dark:bg-contrast-3 cursor-pointer rounded-md", {
|
|
99
105
|
"outline outline-primary-azul-1": t1
|
|
100
106
|
}, classes?.root);
|
|
101
107
|
$[0] = classes?.root;
|
|
@@ -315,6 +321,40 @@ const MarketModeItem = () => {
|
|
|
315
321
|
}
|
|
316
322
|
return t5;
|
|
317
323
|
};
|
|
324
|
+
const DexesListWithErrorBoundary = () => {
|
|
325
|
+
const $ = distExports.c(5);
|
|
326
|
+
let t0;
|
|
327
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
328
|
+
t0 = {
|
|
329
|
+
enabled: false
|
|
330
|
+
};
|
|
331
|
+
$[0] = t0;
|
|
332
|
+
} else {
|
|
333
|
+
t0 = $[0];
|
|
334
|
+
}
|
|
335
|
+
const {
|
|
336
|
+
priceMode,
|
|
337
|
+
market
|
|
338
|
+
} = useSwapPrices(t0);
|
|
339
|
+
const {
|
|
340
|
+
tokenFrom,
|
|
341
|
+
tokenTo
|
|
342
|
+
} = useWidgetTokens();
|
|
343
|
+
if (priceMode !== "market" || !market.price || !tokenTo) {
|
|
344
|
+
return null;
|
|
345
|
+
}
|
|
346
|
+
let t1;
|
|
347
|
+
if ($[1] !== market.price || $[2] !== tokenFrom || $[3] !== tokenTo) {
|
|
348
|
+
t1 = /* @__PURE__ */ jsx(ErrorBoundary, { fallback: null, children: /* @__PURE__ */ jsx(DexesList, { marketPrice: market.price, tokenFrom, tokenTo }) });
|
|
349
|
+
$[1] = market.price;
|
|
350
|
+
$[2] = tokenFrom;
|
|
351
|
+
$[3] = tokenTo;
|
|
352
|
+
$[4] = t1;
|
|
353
|
+
} else {
|
|
354
|
+
t1 = $[4];
|
|
355
|
+
}
|
|
356
|
+
return t1;
|
|
357
|
+
};
|
|
318
358
|
|
|
319
359
|
export { SwapModeSwitcherExpandable };
|
|
320
360
|
//# sourceMappingURL=SwapModeSwitcherExpandable.js.map
|