Merge branch 'master' into ab-fix-confirmation-for-non-consensus-blocks

pull/2468/head
Ayrat Badykov 5 years ago committed by GitHub
commit b6873418e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      .dialyzer-ignore
  2. 81
      CHANGELOG.md
  3. 1
      ISSUE_TEMPLATE.md
  4. 2
      PULL_REQUEST_TEMPLATE.md
  5. 29
      README.md
  6. 2
      apps/block_scout_web/.sobelow-conf
  7. 4
      apps/block_scout_web/assets/__tests__/lib/async_listing_load.js
  8. 16
      apps/block_scout_web/assets/css/_images-preload.scss
  9. 24
      apps/block_scout_web/assets/css/app.scss
  10. 4
      apps/block_scout_web/assets/css/components/_api.scss
  11. 1
      apps/block_scout_web/assets/css/components/_button.scss
  12. 5
      apps/block_scout_web/assets/css/components/_form.scss
  13. 6
      apps/block_scout_web/assets/css/components/_modal.scss
  14. 5
      apps/block_scout_web/assets/css/components/_modal_variables.scss
  15. 37
      apps/block_scout_web/assets/css/components/_network-selector.scss
  16. 2
      apps/block_scout_web/assets/css/components/_stakes_variables.scss
  17. 0
      apps/block_scout_web/assets/css/components/stakes/_copy_icon.scss
  18. 0
      apps/block_scout_web/assets/css/components/stakes/_modal_become_candidate.scss
  19. 0
      apps/block_scout_web/assets/css/components/stakes/_modal_bottom_disclaimer.scss
  20. 0
      apps/block_scout_web/assets/css/components/stakes/_modal_stake.scss
  21. 0
      apps/block_scout_web/assets/css/components/stakes/_modal_validator_info.scss
  22. 0
      apps/block_scout_web/assets/css/components/stakes/_progress_from_to.scss
  23. 2
      apps/block_scout_web/assets/css/components/stakes/_stakes.scss
  24. 0
      apps/block_scout_web/assets/css/components/stakes/_stakes_btn_remove_pool.scss
  25. 0
      apps/block_scout_web/assets/css/components/stakes/_stakes_empty_content.scss
  26. 0
      apps/block_scout_web/assets/css/components/stakes/_stakes_progress.scss
  27. 17
      apps/block_scout_web/assets/css/non-critical.scss
  28. 20
      apps/block_scout_web/assets/css/stakes.scss
  29. 2
      apps/block_scout_web/assets/css/theme/_base_variables.scss
  30. 7
      apps/block_scout_web/assets/css/theme/_dai_variables-non-critical.scss
  31. 1
      apps/block_scout_web/assets/css/theme/_dai_variables.scss
  32. 102
      apps/block_scout_web/assets/css/theme/_dark-theme.scss
  33. 7
      apps/block_scout_web/assets/css/theme/_ether1_variables-non-critical.scss
  34. 7
      apps/block_scout_web/assets/css/theme/_ethereum_classic_variables-non-critical.scss
  35. 1
      apps/block_scout_web/assets/css/theme/_ethereum_classic_variables.scss
  36. 7
      apps/block_scout_web/assets/css/theme/_ethereum_variables-non-critical.scss
  37. 1
      apps/block_scout_web/assets/css/theme/_ethereum_variables.scss
  38. 8
      apps/block_scout_web/assets/css/theme/_goerli_variables-non-critical.scss
  39. 1
      apps/block_scout_web/assets/css/theme/_goerli_variables.scss
  40. 7
      apps/block_scout_web/assets/css/theme/_kovan_variables-non-critical.scss
  41. 1
      apps/block_scout_web/assets/css/theme/_kovan_variables.scss
  42. 7
      apps/block_scout_web/assets/css/theme/_lukso_variables-non-critical.scss
  43. 1
      apps/block_scout_web/assets/css/theme/_lukso_variables.scss
  44. 7
      apps/block_scout_web/assets/css/theme/_neutral_variables-non-critical.scss
  45. 1
      apps/block_scout_web/assets/css/theme/_neutral_variables.scss
  46. 7
      apps/block_scout_web/assets/css/theme/_poa_variables-non-critical.scss
  47. 1
      apps/block_scout_web/assets/css/theme/_poa_variables.scss
  48. 7
      apps/block_scout_web/assets/css/theme/_rinkeby_variables-non-critical.scss
  49. 1
      apps/block_scout_web/assets/css/theme/_rinkeby_variables.scss
  50. 7
      apps/block_scout_web/assets/css/theme/_ropsten_variables-non-critical.scss
  51. 1
      apps/block_scout_web/assets/css/theme/_ropsten_variables.scss
  52. 7
      apps/block_scout_web/assets/css/theme/_rsk_variables-non-critical.scss
  53. 1
      apps/block_scout_web/assets/css/theme/_rsk_variables.scss
  54. 8
      apps/block_scout_web/assets/css/theme/_sokol_variables-non-critical.scss
  55. 1
      apps/block_scout_web/assets/css/theme/_sokol_variables.scss
  56. 22
      apps/block_scout_web/assets/css/theme/_variables-non-critical.scss
  57. 4
      apps/block_scout_web/assets/js/app.js
  58. 30
      apps/block_scout_web/assets/js/lib/async_listing_load.js
  59. 10
      apps/block_scout_web/assets/js/lib/coin_balance_history_chart.js
  60. 31
      apps/block_scout_web/assets/js/lib/token_transfers_toggle.js
  61. 2
      apps/block_scout_web/assets/js/lib/tooltip.js
  62. 6
      apps/block_scout_web/assets/js/lib/try_api.js
  63. 76
      apps/block_scout_web/assets/js/lib/try_eth_api.js
  64. 2
      apps/block_scout_web/assets/js/pages/address/logs.js
  65. 1
      apps/block_scout_web/assets/js/pages/stakes.js
  66. 244
      apps/block_scout_web/assets/package-lock.json
  67. 5
      apps/block_scout_web/assets/package.json
  68. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/aerum-mainnet.png
  69. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/callisto-mainnet.png
  70. 5
      apps/block_scout_web/assets/static/images/network-selector-icons/callisto-mainnet.svg
  71. 7
      apps/block_scout_web/assets/static/images/network-selector-icons/callisto.svg
  72. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/core.svg
  73. 33
      apps/block_scout_web/assets/static/images/network-selector-icons/dai.svg
  74. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/ethereum-classic.png
  75. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/ethereum-classic.svg
  76. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/ethereum-mainnet.png
  77. 9
      apps/block_scout_web/assets/static/images/network-selector-icons/ethereum-mainnet.svg
  78. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/goerli-testnet.png
  79. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/goerli-testnet.svg
  80. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/kovan-testnet.png
  81. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/kovan-testnet.svg
  82. 6
      apps/block_scout_web/assets/static/images/network-selector-icons/lukso-l14-testnet.svg
  83. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/poa-core.png
  84. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/poa-core.svg
  85. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/poa-sokol.png
  86. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/poa-sokol.svg
  87. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/rinkeby-testnet.png
  88. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/rinkeby-testnet.svg
  89. 15
      apps/block_scout_web/assets/static/images/network-selector-icons/rinkeby.svg
  90. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/ropsten-testnet.png
  91. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/ropsten-testnet.svg
  92. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/ropsten.svg
  93. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/rsk-mainnet.png
  94. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/rsk-mainnet.svg
  95. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/sokol.svg
  96. BIN
      apps/block_scout_web/assets/static/images/network-selector-icons/xdai-chain.png
  97. 4
      apps/block_scout_web/assets/static/images/network-selector-icons/xdai-chain.svg
  98. 10
      apps/block_scout_web/assets/webpack.config.js
  99. 12
      apps/block_scout_web/config/config.exs
  100. 3
      apps/block_scout_web/config/test.exs
  101. Some files were not shown because too many files have changed in this diff Show More

