{"version":3,"file":"Options.bundle.js","mappings":"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","sources":["webpack://advfnweb/webpack/runtime/chunk loaded","webpack://advfnweb/./advfn3/content/_common/options/src/app.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/OptionsFlow.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/AdvancedFilter.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/AdvancedFilterContainer.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/QuickFilterElement.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/advanced/DaysToExpireRange.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/advanced/PremiumsRange.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/advanced/RangedFilter.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/advanced/SizeRange.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/advanced/StockTypeSelector.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/advanced/SymbolFilter.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/advanced/VolumeRange.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/filters/advanced/symbol-filter/SearchBox.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/managers/FilterManager.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/managers/NotificationsManager.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/managers/StateManager.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/summary/FlowSummary.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/summary/FlowSummaryElement.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/table/FlowTable.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/table/FlowTableRow.js","webpack://advfnweb/./advfn3/content/_common/options/src/js/flow/table/SortingColumn.js","webpack://advfnweb/./advfn3/content/_common/options/src/scss/main.scss","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};","/* eslint no-undef: 0 */\n/* eslint max-len: 0 */\nimport './scss/main.scss';\n\nconst OptionsFlow = require('./js/flow/OptionsFlow');\n\nconst videoTag = '';\n\ndocument.addEventListener('DOMContentLoaded', () =>\n{\n const flowElement = document.querySelector('[data-app=options-flow]');\n if (flowElement)\n {\n new OptionsFlow(flowElement);\n }\n\n const videoModalCta = document.querySelector('#video-modal-cta');\n if (videoModalCta)\n {\n videoModalCta.addEventListener('click', () =>\n {\n $(`#${MODAL_VIDEO_UNIQUE_ID}`).modal('show');\n const ctaModal = document.querySelector('[data-app=cta-register-modal]');\n ctaModal.style.display = 'none';\n });\n }\n\n if ($(`#${MODAL_VIDEO_UNIQUE_ID}`).length > 0)\n {\n $(`#${MODAL_VIDEO_UNIQUE_ID}`).on('hidden.bs.modal', () =>\n {\n $(`#${MODAL_VIDEO_UNIQUE_ID} .embed-responsive`).html('');\n });\n\n $(`#${MODAL_VIDEO_UNIQUE_ID}`).on('show.bs.modal', () =>\n {\n $(`#${MODAL_VIDEO_UNIQUE_ID} .embed-responsive`).html(videoTag);\n });\n }\n\n if (MODAL_VIDEO_AUTO_OPEN)\n {\n setTimeout(() =>\n {\n $(`#${MODAL_VIDEO_UNIQUE_ID}`).modal('show');\n }, 5000);\n }\n});\n","const axios = require('axios');\nconst md5 = require('md5');\nconst StateManager = require('./managers/StateManager');\nconst FilterManager = require('./managers/FilterManager');\nconst NotificationsManager = require('./managers/NotificationsManager');\nconst FlowSummary = require('./summary/FlowSummary');\nconst FlowTable = require('./table/FlowTable');\n\n// Polling\nconst RESET_INTERVAL_DEFAULT = 100;\nconst POLLING_INTERVAL_DEFAULT = 2500;\nconst MAX_FAILED_REQUESTS = 5;\n\n// Sorting\nconst DEFAULT_SORTING_COLUMN = 'tradetime';\nconst DEFAULT_SORTING_DIRECTION = 'desc';\n\nclass OptionsFlow\n{\n /**\n * @param {HTMLElement} element\n */\n constructor(element)\n {\n /** @type {HTMLElement} */\n this._element = element;\n\n this._initData = JSON.parse(atob(this._element.getAttribute('data-init')));\n\n /** @type {StateManager} */\n this._stateManager = new StateManager(this);\n\n /** @type {number} */\n this._pollingTime = POLLING_INTERVAL_DEFAULT;\n if (this._initData.pollingInterval)\n {\n this._pollingTime = this._initData.pollingInterval;\n }\n\n /** @type {boolean} */\n this._realTime = !!this._initData.realtime;\n\n /** @type {boolean} */\n this._loggedIn = !!this._initData.loggedIn;\n\n /** @type {boolean} */\n this._isMobile = !!this._initData.isMobile;\n\n /** @type {string} */\n this._view = this._initData.view;\n\n /** @type {HTMLSpanElement} */\n this._delayedBadge = this._element.querySelector('.delayed-badge');\n if (!this._realTime)\n {\n this._delayedBadge.style.opacity = 1;\n }\n else\n {\n this._delayedBadge.remove();\n }\n\n /** @type {FilterManager} */\n this._filterManager = new FilterManager(this, this._stateManager);\n\n /** @type {NotificationsManager} */\n this._notificationsManager = new NotificationsManager(this);\n\n /** @type {FlowSummary} */\n this._flowSummary = new FlowSummary(document.querySelector('[data-app=\"options-flow-summary\"]'));\n\n /** @type {FlowTable} */\n this._flowTable = new FlowTable(this._element.querySelector('[data-app=\"flow-table\"]'), this);\n\n /** @type {{ column: string, direction: 'asc'|'desc'|null }} */\n this._sortingState = {\n column: DEFAULT_SORTING_COLUMN,\n direction: DEFAULT_SORTING_DIRECTION,\n };\n\n /** @type {HTMLElement} */\n this._noOptionsContainer = this._element.querySelector('.no-options-container');\n\n this._requestedData = {};\n\n // State flags\n this._filtersChanged = false;\n this._sortingChanged = false;\n\n // Reset checker\n this._isResetting = false;\n this._resetInterval = setInterval(() => this._checkForReset(), RESET_INTERVAL_DEFAULT);\n\n this._resetAllFiltersButton = this._element.querySelector('[data-app=\"reset-all-filters\"]');\n this._setUpResetAllFiltersButton();\n\n this._failedRequests = 0;\n\n // Polling\n this._initiatePolling();\n }\n\n getState()\n {\n return {\n filterManager: this._filterManager.getState(),\n };\n }\n\n /**\n * @returns {HTMLElement}\n */\n getElement()\n {\n return this._element;\n }\n\n /**\n * @returns {boolean}\n */\n isLoggedIn()\n {\n return this._loggedIn;\n }\n\n /**\n * @returns {boolean}\n */\n isRealTime()\n {\n return this._realTime;\n }\n\n /**\n * @returns {boolean}\n */\n isMobileMode()\n {\n return this._isMobile;\n }\n\n /**\n * @returns {string}\n */\n getView()\n {\n return this._view;\n }\n\n /**\n * @param {string} key\n * @returns {*}\n */\n getInitialData(key)\n {\n if (this._initData[key] !== undefined)\n {\n return this._initData[key];\n }\n return null;\n }\n\n onQuickFilterChanged()\n {\n this._filtersChanged = true;\n }\n\n onAdvancedFilterChanged()\n {\n this._filtersChanged = true;\n }\n\n onNewResults()\n {\n this._notificationsManager.alert();\n }\n\n showNoOptionsContainer()\n {\n this._noOptionsContainer.style.display = 'flex';\n }\n\n hideNoOptionsContainer()\n {\n this._noOptionsContainer.style.display = 'none';\n }\n\n handleSortingStateChange(column, direction)\n {\n this._sortingChanged = true;\n\n if (direction === null)\n {\n this._sortingState.column = DEFAULT_SORTING_COLUMN;\n this._sortingState.direction = DEFAULT_SORTING_DIRECTION;\n }\n else\n {\n this._sortingState.column = column;\n this._sortingState.direction = direction;\n }\n\n if (column === 'tradetime' && direction === 'asc')\n {\n this._isPaused = true;\n }\n else\n {\n this._isPaused = false;\n }\n }\n\n _checkForReset()\n {\n const resetState = this._filtersChanged || this._sortingChanged;\n\n if (resetState)\n {\n this._resetState();\n }\n }\n\n _resetState()\n {\n this._isResetting = true;\n\n // Clear the table\n this._flowTable.reset();\n\n // Reset the state flags\n this._filtersChanged = false;\n this._sortingChanged = false;\n\n // Polling restart\n clearInterval(this._pollingInterval);\n\n this._initiatePolling();\n }\n\n _setUpResetAllFiltersButton()\n {\n this._resetAllFiltersButton.addEventListener('click', (event) =>\n {\n event.preventDefault();\n\n this._filterManager.reset();\n this._resetState();\n });\n }\n\n _initiatePolling()\n {\n this._isResetting = false;\n\n this._poll();\n\n this._pollingInterval = setInterval(() =>\n {\n this._poll();\n }, this._pollingTime);\n }\n\n _getRequestFingerprint()\n {\n let fingerprint = '';\n\n const quickFilters = this._filterManager.getQuickFiltersState();\n Object.keys(quickFilters).forEach((filter) =>\n {\n fingerprint += `${filter}:${quickFilters[filter].selected}`;\n });\n\n const advancedFilters = this._filterManager.getAdvancedFiltersState();\n Object.keys(advancedFilters).forEach((filter) =>\n {\n fingerprint += `${filter}:${JSON.stringify(advancedFilters[filter])}`;\n });\n\n fingerprint += `${this._sortingState.column}:${this._sortingState.direction}`;\n\n return md5(fingerprint);\n }\n\n _poll()\n {\n if (this._isResetting) return;\n\n // In paused state we only poll if the table is empty\n if (!this._flowTable.isEmpty() && this._isPaused) return;\n\n const fingerprint = this._getRequestFingerprint();\n\n this._stateManager.save();\n\n const requestData = new FormData();\n\n // Quick filters\n const quickFilters = this._filterManager.getQuickFiltersState();\n Object.keys(quickFilters).forEach((filter) =>\n {\n requestData.append('quick-filters[]', `${filter}|${quickFilters[filter].selected}`);\n });\n\n // Sorting\n requestData.set('sort', `${this._sortingState.column}|${this._sortingState.direction}`);\n\n // Advanced Filters\n const advancedFilters = this._filterManager.getAdvancedFiltersState();\n Object.keys(advancedFilters).forEach((filter) =>\n {\n requestData.append('advanced-filters[]', `${filter}|${JSON.stringify(advancedFilters[filter])}`);\n });\n\n axios.post('/common/api/options/flow/GetResult', requestData)\n .then(({ status, data }) =>\n {\n if (status === 200)\n {\n if (data.status === 'success')\n {\n this._failedRequests = 0;\n\n this._requestedData[fingerprint] = data.result;\n this._handleRequestData();\n return;\n }\n }\n\n this._handleNoRowsState(true);\n this._failedRequests++;\n })\n .catch((error) => console.warn(error))\n .finally(() =>\n {\n if (this._failedRequests >= MAX_FAILED_REQUESTS)\n {\n console.warn('Too many failed requests.');\n clearInterval(this._pollingInterval);\n }\n });\n }\n\n _handleRequestData()\n {\n const fingerprint = this._getRequestFingerprint();\n if (this._requestedData[fingerprint])\n {\n const data = this._requestedData[fingerprint];\n this._flowSummary.updateSummary(data.summary);\n this._flowTable.queueRows(data.rows);\n\n this._handleNoRowsState(this._flowTable.isEmpty());\n }\n }\n\n _handleNoRowsState(isEmpty)\n {\n if (isEmpty)\n {\n this._flowTable.hide();\n this.showNoOptionsContainer();\n }\n else\n {\n this.hideNoOptionsContainer();\n this._flowTable.show();\n }\n }\n}\n\nmodule.exports = OptionsFlow;\n","class AdvancedFilter\n{\n /**\n * @param {HTMLElement} element\n * @param {string} name\n * @param {AdvancedFilterContainer} parentContainer\n */\n constructor(element, name, parentContainer)\n {\n this._parent = parentContainer;\n this._name = name;\n this._element = element;\n\n this._buttonApply = this._element.querySelector('[data-app=\"apply-filter\"]');\n this._buttonReset = this._element.querySelector('[data-app=\"reset-filter\"]');\n\n this.disableButtons();\n\n this._buttonApply.addEventListener('click', () =>\n {\n this.applyChanges();\n });\n\n this._buttonReset.addEventListener('click', () =>\n {\n this.resetChanges();\n });\n }\n\n getName()\n {\n return this._name;\n }\n\n disableButtons()\n {\n this._buttonApply.disabled = true;\n this._buttonReset.disabled = true;\n }\n\n enableButtons()\n {\n this._buttonApply.disabled = false;\n this._buttonReset.disabled = false;\n }\n\n reset()\n {\n throw new Error('Reset method implemented');\n }\n\n getState()\n {\n throw new Error('State is not implemented');\n }\n\n applyChanges()\n {\n this._parent.onFilterChanged(this);\n }\n\n resetChanges()\n {\n this.disableButtons();\n this._parent.onFilterReset(this);\n }\n}\n\nmodule.exports = AdvancedFilter;\n","const SizeRange = require('./advanced/SizeRange');\nconst PremiumRange = require('./advanced/PremiumsRange');\nconst VolumeRange = require('./advanced/VolumeRange');\nconst DaysToExpireRange = require('./advanced/DaysToExpireRange');\nconst StockTypeSelector = require('./advanced/StockTypeSelector');\nconst SymbolFilter = require('./advanced/SymbolFilter');\n\nclass AdvancedFilterContainer\n{\n /**\n * @param {HTMLElement} element\n * @param {HTMLButtonElement} triggerButton\n * @param {FilterManager} filterManager\n * @param {StateManager} stateManager\n * @param {boolean} open\n * @param {boolean} disabled\n */\n constructor(element, triggerButton, filterManager, stateManager, open = false, disabled = false)\n {\n this._element = element;\n this._triggerButton = triggerButton;\n this._parent = filterManager;\n this._stateManager = stateManager;\n\n this._open = open;\n this._disabled = disabled;\n\n this._registrationConversion = false;\n\n this._resetAllButton = this._element.querySelector('[data-app=\"reset-advanced-filters\"]');\n this._resetAllButton.addEventListener('click', (event) =>\n {\n event.preventDefault();\n this.reset();\n });\n\n this._closeButton = this._element.querySelector('[data-app=\"close-advanced-filters\"]');\n this._closeButton.addEventListener('click', (event) =>\n {\n event.preventDefault();\n this.hide();\n });\n\n this._advancedFilters = [];\n\n this._init();\n }\n\n enableRegistrationConversion()\n {\n this._registrationConversion = true;\n }\n\n _init()\n {\n this._triggerButton.addEventListener('click', this._onTriggerButton.bind(this));\n\n if (this._open)\n {\n this.show();\n }\n else\n {\n this.hide();\n }\n\n const initialState = this._stateManager.getFiltersState('advancedFilters') || {};\n\n /** @type {NodeListOf} */\n const filterElements = this._element.querySelectorAll('[data-flow-advanced-filter]');\n filterElements.forEach((element) =>\n {\n const filterType = element.getAttribute('data-flow-advanced-filter');\n\n switch (filterType)\n {\n case 'symbol-search':\n // Initial state is the requested symbols\n this._addAdvancedFilter(filterType, element, {\n symbols: this._stateManager.getParent().getInitialData('symbols'),\n });\n return;\n }\n\n this._addAdvancedFilter(filterType, element, initialState[filterType]);\n });\n }\n\n /**\n * @param {string} filterType\n * @param {HTMLElement} element\n * @param {} initialState\n */\n _addAdvancedFilter(filterType, element, initialState = {})\n {\n switch (filterType)\n {\n // TODO: Implement\n case 'date-range':\n case 'side-picker':\n case 'expiration-date':\n element.style.display = 'none';\n break;\n case 'symbol-search':\n this._advancedFilters.push(new SymbolFilter(element, filterType, this, initialState));\n break;\n case 'stock-type':\n this._advancedFilters.push(new StockTypeSelector(element, filterType, this, initialState));\n break;\n case 'premium-range':\n this._advancedFilters.push(new PremiumRange(element, filterType, this, initialState));\n break;\n case 'size-range':\n this._advancedFilters.push(new SizeRange(element, filterType, this, initialState));\n break;\n case 'volume-range':\n this._advancedFilters.push(new VolumeRange(element, filterType, this, initialState));\n break;\n case 'dte-range':\n this._advancedFilters.push(new DaysToExpireRange(element, filterType, this, initialState));\n break;\n default:\n throw new Error(`Unknown filter type: ${filterType}`);\n }\n }\n\n onFilterChanged(filter)\n {\n if (this._registrationConversion)\n {\n const site = window.location.host.split('.')[0];\n const elementName = filter._name.replace('-', '_');\n\n window.dataLayer.push({\n event: 'subscribe_cta_button_click',\n location: `options_flow_${elementName}`,\n view: `${site}`,\n });\n window.location.href = this._parent.getParent().getInitialData('upgradeLink');\n return;\n }\n\n this._parent.onAdvancedFilterChanged(filter);\n }\n\n onFilterReset(filter)\n {\n this._parent.onAdvancedFilterChanged(filter);\n }\n\n getFiltersState()\n {\n if (this._disabled) return {};\n\n const state = {};\n\n this._advancedFilters.forEach((filter) =>\n {\n state[filter.getName()] = filter.getState();\n });\n\n return state;\n }\n\n reset()\n {\n this.hide();\n\n this._advancedFilters.forEach((filter) =>\n {\n filter.reset();\n });\n }\n\n disable()\n {\n this._triggerButton.disabled = true;\n this._disabled = true;\n }\n\n enable()\n {\n this._disabled = false;\n }\n\n /**\n * @param {MouseEvent} event\n */\n _onTriggerButton(event)\n {\n if (this._disabled) return;\n\n event.preventDefault();\n\n if (this._open)\n {\n this.hide();\n }\n else\n {\n this.show();\n }\n }\n\n show()\n {\n this._open = true;\n this._element.style.display = 'block';\n this._triggerButton.classList.add('active');\n }\n\n hide()\n {\n this._open = false;\n this._element.style.display = 'none';\n this._triggerButton.classList.remove('active');\n }\n}\n\nmodule.exports = AdvancedFilterContainer;\n","/**\n * @typedef { selected: boolean, disabled: boolean } QuickFilterElementState\n */\n\nclass QuickFilterElement\n{\n /**\n *\n * @param {HTMLElement} element\n * @param {FilterManager} filterManager\n * @param {QuickFilterElementState} initialState\n */\n constructor(element, filterManager, initialState = {})\n {\n this._element = element;\n this._filterManager = filterManager;\n\n this._filter = this._element.getAttribute('data-filter');\n this._filterChanged = false;\n\n // Is filter selected?\n this._selected = this._element.classList.contains('selected');\n if (initialState.selected)\n {\n this._selected = true;\n this._element.classList.add('selected');\n }\n\n // Is filter disabled?\n this._disabled = this._element.classList.contains('disabled');\n if (initialState.disabled)\n {\n this._disabled = true;\n this._element.classList.add('disabled');\n }\n\n this._element.addEventListener('click', this._onClick.bind(this));\n\n this._filterCheckInterval = setInterval(() =>\n {\n if (this._filterChanged)\n {\n this._filterChanged = false;\n this._onFilterChanged();\n }\n }, 100);\n }\n\n getState()\n {\n return {\n selected: this._selected,\n disabled: this._disabled,\n };\n }\n\n reset()\n {\n this._filterChanged = false;\n this._selected = false;\n this._element.classList.remove('selected');\n }\n\n disable()\n {\n this._disabled = true;\n this._element.classList.add('disabled');\n }\n\n enable()\n {\n this._disabled = false;\n this._element.classList.remove('disabled');\n }\n\n _onClick(event)\n {\n event.preventDefault();\n\n if (this._disabled) return;\n\n this._selected = !this._selected;\n\n if (this._selected)\n {\n this._element.classList.add('selected');\n }\n else\n {\n this._element.classList.remove('selected');\n }\n\n this._filterChanged = true;\n }\n\n _onFilterChanged()\n {\n this._filterManager.onQuickFilterChanged({\n filter: this._filter,\n selected: this._selected,\n object: this,\n });\n }\n\n isSelected()\n {\n return this._selected;\n }\n\n getFilter()\n {\n return this._filter;\n }\n}\n\nmodule.exports = QuickFilterElement;\n","const RangedFilter = require('./RangedFilter');\n\nclass DaysToExpireRange extends RangedFilter\n{\n /**\n * @param {HTMLElement} element\n * @param {string} name\n * @param {AdvancedFilterContainer} parentContainer\n * @param {RangedFilterState} initialState\n */\n constructor(element, name, parentContainer, initialState = {})\n {\n super(element, name, parentContainer, initialState);\n }\n}\n\nmodule.exports = DaysToExpireRange;\n","const RangedFilter = require('./RangedFilter');\n\nclass PremiumsRange extends RangedFilter\n{\n /**\n * @param {HTMLElement} element\n * @param {string} name\n * @param {AdvancedFilterContainer} parentContainer\n * @param {RangedFilterState} initialState\n */\n constructor(element, name, parentContainer, initialState = {})\n {\n super(element, name, parentContainer, initialState);\n }\n}\n\nmodule.exports = PremiumsRange;\n","const AdvancedFilter = require('../AdvancedFilter');\n\n/**\n * @typedef {min: number, max: number} RangedFilterState\n */\n\nconst DEFAULT_MIN = 0;\nconst DEFAULT_MAX = null;\n\nclass RangedFilter extends AdvancedFilter\n{\n /**\n * @param {HTMLElement} element\n * @param {string} name\n * @param {AdvancedFilterContainer} parentContainer\n * @param {RangedFilterState} initialState\n */\n constructor(element, name, parentContainer, initialState = {})\n {\n super(element, name, parentContainer);\n\n this._inputFrom = this._element.querySelector('[data-app=\"input-from\"]');\n this._inputFrom.value = '';\n this._inputFrom.placeholder = '0';\n\n this._inputTo = this._element.querySelector('[data-app=\"input-to\"]');\n this._inputTo.value = '';\n this._inputTo.placeholder = '∞';\n\n this._defaultMin = DEFAULT_MIN;\n this._defaultMax = DEFAULT_MAX;\n\n this._curMin = 0;\n this._curMax = null;\n\n // Has initial state\n const hasInitialValues = typeof initialState.min !== 'undefined' && typeof initialState.max !== 'undefined';\n if (hasInitialValues)\n {\n this._inputFrom.value = initialState.min !== this._defaultMin ? initialState.min : '';\n this._inputTo.value = initialState.max !== this._defaultMax ? initialState.max : '';\n\n this._adjustMinAndMaxValues();\n }\n\n this._state = {\n min: this._curMin,\n max: this._curMax,\n };\n\n this._attachEvents();\n }\n\n reset()\n {\n this._inputFrom.value = '';\n this._inputTo.value = '';\n\n this._curMin = this._defaultMin;\n this._curMax = this._defaultMax;\n\n this._state = {\n min: this._curMin,\n max: this._curMax,\n };\n }\n\n applyChanges()\n {\n this._state = {\n min: this._curMin,\n max: this._curMax,\n };\n\n super.applyChanges();\n }\n\n resetChanges()\n {\n this.reset();\n super.resetChanges();\n }\n\n getState()\n {\n return this._state;\n }\n\n getMin()\n {\n return this._curMin;\n }\n\n setMin(min)\n {\n this._curMin = min;\n return this;\n }\n\n setDefaultMin(min)\n {\n this._defaultMin = min;\n return this;\n }\n\n getMax()\n {\n return this._curMax;\n }\n\n setMax(max)\n {\n this._curMax = max;\n return this;\n }\n\n setDefaultMax(max)\n {\n this._defaultMax = max;\n return this;\n }\n\n setMinPlaceholder(placeholder)\n {\n this._minPlaceholder = placeholder;\n return this;\n }\n\n setMaxPlaceholder(placeholder)\n {\n this._maxPlaceholder = placeholder;\n return this;\n }\n\n _attachEvents()\n {\n this._inputFrom.addEventListener('change', () =>\n {\n this._adjustMinAndMaxValues();\n });\n\n this._inputTo.addEventListener('change', () =>\n {\n this._adjustMinAndMaxValues();\n });\n\n this._inputFrom.addEventListener('keyup', () =>\n {\n if (this._inputFrom.value !== '')\n {\n this.enableButtons();\n }\n });\n\n this._inputTo.addEventListener('keyup', () =>\n {\n if (this._inputTo.value !== '')\n {\n this.enableButtons();\n }\n });\n }\n\n _adjustMinAndMaxValues()\n {\n let hasChanges = false;\n\n // Adjust minimum value\n let min = parseInt(this._inputFrom.value, 10);\n if (Number.isNaN(min))\n {\n min = this._defaultMin;\n }\n else if (min < 0)\n {\n min = this._defaultMin;\n }\n else\n {\n min = Math.floor(min);\n }\n\n if (min !== this._curMin)\n {\n hasChanges = true;\n }\n this._curMin = min;\n\n // Adjust maximum value\n let max = parseInt(this._inputTo.value, 10);\n if (Number.isNaN(max))\n {\n max = this._defaultMax;\n }\n else if (max < 0)\n {\n max = this._defaultMax;\n }\n else\n {\n max = Math.floor(max);\n }\n\n if (max !== null)\n {\n if (max < min)\n {\n max = min + 1;\n }\n }\n\n if (max !== this._curMax)\n {\n hasChanges = true;\n }\n this._curMax = max;\n\n if (hasChanges)\n {\n this._inputFrom.value = min;\n this._inputTo.value = max;\n\n this.enableButtons();\n }\n }\n}\n\nmodule.exports = RangedFilter;\n","const RangedFilter = require('./RangedFilter');\n\nclass SizeRange extends RangedFilter\n{\n /**\n * @param {HTMLElement} element\n * @param {string} name\n * @param {AdvancedFilterContainer} parentContainer\n * @param {RangedFilterState} initialState\n */\n constructor(element, name, parentContainer, initialState = {})\n {\n super(element, name, parentContainer, initialState);\n }\n}\n\nmodule.exports = SizeRange;\n","const AdvancedFilter = require('../AdvancedFilter');\n\n/**\n * @typedef {} StockTypeSelectorState\n */\n\nclass StockTypeSelector extends AdvancedFilter\n{\n /**\n * @param {HTMLElement} element\n * @param {string} name\n * @param {AdvancedFilterContainer} parentContainer\n * @param {StockTypeSelectorState} initialState\n */\n constructor(element, name, parentContainer, initialState = {})\n {\n super(element, name, parentContainer);\n\n this._initialState = {\n stocks: true,\n etfs: true,\n indices: true,\n adrs: true,\n };\n\n this._selected = {};\n this._checkBoxes = {};\n\n let hasOverrides = false;\n\n /** @type {NodeListOf} */\n const checkBoxes = this._element.querySelectorAll('[data-select]');\n for (let i = 0; i < checkBoxes.length; i++)\n {\n const currentCheckBox = checkBoxes[i];\n const selectValue = currentCheckBox.getAttribute('data-select');\n\n if (this._initialState.hasOwnProperty(selectValue))\n {\n currentCheckBox.checked = this._initialState[selectValue];\n }\n\n if (initialState.hasOwnProperty(selectValue))\n {\n if (initialState[selectValue] !== this._initialState[selectValue])\n {\n hasOverrides = true;\n }\n\n currentCheckBox.checked = initialState[selectValue];\n }\n\n this._selected[selectValue] = currentCheckBox.checked;\n this._checkBoxes[selectValue] = currentCheckBox;\n this._checkBoxes[selectValue].addEventListener('change', () =>\n {\n this._onCheckBoxChange(selectValue);\n });\n }\n\n this._setSelectedState(this._selected);\n\n if (hasOverrides)\n {\n this.enableButtons();\n }\n }\n\n getState()\n {\n return this._selected;\n }\n\n resetChanges()\n {\n this.reset();\n super.resetChanges();\n }\n\n reset()\n {\n this._setSelectedState(this._initialState);\n }\n\n applyChanges()\n {\n this._setSelectedState(this._getSelected());\n super.applyChanges();\n }\n\n /**\n * @param {} selectedState\n * @private\n */\n _setSelectedState(selectedState)\n {\n this._selected = {};\n\n Object.keys(selectedState).forEach((selectValue) =>\n {\n this._selected[selectValue] = selectedState[selectValue];\n this._checkBoxes[selectValue].checked = selectedState[selectValue];\n });\n }\n\n _getSelected()\n {\n const selected = {};\n\n Object.keys(this._checkBoxes).forEach((selectValue) =>\n {\n selected[selectValue] = this._checkBoxes[selectValue].checked;\n });\n\n return selected;\n }\n\n _onCheckBoxChange()\n {\n this.enableButtons();\n }\n}\n\nmodule.exports = StockTypeSelector;\n","const axios = require('axios');\nconst AdvancedFilter = require('../AdvancedFilter');\nconst SearchBox = require('./symbol-filter/SearchBox');\n\n/**\n * @typedef {{ symbols: Array }} SymbolFilterState\n */\n\nclass SymbolFilter extends AdvancedFilter\n{\n /**\n * @param {HTMLElement} element\n * @param {string} name\n * @param {AdvancedFilterContainer} parentContainer\n * @param {SymbolFilterState} initialState\n */\n constructor(element, name, parentContainer, initialState)\n {\n super(element, name, parentContainer);\n\n /** @type {HTMLInputElement} */\n this._inputBox = this._element.querySelector('[data-app=\"search-input\"]');\n this._attachInputBoxEvents();\n\n /** @type {SearchBox} */\n this._searchBox = new SearchBox(\n this._element.querySelector('[data-app=\"search-results\"]'),\n this._inputBox,\n this,\n );\n\n /** @type {HTMLSpanElement} */\n this._invalidSymbolError = this._element.querySelector('[data-app=\"symbol-search-error\"]');\n\n /** @type {HTMLButtonElement} */\n this._addSymbolButton = this._element.querySelector('[data-app=\"search-add-symbol\"]');\n this._attachAddSymbolButtonEvents();\n\n /** @type {HTMLDivElement} */\n this._symbolDropzone = this._element.querySelector('[data-app=\"symbol-dropzone\"]');\n\n /** @type {Array} */\n this._symbols = [];\n\n /** @type {Object} */\n this._validSymbols = {};\n\n if (typeof initialState.symbols !== 'undefined')\n {\n initialState.symbols.forEach((symbol) =>\n {\n this.addSymbol(symbol);\n });\n }\n }\n\n /**\n * @returns {SymbolFilterState}\n */\n getState()\n {\n return {\n symbols: this._symbols,\n };\n }\n\n resetChanges()\n {\n this.reset();\n super.resetChanges();\n }\n\n reset()\n {\n this._symbols = [];\n this._loadDropzone();\n }\n\n /**\n * @private\n */\n _appendSymbolsToURL()\n {\n let url = window.location.pathname;\n const endPath = url.split('/').pop();\n\n const urlSymbols = this._symbols.filter((symbol) => symbol !== endPath);\n if (urlSymbols.length > 0)\n {\n url += `?symbols=${urlSymbols.join(',')}`;\n }\n\n window.history.replaceState({}, document.title, url);\n }\n\n /**\n * @param {string} symbol\n * @returns {bool}\n */\n addSymbol(symbol)\n {\n symbol = this._cleanSymbol(symbol);\n\n if (symbol.length === 0) return;\n\n if (this._symbols.includes(symbol)) return;\n\n this._checkValidSymbol(symbol)\n .then((validSymbol) =>\n {\n this._symbols.push(validSymbol);\n this._loadDropzone();\n this._invalidSymbolError.style.display = 'none';\n })\n .catch(() =>\n {\n this._invalidSymbolError.style.display = 'block';\n });\n }\n\n /**\n * @param {string} symbol\n * @returns {bool}\n */\n removeSymbol(symbol)\n {\n symbol = this._cleanSymbol(symbol);\n\n if (symbol.length === 0) return;\n\n if (!this._symbols.includes(symbol)) return;\n\n this._symbols.splice(this._symbols.indexOf(symbol), 1);\n\n this._loadDropzone();\n }\n\n /**\n * @param {string} symbol\n * @returns {Promise}\n * @private\n */\n _checkValidSymbol(symbol)\n {\n return new Promise((resolve, reject) =>\n {\n if (typeof this._validSymbols[symbol] !== 'undefined')\n {\n resolve(symbol);\n return;\n }\n\n axios.get(`/common/api/options/ValidSymbol?symbol=${symbol}`)\n .then(({ data, status }) =>\n {\n if (status === 200)\n {\n if (data.status === 'success')\n {\n this._validSymbols[symbol] = true;\n resolve(symbol);\n return;\n }\n }\n\n this._validSymbols[symbol] = false;\n reject(symbol);\n })\n .catch(() =>\n {\n this._validSymbols[symbol] = false;\n reject(symbol);\n });\n });\n }\n\n /**\n * @param {string} symbol\n */\n onSearchResultSelected(symbol)\n {\n this._addSymbol(symbol);\n this._closeSearchBox();\n }\n\n /**\n * @private\n */\n _attachInputBoxEvents()\n {\n this._inputBox.addEventListener('keydown', (event) =>\n {\n if (event.key === 'Enter')\n {\n this._addSymbolFromInput();\n }\n });\n\n this._inputBox.addEventListener('keyup', () => this._checkInputBoxIsEmpty());\n }\n\n /**\n * @private\n */\n _attachAddSymbolButtonEvents()\n {\n this._addSymbolButton.addEventListener('click', () =>\n {\n this._addSymbolFromInput();\n });\n }\n\n /**\n * @private\n */\n _enableAddSymbolButton()\n {\n this._addSymbolButton.classList.add('active');\n this._addSymbolButton.disabled = false;\n }\n\n /**\n * @private\n */\n _disableAddSymbolButton()\n {\n this._addSymbolButton.classList.remove('active');\n this._addSymbolButton.disabled = true;\n }\n\n /**\n * @private\n */\n _addSymbolFromInput()\n {\n this._addSymbol(this._inputBox.value);\n }\n\n /**\n * @param {string} symbol\n * @private\n */\n _addSymbol(symbol)\n {\n this.addSymbol(symbol);\n this._inputBox.value = '';\n this._checkInputBoxIsEmpty();\n\n this.applyChanges();\n }\n\n /**\n * @private\n */\n _checkInputBoxIsEmpty()\n {\n if (this._inputBox.value.trim().length === 0)\n {\n this._disableAddSymbolButton();\n this._closeSearchBox();\n }\n else\n {\n this._enableAddSymbolButton();\n }\n }\n\n /**\n * @private\n */\n _closeSearchBox()\n {\n this._searchBox.close();\n }\n\n /**\n * @param {string} symbol\n * @returns {string}\n * @private\n */\n _cleanSymbol(symbol)\n {\n return symbol.trim().toUpperCase();\n }\n\n /**\n * @private\n */\n _loadDropzone()\n {\n this._symbolDropzone.innerHTML = '';\n\n Object.keys(this._symbols).forEach((key) =>\n {\n const symbol = this._symbols[key];\n this._symbolDropzone.appendChild(this._getFilterItemElement(symbol));\n });\n\n this._appendSymbolsToURL();\n\n this.enableButtons();\n }\n\n /**\n * @param {string} symbol\n * @returns {HTMLSpanElement}\n */\n _getFilterItemElement(symbol)\n {\n const element = document.createElement('span');\n element.dataset.app = 'symbol-filter-item';\n element.dataset.symbol = symbol;\n\n const closeButton = document.createElement('i');\n closeButton.dataset.app = 'remove-symbol';\n closeButton.classList.add('fas', 'fa-times');\n\n closeButton.addEventListener('click', () =>\n {\n this.removeSymbol(symbol);\n this.applyChanges();\n });\n\n element.appendChild(closeButton);\n\n const symbolText = document.createElement('span');\n symbolText.innerText = symbol;\n\n element.appendChild(symbolText);\n\n return element;\n }\n}\n\nmodule.exports = SymbolFilter;\n","const RangedFilter = require('./RangedFilter');\n\nclass VolumeRange extends RangedFilter\n{\n /**\n * @param {HTMLElement} element\n * @param {string} name\n * @param {AdvancedFilterContainer} parentContainer\n * @param {RangedFilterState} initialState\n */\n constructor(element, name, parentContainer, initialState = {})\n {\n super(element, name, parentContainer, initialState);\n }\n}\n\nmodule.exports = VolumeRange;\n","const md5 = require('md5');\nconst axios = require('axios');\n\n/**\n * @typedef {{ symbol: string, name: string, market: string, logo: string }} SearchResult\n */\n\nclass SearchBox\n{\n /**\n * @param {HTMLDivElement} element\n * @param {HTMLInputElement} inputBox\n * @param {SymbolFilter} parent\n */\n constructor(element, inputBox, parent)\n {\n /** @type {HTMLDivElement} */\n this._element = element;\n\n /** @type {HTMLInputElement} */\n this._inputBox = inputBox;\n\n /** @type {SymbolFilter} */\n this._parent = parent;\n\n this._listeners = [];\n this._listeners.push(this._parent);\n\n /** @type {HTMLDivElement} */\n this._loadingBox = this._element.querySelector('.search-loading');\n\n /** @type {HTMLTableElement} */\n this._resultsTable = this._element.querySelector('table');\n\n /** @type {Object} */\n this._searchResults = {};\n\n /** @type {string} */\n this._currentDisplayedTerm = '';\n\n /** @type {string} */\n this._inputLookUpInterval = setInterval(() =>\n {\n const inputBoxValue = this._cleanSearchTerm(this._inputBox.value);\n if (inputBoxValue.length === 0)\n {\n this.close();\n return;\n }\n\n this._displayResultsForTerm(inputBoxValue);\n }, 150);\n }\n\n /**\n * @param {string} term\n * @returns {string}\n */\n _cleanSearchTerm(term)\n {\n return term.trim().toLowerCase();\n }\n\n close()\n {\n this._element.style.display = 'none';\n }\n\n open(withLoading)\n {\n this._element.style.display = 'block';\n\n if (withLoading)\n {\n this._resultsTable.style.display = 'none';\n this._loadingBox.style.display = 'flex';\n }\n else\n {\n this._resultsTable.style.display = 'table';\n this._loadingBox.style.display = 'none';\n }\n }\n\n /**\n * @param {string} term\n * @private\n */\n _displayResultsForTerm(term)\n {\n term = this._cleanSearchTerm(term);\n const results = this._getResulsFromMemory(term);\n if (results !== false)\n {\n if (this._currentDisplayedTerm !== term)\n {\n this._currentDisplayedTerm = term;\n this._displaySearchResults(results);\n this.open(false);\n return;\n }\n\n if (results.length === 0)\n {\n this.close();\n }\n }\n else\n {\n this.open(true);\n this._doLookUp(term);\n }\n }\n\n /**\n * @param {string} term\n * @returns {Promise}\n */\n _doLookUp(term)\n {\n term = this._cleanSearchTerm(term);\n\n this._getResultsFromAPI(term)\n .then((results) =>\n {\n this._searchResults[this._generateResultsKey(term)] = results;\n })\n .catch((results) =>\n {\n this._searchResults[this._generateResultsKey(term)] = results;\n });\n }\n\n /**\n * @param {string} term\n * @returns {Promise}\n */\n _getResultsFromAPI(term)\n {\n return new Promise((resolve, reject) =>\n {\n axios.get(`/common/api/search/OptionsLookup?term=${term}`)\n .then(({ data, status }) =>\n {\n if (status === 200)\n {\n if (data.status === 'success')\n {\n resolve(data.result.results);\n return;\n }\n }\n\n reject([]);\n })\n .catch(() =>\n {\n reject([]);\n });\n });\n }\n\n /**\n * @param {string} term\n * @returns {SearchResult[]|false}\n */\n _getResulsFromMemory(term)\n {\n const resultsKey = this._generateResultsKey(term);\n\n if (typeof this._searchResults[resultsKey] !== 'undefined')\n {\n return this._searchResults[resultsKey];\n }\n\n return false;\n }\n\n _generateResultsKey(term)\n {\n return md5(term);\n }\n\n /**\n * @param {HTMLTableRowElement} row\n */\n _fireOnRowClickEvent(row)\n {\n const { symbol } = row.dataset;\n this._listeners.forEach((listener) =>\n {\n if (typeof listener.onSearchResultSelected === 'function')\n {\n listener.onSearchResultSelected(symbol);\n }\n });\n }\n\n /**\n * @param {SearchResult[]} results\n */\n _displaySearchResults(results)\n {\n this._resultsTable.innerHTML = '';\n results.forEach((result) =>\n {\n const row = this._getRowElement(result);\n\n row.addEventListener('click', () =>\n {\n this._fireOnRowClickEvent(row);\n });\n\n this._resultsTable.appendChild(row);\n });\n }\n\n /**\n * @param {SearchResult} result\n * @returns\n */\n _getRowElement({\n symbol, name, market, logo,\n })\n {\n const rowElement = document.createElement('tr');\n\n rowElement.classList.add('search-result');\n rowElement.dataset.symbol = symbol;\n\n // Logo Cell\n const logoCell = document.createElement('td');\n logoCell.classList.add('logo');\n const logoImage = document.createElement('img');\n logoImage.src = logo;\n logoCell.appendChild(logoImage);\n rowElement.appendChild(logoCell);\n\n // Symbol Cell\n const symbolCell = document.createElement('td');\n symbolCell.classList.add('symbol');\n symbolCell.innerText = symbol;\n rowElement.appendChild(symbolCell);\n\n // Name Cell\n const nameCell = document.createElement('td');\n nameCell.classList.add('name');\n nameCell.innerText = `${name.substring(0, 15)}...`;\n rowElement.appendChild(nameCell);\n\n // Market\n const marketCell = document.createElement('td');\n marketCell.classList.add('market');\n marketCell.innerText = market;\n rowElement.appendChild(marketCell);\n\n return rowElement;\n }\n}\n\nmodule.exports = SearchBox;\n","const QuickFilterElement = require('../filters/QuickFilterElement');\nconst AdvancedFilterContainer = require('../filters/AdvancedFilterContainer');\n\nclass FilterManager\n{\n /**\n * @param {OptionsFlow} parent\n * @param {StateManager} stateManager\n */\n constructor(parent, stateManager)\n {\n /** @type {OptionsFlow} */\n this._parent = parent;\n\n /** @type {StateManager} */\n this._stateManager = stateManager;\n\n /** @type {boolean} */\n this._disabled = false;\n\n this._quickFilters = [];\n this._quickFiltersState = {};\n this._loadQuickFilters(this._stateManager);\n\n /** @type {AdvancedFilterContainer} */\n this._advancedFiltersContainer = null;\n this._loadAdvancedFilters(this._stateManager);\n }\n\n /**\n * @returns {OptionsFlow}\n */\n getParent()\n {\n return this._parent;\n }\n\n getState()\n {\n return {\n quickFilters: this.getQuickFiltersState(),\n advancedFilters: this.getAdvancedFiltersState(),\n };\n }\n\n reset()\n {\n this._quickFiltersState = [];\n this._quickFilters.forEach((filter) =>\n {\n filter.reset();\n });\n\n if (this._advancedFiltersContainer)\n {\n this._advancedFiltersContainer.reset();\n }\n }\n\n disable()\n {\n this._disabled = true;\n this._disableQuickFilters();\n this._disableAdvancedFilters();\n }\n\n _disableQuickFilters()\n {\n this._quickFilters.forEach((filter) =>\n {\n filter.disable();\n });\n }\n\n _disableAdvancedFilters()\n {\n if (this._advancedFiltersContainer)\n {\n this._advancedFiltersContainer.disable();\n }\n }\n\n enable()\n {\n this._disabled = false;\n this._enableQuickFilters();\n this._enableAdvancedFilters();\n }\n\n _enableQuickFilters()\n {\n this._quickFilters.forEach((filter) =>\n {\n filter.enable();\n });\n }\n\n _enableAdvancedFilters()\n {\n if (this._advancedFiltersContainer)\n {\n this._advancedFiltersContainer.enable();\n }\n }\n\n /**\n * @param {string} filter\n * @param {boolean} selected\n * @param {QuickFilterElement} object\n */\n onQuickFilterChanged({ filter, selected, object })\n {\n if (this._quickFiltersState[filter])\n {\n this._quickFiltersState[filter].selected = selected;\n }\n\n this._parent.onQuickFilterChanged({ filter, selected, object });\n }\n\n /**\n * @param {AdvancedFilter} filter\n */\n onAdvancedFilterChanged(filter)\n {\n this._parent.onAdvancedFilterChanged(filter);\n }\n\n /**\n * @returns {}\n */\n getQuickFiltersState()\n {\n return this._quickFiltersState;\n }\n\n getAdvancedFiltersState()\n {\n return this._advancedFiltersContainer.getFiltersState();\n }\n\n /**\n * @param {StateManager} stateManager\n * @private\n */\n _loadQuickFilters(stateManager)\n {\n /* @type {HTMLDivElement} */\n const quickFiltersSelector = this._parent.getElement().querySelector('.quick-filters-selector');\n\n if (quickFiltersSelector.dataset.mode === 'mobile')\n {\n /* @type {HTMLButtonElement} */\n const triggerButton = this._parent.getElement().querySelector('[data-app=advanced-filters-button]');\n triggerButton.addEventListener('click', (event) =>\n {\n event.preventDefault();\n\n const isHidden = (quickFiltersSelector.classList.contains('hidden'));\n let shouldHide = !isHidden;\n\n if (!triggerButton.classList.contains('active'))\n {\n shouldHide = false;\n }\n\n if (shouldHide)\n {\n quickFiltersSelector.classList.add('hidden');\n }\n else\n {\n quickFiltersSelector.classList.remove('hidden');\n }\n });\n }\n\n const elements = this._parent.getElement().querySelectorAll('[data-filter].quick-filter');\n if (elements.length > 0)\n {\n const filtersState = stateManager.getFiltersState('quickFilters');\n elements.forEach((element) =>\n {\n const filterName = element.getAttribute('data-filter');\n const initialState = filtersState[filterName] || {};\n\n const filterElement = new QuickFilterElement(element, this, initialState);\n\n this._quickFiltersState[filterElement.getFilter()] = {\n selected: filterElement.isSelected(),\n };\n\n this._quickFilters.push(filterElement);\n });\n }\n }\n\n /**\n * @param {StateManager} stateManager\n * @private\n */\n _loadAdvancedFilters(stateManager)\n {\n const advancedFilterButton = this._parent.getElement().querySelector('[data-app=advanced-filters-button]');\n const filtersContainer = this._parent.getElement().querySelector('[data-app=flow-advanced-filters]');\n if (filtersContainer && advancedFilterButton)\n {\n let openByDefault = false;\n\n // If symbols are chosen then load opened to let user know\n if (this._parent.getInitialData('symbols') && this._parent.getInitialData('symbols').length > 0)\n {\n openByDefault = true;\n }\n\n // If mobile mode then do not load opened\n if (this._parent.isMobileMode())\n {\n openByDefault = false;\n }\n\n this._advancedFiltersContainer = new AdvancedFilterContainer(\n filtersContainer, // Box where advanced filters are\n advancedFilterButton, // Button to open/close advanced filters\n this, // Filter manager\n stateManager, // State manager\n openByDefault, // Opened?\n false, // Disabled?\n );\n\n if (!this._parent.isLoggedIn())\n {\n this._advancedFiltersContainer.enableRegistrationConversion();\n }\n }\n }\n}\n\nmodule.exports = FilterManager;\n","class NotificationsManager\n{\n constructor(parent, active = false)\n {\n /** @type {OptionsFlow} */\n this._parent = parent;\n\n /** @type {boolean} */\n this._active = active;\n\n /** @type {HTMLButtonElement} */\n this._alertButton = this._parent.getElement().querySelector('[data-app=\"notifications-button\"]');\n this._alertButtonIcon = this._alertButton.querySelector('i');\n\n this._alertButton.addEventListener('click', (event) => this._handleButtonClick(event));\n\n /** @type {Audio} */\n this._soundAlert = new Audio('/cdn/sounds/alert.mp3');\n\n if (this._active)\n {\n this.activate();\n }\n else\n {\n this.deactivate();\n }\n\n // TODO: Browser notifications\n }\n\n activate()\n {\n this._active = true;\n this._alertButton.classList.add('active');\n this._alertButtonIcon.classList.remove('fa-bell-slash');\n this._alertButtonIcon.classList.add('fa-bell');\n }\n\n deactivate()\n {\n this._active = false;\n this._alertButton.classList.remove('active');\n this._alertButtonIcon.classList.remove('fa-bell');\n this._alertButtonIcon.classList.add('fa-bell-slash');\n }\n\n alert()\n {\n if (this._active)\n {\n this._soundAlert.play();\n }\n }\n\n _handleButtonClick(event)\n {\n event.preventDefault();\n\n if (this._active)\n {\n this.deactivate();\n }\n else\n {\n this.activate();\n }\n }\n}\n\nmodule.exports = NotificationsManager;\n","const STATE_KEY = 'options_flow_state';\n\nclass StateManager\n{\n /**\n * @param {OptionsFlow} parent\n */\n constructor(parent)\n {\n this._parent = parent;\n\n this._enabled = this._supportsLocalStorage();\n\n this._state = {};\n this._load();\n }\n\n save()\n {\n if (!this._enabled) return;\n\n const state = this._parent.getState();\n localStorage.setItem(this._getKey(), JSON.stringify(state));\n }\n\n /**\n * @returns {OptionsFlow}\n */\n getParent()\n {\n return this._parent;\n }\n\n getState()\n {\n return this._state;\n }\n\n hasStateForKey(key)\n {\n return this._state.hasOwnProperty(key);\n }\n\n /**\n * @param {string} typeOfFilters\n * @returns {}\n */\n getFiltersState(typeOfFilters)\n {\n if (!this.hasStateForKey('filterManager')) return {};\n\n const state = this._state.filterManager;\n\n if (!state.hasOwnProperty(typeOfFilters)) return {};\n\n return state[typeOfFilters];\n }\n\n _load()\n {\n if (!this._enabled) return;\n\n const state = localStorage.getItem(this._getKey());\n if (state)\n {\n this._state = JSON.parse(state);\n }\n }\n\n _getKey()\n {\n return `${STATE_KEY}_v20230807-1947`;\n }\n\n _supportsLocalStorage()\n {\n return typeof Storage !== 'undefined';\n }\n}\n\nmodule.exports = StateManager;\n","const FlowSummaryElement = require('./FlowSummaryElement');\n\nclass FlowSummary\n{\n /**\n * @param {HTMLElement} element\n */\n constructor(element)\n {\n this._element = element;\n\n /** @type {{}} */\n this._lang = {};\n this._bootUpLang();\n\n /** @type {FlowSummaryElement[]} */\n this._summaryElements = [];\n this._bootUpElements();\n }\n\n /**\n * @private\n */\n _bootUpLang()\n {\n const langElement = this._element.querySelector('[data-app=\"summary-lang\"]');\n if (langElement)\n {\n this._lang.bearish = langElement.getAttribute('data-lang-bearish');\n this._lang.bullish = langElement.getAttribute('data-lang-bullish');\n this._lang.neutral = langElement.getAttribute('data-lang-neutral');\n }\n }\n\n /**\n * @private\n */\n _bootUpElements()\n {\n const summaryElements = this._element.querySelectorAll('[data-app=\"summary-element\"]');\n summaryElements.forEach((element) =>\n {\n const summaryElement = new FlowSummaryElement(element, this);\n this._summaryElements[summaryElement.getID()] = summaryElement;\n });\n }\n\n /**\n * @param {{}} summary\n */\n updateSummary(summary)\n {\n this._updateSummaryElements(summary);\n }\n\n /**\n * @param {{}} summary\n */\n _updateSummaryElements(summary)\n {\n Object.keys(summary).forEach((key) =>\n {\n if (this._summaryElements[key])\n {\n this._summaryElements[key].setValue(summary[key]);\n }\n });\n }\n\n /**\n * @param {string} key\n * @returns {string}\n */\n getLang(key)\n {\n if (this._lang[key])\n {\n return this._lang[key];\n }\n return key;\n }\n}\n\nmodule.exports = FlowSummary;\n","class FlowSummaryElement\n{\n /**\n * @param {HTMLElement} element\n * @param {FlowSummary} parent\n */\n constructor(element, parent)\n {\n this._parent = parent;\n\n /**\n * @type {HTMLElement}\n */\n this._element = element;\n\n /**\n * @type {string}\n */\n this._id = this._element.getAttribute('data-id');\n\n /**\n * @type {HTMLElement}\n */\n this._valueElement = this._element.querySelector('[data-app=\"summary-value\"]');\n\n /**\n * @type {string}\n */\n this._curValue = this._valueElement.innerText;\n\n this.setValue('...', 'loading');\n }\n\n /**\n * @returns {string}\n */\n getID()\n {\n return this._id;\n }\n\n /**\n * @param {string} value\n */\n setValue(value, cssClass = null)\n {\n value = value.toString()\n .trim()\n .substring(0, 10);\n\n if (value.length === 0) return;\n\n if (value === this._curValue) return;\n\n this._valueElement.style.opacity = 0;\n\n this._curValue = value;\n\n this._valueElement.classList = [];\n if (cssClass)\n {\n this._valueElement.classList = [];\n this._valueElement.classList.add(cssClass);\n }\n else\n {\n const valueToCheck = parseFloat(this._curValue);\n if (!Number.isNaN(valueToCheck))\n {\n if (valueToCheck < 0)\n {\n this._valueElement.classList.add('negative');\n }\n else if (valueToCheck > 0)\n {\n this._valueElement.classList.add('positive');\n }\n else\n {\n this._valueElement.classList.add('unchanged');\n }\n }\n else if (this._curValue === 'bearish')\n {\n this._valueElement.classList.add('negative');\n }\n else if (this._curValue === 'bullish')\n {\n this._valueElement.classList.add('positive');\n }\n else\n {\n this._valueElement.classList.add('unchanged');\n }\n }\n\n this._valueElement.innerText = this._getDisplayValue();\n\n setTimeout(() =>\n {\n this._valueElement.style.opacity = 1;\n }, 100);\n }\n\n /**\n * @returns {string}\n */\n _getDisplayValue()\n {\n if (this._id === 'overall_flow')\n {\n return this._parent.getLang(this._curValue);\n }\n return this._curValue;\n }\n}\n\nmodule.exports = FlowSummaryElement;\n","const FlowTableRow = require('./FlowTableRow');\nconst SortingColumn = require('./SortingColumn');\n\nconst MAX_ROWS = 400;\n\nclass FlowTable\n{\n /**\n *\n * @param {HTMLElement} element\n * @param {OptionsFlow} parent\n */\n constructor(element, parent)\n {\n this._parent = parent;\n\n this._element = element;\n\n this._mode = this._element.dataset.mode;\n\n this._tableHead = this._element.querySelector('thead');\n this._tableBody = this._element.querySelector('tbody');\n\n /** @type {SortingColumn[]} */\n this._sortingColumns = [];\n this._heandleTableHeadings();\n\n /** @type {FlowTableRow[]} */\n this._rows = [];\n this._rowIds = [];\n\n this._rowsQueue = [];\n\n this._queueInterval = setInterval(() => this._processQueue(), 100);\n this._cleanInterval = setInterval(() => this._cleanRows(), 1000);\n }\n\n isEmpty()\n {\n return this._rows.length === 0 && this._rowsQueue.length === 0;\n }\n\n hide()\n {\n this._element.style.display = 'none';\n }\n\n show()\n {\n this._element.style.display = 'table';\n }\n\n reset()\n {\n this._rows = [];\n this._rowIds = [];\n\n this._rowsQueue = [];\n this._tableBody.innerHTML = '';\n }\n\n /**\n * @param {{}} rows\n */\n queueRows(rows)\n {\n rows.reverse().forEach((row) => this._rowsQueue.push(row));\n }\n\n _hasRowID(id)\n {\n return this._rowIds.includes(id);\n }\n\n _processQueue()\n {\n let timeout = 0;\n\n let hasNewRows = false;\n const fireEvent = this._rows.length > 0 && this._rowsQueue.length > 0;\n\n this._rowsQueue.forEach((row) =>\n {\n if (!this._hasRowID(row.id))\n {\n this._rowIds.push(row.id);\n\n const newRow = new FlowTableRow(row, this._mode, this._parent);\n this._rows.push(newRow);\n\n const rowElement = newRow.getElement();\n rowElement.classList.add('new');\n this._tableBody.prepend(rowElement);\n\n timeout += 5;\n setTimeout(() => rowElement.classList.remove('new'), timeout);\n\n hasNewRows = true;\n }\n });\n\n if (hasNewRows && fireEvent)\n {\n this._fireNewResultsEvent();\n }\n\n this._rowsQueue = [];\n }\n\n _fireNewResultsEvent()\n {\n this._parent.onNewResults();\n }\n\n _cleanRows()\n {\n if (this._rows.length > MAX_ROWS)\n {\n const rowsToRemove = this._rows.length - MAX_ROWS;\n for (let i = 0; i < rowsToRemove; ++i)\n {\n const row = this._rows.shift();\n row.getElement().remove();\n }\n }\n }\n\n _heandleTableHeadings()\n {\n const headings = this._tableHead.querySelectorAll('th');\n headings.forEach((heading) =>\n {\n if (heading.dataset.app === 'sort-column')\n {\n const sortingColumn = new SortingColumn(heading);\n\n sortingColumn.addListener(this);\n sortingColumn.addListener(this._parent);\n\n this._sortingColumns.push(sortingColumn);\n }\n\n heading.style.width = `${heading.offsetWidth}px`;\n });\n }\n\n handleSortingStateChange(column, direction)\n {\n this._sortingColumns.forEach((sortingColumn) =>\n {\n if (sortingColumn.getSortColumn() !== column || direction === null)\n {\n sortingColumn.setActiveState(false);\n }\n });\n }\n}\n\nmodule.exports = FlowTable;\n","class FlowTableRow\n{\n /**\n * @param {{}} data\n * @param {'desktop'|'mobile'} mode\n * @param {OptionsFlow} parent\n */\n constructor(data, mode, parent)\n {\n /** @type {OptionsFlow} */\n this._parent = parent;\n this._mode = mode;\n this._element = this._buildElement(data);\n }\n\n /**\n * @returns {HTMLElement}\n */\n getElement()\n {\n return this._element;\n }\n\n /**\n * @param {{}} data\n * @returns {HTMLElement}\n * @private\n */\n _buildElement(data)\n {\n const row = document.createElement('tr');\n row.id = `flow-row-${data.id}`;\n\n let cell = null; let anchor = null; let\n badge = null;\n\n // Date time\n cell = document.createElement('td');\n cell.classList.add('date');\n cell.innerText = data.datetime;\n row.appendChild(cell);\n\n // Symbol\n cell = document.createElement('td');\n cell.classList.add('symbol-link');\n anchor = document.createElement('a');\n anchor.href = data.chain_link;\n anchor.innerText = data.symbol;\n cell.appendChild(anchor);\n row.appendChild(cell);\n\n // Call / Put\n cell = document.createElement('td');\n badge = document.createElement('span');\n badge.classList.add('badge');\n if (data.call)\n {\n badge.classList.add('badge-call');\n badge.innerText = 'Call';\n }\n else\n {\n badge.classList.add('badge-put');\n badge.innerText = 'Put';\n }\n cell.appendChild(badge);\n row.appendChild(cell);\n\n // Sweep\n cell = document.createElement('td');\n badge = document.createElement('span');\n badge.classList.add('badge');\n if (data.sweep)\n {\n badge.classList.add('badge-sweep');\n badge.innerText = 'Sweep';\n }\n cell.appendChild(badge);\n row.appendChild(cell);\n\n // Side\n cell = document.createElement('td');\n badge = document.createElement('span');\n badge.classList.add('badge');\n badge.classList.add(`badge-${data.side.toLowerCase()}`);\n badge.innerText = data.side.toUpperCase();\n cell.appendChild(badge);\n row.appendChild(cell);\n\n // Strike\n cell = document.createElement('td');\n cell.classList.add('numeric');\n cell.innerText = data.strike;\n row.appendChild(cell);\n\n // Spot Price\n cell = document.createElement('td');\n cell.classList.add('numeric');\n cell.innerText = data.spot_price;\n row.appendChild(cell);\n\n // Expiration Date\n cell = document.createElement('td');\n cell.classList.add('numeric');\n cell.innerText = data.exp_date;\n row.appendChild(cell);\n\n // DTE\n cell = document.createElement('td');\n cell.classList.add('numeric');\n cell.innerText = `${data.dte}d`;\n row.appendChild(cell);\n\n // Size\n cell = document.createElement('td');\n cell.classList.add('numeric');\n cell.innerText = data.size;\n row.appendChild(cell);\n\n // Premium\n cell = document.createElement('td');\n cell.classList.add('numeric');\n if (!this._parent.isLoggedIn())\n {\n cell.classList.add('premium-lock');\n cell.title = 'Register to view the option trade Premium data behind the lock.';\n\n cell.onclick = () =>\n {\n window.dataLayer.push({\n event: 'modal_cta_button_click',\n location: 'options_flow_premium_lock_default',\n view: this._parent.getView(),\n });\n window.loadCTARegisterModal();\n };\n }\n else\n {\n cell.innerText = data.premium;\n }\n\n row.appendChild(cell);\n\n // Price\n cell = document.createElement('td');\n cell.classList.add('numeric');\n cell.innerText = data.price;\n row.appendChild(cell);\n\n // Open Interest\n cell = document.createElement('td');\n cell.classList.add('numeric');\n cell.innerText = data.open_interest;\n row.appendChild(cell);\n\n // Volume\n cell = document.createElement('td');\n cell.classList.add('numeric');\n cell.innerText = data.volume;\n cell.title = data.stock_type;\n row.appendChild(cell);\n\n return row;\n }\n}\n\nmodule.exports = FlowTableRow;\n","class SortingColumn\n{\n /**\n * @param {HTMLElement} element\n */\n constructor(element)\n {\n this._element = element;\n\n this._element.style.cursor = 'pointer';\n this._sortColumn = this._element.dataset.type;\n\n this._iconElement = this._element.querySelector('i');\n\n this._sortDirection = null;\n this._active = false;\n\n this._listeners = [];\n\n this._setUpEvents();\n }\n\n addListener(listener)\n {\n this._listeners.push(listener);\n }\n\n getSortColumn()\n {\n return this._sortColumn;\n }\n\n getSortDirection()\n {\n return this._sortDirection;\n }\n\n _alertListeners()\n {\n this._listeners.forEach((listener) =>\n {\n listener.handleSortingStateChange(this._sortColumn, this._sortDirection);\n });\n }\n\n setActiveState(active, direction = null)\n {\n if (active)\n {\n this._element.classList.add('active');\n }\n else\n {\n this._element.classList.remove('active');\n }\n\n this._active = active;\n\n if (direction === null)\n {\n this._iconElement.classList.remove('fa-sort-up');\n this._iconElement.classList.remove('fa-sort-down');\n this._iconElement.classList.add('fa-sort');\n }\n else if (direction === 'asc')\n {\n this._iconElement.classList.remove('fa-sort');\n this._iconElement.classList.remove('fa-sort-down');\n this._iconElement.classList.add('fa-sort-up');\n }\n else if (direction === 'desc')\n {\n this._iconElement.classList.remove('fa-sort');\n this._iconElement.classList.remove('fa-sort-up');\n this._iconElement.classList.add('fa-sort-down');\n }\n\n this._sortDirection = direction;\n }\n\n _setUpEvents()\n {\n this._element.addEventListener('click', () =>\n {\n let active = true;\n\n let direction = null;\n if (this._sortDirection === null)\n {\n direction = 'desc';\n }\n else if (this._sortDirection === 'desc')\n {\n direction = 'asc';\n }\n else if (this._sortDirection === 'asc')\n {\n direction = null;\n active = false;\n }\n\n this.setActiveState(active, direction);\n\n this._alertListeners();\n });\n }\n}\n\nmodule.exports = SortingColumn;\n","// style-loader: Adds some css to the DOM by adding a