@lifi/widget 3.4.0-beta.4 → 3.4.0

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.
Files changed (123) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/_esm/components/AppContainer.d.ts +0 -1
  3. package/_esm/components/AppContainer.js +53 -24
  4. package/_esm/components/AppContainer.js.map +1 -1
  5. package/_esm/components/ChainSelect/useChainSelect.js +10 -2
  6. package/_esm/components/ChainSelect/useChainSelect.js.map +1 -1
  7. package/_esm/components/Header/Header.d.ts +2 -0
  8. package/_esm/components/Header/Header.js +8 -1
  9. package/_esm/components/Header/Header.js.map +1 -1
  10. package/_esm/components/Header/Header.style.d.ts +3 -0
  11. package/_esm/components/Header/Header.style.js +27 -11
  12. package/_esm/components/Header/Header.style.js.map +1 -1
  13. package/_esm/components/Routes/RoutesExpanded.js +3 -3
  14. package/_esm/components/Routes/RoutesExpanded.js.map +1 -1
  15. package/_esm/components/Routes/RoutesExpanded.style.d.ts +8 -1
  16. package/_esm/components/Routes/RoutesExpanded.style.js +22 -5
  17. package/_esm/components/Routes/RoutesExpanded.style.js.map +1 -1
  18. package/_esm/components/TokenList/TokenList.js +1 -3
  19. package/_esm/components/TokenList/TokenList.js.map +1 -1
  20. package/_esm/components/TokenList/types.d.ts +1 -0
  21. package/_esm/components/TokenList/useTokenSelect.js +7 -2
  22. package/_esm/components/TokenList/useTokenSelect.js.map +1 -1
  23. package/_esm/config/coinbase.d.ts +2 -0
  24. package/_esm/config/coinbase.js +6 -0
  25. package/_esm/config/coinbase.js.map +1 -0
  26. package/_esm/config/constants.d.ts +1 -0
  27. package/_esm/config/constants.js +2 -0
  28. package/_esm/config/constants.js.map +1 -0
  29. package/_esm/config/metaMask.d.ts +2 -0
  30. package/_esm/config/metaMask.js +11 -0
  31. package/_esm/config/metaMask.js.map +1 -0
  32. package/_esm/config/version.d.ts +1 -1
  33. package/_esm/config/version.js +1 -1
  34. package/_esm/config/version.js.map +1 -1
  35. package/_esm/config/walletConnect.d.ts +2 -1
  36. package/_esm/config/walletConnect.js +3 -1
  37. package/_esm/config/walletConnect.js.map +1 -1
  38. package/_esm/hooks/{useContentHeight.d.ts → useSetContentHeight.d.ts} +0 -1
  39. package/_esm/hooks/useSetContentHeight.js +19 -0
  40. package/_esm/hooks/useSetContentHeight.js.map +1 -0
  41. package/_esm/hooks/useWallets.d.ts +6 -0
  42. package/_esm/hooks/useWallets.js +80 -0
  43. package/_esm/hooks/useWallets.js.map +1 -0
  44. package/_esm/i18n/en.json +1 -0
  45. package/_esm/index.d.ts +2 -0
  46. package/_esm/index.js +2 -0
  47. package/_esm/index.js.map +1 -1
  48. package/_esm/pages/MainPage/MainPage.js +2 -2
  49. package/_esm/pages/MainPage/MainPage.js.map +1 -1
  50. package/_esm/pages/SelectTokenPage/SelectTokenPage.js +8 -9
  51. package/_esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
  52. package/_esm/pages/SelectTokenPage/useTokenListHeight.d.ts +12 -0
  53. package/_esm/pages/SelectTokenPage/useTokenListHeight.js +70 -0
  54. package/_esm/pages/SelectTokenPage/useTokenListHeight.js.map +1 -0
  55. package/_esm/pages/SelectWalletPage/EVMListItemButton.d.ts +2 -1
  56. package/_esm/pages/SelectWalletPage/EVMListItemButton.js +2 -1
  57. package/_esm/pages/SelectWalletPage/EVMListItemButton.js.map +1 -1
  58. package/_esm/pages/SelectWalletPage/SelectWalletPage.js +7 -44
  59. package/_esm/pages/SelectWalletPage/SelectWalletPage.js.map +1 -1
  60. package/_esm/pages/SendToWallet/BookmarksPage.js +4 -2
  61. package/_esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
  62. package/_esm/pages/SendToWallet/SendToWalletPage.js +6 -4
  63. package/_esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
  64. package/_esm/pages/SendToWallet/SendToWalletPage.style.d.ts +10 -0
  65. package/_esm/pages/SendToWallet/SendToWalletPage.style.js +17 -5
  66. package/_esm/pages/SendToWallet/SendToWalletPage.style.js.map +1 -1
  67. package/_esm/pages/TransactionDetailsPage/TransactionDetailsPage.js +0 -1
  68. package/_esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
  69. package/_esm/pages/TransactionPage/ExchangeRateBottomSheet.js +1 -1
  70. package/_esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
  71. package/_esm/pages/TransactionPage/StatusBottomSheet.js +1 -1
  72. package/_esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
  73. package/_esm/pages/TransactionPage/TokenValueBottomSheet.js +1 -1
  74. package/_esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  75. package/_esm/providers/WalletProvider/EVMBaseProvider.js +7 -9
  76. package/_esm/providers/WalletProvider/EVMBaseProvider.js.map +1 -1
  77. package/_esm/themes/createTheme.js +1 -0
  78. package/_esm/themes/createTheme.js.map +1 -1
  79. package/_esm/themes/types.d.ts +2 -0
  80. package/_esm/types/widget.d.ts +20 -15
  81. package/_esm/types/widget.js.map +1 -1
  82. package/components/AppContainer.tsx +70 -24
  83. package/components/ChainSelect/useChainSelect.ts +11 -3
  84. package/components/Header/Header.style.ts +28 -11
  85. package/components/Header/Header.tsx +11 -0
  86. package/components/Routes/RoutesExpanded.style.ts +30 -5
  87. package/components/Routes/RoutesExpanded.tsx +12 -5
  88. package/components/TokenList/TokenList.tsx +1 -2
  89. package/components/TokenList/types.ts +1 -0
  90. package/components/TokenList/useTokenSelect.ts +8 -2
  91. package/config/coinbase.ts +7 -0
  92. package/config/constants.ts +1 -0
  93. package/config/metaMask.ts +13 -0
  94. package/config/version.ts +1 -1
  95. package/config/walletConnect.ts +5 -1
  96. package/hooks/useSetContentHeight.ts +24 -0
  97. package/hooks/useWallets.ts +147 -0
  98. package/i18n/en.json +1 -0
  99. package/index.ts +2 -0
  100. package/package.json +11 -11
  101. package/pages/MainPage/MainPage.tsx +3 -2
  102. package/pages/SelectTokenPage/SelectTokenPage.tsx +16 -20
  103. package/pages/SelectTokenPage/useTokenListHeight.ts +112 -0
  104. package/pages/SelectWalletPage/EVMListItemButton.tsx +16 -7
  105. package/pages/SelectWalletPage/SelectWalletPage.tsx +7 -65
  106. package/pages/SendToWallet/BookmarksPage.tsx +12 -6
  107. package/pages/SendToWallet/SendToWalletPage.style.tsx +25 -5
  108. package/pages/SendToWallet/SendToWalletPage.tsx +42 -33
  109. package/pages/TransactionDetailsPage/TransactionDetailsPage.tsx +0 -1
  110. package/pages/TransactionPage/ExchangeRateBottomSheet.tsx +1 -1
  111. package/pages/TransactionPage/StatusBottomSheet.tsx +1 -1
  112. package/pages/TransactionPage/TokenValueBottomSheet.tsx +1 -1
  113. package/providers/WalletProvider/EVMBaseProvider.tsx +7 -9
  114. package/themes/createTheme.ts +1 -0
  115. package/themes/types.ts +2 -0
  116. package/types/widget.ts +24 -14
  117. package/_esm/hooks/useContentHeight.js +0 -40
  118. package/_esm/hooks/useContentHeight.js.map +0 -1
  119. package/_esm/pages/SelectWalletPage/utils.d.ts +0 -3
  120. package/_esm/pages/SelectWalletPage/utils.js +0 -18
  121. package/_esm/pages/SelectWalletPage/utils.js.map +0 -1
  122. package/hooks/useContentHeight.ts +0 -53
  123. package/pages/SelectWalletPage/utils.ts +0 -26