@ -11,3 +11,5 @@ apps/explorer/lib/explorer/repo/prometheus_logger.ex:8: The call 'Elixir.System'
apps/block_scout_web/lib/block_scout_web/views/layout_view.ex:175: The call 'Elixir.Poison.Parser':'parse!'(any(),#{'keys':='atoms!'}) will never return since the success typing is (binary() | maybe_improper_list(binary() | maybe_improper_list(any(),binary() | []) | byte(),binary() | []),[{atom(),_}]) -> 'false' | 'nil' | 'true' | binary() | ['false' | 'nil' | 'true' | binary() | [any()] | number() | map()] | number() | map() and the contract is (iodata(),'Elixir.Keyword':t()) -> t()
apps/explorer/lib/explorer/smart_contract/publisher_worker.ex:6: The pattern 'false' can never match the type 'true'
apps/explorer/lib/explorer/smart_contract/publisher_worker.ex:6: The test 5 == 'infinity' can never evaluate to 'true'
lib/block_scout_web/router.ex:1
lib/phoenix/router.ex:324

@ -1,20 +1,91 @@
## Current
### Features
- [#2596](https://github.com/poanetwork/blockscout/pull/2596) - support AuRa's empty step reward type
- [#2581](https://github.com/poanetwork/blockscout/pull/2581) - Add generic Map-like Cache behaviour and implementation
- [#2561](https://github.com/poanetwork/blockscout/pull/2561) - Add token's type to the response of tokenlist method
- [#2555](https://github.com/poanetwork/blockscout/pull/2555) - find and show decoding candidates for logs
- [#2499](https://github.com/poanetwork/blockscout/pull/2499) - import emission reward ranges
- [#2497](https://github.com/poanetwork/blockscout/pull/2497) - Add generic Ordered Cache behaviour and implementation
### Fixes
- [#2610](https://github.com/poanetwork/blockscout/pull/2610) - use CoinGecko instead of CoinMarketcap for exchange rates
- [#2640](https://github.com/poanetwork/blockscout/pull/2640) - SVG network icons
- [#2635](https://github.com/poanetwork/blockscout/pull/2635) - optimize ERC721 inventory query
- [#2626](https://github.com/poanetwork/blockscout/pull/2626) - Fixing 2 Mobile UI Issues
- [#2623](https://github.com/poanetwork/blockscout/pull/2623) - fix a blinking test
- [#2616](https://github.com/poanetwork/blockscout/pull/2616) - deduplicate coin history records by delta
- [#2613](https://github.com/poanetwork/blockscout/pull/2613) - fix getminedblocks rpc endpoint
- [#2592](https://github.com/poanetwork/blockscout/pull/2592) - process new metadata format for whisper
- [#2591](https://github.com/poanetwork/blockscout/pull/2591) - Fix url error in API page
- [#2572](https://github.com/poanetwork/blockscout/pull/2572) - Ease non-critical css
- [#2570](https://github.com/poanetwork/blockscout/pull/2570) - Network icons preload
- [#2569](https://github.com/poanetwork/blockscout/pull/2569) - do not fetch emission rewards for transactions csv exporter
- [#2568](https://github.com/poanetwork/blockscout/pull/2568) - filter pending token transfers
- [#2564](https://github.com/poanetwork/blockscout/pull/2564) - fix first page button for uncles and reorgs
- [#2563](https://github.com/poanetwork/blockscout/pull/2563) - Fix view less transfers button
- [#2538](https://github.com/poanetwork/blockscout/pull/2538) - fetch the last not empty coin balance records
### Chore
- [#2646](https://github.com/poanetwork/blockscout/pull/2646) - Added Xerom to list of Additional Chains using BlockScout
- [#2634](https://github.com/poanetwork/blockscout/pull/2634) - add Lukso to networks dropdown
- [#2617](https://github.com/poanetwork/blockscout/pull/2617) - skip cache update if there are no blocks inserted
- [#2611](https://github.com/poanetwork/blockscout/pull/2611) - fix js dependency vulnerabilities
- [#2594](https://github.com/poanetwork/blockscout/pull/2594) - do not start genesis data fetching periodically
- [#2590](https://github.com/poanetwork/blockscout/pull/2590) - restore backward compatablity with old releases
- [#2577](https://github.com/poanetwork/blockscout/pull/2577) - Need recompile column in the env vars table
- [#2574](https://github.com/poanetwork/blockscout/pull/2574) - limit request body in json rpc error
- [#2566](https://github.com/poanetwork/blockscout/pull/2566) - upgrade absinthe phoenix
## 2.0.3-beta
### Features
- [#2433](https://github.com/poanetwork/blockscout/pull/2433) - Add a functionality to try Eth RPC methods in the documentation
- [#2529](https://github.com/poanetwork/blockscout/pull/2529) - show both eth value and token transfers on transaction overview page
- [#2376](https://github.com/poanetwork/blockscout/pull/2376) - Split API and WebApp routes
- [#2477](https://github.com/poanetwork/blockscout/pull/2477) - aggregate token transfers on transaction page
- [#2458](https://github.com/poanetwork/blockscout/pull/2458) - Add LAST_BLOCK var to add ability indexing in the range of blocks
- [#2456](https://github.com/poanetwork/blockscout/pull/2456) - fetch pending transactions for geth
- [#2403](https://github.com/poanetwork/blockscout/pull/2403) - Return gasPrice field at the result of gettxinfo method
### Fixes
- [#2468](https://github.com/poanetwork/blockscout/pull/2468) - fix confirmations for non consensus blocks
- [#2562](https://github.com/poanetwork/blockscout/pull/2562) - Fix dark theme flickering
- [#2560](https://github.com/poanetwork/blockscout/pull/2560) - fix slash before not empty path in docs
- [#2559](https://github.com/poanetwork/blockscout/pull/2559) - fix rsk total supply for empty exchange rate
- [#2553](https://github.com/poanetwork/blockscout/pull/2553) - Dark theme import to the end of sass
- [#2550](https://github.com/poanetwork/blockscout/pull/2550) - correctly encode decimal values for frontend
- [#2549](https://github.com/poanetwork/blockscout/pull/2549) - Fix wrong colour of tooltip
- [#2548](https://github.com/poanetwork/blockscout/pull/2548) - CSS preload support in Firefox
- [#2547](https://github.com/poanetwork/blockscout/pull/2547) - do not show eth value if it's zero on the transaction overview page
- [#2543](https://github.com/poanetwork/blockscout/pull/2543) - do not hide search input during logs search
- [#2524](https://github.com/poanetwork/blockscout/pull/2524) - fix dark theme validator data styles
- [#2532](https://github.com/poanetwork/blockscout/pull/2532) - don't show empty token transfers on the transaction overview page
- [#2528](https://github.com/poanetwork/blockscout/pull/2528) - fix coin history chart data
- [#2520](https://github.com/poanetwork/blockscout/pull/2520) - Hide loading message when fetching is failed
- [#2523](https://github.com/poanetwork/blockscout/pull/2523) - Avoid importing internal_transactions of pending transactions
- [#2519](https://github.com/poanetwork/blockscout/pull/2519) - enable `First` page button in pagination
- [#2518](https://github.com/poanetwork/blockscout/pull/2518) - create suggested indexes
- [#2517](https://github.com/poanetwork/blockscout/pull/2517) - remove duplicate indexes
- [#2515](https://github.com/poanetwork/blockscout/pull/2515) - do not aggregate NFT token transfers
- [#2514](https://github.com/poanetwork/blockscout/pull/2514) - Isolating of staking dapp css && extracting of non-critical css
- [#2512](https://github.com/poanetwork/blockscout/pull/2512) - alert link fix
- [#2509](https://github.com/poanetwork/blockscout/pull/2509) - value-ticker gaps fix
- [#2508](https://github.com/poanetwork/blockscout/pull/2508) - logs view columns fix
- [#2506](https://github.com/poanetwork/blockscout/pull/2506) - fix two active tab in the top menu
- [#2503](https://github.com/poanetwork/blockscout/pull/2503) - Mitigate autocompletion library influence to page loading performance
- [#2502](https://github.com/poanetwork/blockscout/pull/2502) - increase reward task timeout
- [#2463](https://github.com/poanetwork/blockscout/pull/2463) - dark theme fixes
- [#2496](https://github.com/poanetwork/blockscout/pull/2496) - fix docker build
- [#2495](https://github.com/poanetwork/blockscout/pull/2495) - fix logs for indexed chain
- [#2459](https://github.com/poanetwork/blockscout/pull/2459) - fix top addresses query
- [#2425](https://github.com/poanetwork/blockscout/pull/2425) - Force to show address view for checksummed address even if it is not in DB
- [#2551](https://github.com/poanetwork/blockscout/pull/2551) - Correctly handle dynamically created Bootstrap tooltips
### Chore
- [#2554](https://github.com/poanetwork/blockscout/pull/2554) - remove extra slash for endpoint url in docs
- [#2552](https://github.com/poanetwork/blockscout/pull/2552) - remove brackets for token holders percentage
- [#2507](https://github.com/poanetwork/blockscout/pull/2507) - update minor version of ecto, ex_machina, phoenix_live_reload
- [#2516](https://github.com/poanetwork/blockscout/pull/2516) - update absinthe plug from fork
- [#2473](https://github.com/poanetwork/blockscout/pull/2473) - get rid of cldr warnings
- [#2402](https://github.com/poanetwork/blockscout/pull/2402) - bump otp version to 22.0
@ -28,6 +99,7 @@
- [#2402](https://github.com/poanetwork/blockscout/pull/2402) - bump otp version to 22.0
- [#2373](https://github.com/poanetwork/blockscout/pull/2373) - Add script to validate internal_transactions constraint for large DBs
## 2.0.2-beta
### Features
@ -172,6 +244,7 @@
- [#2255](https://github.com/poanetwork/blockscout/pull/2255) - upgrade elixir version to 1.9.0
- [#2256](https://github.com/poanetwork/blockscout/pull/2256) - use the latest version of chromedriver
## 2.0.0-beta
### Features
@ -254,6 +327,7 @@
- [#2055](https://github.com/poanetwork/blockscout/pull/2055) - Increase timeout for geth indexers
- [#2069](https://github.com/poanetwork/blockscout/pull/2069) - Docsify integration: static docs page generation
## 1.3.15-beta
### Features
@ -283,6 +357,7 @@
- [#1892](https://github.com/poanetwork/blockscout/pull/1892) - Remove temporary worker modules
## 1.3.13-beta
### Features
@ -295,10 +370,12 @@
- [#1881](https://github.com/poanetwork/blockscout/pull/1881) - fix: store solc versions locally for performance
- [#1898](https://github.com/poanetwork/blockscout/pull/1898) - check if the constructor has arguments before verifying constructor arguments
## 1.3.12-beta
Reverting of synchronous block counter, implemented in #1848
## 1.3.11-beta
### Features
@ -320,6 +397,7 @@ Reverting of synchronous block counter, implemented in #1848
- [#1814](https://github.com/poanetwork/blockscout/pull/1814) - Clear build artefacts script
- [#1837](https://github.com/poanetwork/blockscout/pull/1837) - Add -f flag to clear_build.sh script delete static folder
## 1.3.10-beta
### Features
@ -430,6 +508,7 @@ Reverting of synchronous block counter, implemented in #1848
- [#1610](https://github.com/poanetwork/blockscout/pull/1610) - Add PIRL to Readme
## 1.3.6-beta
### Features

@ -4,6 +4,7 @@
* Elixir & Erlang/OTP versions (`elixir -version`):
* Operating System:
* Blockscout Version/branch:
### Steps to reproduce

@ -35,5 +35,5 @@
- [ ] If I added new functionality, I added tests covering it.
- [ ] If I fixed a bug, I added a regression test to prevent the bug from silently reappearing again.
- [ ] I checked whether I should update the docs and did so if necessary
- [ ] If I added/changed/removed ENV var, I should update the list of env vars in https://github.com/poanetwork/blockscout/blob/master/docs/env-variables.md to reflect changes in the table here https://poanetwork.github.io/blockscout/#/env-variables?id=blockscout-env-variables
- [ ] If I added/changed/removed ENV var, I should update the list of env vars in https://github.com/poanetwork/blockscout/blob/master/docs/env-variables.md to reflect changes in the table here https://poanetwork.github.io/blockscout/#/env-variables?id=blockscout-env-variables. I've set `master` in the `Version` column.
- [ ] If I add new indices into DB, I checked, that they don't redundant with PGHero or other tools

@ -28,20 +28,21 @@ Currently available full-featured block explorers (Etherscan, Etherchain, Blockc
## Supported Projects
| **Hosted Mainnets** | **Hosted Testnets** | **Additional Chains using BlockScout** |
|--------------------------------------------------------|-------------------------------------------------------|----------------------------------------------------|
| [Aerum](https://blockscout.com/aerum/mainnet) | [Goerli Testnet](https://blockscout.com/eth/goerli) | [ARTIS](https://explorer.sigma1.artis.network) |
| [Callisto](https://blockscout.com/callisto/mainnet) | [Kovan Testnet](https://blockscout.com/eth/kovan) | [Ether-1](https://blocks.ether1.wattpool.net/) |
| [Ethereum Classic](https://blockscout.com/etc/mainnet) | [POA Sokol Testnet](https://blockscout.com/poa/sokol) | [Fuse Network](https://explorer.fuse.io/) |
| [Ethereum Mainnet](https://blockscout.com/eth/mainnet) | [Rinkeby Testnet](https://blockscout.com/eth/rinkeby) | [Oasis Labs](https://blockexplorer.oasiscloud.io/) |
| [POA Core Network](https://blockscout.com/poa/core) | [Ropsten Testnet](https://blockscout.com/eth/ropsten) | [Petrichor](https://explorer.petrachor.com/) |
| [RSK](https://blockscout.com/rsk/mainnet) | | [PIRL](http://pirl.es/) |
| [xDai Chain](https://blockscout.com/poa/dai) | | [SafeChain](https://explorer.safechain.io) |
| | | [SpringChain](https://explorer.springrole.com/) |
| | | [Kotti Testnet](https://kottiexplorer.ethernode.io/) |
| | | [Loom](http://plasma-blockexplorer.dappchains.com/) |
| | | [Tenda](https://tenda.network) |
| | | [GoJoy Chain](https://gojoychain.com/) |
| **Hosted Mainnets** | **Hosted Testnets** | **Additional Chains using BlockScout** | **Additional Chains using BlockScout** |
|--------------------------------------------------------|-------------------------------------------------------|------------------------------------------------------|----------------------------------------------------------------|
| [Callisto](https://blockscout.com/callisto/mainnet) | [Goerli Testnet](https://blockscout.com/eth/goerli) | [ARTIS](https://explorer.sigma1.artis.network) | [Celo Testnet](https://alfajores-blockscout.celo-testnet.org/) |
| [Ethereum Classic](https://blockscout.com/etc/mainnet) | [Kovan Testnet](https://blockscout.com/eth/kovan) | [Ether-1](https://blocks.ether1.wattpool.net/) | [Matic Testnet](https://explorer.testnet2.matic.network/) |
| [Ethereum Mainnet](https://blockscout.com/eth/mainnet) | [LUKSO L14 Testnet](https://blockscout.com/lukso/l14) | [Kotti Testnet](https://kottiexplorer.ethernode.io/) | |
| [POA Core Network](https://blockscout.com/poa/core) | [POA Sokol Testnet](https://blockscout.com/poa/sokol) | [Fuse Network](https://explorer.fuse.io/) | |
| [RSK](https://blockscout.com/rsk/mainnet) | [Rinkeby Testnet](https://blockscout.com/eth/rinkeby) | [Oasis Labs](https://blockexplorer.oasiscloud.io/) | |
| [xDai Chain](https://blockscout.com/poa/dai) | [Ropsten Testnet](https://blockscout.com/eth/ropsten) | [Petrichor](https://explorer.petrachor.com/) | |
| | | [PIRL](http://pirl.es/) | |
| | | [SafeChain](https://explorer.safechain.io) | |
| | | [SpringChain](https://explorer.springrole.com/) | |
| | | [Tenda](https://tenda.network) | |
| | | [Loom](http://plasma-blockexplorer.dappchains.com/) | |
| | | [GoJoy Chain](https://gojoychain.com/) | |
| | | [Xerom](https://blocks.xerom.org/) | |
Current BlockScout versions for hosted projects are available [on the forum](https://forum.poa.network/t/deployed-instances-on-blockscout-com/1938).

@ -5,5 +5,5 @@
router: "lib/block_scout_web/router.ex",
exit: "low",
format: "compact",
ignore: ["Config.Headers"]
ignore: ["Config.Headers", "Config.CSWH"]
]

@ -46,14 +46,12 @@ describe('REQUEST_ERROR', () => {
describe('FINISH_REQUEST', () => {
test('sets loading status to false', () => {
const state = Object.assign({}, asyncInitialState, {
loading: true,
loadingFirstPage: true
loading: true
})
const action = { type: 'FINISH_REQUEST' }
const output = asyncReducer(state, action)
expect(output.loading).toEqual(false)
expect(output.loadingFirstPage).toEqual(false)
})
})

@ -0,0 +1,16 @@
body:after {
position:absolute; width:0; height:0; overflow:hidden; z-index:-1;
content:
url(/images/network-selector-icons/callisto-mainnet.svg)
url(/images/network-selector-icons/ethereum-mainnet.svg)
url(/images/network-selector-icons/ethereum-classic.svg)
url(/images/network-selector-icons/goerli-testnet.svg)
url(/images/network-selector-icons/kovan-testnet.svg)
url(/images/network-selector-icons/poa-core.svg)
url(/images/network-selector-icons/poa-sokol.svg)
url(/images/network-selector-icons/rinkeby-testnet.svg)
url(/images/network-selector-icons/rsk-mainnet.svg)
url(/images/network-selector-icons/ropsten-testnet.svg)
url(/images/network-selector-icons/xdai-chain.svg)
url(/images/network-selector-icons/lukso-l14-testnet.svg)
};

@ -24,7 +24,6 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts";
@import "node_modules/bootstrap/scss/reboot";
@import "node_modules/bootstrap/scss/grid";
@import "node_modules/bootstrap/scss/code";
@import "node_modules/bootstrap/scss/modal";
@import "node_modules/bootstrap/scss/close";
@import "node_modules/bootstrap/scss/buttons";
@import "node_modules/bootstrap/scss/forms";
@ -50,7 +49,6 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts";
@import "node_modules/bootstrap/scss/navbar";
@import "node_modules/bootstrap/scss/pagination";
@import "node_modules/bootstrap/scss/tables";
@import "node_modules/bootstrap/scss/tooltip";
@import "node_modules/bootstrap/scss/transitions";
// Code highlight
@ -62,6 +60,7 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts";
// Custom SCSS
@import "layout";
@import "typography";
@import "images-preload";
@import "code";
@import "helpers";
@import "elements";
@ -75,8 +74,8 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts";
@import "components/filter";
@import "components/button";
@import "components/table";
@import "components/qr-code";
@import "components/navbar";
@import "components/alerts";
@import "components/animations";
@import "components/card";
@import "components/tile";
@ -93,41 +92,28 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts";
@import "components/transaction-input";
@import "components/coin-balance-tile";
@import "components/highlight";
@import "components/copy_icon";
@import "components/btn_full";
@import "components/btn_line";
@import "components/stakes";
@import "components/check";
@import "components/stakes_variables";
@import "components/stakes_table";
@import "components/i_tooltip";
@import "components/check_tooltip";
@import "components/tooltip";
@import "components/progress_from_to";
@import "components/stakes_empty_content";
@import "components/stakes_btn_remove_pool";
@import "components/modal";
@import "components/modal_validator_info";
@import "components/form";
@import "components/stakes_progress";
@import "components/modal_status";
@import "components/modal_bottom_disclaimer";
@import "components/modal_become_candidate";
@import "components/modal_stake";
@import "components/btn_copy";
@import "components/btn_qr";
@import "components/btn_address_card";
@import "components/btn_dropdown_line";
@import "components/transaction";
@import "components/api";
@import "components/alerts";
@import "components/verify_other_explorers";
@import "components/errors";
@import "components/log-search";
@import "components/radio";
@import "components/modal_variables";
@import "components/network-selector";
@import "components/new_smart_contract";
@import "components/radio_big";
@import "components/btn_no_border";
@import "theme/dark-theme";
:export {

@ -116,6 +116,10 @@ $api-doc-list-item-view-more-color: $api-doc-list-item-title-color !default;
margin: 0;
}
.api-doc-list-item-description {
width: 100%
}
.api-doc-list-item-controls {
display: flex;
flex-direction: column;

@ -23,6 +23,7 @@ $button-secondary-color: $secondary !default;
background-color: darken($button-primary-color, 10%);
border-color: darken($button-primary-color, 10%);
color: #fff;
outline: none !important;
text-decoration: none;
}

@ -9,6 +9,11 @@ $form-control-border-color: #e2e5ec !default;
border-radius: 4px;
}
&:focus {
border-color: $secondary;
box-shadow: none;
}
&.n-b-r {
border-right: none;
}

@ -1,9 +1,3 @@
$modal-overlay-color: rgba($primary, 0.9) !default;
$modal-horizontal-padding: 30px !default;
$modal-vertical-padding: 25px !default;
$modal-border-radius: 10px !default;
$modal-gray-background: #f6f7f9 !default;
.modal-backdrop {
background-color: $modal-overlay-color;

@ -0,0 +1,5 @@
$modal-overlay-color: rgba($primary, 0.9) !default;
$modal-horizontal-padding: 30px !default;
$modal-vertical-padding: 25px !default;
$modal-border-radius: 10px !default;
$modal-gray-background: #f6f7f9 !default;

@ -243,6 +243,43 @@ $network-selector-item-icon-dimensions: 30px !default;
height: $network-selector-item-icon-dimensions;
margin: 0 15px 0 0;
width: $network-selector-item-icon-dimensions;
&-callisto-mainnet {
background-image: url(/images/network-selector-icons/callisto-mainnet.svg)
}
&-ethereum-mainnet {
background-image: url(/images/network-selector-icons/ethereum-mainnet.svg)
}
&-ethereum-classic {
background-image: url(/images/network-selector-icons/ethereum-classic.svg)
}
&-goerli-testnet {
background-image: url(/images/network-selector-icons/goerli-testnet.svg)
}
&-kovan-testnet {
background-image: url(/images/network-selector-icons/kovan-testnet.svg)
}
&-poa-core {
background-image: url(/images/network-selector-icons/poa-core.svg)
}
&-poa-sokol {
background-image: url(/images/network-selector-icons/poa-sokol.svg)
}
&-rinkeby-testnet {
background-image: url(/images/network-selector-icons/rinkeby-testnet.svg)
}
&-rsk-mainnet {
background-image: url(/images/network-selector-icons/rsk-mainnet.svg)
}
&-ropsten-testnet {
background-image: url(/images/network-selector-icons/ropsten-testnet.svg)
}
&-xdai-chain {
background-image: url(/images/network-selector-icons/xdai-chain.svg)
}
&-lukso-l14-testnet {
background-image: url(/images/network-selector-icons/lukso-l14-testnet.svg)
}
}
.network-selector-item-title {

@ -0,0 +1,2 @@
$stakes-banned-background: #fff3f7 !default;
$stakes-banned-color: #ff7986 !default;

@ -1,8 +1,6 @@
$stakes-dashboard-copy-icon-color: $copy-icon-color !default;
$stakes-address-color: $primary !default;
$stakes-control-color: $primary !default;
$stakes-banned-color: #ff7986 !default;
$stakes-banned-background: #fff3f7 !default;
$stakes-stats-item-color: #fff !default;
$stakes-stats-item-border-color: #fff !default;

@ -0,0 +1,17 @@
// Bootstrap Core CSS
@import "node_modules/bootstrap/scss/functions";
@import "node_modules/bootstrap/scss/mixins";
@import "theme/variables-non-critical";
@import "node_modules/bootstrap/scss/modal";
@import "node_modules/bootstrap/scss/tooltip";
@import "components/i_tooltip";
@import "components/check_tooltip";
@import "components/tooltip";
@import "components/qr-code";
@import "components/modal_variables";
@import "components/modal";
@import "components/modal_status";

@ -0,0 +1,20 @@
@import "./mixins";
// Bootstrap Core CSS
@import "node_modules/bootstrap/scss/functions";
@import "node_modules/bootstrap/scss/mixins";
@import "theme/variables";
@import "components/stakes_variables";
@import "components/stakes/copy_icon";
@import "components/stakes/stakes";
@import "components/stakes/progress_from_to";
@import "components/stakes/stakes_empty_content";
@import "components/stakes/stakes_btn_remove_pool";
@import "components/modal_variables";
@import "components/stakes/stakes_progress";
@import "components/stakes/modal_stake";
@import "components/stakes/modal_become_candidate";
@import "components/stakes/modal_validator_info";
@import "components/stakes/modal_bottom_disclaimer";

@ -359,7 +359,7 @@ $input-btn-padding-y: 0.375rem !default;
$input-btn-padding-x: 0.75rem !default;
$input-btn-line-height: $line-height-base !default;
$input-btn-focus-width: 0.2rem !default;
$input-btn-focus-width: 1px !default;
$input-btn-focus-color: rgba($component-active-bg, 0.25) !default;
$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;

@ -0,0 +1,7 @@
// general
$primary: #17314f;
$secondary: #15bba6;
$tertiary: #93d7ff;
$additional-font: #fff;
$btn-line-color: $secondary; // button border and font color && hover bg color

@ -38,6 +38,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $secondary; // button border and font color && hover bg color
$btn-copy-color: $secondary; // btn copy
$btn-qr-color: $secondary; // btn qr-code
$btn-address-card-icon-color: $secondary; // btn address color
//links & tile
$tile-body-a-color: $secondary;

@ -234,7 +234,7 @@ $labels-dark: #8a8dba; // header nav, labels
}
}
.btn-copy-icon, .btn-qr-icon {
.btn-copy-icon, .btn-qr-icon, .btn-address-card-icon {
border-color: $dark-primary;
path {
fill: $dark-primary;
@ -578,9 +578,41 @@ $labels-dark: #8a8dba; // header nav, labels
}
}
}
#explorersModal {
.modal-title {
color: #fff;
}
.text-muted {
color: $labels-dark;
}
.modal-footer {
border-top-color: darken($labels-dark, 30);
}
.modal-content {
background-color: $dark-light-bg;
.btn-primary {
background-color: $dark-primary;
border-color: $dark-primary;
&:hover {
background-color: $dark-primary;
border-color: $dark-primary;
}
}
}
.verify-other-explorers-cell {
.exp-logo {
color: #333 !important;
color: #fff;
}
}
.close {
color: #fff;
}
}
@ -680,4 +712,70 @@ $labels-dark: #8a8dba; // header nav, labels
color: #3f436b !important;
border-right-color: #3f436b !important;
}
// 'text dark' label
.text-dark {
color: #fff;
}
// validator info
#validatorModal {
.modal-title {
color: #fff;
}
.text-muted {
color: $labels-dark;
}
.modal-footer {
border-top-color: darken($labels-dark, 30);
}
.modal-content {
background-color: $dark-light-bg;
.btn-primary {
background-color: $dark-primary;
border-color: $dark-primary;
&:hover {
background-color: $dark-primary;
border-color: $dark-primary;
}
}
}
.close {
color: #fff;
}
}
// alerts
.alert-link {
color: $labels-dark;
}
.alert-danger {
background-color: $dark-light;
border-color: $dark-light;
.alert-link {
color: $alert-danger-color;
}
}
.tile .alert {
background: rgba(#000, .1);
}
// primary buttons
.btn-full-primary, .button-primary {
background: $dark-primary;
border-color: $dark-primary;
color: #fff;
&:hover {
background: darken($dark-primary, 6);
border-color: darken($dark-primary, 6);
color: #fff;
}
}
}

@ -0,0 +1,7 @@
// general
$primary: #840032;
$secondary: #343434;
$tertiary: #7f7f7f;
$additional-font: #ff95db;
$btn-line-color: #4b021e; // button border and font color && hover bg color

@ -0,0 +1,7 @@
// general
$primary: #1c1c3d;
$secondary: #4ad7a7;
$tertiary: #5959d8;
$additional-font: #bdbdff;
$btn-line-color: $tertiary; // button border and font color && hover bg color

@ -34,6 +34,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $tertiary; // button border and font color && hover bg color
$btn-copy-color: $tertiary; // btn copy
$btn-qr-color: $tertiary; // btn qr-code
$btn-address-card-icon-color: $tertiary; // btn address color
//links & tile
$tile-body-a-color: $tertiary;

@ -0,0 +1,7 @@
// general
$primary: #153550;
$secondary: #49a2ee;
$tertiary: #4ad7a7;
$additional-font: #89cae6;
$btn-line-color: $secondary; // button border and font color && hover bg color

@ -37,6 +37,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $secondary; // button border and font color && hover bg color
$btn-copy-color: $secondary; // btn copy
$btn-qr-color: $secondary; // btn qr-code
$btn-address-card-icon-color: $secondary; // btn address color
//links & tile
$tile-body-a-color: $secondary;

@ -0,0 +1,8 @@
// general
$primary: #2b2b2b;
$secondary: #eac247;
$tertiary: #929292;
$additional-font: #ffffff;
$sub-accent-color: #a46f30;
$btn-line-color: $sub-accent-color; // button border and font color && hover bg color

@ -43,6 +43,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $sub-accent-color; // button border and font color && hover bg color
$btn-copy-color: $sub-accent-color; // btn copy
$btn-qr-color: $sub-accent-color; // btn qr-code
$btn-address-card-icon-color: $sub-accent-color; // btn address color
//links & tile
$tile-body-a-color: $sub-accent-color;

@ -0,0 +1,7 @@
// general
$primary: #101f25;
$secondary: #35e3d8;
$tertiary: #1f857f;
$additional-font: #99fff9;
$btn-line-color: $tertiary; // button border and font color && hover bg color

@ -38,6 +38,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $tertiary; // button border and font color && hover bg color
$btn-copy-color: $tertiary; // btn copy
$btn-qr-color: $tertiary; // btn qr-code
$btn-address-card-icon-color: $tertiary; // btn address color
//links & tile
$tile-body-a-color: $tertiary;

@ -0,0 +1,7 @@
// general
$primary: #1d3154;
$secondary: #fdcec4;
$tertiary: #a96c55;
$additional-font: #a1ded1;
$btn-line-color: $primary; // button border and font color && hover bg color

@ -44,6 +44,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $primary; // button border and font color && hover bg color
$btn-copy-color: $primary; // btn copy
$btn-qr-color: $primary; // btn qr-code
$btn-address-card-icon-color: $primary; // btn address color
// card
$card-background-1: $primary;

@ -0,0 +1,7 @@
// general
$primary: #5c34a2;
$secondary: #87e1a9;
$tertiary: #bf9cff;
$additional-font: #fff;
$btn-line-color: $primary; // button border and font color && hover bg color

@ -40,6 +40,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $primary; // button border and font color && hover bg color
$btn-copy-color: $primary; // btn copy
$btn-qr-color: $primary; // btn qr-code
$btn-address-card-icon-color: $primary; // btn address color
//links & tile
$tile-body-a-color: $primary;

@ -0,0 +1,7 @@
// general
$primary: #5c34a2;
$secondary: #87e1a9;
$tertiary: #bf9cff;
$additional-font: #fff;
$btn-line-color: $primary; // button border and font color && hover bg color

@ -40,6 +40,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $primary; // button border and font color && hover bg color
$btn-copy-color: $primary; // btn copy
$btn-qr-color: $primary; // btn qr-code
$btn-address-card-icon-color: $primary; // btn address color
//links & tile
$tile-body-a-color: $primary;

@ -0,0 +1,7 @@
// general
$primary: #153550;
$secondary: #38a9f5;
$tertiary: #76f1ff;
$additional-font: #89cae6;
$btn-line-color: $secondary; // button border and font color && hover bg color

@ -37,6 +37,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $secondary; // button border and font color && hover bg color
$btn-copy-color: $secondary; // btn copy
$btn-qr-color: $secondary; // btn qr-code
$btn-address-card-icon-color: $secondary; // btn address color
//links & tile
$tile-body-a-color: $secondary;

@ -0,0 +1,7 @@
// general
$primary: #153550;
$secondary: #38a9f5;
$tertiary: #76f1ff;
$additional-font: #89cae6;
$btn-line-color: $secondary; // button border and font color && hover bg color

@ -37,6 +37,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $secondary; // button border and font color && hover bg color
$btn-copy-color: $secondary; // btn copy
$btn-qr-color: $secondary; // btn qr-code
$btn-address-card-icon-color: $secondary; // btn address color
//links & tile
$tile-body-a-color: $secondary;

@ -0,0 +1,7 @@
// general
$primary: #101f25;
$secondary: #27ac8d;
$tertiary: #e39a54;
$additional-font: #a1ded1;
$btn-line-color: $secondary; // button border and font color && hover bg color

@ -38,6 +38,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $secondary; // button border and font color && hover bg color
$btn-copy-color: $secondary; // btn copy
$btn-qr-color: $secondary; // btn qr-code
$btn-address-card-icon-color: $secondary; // btn address color
// card
$card-background-1: $secondary;

@ -0,0 +1,8 @@
// general
$primary: #093731;
$secondary: #40bfb2;
$tertiary: #25c9ff;
$additional-font: #93e8dd;
$sub-accent-color: #1c9f90;
$btn-line-color: $sub-accent-color; // button border and font color && hover bg color

@ -49,6 +49,7 @@ $btn-line-bg: #fff; // button bg
$btn-line-color: $sub-accent-color; // button border and font color && hover bg color
$btn-copy-color: $sub-accent-color; // btn copy
$btn-qr-color: $sub-accent-color; // btn qr-code
$btn-address-card-icon-color: $sub-accent-color; // btn address color
//links & tile
$tile-body-a-color: $sub-accent-color;

@ -0,0 +1,22 @@
@import "theme/base_variables";
@import "neutral_variables-non-critical";
// @import "dai_variables-non-critical";
// @import "ethereum_classic_variables-non-critical";
// @import "ethereum_variables-non-critical";
// @import "ether1_variables-non-critical";
// @import "expanse_variables-non-critical";
// @import "gochain_variables-non-critical";
// @import "goerli_variables-non-critical";
// @import "kovan_variables-non-critical";
// @import "lukso_variables-non-critical";
// @import "musicoin_variables-non-critical";
// @import "pirl_variables-non-critical";
// @import "poa_variables-non-critical";
// @import "posdao_variables-non-critical";
// @import "rinkeby_variables-non-critical";
// @import "ropsten_variables-non-critical";
// @import "social_variables-non-critical";
// @import "sokol_variables-non-critical";
// @import "tobalaba_variables-non-critical";
// @import "tomochain_variables-non-critical";
// @import "rsk_variables-non-critical";

@ -20,6 +20,9 @@ import 'bootstrap'
import './locale'
// support of preload in Firefox
import '../node_modules/fg-loadcss/dist/cssrelpreload.min'
import './pages/address'
import './pages/address/coin_balances'
import './pages/address/transactions'
@ -59,5 +62,6 @@ import './lib/async_listing_load'
import './lib/tooltip'
import './lib/modals'
import './lib/try_api'
import './lib/try_eth_api'
import './lib/card_tabs'
import './lib/network_selector'

@ -51,8 +51,6 @@ export const asyncInitialState = {
requestError: false,
/* if response has no items */
emptyResponse: false,
/* if it is loading the first page */
loadingFirstPage: true,
/* link to the next page */
nextPagePath: null,
/* link to the previous page */
@ -80,8 +78,7 @@ export function asyncReducer (state = asyncInitialState, action) {
}
case 'FINISH_REQUEST': {
return Object.assign({}, state, {
loading: false,
loadingFirstPage: false
loading: false
})
}
case 'ITEMS_FETCHED': {
@ -134,7 +131,7 @@ export const elements = {
},
'[data-async-listing] [data-loading-message]': {
render ($el, state) {
if (state.loadingFirstPage) return $el.show()
if (state.loading) return $el.show()
$el.hide()
}
@ -143,7 +140,7 @@ export const elements = {
render ($el, state) {
if (
!state.requestError &&
(!state.loading || !state.loadingFirstPage) &&
(!state.loading) &&
state.items.length === 0
) {
return $el.show()
@ -201,6 +198,25 @@ export const elements = {
$el.attr('href', state.prevPagePath)
}
},
'[data-async-listing] [data-first-page-button]': {
render ($el, state) {
if (state.pagesStack.length === 0) {
return $el.hide()
}
$el.show()
$el.attr('disabled', false)
const urlParams = new URLSearchParams(window.location.search)
const blockParam = urlParams.get('block_type')
const firstPageHref = window.location.href.split('?')[0]
if (blockParam !== null) {
$el.attr('href', firstPageHref + '?block_type=' + blockParam)
} else {
$el.attr('href', firstPageHref)
}
}
},
'[data-async-listing] [data-page-number]': {
render ($el, state) {
if (state.emptyResponse) {
@ -216,7 +232,7 @@ export const elements = {
},
'[data-async-listing] [data-loading-button]': {
render ($el, state) {
if (!state.loadingFirstPage && state.loading) return $el.show()
if (state.loading) return $el.show()
$el.hide()
}

@ -18,6 +18,14 @@ export function createCoinBalanceHistoryChart (el) {
y: balance.value
}))
var stepSize = 3
if (data.length > 1) {
var diff = Math.abs(new Date(data[data.length - 1].date) - new Date(data[data.length - 2].date))
var periodInDays = diff / (1000 * 60 * 60 * 24)
stepSize = periodInDays
}
return new Chart(el, {
type: 'line',
data: {
@ -36,7 +44,7 @@ export function createCoinBalanceHistoryChart (el) {
type: 'time',
time: {
unit: 'day',
stepSize: 3
stepSize: stepSize
}
}],
yAxes: [{

@ -1,20 +1,17 @@
import $ from 'jquery'
const tokenTransferToggle = (element) => {
const $element = $(element)
const $tokenTransferClose = $element.find("[data-selector='token-transfer-close']")
const $tokenTransferOpen = $element.find("[data-selector='token-transfer-open']")
$(document.body).on('click', '[data-selector="token-transfer-open"]', event => {
const $tokenTransferOpen = event.target
const $parent = $tokenTransferOpen.parentElement
const $tokenTransferClose = $parent.querySelector("[data-selector='token-transfer-close']")
$tokenTransferOpen.classList.add('d-none')
$tokenTransferClose.classList.remove('d-none')
})
$element.on('show.bs.collapse', () => {
$tokenTransferOpen.addClass('d-none')
$tokenTransferClose.removeClass('d-none')
})
$element.on('hide.bs.collapse', () => {
$tokenTransferClose.addClass('d-none')
$tokenTransferOpen.removeClass('d-none')
})
}
// Initialize the script scoped for each card.
$("[data-selector='token-transfers-toggle']").each((_index, element) => tokenTransferToggle(element))
$(document.body).on('click', '[data-selector="token-transfer-close"]', event => {
const $tokenTransferClose = event.target
const $parent = $tokenTransferClose.parentElement
const $tokenTransferOpen = $parent.querySelector("[data-selector='token-transfer-open']")
$tokenTransferClose.classList.add('d-none')
$tokenTransferOpen.classList.remove('d-none')
})

@ -1,5 +1,5 @@
import $ from 'jquery'
$(function () {
$('[data-toggle="tooltip"]').tooltip()
$('body').tooltip({ selector: '[data-toggle="tooltip"]' })
})

@ -55,6 +55,10 @@ function handleSuccess (query, xhr, clickedButton) {
clickedButton.prop('disabled', false)
}
function dropDomain (url) {
return new URL(url).pathname
}
// Show 'Try it out' UI for a module/action.
$('button[data-selector*="btn-try-api"]').click(event => {
const clickedButton = $(event.target)
@ -124,7 +128,7 @@ $('button[data-try-api-ui-button-type="execute"]').click(event => {
}
$.ajax({
url: `/api${query}`,
url: dropDomain(composeRequestUrl(query)),
success: (_data, _status, xhr) => {
handleSuccess(query, xhr, clickedButton)
},

@ -0,0 +1,76 @@
import $ from 'jquery'
function composeCurlCommand (data) {
const url = $('[data-endpoint-url]').attr('data-endpoint-url')
return `curl -H "content-type: application/json" -X POST --data '${JSON.stringify(data)}' ${url}`
}
function handleResponse (data, xhr, clickedButton) {
const module = clickedButton.attr('data-module')
const action = clickedButton.attr('data-action')
const curl = $(`[data-selector="${module}-${action}-curl"]`)[0]
const code = $(`[data-selector="${module}-${action}-server-response-code"]`)[0]
const body = $(`[data-selector="${module}-${action}-server-response-body"]`)[0]
curl.innerHTML = composeCurlCommand(data)
code.innerHTML = xhr.status
body.innerHTML = JSON.stringify(xhr.responseJSON, undefined, 2)
$(`[data-selector="${module}-${action}-try-api-ui-result"]`).show()
$(`[data-selector="${module}-${action}-btn-try-api-clear"]`).show()
clickedButton.html(clickedButton.data('original-text'))
clickedButton.prop('disabled', false)
}
function wrapJsonRpc (method, params) {
return {
id: 0,
jsonrpc: '2.0',
method: method,
params: params
}
}
function parseInput (input) {
const type = $(input).attr('data-parameter-type')
const value = $(input).val()
switch (type) {
case 'string':
return value
case 'json':
return JSON.parse(value)
default:
return value
}
}
function dropDomain (url) {
return new URL(url).pathname
}
$('button[data-try-eth-api-ui-button-type="execute"]').click(event => {
const clickedButton = $(event.target)
const module = clickedButton.attr('data-module')
const action = clickedButton.attr('data-action')
const inputs = $(`input[data-selector="${module}-${action}-try-api-ui"]`)
const params = $.map(inputs, parseInput)
const formData = wrapJsonRpc(action, params)
const loadingText = '<span class="loading-spinner-small mr-2"><span class="loading-spinner-block-1"></span><span class="loading-spinner-block-2"></span></span> Loading...'
clickedButton.prop('disabled', true)
clickedButton.data('original-text', clickedButton.html())
if (clickedButton.html() !== loadingText) {
clickedButton.html(loadingText)
}
const url = $('[data-endpoint-url]').attr('data-endpoint-url')
$.ajax({
url: dropDomain(url),
type: 'POST',
data: JSON.stringify(formData),
dataType: 'json',
contentType: 'application/json; charset=utf-8'
}).then((_data, _status, xhr) => handleResponse(formData, xhr, clickedButton))
})

@ -45,7 +45,7 @@ const elements = {
},
'[data-search]': {
render ($el, state) {
if (state.emptyResponse) {
if (state.emptyResponse && !state.isSearch) {
return $el.hide()
}

@ -0,0 +1 @@
import '../../css/stakes.scss'

@ -2678,8 +2678,7 @@
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"is-svg": {
"version": "3.0.0",
@ -2690,16 +2689,6 @@
"html-comment-regex": "^1.1.0"
}
},
"js-yaml": {
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
}
},
"mdn-data": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz",
@ -3638,8 +3627,7 @@
"esprima": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
"integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
"dev": true
"integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
},
"globals": {
"version": "11.7.0",
@ -3647,16 +3635,6 @@
"integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==",
"dev": true
},
"js-yaml": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
}
},
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
@ -3812,12 +3790,6 @@
"acorn-jsx": "^3.0.0"
}
},
"esprima": {
"version": "2.7.3",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
"integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
"dev": true
},
"esquery": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
@ -3980,9 +3952,9 @@
}
},
"extend": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extend-shallow": {
@ -4121,6 +4093,11 @@
"bser": "^2.0.0"
}
},
"fg-loadcss": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fg-loadcss/-/fg-loadcss-2.1.0.tgz",
"integrity": "sha512-HpvR2uRoKvrYAEwimw+k4Fr2NVHYPfld5Lc/f9uy3mKeUTXhS5urL24XA2rqyq5b2i410EXCLir4Uhsb8J1QaQ=="
},
"figgy-pudding": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
@ -4288,6 +4265,16 @@
"readable-stream": "^2.0.0"
}
},
"fs-minipass": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz",
"integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==",
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
}
},
"fs-write-stream-atomic": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
@ -4370,9 +4357,7 @@
"chownr": {
"version": "1.0.1",
"resolved": false,
"integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
"dev": true,
"optional": true
"integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE="
},
"code-point-at": {
"version": "1.1.0",
@ -4437,8 +4422,6 @@
"version": "1.2.5",
"resolved": false,
"integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
}
@ -4572,8 +4555,6 @@
"version": "2.2.4",
"resolved": false,
"integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
@ -4583,8 +4564,6 @@
"version": "1.1.0",
"resolved": false,
"integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
}
@ -4793,9 +4772,7 @@
"safe-buffer": {
"version": "5.1.1",
"resolved": false,
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
"dev": true,
"optional": true
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
},
"safer-buffer": {
"version": "2.1.2",
@ -4871,22 +4848,6 @@
"dev": true,
"optional": true
},
"tar": {
"version": "4.4.1",
"resolved": false,
"integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
"dev": true,
"optional": true,
"requires": {
"chownr": "^1.0.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.2.4",
"minizlib": "^1.1.0",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.1",
"yallist": "^3.0.2"
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": false,
@ -4914,16 +4875,14 @@
"yallist": {
"version": "3.0.2",
"resolved": false,
"integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
"dev": true,
"optional": true
"integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
}
}
},
"fstream": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@ -5153,15 +5112,23 @@
"dev": true
},
"handlebars": {
"version": "4.0.12",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
"integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
"integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
"dev": true,
"requires": {
"async": "^2.5.0",
"neo-async": "^2.6.0",
"optimist": "^0.6.1",
"source-map": "^0.6.1",
"uglify-js": "^3.1.4"
},
"dependencies": {
"neo-async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
"dev": true
}
}
},
"har-schema": {
@ -6753,9 +6720,9 @@
}
},
"jquery": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
"integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg=="
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.0.tgz",
"integrity": "sha512-ggRCXln9zEqv6OqAGXFEcshF5dSBvCkzj6Gm2gzuR5fWawaX8t7cxKVkkygKODrDAzKdoYw3l/e3pm3vlT4IbQ=="
},
"js-base64": {
"version": "2.4.5",
@ -6769,13 +6736,21 @@
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
},
"js-yaml": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
"integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
"esprima": "^2.6.0"
"esprima": "^4.0.0"
},
"dependencies": {
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
}
}
},
"jsbn": {
@ -6983,9 +6958,9 @@
}
},
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
},
"lodash.assign": {
"version": "4.2.0",
@ -7012,9 +6987,9 @@
"dev": true
},
"lodash.mergewith": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
"integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
"integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
"dev": true
},
"lodash.sortby": {
@ -7417,6 +7392,36 @@
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
},
"minipass": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
},
"dependencies": {
"yallist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"dev": true,
"optional": true
}
}
},
"minizlib": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz",
"integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
}
},
"mississippi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
@ -7603,6 +7608,31 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
"dev": true
},
"tar": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
"integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
"dev": true,
"requires": {
"block-stream": "*",
"fstream": "^1.0.12",
"inherits": "2"
},
"dependencies": {
"fstream": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
}
}
}
}
}
},
@ -8021,18 +8051,7 @@
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
},
"js-yaml": {
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
}
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"parse-json": {
"version": "4.0.0",
@ -10715,14 +10734,35 @@
"dev": true
},
"tar": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"version": "4.4.10",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.10.tgz",
"integrity": "sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==",
"dev": true,
"optional": true,
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
"inherits": "2"
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.3.5",
"minizlib": "^1.2.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.3"
},
"dependencies": {
"chownr": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
"integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
"dev": true,
"optional": true
},
"yallist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"dev": true,
"optional": true
}
}
},
"terser": {

@ -25,11 +25,12 @@
"bootstrap": "^4.1.3",
"chart.js": "^2.7.2",
"clipboard": "^2.0.1",
"fg-loadcss": "^2.1.0",
"highlight.js": "^9.13.1",
"highlightjs-solidity": "^1.0.6",
"humps": "^2.0.1",
"jquery": "^3.3.1",
"lodash": "^4.17.11",
"jquery": "^3.4.0",
"lodash": "^4.17.15",
"moment": "^2.22.1",
"nanomorph": "^5.1.3",
"numeral": "^2.0.6",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#164059" fill-rule="evenodd" d="M30 14.999V30H0V0h30v14.999z"/>
<path fill="#34C88A" fill-rule="evenodd" d="M15.678 14.092c-.384 0-.386-.386-.386-.386s1.424-2.53 1.654-2.917c.23-.387.661-.055.661-.055s5.111 2.961 5.899 3.413c1.111.853 0 1.706 0 1.706l-5.899 3.413s-.441.26-.606 0c-.165-.26-1.544-2.752-1.544-2.752s-.354-.526.221-.661h1.102c.368 0 .386.441.386.441v.605s.037.33.331.33h.496l1.764-1.981s.299-.276 0-.551c-.299-.274-1.543-1.761-1.543-1.761l-.276-.165h-.386s-.386-.009-.386.495v.495s.001.331-.33.331h-1.158zM11.943 13.756c.192.333-.141.527-.141.527s-2.9.034-3.35.029c-.45-.006-.378-.545-.378-.545s.013-5.904.011-6.812c.183-1.388 1.477-.853 1.477-.853l5.897 3.396s.445.252.303.525c-.143.273-1.612 2.712-1.612 2.712s-.279.571-.682.14l-.55-.954c-.184-.318.188-.554.188-.554l.524-.303s.268-.197.121-.451l-.247-.43-2.596-.535s-.388-.121-.476.276c-.089.396-.755 2.217-.755 2.217l-.005.321.192.334s.185.338.622.086l.429-.248s.285-.166.451.121l.577 1.001z"/>
<path fill="#FFF" fill-rule="evenodd" d="M11.887 16.244c.192-.333-.141-.527-.141-.527s-2.899-.034-3.349-.029c-.45.006-.378.545-.378.545s.013 5.904.011 6.812c.183 1.388 1.476.853 1.476.853l5.896-3.396s.445-.252.303-.525c-.142-.273-1.612-2.712-1.612-2.712s-.278-.571-.682-.14l-.55.954c-.183.318.189.554.189.554l.524.303s.267.197.121.451l-.248.43-2.595.535s-.387.121-.476-.276c-.088-.396-.754-2.217-.754-2.217l-.006-.321.193-.334s.185-.338.621-.086l.429.248s.285.166.451-.121l.577-1.001z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 60 60">
<g>
<path d="M.87,4h0V26.18a1.35,1.35,0,0,0,1.35,1.37l9.91,0a1.37,1.37,0,0,0,1.16-2L12,23.19h0a2,2,0,0,0-2.75-.75h0l-.14.08h0a2,2,0,0,1-2.72-.74,2.06,2.06,0,0,1-.16-1.65h0l2.06-6.28h0a2,2,0,0,1,2.31-1.36h0L17,13.8h0a2,2,0,0,1,1.33,1,2,2,0,0,1-.73,2.77h0l-.14.08h0a2.07,2.07,0,0,0-.74,2.8h0L18,22.65a1.34,1.34,0,0,0,2.32,0l5-8.66a1.37,1.37,0,0,0-.49-1.86L5.9,1.06h0A3.36,3.36,0,0,0,.87,4Z"/>
<path d="M50.9,26.32h0L30.58,14.37a1.34,1.34,0,0,0-1.85.5L23.4,24.36a1.47,1.47,0,0,0,1.25,2.19h3.48a1.45,1.45,0,0,0,1.44-1.47V24A1.34,1.34,0,0,1,30.9,22.6h.92a1.33,1.33,0,0,1,1,.46l4.84,5.56a1.38,1.38,0,0,1,0,1.81L32.83,36a1.33,1.33,0,0,1-1,.46H30.9a1.34,1.34,0,0,1-1.33-1.35V34a1.45,1.45,0,0,0-1.44-1.47H24.7a1.47,1.47,0,0,0-1.25,2.19l5.29,9.43a1.33,1.33,0,0,0,1.83.49L50.9,32.67h0A3.7,3.7,0,0,0,50.9,26.32Z"/>
<path d="M5.9,58.94h0L24.76,47.87a1.39,1.39,0,0,0,.5-1.88l-5-8.71a1.34,1.34,0,0,0-2.32,0l-1.62,2.86a1.38,1.38,0,0,0,.5,1.87l1.27.75a1.38,1.38,0,0,1,.5,1.86l-.48.84a1.34,1.34,0,0,1-.89.65L10,47.61a1.34,1.34,0,0,1-1.54-.91L6.08,39.56a1.39,1.39,0,0,1,.11-1.12l.47-.83a1.34,1.34,0,0,1,1.84-.49l1.27.75a1.33,1.33,0,0,0,1.83-.49l1.61-2.83a1.37,1.37,0,0,0-1.16-2l-9.84,0A1.35,1.35,0,0,0,.87,33.82V56h0A3.36,3.36,0,0,0,5.9,58.94Z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#5C34A2" fill-rule="evenodd" d="M15 0c8.284 0 15 6.716 15 15 0 8.284-6.716 15-15 15-8.284 0-15-6.716-15-15C0 6.716 6.716 0 15 0z"/>
<path fill="#FFF" fill-rule="evenodd" d="M8.438 16.812h-.313v.875h-.007c.001.007.007.01.007.016 0 .164-.14.297-.313.297h-2.5A.305.305 0 0 1 5 17.703c0-.006.006-.009.007-.016H5v-5.374h.007c-.001-.007-.007-.01-.007-.016 0-.164.14-.297.312-.297h3.126c1.38 0 2.5 1.077 2.5 2.406 0 1.329-1.12 2.406-2.5 2.406zM14.688 12c1.725 0 3.125 1.343 3.125 3s-1.4 3-3.125 3c-1.726 0-3.126-1.343-3.126-3s1.4-3 3.126-3zM25 17.81a.19.19 0 0 1-.193.185h-7.108c-.004.001-.007.005-.011.005a.188.188 0 0 1-.188-.188c0-.039.021-.07.042-.101l-.007-.012 3.52-5.549h.016c.02-.082.086-.148.177-.148.092 0 .158.066.178.148h.016L25 17.736l-.02.027c.005.017.02.029.02.047z"/>
</svg>

Before

Width:  |  Height:  |  Size: 868 B

@ -1,33 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="25" height="25" viewBox="0 0 43.5 43.5">
<defs>
<style>
.a {
fill: #fff;
filter: url(#b);
}
.b {
fill: url(#a);
}
</style>
<linearGradient id="a" x1="21" y1="12.89" x2="21" y2="28.58" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fec54c"/>
<stop offset="1" stop-color="#fe9314"/>
</linearGradient>
<filter filterUnits="userSpaceOnUse" height="49" id="b" width="43" x="0" y="0">
<feOffset dy="3" in="SourceAlpha"></feOffset>
<feGaussianBlur result="blurOut" stdDeviation="2.236"></feGaussianBlur>
<feFlood flood-color="#ABBAC7" result="floodOut"></feFlood>
<feComposite in="floodOut" in2="blurOut" operator="atop"></feComposite>
<feComponentTransfer>
<feFuncA slope=".2" type="linear"></feFuncA>
</feComponentTransfer>
<feMerge>
<feMergeNode></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
</defs>
<path class="a" d="M17.2,38.8,6,32.1a4.34,4.34,0,0,1-2-3.4V12.9A4.11,4.11,0,0,1,6,9.5L17.2,2.8C21,.5,21,.5,24.9,2.8L36,9.4a4.22,4.22,0,0,1,2,3.4V28.6A4.22,4.22,0,0,1,36,32L24.9,38.7C21,41.1,21,41.1,17.2,38.8Z"/>
<polygon class="b" points="30.03 12.89 24.97 12.89 21.03 17.64 17.03 12.89 11.97 12.89 18.53 20.82 11.97 28.7 17.03 28.7 20.97 23.95 24.97 28.7 30.03 28.7 23.47 20.76 30.03 12.89"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#0C133C" fill-rule="evenodd" d="M30 15v15H0V0h30v15z"/>
<path fill="#34FA99" fill-rule="evenodd" d="M15.437 25h-.874L8 15.217v-.434L14.563 5h.874L22 14.783v.434L15.437 25zM15 22.826l3.937-5.869L15 18.913l-3.937-1.956L15 22.826zm0-15.652l-3.937 5.869L15 11.087l3.937 1.956L15 7.174zm0 5.543L10.516 15 15 17.283 19.484 15 15 12.717z"/>
</svg>

After

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#E8E8E8" fill-rule="evenodd" d="M30 15v15H15 0V0h30v15z"/>
<path fill="#828384" fill-rule="evenodd" d="M9 15.169l6-2.711V5L9 15.169z"/>
<path fill="#343535" fill-rule="evenodd" d="M9 15.169l6-2.796v6.441l-6-3.645z"/>
<path fill="#808182" fill-rule="evenodd" d="M9 16.441l6 3.644V25l-6-8.559z"/>
<path fill="#2F3030" fill-rule="evenodd" d="M21 15.169l-6-2.711V5l6 10.169z"/>
<path fill="#131313" fill-rule="evenodd" d="M21 15.169l-6-2.796v6.441l6-3.645z"/>
<path fill="#2F3030" fill-rule="evenodd" d="M21 16.441l-6 3.644V25l6-8.559z"/>
</svg>

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#1C1C1C" fill-rule="evenodd" d="M0 30V0h30v30H0z"/>
<path fill="#FFF" fill-rule="evenodd" d="M23.73 18.983c-.18.61-.442 1.14-.786 1.589a3.63 3.63 0 0 1-1.271 1.051c-.504.252-1.076.378-1.716.378-.647 0-1.223-.126-1.728-.378a3.66 3.66 0 0 1-1.28-1.051 4.782 4.782 0 0 1-.79-1.589 7.03 7.03 0 0 1-.27-1.998v-.191c0-.716.09-1.379.27-1.988.18-.61.443-1.14.79-1.589a3.725 3.725 0 0 1 1.272-1.056c.5-.254 1.073-.382 1.72-.382.646 0 1.22.128 1.724.382.503.255.928.607 1.275 1.056.347.449.61.979.79 1.589a6.99 6.99 0 0 1 .271 1.988v.191a7.03 7.03 0 0 1-.271 1.998zm-1.946-2.189c0-.4-.035-.779-.103-1.137a3.37 3.37 0 0 0-.322-.947 1.771 1.771 0 0 0-.568-.646c-.233-.158-.517-.237-.85-.237-.329 0-.609.079-.843.237a1.809 1.809 0 0 0-.572.646 3.28 3.28 0 0 0-.325.947 6.002 6.002 0 0 0-.103 1.137v.191c0 .413.034.8.103 1.161.069.361.177.677.325.947a1.8 1.8 0 0 0 .576.641c.236.158.521.237.855.237.323 0 .601-.079.834-.237.233-.157.422-.371.568-.641.145-.27.253-.586.322-.947.068-.361.103-.748.103-1.161v-.191zm.858-6.835a1.005 1.005 0 0 1-.342.241 1.075 1.075 0 0 1-.437.086c-.159 0-.304-.028-.437-.086a1.011 1.011 0 0 1-.341-.241 1.105 1.105 0 0 1-.223-.364 1.276 1.276 0 0 1-.079-.455c0-.158.026-.307.079-.446a1.048 1.048 0 0 1 .564-.597c.133-.057.278-.086.437-.086.159 0 .305.029.437.086a1.038 1.038 0 0 1 .564.597c.053.139.08.288.08.446 0 .163-.027.315-.08.455a1.12 1.12 0 0 1-.222.364zm-3.814-.014a1.044 1.044 0 0 1-.778.323 1.048 1.048 0 0 1-.779-.323c-.095-.1-.169-.22-.222-.359a1.25 1.25 0 0 1-.08-.446c0-.158.027-.307.08-.446.053-.14.127-.261.222-.365.096-.103.209-.183.342-.241.132-.057.278-.086.437-.086.159 0 .304.029.437.086.132.058.246.138.341.241.096.104.17.225.223.365.053.139.079.288.079.446 0 .157-.026.306-.079.446a1.053 1.053 0 0 1-.223.359zm-6.002 11.487a5.775 5.775 0 0 1-2.515.56c-.656 0-1.25-.134-1.779-.401a3.837 3.837 0 0 1-1.359-1.156c-.376-.504-.666-1.121-.87-1.852-.204-.731-.306-1.561-.306-2.49v-1.802c0-.928.108-1.758.322-2.489.215-.731.511-1.352.89-1.862a3.938 3.938 0 0 1 1.335-1.165 3.552 3.552 0 0 1 1.664-.4c.652 0 1.22.094 1.704.282.485.188.894.46 1.228.815.334.355.594.787.782 1.297.188.509.312 1.083.37 1.72h-2.177c-.074-.679-.253-1.191-.536-1.534-.284-.342-.722-.514-1.315-.514-.286 0-.551.084-.795.25-.243.167-.455.412-.635.733-.18.322-.323.721-.429 1.197a7.657 7.657 0 0 0-.159 1.652v1.82c.005 1.238.185 2.187.54 2.845.355.658.898.99 1.629.996a2.955 2.955 0 0 0 .993-.172c.148-.055.279-.117.393-.187.114-.07.2-.144.258-.223l.008-2.403h-1.914v-1.911h4.139l.008 5.224c-.143.2-.339.404-.588.61a4.438 4.438 0 0 1-.886.56z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#1F857F" fill-rule="evenodd" d="M30 14.999V30H0V0h30v14.999z"/>
<path fill="#FFF" fill-rule="evenodd" d="M18.938 21.316l1.312 1.263V23H9.75v-.421l1.312-1.263C9.4 21.316 8 19.968 8 18.368v-8C8 7.421 11.15 7 15 7s7 .421 7 3.368v8c0 1.6-1.4 2.948-3.062 2.948zm-7.759-2.01c.709 0 1.283-.554 1.283-1.237 0-.682-.574-1.236-1.283-1.236s-1.283.554-1.283 1.236c0 .683.574 1.237 1.283 1.237zm3.179-9.223H9.896v4.306h4.462v-4.306zm5.746 0h-4.462v4.306h4.462v-4.306zm-1.283 6.75c-.709 0-1.283.554-1.283 1.236 0 .683.574 1.237 1.283 1.237s1.283-.554 1.283-1.237c0-.682-.574-1.236-1.283-1.236z"/>
</svg>

After

Width:  |  Height:  |  Size: 674 B

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#FF8086" fill-rule="evenodd" d="M0 30V0h30v30H0z"/>
<path fill="#FFF" fill-rule="evenodd" d="M5.008 15h10.601l4.387-8.012h-9.87L5.008 15z"/>
<path fill="#DADBDA" fill-rule="evenodd" d="M5.008 15h10.601l4.387 8.012h-9.87L5.008 15z"/>
<path fill="#EFEEEE" fill-rule="evenodd" d="M13.992 15l5.295-7.992L24.99 15l-5.703 7.992L13.992 15z"/>
</svg>

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#5C34A2" fill-rule="evenodd" d="M30 14.999V30H0V0h30v14.999z"/>
<path fill="#FFF" fill-rule="evenodd" d="M8.438 16.812h-.313v.875h-.007c.001.006.007.01.007.016 0 .164-.14.297-.313.297h-2.5A.305.305 0 0 1 5 17.703c0-.006.006-.01.007-.016H5v-5.375h.007c-.001-.006-.007-.009-.007-.015 0-.164.14-.297.312-.297h3.126c1.38 0 2.5 1.077 2.5 2.406 0 1.329-1.12 2.406-2.5 2.406zM14.687 12c1.726 0 3.126 1.343 3.126 3s-1.4 3-3.126 3c-1.725 0-3.125-1.343-3.125-3s1.4-3 3.125-3zM25 17.81a.19.19 0 0 1-.193.185h-7.108c-.004.001-.007.005-.011.005a.188.188 0 0 1-.188-.187c0-.04.021-.071.042-.102l-.007-.012 3.52-5.549h.016c.02-.082.086-.148.177-.148.092 0 .158.066.178.148h.016L25 17.736l-.02.027c.005.017.02.029.02.047z"/>
</svg>

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#71C8B9" fill-rule="evenodd" d="M30 14.999V30H0V0h30v14.999z"/>
<path fill="#FFF" fill-rule="evenodd" d="M24.22 20h-6.449c-.089 0-.178-.034-.266-.06l.013.06h-2.781l-.835-3.681H5.437v-.084C5.192 16.197 5 15.959 5 15.66v-4.48h.003c.008-.646.449-1.166.997-1.176V10h15.949c.559 0 1.134.535 1.283 1.194l1.729 7.612c.149.659-.182 1.194-.741 1.194zM9.054 11.84H6.776l.61 2.637h2.279l-.611-2.637zm3.78 0h-2.279l.611 2.637h2.278l-.61-2.637zm6.226 6.841h1.05l-.282-1.308h-1.05l.282 1.308zm2.761-6.841h-4.375l1.175 5.001h4.376l-1.176-5.001zm1.343 5.533h-1.05l.282 1.308h1.05l-.282-1.308zm-17.727-.012h6.907v.011h.772L13.668 20H6.125v-.026c-.038.005-.071.026-.109.026-.514 0-.922-.457-.989-1.042H5v-.798h.086c-.041-.081-.086-.159-.086-.261 0-.297.196-.538.437-.538z"/>
</svg>

After

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.9 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#38A9F5" fill-rule="evenodd" d="M30 15v15H15 0V0h30v15z"/>
<path fill="#FFF" fill-rule="evenodd" d="M20.235 24h1.772l-3.149-4.492a2.452 2.452 0 0 0 1.502-.8 2.26 2.26 0 0 0 .599-1.567V8.367c0-.65-.241-1.207-.724-1.672C19.75 6.23 19.156 6 18.46 6h-6.92c-.703 0-1.292.23-1.775.695-.483.465-.724 1.022-.724 1.672v8.774c0 .603.205 1.131.617 1.583.41.453.905.714 1.484.783L7.993 24h1.772l.303-.431h9.863l.304.431zm-1.054-5.954c-.214.208-.496.314-.831.314-.315 0-.58-.106-.797-.314a1.062 1.062 0 0 1-.328-.801c0-.301.11-.562.328-.783.217-.22.482-.33.797-.33.336 0 .617.111.831.33.217.221.327.482.327.783 0 .326-.11.591-.327.801zm-8.618-9.459c0-.325.109-.591.326-.802.216-.208.494-.312.832-.312h6.556c.339 0 .622.104.852.312.232.211.346.477.346.802v2.808c0 .326-.116.593-.346.802a1.22 1.22 0 0 1-.852.312h-6.558c-.337 0-.615-.104-.831-.312a1.063 1.063 0 0 1-.325-.802V8.587zm.253 9.459a1.058 1.058 0 0 1-.327-.801c0-.301.108-.562.327-.783.219-.22.495-.332.834-.332.312 0 .578.112.797.331.217.222.327.483.327.784 0 .326-.11.591-.328.801a1.113 1.113 0 0 1-.796.314c-.339 0-.615-.106-.834-.314zm.266 4.072l.821-1.18h6.194l.824 1.18h-7.839z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#38A9F5" fill-rule="evenodd" d="M15 0c8.284 0 15 6.716 15 15 0 8.284-6.716 15-15 15-8.284 0-15-6.716-15-15C0 6.716 6.716 0 15 0z"/>
<path fill="#FFF" fill-rule="evenodd" d="M24.22 20h-6.449c-.089 0-.178-.034-.266-.06l.013.06h-2.781l-.836-3.687H5.437v-.078c-.245-.038-.437-.277-.437-.579v-4.469h.003c.007-.65.448-1.173.997-1.183V10h15.95c.558 0 1.133.535 1.282 1.194l1.729 7.612c.149.659-.182 1.194-.741 1.194zM9.054 11.84H6.776l.61 2.638h2.279l-.611-2.638zm3.78 0h-2.279l.611 2.638h2.278l-.61-2.638zm6.226 6.841h1.05l-.282-1.308h-1.05l.282 1.308zm2.761-6.841h-4.375l1.175 5.001h4.376l-1.176-5.001zm1.343 5.533h-1.05l.282 1.308h1.05l-.282-1.308zm-17.727.002H11.664v-.003h1.452L13.668 20H6.125v-.026c-.038.005-.071.026-.109.026-.51 0-.914-.452-.987-1.031H5v-.813h.082c-.038-.077-.082-.153-.082-.25 0-.293.196-.531.437-.531z"/>
</svg>

Before

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#27AA8B" fill-rule="evenodd" d="M30 14.999V30H0V0h30v14.999z"/>
<path fill="#FFF" fill-rule="evenodd" d="M23.403 12.767v4.466A2.206 2.206 0 0 1 25 19.354a2.206 2.206 0 0 1-2.197 2.215c-.594 0-1.131-.24-1.526-.626l-4.152 2.41c.029.143.072.28.072.432A2.206 2.206 0 0 1 15 26a2.206 2.206 0 0 1-2.197-2.215c0-.154.043-.294.073-.439l-4.151-2.404a2.178 2.178 0 0 1-1.528.627A2.206 2.206 0 0 1 5 19.354c0-1.012.677-1.856 1.597-2.121v-4.466A2.206 2.206 0 0 1 5 10.646c0-1.224.984-2.215 2.197-2.215.653 0 1.233.292 1.635.748L12.9 6.805a2.234 2.234 0 0 1-.087-.588C12.813 4.993 13.792 4 15 4c1.208 0 2.187.993 2.187 2.217 0 .173-.024.34-.061.502l4.101 2.387c.4-.415.957-.675 1.576-.675 1.213 0 2.197.991 2.197 2.215a2.206 2.206 0 0 1-1.597 2.121zm-.6 7.58a.989.989 0 0 0 .985-.993.99.99 0 0 0-.985-.993.99.99 0 0 0-.985.993c0 .549.441.993.985.993zm-6.239 1.927l4.113-2.388a2.216 2.216 0 0 1-.071-.532c0-.151.016-.298.044-.441l-3.754-2.174a8.367 8.367 0 0 1-1.288 1.661v3.266c.375.109.692.333.956.608zM15 12.632s-1.515 1.253-1.515 2.444c0 .676.485 1.364.907 1.84v-1.377a.608.608 0 1 1 1.216 0v1.377c.422-.476.907-1.164.907-1.84 0-1.191-1.515-2.444-1.515-2.444zm0 12.146a.99.99 0 0 0 .985-.993.989.989 0 0 0-.985-.993.989.989 0 0 0-.985.993.99.99 0 0 0 .985.993zm-1.561-2.506c.264-.274.579-.497.953-.606V18.4a8.513 8.513 0 0 1-1.251-1.598l-3.783 2.196c.019.117.036.234.036.356 0 .185-.029.362-.072.534l4.117 2.384zm-7.227-2.918c0 .549.441.993.985.993a.989.989 0 0 0 .985-.993.99.99 0 0 0-.985-.993.99.99 0 0 0-.985.993zm.985-9.701a.989.989 0 0 0-.985.993.99.99 0 0 0 .985.993.99.99 0 0 0 .985-.993.989.989 0 0 0-.985-.993zm1.528 2.581a2.198 2.198 0 0 1-.912.527v4.479c.4.122.755.346 1.025.655l3.825-2.22a2.572 2.572 0 0 1-.087-.599c0-.188.039-.376.082-.565l-3.933-2.277zm.633-1.946c.019.117.036.235.036.358 0 .185-.029.362-.072.534l3.802 2.201c.378-.65.878-1.223 1.268-1.624V8.335a2.195 2.195 0 0 1-.859-.483l-4.175 2.436zM15 5.069a.99.99 0 0 0-.985.993.99.99 0 0 0 .985.994.99.99 0 0 0 .985-.994.99.99 0 0 0-.985-.993zm5.655 5.116L16.541 7.79a2.186 2.186 0 0 1-.933.547v3.42c.391.401.892.975 1.27 1.626l3.799-2.205a2.223 2.223 0 0 1-.071-.532c0-.158.018-.312.049-.461zm-3.312 4.333c.042.186.081.373.081.558 0 .175-.039.35-.076.525l3.861 2.236c.264-.281.602-.484.978-.597v-4.479a2.194 2.194 0 0 1-.91-.526l-3.934 2.283zm5.46-4.865a.968.968 0 0 0-.825.483l-.089.155a.998.998 0 0 0-.071.355.99.99 0 0 0 .985.993.99.99 0 0 0 .985-.993.989.989 0 0 0-.985-.993z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#6EC9B9" fill-rule="evenodd" d="M15 0c8.284 0 15 6.716 15 15 0 8.284-6.716 15-15 15-8.284 0-15-6.716-15-15C0 6.716 6.716 0 15 0z"/>
<path fill="#FFF" fill-rule="evenodd" d="M24.22 20h-6.449c-.089 0-.178-.034-.266-.06l.013.06h-2.781l-.836-3.687H5.437v-.078c-.245-.038-.437-.277-.437-.579v-4.469h.003c.007-.65.448-1.173.997-1.183V10h15.95c.558 0 1.133.535 1.282 1.194l1.729 7.612c.149.659-.182 1.194-.741 1.194zM9.054 11.84H6.776l.61 2.637h2.279l-.611-2.637zm3.78 0h-2.279l.611 2.637h2.278l-.61-2.637zm6.226 6.841h1.05l-.282-1.308h-1.05l.282 1.308zm2.761-6.841h-4.375l1.175 5.001h4.376l-1.176-5.001zm1.343 5.533h-1.05l.282 1.308h1.05l-.282-1.308zm-17.727.002H11.664v-.003h1.452L13.668 20H6.125v-.026c-.038.005-.071.026-.109.026-.51 0-.914-.452-.987-1.031H5v-.813h.082c-.038-.077-.082-.153-.082-.25 0-.293.196-.531.437-.531z"/>
</svg>

Before

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
<path fill="#12AC97" fill-rule="evenodd" d="M30 14.999V30H0V0h30v14.999z"/>
<path fill="#FFF" fill-rule="evenodd" d="M17.172 14.999l5.828 7h-4.344v-.001h.775c-.497 0-.926-.228-1.223-.568l-.015.012-2.655-3.188h-.019a.681.681 0 0 0-.519-.246.681.681 0 0 0-.519.246h-.019l-2.655 3.188-.015-.012c-.297.34-.726.568-1.223.568h.775v.001H7l5.828-7-5.828-7h3.569c.497 0 .926.228 1.223.568l.015-.011 2.651 3.184h.019a.682.682 0 0 0 .523.252.682.682 0 0 0 .523-.252h.018l2.652-3.184.015.011c.297-.34.726-.568 1.223-.568H23l-5.828 7z"/>
</svg>

After

Width:  |  Height:  |  Size: 604 B

@ -69,9 +69,13 @@ const awesompleteJs = {
const appJs =
{
entry: './js/app.js',
entry: {
app: './js/app.js',
stakes: './js/pages/stakes.js',
'non-critical': './css/non-critical.scss',
},
output: {
filename: 'app.js',
filename: '[name].js',
path: path.resolve(__dirname, '../priv/static/js')
},
optimization: {
@ -120,7 +124,7 @@ const appJs =
},
plugins: [
new MiniCssExtractPlugin({
filename: '../css/app.css'
filename: '../css/[name].css'
}),
new CopyWebpackPlugin([{ from: 'static/', to: '../' }]),
new ContextReplacementPlugin(/moment[\/\\]locale$/, /en/)

@ -28,7 +28,9 @@ config :block_scout_web,
"EtherChain" => "https://www.etherchain.org/",
"Bloxy" => "https://bloxy.info/"
},
other_networks: System.get_env("SUPPORTED_CHAINS")
other_networks: System.get_env("SUPPORTED_CHAINS"),
webapp_url: System.get_env("WEBAPP_URL"),
api_url: System.get_env("API_URL")
config :block_scout_web, BlockScoutWeb.Counters.BlocksIndexedCounter, enabled: true
@ -40,7 +42,7 @@ config :block_scout_web, BlockScoutWeb.Endpoint,
path: System.get_env("NETWORK_PATH") || "/"
],
render_errors: [view: BlockScoutWeb.ErrorView, accepts: ~w(html json)],
pubsub: [name: BlockScoutWeb.PubSub, adapter: Phoenix.PubSub.PG2]
pubsub: [name: BlockScoutWeb.PubSub]
config :block_scout_web, BlockScoutWeb.Tracer,
service: :block_scout_web,
@ -85,6 +87,12 @@ config :wobserver,
discovery: :none,
mode: :plug
config :block_scout_web, BlockScoutWeb.ApiRouter,
writing_enabled: System.get_env("DISABLE_WRITE_API") != "true",
reading_enabled: System.get_env("DISABLE_READ_API") != "true"
config :block_scout_web, BlockScoutWeb.WebRouter, enabled: System.get_env("DISABLE_WEBAPP") != "true"
# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{Mix.env()}.exs"

@ -7,7 +7,8 @@ config :block_scout_web, :sql_sandbox, true
config :block_scout_web, BlockScoutWeb.Endpoint,
http: [port: 4002],
secret_key_base: "27Swe6KtEtmN37WyEYRjKWyxYULNtrxlkCEKur4qoV+Lwtk8lafsR16ifz1XBBYj",
server: true
server: true,
pubsub: [name: BlockScoutWeb.PubSub]
config :block_scout_web, BlockScoutWeb.Tracer, disabled?: false

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save