{"version":3,"sources":["webpack:///./src/components/chart/chart.ts","webpack:///./src/components/chart/chart.html","webpack:///./src/common/ssc-se.ts","webpack:///./src/common/ssc.ts","webpack:///./src/common/steem-engine-api.ts"],"names":["DefaultChartOptions","options","animation","legend","display","steppedLine","responsive","maintainAspectRatio","scales","yAxes","ticks","beginAtZero","plugins","zoom","pan","enabled","mode","ChartComponent","element","taskQueue","created","iteration","loading","type","data","iconWallet","this","queueMicroTask","createChart","chart","destroy","chartCandle","chartType","datasets","label","ohlcData","onComplete","event","createCustomEvent","bubbles","dispatchEvent","getOptionsOfChartType","chartRef","refreshChart","chartRefCandle","update","resize","Element","module","exports","sscse","RPC_URL_SE","ssc","RPC_URL","async","checkTransactionSE","trxId","retries","Promise","resolve","reject","getTransactionInfo","err","result","logs","JSON","parse","errors","length","error","e","Error","t","setTimeout","loadTokenMetricsSE","symbols","limit","offset","queryConfig","symbol","$in","metrics","results","find","res","push","loadUserBalancesSE","account","balances","loadTokensSE","index","descending","tokens"],"mappings":"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","file":"app~a41c7baa.fdea8f4cde761d108fd9.chunk.js","sourcesContent":["import { customElement, bindable, TaskQueue, autoinject, DOM } from 'aurelia-framework';\n\nimport Chart from 'chart.js';\nimport './../../../custom_scripts/chartjs-chart-financial/scale.financialLinear.js';\nimport './../../../custom_scripts/chartjs-chart-financial/controller.candlestick.js';\nimport { faWallet } from '@fortawesome/pro-duotone-svg-icons'\nimport 'hammerjs'\nimport 'chartjs-plugin-zoom'\n\nconst DefaultChartOptions = {\n options: {\n animation: {},\n legend: {\n display: false\n },\n steppedLine: true,\n responsive: true,\n maintainAspectRatio: false,\n scales: {\n yAxes: [{\n ticks: {\n beginAtZero: false//,\n //max: 100000\n }\n }]\n },\n plugins: {\n zoom: {\n // Container for pan options\n pan: {\n // Boolean to enable panning\n enabled: true,\n\n // Panning directions. Remove the appropriate direction to disable \n // Eg. 'y' would only allow panning in the y direction\n mode: 'xy'\n },\n\n // Container for zoom options\n zoom: {\n // Boolean to enable zooming\n enabled: true,\n\n // Zooming directions. Remove the appropriate direction to disable \n // Eg. 'y' would only allow zooming in the y direction\n mode: 'xy',\n }\n }\n }\n } \n};\n\n@autoinject()\n@customElement('chart')\nexport class ChartComponent {\n private chartRef: HTMLCanvasElement;\n private chartRefCandle: HTMLCanvasElement;\n public chart;\n public chartCandle;\n private created = false; \n private iteration = 1; \n\n @bindable loading = false;\n @bindable type = 'candlestick';\n @bindable options: any = {};\n @bindable data: any = {};\n @bindable iconWallet = faWallet;\n\n constructor(private element: Element, private taskQueue: TaskQueue) {\n\n }\n\n attached() {\n this.taskQueue.queueMicroTask(() => {\n // this.createChart('line');\n this.createChart('candlestick');\n\n this.created = true;\n });\n }\n\n dataChanged() {\n this.iteration += 1;\n //this.loading = (this.iteration === 2);\n }\n\n detached() {\n if (this.chart)\n this.chart.destroy();\n\n if (this.chartCandle)\n this.chartCandle.destroy();\n\n this.created = false;\n }\n\n getOptionsOfChartType(chartType) {\n const options = { ...this.options, ...DefaultChartOptions };\n\n options.type = chartType;\n if (this.data) {\n if (chartType == 'line') {\n options.data = this.data;\n } else { \n options.data = {\n datasets: [{\n label: 'DSwap',\n data: this.data.ohlcData\n }]\n }; \n }\n }\n\n options.options.animation.onComplete = () => {\n const event = DOM.createCustomEvent('complete', {\n bubbles: true\n });\n\n this.element.dispatchEvent(event);\n };\n\n return options;\n }\n\n createChart(chartType) {\n const options = this.getOptionsOfChartType(chartType); \n if (chartType == 'line') {\n this.chart = new Chart(this.chartRef, options);\n this.refreshChart(this.chart);\n }\n else { \n this.chartCandle = new Chart(this.chartRefCandle, options); \n this.refreshChart(this.chartCandle);\n }\n }\n\n refreshChart(chart) {\n chart.update();\n chart.resize();\n }\n\n setChartType(type) {\n this.type = type;\n }\n\n propertyChanged() {\n if (this.created) {\n //this.refreshChart(this.chart);\n this.refreshChart(this.chartCandle);\n }\n }\n}\n","module.exports = \"\\n \\n \\n \\n \\n \\n
\\n\\n \\n\\n\";","import { environment } from 'environment';\nimport SSC from 'sscjs';\n\nexport const sscse = new SSC(environment.RPC_URL_SE);\n","import { environment } from 'environment';\nimport SSC from 'sscjs';\n\nexport const ssc = new SSC(environment.RPC_URL);\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { usdFormat, getPrices } from 'common/functions';\n/* eslint-disable no-undef */\nimport { HttpClient } from 'aurelia-fetch-client';\nimport { queryParam } from 'common/functions';\nimport { environment } from 'environment';\nimport { sscse } from './ssc-se';\nimport { mapTokenResultToIToken, mapBalanceResultToIBalance, mapMetricsResultToTokenMetrics } from './mappers';\n\nconst http = new HttpClient();\n\nexport async function request(url: string, params: any = {}) {\n // Cache buster\n params.v = new Date().getTime();\n\n url = url + queryParam(params);\n\n return http.fetch(url, {\n method: 'GET',\n });\n}\n\nconst delay = t => new Promise(resolve => setTimeout(resolve, t));\n\nexport const getTransactionInfo = (trxId: string) =>\n new Promise((resolve, reject) => {\n sscse.getTransactionInfo(trxId, async (err, result) => {\n if (result) {\n if (result.logs) {\n const logs = JSON.parse(result.logs);\n\n if (logs.errors && logs.errors.length > 0) {\n resolve({\n ...result,\n errors: logs.errors,\n error: logs.errors[0],\n });\n }\n }\n\n resolve(result);\n } else {\n reject(err);\n }\n });\n });\n\nexport async function checkTransactionSE(trxId: string, retries: number) {\n try {\n return await getTransactionInfo(trxId);\n } catch (e) {\n if (retries > 0) {\n await delay(5000);\n\n try {\n return await checkTransactionSE(trxId, retries - 1);\n } catch (e) {\n return await checkTransactionSE(trxId, retries - 1);\n }\n } else {\n throw new Error('Transaction not found.');\n }\n }\n}\n\nexport async function loadCoinsSE(): Promise {\n const url = `${environment.CONVERTER_API_SE}coins/`;\n\n const response = await http.fetch(url, {\n method: 'GET',\n });\n\n return response.json() as Promise;\n}\n\nexport async function loadCoinPairsSE(): Promise {\n const url = `${environment.CONVERTER_API_SE}pairs/`;\n\n const response = await http.fetch(url, {\n method: 'GET',\n });\n\n return response.json() as Promise;\n}\n\nexport async function loadTokenMetricsSE(symbols = [], limit = 1000, offset = 0): Promise {\n const queryConfig: any = {};\n\n if (symbols.length) {\n queryConfig.symbol = { $in: symbols };\n }\n\n let metrics = [];\n const results = await sscse.find('market', 'metrics', queryConfig); \n \n for (const res of results) {\n metrics.push(mapMetricsResultToTokenMetrics(res));\n }\n\n return metrics;\n}\n\nexport async function loadTokenMarketHistorySE(symbol: string, timestampStart?: string, timestampEnd?: string): Promise {\n let url = `${environment.HISTORY_API_SE}marketHistory?symbol=${symbol.toUpperCase()}`;\n\n if (timestampStart) {\n url += `×tampStart=${timestampStart}`;\n }\n\n if (timestampEnd) {\n url += `×tampEnd=${timestampEnd}`;\n }\n\n const response = await http.fetch(url, {\n method: 'GET',\n });\n\n return response.json() as Promise;\n}\n\nexport async function loadUserBalancesSE(account: string, symbols = [], limit = 1000, offset = 0) : Promise {\n const queryConfig: any = {};\n queryConfig.symbol = { $in: symbols };\n queryConfig.account = account;\n\n const results: any[] = await sscse.find('tokens', 'balances', queryConfig, limit, offset, '', false); \n let balances: IBalance[] = [];\n for (const res of results) {\n balances.push(mapBalanceResultToIBalance(res));\n }\n\n return balances;\n}\n\nexport async function loadTokensSE(symbols = [], limit = 50, offset = 0): Promise {\n const queryConfig: any = {};\n\n if (symbols.length) {\n queryConfig.symbol = { $in: symbols };\n }\n\n const results: any[] = await sscse.find('tokens', 'tokens', queryConfig, limit, offset, [{ index: 'symbol', descending: false }]);\n let tokens: IToken[] = [];\n\n for (const res of results) {\n tokens.push(mapTokenResultToIToken(res));\n }\n\n return tokens;\n}\n\nexport async function getScotConfigForAccountSE(account: string) {\n try {\n const result = await http.fetch(`${environment.SCOT_API_SE}@${account}`);\n\n return result.json();\n } catch (e) {\n return null;\n }\n}\n\nexport async function loadAccountHistorySE(account: string, symbol?: string, timestampStart?: string, timestampEnd?: string, limit?: number, offset?: number): Promise {\n let url = `${environment.HISTORY_API_SE}accountHistory?account=${account}`;\n\n if (symbol) {\n url += `&symbol=${symbol.toUpperCase()}`;\n }\n\n if (timestampStart) {\n url += `×tampStart=${timestampStart}`;\n }\n\n if (timestampEnd) {\n url += `×tampEnd=${timestampEnd}`;\n }\n\n if (limit) {\n url += `&limit=${limit}`;\n }\n\n if (offset) {\n url += `&offset=${offset}`;\n }\n\n const response = await http.fetch(url, {\n method: 'GET',\n });\n\n return response.json() as Promise;\n}\n"],"sourceRoot":""}