{"version":3,"file":"Widgets.BroadbandSearchForm-290d6774dcdebb85f558.js","mappings":"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","sources":["webpack://@whistleout/webui/./Areas/Widgets/js/BroadbandSearchForm.js","webpack://@whistleout/webui/./Areas/Widgets/js/common/utils/EventHelper.js","webpack://@whistleout/webui/./Areas/Widgets/js/common/common.ts","webpack://@whistleout/webui/./Areas/Widgets/js/common/index.ts","webpack://@whistleout/webui/./Areas/Widgets/js/common/widget.ts"],"sourcesContent":["import { onAddressChangedEvent } from '../../Shared/React/js/components/addressSearch/AddressSearch';\n\n(function () {\n 'use strict';\n var promise = null;\n\n function main() {\n\n var controller = {\n init: function () {\n var widgets = wo$('[data-widget-type=\"broadband-search-form\"]');\n if (!widgets.length) return;\n\n var selectValuesFromQuery = function (widget) {\n var query = decodeURIComponent(wo$(widget).data('query'));\n\n var address = WhistleOut.getQueryStringParameter('address', query);\n if (address) {\n wo$(widget).find('input[data-address-input]').val(address);\n }\n\n var data = WhistleOut.getQueryStringParameter('data', query);\n if (data) {\n wo$(widget).find('select[data-data-select] option[value=\"' + data + '\"]').prop('selected', true);\n }\n\n var speed = WhistleOut.getQueryStringParameter('speed', query);\n if (speed) {\n wo$(widget).find('select[data-speed-select] option[value=\"' + speed + '\"]').prop('selected', true);\n }\n };\n\n for (var index = 0; index < widgets.length; index++) {\n selectValuesFromQuery(widgets[index]);\n }\n\n widgets.off('click');\n widgets.on('click', '[data-search-button]', function () {\n controller.search(wo$(this));\n });\n\n addEventListener(onAddressChangedEvent, function () {\n var widget = wo$(this).find('[data-widget-type=\"broadband-search-form\"]');\n if (widget.data('auto-fill-address') === 'True' && widget.data('mode') === 'Express' && widget.find('[data-address-input]').val() !== '') {\n controller.search(wo$(this).find('[data-search-button]'));\n }\n });\n },\n\n checkCoverage: function (url, address, widget) {\n promise = new Promise(function (resolve) {\n var useDefaultSuppliers = false;\n var transactUrl = '';\n var supplierName = '';\n var supplierImageUrl = '';\n if (address) {\n url = WhistleOut.updateQueryStringParameter(url, 'address', address);\n wo$.ajax({\n url: url,\n type: 'GET',\n success: function (result) {\n if (result) {\n WhistleOut.setCoverageCookie(result.coverage);\n useDefaultSuppliers = result.useDefaultSuppliers;\n if (widget.data('mode') === 'Express') {\n transactUrl = result.transactUrl;\n supplierName = result.supplierName;\n supplierImageUrl = result.supplierImageUrl;\n }\n }\n return resolve({\n useDefaultSuppliers: useDefaultSuppliers,\n transactUrl: transactUrl,\n supplierName: supplierName,\n supplierImageUrl: supplierImageUrl\n });\n }\n });\n } else {\n return resolve({\n useDefaultSuppliers: false,\n transactUrl: '',\n supplierName: '',\n supplierImageUrl: ''\n });\n }\n });\n },\n\n search: function ($this) {\n $this.find('.fa-spinner').show();\n\n WhistleOut.trackEvent('BroadbandSearchForm', 'Search');\n\n var widget = $this.parents('[data-widget-type=\"broadband-search-form\"]');\n var coverageUrl = widget.data('coverageurl');\n var address = widget.find('[data-address-input]').val();\n controller.checkCoverage(coverageUrl, address, widget);\n\n var searchUrl = widget.data('searchurl');\n var defaultSuppliers = widget.data('defaultsuppliers');\n var detectLocation = widget.data('detectlocation');\n var initialQueryParams = widget.data('query');\n var maxResultsPerSupplier = widget.data('maxresultspersupplier');\n var monetised = widget.data('monetised');\n var data = widget.find('[data-data-select]').val();\n var speed = widget.find('[data-speed-select]').val();\n\n var queryString = '';\n\n if (initialQueryParams) {\n queryString = decodeURIComponent(initialQueryParams);\n if (queryString.indexOf('?') === -1)\n queryString = '?' + queryString;\n }\n\n queryString = WhistleOut.updateQueryStringParameter(queryString, 'maxresultspersupplier', maxResultsPerSupplier);\n queryString = WhistleOut.updateQueryStringParameter(queryString, 'monetised', monetised);\n\n var dataValue = data || data === 0 ? data : null;\n queryString = WhistleOut.updateQueryStringParameter(queryString, 'data', dataValue);\n\n var speedValue = speed && speed !== '0' ? speed : null;\n queryString = WhistleOut.updateQueryStringParameter(queryString, 'speed', speedValue);\n\n queryString = WhistleOut.updateQueryStringParameter(queryString, 'tab', WhistleOut.getSiteConfiguration().broadbandConfig.defaultTab);\n\n if (address && address.length) {\n queryString = WhistleOut.updateQueryStringParameter(queryString, 'address', address.replace(/\\s+/g, '+'));\n controller.executeSearch(widget, searchUrl, queryString, defaultSuppliers);\n } else if (detectLocation === true || detectLocation === 'True') {\n WhistleOut.getCurrentLocation(\n function (e) {\n var address = e.label;\n if (address && address.length > 1) {\n queryString = WhistleOut.updateQueryStringParameter(queryString, 'address', address.replace(/\\s+/g, '+'));\n }\n controller.executeSearch(widget, searchUrl, queryString, defaultSuppliers);\n },\n function () {\n controller.executeSearch(widget, searchUrl, queryString, defaultSuppliers);\n });\n } else {\n controller.executeSearch(widget, searchUrl, queryString, defaultSuppliers);\n }\n },\n\n executeSearch: function (widget, url, queryString, defaultSuppliers) {\n if (promise) {\n promise.then(function (result) {\n if (result.transactUrl) {\n widget.find('[data-supplier-name]').html(result.supplierName);\n widget.find('[data-supplier-image]').attr('src', result.supplierImageUrl);\n widget.find('[data-heading], [data-form]').hide();\n widget.find('[data-transact-heading], [data-transact-status]').show();\n setTimeout(function () {\n controller.openSearchWindow(result.transactUrl);\n }, 3000);\n } else {\n if (result.useDefaultSuppliers && defaultSuppliers && defaultSuppliers.length) {\n queryString = WhistleOut.updateQueryStringParameter(queryString, 'supplier', defaultSuppliers);\n }\n controller.openSearchWindow(url + queryString);\n }\n }).catch(function () {\n controller.openSearchWindow(url + queryString);\n });\n } else {\n controller.openSearchWindow(url + queryString);\n }\n },\n\n openSearchWindow: function (url) {\n var win = window.open(url, '_top');\n win.focus();\n },\n };\n\n WhistleOut.initWidget = controller.init;\n controller.init();\n };\n\n WhistleOut.initModule(import.meta.url, main);\n\n}());","export function addEventListener(elements, events, handler) {\n _addOrRemoveListener('add', elements, events, handler);\n}\n\nexport function removeEventListener(elements, events, handler) {\n _addOrRemoveListener('remove', elements, events, handler);\n}\n\nexport function _addOrRemoveListener(action, elements, events, handler) {\n const eventsArray = events.split(' ');\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n\n for (let j = 0; j < eventsArray.length; j++) {\n const event = eventsArray[j];\n\n if (action === 'add') {\n element.addEventListener(event, handler);\n } else {\n element.removeEventListener(event, handler);\n }\n }\n }\n}\n","/* globals ga */\n\nimport type { WoDataLayerItem } from '../../../Shared/js/@types/WoDataLayer';\nimport { WhistleOutContext } from '../../../Shared/js/common/common';\n\nexport class WhistleOutContextWidget extends WhistleOutContext {\n constructor() {\n super();\n this.scope = 'widget';\n }\n\n pushGtmEvent(category: string, action: string, label: string, value: { nonInteraction: boolean }) {\n try {\n const analyticsClientSideData = this.getAnalyticsClientSideData();\n const data = analyticsClientSideData.data;\n\n this.pushDataLayerItem({\n event: `wo_${category}_${action}`.toLowerCase(),\n customCategory: category,\n customAction: action,\n customLabel: label,\n customValue: isNaN(value as never) ? undefined : +value,\n customCountry: data.country,\n customProductAreaId: data.productAreaId\n });\n } catch (err) {\n this.Rollbar.error(`WhistleOut.pushGtmEvent: category=${category}, action=${action}, label=${label}`, err);\n }\n }\n\n sendPageView(url: string) {\n const analyticsClientSideData = this.getAnalyticsClientSideData();\n const config = analyticsClientSideData.config;\n\n try {\n if (config.trackPageImpression) {\n if ((!url || url.length <= 0) && analyticsClientSideData.data)\n url = analyticsClientSideData.data.trackingUrl;\n\n wo$.each(config.accounts, function (index, account) {\n ga('create', account.accountNumber, { name: account.trackerId, useAmpClientId: true }, 'auto');\n if (account.linkIdTracking) {\n ga(account.trackerId + '.require', 'linkid');\n }\n ga(account.trackerId + '.set', 'anonymizeIp', true);\n if (!url || url.length <= 0) {\n ga(account.trackerId + '.send', 'pageview');\n } else {\n ga(account.trackerId + '.send', 'pageview', {\n page: url\n });\n }\n });\n }\n } catch (err) {\n this.Rollbar.error(`WhistleOut.sendPageView url=${url}`, err);\n }\n }\n\n pushGtmWidgetPageView(url: string) {\n try {\n const analyticsClientSideData = this.getAnalyticsClientSideData();\n const customCountry = analyticsClientSideData.data.country;\n\n if (!url || url.length <= 0) {\n url = analyticsClientSideData.data.trackingUrl;\n }\n\n if (!url || url.length <= 0) url = `${location.pathname}${location.search}`;\n\n const dataLayerValue = {\n event: 'widgetCustomPageView',\n customUrl: url,\n customCountry: customCountry\n };\n\n this.pushDataLayerItem(dataLayerValue);\n } catch (err) {\n this.Rollbar.error('WhistleOut.ushGtmPageView', err);\n }\n }\n\n trackPageView(url?: string) {\n try {\n this.sendPageView(url);\n this.pushGtmWidgetPageView(url);\n } catch (err) {\n this.Rollbar.error(`WhistleOut.trackPageView url=${url}`, err);\n }\n }\n\n encodeHtml(str: string) {\n const el = document.createElement('span');\n el.append(document.createTextNode(str));\n return el.innerHTML;\n }\n\n async init() {\n if (this.isInitRequested) {\n return;\n }\n\n await this.initBase();\n }\n}\n","import '../../../Shared/js/polyfills';\n\nimport { WhistleOutContextWidget as WhistleOutContext } from './common';\nimport { widgetInit } from './widget';\n\n(async () => {\n if (window.WhistleOut.isInitRequested) {\n return;\n }\n\n await import(/* webpackMode: 'eager' */ '../vendor');\n\n // Some properties of window.WhistleOut can be initialised\n // by inline scripts before this main initialisation,\n // so we need to merge it\n window.WhistleOut = Object.assign(new WhistleOutContext(), window.WhistleOut || {});\n\n await window.WhistleOut.init();\n widgetInit();\n})();\n","import { pushDataLayerItemWidget } from '../../../Shared/js/utils/datalayer';\nimport * as EventHelper from './utils/EventHelper';\n\nexport function getWidget() {\n return wo$('#widget');\n}\n\nexport function widgetInit() {\n wo$(function () {\n const widget = getWidget();\n if (!widget.length) return;\n\n const controller = {\n resizeTaskId: null,\n resizeTaskAmpId: null,\n init: function () {\n const amp = widget.data('amp').toLowerCase() === 'true';\n const url = widget.data('url');\n\n const startTime = Date.now();\n pushDataLayerItemWidget({\n event: 'widget_load_begin',\n widget_placement: 'iframe'\n });\n\n const el = widget[0];\n\n if (amp) {\n EventHelper.addEventListener([window, el, el.parentElement], 'resize', this.resizeAmp.bind(this));\n EventHelper.addEventListener([window], 'load', this.resizeAmp.bind(this));\n } else {\n EventHelper.addEventListener([window, el, el.parentElement], 'resize', this.resize.bind(this));\n EventHelper.addEventListener([window], 'load', this.resize.bind(this));\n }\n\n wo$.ajax({\n context: this,\n type: 'GET',\n url: url,\n contentType: 'text/html'\n })\n .done(function (data) {\n widget.find('#widget-content').html(data);\n\n WhistleOut.applyPopover();\n WhistleOut.showTracking();\n\n if (WhistleOut.initWidget) {\n WhistleOut.initWidget();\n }\n })\n .fail(function (jqXHR, textStatus, error) {\n widget.find('#widget-content').html(widget.find('#widget-error').html());\n\n WhistleOut.Rollbar.error(\n `ajax error in Widget.js requesting ${url}, status: ${textStatus}, error: ${error}, responseText: ${jqXHR.responseText}`\n );\n\n pushDataLayerItemWidget({\n event: 'widget_error',\n widget_placement: 'iframe',\n error: error\n });\n })\n .always(() => {\n widget.find('#widget-error').remove();\n widget.find('#widget-loading').remove();\n\n const endTime = Date.now();\n pushDataLayerItemWidget({\n event: 'widget_load_end',\n widget_placement: 'iframe',\n duration: (endTime - startTime) / 1000\n });\n\n if (amp) {\n this.resizeAmp();\n } else {\n this.resize();\n }\n });\n },\n\n resize: function () {\n cancelIdleCallback(this.resizeTaskId);\n this.resizeTaskId = requestIdleCallback(this._resize.bind(this), {\n timeout: 300\n });\n },\n\n _resize: function () {\n window.parent.postMessage(\n {\n sentinel: 'whistleout-widget',\n url: document.location.href,\n height: widget.height()\n },\n '*'\n );\n },\n\n resizeAmp: function () {\n cancelIdleCallback(this.resizeTaskAmpId);\n this.resizeTaskAmpId = requestIdleCallback(this._resizeAmp.bind(this), {\n timeout: 300\n });\n },\n\n _resizeAmp: function () {\n window.parent.postMessage(\n {\n sentinel: 'amp',\n type: 'embed-size',\n height: widget.height()\n },\n '*'\n );\n }\n };\n\n controller.init();\n });\n}\n"],"names":["promise","WhistleOut","initModule","import","controller","init","widgets","wo$","length","selectValuesFromQuery","widget","query","decodeURIComponent","data","address","getQueryStringParameter","find","val","prop","speed","index","off","on","search","this","addEventListener","onAddressChangedEvent","checkCoverage","url","Promise","resolve","useDefaultSuppliers","transactUrl","supplierName","supplierImageUrl","updateQueryStringParameter","ajax","type","success","result","setCoverageCookie","coverage","$this","show","trackEvent","parents","coverageUrl","searchUrl","defaultSuppliers","detectLocation","initialQueryParams","maxResultsPerSupplier","monetised","queryString","indexOf","dataValue","speedValue","getSiteConfiguration","broadbandConfig","defaultTab","replace","executeSearch","getCurrentLocation","e","label","then","html","attr","hide","setTimeout","openSearchWindow","catch","window","open","focus","initWidget","elements","events","handler","action","eventsArray","split","i","element","j","event","_addOrRemoveListener","WhistleOutContextWidget","constructor","super","scope","pushGtmEvent","category","value","getAnalyticsClientSideData","pushDataLayerItem","toLowerCase","customCategory","customAction","customLabel","customValue","isNaN","undefined","customCountry","country","customProductAreaId","productAreaId","err","Rollbar","error","sendPageView","analyticsClientSideData","config","trackPageImpression","trackingUrl","each","accounts","account","ga","accountNumber","name","trackerId","useAmpClientId","linkIdTracking","page","pushGtmWidgetPageView","location","pathname","dataLayerValue","customUrl","trackPageView","encodeHtml","str","el","document","createElement","append","createTextNode","innerHTML","isInitRequested","initBase","Object","assign","getWidget","widgetInit","resizeTaskId","resizeTaskAmpId","amp","startTime","Date","now","widget_placement","parentElement","resizeAmp","bind","resize","context","contentType","done","applyPopover","showTracking","fail","jqXHR","textStatus","responseText","always","remove","endTime","duration","cancelIdleCallback","requestIdleCallback","_resize","timeout","parent","postMessage","sentinel","href","height","_resizeAmp"],"sourceRoot":""}