{"version":3,"file":"PageQuoteComponents.bundle.js","mappings":"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","sources":["webpack://advfnweb/webpack/runtime/chunk loaded","webpack://advfnweb/./advfn3/content/_common/elements/forex/src/js/main.js","webpack://advfnweb/./advfn3/content/_common/elements/key-stats/src/js/key-stats.js","webpack://advfnweb/./advfn3/content/_common/elements/news/src/js/news.js","webpack://advfnweb/./advfn3/content/_common/elements/news/src/js/quote-news.js","webpack://advfnweb/./advfn3/content/_common/elements/trades/src/app.js","webpack://advfnweb/./advfn3/content/_common/elements/thread-list/src/app.js","webpack://advfnweb/./advfn3/content/_common/elements/translator/js/BaseTranslationService.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/resources/TranslationService.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorModal.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/ApiWrapper.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/AddSymbol.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/RemoveSymbol.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/GetList.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorAddSymbolModal.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/resources/ColumnsTranslationService.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/UpdateColumns.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorChangeColumnsModal.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/GetLists.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/CreateMonitor.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorSelector.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/SetDefaultList.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/SetConfig.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorSettings.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/DeleteList.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorDeleteModal.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/api/RenameList.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorUpdateModal.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorEdit.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/charts/ChartSettings.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/news/MonitorNews.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorSettingsMobile.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorEditModal.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorChangeColumnsModalMobile.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/modals/MonitorNewsAlertModal.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/delight.js","webpack://advfnweb/./advfn3/content/_common/onboarding/src/TranslationService.js","webpack://advfnweb/./advfn3/content/_common/onboarding/src/Onboarding.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/onboarding/TranslationService.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/js/onboarding/MonitorOnboarding.js","webpack://advfnweb/./advfn3/content/_common/watchlist/src/app.js","webpack://advfnweb/./advfn3/content/_common/elements/financials/src/scss/main.scss?ac27","webpack://advfnweb/./advfn3/content/_common/elements/forex/src/scss/main.scss?934b","webpack://advfnweb/./advfn3/content/_common/elements/historical/src/scss/main.scss?7be7","webpack://advfnweb/./advfn3/content/_common/elements/key-stats/src/scss/main.scss?bc64","webpack://advfnweb/./advfn3/content/_common/elements/news/src/scss/main.scss?9e3f","webpack://advfnweb/./advfn3/content/_common/elements/quote-index/src/scss/main.scss?c32b","webpack://advfnweb/./advfn3/content/_common/elements/src/scss/finchat-prompts.scss?9e39","webpack://advfnweb/./advfn3/content/_common/watchlist/src/scss/main.scss?b2cf","webpack://advfnweb/webpack/bootstrap","webpack://advfnweb/webpack/runtime/compat get default export","webpack://advfnweb/webpack/runtime/define property getters","webpack://advfnweb/webpack/runtime/global","webpack://advfnweb/webpack/runtime/hasOwnProperty shorthand","webpack://advfnweb/webpack/runtime/make namespace object","webpack://advfnweb/webpack/runtime/node module decorator","webpack://advfnweb/webpack/runtime/runtimeId","webpack://advfnweb/webpack/runtime/jsonp chunk loading","webpack://advfnweb/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","function setPercentageChangesClass(textContent, cell, currentClasses)\n{\n const value = parseFloat(textContent.replace(',', '.').replace(/[^0-9.,-]/g, '').replace(',', '.'));\n let className = '';\n switch (true)\n {\n case value === 0:\n className = 'element-flat-background-color';\n break;\n case value > 0.2:\n className = 'element-up-background-color';\n break;\n case value > 0 && value <= 0.2:\n className = 'element-light-up-background-color';\n break;\n case value < -0.2:\n className = 'element-down-background-color';\n break;\n case value < 0 && value >= -0.2:\n className = 'element-light-down-background-color';\n break;\n default:\n className = '';\n }\n\n const { parentElement } = cell;\n const currentClass = currentClasses[cell.id] || '';\n\n if (currentClass === className)\n {\n return;\n }\n\n if (currentClass)\n {\n parentElement.classList.remove(currentClass);\n }\n\n if (className)\n {\n parentElement.classList.add(className);\n }\n\n currentClasses[cell.id] = className;\n}\n\nfunction listenToPercentageChanges(cell)\n{\n const currentClasses = {};\n const observer = new MutationObserver((mutationsList) =>\n {\n mutationsList.forEach((mutation) =>\n {\n setPercentageChangesClass(mutation.target.textContent, cell, currentClasses);\n });\n });\n\n observer.observe(cell, { childList: true, characterData: true });\n}\n\ndocument.addEventListener('DOMContentLoaded', () =>\n{\n const cells = document.querySelectorAll('.forex-cross-rates td:not(.currencies):not(.empty)');\n\n cells.forEach((cell) =>\n {\n cell.addEventListener('mouseover', () =>\n {\n const columnIndex = cell.cellIndex;\n const { rowIndex } = cell.parentElement;\n\n const rows = document.querySelectorAll('.forex-cross-rates tr');\n const currentTable = cell.parentElement.parentElement.parentElement;\n currentTable.classList.add('hovered');\n\n rows.forEach((row) =>\n {\n const cellsInRow = row.querySelectorAll('td, th');\n const rowIdx = row.rowIndex;\n row.classList.remove('current_row');\n\n cellsInRow.forEach((td) =>\n {\n const cellIdx = td.cellIndex;\n\n td.classList.remove('selected');\n td.classList.remove('current');\n\n if (rowIdx === rowIndex && cellIdx === columnIndex)\n {\n td.classList.add('current');\n }\n\n if (rowIdx === rowIndex && cellIdx <= columnIndex)\n {\n td.parentElement.classList.add('current_row');\n td.classList.add('selected');\n }\n\n if (cellIdx === columnIndex && rowIdx <= rowIndex)\n {\n td.classList.add('selected');\n }\n });\n });\n });\n cell.addEventListener('mouseout', () =>\n {\n const currentTable = cell.parentElement.parentElement.parentElement;\n currentTable.classList.remove('hovered');\n\n const rows = document.querySelectorAll('.forex-cross-rates tr');\n rows.forEach((row) =>\n {\n const cellsInRow = row.querySelectorAll('td, th');\n row.classList.remove('current_row');\n\n cellsInRow.forEach((td) =>\n {\n td.classList.remove('selected');\n td.classList.remove('current');\n });\n });\n });\n });\n\n const tabs = document.querySelectorAll('[data-forex-type]');\n tabs.forEach((tab) =>\n {\n tab.addEventListener('click', function ()\n {\n tabs.forEach((t) =>\n {\n t.classList.remove('active');\n });\n this.classList.add('active');\n\n const tabId = this.getAttribute('data-forex-type');\n const tables = document.querySelectorAll('.forex-cross-rates');\n tables.forEach((table) =>\n {\n table.classList.remove('active');\n });\n\n const activeTable = document.getElementById(tabId);\n activeTable.classList.add('active');\n\n if (tabId === 'forex_heatmap')\n {\n const percentageChangesCells = document.querySelectorAll('#forex_heatmap.active td a');\n\n percentageChangesCells.forEach((cell) =>\n {\n setPercentageChangesClass(cell.textContent, cell, {});\n listenToPercentageChanges(cell);\n });\n }\n });\n });\n\n const forexHeaderMenuTabs = document.querySelectorAll('.forex-popular-pairs-inline-header .btn-tag');\n forexHeaderMenuTabs.forEach((tab) =>\n {\n tab.addEventListener('click', function ()\n {\n forexHeaderMenuTabs.forEach((t) =>\n {\n t.classList.remove('active');\n });\n this.classList.add('active');\n\n const tabId = this.getAttribute('data-type');\n const tables = document.querySelectorAll('.forex-popular-pairs-table-tab');\n tables.forEach((table) =>\n {\n table.classList.remove('active');\n });\n\n const activeTable = document.getElementById(tabId);\n activeTable.classList.add('active');\n });\n });\n\n const forexCrossRateHeaderInput = document.querySelector('.forex-cross-rate-chart .checkbox-marker-input');\n if (forexCrossRateHeaderInput)\n {\n const forexCrossRateHeaderInputWrapper = document.querySelector('.forex-cross-rate-chart .checkbox-marker-input-wrapper');\n forexCrossRateHeaderInput.addEventListener('click', (e) =>\n {\n e.preventDefault();\n forexCrossRateHeaderInputWrapper.classList.toggle('active');\n });\n }\n});\n","document.addEventListener('DOMContentLoaded', () =>\n{\n const shortDescription = document.querySelector('.short-description');\n const fullDescription = document.querySelector('.full-description');\n const toggleDescBtn = document.querySelector('.less-more');\n\n function toggleDescription(event)\n {\n event.preventDefault();\n shortDescription.style.display = 'none';\n fullDescription.style.display = 'inline';\n toggleDescBtn.style.display = 'none';\n }\n\n if (toggleDescBtn)\n {\n toggleDescBtn.addEventListener('click', toggleDescription);\n }\n});\n","document.addEventListener('DOMContentLoaded', () =>\n{\n const toggleNews = document.querySelector('[data-app=\"news_section\"] .toggle input');\n const pressRelease = document.querySelector('[data-app=\"news_section\"] .press_release');\n const allNews = document.querySelector('[data-app=\"news_section\"] .all_news');\n\n if (!toggleNews || !pressRelease || !allNews) return;\n\n const savedToggleState = localStorage.getItem('toggleNewsState');\n\n if (savedToggleState)\n {\n toggleNews.checked = JSON.parse(savedToggleState);\n if (toggleNews.checked)\n {\n pressRelease.classList.remove('hidden');\n pressRelease.classList.add('show');\n allNews.classList.add('hidden');\n }\n else\n {\n pressRelease.classList.remove('show');\n pressRelease.classList.add('hidden');\n allNews.classList.remove('hidden');\n allNews.classList.add('show');\n }\n }\n\n if (toggleNews)\n {\n toggleNews.addEventListener('change', () =>\n {\n if (toggleNews.checked)\n {\n pressRelease.classList.remove('hidden');\n pressRelease.classList.add('show');\n allNews.classList.add('hidden');\n }\n else\n {\n pressRelease.classList.remove('show');\n pressRelease.classList.add('hidden');\n allNews.classList.remove('hidden');\n allNews.classList.add('show');\n }\n localStorage.setItem('toggleNewsState', toggleNews.checked);\n });\n }\n});\n","document.addEventListener('DOMContentLoaded', () =>\n{\n // Press Release Toggle\n const togglePRS = document.querySelector('[data-app=\"news_section\"] .toggle.filter-prs input');\n if (togglePRS)\n {\n togglePRS.addEventListener('change', () =>\n {\n const filter = togglePRS.checked ? 'on' : 'off';\n const currentURL = new URL(window.location.href);\n currentURL.searchParams.delete('page');\n currentURL.searchParams.set('prs', filter);\n window.history.replaceState({}, document.title, currentURL.toString());\n\n // Refresh the page\n window.location.reload();\n\n });\n }\n});\n","import '../../../watchlist/src/app';\n\ndocument.addEventListener('DOMContentLoaded', () =>\n{\n const historicalTradeBarList = document.getElementById('historical-trade-bar-list');\n if (historicalTradeBarList)\n {\n if (historicalTradeBarList.querySelector('.title'))\n {\n historicalTradeBarList.querySelector('.title').addEventListener('click', (e) =>\n {\n e.preventDefault();\n historicalTradeBarList.querySelector('.list').classList.toggle('active');\n });\n\n document.addEventListener('click', (event) =>\n {\n if (!historicalTradeBarList.contains(event.target))\n {\n const list = historicalTradeBarList.querySelector('.list');\n if (list.classList.contains('active'))\n {\n list.classList.remove('active');\n }\n }\n });\n }\n }\n});\n","const axios = require('axios');\n\ndocument.addEventListener('DOMContentLoaded', () =>\n{\n function showDialog(element, width)\n {\n element.style.width = `${width}px`;\n element.style.display = 'block';\n }\n\n function vote(obj, direction)\n {\n const bbVotePopup = document.getElementById('bb-vote-popup');\n bbVotePopup.innerHTML = 'Loading...';\n showDialog(bbVotePopup, 500);\n\n const bbId = obj.getAttribute('bb_id');\n const threadId = obj.getAttribute('thread_id');\n const number = obj.getAttribute('number');\n const hash = obj.getAttribute('hash');\n\n const dataString = `bb_id=${bbId}&thread_id=${threadId}&number=${number}&hash=${hash}&vote=${direction}`;\n const theLink = '/common/bb/vote';\n\n axios.post(theLink, dataString, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }).then((response) =>\n {\n bbVotePopup.innerHTML = response.data;\n showDialog(bbVotePopup, 500);\n }).catch((error) =>\n {\n console.error(error);\n });\n }\n\n document.querySelectorAll('.bb-vote-up').forEach((button) =>\n {\n button.addEventListener('click', () =>\n {\n vote(button, 'up');\n });\n });\n\n document.querySelectorAll('.bb-vote-down').forEach((button) =>\n {\n button.addEventListener('click', () =>\n {\n vote(button, 'down');\n });\n });\n});\n","const DEFAULT_LOCALE = 'en_GB';\n\nconst FALLBACK_LOCALES = {\n en_CA: ['en_US', 'en_GB'],\n en_AU: ['en_US', 'en_GB'],\n // Add other specific fallbacks for each language as needed\n // Default fallback is en_GB\n};\n\nclass BaseTranslationService\n{\n setLocale(locale)\n {\n this.locale = this.getValidLocale(locale);\n }\n\n setLangFile(file)\n {\n this.lang = file;\n }\n\n getLangFile()\n {\n return this.lang ? this.lang : null;\n }\n\n getResource()\n {\n return this.lang[this.locale];\n }\n\n getValidLocale(locale)\n {\n const localesToCheck = [locale, ...(FALLBACK_LOCALES[locale] || [])];\n const validLocale = localesToCheck.find((fallbackLocale) => (this.lang).hasOwnProperty(fallbackLocale));\n return validLocale || DEFAULT_LOCALE;\n }\n\n getLocale()\n {\n return this.locale ? this.locale : DEFAULT_LOCALE;\n }\n\n getTranslation(txt)\n {\n if ((this.lang[this.locale]).hasOwnProperty(txt))\n {\n return this.lang[this.locale][txt];\n }\n if ((this.lang[this.locale].general).hasOwnProperty(txt))\n {\n return this.lang[this.locale].general[txt];\n }\n\n return txt;\n }\n\n}\n\nexport default BaseTranslationService;\n","import translations from './translations.json';\nimport BaseTranslationService from '../../../../elements/translator/js/BaseTranslationService';\n\nclass TranslationService extends BaseTranslationService\n{\n constructor(locale)\n {\n super();\n this.setLangFile(translations);\n this.setLocale(locale);\n }\n\n getTranslations()\n {\n const translationObject = {};\n\n if (translations[this.locale])\n {\n return translations[this.locale];\n }\n return translationObject;\n }\n}\n\nexport default TranslationService;\n","import TranslationService from '../resources/TranslationService';\n\nclass MonitorModal\n{\n constructor()\n {\n this.modal = null;\n this.actionButtons = null;\n this.isDisabled = false;\n\n // eslint-disable-next-line no-undef\n this.lang = new TranslationService(ADVFN.LOCALE);\n }\n\n init()\n {\n if (!this.modal)\n {\n console.error('modal not found');\n return;\n }\n this.bindOpenButton();\n this.bindCloseButton();\n this.initialize();\n\n }\n\n setSymbols(symbols)\n {\n if (typeof symbols === 'string')\n {\n this._symbols = symbols.split('|');\n }\n else\n {\n this._symbols = symbols.map((item) => item.display_symbol);\n }\n }\n\n bindOpenButton()\n {}\n\n initialize()\n {}\n\n destroyState()\n {}\n\n saveAndClose()\n {}\n\n setMonitorID(id)\n {\n this.monitorID = Number.isNaN(parseInt(id, 10)) ? id : parseInt(id, 10);\n }\n\n getMonitorID()\n {\n return this.monitorID;\n }\n\n bindCloseButton()\n {\n const modalCloseButton = this.modal.querySelectorAll('.monitor-modal-close');\n if (modalCloseButton.length)\n {\n modalCloseButton.forEach((item) =>\n {\n item.addEventListener('click', () =>\n {\n this.modal.classList.remove('active');\n this.destroyState();\n });\n });\n\n }\n\n this.modal.addEventListener('click', (e) =>\n {\n if (e.target === this.modal)\n {\n this.modal.classList.remove('active');\n this.destroyState();\n }\n });\n\n const modalCloseAndSaveButton = this.modal.querySelector('.footer button.save-and-close');\n if (modalCloseAndSaveButton)\n {\n modalCloseAndSaveButton.addEventListener('click', () =>\n {\n this.modal.classList.remove('active');\n this.destroyState();\n this.saveAndClose();\n });\n }\n\n const btnCancel = this.modal.querySelector('button.cancel');\n if (btnCancel)\n {\n btnCancel.addEventListener('click', () =>\n {\n this.modal.classList.remove('active');\n this.destroyState();\n });\n }\n }\n\n addLoading(element = null)\n {\n return new Promise((resolve) =>\n {\n const loading = document.createElement('div');\n loading.classList.add('modal-loading');\n\n const spinner = document.createElement('span');\n spinner.classList.add('fa', 'fa-spinner', 'fa-spin');\n\n loading.appendChild(spinner);\n if (!element)\n {\n this.modal.querySelector('.modal-box').appendChild(loading);\n }\n else\n {\n element.appendChild(loading);\n }\n\n setTimeout(() =>\n {\n resolve();\n }, 100);\n });\n }\n\n removeLoading(element = null)\n {\n const loading = element ? element.querySelector('.modal-loading') : this.modal.querySelector('.modal-box .modal-loading');\n if (loading)\n {\n loading.remove();\n }\n }\n\n toggle()\n {\n this.modal.classList.toggle('active');\n }\n\n updatePageTitle(name)\n {\n const { title } = document;\n const parts = title.split(' - ');\n if (parts[0])\n {\n parts[0] = name;\n document.title = parts.join(' - ');\n }\n else\n {\n console.warn('Title format is not as expected. No changes made.');\n }\n }\n\n disableAction()\n {\n if (this.actionButtons && this.actionButtons.length)\n {\n this.actionButtons.forEach((item) =>\n {\n item.setAttribute('disabled', 'disabled');\n });\n }\n\n this.isDisabled = true;\n }\n\n enableAction()\n {\n if (this.actionButtons && this.actionButtons.length)\n {\n this.actionButtons.forEach((item) =>\n {\n item.removeAttribute('disabled');\n });\n }\n\n this.isDisabled = false;\n }\n}\n\nexport default MonitorModal;\n","import axios from 'axios';\n\nexport const BASE_ENDPOINT = '/common/api/watchlist';\n\nclass CustomError extends Error\n{\n constructor(message, code)\n {\n super();\n this.message = message;\n this.code = code;\n }\n}\n\n/**\n * @template P, O\n * @param {string} endpoint\n * @param {string} method\n * @param {P} params\n * @returns {Promise|null}\n */\nexport const getData = async (endpoint, method, params) =>\n{\n let response;\n let code = -1;\n let reason = 'unknown';\n\n if (method === 'GET')\n {\n response = await axios.get(endpoint, params);\n }\n else if (method === 'POST')\n {\n const formData = new FormData();\n\n Object.keys(params).forEach((key) =>\n {\n if (typeof params[key] === 'object')\n {\n params[key].forEach((item) =>\n {\n formData.append(`${key}[]`, item);\n });\n }\n else\n {\n formData.append(key, params[key]);\n }\n });\n\n response = await axios.post(endpoint, formData);\n }\n else\n {\n throw new CustomError(\n 'unknown method',\n code,\n );\n }\n const { status, data } = response;\n if (status === 200)\n {\n if (data.status === 'success')\n {\n return data.result;\n }\n\n if (data.status === 'fail')\n {\n code = data.result.errorCode;\n reason = data.result.errorMessage;\n }\n }\n\n throw new CustomError(\n reason,\n code,\n );\n};\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {AddSymbolRequest} params\n * @returns {Promise|null}\n */\nconst addSymbol = async (params) => getData(`${BASE_ENDPOINT}/AddSymbol`, 'POST', params);\n\nexport default addSymbol;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} AddSymbolRequest\n * @property {integer} id\n * @property {string} symbol\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * message: string\n * };\n * }} AddSymbolResponse\n */\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {RemoveSymbolRequest} params\n * @returns {Promise|null}\n */\nconst removeSymbol = async (params) => getData(`${BASE_ENDPOINT}/RemoveSymbol`, 'POST', params);\n\nexport default removeSymbol;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} RemoveSymbolRequest\n * @property {string} name\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * newList: string\n * };\n * }} RemoveSymbolResponse\n */\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {GetListRequest} params\n * @returns {Promise|null}\n */\nconst getList = async (params) =>\n{\n let endpoint = `${BASE_ENDPOINT}/GetList`;\n if (params)\n {\n const query = Object.keys(params)\n .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)\n .join('&');\n\n endpoint += `?${query}`;\n }\n return getData(endpoint, 'GET', params);\n};\n\nexport default getList;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} GetListRequest\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * defaultList: number,\n * lists: [\n * {\n * columns: array,\n * id: number,\n * name: string,\n * maxSymbols: number,\n * symbols: array,\n * symbolsData: array,\n * symbolCount: number,\n * }\n * ];\n * };\n * }} GetListResponse\n */\n","import md5 from 'md5';\nimport MonitorModal from './MonitorModal';\nimport addSymbol from '../api/AddSymbol';\nimport removeSymbol from '../api/RemoveSymbol';\nimport getList from '../api/GetList';\n\nconst axios = require('axios');\n\nconst API_ENDPOINT = '/common/api/trending/GetForSite';\n\nclass MonitorAddSymbolModal extends MonitorModal\n{\n constructor()\n {\n super();\n this.modal = document.querySelector('.monitor-modal-container[data-type=\"monitor-add-symbol-modal\"]');\n this.content = this.modal.querySelector('.content table');\n this._trendingList = null;\n this._searchResults = {};\n this._setSelectedMarketType();\n this.mode = 'async';\n this._inputTimeout = null;\n }\n\n bindOpenButton()\n {\n const _this = this;\n this.actionButtons = document.querySelectorAll('#page-monitor-delight .modal-button[data-type=\"monitor-add-symbol-modal\"]');\n if (this.actionButtons.length && !this.isDisabled)\n {\n this.actionButtons.forEach((item) =>\n {\n item.addEventListener('click', () =>\n {\n _this.open();\n });\n });\n }\n\n const noSymbolsButton = document.getElementById('no-symbols-btn');\n if (noSymbolsButton)\n {\n noSymbolsButton.addEventListener('click', () =>\n {\n _this.open();\n _this.mode = 'sync';\n });\n }\n }\n\n initialize()\n {\n this._bindSearchInput();\n this._bindMarketList();\n }\n\n clearState()\n {\n }\n\n destroyState()\n {\n this._inputBox.value = '';\n this._selectedType = 'all';\n this._selectMarketListButton(this._selectedType);\n }\n\n open()\n {\n this._loadTrendingStocks();\n this.modal.classList.add('active');\n }\n\n saveAndClose()\n {\n window.location.reload();\n }\n\n _bindMarketList()\n {\n const _this = this;\n const buttons = this.modal.querySelectorAll('.markets-list li button');\n buttons.forEach((btn) =>\n {\n btn.addEventListener('click', () =>\n {\n const selectedItem = _this.modal.querySelector('.markets-list li.selected');\n selectedItem.classList.remove('selected');\n\n btn.parentNode.classList.add('selected');\n\n _this._setSelectedMarketType();\n if (this._selectedType === 'my-symbols')\n {\n this._filterMySymbols();\n }\n else\n {\n this.search();\n }\n this._currentSearch = '';\n });\n });\n }\n\n /**\n * Sets selected market data-type\n */\n _setSelectedMarketType()\n {\n const btn = this.modal.querySelector('.markets-list li.selected button');\n this._selectedType = btn.getAttribute('data-type');\n }\n\n /**\n * Enable the Market List buttons when the user starts typing in the search box.\n */\n _activateDisabledMarketListButtons()\n {\n const buttons = this.modal.querySelectorAll('.markets-list li button[disabled]');\n buttons.forEach((button) =>\n {\n button.removeAttribute('disabled');\n });\n }\n\n /**\n * Disable the Market List buttons when the search box is empty.\n */\n _deactivateMarketListButtons()\n {\n const buttons = this.modal.querySelectorAll('.markets-list li button');\n buttons.forEach((button) =>\n {\n if (!['all', 'my-symbols'].includes(button.getAttribute('data-type')))\n {\n button.setAttribute('disabled', 'disabled');\n }\n });\n }\n\n /**\n * Add \"selected\" class to the market list item when selected\n */\n _selectMarketListButton(type)\n {\n const selectedItem = this.modal.querySelector('.markets-list li.selected');\n if (selectedItem)\n {\n selectedItem.classList.remove('selected');\n }\n\n const btn = this.modal.querySelector(`.markets-list li button[data-type=\"${type}\"]`);\n btn.parentNode.classList.add('selected');\n }\n\n _bindSearchInput()\n {\n this._inputBox = this.modal.querySelector('.search-bar input');\n\n this._inputBox.addEventListener('keyup', () =>\n {\n clearTimeout(this._inputTimeout);\n this._inputTimeout = setTimeout(this.search.bind(this), 500);\n });\n\n this._inputBox.addEventListener('keydown', () =>\n {\n clearTimeout(this._inputTimeout);\n });\n }\n\n search()\n {\n const inputValue = this._inputBox.value.trim();\n\n // if we dont have input value\n if (inputValue === '')\n {\n this._deactivateMarketListButtons();\n\n // if selected type is my-symbols\n if (this._selectedType === 'my-symbols')\n {\n this._filterMySymbols();\n return;\n }\n\n this.clearState();\n this._loadTrendingStocks();\n\n return;\n }\n\n // if selected type is my-symbols\n if (this._selectedType === 'my-symbols')\n {\n this._filterMySymbols();\n return;\n }\n\n this._activateDisabledMarketListButtons();\n\n this._getResults(inputValue)\n .then(({ results }) =>\n {\n if (results.length === 0) return;\n this._loadList(results);\n })\n .catch(() =>\n {\n });\n }\n\n /**\n * Get Search results from API\n */\n _getResults(term)\n {\n return new Promise((resolve, reject) =>\n {\n const key = this._genSearchKey(term);\n\n if (this._searchResults[key])\n {\n this._currentSearch = term;\n\n resolve({\n term,\n results: this._searchResults[key],\n });\n return;\n }\n\n let url = `/common/api/search/SymbolLookup?term=${term}`;\n\n if (this._selectedType !== 'my-symbols')\n {\n url += `&type=${this._selectedType}`;\n }\n\n axios.get(url)\n .then(({ status, data }) =>\n {\n if (status === 200)\n {\n this._currentSearch = term;\n if (data.status === 'success')\n {\n this._searchResults[key] = data.result.results;\n\n resolve({\n term: data.result.term,\n results: data.result.results,\n });\n return;\n }\n\n this._checkForOptions(term)\n .then(({ results }) =>\n {\n this._loadList(results);\n })\n .catch(() =>\n {\n this._loadNotFoundMessage(term);\n });\n return;\n }\n\n reject();\n })\n .catch((error) =>\n {\n reject(error);\n });\n });\n }\n\n /**\n * load Trending Stocks when user is on \"All\" category\n */\n _loadTrendingStocks()\n {\n const _this = this;\n\n if (_this._trendingList)\n {\n _this._loadList(_this._trendingList);\n return;\n }\n\n axios.get(`${API_ENDPOINT}`)\n .then(({ status, data }) =>\n {\n if (status === 200)\n {\n if (data.status === 'success')\n {\n _this._trendingList = data.result.trending_stocks;\n _this._loadList(_this._trendingList);\n }\n }\n })\n .catch(() => { });\n }\n\n _checkForOptions(term)\n {\n const msg = this.lang.getTranslation('searching_options');\n this._loadMessage(msg.replace('{term}', term), 'no-symbol-found');\n\n const url = 'common/api/quote/GetQuote';\n const formData = new FormData();\n\n formData.append('symbols[]', term);\n\n return new Promise((resolve, reject) =>\n {\n axios.post(url, formData)\n .then(({ status, data }) =>\n {\n if (status === 200 && data.status === 'success' && data.result.quotes.length)\n {\n resolve({\n term,\n results: data.result.quotes,\n });\n }\n\n reject(new Error('No quotes found or request was not successful'));\n })\n .catch((error) =>\n {\n reject(error);\n });\n });\n }\n\n /**\n * Generates a key for more efficient caching\n */\n _genSearchKey(term)\n {\n return md5(term + this._selectedType);\n }\n\n _loadList(list)\n {\n const _this = this;\n _this.content.innerHTML = '';\n\n list.forEach((stock) =>\n {\n const item = _this._createListItem(stock);\n _this.content.appendChild(item);\n });\n }\n\n _loadNotFoundMessage(term)\n {\n this._loadMessage(`${this.lang.getTranslation('no_symbol_found')}: ${term}`, 'no-symbol-found');\n }\n\n _loadMessage(text, className)\n {\n this.content.innerHTML = '';\n\n const msg = document.createElement('div');\n msg.classList.add(className);\n msg.innerText = text;\n\n this.content.appendChild(msg);\n }\n\n _createListItem(item)\n {\n const displaySymbol = item.display_symbol ? item.display_symbol : item.displaySymbol;\n const feedSymbol = item.feed_symbol ? item.feed_symbol : item.feedSymbol;\n\n const itemRow = document.createElement('tr');\n itemRow.classList.add('result-row');\n\n // Create logo\n const colLogo = document.createElement('td');\n colLogo.classList.add('col-logo');\n const img = document.createElement('img');\n img.setAttribute('src', item.logo);\n img.setAttribute('alt', item.short_name);\n colLogo.appendChild(img);\n\n // Create Title\n const colTitle = document.createElement('td');\n colTitle.classList.add('col-title');\n\n const market = document.createElement('span');\n if (item.market.symbol)\n {\n market.innerText = item.market.symbol;\n }\n else if (item.market && typeof item.market === 'string')\n {\n market.innerText = item.market;\n }\n\n const symbol = document.createElement('h3');\n symbol.innerText = item.symbol;\n\n const title = document.createElement('div');\n title.innerText = item.name;\n\n symbol.appendChild(market);\n colTitle.appendChild(symbol);\n colTitle.appendChild(title);\n\n // Create Actions\n const colAction = document.createElement('td');\n colAction.classList.add('col-action');\n const btn = document.createElement('button');\n btn.setAttribute('data-symbol', displaySymbol);\n btn.setAttribute('data-feed-symbol', feedSymbol);\n this._bindListButton(btn);\n colAction.appendChild(btn);\n\n itemRow.appendChild(colLogo);\n itemRow.appendChild(colTitle);\n itemRow.appendChild(colAction);\n\n if (this._symbols.includes(displaySymbol))\n {\n itemRow.classList.add('selected');\n }\n\n return itemRow;\n }\n\n _bindListButton(btn)\n {\n const _this = this;\n btn.addEventListener('click', () =>\n {\n const row = btn.parentNode.parentNode;\n const displaySymbol = btn.getAttribute('data-symbol');\n const symbol = btn.getAttribute('data-feed-symbol');\n if (row.classList.contains('selected'))\n {\n // remove from list\n _this.addLoading().then(() =>\n {\n _this._removeSymbol(symbol, displaySymbol);\n row.classList.remove('selected');\n if (this._selectedType === 'my-symbols')\n {\n row.remove();\n }\n });\n }\n else\n {\n // add into list\n _this.addLoading().then(() =>\n {\n _this._addSymbol(symbol, displaySymbol);\n row.classList.add('selected');\n });\n }\n });\n }\n\n _showMySymbols()\n {\n if (this.mode === 'async')\n {\n const currentApp = window.jsSession._currentApp;\n this._loadList(currentApp._config.symbols);\n }\n else\n {\n getList({\n id: this.monitorID,\n }).then((result) =>\n {\n const symbols = result.list.symbolsData;\n this._loadList(Object.values(symbols));\n });\n }\n }\n\n _filterMySymbols()\n {\n const inputValue = this._inputBox.value.trim();\n\n this._showMySymbols();\n\n // if there's a value in input we want to filter my-symbols according to input value\n if (inputValue !== '')\n {\n const list = this.content.querySelectorAll('tr');\n list.forEach((item) =>\n {\n const symbol = item.querySelector('.col-title h3').innerText.toLowerCase();\n const name = item.querySelector('.col-title div').innerText.toLowerCase();\n\n if (symbol.includes(inputValue.toLowerCase()) || name.includes(inputValue.toLowerCase()))\n {\n item.classList.remove('hidden');\n }\n else\n {\n item.classList.add('hidden');\n }\n });\n }\n }\n\n _addSymbol(symbol, displaySymbol)\n {\n if (this.mode === 'async')\n {\n const currentApp = window.jsSession._currentApp;\n currentApp.handleAddSymbol(symbol);\n this.removeLoading();\n }\n else\n {\n addSymbol({\n id: this.monitorID,\n symbol,\n }).then(() =>\n {\n this.removeLoading();\n });\n }\n\n this._symbols.push(displaySymbol);\n }\n\n _removeSymbol(symbol, displaySymbol)\n {\n if (this.mode === 'async')\n {\n const currentApp = window.jsSession._currentApp;\n currentApp.handleRemoveSymbol(symbol);\n this.removeLoading();\n }\n else\n {\n removeSymbol({\n id: this.monitorID,\n symbol,\n }).then(() =>\n {\n this.removeLoading();\n });\n }\n\n const index = this._symbols.indexOf(displaySymbol);\n if (index > -1)\n {\n this._symbols.splice(index, 1);\n }\n }\n}\n\nexport default MonitorAddSymbolModal;\n","import columns from './columns.json';\nimport BaseTranslationService from '../../../../elements/translator/js/BaseTranslationService';\n\nclass ColumnsTranslationService extends BaseTranslationService\n{\n constructor(locale)\n {\n super();\n this.setLangFile(columns);\n this.setLocale(locale);\n }\n\n getColumnTranslations()\n {\n const translationObject = {};\n\n if (columns[this.locale])\n {\n return columns[this.locale];\n }\n return translationObject;\n }\n}\n\nexport default ColumnsTranslationService;\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {UpdateColumnsRequest} params\n * @returns {Promise|null}\n */\nconst updateColumns = async (params) => getData(`${BASE_ENDPOINT}/UpdateColumns`, 'POST', params);\n\nexport default updateColumns;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} UpdateColumnsRequest\n * @property {number} id\n * @property {array} cols\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * columns: {\n * id: number,\n * name: string\n * };\n * };\n * }} UpdateColumnsResponse\n */\n","import MonitorModal from './MonitorModal';\nimport ColumnsTranslationService from '../resources/ColumnsTranslationService';\nimport updateColumns from '../api/UpdateColumns';\n\nclass MonitorChangeColumnsModal extends MonitorModal\n{\n constructor()\n {\n super();\n this.modal = document.querySelector('.monitor-modal-container[data-type=\"monitor-change-columns-modal\"]');\n this.content = this.modal.querySelector('.content');\n this._sortable = this.content.querySelector('#sortable');\n this._list = this.content.querySelector('.box-left ul');\n\n // eslint-disable-next-line no-undef\n const columnsTranslationService = new ColumnsTranslationService(ADVFN.LOCALE);\n this._columns = columnsTranslationService.getColumnTranslations();\n }\n\n setColumns(cols)\n {\n if (typeof cols === 'string')\n {\n this._monitorColumns = cols.split(',').map((str) => parseInt(str, 10));\n }\n else\n {\n this._monitorColumns = cols;\n }\n }\n\n init()\n {\n super.init();\n if (this.modal.classList.contains('mobile'))\n {\n this._initializeMobile();\n }\n else\n {\n this._initializeDesktop();\n }\n }\n\n _initializeDesktop()\n {\n this._bindSaveChangesButton();\n }\n\n _initializeMobile()\n {\n this._mobile = window.MonitorDelight.monitorChangeColumnsModalMobile;\n this._mobile.setColumns(this._monitorColumns);\n this._mobile.setMonitorID(this.monitorID);\n this._mobile.init();\n }\n\n refresh(id, cols)\n {\n if (this.modal.classList.contains('mobile'))\n {\n this._mobile.destroyState();\n this._mobile.setColumns(cols);\n this._mobile.setMonitorID(id);\n }\n else\n {\n this.destroyState();\n this.setMonitorID(id);\n this.setColumns(cols);\n }\n }\n\n destroyState()\n {\n if (this.modal.classList.contains('mobile'))\n {\n this._mobile.destroyState();\n }\n else\n {\n this._list.innerHTML = '';\n this._sortable.innerHTML = '';\n }\n }\n\n bindOpenButton()\n {\n const _this = this;\n this.actionButtons = document.querySelectorAll('#page-monitor-delight .modal-button[data-type=\"monitor-change-columns-modal\"]');\n\n if (this.actionButtons.length && !this.isDisabled)\n {\n this.actionButtons.forEach((item) =>\n {\n item.addEventListener('click', () =>\n {\n _this.modal.classList.add('active');\n _this.initializeState();\n });\n });\n }\n }\n\n initializeState()\n {\n if (this.modal.classList.contains('mobile'))\n {\n this._mobile.bindCheckboxes();\n }\n else\n {\n this._bindCheckboxes();\n this._enableSorting();\n }\n }\n\n /**\n * bind save button and on click collect and send data to UpdateColumns endpoint\n */\n _bindSaveChangesButton()\n {\n const _this = this;\n _this.modal.querySelector('button.save').addEventListener('click', () =>\n {\n _this.addLoading().then(() =>\n {\n const listItems = _this._sortable.querySelectorAll('li');\n const dataKeys = [];\n\n listItems.forEach((item) =>\n {\n const dataKey = item.getAttribute('data-key');\n dataKeys.push(parseInt(dataKey, 10));\n });\n\n _this._monitorColumns = dataKeys;\n _this._updateColumns().then(() =>\n {\n this.modal.classList.remove('active');\n this.destroyState();\n // refresh monitor\n const currentApp = window.jsSession._currentApp;\n currentApp.handleRefresh();\n\n _this.removeLoading();\n });\n });\n });\n }\n\n async _updateColumns()\n {\n const cols = [];\n this._monitorColumns.forEach((value) =>\n {\n cols.push(value);\n });\n return updateColumns({\n id: this.monitorID,\n cols,\n });\n }\n\n _bindCheckboxes()\n {\n const _this = this;\n\n // eslint-disable-next-line guard-for-in,no-restricted-syntax\n for (const k in _this._columns)\n {\n const key = parseInt(k, 10);\n const item = _this._columns[key];\n const title = document.createElement('span');\n title.classList.add('title');\n title.innerText = item;\n\n const checkbox = document.createElement('span');\n checkbox.classList.add('checkbox');\n checkbox.setAttribute('data-col', key);\n checkbox.addEventListener('click', () =>\n {\n if (checkbox.classList.contains('checked'))\n {\n checkbox.classList.remove('checked');\n\n // remove item\n _this._removeSortableListItem(key);\n }\n else\n {\n checkbox.classList.add('checked');\n\n // create item\n _this._createSortableListItem(item, key);\n }\n });\n\n const control = document.createElement('div');\n control.classList.add('control');\n\n const listItem = document.createElement('li');\n\n if (this._monitorColumns.indexOf(key) !== -1)\n {\n checkbox.classList.add('checked');\n listItem.setAttribute('data-ord', 1);\n }\n\n control.appendChild(checkbox);\n control.appendChild(title);\n listItem.appendChild(control);\n\n _this._list.appendChild(listItem);\n }\n }\n\n _bindRemoveBtn(item)\n {\n const _this = this;\n item.addEventListener('click', () =>\n {\n const key = item.parentNode.getAttribute('data-key');\n _this._removeSortableListItem(key);\n _this._list.querySelector(`.checkbox[data-col=\"${key}\"]`).classList.remove('checked');\n });\n }\n\n _enableSorting()\n {\n const _this = this;\n\n _this._monitorColumns.forEach((key) =>\n {\n if (key === 44) return;\n _this._createSortableListItem(_this._columns[key], key);\n });\n }\n\n _createSortableListItem(name, key)\n {\n const icon = document.createElement('span');\n icon.classList.add('icon-btn', 'icon-reorder');\n\n const title = document.createElement('span');\n title.classList.add('title');\n title.innerText = name;\n\n const removeBtn = document.createElement('span');\n removeBtn.classList.add('icon-btn');\n removeBtn.classList.add('icon-close-16');\n removeBtn.setAttribute('data-tool', 'remove');\n this._bindRemoveBtn(removeBtn);\n\n const li = document.createElement('li');\n li.appendChild(icon);\n li.appendChild(title);\n li.appendChild(removeBtn);\n li.setAttribute('draggable', true);\n li.setAttribute('data-key', key);\n this._bindDrag(li);\n\n this._sortable.appendChild(li);\n }\n\n _removeSortableListItem(key)\n {\n this._sortable.querySelector(`li[data-key=\"${key}\"]`).remove();\n }\n\n _bindDrag(item)\n {\n const _this = this;\n const scrollableContainer = _this._sortable;\n\n item.addEventListener('dragstart', (event) =>\n {\n _this.draggingElement = item;\n item.classList.add('active');\n event.dataTransfer.effectAllowed = 'move';\n });\n\n item.addEventListener('dragover', (event) =>\n {\n event.preventDefault();\n\n const scrollSpeed = 10; // Adjust the scroll speed as needed\n const scrollThreshold = 20; // Distance from the top or bottom to start scrolling\n\n // Scroll up if near the top\n if (event.clientY < scrollableContainer.getBoundingClientRect().top + scrollThreshold)\n {\n scrollableContainer.scrollTop -= scrollSpeed;\n }\n // Scroll down if near the bottom\n else if (event.clientY > scrollableContainer.getBoundingClientRect().bottom - scrollThreshold)\n {\n scrollableContainer.scrollTop += scrollSpeed;\n }\n\n const targetElement = event.target.closest('li');\n if (targetElement && targetElement !== _this.draggingElement)\n {\n const rect = targetElement.getBoundingClientRect();\n const nextElement = (event.clientY - rect.top > rect.height / 2) ? targetElement.nextSibling : targetElement;\n _this._sortable.insertBefore(_this.draggingElement, nextElement);\n }\n });\n\n item.addEventListener('dragend', () =>\n {\n _this.draggingElement.classList.remove('active');\n _this.draggingElement = null;\n });\n }\n}\n\nexport default MonitorChangeColumnsModal;\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {GetListsRequest} params\n * @returns {Promise|null}\n */\nconst getLists = async (params) =>\n{\n let endpoint = `${BASE_ENDPOINT}/GetLists`;\n if (params)\n {\n const query = Object.keys(params)\n .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)\n .join('&');\n\n endpoint += `?${query}`;\n }\n return getData(endpoint, 'GET', params);\n};\n\nexport default getLists;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} GetListsRequest\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * defaultList: number,\n * lists: [\n * {\n * id: number,\n * name: string,\n * symbolCount: number,\n * }\n * ];\n * };\n * }} GetListsResponse\n */\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {CreateMonitorRequest} params\n * @returns {Promise|null}\n */\nconst createMonitor = async (params) => getData(`${BASE_ENDPOINT}/CreateMonitor`, 'POST', params);\n\nexport default createMonitor;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} CreateMonitorRequest\n * @property {string} name\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * newList: {\n * id: number,\n * name: string,\n * symbolCount: number,\n * };\n * };\n * }} CreateMonitorResponse\n */\n","import MonitorModal from './MonitorModal';\nimport getLists from '../api/GetLists';\nimport createMonitor from '../api/CreateMonitor';\n\nclass MonitorSelector extends MonitorModal\n{\n constructor()\n {\n super();\n this._box = document.querySelector('#monitor-selector');\n }\n\n init()\n {\n this.modal = document.querySelector('.monitor-modal-container[data-type=\"monitor-add-monitor-modal\"]');\n this.content = this.modal.querySelector('.content');\n this._input = this.content.querySelector('input');\n super.init();\n }\n\n initialize()\n {\n this.buildList();\n this._bindSaveChangesButton();\n }\n\n buildList()\n {\n const _this = this;\n const ul = this._box.querySelector('ul');\n this.addLoading(ul).then(() =>\n {\n this.getLists().then((result) =>\n {\n const { lists } = result;\n _this._createList(lists);\n _this._updateSelectedItem();\n _this.removeLoading(ul);\n });\n });\n\n }\n\n async getLists()\n {\n return getLists({\n defaults: true,\n });\n }\n\n _createList(items)\n {\n this._box.querySelector('ul').innerHTML = '';\n items.forEach((item) =>\n {\n this._createListItem(item);\n });\n }\n\n bindOpenButton()\n {\n const _this = this;\n\n this.bindDropdownOpen();\n\n const monitorOpenButton = document.querySelector('#page-monitor-delight .modal-button[data-type=\"monitor-add-monitor-modal\"]');\n if (monitorOpenButton)\n {\n monitorOpenButton.addEventListener('click', () =>\n {\n _this._box.classList.remove('active');\n _this.modal.classList.add('active');\n });\n }\n }\n\n bindCloseButton()\n {\n super.bindCloseButton();\n this.bindDropdownClose();\n }\n\n bindDropdownOpen()\n {\n const monitorSelector = this._box.querySelector('[data-type=\"toggle\"]');\n if (monitorSelector)\n {\n monitorSelector.addEventListener('click', (e) =>\n {\n e.preventDefault();\n this._toggle();\n });\n }\n }\n\n bindDropdownClose()\n {\n const _this = this;\n document.addEventListener('click', (event) =>\n {\n const clickedElement = event.target;\n if (clickedElement !== _this._box && !_this._box.contains(clickedElement))\n {\n if (_this._box.classList.contains('active'))\n {\n _this._toggle();\n }\n }\n });\n }\n\n destroyState()\n {\n this._input.value = '';\n const msg = this._input.parentNode.querySelector('span.error-msg');\n if (msg) msg.remove();\n }\n\n _toggle()\n {\n this._box.classList.toggle('active');\n }\n\n _bindSaveChangesButton()\n {\n const _this = this;\n _this.modal.querySelector('button.save').addEventListener('click', () =>\n {\n if (_this._input.value !== '')\n {\n const msg = _this._input.parentNode.querySelector('span.error-msg');\n if (msg) msg.remove();\n\n this.addLoading().then(() =>\n {\n _this._createMonitor()\n .then((result) =>\n {\n const item = result.newList;\n this.modal.classList.remove('active');\n this.destroyState();\n this.setMonitorID(item.id);\n this._createListItem(item);\n this._openMonitor(item.id, item.name, true);\n this._updateURLParameter(item.id);\n this._updateTitle(item.name);\n this._updateSelectedItem();\n this.removeLoading();\n }).catch((error) =>\n {\n if (error.code === 604)\n {\n this._showError(error.message);\n console.log(error.message);\n }\n });\n });\n }\n else\n {\n this._showError(this.lang.getTranslations('invalid_name_msg'));\n }\n });\n }\n\n _showError(error)\n {\n this.removeLoading();\n const msg = document.createElement('span');\n msg.innerText = error;\n msg.classList.add('error-msg');\n this._input.parentNode.appendChild(msg);\n }\n\n _createMonitor()\n {\n return createMonitor({\n name: this._input.value,\n });\n }\n\n _createListItem(params)\n {\n const li = document.createElement('li');\n const button = document.createElement('button');\n button.classList.add('btn');\n button.classList.add('link');\n button.setAttribute('data-key', params.id);\n button.setAttribute('data-fixed', Number.isNaN(parseFloat(params.id)));\n button.innerText = params.name;\n li.appendChild(button);\n this.bindLinkItem(button);\n const ul = this._box.querySelector('ul');\n ul.appendChild(li);\n }\n\n _bindListButtons()\n {\n const _this = this;\n const links = _this._box.querySelectorAll('.btn.link');\n if (links)\n {\n links.forEach((item) =>\n {\n _this.bindLinkItem(item);\n });\n }\n }\n\n bindLinkItem(item)\n {\n item.addEventListener('click', () =>\n {\n const currentApp = window.jsSession._currentApp;\n currentApp.showLoading();\n\n const id = item.getAttribute('data-key');\n const isFixed = item.getAttribute('data-fixed');\n const title = item.innerText;\n this._toggle();\n setTimeout(() =>\n {\n this._updateMonitor(id, title, isFixed);\n }, 1000);\n });\n }\n\n _updateMonitor(id, title, isFixed = false)\n {\n this.setMonitorID(id);\n this._openMonitor(id, title, false, isFixed);\n this._updateURLParameter(id);\n this._updateTitle(title);\n this._updateSelectedItem();\n this.removeLoading(document.getElementById('page-monitor-delight'));\n }\n\n _openMonitor(id, title, openModal = false, isFixed = false)\n {\n const currentApp = window.jsSession._currentApp;\n currentApp.handleMonitorLoad(id, isFixed);\n\n window.MonitorDelight.monitorEdit.closeMonitorEdit();\n\n if (isFixed !== 'true')\n {\n this._enableActions();\n window.MonitorDelight.monitorChangeColumnsModal.refresh(id, currentApp._config.columns);\n window.MonitorDelight.monitorAddSymbolModal.clearState();\n window.MonitorDelight.monitorAddSymbolModal.setSymbols(currentApp._config.symbols);\n window.MonitorDelight.monitorDeleteModal.setMonitorID(id);\n window.MonitorDelight.monitorUpdateModal.setMonitorID(id);\n window.MonitorDelight.monitorUpdateModal.setValue(title);\n window.MonitorDelight.monitorUpdateModal.refreshInputValue();\n window.MonitorDelight.monitorSettings.setMonitorID(id);\n window.MonitorDelight.monitorSettings._updateSetDefaultListToggleState();\n\n if (window.MonitorDelight.monitorNewsAlertModal)\n {\n window.MonitorDelight.monitorNewsAlertModal.refresh(id);\n }\n\n document.querySelector('.monitor-container').classList.remove('fixed-monitor-container');\n }\n else\n {\n this._disableActions();\n document.querySelector('.monitor-container').classList.add('fixed-monitor-container');\n }\n this._updateUrls(id);\n this.updatePageTitle(title);\n if (!currentApp._config.symbols.length && openModal)\n {\n window.MonitorDelight.monitorAddSymbolModal.open();\n }\n }\n\n _updateUrls(id)\n {\n const links = document.querySelectorAll('#monitor-menu .submenu li a');\n if (links)\n {\n links.forEach((link) =>\n {\n const href = link.getAttribute('href').split('?');\n let url = href[0];\n url += `?mid=${id}`;\n link.setAttribute('href', url);\n });\n }\n }\n\n _updateURLParameter(id)\n {\n const currentURL = new URL(window.location.href);\n\n const urlParams = new URLSearchParams(currentURL.search);\n\n urlParams.set('mid', id);\n\n const updatedUrl = `${currentURL.origin + currentURL.pathname}?${urlParams.toString()}`;\n\n window.history.replaceState({}, '', updatedUrl);\n\n }\n\n _updateTitle(title)\n {\n this._box.querySelector('h3').innerText = title;\n }\n\n _updateItem(id, title)\n {\n this._box.querySelector(`button[data-key=\"${id}\"]`).innerText = title;\n }\n\n _updateSelectedItem()\n {\n const selected = this._box.querySelector('li.selected');\n if (selected)\n {\n selected.classList.remove('selected');\n }\n this._box.querySelector(`button[data-key=\"${this.monitorID}\"]`).parentNode.classList.add('selected');\n }\n\n _disableActions()\n {\n window.MonitorDelight.monitorAddSymbolModal.disableAction();\n window.MonitorDelight.monitorChangeColumnsModal.disableAction();\n window.MonitorDelight.monitorEdit.disableAction();\n window.MonitorDelight.monitorSettings.disableActions();\n window.MonitorDelight.monitorSettingsMobile.disableActions();\n window.MonitorDelight.monitorEditModal.disableAction();\n }\n\n _enableActions()\n {\n window.MonitorDelight.monitorAddSymbolModal.enableAction();\n window.MonitorDelight.monitorChangeColumnsModal.enableAction();\n window.MonitorDelight.monitorEdit.enableAction();\n window.MonitorDelight.monitorSettings.enableActions();\n window.MonitorDelight.monitorSettingsMobile.enableActions();\n window.MonitorDelight.monitorEditModal.enableAction();\n }\n}\n\nexport default MonitorSelector;\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {SetDefaultListRequest} params\n * @returns {Promise|null}\n */\nconst setDefaultList = async (params) => getData(`${BASE_ENDPOINT}/SetDefaultList`, 'POST', params);\n\nexport default setDefaultList;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} SetDefaultListRequest\n * @property {number} id\n * @property {boolean} async\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * listID: number\n * };\n * }} SetDefaultListResponse\n */\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {SetConfigRequest} params\n * @returns {Promise|null}\n */\nconst setConfig = async (params) => getData(`${BASE_ENDPOINT}/SetConfig`, 'POST', params);\n\nexport default setConfig;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} SetConfigRequest\n * @property {string} name\n * @property {number} value\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * config: number\n * };\n * }} SetConfigResponse\n */\n","import setDefaultList from '../api/SetDefaultList';\nimport setConfig from '../api/SetConfig';\n\nclass MonitorSettings\n{\n constructor()\n {\n this._button = document.querySelectorAll('button[data-type=\"monitor-settings-modal\"]');\n this._settingsContainer = document.querySelector('#monitor-settings-container');\n this._actions = document.querySelector('.monitor-actions');\n this.monitorID = null;\n this.defaultMonitorID = null;\n this.theme = null;\n }\n\n init()\n {\n this._bindOpenButton();\n this._bindClose();\n this._initializeToggles();\n this._initializeFullscreenButton();\n this._initializeCSVButton();\n }\n\n /**\n * Sets the currently loaded monitor ID.\n * @param id\n */\n setMonitorID(id)\n {\n this.monitorID = parseInt(id, 10);\n }\n\n /**\n * Sets the Default Monitor ID.\n * @param id\n */\n setDefaultMonitorId(id)\n {\n this.defaultMonitorID = parseInt(id, 10);\n }\n\n /**\n * Sets the currently selected theme name.\n * @param theme\n */\n setTheme(theme)\n {\n this.theme = theme;\n }\n\n disableActions()\n {\n this._settingsContainer.querySelector('.settings').classList.add('fixed-monitor');\n }\n\n enableActions()\n {\n this._settingsContainer.querySelector('.settings').classList.remove('fixed-monitor');\n }\n\n /**\n * FullScreen OPEN Button functionality.\n * On click page will enter into a full-screen mode.\n */\n _initializeFullscreenButton()\n {\n const btn = this._actions.querySelector('button[data-type=\"monitor-fullscreen\"]');\n const container = document.getElementById('page-monitor-delight');\n if (btn)\n {\n document.addEventListener('fullscreenchange', this._exitFullscreenHandler);\n document.addEventListener('webkitfullscreenchange', this._exitFullscreenHandler);\n document.addEventListener('mozfullscreenchange', this._exitFullscreenHandler);\n document.addEventListener('MSFullscreenChange', this._exitFullscreenHandler);\n btn.addEventListener('click', () =>\n {\n if (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement)\n {\n this._exitFullscreenHandler();\n document.exitFullscreen();\n }\n else\n {\n document.getElementById('page-monitor-delight').classList.add('fullscreen');\n if (container.requestFullscreen)\n {\n container.requestFullscreen();\n }\n else if (container.mozRequestFullScreen)\n {\n // Firefox\n container.mozRequestFullScreen();\n }\n else if (container.webkitRequestFullscreen)\n {\n // Chrome, Safari and Opera\n container.webkitRequestFullscreen();\n }\n else if (container.msRequestFullscreen)\n {\n // IE/Edge\n container.msRequestFullscreen();\n }\n }\n });\n }\n }\n\n /**\n * FullScreen EXIT functionality.\n * On click page will enter into a full-screen mode.\n */\n _exitFullscreenHandler()\n {\n if (!document.fullscreenElement && !document.webkitIsFullScreen && !document.mozFullScreen && !document.msFullscreenElement)\n {\n document.getElementById('page-monitor-delight').classList.remove('fullscreen');\n }\n }\n\n /**\n * Download CSV button\n * This will call toCSV() method from jstools session\n */\n _initializeCSVButton()\n {\n const btn = document.querySelector('.monitor-actions button[data-type=\"monitor-csv\"]');\n if (btn)\n {\n btn.addEventListener('click', () =>\n {\n window.jsSession._currentApp.toCSV();\n });\n }\n }\n\n _bindClose()\n {\n window.addEventListener('click', (e) =>\n {\n const buttons = Array.from(this._button);\n const isButtonClicked = buttons.some((button) => button.contains(e.target));\n\n if (!this._settingsContainer.contains(e.target) && !isButtonClicked)\n {\n this._settingsContainer.classList.remove('active');\n }\n });\n\n const closeBtn = this._settingsContainer.querySelector('.settings-close');\n if (closeBtn)\n {\n closeBtn.addEventListener('click', () =>\n {\n this._settingsContainer.classList.remove('active');\n });\n }\n\n this._settingsContainer.addEventListener('click', (e) =>\n {\n if (this._settingsContainer.classList.contains('active'))\n {\n if (e.target === this._settingsContainer)\n {\n this._settingsContainer.classList.remove('active');\n }\n }\n });\n }\n\n /**\n * Initialize settings toggles and bind events.\n */\n _initializeToggles()\n {\n // Set a Default list Toggle\n this._bindSetDefaultListToggle();\n this._updateSetDefaultListToggleState();\n\n // Compact View Toggle\n this._bindCompactViewToggle();\n\n // Config params\n this._bindConfigToggle();\n\n // Theme params\n this._bindThemeToggles();\n this._updateThemeToggleState();\n }\n\n /**\n * Attaches an event listener to handle toggling the \"Set as default list\" setting.\n */\n _bindSetDefaultListToggle()\n {\n const toggleSetDefault = this._settingsContainer.querySelector('#toggle-set-default');\n toggleSetDefault.addEventListener('change', () =>\n {\n const setDefault = toggleSetDefault.checked;\n\n if (setDefault)\n {\n this.addLoading().then(() =>\n {\n setDefaultList({\n id: this.monitorID,\n async: 'true',\n }).then((result) =>\n {\n this.defaultMonitorID = result.listID;\n this.removeLoading();\n this._closeSettings();\n });\n });\n }\n });\n }\n\n _updateSetDefaultListToggleState()\n {\n const toggleSetDefault = this._settingsContainer.querySelector('#toggle-set-default');\n toggleSetDefault.checked = this.monitorID === this.defaultMonitorID;\n }\n\n /**\n * Attaches an event listener to handle toggling the \"Compact View\" setting.\n */\n _bindCompactViewToggle()\n {\n const toggleCompact = this._settingsContainer.querySelector('#toggle-compact');\n const container = document.querySelector('.monitor-container');\n toggleCompact.addEventListener('change', () =>\n {\n container.classList.toggle('compact-view');\n const compact = toggleCompact.checked ? 1 : 0;\n this.addLoading().then(() =>\n {\n setConfig({\n name: 'cfg_mon_compact',\n value: compact,\n }).then(() =>\n {\n this._closeSettings();\n this.removeLoading();\n });\n });\n });\n }\n\n /**\n * Attaches an event listener to handle toggling the \"Group by Exchange\" and \"Order By Symbol\" setting.\n */\n _bindConfigToggle()\n {\n const toggle = this._settingsContainer.querySelectorAll('.monitor-config');\n if (toggle)\n {\n toggle.forEach((item) =>\n {\n item.addEventListener('change', () =>\n {\n const name = item.getAttribute('name');\n const value = item.checked ? 1 : 0;\n this.addLoading().then(() =>\n {\n setConfig({\n name: item.getAttribute('name'),\n value: item.checked ? 1 : 0,\n }).then(() =>\n {\n const currentApp = window.jsSession._currentApp;\n currentApp.handleConfigRefresh(name, value);\n this.removeLoading();\n this._closeSettings();\n });\n });\n });\n });\n }\n }\n\n /**\n * Attaches an event listener to handle toggling the \"Table View\" setting.\n */\n _bindThemeToggles()\n {\n const radioButtons = document.querySelectorAll('input[name=\"cfg_mon_theme\"]');\n\n radioButtons.forEach((radio) =>\n {\n radio.addEventListener('change', (event) =>\n {\n const selectedValue = event.target.value;\n this.addLoading().then(() =>\n {\n setConfig({\n name: 'cfg_mon_theme',\n value: selectedValue,\n }).then(() =>\n {\n const currentApp = window.jsSession._currentApp;\n currentApp.handleConfigRefresh('cfg_mon_theme', selectedValue);\n this._updateTheme(selectedValue);\n this.removeLoading();\n\n this._closeSettings();\n });\n });\n });\n });\n }\n\n _closeSettings()\n {\n this._settingsContainer.classList.remove('active');\n }\n\n _updateTheme(theme)\n {\n if (theme === 'default') theme = 'light';\n document.body.setAttribute('data-theme', theme);\n this._updateThemeIcons(theme);\n this._updateLogoImageForFullscreenMode(theme);\n }\n\n _updateThemeIcons(theme)\n {\n const imgElement = document.querySelector('img.theme-dark');\n let path = '/common/watchlist/src/img/view-modern-dark.svg';\n if (theme === 'dark')\n {\n path = '/common/watchlist/src/img/view-modern-dark-v2.svg';\n }\n imgElement.setAttribute('src', path);\n }\n\n _updateLogoImageForFullscreenMode(theme)\n {\n const imgElement = document.querySelector('.monitor-actions .site-logo img');\n let path = '/common/header/svg/advfn-dark-2.svg';\n if (theme === 'dark')\n {\n path = '/common/header/svg/advfn-white-2.svg';\n }\n imgElement.setAttribute('src', path);\n }\n\n _updateThemeToggleState()\n {\n const radioButtons = document.querySelectorAll('input[name=\"cfg_mon_theme\"]');\n\n radioButtons.forEach((radio) =>\n {\n if (radio.value === this.theme)\n {\n radio.checked = true;\n this._updateThemeIcons(this.theme);\n this._updateLogoImageForFullscreenMode(this.theme);\n }\n });\n }\n\n _bindOpenButton()\n {\n const _this = this;\n\n const btns = document.querySelectorAll('#page-monitor-delight button.more-settings');\n if (btns.length)\n {\n btns.forEach((btn) =>\n {\n btn.addEventListener('click', () =>\n {\n if (btn.classList.contains('more-settings-mobile'))\n {\n _this._settingsContainer.classList.add('active');\n }\n else\n {\n _this._toggle();\n }\n });\n });\n }\n }\n\n _toggle()\n {\n this._settingsContainer.classList.toggle('active');\n }\n\n addLoading()\n {\n return new Promise((resolve) =>\n {\n const loading = document.createElement('div');\n loading.classList.add('modal-loading');\n\n const spinner = document.createElement('span');\n spinner.classList.add('fa', 'fa-spinner', 'fa-spin');\n\n loading.appendChild(spinner);\n this._settingsContainer.appendChild(loading);\n this._settingsContainer.classList.add('loading');\n\n setTimeout(() =>\n {\n resolve();\n }, 100);\n });\n }\n\n removeLoading()\n {\n const loading = this._settingsContainer.querySelector('.modal-loading');\n if (loading)\n {\n loading.remove();\n this._settingsContainer.classList.remove('loading');\n }\n }\n}\n\nexport default MonitorSettings;\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {DeleteListRequest} params\n * @returns {Promise|null}\n */\nconst deleteList = async (params) => getData(`${BASE_ENDPOINT}/DeleteList`, 'POST', params);\n\nexport default deleteList;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} DeleteListRequest\n * @property {number} id\n * @property {boolean} async\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * list: {\n * id: number,\n * name: string,\n * defaultMonId: number,\n * };\n * };\n * }} DeleteListResponse\n */\n","import MonitorModal from './MonitorModal';\nimport deleteList from '../api/DeleteList';\n\nclass MonitorDeleteModal extends MonitorModal\n{\n constructor()\n {\n super();\n this.modal = document.querySelector('.monitor-modal-container[data-type=\"monitor-delete-monitor-modal\"]');\n this.monitorID = null;\n this.init();\n }\n\n initialize()\n {\n this.bindSaveButton();\n }\n\n bindOpenButton()\n {\n const _this = this;\n const monitorDeleteButton = document.querySelector('#page-monitor-delight .settings button[data-type=\"monitor-delete-monitor-modal\"]');\n if (monitorDeleteButton)\n {\n monitorDeleteButton.addEventListener('click', () =>\n {\n document.querySelector('#page-monitor-delight .settings').classList.remove('active');\n\n if (this.modal.querySelector('.monitor-title'))\n {\n this.modal.querySelector('.monitor-title h4').innerText = document.querySelector('#monitor-selector h3').innerText;\n }\n\n _this.toggle();\n });\n }\n }\n\n bindSaveButton()\n {\n this.modal.querySelector('button.delete').addEventListener('click', () =>\n {\n this.addLoading().then(() =>\n {\n this._delete().then((result) =>\n {\n const { id, name, defaultMonId } = result.list;\n this.modal.classList.remove('active');\n window.MonitorDelight.monitorSelector.buildList();\n window.MonitorDelight.monitorSelector._updateMonitor(id, name);\n window.MonitorDelight.monitorSettings.setDefaultMonitorId(defaultMonId);\n this.removeLoading();\n });\n });\n });\n }\n\n _delete()\n {\n return deleteList({\n id: this.monitorID,\n async: 'true',\n });\n }\n}\n\nexport default MonitorDeleteModal;\n","import { BASE_ENDPOINT, getData } from './ApiWrapper';\n\n/**\n * @param {RenameListRequest} params\n * @returns {Promise|null}\n */\nconst renameList = async (params) => getData(`${BASE_ENDPOINT}/RenameList`, 'POST', params);\n\nexport default renameList;\n\n/** * TYPE DEFINITIONS ** */\n\n/**\n * @typedef {Object} RenameListRequest\n * @property {number} id\n * @property {string} name\n */\n\n/**\n * @typedef {{\n * status: string;\n * result: {\n * list: {\n * id: number,\n * name: string\n * };\n * };\n * }} RenameListResponse\n */\n","import MonitorModal from './MonitorModal';\nimport renameList from '../api/RenameList';\n\nclass MonitorUpdateModal extends MonitorModal\n{\n constructor()\n {\n super();\n this.modal = document.querySelector('.monitor-modal-container[data-type=\"monitor-update-monitor-modal\"]');\n this.input = this.modal.querySelector('.content input');\n this.init();\n }\n\n setValue(value)\n {\n this.input.value = value;\n }\n\n initialize()\n {\n this._bindSaveChangesButton();\n }\n\n destroyState()\n {\n const msg = this.input.parentNode.querySelector('span.error-msg');\n if (msg) msg.remove();\n }\n\n bindOpenButton()\n {\n const monitorUpdateButton = document.querySelector('#page-monitor-delight .settings button[data-type=\"monitor-update-monitor-modal\"]');\n if (monitorUpdateButton)\n {\n monitorUpdateButton.addEventListener('click', () =>\n {\n document.querySelector('#monitor-settings-container').classList.remove('active');\n this.toggle();\n });\n }\n\n const monitorUpdate = document.querySelector('#page-monitor-delight .settings div[data-type=\"monitor-update-monitor-modal\"]');\n if (monitorUpdate)\n {\n monitorUpdate.addEventListener('click', () =>\n {\n document.querySelector('#monitor-settings-container').classList.remove('active');\n this.toggle();\n });\n }\n }\n\n refreshInputValue()\n {\n document.getElementById('input-edit-monitor').innerText = this.input.value;\n }\n\n _bindSaveChangesButton()\n {\n this.modal.querySelector('button.save').addEventListener('click', () =>\n {\n if (this.input.value !== '')\n {\n this.destroyState();\n this.addLoading().then(() =>\n {\n this._edit().then(() =>\n {\n this.modal.classList.remove('active');\n this.refreshInputValue();\n window.MonitorDelight.monitorSelector._updateTitle(this.input.value);\n window.MonitorDelight.monitorSelector._updateItem(this.monitorID, this.input.value);\n this.updatePageTitle(this.input.value);\n this.removeLoading();\n });\n });\n }\n else\n {\n const msg = document.createElement('span');\n msg.innerText = this.lang.getTranslation('invalid_name_msg');\n msg.classList.add('error-msg');\n this.input.parentNode.appendChild(msg);\n }\n });\n }\n\n _edit()\n {\n return renameList({\n id: this.monitorID,\n name: this.input.value,\n });\n }\n}\n\nexport default MonitorUpdateModal;\n","import TranslationService from '../resources/TranslationService';\n\nclass MonitorEdit\n{\n constructor()\n {\n this._actions = document.querySelector('.monitor-actions .actions');\n this._button = this._actions.querySelector('.monitor-actions button[data-type=\"monitor-edit\"]');\n this._buttonSave = null;\n this._buttonClose = null;\n this._buttonEditStocks = null;\n // eslint-disable-next-line no-undef\n this.lang = new TranslationService(ADVFN.LOCALE);\n this.init();\n }\n\n init()\n {\n if (!this._button) return;\n\n this._bindButton();\n }\n\n disableAction()\n {\n if (this._button) this._button.setAttribute('disabled', 'disabled');\n }\n\n enableAction()\n {\n if (this._button) this._button.removeAttribute('disabled');\n }\n\n _bindButton()\n {\n const _this = this;\n\n _this._button.addEventListener('click', (e) =>\n {\n e.preventDefault();\n document.body.classList.add('monitor-edit-view');\n this._initEditStocksButton();\n this._initCancelButton();\n this._initSaveButton();\n });\n }\n\n _initCancelButton()\n {\n if (this._buttonClose)\n {\n this._actions.appendChild(this._buttonClose);\n return;\n }\n const icon = document.createElement('span');\n icon.classList.add('btn-icon', 'icon-close-16');\n\n this._buttonClose = document.createElement('button');\n this._buttonClose.classList.add('btn', 'edit-list-btn');\n this._buttonClose.appendChild(icon);\n const buttonText = document.createTextNode(this.lang.getTranslation('cancel'));\n this._buttonClose.appendChild(buttonText);\n\n this._buttonClose.addEventListener('click', () =>\n {\n this.closeMonitorEdit();\n });\n\n this._actions.appendChild(this._buttonClose);\n }\n\n closeMonitorEdit()\n {\n if (!document.body.classList.contains('monitor-edit-view')) return;\n\n // close modal\n document.body.classList.remove('monitor-edit-view');\n this._buttonSave.remove();\n this._buttonClose.remove();\n this._buttonEditStocks.remove();\n\n // refresh monitor with prev data\n const currentApp = window.jsSession._currentApp;\n const appSymbols = currentApp._config.symbols;\n const symbols = currentApp._symbolsList.getItems();\n const diff = this._getDiff(appSymbols, symbols);\n if (diff.length)\n {\n currentApp.handleAddSymbols(diff);\n }\n }\n\n _initSaveButton()\n {\n if (this._buttonSave)\n {\n this._actions.appendChild(this._buttonSave);\n return;\n }\n\n const icon = document.createElement('span');\n icon.classList.add('btn-icon', 'icon-save-16');\n\n this._buttonSave = document.createElement('button');\n this._buttonSave.classList.add('btn', 'edit-list-btn');\n this._buttonSave.appendChild(icon);\n const buttonText = document.createTextNode(this.lang.getTranslation('save_changes'));\n this._buttonSave.appendChild(buttonText);\n\n this._buttonSave.addEventListener('click', () =>\n {\n // close modal\n document.body.classList.remove('monitor-edit-view');\n this._buttonSave.remove();\n this._buttonClose.remove();\n this._buttonEditStocks.remove();\n\n // update symbols list\n const currentApp = window.jsSession._currentApp;\n const symbols = currentApp._symbolsList.getItems();\n const monSymbols = this._getSymbolsList(symbols);\n window.MonitorDelight.monitorAddSymbolModal.setSymbols(monSymbols);\n window.MonitorDelight.monitorAddSymbolModal.clearState();\n });\n\n this._actions.appendChild(this._buttonSave);\n }\n\n _initEditStocksButton()\n {\n if (this._buttonEditStocks)\n {\n this._actions.appendChild(this._buttonEditStocks);\n return;\n }\n\n const icon = document.createElement('span');\n icon.classList.add('btn-icon', 'icon-edit-16');\n\n this._buttonEditStocks = document.createElement('button');\n this._buttonEditStocks.classList.add('btn', 'edit-list-btn');\n this._buttonEditStocks.appendChild(icon);\n const buttonText = document.createTextNode(this.lang.getTranslation('edit_stocks'));\n this._buttonEditStocks.appendChild(buttonText);\n\n this._buttonEditStocks.addEventListener('click', () =>\n {\n // redirect user to edit stocks page\n const mid = window.MonitorDelight.monitorSelector.getMonitorID();\n window.location.href = `/p.php?pid=m_import&mid=${mid}`;\n });\n\n this._actions.appendChild(this._buttonEditStocks);\n }\n\n _getSymbolsList(symbols)\n {\n const arr = Object.values(symbols).map((value) => value._symbol._displaySymbol);\n return arr.join('|');\n }\n\n _getDiff(array1, array2)\n {\n const array2Keys = Object.keys(array2);\n return array1.filter((item) => !array2Keys.includes(item.feed_symbol));\n }\n}\n\nexport default MonitorEdit;\n","import MonitorSelector from '../modals/MonitorSelector';\n\nclass ChartSettings\n{\n constructor()\n {\n this._actions = document.querySelector('#page-monitor-charts-delight .charts-actions');\n this._chartTypeContainer = this._actions.querySelector('.chart-type');\n this._chartResolutionContainer = this._actions.querySelector('.chart-resolution');\n this._resolutionsList = this._chartResolutionContainer.querySelector('.list');\n this._resolutionToggle = this._chartResolutionContainer.querySelector('.title');\n this.init();\n }\n\n init()\n {\n // initialize resolution dropdown\n this._initChartResolutionDropdownToggle();\n this._bindResolutionButtons();\n\n // initialize chart type switcher\n this._initChartTypeSwitcher();\n\n // bind close on outside of boxes\n this._bindClose();\n\n // initialize monitor selector dropdown\n const selector = new MonitorSelector();\n selector.bindDropdownOpen();\n selector.bindDropdownClose();\n }\n\n _initChartResolutionDropdownToggle()\n {\n if (this._resolutionToggle)\n {\n this._resolutionToggle.addEventListener('click', (e) =>\n {\n e.preventDefault();\n this._chartResolutionContainer.classList.toggle('active');\n });\n }\n }\n\n _bindResolutionButtons()\n {\n const elements = this._resolutionsList.querySelectorAll('li');\n if (elements)\n {\n elements.forEach((item) =>\n {\n item.addEventListener('click', () =>\n {\n const { value } = item.querySelector('input');\n this._resolutionToggle.innerText = item.querySelector('span').innerText;\n this._chartResolutionContainer.classList.remove('active');\n\n Object.values(window.ADVFN_CHARTS_MANAGER._charts).forEach((chart) =>\n {\n chart._headerContainer.querySelector('.chart-info').remove();\n chart.resetState();\n chart.setResolution(value);\n chart._dataReady = false;\n this._updateUrl('resolution', value);\n this._updatePaging('resolution', value);\n });\n });\n });\n }\n }\n\n _bindClose()\n {\n window.addEventListener('click', (e) =>\n {\n if (!this._resolutionsList.contains(e.target) && !this._resolutionToggle.contains(e.target))\n {\n this._chartResolutionContainer.classList.remove('active');\n }\n });\n }\n\n _initChartTypeSwitcher()\n {\n const elements = this._chartTypeContainer.querySelectorAll('div[data-action=\"toggle\"]');\n if (elements)\n {\n elements.forEach((item) =>\n {\n item.addEventListener('click', (e) =>\n {\n e.preventDefault();\n this._chartTypeContainer.querySelector('div.active').classList.remove('active');\n item.classList.add('active');\n\n const type = item.getAttribute('data-type');\n\n Object.values(window.ADVFN_CHARTS_MANAGER._charts).forEach((chart) =>\n {\n chart.setChartType(type);\n chart._prepareData();\n chart._needsRefresh = true;\n });\n\n this._updateUrl('type', type);\n this._updatePaging('type', type);\n });\n });\n }\n }\n\n _updateUrl(key, val)\n {\n const url = new URL(window.location);\n const params = new URLSearchParams(url.search);\n params.set(key, val);\n url.search = params.toString();\n window.history.replaceState(null, '', url);\n }\n\n _updatePaging(key, val)\n {\n const pagingLinks = document.querySelectorAll('.pagination li a');\n if (pagingLinks)\n {\n pagingLinks.forEach((link) =>\n {\n const url = new URL(link.href);\n const params = new URLSearchParams(url.search);\n\n params.set(key, val);\n\n // Update the link's href attribute with the new URL\n url.search = params.toString();\n link.href = url.toString();\n });\n }\n }\n}\n\nexport default ChartSettings;\n","import MonitorSelector from '../modals/MonitorSelector';\n\nclass MonitorNews\n{\n constructor()\n {\n this.init();\n }\n\n init()\n {\n // initialize monitor selector dropdown\n const selector = new MonitorSelector();\n selector.bindDropdownOpen();\n selector.bindDropdownClose();\n }\n}\n\nexport default MonitorNews;\n","import MonitorModal from './MonitorModal';\n\nclass MonitorSettingsMobile extends MonitorModal\n{\n constructor()\n {\n super();\n this.modal = document.querySelector('.monitor-modal-container[data-type=\"monitor-settings\"]');\n this.content = this.modal.querySelector('.content');\n }\n\n bindOpenButton()\n {\n const btn = document.querySelector('#page-monitor-delight button[data-type=\"monitor-settings-modal-mobile\"]');\n if (btn)\n {\n btn.addEventListener('click', () =>\n {\n this.toggle();\n });\n }\n }\n\n initialize()\n {\n const settingButtons = this.content.querySelectorAll('button');\n if (settingButtons.length)\n {\n settingButtons.forEach((btn) =>\n {\n btn.addEventListener('click', () =>\n {\n this.modal.classList.remove('active');\n });\n });\n }\n }\n\n disableActions()\n {\n this.modal.classList.add('fixed-monitor');\n }\n\n enableActions()\n {\n this.modal.classList.remove('fixed-monitor');\n }\n}\n\nexport default MonitorSettingsMobile;\n","import MonitorModal from './MonitorModal';\n\nclass MonitorEditModal extends MonitorModal\n{\n constructor()\n {\n super();\n this.modal = document.querySelector('.monitor-modal-container[data-type=\"monitor-edit-modal\"]');\n if (this.modal)\n {\n this.content = this.modal.querySelector('.content table');\n this.monitorID = null;\n this._symbols = null;\n this._symbolsToRemove = [];\n this.init();\n }\n }\n\n initialize()\n {\n this.bindSaveButton();\n }\n\n destroyState()\n {\n this._symbols = null;\n this._symbolsToRemove = [];\n }\n\n bindOpenButton()\n {\n const _this = this;\n this.actionButtons = document.querySelectorAll('#page-monitor-delight button[data-type=\"monitor-edit-modal\"]');\n if (this.actionButtons.length && !this.isDisabled)\n {\n this.actionButtons.forEach((item) =>\n {\n item.addEventListener('click', () =>\n {\n const currentApp = window.jsSession._currentApp;\n this._loadList(currentApp._config.symbols);\n this._symbols = [...currentApp._config.symbols];\n _this.toggle();\n });\n });\n }\n }\n\n bindSaveButton()\n {\n this.modal.querySelector('button.save').addEventListener('click', () =>\n {\n this.addLoading().then(() =>\n {\n const currentApp = window.jsSession._currentApp;\n currentApp.handleRemoveSymbols(this._symbolsToRemove);\n const symbols = currentApp._symbolsList.getItems();\n const monSymbols = this._getSymbolsList(symbols);\n window.MonitorDelight.monitorAddSymbolModal.setSymbols(monSymbols);\n window.MonitorDelight.monitorAddSymbolModal.clearState();\n this.removeLoading();\n });\n });\n }\n\n _getSymbolsList(symbols)\n {\n const arr = Object.values(symbols).map((value) => value._symbol._displaySymbol);\n return arr.join('|');\n }\n\n _loadList(list)\n {\n this.content.innerHTML = '';\n\n list.forEach((stock) =>\n {\n const item = this._createListItem(stock);\n this.content.appendChild(item);\n });\n }\n\n _createListItem(item)\n {\n const itemRow = document.createElement('tr');\n itemRow.classList.add('result-row');\n\n // Create logo\n const colLogo = document.createElement('td');\n colLogo.classList.add('col-logo');\n const img = document.createElement('img');\n img.setAttribute('src', item.logo);\n img.setAttribute('alt', item.short_name);\n colLogo.appendChild(img);\n\n // Create Title\n const colTitle = document.createElement('td');\n colTitle.classList.add('col-title');\n\n const market = document.createElement('span');\n if (item.display_market)\n {\n market.innerText = item.display_market;\n }\n\n const symbol = document.createElement('h3');\n symbol.innerText = item.symbol;\n\n const title = document.createElement('div');\n title.innerText = item.name;\n\n symbol.appendChild(market);\n colTitle.appendChild(symbol);\n colTitle.appendChild(title);\n\n // Create Actions\n const colAction = document.createElement('td');\n colAction.classList.add('col-action');\n const btn = document.createElement('button');\n btn.setAttribute('data-symbol', item.display_symbol);\n btn.setAttribute('data-feed-symbol', item.feed_symbol);\n this._bindListButton(btn);\n colAction.appendChild(btn);\n\n itemRow.appendChild(colLogo);\n itemRow.appendChild(colTitle);\n itemRow.appendChild(colAction);\n\n return itemRow;\n }\n\n _bindListButton(btn)\n {\n btn.addEventListener('click', () =>\n {\n const symbol = btn.getAttribute('data-symbol');\n const index = this._symbols.findIndex((item) => item.display_symbol === symbol);\n\n if (index !== -1)\n {\n this._symbolsToRemove.push(this._symbols[index]);\n btn.parentNode.parentNode.remove();\n }\n });\n }\n}\n\nexport default MonitorEditModal;\n","import MonitorChangeColumnsModal from './MonitorChangeColumnsModal';\n\nclass MonitorChangeColumnsModalMobile extends MonitorChangeColumnsModal\n{\n init()\n {\n this._list = this.content.querySelector('.box ul');\n this._bindSaveButton();\n }\n\n destroyState()\n {\n this._list.innerHTML = '';\n }\n\n _bindSaveButton()\n {\n const _this = this;\n _this.modal.querySelector('button.save').addEventListener('click', () =>\n {\n _this.addLoading().then(() =>\n {\n const items = this._list.querySelectorAll('.checkbox.checked');\n const dataKeys = [];\n items.forEach((item) =>\n {\n const dataKey = item.getAttribute('data-col');\n dataKeys.push(parseInt(dataKey, 10));\n });\n\n _this._monitorColumns = dataKeys;\n _this._updateColumns().then(() =>\n {\n this.modal.classList.remove('active');\n // this.destroyState();\n // refresh monitor\n const currentApp = window.jsSession._currentApp;\n currentApp.handleRefresh();\n\n _this.removeLoading();\n });\n });\n });\n }\n\n _getColumns()\n {\n const sortedObj = {};\n this._monitorColumns.forEach((key) =>\n {\n if (this._columns.hasOwnProperty(key))\n {\n sortedObj[`_${key}`] = this._columns[key];\n }\n });\n Object.keys(this._columns).forEach((key) =>\n {\n if (!sortedObj.hasOwnProperty(key))\n {\n sortedObj[`_${key}`] = this._columns[key];\n }\n });\n\n return sortedObj;\n }\n\n bindCheckboxes()\n {\n if (this._list.innerHTML !== '') return;\n const _this = this;\n const cols = this._getColumns();\n\n // eslint-disable-next-line guard-for-in,no-restricted-syntax\n for (const k in cols)\n {\n const key = parseInt(k.substring(1), 10);\n const item = _this._columns[key];\n const title = document.createElement('span');\n title.classList.add('title');\n title.innerText = item;\n\n const checkbox = document.createElement('span');\n checkbox.classList.add('checkbox');\n checkbox.setAttribute('data-col', key);\n checkbox.addEventListener('click', () =>\n {\n if (checkbox.classList.contains('checked'))\n {\n checkbox.classList.remove('checked');\n }\n else\n {\n checkbox.classList.add('checked');\n }\n });\n\n const dragIcon = document.createElement('span');\n dragIcon.classList.add('icon-btn', 'icon-reorder');\n\n const control = document.createElement('div');\n control.classList.add('control');\n\n const listItem = document.createElement('li');\n\n if (_this._monitorColumns.indexOf(key) !== -1)\n {\n checkbox.classList.add('checked');\n }\n\n control.appendChild(checkbox);\n control.appendChild(dragIcon);\n control.appendChild(title);\n listItem.appendChild(control);\n\n _this._list.appendChild(listItem);\n }\n\n _this._bindDrag();\n }\n\n _bindDrag()\n {\n const icons = this._list.querySelectorAll('.icon-reorder');\n this.container = this._list;\n const _this = this;\n\n if (icons)\n {\n icons.forEach((icon) =>\n {\n icon.setAttribute('draggable', true);\n const item = icon.parentNode.parentNode;\n\n const scrollableContainer = _this._list; // Assuming _list is the
    container\n const scrollSpeed = 10; // Adjust the scroll speed as needed\n const scrollThreshold = 20; // Distance from the top or bottom to start scrolling\n\n icon.addEventListener('dragstart', (event) =>\n {\n _this.draggingElement = item;\n item.classList.add('active');\n event.dataTransfer.effectAllowed = 'move';\n });\n\n icon.addEventListener('dragover', (event) =>\n {\n event.preventDefault();\n\n // Scroll handling for drag over event\n if (event.clientY < scrollableContainer.getBoundingClientRect().top + scrollThreshold)\n {\n scrollableContainer.scrollTop -= scrollSpeed;\n }\n else if (event.clientY > scrollableContainer.getBoundingClientRect().bottom - scrollThreshold)\n {\n scrollableContainer.scrollTop += scrollSpeed;\n }\n\n const targetElement = event.target.closest('li');\n if (targetElement && targetElement !== _this.draggingElement)\n {\n const rect = targetElement.getBoundingClientRect();\n const nextElement = (event.clientY - rect.top > rect.height / 2) ? targetElement.nextSibling : targetElement;\n _this._list.insertBefore(_this.draggingElement, nextElement);\n }\n });\n\n icon.addEventListener('dragend', () =>\n {\n _this.draggingElement.classList.remove('active');\n _this.draggingElement = null;\n });\n\n // Touch events\n icon.addEventListener('touchstart', (event) =>\n {\n _this.draggingElement = item;\n item.classList.add('active');\n _this.touchStartY = event.touches[0].clientY;\n event.preventDefault();\n });\n\n icon.addEventListener('touchmove', (event) =>\n {\n event.preventDefault();\n const touch = event.touches[0];\n const touchY = touch.clientY;\n\n // Scroll handling for touch move event\n if (touchY < scrollableContainer.getBoundingClientRect().top + scrollThreshold)\n {\n scrollableContainer.scrollTop -= scrollSpeed;\n }\n else if (touchY > scrollableContainer.getBoundingClientRect().bottom - scrollThreshold)\n {\n scrollableContainer.scrollTop += scrollSpeed;\n }\n\n const targetElement = document.elementFromPoint(touch.clientX, touch.clientY).closest('li');\n if (targetElement && targetElement !== _this.draggingElement)\n {\n const rect = targetElement.getBoundingClientRect();\n const nextElement = (touchY - rect.top > rect.height / 2) ? targetElement.nextSibling : targetElement;\n if (nextElement)\n {\n _this._list.insertBefore(_this.draggingElement, nextElement);\n }\n else\n {\n _this._list.appendChild(_this.draggingElement);\n }\n }\n });\n\n icon.addEventListener('touchend', () =>\n {\n _this.draggingElement.classList.remove('active');\n _this.draggingElement = null;\n });\n });\n }\n }\n}\n\nexport default MonitorChangeColumnsModalMobile;\n","import MonitorModal from './MonitorModal';\n\nclass MonitorNewsAlertModal extends MonitorModal\n{\n constructor()\n {\n super();\n this.modal = document.querySelector('.monitor-modal-container[data-type=\"monitor-news-alert-modal\"]');\n\n if (!this.modal) return;\n\n this.content = this.modal.querySelector('.content');\n this._list = this.content.querySelector('.box ul');\n this._symbols = null;\n }\n\n setSymbols(symbols)\n {\n this._symbols = symbols.split(',');\n }\n\n init()\n {\n super.init();\n console.log('initialize');\n this._bindSaveChangesButton();\n this._bindActionButtons();\n }\n refresh(id)\n {\n this.destroyState();\n this.setMonitorID(id);\n }\n\n destroyState()\n {\n this._list.innerHTML = '';\n }\n\n bindOpenButton()\n {\n const _this = this;\n this.actionButtons = document.querySelectorAll('#page-monitor-delight .modal-button[data-type=\"monitor-news-alert-modal\"]');\n\n console.log('this.actionButtons', this.actionButtons);\n if (this.actionButtons.length && !this.isDisabled)\n {\n this.actionButtons.forEach((item) =>\n {\n item.addEventListener('click', () =>\n {\n _this.modal.classList.add('active');\n _this.initializeState();\n _this.removeLoading();\n });\n });\n }\n }\n\n initializeState()\n {\n this._createList();\n }\n\n /**\n * Create list using jsSession config parameter\n */\n _createList()\n {\n const currentApp = window.jsSession._currentApp;\n const { symbols } = currentApp._config;\n\n this._clearMessage();\n if (!symbols.length)\n {\n this._showEmptyMessage();\n\n }\n\n for (let i = 0; i < symbols.length; i++)\n {\n const item = symbols[i];\n const title = document.createElement('span');\n title.classList.add('title');\n title.innerText = item.symbol;\n\n const checkbox = document.createElement('span');\n checkbox.classList.add('checkbox');\n checkbox.setAttribute('data-id', item.symbol);\n checkbox.setAttribute('data-value', item.feed_symbol);\n checkbox.addEventListener('click', () =>\n {\n if (checkbox.classList.contains('checked'))\n {\n checkbox.classList.remove('checked');\n }\n else\n {\n checkbox.classList.add('checked');\n }\n });\n\n const control = document.createElement('div');\n control.classList.add('control');\n\n const listItem = document.createElement('li');\n\n if (this._symbols && this._symbols.indexOf(item.feed_symbol) !== -1)\n {\n checkbox.classList.add('checked', 'disabled');\n }\n\n control.appendChild(checkbox);\n control.appendChild(title);\n listItem.appendChild(control);\n\n this._list.appendChild(listItem);\n }\n }\n\n /**\n * Remove created message\n */\n _clearMessage()\n {\n this.modal.classList.remove('no-symbols');\n const messageBox = this.modal.querySelector('.message-box');\n if (messageBox) messageBox.remove();\n }\n\n /**\n * If empty monitor and there is no symbols show related message to user\n */\n _showEmptyMessage()\n {\n this.modal.classList.add('no-symbols');\n\n const content = document.createElement('div');\n content.classList.add('message-box');\n\n const text = document.createElement('h3');\n text.innerText = 'This watchlist does not contain any symbols';\n const button = document.createElement('button');\n button.classList.add('btn');\n button.innerHTML = ' Add Symbols Now';\n button.addEventListener('click', () =>\n {\n this.modal.classList.remove('active');\n window.MonitorDelight.monitorAddSymbolModal.open();\n });\n\n content.appendChild(text);\n content.appendChild(button);\n\n this.content.appendChild(content);\n }\n\n /**\n * bind validate button and on click collect symbols and send data to NewsAlertsLink endpoint\n */\n _bindSaveChangesButton()\n {\n const _this = this;\n _this.modal.querySelector('button.save').addEventListener('click', () =>\n {\n const list = this._list.querySelectorAll('span.checkbox.checked');\n const result = [];\n list.forEach((checkbox) =>\n {\n result.push(checkbox.getAttribute('data-value'));\n });\n\n const form = this.modal.querySelector('.footer form');\n form.querySelector('input[name=\"symbol_search\"]').value = result.join(',');\n form.submit();\n });\n }\n\n /**\n * Bind Check-all and Uncheck-all buttons\n */\n _bindActionButtons()\n {\n this.modal.querySelector('button[data-type=\"check-all\"]').addEventListener('click', () =>\n {\n const list = this._list.querySelectorAll('span.checkbox:not(.disabled)');\n list.forEach((checkbox) =>\n {\n checkbox.classList.add('checked');\n });\n });\n\n this.modal.querySelector('button[data-type=\"uncheck-all\"]').addEventListener('click', () =>\n {\n const list = this._list.querySelectorAll('span.checkbox:not(.disabled)');\n list.forEach((checkbox) =>\n {\n checkbox.classList.remove('checked');\n });\n });\n }\n\n}\n\nexport default MonitorNewsAlertModal;\n","import MonitorAddSymbolModal from './modals/MonitorAddSymbolModal';\nimport MonitorChangeColumnsModal from './modals/MonitorChangeColumnsModal';\nimport MonitorSelector from './modals/MonitorSelector';\nimport MonitorSettings from './modals/MonitorSettings';\nimport MonitorDeleteModal from './modals/MonitorDeleteModal';\nimport MonitorUpdateModal from './modals/MonitorUpdateModal';\nimport MonitorEdit from './modals/MonitorEdit';\nimport ChartSettings from './charts/ChartSettings';\nimport MonitorNews from './news/MonitorNews';\nimport MonitorSettingsMobile from './modals/MonitorSettingsMobile';\nimport MonitorEditModal from './modals/MonitorEditModal';\nimport MonitorChangeColumnsModalMobile from './modals/MonitorChangeColumnsModalMobile';\nimport MonitorNewsAlertModal from './modals/MonitorNewsAlertModal';\n\nclass MonitorDelight\n{\n init()\n {\n if (document.getElementById('page-monitor-delight'))\n {\n this.monitorAddSymbolModal = new MonitorAddSymbolModal();\n this.monitorChangeColumnsModal = new MonitorChangeColumnsModal();\n this.monitorSelector = new MonitorSelector();\n this.monitorSettings = new MonitorSettings();\n this.monitorDeleteModal = new MonitorDeleteModal();\n this.monitorUpdateModal = new MonitorUpdateModal();\n this.monitorEdit = new MonitorEdit();\n this.monitorSettingsMobile = new MonitorSettingsMobile();\n this.monitorEditModal = new MonitorEditModal();\n this.monitorChangeColumnsModalMobile = new MonitorChangeColumnsModalMobile();\n this.monitorNewsAlertModal = null;\n if (document.getElementById('monitor-news-alert'))\n {\n this.monitorNewsAlertModal = new MonitorNewsAlertModal();\n }\n }\n\n if (document.getElementById('page-monitor-charts-delight'))\n {\n this.monitorAddSymbolModal = new MonitorAddSymbolModal();\n this.chartSettings = new ChartSettings();\n }\n\n if (document.getElementById('page-monitor-news-delight'))\n {\n this.monitorAddSymbolModal = new MonitorAddSymbolModal();\n this.monitorNews = new MonitorNews();\n }\n }\n}\n\nexport default MonitorDelight;\n","import BaseTranslationService from '../../elements/translator/js/BaseTranslationService';\nimport lang from './onboarding.json';\n\nclass TranslationService extends BaseTranslationService\n{\n constructor(locale)\n {\n super();\n this.setLangFile(lang);\n this.setLocale(locale);\n }\n}\n\nexport default TranslationService;\n","import axios from 'axios';\nimport TranslationService from './TranslationService';\n\nconst CONFIG_ENDPOINT = '/common/api/onboarding/';\n\nclass Onboarding\n{\n constructor()\n {\n this.currentStep = 0;\n this.totalSteps = 0;\n this.version = 0;\n this.name = '';\n this.currentEl = null;\n this.resource = null;\n this.container = null;\n this.content = null;\n this.delay = 5000;\n this.state = 'next';\n\n // eslint-disable-next-line no-undef\n this.lang = new TranslationService(ADVFN.LOCALE);\n }\n\n /**\n * @abstract\n */\n setResource()\n {\n throw new Error('Not implemented');\n }\n\n /**\n * @abstract\n */\n setVersion()\n {\n throw new Error('Not implemented');\n }\n\n /**\n * @abstract\n */\n setName()\n {\n throw new Error('Not implemented');\n }\n\n /**\n * Load user configuration parameters based on the onboarding name.\n *\n * This function checks whether the user has already seen the onboarding process or if there is a new version available.\n * If the onboarding process hasn't been seen by the user or there is a new version, the onboarding will be shown.\n *\n */\n init()\n {\n this.getUserConfig({\n name: this.name,\n }).then((res) =>\n {\n if (res.state !== 'seen' || parseInt(res.version, 10) !== this.version)\n {\n setTimeout(() =>\n {\n this.createOnboarding();\n }, this.delay);\n }\n });\n }\n\n /**\n * API Request to fetch user onboarding configuration data based on the onboarding name.\n *\n * This function sends an API request to retrieve configuration data related to the specified onboarding process.\n * It uses the provided onboarding name to fetch the relevant settings and parameters for the user.\n *\n */\n async getUserConfig(params)\n {\n let response;\n\n // eslint-disable-next-line prefer-const\n response = await axios.get(`${CONFIG_ENDPOINT}GetConfig?name=${params.name}`);\n\n const { status, data } = response;\n if (status === 200)\n {\n if (data.status === 'success')\n {\n return data;\n }\n\n if (data.status === 'fail')\n {\n return {\n code: data.result.errorCode,\n reason: data.result.errorMessage,\n };\n }\n }\n\n return null;\n }\n\n /**\n * API Request to update user onboarding configuration data.\n *\n * This function sends an API request to update the configuration data related to the user's onboarding process.\n * It modifies the existing settings and parameters based on the provided data.\n *\n */\n async setUserConfig(params)\n {\n let response;\n\n const formData = new FormData();\n formData.append('name', params.name);\n formData.append('state', params.state);\n formData.append('version', params.version);\n\n // eslint-disable-next-line prefer-const\n response = await axios.post(`${CONFIG_ENDPOINT}SetConfig`, formData);\n\n const { status, data } = response;\n if (status === 200)\n {\n if (data.status === 'success')\n {\n return data.result;\n }\n\n if (data.status === 'fail')\n {\n return {\n code: data.result.errorCode,\n reason: data.result.errorMessage,\n };\n }\n }\n\n return null;\n }\n\n /**\n * Creates onboarding container\n */\n createOnboarding()\n {\n const bodyRect = document.body.getBoundingClientRect();\n\n this.container = document.createElement('div');\n this.container.classList.add('onboarding');\n this.container.style.height = `${bodyRect.height}px`;\n\n this.content = document.createElement('div');\n this.content.classList.add('content');\n this.content.style.position = 'absolute';\n this.container.appendChild(this.content);\n\n const title = document.createElement('h3');\n this.content.appendChild(title);\n\n const text = document.createElement('p');\n this.content.appendChild(text);\n\n const close = document.createElement('button');\n close.innerText = this.lang.getTranslation('close');\n close.classList.add('close');\n close.addEventListener('click', this.closeOnboarding.bind(this));\n this.content.appendChild(close);\n\n const next = document.createElement('button');\n next.innerText = this.lang.getTranslation('next');\n next.classList.add('next');\n next.addEventListener('click', () =>\n {\n this.state = 'next';\n this.updateStep();\n });\n this.content.appendChild(next);\n\n const back = document.createElement('button');\n back.innerText = this.lang.getTranslation('back');\n back.classList.add('prev');\n back.addEventListener('click', () =>\n {\n this.state = 'prev';\n this.updateStep();\n });\n this.content.appendChild(back);\n\n document.body.appendChild(this.container);\n\n this.updateStep();\n\n window.addEventListener('scroll', this.adjustContentPosition.bind(this));\n window.addEventListener('resize', this.adjustContentPosition.bind(this));\n }\n\n /**\n * Adjust Positioning of element when scrolling the window\n */\n adjustContentPosition()\n {\n const rect = this.currentEl.getBoundingClientRect();\n const bodyRect = document.body.getBoundingClientRect();\n const top = rect.top - bodyRect.top + rect.height + 5;\n\n let { left } = rect;\n\n // Check if the element's right edge is outside the body\n const elementWidth = this.content.offsetWidth;\n const rightEdge = left + elementWidth;\n\n if (rightEdge > bodyRect.right)\n {\n // Adjust the left position\n left = bodyRect.right - elementWidth;\n }\n\n this.content.style.left = `${left}px`;\n this.content.style.top = `${top}px`;\n }\n\n /**\n * Update current step and display content\n */\n updateStep()\n {\n this.clearElementState();\n\n if (this.state === 'next')\n {\n if (this.checkIfFinished()) return;\n this.currentStep++;\n }\n else\n {\n this.currentStep--;\n }\n\n this.updatePrevButton();\n this.updateNextButton();\n this.display();\n }\n\n /**\n * Renders the content for the current step in the onboarding process.\n */\n display()\n {\n const { text, element, title } = this.resource[`step-${this.currentStep}`];\n\n this.currentEl = document.getElementById(element);\n if (!this.currentEl)\n {\n this.updateStep();\n return;\n }\n\n const computedStyle = window.getComputedStyle(this.currentEl);\n if (computedStyle.display === 'none')\n {\n this.updateStep();\n return;\n }\n this.currentEl.classList.add('onboarding-highlighted');\n\n this.adjustContentPosition();\n\n const p = this.content.querySelector('p');\n p.innerText = text;\n\n const t = this.content.querySelector('h3');\n t.innerText = title;\n }\n\n /**\n * This function checks if the user is currently on the first step of the onboarding process.\n * If so, it disables the previous button to prevent navigation to a non-existent previous step.\n */\n updatePrevButton()\n {\n if (this.currentStep === 1)\n {\n this.container.querySelector('button.prev').setAttribute('disabled', 'disabled');\n }\n else\n {\n this.container.querySelector('button.prev').removeAttribute('disabled');\n }\n }\n\n /**\n * Updates the button title if the user is on the last step.\n */\n updateNextButton()\n {\n if (this.currentStep === this.totalSteps)\n {\n this.container.querySelector('button.next').innerText = this.lang.getTranslation('finish');\n }\n else\n {\n this.container.querySelector('button.next').innerText = this.lang.getTranslation('next');\n }\n }\n\n /**\n * Closes the onboarding screen and updates user configuration.\n *\n * This function checks if the user is on the latest step of the onboarding process or if\n * the user clicks the \"Close\" button. If either condition is met, it closes the onboarding\n * screen and updates the user's configuration to reflect the completed onboarding process.\n *\n */\n checkIfFinished()\n {\n if (this.currentStep === this.totalSteps || !this.resource[`step-${this.currentStep + 1}`])\n {\n this.closeOnboarding();\n return true;\n }\n\n return false;\n }\n\n /**\n * Clears the state of the highlighted element.\n */\n clearElementState()\n {\n if (this.currentEl)\n {\n this.currentEl.classList.remove('onboarding-highlighted');\n }\n }\n\n /**\n * Closes the onboarding screen and sends data to the API.\n */\n closeOnboarding()\n {\n this.clearElementState();\n this.container.remove();\n this.setUserConfig({\n name: this.name,\n state: 'seen',\n version: this.version,\n });\n }\n}\n\nexport default Onboarding;\n","import BaseTranslationService from '../../../../elements/translator/js/BaseTranslationService';\n\nclass TranslationService extends BaseTranslationService\n{\n}\n\nexport default TranslationService;\n","import Onboarding from '../../../../onboarding/src/Onboarding';\nimport Resource from './onboarding-steps.json';\nimport TranslationService from './TranslationService';\n\n/**\n * If a new version is released, increment the version number below.\n * Ensure the onboarding-steps.json file is updated accordingly.\n * The version number should correspond to the step number in the onboarding-steps.json file.\n */\nconst MONITOR_ONBOARDING_CURRENT_VERSION = 3;\nconst MONITOR_ONBOARDING_CONFIG_NAME = 'monitor_onboarding';\n\nclass MonitorOnboarding extends Onboarding\n{\n constructor()\n {\n super();\n this.translationService = new TranslationService();\n }\n\n setResource()\n {\n // get by language\n this.translationService.setLangFile(Resource);\n // eslint-disable-next-line no-undef\n this.translationService.setLocale(ADVFN.LOCALE);\n const langResource = this.translationService.getResource();\n\n // set by step\n const resource = langResource[MONITOR_ONBOARDING_CURRENT_VERSION];\n this.resource = resource;\n this.translationService.setLangFile(this.resource);\n this.totalSteps = Object.keys(resource).length;\n }\n\n setVersion()\n {\n this.version = MONITOR_ONBOARDING_CURRENT_VERSION;\n }\n\n setName()\n {\n this.name = MONITOR_ONBOARDING_CONFIG_NAME;\n }\n\n initialize()\n {\n this.setResource();\n this.setName();\n this.setVersion();\n this.init();\n }\n}\n\nexport default MonitorOnboarding;\n","import './scss/main.scss';\nimport MonitorDelight from './js/delight';\nimport MonitorOnboarding from './js/onboarding/MonitorOnboarding';\n\nwindow.MonitorDelight = new MonitorDelight();\nwindow.MonitorDelight.init();\n\nwindow.MonitorOnboarding = new MonitorOnboarding();\n","// style-loader: Adds some css to the DOM by adding a