@rango-dev/widget-embedded 0.20.1-next.20 → 0.20.1-next.22
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/AppRouter.d.ts.map +1 -1
- package/dist/components/AppRoutes.d.ts.map +1 -1
- package/dist/components/BlockchainList/BlockchainList.styles.d.ts +161 -1
- package/dist/components/BlockchainList/BlockchainList.styles.d.ts.map +1 -1
- package/dist/components/HeaderButtons/HeaderButtons.types.d.ts +0 -1
- package/dist/components/HeaderButtons/HeaderButtons.types.d.ts.map +1 -1
- package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
- package/dist/components/Layout/Layout.d.ts +2 -3
- package/dist/components/Layout/Layout.d.ts.map +1 -1
- package/dist/components/Layout/Layout.helpers.d.ts +2 -0
- package/dist/components/Layout/Layout.helpers.d.ts.map +1 -0
- package/dist/components/Layout/Layout.styles.d.ts +2 -4
- package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
- package/dist/components/Layout/Layout.types.d.ts +6 -3
- package/dist/components/Layout/Layout.types.d.ts.map +1 -1
- package/dist/components/Layout/PageContainer.d.ts +166 -0
- package/dist/components/Layout/PageContainer.d.ts.map +1 -0
- package/dist/components/Layout/ScrollableArea.d.ts +164 -0
- package/dist/components/Layout/ScrollableArea.d.ts.map +1 -0
- package/dist/components/Layout/index.d.ts +2 -0
- package/dist/components/Layout/index.d.ts.map +1 -1
- package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
- package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -1
- package/dist/components/SettingsContainer/SettingsContainer.style.d.ts +0 -161
- package/dist/components/SettingsContainer/SettingsContainer.style.d.ts.map +1 -1
- package/dist/components/SettingsContainer/index.d.ts +1 -1
- package/dist/components/SettingsContainer/index.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.styles.d.ts +161 -1
- package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
- package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
- package/dist/constants/searchParams.d.ts +6 -6
- package/dist/constants/searchParams.d.ts.map +1 -1
- package/dist/containers/App/App.styles.d.ts.map +1 -1
- package/dist/containers/QuoteInfo/QuoteInfo.d.ts +1 -1
- package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -1
- package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +0 -324
- package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -1
- package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +0 -7
- package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -1
- package/dist/containers/Wallets/Wallets.d.ts.map +1 -1
- package/dist/hooks/useSwapInput.d.ts.map +1 -1
- package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
- package/dist/hooks/useSyncUrlAndStore/index.d.ts +2 -0
- package/dist/hooks/useSyncUrlAndStore/index.d.ts.map +1 -0
- package/dist/hooks/useSyncUrlAndStore/useSyncUrlAndStore.d.ts +2 -0
- package/dist/hooks/useSyncUrlAndStore/useSyncUrlAndStore.d.ts.map +1 -0
- package/dist/hooks/useSyncUrlAndStore/useSyncUrlAndStore.helpers.d.ts +4 -0
- package/dist/hooks/useSyncUrlAndStore/useSyncUrlAndStore.helpers.d.ts.map +1 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +4 -4
- package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
- package/dist/pages/HistoryPage.d.ts.map +1 -1
- package/dist/pages/Home.d.ts.map +1 -1
- package/dist/pages/LanguagePage.d.ts.map +1 -1
- package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
- package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
- package/dist/pages/SettingsPage.d.ts.map +1 -1
- package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
- package/dist/pages/ThemePage.d.ts.map +1 -1
- package/dist/pages/WalletsPage.d.ts.map +1 -1
- package/dist/utils/quote.d.ts +0 -1
- package/dist/utils/quote.d.ts.map +1 -1
- package/dist/utils/ui.d.ts +2 -0
- package/dist/utils/ui.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/components/AppRouter.tsx +1 -8
- package/src/components/AppRoutes.tsx +11 -0
- package/src/components/BlockchainList/BlockchainList.styles.ts +4 -3
- package/src/components/BlockchainList/BlockchainList.tsx +1 -1
- package/src/components/HeaderButtons/HeaderButtons.types.ts +0 -1
- package/src/components/HeaderButtons/HomeButtons.tsx +1 -2
- package/src/components/Layout/Layout.helpers.ts +16 -0
- package/src/components/Layout/Layout.styles.ts +17 -31
- package/src/components/Layout/Layout.tsx +24 -27
- package/src/components/Layout/Layout.types.ts +9 -8
- package/src/components/Layout/PageContainer.tsx +24 -0
- package/src/components/Layout/ScrollableArea.tsx +11 -0
- package/src/components/Layout/index.ts +2 -0
- package/src/components/NotificationContent/NotificationContent.tsx +0 -3
- package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts +0 -1
- package/src/components/SettingsContainer/SettingsContainer.style.ts +0 -5
- package/src/components/SettingsContainer/index.ts +0 -1
- package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +0 -1
- package/src/components/SwapDetails/SwapDetails.styles.ts +5 -6
- package/src/components/SwapDetails/SwapDetails.tsx +3 -5
- package/src/components/TokenList/TokenList.styles.ts +2 -0
- package/src/components/TokenList/TokenList.tsx +1 -1
- package/src/constants/searchParams.ts +6 -6
- package/src/containers/App/App.styles.ts +2 -0
- package/src/containers/QuoteInfo/QuoteInfo.styles.ts +0 -15
- package/src/containers/QuoteInfo/QuoteInfo.tsx +30 -77
- package/src/containers/QuoteInfo/QuoteInfo.types.ts +0 -7
- package/src/containers/Wallets/Wallets.tsx +0 -2
- package/src/hooks/useSwapInput.ts +6 -1
- package/src/hooks/useSyncStoresWithConfig.ts +3 -17
- package/src/hooks/useSyncUrlAndStore/index.ts +1 -0
- package/src/hooks/useSyncUrlAndStore/useSyncUrlAndStore.helpers.ts +35 -0
- package/src/hooks/useSyncUrlAndStore/useSyncUrlAndStore.ts +135 -0
- package/src/pages/ConfirmSwapPage.tsx +52 -47
- package/src/pages/HistoryPage.tsx +5 -17
- package/src/pages/Home.tsx +44 -43
- package/src/pages/LanguagePage.tsx +3 -4
- package/src/pages/LiquiditySourcePage.tsx +3 -4
- package/src/pages/SelectBlockchainPage.tsx +38 -38
- package/src/pages/SelectSwapItemsPage.tsx +40 -38
- package/src/pages/SettingsPage.tsx +3 -4
- package/src/pages/SwapDetailsPage.tsx +21 -7
- package/src/pages/ThemePage.tsx +3 -4
- package/src/pages/WalletsPage.tsx +12 -13
- package/src/utils/quote.ts +0 -27
- package/src/utils/ui.ts +20 -0
- package/dist/components/UpdateUrl.d.ts +0 -2
- package/dist/components/UpdateUrl.d.ts.map +0 -1
- package/dist/store/ui.d.ts +0 -22
- package/dist/store/ui.d.ts.map +0 -1
- package/src/components/UpdateUrl.tsx +0 -158
- package/src/store/ui.ts +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmSwapPage.d.ts","sourceRoot":"","sources":["../../src/pages/ConfirmSwapPage.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAuD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfirmSwapPage.d.ts","sourceRoot":"","sources":["../../src/pages/ConfirmSwapPage.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAkD5E,wBAAgB,eAAe,sBA0T9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistoryPage.d.ts","sourceRoot":"","sources":["../../src/pages/HistoryPage.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"HistoryPage.d.ts","sourceRoot":"","sources":["../../src/pages/HistoryPage.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAiCxC,wBAAgB,WAAW,sBAiE1B"}
|
package/dist/pages/Home.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Home.d.ts","sourceRoot":"","sources":["../../src/pages/Home.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Home.d.ts","sourceRoot":"","sources":["../../src/pages/Home.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAsCnD,wBAAgB,IAAI,sBAuPnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LanguagePage.d.ts","sourceRoot":"","sources":["../../src/pages/LanguagePage.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LanguagePage.d.ts","sourceRoot":"","sources":["../../src/pages/LanguagePage.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,wBAAgB,YAAY,sBAwC3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiquiditySourcePage.d.ts","sourceRoot":"","sources":["../../src/pages/LiquiditySourcePage.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LiquiditySourcePage.d.ts","sourceRoot":"","sources":["../../src/pages/LiquiditySourcePage.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAcxC,UAAU,SAAS;IACjB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,EAAE,SAAS,qBAwH5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectSwapItemsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SelectSwapItemsPage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAcxC,UAAU,SAAS;IACjB,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"SelectSwapItemsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SelectSwapItemsPage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAcxC,UAAU,SAAS;IACjB,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,qBAqGnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SettingsPage.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SettingsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SettingsPage.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,wBAAgB,YAAY,sBA4K3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwapDetailsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SwapDetailsPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SwapDetailsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SwapDetailsPage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,wBAAgB,eAAe,sBAgE9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemePage.d.ts","sourceRoot":"","sources":["../../src/pages/ThemePage.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ThemePage.d.ts","sourceRoot":"","sources":["../../src/pages/ThemePage.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,wBAAgB,SAAS,sBAiExB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletsPage.d.ts","sourceRoot":"","sources":["../../src/pages/WalletsPage.tsx"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"WalletsPage.d.ts","sourceRoot":"","sources":["../../src/pages/WalletsPage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAsBxC,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AACzC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,wBAAgB,WAAW,sBAkE1B"}
|
package/dist/utils/quote.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import type { SimulationAssetAndAmount, SimulationValidationStatus } from '@rang
|
|
|
4
4
|
import type { Asset, BestRouteResponse, BlockchainMeta, Token } from 'rango-sdk';
|
|
5
5
|
import type { PendingSwap } from 'rango-types';
|
|
6
6
|
import BigNumber from 'bignumber.js';
|
|
7
|
-
export declare function searchParamsToToken(tokens: Token[], searchParams: string | null, chain: BlockchainMeta | null): Token | null;
|
|
8
7
|
export declare function getQuoteToTokenUsdPrice(quote: BestRouteResponse | null): number | null | undefined;
|
|
9
8
|
export declare function isNumberOfSwapsChanged(quoteA: BestRouteResponse, quoteB: BestRouteResponse): boolean;
|
|
10
9
|
export declare function isQuoteSwappersUpdated(quoteA: BestRouteResponse, quoteB: BestRouteResponse): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quote.d.ts","sourceRoot":"","sources":["../../src/utils/quote.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,EACN,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,SAAS,MAAM,cAAc,CAAC;AAqBrC,wBAAgB,
|
|
1
|
+
{"version":3,"file":"quote.d.ts","sourceRoot":"","sources":["../../src/utils/quote.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,EACN,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,SAAS,MAAM,cAAc,CAAC;AAqBrC,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAC9B,MAAM,GAAG,IAAI,GAAG,SAAS,CAE3B;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,WAK1B;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,WAO1B;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,WAO1B;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAMT;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,SAAS,GAAG,IAAI,EAC9B,YAAY,EAAE,SAAS,GAAG,CAAC,WAQ5B;AAED,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,0BAA0B,EAAE,GAAG,IAAI,GACvC,wBAAwB,EAAE,GAAG,IAAI,CAcnC;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,GAClB,uBAAuB,CASzB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,EAAE,EACnE,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,CAAC,KAUT;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,cAAc,EAAE,EAC7B,MAAM,EAAE,KAAK,EAAE,GACd;IACD,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CA4CA;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE;IACN,SAAS,EAAE,KAAK,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,GACA,YAAY,GAAG,IAAI,CAiDrB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,GACvB,UAAU,GAAG,IAAI,CA+BnB;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,EACxC,cAAc,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,GACxC,MAAM,GAAG,IAAI,CAcf;AAED,eAAO,MAAM,oBAAoB,UAAW,IAAI,EAAE;iBAEnB,MAAM;WAAS,MAAM;GAanD,CAAC"}
|
package/dist/utils/ui.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { WidgetTheme } from '../types';
|
|
2
2
|
import type { createTheme } from '@rango-dev/ui';
|
|
3
|
+
import type React from 'react';
|
|
3
4
|
interface CustomizedThemeValues {
|
|
4
5
|
id: string;
|
|
5
6
|
tokens: Parameters<typeof createTheme>[0];
|
|
@@ -9,5 +10,6 @@ interface CustomizedTheme {
|
|
|
9
10
|
dark: undefined | CustomizedThemeValues;
|
|
10
11
|
}
|
|
11
12
|
export declare function customizedThemeTokens(colors: WidgetTheme['colors']): CustomizedTheme;
|
|
13
|
+
export declare function joinList(list: React.JSX.Element[], divider: React.JSX.Element): React.JSX.Element[];
|
|
12
14
|
export {};
|
|
13
15
|
//# sourceMappingURL=ui.d.ts.map
|
package/dist/utils/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,UAAU,qBAAqB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,SAAS,GAAG,qBAAqB,CAAC;IACzC,IAAI,EAAE,SAAS,GAAG,qBAAqB,CAAC;CACzC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAC5B,eAAe,CA6CjB;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EACzB,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,uBAe3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/widget-embedded",
|
|
3
|
-
"version": "0.20.1-next.
|
|
3
|
+
"version": "0.20.1-next.22",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"@rango-dev/queue-manager-core": "^0.25.0",
|
|
26
26
|
"@rango-dev/queue-manager-rango-preset": "^0.25.1-next.2",
|
|
27
27
|
"@rango-dev/queue-manager-react": "^0.24.0",
|
|
28
|
-
"@rango-dev/ui": "^0.26.1-next.
|
|
28
|
+
"@rango-dev/ui": "^0.26.1-next.12",
|
|
29
29
|
"@rango-dev/wallets-react": "^0.11.1-next.1",
|
|
30
30
|
"@rango-dev/wallets-shared": "^0.25.1-next.1",
|
|
31
31
|
"bignumber.js": "^9.1.1",
|
|
@@ -47,4 +47,4 @@
|
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
|
49
49
|
}
|
|
50
|
-
}
|
|
50
|
+
}
|
|
@@ -10,8 +10,6 @@ import { MemoryRouter, useInRouterContext } from 'react-router';
|
|
|
10
10
|
import { useForceAutoConnect } from '../hooks/useForceAutoConnect';
|
|
11
11
|
import { useAppStore } from '../store/AppStore';
|
|
12
12
|
|
|
13
|
-
import { UpdateUrl } from './UpdateUrl';
|
|
14
|
-
|
|
15
13
|
export function AppRouter({
|
|
16
14
|
children,
|
|
17
15
|
...props
|
|
@@ -37,10 +35,5 @@ export function AppRouter({
|
|
|
37
35
|
canSwitchNetworkTo,
|
|
38
36
|
});
|
|
39
37
|
|
|
40
|
-
return
|
|
41
|
-
<>
|
|
42
|
-
<Router>{children}</Router>
|
|
43
|
-
{isRouterInContext && <UpdateUrl />}
|
|
44
|
-
</>
|
|
45
|
-
);
|
|
38
|
+
return <Router>{children}</Router>;
|
|
46
39
|
}
|
|
@@ -2,6 +2,8 @@ import React from 'react';
|
|
|
2
2
|
import { useRoutes } from 'react-router-dom';
|
|
3
3
|
|
|
4
4
|
import { navigationRoutes } from '../constants/navigationRoutes';
|
|
5
|
+
import { useSyncStoresWithConfig } from '../hooks/useSyncStoresWithConfig';
|
|
6
|
+
import { useSyncUrlAndStore } from '../hooks/useSyncUrlAndStore';
|
|
5
7
|
import { ConfirmSwapPage } from '../pages/ConfirmSwapPage';
|
|
6
8
|
import { HistoryPage } from '../pages/HistoryPage';
|
|
7
9
|
import { Home } from '../pages/Home';
|
|
@@ -15,6 +17,15 @@ import { ThemePage } from '../pages/ThemePage';
|
|
|
15
17
|
import { WalletsPage } from '../pages/WalletsPage';
|
|
16
18
|
|
|
17
19
|
export function AppRoutes() {
|
|
20
|
+
/**
|
|
21
|
+
* The configuration of the widget should initially be applied to the widget state.
|
|
22
|
+
* If search parameters exist in the URL,
|
|
23
|
+
* they should be applied later and take precedence over the widget configuration.
|
|
24
|
+
* To achieve this, it is crucial to execute these hooks in the correct sequence.
|
|
25
|
+
*/
|
|
26
|
+
useSyncStoresWithConfig();
|
|
27
|
+
useSyncUrlAndStore();
|
|
28
|
+
|
|
18
29
|
return useRoutes([
|
|
19
30
|
{
|
|
20
31
|
path: navigationRoutes.home,
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { ImageContainer, styled } from '@rango-dev/ui';
|
|
2
2
|
|
|
3
|
+
import { ScrollableArea } from '../Layout';
|
|
4
|
+
|
|
3
5
|
export const Container = styled('div', {
|
|
4
6
|
display: 'flex',
|
|
5
7
|
flexDirection: 'column',
|
|
6
8
|
overflow: 'hidden',
|
|
7
9
|
});
|
|
8
10
|
|
|
9
|
-
export const List = styled(
|
|
11
|
+
export const List = styled(ScrollableArea, {
|
|
10
12
|
padding: 0,
|
|
11
13
|
margin: 0,
|
|
12
14
|
listStyle: 'none',
|
|
13
|
-
|
|
14
|
-
paddingRight: '$5',
|
|
15
|
+
|
|
15
16
|
[`& ${ImageContainer}`]: {
|
|
16
17
|
borderRadius: '$xm',
|
|
17
18
|
overflow: 'hidden',
|
|
@@ -41,7 +41,7 @@ export function BlockchainList(props: PropTypes) {
|
|
|
41
41
|
);
|
|
42
42
|
}
|
|
43
43
|
return (
|
|
44
|
-
<List key={`${blockchainCategory}-${searchedFor}`}>
|
|
44
|
+
<List as="ul" key={`${blockchainCategory}-${searchedFor}`}>
|
|
45
45
|
{blockchains.map((item) => (
|
|
46
46
|
<ListItemButton
|
|
47
47
|
key={`${item.name}-${item.chainId}`}
|
|
@@ -20,7 +20,7 @@ import { RefreshButton } from './RefreshButton';
|
|
|
20
20
|
import { UnreadNotificationsBadge } from './UnreadNotificationsBadge';
|
|
21
21
|
|
|
22
22
|
export function HomeButtons(props: HomeButtonsPropTypes) {
|
|
23
|
-
const {
|
|
23
|
+
const { onClickRefresh, onClickHistory, onClickSettings } = props;
|
|
24
24
|
|
|
25
25
|
const {
|
|
26
26
|
config: { features },
|
|
@@ -40,7 +40,6 @@ export function HomeButtons(props: HomeButtonsPropTypes) {
|
|
|
40
40
|
{!isNotificationsHidden && (
|
|
41
41
|
<Popover
|
|
42
42
|
align="center"
|
|
43
|
-
collisionBoundary={layoutRef}
|
|
44
43
|
collisionPadding={{ right: 20, left: 20 }}
|
|
45
44
|
container={getContainer()}
|
|
46
45
|
content={<NotificationContent />}>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getContainer } from '../../utils/common';
|
|
2
|
+
|
|
3
|
+
export function onScrollContentAttachStatusToContainer(e: Event) {
|
|
4
|
+
const contentElement = e.target as HTMLElement | null;
|
|
5
|
+
|
|
6
|
+
if (contentElement) {
|
|
7
|
+
const fromTop = contentElement.scrollTop;
|
|
8
|
+
const container = getContainer();
|
|
9
|
+
|
|
10
|
+
if (fromTop > 1) {
|
|
11
|
+
container.classList.add('rng-scrolled');
|
|
12
|
+
} else {
|
|
13
|
+
container.classList.remove('rng-scrolled');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,54 +1,40 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { styled } from '@rango-dev/ui';
|
|
2
2
|
|
|
3
|
+
const WIDGET_HEIGHT = '700px';
|
|
3
4
|
export const Container = styled('div', {
|
|
4
5
|
position: 'relative',
|
|
5
6
|
display: 'flex',
|
|
6
7
|
flexDirection: 'column',
|
|
7
8
|
borderRadius: '$primary',
|
|
8
|
-
|
|
9
|
-
boxShadow: '15px 15px 15px 0px rgba(0, 0, 0, 0.05)',
|
|
10
|
-
width: '100vw',
|
|
9
|
+
width: '100vh',
|
|
11
10
|
minWidth: '300px',
|
|
12
11
|
maxWidth: '390px',
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
$$color: '$colors$neutral300',
|
|
18
|
-
},
|
|
19
|
-
backgroundColor: '$$color',
|
|
12
|
+
boxShadow: '15px 15px 15px 0px rgba(0, 0, 0, 0.05)',
|
|
13
|
+
overflow: 'hidden',
|
|
14
|
+
backgroundColor: '$background',
|
|
15
|
+
|
|
20
16
|
variants: {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
height: '
|
|
17
|
+
height: {
|
|
18
|
+
auto: {
|
|
19
|
+
height: 'auto',
|
|
20
|
+
maxHeight: WIDGET_HEIGHT,
|
|
24
21
|
},
|
|
25
|
-
|
|
26
|
-
height:
|
|
22
|
+
fixed: {
|
|
23
|
+
height: WIDGET_HEIGHT,
|
|
27
24
|
},
|
|
28
25
|
},
|
|
29
26
|
},
|
|
30
27
|
});
|
|
31
28
|
|
|
32
29
|
export const Content = styled('div', {
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
position: 'relative',
|
|
31
|
+
overflow: 'hidden',
|
|
32
|
+
flexGrow: 1,
|
|
35
33
|
display: 'flex',
|
|
36
34
|
flexDirection: 'column',
|
|
37
|
-
|
|
38
|
-
padding: '$20 $20 $10 $20',
|
|
39
|
-
backgroundColor: '$background',
|
|
40
|
-
position: 'relative',
|
|
35
|
+
padding: 0,
|
|
41
36
|
overflowY: 'auto',
|
|
42
|
-
overflowX: 'hidden',
|
|
43
|
-
variants: {
|
|
44
|
-
noPadding: {
|
|
45
|
-
true: {
|
|
46
|
-
padding: '0',
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
37
|
});
|
|
51
|
-
|
|
52
38
|
export const Footer = styled('div', {
|
|
53
39
|
backgroundColor: '$background',
|
|
54
40
|
'& .footer__content': {
|
|
@@ -1,30 +1,23 @@
|
|
|
1
|
-
import type { PropTypes
|
|
1
|
+
import type { PropTypes } from './Layout.types';
|
|
2
2
|
import type { PropsWithChildren } from 'react';
|
|
3
3
|
|
|
4
4
|
import { BottomLogo, Divider, Header } from '@rango-dev/ui';
|
|
5
|
-
import React from 'react';
|
|
5
|
+
import React, { useEffect, useRef } from 'react';
|
|
6
6
|
|
|
7
7
|
import { RANGO_SWAP_BOX_ID } from '../../constants';
|
|
8
8
|
import { useNavigateBack } from '../../hooks/useNavigateBack';
|
|
9
9
|
import { useTheme } from '../../hooks/useTheme';
|
|
10
10
|
import { useAppStore } from '../../store/AppStore';
|
|
11
|
-
import { useUiStore } from '../../store/ui';
|
|
12
11
|
import { useWalletsStore } from '../../store/wallets';
|
|
13
12
|
import { getContainer } from '../../utils/common';
|
|
14
13
|
import { isFeatureHidden } from '../../utils/settings';
|
|
15
14
|
import { BackButton, CancelButton, WalletButton } from '../HeaderButtons';
|
|
16
15
|
|
|
16
|
+
import { onScrollContentAttachStatusToContainer } from './Layout.helpers';
|
|
17
17
|
import { Container, Content, Footer } from './Layout.styles';
|
|
18
18
|
|
|
19
|
-
function
|
|
20
|
-
const {
|
|
21
|
-
children,
|
|
22
|
-
header,
|
|
23
|
-
footer,
|
|
24
|
-
noPadding,
|
|
25
|
-
hasLogo = true,
|
|
26
|
-
fixedHeight = true,
|
|
27
|
-
} = props;
|
|
19
|
+
function Layout(props: PropsWithChildren<PropTypes>) {
|
|
20
|
+
const { children, header, footer, hasLogo = true, height = 'fixed' } = props;
|
|
28
21
|
const connectedWallets = useWalletsStore.use.connectedWallets();
|
|
29
22
|
const {
|
|
30
23
|
config: { features, theme },
|
|
@@ -36,25 +29,33 @@ function LayoutComponent(props: PropsWithChildren<PropTypes>, ref: Ref) {
|
|
|
36
29
|
features
|
|
37
30
|
);
|
|
38
31
|
|
|
39
|
-
const connectWalletsButtonDisabled =
|
|
40
|
-
useUiStore.use.connectWalletsButtonDisabled();
|
|
41
32
|
const navigateBack = useNavigateBack();
|
|
42
33
|
|
|
43
34
|
const onConnectWallet = () => {
|
|
44
|
-
|
|
45
|
-
header.onWallet();
|
|
46
|
-
}
|
|
35
|
+
header.onWallet?.();
|
|
47
36
|
};
|
|
48
37
|
|
|
49
38
|
const showBackButton =
|
|
50
39
|
typeof header.hasBackButton === 'undefined' || header.hasBackButton;
|
|
51
40
|
|
|
41
|
+
const scrollViewRef = useRef<HTMLDivElement>(null);
|
|
42
|
+
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
scrollViewRef.current?.addEventListener(
|
|
45
|
+
'scroll',
|
|
46
|
+
onScrollContentAttachStatusToContainer
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
return () => {
|
|
50
|
+
scrollViewRef.current?.removeEventListener(
|
|
51
|
+
'scroll',
|
|
52
|
+
onScrollContentAttachStatusToContainer
|
|
53
|
+
);
|
|
54
|
+
};
|
|
55
|
+
}, []);
|
|
56
|
+
|
|
52
57
|
return (
|
|
53
|
-
<Container
|
|
54
|
-
ref={ref}
|
|
55
|
-
fixedHeight={fixedHeight}
|
|
56
|
-
id={RANGO_SWAP_BOX_ID}
|
|
57
|
-
className={activeTheme()}>
|
|
58
|
+
<Container height={height} id={RANGO_SWAP_BOX_ID} className={activeTheme()}>
|
|
58
59
|
<Header
|
|
59
60
|
prefix={<>{showBackButton && <BackButton onClick={navigateBack} />}</>}
|
|
60
61
|
title={header.title}
|
|
@@ -72,7 +73,7 @@ function LayoutComponent(props: PropsWithChildren<PropTypes>, ref: Ref) {
|
|
|
72
73
|
</>
|
|
73
74
|
}
|
|
74
75
|
/>
|
|
75
|
-
<Content
|
|
76
|
+
<Content ref={scrollViewRef}>{children}</Content>
|
|
76
77
|
{(hasLogo || footer) && (
|
|
77
78
|
<Footer>
|
|
78
79
|
<div className="footer__content">{footer}</div>
|
|
@@ -87,8 +88,4 @@ function LayoutComponent(props: PropsWithChildren<PropTypes>, ref: Ref) {
|
|
|
87
88
|
</Container>
|
|
88
89
|
);
|
|
89
90
|
}
|
|
90
|
-
|
|
91
|
-
const Layout = React.forwardRef(LayoutComponent);
|
|
92
|
-
Layout.displayName = 'Layout';
|
|
93
|
-
|
|
94
91
|
export { Layout };
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import type { Container } from './Layout.styles';
|
|
2
|
+
import type * as Stitches from '@stitches/react';
|
|
3
|
+
|
|
4
|
+
type ContainerProps = Stitches.VariantProps<typeof Container>;
|
|
5
|
+
type ContainerHeightProp = NonNullable<
|
|
6
|
+
Exclude<ContainerProps['height'], object>
|
|
7
|
+
>;
|
|
8
|
+
|
|
1
9
|
export interface PropTypes {
|
|
2
10
|
header: {
|
|
3
11
|
title: string;
|
|
@@ -9,12 +17,5 @@ export interface PropTypes {
|
|
|
9
17
|
};
|
|
10
18
|
hasLogo?: boolean;
|
|
11
19
|
footer?: React.ReactNode;
|
|
12
|
-
|
|
13
|
-
fixedHeight?: boolean;
|
|
20
|
+
height?: ContainerHeightProp;
|
|
14
21
|
}
|
|
15
|
-
|
|
16
|
-
export type Ref =
|
|
17
|
-
| ((instance: HTMLDivElement | null) => void)
|
|
18
|
-
| React.RefObject<HTMLDivElement>
|
|
19
|
-
| null
|
|
20
|
-
| undefined;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { styled } from '@rango-dev/ui';
|
|
2
|
+
|
|
3
|
+
const PageContainer = styled('div', {
|
|
4
|
+
display: 'flex',
|
|
5
|
+
flexDirection: 'column',
|
|
6
|
+
padding: '20px 20px 10px',
|
|
7
|
+
flexGrow: 1,
|
|
8
|
+
|
|
9
|
+
variants: {
|
|
10
|
+
view: {
|
|
11
|
+
true: {
|
|
12
|
+
flexGrow: 1,
|
|
13
|
+
overflow: 'hidden',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
compact: {
|
|
17
|
+
true: {
|
|
18
|
+
padding: 0,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export { PageContainer };
|
|
@@ -14,7 +14,6 @@ import { useNavigate } from 'react-router-dom';
|
|
|
14
14
|
import { navigationRoutes } from '../../constants/navigationRoutes';
|
|
15
15
|
import { useAppStore } from '../../store/AppStore';
|
|
16
16
|
import { useNotificationStore } from '../../store/notification';
|
|
17
|
-
import { useUiStore } from '../../store/ui';
|
|
18
17
|
|
|
19
18
|
import { Container, Images, List } from './NotificationContent.styles';
|
|
20
19
|
import { NotificationNotFound } from './NotificationNotFound';
|
|
@@ -23,7 +22,6 @@ const MAX_NOTIFICATIONS_DISPLAYED = 4;
|
|
|
23
22
|
|
|
24
23
|
export function NotificationContent() {
|
|
25
24
|
const navigate = useNavigate();
|
|
26
|
-
const setSelectedSwap = useUiStore.use.setSelectedSwap();
|
|
27
25
|
|
|
28
26
|
const { getUnreadNotifications } = useNotificationStore();
|
|
29
27
|
|
|
@@ -35,7 +33,6 @@ export function NotificationContent() {
|
|
|
35
33
|
.slice(0, MAX_NOTIFICATIONS_DISPLAYED);
|
|
36
34
|
|
|
37
35
|
const handleOnClick = (requestId: Notification['requestId']) => {
|
|
38
|
-
setSelectedSwap(requestId);
|
|
39
36
|
navigate(`${navigationRoutes.swaps}/${requestId}`);
|
|
40
37
|
};
|
|
41
38
|
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { css, darkTheme, styled } from '@rango-dev/ui';
|
|
2
2
|
|
|
3
|
+
import { ScrollableArea } from '../Layout';
|
|
4
|
+
|
|
3
5
|
export const Container = styled('div', {
|
|
4
6
|
display: 'flex',
|
|
5
|
-
width: '100%',
|
|
6
7
|
flexDirection: 'column',
|
|
7
|
-
alignItems: 'center',
|
|
8
|
-
height: '0',
|
|
9
8
|
flexGrow: 1,
|
|
9
|
+
overflow: 'hidden',
|
|
10
10
|
});
|
|
11
11
|
|
|
12
12
|
export const HeaderDetails = styled('div', {
|
|
13
13
|
width: '100%',
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
-
export const StepsList = styled(
|
|
16
|
+
export const StepsList = styled(ScrollableArea, {
|
|
17
17
|
padding: '$0 $20 $20 $20',
|
|
18
|
-
width: '100%',
|
|
19
|
-
overflow: 'auto',
|
|
20
18
|
});
|
|
19
|
+
|
|
21
20
|
export const Alerts = styled('div', {
|
|
22
21
|
display: 'flex',
|
|
23
22
|
flexDirection: 'column',
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
import { getSwapDate } from '../../utils/time';
|
|
55
55
|
import { getConciseAddress } from '../../utils/wallets';
|
|
56
56
|
import { SuffixContainer } from '../HeaderButtons/HeaderButtons.styles';
|
|
57
|
-
import { Layout } from '../Layout';
|
|
57
|
+
import { Layout, PageContainer } from '../Layout';
|
|
58
58
|
import { QuoteSummary } from '../Quote';
|
|
59
59
|
import {
|
|
60
60
|
SwapDetailsCompleteModal,
|
|
@@ -63,7 +63,6 @@ import {
|
|
|
63
63
|
|
|
64
64
|
import { getSteps, getStepState, RESET_INTERVAL } from './SwapDetails.helpers';
|
|
65
65
|
import {
|
|
66
|
-
Container,
|
|
67
66
|
HeaderDetails,
|
|
68
67
|
outputStyles,
|
|
69
68
|
requestIdStyles,
|
|
@@ -241,7 +240,6 @@ export function SwapDetails(props: SwapDetailsProps) {
|
|
|
241
240
|
|
|
242
241
|
return (
|
|
243
242
|
<Layout
|
|
244
|
-
noPadding
|
|
245
243
|
header={{
|
|
246
244
|
title: i18n.t('Swap and Bridge'),
|
|
247
245
|
onCancel:
|
|
@@ -279,7 +277,7 @@ export function SwapDetails(props: SwapDetailsProps) {
|
|
|
279
277
|
</Button>
|
|
280
278
|
)
|
|
281
279
|
}>
|
|
282
|
-
<
|
|
280
|
+
<PageContainer compact view>
|
|
283
281
|
<HeaderDetails>
|
|
284
282
|
<div className={rowStyles()}>
|
|
285
283
|
<Typography variant="label" size="large" color="neutral700">
|
|
@@ -400,7 +398,7 @@ export function SwapDetails(props: SwapDetailsProps) {
|
|
|
400
398
|
);
|
|
401
399
|
})}
|
|
402
400
|
</StepsList>
|
|
403
|
-
</
|
|
401
|
+
</PageContainer>
|
|
404
402
|
|
|
405
403
|
<SwapDetailsModal
|
|
406
404
|
state={modalState}
|
|
@@ -51,6 +51,7 @@ export const Container = styled('div', {
|
|
|
51
51
|
display: 'flex',
|
|
52
52
|
flexDirection: 'column',
|
|
53
53
|
flexGrow: 1,
|
|
54
|
+
overflow: 'hidden',
|
|
54
55
|
});
|
|
55
56
|
|
|
56
57
|
export const Title = styled('div', {
|
|
@@ -68,6 +69,7 @@ export const List = styled('ul', {
|
|
|
68
69
|
padding: 0,
|
|
69
70
|
margin: 0,
|
|
70
71
|
listStyle: 'none',
|
|
72
|
+
|
|
71
73
|
'& li': {
|
|
72
74
|
alignItems: 'none',
|
|
73
75
|
|
|
@@ -278,7 +278,7 @@ export function TokenList(props: PropTypes) {
|
|
|
278
278
|
</Typography>
|
|
279
279
|
<Divider size={4} />
|
|
280
280
|
{fetchStatus === 'loading' && <LoadingTokenList size={PAGE_SIZE} />}
|
|
281
|
-
{fetchStatus === 'success' && <List>{renderList()}</List>}
|
|
281
|
+
{fetchStatus === 'success' && <List as="ul">{renderList()}</List>}
|
|
282
282
|
</Container>
|
|
283
283
|
);
|
|
284
284
|
}
|