@rango-dev/ui 0.1.10-next.80 → 0.1.10-next.82

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.
@@ -14,6 +14,8 @@ export interface PropTypes {
14
14
  selectedTheme: Theme;
15
15
  onThemeChange: (theme: Theme) => void;
16
16
  onBack: () => void;
17
+ infiniteApprove: boolean;
18
+ toggleInfiniteApprove: (infinite: boolean) => void;
17
19
  }
18
20
  export declare function Settings(props: PropTypes): JSX.Element;
19
21
  export {};
@@ -0,0 +1,11 @@
1
+ import { Token } from 'rango-sdk';
2
+ import { CSSProperties } from 'react';
3
+ import { TokenWithAmount } from './TokenList';
4
+ interface PropTypes {
5
+ token: TokenWithAmount;
6
+ selected: boolean;
7
+ onClick: (token: Token) => void;
8
+ style?: CSSProperties;
9
+ }
10
+ export declare function TokenItem(props: PropTypes): JSX.Element;
11
+ export {};
@@ -8,7 +8,6 @@ export declare type VirtualizedListItem = ({ index, style, }: {
8
8
  declare type PropTypes = {
9
9
  itemCount: number;
10
10
  hasNextPage: boolean;
11
- isNextPageLoading: boolean;
12
11
  loadNextPage: () => void;
13
12
  Item: VirtualizedListItem;
14
13
  innerElementType: ReactElementType | undefined;
@@ -3233,6 +3233,11 @@ var LiquiditySourceContainer = /*#__PURE__*/styled(BaseContainer, {
3233
3233
  marginTop: '$32',
3234
3234
  cursor: 'pointer'
3235
3235
  });
3236
+ var InfiniteContainer = /*#__PURE__*/styled(BaseContainer, {
3237
+ display: 'flex',
3238
+ justifyContent: 'space-between',
3239
+ marginTop: '$32'
3240
+ });
3236
3241
  var StyledAngleRight = /*#__PURE__*/styled(AngleRightIcon, {
3237
3242
  marginLeft: '$8'
3238
3243
  });
@@ -3256,7 +3261,9 @@ function Settings(props) {
3256
3261
  maxSlippage = props.maxSlippage,
3257
3262
  minSlippage = props.minSlippage,
3258
3263
  selectedTheme = props.selectedTheme,
3259
- onThemeChange = props.onThemeChange;
3264
+ onThemeChange = props.onThemeChange,
3265
+ toggleInfiniteApprove = props.toggleInfiniteApprove,
3266
+ infiniteApprove = props.infiniteApprove;
3260
3267
  var _useState = React.useState(props.selectedSlippage),
3261
3268
  selectedSlippage = _useState[0],
3262
3269
  setSelectedSlippage = _useState[1];
@@ -3317,6 +3324,11 @@ function Settings(props) {
3317
3324
  style: {
3318
3325
  marginTop: '$24'
3319
3326
  }
3327
+ })), React__default.createElement(InfiniteContainer, null, React__default.createElement(Typography, {
3328
+ variant: "body1"
3329
+ }, "Infinite Approval"), React__default.createElement(Switch, {
3330
+ checked: infiniteApprove,
3331
+ onChange: toggleInfiniteApprove
3320
3332
  })), React__default.createElement(LiquiditySourceContainer, {
3321
3333
  onClick: onLiquiditySourcesClick
3322
3334
  }, React__default.createElement(Typography, {
@@ -3471,30 +3483,27 @@ function SwapDetail(_ref) {
3471
3483
  function VirtualizedList(props) {
3472
3484
  var itemCount = props.itemCount,
3473
3485
  hasNextPage = props.hasNextPage,
3474
- isNextPageLoading = props.isNextPageLoading,
3475
3486
  loadNextPage = props.loadNextPage,
3476
3487
  Item = props.Item,
3477
3488
  innerElementType = props.innerElementType,
3478
3489
  size = props.size;
3479
- var listRef = React.useRef(null);
3480
3490
  var isItemLoaded = function isItemLoaded(index) {
3481
3491
  return !hasNextPage || index < itemCount;
3482
3492
  };
3483
- return React__default.createElement(InfiniteLoader, {
3484
- isItemLoaded: isItemLoaded,
3485
- itemCount: hasNextPage ? itemCount + 1 : itemCount,
3486
- loadMoreItems: isNextPageLoading ? function () {
3487
- // do nothing
3488
- } : loadNextPage,
3489
- threshold: 1
3490
- }, function (_ref) {
3491
- var onItemsRendered = _ref.onItemsRendered;
3492
- return React__default.createElement(AutoSizer, null, function (_ref2) {
3493
- var width = _ref2.width,
3494
- height = _ref2.height;
3493
+ return React__default.createElement(AutoSizer, null, function (_ref) {
3494
+ var width = _ref.width,
3495
+ height = _ref.height;
3496
+ return React__default.createElement(InfiniteLoader, {
3497
+ isItemLoaded: isItemLoaded,
3498
+ itemCount: hasNextPage ? itemCount + 1 : itemCount,
3499
+ loadMoreItems: loadNextPage,
3500
+ threshold: 1
3501
+ }, function (_ref2) {
3502
+ var onItemsRendered = _ref2.onItemsRendered,
3503
+ ref = _ref2.ref;
3495
3504
  return React__default.createElement(reactWindow.VariableSizeList, {
3496
3505
  innerElementType: innerElementType,
3497
- ref: listRef,
3506
+ ref: ref,
3498
3507
  itemSize: function itemSize() {
3499
3508
  return size;
3500
3509
  },
@@ -3514,8 +3523,6 @@ function VirtualizedList(props) {
3514
3523
  });
3515
3524
  }
3516
3525
 
3517
- var _excluded$D = ["style"];
3518
- var PAGE_SIZE = 20;
3519
3526
  var TokenImage = /*#__PURE__*/styled('img', {
3520
3527
  width: '$32',
3521
3528
  maxHeight: '$32',
@@ -3530,11 +3537,44 @@ var TokenAmountContainer = /*#__PURE__*/styled('div', {
3530
3537
  flexDirection: 'column',
3531
3538
  alignItems: 'flex-end'
3532
3539
  });
3533
- var filterTokens = function filterTokens(list, searchedText, outputCount) {
3534
- if (searchedText) return list.filter(function (token) {
3535
- return containsText(token.symbol, searchedText) || containsText(token.address || '', searchedText) || containsText(token.name || '', searchedText);
3536
- }).slice(0, outputCount);else return list.slice(0, outputCount);
3537
- };
3540
+ function TokenItem(props) {
3541
+ var _token$balance;
3542
+ var token = props.token,
3543
+ style = props.style,
3544
+ onClick = props.onClick,
3545
+ selected = props.selected;
3546
+ return React__default.createElement("div", {
3547
+ style: _extends({
3548
+ display: 'flex',
3549
+ alignItems: 'center',
3550
+ width: '100%'
3551
+ }, style, {
3552
+ height: '48px',
3553
+ top: parseFloat(style == null ? void 0 : style.top) + 0 + "px"
3554
+ })
3555
+ }, React__default.createElement(Button, {
3556
+ variant: "outlined",
3557
+ size: "large",
3558
+ align: "start",
3559
+ onClick: onClick.bind(null, token),
3560
+ type: selected ? 'primary' : undefined,
3561
+ prefix: React__default.createElement(TokenImage, {
3562
+ src: token.image
3563
+ }),
3564
+ suffix: ((_token$balance = token.balance) == null ? void 0 : _token$balance.amount) && React__default.createElement(TokenAmountContainer, null, React__default.createElement(Typography, {
3565
+ variant: "body2"
3566
+ }, token.balance.amount), React__default.createElement(Typography, {
3567
+ variant: "caption"
3568
+ }, token.balance.usdValue + "$"))
3569
+ }, React__default.createElement(TokenNameContainer, null, React__default.createElement(Typography, {
3570
+ variant: "body1"
3571
+ }, token.symbol), React__default.createElement(Typography, {
3572
+ variant: "body2"
3573
+ }, token.name))));
3574
+ }
3575
+
3576
+ var _excluded$D = ["style"];
3577
+ var PAGE_SIZE = 20;
3538
3578
  function TokenList(props) {
3539
3579
  var list = props.list,
3540
3580
  searchedText = props.searchedText,
@@ -3548,7 +3588,7 @@ function TokenList(props) {
3548
3588
  setSelected(token);
3549
3589
  onChange(token);
3550
3590
  };
3551
- var isSelect = function isSelect(token) {
3591
+ var isSelected = function isSelected(token) {
3552
3592
  if (multiSelect && selectedList) {
3553
3593
  return selectedList === 'all' || selectedList.map(function (item) {
3554
3594
  return item.symbol + item.address;
@@ -3556,71 +3596,28 @@ function TokenList(props) {
3556
3596
  }
3557
3597
  return (selected == null ? void 0 : selected.symbol) === token.symbol && (selected == null ? void 0 : selected.address) === token.address;
3558
3598
  };
3559
- var Token = function Token(_ref) {
3560
- var _currentToken$balance;
3561
- var filteredTokens = _ref.filteredTokens,
3562
- index = _ref.index,
3563
- style = _ref.style;
3564
- var currentToken = filteredTokens[index];
3565
- return React__default.createElement("div", {
3566
- style: _extends({
3567
- display: 'flex',
3568
- alignItems: 'center',
3569
- width: '100%'
3570
- }, style, {
3571
- height: '48px',
3572
- top: parseFloat(style == null ? void 0 : style.top) + 0 + "px"
3573
- })
3574
- }, React__default.createElement(Button, {
3575
- variant: "outlined",
3576
- size: "large",
3577
- align: "start",
3578
- onClick: changeSelected.bind(null, currentToken),
3579
- type: isSelect(currentToken) ? 'primary' : undefined,
3580
- prefix: React__default.createElement(TokenImage, {
3581
- src: currentToken.image
3582
- }),
3583
- suffix: ((_currentToken$balance = currentToken.balance) == null ? void 0 : _currentToken$balance.amount) && React__default.createElement(TokenAmountContainer, null, React__default.createElement(Typography, {
3584
- variant: "body2"
3585
- }, currentToken.balance.amount), React__default.createElement(Typography, {
3586
- variant: "caption"
3587
- }, currentToken.balance.usdValue + "$"))
3588
- }, React__default.createElement(TokenNameContainer, null, React__default.createElement(Typography, {
3589
- variant: "body1"
3590
- }, currentToken.symbol), React__default.createElement(Typography, {
3591
- variant: "body2"
3592
- }, currentToken.name))));
3593
- };
3594
3599
  var _useState2 = React.useState(true),
3595
3600
  hasNextPage = _useState2[0],
3596
3601
  setHasNextPage = _useState2[1];
3597
- var _useState3 = React.useState(false),
3598
- isNextPageLoading = _useState3[0],
3599
- setIsNextPageLoading = _useState3[1];
3600
- var _useState4 = React.useState(list),
3601
- filteredTokens = _useState4[0],
3602
- setFilteredTokens = _useState4[1];
3602
+ var _useState3 = React.useState(list),
3603
+ tokens = _useState3[0],
3604
+ setTokens = _useState3[1];
3603
3605
  var loadNextPage = function loadNextPage() {
3604
- setIsNextPageLoading(true);
3605
- setTimeout(function () {
3606
- setIsNextPageLoading(false);
3607
- setFilteredTokens(filterTokens(list, searchedText, filteredTokens.length + PAGE_SIZE));
3608
- }, 0);
3606
+ setTokens(list.slice(0, tokens.length + PAGE_SIZE));
3609
3607
  };
3610
3608
  React.useEffect(function () {
3611
- setFilteredTokens(filterTokens(list, searchedText, PAGE_SIZE));
3609
+ setTokens(list.slice(0, PAGE_SIZE));
3612
3610
  }, [searchedText]);
3613
3611
  React.useEffect(function () {
3614
- setHasNextPage(filterTokens(list, searchedText).length > filterTokens.length);
3615
- }, [filteredTokens.length]);
3616
- var innerElementType = React.forwardRef(function (_ref2, ref) {
3617
- var style = _ref2.style,
3618
- rest = _objectWithoutPropertiesLoose(_ref2, _excluded$D);
3612
+ setHasNextPage(list.length > tokens.length);
3613
+ }, [tokens.length]);
3614
+ var innerElementType = React.forwardRef(function (_ref, ref) {
3615
+ var style = _ref.style,
3616
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$D);
3619
3617
  return React__default.createElement("div", Object.assign({
3620
3618
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3621
3619
  ref: ref,
3622
3620
  style: _extends({}, style, {
3623
- // eslint-disable-next-line react/prop-types
3624
3621
  height: parseFloat(style == null ? void 0 : style.height) + 8 * 2 + "px"
3625
3622
  })
3626
3623
  }, rest));
@@ -3630,24 +3627,29 @@ function TokenList(props) {
3630
3627
  height: '450px'
3631
3628
  }
3632
3629
  }, React__default.createElement(VirtualizedList, {
3633
- Item: function Item(_ref3) {
3634
- var index = _ref3.index,
3635
- style = _ref3.style;
3636
- return React__default.createElement(Token, {
3637
- filteredTokens: filteredTokens,
3630
+ Item: function Item(_ref2) {
3631
+ var index = _ref2.index,
3632
+ style = _ref2.style;
3633
+ return React__default.createElement(TokenItem, {
3634
+ token: tokens[index],
3638
3635
  style: style,
3639
- index: index
3636
+ onClick: changeSelected,
3637
+ selected: isSelected(tokens[index])
3640
3638
  });
3641
3639
  },
3642
3640
  hasNextPage: hasNextPage,
3643
- isNextPageLoading: isNextPageLoading,
3644
- itemCount: filteredTokens.length,
3641
+ itemCount: tokens.length,
3645
3642
  loadNextPage: loadNextPage,
3646
3643
  innerElementType: innerElementType,
3647
3644
  size: 56
3648
3645
  }));
3649
3646
  }
3650
3647
 
3648
+ var filterTokens = function filterTokens(list, searchedFor) {
3649
+ return list.filter(function (token) {
3650
+ return containsText(token.symbol, searchedFor) || containsText(token.address || '', searchedFor) || containsText(token.name || '', searchedFor);
3651
+ });
3652
+ };
3651
3653
  function TokenSelector(props) {
3652
3654
  var list = props.list,
3653
3655
  type = props.type,
@@ -3666,7 +3668,7 @@ function TokenSelector(props) {
3666
3668
  }, function (searchedFor) {
3667
3669
  return React__default.createElement(TokenList, {
3668
3670
  searchedText: searchedFor,
3669
- list: list,
3671
+ list: filterTokens(list, searchedFor),
3670
3672
  selected: selected,
3671
3673
  selectedList: selectedList,
3672
3674
  multiSelect: multiSelect,