@@ -12,9 +12,9 @@ import { BottomSheet } from '../../components/BottomSheet/BottomSheet.js';
12
12
  import type { BottomSheetBase } from '../../components/BottomSheet/types.js';
13
13
  import { Token } from '../../components/Token/Token.js';
14
14
  import { useAvailableChains } from '../../hooks/useAvailableChains.js';
15
- import { useSetContentHeight } from '../../hooks/useContentHeight.js';
16
15
  import { useNavigateBack } from '../../hooks/useNavigateBack.js';
17
16
  import { getProcessMessage } from '../../hooks/useProcessMessage.js';
17
+ import { useSetContentHeight } from '../../hooks/useSetContentHeight.js';
18
18
  import { useTokenBalance } from '../../hooks/useTokenBalance.js';
19
19
  import { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js';
20
20
  import { useFieldActions } from '../../stores/form/useFieldActions.js';
@@ -7,7 +7,7 @@ import { useTranslation } from 'react-i18next';
7
7
  import { BottomSheet } from '../../components/BottomSheet/BottomSheet.js';
8
8
  import type { BottomSheetBase } from '../../components/BottomSheet/types.js';
9
9
  import { FeeBreakdownTooltip } from '../../components/FeeBreakdownTooltip.js';
10
- import { useSetContentHeight } from '../../hooks/useContentHeight.js';
10
+ import { useSetContentHeight } from '../../hooks/useSetContentHeight.js';
11
11
  import { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js';
12
12
  import { CenterContainer, IconCircle } from './StatusBottomSheet.style.js';
13
13
  import { calculateValueLossPercentage } from './utils.js';
@@ -5,9 +5,10 @@ import {
5
5
  } from '@lifi/wallet-management';
6
6
  import { useRef, type FC, type PropsWithChildren } from 'react';
7
7
  import { WagmiProvider } from 'wagmi';
8
- import { defaultWalletConnectProjectId } from '../../config/walletConnect.js';
8
+ import { defaultCoinbaseConfig } from '../../config/coinbase.js';
9
+ import { defaultMetaMaskConfig } from '../../config/metaMask.js';
10
+ import { defaultWalletConnectConfig } from '../../config/walletConnect.js';
9
11
  import { useAvailableChains } from '../../hooks/useAvailableChains.js';
10
- import { LiFiToolLogo } from '../../icons/lifi.js';
11
12
  import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js';
12
13
 
13
14
  export const EVMBaseProvider: FC<PropsWithChildren> = ({ children }) => {
@@ -17,16 +18,13 @@ export const EVMBaseProvider: FC<PropsWithChildren> = ({ children }) => {
17
18
 
18
19
  if (!wagmi.current) {
19
20
  wagmi.current = createDefaultWagmiConfig({
20
- walletConnect: walletConfig?.walletConnect ?? {
21
- projectId: defaultWalletConnectProjectId,
22
- },
23
- coinbase: walletConfig?.coinbase ?? {
24
- appName: 'LI.FI',
25
- appLogoUrl: LiFiToolLogo,
26
- },
21
+ coinbase: walletConfig?.coinbase ?? defaultCoinbaseConfig,
22
+ metaMask: walletConfig?.metaMask ?? defaultMetaMaskConfig,
23
+ walletConnect: walletConfig?.walletConnect ?? defaultWalletConnectConfig,
27
24
  wagmiConfig: {
28
25
  ssr: true,
29
26
  },
27
+ lazy: true,
30
28
  });
31
29
  }
32
30
 
@@ -65,6 +65,7 @@ export const createTheme = (
65
65
 
66
66
  return createMuiTheme({
67
67
  container: widgetTheme.container,
68
+ header: widgetTheme.header,
68
69
  navigation: {
69
70
  edge: true,
70
71
  ...widgetTheme.navigation,
package/themes/types.ts CHANGED
@@ -26,11 +26,13 @@ declare module '@mui/material/styles' {
26
26
  interface Theme {
27
27
  shape: Shape;
28
28
  container: CSSProperties;
29
+ header: CSSProperties;
29
30
  navigation: NavigationProps;
30
31
  }
31
32
  interface ThemeOptions {
32
33
  shape?: Partial<Shape>;
33
34
  container?: CSSProperties;
35
+ header?: CSSProperties;
34
36
  navigation?: NavigationProps;
35
37
  }
36
38
  interface ComponentNameToClassKey {
package/types/widget.ts CHANGED
@@ -18,6 +18,7 @@ import type {
18
18
  import type { TypographyOptions } from '@mui/material/styles/createTypography.js';
19
19
  import type {
20
20
  CoinbaseWalletParameters,
21
+ MetaMaskParameters,
21
22
  WalletConnectParameters,
22
23
  } from '@wagmi/connectors';
23
24
  import type { CSSProperties, ReactNode, RefObject } from 'react';
@@ -53,6 +54,7 @@ export type WidgetThemeComponents = Pick<
53
54
  | 'MuiInputCard'
54
55
  | 'MuiTabs'
55
56
  >;
57
+
56
58
  export type WidgetTheme = {
57
59
  palette?: Pick<
58
60
  PaletteOptions,
@@ -62,6 +64,7 @@ export type WidgetTheme = {
62
64
  typography?: TypographyOptions;
63
65
  components?: WidgetThemeComponents;
64
66
  container?: CSSProperties;
67
+ header?: CSSProperties;
65
68
  playground?: CSSProperties;
66
69
  navigation?: NavigationProps;
67
70
  };
@@ -96,6 +99,7 @@ export interface WidgetWalletConfig {
96
99
  onConnect?(): void;
97
100
  walletConnect?: WalletConnectParameters;
98
101
  coinbase?: CoinbaseWalletParameters;
102
+ metaMask?: MetaMaskParameters;
99
103
  }
100
104
 
101
105
  export interface WidgetSDKConfig
@@ -138,7 +142,7 @@ export interface WidgetFeeConfig {
138
142
  * @param params Object containing the fee calculation parameters
139
143
  * @returns A promise that resolves to the calculated fee as a number (e.g., 0.03 represents a 3% fee)
140
144
  */
141
- calculateFee?(params: CalculateFeeParams): Promise<number>;
145
+ calculateFee?(params: CalculateFeeParams): Promise<number | undefined>;
142
146
  }
143
147
 
144
148
  export interface ToAddress {
@@ -153,6 +157,22 @@ export interface AllowDeny<T> {
153
157
  deny?: T[];
154
158
  }
155
159
 
160
+ export type WidgetChains = {
161
+ from?: AllowDeny<number>;
162
+ to?: AllowDeny<number>;
163
+ types?: AllowDeny<ChainType>;
164
+ } & AllowDeny<number>;
165
+
166
+ export type WidgetTokens = {
167
+ featured?: StaticToken[];
168
+ include?: Token[];
169
+ popular?: StaticToken[];
170
+ } & AllowDeny<BaseToken>;
171
+
172
+ export type WidgetLanguages = {
173
+ default?: LanguageKey;
174
+ } & AllowDeny<LanguageKey>;
175
+
156
176
  export interface WidgetConfig {
157
177
  fromChain?: number;
158
178
  toChain?: number;
@@ -201,19 +221,9 @@ export interface WidgetConfig {
201
221
 
202
222
  bridges?: AllowDeny<string>;
203
223
  exchanges?: AllowDeny<string>;
204
- chains?: {
205
- from?: AllowDeny<number>;
206
- to?: AllowDeny<number>;
207
- types?: AllowDeny<ChainType>;
208
- } & AllowDeny<number>;
209
- tokens?: {
210
- featured?: StaticToken[];
211
- include?: Token[];
212
- popular?: StaticToken[];
213
- } & AllowDeny<BaseToken>;
214
- languages?: {
215
- default?: LanguageKey;
216
- } & AllowDeny<LanguageKey>;
224
+ chains?: WidgetChains;
225
+ tokens?: WidgetTokens;
226
+ languages?: WidgetLanguages;
217
227
  languageResources?: LanguageResources;
218
228
  }
219
229
 
@@ -1,40 +0,0 @@
1
- import { useLayoutEffect, useState } from 'react';
2
- import { ElementId, createElementId } from '../utils/elements.js';
3
- import { useDefaultElementId } from './useDefaultElementId.js';
4
- import { getScrollableContainer } from './useScrollableContainer.js';
5
- const getContentHeight = (elementId) => {
6
- const containerElement = document.getElementById(createElementId(ElementId.ScrollableContainer, elementId));
7
- const headerElement = document.getElementById(createElementId(ElementId.Header, elementId));
8
- if (!containerElement || !headerElement) {
9
- console.warn(`Can't find ${ElementId.ScrollableContainer} or ${ElementId.Header} id.`);
10
- return 0;
11
- }
12
- const { height: containerHeight } = containerElement.getBoundingClientRect();
13
- const { height: headerHeight } = headerElement.getBoundingClientRect();
14
- return containerHeight - headerHeight;
15
- };
16
- export const useContentHeight = () => {
17
- const elementId = useDefaultElementId();
18
- const [contentHeight, setContentHeight] = useState(0);
19
- useLayoutEffect(() => {
20
- setContentHeight(getContentHeight(elementId));
21
- // eslint-disable-next-line react-hooks/exhaustive-deps
22
- }, []);
23
- return contentHeight;
24
- };
25
- export const useSetContentHeight = (ref) => {
26
- const elementId = useDefaultElementId();
27
- useLayoutEffect(() => {
28
- const scrollableContainer = getScrollableContainer(elementId);
29
- if (!scrollableContainer ||
30
- !ref.current ||
31
- ref.current?.clientHeight <= scrollableContainer?.clientHeight) {
32
- return;
33
- }
34
- scrollableContainer.style.height = `${ref.current.clientHeight}px`;
35
- return () => {
36
- scrollableContainer.style.removeProperty('height');
37
- };
38
- }, [elementId, ref]);
39
- };
40
- //# sourceMappingURL=useContentHeight.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useContentHeight.js","sourceRoot":"","sources":["../../hooks/useContentHeight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAE,EAAE;IAC7C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAC9C,eAAe,CAAC,SAAS,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAC1D,CAAC;IACF,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAC3C,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAC7C,CAAC;IACF,IAAI,CAAC,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CACV,cAAc,SAAS,CAAC,mBAAmB,OAAO,SAAS,CAAC,MAAM,MAAM,CACzE,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;IAC7E,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;IACvE,OAAO,eAAe,GAAG,YAAY,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAC9D,eAAe,CAAC,GAAG,EAAE;QACnB,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAA8C,EAC9C,EAAE;IACF,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC9D,IACE,CAAC,mBAAmB;YACpB,CAAC,GAAG,CAAC,OAAO;YACZ,GAAG,CAAC,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,YAAY,EAC9D,CAAC;YACD,OAAO;QACT,CAAC;QACD,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC;QACnE,OAAO,GAAG,EAAE;YACV,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Wallet } from '@solana/wallet-adapter-react';
2
- import type { Connector } from 'wagmi';
3
- export declare const walletComparator: (a: Connector | Wallet, b: Connector | Wallet) => number;
@@ -1,18 +0,0 @@
1
- import { getWalletPriority } from '@lifi/wallet-management';
2
- export const walletComparator = (a, b) => {
3
- let aId = a.id || a.adapter?.name;
4
- let bId = b.id || b.adapter?.name;
5
- const priorityA = getWalletPriority(aId);
6
- const priorityB = getWalletPriority(bId);
7
- if (priorityA !== priorityB) {
8
- return priorityA - priorityB;
9
- }
10
- if (aId < bId) {
11
- return -1;
12
- }
13
- if (aId > bId) {
14
- return 1;
15
- }
16
- return 0;
17
- };
18
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../pages/SelectWalletPage/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAI5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,CAAqB,EACrB,CAAqB,EACrB,EAAE;IACF,IAAI,GAAG,GAAI,CAAe,CAAC,EAAE,IAAK,CAAY,CAAC,OAAO,EAAE,IAAI,CAAC;IAC7D,IAAI,GAAG,GAAI,CAAe,CAAC,EAAE,IAAK,CAAY,CAAC,OAAO,EAAE,IAAI,CAAC;IAE7D,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAEzC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC"}
@@ -1,53 +0,0 @@
1
- import type { MutableRefObject } from 'react';
2
- import { useLayoutEffect, useState } from 'react';
3
- import { ElementId, createElementId } from '../utils/elements.js';
4
- import { useDefaultElementId } from './useDefaultElementId.js';
5
- import { getScrollableContainer } from './useScrollableContainer.js';
6
-
7
- const getContentHeight = (elementId: string) => {
8
- const containerElement = document.getElementById(
9
- createElementId(ElementId.ScrollableContainer, elementId),
10
- );
11
- const headerElement = document.getElementById(
12
- createElementId(ElementId.Header, elementId),
13
- );
14
- if (!containerElement || !headerElement) {
15
- console.warn(
16
- `Can't find ${ElementId.ScrollableContainer} or ${ElementId.Header} id.`,
17
- );
18
- return 0;
19
- }
20
- const { height: containerHeight } = containerElement.getBoundingClientRect();
21
- const { height: headerHeight } = headerElement.getBoundingClientRect();
22
- return containerHeight - headerHeight;
23
- };
24
-
25
- export const useContentHeight = () => {
26
- const elementId = useDefaultElementId();
27
- const [contentHeight, setContentHeight] = useState<number>(0);
28
- useLayoutEffect(() => {
29
- setContentHeight(getContentHeight(elementId));
30
- // eslint-disable-next-line react-hooks/exhaustive-deps
31
- }, []);
32
- return contentHeight;
33
- };
34
-
35
- export const useSetContentHeight = (
36
- ref: MutableRefObject<HTMLElement | undefined>,
37
- ) => {
38
- const elementId = useDefaultElementId();
39
- useLayoutEffect(() => {
40
- const scrollableContainer = getScrollableContainer(elementId);
41
- if (
42
- !scrollableContainer ||
43
- !ref.current ||
44
- ref.current?.clientHeight <= scrollableContainer?.clientHeight
45
- ) {
46
- return;
47
- }
48
- scrollableContainer.style.height = `${ref.current.clientHeight}px`;
49
- return () => {
50
- scrollableContainer.style.removeProperty('height');
51
- };
52
- }, [elementId, ref]);
53
- };
@@ -1,26 +0,0 @@
1
- import { getWalletPriority } from '@lifi/wallet-management';
2
- import type { Wallet } from '@solana/wallet-adapter-react';
3
- import type { Connector } from 'wagmi';
4
-
5
- export const walletComparator = (
6
- a: Connector | Wallet,
7
- b: Connector | Wallet,
8
- ) => {
9
- let aId = (a as Connector).id || (a as Wallet).adapter?.name;
10
- let bId = (b as Connector).id || (b as Wallet).adapter?.name;
11
-
12
- const priorityA = getWalletPriority(aId);
13
- const priorityB = getWalletPriority(bId);
14
-
15
- if (priorityA !== priorityB) {
16
- return priorityA - priorityB;
17
- }
18
-
19
- if (aId < bId) {
20
- return -1;
21
- }
22
- if (aId > bId) {
23
- return 1;
24
- }
25
- return 0;
26
- };