@rango-dev/ui 0.1.10-next.81 → 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.
@@ -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;
@@ -3483,30 +3483,27 @@ function SwapDetail(_ref) {
3483
3483
  function VirtualizedList(props) {
3484
3484
  var itemCount = props.itemCount,
3485
3485
  hasNextPage = props.hasNextPage,
3486
- isNextPageLoading = props.isNextPageLoading,
3487
3486
  loadNextPage = props.loadNextPage,
3488
3487
  Item = props.Item,
3489
3488
  innerElementType = props.innerElementType,
3490
3489
  size = props.size;
3491
- var listRef = React.useRef(null);
3492
3490
  var isItemLoaded = function isItemLoaded(index) {
3493
3491
  return !hasNextPage || index < itemCount;
3494
3492
  };
3495
- return React__default.createElement(InfiniteLoader, {
3496
- isItemLoaded: isItemLoaded,
3497
- itemCount: hasNextPage ? itemCount + 1 : itemCount,
3498
- loadMoreItems: isNextPageLoading ? function () {
3499
- // do nothing
3500
- } : loadNextPage,
3501
- threshold: 1
3502
- }, function (_ref) {
3503
- var onItemsRendered = _ref.onItemsRendered;
3504
- return React__default.createElement(AutoSizer, null, function (_ref2) {
3505
- var width = _ref2.width,
3506
- 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;
3507
3504
  return React__default.createElement(reactWindow.VariableSizeList, {
3508
3505
  innerElementType: innerElementType,
3509
- ref: listRef,
3506
+ ref: ref,
3510
3507
  itemSize: function itemSize() {
3511
3508
  return size;
3512
3509
  },
@@ -3526,8 +3523,6 @@ function VirtualizedList(props) {
3526
3523
  });
3527
3524
  }
3528
3525
 
3529
- var _excluded$D = ["style"];
3530
- var PAGE_SIZE = 20;
3531
3526
  var TokenImage = /*#__PURE__*/styled('img', {
3532
3527
  width: '$32',
3533
3528
  maxHeight: '$32',
@@ -3542,11 +3537,44 @@ var TokenAmountContainer = /*#__PURE__*/styled('div', {
3542
3537
  flexDirection: 'column',
3543
3538
  alignItems: 'flex-end'
3544
3539
  });
3545
- var filterTokens = function filterTokens(list, searchedText, outputCount) {
3546
- if (searchedText) return list.filter(function (token) {
3547
- return containsText(token.symbol, searchedText) || containsText(token.address || '', searchedText) || containsText(token.name || '', searchedText);
3548
- }).slice(0, outputCount);else return list.slice(0, outputCount);
3549
- };
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;
3550
3578
  function TokenList(props) {
3551
3579
  var list = props.list,
3552
3580
  searchedText = props.searchedText,
@@ -3560,7 +3588,7 @@ function TokenList(props) {
3560
3588
  setSelected(token);
3561
3589
  onChange(token);
3562
3590
  };
3563
- var isSelect = function isSelect(token) {
3591
+ var isSelected = function isSelected(token) {
3564
3592
  if (multiSelect && selectedList) {
3565
3593
  return selectedList === 'all' || selectedList.map(function (item) {
3566
3594
  return item.symbol + item.address;
@@ -3568,71 +3596,28 @@ function TokenList(props) {
3568
3596
  }
3569
3597
  return (selected == null ? void 0 : selected.symbol) === token.symbol && (selected == null ? void 0 : selected.address) === token.address;
3570
3598
  };
3571
- var Token = function Token(_ref) {
3572
- var _currentToken$balance;
3573
- var filteredTokens = _ref.filteredTokens,
3574
- index = _ref.index,
3575
- style = _ref.style;
3576
- var currentToken = filteredTokens[index];
3577
- return React__default.createElement("div", {
3578
- style: _extends({
3579
- display: 'flex',
3580
- alignItems: 'center',
3581
- width: '100%'
3582
- }, style, {
3583
- height: '48px',
3584
- top: parseFloat(style == null ? void 0 : style.top) + 0 + "px"
3585
- })
3586
- }, React__default.createElement(Button, {
3587
- variant: "outlined",
3588
- size: "large",
3589
- align: "start",
3590
- onClick: changeSelected.bind(null, currentToken),
3591
- type: isSelect(currentToken) ? 'primary' : undefined,
3592
- prefix: React__default.createElement(TokenImage, {
3593
- src: currentToken.image
3594
- }),
3595
- suffix: ((_currentToken$balance = currentToken.balance) == null ? void 0 : _currentToken$balance.amount) && React__default.createElement(TokenAmountContainer, null, React__default.createElement(Typography, {
3596
- variant: "body2"
3597
- }, currentToken.balance.amount), React__default.createElement(Typography, {
3598
- variant: "caption"
3599
- }, currentToken.balance.usdValue + "$"))
3600
- }, React__default.createElement(TokenNameContainer, null, React__default.createElement(Typography, {
3601
- variant: "body1"
3602
- }, currentToken.symbol), React__default.createElement(Typography, {
3603
- variant: "body2"
3604
- }, currentToken.name))));
3605
- };
3606
3599
  var _useState2 = React.useState(true),
3607
3600
  hasNextPage = _useState2[0],
3608
3601
  setHasNextPage = _useState2[1];
3609
- var _useState3 = React.useState(false),
3610
- isNextPageLoading = _useState3[0],
3611
- setIsNextPageLoading = _useState3[1];
3612
- var _useState4 = React.useState(list),
3613
- filteredTokens = _useState4[0],
3614
- setFilteredTokens = _useState4[1];
3602
+ var _useState3 = React.useState(list),
3603
+ tokens = _useState3[0],
3604
+ setTokens = _useState3[1];
3615
3605
  var loadNextPage = function loadNextPage() {
3616
- setIsNextPageLoading(true);
3617
- setTimeout(function () {
3618
- setIsNextPageLoading(false);
3619
- setFilteredTokens(filterTokens(list, searchedText, filteredTokens.length + PAGE_SIZE));
3620
- }, 0);
3606
+ setTokens(list.slice(0, tokens.length + PAGE_SIZE));
3621
3607
  };
3622
3608
  React.useEffect(function () {
3623
- setFilteredTokens(filterTokens(list, searchedText, PAGE_SIZE));
3609
+ setTokens(list.slice(0, PAGE_SIZE));
3624
3610
  }, [searchedText]);
3625
3611
  React.useEffect(function () {
3626
- setHasNextPage(filterTokens(list, searchedText).length > filterTokens.length);
3627
- }, [filteredTokens.length]);
3628
- var innerElementType = React.forwardRef(function (_ref2, ref) {
3629
- var style = _ref2.style,
3630
- 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);
3631
3617
  return React__default.createElement("div", Object.assign({
3632
3618
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3633
3619
  ref: ref,
3634
3620
  style: _extends({}, style, {
3635
- // eslint-disable-next-line react/prop-types
3636
3621
  height: parseFloat(style == null ? void 0 : style.height) + 8 * 2 + "px"
3637
3622
  })
3638
3623
  }, rest));
@@ -3642,24 +3627,29 @@ function TokenList(props) {
3642
3627
  height: '450px'
3643
3628
  }
3644
3629
  }, React__default.createElement(VirtualizedList, {
3645
- Item: function Item(_ref3) {
3646
- var index = _ref3.index,
3647
- style = _ref3.style;
3648
- return React__default.createElement(Token, {
3649
- 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],
3650
3635
  style: style,
3651
- index: index
3636
+ onClick: changeSelected,
3637
+ selected: isSelected(tokens[index])
3652
3638
  });
3653
3639
  },
3654
3640
  hasNextPage: hasNextPage,
3655
- isNextPageLoading: isNextPageLoading,
3656
- itemCount: filteredTokens.length,
3641
+ itemCount: tokens.length,
3657
3642
  loadNextPage: loadNextPage,
3658
3643
  innerElementType: innerElementType,
3659
3644
  size: 56
3660
3645
  }));
3661
3646
  }
3662
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
+ };
3663
3653
  function TokenSelector(props) {
3664
3654
  var list = props.list,
3665
3655
  type = props.type,
@@ -3678,7 +3668,7 @@ function TokenSelector(props) {
3678
3668
  }, function (searchedFor) {
3679
3669
  return React__default.createElement(TokenList, {
3680
3670
  searchedText: searchedFor,
3681
- list: list,
3671
+ list: filterTokens(list, searchedFor),
3682
3672
  selected: selected,
3683
3673
  selectedList: selectedList,
3684
3674
  multiSelect: multiSelect,