├── docs ├── robots.txt ├── favicon.ico ├── img │ └── icons │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── mstile-150x150.png │ │ ├── apple-touch-icon.png │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── msapplication-icon-144x144.png │ │ └── safari-pinned-tab.svg ├── fonts │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── manifest.json ├── service-worker.js ├── index.html ├── precache-manifest.c304e8191d560d26fe6025804d76aa55.js └── js │ ├── app.js │ └── app.js.map ├── public ├── robots.txt ├── favicon.ico ├── img │ └── icons │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── apple-touch-icon.png │ │ ├── mstile-150x150.png │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── msapplication-icon-144x144.png │ │ └── safari-pinned-tab.svg ├── index.html └── manifest.json ├── .browserslistrc ├── babel.config.js ├── .postcssrc.js ├── src ├── assets │ ├── logo.png │ ├── vendor │ │ └── font-awesome │ │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ │ └── css │ │ │ └── font-awesome.min.css │ ├── defaultpair.json │ ├── app.scss │ ├── _style.scss │ └── group.json ├── util │ └── Utility.js ├── App.vue ├── main.js ├── views │ ├── CryptoBoard.vue │ ├── Dashboard.vue │ └── InfoView.vue ├── directives │ └── click-ouside.js ├── router.js ├── registerServiceWorker.js ├── services │ ├── binance.js │ ├── ws.js │ └── api.js ├── layout │ └── LayoutPage.vue ├── store.js └── components │ ├── CryptoNews.vue │ ├── CurrencyCard.vue │ ├── Sparkline.vue │ └── CoinCharts.vue ├── .travis.yml ├── tests └── unit │ ├── .eslintrc.js │ └── HelloWorld.spec.js ├── vue.config.js ├── .gitignore ├── .eslintrc.js ├── SECURITY.md ├── README.md └── package.json /docs/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not ie <= 8 -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | } -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/favicon.ico -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /docs/img/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/favicon-16x16.png -------------------------------------------------------------------------------- /docs/img/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/favicon-32x32.png -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/img/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/mstile-150x150.png -------------------------------------------------------------------------------- /public/img/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/favicon-16x16.png -------------------------------------------------------------------------------- /public/img/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/favicon-32x32.png -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/img/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /public/img/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/mstile-150x150.png -------------------------------------------------------------------------------- /docs/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /docs/img/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /docs/img/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /docs/img/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /docs/img/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /docs/img/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /docs/img/icons/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /public/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/img/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /docs/img/icons/msapplication-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/docs/img/icons/msapplication-icon-144x144.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /public/img/icons/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /public/img/icons/msapplication-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/public/img/icons/msapplication-icon-144x144.png -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "10" 4 | install: 5 | - npm install 6 | script: 7 | - npm run lint 8 | - npm run docs 9 | - npm run build -------------------------------------------------------------------------------- /src/assets/vendor/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/src/assets/vendor/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /tests/unit/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | mocha: true 4 | }, 5 | rules: { 6 | 'import/no-extraneous-dependencies': 'off' 7 | } 8 | } -------------------------------------------------------------------------------- /src/assets/vendor/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/src/assets/vendor/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/assets/vendor/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/src/assets/vendor/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/src/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxwellharon/Crypto-Vue/HEAD/src/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/util/Utility.js: -------------------------------------------------------------------------------- 1 | const isEmpty = function(obj) { 2 | for(let key in obj) { 3 | if(obj.hasOwnProperty(key)) 4 | return false; 5 | } 6 | return true; 7 | }; 8 | export { isEmpty } -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | //publicPath is set as vue-crypto-dashboard for production you can change it according to your application 2 | module.exports = { 3 | publicPath: process.env.NODE_ENV === 'production' ? '/vue-crypto-dashboard/' : '/' , 4 | filenameHashing: false 5 | }; -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | vue-crypto-dashboard 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true 5 | }, 6 | 'extends': [ 7 | 'plugin:vue/essential', 8 | 'eslint:recommended' 9 | ], 10 | rules: { 11 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 12 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 13 | }, 14 | parserOptions: { 15 | parser: 'babel-eslint' 16 | } 17 | } -------------------------------------------------------------------------------- /tests/unit/HelloWorld.spec.js: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai' 2 | import { shallowMount } from '@vue/test-utils' 3 | import HelloWorld from '@/components/HelloWorld.vue' 4 | 5 | describe('HelloWorld.vue', () => { 6 | it('renders props.msg when passed', () => { 7 | const msg = 'new message' 8 | const wrapper = shallowMount(HelloWorld, { 9 | propsData: { msg } 10 | }) 11 | expect(wrapper.text()).to.include(msg) 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | import './registerServiceWorker' 6 | import "./assets/vendor/font-awesome/css/font-awesome.css"; 7 | import "./assets/app.scss" 8 | 9 | import clickOutside from "./directives/click-ouside" 10 | 11 | Vue.config.productionTip = false; 12 | Vue.directive("click-outside", clickOutside); 13 | 14 | new Vue({ 15 | router, 16 | store, 17 | render: h => h(App) 18 | }).$mount('#app'); 19 | -------------------------------------------------------------------------------- /docs/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-crypto-dashboard", 3 | "short_name": "vue-crypto-dashboard", 4 | "icons": [ 5 | { 6 | "src": "img/icons/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "img/icons/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "display": "standalone", 17 | "scope": "/", 18 | "start_url": "/vue-crypto-dashboard", 19 | "background_color": "#000000", 20 | "theme_color": "#4DBA87" 21 | } 22 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-crypto-dashboard", 3 | "short_name": "vue-crypto-dashboard", 4 | "icons": [ 5 | { 6 | "src": "img/icons/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "img/icons/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "display": "standalone", 17 | "scope": "/", 18 | "start_url": "/vue-crypto-dashboard", 19 | "background_color": "#000000", 20 | "theme_color": "#4DBA87" 21 | } 22 | -------------------------------------------------------------------------------- /src/assets/defaultpair.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"symbol":"BTCUSDT","base":"BTC","quote":"USDT","name":"Bitcoin"}, 3 | {"symbol":"ETHUSDT","base":"ETH","quote":"USDT","name":"Ethereum"}, 4 | {"symbol":"XRPUSDT","base":"XRP","quote":"USDT","name":"XRP"}, 5 | {"symbol":"ETHBTC","base":"ETH","quote":"BTC","name":"Ethereum"}, 6 | {"symbol":"MDABTC","base":"MDA","quote":"BTC","name":"Moeda"}, 7 | {"symbol":"EOSBTC","base":"EOS","quote":"BTC","name":"EOS"}, 8 | {"symbol":"MDAETH","base":"MDA","quote":"ETH","name":"Moeda"}, 9 | {"symbol":"TRXETH","base":"TRX","quote":"ETH","name":"Tronix"} 10 | ] -------------------------------------------------------------------------------- /src/views/CryptoBoard.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/directives/click-ouside.js: -------------------------------------------------------------------------------- 1 | export default { 2 | bind: function(el, binding, vnode) { 3 | el.clickOutsideEvent = function(event) { 4 | // here I check that click was outside the el and his childrens 5 | if (!(el == event.target || el.contains(event.target))) { 6 | // and if it did, call method provided in attribute value 7 | vnode.context[binding.expression](event); 8 | } 9 | }; 10 | document.body.addEventListener("click", el.clickOutsideEvent); 11 | }, 12 | unbind: function(el) { 13 | document.body.removeEventListener("click", el.clickOutsideEvent); 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /src/router.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | 4 | Vue.use(Router); 5 | 6 | const router = new Router({ 7 | base: process.env.BASE_URL, 8 | mode: 'history', 9 | routes: [ 10 | { 11 | path: '/', 12 | name: 'dashboard', 13 | component: () => import('./views/Dashboard.vue') 14 | }, 15 | { 16 | path: '/view/:symbol', 17 | name: 'infoview', 18 | component: () => import('./views/InfoView.vue'), 19 | props: true 20 | } 21 | ] 22 | }) 23 | router.beforeEach((to, from, next) => { 24 | console.log('BASE ' + process.env.BASE_URL); 25 | next() 26 | }) 27 | export default router; -------------------------------------------------------------------------------- /src/assets/app.scss: -------------------------------------------------------------------------------- 1 | $primary: #ffde00; 2 | $body-bg: #f9fbfd; 3 | $body-color: #2C2C2C; 4 | $enable-shadows: true; 5 | $font-family-base: 'Avenir', Helvetica, Arial, sans-serif; 6 | 7 | @import "../../node_modules/bootstrap/scss/functions"; 8 | @import "../../node_modules/bootstrap/scss/variables"; 9 | @import "../../node_modules/bootstrap/scss/mixins"; 10 | @import "../../node_modules/bootstrap/scss/root"; 11 | @import "../../node_modules/bootstrap/scss/reboot"; 12 | @import "../../node_modules/bootstrap/scss/grid"; 13 | @import "../../node_modules/bootstrap/scss/buttons"; 14 | @import "../../node_modules/bootstrap/scss/utilities"; 15 | 16 | @import "_style.scss"; 17 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 5.1.x | :white_check_mark: | 11 | | 5.0.x | :x: | 12 | | 4.0.x | :white_check_mark: | 13 | | < 4.0 | :x: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Use this section to tell people how to report a vulnerability. 18 | 19 | Tell them where to go, how often they can expect to get an update on a 20 | reported vulnerability, what to expect if the vulnerability is accepted or 21 | declined, etc. 22 | -------------------------------------------------------------------------------- /src/registerServiceWorker.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | 3 | import { register } from 'register-service-worker' 4 | 5 | if (process.env.NODE_ENV === 'production') { 6 | register(`${process.env.BASE_URL}service-worker.js`, { 7 | ready () { 8 | console.log( 9 | 'App is being served from cache by a service worker.\n' + 10 | 'For more details, visit https://goo.gl/AFskqB' 11 | ) 12 | }, 13 | cached () { 14 | console.log('Content has been cached for offline use.') 15 | }, 16 | updated () { 17 | console.log('New content is available; please refresh.') 18 | }, 19 | offline () { 20 | console.log('No internet connection found. App is running in offline mode.') 21 | }, 22 | error (error) { 23 | console.error('Error during service worker registration:', error) 24 | } 25 | }) 26 | } 27 | -------------------------------------------------------------------------------- /src/services/binance.js: -------------------------------------------------------------------------------- 1 | import Api from './api' 2 | import store from '../store' 3 | 4 | const wsApi = new Api(); 5 | 6 | const subscribeSymbol = function(symbol) { 7 | wsApi.onTicker(symbol,(ticker) => { 8 | const tick = { 9 | price: parseFloat(ticker.c), 10 | vol: parseFloat(ticker.q).toFixed(2), 11 | percent: parseFloat(ticker.P).toFixed(2), 12 | chg: ticker.p, 13 | high: ticker.h, 14 | low: ticker.l, 15 | open: ticker.o, 16 | time:ticker.E, 17 | symbol: symbol 18 | }; 19 | store.commit('UPDATE_TICKER', tick) 20 | }) 21 | }; 22 | const unSubscribeSymbol = function(symbol) { 23 | wsApi.closeSubscription('ticker',false, symbol) 24 | }; 25 | 26 | const subscribeChart = function(symbol, interval) { 27 | wsApi.onKline(symbol, interval, () => {}) 28 | }; 29 | const unSubscribeChart = function(symbol, interval) { 30 | wsApi.closeSubscription('kline',false, symbol, interval) 31 | } 32 | export {subscribeSymbol, unSubscribeSymbol, subscribeChart, unSubscribeChart} -------------------------------------------------------------------------------- /src/layout/LayoutPage.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /docs/service-worker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Welcome to your Workbox-powered service worker! 3 | * 4 | * You'll need to register this file in your web app and you should 5 | * disable HTTP caching for this file too. 6 | * See https://goo.gl/nhQhGp 7 | * 8 | * The rest of the code is auto-generated. Please don't update this file 9 | * directly; instead, make changes to your Workbox build configuration 10 | * and re-run your build process. 11 | * See https://goo.gl/2aRDsh 12 | */ 13 | 14 | importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.6.3/workbox-sw.js"); 15 | 16 | importScripts( 17 | "/vue-crypto-dashboard/precache-manifest.c304e8191d560d26fe6025804d76aa55.js" 18 | ); 19 | 20 | workbox.core.setCacheNameDetails({prefix: "vue-crypto-dashboard"}); 21 | 22 | /** 23 | * The workboxSW.precacheAndRoute() method efficiently caches and responds to 24 | * requests for URLs in the manifest. 25 | * See https://goo.gl/S9QRab 26 | */ 27 | self.__precacheManifest = [].concat(self.__precacheManifest || []); 28 | workbox.precaching.suppressWarnings(); 29 | workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); 30 | -------------------------------------------------------------------------------- /src/services/ws.js: -------------------------------------------------------------------------------- 1 | function noop() {} 2 | //Websocket Wrapper API with reconnection option 3 | export default function (url, opts) { 4 | opts = opts || {}; 5 | 6 | let k, ws, num, $={}, self=this; 7 | let ms=opts.timeout || 1e3, max=opts.maxAttempts || Infinity; 8 | 9 | $.onmessage = opts.onmessage || noop; 10 | 11 | $.onclose = e => { 12 | e.endpoint = url; 13 | (e.code !== 1e3 && e.code !== 1005) && self.reconnect(e); 14 | (opts.onclose || noop)(e); 15 | }; 16 | 17 | $.onerror = e => { 18 | e.endpoint = url; 19 | (e && e.code==='ECONNREFUSED') ? self.reconnect(e) : (opts.onerror || noop)(e); 20 | }; 21 | 22 | $.onopen = e => { 23 | e.endpoint = url; 24 | num=0; (opts.onopen || noop)(e); 25 | }; 26 | 27 | self.open = () => { 28 | ws = new WebSocket(url, opts.protocols); 29 | for (k in $) ws[k] = $[k]; 30 | }; 31 | 32 | self.reconnect = e => { 33 | (num++ < max) ? setTimeout(() => { 34 | (opts.onreconnect || noop)(e); 35 | self.open(); 36 | }, ms) : (opts.onmaximum || noop)(e); 37 | }; 38 | 39 | self.close = (x, y) => { 40 | ws.close(x, y); 41 | }; 42 | 43 | self.open(); // init 44 | 45 | return self; 46 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue Crypto Dashboard 2 | 3 | A Cryptocurrency Dashboard build with Vue JS, PWA enabled, Binance Websocket API for realtime price, amChart for displaying historical charts, SVG Sparkline Chart and Latest News feed from Cryptocompare site. 4 | 5 | ## Tech Stacks 6 | 7 | - [Vue CLI 3](https://github.com/vuejs/vue-cli) 8 | - [Vue](http://vuejs.org/) 9 | - [Vuex](https://github.com/vuejs/vuex) 10 | - [Vue Router](https://github.com/vuejs/vue-router) 11 | - [Sass](http://sass-lang.com/) 12 | - [Bootstrap 4](https://getbootstrap.com/docs/4.1/getting-started/introduction/) 13 | - [Binance Websocket Stream](https://github.com/binance-exchange/binance-official-api-docs/blob/master/web-socket-streams.md) 14 | - [amcharts](https://www.amcharts.com/) 15 | - [Cryptocompare News Api](https://min-api.cryptocompare.com/) 16 | - [Custom sparkline chart](https://github.com/JayeshLab/vue-crypto-dashboard/blob/master/src/components/Sparkline.vue) 17 | - [Custom Binance Websocket Api](https://github.com/JayeshLab/vue-crypto-dashboard/blob/master/src/services/api.js) 18 | 19 | 20 | ## Prerequisites: 21 | 22 | - Node/NPM 23 | - Vue-cli 3.x 24 | 25 | ## Project setup 26 | ``` 27 | npm install 28 | ``` 29 | 30 | ### Compiles and hot-reloads for development 31 | ``` 32 | npm run serve 33 | ``` 34 | 35 | ### Compiles and minifies for production 36 | ``` 37 | npm run build 38 | ``` 39 | 40 | ### Lints and fixes files 41 | ``` 42 | npm run lint 43 | ``` 44 | 45 | ### Run your unit tests 46 | ``` 47 | npm run test:unit 48 | ``` 49 | -------------------------------------------------------------------------------- /src/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import defaultPair from '@/assets/defaultpair.json' 4 | 5 | Vue.use(Vuex); 6 | 7 | export default new Vuex.Store({ 8 | strict: true, 9 | state: { 10 | currencies: localStorage.hasOwnProperty('vue-crypto-currencies-new')? JSON.parse(localStorage.getItem('vue-crypto-currencies-new')) : defaultPair, 11 | tickers: {}, 12 | chartData: [] 13 | }, 14 | getters: { 15 | getSymbolById: state => (symbol) => { 16 | return state.currencies.find(s => s.symbol === symbol); 17 | }, 18 | getTickerById: state => (symbol) => { 19 | return state.tickers[symbol] 20 | } 21 | }, 22 | mutations: { 23 | UPDATE_TICKER: (state, payload) => { 24 | const tick = state.tickers[payload.symbol] 25 | payload.pchg = tick ? (payload.price > tick.price? 1 : -1 ) : 1 26 | Vue.set(state.tickers, payload.symbol, payload) 27 | }, 28 | ADD_COIN_PAIR: (state, payload) => { 29 | if(!state.tickers[payload.symbol]) { 30 | state.currencies.push(payload); 31 | localStorage.setItem('vue-crypto-currencies-new', JSON.stringify(state.currencies)) 32 | } 33 | Vue.set(state.tickers, payload.symbol, { pchg: 1 }) 34 | 35 | }, 36 | REMOVE_COIN_PAIR: (state, symbol) => { 37 | Vue.delete(state.tickers, symbol) 38 | state.currencies.splice(state.currencies.findIndex(s => s.symbol === symbol), 1); 39 | localStorage.setItem('vue-crypto-currencies-new', JSON.stringify(state.currencies)) 40 | } 41 | } 42 | }) 43 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | vue-crypto-dashboard
-------------------------------------------------------------------------------- /docs/precache-manifest.c304e8191d560d26fe6025804d76aa55.js: -------------------------------------------------------------------------------- 1 | self.__precacheManifest = [ 2 | { 3 | "revision": "fee66e712a8a08eef5805a46892932ad", 4 | "url": "/vue-crypto-dashboard/fonts/fontawesome-webfont.woff" 5 | }, 6 | { 7 | "revision": "735ab4f94fbcd57074377afca324c813", 8 | "url": "/vue-crypto-dashboard/robots.txt" 9 | }, 10 | { 11 | "revision": "78916b79665f48e190a9", 12 | "url": "/vue-crypto-dashboard/js/chunk-vendors.js" 13 | }, 14 | { 15 | "revision": "017a8c39314f1e3c2680", 16 | "url": "/vue-crypto-dashboard/js/chunk-1ba81c50.js" 17 | }, 18 | { 19 | "revision": "6230442eed0a890f82ff", 20 | "url": "/vue-crypto-dashboard/js/chunk-1a68e4f2.js" 21 | }, 22 | { 23 | "revision": "23e2284c0e6b36a1bfa9", 24 | "url": "/vue-crypto-dashboard/js/app.js" 25 | }, 26 | { 27 | "revision": "f61ad4b0ed28c286c8635224e6b6e0da", 28 | "url": "/vue-crypto-dashboard/index.html" 29 | }, 30 | { 31 | "revision": "acf3dcb7ff752b5296ca23ba2c7c2606", 32 | "url": "/vue-crypto-dashboard/img/fontawesome-webfont.svg" 33 | }, 34 | { 35 | "revision": "af7ae505a9eed503f8b8e6982036873e", 36 | "url": "/vue-crypto-dashboard/fonts/fontawesome-webfont.woff2" 37 | }, 38 | { 39 | "revision": "b06871f281fee6b241d60582ae9369b9", 40 | "url": "/vue-crypto-dashboard/fonts/fontawesome-webfont.ttf" 41 | }, 42 | { 43 | "revision": "674f50d287a8c48dc19ba404d20fe713", 44 | "url": "/vue-crypto-dashboard/fonts/fontawesome-webfont.eot" 45 | }, 46 | { 47 | "revision": "23e2284c0e6b36a1bfa9", 48 | "url": "/vue-crypto-dashboard/css/app.css" 49 | } 50 | ]; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-crypto-dashboard", 3 | "description": "Vue Cryptocurrency Dashboard", 4 | "author": "JayeshLab ", 5 | "version": "0.2.0", 6 | "license": "MIT", 7 | "keywords": [ 8 | "crypto", 9 | "cryptocurrency", 10 | "dashboard", 11 | "binance", 12 | "amchart", 13 | "realtime price", 14 | "vue", 15 | "vue.js" 16 | ], 17 | "repository": { 18 | "type": "git", 19 | "url": "git+https://github.com/JayeshLab/vue-crypto-dashboard.git" 20 | }, 21 | "bugs": { 22 | "url": "https://github.com/JayeshLab/vue-crypto-dashboard/issues" 23 | }, 24 | "scripts": { 25 | "serve": "vue-cli-service serve", 26 | "build": "vue-cli-service build", 27 | "docs": "vue-cli-service build --dest docs", 28 | "lint": "vue-cli-service lint", 29 | "test:unit": "vue-cli-service test:unit" 30 | }, 31 | "dependencies": { 32 | "amcharts3": "github:amcharts/amcharts3", 33 | "amstock3": "^3.21.15", 34 | "bootstrap": "^4.4.1", 35 | "javascript-time-ago": "^2.0.6", 36 | "register-service-worker": "^1.6.2", 37 | "timeago.js": "^4.0.2", 38 | "vue": "^2.6.11", 39 | "vue-router": "^3.1.3", 40 | "vue-select": "^2.6.4", 41 | "vuex": "^3.1.2" 42 | }, 43 | "devDependencies": { 44 | "@vue/cli-plugin-babel": "^3.12.1", 45 | "@vue/cli-plugin-eslint": "^3.12.1", 46 | "@vue/cli-plugin-pwa": "^3.12.1", 47 | "@vue/cli-plugin-unit-mocha": "^3.12.1", 48 | "@vue/cli-service": "^3.12.1", 49 | "@vue/test-utils": "^1.0.0-beta.30", 50 | "chai": "^4.2.0", 51 | "node-sass": "^4.13.0", 52 | "sass-loader": "^7.3.1", 53 | "vue-template-compiler": "^2.6.11" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/views/Dashboard.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /src/components/CryptoNews.vue: -------------------------------------------------------------------------------- 1 | 23 | 81 | -------------------------------------------------------------------------------- /src/components/CurrencyCard.vue: -------------------------------------------------------------------------------- 1 | 36 | -------------------------------------------------------------------------------- /src/services/api.js: -------------------------------------------------------------------------------- 1 | import WS from './ws' 2 | 3 | export default class Api { 4 | constructor(timeout=5e3, maxAttempts=5) { 5 | this.timeout = timeout; 6 | this.maxAttempts = maxAttempts; 7 | this._baseUrl = 'wss://stream.binance.com:9443/ws/'; 8 | this._combinedBaseUrl = 'wss://stream.binance.com:9443/stream?streams='; 9 | this.subscription = {}; 10 | this.streams = { 11 | depth: (symbol) => `${symbol.toLowerCase()}@depth`, 12 | depthLevel: (symbol, level) => `${symbol.toLowerCase()}@depth${level}`, 13 | kline: (symbol, interval) => `${symbol.toLowerCase()}@kline_${interval}`, 14 | aggTrade: (symbol) => `${symbol.toLowerCase()}@aggTrade`, 15 | trade: (symbol) => `${symbol.toLowerCase()}@trade`, 16 | ticker: (symbol) => `${symbol.toLowerCase()}@ticker`, 17 | miniTicker: (symbol) => `${symbol.toLowerCase()}@miniTicker`, 18 | allMiniTicker: () => `!miniTicker@arr`, 19 | allTickers: () => '!ticker@arr' 20 | }; 21 | } 22 | subscribe (cb, endpoint, isCombined = false) { 23 | let ws; 24 | try { 25 | let path = (isCombined ? this._combinedBaseUrl : this._baseUrl) + endpoint; 26 | if (this.subscription[path]) { 27 | return this.subscription[path]; 28 | } 29 | ws = new WS(path, { 30 | timeout: this.timeout, 31 | maxAttempts: this.maxAttempts, 32 | onopen: e => console.log('Connected!', e), 33 | onmessage: e => cb(JSON.parse(e.data)), 34 | onreconnect: e => console.log('Reconnecting...', e), 35 | onmaximum: e => console.log('Stop Attempting!', e), 36 | onclose: e => { console.log('Closed!', e); this.removeSubscription(e.endpoint)}, 37 | onerror: e => console.log('Error:', e) 38 | }); 39 | this.subscription[path] = ws 40 | } 41 | catch(ex) { 42 | console.log("Error :" + ex) 43 | } 44 | } 45 | caller(fname, ...args) { 46 | return this.streams[fname].call(null, ...args) 47 | } 48 | removeSubscription(endpoint){ 49 | if(this.subscription[endpoint]) { 50 | delete this.subscription[endpoint] 51 | } 52 | } 53 | closeSubscription(type, isCombined = false, ...args) { 54 | const endpoint = this.caller(type, ...args); 55 | const path = (isCombined ? this._combinedBaseUrl : this._baseUrl) + endpoint; 56 | const ws = this.subscription[path]; 57 | if(ws) { 58 | ws.close(1000, ""); 59 | } 60 | } 61 | closeAll() { 62 | for (const key in this.subscription) { 63 | this.subscription[key].close(); 64 | delete this.subscription[key] 65 | } 66 | this.subscription = {} 67 | } 68 | onDepthUpdate(symbol, eventHandler) { 69 | return this.subscribe(eventHandler, this.streams.depth(symbol)); 70 | } 71 | 72 | onDepthLevelUpdate(symbol, level, eventHandler) { 73 | return this.subscribe(eventHandler, this.streams.depthLevel(symbol, level)); 74 | } 75 | 76 | onKline(symbol, interval, eventHandler) { 77 | return this.subscribe(eventHandler, this.streams.kline(symbol, interval)); 78 | } 79 | 80 | onAggTrade(symbol, eventHandler) { 81 | return this.subscribe(eventHandler, this.streams.aggTrade(symbol)); 82 | } 83 | 84 | onTrade(symbol, eventHandler) { 85 | return this.subscribe(eventHandler, this.streams.trade(symbol)); 86 | } 87 | 88 | onTicker(symbol, eventHandler) { 89 | return this.subscribe(eventHandler, this.streams.ticker(symbol)); 90 | } 91 | onMiniTicker(symbol, eventHandler) { 92 | return this.subscribe(eventHandler, this.streams.miniTicker(symbol)); 93 | } 94 | onAllMiniTickers(eventHandler) { 95 | return this.subscribe(eventHandler, this.streams.allMiniTicker()); 96 | } 97 | onAllTickers(eventHandler) { 98 | return this.subscribe(eventHandler, this.streams.allTickers()); 99 | } 100 | onCombinedStream(streams, eventHandler) { 101 | return this.subscribe(eventHandler, streams.join('/'), true); 102 | } 103 | } -------------------------------------------------------------------------------- /src/views/InfoView.vue: -------------------------------------------------------------------------------- 1 | 50 | 87 | -------------------------------------------------------------------------------- /src/components/Sparkline.vue: -------------------------------------------------------------------------------- 1 | 28 | 158 | -------------------------------------------------------------------------------- /docs/js/app.js: -------------------------------------------------------------------------------- 1 | (function(e){function t(t){for(var r,c,i=t[0],u=t[1],s=t[2],l=0,d=[];ln.price?1:-1:1,r["a"].set(e.tickers,t.symbol,t)},ADD_COIN_PAIR:function(e,t){e.tickers[t.symbol]||(e.currencies.push(t),localStorage.setItem("vue-crypto-currencies-new",JSON.stringify(e.currencies))),r["a"].set(e.tickers,t.symbol,{pchg:1})},REMOVE_COIN_PAIR:function(e,t){r["a"].delete(e.tickers,t),e.currencies.splice(e.currencies.findIndex((function(e){return e.symbol===t})),1),localStorage.setItem("vue-crypto-currencies-new",JSON.stringify(e.currencies))}}})},d5a0:function(e,t,n){}}); 2 | //# sourceMappingURL=app.js.map -------------------------------------------------------------------------------- /docs/img/icons/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /public/img/icons/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /src/assets/_style.scss: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 0; 3 | margin: 0; 4 | overflow-x: hidden; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | } 8 | button:focus { 9 | outline: none 10 | } 11 | .x-small{ 12 | font-size: 60%; 13 | } 14 | .btn { 15 | box-shadow: 0 4px 6px rgba(50,50,93,.15),0 1px 4px rgba(0, 0, 0, 0.2); 16 | &.active { 17 | background-color: #ffcb1d !important; 18 | box-shadow: none !important; 19 | } 20 | } 21 | .layout-container{ 22 | height: 100%; 23 | width:100%; 24 | } 25 | .page-header { 26 | position: fixed; 27 | left: 0; 28 | top: 0; 29 | right: 0; 30 | text-align: center; 31 | height: 50px; 32 | line-height: 50px; 33 | z-index: 100; 34 | box-shadow: 0 6px 7px 0 rgba(0, 0, 0, 0.45); 35 | transition: left .3s ease; 36 | .back-btn{ 37 | position: absolute; 38 | background-color: transparent; 39 | left: 0; 40 | padding: 0 20px; 41 | margin: -1px 0; 42 | border: none; 43 | cursor: pointer; 44 | i{ 45 | vertical-align: middle; 46 | } 47 | } 48 | .page-title{ 49 | font-size:25px; 50 | font-weight: bold; 51 | } 52 | } 53 | .page-container { 54 | width: 100%; 55 | height: 100%; 56 | padding-top:60px; 57 | } 58 | 59 | .add-btn { 60 | width:30px; 61 | height:30px; 62 | padding: 0; 63 | background:transparent; 64 | border: 2px solid $primary; 65 | position:relative; 66 | cursor:pointer; 67 | display:inline-block; 68 | margin:10px; 69 | color: $primary; 70 | border-radius: 50%; 71 | box-shadow: 4px 4px 20px #060606; 72 | font-size:12px; 73 | i { 74 | font-size: 1.6em; 75 | line-height: 1.6em; 76 | text-shadow: 2px 2px 3px rgb(6, 6, 6); 77 | } 78 | &:active{ 79 | box-shadow: none; 80 | } 81 | } 82 | .slash { 83 | color: $primary; 84 | font-size: xx-large; 85 | font-weight: bold; 86 | padding-left: 10px; 87 | } 88 | .content-box { 89 | height: 100%; 90 | width: 100%; 91 | margin-top: -10px; 92 | } 93 | .v-select .dropdown-menu{ 94 | min-width: 100px !important; 95 | overflow-y: auto !important; 96 | } 97 | .menu-bar { 98 | position: fixed; 99 | display: flex; 100 | align-items: center; 101 | height: 50px; 102 | width: 100%; 103 | padding: 0 20px; 104 | z-index: 50; 105 | background-color: #333; 106 | box-shadow: 0 2px 20px rgba(0, 0, 0, 0.42); 107 | #base { 108 | width: 342px; 109 | } 110 | #quote { 111 | width: 100px; 112 | margin-left: 10px; 113 | } 114 | } 115 | 116 | .board { 117 | padding-top:60px; 118 | max-width: 1650px; 119 | margin: 0 auto 30px; 120 | display: grid; 121 | grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); 122 | grid-gap: 10px; 123 | .card-block { 124 | display: flex; 125 | justify-content: center; 126 | } 127 | } 128 | .coin-box{ 129 | position: relative; 130 | width: 390px; 131 | height: 200px; 132 | background: #fff; 133 | border: 1px solid rgba(220, 220, 220, 0.58); 134 | box-shadow: 5px 5px 25px 0 rgba(46,61,73,.16); 135 | border-radius: 6px; 136 | padding: 0; 137 | transition: .5s; 138 | display: flex; 139 | flex-direction: column; 140 | pointer: cursor; 141 | } 142 | .box-icon { 143 | padding-right: 10px; 144 | span{ 145 | display: block; 146 | height: 50px; 147 | width: 50px; 148 | background-position: 0 0; 149 | background-size: 100% 100%; 150 | box-shadow: 0 8px 24px -2px rgba(0, 0, 0, 0.3), 0px -2px 12px 3px rgba(156, 156, 156, 0.1); 151 | border-radius: 50%; 152 | border: 2px solid #fff; 153 | } 154 | } 155 | .coin-price { 156 | font-size: 21px; 157 | font-weight: bold; 158 | line-height: 1.2; 159 | } 160 | .price { 161 | font-size: 32px; 162 | font-weight: bold; 163 | line-height: 1.8; 164 | padding-left: 45px; 165 | } 166 | .coin-info { 167 | height: 212px; 168 | padding: 10px 20px 5px 15px 169 | } 170 | .coin-per{ 171 | font-size: 20px; 172 | font-weight: bold; 173 | text-rendering: auto; 174 | -webkit-font-smoothing: antialiased; 175 | -moz-osx-font-smoothing: grayscale; 176 | } 177 | .indicator { 178 | display: inline-block; 179 | font-family: FontAwesome; 180 | color:inherit; 181 | padding-right:5px; 182 | } 183 | .up { 184 | color: #53A800; 185 | .indicator:before { 186 | content: "\f062"; 187 | } 188 | } 189 | .down { 190 | color: red; 191 | .indicator:before { 192 | content: "\f063"; 193 | } 194 | } 195 | .sparkline-chart { 196 | height: 94px; 197 | } 198 | 199 | .box-body{ 200 | display: flex; 201 | align-items: center; 202 | padding: 0 15px 10px; 203 | } 204 | 205 | .info-page { 206 | display: flex; 207 | margin-right: -15px; 208 | margin-left: -15px; 209 | } 210 | 211 | .info-section{ 212 | display:flex; 213 | position: relative; 214 | width: 100%; 215 | height: 100%; 216 | align-items:stretch; 217 | flex-direction: column; 218 | margin-right:15px; 219 | flex-grow: 1; 220 | } 221 | .col-card { 222 | padding-bottom: 15px; 223 | } 224 | .news-section{ 225 | flex: 0 0 400px; 226 | max-height: calc(100vh - 60px); 227 | } 228 | 229 | .chart-content{ 230 | box-shadow: 0 0 60px 0 rgba(31, 41, 56, 0.1); 231 | } 232 | .chart-content{ 233 | padding: 20px; 234 | } 235 | .info-card{ 236 | background: white; 237 | border-radius: 8px; 238 | box-shadow: 0 0 60px 0 rgba(31, 41, 56, 0.1); 239 | height: 100%; 240 | padding: 15px; 241 | display:flex; 242 | flex-direction: column; 243 | } 244 | .info-label { 245 | font-weight: bold; 246 | display:inline-block; 247 | width: 90px; 248 | } 249 | .coin-img { 250 | display: inline-block; 251 | height: 40px; 252 | width: 40px; 253 | background-position: 0 0; 254 | background-size: 100% 100%; 255 | -webkit-box-shadow: 0 8px 24px -2px rgba(0, 0, 0, 0.3), 0px -2px 12px 3px rgba(156, 156, 156, 0.1); 256 | box-shadow: 0 8px 24px -2px rgba(0, 0, 0, 0.3), 0px -2px 12px 3px rgba(156, 156, 156, 0.1); 257 | border-radius: 50%; 258 | border: 2px solid #fff; 259 | float: left; 260 | } 261 | .coin-name { 262 | font-size: 24px; 263 | font-weight: bold; 264 | line-height:40px; 265 | vertical-align: middle; 266 | margin-left: 10px; 267 | float:left; 268 | } 269 | 270 | .chg-block{ 271 | font-size: 20px; 272 | } 273 | 274 | // Chart Panel 275 | .chart-panel { 276 | height: 412px; 277 | } 278 | .chart-bar { 279 | height: 45px; 280 | align-items: center; 281 | } 282 | .chart-type { 283 | margin-right: auto; 284 | padding-left: 10px; 285 | } 286 | // Spinner for Chart 287 | .spinner { 288 | position: absolute; 289 | top: 10px; 290 | left: 15px; 291 | bottom: 10px; 292 | right: 15px; 293 | display: flex; 294 | align-items: center; 295 | justify-content: center; 296 | z-index: 4; 297 | opacity: .6; 298 | background-color: white; 299 | } 300 | .circle-spinner { 301 | width: 64px; 302 | height: 64px; 303 | clear: both; 304 | margin: 20px auto; 305 | border: 4px rgba(#000, 0.25) solid; 306 | border-top: 4px rgba(#000, 1) solid; 307 | border-radius: 50%; 308 | z-index: 5; 309 | animation: circleAnim .6s infinite linear; 310 | } 311 | 312 | @-webkit-keyframes circleAnim { 313 | from { 314 | -webkit-transform: rotate(0deg); 315 | } 316 | to { 317 | -webkit-transform: rotate(359deg); 318 | } 319 | } 320 | 321 | @keyframes circleAnim { 322 | from { 323 | transform: rotate(0deg); 324 | } 325 | to { 326 | transform: rotate(359deg); 327 | } 328 | } 329 | // News Style 330 | .news { 331 | height: 100%; 332 | line-height: 1.3; 333 | border: 1px solid rgba(138, 173, 255, 0.25); 334 | box-shadow: 0 0 60px 0 rgba(31,41,56,0.1); 335 | a, a:hover, a:active, a:focus { 336 | color: #007bff; 337 | text-decoration: none; 338 | } 339 | .news-header { 340 | text-align: center; 341 | height: 50px; 342 | line-height:50px; 343 | font-size: 20px; 344 | font-weight: bold; 345 | background-color: #333; 346 | color: #ffde00; 347 | box-shadow: 2px 2px 2px rgba(0,0,0,0.05); 348 | } 349 | .news-block { 350 | height: calc(100% - 65px); 351 | background: #fff; 352 | overflow-y:auto; 353 | } 354 | } 355 | .news-item{ 356 | text-align: left; 357 | background: #FFF; 358 | margin: 10px 15px 10px 10px; 359 | border-radius: 6px; 360 | border-color: #ececec; 361 | max-height: 200px; 362 | overflow: hidden; 363 | padding: 10px; 364 | box-shadow: 2px 2px 2px rgba(31,41,56,0.1), -2px -2px 2px rgba(31,41,56,0.1); 365 | p { 366 | font-size: 14px; 367 | line-height: 1.2; 368 | margin-bottom: .25rem; 369 | } 370 | } 371 | .news-title{ 372 | font-size: 14px; 373 | font-weight:bold; 374 | margin-bottom: .25rem; 375 | } 376 | .thumb-img { 377 | float:left; 378 | width: 90px; 379 | margin-right: 10px; 380 | img { 381 | width: 90px; 382 | height: 90px; 383 | border-radius: 6px; 384 | display:block; 385 | } 386 | } 387 | .news-data{ 388 | display: block; 389 | font-size: 13px; 390 | color: #565656; 391 | } 392 | .news-source { 393 | display:inline-block; 394 | color: orange; 395 | } 396 | .news-date { 397 | display: inline-block; 398 | float:right; 399 | } 400 | // Dropdown Container 401 | .dd-container { 402 | position: absolute; 403 | top: 4px; 404 | right: 8px; 405 | cursor: pointer; 406 | transition: all .15s ease; 407 | &.show { 408 | animation: show-dropdown .25s ease forwards; 409 | } 410 | .menu-btn { 411 | color: #a8a8a8; 412 | &:hover { 413 | color: black 414 | } 415 | } 416 | .dd-menu { 417 | position: absolute; 418 | right: 0; 419 | top: 0; 420 | min-width: 160px; 421 | overflow: auto; 422 | z-index: 10; 423 | padding: 5px 0; 424 | margin: 2px 0 0; 425 | font-size: 14px; 426 | text-align: left; 427 | background-color: #fff; 428 | background-clip: padding-box; 429 | border-radius: 4px; 430 | box-shadow: 0 12px 50px rgba(50,50,93,.1), 0 0 15px rgba(0,0,0,.1); 431 | .dd-item{ 432 | display: block; 433 | line-height: 1.5; 434 | padding: 3px 5px; 435 | clear: both; 436 | &:hover{ 437 | background-color: #eaeaea; 438 | } 439 | } 440 | } 441 | @keyframes show-dropdown { 442 | 0% { 443 | transition: visibility .25s,opacity .25s,transform .25s; 444 | transform: translate(0,10px) perspective(200px) rotateX(-2deg); 445 | opacity: 0 446 | } 447 | 448 | 100% { 449 | transform: translate(0,0); 450 | opacity: 1 451 | } 452 | } 453 | } 454 | 455 | .v-select { 456 | .dropdown-toggle { 457 | background: #fff !important; 458 | border-color: rgba(82, 166, 183, .39); 459 | &::after{ 460 | display: none; 461 | } 462 | } 463 | .dropdown-menu { 464 | min-width: 120px; 465 | overflow-y: auto; 466 | } 467 | input[type=search], input[type=search]:focus { 468 | font-size: 12px !important; 469 | } 470 | &.single .selected-tag { 471 | font-size: 12px; 472 | } 473 | .form-control { 474 | height: calc(1.25rem + 2px); 475 | } 476 | } 477 | .fade-enter-active,.fade-leave-active { 478 | transition: opacity .8s 479 | } 480 | .fade-enter,.fade-leave-active { 481 | opacity: 0 482 | } 483 | 484 | //Responsive Layout 485 | 486 | @media (max-width: 1200px) { 487 | .news-section { 488 | flex: 1 1 100%; 489 | width: 100%; 490 | } 491 | } 492 | 493 | @media (max-width: 768px) { 494 | .page-header .page-title { 495 | font-size: 18px; 496 | } 497 | .menu-bar { 498 | padding: 0 5px; 499 | font-size: 12px; 500 | #quote { 501 | margin-left: 5px; 502 | } 503 | #base { 504 | width: 230px; 505 | } 506 | } 507 | .slash{ 508 | padding-left: 5px; 509 | } 510 | .add-btn{ 511 | margin: 5px; 512 | } 513 | 514 | .coin-info { 515 | padding: 10px 15px 5px 10px; 516 | } 517 | .coin-box { 518 | width: 346px; 519 | } 520 | .board { 521 | grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); 522 | } 523 | .coin-name { 524 | font-size: 19px; 525 | } 526 | .coin-price { 527 | font-size: 18px; 528 | } 529 | .box-icon span { 530 | height: 40px; 531 | width: 40px; 532 | } 533 | .info-card{ 534 | padding: 10px; 535 | } 536 | .chg-block { 537 | font-size: 18px; 538 | } 539 | } -------------------------------------------------------------------------------- /src/components/CoinCharts.vue: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /docs/js/app.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?8999","webpack:///./src/layout/LayoutPage.vue?2336","webpack:///src/layout/LayoutPage.vue","webpack:///./src/layout/LayoutPage.vue?e7b3","webpack:///./src/layout/LayoutPage.vue","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/router.js","webpack:///./src/registerServiceWorker.js","webpack:///./src/directives/click-ouside.js","webpack:///./src/main.js","webpack:///./src/store.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","jsonpScriptSrc","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","staticClass","currentPage","on","$event","$router","path","_e","_v","component","Vue","use","Router","router","base","process","routes","props","beforeEach","to","from","next","log","register","ready","cached","updated","offline","el","binding","vnode","clickOutsideEvent","contains","context","expression","body","addEventListener","unbind","removeEventListener","config","productionTip","directive","clickOutside","store","render","h","App","$mount","Vuex","Store","strict","state","currencies","localStorage","JSON","parse","getItem","defaultPair","tickers","chartData","getters","getSymbolById","symbol","find","getTickerById","mutations","UPDATE_TICKER","payload","tick","pchg","price","set","ADD_COIN_PAIR","setItem","stringify","REMOVE_COIN_PAIR","delete","findIndex"],"mappings":"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","file":"js/app.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/vue-crypto-dashboard/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('LayoutPage')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"layout-container\"},[_c('header',{staticClass:\"page-header bg-primary\"},[(_vm.currentPage === 'infoview')?_c('button',{staticClass:\"back-btn\",on:{\"click\":function($event){return _vm.$router.push({ path: '/' })}}},[_c('i',{staticClass:\"fa fa-angle-left fa-2x\"})]):_vm._e(),_c('span',{staticClass:\"page-title\"},[_vm._v(\"VUE CRYPTO DASHBOARD\")])]),_c('div',{staticClass:\"page-container\"},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('keep-alive',{attrs:{\"include\":\"dashboard\"}},[_c('router-view')],1)],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LayoutPage.vue?vue&type=template&id=f9258f86&\"\nimport script from \"./LayoutPage.vue?vue&type=script&lang=js&\"\nexport * from \"./LayoutPage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=9fa033ae&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\r\nimport Router from 'vue-router'\r\n\r\nVue.use(Router);\r\n\r\nconst router = new Router({\r\n base: process.env.BASE_URL,\r\n mode: 'history',\r\n routes: [\r\n {\r\n path: '/',\r\n name: 'dashboard',\r\n component: () => import('./views/Dashboard.vue')\r\n },\r\n {\r\n path: '/view/:symbol',\r\n name: 'infoview',\r\n component: () => import('./views/InfoView.vue'),\r\n props: true\r\n }\r\n ]\r\n})\r\nrouter.beforeEach((to, from, next) => {\r\n console.log('BASE ' + process.env.BASE_URL);\r\n next()\r\n})\r\nexport default router;","/* eslint-disable no-console */\r\n\r\nimport { register } from 'register-service-worker'\r\n\r\nif (process.env.NODE_ENV === 'production') {\r\n register(`${process.env.BASE_URL}service-worker.js`, {\r\n ready () {\r\n console.log(\r\n 'App is being served from cache by a service worker.\\n' +\r\n 'For more details, visit https://goo.gl/AFskqB'\r\n )\r\n },\r\n cached () {\r\n console.log('Content has been cached for offline use.')\r\n },\r\n updated () {\r\n console.log('New content is available; please refresh.')\r\n },\r\n offline () {\r\n console.log('No internet connection found. App is running in offline mode.')\r\n },\r\n error (error) {\r\n console.error('Error during service worker registration:', error)\r\n }\r\n })\r\n}\r\n","export default {\r\n bind: function(el, binding, vnode) {\r\n el.clickOutsideEvent = function(event) {\r\n // here I check that click was outside the el and his childrens\r\n if (!(el == event.target || el.contains(event.target))) {\r\n // and if it did, call method provided in attribute value\r\n vnode.context[binding.expression](event);\r\n }\r\n };\r\n document.body.addEventListener(\"click\", el.clickOutsideEvent);\r\n },\r\n unbind: function(el) {\r\n document.body.removeEventListener(\"click\", el.clickOutsideEvent);\r\n }\r\n};\r\n","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport './registerServiceWorker'\r\nimport \"./assets/vendor/font-awesome/css/font-awesome.css\";\r\nimport \"./assets/app.scss\"\r\n\r\nimport clickOutside from \"./directives/click-ouside\"\r\n\r\nVue.config.productionTip = false;\r\nVue.directive(\"click-outside\", clickOutside);\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n render: h => h(App)\r\n}).$mount('#app');\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport defaultPair from '@/assets/defaultpair.json'\r\n\r\nVue.use(Vuex);\r\n\r\nexport default new Vuex.Store({\r\n strict: true,\r\n state: {\r\n currencies: localStorage.hasOwnProperty('vue-crypto-currencies-new')? JSON.parse(localStorage.getItem('vue-crypto-currencies-new')) : defaultPair,\r\n tickers: {},\r\n chartData: []\r\n },\r\n getters: {\r\n getSymbolById: state => (symbol) => {\r\n return state.currencies.find(s => s.symbol === symbol);\r\n },\r\n getTickerById: state => (symbol) => {\r\n return state.tickers[symbol]\r\n }\r\n },\r\n mutations: {\r\n UPDATE_TICKER: (state, payload) => {\r\n const tick = state.tickers[payload.symbol]\r\n payload.pchg = tick ? (payload.price > tick.price? 1 : -1 ) : 1\r\n Vue.set(state.tickers, payload.symbol, payload)\r\n },\r\n ADD_COIN_PAIR: (state, payload) => {\r\n if(!state.tickers[payload.symbol]) {\r\n state.currencies.push(payload);\r\n localStorage.setItem('vue-crypto-currencies-new', JSON.stringify(state.currencies))\r\n }\r\n Vue.set(state.tickers, payload.symbol, { pchg: 1 })\r\n\r\n },\r\n REMOVE_COIN_PAIR: (state, symbol) => {\r\n Vue.delete(state.tickers, symbol)\r\n state.currencies.splice(state.currencies.findIndex(s => s.symbol === symbol), 1);\r\n localStorage.setItem('vue-crypto-currencies-new', JSON.stringify(state.currencies))\r\n }\r\n }\r\n})\r\n"],"sourceRoot":""} -------------------------------------------------------------------------------- /src/assets/vendor/font-awesome/css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} 5 | -------------------------------------------------------------------------------- /src/assets/group.json: -------------------------------------------------------------------------------- 1 | { 2 | "BNB": [ 3 | { 4 | "value": "LTC", 5 | "name": "Litecoin", 6 | "label": "Litecoin - (LTC)" 7 | }, 8 | { 9 | "value": "XRP", 10 | "name": "XRP", 11 | "label": "XRP" 12 | }, 13 | { 14 | "value": "TRX", 15 | "name": "TRON", 16 | "label": "TRON - (TRX)" 17 | }, 18 | { 19 | "value": "BTS", 20 | "name": "Bitshares", 21 | "label": "Bitshares - (BTS)" 22 | }, 23 | { 24 | "value": "BCC", 25 | "name": "Bitcoin Cash", 26 | "label": "Bitcoin Cash - (BCC)" 27 | }, 28 | { 29 | "value": "IOTA", 30 | "name": "MIOTA", 31 | "label": "MIOTA - (IOTA)" 32 | }, 33 | { 34 | "value": "YOYO", 35 | "name": "YOYOW", 36 | "label": "YOYOW - (YOYO)" 37 | }, 38 | { 39 | "value": "NAV", 40 | "name": "NavCoin", 41 | "label": "NavCoin - (NAV)" 42 | }, 43 | { 44 | "value": "XLM", 45 | "name": "Stellar", 46 | "label": "Stellar - (XLM)" 47 | }, 48 | { 49 | "value": "SYS", 50 | "name": "SysCoin", 51 | "label": "SysCoin - (SYS)" 52 | }, 53 | { 54 | "value": "VIA", 55 | "name": "ViaCoin", 56 | "label": "ViaCoin - (VIA)" 57 | }, 58 | { 59 | "value": "BCN", 60 | "name": "ByteCoin", 61 | "label": "ByteCoin - (BCN)" 62 | }, 63 | { 64 | "value": "XEM", 65 | "name": "NEM", 66 | "label": "NEM - (XEM)" 67 | }, 68 | { 69 | "value": "RDN", 70 | "name": "RadonPay", 71 | "label": "RadonPay - (RDN)" 72 | }, 73 | { 74 | "value": "NXS", 75 | "name": "Nexus", 76 | "label": "Nexus - (NXS)" 77 | }, 78 | { 79 | "value": "POLY", 80 | "name": "PolyBit", 81 | "label": "PolyBit - (POLY)" 82 | }, 83 | { 84 | "value": "SC", 85 | "name": "Siacoin", 86 | "label": "Siacoin - (SC)" 87 | }, 88 | { 89 | "value": "REP", 90 | "name": "Augur", 91 | "label": "Augur - (REP)" 92 | }, 93 | { 94 | "value": "LSK", 95 | "name": "Lisk", 96 | "label": "Lisk - (LSK)" 97 | }, 98 | { 99 | "value": "WAVES", 100 | "name": "Waves", 101 | "label": "Waves - (WAVES)" 102 | }, 103 | { 104 | "value": "STEEM", 105 | "name": "Steem", 106 | "label": "Steem - (STEEM)" 107 | }, 108 | { 109 | "value": "CMT", 110 | "name": "CometCoin", 111 | "label": "CometCoin - (CMT)" 112 | }, 113 | { 114 | "value": "NEO", 115 | "name": "NEO", 116 | "label": "NEO" 117 | }, 118 | { 119 | "value": "TRIG", 120 | "name": "Trigger", 121 | "label": "Trigger - (TRIG)" 122 | }, 123 | { 124 | "value": "XZC", 125 | "name": "ZCoin", 126 | "label": "ZCoin - (XZC)" 127 | }, 128 | { 129 | "value": "ARDR", 130 | "name": "Ardor", 131 | "label": "Ardor - (ARDR)" 132 | }, 133 | { 134 | "value": "GNT", 135 | "name": "Golem Network Token", 136 | "label": "Golem Network Token - (GNT)" 137 | }, 138 | { 139 | "value": "PIVX", 140 | "name": "Private Instant Verified Transaction", 141 | "label": "Private Instant Verified Transaction - (PIVX)" 142 | }, 143 | { 144 | "value": "RLC", 145 | "name": "iEx.ec", 146 | "label": "iEx.ec - (RLC)" 147 | }, 148 | { 149 | "value": "BAT", 150 | "name": "Basic Attention Token", 151 | "label": "Basic Attention Token - (BAT)" 152 | }, 153 | { 154 | "value": "QTUM", 155 | "name": "QTUM", 156 | "label": "QTUM" 157 | }, 158 | { 159 | "value": "ZEN", 160 | "name": "ZenCash", 161 | "label": "ZenCash - (ZEN)" 162 | }, 163 | { 164 | "value": "SKY", 165 | "name": "Skycoin", 166 | "label": "Skycoin - (SKY)" 167 | }, 168 | { 169 | "value": "CVC", 170 | "name": "Civic", 171 | "label": "Civic - (CVC)" 172 | }, 173 | { 174 | "value": "MCO", 175 | "name": "MCO", 176 | "label": "MCO" 177 | }, 178 | { 179 | "value": "ADX", 180 | "name": "AdEx", 181 | "label": "AdEx - (ADX)" 182 | }, 183 | { 184 | "value": "NANO", 185 | "name": "Nano", 186 | "label": "Nano - (NANO)" 187 | }, 188 | { 189 | "value": "STORM", 190 | "name": "Storm", 191 | "label": "Storm - (STORM)" 192 | }, 193 | { 194 | "value": "AE", 195 | "name": "Aeternity", 196 | "label": "Aeternity - (AE)" 197 | }, 198 | { 199 | "value": "DLT", 200 | "name": "Agrello Delta", 201 | "label": "Agrello Delta - (DLT)" 202 | }, 203 | { 204 | "value": "NEBL", 205 | "name": "Neblio", 206 | "label": "Neblio - (NEBL)" 207 | }, 208 | { 209 | "value": "VET", 210 | "name": "Vechain", 211 | "label": "Vechain - (VET)" 212 | }, 213 | { 214 | "value": "AMB", 215 | "name": "Ambrosus", 216 | "label": "Ambrosus - (AMB)" 217 | }, 218 | { 219 | "value": "WAN", 220 | "name": "Wanchain", 221 | "label": "Wanchain - (WAN)" 222 | }, 223 | { 224 | "value": "ENJ", 225 | "name": "Enjin Coin", 226 | "label": "Enjin Coin - (ENJ)" 227 | }, 228 | { 229 | "value": "WTC", 230 | "name": "Waltonchain", 231 | "label": "Waltonchain - (WTC)" 232 | }, 233 | { 234 | "value": "RCN", 235 | "name": "Ripio", 236 | "label": "Ripio - (RCN)" 237 | }, 238 | { 239 | "value": "ADA", 240 | "name": "Cardano", 241 | "label": "Cardano - (ADA)" 242 | }, 243 | { 244 | "value": "ICX", 245 | "name": "ICON Project", 246 | "label": "ICON Project - (ICX)" 247 | }, 248 | { 249 | "value": "CND", 250 | "name": "Cindicator", 251 | "label": "Cindicator - (CND)" 252 | }, 253 | { 254 | "value": "POWR", 255 | "name": "Power Ledger", 256 | "label": "Power Ledger - (POWR)" 257 | }, 258 | { 259 | "value": "WABI", 260 | "name": "WaBi", 261 | "label": "WaBi - (WABI)" 262 | }, 263 | { 264 | "value": "PHX", 265 | "name": "Red Pulse Phoenix", 266 | "label": "Red Pulse Phoenix - (PHX)" 267 | }, 268 | { 269 | "value": "APPC", 270 | "name": "AppCoins", 271 | "label": "AppCoins - (APPC)" 272 | }, 273 | { 274 | "value": "OST", 275 | "name": "Simple Token", 276 | "label": "Simple Token - (OST)" 277 | }, 278 | { 279 | "value": "BCPT", 280 | "name": "BlockMason Credit Protocol", 281 | "label": "BlockMason Credit Protocol - (BCPT)" 282 | }, 283 | { 284 | "value": "NULS", 285 | "name": "Nuls", 286 | "label": "Nuls - (NULS)" 287 | }, 288 | { 289 | "value": "QSP", 290 | "name": "Quantstamp", 291 | "label": "Quantstamp - (QSP)" 292 | }, 293 | { 294 | "value": "AION", 295 | "name": "Aion", 296 | "label": "Aion - (AION)" 297 | }, 298 | { 299 | "value": "GTO", 300 | "name": "GIFTO", 301 | "label": "GIFTO - (GTO)" 302 | }, 303 | { 304 | "value": "BRD", 305 | "name": "Bread token", 306 | "label": "Bread token - (BRD)" 307 | }, 308 | { 309 | "value": "NAS", 310 | "name": "Nebulas", 311 | "label": "Nebulas - (NAS)" 312 | }, 313 | { 314 | "value": "QLC", 315 | "name": "QLC Chain", 316 | "label": "QLC Chain - (QLC)" 317 | }, 318 | { 319 | "value": "AGI", 320 | "name": "SingularityNET", 321 | "label": "SingularityNET - (AGI)" 322 | }, 323 | { 324 | "value": "THETA", 325 | "name": "Theta", 326 | "label": "Theta - (THETA)" 327 | }, 328 | { 329 | "value": "ZIL", 330 | "name": "Zilliqa", 331 | "label": "Zilliqa - (ZIL)" 332 | }, 333 | { 334 | "value": "BLZ", 335 | "name": "Bluzelle", 336 | "label": "Bluzelle - (BLZ)" 337 | }, 338 | { 339 | "value": "NCASH", 340 | "name": "Nucleus Vision", 341 | "label": "Nucleus Vision - (NCASH)" 342 | }, 343 | { 344 | "value": "POA", 345 | "name": "Poa Network", 346 | "label": "Poa Network - (POA)" 347 | }, 348 | { 349 | "value": "LOOM", 350 | "name": "Loom Network", 351 | "label": "Loom Network - (LOOM)" 352 | }, 353 | { 354 | "value": "GO", 355 | "name": "GoChain", 356 | "label": "GoChain - (GO)" 357 | }, 358 | { 359 | "value": "TUSD", 360 | "name": "True USD", 361 | "label": "True USD - (TUSD)" 362 | }, 363 | { 364 | "value": "MFT", 365 | "name": "Mainframe", 366 | "label": "Mainframe - (MFT)" 367 | }, 368 | { 369 | "value": "ONT", 370 | "name": "Ontology", 371 | "label": "Ontology - (ONT)" 372 | }, 373 | { 374 | "value": "ETC", 375 | "name": "Ethereum Classic", 376 | "label": "Ethereum Classic - (ETC)" 377 | }, 378 | { 379 | "value": "EOS", 380 | "name": "EOS", 381 | "label": "EOS" 382 | } 383 | ], 384 | "BTC": [ 385 | { 386 | "value": "ETH", 387 | "name": "Ethereum", 388 | "label": "Ethereum - (ETH)" 389 | }, 390 | { 391 | "value": "LTC", 392 | "name": "Litecoin", 393 | "label": "Litecoin - (LTC)" 394 | }, 395 | { 396 | "value": "DASH", 397 | "name": "Dash", 398 | "label": "Dash - (DASH)" 399 | }, 400 | { 401 | "value": "XMR", 402 | "name": "Monero", 403 | "label": "Monero - (XMR)" 404 | }, 405 | { 406 | "value": "ZEC", 407 | "name": "ZCash", 408 | "label": "ZCash - (ZEC)" 409 | }, 410 | { 411 | "value": "BTS", 412 | "name": "Bitshares", 413 | "label": "Bitshares - (BTS)" 414 | }, 415 | { 416 | "value": "XRP", 417 | "name": "XRP", 418 | "label": "XRP" 419 | }, 420 | { 421 | "value": "CLOAK", 422 | "name": "CloakCoin", 423 | "label": "CloakCoin - (CLOAK)" 424 | }, 425 | { 426 | "value": "XVG", 427 | "name": "Verge", 428 | "label": "Verge - (XVG)" 429 | }, 430 | { 431 | "value": "NAV", 432 | "name": "NavCoin", 433 | "label": "NavCoin - (NAV)" 434 | }, 435 | { 436 | "value": "XLM", 437 | "name": "Stellar", 438 | "label": "Stellar - (XLM)" 439 | }, 440 | { 441 | "value": "SYS", 442 | "name": "SysCoin", 443 | "label": "SysCoin - (SYS)" 444 | }, 445 | { 446 | "value": "VIA", 447 | "name": "ViaCoin", 448 | "label": "ViaCoin - (VIA)" 449 | }, 450 | { 451 | "value": "BCN", 452 | "name": "ByteCoin", 453 | "label": "ByteCoin - (BCN)" 454 | }, 455 | { 456 | "value": "XEM", 457 | "name": "NEM", 458 | "label": "NEM - (XEM)" 459 | }, 460 | { 461 | "value": "RDN", 462 | "name": "RadonPay", 463 | "label": "RadonPay - (RDN)" 464 | }, 465 | { 466 | "value": "NXS", 467 | "name": "Nexus", 468 | "label": "Nexus - (NXS)" 469 | }, 470 | { 471 | "value": "POLY", 472 | "name": "PolyBit", 473 | "label": "PolyBit - (POLY)" 474 | }, 475 | { 476 | "value": "GRS", 477 | "name": "Groestlcoin ", 478 | "label": "Groestlcoin - (GRS)" 479 | }, 480 | { 481 | "value": "SC", 482 | "name": "Siacoin", 483 | "label": "Siacoin - (SC)" 484 | }, 485 | { 486 | "value": "REP", 487 | "name": "Augur", 488 | "label": "Augur - (REP)" 489 | }, 490 | { 491 | "value": "DGD", 492 | "name": "Digix DAO", 493 | "label": "Digix DAO - (DGD)" 494 | }, 495 | { 496 | "value": "LSK", 497 | "name": "Lisk", 498 | "label": "Lisk - (LSK)" 499 | }, 500 | { 501 | "value": "WAVES", 502 | "name": "Waves", 503 | "label": "Waves - (WAVES)" 504 | }, 505 | { 506 | "value": "STEEM", 507 | "name": "Steem", 508 | "label": "Steem - (STEEM)" 509 | }, 510 | { 511 | "value": "BNT", 512 | "name": "Bancor Network Token", 513 | "label": "Bancor Network Token - (BNT)" 514 | }, 515 | { 516 | "value": "CMT", 517 | "name": "CometCoin", 518 | "label": "CometCoin - (CMT)" 519 | }, 520 | { 521 | "value": "STRAT", 522 | "name": "Stratis", 523 | "label": "Stratis - (STRAT)" 524 | }, 525 | { 526 | "value": "SNGLS", 527 | "name": "SingularDTV", 528 | "label": "SingularDTV - (SNGLS)" 529 | }, 530 | { 531 | "value": "ICN", 532 | "name": "Iconomi", 533 | "label": "Iconomi - (ICN)" 534 | }, 535 | { 536 | "value": "WINGS", 537 | "name": "Wings DAO", 538 | "label": "Wings DAO - (WINGS)" 539 | }, 540 | { 541 | "value": "KMD", 542 | "name": "Komodo", 543 | "label": "Komodo - (KMD)" 544 | }, 545 | { 546 | "value": "NEO", 547 | "name": "NEO", 548 | "label": "NEO" 549 | }, 550 | { 551 | "value": "TRIG", 552 | "name": "Trigger", 553 | "label": "Trigger - (TRIG)" 554 | }, 555 | { 556 | "value": "XZC", 557 | "name": "ZCoin", 558 | "label": "ZCoin - (XZC)" 559 | }, 560 | { 561 | "value": "ARDR", 562 | "name": "Ardor", 563 | "label": "Ardor - (ARDR)" 564 | }, 565 | { 566 | "value": "ARK", 567 | "name": "ARK", 568 | "label": "ARK" 569 | }, 570 | { 571 | "value": "GNT", 572 | "name": "Golem Network Token", 573 | "label": "Golem Network Token - (GNT)" 574 | }, 575 | { 576 | "value": "PIVX", 577 | "name": "Private Instant Verified Transaction", 578 | "label": "Private Instant Verified Transaction - (PIVX)" 579 | }, 580 | { 581 | "value": "RLC", 582 | "name": "iEx.ec", 583 | "label": "iEx.ec - (RLC)" 584 | }, 585 | { 586 | "value": "LUN", 587 | "name": "Lunyr", 588 | "label": "Lunyr - (LUN)" 589 | }, 590 | { 591 | "value": "BAT", 592 | "name": "Basic Attention Token", 593 | "label": "Basic Attention Token - (BAT)" 594 | }, 595 | { 596 | "value": "QTUM", 597 | "name": "QTUM", 598 | "label": "QTUM" 599 | }, 600 | { 601 | "value": "ZEN", 602 | "name": "ZenCash", 603 | "label": "ZenCash - (ZEN)" 604 | }, 605 | { 606 | "value": "SNM", 607 | "name": "SONM", 608 | "label": "SONM - (SNM)" 609 | }, 610 | { 611 | "value": "SKY", 612 | "name": "Skycoin", 613 | "label": "Skycoin - (SKY)" 614 | }, 615 | { 616 | "value": "SNT", 617 | "name": "Status Network Token", 618 | "label": "Status Network Token - (SNT)" 619 | }, 620 | { 621 | "value": "CVC", 622 | "name": "Civic", 623 | "label": "Civic - (CVC)" 624 | }, 625 | { 626 | "value": "DENT", 627 | "name": "Dent", 628 | "label": "Dent - (DENT)" 629 | }, 630 | { 631 | "value": "MCO", 632 | "name": "MCO", 633 | "label": "MCO" 634 | }, 635 | { 636 | "value": "ADX", 637 | "name": "AdEx", 638 | "label": "AdEx - (ADX)" 639 | }, 640 | { 641 | "value": "NANO", 642 | "name": "Nano", 643 | "label": "Nano - (NANO)" 644 | }, 645 | { 646 | "value": "CDT", 647 | "name": "Blox", 648 | "label": "Blox - (CDT)" 649 | }, 650 | { 651 | "value": "DNT", 652 | "name": "district0x", 653 | "label": "district0x - (DNT)" 654 | }, 655 | { 656 | "value": "FUN", 657 | "name": "FunFair", 658 | "label": "FunFair - (FUN)" 659 | }, 660 | { 661 | "value": "MTL", 662 | "name": "Metal", 663 | "label": "Metal - (MTL)" 664 | }, 665 | { 666 | "value": "PPT", 667 | "name": "Populous", 668 | "label": "Populous - (PPT)" 669 | }, 670 | { 671 | "value": "OAX", 672 | "name": "OpenANX", 673 | "label": "OpenANX - (OAX)" 674 | }, 675 | { 676 | "value": "ZRX", 677 | "name": "0x", 678 | "label": "0x - (ZRX)" 679 | }, 680 | { 681 | "value": "TNT", 682 | "name": "Tierion", 683 | "label": "Tierion - (TNT)" 684 | }, 685 | { 686 | "value": "STORM", 687 | "name": "Storm", 688 | "label": "Storm - (STORM)" 689 | }, 690 | { 691 | "value": "BCC", 692 | "name": "Bitcoin Cash", 693 | "label": "Bitcoin Cash - (BCC)" 694 | }, 695 | { 696 | "value": "IOTA", 697 | "name": "MIOTA", 698 | "label": "MIOTA - (IOTA)" 699 | }, 700 | { 701 | "value": "HC", 702 | "name": "HyperCash", 703 | "label": "HyperCash - (HC)" 704 | }, 705 | { 706 | "value": "YOYO", 707 | "name": "YOYOW", 708 | "label": "YOYOW - (YOYO)" 709 | }, 710 | { 711 | "value": "STORJ", 712 | "name": "Storj", 713 | "label": "Storj - (STORJ)" 714 | }, 715 | { 716 | "value": "OMG", 717 | "name": "OmiseGo", 718 | "label": "OmiseGo - (OMG)" 719 | }, 720 | { 721 | "value": "POE", 722 | "name": "Po.et", 723 | "label": "Po.et - (POE)" 724 | }, 725 | { 726 | "value": "AE", 727 | "name": "Aeternity", 728 | "label": "Aeternity - (AE)" 729 | }, 730 | { 731 | "value": "VIB", 732 | "name": "Viberate", 733 | "label": "Viberate - (VIB)" 734 | }, 735 | { 736 | "value": "MANA", 737 | "name": "Decentraland", 738 | "label": "Decentraland - (MANA)" 739 | }, 740 | { 741 | "value": "BNB", 742 | "name": "Binance Coin", 743 | "label": "Binance Coin - (BNB)" 744 | }, 745 | { 746 | "value": "MTH", 747 | "name": "Monetha", 748 | "label": "Monetha - (MTH)" 749 | }, 750 | { 751 | "value": "GAS", 752 | "name": "Gas", 753 | "label": "Gas - (GAS)" 754 | }, 755 | { 756 | "value": "DLT", 757 | "name": "Agrello Delta", 758 | "label": "Agrello Delta - (DLT)" 759 | }, 760 | { 761 | "value": "SUB", 762 | "name": "Substratum Network", 763 | "label": "Substratum Network - (SUB)" 764 | }, 765 | { 766 | "value": "NEBL", 767 | "name": "Neblio", 768 | "label": "Neblio - (NEBL)" 769 | }, 770 | { 771 | "value": "EVX", 772 | "name": "Everex", 773 | "label": "Everex - (EVX)" 774 | }, 775 | { 776 | "value": "VET", 777 | "name": "Vechain", 778 | "label": "Vechain - (VET)" 779 | }, 780 | { 781 | "value": "AMB", 782 | "name": "Ambrosus", 783 | "label": "Ambrosus - (AMB)" 784 | }, 785 | { 786 | "value": "WAN", 787 | "name": "Wanchain", 788 | "label": "Wanchain - (WAN)" 789 | }, 790 | { 791 | "value": "ENJ", 792 | "name": "Enjin Coin", 793 | "label": "Enjin Coin - (ENJ)" 794 | }, 795 | { 796 | "value": "FUEL", 797 | "name": "Etherparty", 798 | "label": "Etherparty - (FUEL)" 799 | }, 800 | { 801 | "value": "WTC", 802 | "name": "Waltonchain", 803 | "label": "Waltonchain - (WTC)" 804 | }, 805 | { 806 | "value": "RCN", 807 | "name": "Ripio", 808 | "label": "Ripio - (RCN)" 809 | }, 810 | { 811 | "value": "LINK", 812 | "name": "ChainLink", 813 | "label": "ChainLink - (LINK)" 814 | }, 815 | { 816 | "value": "EDO", 817 | "name": "Eidoo", 818 | "label": "Eidoo - (EDO)" 819 | }, 820 | { 821 | "value": "KNC", 822 | "name": "Kyber Network", 823 | "label": "Kyber Network - (KNC)" 824 | }, 825 | { 826 | "value": "TRX", 827 | "name": "Tronix", 828 | "label": "Tronix - (TRX)" 829 | }, 830 | { 831 | "value": "SALT", 832 | "name": "Salt Lending", 833 | "label": "Salt Lending - (SALT)" 834 | }, 835 | { 836 | "value": "LRC", 837 | "name": "Loopring", 838 | "label": "Loopring - (LRC)" 839 | }, 840 | { 841 | "value": "ADA", 842 | "name": "Cardano", 843 | "label": "Cardano - (ADA)" 844 | }, 845 | { 846 | "value": "ICX", 847 | "name": "ICON Project", 848 | "label": "ICON Project - (ICX)" 849 | }, 850 | { 851 | "value": "REQ", 852 | "name": "Request Network", 853 | "label": "Request Network - (REQ)" 854 | }, 855 | { 856 | "value": "ARN", 857 | "name": "Aeron", 858 | "label": "Aeron - (ARN)" 859 | }, 860 | { 861 | "value": "VIBE", 862 | "name": "VIBEHub", 863 | "label": "VIBEHub - (VIBE)" 864 | }, 865 | { 866 | "value": "AST", 867 | "name": "AirSwap", 868 | "label": "AirSwap - (AST)" 869 | }, 870 | { 871 | "value": "CND", 872 | "name": "Cindicator", 873 | "label": "Cindicator - (CND)" 874 | }, 875 | { 876 | "value": "ENG", 877 | "name": "Enigma", 878 | "label": "Enigma - (ENG)" 879 | }, 880 | { 881 | "value": "POWR", 882 | "name": "Power Ledger", 883 | "label": "Power Ledger - (POWR)" 884 | }, 885 | { 886 | "value": "WABI", 887 | "name": "WaBi", 888 | "label": "WaBi - (WABI)" 889 | }, 890 | { 891 | "value": "PHX", 892 | "name": "Red Pulse Phoenix", 893 | "label": "Red Pulse Phoenix - (PHX)" 894 | }, 895 | { 896 | "value": "MDA", 897 | "name": "Moeda", 898 | "label": "Moeda - (MDA)" 899 | }, 900 | { 901 | "value": "MOD", 902 | "name": "Modum", 903 | "label": "Modum - (MOD)" 904 | }, 905 | { 906 | "value": "APPC", 907 | "name": "AppCoins", 908 | "label": "AppCoins - (APPC)" 909 | }, 910 | { 911 | "value": "BTG", 912 | "name": "Bitcoin Gold", 913 | "label": "Bitcoin Gold - (BTG)" 914 | }, 915 | { 916 | "value": "WPR", 917 | "name": "WePower", 918 | "label": "WePower - (WPR)" 919 | }, 920 | { 921 | "value": "KEY", 922 | "name": "SelfKey", 923 | "label": "SelfKey - (KEY)" 924 | }, 925 | { 926 | "value": "OST", 927 | "name": "Simple Token", 928 | "label": "Simple Token - (OST)" 929 | }, 930 | { 931 | "value": "DATA", 932 | "name": "Streamr DATAcoin", 933 | "label": "Streamr DATAcoin - (DATA)" 934 | }, 935 | { 936 | "value": "INS", 937 | "name": "INS Ecosystem", 938 | "label": "INS Ecosystem - (INS)" 939 | }, 940 | { 941 | "value": "BCPT", 942 | "name": "BlockMason Credit Protocol", 943 | "label": "BlockMason Credit Protocol - (BCPT)" 944 | }, 945 | { 946 | "value": "NULS", 947 | "name": "Nuls", 948 | "label": "Nuls - (NULS)" 949 | }, 950 | { 951 | "value": "GVT", 952 | "name": "Genesis Vision", 953 | "label": "Genesis Vision - (GVT)" 954 | }, 955 | { 956 | "value": "QSP", 957 | "name": "Quantstamp", 958 | "label": "Quantstamp - (QSP)" 959 | }, 960 | { 961 | "value": "BCD", 962 | "name": "Bitcoin Diamond", 963 | "label": "Bitcoin Diamond - (BCD)" 964 | }, 965 | { 966 | "value": "LEND", 967 | "name": "EthLend", 968 | "label": "EthLend - (LEND)" 969 | }, 970 | { 971 | "value": "AION", 972 | "name": "Aion", 973 | "label": "Aion - (AION)" 974 | }, 975 | { 976 | "value": "GTO", 977 | "name": "GIFTO", 978 | "label": "GIFTO - (GTO)" 979 | }, 980 | { 981 | "value": "TNB", 982 | "name": "Time New Bank", 983 | "label": "Time New Bank - (TNB)" 984 | }, 985 | { 986 | "value": "BRD", 987 | "name": "Bread token", 988 | "label": "Bread token - (BRD)" 989 | }, 990 | { 991 | "value": "ELF", 992 | "name": "aelf", 993 | "label": "aelf - (ELF)" 994 | }, 995 | { 996 | "value": "NAS", 997 | "name": "Nebulas", 998 | "label": "Nebulas - (NAS)" 999 | }, 1000 | { 1001 | "value": "QLC", 1002 | "name": "QLC Chain", 1003 | "label": "QLC Chain - (QLC)" 1004 | }, 1005 | { 1006 | "value": "GXS", 1007 | "name": "GXChain", 1008 | "label": "GXChain - (GXS)" 1009 | }, 1010 | { 1011 | "value": "AGI", 1012 | "name": "SingularityNET", 1013 | "label": "SingularityNET - (AGI)" 1014 | }, 1015 | { 1016 | "value": "THETA", 1017 | "name": "Theta", 1018 | "label": "Theta - (THETA)" 1019 | }, 1020 | { 1021 | "value": "IOST", 1022 | "name": "IOS token", 1023 | "label": "IOS token - (IOST)" 1024 | }, 1025 | { 1026 | "value": "ZIL", 1027 | "name": "Zilliqa", 1028 | "label": "Zilliqa - (ZIL)" 1029 | }, 1030 | { 1031 | "value": "NPXS", 1032 | "name": "Pundi X", 1033 | "label": "Pundi X - (NPXS)" 1034 | }, 1035 | { 1036 | "value": "BLZ", 1037 | "name": "Bluzelle", 1038 | "label": "Bluzelle - (BLZ)" 1039 | }, 1040 | { 1041 | "value": "NCASH", 1042 | "name": "Nucleus Vision", 1043 | "label": "Nucleus Vision - (NCASH)" 1044 | }, 1045 | { 1046 | "value": "POA", 1047 | "name": "Poa Network", 1048 | "label": "Poa Network - (POA)" 1049 | }, 1050 | { 1051 | "value": "LOOM", 1052 | "name": "Loom Network", 1053 | "label": "Loom Network - (LOOM)" 1054 | }, 1055 | { 1056 | "value": "GO", 1057 | "name": "GoChain", 1058 | "label": "GoChain - (GO)" 1059 | }, 1060 | { 1061 | "value": "TUSD", 1062 | "name": "True USD", 1063 | "label": "True USD - (TUSD)" 1064 | }, 1065 | { 1066 | "value": "DOCK", 1067 | "name": "Dock.io", 1068 | "label": "Dock.io - (DOCK)" 1069 | }, 1070 | { 1071 | "value": "HOT", 1072 | "name": "Hydro Protocol", 1073 | "label": "Hydro Protocol - (HOT)" 1074 | }, 1075 | { 1076 | "value": "IOTX", 1077 | "name": "IoTeX Network", 1078 | "label": "IoTeX Network - (IOTX)" 1079 | }, 1080 | { 1081 | "value": "QKC", 1082 | "name": "QuarkChain", 1083 | "label": "QuarkChain - (QKC)" 1084 | }, 1085 | { 1086 | "value": "MFT", 1087 | "name": "Mainframe", 1088 | "label": "Mainframe - (MFT)" 1089 | }, 1090 | { 1091 | "value": "ONT", 1092 | "name": "Ontology", 1093 | "label": "Ontology - (ONT)" 1094 | }, 1095 | { 1096 | "value": "ETC", 1097 | "name": "Ethereum Classic", 1098 | "label": "Ethereum Classic - (ETC)" 1099 | }, 1100 | { 1101 | "value": "EOS", 1102 | "name": "EOS", 1103 | "label": "EOS" 1104 | }, 1105 | { 1106 | "value": "CHAT", 1107 | "name": "OpenChat", 1108 | "label": "OpenChat - (CHAT)" 1109 | } 1110 | ], 1111 | "ETH": [ 1112 | { 1113 | "value": "LTC", 1114 | "name": "Litecoin", 1115 | "label": "Litecoin - (LTC)" 1116 | }, 1117 | { 1118 | "value": "DASH", 1119 | "name": "Dash", 1120 | "label": "Dash - (DASH)" 1121 | }, 1122 | { 1123 | "value": "XMR", 1124 | "name": "Monero", 1125 | "label": "Monero - (XMR)" 1126 | }, 1127 | { 1128 | "value": "ZEC", 1129 | "name": "ZCash", 1130 | "label": "ZCash - (ZEC)" 1131 | }, 1132 | { 1133 | "value": "BTS", 1134 | "name": "Bitshares", 1135 | "label": "Bitshares - (BTS)" 1136 | }, 1137 | { 1138 | "value": "XRP", 1139 | "name": "XRP", 1140 | "label": "XRP" 1141 | }, 1142 | { 1143 | "value": "CLOAK", 1144 | "name": "CloakCoin", 1145 | "label": "CloakCoin - (CLOAK)" 1146 | }, 1147 | { 1148 | "value": "XVG", 1149 | "name": "Verge", 1150 | "label": "Verge - (XVG)" 1151 | }, 1152 | { 1153 | "value": "NAV", 1154 | "name": "NavCoin", 1155 | "label": "NavCoin - (NAV)" 1156 | }, 1157 | { 1158 | "value": "XLM", 1159 | "name": "Stellar", 1160 | "label": "Stellar - (XLM)" 1161 | }, 1162 | { 1163 | "value": "SYS", 1164 | "name": "SysCoin", 1165 | "label": "SysCoin - (SYS)" 1166 | }, 1167 | { 1168 | "value": "VIA", 1169 | "name": "ViaCoin", 1170 | "label": "ViaCoin - (VIA)" 1171 | }, 1172 | { 1173 | "value": "BCN", 1174 | "name": "ByteCoin", 1175 | "label": "ByteCoin - (BCN)" 1176 | }, 1177 | { 1178 | "value": "XEM", 1179 | "name": "NEM", 1180 | "label": "NEM - (XEM)" 1181 | }, 1182 | { 1183 | "value": "RDN", 1184 | "name": "RadonPay", 1185 | "label": "RadonPay - (RDN)" 1186 | }, 1187 | { 1188 | "value": "NXS", 1189 | "name": "Nexus", 1190 | "label": "Nexus - (NXS)" 1191 | }, 1192 | { 1193 | "value": "GRS", 1194 | "name": "Groestlcoin ", 1195 | "label": "Groestlcoin - (GRS)" 1196 | }, 1197 | { 1198 | "value": "SC", 1199 | "name": "Siacoin", 1200 | "label": "Siacoin - (SC)" 1201 | }, 1202 | { 1203 | "value": "REP", 1204 | "name": "Augur", 1205 | "label": "Augur - (REP)" 1206 | }, 1207 | { 1208 | "value": "DGD", 1209 | "name": "Digix DAO", 1210 | "label": "Digix DAO - (DGD)" 1211 | }, 1212 | { 1213 | "value": "LSK", 1214 | "name": "Lisk", 1215 | "label": "Lisk - (LSK)" 1216 | }, 1217 | { 1218 | "value": "WAVES", 1219 | "name": "Waves", 1220 | "label": "Waves - (WAVES)" 1221 | }, 1222 | { 1223 | "value": "STEEM", 1224 | "name": "Steem", 1225 | "label": "Steem - (STEEM)" 1226 | }, 1227 | { 1228 | "value": "BNT", 1229 | "name": "Bancor Network Token", 1230 | "label": "Bancor Network Token - (BNT)" 1231 | }, 1232 | { 1233 | "value": "CMT", 1234 | "name": "CometCoin", 1235 | "label": "CometCoin - (CMT)" 1236 | }, 1237 | { 1238 | "value": "STRAT", 1239 | "name": "Stratis", 1240 | "label": "Stratis - (STRAT)" 1241 | }, 1242 | { 1243 | "value": "SNGLS", 1244 | "name": "SingularDTV", 1245 | "label": "SingularDTV - (SNGLS)" 1246 | }, 1247 | { 1248 | "value": "ICN", 1249 | "name": "Iconomi", 1250 | "label": "Iconomi - (ICN)" 1251 | }, 1252 | { 1253 | "value": "WINGS", 1254 | "name": "Wings DAO", 1255 | "label": "Wings DAO - (WINGS)" 1256 | }, 1257 | { 1258 | "value": "BCC", 1259 | "name": "Bitcoin Cash", 1260 | "label": "Bitcoin Cash - (BCC)" 1261 | }, 1262 | { 1263 | "value": "IOTA", 1264 | "name": "MIOTA", 1265 | "label": "MIOTA - (IOTA)" 1266 | }, 1267 | { 1268 | "value": "HC", 1269 | "name": "HyperCash", 1270 | "label": "HyperCash - (HC)" 1271 | }, 1272 | { 1273 | "value": "YOYO", 1274 | "name": "YOYOW", 1275 | "label": "YOYOW - (YOYO)" 1276 | }, 1277 | { 1278 | "value": "KMD", 1279 | "name": "Komodo", 1280 | "label": "Komodo - (KMD)" 1281 | }, 1282 | { 1283 | "value": "NEO", 1284 | "name": "NEO", 1285 | "label": "NEO" 1286 | }, 1287 | { 1288 | "value": "TRIG", 1289 | "name": "Trigger", 1290 | "label": "Trigger - (TRIG)" 1291 | }, 1292 | { 1293 | "value": "XZC", 1294 | "name": "ZCoin", 1295 | "label": "ZCoin - (XZC)" 1296 | }, 1297 | { 1298 | "value": "ARDR", 1299 | "name": "Ardor", 1300 | "label": "Ardor - (ARDR)" 1301 | }, 1302 | { 1303 | "value": "ARK", 1304 | "name": "ARK", 1305 | "label": "ARK" 1306 | }, 1307 | { 1308 | "value": "GNT", 1309 | "name": "Golem Network Token", 1310 | "label": "Golem Network Token - (GNT)" 1311 | }, 1312 | { 1313 | "value": "PIVX", 1314 | "name": "Private Instant Verified Transaction", 1315 | "label": "Private Instant Verified Transaction - (PIVX)" 1316 | }, 1317 | { 1318 | "value": "RLC", 1319 | "name": "iEx.ec", 1320 | "label": "iEx.ec - (RLC)" 1321 | }, 1322 | { 1323 | "value": "LUN", 1324 | "name": "Lunyr", 1325 | "label": "Lunyr - (LUN)" 1326 | }, 1327 | { 1328 | "value": "BAT", 1329 | "name": "Basic Attention Token", 1330 | "label": "Basic Attention Token - (BAT)" 1331 | }, 1332 | { 1333 | "value": "QTUM", 1334 | "name": "QTUM", 1335 | "label": "QTUM" 1336 | }, 1337 | { 1338 | "value": "ZEN", 1339 | "name": "ZenCash", 1340 | "label": "ZenCash - (ZEN)" 1341 | }, 1342 | { 1343 | "value": "SNM", 1344 | "name": "SONM", 1345 | "label": "SONM - (SNM)" 1346 | }, 1347 | { 1348 | "value": "SKY", 1349 | "name": "Skycoin", 1350 | "label": "Skycoin - (SKY)" 1351 | }, 1352 | { 1353 | "value": "SNT", 1354 | "name": "Status Network Token", 1355 | "label": "Status Network Token - (SNT)" 1356 | }, 1357 | { 1358 | "value": "CVC", 1359 | "name": "Civic", 1360 | "label": "Civic - (CVC)" 1361 | }, 1362 | { 1363 | "value": "DENT", 1364 | "name": "Dent", 1365 | "label": "Dent - (DENT)" 1366 | }, 1367 | { 1368 | "value": "MCO", 1369 | "name": "MCO", 1370 | "label": "MCO" 1371 | }, 1372 | { 1373 | "value": "ADX", 1374 | "name": "AdEx", 1375 | "label": "AdEx - (ADX)" 1376 | }, 1377 | { 1378 | "value": "NANO", 1379 | "name": "Nano", 1380 | "label": "Nano - (NANO)" 1381 | }, 1382 | { 1383 | "value": "CDT", 1384 | "name": "Blox", 1385 | "label": "Blox - (CDT)" 1386 | }, 1387 | { 1388 | "value": "DNT", 1389 | "name": "district0x", 1390 | "label": "district0x - (DNT)" 1391 | }, 1392 | { 1393 | "value": "FUN", 1394 | "name": "FunFair", 1395 | "label": "FunFair - (FUN)" 1396 | }, 1397 | { 1398 | "value": "MTL", 1399 | "name": "Metal", 1400 | "label": "Metal - (MTL)" 1401 | }, 1402 | { 1403 | "value": "PPT", 1404 | "name": "Populous", 1405 | "label": "Populous - (PPT)" 1406 | }, 1407 | { 1408 | "value": "OAX", 1409 | "name": "OpenANX", 1410 | "label": "OpenANX - (OAX)" 1411 | }, 1412 | { 1413 | "value": "ZRX", 1414 | "name": "0x", 1415 | "label": "0x - (ZRX)" 1416 | }, 1417 | { 1418 | "value": "TNT", 1419 | "name": "Tierion", 1420 | "label": "Tierion - (TNT)" 1421 | }, 1422 | { 1423 | "value": "STORM", 1424 | "name": "Storm", 1425 | "label": "Storm - (STORM)" 1426 | }, 1427 | { 1428 | "value": "STORJ", 1429 | "name": "Storj", 1430 | "label": "Storj - (STORJ)" 1431 | }, 1432 | { 1433 | "value": "OMG", 1434 | "name": "OmiseGo", 1435 | "label": "OmiseGo - (OMG)" 1436 | }, 1437 | { 1438 | "value": "POE", 1439 | "name": "Po.et", 1440 | "label": "Po.et - (POE)" 1441 | }, 1442 | { 1443 | "value": "AE", 1444 | "name": "Aeternity", 1445 | "label": "Aeternity - (AE)" 1446 | }, 1447 | { 1448 | "value": "VIB", 1449 | "name": "Viberate", 1450 | "label": "Viberate - (VIB)" 1451 | }, 1452 | { 1453 | "value": "MANA", 1454 | "name": "Decentraland", 1455 | "label": "Decentraland - (MANA)" 1456 | }, 1457 | { 1458 | "value": "BNB", 1459 | "name": "Binance Coin", 1460 | "label": "Binance Coin - (BNB)" 1461 | }, 1462 | { 1463 | "value": "MTH", 1464 | "name": "Monetha", 1465 | "label": "Monetha - (MTH)" 1466 | }, 1467 | { 1468 | "value": "DLT", 1469 | "name": "Agrello Delta", 1470 | "label": "Agrello Delta - (DLT)" 1471 | }, 1472 | { 1473 | "value": "SUB", 1474 | "name": "Substratum Network", 1475 | "label": "Substratum Network - (SUB)" 1476 | }, 1477 | { 1478 | "value": "NEBL", 1479 | "name": "Neblio", 1480 | "label": "Neblio - (NEBL)" 1481 | }, 1482 | { 1483 | "value": "EVX", 1484 | "name": "Everex", 1485 | "label": "Everex - (EVX)" 1486 | }, 1487 | { 1488 | "value": "VET", 1489 | "name": "Vechain", 1490 | "label": "Vechain - (VET)" 1491 | }, 1492 | { 1493 | "value": "AMB", 1494 | "name": "Ambrosus", 1495 | "label": "Ambrosus - (AMB)" 1496 | }, 1497 | { 1498 | "value": "WAN", 1499 | "name": "Wanchain", 1500 | "label": "Wanchain - (WAN)" 1501 | }, 1502 | { 1503 | "value": "ENJ", 1504 | "name": "Enjin Coin", 1505 | "label": "Enjin Coin - (ENJ)" 1506 | }, 1507 | { 1508 | "value": "FUEL", 1509 | "name": "Etherparty", 1510 | "label": "Etherparty - (FUEL)" 1511 | }, 1512 | { 1513 | "value": "WTC", 1514 | "name": "Waltonchain", 1515 | "label": "Waltonchain - (WTC)" 1516 | }, 1517 | { 1518 | "value": "RCN", 1519 | "name": "Ripio", 1520 | "label": "Ripio - (RCN)" 1521 | }, 1522 | { 1523 | "value": "LINK", 1524 | "name": "ChainLink", 1525 | "label": "ChainLink - (LINK)" 1526 | }, 1527 | { 1528 | "value": "EDO", 1529 | "name": "Eidoo", 1530 | "label": "Eidoo - (EDO)" 1531 | }, 1532 | { 1533 | "value": "KNC", 1534 | "name": "Kyber Network", 1535 | "label": "Kyber Network - (KNC)" 1536 | }, 1537 | { 1538 | "value": "TRX", 1539 | "name": "Tronix", 1540 | "label": "Tronix - (TRX)" 1541 | }, 1542 | { 1543 | "value": "SALT", 1544 | "name": "Salt Lending", 1545 | "label": "Salt Lending - (SALT)" 1546 | }, 1547 | { 1548 | "value": "LRC", 1549 | "name": "Loopring", 1550 | "label": "Loopring - (LRC)" 1551 | }, 1552 | { 1553 | "value": "ADA", 1554 | "name": "Cardano", 1555 | "label": "Cardano - (ADA)" 1556 | }, 1557 | { 1558 | "value": "ICX", 1559 | "name": "ICON Project", 1560 | "label": "ICON Project - (ICX)" 1561 | }, 1562 | { 1563 | "value": "REQ", 1564 | "name": "Request Network", 1565 | "label": "Request Network - (REQ)" 1566 | }, 1567 | { 1568 | "value": "ARN", 1569 | "name": "Aeron", 1570 | "label": "Aeron - (ARN)" 1571 | }, 1572 | { 1573 | "value": "VIBE", 1574 | "name": "VIBEHub", 1575 | "label": "VIBEHub - (VIBE)" 1576 | }, 1577 | { 1578 | "value": "AST", 1579 | "name": "AirSwap", 1580 | "label": "AirSwap - (AST)" 1581 | }, 1582 | { 1583 | "value": "CND", 1584 | "name": "Cindicator", 1585 | "label": "Cindicator - (CND)" 1586 | }, 1587 | { 1588 | "value": "ENG", 1589 | "name": "Enigma", 1590 | "label": "Enigma - (ENG)" 1591 | }, 1592 | { 1593 | "value": "POWR", 1594 | "name": "Power Ledger", 1595 | "label": "Power Ledger - (POWR)" 1596 | }, 1597 | { 1598 | "value": "WABI", 1599 | "name": "WaBi", 1600 | "label": "WaBi - (WABI)" 1601 | }, 1602 | { 1603 | "value": "PHX", 1604 | "name": "Red Pulse Phoenix", 1605 | "label": "Red Pulse Phoenix - (PHX)" 1606 | }, 1607 | { 1608 | "value": "MDA", 1609 | "name": "Moeda", 1610 | "label": "Moeda - (MDA)" 1611 | }, 1612 | { 1613 | "value": "MOD", 1614 | "name": "Modum", 1615 | "label": "Modum - (MOD)" 1616 | }, 1617 | { 1618 | "value": "APPC", 1619 | "name": "AppCoins", 1620 | "label": "AppCoins - (APPC)" 1621 | }, 1622 | { 1623 | "value": "BTG", 1624 | "name": "Bitcoin Gold", 1625 | "label": "Bitcoin Gold - (BTG)" 1626 | }, 1627 | { 1628 | "value": "WPR", 1629 | "name": "WePower", 1630 | "label": "WePower - (WPR)" 1631 | }, 1632 | { 1633 | "value": "KEY", 1634 | "name": "SelfKey", 1635 | "label": "SelfKey - (KEY)" 1636 | }, 1637 | { 1638 | "value": "OST", 1639 | "name": "Simple Token", 1640 | "label": "Simple Token - (OST)" 1641 | }, 1642 | { 1643 | "value": "DATA", 1644 | "name": "Streamr DATAcoin", 1645 | "label": "Streamr DATAcoin - (DATA)" 1646 | }, 1647 | { 1648 | "value": "INS", 1649 | "name": "INS Ecosystem", 1650 | "label": "INS Ecosystem - (INS)" 1651 | }, 1652 | { 1653 | "value": "BCPT", 1654 | "name": "BlockMason Credit Protocol", 1655 | "label": "BlockMason Credit Protocol - (BCPT)" 1656 | }, 1657 | { 1658 | "value": "NULS", 1659 | "name": "Nuls", 1660 | "label": "Nuls - (NULS)" 1661 | }, 1662 | { 1663 | "value": "GVT", 1664 | "name": "Genesis Vision", 1665 | "label": "Genesis Vision - (GVT)" 1666 | }, 1667 | { 1668 | "value": "QSP", 1669 | "name": "Quantstamp", 1670 | "label": "Quantstamp - (QSP)" 1671 | }, 1672 | { 1673 | "value": "BCD", 1674 | "name": "Bitcoin Diamond", 1675 | "label": "Bitcoin Diamond - (BCD)" 1676 | }, 1677 | { 1678 | "value": "LEND", 1679 | "name": "EthLend", 1680 | "label": "EthLend - (LEND)" 1681 | }, 1682 | { 1683 | "value": "AION", 1684 | "name": "Aion", 1685 | "label": "Aion - (AION)" 1686 | }, 1687 | { 1688 | "value": "GTO", 1689 | "name": "GIFTO", 1690 | "label": "GIFTO - (GTO)" 1691 | }, 1692 | { 1693 | "value": "TNB", 1694 | "name": "Time New Bank", 1695 | "label": "Time New Bank - (TNB)" 1696 | }, 1697 | { 1698 | "value": "BRD", 1699 | "name": "Bread token", 1700 | "label": "Bread token - (BRD)" 1701 | }, 1702 | { 1703 | "value": "ELF", 1704 | "name": "aelf", 1705 | "label": "aelf - (ELF)" 1706 | }, 1707 | { 1708 | "value": "NAS", 1709 | "name": "Nebulas", 1710 | "label": "Nebulas - (NAS)" 1711 | }, 1712 | { 1713 | "value": "QLC", 1714 | "name": "QLC Chain", 1715 | "label": "QLC Chain - (QLC)" 1716 | }, 1717 | { 1718 | "value": "GXS", 1719 | "name": "GXChain", 1720 | "label": "GXChain - (GXS)" 1721 | }, 1722 | { 1723 | "value": "AGI", 1724 | "name": "SingularityNET", 1725 | "label": "SingularityNET - (AGI)" 1726 | }, 1727 | { 1728 | "value": "THETA", 1729 | "name": "Theta", 1730 | "label": "Theta - (THETA)" 1731 | }, 1732 | { 1733 | "value": "IOST", 1734 | "name": "IOS token", 1735 | "label": "IOS token - (IOST)" 1736 | }, 1737 | { 1738 | "value": "ZIL", 1739 | "name": "Zilliqa", 1740 | "label": "Zilliqa - (ZIL)" 1741 | }, 1742 | { 1743 | "value": "NPXS", 1744 | "name": "Pundi X", 1745 | "label": "Pundi X - (NPXS)" 1746 | }, 1747 | { 1748 | "value": "BLZ", 1749 | "name": "Bluzelle", 1750 | "label": "Bluzelle - (BLZ)" 1751 | }, 1752 | { 1753 | "value": "NCASH", 1754 | "name": "Nucleus Vision", 1755 | "label": "Nucleus Vision - (NCASH)" 1756 | }, 1757 | { 1758 | "value": "POA", 1759 | "name": "Poa Network", 1760 | "label": "Poa Network - (POA)" 1761 | }, 1762 | { 1763 | "value": "LOOM", 1764 | "name": "Loom Network", 1765 | "label": "Loom Network - (LOOM)" 1766 | }, 1767 | { 1768 | "value": "TUSD", 1769 | "name": "True USD", 1770 | "label": "True USD - (TUSD)" 1771 | }, 1772 | { 1773 | "value": "DOCK", 1774 | "name": "Dock.io", 1775 | "label": "Dock.io - (DOCK)" 1776 | }, 1777 | { 1778 | "value": "HOT", 1779 | "name": "Hydro Protocol", 1780 | "label": "Hydro Protocol - (HOT)" 1781 | }, 1782 | { 1783 | "value": "IOTX", 1784 | "name": "IoTeX Network", 1785 | "label": "IoTeX Network - (IOTX)" 1786 | }, 1787 | { 1788 | "value": "QKC", 1789 | "name": "QuarkChain", 1790 | "label": "QuarkChain - (QKC)" 1791 | }, 1792 | { 1793 | "value": "MFT", 1794 | "name": "Mainframe", 1795 | "label": "Mainframe - (MFT)" 1796 | }, 1797 | { 1798 | "value": "ONT", 1799 | "name": "Ontology", 1800 | "label": "Ontology - (ONT)" 1801 | }, 1802 | { 1803 | "value": "ETC", 1804 | "name": "Ethereum Classic", 1805 | "label": "Ethereum Classic - (ETC)" 1806 | }, 1807 | { 1808 | "value": "EOS", 1809 | "name": "EOS", 1810 | "label": "EOS" 1811 | }, 1812 | { 1813 | "value": "CHAT", 1814 | "name": "OpenChat", 1815 | "label": "OpenChat - (CHAT)" 1816 | } 1817 | ], 1818 | "USDT": [ 1819 | { 1820 | "value": "ETH", 1821 | "name": "Ethereum", 1822 | "label": "Ethereum - (ETH)" 1823 | }, 1824 | { 1825 | "value": "BTC", 1826 | "name": "Bitcoin", 1827 | "label": "Bitcoin - (BTC)" 1828 | }, 1829 | { 1830 | "value": "LTC", 1831 | "name": "Litecoin", 1832 | "label": "Litecoin - (LTC)" 1833 | }, 1834 | { 1835 | "value": "BNB", 1836 | "name": "Binance Coin", 1837 | "label": "Binance Coin - (BNB)" 1838 | }, 1839 | { 1840 | "value": "XRP", 1841 | "name": "XRP", 1842 | "label": "XRP" 1843 | }, 1844 | { 1845 | "value": "ETC", 1846 | "name": "Ethereum Classic", 1847 | "label": "Ethereum Classic - (ETC)" 1848 | }, 1849 | { 1850 | "value": "XLM", 1851 | "name": "Stellar", 1852 | "label": "Stellar - (XLM)" 1853 | }, 1854 | { 1855 | "value": "BCC", 1856 | "name": "Bitcoin Cash", 1857 | "label": "Bitcoin Cash - (BCC)" 1858 | }, 1859 | { 1860 | "value": "IOTA", 1861 | "name": "MIOTA", 1862 | "label": "MIOTA - (IOTA)" 1863 | }, 1864 | { 1865 | "value": "NEO", 1866 | "name": "NEO", 1867 | "label": "NEO" 1868 | }, 1869 | { 1870 | "value": "QTUM", 1871 | "name": "QTUM", 1872 | "label": "QTUM" 1873 | }, 1874 | { 1875 | "value": "VET", 1876 | "name": "Vechain", 1877 | "label": "Vechain - (VET)" 1878 | }, 1879 | { 1880 | "value": "TRX", 1881 | "name": "Tronix", 1882 | "label": "Tronix - (TRX)" 1883 | }, 1884 | { 1885 | "value": "ADA", 1886 | "name": "Cardano", 1887 | "label": "Cardano - (ADA)" 1888 | }, 1889 | { 1890 | "value": "ICX", 1891 | "name": "ICON Project", 1892 | "label": "ICON Project - (ICX)" 1893 | }, 1894 | { 1895 | "value": "NULS", 1896 | "name": "Nuls", 1897 | "label": "Nuls - (NULS)" 1898 | }, 1899 | { 1900 | "value": "TUSD", 1901 | "name": "True USD", 1902 | "label": "True USD - (TUSD)" 1903 | }, 1904 | { 1905 | "value": "ONT", 1906 | "name": "Ontology", 1907 | "label": "Ontology - (ONT)" 1908 | }, 1909 | { 1910 | "value": "EOS", 1911 | "name": "EOS", 1912 | "label": "EOS" 1913 | } 1914 | ] 1915 | } --------------------------------------------------------------------------------