{"version":3,"sources":["JavaScript/InitializeLocatorSearch.js"],"names":["initializeLocatorSearch","$","window","Engage","Locator","Messaging","Search","initialize","moduleId","element","messaging","servicesFramework","ServicesFramework","tabId","getTabId","antiForgeryValue","getAntiForgeryValue","serviceRoot","getServiceRoot","options","baseUrl","concat","headers","ModuleId","toString","TabId","RequestVerificationToken","localization","localResources","attributeDefinitions","AttributeDefinitions","showNearMe","location","protocol","Boolean","navigator","geolocation","SearchResults","Settings","ShowNearMeButton","settings","uniqueId","regions","countries","initialAddress","elmApp","Elm","Main","init","node","flags","trackEvent","payload","_gaq","push","eventCategory","eventAction","eventLabel","eventValue","noninteraction","ga","nonInteraction","gtag","event_category","event_label","value","non_interaction","ports","out","subscribe","type","toUpperCase","publish","messageTypes","validateZipCode","data","advancedSearch","locationUpdate","getCurrentPosition","_ref","coords","sub","send","name","latitude","longitude","_ref2","code","errorCode","timeout","resetSearchFrom","newQueryFilters","resetCustomFilters","messageType","zipCodeValidationResult","payloadData","searchedAddress","address","status","message","error","messagesThatTriggerSearch","boundingBoxUpdate","showLoading","locatorMessagePrefix","indexOf","SearchResultsUrl","href","messagesThatMarkSearchAsComplete","newLocations","setTimeout","jQuery"],"mappings":"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","file":"JavaScript\\InitializeLocatorSearch.min.js","sourcesContent":["/* global Engage, jQuery, Elm, _gaq, ga, gtag */\r\n\r\n/**\r\n * @description Initializes the core search module for the Engage Locator.\r\n * @param {jQuery} $ - A reference to the global jQuery namespace.\r\n */\r\nvoid (function initializeLocatorSearch($) {\r\n\t'use strict';\r\n\r\n\twindow.Engage = window.Engage || {};\r\n\tEngage.Locator = Engage.Locator || {};\r\n\r\n\tif (!Engage.Locator.Messaging) {\r\n\t\tconst retryDelay = 20;\r\n\t\tsetTimeout(() => initializeLocatorSearch($), retryDelay);\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * @namespace Window.Engage.Locator.Search\r\n\t */\r\n\tEngage.Locator.Search = Engage.Locator.Search || {};\r\n\r\n\t/**\r\n\t * @function initialize\r\n\t * @description Initializes and embeds the Engage Locator Search module.\r\n\t * @example\r\n\t * Engage.Locator.Search.initialize(\r\n\t * <%: this.ModuleId %>,\r\n\t * document.getElementById('<%: this.LocatorSearch.ClientID%>'));\r\n\t * @memberof Window.Engage.Locator.Search\r\n\t * @param {number} moduleId - The module Id of the search module.\r\n\t * @param {element} element - The document element to embed the ELM search application into.\r\n\t */\r\n\tEngage.Locator.Search.initialize = (moduleId, element) => {\r\n\t\tconst messaging = Engage.Locator.Messaging;\r\n\t\tconst servicesFramework = $.ServicesFramework(moduleId); // eslint-disable-line new-cap\r\n\t\tconst tabId = servicesFramework.getTabId();\r\n\t\tconst antiForgeryValue = servicesFramework.getAntiForgeryValue();\r\n\t\tconst serviceRoot = servicesFramework.getServiceRoot('Engage/Locator');\r\n\t\tconst options = {\r\n\t\t\tbaseUrl: `${serviceRoot}locations/`,\r\n\t\t\theaders: {\r\n\t\t\t\tModuleId: moduleId.toString(),\r\n\t\t\t\tTabId: tabId,\r\n\t\t\t\tRequestVerificationToken: antiForgeryValue,\r\n\t\t\t},\r\n\t\t\tlocalization: Engage.Locator.localResources,\r\n\t\t\tattributeDefinitions: Engage.Locator.AttributeDefinitions || [],\r\n\t\t\tshowNearMe:\r\n\t\t\t\twindow.location.protocol === 'https:' &&\r\n\t\t\t\tBoolean(navigator && navigator.geolocation) &&\r\n\t\t\t\tBoolean(Engage.Locator.SearchResults) &&\r\n\t\t\t\tBoolean(Engage.Locator.Settings.ShowNearMeButton),\r\n\t\t\tsettings: Engage.Locator.Settings,\r\n\t\t\tuniqueId: `${moduleId}-${tabId}`,\r\n\t\t\tregions: Engage.Locator.regions || [],\r\n\t\t\tcountries: Engage.Locator.countries || [],\r\n\t\t\tinitialAddress: Engage.Locator.initialAddress,\r\n\t\t};\r\n\t\tconst elmApp = Elm.Engage.Search.Main.init({\r\n\t\t\tnode: element,\r\n\t\t\tflags: options,\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @function requestUsersLocation\r\n\t\t * @description Requests the user's location from the browser.\r\n\t\t * @memberof Window.Engage.Locator.Search\r\n\t\t */\r\n\t\tfunction requestUsersLocation() {\r\n\t\t\tif (!navigator || !navigator.geolocation) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst geolocationOptions = {\r\n\t\t\t\ttimeout: 10000,\r\n\t\t\t};\r\n\t\t\tconst onGeolocationSuccess = ({ coords }) => {\r\n\t\t\t\telmApp.ports.sub.send({\r\n\t\t\t\t\ttype: 'ReceiveUserLocationResult',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\tname: 'UserLocation',\r\n\t\t\t\t\t\tlatitude: coords.latitude,\r\n\t\t\t\t\t\tlongitude: coords.longitude,\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\tconst onGeolocationError = ({ code }) => {\r\n\t\t\t\telmApp.ports.sub.send({\r\n\t\t\t\t\ttype: 'ReceiveUserLocationResult',\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\terrorCode: code,\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\tnavigator.geolocation.getCurrentPosition(\r\n\t\t\t\tonGeolocationSuccess,\r\n\t\t\t\tonGeolocationError,\r\n\t\t\t\tgeolocationOptions,\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @function trackEvent\r\n\t\t * @description Tracks an event with Google Analytics\r\n\t\t * @param {Object} payload - Event information\r\n\t\t * @memberof Window.Engage.Locator.Search\r\n\t\t */\r\n\t\tfunction trackEvent(payload) {\r\n\t\t\tif (window._gaq) {\r\n\t\t\t\t_gaq.push([\r\n\t\t\t\t\t'_trackEvent',\r\n\t\t\t\t\tpayload.eventCategory,\r\n\t\t\t\t\tpayload.eventAction,\r\n\t\t\t\t\tpayload.eventLabel,\r\n\t\t\t\t\tpayload.eventValue,\r\n\t\t\t\t\tpayload.noninteraction || false,\r\n\t\t\t\t]);\r\n\t\t\t}\r\n\r\n\t\t\tif (window.ga) {\r\n\t\t\t\tga('send', 'event', {\r\n\t\t\t\t\teventCategory: payload.eventCategory,\r\n\t\t\t\t\teventAction: payload.eventAction,\r\n\t\t\t\t\teventLabel: payload.eventLabel,\r\n\t\t\t\t\teventValue: payload.eventValue,\r\n\t\t\t\t\tnonInteraction: payload.noninteraction || false,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (window.gtag) {\r\n\t\t\t\tgtag('event', payload.eventAction, {\r\n\t\t\t\t\tevent_category: payload.eventCategory,\r\n\t\t\t\t\tevent_label: payload.eventLabel,\r\n\t\t\t\t\tvalue: payload.eventValue,\r\n\t\t\t\t\tnon_interaction: payload.noninteraction || false,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @name elmOutboundPortCallback\r\n\t\t * @typedef elmPortCallback\r\n\t\t * @description Handles all outgoing messages from the Engage Locator Search ELM application.\r\n\t\t * @memberof Window.Engage.Locator.Search\r\n\t\t * @param {Object} payload - The JSON payload sent from ELM.\r\n\t\t */\r\n\t\telmApp.ports.out.subscribe((payload) => {\r\n\t\t\tif (!payload || !payload.type) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (payload.type.toUpperCase()) {\r\n\t\t\t\tcase 'VALIDATEZIPCODEREQUEST':\r\n\t\t\t\t\tmessaging.publish(\r\n\t\t\t\t\t\tmessaging.messageTypes.validateZipCode,\r\n\t\t\t\t\t\tpayload.data,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'ADVANCEDSEARCHREQUEST':\r\n\t\t\t\t\tmessaging.publish(\r\n\t\t\t\t\t\tmessaging.messageTypes.advancedSearch,\r\n\t\t\t\t\t\tpayload.data,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'LOCATIONUPDATE':\r\n\t\t\t\t\tmessaging.publish(\r\n\t\t\t\t\t\tmessaging.messageTypes.locationUpdate,\r\n\t\t\t\t\t\tpayload.data,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'USERSLOCATIONREQUEST':\r\n\t\t\t\t\trequestUsersLocation();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'TRACKEVENT':\r\n\t\t\t\t\ttrackEvent(payload.data);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'RESETSEARCHFORM':\r\n\t\t\t\t\tmessaging.publish(\r\n\t\t\t\t\t\tmessaging.messageTypes.resetSearchFrom,\r\n\t\t\t\t\t\tpayload.data,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'NEWQUERYFILTERS':\r\n\t\t\t\t\tmessaging.publish(\r\n\t\t\t\t\t\tmessaging.messageTypes.newQueryFilters,\r\n\t\t\t\t\t\tpayload.data,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'RESETCUSTOMFILTERS':\r\n\t\t\t\t\tmessaging.publish(\r\n\t\t\t\t\t\tmessaging.messageTypes.resetCustomFilters,\r\n\t\t\t\t\t\tpayload.data,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @name trackEventSubscriptionCallback\r\n\t\t * @typedef subscriptionCallback\r\n\t\t * @description Handles all {Window.Engage.Locator.Messaging.messageTypes.trackEvent} messages.\r\n\t\t * @memberof Window.Engage.Locator.Search\r\n\t\t * @param {string} messageType - The type of message requesting publish.\r\n\t\t * @param {Object} payload - The object payload for the message requesting publish.\r\n\t\t */\r\n\t\tmessaging.subscribe(\r\n\t\t\tmessaging.messageTypes.trackEvent,\r\n\t\t\t(messageType, payload) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\tmessageType !== messaging.messageTypes.trackEvent ||\r\n\t\t\t\t\t!payload\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttrackEvent(payload);\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @name zipCodeValidationResultSubscriptionCallback\r\n\t\t * @typedef subscriptionCallback\r\n\t\t * @description Handles all {Window.Engage.Locator.Messaging.messageTypes.zipCodeValidationResult} messages.\r\n\t\t * @memberof Window.Engage.Locator.Search\r\n\t\t * @param {string} messageType - The type of message requesting publish.\r\n\t\t * @param {Object} payload - The object payload for the message requesting publish.\r\n\t\t */\r\n\t\tmessaging.subscribe(\r\n\t\t\tmessaging.messageTypes.zipCodeValidationResult,\r\n\t\t\t(messageType, payload) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\tmessageType !==\r\n\t\t\t\t\t\tmessaging.messageTypes.zipCodeValidationResult ||\r\n\t\t\t\t\t!payload\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst type = 'ZipCodeValidationResult';\r\n\t\t\t\tconst payloadData = payload.data || {};\r\n\t\t\t\tconst searchedAddress = payloadData.address;\r\n\t\t\t\tswitch (payload.status.toUpperCase()) {\r\n\t\t\t\t\tcase 'ERROR':\r\n\t\t\t\t\t\telmApp.ports.sub.send({\r\n\t\t\t\t\t\t\ttype,\r\n\t\t\t\t\t\t\tdata: { message: payload.error },\r\n\t\t\t\t\t\t\taddress: searchedAddress,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'NO_MATCHES_FOUND':\r\n\t\t\t\t\t\telmApp.ports.sub.send({\r\n\t\t\t\t\t\t\ttype,\r\n\t\t\t\t\t\t\tdata: payloadData,\r\n\t\t\t\t\t\t\taddress: searchedAddress,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'EXACT_MATCH_FOUND':\r\n\t\t\t\t\tcase 'MULTIPLE_MATCHES_FOUND':\r\n\t\t\t\t\t\telmApp.ports.sub.send({\r\n\t\t\t\t\t\t\ttype,\r\n\t\t\t\t\t\t\tdata: payloadData,\r\n\t\t\t\t\t\t\taddress: searchedAddress,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @const {string[]} messagesThatTriggerSearch - An array of all messages types that trigger a search event.\r\n\t\t * @memberof Window.Engage.Locator.Search\r\n\t\t */\r\n\t\tconst messagesThatTriggerSearch = [\r\n\t\t\tmessaging.messageTypes.validateZipCode,\r\n\t\t\tmessaging.messageTypes.locationUpdate,\r\n\t\t\tmessaging.messageTypes.newQueryFilters,\r\n\t\t\tmessaging.messageTypes.resetSearchFrom,\r\n\t\t\tmessaging.messageTypes.boundingBoxUpdate,\r\n\t\t\tmessaging.messageTypes.showLoading,\r\n\t\t\tmessaging.messageTypes.advancedSearch,\r\n\t\t];\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @name messagesThatTriggerSearchSubscriptionCallback\r\n\t\t * @typedef subscriptionCallback\r\n\t\t * @description Subscribe to all messages in the Engage Locator, only handle messages\r\n\t\t * that exist in the {messagesThatTriggerSearch} member.\r\n\t\t * @memberof Window.Engage.Locator.Search\r\n\t\t * @param {string} messageType - The type of message requesting publish.\r\n\t\t * @param {Object} payload - The object payload for the message requesting publish.\r\n\t\t */\r\n\t\tmessaging.subscribe(\r\n\t\t\tmessaging.locatorMessagePrefix,\r\n\t\t\t(messageType, payload) => {\r\n\t\t\t\tif (messagesThatTriggerSearch.indexOf(messageType) === -1) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tmessageType === messaging.messageTypes.validateZipCode &&\r\n\t\t\t\t\tBoolean(Engage.Locator.Settings.SearchResultsUrl) &&\r\n\t\t\t\t\tBoolean(payload && payload.address)\r\n\t\t\t\t) {\r\n\t\t\t\t\twindow.location.href = `${Engage.Locator.Settings.SearchResultsUrl}?address=${payload.address}`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (messageType === messaging.messageTypes.advancedSearch) {\r\n\t\t\t\t\twindow.location.href = `${Engage.Locator.Settings.SearchResultsUrl}?advanced=true`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\telmApp.ports.sub.send({\r\n\t\t\t\t\ttype: 'PerformSearchResult',\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @const {string[]} messagesThatMarkSearchAsComplete - An array of all messages types that mark a search\r\n\t\t * action has been completed.\r\n\t\t * @memberof Window.Engage.Locator.Search\r\n\t\t */\r\n\t\tconst messagesThatMarkSearchAsComplete = [\r\n\t\t\tmessaging.messageTypes.zipCodeValidationResult,\r\n\t\t\tmessaging.messageTypes.newLocations,\r\n\t\t\tmessaging.messageTypes.advancedSearch,\r\n\t\t];\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @name messagesThatMarkSearchAsCompleteSubscriptionCallback\r\n\t\t * @typedef subscriptionCallback\r\n\t\t * @description Subscribe to all messages in the Engage Locator, only handle messages\r\n\t\t * that exist in the {messagesThatMarkSearchAsComplete} member.\r\n\t\t * @memberof Window.Engage.Locator.Search\r\n\t\t * @param {string} messageType - The type of message requesting publish.\r\n\t\t * @param {Object} payload - The object payload for the message requesting publish.\r\n\t\t */\r\n\t\tmessaging.subscribe(messaging.locatorMessagePrefix, (messageType) => {\r\n\t\t\tif (messagesThatMarkSearchAsComplete.indexOf(messageType) === -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\telmApp.ports.sub.send({\r\n\t\t\t\ttype: 'SearchCompletedResult',\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n})(jQuery);\r\n"]}