@depay/widgets 6.2.1 → 6.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.
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import React, { useState, useContext, useEffect } from 'react';
1
+ import React, { useState, useContext, useEffect, useRef } from 'react';
2
2
  import { NavigateStackContext, ReactDialogStack } from '@depay/react-dialog-stack';
3
3
  import { getWallet, wallets } from '@depay/web3-wallets';
4
4
  import ReactDOM from 'react-dom';
@@ -918,7 +918,8 @@ var ClosableProvider = (function (props) {
918
918
  closable: closable,
919
919
  setClosable: setClosable,
920
920
  close: close,
921
- open: open
921
+ open: open,
922
+ setOpen: setOpen
922
923
  }
923
924
  }, props.children);
924
925
  });
@@ -973,23 +974,21 @@ var Dialog$1 = (function (props) {
973
974
  }, /*#__PURE__*/React.createElement("div", {
974
975
  className: ["DialogHeader", props.stacked ? 'TextCenter' : ''].join(' ')
975
976
  }, props.stacked && /*#__PURE__*/React.createElement("div", {
976
- className: "DialogHeaderAction PaddingTopS PaddingLeftS PaddingRightS"
977
+ className: "DialogHeaderActionLeft PaddingTopS PaddingLeftS PaddingRightS"
977
978
  }, /*#__PURE__*/React.createElement("button", {
978
979
  onClick: function onClick() {
979
980
  return navigate('back');
980
981
  },
981
982
  className: "ButtonCircular",
982
983
  title: "Go back"
983
- }, /*#__PURE__*/React.createElement(ChevronLeft, null))), /*#__PURE__*/React.createElement("div", {
984
- className: "DialogHeaderTitle"
985
- }, props.header), /*#__PURE__*/React.createElement("div", {
986
- className: "DialogHeaderAction PaddingTopS PaddingLeftS PaddingRightS"
984
+ }, /*#__PURE__*/React.createElement(ChevronLeft, null))), props.header, /*#__PURE__*/React.createElement("div", {
985
+ className: "DialogHeaderActionRight PaddingTopS PaddingLeftS PaddingRightS"
987
986
  }, closable && /*#__PURE__*/React.createElement("button", {
988
987
  onClick: close,
989
988
  className: "ButtonCircular",
990
989
  title: "Close dialog"
991
990
  }, /*#__PURE__*/React.createElement(CloseIcon, null)))), /*#__PURE__*/React.createElement("div", {
992
- className: "DialogBody"
991
+ className: ["DialogBody", props.bodyClassName].join(' ')
993
992
  }, props.body), /*#__PURE__*/React.createElement("div", {
994
993
  className: "DialogFooter"
995
994
  }, props.footer));
@@ -1119,7 +1118,8 @@ var SelectWalletDialog = (function (props) {
1119
1118
  }, _callee);
1120
1119
  })), [wallet]);
1121
1120
 
1122
- var connect = function connect(wallet) {
1121
+ var connect = function connect(walletClass) {
1122
+ var wallet = new walletClass();
1123
1123
  props.setWallet(wallet);
1124
1124
  navigate('ConnectingWallet');
1125
1125
  props.connect(wallet);
@@ -1128,7 +1128,7 @@ var SelectWalletDialog = (function (props) {
1128
1128
  var availableWallets = [wallets.WalletConnect];
1129
1129
 
1130
1130
  if (wallet) {
1131
- availableWallets.unshift(wallet);
1131
+ availableWallets.unshift(wallet.constructor);
1132
1132
  }
1133
1133
 
1134
1134
  var walletCards = availableWallets.map(function (wallet, index) {
@@ -1137,21 +1137,22 @@ var SelectWalletDialog = (function (props) {
1137
1137
  className: "PaddingBottomXS"
1138
1138
  }, /*#__PURE__*/React.createElement("button", {
1139
1139
  className: "Card small",
1140
- title: "Connect ".concat(wallet.name),
1140
+ title: "Connect ".concat(wallet.info.name),
1141
1141
  onClick: function onClick() {
1142
1142
  return connect(wallet);
1143
1143
  }
1144
1144
  }, /*#__PURE__*/React.createElement("div", {
1145
1145
  className: "CardImage"
1146
1146
  }, /*#__PURE__*/React.createElement("img", {
1147
- src: wallet.logo
1147
+ className: "transparent",
1148
+ src: wallet.info.logo
1148
1149
  })), /*#__PURE__*/React.createElement("div", {
1149
1150
  className: "CardBody"
1150
1151
  }, /*#__PURE__*/React.createElement("div", {
1151
1152
  className: "CardBodyWrapper PaddingLeftXS"
1152
1153
  }, /*#__PURE__*/React.createElement("h2", {
1153
1154
  className: "CardText FontWeightBold"
1154
- }, wallet.name)))));
1155
+ }, wallet.info.name)))));
1155
1156
  });
