UNPKG

autemaliquam

Version:

A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps

1 lines 51.7 kB
{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nvar _connectorsByName,\n    _jsxFileName = \"/home/jsw/code/codeoneline/web3-react/example/pages/index.tsx\",\n    _s = $RefreshSig$(),\n    _s2 = $RefreshSig$(),\n    _s3 = $RefreshSig$(),\n    _s4 = $RefreshSig$(),\n    _s5 = $RefreshSig$(),\n    _s6 = $RefreshSig$();\n\nvar __jsx = React.createElement;\nimport React from 'react';\nimport { Web3ReactProvider, useWeb3React, UnsupportedChainIdError } from '@web3-react-wan/core';\nimport { NoEthereumProviderError, UserRejectedRequestError as UserRejectedRequestErrorInjected } from '@web3-react-wan/injected-connector';\nimport { UserRejectedRequestError as UserRejectedRequestErrorWalletConnect } from '@web3-react-wan/walletconnect-connector';\nimport { UserRejectedRequestError as UserRejectedRequestErrorFrame } from '@web3-react-wan/frame-connector';\nimport { Web3Provider } from '@wansproject/providers';\nimport { formatEther } from '@wansproject/units';\nimport { useEagerConnect, useInactiveListener } from '../hooks';\nimport { injected, network, walletconnect, walletlink, ledger, trezor, frame, authereum, fortmatic, magic, portis, squarelink, torus } from '../connectors';\nimport { Spinner } from '../components/Spinner';\nvar ConnectorNames;\n\n(function (ConnectorNames) {\n  ConnectorNames[\"Injected\"] = \"Injected\";\n  ConnectorNames[\"Network\"] = \"Network\";\n  ConnectorNames[\"WalletConnect\"] = \"WalletConnect\";\n  ConnectorNames[\"WalletLink\"] = \"WalletLink\";\n  ConnectorNames[\"Ledger\"] = \"Ledger\";\n  ConnectorNames[\"Trezor\"] = \"Trezor\";\n  ConnectorNames[\"Frame\"] = \"Frame\";\n  ConnectorNames[\"Authereum\"] = \"Authereum\";\n  ConnectorNames[\"Fortmatic\"] = \"Fortmatic\";\n  ConnectorNames[\"Magic\"] = \"Magic\";\n  ConnectorNames[\"Portis\"] = \"Portis\";\n  ConnectorNames[\"Squarelink\"] = \"Squarelink\";\n  ConnectorNames[\"Torus\"] = \"Torus\";\n})(ConnectorNames || (ConnectorNames = {}));\n\nvar connectorsByName = (_connectorsByName = {}, _defineProperty(_connectorsByName, ConnectorNames.Injected, injected), _defineProperty(_connectorsByName, ConnectorNames.Network, network), _defineProperty(_connectorsByName, ConnectorNames.WalletConnect, walletconnect), _defineProperty(_connectorsByName, ConnectorNames.WalletLink, walletlink), _defineProperty(_connectorsByName, ConnectorNames.Ledger, ledger), _defineProperty(_connectorsByName, ConnectorNames.Trezor, trezor), _defineProperty(_connectorsByName, ConnectorNames.Frame, frame), _defineProperty(_connectorsByName, ConnectorNames.Authereum, authereum), _defineProperty(_connectorsByName, ConnectorNames.Fortmatic, fortmatic), _defineProperty(_connectorsByName, ConnectorNames.Magic, magic), _defineProperty(_connectorsByName, ConnectorNames.Portis, portis), _defineProperty(_connectorsByName, ConnectorNames.Squarelink, squarelink), _defineProperty(_connectorsByName, ConnectorNames.Torus, torus), _connectorsByName);\n\nfunction getErrorMessage(error) {\n  if (error instanceof NoEthereumProviderError) {\n    return 'No Ethereum browser extension detected, install MetaMask on desktop or visit from a dApp browser on mobile.';\n  } else if (error instanceof UnsupportedChainIdError) {\n    return \"You're connected to an unsupported network.\";\n  } else if (error instanceof UserRejectedRequestErrorInjected || error instanceof UserRejectedRequestErrorWalletConnect || error instanceof UserRejectedRequestErrorFrame) {\n    return 'Please authorize this website to access your Ethereum account.';\n  } else {\n    console.error(error);\n    return 'An unknown error occurred. Check the console for more details.';\n  }\n}\n\nfunction getLibrary(provider) {\n  var library = new Web3Provider(provider);\n  library.pollingInterval = 12000;\n  return library;\n}\n\nexport default function () {\n  return __jsx(Web3ReactProvider, {\n    getLibrary: getLibrary,\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 87,\n      columnNumber: 5\n    }\n  }, __jsx(App, {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 88,\n      columnNumber: 7\n    }\n  }));\n}\n\nfunction ChainId() {\n  _s();\n\n  var _useWeb3React = useWeb3React(),\n      chainId = _useWeb3React.chainId;\n\n  return __jsx(React.Fragment, null, __jsx(\"span\", {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 98,\n      columnNumber: 7\n    }\n  }, \"Chain Id\"), __jsx(\"span\", {\n    role: \"img\",\n    \"aria-label\": \"chain\",\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 99,\n      columnNumber: 7\n    }\n  }, \"\\u26D3\"), __jsx(\"span\", {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 102,\n      columnNumber: 7\n    }\n  }, chainId !== null && chainId !== void 0 ? chainId : ''));\n}\n\n_s(ChainId, \"reA9FJLirN6bQm5X4sUUozGx1bA=\", false, function () {\n  return [useWeb3React];\n});\n\n_c = ChainId;\n\nfunction BlockNumber() {\n  _s2();\n\n  var _useWeb3React2 = useWeb3React(),\n      chainId = _useWeb3React2.chainId,\n      library = _useWeb3React2.library;\n\n  var _React$useState = React.useState(),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      blockNumber = _React$useState2[0],\n      setBlockNumber = _React$useState2[1];\n\n  React.useEffect(function () {\n    if (!!library) {\n      var stale = false;\n      library.getBlockNumber().then(function (blockNumber) {\n        if (!stale) {\n          setBlockNumber(blockNumber);\n        }\n      })[\"catch\"](function () {\n        if (!stale) {\n          setBlockNumber(null);\n        }\n      });\n\n      var updateBlockNumber = function updateBlockNumber(blockNumber) {\n        setBlockNumber(blockNumber);\n      };\n\n      library.on('block', updateBlockNumber);\n      return function () {\n        stale = true;\n        library.removeListener('block', updateBlockNumber);\n        setBlockNumber(undefined);\n      };\n    }\n  }, [library, chainId]); // ensures refresh if referential identity of library doesn't change across chainIds\n\n  return __jsx(React.Fragment, null, __jsx(\"span\", {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 143,\n      columnNumber: 7\n    }\n  }, \"Block Number\"), __jsx(\"span\", {\n    role: \"img\",\n    \"aria-label\": \"numbers\",\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 144,\n      columnNumber: 7\n    }\n  }, \"\\uD83D\\uDD22\"), __jsx(\"span\", {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 147,\n      columnNumber: 7\n    }\n  }, blockNumber === null ? 'Error' : blockNumber !== null && blockNumber !== void 0 ? blockNumber : ''));\n}\n\n_s2(BlockNumber, \"0DoBuqyGtF4sYtNebgbnhkk9wTw=\", false, function () {\n  return [useWeb3React];\n});\n\n_c2 = BlockNumber;\n\nfunction Account() {\n  _s3();\n\n  var _useWeb3React3 = useWeb3React(),\n      account = _useWeb3React3.account;\n\n  return __jsx(React.Fragment, null, __jsx(\"span\", {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 157,\n      columnNumber: 7\n    }\n  }, \"Account\"), __jsx(\"span\", {\n    role: \"img\",\n    \"aria-label\": \"robot\",\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 158,\n      columnNumber: 7\n    }\n  }, \"\\uD83E\\uDD16\"), __jsx(\"span\", {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 161,\n      columnNumber: 7\n    }\n  }, account === null ? '-' : account ? \"\".concat(account.substring(0, 6), \"...\").concat(account.substring(account.length - 4)) : ''));\n}\n\n_s3(Account, \"Yw4fkvk9SNw3FxQ8wmZp/p1e7+E=\", false, function () {\n  return [useWeb3React];\n});\n\n_c3 = Account;\n\nfunction Balance() {\n  _s4();\n\n  var _useWeb3React4 = useWeb3React(),\n      account = _useWeb3React4.account,\n      library = _useWeb3React4.library,\n      chainId = _useWeb3React4.chainId;\n\n  var _React$useState3 = React.useState(),\n      _React$useState4 = _slicedToArray(_React$useState3, 2),\n      balance = _React$useState4[0],\n      setBalance = _React$useState4[1];\n\n  React.useEffect(function () {\n    if (!!account && !!library) {\n      var stale = false;\n      library.getBalance(account).then(function (balance) {\n        if (!stale) {\n          setBalance(balance);\n        }\n      })[\"catch\"](function () {\n        if (!stale) {\n          setBalance(null);\n        }\n      });\n      return function () {\n        stale = true;\n        setBalance(undefined);\n      };\n    }\n  }, [account, library, chainId]); // ensures refresh if referential identity of library doesn't change across chainIds\n\n  return __jsx(React.Fragment, null, __jsx(\"span\", {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 202,\n      columnNumber: 7\n    }\n  }, \"Balance\"), __jsx(\"span\", {\n    role: \"img\",\n    \"aria-label\": \"gold\",\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 203,\n      columnNumber: 7\n    }\n  }, \"\\uD83D\\uDCB0\"), __jsx(\"span\", {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 206,\n      columnNumber: 7\n    }\n  }, balance === null ? 'Error' : balance ? \"\\u039E\".concat(formatEther(balance)) : ''));\n}\n\n_s4(Balance, \"M1WVM1XYBvl8/UPoZ+Zp2BzPIno=\", false, function () {\n  return [useWeb3React];\n});\n\n_c4 = Balance;\n\nfunction Header() {\n  _s5();\n\n  var _useWeb3React5 = useWeb3React(),\n      active = _useWeb3React5.active,\n      error = _useWeb3React5.error;\n\n  return __jsx(React.Fragment, null, __jsx(\"h1\", {\n    style: {\n      margin: '1rem',\n      textAlign: 'right'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 216,\n      columnNumber: 7\n    }\n  }, active ? '🟢' : error ? '🔴' : '🟠'), __jsx(\"h3\", {\n    style: {\n      display: 'grid',\n      gridGap: '1rem',\n      gridTemplateColumns: '1fr min-content 1fr',\n      maxWidth: '20rem',\n      lineHeight: '2rem',\n      margin: 'auto'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 217,\n      columnNumber: 7\n    }\n  }, __jsx(ChainId, {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 227,\n      columnNumber: 9\n    }\n  }), __jsx(BlockNumber, {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 228,\n      columnNumber: 9\n    }\n  }), __jsx(Account, {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 229,\n      columnNumber: 9\n    }\n  }), __jsx(Balance, {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 230,\n      columnNumber: 9\n    }\n  })));\n}\n\n_s5(Header, \"5Wc8Z9LF2TZggKnK8RHaXo3D1Z0=\", false, function () {\n  return [useWeb3React];\n});\n\n_c5 = Header;\n\nfunction App() {\n  _s6();\n\n  var _this = this;\n\n  var context = useWeb3React();\n  var connector = context.connector,\n      library = context.library,\n      chainId = context.chainId,\n      account = context.account,\n      activate = context.activate,\n      deactivate = context.deactivate,\n      active = context.active,\n      error = context.error; // handle logic to recognize the connector currently being activated\n\n  var _React$useState5 = React.useState(),\n      _React$useState6 = _slicedToArray(_React$useState5, 2),\n      activatingConnector = _React$useState6[0],\n      setActivatingConnector = _React$useState6[1];\n\n  React.useEffect(function () {\n    if (activatingConnector && activatingConnector === connector) {\n      setActivatingConnector(undefined);\n    }\n  }, [activatingConnector, connector]); // handle logic to eagerly connect to the injected ethereum provider, if it exists and has granted access already\n\n  var triedEager = useEagerConnect(); // handle logic to connect in reaction to certain events on the injected ethereum provider, if it exists\n\n  useInactiveListener(!triedEager || !!activatingConnector);\n  return __jsx(React.Fragment, null, __jsx(Header, {\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 256,\n      columnNumber: 7\n    }\n  }), __jsx(\"hr\", {\n    style: {\n      margin: '2rem'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 257,\n      columnNumber: 7\n    }\n  }), __jsx(\"div\", {\n    style: {\n      display: 'grid',\n      gridGap: '1rem',\n      gridTemplateColumns: '1fr 1fr',\n      maxWidth: '20rem',\n      margin: 'auto'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 258,\n      columnNumber: 7\n    }\n  }, Object.keys(connectorsByName).map(function (name) {\n    var currentConnector = connectorsByName[name];\n    var activating = currentConnector === activatingConnector;\n    var connected = currentConnector === connector;\n    var disabled = !triedEager || !!activatingConnector || connected || !!error;\n    return __jsx(\"button\", {\n      style: {\n        height: '3rem',\n        borderRadius: '1rem',\n        borderColor: activating ? 'orange' : connected ? 'green' : 'unset',\n        cursor: disabled ? 'unset' : 'pointer',\n        position: 'relative'\n      },\n      disabled: disabled,\n      key: name,\n      onClick: function onClick() {\n        setActivatingConnector(currentConnector);\n        activate(connectorsByName[name]);\n      },\n      __self: _this,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 274,\n        columnNumber: 13\n      }\n    }, __jsx(\"div\", {\n      style: {\n        position: 'absolute',\n        top: '0',\n        left: '0',\n        height: '100%',\n        display: 'flex',\n        alignItems: 'center',\n        color: 'black',\n        margin: '0 0 0 1rem'\n      },\n      __self: _this,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 289,\n        columnNumber: 15\n      }\n    }, activating && __jsx(Spinner, {\n      color: 'black',\n      style: {\n        height: '25%',\n        marginLeft: '-1rem'\n      },\n      __self: _this,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 301,\n        columnNumber: 32\n      }\n    }), connected && __jsx(\"span\", {\n      role: \"img\",\n      \"aria-label\": \"check\",\n      __self: _this,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 303,\n        columnNumber: 19\n      }\n    }, \"\\u2705\")), name);\n  })), __jsx(\"div\", {\n    style: {\n      display: 'flex',\n      flexDirection: 'column',\n      alignItems: 'center'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 313,\n      columnNumber: 7\n    }\n  }, (active || error) && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      marginTop: '2rem',\n      borderRadius: '1rem',\n      borderColor: 'red',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      deactivate();\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 315,\n      columnNumber: 11\n    }\n  }, \"Deactivate\"), !!error && __jsx(\"h4\", {\n    style: {\n      marginTop: '1rem',\n      marginBottom: '0'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 331,\n      columnNumber: 21\n    }\n  }, getErrorMessage(error))), __jsx(\"hr\", {\n    style: {\n      margin: '2rem'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 334,\n      columnNumber: 7\n    }\n  }), __jsx(\"div\", {\n    style: {\n      display: 'grid',\n      gridGap: '1rem',\n      gridTemplateColumns: 'fit-content',\n      maxWidth: '20rem',\n      margin: 'auto'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 335,\n      columnNumber: 7\n    }\n  }, !!(library && account) && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      library.getSigner(account).sendTransaction({\n        to: \"0xf368ca0ff41caa0f71deac40c05ca05e017d1702\",\n        value: \"0x01\"\n      }).then(function (signature) {\n        window.alert(\"Success!\\n\\n\".concat(signature));\n      })[\"catch\"](function (error) {\n        window.alert('Failure!' + (error && error.message ? \"\\n\\n\".concat(error.message) : ''));\n      });\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 345,\n      columnNumber: 11\n    }\n  }, \"Sign Message\")), __jsx(\"hr\", {\n    style: {\n      margin: '2rem'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 370,\n      columnNumber: 7\n    }\n  }), __jsx(\"div\", {\n    style: {\n      display: 'grid',\n      gridGap: '1rem',\n      gridTemplateColumns: 'fit-content',\n      maxWidth: '20rem',\n      margin: 'auto'\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 372,\n      columnNumber: 7\n    }\n  }, !!(library && account) && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      library.getSigner(account).signMessage('👋').then(function (signature) {\n        window.alert(\"Success!\\n\\n\".concat(signature));\n      })[\"catch\"](function (error) {\n        window.alert('Failure!' + (error && error.message ? \"\\n\\n\".concat(error.message) : ''));\n      });\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 382,\n      columnNumber: 11\n    }\n  }, \"Sign Message\"), !!(connector === connectorsByName[ConnectorNames.Network] && chainId) && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      ;\n      connector.changeChainId(chainId === 1 ? 4 : 1);\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 404,\n      columnNumber: 11\n    }\n  }, \"Switch Networks\"), connector === connectorsByName[ConnectorNames.WalletConnect] && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      ;\n      connector.close();\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 418,\n      columnNumber: 11\n    }\n  }, \"Kill WalletConnect Session\"), connector === connectorsByName[ConnectorNames.WalletLink] && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      ;\n      connector.close();\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 432,\n      columnNumber: 11\n    }\n  }, \"Kill WalletLink Session\"), connector === connectorsByName[ConnectorNames.Fortmatic] && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      ;\n      connector.close();\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 446,\n      columnNumber: 11\n    }\n  }, \"Kill Fortmatic Session\"), connector === connectorsByName[ConnectorNames.Magic] && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      ;\n      connector.close();\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 460,\n      columnNumber: 11\n    }\n  }, \"Kill Magic Session\"), connector === connectorsByName[ConnectorNames.Portis] && __jsx(React.Fragment, null, chainId !== undefined && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      ;\n      connector.changeNetwork(chainId === 1 ? 100 : 1);\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 476,\n      columnNumber: 15\n    }\n  }, \"Switch Networks\"), __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      ;\n      connector.close();\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 489,\n      columnNumber: 13\n    }\n  }, \"Kill Portis Session\")), connector === connectorsByName[ConnectorNames.Torus] && __jsx(\"button\", {\n    style: {\n      height: '3rem',\n      borderRadius: '1rem',\n      cursor: 'pointer'\n    },\n    onClick: function onClick() {\n      ;\n      connector.close();\n    },\n    __self: this,\n    __source: {\n      fileName: _jsxFileName,\n      lineNumber: 504,\n      columnNumber: 11\n    }\n  }, \"Kill Torus Session\")));\n}\n\n_s6(App, \"oVtBozX5lH0j7w1/NhHB2/98yx0=\", false, function () {\n  return [useWeb3React, useEagerConnect, useInactiveListener];\n});\n\n_c6 = App;\n\nvar _c, _c2, _c3, _c4, _c5, _c6;\n\n$RefreshReg$(_c, \"ChainId\");\n$RefreshReg$(_c2, \"BlockNumber\");\n$RefreshReg$(_c3, \"Account\");\n$RefreshReg$(_c4, \"Balance\");\n$RefreshReg$(_c5, \"Header\");\n$RefreshReg$(_c6, \"App\");","map":{"version":3,"sources":["/home/jsw/code/codeoneline/web3-react/example/pages/index.tsx"],"names":["React","Web3ReactProvider","useWeb3React","UnsupportedChainIdError","NoEthereumProviderError","UserRejectedRequestError","UserRejectedRequestErrorInjected","UserRejectedRequestErrorWalletConnect","UserRejectedRequestErrorFrame","Web3Provider","formatEther","useEagerConnect","useInactiveListener","injected","network","walletconnect","walletlink","ledger","trezor","frame","authereum","fortmatic","magic","portis","squarelink","torus","Spinner","ConnectorNames","connectorsByName","Injected","Network","WalletConnect","WalletLink","Ledger","Trezor","Frame","Authereum","Fortmatic","Magic","Portis","Squarelink","Torus","getErrorMessage","error","console","getLibrary","provider","library","pollingInterval","ChainId","chainId","BlockNumber","useState","blockNumber","setBlockNumber","useEffect","stale","getBlockNumber","then","updateBlockNumber","on","removeListener","undefined","Account","account","substring","length","Balance","balance","setBalance","getBalance","Header","active","margin","textAlign","display","gridGap","gridTemplateColumns","maxWidth","lineHeight","App","context","connector","activate","deactivate","activatingConnector","setActivatingConnector","triedEager","Object","keys","map","name","currentConnector","activating","connected","disabled","height","borderRadius","borderColor","cursor","position","top","left","alignItems","color","marginLeft","flexDirection","marginTop","marginBottom","getSigner","sendTransaction","to","value","signature","window","alert","message","signMessage","changeChainId","close","changeNetwork"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { Web3ReactProvider, useWeb3React, UnsupportedChainIdError } from '@web3-react-wan/core'\nimport {\n  NoEthereumProviderError,\n  UserRejectedRequestError as UserRejectedRequestErrorInjected\n} from '@web3-react-wan/injected-connector'\nimport { UserRejectedRequestError as UserRejectedRequestErrorWalletConnect } from '@web3-react-wan/walletconnect-connector'\nimport { UserRejectedRequestError as UserRejectedRequestErrorFrame } from '@web3-react-wan/frame-connector'\nimport { Web3Provider } from '@wansproject/providers'\nimport { formatEther } from '@wansproject/units'\n\nimport { useEagerConnect, useInactiveListener } from '../hooks'\nimport {\n  injected,\n  network,\n  walletconnect,\n  walletlink,\n  ledger,\n  trezor,\n  frame,\n  authereum,\n  fortmatic,\n  magic,\n  portis,\n  squarelink,\n  torus\n} from '../connectors'\nimport { Spinner } from '../components/Spinner'\n\nenum ConnectorNames {\n  Injected = 'Injected',\n  Network = 'Network',\n  WalletConnect = 'WalletConnect',\n  WalletLink = 'WalletLink',\n  Ledger = 'Ledger',\n  Trezor = 'Trezor',\n  Frame = 'Frame',\n  Authereum = 'Authereum',\n  Fortmatic = 'Fortmatic',\n  Magic = 'Magic',\n  Portis = 'Portis',\n  Squarelink = 'Squarelink',\n  Torus = 'Torus'\n}\n\nconst connectorsByName: { [connectorName in ConnectorNames]: any } = {\n  [ConnectorNames.Injected]: injected,\n  [ConnectorNames.Network]: network,\n  [ConnectorNames.WalletConnect]: walletconnect,\n  [ConnectorNames.WalletLink]: walletlink,\n  [ConnectorNames.Ledger]: ledger,\n  [ConnectorNames.Trezor]: trezor,\n  [ConnectorNames.Frame]: frame,\n  [ConnectorNames.Authereum]: authereum,\n  [ConnectorNames.Fortmatic]: fortmatic,\n  [ConnectorNames.Magic]: magic,\n  [ConnectorNames.Portis]: portis,\n  [ConnectorNames.Squarelink]: squarelink,\n  [ConnectorNames.Torus]: torus\n}\n\nfunction getErrorMessage(error: Error) {\n  if (error instanceof NoEthereumProviderError) {\n    return 'No Ethereum browser extension detected, install MetaMask on desktop or visit from a dApp browser on mobile.'\n  } else if (error instanceof UnsupportedChainIdError) {\n    return \"You're connected to an unsupported network.\"\n  } else if (\n    error instanceof UserRejectedRequestErrorInjected ||\n    error instanceof UserRejectedRequestErrorWalletConnect ||\n    error instanceof UserRejectedRequestErrorFrame\n  ) {\n    return 'Please authorize this website to access your Ethereum account.'\n  } else {\n    console.error(error)\n    return 'An unknown error occurred. Check the console for more details.'\n  }\n}\n\nfunction getLibrary(provider: any): Web3Provider {\n  const library = new Web3Provider(provider)\n  library.pollingInterval = 12000\n  return library\n}\n\nexport default function() {\n  return (\n    <Web3ReactProvider getLibrary={getLibrary}>\n      <App />\n    </Web3ReactProvider>\n  )\n}\n\nfunction ChainId() {\n  const { chainId } = useWeb3React()\n\n  return (\n    <>\n      <span>Chain Id</span>\n      <span role=\"img\" aria-label=\"chain\">\n        ⛓\n      </span>\n      <span>{chainId ?? ''}</span>\n    </>\n  )\n}\n\nfunction BlockNumber() {\n  const { chainId, library } = useWeb3React()\n\n  const [blockNumber, setBlockNumber] = React.useState<number>()\n  React.useEffect((): any => {\n    if (!!library) {\n      let stale = false\n\n      library\n        .getBlockNumber()\n        .then((blockNumber: number) => {\n          if (!stale) {\n            setBlockNumber(blockNumber)\n          }\n        })\n        .catch(() => {\n          if (!stale) {\n            setBlockNumber(null)\n          }\n        })\n\n      const updateBlockNumber = (blockNumber: number) => {\n        setBlockNumber(blockNumber)\n      }\n      library.on('block', updateBlockNumber)\n\n      return () => {\n        stale = true\n        library.removeListener('block', updateBlockNumber)\n        setBlockNumber(undefined)\n      }\n    }\n  }, [library, chainId]) // ensures refresh if referential identity of library doesn't change across chainIds\n\n  return (\n    <>\n      <span>Block Number</span>\n      <span role=\"img\" aria-label=\"numbers\">\n        🔢\n      </span>\n      <span>{blockNumber === null ? 'Error' : blockNumber ?? ''}</span>\n    </>\n  )\n}\n\nfunction Account() {\n  const { account } = useWeb3React()\n\n  return (\n    <>\n      <span>Account</span>\n      <span role=\"img\" aria-label=\"robot\">\n        🤖\n      </span>\n      <span>\n        {account === null\n          ? '-'\n          : account\n          ? `${account.substring(0, 6)}...${account.substring(account.length - 4)}`\n          : ''}\n      </span>\n    </>\n  )\n}\n\nfunction Balance() {\n  const { account, library, chainId } = useWeb3React()\n\n  const [balance, setBalance] = React.useState()\n  React.useEffect((): any => {\n    if (!!account && !!library) {\n      let stale = false\n\n      library\n        .getBalance(account)\n        .then((balance: any) => {\n          if (!stale) {\n            setBalance(balance)\n          }\n        })\n        .catch(() => {\n          if (!stale) {\n            setBalance(null)\n          }\n        })\n\n      return () => {\n        stale = true\n        setBalance(undefined)\n      }\n    }\n  }, [account, library, chainId]) // ensures refresh if referential identity of library doesn't change across chainIds\n\n  return (\n    <>\n      <span>Balance</span>\n      <span role=\"img\" aria-label=\"gold\">\n        💰\n      </span>\n      <span>{balance === null ? 'Error' : balance ? `Ξ${formatEther(balance)}` : ''}</span>\n    </>\n  )\n}\n\nfunction Header() {\n  const { active, error } = useWeb3React()\n\n  return (\n    <>\n      <h1 style={{ margin: '1rem', textAlign: 'right' }}>{active ? '🟢' : error ? '🔴' : '🟠'}</h1>\n      <h3\n        style={{\n          display: 'grid',\n          gridGap: '1rem',\n          gridTemplateColumns: '1fr min-content 1fr',\n          maxWidth: '20rem',\n          lineHeight: '2rem',\n          margin: 'auto'\n        }}\n      >\n        <ChainId />\n        <BlockNumber />\n        <Account />\n        <Balance />\n      </h3>\n    </>\n  )\n}\n\nfunction App() {\n  const context = useWeb3React<Web3Provider>()\n  const { connector, library, chainId, account, activate, deactivate, active, error } = context\n\n  // handle logic to recognize the connector currently being activated\n  const [activatingConnector, setActivatingConnector] = React.useState<any>()\n  React.useEffect(() => {\n    if (activatingConnector && activatingConnector === connector) {\n      setActivatingConnector(undefined)\n    }\n  }, [activatingConnector, connector])\n\n  // handle logic to eagerly connect to the injected ethereum provider, if it exists and has granted access already\n  const triedEager = useEagerConnect()\n\n  // handle logic to connect in reaction to certain events on the injected ethereum provider, if it exists\n  useInactiveListener(!triedEager || !!activatingConnector)\n\n  return (\n    <>\n      <Header />\n      <hr style={{ margin: '2rem' }} />\n      <div\n        style={{\n          display: 'grid',\n          gridGap: '1rem',\n          gridTemplateColumns: '1fr 1fr',\n          maxWidth: '20rem',\n          margin: 'auto'\n        }}\n      >\n        {Object.keys(connectorsByName).map(name => {\n          const currentConnector = connectorsByName[name]\n          const activating = currentConnector === activatingConnector\n          const connected = currentConnector === connector\n          const disabled = !triedEager || !!activatingConnector || connected || !!error\n\n          return (\n            <button\n              style={{\n                height: '3rem',\n                borderRadius: '1rem',\n                borderColor: activating ? 'orange' : connected ? 'green' : 'unset',\n                cursor: disabled ? 'unset' : 'pointer',\n                position: 'relative'\n              }}\n              disabled={disabled}\n              key={name}\n              onClick={() => {\n                setActivatingConnector(currentConnector)\n                activate(connectorsByName[name])\n              }}\n            >\n              <div\n                style={{\n                  position: 'absolute',\n                  top: '0',\n                  left: '0',\n                  height: '100%',\n                  display: 'flex',\n                  alignItems: 'center',\n                  color: 'black',\n                  margin: '0 0 0 1rem'\n                }}\n              >\n                {activating && <Spinner color={'black'} style={{ height: '25%', marginLeft: '-1rem' }} />}\n                {connected && (\n                  <span role=\"img\" aria-label=\"check\">\n                    ✅\n                  </span>\n                )}\n              </div>\n              {name}\n            </button>\n          )\n        })}\n      </div>\n      <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}>\n        {(active || error) && (\n          <button\n            style={{\n              height: '3rem',\n              marginTop: '2rem',\n              borderRadius: '1rem',\n              borderColor: 'red',\n              cursor: 'pointer'\n            }}\n            onClick={() => {\n              deactivate()\n            }}\n          >\n            Deactivate\n          </button>\n        )}\n\n        {!!error && <h4 style={{ marginTop: '1rem', marginBottom: '0' }}>{getErrorMessage(error)}</h4>}\n      </div>\n\n      <hr style={{ margin: '2rem' }} />\n      <div\n        style={{\n          display: 'grid',\n          gridGap: '1rem',\n          gridTemplateColumns: 'fit-content',\n          maxWidth: '20rem',\n          margin: 'auto'\n        }}\n      >\n        {!!(library && account) && (\n          <button\n            style={{\n              height: '3rem',\n              borderRadius: '1rem',\n              cursor: 'pointer'\n            }}\n            onClick={() => {\n              library\n                .getSigner(account)\n                .sendTransaction({\n                  to: \"0xf368ca0ff41caa0f71deac40c05ca05e017d1702\",\n                  value: \"0x01\"\n                })\n                .then((signature: any) => {\n                  window.alert(`Success!\\n\\n${signature}`)\n                })\n                .catch((error: any) => {\n                  window.alert('Failure!' + (error && error.message ? `\\n\\n${error.message}` : ''))\n                })\n            }}\n          >\n            Sign Message\n          </button>\n        )}\n      </div>\n      <hr style={{ margin: '2rem' }} />\n\n      <div\n        style={{\n          display: 'grid',\n          gridGap: '1rem',\n          gridTemplateColumns: 'fit-content',\n          maxWidth: '20rem',\n          margin: 'auto'\n        }}\n      >\n        {!!(library && account) && (\n          <button\n            style={{\n              height: '3rem',\n              borderRadius: '1rem',\n              cursor: 'pointer'\n            }}\n            onClick={() => {\n              library\n                .getSigner(account)\n                .signMessage('👋')\n                .then((signature: any) => {\n                  window.alert(`Success!\\n\\n${signature}`)\n                })\n                .catch((error: any) => {\n                  window.alert('Failure!' + (error && error.message ? `\\n\\n${error.message}` : ''))\n                })\n            }}\n          >\n            Sign Message\n          </button>\n        )}\n        {!!(connector === connectorsByName[ConnectorNames.Network] && chainId) && (\n          <button\n            style={{\n              height: '3rem',\n              borderRadius: '1rem',\n              cursor: 'pointer'\n            }}\n            onClick={() => {\n              ;(connector as any).changeChainId(chainId === 1 ? 4 : 1)\n            }}\n          >\n            Switch Networks\n          </button>\n        )}\n        {connector === connectorsByName[ConnectorNames.WalletConnect] && (\n          <button\n            style={{\n              height: '3rem',\n              borderRadius: '1rem',\n              cursor: 'pointer'\n            }}\n            onClick={() => {\n              ;(connector as any).close()\n            }}\n          >\n            Kill WalletConnect Session\n          </button>\n        )}\n        {connector === connectorsByName[ConnectorNames.WalletLink] && (\n          <button\n            style={{\n              height: '3rem',\n              borderRadius: '1rem',\n              cursor: 'pointer'\n            }}\n            onClick={() => {\n              ;(connector as any).close()\n            }}\n          >\n            Kill WalletLink Session\n          </button>\n        )}\n        {connector === connectorsByName[ConnectorNames.Fortmatic] && (\n          <button\n            style={{\n              height: '3rem',\n              borderRadius: '1rem',\n              cursor: 'pointer'\n            }}\n            onClick={() => {\n              ;(connector as any).close()\n            }}\n          >\n            Kill Fortmatic Session\n          </button>\n        )}\n        {connector === connectorsByName[ConnectorNames.Magic] && (\n          <button\n            style={{\n              height: '3rem',\n              borderRadius: '1rem',\n              cursor: 'pointer'\n            }}\n            onClick={() => {\n              ;(connector as any).close()\n            }}\n          >\n            Kill Magic Session\n          </button>\n        )}\n        {connector === connectorsByName[ConnectorNames.Portis] && (\n          <>\n            {chainId !== undefined && (\n              <button\n                style={{\n                  height: '3rem',\n                  borderRadius: '1rem',\n                  cursor: 'pointer'\n                }}\n                onClick={() => {\n                  ;(connector as any).changeNetwork(chainId === 1 ? 100 : 1)\n                }}\n              >\n                Switch Networks\n              </button>\n            )}\n            <button\n              style={{\n                height: '3rem',\n                borderRadius: '1rem',\n                cursor: 'pointer'\n              }}\n              onClick={() => {\n                ;(connector as any).close()\n              }}\n            >\n              Kill Portis Session\n            </button>\n          </>\n        )}\n        {connector === connectorsByName[ConnectorNames.Torus] && (\n          <button\n            style={{\n              height: '3rem',\n              borderRadius: '1rem',\n              cursor: 'pointer'\n            }}\n            onClick={() => {\n              ;(connector as any).close()\n            }}\n          >\n            Kill Torus Session\n          </button>\n        )}\n      </div>\n    </>\n  )\n}\n"]},"metadata":{},"sourceType":"module"}