{"version":3,"file":"StreamingRenderer.bundle.js","mappings":"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","sources":["webpack://advfnweb/./advfn3/content/_common/streaming/src/classes/RendererTheme.js","webpack://advfnweb/./advfn3/content/_common/streaming/src/classes/Animator.js","webpack://advfnweb/./advfn3/content/_common/streaming/src/classes/Formatter.js","webpack://advfnweb/./advfn3/content/_common/streaming/src/classes/StreamerLocalMemory.js","webpack://advfnweb/./advfn3/content/_common/streaming/src/classes/StreamingRenderer.js","webpack://advfnweb/./advfn3/content/_common/streaming/src/app.js"],"sourcesContent":["/**\n * @typedef {{up: string, down: string, no_change: string}} RendererThemeColors\n */\n\n/**\n * @typedef {{text: RendererThemeColors, background: RendererThemeColors}} RendererThemeColorsSet\n */\n\nclass RendererTheme\n{\n constructor()\n {\n RendererTheme.defaultText = 'inherit';\n RendererTheme.defaultBackground = 'transparent';\n\n /**\n * @type {RendererThemeColorsSet}\n */\n this.current = {\n text: {\n up: 'green',\n down: 'red',\n no_change: 'black',\n },\n background: {\n up: RendererTheme.defaultBackground,\n down: RendererTheme.defaultBackground,\n no_change: RendererTheme.defaultBackground,\n },\n };\n\n /**\n * @type {RendererThemeColorsSet}\n */\n this.update = {\n text: {\n up: 'white',\n down: 'white',\n no_change: 'white',\n },\n background: {\n up: 'green',\n down: 'red',\n no_change: 'black',\n },\n };\n\n /**\n * @type {RendererThemeColorsSet}\n */\n this.period = {\n text: {\n up: RendererTheme.defaultText,\n down: RendererTheme.defaultText,\n no_change: RendererTheme.defaultText,\n },\n background: {\n up: RendererTheme.defaultBackground,\n down: RendererTheme.defaultBackground,\n no_change: RendererTheme.defaultBackground,\n },\n };\n }\n\n /**\n * @param {{\n * current: RendererThemeColorsSet,\n * update: RendererThemeColorsSet,\n * period: RendererThemeColorsSet\n * }} colors\n */\n setThemeColors(colors)\n {\n if (typeof colors.current !== 'undefined')\n {\n this._setCurrentThemeColors(colors.current.text, colors.current.background);\n }\n if (typeof colors.update !== 'undefined')\n {\n this._setUpdateThemeColors(colors.update.text, colors.update.background);\n }\n if (typeof colors.period !== 'undefined')\n {\n this._setPeriodThemeColors(colors.period.text, colors.period.background);\n }\n }\n\n _setCurrentThemeColors(text, background)\n {\n if (typeof text !== 'undefined')\n {\n this.current.text = {\n up: text.up || this.current.text.up,\n down: text.down || this.current.text.down,\n no_change: text.no_change || this.current.text.no_change,\n };\n }\n if (typeof background !== 'undefined')\n {\n this.current.background = {\n up: background.up || this.current.background.up,\n down: background.down || this.current.background.down,\n no_change: background.no_change || this.current.background.no_change,\n };\n }\n }\n\n _setUpdateThemeColors(text, background)\n {\n if (typeof text !== 'undefined')\n {\n this.update.text = {\n up: text.up || this.update.text.up,\n down: text.down || this.update.text.down,\n no_change: text.no_change || this.update.text.no_change,\n };\n }\n if (typeof background !== 'undefined')\n {\n this.update.background = {\n up: background.up || this.update.background.up,\n down: background.down || this.update.background.down,\n no_change: background.no_change || this.update.background.no_change,\n };\n }\n }\n\n _setPeriodThemeColors(text, background)\n {\n if (typeof text !== 'undefined')\n {\n this.period.text = {\n up: text.up || this.period.text.up,\n down: text.down || this.period.text.down,\n no_change: text.no_change || this.period.text.no_change,\n };\n }\n if (typeof background !== 'undefined')\n {\n this.period.background = {\n up: background.up || this.period.background.up,\n down: background.down || this.period.background.down,\n no_change: background.no_change || this.period.background.no_change,\n };\n }\n }\n\n getCurrentTextColor(flag)\n {\n if (typeof this.current.text[flag] !== 'undefined')\n {\n return this.current.text[flag];\n }\n return RendererTheme.defaultText;\n }\n\n getCurrentBackgroundColor(flag)\n {\n if (typeof this.current.background[flag] !== 'undefined')\n {\n return this.current.background[flag];\n }\n return RendererTheme.defaultBackground;\n }\n\n getUpdateTextColor(flag)\n {\n if (typeof this.update.text[flag] !== 'undefined')\n {\n return this.update.text[flag];\n }\n return RendererTheme.defaultText;\n }\n\n getUpdateBackgroundColor(flag)\n {\n if (typeof this.update.background[flag] !== 'undefined')\n {\n return this.update.background[flag];\n }\n return RendererTheme.defaultBackground;\n }\n\n getPeriodTextColor(flag)\n {\n if (typeof this.period.text[flag] !== 'undefined')\n {\n return this.period.text[flag];\n }\n return RendererTheme.defaultText;\n }\n\n getPeriodBackgroundColor(flag)\n {\n if (typeof this.period.background[flag] !== 'undefined')\n {\n return this.period.background[flag];\n }\n return RendererTheme.defaultBackground;\n }\n\n getDefaultTextColor()\n {\n return RendererTheme.defaultText;\n }\n\n getDefaultBackgroundColor()\n {\n return RendererTheme.defaultBackground;\n }\n\n getUpdateBackgroundClass(flag)\n {\n switch (flag)\n {\n case 'up':\n return 'element-up-background-color';\n case 'down':\n return 'element-down-background-color';\n default:\n return 'element-flat-background-color';\n }\n }\n}\n\nexport default RendererTheme;\n","class Animator\n{\n /**\n * @param {StreamingRenderer} renderer\n */\n constructor(renderer)\n {\n this.renderer = renderer;\n }\n\n animate(type, element, flags)\n {\n switch (type)\n {\n case 'basic':\n this.basicAnimation(element, flags);\n break;\n case 'flashing-price':\n this.flashingPriceAnimation(element, flags);\n break;\n case 'flashing-change':\n this.flashingChangeAnimation(element, flags);\n break;\n case 'flashing-volume':\n this.flashingVolumeAnimation(element, flags);\n break;\n case 'pulsating-price':\n this.pulsatingPriceAnimation(element, flags);\n break;\n case 'flashing-forex-price':\n this.flashingForexPriceAnimation(element, flags);\n break;\n case 'color':\n this.colorAnimation(element, flags);\n break;\n case 'flashing-change-percentage':\n this.flashingChangePercentageAnimation(element, flags);\n break;\n }\n }\n\n basicAnimation(element, flags, duration = 1800)\n {\n const rendererTheme = this.renderer.getTheme();\n\n const currentBackground = rendererTheme.getCurrentBackgroundColor(flags.current);\n const currentText = rendererTheme.getCurrentTextColor(flags.current);\n const updateBackground = rendererTheme.getUpdateBackgroundColor(flags.update);\n const updateText = rendererTheme.getUpdateTextColor(flags.update);\n\n element.setBackgroundColor(updateBackground);\n element.setTextColor(updateText);\n\n const parent = element.getParent();\n parent.setBackgroundColor(updateBackground);\n parent.setTextColor(updateText);\n\n setTimeout(() =>\n {\n parent.setBackgroundColor(rendererTheme.getDefaultBackgroundColor());\n parent.setTextColor(rendererTheme.getDefaultTextColor());\n element.setBackgroundColor(currentBackground);\n element.setTextColor(currentText);\n }, duration);\n }\n\n flashingPriceAnimation(element, flags, duration = 1800)\n {\n const rendererTheme = this.renderer.getTheme();\n\n const currentBackground = rendererTheme.getCurrentBackgroundColor(flags.current);\n const updateBackground = rendererTheme.getUpdateBackgroundColor(flags.update);\n\n element.setBackgroundColor(updateBackground);\n element.setStyles({\n transition: 'background-color 0.25s ease-in-out, color 0.25s ease-in-out',\n borderRight: '1px solid #fff',\n });\n\n setTimeout(() =>\n {\n element.setBackgroundColor(currentBackground);\n element.setStyles({\n borderRight: '1px solid transparent',\n });\n }, duration);\n }\n\n flashingChangeAnimation(element, flags, duration = 1800)\n {\n const rendererTheme = this.renderer.getTheme();\n\n const currentBackground = rendererTheme.getCurrentBackgroundColor(flags.current);\n const updateBackground = rendererTheme.getUpdateBackgroundColor(flags.update);\n\n const currentText = rendererTheme.getCurrentTextColor(flags.current);\n const updateText = rendererTheme.getUpdateTextColor(flags.update);\n\n element.setBackgroundColor(updateBackground);\n element.setTextColor(updateText);\n element.setStyles({\n transition: 'background-color 0.25s ease-in-out, color 0.25s ease-in-out',\n borderRight: '1px solid #fff',\n });\n\n setTimeout(() =>\n {\n element.setBackgroundColor(currentBackground);\n element.setTextColor(currentText);\n element.setStyles({\n borderRight: '1px solid transparent',\n });\n }, duration);\n }\n\n flashingVolumeAnimation(element, flags, duration = 1800)\n {\n const rendererTheme = this.renderer.getTheme();\n\n const currentBackground = rendererTheme.getCurrentBackgroundColor(flags.current);\n\n element.setBackgroundColor('#FDFD96');\n element.setStyles({\n transition: 'background-color 0.25s ease-in-out, color 0.25s ease-in-out',\n });\n\n setTimeout(() =>\n {\n element.setBackgroundColor(currentBackground);\n }, duration);\n }\n\n pulsatingPriceAnimation(element, flags, duration = 1800)\n {\n const rendererTheme = this.renderer.getTheme();\n\n const updateBackground = rendererTheme.getUpdateBackgroundColor(flags.update);\n\n element.setStyles({\n textShadow: `0 0 2px ${updateBackground}`,\n transition: 'text-shadow 0.25s ease-in-out',\n });\n\n setTimeout(() =>\n {\n element.setStyles({\n textShadow: 'none',\n });\n }, duration);\n }\n\n flashingForexPriceAnimation(element, flags, duration = 1800)\n {\n const rendererTheme = this.renderer.getTheme();\n const currentBackground = rendererTheme.getCurrentBackgroundColor(flags.current);\n const noChange = flags.update === 'no_change';\n\n if (noChange)\n {\n return;\n }\n\n const updateBackground = rendererTheme.getUpdateBackgroundColor(flags.update);\n element.setBackgroundColor(updateBackground);\n\n element.setStyles({\n transition: 'background-color 0.25s ease-in-out, color 0.25s ease-in-out',\n });\n\n setTimeout(() =>\n {\n element.setBackgroundColor(currentBackground);\n }, duration);\n }\n\n colorAnimation(element, flags, duration = 1800)\n {\n const rendererTheme = this.renderer.getTheme();\n\n const currentText = rendererTheme.getCurrentTextColor(flags.current);\n const updateText = rendererTheme.getUpdateTextColor(flags.update);\n\n element.setTextColor(updateText);\n\n setTimeout(() =>\n {\n element.setTextColor(currentText);\n }, duration);\n }\n\n flashingChangePercentageAnimation(element)\n {\n const percentage = parseFloat(element.content.replace('%', ''));\n\n if (Number.isNaN(percentage))\n {\n return;\n }\n\n let updateBackground;\n if (percentage > 0)\n {\n updateBackground = 'element-up-background-color';\n }\n else if (percentage < 0)\n {\n updateBackground = 'element-down-background-color';\n }\n else\n {\n updateBackground = 'element-flat-background-color';\n }\n\n const parent = element.getParent();\n const currentClass = parent.element.classList[1];\n\n if (currentClass === updateBackground)\n {\n return;\n }\n\n parent.removeClass('element-down-background-color');\n parent.removeClass('element-up-background-color');\n parent.removeClass('element-flat-background-color');\n parent.addClass(updateBackground);\n parent.setStyles({\n transition: 'background-color 0.25s ease-in-out',\n });\n }\n}\n\nexport default Animator;\n","/* eslint no-undef: 0 */\nclass Formatter\n{\n /**\n *\n * @param {*} value\n * @param {*} quoteType\n * @param {abbreviated: boolean, currency?: string} options\n * @returns\n */\n formatNumber(value, quoteType, options = {})\n {\n if (typeof LocaleFormat !== 'undefined')\n {\n const { currency, abbreviated } = options;\n const showCurrency = typeof currency !== 'undefined';\n let schema;\n if (abbreviated)\n {\n schema = 'abbreviated';\n }\n return this._localeFormat(value, quoteType, schema, currency, showCurrency);\n }\n return value;\n }\n\n formatPrice(value, quoteType)\n {\n if (typeof LocaleFormat !== 'undefined')\n {\n return this._localeFormat(value, quoteType, 'price');\n }\n return value;\n }\n\n formatChange(value, quoteType, percentage = false)\n {\n if (typeof LocaleFormat !== 'undefined')\n {\n if (percentage)\n {\n return this._localeFormat(value, quoteType, 'change', 'percent', true);\n }\n return this._localeFormat(value, quoteType, 'change');\n }\n if (percentage)\n {\n return `${value} %`;\n }\n return value;\n }\n\n formatVolume(value, quoteType, currency = null, showCurrency = false)\n {\n if (typeof LocaleFormat !== 'undefined')\n {\n if (currency !== null)\n {\n return this._localeFormat(value, quoteType, 'volume', currency, showCurrency);\n }\n\n return this._localeFormat(value, quoteType, 'volume');\n }\n return value;\n }\n\n formatTradeSizeWide(value, quoteType, currency = null, showCurrency = false)\n {\n if (typeof LocaleFormat !== 'undefined')\n {\n if (currency !== null)\n {\n return this._localeFormat(value, quoteType, 'vwap', currency, showCurrency);\n }\n\n return this._localeFormat(value, quoteType, 'vwap');\n }\n return value;\n }\n\n formatAbbreviated(value, quoteType)\n {\n if (value === null) return '-';\n\n if (typeof LocaleFormat !== 'undefined')\n {\n return this._localeFormat(value, quoteType, 'abbreviated');\n }\n return value;\n }\n\n formatDate(timestamp, locale = null, offset = null, displayTime = false, displayTypeDate = null)\n {\n if (Number.isNaN(timestamp)) return '-';\n\n const date = this._getDateWithOffset(timestamp, offset);\n\n if (date.toUTCString() === 'Invalid Date') return '-';\n\n if (locale === null)\n {\n locale = 'en-GB';\n }\n\n if (displayTypeDate)\n {\n let formattedDate;\n const timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\n const dateOptions = this._getDateType(displayTypeDate);\n\n if (!displayTime)\n {\n formattedDate = date.toLocaleDateString(locale, dateOptions);\n }\n else\n {\n formattedDate = `${date.toLocaleDateString(locale, dateOptions)} ${date.toLocaleTimeString(locale, timeOptions)}`;\n }\n return formattedDate;\n }\n\n const dateDisplay = date.toLocaleDateString(locale);\n if (!displayTime)\n {\n return dateDisplay;\n }\n\n return `${dateDisplay} ${this.formatTime(timestamp, locale, offset)}`;\n }\n\n formatTime(timestamp, offset = null, displaySeconds = false)\n {\n if (Number.isNaN(timestamp)) return '-';\n\n const date = this._getDateWithOffset(timestamp, offset);\n\n let hours = date.getUTCHours();\n let minutes = date.getUTCMinutes();\n let seconds = date.getUTCSeconds();\n\n if (Number.isNaN(hours) || Number.isNaN(minutes) || Number.isNaN(seconds))\n {\n return '-';\n }\n\n if (hours < 10)\n {\n hours = `0${hours}`;\n }\n\n if (minutes < 10)\n {\n minutes = `0${minutes}`;\n }\n\n if (!displaySeconds)\n {\n return `${hours}:${minutes}`;\n }\n\n if (seconds < 10)\n {\n seconds = `0${seconds}`;\n }\n return `${hours}:${minutes}:${seconds}`;\n }\n\n _getDateType(dateType)\n {\n switch (dateType)\n {\n case 'short':\n return { month: 'short', day: 'numeric', year: 'numeric' };\n case 'long':\n return { month: 'long', day: 'numeric', year: 'numeric' };\n default:\n return null;\n }\n }\n\n _getDateWithOffset(timestamp, offset)\n {\n let newTimestamp = parseInt(timestamp, 10);\n if (offset !== null && !Number.isNaN(offset))\n {\n newTimestamp += parseInt(offset, 10);\n }\n return new Date(newTimestamp * 1000);\n }\n\n _localeFormat(value, quoteType, schema, currency = '', showCurrency = false)\n {\n return LocaleFormat.formatForInstrumentType(value, quoteType, schema, currency, showCurrency);\n }\n}\n\nexport default Formatter;\n","export default class StreamerLocalMemory\n{\n static getInstance()\n {\n if (!StreamerLocalMemory.instance)\n {\n StreamerLocalMemory.instance = new StreamerLocalMemory();\n }\n return StreamerLocalMemory.instance;\n }\n\n constructor()\n {\n this.memory = {};\n }\n\n static set(key, value)\n {\n StreamerLocalMemory.getInstance().memory[key] = value;\n }\n\n static get(key)\n {\n if (!StreamerLocalMemory.getInstance().memory[key]) return null;\n return StreamerLocalMemory.getInstance().memory[key];\n }\n\n static getAll()\n {\n return StreamerLocalMemory.getInstance().memory;\n }\n}\n","import RendererTheme from './RendererTheme';\nimport Animator from './Animator';\nimport Formatter from './Formatter';\nimport StreamerLocalMemory from './StreamerLocalMemory';\n\nclass StreamingRenderer\n{\n static getInstance()\n {\n if (!StreamingRenderer.instance)\n {\n StreamingRenderer.instance = new StreamingRenderer();\n }\n return StreamingRenderer.instance;\n }\n\n constructor()\n {\n StreamingRenderer.instance = null;\n this.theme = new RendererTheme();\n this.animator = new Animator(this);\n this.formatter = new Formatter();\n }\n\n getTheme()\n {\n return this.theme;\n }\n\n setTheme(theme)\n {\n this.theme.setThemeColors(theme);\n }\n\n noRender(element, content, flags)\n {\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n }\n\n setStreamingChartOpenPrice(element, content)\n {\n window.ADVFN_CHARTS_MANAGER._charts['streaming-chart'].setPrice(content, 'open');\n }\n\n setStreamingChartHighPrice(element, content)\n {\n window.ADVFN_CHARTS_MANAGER._charts['streaming-chart'].setPrice(content, 'high');\n }\n\n setStreamingChartLowPrice(element, content)\n {\n window.ADVFN_CHARTS_MANAGER._charts['streaming-chart'].setPrice(content, 'low');\n }\n\n setStreamingChartClosePrice(element, content)\n {\n window.ADVFN_CHARTS_MANAGER._charts['streaming-chart'].setPrice(content, 'close');\n }\n\n setStreamingChartBuyVolume(element, content)\n {\n window.ADVFN_CHARTS_MANAGER._charts['streaming-chart'].setBuyVolume(content);\n }\n\n setStreamingChartSellVolume(element, content)\n {\n window.ADVFN_CHARTS_MANAGER._charts['streaming-chart'].setSellVolume(content);\n }\n\n setStreamingChartUnknownVolume(element, content)\n {\n window.ADVFN_CHARTS_MANAGER._charts['streaming-chart'].setUnknownVolume(content);\n }\n\n renderPrice(element, content, flags)\n {\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n const quoteType = element.getData('asr-quote-type') || 'CS';\n element.setContent(\n this.formatter.formatPrice(content, quoteType),\n );\n }\n\n _getElementKey(element, key)\n {\n return `${element.getData('asc-symbol')}_${key}`;\n }\n\n renderVWAP(element, content, flags)\n {\n const memoryKey = this._getElementKey(element, 'vwap');\n StreamerLocalMemory.set(memoryKey, content);\n return this.renderPrice(element, content, flags);\n }\n\n renderChange(element, content, flags)\n {\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n const quoteType = element.getData('asr-quote-type') || 'CS';\n element.setContent(\n this.formatter.formatChange(content, quoteType),\n );\n }\n\n renderChangePercentage(element, content, flags)\n {\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n const quoteType = element.getData('asr-quote-type') || 'CS';\n element.setContent(\n this.formatter.formatChange(content, quoteType, true),\n );\n }\n\n renderChangeWithParent(element, content, flags)\n {\n this.renderChange(element, content, flags);\n element.getParent()\n .setTextColor(this.theme.getCurrentTextColor(flags.current));\n }\n\n renderVolume(element, content, flags, currency = null, showCurrency = false)\n {\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n const quoteType = element.getData('asr-quote-type') || 'CS';\n\n element.setContent(\n this.formatter.formatVolume(content, quoteType, currency, showCurrency),\n );\n }\n\n renderFinancialVolume(element, content, flags)\n {\n const ratio = element.getData('asr-ratio') || 1;\n\n // Get VWAP from memory or from the element (default)\n const memoryKey = this._getElementKey(element, 'vwap');\n let vwap = StreamerLocalMemory.get(memoryKey);\n if (vwap === null)\n {\n vwap = element.getData('asr-vwap') || 0;\n }\n\n const volume = content.replace(/,/g, '');\n const financialVolume = volume * vwap * ratio;\n const currency = element.getData('asr-currency') || 'USD';\n\n return this.renderVolume(element, financialVolume, flags, currency, true);\n }\n\n renderVolumeAbbreviated(element, content, flags)\n {\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n const quoteType = element.getData('asr-quote-type') || 'CS';\n element.setContent(\n this.formatter.formatAbbreviated(content, quoteType),\n );\n }\n\n renderLastTrade(element, content, flags)\n {\n content = content.trim();\n if (content === '') return;\n\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n element.setContent(\n this.formatter.formatDate(\n content,\n element.getData('asr-locale-code'),\n element.getData('asr-time-offset'),\n true,\n ),\n );\n }\n\n renderLastTradeTime(element, content, flags)\n {\n content = content.trim();\n if (content === '') return;\n if (content === '{l4}') return;\n\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n element.setContent(\n this.formatter.formatTime(\n content,\n element.getData('asr-time-offset'),\n true,\n ),\n );\n }\n\n renderTrades(element, content, flags)\n {\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n const quoteType = element.getData('asr-quote-type') || 'CS';\n element.setContent(\n this.formatter.formatVolume(content, quoteType),\n );\n }\n\n renderTradesSizeWide(element, content, flags)\n {\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n const quoteType = element.getData('asr-quote-type') || 'CS';\n element.setContent(\n this.formatter.formatTradeSizeWide(content, quoteType),\n );\n }\n\n renderSimple(element, content, flags)\n {\n if (element.getData('asr-animate') && !flags.initialValue)\n {\n this.animator.animate(element.getData('asr-animate'), element, flags);\n }\n\n element.setContent(content);\n }\n\n renderTradeType(element, content, flags)\n {\n content = content.trim();\n if (content.indexOf('{l') === 0)\n {\n const tradeTypes = {\n '{l1000}': 'O',\n '{l1001}': 'B',\n '{l1002}': 'EU',\n '{l1003}': 'ER',\n '{l1004}': 'K',\n '{l1005}': 'LC',\n '{l1006}': 'M',\n '{l1007}': 'N',\n '{l1008}': 'NM',\n '{l1009}': 'NR',\n '{l1010}': 'P',\n '{l1011}': 'R',\n '{l1012}': 'RO',\n '{l1013}': 'RT',\n '{l1014}': 'ST',\n '{l1015}': 'SW',\n '{l1016}': 'UT',\n '{l1017}': 'X',\n '{l1018}': 'AT',\n '{l1019}': 'PA',\n '{l1020}': 'PC',\n '{l1021}': 'T',\n '{l1022}': 'WN',\n '{l1023}': 'WT',\n '{l1024}': 'CT',\n '{l1025}': 'AI',\n '{l1026}': 'PN',\n '{l1027}': 'VW',\n '{l1028}': 'RC',\n '{l2000}': '',\n '{l2001}': 'aq',\n '{l2002}': 'bunched',\n '{l2003}': 'cash',\n '{l2004}': 'dist',\n '{l2007}': 'bnch.sold',\n '{l2011}': 'rule 155',\n '{l2012}': 'sold last',\n '{l2014}': 'nxt.day',\n '{l2015}': 'opened',\n '{l2016}': 'prior ref',\n '{l2018}': 'seller',\n '{l2019}': 'split',\n '{l2020}': 'form t',\n '{l2023}': 'average',\n '{l2026}': 'seq',\n '{l2027}': 'vol.only',\n };\n if (tradeTypes[content])\n {\n content = tradeTypes[content];\n }\n }\n this.renderSimple(element, content, flags);\n }\n\n renderArrowFA5(element, content, flags)\n {\n const arrowClasses = ['fas'];\n switch (flags.current)\n {\n case 'up':\n arrowClasses.push('fa-arrow-up');\n break;\n case 'down':\n arrowClasses.push('fa-arrow-down');\n break;\n default:\n arrowClasses.push('fa-circle');\n break;\n }\n element.setCssClasses(arrowClasses);\n\n element.setTextColor(this.theme.getCurrentTextColor(flags.current));\n element.getParent()\n .setTextColor(this.theme.getCurrentTextColor(flags.current));\n }\n\n renderArrowDelight(element, content, flags)\n {\n const arrowClasses = [];\n let parentClass = '';\n switch (flags.current)\n {\n case 'up':\n arrowClasses.push('icon-basic-arrow-up-20', 'positive');\n parentClass = 'positive';\n break;\n case 'down':\n arrowClasses.push('icon-basic-arrow-down-20', 'negative');\n parentClass = 'negative';\n break;\n default:\n arrowClasses.push('fa fa-circle', 'unchanged');\n parentClass = 'unchanged';\n break;\n }\n element.setCssClasses(arrowClasses);\n element.getParent().removeClass('positive', 'negative').addClass(parentClass);\n }\n\n renderUpDownText(element, content, flags)\n {\n element.setContent(flags.current);\n }\n}\n\nexport default StreamingRenderer;\n","import StreamingRenderer from './classes/StreamingRenderer';\n\nwindow.$AFNStreamingRenderer = StreamingRenderer.getInstance();\n"],"names":["RendererTheme","defaultText","defaultBackground","this","current","text","up","down","no_change","background","update","period","setThemeColors","colors","_setCurrentThemeColors","_setUpdateThemeColors","_setPeriodThemeColors","getCurrentTextColor","flag","getCurrentBackgroundColor","getUpdateTextColor","getUpdateBackgroundColor","getPeriodTextColor","getPeriodBackgroundColor","getDefaultTextColor","getDefaultBackgroundColor","getUpdateBackgroundClass","Animator","renderer","animate","type","element","flags","basicAnimation","flashingPriceAnimation","flashingChangeAnimation","flashingVolumeAnimation","pulsatingPriceAnimation","flashingForexPriceAnimation","colorAnimation","flashingChangePercentageAnimation","duration","const","rendererTheme","getTheme","currentBackground","currentText","updateBackground","updateText","setBackgroundColor","setTextColor","parent","getParent","setTimeout","setStyles","transition","borderRight","textShadow","percentage","parseFloat","content","replace","Number","isNaN","let","classList","removeClass","addClass","Formatter","formatNumber","value","quoteType","options","LocaleFormat","schema","currency","showCurrency","abbreviated","_localeFormat","formatPrice","formatChange","formatVolume","formatTradeSizeWide","formatAbbreviated","formatDate","timestamp","locale","offset","displayTime","displayTypeDate","date","_getDateWithOffset","toUTCString","dateOptions","_getDateType","toLocaleDateString","toLocaleTimeString","hour","minute","second","dateDisplay","formatTime","displaySeconds","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","dateType","month","day","year","newTimestamp","parseInt","Date","formatForInstrumentType","StreamerLocalMemory","memory","getInstance","instance","set","key","get","getAll","StreamingRenderer","theme","animator","formatter","setTheme","noRender","getData","initialValue","setStreamingChartOpenPrice","window","ADVFN_CHARTS_MANAGER","_charts","setPrice","setStreamingChartHighPrice","setStreamingChartLowPrice","setStreamingChartClosePrice","setStreamingChartBuyVolume","setBuyVolume","setStreamingChartSellVolume","setSellVolume","setStreamingChartUnknownVolume","setUnknownVolume","renderPrice","setContent","_getElementKey","renderVWAP","memoryKey","renderChange","renderChangePercentage","renderChangeWithParent","renderVolume","renderFinancialVolume","ratio","vwap","financialVolume","renderVolumeAbbreviated","renderLastTrade","trim","renderLastTradeTime","renderTrades","renderTradesSizeWide","renderSimple","renderTradeType","indexOf","tradeTypes","renderArrowFA5","arrowClasses","push","setCssClasses","renderArrowDelight","parentClass","renderUpDownText","$AFNStreamingRenderer"],"sourceRoot":""}