1156
1157
  return /*#__PURE__*/React.createElement(Dialog$1, {
1157
1158
  header: /*#__PURE__*/React.createElement("div", {
@@ -1160,7 +1161,7 @@ var SelectWalletDialog = (function (props) {
1160
1161
  className: "LineHeightL FontSizeL"
1161
1162
  }, "Select a wallet")),
1162
1163
  body: /*#__PURE__*/React.createElement("div", {
1163
- className: "PaddingTopS PaddingBottomXS PaddingLeftS PaddingRightS"
1164
+ className: "PaddingBottomS PaddingLeftS PaddingRightS"
1164
1165
  }, walletCards),
1165
1166
  footer: /*#__PURE__*/React.createElement("div", {
1166
1167
  className: "PaddingBottomS"
@@ -1344,14 +1345,14 @@ function _inherits(subClass, superClass) {
1344
1345
  throw new TypeError("Super expression must either be null or a function");
1345
1346
  }
1346
1347
 
1348
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
1349
+ constructor: {
1350
+ value: subClass,
1351
+ writable: true,
1352
+ configurable: true
1353
+ }
1354
+ });
1347
1355
  Object.defineProperty(subClass, "prototype", {
1348
- value: Object.create(superClass && superClass.prototype, {
1349
- constructor: {
1350
- value: subClass,
1351
- writable: true,
1352
- configurable: true
1353
- }
1354
- }),
1355
1356
  writable: false
1356
1357
  });
1357
1358
  if (superClass) _setPrototypeOf(subClass, superClass);
@@ -1386,11 +1387,6 @@ var ErrorContext = /*#__PURE__*/React.createContext();
1386
1387
 
1387
1388
  var ErrorGraphic = "data:image/png;base64,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";
1388
1389
 
1389
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
1390
-
1391
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
1392
- var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
1393
-
1394
1390
  function ReactDialogStyle (styles) {
1395
1391
  let background =
1396
1392
  typeof styles === 'object' && styles.background ? styles.background : 'rgba(0,0,0,0.4)';
@@ -1457,7 +1453,7 @@ function ReactDialogStyle (styles) {
1457
1453
  }
1458
1454
 
1459
1455
  const _jsxFileName = "/home/runner/work/react-dialog/react-dialog/src/components/Dialog.jsx";
1460
- class Dialog extends React__default['default'].Component {
1456
+ class Dialog extends React.Component {
1461
1457
  constructor(props) {
1462
1458
  super(props);
1463
1459
 
@@ -1505,11 +1501,11 @@ class Dialog extends React__default['default'].Component {
1505
1501
  const classNames = ['ReactDialog', this.state.open ? 'ReactDialogOpen' : ''];
1506
1502
  const style = ReactDialogStyle({ background: this.props.background });
1507
1503
  return (
1508
- React__default['default'].createElement('div', { className: classNames.join(' '), __self: this, __source: {fileName: _jsxFileName, lineNumber: 54}}
1509
- , React__default['default'].createElement('style', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 55}}, style)
1510
- , React__default['default'].createElement('div', { className: "ReactDialogRow", __self: this, __source: {fileName: _jsxFileName, lineNumber: 56}}
1511
- , React__default['default'].createElement('div', { className: "ReactDialogCell", __self: this, __source: {fileName: _jsxFileName, lineNumber: 57}}
1512
- , React__default['default'].createElement('div', { className: "ReactDialogBackground", onClick: this.onClickBackground.bind(this), __self: this, __source: {fileName: _jsxFileName, lineNumber: 58}} )
1504
+ React.createElement('div', { className: classNames.join(' '), __self: this, __source: {fileName: _jsxFileName, lineNumber: 54}}
1505
+ , React.createElement('style', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 55}}, style)
1506
+ , React.createElement('div', { className: "ReactDialogRow", __self: this, __source: {fileName: _jsxFileName, lineNumber: 56}}
1507
+ , React.createElement('div', { className: "ReactDialogCell", __self: this, __source: {fileName: _jsxFileName, lineNumber: 57}}
1508
+ , React.createElement('div', { className: "ReactDialogBackground", onClick: this.onClickBackground.bind(this), __self: this, __source: {fileName: _jsxFileName, lineNumber: 58}} )
1513
1509
  , this.props.children
1514
1510
  )
1515
1511
  )
@@ -1519,7 +1515,7 @@ class Dialog extends React__default['default'].Component {
1519
1515
  }
1520
1516
 
1521
1517
  const _jsxFileName$1 = "/home/runner/work/react-dialog/react-dialog/src/index.jsx";
1522
- class ReactDialog extends React__default['default'].Component {
1518
+ class ReactDialog extends React.Component {
1523
1519
  constructor(props) {
1524
1520
  super(props);
1525
1521
 
@@ -1542,8 +1538,8 @@ class ReactDialog extends React__default['default'].Component {
1542
1538
  let _document = this.props.document || document;
1543
1539
  let container = this.props.container || _document.body;
1544
1540
  if (this.state.open) {
1545
- return ReactDOM__default['default'].createPortal(
1546
- React__default['default'].createElement(Dialog, {
1541
+ return ReactDOM.createPortal(
1542
+ React.createElement(Dialog, {
1547
1543
  background: this.props.background,
1548
1544
  close: this.props.close,
1549
1545
  document: _document,
@@ -1560,8 +1556,6 @@ class ReactDialog extends React__default['default'].Component {
1560
1556
  }
1561
1557
  }
1562
1558
 
1563
- var ReactDialog_1 = ReactDialog;
1564
-
1565
1559
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
1566
1560
 
1567
1561
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -1593,7 +1587,7 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
1593
1587
  }(React.Component);
1594
1588
 
1595
1589
  var ErrorProvider = (function (props) {
1596
- var _useState = useState(),
1590
+ var _useState = useState(props.error),
1597
1591
  _useState2 = _slicedToArray(_useState, 2),
1598
1592
  error = _useState2[0],
1599
1593
  setError = _useState2[1];
@@ -1606,8 +1600,8 @@ var ErrorProvider = (function (props) {
1606
1600
  var setErrorFromChildren = function setErrorFromChildren(error) {
1607
1601
  setError(error);
1608
1602
 
1609
- if (props.error) {
1610
- props.error(error);
1603
+ if (props.errorCallback) {
1604
+ props.errorCallback(error);
1611
1605
  }
1612
1606
  };
1613
1607
 
@@ -1618,7 +1612,7 @@ var ErrorProvider = (function (props) {
1618
1612
 
1619
1613
  if (error) {
1620
1614
  console.log(error);
1621
- return /*#__PURE__*/React.createElement(ReactDialog_1, {
1615
+ return /*#__PURE__*/React.createElement(ReactDialog, {
1622
1616
  container: props.container,
1623
1617
  close: close,
1624
1618
  open: open
@@ -1666,6 +1660,10 @@ var ErrorProvider = (function (props) {
1666
1660
  }
1667
1661
  });
1668
1662
 
1663
+ var AlertStyle = (function (style) {
1664
+ return "\n\n .Alert {\n background: rgba(0,0,0,0.08);\n border-radius: 0.4rem;\n font-weight: 500;\n padding: 0.5rem;\n }\n ";
1665
+ });
1666
+
1669
1667
  var BlockchainLogoStyle = (function (style) {
1670
1668
  return "\n\n .BlockchainLogo {\n border-radius: 999px;\n }\n\n .BlockchainLogo.small {\n height: 18px;\n width: 18px;\n }\n ";
1671
1669
  });
@@ -1679,11 +1677,11 @@ var ButtonPrimaryStyle = (function (style) {
1679
1677
  });
1680
1678
 
1681
1679
  var CardStyle = (function (style) {
1682
- return "\n\n .Card {\n align-items: center;\n background: rgb(255,255,255);\n border-radius: 0.8rem;\n box-shadow: 0 0 8px rgba(0,0,0,0.03);\n cursor: pointer;\n display: flex;\n flex-direction: row;\n margin-bottom: 0.5rem;\n min-height: 4.78rem;\n padding: 1rem 0.6rem;\n width: 100%;\n }\n\n a.Card, a.Card * {\n color: inherit;\n text-decoration: none;\n }\n\n .Card.transparent {\n background: none;\n box-shadow: none;\n }\n\n .Card.small {\n min-height: auto;\n padding: 0.5rem 0.5rem;\n margin: 0;\n }\n\n .Card.disabled {\n cursor: default;\n }\n\n .Card:hover:not(.disabled) {\n background: rgb(240,240,240);\n box-shadow: 0 0 0 rgba(0,0,0,0); \n }\n\n .Card:active:not(.disabled) {\n background: rgb(235,235,235);\n box-shadow: inset 0 0 6px rgba(0,0,0,0.02);\n color: inherit;\n }\n\n .Card:hover:not(.disabled) .CardAction {\n opacity: 0.4;\n }\n\n .CardImage, .CardBody, .CardAction, .CardInfo {\n align-items: center;\n display: flex;\n min-width: 0;\n padding: 0 0.4rem;\n }\n\n .CardImage {\n flex-basis: auto;\n flex-grow: 0;\n flex-shrink: 0;\n justify-content: center;\n position: relative;\n width: 3.6rem;\n }\n\n .CardBody {\n flex-basis: auto;\n flex-grow: 1;\n flex-shrink: 1;\n line-height: 1.4rem;\n padding-left: 0.6rem;\n text-align: left;\n }\n\n .CardBodyWrapper {\n min-width: 0;\n }\n\n .CardAction {\n flex-basis: auto;\n flex-shrink: 0;\n flex-grow: 0;\n padding-right: 0;\n margin-left: auto;\n }\n\n .Card.disabled .CardAction {\n opacity: 0; \n }\n\n .CardInfo {\n display: flex;\n flex-basis: auto;\n flex-direction: column;\n flex-grow: 0;\n flex-shrink: 1;\n justify-content: center;\n margin-left: auto; \n padding-right: 0;\n }\n\n .CardImage img {\n background: white;\n border-radius: 99rem;\n border: 1px solid white;\n box-shadow: 0 2px 8px rgb(0 0 0 / 10%);\n height: 2.8rem;\n position: relative;\n vertical-align: middle;\n width: 2.8rem;\n }\n\n .CardImage .BlockchainLogo {\n position: absolute;\n bottom: 0;\n right: 0;\n }\n\n .CardTitle {\n font-size: 0.9rem;\n color: rgb(150,150,150);\n }\n \n .CardText, a .CardText {\n color: ".concat(style.colors.text, ";\n flex: 1;\n font-size: 1.3rem;\n }\n\n .CardText strong {\n font-weight: 500;\n }\n\n .CardText small {\n font-size: 1.1rem;\n color: rgb(150,150,150);\n }\n\n .CardAction {\n opacity: 0.2;\n }\n\n .Card.More {\n display: inline-block;\n text-align: center;\n }\n ");
1680
+ return "\n\n .Card {\n align-items: center;\n background: rgb(255,255,255);\n border-radius: 0.8rem;\n box-shadow: 0 0 8px rgba(0,0,0,0.03);\n cursor: pointer;\n display: flex;\n flex-direction: row;\n margin-bottom: 0.5rem;\n min-height: 4.78rem;\n padding: 1rem 0.6rem;\n width: 100%;\n }\n\n .Card.Row {\n border-radius: 0;\n margin-bottom: 0;\n box-shadow: none;\n min-height: 4.3rem;\n padding: 0.4rem 1.3rem;\n border-top: 1px solid rgba(0,0,0,0.05);\n }\n\n .Card.Row .CardText {\n font-size: 1.2rem;\n }\n\n .CardTokenSymbol {\n width: 40%;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .CardTokenName {\n text-align: right;\n opacity: 0.5;\n width: 60%;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .Card.Row .CardTokenName .CardText {\n font-size: 1rem;\n }\n\n .Card.Row .CardImage {\n width: 2.5rem;\n }\n\n .Card.Row .CardImage img {\n height: 1.9rem;\n width: 1.9rem;\n }\n\n a.Card, a.Card * {\n color: inherit;\n text-decoration: none;\n }\n\n .Card.transparent {\n background: none;\n box-shadow: none;\n }\n\n .Card.small {\n min-height: auto;\n padding: 0.5rem 0.5rem;\n margin: 0;\n }\n\n .CardImage.small {\n width: 1.7rem;\n }\n\n .CardImage.small img {\n height: 1.4rem;\n width: 1.4rem;\n }\n\n .Card.disabled {\n cursor: default;\n }\n\n .Card:hover:not(.disabled) {\n background: rgb(240,240,240);\n box-shadow: 0 0 0 rgba(0,0,0,0); \n }\n\n .Card:active:not(.disabled) {\n background: rgb(235,235,235);\n box-shadow: inset 0 0 6px rgba(0,0,0,0.02);\n color: inherit;\n }\n\n .Card:hover:not(.disabled) .CardAction {\n opacity: 0.4;\n }\n\n .CardImage, .CardBody, .CardAction, .CardInfo {\n align-items: center;\n display: flex;\n min-width: 0;\n padding: 0 0.4rem;\n }\n\n .CardImage {\n flex-basis: auto;\n flex-grow: 0;\n flex-shrink: 0;\n justify-content: center;\n position: relative;\n width: 3.6rem;\n }\n\n .CardBody {\n flex-basis: auto;\n flex-grow: 1;\n flex-shrink: 1;\n line-height: 1.4rem;\n padding-left: 0.6rem;\n text-align: left;\n }\n\n .CardBodyWrapper {\n min-width: 0;\n }\n\n .CardAction {\n flex-basis: auto;\n flex-shrink: 0;\n flex-grow: 0;\n padding-right: 0;\n margin-left: auto;\n }\n\n .Card.disabled .CardAction {\n opacity: 0; \n }\n\n .CardInfo {\n display: flex;\n flex-basis: auto;\n flex-direction: column;\n flex-grow: 0;\n flex-shrink: 1;\n justify-content: center;\n margin-left: auto; \n padding-right: 0;\n }\n\n .CardImage img {\n background: white;\n border-radius: 99rem;\n border: 1px solid white;\n background: rgba(0,0,0,0.1);\n box-shadow: 0 2px 8px rgb(0 0 0 / 10%);\n height: 2.8rem;\n position: relative;\n vertical-align: middle;\n width: 2.8rem;\n }\n\n .CardImage img.transparent {\n border: none;\n background: none;\n box-shadow: none;\n }\n \n .CardImage .BlockchainLogo {\n position: absolute;\n bottom: 0;\n right: 0;\n }\n\n .CardTitle {\n font-size: 0.9rem;\n color: rgb(150,150,150);\n }\n \n .CardText, a .CardText {\n color: ".concat(style.colors.text, ";\n flex: 1;\n font-size: 1.3rem;\n }\n\n .CardText strong {\n font-weight: 500;\n }\n\n .CardText small {\n font-size: 1.26rem;\n color: rgb(150,150,150);\n }\n\n .CardAction {\n opacity: 0.2;\n }\n\n .Card.More {\n display: inline-block;\n text-align: center;\n }\n ");
1683
1681
  });
1684
1682
 
1685
1683
  var DialogStyle = (function (style) {
1686
- return "\n\n .ReactDialogBackground {\n backdrop-filter: blur(5px);\n background: rgba(0,0,0,0.7);\n }\n\n .Dialog {\n margin: 0 auto;\n position: relative;\n width: 420px;\n box-shadow: 0 0 20px rgba(0,0,0,0.1);\n border-radius: 0.8rem;\n }\n\n @media screen and (max-width: 450px) {\n \n .Dialog, .ReactDialogAnimation {\n width: 100%;\n }\n\n }\n\n @media (orientation: portrait) and (max-width: 900px) {\n\n .Dialog {\n align-content: stretch;\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .DialogBody {\n flex: 1;\n align-items: flex-end;\n max-height: 60vh !important;\n }\n\n .DialogFooter {\n padding-bottom: 20px;\n }\n\n .ReactDialogStackCell {\n vertical-align: bottom;\n }\n\n .ReactDialogAnimation {\n bottom: -100px !important;\n max-height: 66vh !important;\n top: inherit !important;\n transition: opacity 0.4s ease, bottom 0.4s ease;\n }\n\n .ReactDialog.ReactDialogOpen .ReactDialogAnimation {\n bottom: 0px !important;\n }\n\n .DialogFooter {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n }\n\n .DialogBody {\n background: rgb(248,248,248);\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n .DialogBody.HeightAuto {\n height: auto;\n }\n\n .DialogHeader {\n background: rgb(248,248,248);\n border-top-left-radius: 0.8rem;\n border-top-right-radius: 0.8rem;\n display: flex;\n flex-direction: row;\n position: relative;\n }\n\n .DialogHeaderTitle {\n flex-basis: auto;\n flex-grow: 1;\n }\n \n .DialogHeaderAction {\n height: 3rem;\n }\n\n .DialogFooter {\n background: rgb(248,248,248);\n border-bottom-left-radius: 0.8rem;\n border-bottom-right-radius: 0.8rem;\n line-height: 1.5rem;\n min-height: 2rem;\n position: relative;\n text-align: center;\n }\n\n .ReactShadowDOMInsideContainer > .ReactDialog {\n display: table;\n }\n\n ";
1684
+ return "\n\n .ReactDialogBackground {\n backdrop-filter: blur(5px);\n background: rgba(0,0,0,0.7);\n }\n\n .Dialog {\n margin: 0 auto;\n position: relative;\n width: 420px;\n box-shadow: 0 0 20px rgba(0,0,0,0.1);\n border-radius: 0.8rem;\n background: rgb(248,248,248);\n }\n\n @media screen and (max-width: 450px) {\n \n .Dialog, .ReactDialogAnimation {\n width: 100%;\n }\n\n }\n\n @media (orientation: portrait) and (max-width: 900px) {\n\n .Dialog {\n align-content: stretch;\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .DialogBody {\n flex: 1;\n align-items: flex-end;\n }\n\n .DialogFooter {\n padding-bottom: 20px;\n }\n\n .ReactDialogStackCell {\n vertical-align: bottom;\n }\n\n .ReactDialogAnimation {\n bottom: -100px !important;\n top: inherit !important;\n transition: opacity 0.4s ease, bottom 0.4s ease;\n }\n\n .ReactDialog.ReactDialogOpen .ReactDialogAnimation {\n bottom: 0px !important;\n }\n\n .DialogFooter {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n }\n\n .DialogBody {\n background: rgb(248,248,248);\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n .DialogBody.ScrollHeight {\n height: 30vh !important;\n max-height: 30vh !important;\n }\n\n .DialogHeader {\n background: rgb(248,248,248);\n border-top-left-radius: 0.8rem;\n border-top-right-radius: 0.8rem;\n min-height: 3.4rem;\n position: relative;\n width: 100%;\n }\n\n .DialogHeaderActionRight {\n position: absolute;\n top: 0;\n right: 0;\n height: 3rem;\n }\n\n .DialogHeaderActionLeft {\n position: absolute;\n top: 0;\n left: 0;\n height: 3rem;\n }\n\n .DialogFooter {\n background: rgb(248,248,248);\n border-bottom-left-radius: 0.8rem;\n border-bottom-right-radius: 0.8rem;\n line-height: 1.5rem;\n min-height: 2rem;\n position: relative;\n text-align: center;\n }\n\n .ReactShadowDOMInsideContainer > .ReactDialog {\n display: table;\n }\n\n ";
1687
1685
  });
1688
1686
 
1689
1687
  var FontStyle = (function (style) {
@@ -1714,6 +1712,10 @@ var LabelStyle = (function (style) {
1714
1712
  return "\n\n .Label {\n background: rgb(248,248,248);\n border-radius: 999px;\n color: ".concat(style.colors.primary, ";\n font-size: 0.8rem;\n padding: 0.1rem 0.5rem;\n margin: 0.1rem;\n }\n\n ");
1715
1713
  });
1716
1714
 
1715
+ var LinkStyle = (function (style) {
1716
+ return "\n\n .Link {\n color: ".concat(style.colors.primary, ";\n cursor: pointer;\n text-decoration: none;\n }\n\n .Link:hover {\n filter: brightness(0.8);\n }\n\n .Link:active {\n filter: brightness(1.0);\n }\n ");
1717
+ });
1718
+
1717
1719
  var LoadingTextStyle = (function (style) {
1718
1720
  return "\n\n .LoadingText {\n color: ".concat(style.colors.buttonText, ";\n display: inline-block;\n text-decoration: none;\n }\n\n @keyframes blink {\n 0% { opacity: .2; }\n 20% { opacity: 1; }\n 100% { opacity: .2; }\n }\n \n .LoadingText .dot {\n animation-name: blink;\n animation-duration: 1.4s;\n animation-iteration-count: infinite;\n animation-fill-mode: both;\n }\n \n .LoadingText .dot:nth-child(2) {\n animation-delay: .2s;\n }\n \n .LoadingText .dot:nth-child(3) {\n animation-delay: .4s;\n }\n ");
1719
1721
  });
@@ -1738,10 +1740,18 @@ var ResetStyle = (function () {
1738
1740
  return "\n\n html, body, div, span, applet, object, iframe,\n h1, h2, h3, h4, h5, h6, p, blockquote, pre,\n a, abbr, acronym, address, big, cite, code,\n del, dfn, em, img, ins, kbd, q, s, samp,\n small, strike, strong, sub, sup, tt, var,\n b, u, i, center,\n dl, dt, dd, ol, ul, li,\n fieldset, form, label, legend,\n table, caption, tbody, tfoot, thead, tr, th, td,\n article, aside, canvas, details, embed, \n figure, figcaption, footer, header, hgroup, \n menu, nav, output, ruby, section, summary,\n time, mark, audio, video {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font: inherit;\n text-align: inherit;\n vertical-align: baseline;\n }\n\n article, aside, details, figcaption, figure, \n footer, header, hgroup, menu, nav, section {\n display: block;\n }\n\n body {\n line-height: 1;\n }\n\n ol, ul {\n list-style: none;\n }\n\n blockquote, q {\n quotes: none;\n }\n\n blockquote:before, blockquote:after,\n q:before, q:after {\n content: '';\n content: none;\n }\n \n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n\n * {\n box-sizing: border-box;\n }\n\n button {\n border: 0;\n background: none;\n outline: none;\n }\n\n ";
1739
1741
  });
1740
1742
 
1743
+ var SearchStyle = (function (style) {
1744
+ return "\n\n .Search {\n border-radius: 0.8rem;\n border: 1px solid rgba(0,0,0,0.2);\n outline: none !important;\n color: ".concat(style.colors.text, ";\n font-size: 1.2rem;\n padding: 0.8rem;\n width: 100%;\n }\n\n .Search::placeholder {\n color: rgb(180,180,180);\n } \n\n .Search:focus, .Search:focus-visible {\n border: 1px solid ").concat(style.colors.primary, ";\n }\n\n ");
1745
+ });
1746
+
1741
1747
  var SkeletonStyle = (function () {
1742
1748
  return "\n \n .Skeleton {\n background: rgb(230,230,230) !important;\n border: 0px solid transparent !important;\n box-shadow: none !important;\n cursor: inherit !important;\n line-height: 0;\n overflow: hidden;\n position: relative;\n }\n\n @keyframes SkeletonBackgroundAnimation {\n from {\n left: -500px;\n }\n to {\n left: +120%;\n }\n }\n\n .SkeletonBackground {\n animation: 2s SkeletonBackgroundAnimation 0.2s ease infinite;\n background: linear-gradient(to right, transparent 0%, rgba(0,0,0,0.1) 50%, transparent 100%);\n height: 100%;\n left: -140%;\n position: absolute;\n top: 0;\n width: 400px;\n }\n\n .SkeletonWrapper {\n line-height: 0;\n }\n ";
1743
1749
  });
1744
1750
 
1751
+ var TableStyle = (function (style) {
1752
+ return "\n\n .Table {\n border-collapse: separate;\n border-radius: 0.4rem;\n border-style: hidden;\n border: 1px solid rgba(0,0,0,0.1);\n font-size: 94%;\n width: 100%;\n }\n\n .Table tr.small td {\n font-size: 90%;\n }\n\n .Table tr td {\n border-bottom: 1px solid rgba(0,0,0,0.1);\n word-break: break-all;\n }\n \n .Table tr:last-child td {\n border-bottom: none;\n }\n \n .Table tr td {\n padding: 0.5rem 0.9rem;\n text-align: left;\n }\n \n .Table tr td:first-child {\n width: 30%\n }\n\n .Table tr td:last-child {\n width: 70%\n }\n \n .Table .TableSubTitle {\n font-weight: 300;\n opacity: 0.7;\n }\n\n .Table tr td:last-child {\n font-weight: 500;\n }\n ";
1753
+ });
1754
+
1745
1755
  var TextButtonStyle = (function (style) {
1746
1756
  return "\n\n .TextButton {\n cursor: pointer;\n font-size: 16px;\n color: ".concat(style.colors.primary, "\n }\n\n .TextButton:hover * {\n opacity: 1.0;\n }\n ");
1747
1757
  });
@@ -1751,7 +1761,15 @@ var TextStyle = (function (style) {
1751
1761
  });
1752
1762
 
1753
1763
  var TokenAmountStyle = (function () {
1754
- return "\n \n .TokenAmountRow {\n min-width: 0;\n width: 100%;\n display: flex;\n flex-direction: row;\n }\n\n .TokenAmountCell {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .TokenSymbolCell {\n \n }\n ";
1764
+ return "\n \n .TokenAmountRow {\n min-width: 0;\n width: 100%;\n display: flex;\n flex-direction: row;\n }\n\n .TokenAmountCell {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .TokenSymbolCell {\n }\n ";
1765
+ });
1766
+
1767
+ var TokenImageStyle = (function (style) {
1768
+ return "\n\n .TokenImage img {\n background: white;\n border-radius: 99rem;\n border: 1px solid white;\n background: rgba(0,0,0,0.1);\n box-shadow: 0 2px 8px rgb(0 0 0 / 10%);\n height: 2.8rem;\n position: relative;\n vertical-align: middle;\n width: 2.8rem;\n }\n\n .TokenImage.medium img {\n height: 5.8rem;\n width: 5.8rem;\n }\n ";
1769
+ });
1770
+
1771
+ var TooltipStyle = (function (style) {
1772
+ return "\n\n .Tooltip {\n background: ".concat(style.colors.primary, ";\n border-radius: 0.6rem;\n color: ").concat(style.colors.buttonText, ";\n padding: 0.6rem 0.8rem;\n position: relative;\n box-shadow: 0 0 8px rgba(0,0,0,0.2);\n }\n\n .TooltipArrowUp {\n border-bottom: 10px solid ").concat(style.colors.primary, ";\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n height: 0; \n left: 12px;\n position: absolute;\n top: -8px;\n width: 0; \n }\n ");
1755
1773
  });
1756
1774
 
1757
1775
  var styleRenderer = (function (style) {
@@ -1764,7 +1782,7 @@ var styleRenderer = (function (style) {
1764
1782
  },
1765
1783
  fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'
1766
1784
  }, style);
1767
- return [ResetStyle(), FontStyle(style), DialogStyle(), ButtonCircularStyle(), ButtonPrimaryStyle(style), CardStyle(style), PoweredByStyle(style), GraphicStyle(), SkeletonStyle(), TokenAmountStyle(), TextStyle(style), IconStyle(style), OpacityStyle(), PaddingStyle(), HeightStyle(), LabelStyle(style), LoadingTextStyle(style), RangeSliderStyle(style), InputStyle(), TextButtonStyle(style), ImageStyle(), BlockchainLogoStyle()].join('');
1785
+ return [ResetStyle(), FontStyle(style), DialogStyle(), ButtonCircularStyle(), ButtonPrimaryStyle(style), CardStyle(style), PoweredByStyle(style), GraphicStyle(), SkeletonStyle(), TokenAmountStyle(), TextStyle(style), IconStyle(style), OpacityStyle(), PaddingStyle(), HeightStyle(), LabelStyle(style), LoadingTextStyle(style), RangeSliderStyle(style), InputStyle(), TextButtonStyle(style), ImageStyle(), BlockchainLogoStyle(), SearchStyle(style), TokenImageStyle(), AlertStyle(), TableStyle(), LinkStyle(style), TooltipStyle(style)].join('');
1768
1786
  });
1769
1787
 
1770
1788
  var mount = (function (_ref, content) {
@@ -1877,7 +1895,7 @@ var Connect = function Connect(options) {
1877
1895
 
1878
1896
  return function (container) {
1879
1897
  return /*#__PURE__*/React.createElement(ErrorProvider, {
1880
- error: error,
1898
+ errorCallback: error,
1881
1899
  container: container,
1882
1900
  unmount: unmount
1883
1901
  }, /*#__PURE__*/React.createElement(UpdatableProvider, null, /*#__PURE__*/React.createElement(ClosableProvider, {
@@ -3008,7 +3026,7 @@ var DonationOverviewSkeleton = (function (props) {
3008
3026
  className: "LineHeightL FontSizeL"
3009
3027
  }, "Donation")),
3010
3028
  body: /*#__PURE__*/React.createElement("div", {
3011
- className: "PaddingTopS PaddingLeftM PaddingRightM PaddingBottomXS"
3029
+ className: "PaddingLeftM PaddingRightM PaddingBottomXS"
3012
3030
  }, /*#__PURE__*/React.createElement("div", {
3013
3031
  className: "Card Skeleton"
3014
3032
  }, /*#__PURE__*/React.createElement("div", {
@@ -3317,7 +3335,7 @@ var DonationOverviewDialog = (function (props) {
3317
3335
  className: "LineHeightL FontSizeL"
3318
3336
  }, "Donation")),
3319
3337
  body: /*#__PURE__*/React.createElement("div", {
3320
- className: "PaddingTopS PaddingLeftM PaddingRightM PaddingBottomXS"
3338
+ className: "PaddingLeftM PaddingRightM PaddingBottomXS"
3321
3339
  }, /*#__PURE__*/React.createElement("div", {
3322
3340
  className: ["Card", paymentState == 'initialized' ? '' : 'disabled'].join(' '),
3323
3341
  title: paymentState == 'initialized' ? "Change amount" : undefined,
@@ -3726,7 +3744,7 @@ var Donation = /*#__PURE__*/function () {
3726
3744
  }, function (unmount) {
3727
3745
  return function (container) {
3728
3746
  return /*#__PURE__*/React.createElement(ErrorProvider, {
3729
- error: error,
3747
+ errorCallback: error,
3730
3748
  container: container,
3731
3749
  unmount: unmount
3732
3750
  }, /*#__PURE__*/React.createElement(ConfigurationProvider, {
@@ -3790,11 +3808,6 @@ var SignLoginDialog = (function (props) {
3790
3808
  var _useContext = useContext(ErrorContext),
3791
3809
  setError = _useContext.setError;
3792
3810
 
3793
- var _useState = useState(false),
3794
- _useState2 = _slicedToArray(_useState, 2),
3795
- showSignButton = _useState2[0],
3796
- setShowSignButton = _useState2[1];
3797
-
3798
3811
  var _useContext2 = useContext(ConfigurationContext),
3799
3812
  message = _useContext2.message,
3800
3813
  endpoint = _useContext2.endpoint;
@@ -3838,20 +3851,14 @@ var SignLoginDialog = (function (props) {
3838
3851
  message: message,
3839
3852
  signature: signature
3840
3853
  }).then(props.resolve)["catch"](setError);
3841
- })["catch"](setError);
3854
+ })["catch"](function (error) {
3855
+ if (error && error.code && error.code == 4001) ; else {
3856
+ setError(error);
3857
+ }
3858
+ });
3842
3859
  };
3843
3860
 
3844
- useEffect(login, []);
3845
- useEffect(function () {
3846
- var timeout = setTimeout(function () {
3847
- return setShowSignButton(true);
3848
- }, 10000);
3849
- return function () {
3850
- return clearTimeout(timeout);
3851
- };
3852
- }, []);
3853
3861
  return /*#__PURE__*/React.createElement(Dialog$1, {
3854
- stacked: true,
3855
3862
  body: /*#__PURE__*/React.createElement("div", null, walletLogo && /*#__PURE__*/React.createElement("div", {
3856
3863
  className: "GraphicWrapper PaddingTopS PaddingBottomS"
3857
3864
  }, /*#__PURE__*/React.createElement("img", {
@@ -3863,8 +3870,8 @@ var SignLoginDialog = (function (props) {
3863
3870
  className: "Text PaddingTopS PaddingBottomS PaddingLeftS PaddingRightS"
3864
3871
  }, /*#__PURE__*/React.createElement("p", {
3865
3872
  className: "FontSizeM PaddingLeftM PaddingRightM"
3866
- }, "Please sign the login message with your connected wallet."))),
3867
- footer: showSignButton && /*#__PURE__*/React.createElement("div", {
3873
+ }, "Please click \"Log in\" and sign the message with your connected wallet."))),
3874
+ footer: /*#__PURE__*/React.createElement("div", {
3868
3875
  className: "PaddingTopXS PaddingRightM PaddingLeftM PaddingBottomM"
3869
3876
  }, /*#__PURE__*/React.createElement("button", {
3870
3877
  className: "ButtonPrimary",
@@ -3891,7 +3898,8 @@ var LoginStack = (function (props) {
3891
3898
  document: props.document,
3892
3899
  dialogs: {
3893
3900
  SignLogin: /*#__PURE__*/React.createElement(SignLoginDialog, {
3894
- resolve: props.resolve
3901
+ resolve: props.resolve,
3902
+ userClosedDialog: props.userClosedDialog
3895
3903
  })
3896
3904
  }
3897
3905
  });
@@ -3920,14 +3928,14 @@ var Login = function Login(options) {
3920
3928
  style: style,
3921
3929
  document: ensureDocument(document)
3922
3930
  }, function (unmount) {
3923
- var rejectBeforeUnmount = function rejectBeforeUnmount() {
3931
+ var userClosedDialog = function userClosedDialog() {
3924
3932
  reject('USER_CLOSED_DIALOG');
3925
3933
  unmount();
3926
3934
  };
3927
3935
 
3928
3936
  return function (container) {
3929
3937
  return /*#__PURE__*/React.createElement(ErrorProvider, {
3930
- error: error,
3938
+ errorCallback: error,
3931
3939
  container: container,
3932
3940
  unmount: unmount
3933
3941
  }, /*#__PURE__*/React.createElement(ConfigurationProvider, {
@@ -3937,7 +3945,7 @@ var Login = function Login(options) {
3937
3945
  recover: recover
3938
3946
  }
3939
3947
  }, /*#__PURE__*/React.createElement(UpdatableProvider, null, /*#__PURE__*/React.createElement(ClosableProvider, {
3940
- unmount: rejectBeforeUnmount
3948
+ unmount: userClosedDialog
3941
3949
  }, /*#__PURE__*/React.createElement(LoginStack, {
3942
3950
  document: document,
3943
3951
  container: container,
@@ -4009,7 +4017,7 @@ var PaymentOverviewSkeleton = (function (props) {
4009
4017
  className: "LineHeightL FontSizeL"
4010
4018
  }, "Payment")),
4011
4019
  body: /*#__PURE__*/React.createElement("div", {
4012
- className: "PaddingTopS PaddingLeftM PaddingRightM PaddingBottomXS"
4020
+ className: "PaddingLeftM PaddingRightM PaddingBottomXS"
4013
4021
  }, amountsMissing && /*#__PURE__*/React.createElement("div", {
4014
4022
  className: "Card Skeleton"
4015
4023
  }, /*#__PURE__*/React.createElement("div", {
@@ -4060,7 +4068,7 @@ var PaymentOverviewDialog = (function (props) {
4060
4068
  className: "LineHeightL FontSizeL"
4061
4069
  }, "Payment")),
4062
4070
  body: /*#__PURE__*/React.createElement("div", {
4063
- className: "PaddingTopS PaddingLeftM PaddingRightM PaddingBottomXS"
4071
+ className: "PaddingLeftM PaddingRightM PaddingBottomXS"
4064
4072
  }, amountsMissing && /*#__PURE__*/React.createElement("div", {
4065
4073
  className: ["Card", paymentState == 'initialized' ? '' : 'disabled'].join(' '),
4066
4074
  title: paymentState == 'initialized' ? "Change amount" : undefined,
@@ -4207,7 +4215,7 @@ var Payment = /*#__PURE__*/function () {
4207
4215
  }, function (unmount) {
4208
4216
  return function (container) {
4209
4217
  return /*#__PURE__*/React.createElement(ErrorProvider, {
4210
- error: error,
4218
+ errorCallback: error,
4211
4219
  container: container,
4212
4220
  unmount: unmount
4213
4221
  }, /*#__PURE__*/React.createElement(ConfigurationProvider, {
@@ -4361,7 +4369,7 @@ var SaleOverviewSkeleton = (function (props) {
4361
4369
  className: "LineHeightL FontSizeL"
4362
4370
  }, "Purchase")),
4363
4371
  body: /*#__PURE__*/React.createElement("div", {
4364
- className: "PaddingTopS PaddingLeftM PaddingRightM PaddingBottomXS"
4372
+ className: "PaddingLeftM PaddingRightM PaddingBottomXS"
4365
4373
  }, /*#__PURE__*/React.createElement("div", {
4366
4374
  className: "Card Skeleton",
4367
4375
  style: {
@@ -4445,7 +4453,7 @@ var SaleOverviewDialog = (function (props) {
4445
4453
  className: "LineHeightL FontSizeL"
4446
4454
  }, "Purchase")),
4447
4455
  body: /*#__PURE__*/React.createElement("div", {
4448
- className: "PaddingTopS PaddingLeftM PaddingRightM PaddingBottomXS"
4456
+ className: "PaddingLeftM PaddingRightM PaddingBottomXS"
4449
4457
  }, /*#__PURE__*/React.createElement("div", {
4450
4458
  className: ["Card", paymentState == 'initialized' ? '' : 'disabled'].join(' '),
4451
4459
  title: paymentState == 'initialized' ? "Change amount" : undefined,
@@ -4611,7 +4619,7 @@ var Sale = /*#__PURE__*/function () {
4611
4619
  }, function (unmount) {
4612
4620
  return function (container) {
4613
4621
  return /*#__PURE__*/React.createElement(ErrorProvider, {
4614
- error: error,
4622
+ errorCallback: error,
4615
4623
  container: container,
4616
4624
  unmount: unmount
4617
4625
  }, /*#__PURE__*/React.createElement(ConfigurationProvider, {
@@ -4671,12 +4679,552 @@ var Sale = /*#__PURE__*/function () {
4671
4679
  };
4672
4680
  }();
4673
4681
 
4682
+ var SelectionContext = /*#__PURE__*/React.createContext();
4683
+
4684
+ var SelectionProvider = (function (props) {
4685
+ var _useState = useState({}),
4686
+ _useState2 = _slicedToArray(_useState, 2),
4687
+ selection = _useState2[0],
4688
+ setSelection = _useState2[1];
4689
+
4690
+ return /*#__PURE__*/React.createElement(SelectionContext.Provider, {
4691
+ value: {
4692
+ selection: selection,
4693
+ setSelection: setSelection
4694
+ }
4695
+ }, props.children);
4696
+ });
4697
+
4698
+ var msToTime = (function (ms) {
4699
+ var year, month, day, hour, minute, second;
4700
+ second = Math.floor(ms / 1000);
4701
+ minute = Math.floor(second / 60);
4702
+ second = second % 60;
4703
+ hour = Math.floor(minute / 60);
4704
+ minute = minute % 60;
4705
+ day = Math.floor(hour / 24);
4706
+ hour = hour % 24;
4707
+ month = Math.floor(day / 30);
4708
+ day = day % 30;
4709
+ year = Math.floor(month / 12);
4710
+ month = month % 12;
4711
+ return {
4712
+ year: year,
4713
+ month: month,
4714
+ day: day,
4715
+ hour: hour,
4716
+ minute: minute,
4717
+ second: second
4718
+ };
4719
+ });
4720
+
4721
+ var ConfirmTokenSelectionDialog = (function (props) {
4722
+ var _useContext = useContext(SelectionContext),
4723
+ selection = _useContext.selection;
4724
+
4725
+ var _useContext2 = useContext(ClosableContext),
4726
+ setOpen = _useContext2.setOpen;
4727
+
4728
+ var token = selection.token;
4729
+ var address = token.address || token.external_id;
4730
+ var logo = token.logo || token.image;
4731
+ var blockchain = Blockchain.findByName(token.blockchain);
4732
+ var age = token.first_transfer ? msToTime(new Date() - new Date(token.first_transfer)) : undefined;
4733
+
4734
+ if (age) {
4735
+ age = [age.year && age.year >= 1 ? age.year >= 2 ? "".concat(age.year, " years") : "1 year" : undefined, age.month && age.month >= 1 ? age.month >= 2 ? "".concat(age.month, " months") : "1 month" : undefined, age.day && age.day >= 1 && age.month <= 1 && age.year < 1 ? age.day >= 2 ? "".concat(age.day, " days !!!") : "1 day !!!" : undefined].filter(function (n) {
4736
+ return n;
4737
+ }).join(' ');
4738
+ }
4739
+
4740
+ var holders = token.unique_senders ? token.unique_senders : undefined;
4741
+
4742
+ if (holders) {
4743
+ if (holders > 1000000) {
4744
+ holders = "Millions";
4745
+ } else if (holders > 100000) {
4746
+ holders = "Hundreds of Thousands";
4747
+ } else if (holders > 2000) {
4748
+ holders = "Thousands";
4749
+ } else if (holders > 100) {
4750
+ holders = "Hundreds";
4751
+ } else {
4752
+ holders = "Only a Few!!!";
4753
+ }
4754
+ }
4755
+
4756
+ var onClickConfirm = function onClickConfirm() {
4757
+ setOpen(false);
4758
+ props.resolve({
4759
+ blockchain: token.blockchain,
4760
+ address: token.external_id,
4761
+ symbol: token.symbol,
4762
+ name: token.name,
4763
+ decimals: token.decimals,
4764
+ logo: token.image
4765
+ });
4766
+ setTimeout(props.unmount, 300);
4767
+ };
4768
+
4769
+ return /*#__PURE__*/React.createElement(Dialog$1, {
4770
+ header: /*#__PURE__*/React.createElement("div", {
4771
+ className: "PaddingTopS PaddingLeftM PaddingRightM TextLeft"
4772
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h1", {
4773
+ className: "LineHeightL FontSizeL"
4774
+ }, "Confirm Selection"))),
4775
+ stacked: true,
4776
+ body: /*#__PURE__*/React.createElement("div", {
4777
+ className: "PaddingTopS PaddingLeftM PaddingRightM"
4778
+ }, /*#__PURE__*/React.createElement("div", {
4779
+ className: "TokenImage medium"
4780
+ }, logo && /*#__PURE__*/React.createElement("img", {
4781
+ src: logo
4782
+ }), !logo && /*#__PURE__*/React.createElement(TokenImage, {
4783
+ blockchain: token.blockchain,
4784
+ address: address
4785
+ })), /*#__PURE__*/React.createElement("div", {
4786
+ className: "PaddingTopS"
4787
+ }, /*#__PURE__*/React.createElement("div", {
4788
+ className: "Alert"
4789
+ }, /*#__PURE__*/React.createElement("strong", null, "Please review this information"))), /*#__PURE__*/React.createElement("div", {
4790
+ className: "PaddingTopXS"
4791
+ }, /*#__PURE__*/React.createElement("table", {
4792
+ className: "Table"
4793
+ }, /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement("tr", {
4794
+ className: "small"
4795
+ }, /*#__PURE__*/React.createElement("td", {
4796
+ colSpan: "2"
4797
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("a", {
4798
+ className: "Link",
4799
+ href: blockchain.explorerUrlFor({
4800
+ token: address
4801
+ }),
4802
+ target: "_blank",
4803
+ rel: "noopener noreferrer"
4804
+ }, address)))), /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", {
4805
+ className: "TableSubTitle"
4806
+ }, "Blockchain")), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", null, blockchain.label))), /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", {
4807
+ className: "TableSubTitle"
4808
+ }, "Symbol")), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", null, token.symbol))), /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", {
4809
+ className: "TableSubTitle"
4810
+ }, "Name")), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", null, token.name))), age && /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", {
4811
+ className: "TableSubTitle"
4812
+ }, "Age")), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", null, age))), holders && /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", {
4813
+ className: "TableSubTitle"
4814
+ }, "Holders")), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", null, holders))))))),
4815
+ footer: /*#__PURE__*/React.createElement("div", {
4816
+ className: "PaddingTopS PaddingRightM PaddingLeftM PaddingBottomS"
4817
+ }, /*#__PURE__*/React.createElement("button", {
4818
+ className: "ButtonPrimary",
4819
+ onClick: onClickConfirm
4820
+ }, "Confirm"))
4821
+ });
4822
+ });
4823
+
4824
+ var SelectBlockchainDialog = (function (props) {
4825
+ var _useContext = useContext(SelectionContext),
4826
+ setSelection = _useContext.setSelection;
4827
+
4828
+ var _useContext2 = useContext(NavigateStackContext),
4829
+ navigate = _useContext2.navigate;
4830
+
4831
+ var stacked = Object.keys(props.selection).length > 1;
4832
+ var blockchains = [Blockchain.findByName('ethereum'), Blockchain.findByName('bsc')];
4833
+
4834
+ var selectBlockchain = function selectBlockchain(blockchain) {
4835
+ setSelection(Object.assign(props.selection, {
4836
+ blockchain: blockchain
4837
+ }));
4838
+
4839
+ if (stacked) {
4840
+ navigate('back');
4841
+ } else {
4842
+ props.resolve(blockchain);
4843
+ }
4844
+ };
4845
+
4846
+ var elements = blockchains.map(function (blockchain, index) {
4847
+ return /*#__PURE__*/React.createElement("div", {
4848
+ key: index,
4849
+ className: "Card Row",
4850
+ onClick: function onClick() {
4851
+ return selectBlockchain(blockchain);
4852
+ }
4853
+ }, /*#__PURE__*/React.createElement("div", {
4854
+ className: "CardImage"
4855
+ }, /*#__PURE__*/React.createElement("img", {
4856
+ className: "transparent",
4857
+ src: blockchain.logo
4858
+ })), /*#__PURE__*/React.createElement("div", {
4859
+ className: "CardBody"
4860
+ }, /*#__PURE__*/React.createElement("span", {
4861
+ className: "CardText"
4862
+ }, blockchain.label)));
4863
+ });
4864
+ return /*#__PURE__*/React.createElement(Dialog$1, {
4865
+ header: /*#__PURE__*/React.createElement("div", {
4866
+ className: "PaddingTopS PaddingLeftM PaddingRightM TextLeft"
4867
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h1", {
4868
+ className: "LineHeightL FontSizeL"
4869
+ }, "Select Blockchain"))),
4870
+ stacked: stacked,
4871
+ bodyClassName: "ScrollHeight",
4872
+ body: /*#__PURE__*/React.createElement("div", {
4873
+ className: "PaddingTopS"
4874
+ }, elements),
4875
+ footer: /*#__PURE__*/React.createElement("div", {
4876
+ className: "PaddingTopS PaddingRightM PaddingLeftM PaddingBottomS"
4877
+ })
4878
+ });
4879
+ });
4880
+
4881
+ var SelectTokenDialog = (function (props) {
4882
+ var _useContext = useContext(NavigateStackContext),
4883
+ navigate = _useContext.navigate;
4884
+
4885
+ var _useContext2 = useContext(ClosableContext),
4886
+ setOpen = _useContext2.setOpen;
4887
+
4888
+ var _useContext3 = useContext(SelectionContext),
4889
+ setSelection = _useContext3.setSelection;
4890
+
4891
+ var _useState = useState(Blockchain.findByName('ethereum')),
4892
+ _useState2 = _slicedToArray(_useState, 2),
4893
+ blockchain = _useState2[0],
4894
+ setBlockchain = _useState2[1];
4895
+
4896
+ var _useState3 = useState(),
4897
+ _useState4 = _slicedToArray(_useState3, 2),
4898
+ requestController = _useState4[0],
4899
+ setRequestController = _useState4[1];
4900
+
4901
+ var _useState5 = useState(false),
4902
+ _useState6 = _slicedToArray(_useState5, 2),
4903
+ showAddToken = _useState6[0],
4904
+ setShowAddToken = _useState6[1];
4905
+
4906
+ var _useState7 = useState([]),
4907
+ _useState8 = _slicedToArray(_useState7, 2),
4908
+ tokens = _useState8[0],
4909
+ setTokens = _useState8[1];
4910
+
4911
+ var _useState9 = useState(),
4912
+ _useState10 = _slicedToArray(_useState9, 2);
4913
+ _useState10[0];
4914
+ _useState10[1];
4915
+
4916
+ var searchElement = useRef();
4917
+ useEffect(function () {
4918
+ setSelection(Object.assign(props.selection, {
4919
+ blockchain: blockchain,
4920
+ token: undefined
4921
+ }));
4922
+ }, []);
4923
+ useEffect(function () {
4924
+ setBlockchain(props.selection.blockchain);
4925
+ setTokens(props.selection.blockchain.tokens);
4926
+
4927
+ if (searchElement.current) {
4928
+ searchElement.current.value = '';
4929
+ searchElement.current.focus();
4930
+ }
4931
+ }, [props.selection.blockchain]);
4932
+
4933
+ var onClickChangeBlockchain = function onClickChangeBlockchain() {
4934
+ navigate('SelectBlockchain');
4935
+ };
4936
+
4937
+ var onClickAddToken = function onClickAddToken() {
4938
+ setShowAddToken(true);
4939
+
4940
+ if (searchElement.current) {
4941
+ searchElement.current.value = '';
4942
+ searchElement.current.focus();
4943
+ }
4944
+ };
4945
+
4946
+ var onChangeSearch = function onChangeSearch(event) {
4947
+ if (requestController) {
4948
+ requestController.abort();
4949
+ }
4950
+
4951
+ var newRequestController = new AbortController();
4952
+ setRequestController(newRequestController);
4953
+ var signal = newRequestController.signal;
4954
+ var term = event.target.value;
4955
+
4956
+ if (term.match(/^0x/)) {
4957
+ setTokens([]);
4958
+ var token;
4959
+
4960
+ try {
4961
+ token = new Token({
4962
+ blockchain: blockchain.name,
4963
+ address: term
4964
+ });
4965
+ } catch (_unused) {}
4966
+
4967
+ if (token == undefined) {
4968
+ return;
4969
+ }
4970
+
4971
+ Promise.all([token.name(), token.symbol(), token.decimals()]).then(function (_ref) {
4972
+ var _ref2 = _slicedToArray(_ref, 3),
4973
+ name = _ref2[0],
4974
+ symbol = _ref2[1],
4975
+ decimals = _ref2[2];
4976
+
4977
+ setTokens([{
4978
+ name: name,
4979
+ symbol: symbol,
4980
+ decimals: decimals,
4981
+ address: term,
4982
+ blockchain: blockchain.name
4983
+ }]);
4984
+ });
4985
+ } else if (term && term.length) {
4986
+ setTokens([]);
4987
+ fetch("https://api.depay.fi/v2/tokens/search?blockchain=".concat(blockchain.name, "&term=").concat(term), {
4988
+ signal: signal,
4989
+ headers: {
4990
+ 'X-Api-Key': apiKey
4991
+ }
4992
+ }).then(function (response) {
4993
+ if (response.status == 200) {
4994
+ response.json().then(function (tokens) {
4995
+ setTokens(tokens);
4996
+ });
4997
+ }
4998
+ })["catch"](function () {});
4999
+ } else {
5000
+ setTokens(props.selection.blockchain.tokens);
5001
+ }
5002
+ };
5003
+
5004
+ var select = function select(token) {
5005
+ if (blockchain.tokens.find(function (majorToken) {
5006
+ return majorToken.address.toLowerCase() == (token.address || token.external_id).toLowerCase();
5007
+ })) {
5008
+ setOpen(false);
5009
+ props.resolve({
5010
+ blockchain: blockchain.name,
5011
+ address: token.address || token.external_id,
5012
+ logo: token.logo || token.image,
5013
+ name: token.name,
5014
+ symbol: token.symbol,
5015
+ decimals: token.decimals
5016
+ });
5017
+ setTimeout(props.unmount, 300);
5018
+ } else {
5019
+ setSelection(Object.assign(props.selection, {
5020
+ token: token
5021
+ }));
5022
+ navigate('ConfirmTokenSelection');
5023
+ }
5024
+ };
5025
+
5026
+ var elements = tokens.map(function (token, index) {
5027
+ return /*#__PURE__*/React.createElement("div", {
5028
+ key: "".concat(index, "-").concat(token.address),
5029
+ className: "Card Row",
5030
+ onClick: function onClick() {
5031
+ return select(token);
5032
+ }
5033
+ }, /*#__PURE__*/React.createElement("div", {
5034
+ className: "CardImage"
5035
+ }, token.logo && /*#__PURE__*/React.createElement("img", {
5036
+ src: token.logo
5037
+ }), token.image && /*#__PURE__*/React.createElement("img", {
5038
+ src: token.image
5039
+ }), !(token.logo || token.image) && /*#__PURE__*/React.createElement(TokenImage, {
5040
+ blockchain: token.blockchain,
5041
+ address: token.external_id || token.address
5042
+ })), /*#__PURE__*/React.createElement("div", {
5043
+ className: "CardBody"
5044
+ }, /*#__PURE__*/React.createElement("div", {
5045
+ className: "CardTokenSymbol",
5046
+ title: token.symbol
5047
+ }, /*#__PURE__*/React.createElement("span", {
5048
+ className: "CardText"
5049
+ }, token.symbol)), /*#__PURE__*/React.createElement("div", {
5050
+ className: "CardTokenName",
5051
+ title: token.name
5052
+ }, /*#__PURE__*/React.createElement("span", {
5053
+ className: "CardText"
5054
+ }, token.name))));
5055
+ });
5056
+
5057
+ if (props.selection.blockchain == undefined) {
5058
+ return null;
5059
+ }
5060
+
5061
+ return /*#__PURE__*/React.createElement(Dialog$1, {
5062
+ header: /*#__PURE__*/React.createElement("div", {
5063
+ className: "PaddingTopS PaddingLeftM PaddingRightM TextLeft"
5064
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h1", {
5065
+ className: "LineHeightL FontSizeL"
5066
+ }, "Select Token")), /*#__PURE__*/React.createElement("div", {
5067
+ className: "PaddingTopS PaddingBottomXS"
5068
+ }, /*#__PURE__*/React.createElement("div", {
5069
+ className: "Card small",
5070
+ onClick: onClickChangeBlockchain
5071
+ }, /*#__PURE__*/React.createElement("div", {
5072
+ className: "CardImage small"
5073
+ }, /*#__PURE__*/React.createElement("img", {
5074
+ className: "transparent",
5075
+ src: props.selection.blockchain.logo
5076
+ })), /*#__PURE__*/React.createElement("div", {
5077
+ className: "CardBody"
5078
+ }, props.selection.blockchain.label), /*#__PURE__*/React.createElement("div", {
5079
+ className: "CardAction"
5080
+ }, /*#__PURE__*/React.createElement(ChevronRight, null)))), /*#__PURE__*/React.createElement("div", {
5081
+ className: "PaddingTopXS PaddingBottomS"
5082
+ }, /*#__PURE__*/React.createElement("input", {
5083
+ onChange: onChangeSearch,
5084
+ className: "Search",
5085
+ autoFocus: true,
5086
+ placeholder: "Search name or paste address",
5087
+ ref: searchElement
5088
+ }), showAddToken && /*#__PURE__*/React.createElement("div", {
5089
+ className: "PaddingTopXS PaddingRightXS PaddingLeftXS"
5090
+ }, /*#__PURE__*/React.createElement("div", {
5091
+ className: "Tooltip"
5092
+ }, /*#__PURE__*/React.createElement("span", {
5093
+ className: "TooltipArrowUp"
5094
+ }), "Paste or enter token address here!")))),
5095
+ bodyClassName: "ScrollHeight",
5096
+ body: /*#__PURE__*/React.createElement("div", {
5097
+ className: ""
5098
+ }, elements),
5099
+ footer: /*#__PURE__*/React.createElement("div", {
5100
+ className: "PaddingTopS PaddingRightM PaddingLeftM PaddingBottomS"
5101
+ }, /*#__PURE__*/React.createElement("div", {
5102
+ className: "PaddingTopXS PaddingBottomXS"
5103
+ }, /*#__PURE__*/React.createElement("div", {
5104
+ className: "Link",
5105
+ onClick: onClickAddToken
5106
+ }, "Token missing? Add it.")))
5107
+ });
5108
+ });
5109
+
5110
+ var SelectStack = (function (props) {
5111
+ var _useContext = useContext(ConfigurationContext),
5112
+ what = _useContext.what;
5113
+
5114
+ var _useContext2 = useContext(ClosableContext),
5115
+ open = _useContext2.open,
5116
+ close = _useContext2.close;
5117
+
5118
+ var _useContext3 = useContext(SelectionContext),
5119
+ selection = _useContext3.selection;
5120
+
5121
+ var start;
5122
+
5123
+ switch (what) {
5124
+ default:
5125
+ start = 'SelectToken';
5126
+ }
5127
+
5128
+ return /*#__PURE__*/React.createElement(ReactDialogStack, {
5129
+ open: open,
5130
+ close: close,
5131
+ start: start,
5132
+ container: props.container,
5133
+ document: props.document,
5134
+ dialogs: {
5135
+ SelectToken: /*#__PURE__*/React.createElement(SelectTokenDialog, {
5136
+ selection: selection,
5137
+ resolve: props.resolve,
5138
+ unmount: props.unmount
5139
+ }),
5140
+ SelectBlockchain: /*#__PURE__*/React.createElement(SelectBlockchainDialog, {
5141
+ selection: selection,
5142
+ resolve: props.resolve
5143
+ }),
5144
+ ConfirmTokenSelection: /*#__PURE__*/React.createElement(ConfirmTokenSelectionDialog, {
5145
+ selection: selection,
5146
+ resolve: props.resolve,
5147
+ unmount: props.unmount
5148
+ })
5149
+ }
5150
+ });
5151
+ });
5152
+
5153
+ var Select = function Select(options) {
5154
+ var style, error, document, what;
5155
+
5156
+ if (_typeof(options) == 'object') {
5157
+ style = options.style;
5158
+ error = options.error;
5159
+ document = options.document;
5160
+ what = options.what;
5161
+ }
5162
+
5163
+ var startupError;
5164
+
5165
+ if (what == undefined) {
5166
+ startupError = '"what" needs to be configured!';
5167
+ } else if (['token'].indexOf(what) < 0) {
5168
+ startupError = "Unknown \"what\" configured: ".concat(what, "!");
5169
+ }
5170
+
5171
+ return new Promise( /*#__PURE__*/function () {
5172
+ var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(resolve, reject) {
5173
+ return regenerator.wrap(function _callee$(_context) {
5174
+ while (1) {
5175
+ switch (_context.prev = _context.next) {
5176
+ case 0:
5177
+ mount({
5178
+ style: style,
5179
+ document: ensureDocument(document)
5180
+ }, function (unmount) {
5181
+ var userClosedDialog = function userClosedDialog() {
5182
+ reject('USER_CLOSED_DIALOG');
5183
+ unmount();
5184
+ };
5185
+
5186
+ return function (container) {
5187
+ return /*#__PURE__*/React.createElement(ErrorProvider, {
5188
+ error: startupError,
5189
+ errorCallback: error,
5190
+ container: container,
5191
+ unmount: unmount
5192
+ }, /*#__PURE__*/React.createElement(ConfigurationProvider, {
5193
+ configuration: {
5194
+ what: what
5195
+ }
5196
+ }, /*#__PURE__*/React.createElement(UpdatableProvider, null, /*#__PURE__*/React.createElement(ClosableProvider, {
5197
+ unmount: userClosedDialog
5198
+ }, /*#__PURE__*/React.createElement(SelectionProvider, null, /*#__PURE__*/React.createElement(SelectStack, {
5199
+ document: document,
5200
+ container: container,
5201
+ unmount: unmount,
5202
+ resolve: resolve
5203
+ })), /*#__PURE__*/React.createElement(PoweredBy, null)))));
5204
+ };
5205
+ });
5206
+
5207
+ case 1:
5208
+ case "end":
5209
+ return _context.stop();
5210
+ }
5211
+ }
5212
+ }, _callee);
5213
+ }));
5214
+
5215
+ return function (_x, _x2) {
5216
+ return _ref.apply(this, arguments);
5217
+ };
5218
+ }());
5219
+ };
5220
+
4674
5221
  var DePayWidgets = {
4675
5222
  Connect: Connect,
4676
5223
  Donation: Donation,
4677
5224
  Login: Login,
4678
5225
  Payment: Payment,
4679
5226
  Sale: Sale,
5227
+ Select: Select,
4680
5228
  provider: provider
4681
5229
  };
4682
5230