{"version":3,"file":"Widgets.MobilePhoneSearch-74020321f557589fc0a1.js","mappings":"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","sources":["webpack://@whistleout/webui/./Areas/Widgets/js/MobilePhoneSearch.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 * as ReferrerHelper from './common/utils/ReferrerHelper';\n\n(function () {\n 'use strict';\n\n function main() {\n\n var controller = {\n init: function () {\n var widget = wo$('[data-widget-type=\"mobile-phone-search\"]');\n if (!widget.length) return;\n\n widget.find('#change-usage').off('click').on('click', function () {\n WhistleOut.trackEvent('MobilePhoneSearch', 'ChangeUsage');\n });\n widget.find('#view-full-results').off('click').on('click', function () {\n WhistleOut.trackEvent('MobilePhoneSearch', 'ViewFullResults');\n });\n widget.find('[data-transaction]').off('click').each(function () {\n const $this = wo$(this);\n const transaction = $this.data('transaction');\n const supplier = $this.data('supplier');\n if (transaction === 'GoToSite') {\n const href = $this.attr('href');\n\n $this.attr('href', href + (href.indexOf('?') === -1 ? '?' : '&') + 'r=' + ReferrerHelper.getReferrerEncoded());\n }\n $this.on('click', function () {\n WhistleOut.trackEvent('MobilePhoneSearch', transaction, supplier);\n });\n });\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":["WhistleOut","initModule","import","controller","widget","wo$","length","find","off","on","trackEvent","each","$this","this","transaction","data","supplier","href","attr","indexOf","ReferrerHelper","initWidget","addEventListener","elements","events","handler","action","eventsArray","split","i","element","j","event","_addOrRemoveListener","WhistleOutContextWidget","constructor","super","scope","pushGtmEvent","category","label","value","getAnalyticsClientSideData","pushDataLayerItem","toLowerCase","customCategory","customAction","customLabel","customValue","isNaN","undefined","customCountry","country","customProductAreaId","productAreaId","err","Rollbar","error","sendPageView","url","analyticsClientSideData","config","trackPageImpression","trackingUrl","accounts","index","account","ga","accountNumber","name","trackerId","useAmpClientId","linkIdTracking","page","pushGtmWidgetPageView","location","pathname","search","dataLayerValue","customUrl","trackPageView","encodeHtml","str","el","document","createElement","append","createTextNode","innerHTML","init","isInitRequested","initBase","window","Object","assign","getWidget","widgetInit","resizeTaskId","resizeTaskAmpId","amp","startTime","Date","now","widget_placement","parentElement","resizeAmp","bind","resize","ajax","context","type","contentType","done","html","applyPopover","showTracking","fail","jqXHR","textStatus","responseText","always","remove","endTime","duration","cancelIdleCallback","requestIdleCallback","_resize","timeout","parent","postMessage","sentinel","height","_resizeAmp"],"sourceRoot":""}