{"version":3,"sources":["webpack:///./src/shared/utilities/screenSize.js","webpack:///./node_modules/process/browser.js","webpack:///./src/components/molecules/dynamic-pricing/dynamic-pricing-tracking.js","webpack:///./src/components/molecules/dynamic-pricing/dynamic-pricing2-utils.js","webpack:///./src/components/molecules/dynamic-pricing/dynamic-pricing2.js","webpack:///./src/shared/utilities/debounce.js","webpack:///./src/shared/utilities/pubsub.js","webpack:///./src/framework/base/base.js","webpack:///./src/shared/utilities/case.ts","webpack:///./src/shared/utilities/id.js","webpack:///./src/shared/utilities/objectToQueryString.js"],"names":["defaultWidths","sm","md","lg","xl","getBreakpoint","window","getComputedStyle","document","querySelector","getPropertyValue","replace","screenSmallerThan","size","widths","arguments","length","undefined","Object","prototype","hasOwnProperty","call","Error","concat","keys","join","innerWidth","screenGreatOrEqualTo","cachedSetTimeout","cachedClearTimeout","process","module","exports","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","e","this","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","Array","i","push","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","config","SEARCH_TYPE_INSTRUMENT","SEARCH_TYPE_TRADE","SEARCH_TYPE_INFO","SEARCH_DEFAULT_FILTER","SEARCH_NO_INSTRUMENT","trackSearch","searchObj","_window","_satellite","digitalData","adobeDataLayer","search","track","componentViewed","componentInfo","componentId","componentType","measures","impression","dynamicPricingWidgetInfo","dynamicPricingWidgetAsset","asset","dynamicPricingWidgetInstrument","instrument","dynamicPricingWidgetTerm","term","dynamicPricingWidgetType","type","_objectSpread","event","error","console","message","getExchangeColumn","country","exchange","getInstrumentColumn","Name","Icon","Currency","HideCountry","HideCurrency","Country","HasAssetIcon","HideSubtitleText","Exchange","Symbol","getPricingColumn","pricingPlans","map","column","HasMultilineFormatting","Value","SubValue","getInfoColumn","context","info","showInfoCol","Hide","infoUrl","servicedomain","Url","getTradeColumn","assetName","uic","tradeCol","template","innerHTML","match","getInstrumentHeader","index","startIndex","loadMore","id","dom","dpContainer","dataset","guid","Date","getTime","getInstrumentDetails","_context$tradeCol","exchangeStr","tradeColTemplate","isETFTable","isExchangeColumn","item","ShowInfo","trim","Label","params","infoMobiletext","getErrorTemplate","msg","getElementById","getNoresultsTemplate","noresult","query","current","checkAndRenderForNoResult","data","desktopFrag","mobileFrag","noResultsMarkup","mobileRow","createElement","row","col","colSpan","appendChild","prepareContentForTable","_item$Instrument","_item$Instrument2","_item$Instrument5","_item$Instrument6","_item$Instrument3","_item$Instrument4","exchangeColumn","instrumentSection","Instrument","AssetName","Uic","PricingPlans","infoColumn","Info","tradeColumn","setAttribute","classList","add","instrumentHeader","instrumentDetails","dataValues","DynamicPricing2","_BaseBehavior","element","_this","_classCallCheck","_callSuper","tableType","Boolean","exchangeColumnId","initDomCache","status","cols","lastValid","url","priceFilter","text","value","records","total","skip","top","cachedResponse","isSearchResultPageComponent","closest","init","addEventListeners","filterIds","from","querySelectorAll","dropdownId","filterIdsClone","_toConsumableArray","addSubscriptions","_inherits","_createClass","key","_this2","_this$dom$dpContainer","serviceuicurl","servicekeywordurl","commissiongroupids","uics","assetids","namecategoryid","culture","database","environment","getinfodata","db","lang","prepareHeaderInfo","startsWith","showStaticAssetMsg","remove","prepareURL","fetchInstrumentRows","then","response","Data","renderContent","filterEmptyRows","updateTotalRecordsAndUrl","catch","handleErrorState","finally","HasMoreResults","TotalCount","staticMarkup","desktopRows","mobileRows","assetMarkup","showStaticMessage","_this$dom$dpContainer2","_this$dom$dpContainer3","errorTitle","_this$dom$dpContainer4","errorMsg","errorMarkup","_this3","srpInstrumentSectionPf","srpInstrumentSectionLiPf","_srpInstrumentSection","selectedPriceFilter","srpComp","_selected$innerText","selected","innerText","split","forEach","colId","commissiongroupid","find","val","_col$querySelector$in","obj","keywords","searchParams","_this$dom$searchConta","searchContainer","_this$dom$searchConta2","_this$dom$searchConta3","namecategoryidforsearch","Number","updateSearchParamsForETF","updateSearchParamsForNonETF","countryFilter","proficiencyFilter","toLowerCase","countryVal","marketcode","objectToQueryString","_this$dom$exchangeFil","minKeys","min","assetsFilter","exchangeIds","exchangeFilter","filterId","dpElement","findIndex","filter","splice","searchBox","clearSearch","_this4","subscribe","_ref","subscriptionResetDone","targetID","triggerSearch","_ref2","html","extraData","originSourceDP","source","handleContainerClick","assetId","unsubscribe","_this5","addEventListener","filters","handleSearch","resetSearch","timer","focus","txt","test","filterType","refineMessage","isSearch","triggeredFromETFDropdowon","_this$dom$assetsFilte","_this6","filterQuery","checkForNoSearch","beforeTriggerSearch","assetFilterVal","includes","processAfterResponse","target","behavior","publish","targetId","div","cta","closeHeaderInfoPopup","bind","cssClass","isSearchResultPage","_this7","processAfterShowMoreClickResponse","_row$querySelector","_row$querySelector2","_row$querySelector3","_row$dataset","_row$dataset2","_this$dom$searchBox2","_this$dom$filter","headerIcon","templateId","openHeaderInfoPopup","handleLoadMoreClick","_this$dom$searchBox","_this$dom$assetsFilte2","icon","iconMatches","style","backgroundImage","flag","className","currency","_this$dom$dpContainer5","updateMarkupTemplate","markup","regEx","RegExp","_this8","_ref3","detailedPlans","ele","insData","filteredData","getColumns","some","_this9","settingQueryParamsForSRP","createDocumentFragment","setStartIndex","srpDesktopRows","srpMobileRows","isNoResult","checkForLoadMoreBtn","triggerToResetDefaultForNoResult","_this10","resetDefaultLinks","isMoreRecords","maxRecords","loadMoreTxt","_this11","fetch","ok","statusText","json","responseJson","BaseBehavior","debounce","func","wait","immediate","_len","_key","later","callNow","pubsub","PubSub","subscriptions","topic","_step","_iterator","_createForOfIteratorHelper","s","n","done","fn","err","f","state","events","behaviorName","camelCaseToDashCase","getAttribute","instanceId","generateId","attachInstanceId","partialState","removeAttribute","el","ref","dashCaseToCamelCase","delay","breakpoint","debouncedGetBreakpoint","newBreakPoint","useCapture","removeEventListener","navigation","getBoundingClientRect","bottom","scrollY","scroll","reason","promise","log","str","x","chr","toUpperCase","alphabet","charAt","Math","floor","random","reduce","queryString","encodeURIComponent"],"mappings":"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","file":"23-626af83a.js","sourcesContent":["export const defaultWidths = {\r\n\tsm: 768,\r\n\tmd: 1024,\r\n\tlg: 1280,\r\n\txl: 1400\r\n};\r\n\r\n// getBreakpoint :: Void -> String\r\nexport const getBreakpoint = () =>\r\n\twindow\r\n\t\t.getComputedStyle(document.querySelector('body'), ':before')\r\n\t\t.getPropertyValue('content')\r\n\t\t.replace(/\"/g, '');\r\n\r\n// function :: String -> ?Object -> Boolean\r\nexport function screenSmallerThan(size, widths = defaultWidths) {\r\n\tif (!Object.prototype.hasOwnProperty.call(widths, size)) {\r\n\t\tthrow new Error(`size must be one of: ${Object.keys(widths).join(', ')}`);\r\n\t}\r\n\treturn window.innerWidth < widths[size];\r\n}\r\n\r\nexport function screenGreatOrEqualTo(size, widths = defaultWidths) {\r\n\tif (!Object.prototype.hasOwnProperty.call(widths, size)) {\r\n\t\tthrow new Error(`size must be one of: ${Object.keys(widths).join(', ')}`);\r\n\t}\r\n\treturn window.innerWidth >= widths[size];\r\n}\r\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/* eslint no-underscore-dangle: 0 */\r\n\r\nexport const config = {\r\n\tSEARCH_TYPE_INSTRUMENT: 'Search instrument',\r\n\tSEARCH_TYPE_TRADE: 'trade',\r\n\tSEARCH_TYPE_INFO: 'Instrument info',\r\n\tSEARCH_DEFAULT_FILTER: 'All',\r\n\tSEARCH_NO_INSTRUMENT: 'No instrument'\r\n};\r\n\r\nexport function trackSearch(searchObj) {\r\n\ttry {\r\n\t\t// TODO: digital data object would be removed once Analytics 2 is finalized\r\n\t\tconst { _satellite, digitalData, adobeDataLayer } = window;\r\n\t\tif (_satellite && digitalData) {\r\n\t\t\tdigitalData.search = searchObj;\r\n\t\t\t_satellite.track && _satellite.track('dynamicPricingWidget');\r\n\t\t}\r\n\t\tif (adobeDataLayer) {\r\n\t\t\tconst componentViewed = {\r\n\t\t\t\tcomponentInfo: {\r\n\t\t\t\t\tcomponentId: '', // LIST id of component\r\n\t\t\t\t\tcomponentType: 'pricing-widget'\r\n\t\t\t\t},\r\n\t\t\t\tmeasures: {\r\n\t\t\t\t\timpression: '1' // since component is in view already\r\n\t\t\t\t},\r\n\t\t\t\tdynamicPricingWidgetInfo: {\r\n\t\t\t\t\t// if the component is the dynamic pricing widget, these fields should be populated\r\n\t\t\t\t\tdynamicPricingWidgetAsset: searchObj.asset,\r\n\t\t\t\t\tdynamicPricingWidgetInstrument: searchObj.instrument,\r\n\t\t\t\t\tdynamicPricingWidgetTerm: searchObj.term,\r\n\t\t\t\t\tdynamicPricingWidgetType: searchObj.type\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tadobeDataLayer.push({ event: 'componentViewed', ...componentViewed });\r\n\t\t}\r\n\t} catch (error) {\r\n\t\tconsole.error(`${error.name} : ${error.message}`);\r\n\t}\r\n}\r\n","export function getExchangeColumn(country, exchange) {\r\n\treturn `\r\n
\r\n \r\n ${exchange}\r\n
\r\n `;\r\n}\r\n\r\nexport function getInstrumentColumn(instrument) {\r\n\tconst {\r\n\t\tName,\r\n\t\tIcon,\r\n\t\tCurrency,\r\n\t\tHideCountry,\r\n\t\tHideCurrency,\r\n\t\tCountry,\r\n\t\tHasAssetIcon,\r\n\t\tHideSubtitleText\r\n\t} = instrument;\r\n\tconst Exchange = instrument.Symbol || '';\r\n\treturn `\r\n
\r\n ${\r\n\t\t\t\t\t\t\t\t\t\tHasAssetIcon\r\n\t\t\t\t\t\t\t\t\t\t\t? ``\r\n\t\t\t\t\t\t\t\t\t\t\t: `\r\n \r\n `\r\n\t\t\t\t\t\t\t\t\t}\r\n \r\n
\r\n
${Name}
\t\r\n \r\n
\r\n ${!HideSubtitleText ? `${Exchange}` : ''}\r\n ${!HideCurrency && !HideSubtitleText ? `.` : ''}\r\n ${!HideCurrency ? `${Currency}` : ''}\r\n ${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t!HideCountry\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ``\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\r\n
\t\r\n \r\n \r\n\r\n
\r\n
\r\n `;\r\n}\r\nexport function getPricingColumn(pricingPlans) {\r\n\treturn pricingPlans\r\n\t\t.map(column => {\r\n\t\t\treturn `\r\n \r\n
\r\n ${\r\n\t\t\t\t\t\t\tcolumn.HasMultilineFormatting\r\n\t\t\t\t\t\t\t\t? column.Value\r\n\t\t\t\t\t\t\t\t: ` ${column.Value} `\r\n\t\t\t\t\t\t}\r\n \r\n ${column.SubValue && `${column.SubValue}`}\r\n
\t\t\t\r\n \t\r\n `;\r\n\t\t})\r\n\t\t.join('');\r\n}\r\n\r\nexport function getInfoColumn(context, info) {\r\n\tif (!context.showInfoCol || info.Hide) return '';\r\n\tconst infoUrl = !context.config.servicedomain\r\n\t\t? info.Url\r\n\t\t: context.config.servicedomain + info.Url;\r\n\treturn `\r\n
\r\n \r\n \r\n \r\n \r\n \t\t\t\t\t\r\n \r\n
\r\n `;\r\n}\r\n\r\nexport function getTradeColumn(context, assetName, uic) {\r\n\tif (!context.tradeCol) return '';\r\n\tlet template = context.tradeCol.querySelector('template').innerHTML;\r\n\ttemplate = template.match(/href=\"/)\r\n\t\t? template.replace(/{assetName}/, assetName).replace(/{uic}/, uic)\r\n\t\t: template;\r\n\treturn `\r\n \r\n ${template}\r\n \r\n `;\r\n}\r\n\r\nexport function getInstrumentHeader(context, instrument, index, startIndex, loadMore = false) {\r\n\tconst {\r\n\t\tName,\r\n\t\tIcon,\r\n\t\tCurrency,\r\n\t\tHideCountry,\r\n\t\tHideCurrency,\r\n\t\tCountry,\r\n\t\tHasAssetIcon,\r\n\t\tHideSubtitleText\r\n\t} = instrument;\r\n\r\n\tconst Exchange = instrument.Symbol || '';\r\n\tconst id = `${context.dom.dpContainer.dataset.guid}_cb-${index}_${new Date().getTime()}`;\r\n\treturn `\r\n \t\t\r\n `;\r\n}\r\n\r\nexport function getInstrumentDetails(\r\n\tcontext,\r\n\tpricingPlans,\r\n\tinfo,\r\n\tcountry,\r\n\texchange,\r\n\tassetName,\r\n\tuic\r\n) {\r\n\tlet exchangeStr = '';\r\n\tlet tradeColTemplate = context.tradeCol?.querySelector('template').innerHTML || '';\r\n\ttradeColTemplate = tradeColTemplate.match(/href=\"/)\r\n\t\t? tradeColTemplate.replace(/{assetName}/, assetName).replace(/{uic}/, uic)\r\n\t\t: tradeColTemplate;\r\n\tconst infoUrl = !context.config.servicedomain\r\n\t\t? info.Url\r\n\t\t: context.config.servicedomain + info.Url;\r\n\r\n\tif (context.isETFTable && context.isExchangeColumn) {\r\n\t\texchangeStr = `
\r\n
Exchange
\r\n
\r\n \r\n ${exchange}
\r\n
`;\r\n\t}\r\n\t/* eslint-disable indent */\r\n\t/* eslint-disable prettier/prettier */\r\n return `
\t\t\r\n
\r\n ${exchangeStr}\r\n ${pricingPlans.map((item) =>\r\n `
\r\n \r\n
\r\n ${item.ShowInfo === true ? `\r\n \r\n \r\n \r\n \r\n \r\n `: ''\r\n }\r\n ${item.Label}\r\n \r\n
\r\n
\r\n ${item.Value}\r\n ${item.SubValue && `${item.SubValue}` }\r\n
\r\n
`\r\n ).join('')}\t\r\n\r\n
\r\n ${ !info.Hide && context.showInfoCol ?\r\n `\r\n ${context.config.params.infoMobiletext ? context.config.params.infoMobiletext : 'More details2'} \r\n ` : \r\n ''\t}\r\n
\t\t\t\t\t\r\n\r\n
\r\n ${context.tradeCol ? tradeColTemplate : ''}\t\t\t\t\t\t\r\n
\t\t\t\t\r\n
\r\n
`\r\n \r\n ;\r\n}\r\n\r\nexport function getErrorTemplate(title, msg) {\r\n const ele = document.getElementById('error-state');\r\n const txt = ele.innerHTML;\r\n return txt.replace(/%-errorTitle-%/, title).replace(/%-errorMsg-%/, msg);\r\n}\r\n\r\nexport function getNoresultsTemplate(context) {\r\n const ele = context.dom.noresult;\r\n const txt = ele.innerHTML;\r\n const regEx = /%-name-%/g;\r\n return txt.replace(regEx, context.query.current);\r\n}\r\n\r\nexport function checkAndRenderForNoResult(context,data,loadMore, desktopFrag, mobileFrag) {\r\n if (data.length === 0 && loadMore === false) {\r\n const noResultsMarkup = getNoresultsTemplate(context);\r\n const mobileRow = document.createElement('div');\r\n mobileRow.innerHTML = noResultsMarkup;\r\n\r\n const row = document.createElement('tr');\r\n const col = document.createElement('td');\r\n col.colSpan = 15;\r\n col.innerHTML = noResultsMarkup;\r\n row.appendChild(col);\r\n\r\n desktopFrag.appendChild(row);\r\n mobileFrag.appendChild(mobileRow);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function prepareContentForTable(\r\n\tcontext,\r\n\titem,\r\n\tindex,\r\n\tstartIndex,\r\n\tloadMore,\r\n\tdesktopFrag,\r\n\tmobileFrag\r\n) {\r\n\tlet exchangeColumn = '';\r\n\tconst row = document.createElement('tr');\r\n\tconst instrumentSection = getInstrumentColumn(item?.Instrument);\r\n const assetName = item?.Instrument?.AssetName;\r\n const uic = item?.Instrument?.Uic;\r\n\tif (context.isETFTable && context.isExchangeColumn) {\r\n\t\texchangeColumn = getExchangeColumn(item?.Instrument?.Country, item?.Instrument?.Exchange);\r\n\t}\r\n\tconst pricingPlans = getPricingColumn(item.PricingPlans);\r\n\tconst infoColumn = getInfoColumn(context, item.Info);\r\n\tconst tradeColumn = getTradeColumn(context, item?.Instrument?.AssetName, item?.Instrument?.Uic);\r\n row.setAttribute('data-asset-name', assetName);\r\n row.setAttribute('data-uic', uic);\r\n\trow.innerHTML = [instrumentSection, exchangeColumn, pricingPlans, infoColumn, tradeColumn].join(\r\n\t\t''\r\n\t);\r\n\tdesktopFrag.appendChild(row);\r\n\r\n\t// mobile markup\r\n\tconst mobileRow = document.createElement('div');\r\n\tmobileRow.classList.add('dynamic-pricing__row');\r\n\tconst instrumentHeader = getInstrumentHeader(\r\n\t\tcontext,\r\n\t\titem.Instrument,\r\n\t\tindex,\r\n\t\tstartIndex,\r\n\t\tloadMore\r\n\t);\r\n\tconst instrumentDetails = getInstrumentDetails(\r\n\t\tcontext,\r\n\t\titem.PricingPlans,\r\n\t\titem.Info,\r\n\t\titem.Instrument.Country,\r\n\t\titem.Instrument.Exchange,\r\n assetName, uic\r\n\t);\r\n mobileRow.setAttribute('data-asset-name', assetName);\r\n mobileRow.setAttribute('data-uic', uic);\r\n\tmobileRow.innerHTML = [instrumentHeader, instrumentDetails].join('');\r\n\tmobileFrag.appendChild(mobileRow);\r\n}","import BaseBehavior from '../../../framework/base/base';\r\nimport { screenSmallerThan } from '../../../shared/utilities/screenSize';\r\n// import { destroyBehaviors, initBehaviors } from '../../../shared/utilities/behaviors';\r\nimport { config, trackSearch } from './dynamic-pricing-tracking';\r\nimport { objectToQueryString } from '../../../shared/utilities/objectToQueryString';\r\nimport {\r\n\tprepareContentForTable,\r\n\tgetErrorTemplate,\r\n\tcheckAndRenderForNoResult\r\n} from './dynamic-pricing2-utils';\r\n\r\nconst dataValues = {\r\n\tetfTableIndicator: 'ETF'\r\n};\r\nexport default class DynamicPricing2 extends BaseBehavior {\r\n\tconstructor(element) {\r\n\t\tsuper(element);\r\n\t\tthis.isETFTable = element.dataset.tableType === dataValues.etfTableIndicator;\r\n\t\tthis.isExchangeColumn = Boolean(element.dataset.exchangeColumnId);\r\n\t\tthis.initDomCache();\r\n\t\tthis.status = 'idle'; // loading , success , error\r\n\t\tthis.cols = [];\r\n\t\tthis.query = {\r\n\t\t\tcurrent: '',\r\n\t\t\tlastValid: '',\r\n\t\t\turl: ''\r\n\t\t};\r\n\t\tthis.priceFilter = {\r\n\t\t\ttext: 'default',\r\n\t\t\tvalue: []\r\n\t\t};\r\n\t\tthis.records = {\r\n\t\t\ttotal: 0, // total available records\r\n\t\t\tskip: 0, // index from which records needs to be fetched\r\n\t\t\ttop: 0 // no of records to be fetched in each call\r\n\t\t};\r\n\t\tthis.cachedResponse = {};\r\n\t\tthis.tradeCol = this.dom.dpContainer.querySelector('th[data-columntype=\"TradeColumnType\"]');\r\n\t\tthis.showInfoCol =\r\n\t\t\tthis.dom.dpContainer.querySelector('th[data-columntype=\"InfoColumnType\"]') !== null;\r\n\t\tthis.isSearchResultPageComponent = element.closest('[data-qa=\"search-result-page\"]');\r\n\r\n\t\tthis.init();\r\n\t\tthis.addEventListeners();\r\n\t\tthis.filterIds = Array.from(element.querySelectorAll('.dropdown-check-list')).map(\r\n\t\t\titem => item.dataset.dropdownId\r\n\t\t);\r\n\t\tthis.filterIdsClone = [...this.filterIds];\r\n\t\t// subscribe for dropdown change events\r\n\t\tthis.addSubscriptions();\r\n\t}\r\n\r\n\tinit() {\r\n\t\tconst {\r\n\t\t\tserviceuicurl,\r\n\t\t\tservicekeywordurl,\r\n\t\t\tservicedomain,\r\n\t\t\tcommissiongroupids,\r\n\t\t\tuics,\r\n\t\t\tassetids,\r\n\t\t\tnamecategoryid,\r\n\t\t\tinfoMobiletext,\r\n\t\t\tculture,\r\n\t\t\tdatabase,\r\n\t\t\tenvironment\r\n\t\t} = this.dom.dpContainer.dataset;\r\n\t\tthis.config = {\r\n\t\t\tserviceuicurl,\r\n\t\t\tservicekeywordurl,\r\n\t\t\tservicedomain,\r\n\t\t\tparams: {\r\n\t\t\t\tuics,\r\n\t\t\t\tassetids,\r\n\t\t\t\tnamecategoryid,\r\n\t\t\t\tcommissiongroupids,\r\n\t\t\t\tinfoMobiletext,\r\n\t\t\t\tgetinfodata: this.showInfoCol,\r\n\t\t\t\tdb: database,\r\n\t\t\t\tlang: culture,\r\n\t\t\t\tenv: environment\r\n\t\t\t}\r\n\t\t};\r\n\t\t// update col header as per pricing plan filter\r\n\t\tthis.prepareHeaderInfo();\r\n\r\n\t\tif (assetids && assetids.startsWith('asset-')) {\r\n\t\t\tthis.showStaticAssetMsg(assetids);\r\n\t\t\tthis.dom.dpContainer.classList.remove('dynamic-pricing__search--loading');\r\n\t\t} else {\r\n\t\t\tconst url = this.prepareURL('');\r\n\t\t\tif (url) {\r\n\t\t\t\t// load skeleton loader\r\n\t\t\t\tthis.fetchInstrumentRows(url)\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tthis.status = 'success';\r\n\r\n\t\t\t\t\t\tconst { Data } = response;\r\n\t\t\t\t\t\t// caching initial response\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t(!this.isETFTable && (Data === null || Data.length === 0)) ||\r\n\t\t\t\t\t\t\t(this.isETFTable && Data === null)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tthrow new Error('Empty Response on initial load');\r\n\t\t\t\t\t\t} else if (this.isETFTable && Data.length === 0) {\r\n\t\t\t\t\t\t\tthis.renderContent(response);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (Data.length > 0) {\r\n\t\t\t\t\t\t\t// check here in case of etf\r\n\t\t\t\t\t\t\tthis.cachedResponse[this.priceFilter.text] = this.filterEmptyRows(response);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.updateTotalRecordsAndUrl(response, url);\r\n\t\t\t\t\t\tData?.length > 0 && this.renderContent(response);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(() => {\r\n\t\t\t\t\t\tthis.status = 'error';\r\n\t\t\t\t\t\tthis.handleErrorState();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tthis.dom.dpContainer.classList.remove('dynamic-pricing__search--loading');\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateTotalRecordsAndUrl(response, url) {\r\n\t\tthis.records.total =\r\n\t\t\tthis.isETFTable && response.HasMoreResults ? response.TotalCount : this.records.total;\r\n\t\tthis.query.url = this.isETFTable ? url : this.query.url;\r\n\t}\r\n\r\n\tshowStaticMessage(staticMarkup) {\r\n\t\tthis.dom.desktopRows.innerHTML = '';\r\n\t\tthis.dom.mobileRows.innerHTML = '';\r\n\r\n\t\tconst mobileRow = document.createElement('div');\r\n\t\tmobileRow.innerHTML = staticMarkup;\r\n\r\n\t\tconst row = document.createElement('tr');\r\n\t\tconst col = document.createElement('td');\r\n\t\tcol.colSpan = 15;\r\n\t\tcol.innerHTML = staticMarkup;\r\n\t\trow.appendChild(col);\r\n\r\n\t\tthis.dom.desktopRows.appendChild(row);\r\n\t\tthis.dom.mobileRows.appendChild(mobileRow);\r\n\r\n\t\t// remove show more\r\n\t\tthis.dom.loadMore && this.dom.loadMore.classList.add('v2-hidden');\r\n\t}\r\n\r\n\tshowStaticAssetMsg(assetids) {\r\n\t\tconst element = document.getElementById(assetids);\r\n\t\tconst assetMarkup = element.innerHTML;\r\n\r\n\t\tthis.showStaticMessage(assetMarkup);\r\n\t}\r\n\r\n\thandleErrorState() {\r\n\t\tconst { errorTitle = '', errorMsg = '' } = this.dom.dpContainer.dataset;\r\n\t\tconst errorMarkup = getErrorTemplate(errorTitle, errorMsg);\r\n\r\n\t\tthis.showStaticMessage(errorMarkup);\r\n\t}\r\n\r\n\tprepareHeaderInfo() {\r\n\t\t/* eslint-disable indent */\r\n\t\t/* eslint-disable prettier/prettier */\r\n\t\tthis.cols = [];\r\n\t\tlet selectedPriceFilter = '';\r\n\t\tconst srpComp = document.querySelector('[data-qa=\"search-result-page\"]');\r\n\t\tlet srpInstrumentSection; let srpInstrumentSectionLi; let srpInstrumentSectionPf; let srpInstrumentSectionLiPf ;\r\n\t\tif(srpComp) {\r\n\t\t\tsrpInstrumentSection = srpComp?.querySelector('[data-ref=\"search-result-page__instrument_section\"]');\r\n\t\t\tsrpInstrumentSectionPf = srpInstrumentSection?.querySelector(\r\n\t\t\t\t'div[data-ref=\"search-result-page__priceFilter\"]');\r\n\t\t\tsrpInstrumentSectionLi = srpComp?.querySelector('[data-ref=\"search-result-page__instrument_section_li\"]');\r\n\t\t\tsrpInstrumentSectionLiPf = srpInstrumentSectionLi.querySelector(\r\n\t\t\t\t'div[data-ref=\"search-result-page__priceFilter\"]');\r\n\t\t}\r\n\t\t// In case of DP2 inside SRP, first it will try to find value from instrument section price filter, else instrument section li price filter.\r\n\t\tconst priceFilter = srpComp ? (srpInstrumentSectionPf || srpInstrumentSectionLiPf) : this.dom.priceFilter ;\r\n\r\n\t\t/* put condition for ETF here since price filter doesn't exist in etf, i think it will bve hard coded and prepare value for this.priceFilter.text \r\n\t\t\tand this.priceFilter.value */\r\n\t\tif (priceFilter) {\r\n\t\t\tconst selected = priceFilter?.querySelector('.anchor-text--optional');\r\n\t\t\tselectedPriceFilter = selected.dataset.value;\r\n\t\t\tthis.priceFilter.text = selected.innerText?.trim();\r\n\t\t} else {\r\n\t\t\tselectedPriceFilter = this.dom.dpContainer.dataset.commissiongroupids;\r\n\t\t}\r\n\r\n\t\tthis.priceFilter.value = selectedPriceFilter.split(',');\r\n\r\n\t\tthis.dom.dpContainer\r\n\t\t\t.querySelectorAll('th[data-columntype=\"CommissionColumnType\"]')\r\n\t\t\t.forEach(col => {\r\n\t\t\t\tconst colId = col.dataset.commissiongroupid;\r\n\r\n\t\t\t\tconst showCol = this.priceFilter.value.find(val => val === colId);\r\n\t\t\t\tif (showCol) {\r\n\t\t\t\t\tconst obj = {\r\n\t\t\t\t\t\tLabel: col.querySelector('.label').innerText?.trim(),\r\n\t\t\t\t\t\tName: colId,\r\n\t\t\t\t\t\tShowInfo: col.querySelector('.dynamic-pricing__headerIcon') !== null\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.cols.push(obj);\r\n\t\t\t\t\tcol.classList.remove('v2-hidden');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcol.classList.add('v2-hidden');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprepareURL(keywords) {\r\n\t\tconst searchParams = { ...this.config.params };\r\n\t\tif (keywords || (!keywords && this.isETFTable)) {\r\n\t\t\tconst { top = 0, skip = 0 } = this.dom.searchContainer.dataset;\r\n\t\t\tsearchParams.uics = '';\r\n\t\t\tsearchParams.namecategoryid = this.dom.dpContainer.dataset.namecategoryidforsearch;\r\n\t\t\tsearchParams.keywords = keywords;\r\n\t\t\tsearchParams.top = top;\r\n\t\t\tsearchParams.skip = skip;\r\n\t\t\tthis.records.top = Number(top);\r\n\t\t\tthis.records.skip = Number(skip);\r\n\t\t}\r\n\t\tif(this.isETFTable) {\r\n\t\t\tthis.updateSearchParamsForETF(searchParams);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.updateSearchParamsForNonETF(searchParams, keywords);\r\n\t\t}\r\n\t\t\r\n\t\tif (this.dom.countryFilter) {\r\n\t\t\tconst val =\r\n\t\t\t\t(this.dom.proficiencyFilter &&\r\n\t\t\t\t\tthis.dom.proficiencyFilter.querySelector('.anchor-text--optional').dataset.value) ||\r\n\t\t\t\t'retail';\r\n\t\t\tif (val.toLowerCase() === 'retail') {\r\n\t\t\t\tconst countryVal =\r\n\t\t\t\t\tthis.dom.countryFilter.querySelector('.anchor-text--optional').dataset.value || '';\r\n\t\t\t\tsearchParams.marketcode = countryVal;\r\n\t\t\t}\r\n\t\t}\r\n \r\n const url = searchParams.uics ? this.config.serviceuicurl : this.config.servicekeywordurl;\r\n\r\n return url ? `${url}?${objectToQueryString(searchParams)}` : null;\r\n\t}\r\n\r\n\tupdateSearchParamsForETF(searchParams) {\r\n\t\t\tconst minKeys = this.dom.searchContainer ? Number(this.dom.searchContainer.dataset.min) : 0;\r\n\t\t\t// removing unnecessary properties in case of etf table\r\n\t\t\tdelete searchParams?.uics;\r\n\t\t\tconst val = this.dom.assetsFilter.querySelector('.anchor-text--optional').dataset.value || '';\r\n\t\t\tsearchParams.assetids = val;\r\n\t\t\t// add code for exchange filter\r\n\t\t\tsearchParams.exchangeIds = this.dom.exchangeFilter?.querySelector('.anchor-text--optional').dataset.value || '';\r\n\t\t\tsearchParams.keywords = (searchParams.keywords.length < minKeys) ? \"\" : searchParams.keywords;\r\n\t}\r\n\r\n\tupdateSearchParamsForNonETF(searchParams,keywords) {\r\n\t\tif (this.dom.assetsFilter && keywords) {\r\n\t\t\tconst val = this.dom.assetsFilter.querySelector('.anchor-text--optional').dataset.value || '';\r\n\t\t\tsearchParams.assetids = val;\r\n\t\t}\r\n\t\tif (this.dom.priceFilter) {\r\n\t\t\tconst val = this.dom.priceFilter.querySelector('.anchor-text--optional').dataset.value || '';\r\n\t\t\tsearchParams.commissiongroupids = val;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\r\n\tsubscriptionResetDone(filterId, dpElement) {\r\n\t\tif(dpElement === this.element) {\r\n\t\t\tconst index = this.filterIdsClone.findIndex(filter => filter === filterId);\r\n\t\t\tthis.filterIdsClone.splice(index,1);\r\n\t\t\tif(!this.filterIdsClone.length) {\r\n\t\t\t\tthis.dom.searchBox.value = '';\r\n\t\t\t\tthis.query.current = '';\r\n\t\t\t\tthis.query.lastValid = '';\r\n\t\t\t\tthis.dom.clearSearch.classList.add('v2-not-visible');\r\n\t\t\t\tthis.init();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\taddSubscriptions() {\r\n\t\tthis.subscribe('reset-done', ({filterId, dpElement}) => {\r\n\t\t\tthis.subscriptionResetDone(filterId, dpElement);\r\n\t\t});\r\n\t\tif (!this.isSearchResultPageComponent) {\r\n\t\t\tthis.subscribe(`/cb-dropdown/change`, data => {\r\n\t\t\t\tconst { guid } = this.dom.dpContainer.dataset;\r\n\t\t\t\tif (\r\n\t\t\t\t\tdata.dropdownId &&\r\n\t\t\t\t\tguid === data.targetID &&\r\n\t\t\t\t\t(data.dropdownId === 'assetsFilter' ||\r\n\t\t\t\t\t\tdata.dropdownId === 'priceFilter' ||\r\n\t\t\t\t\t\tdata.dropdownId === 'proficiencyFilter' ||\r\n\t\t\t\t\t\tdata.dropdownId === 'countryFilter' || data.dropdownId === 'exchangeFilter')\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.query.lastValid = '';\r\n\t\t\t\t\tif(this.isETFTable) {\r\n\t\t\t\t\t\tthis.triggerSearch(data.dropdownId, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.triggerSearch(data.dropdownId);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// subscribe to changes from search result page\r\n\t\tthis.subscribe('/search-result/updateresults', ({ html, extraData }) => {\r\n\t\t\tthis.renderContent(html, false, extraData);\r\n\t\t});\r\n\t\tthis.subscribe('/search-result/openInfoPopup', data => {\r\n\t\t\tthis.originSourceDP = data.source;\r\n\t\t\tthis.handleContainerClick(data.event, this.originSourceDP);\r\n\t\t});\r\n\r\n\t\tthis.subscribe('/search-result/loadmore', data => {\r\n\t\t\tthis.records.skip = data.skip;\r\n\t\t\tthis.records.top = data.top;\r\n\t\t\tthis.query.url = data.url;\r\n\t\t\tthis.query.current = data.query;\r\n\t\t\tthis.originSourceDP = data.source;\r\n\t\t\tthis.handleContainerClick(data.event, this.originSourceDP);\r\n\t\t});\r\n\t\tthis.subscribe('/search-result/show-static-message-dp', data => {\r\n\t\t\tthis.showStaticAssetMsg(data.assetId);\r\n\t\t});\r\n\t\tthis.subscribe('dynamic-pricing/prepare-header-info', () => {\r\n\t\t\tthis.prepareHeaderInfo();\r\n\t\t});\r\n\t\tthis.subscribe('clean-srp-events', () => {\r\n\t\t\tthis.unsubscribe('/search-result/loadmore');\r\n\t\t\tthis.unsubscribe('/search-result/openInfoPopup');\r\n\t\t});\r\n\t}\r\n\r\n\taddEventListeners() {\t\r\n\t\tthis.addEventListener(this.dom.dpContainer, 'click', e => {\r\n\t\t\tthis.handleContainerClick(e, 'DynamicPricing');\r\n\t\t});\r\n\r\n\t\tthis.addEventListener(this.dom.filters, 'click', e => {\r\n\t\t\tthis.handleContainerClick(e, 'DynamicPricing');\r\n\t\t});\r\n\r\n\t\tconst handleSearch = () => {\r\n\t\t\tif (this.dom.searchBox.value.length === 0) {\r\n\t\t\t\tthis.resetSearch();\r\n\t\t\t} else {\r\n\t\t\t\tthis.triggerSearch();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// events for searchBox\r\n\t\tif (this.dom.searchBox) {\r\n\t\t\tlet timer = null;\r\n\t\t\tthis.addEventListener(this.dom.searchBox, 'keydown', () => {\r\n\t\t\t\tclearTimeout(timer);\r\n\t\t\t\ttimer = setTimeout(handleSearch, 500);\r\n\t\t\t});\r\n\r\n\t\t\tthis.addEventListener(this.dom.searchBox, 'focus', () => {\r\n\t\t\t\tthis.dom.searchContainer.classList.add('dynamic-pricing__search--active');\r\n\t\t\t});\r\n\r\n\t\t\tthis.addEventListener(this.dom.searchBox, 'blur', () => {\r\n\t\t\t\tthis.dom.searchContainer.classList.remove('dynamic-pricing__search--active');\r\n\t\t\t});\r\n\r\n\t\t\tthis.addEventListener(this.dom.clearSearch, 'click', () => {\r\n\t\t\t\tthis.resetSearch();\r\n\t\t\t\tthis.dom.searchBox.focus();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfilterQuery(txt) {\r\n\t\t// eslint-disable-next-line\r\n\t\tconst regEx = /^(?:[a-zA-Z0-9][a-zA-Z0-9 \\-\\&\\.\\(\\)\\%]*)?$/;\r\n\t\t// Regex will allow only alphanumeric and special chars: -&)(.% in between\r\n\t\tif (!regEx.test(txt)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst query = txt.trim();\r\n\t\treturn query.toLowerCase();\r\n\t}\r\n\r\n\t\r\n\tbeforeTriggerSearch(filterType, keywords) {\r\n\t\tif (\r\n\t\t\tfilterType === 'priceFilter' ||\r\n\t\t\tfilterType === 'proficiencyFilter' ||\r\n\t\t\tfilterType === 'countryFilter'\r\n\t\t) {\r\n\t\t\tthis.prepareHeaderInfo();\r\n\t\t}\r\n\r\n\t\tif (this.dom.searchBox && keywords !== '') {\r\n\t\t\tthis.dom.clearSearch.classList.remove('v2-not-visible');\r\n\t\t}\r\n\t\tconst refineMessage = this.element.querySelector('.etf-refine-message');\r\n\t\trefineMessage?.classList.add('v2-hidden');\r\n\t}\r\n\r\n\t// eslint-disable-next-line\r\n\tcheckForNoSearch(keywords,minKeys,isSearch,filterType, triggeredFromETFDropdowon) {\r\n\t\tif (!this.isETFTable && isSearch && (filterType === '' || filterType !== 'priceFilter')) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(this.isETFTable && !triggeredFromETFDropdowon && keywords && keywords.length < minKeys) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\ttriggerSearch(filterType = '', triggeredFromETFDropdowon = false) {\r\n\t\tconst searchParams = { ...this.config.params };\r\n\t\tconst minKeys = this.dom.searchContainer ? Number(this.dom.searchContainer.dataset.min) : 0;\r\n\t\tconst keywords = this.dom.searchBox ? this.filterQuery(this.dom.searchBox.value) : '';\r\n\t\tthis.query.current = keywords;\r\n\t\t// not searching for chars when not req\r\n\t\tconst isSearch =\r\n\t\t\t!keywords || keywords.length < minKeys || this.query.current === this.query.lastValid;\r\n\t\tif(this.checkForNoSearch(keywords,minKeys,isSearch,filterType, triggeredFromETFDropdowon)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.beforeTriggerSearch(filterType, keywords);\r\n\r\n\t\tlet assetFilterVal = '';\r\n\t\tif (this.dom.assetsFilter && (keywords || this.isETFTable)) {\r\n\t\t\tassetFilterVal =\r\n\t\t\t\tthis.dom.assetsFilter.querySelector('.anchor-text--optional').dataset.value || '';\r\n\t\t} else if (\r\n\t\t\tisSearch &&\r\n\t\t\t(filterType === 'priceFilter' ||\r\n\t\t\t\tfilterType === 'proficiencyFilter' ||\r\n\t\t\t\tfilterType === 'countryFilter')\r\n\t\t) {\r\n\t\t\tassetFilterVal = searchParams.assetids;\r\n\t\t}\r\n\t\t\r\n\t\tif (assetFilterVal.startsWith('asset-') && !assetFilterVal.includes(',')) {\r\n\t\t\tthis.showStaticAssetMsg(assetFilterVal);\r\n\t\t\tthis.dom.dpContainer.classList.remove('dynamic-pricing__search--loading');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// track instrument search\r\n\r\n\t\tconst obj = {\r\n\t\t\tterm: keywords,\r\n\t\t\ttype: config.SEARCH_TYPE_INSTRUMENT,\r\n\t\t\tinstrument: config.SEARCH_NO_INSTRUMENT,\r\n\t\t\tasset: this.dom.assetsFilter?.innerText || config.SEARCH_DEFAULT_FILTER\r\n\t\t};\r\n\t\ttrackSearch(obj);\r\n\r\n\t\t// load skeleton loader\r\n\t\tthis.dom.dpContainer.classList.add('dynamic-pricing__search--loading');\r\n\r\n\t\t// trigger Search\r\n\t\tconst url = this.prepareURL(keywords);\r\n\t\tthis.status = 'idle';\r\n\t\tthis.fetchInstrumentRows(url)\r\n\t\t\t.then(response => {\r\n\t\t\t\tthis.processAfterResponse(response, url);\r\n\t\t\t})\r\n\t\t\t.catch(() => {\r\n\t\t\t\tthis.status = 'error';\r\n\t\t\t\tthis.handleErrorState();\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dom.dpContainer.classList.remove('dynamic-pricing__search--loading');\r\n\t\t\t});\r\n\t}\r\n\r\n\tprocessAfterResponse(response, url) {\r\n\t\tthis.status = 'success';\r\n\t\tthis.query.lastValid = this.query.current;\r\n\t\tthis.query.url = url;\r\n\t\tif ((this.isETFTable && response.Data === null) || ((!this.isETFTable && (response.Data === null || response.Data.length === 0)) && this.query.current === '')) {\r\n\t\t\tthrow new Error('Error in fetching records');\r\n\t\t}\r\n\t\telse if(this.isETFTable && response.Data.length === 0) {\r\n\t\t\t// show no result \r\n\t\t\tthis.renderContent(response);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.cachedResponse[this.priceFilter.text] && this.query.current === '') {\r\n\t\t\tthis.cachedResponse[this.priceFilter.text] = this.filterEmptyRows(response);\r\n\t\t}\r\n\r\n\t\tthis.records.total = response.TotalCount;\r\n\t\tthis.renderContent(response);\r\n\t}\r\n\r\n\tresetSearch() {\r\n\t\tthis.dom.searchBox.value = '';\r\n\t\tthis.query.current = '';\r\n\t\tthis.query.lastValid = '';\r\n\t\tthis.dom.clearSearch.classList.add('v2-not-visible');\r\n\t\tif(this.isETFTable) {\r\n\t\t\tthis.init();\r\n\t\t}\r\n\t\telse if (this.cachedResponse[this.priceFilter.text]) {\r\n\t\t\tthis.renderContent(this.cachedResponse[this.priceFilter.text]);\r\n\t\t} else {\r\n\t\t\t// trigger search with blank query text\r\n\t\t\tthis.triggerSearch('priceFilter');\r\n\t\t}\r\n\t}\r\n\r\n\tcloseHeaderInfoPopup(event) {\r\n\t\tif (event.target.dataset.behavior !== 'lightbox-trigger') {\r\n\t\t\tthis.publish('/lightbox/close');\r\n\t\t}\r\n\t}\r\n\r\n\topenHeaderInfoPopup(targetId) {\r\n\t\t// TODO : bind different script template if separate modals required for pricing columns\r\n\t\tconst template = document.getElementById(targetId);\r\n\t\tconst div = document.createElement('div');\r\n\t\tdiv.innerHTML = template?.innerHTML || '';\r\n\r\n\t\tconst title = div.querySelector('.dynamic-pricing-headerInfo__title');\r\n\t\tconst cta = div.querySelector('.v2-dynamic-pricing-headerInfo__cta');\r\n\t\tcta && this.addEventListener(cta, 'click', this.closeHeaderInfoPopup.bind(this));\r\n\r\n\t\tthis.publish('/lightbox/open', {\r\n\t\t\ttype: 'html',\r\n\t\t\tcssClass: `dynamic-pricing-headerInfo-modal`,\r\n\t\t\ttitle,\r\n\t\t\ttarget: div\r\n\t\t});\r\n\t}\r\n\r\n\thandleLoadMoreClick(isSearchResultPage, source) {\r\n\t\tthis.status = 'idle';\r\n\t\t\tif (isSearchResultPage && source === 'searchresultpage') {\r\n\t\t\t\tthis.dom.loadMore = isSearchResultPage.querySelector('div[data-ref=\"dynamic-pricing2__loadMore\"]');\r\n\t\t\t}\r\n\t\t\tthis.dom.loadMore.querySelector('.loadMore').classList.add('v2-hidden');\r\n\t\t\tthis.dom.loadMore.querySelector('.v2-loading-spinner').classList.remove('v2-hidden');\r\n\r\n\t\t\t// incremnt skip by count every click of show more btn\r\n\t\t\tthis.records.skip += this.records.top;\r\n\t\t\tconst url = this.query.url.replace(/skip=0/i, `skip=${this.records.skip}`);\r\n\r\n\t\t\t// If search result page exists but source is not search result page(may be DP2), then just return.\r\n\t\t\tif (isSearchResultPage && source !== 'searchresultpage') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.fetchInstrumentRows(url)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tthis.processAfterShowMoreClickResponse(response, url);\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tthis.status = 'error';\r\n\t\t\t\t\t// eslint-disable-next-line no-console\r\n\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t\tthis.handleErrorState();\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tthis.dom.dpContainer.classList.remove('dynamic-pricing__search--loading');\r\n\t\t\t\t});\r\n\t}\r\n\r\n\thandleContainerClick(e, source) {\r\n\t\tconst isSearchResultPage = e.target.closest(\r\n\t\t\t'[data-ref=\"search-result-page__result_container\"]'\r\n\t\t);\r\n\t\tif (isSearchResultPage && source !== 'searchresultpage') {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// check if headerInfoClicked\r\n\t\tconst headerIcon = e.target.closest('.dynamic-pricing__headerIcon');\r\n\t\tif (headerIcon) {\r\n\t\t\tconst targetId = headerIcon.dataset.templateId;\r\n\t\t\ttargetId && this.openHeaderInfoPopup(targetId);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check if show more clicked\r\n\t\tif (e.target.dataset.type === 'loadMore') {\r\n\t\t\tthis.handleLoadMoreClick(isSearchResultPage, source);\r\n\t\t}\r\n\r\n\t\t// get name and exchange of clicked row\r\n\t\tconst row = screenSmallerThan('sm')\r\n\t\t\t? e.target.closest('.dynamic-pricing__row')\r\n\t\t\t: e.target.closest('tr');\r\n\t\tif (!row) return;\r\n\t\tconst name = row.querySelector('.instrument__description-name')?.innerText || '';\r\n\t\tif (e.target.id.includes('trade')) {\r\n\t\t\t// track info popup click\r\n\t\t\tconst obj = {\r\n\t\t\t\tterm: this.dom.searchBox?.value || '',\r\n\t\t\t\ttype: config.SEARCH_TYPE_TRADE,\r\n\t\t\t\tinstrument: name,\r\n\t\t\t\tasset: this.dom.assetsFilter?.innerText || config.SEARCH_DEFAULT_FILTER\r\n\t\t\t};\r\n\t\t\ttrackSearch(obj);\r\n\t\t}\r\n\t\tconst icon = e.target.closest(\"span[data-qa='info-icon']\");\r\n\t\tif (!icon) return;\r\n\t\t// get icon details\r\n\t\tconst iconMatches = row\r\n\t\t\t.querySelector('.instrument__logo')\r\n\t\t\t.style.backgroundImage.match(/.*\\/(.*).svg/);\r\n\t\tconst flag = iconMatches ? iconMatches[1] : '';\r\n\t\tconst type = row.querySelector('.instrument__logo').className.match(/[^--]*$/g)[0] || '';\r\n\r\n\t\tconst exchange = row.querySelector('.instrument__description-exchange > span')?.innerText || '';\r\n\t\tconst currency =\r\n\t\t\trow.querySelector('.instrument__description-exchange > span~span')?.innerText || '';\r\n\t\tconst { url } = icon.dataset;\r\n\t\tconst { errorTitle, errorMsg } = this.dom.dpContainer.dataset;\r\n\t\tconst assetName = row.dataset?.assetName;\r\n\t\tconst uic = row.dataset?.uic;\r\n\t\tthis.updateMarkupTemplate('instrument-popup', {\r\n\t\t\turl,\r\n\t\t\ttype,\r\n\t\t\tname,\r\n\t\t\texchange,\r\n\t\t\tflag,\r\n\t\t\tcurrency,\r\n\t\t\terrorTitle,\r\n\t\t\terrorMsg,\r\n\t\t\tassetName,\r\n\t\t\tuic\r\n\t\t});\r\n\r\n\t\t// track info popup click\r\n\t\tconst obj = {\r\n\t\t\tterm: this.dom.searchBox?.value || '',\r\n\t\t\ttype: config.SEARCH_TYPE_INFO,\r\n\t\t\tinstrument: name,\r\n\t\t\tasset: this.dom.filter?.value || config.SEARCH_DEFAULT_FILTER\r\n\t\t};\r\n\t\ttrackSearch(obj);\r\n\r\n\t\tthis.publish('/lightbox/open', {\r\n\t\t\ttype: 'id',\r\n\t\t\tcssClass: 'instrument-popup-box',\r\n\t\t\ttarget: 'instrument-popup'\r\n\t\t});\r\n\t}\r\n\r\n\tprocessAfterShowMoreClickResponse(response, url) {\r\n\t\tthis.status = 'success';\r\n\t\t\t\tthis.query.lastValid = this.query.current;\r\n\t\t\t\t// eslint-disable-next-line no-console\r\n\t\t\t\tthis.records.total = response.TotalCount;\r\n\t\t\t\tif (this.originSourceDP === 'searchresultpage') {\r\n\t\t\t\t\tthis.renderContent(response, true, {\r\n\t\t\t\t\t\ttop: +this.records.top,\r\n\t\t\t\t\t\tskip: +this.records.skip,\r\n\t\t\t\t\t\ttotal: this.records.total,\r\n\t\t\t\t\t\turl,\r\n\t\t\t\t\t\tsource: 'searchresultpage'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.publish('updated-DPdata-ForSRP', {\r\n\t\t\t\t\t\ttop: +this.records.top,\r\n\t\t\t\t\t\tskip: +this.records.skip,\r\n\t\t\t\t\t\ttotal: this.records.total\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.renderContent(response, true);\r\n\t\t\t\t}\r\n\t}\r\n\r\n\tupdateMarkupTemplate(id, data) {\r\n\t\tconst element = document.getElementById(id);\r\n\t\tlet markup = element.innerHTML;\r\n\t\t// loop thru payload keys to and update the data attr.\r\n\t\tObject.keys(data).forEach(key => {\r\n\t\t\tconst value = data[key];\r\n\t\t\tconst regEx = new RegExp(`data-${key}=\"[^\"]*\"`, 'g');\r\n\t\t\tmarkup = markup.replace(regEx, `data-${key}=\"${value}\"`);\t\t\t\t\t\t\r\n\t\t});\r\n\r\n\t\telement.innerHTML = markup;\r\n\t}\r\n\r\n\tgetColumns(data) {\r\n\t\tif (!data || data.length === 0) return [];\r\n\t\tdata.forEach(({ PricingPlans }, index) => {\r\n\t\t\tconst detailedPlans = this.cols.map(col => {\r\n\t\t\t\tconst column = PricingPlans.find(ele => ele.Name === col.Name);\r\n\t\t\t\tif (column) {\r\n\t\t\t\t\tcolumn.Label = col.Label;\r\n\t\t\t\t\tcolumn.ShowInfo = col.ShowInfo;\r\n\t\t\t\t}\r\n\t\t\t\treturn column;\r\n\t\t\t});\r\n\t\t\tdata[index].PricingPlans = detailedPlans;\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tfilterEmptyRows(response) {\r\n\t\tconst insData = response.Data;\r\n\t\tconst data = this.getColumns(insData);\r\n\t\tconst filteredData = data.filter(row =>\r\n\t\t\trow.PricingPlans.some(col => col.Value || col.SubValue)\r\n\t\t);\r\n\t\treturn { ...response, Data: filteredData };\r\n\t}\r\n\r\n\tsettingQueryParamsForSRP(response, extraData) {\r\n\t\tif (Object.keys(extraData).length) {\r\n\t\t\tthis.records.top = extraData.top ? extraData.top : 0;\r\n\t\t\tthis.records.skip = extraData.skip ? extraData.skip : 0;\r\n\t\t\tthis.records.total = response.TotalCount;\r\n\t\t\tthis.query.url = extraData.url ? extraData.url : '';\r\n\t\t\tthis.query.current = extraData.query ? extraData.query : this.query.current;\r\n\t\t}\r\n\t}\r\n\r\n\tsetStartIndex(index, startIndex) {\r\n\t\tlet srtInd = null;\r\n\t\tif (index !== 0 && startIndex === null) {\r\n\t\t\tsrtInd = 0;\r\n\t\t} else srtInd = index;\r\n\t\treturn srtInd;\r\n\t}\r\n\r\n\t\r\n\r\n\trenderContent(response, loadMore = false, extraData = {}) {\r\n\t\tthis.settingQueryParamsForSRP(response, extraData);\r\n\t\tconst insData = response.Data;\r\n\t\tconst data = this.getColumns(insData);\r\n\t\tconst desktopFrag = document.createDocumentFragment();\r\n\t\tconst mobileFrag = document.createDocumentFragment();\r\n\t\tlet startIndex = null;\r\n\t\t\r\n\t\tdata.forEach((item, index) => {\r\n\t\t\t// desktop markup\r\n\t\t\t// filtering non empty rows\r\n\t\t\tconst showRow = item.PricingPlans.some(col => col.Value || col.SubValue);\r\n\t\t\tif (showRow || this.query.current !== '') {\r\n\t\t\t\tstartIndex = this.setStartIndex(index, startIndex);\r\n\t\t\t\tprepareContentForTable(this, item, index, startIndex, loadMore, desktopFrag, mobileFrag);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconst srpComp = extraData?.source === 'searchresultpage' ? document.querySelector('[data-qa=\"search-result-page\"]') : null;\r\n\t\t\r\n\t\tif (!loadMore) {\r\n\t\t\tif(srpComp) {\r\n\t\t\t\tconst srpDesktopRows =srpComp.querySelector('div[data-ref=\"search-result-page__result_container\"] tbody[data-ref=\"dynamic-pricing2__desktopRows\"]');\r\n\t\t\t\tsrpDesktopRows.innerHTML = '';\r\n\t\t\t\tconst srpMobileRows =srpComp.querySelector('div[data-ref=\"search-result-page__result_container\"] div[data-ref=\"dynamic-pricing2__mobileRows\"]');\r\n\t\t\t\tsrpMobileRows.innerHTML = '';\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.dom.desktopRows.innerHTML = '';\r\n\t\t\t\tthis.dom.mobileRows.innerHTML = '';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.dom.loadMore.querySelector('.v2-loading-spinner').classList.add('v2-hidden');\r\n\t\t\t// this.dom.loadMore.querySelector('.loadMore').classList.remove('v2-hidden');\r\n\t\t}\r\n\r\n\t\t/* when empty rows on load */\r\n\t\tif (!this.isETFTable && startIndex === null && this.query.current === '') {\r\n\t\t\tthis.handleErrorState();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check for no records fetched, not showing for loadmore when we get limited records\r\n\t\tconst isNoResult = checkAndRenderForNoResult(this, data, loadMore, desktopFrag, mobileFrag);\r\n\t\tif(srpComp) {\r\n\t\t\tconst srpDesktopRows =srpComp?.querySelector('div[data-ref=\"search-result-page__result_container\"] tbody[data-ref=\"dynamic-pricing2__desktopRows\"]');\r\n\t\t\tsrpDesktopRows.appendChild(desktopFrag);\r\n\t\t\tconst srpMobileRows =srpComp.querySelector('div[data-ref=\"search-result-page__result_container\"] div[data-ref=\"dynamic-pricing2__mobileRows\"]');\r\n\t\t\tsrpMobileRows.appendChild(mobileFrag);\r\n\t\t\tthis.dom.loadMore = srpComp?.querySelector('div[data-ref=\"search-result-page__result_container\"] div[data-ref=\"dynamic-pricing2__loadMore\"]');\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.dom.desktopRows.appendChild(desktopFrag);\r\n\t\t\tthis.dom.mobileRows.appendChild(mobileFrag);\r\n\t\t}\r\n\t\t// check for loadmore option\r\n\t\tthis.checkForLoadMoreBtn(response);\r\n\t\tthis.triggerToResetDefaultForNoResult(isNoResult);\r\n\t}\r\n\r\n\ttriggerToResetDefaultForNoResult(isNoResult) { \r\n\t\tif(isNoResult) {\r\n\t\t\tconst resetDefaultLinks = this.element.querySelectorAll('[data-ref=\"dynamic-pricing2__resetDefault\"]');\r\n\t\t\tArray.from(resetDefaultLinks).forEach(item => {\r\n\t\t\t\tthis.addEventListener(item, 'click', () => {\r\n\t\t\t\t\tthis.filterIdsClone = [...this.filterIds];\r\n\t\t\t\t\tif(!this.filterIdsClone.length) {\r\n\t\t\t\t\t\tthis.init();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.publish('reset-to-default', {dpElement: this.element});\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\r\n\tcheckForLoadMoreBtn(response) {\r\n\t\tconst isMoreRecords = this.records.top + this.records.skip < this.records.total;\r\n\r\n\t\tlet maxRecords = +this.element.dataset.maxRecords;\r\n\t\tmaxRecords = maxRecords || 100;\r\n\t\tif(this.isETFTable && (this.records.top + this.records.skip >= maxRecords)) {\r\n\t\t\t// show message - refine search and hide show more\r\n\t\t\tconst refineMessage = this.element.querySelector('.etf-refine-message');\r\n\t\t\trefineMessage.classList.remove('v2-hidden');\r\n\t\t\tthis.dom.loadMore.classList.add('v2-hidden');\r\n\t\t}\r\n\t\telse if (response.HasMoreResults && isMoreRecords) {\r\n\t\t\t// TODO: add dictionary option to load more\r\n\t\t\tthis.dom.loadMore.classList.remove('v2-hidden');\r\n\t\t\tthis.dom.loadMore.querySelector('.loadMore').classList.remove('v2-hidden');\r\n\t\t\tconst loadMoreTxt = this.dom.loadMore.querySelector('.loadMoreCurCount');\r\n\t\t\tif (loadMoreTxt) {\r\n\t\t\t\tloadMoreTxt.innerText = this.records.skip + this.records.top;\r\n\t\t\t\tthis.dom.loadMore.querySelector('.loadMoreQuery').innerText = `\" ${this.query.current} \" `;\r\n\t\t\t\tthis.dom.loadMore.querySelector('.loadMoreTotalCount').innerText = this.records.total;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.dom.loadMore && this.dom.loadMore.classList.add('v2-hidden');\r\n\t\t}\r\n\t}\r\n\r\n\tfetchInstrumentRows(url) {\r\n\t\tthis.status = 'loding';\r\n\t\treturn fetch(url)\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (!response.ok) {\r\n\t\t\t\t\tthis.status = 'error';\r\n\t\t\t\t\tthrow Error(response.statusText);\r\n\t\t\t\t}\r\n\t\t\t\tthis.status = 'success';\r\n\t\t\t\treturn response.json();\r\n\t\t\t})\r\n\t\t\t.then(responseJson => responseJson);\r\n\t}\r\n}\r\n","// debounce :: Function, Number, Bool -> (Any -> Void)\r\nexport function debounce(func, wait, immediate) {\r\n\tlet timeout;\r\n\treturn function debounced(...args) {\r\n\t\tconst later = () => {\r\n\t\t\ttimeout = null;\r\n\t\t\tif (!immediate) func(args);\r\n\t\t};\r\n\t\tconst callNow = immediate && !timeout;\r\n\t\tclearTimeout(timeout);\r\n\t\ttimeout = setTimeout(later, wait);\r\n\t\tif (callNow) func(args);\r\n\t};\r\n}\r\n","class PubSub {\r\n\tconstructor() {\r\n\t\tthis.subscriptions = {};\r\n\t}\r\n\r\n\tpublish(topic, ...args) {\r\n\t\tif (this.subscriptions[topic]) {\r\n\t\t\t// eslint-disable-next-line no-restricted-syntax\r\n\t\t\tfor (const fn of this.subscriptions[topic]) {\r\n\t\t\t\tfn(...args);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(topic, fn) {\r\n\t\tthis.subscriptions[topic] = this.subscriptions[topic] || [];\r\n\t\tthis.subscriptions[topic].push(fn);\r\n\t}\r\n\r\n\tunsubscribe(topic, fn) {\r\n\t\tif (this.subscriptions[topic]) {\r\n\t\t\tthis.subscriptions[topic].forEach((value, index) => {\r\n\t\t\t\tif (value === fn) {\r\n\t\t\t\t\tthis.subscriptions[topic].splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst pubsub = new PubSub();\r\n\r\nexport default pubsub;\r\n","import pubsub from '../../shared/utilities/pubsub';\r\nimport { generateId } from '../../shared/utilities/id';\r\nimport { camelCaseToDashCase, dashCaseToCamelCase } from '../../shared/utilities/case';\r\nimport { getBreakpoint } from '../../shared/utilities/screenSize';\r\nimport { debounce } from '../../shared/utilities/debounce';\r\n\r\nexport default class BaseBehavior {\r\n\tconstructor(element) {\r\n\t\tthis.element = element;\r\n\t\tthis.state = undefined;\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptions = {};\r\n\t\tthis.behaviorName = camelCaseToDashCase(element.getAttribute('data-behavior'));\r\n\t\tthis.instanceId = generateId();\r\n\t\tthis.attachInstanceId();\r\n\t}\r\n\r\n\tsetState(partialState) {\r\n\t\tObject.keys(partialState).forEach(key => {\r\n\t\t\tif (!{}.hasOwnProperty.call(this.state, key)) {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`${this.behaviorName} does not have ${key} on the state object,\r\n\t\t\t\t\tmake sure to define all state properties in the constructor.`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.state = { ...(this.state || {}), ...partialState };\r\n\t}\r\n\r\n\tattachInstanceId() {\r\n\t\tthis.element.setAttribute('data-instance', `${this.behaviorName}__${this.instanceId}`);\r\n\t\tthis.element.removeAttribute('data-instance-init');\r\n\t}\r\n\r\n\tinitDomCache() {\r\n\t\tthis.dom = {};\r\n\r\n\t\t// Filter out ref's that embedded in another instance of the same behavior.\r\n\t\tArray.from(this.element.querySelectorAll(`[data-ref^=${this.behaviorName}]`))\r\n\t\t\t.filter(el => el.closest(`[data-behavior*=\"${this.behaviorName}\"]`) === this.element)\r\n\t\t\t.forEach(element => {\r\n\t\t\t\tconst ref = element.getAttribute('data-ref');\r\n\t\t\t\tconst key = dashCaseToCamelCase(ref).split('__')[1];\r\n\r\n\t\t\t\tif (key) {\r\n\t\t\t\t\tthis.dom[key] = element;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error(\r\n\t\t\t\t\t\t`Element cannot be cached. Reference \"${ref}\" should have the format \"behavior-name__element-name\"`\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tpublishBreakpointOnResize(delay = 250) {\r\n\t\tif (this.breakpoint) return;\r\n\r\n\t\tthis.breakpoint = getBreakpoint();\r\n\t\tthis.publish('SITE.BREAKPOINT', this.breakpoint);\r\n\r\n\t\tconst debouncedGetBreakpoint = debounce(() => {\r\n\t\t\tconst newBreakPoint = getBreakpoint();\r\n\t\t\tif (this.breakpoint !== newBreakPoint) {\r\n\t\t\t\tthis.publish('SITE.BREAKPOINT', newBreakPoint);\r\n\t\t\t\tthis.breakpoint = newBreakPoint;\r\n\t\t\t}\r\n\t\t}, delay);\r\n\r\n\t\twindow.addEventListener('resize', debouncedGetBreakpoint);\r\n\t}\r\n\r\n\taddEventListener(element, event, fn, useCapture = false) {\r\n\t\tif (element) {\r\n\t\t\tthis.events[event] = fn;\r\n\t\t\telement.addEventListener(event.split('.')[0], this.events[event], useCapture);\r\n\t\t}\r\n\t}\r\n\r\n\tremoveEventListener(element, event) {\r\n\t\telement.removeEventListener(event.split('.')[0], this.events[event]);\r\n\t\tthis.events[event] = null;\r\n\t\tdelete this.events[event];\r\n\t}\r\n\r\n\t// eslint-disable-next-line class-methods-use-this\r\n\tpublish(topic, obj) {\r\n\t\tpubsub.publish(topic, obj);\r\n\t}\r\n\r\n\tsubscribe(topic, fn) {\r\n\t\tthis.subscriptions[topic] = fn;\r\n\t\tpubsub.subscribe(topic, fn);\r\n\t}\r\n\r\n\tunsubscribe(topic) {\r\n\t\tpubsub.unsubscribe(topic, this.subscriptions[topic]);\r\n\t\tthis.subscriptions[topic] = null;\r\n\t\tdelete this.subscriptions[topic];\r\n\t}\r\n}\r\n\r\n// Below code is added for fixing scrolling issue on page refresh.\r\nwindow.addEventListener('load', () => {\r\n\tsetTimeout(() => {\r\n\t\tconst navigation = document.querySelector('#navigation');\r\n\t\t// eslint-disable-next-line\r\n\t\tif (navigation && navigation.getBoundingClientRect().bottom === scrollY) {\r\n\t\t\twindow.scroll(0, 0);\r\n\t\t}\r\n\t}, 0);\r\n});\r\n\r\nprocess.on('unhandledRejection', (reason, promise) => {\r\n\t// eslint-disable-next-line no-console\r\n\tconsole.log('Reason for this failure is : ', reason);\r\n\t// eslint-disable-next-line no-console\r\n\tconsole.log('promise is', promise);\r\n\t// Application specific logging, throwing an error, or other logic here\r\n});\r\n","export function camelCaseToDashCase(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nexport function dashCaseToCamelCase(str) {\n return str.replace(/\\W+(.)/g, (x, chr) => chr.toUpperCase());\n}\n","const alphabet = '23456789ABDEGJKMNPQRVWXYZ';\r\n\r\nexport function generateId(length = 6) {\r\n\tlet id = '';\r\n\r\n\tfor (let i = 0; i < length; i++) {\r\n\t\tid += alphabet.charAt(Math.floor(Math.random() * alphabet.length));\r\n\t}\r\n\r\n\treturn id;\r\n}\r\n","export function objectToQueryString(data) {\r\n\t// Convert an object to a query string\r\n\treturn Object.keys(data)\r\n\t\t.reduce((queryString, key) => {\r\n\t\t\tconst value = data[key];\r\n\t\t\tif (value !== null && typeof value !== 'undefined') {\r\n\t\t\t\treturn queryString.concat(`${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`);\r\n\t\t\t}\r\n\t\t\treturn queryString;\r\n\t\t}, [])\r\n\t\t.join('&');\r\n}\r\n"],"sourceRoot":""}