{"version":3,"sources":["pwa/component/loadCss.js","pwa/component/searchComponentLoader.js","modules/sectionLazyLoad.js","nhs/views/BuilderShowcaseRedesign/Sections/favoritesLoader.js","modules/searchTypeHelper.js","nhs/views/BuilderShowcaseRedesign/Trackers/trackerLocationsSearch.js","nhs/views/BuilderShowcaseRedesign/Sections/askQuestionLoader.js","nhs/views/BuilderShowcaseRedesign/Initializers/locationsInitializer.js","nhs/views/BuilderShowCaseRedesign/ShowLocations.js","../../../../../../../../../../module-insertRequire.js"],"names":["define","params","callback","filesName","filter","item","linksElements","forEach","fileName","id","str","nameWithResourceVersion","substring","lastIndexOf","indexOf","replace","getFileName","url","document","querySelector","window","resourceDomain","fragment","createRange","createContextualFragment","links","querySelectorAll","length","element","onload","head","appendChild","loadCss","eventName","Object","prototype","hasOwnProperty","call","componentToInteract","loadSearchComponentFunction","loadSearchComponent","searchConfig","removeEventListener","cssBundle","value","require","SearchFormComponent","form","shouldAlwaysSubmitForm","submitButton","useAutocompleteForSubmit","validationError","searchTextField","click","init","bind","addEventListener","global","factory","amd","SectionLazyLoad","exports","module","root","rootMarginObserver","IntersectionObserver","entries","observer","entry","isIntersecting","intersectionRatio","getAttribute","location","protocol","hostname","fetch","then","response","text","data","event","CustomEvent","detail","dataset","preventLazyLoadSectionDefaultBehavior","responseFragment","dispatchEvent","lazyLoadSection","target","unobserve","rootMargin","lazyLoadSections","i","observe","initLazyLoad","favoriteElements","initFavoritesComponent","currentTarget","stopPropagation","buttonTarget","favoritesInit","eventToDispatch","Event","preventDefault","Init","pendingItems","cookie","match","arrayFavorites","JSON","parse","map","parentElement","style","display","updateStyleFavoriteAnchor","readyState","searchTypeHelper","CONFIGURATION","objectToReturn","functions","CommunityResults","nhs","cna","SingleFamily","CondoDevelopments","HomeResults","Floorplans","Model","CondoTownHomes","BuilderResults","BoylResults","CustomHomes","CustomBuilders","ManufacturedResults","ManufacturedHomes","AmenityResults","srpFunction","freeze","getAllSrpFunctions","allFunctions","getAllFunctions","urlKey","href","currentFunctions","localizedSrpFunction","keys","key","getSrpFunction","allSrpFunctions","currentFunction","isCustomSearchType","srpType","isCustomBuilderSearchType","isManufacturedSearchType","updateUrlFunction","newFunction","currentSrpFunction","newUrl","history","pushState","removeQueryParamFromUrl","parameter","thisParam","endsWith","getAllSrpTypes","assign","getSrpType","srpFunctions","split","getSrpTypeFromUrl","this","isBuilderSearchType","isCommunitySearchType","isAnyCommunitySearchType","isHomeSearchType","isAnyHomeSearchType","isCustomOrManufacturedSearchType","locationsSearchBox","locationsSearchTextInput","undefined","searchSubmitLocations","eventGa4","eventType","search_value","click_target","body","loadAskQuestionHandlerModule","moduleName","closest","askQuestionHandler","openModal","searchComponentLoader","onDomComplete","dependenciesModuleName"],"mappings":"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","file":"../showlocations-3146f1da4b.js","sourceRoot":"..","sourcesContent":["define('loadCss',[], () => {\r\n 'use strict';\r\n\r\n const getFileName = function (str) {\r\n // get the filename from the URL\r\n const nameWithResourceVersion = str.substring(str.lastIndexOf('/') + 1);\r\n // remove the resource version\r\n const nameWithoutResourceVersion = nameWithResourceVersion.substring(0, nameWithResourceVersion.indexOf('.'));\r\n // remove any possible invalid/unsupported characters from the name\r\n const name = nameWithoutResourceVersion.replace(/^[^a-z]+|[^\\w:.-]+/gi, '');\r\n return name;\r\n };\r\n\r\n function loadCss(...params) {\r\n let callback = null;\r\n const filesName = params.filter((item) => {\r\n if (typeof item !== 'function') {\r\n return true;\r\n }\r\n callback = item;\r\n return false;\r\n });\r\n\r\n let linksElements = '';\r\n filesName.forEach((fileName) => {\r\n const id = getFileName(fileName);\r\n const url = fileName;\r\n const rules = document.querySelector('link#' + id);\r\n if (!rules && fileName && window.resourceDomain) {\r\n linksElements += ``;\r\n }\r\n });\r\n\r\n const fragment = document.createRange().createContextualFragment(linksElements);\r\n const links = fragment.querySelectorAll('link');\r\n if (links.length > 0) {\r\n links.forEach((element) => {\r\n const link = element;\r\n link.onload = callback;\r\n });\r\n document.head.appendChild(fragment);\r\n }\r\n }\r\n\r\n return loadCss;\r\n});\r\n\n","define(\r\n 'searchComponentLoader',[\r\n 'loadCss'\r\n ], (\r\n loadCss\r\n ) => {\r\n 'use strict';\r\n\r\n const isTouchScreen = Object.prototype.hasOwnProperty.call(window, 'ontouchstart');\r\n const eventName = isTouchScreen ? 'touchend' : 'click';\r\n let componentToInteract;\r\n let loadSearchComponentFunction;\r\n\r\n /**\r\n * @private\r\n * loadSearchComponent: load all the search box component pwa\r\n *\r\n */\r\n function loadSearchComponent(searchConfig) {\r\n componentToInteract.removeEventListener(eventName, loadSearchComponentFunction);\r\n const cssBundle = document.querySelector(searchConfig.cssBundle);\r\n\r\n if (cssBundle) {\r\n loadCss(cssBundle.value);\r\n }\r\n\r\n require(['SearchFormComponent'], (SearchFormComponent) => {\r\n // eslint-disable-next-line no-unused-vars\r\n const search = new SearchFormComponent({\r\n form: document.querySelector(searchConfig.form),\r\n shouldAlwaysSubmitForm: searchConfig.shouldAlwaysSubmitForm,\r\n submitButton: document.querySelector(searchConfig.submitButton),\r\n useAutocompleteForSubmit: searchConfig.useAutocompleteForSubmit,\r\n validationError: document.querySelector(searchConfig.validationError),\r\n searchTextField: document.querySelector(searchConfig.searchTextField),\r\n });\r\n componentToInteract.click();\r\n });\r\n }\r\n\r\n /**\r\n * @public\r\n * init: intitialliaze the loader, it attach the events on the given element.\r\n */\r\n function init(searchConfig) {\r\n if (!searchConfig) {\r\n return;\r\n }\r\n componentToInteract = document.querySelector(searchConfig.componentToInteract);\r\n\r\n loadSearchComponentFunction = loadSearchComponent.bind(null, searchConfig);\r\n\r\n if (componentToInteract) {\r\n componentToInteract.addEventListener(eventName, loadSearchComponentFunction);\r\n }\r\n }\r\n\r\n return {\r\n init\r\n };\r\n }\r\n);\r\n\n","(function (global, factory) {\r\n 'use strict';\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n // If AMD is supported and the global object (window) in case any JS module is expecting\r\n // the SectionLazyLoad to exists on the window object.\r\n define('sectionLazyLoad',[], () => {\r\n global.SectionLazyLoad = factory(global);\r\n });\r\n } else if (typeof exports === 'object') {\r\n // If supports for Common JS is available export the module\r\n // and pass is value to the global (window) object in case non Common JS code\r\n // is expected to work with this SectionLazyLoad Module.\r\n global.SectionLazyLoad = factory(global);\r\n module.exports = global.SectionLazyLoad;\r\n } else {\r\n // If not support for AMD or Common JS is available register the module in the global scope.\r\n global.SectionLazyLoad = factory(global);\r\n }\r\n}(typeof window !== 'undefined' ? window : {}, (root) => {\r\n 'use strict';\r\n\r\n // Lazy Loading\r\n function lazyLoadSection(entry) {\r\n if (entry.getAttribute('data-url')) {\r\n const url = root.location.protocol + '//' + root.location.hostname + entry.getAttribute('data-url');\r\n\r\n fetch(url).then((response) => {\r\n response.text().then((data) => {\r\n // Now the dispatched event contains the raw data that the url returns\r\n const event = new CustomEvent('sectionLazyLoaded', {\r\n detail: {\r\n data,\r\n }\r\n });\r\n\r\n // Add the data-prevent-lazy-load-section-default-behavior=\"true\" attribute to prevent the script.\r\n // from appending the data to the DOM this should only be used if you don't need the response.\r\n // added to the target element.\r\n if (!entry.dataset.preventLazyLoadSectionDefaultBehavior) {\r\n const responseFragment = document.createRange().createContextualFragment(data);\r\n entry.appendChild(responseFragment);\r\n }\r\n\r\n entry.dispatchEvent(event);\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Callback function used with the intersection observer.\r\n * @param {*} entries\r\n * @param {*} observer\r\n */\r\n function callback(entries, observer) {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting && entry.intersectionRatio > 0) {\r\n lazyLoadSection(entry.target);\r\n observer.unobserve(entry.target);\r\n }\r\n });\r\n }\r\n\r\n const options = {\r\n root: null,\r\n rootMargin: '100px 0px'\r\n };\r\n\r\n const rootMarginObserver = new IntersectionObserver(callback, options);\r\n\r\n /**\r\n * Function used to get all the lazyloaded sections on initial load\r\n */\r\n function initLazyLoad() {\r\n const lazyLoadSections = document.querySelectorAll(\"[data-component='lazyLoad']\");\r\n\r\n // lazy load the sections\r\n for (let i = 0; i < lazyLoadSections.length; i += 1) {\r\n rootMarginObserver.observe(lazyLoadSections[i]);\r\n }\r\n }\r\n\r\n /**\r\n * Used to observe a dynamically created element that doesn't exist\r\n * on initial load (or re-observe an already unobserved element)\r\n * @param {Element} target the element that will be observed\r\n */\r\n function observe(target) {\r\n rootMarginObserver.observe(target);\r\n }\r\n\r\n initLazyLoad();\r\n\r\n return {\r\n observe\r\n };\r\n}));\r\n\n","define(\r\n 'favoritesLoader',[],\r\n () => {\r\n 'use strict';\r\n\r\n const favoriteElements = document.querySelectorAll('[data-favorite-trigger]');\r\n\r\n /*\r\n * We need to define the event name for mobile and desktop because we need to dispatch the event\r\n * after loading the favorites js resources, also favorites js works with mousedown for desktop and click\r\n * for mobile.\r\n *\r\n * Example desktop: user clicks on favorites button -> load the favorites js ->\r\n * we dispatch mousedown event -> favorites js working the event\r\n * Example mobile: user touch the favorites button -> load the favorites js ->\r\n * we dispatch click event -> favorites js working the event\r\n *\r\n * Notes: The reason to not use mouseover is that for mobile not working as expected because the\r\n * mouse over event needs to press the screen and this dispatch the touch start event first, and this\r\n * not working in the same way on desktop, desktop just needs to pass the pointer over the button.\r\n */\r\n const isTouchScreen = Object.prototype.hasOwnProperty.call(window, 'ontouchstart');\r\n const eventName = isTouchScreen ? 'click' : 'mousedown';\r\n\r\n /**\r\n * @private\r\n * initFavoritesComponent: inits the Favorites component on the title section\r\n */\r\n\r\n function initFavoritesComponent(event) {\r\n if (!event && !event.currentTarget) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n\r\n favoriteElements.forEach((item) => {\r\n item.removeEventListener(eventName, initFavoritesComponent);\r\n });\r\n\r\n const buttonTarget = event.currentTarget;\r\n\r\n require(\r\n ['favoritesInit'],\r\n (favoritesInit) => {\r\n favoritesInit.init();\r\n\r\n const eventToDispatch = new Event(eventName);\r\n buttonTarget.dispatchEvent(eventToDispatch);\r\n }\r\n );\r\n\r\n event.preventDefault();\r\n }\r\n\r\n /**\r\n * @private\r\n * Init: update Styles\r\n */\r\n function updateStyleFavoriteAnchor() {\r\n const pendingItems = document.cookie.match(/pendingSaveItem=([^;]+)/);\r\n const cookieFavorites = pendingItems ? JSON.parse(pendingItems[1]) : [];\r\n const arrayFavorites = cookieFavorites.map((item) => JSON.parse(item).id);\r\n favoriteElements.forEach((item) => {\r\n const itemIndex = arrayFavorites.indexOf(item.dataset.id);\r\n if (itemIndex >= 0) {\r\n const anchorSaved = item.parentElement.querySelector('.nhs_favSaved');\r\n anchorSaved.style.display = 'block';\r\n\r\n const anchorUnSave = item.parentElement.querySelector('.nhs_favUnsave');\r\n anchorUnSave.style.display = 'none';\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @private\r\n * Init: Init the component\r\n */\r\n\r\n function Init() {\r\n favoriteElements.forEach((item) => {\r\n item.addEventListener(eventName, initFavoritesComponent);\r\n });\r\n updateStyleFavoriteAnchor();\r\n }\r\n\r\n if (document.readyState === 'complete') {\r\n Init();\r\n } else {\r\n window.addEventListener('load', Init);\r\n }\r\n }\r\n);\r\n\n","// This component should be updated in case we add a new srpType function in the future\r\n/* eslint-disable */\r\n(function (global, factory) {\r\n \"use strict\";\r\n\r\n if (\"function\" === typeof define && define.amd) {\r\n // If supports for AMD is available return the value to the AMD Loader\r\n // and to the global (window) object in case any JS module.\r\n define('searchTypeHelper',[], function () {\r\n global.searchTypeHelper = factory(global);\r\n return global.searchTypeHelper;\r\n });\r\n } else if (\"object\" === typeof exports) {\r\n // If supports for Common JS is available export the module\r\n // and pass is value to the global (window) object in case non Common JS code \r\n // is expected to work\r\n module.exports = (global.searchTypeHelper = factory(global));\r\n } else {\r\n // If not support for AMD or Common JS is available register the module in the global scope.\r\n global.searchTypeHelper = factory(global);\r\n }\r\n})(\"undefined\" !== typeof window ? window : {}, function (root) {\r\n var CONFIGURATION = (function () {\r\n var objectToReturn = {};\r\n var functions = {\r\n CommunityResults: {\r\n \"nhs\": \"/communities/\",\r\n \"cna\": \"/comunidades/\",\r\n SingleFamily: {\r\n \"nhs\": \"/single-family-communities/\",\r\n \"cna\": \"/comunidades-unifamiliares/\"\r\n }\r\n },\r\n CondoDevelopments: {\r\n \"nhs\": \"/condo-developments/\",\r\n \"cna\": \"/condominios/\"\r\n },\r\n HomeResults: {\r\n \"nhs\": \"/homes/\",\r\n \"cna\": \"/casas/\",\r\n Floorplans: {\r\n \"nhs\": \"/floor-plans/\",\r\n \"cna\": \"/planos/\"\r\n },\r\n Model: {\r\n \"nhs\": \"/model-homes/\",\r\n \"cna\": \"/casas-modelo/\"\r\n },\r\n SingleFamily: {\r\n \"nhs\": \"/single-family-homes/\",\r\n \"cna\": \"/casas-unifamiliares/\"\r\n }\r\n },\r\n CondoTownHomes: {\r\n \"nhs\": \"/condo-townhomes/\",\r\n \"cna\": \"/complejos/\",\r\n Floorplans: {\r\n \"nhs\": \"/floor-plans/\",\r\n \"cna\": \"/planos/\"\r\n },\r\n Model: {\r\n \"nhs\": \"/model-homes/\",\r\n \"cna\": \"/casas-modelo/\"\r\n }\r\n },\r\n BuilderResults: {\r\n \"nhs\": \"/builders/\",\r\n \"cna\": \"/constructores/\"\r\n },\r\n BoylResults: {\r\n \"nhs\": \"/on-your-lot/\",\r\n \"cna\": \"/construya-en-su-lote/\"\r\n },\r\n CustomHomes: {\r\n \"nhs\": \"/custom-homes/\",\r\n \"cna\": \"/casas-personalizadas/\"\r\n },\r\n CustomBuilders: {\r\n \"nhs\": \"/custom-builders/\",\r\n \"cna\": \"/constructoras-personalizadas/\"\r\n },\r\n ManufacturedResults: {\r\n \"nhs\": \"/manufactured/\",\r\n \"cna\": \"/prefabricadas/\"\r\n },\r\n ManufacturedHomes: {\r\n \"nhs\": \"/manufactured-homes/\",\r\n \"cna\": \"/casasprefabricadas/\",\r\n Floorplans: {\r\n \"nhs\": \"/floor-plans/\",\r\n \"cna\": \"/planos/\"\r\n },\r\n Model: {\r\n \"nhs\": \"/model-homes/\",\r\n \"cna\": \"/casas-modelo/\"\r\n }\r\n },\r\n AmenityResults: {\r\n \"nhs\": \"/state/\"\r\n }\r\n };\r\n\r\n objectToReturn[\"getAllFunctions\"] = function () { return functions; };\r\n\r\n for (var srpFunction in functions) {\r\n if (functions.hasOwnProperty(srpFunction)) {\r\n objectToReturn[srpFunction] = srpFunction;\r\n }\r\n }\r\n\r\n return Object.freeze(objectToReturn);\r\n })();\r\n\r\n /**\r\n * Flag to determine if current page is NHS or CNA.\r\n * @private\r\n * @returns {boolean} True if url is NHS, false if not.\r\n */\r\n var isNhsPage = function () {\r\n return root.location.href.indexOf(\".newhomesource.com\") > -1;\r\n }\r\n\r\n /**\r\n * Gets an object with all srp function strings for NHS or for CNA.\r\n * @description For nhs returns {CommunityResults: \"/communities/\", CondoDevelopments: \"/condo-developments/\", ... }.\r\n * For cna returns {CommunityResults: \"/comunidades/\", CondoDevelopments: \"/condominios/\", ... }.\r\n * @returns {object} An object containing the srp functions.\r\n */\r\n var getAllSrpFunctions = function () {\r\n var allFunctions = CONFIGURATION.getAllFunctions();\r\n let urlKey = isNhsPage() ? 'nhs' : 'cna';\r\n var currentFunctions = {};\r\n\r\n for (var srpFunction in allFunctions) {\r\n const entry = allFunctions[srpFunction];\r\n const localizedSrpFunction = entry[urlKey];\r\n\r\n if (localizedSrpFunction) {\r\n currentFunctions[srpFunction] = localizedSrpFunction;\r\n }\r\n\r\n Object.keys(entry).forEach((key) => {\r\n \r\n if (typeof entry[key] === 'object' && entry[key][urlKey])\r\n {\r\n currentFunctions[`${srpFunction}__${key}`] = entry[key][urlKey];\r\n }\r\n })\r\n }\r\n\r\n return currentFunctions;\r\n }\r\n\r\n /**\r\n * Gets an object with the names of all srpTypes.\r\n * @example\r\n * // returns { CommunityResults: \"CommunityResults\", HomeResults: \"HomeResults\", CondoDevelopments: \"CondoDevelopments\", ... }\r\n * @returns {object} A json object with the key/values of all valid srpTypes.\r\n */\r\n var getAllSrpTypes = function () {\r\n var localCopy = Object.assign({}, CONFIGURATION);\r\n delete localCopy[\"getAllFunctions\"];\r\n return CONFIGURATION;\r\n }\r\n\r\n /**\r\n * Gets the srp function from the current srp url.\r\n * @returns {string} The current srp function, empty if the url doesn't match any current valid functions.\r\n */\r\n var getSrpFunction = function (url) {\r\n if (!url) {\r\n url = root.location.href;\r\n }\r\n\r\n var allSrpFunctions = getAllSrpFunctions();\r\n\r\n for (var srpFunction in allSrpFunctions) {\r\n if (allSrpFunctions.hasOwnProperty(srpFunction)) {\r\n var currentFunction = allSrpFunctions[srpFunction];\r\n\r\n if (url.indexOf(currentFunction) > -1) {\r\n return currentFunction;\r\n }\r\n }\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Get the srpType name based on the url search function. Uses the current url function if a function parameter is not provided.\r\n * @param {string} srpFunction The url search function.\r\n * @returns {string} The current srpType if the function matches any valid srpType, empty if otherwise.\r\n */\r\n var getSrpType = function (srpFunction) {\r\n if (!srpFunction) {\r\n srpFunction = getSrpFunction();\r\n }\r\n\r\n var srpFunctions = getAllSrpFunctions();\r\n\r\n for (var currentSrpFunction in srpFunctions) {\r\n if (srpFunctions.hasOwnProperty(currentSrpFunction) &&\r\n srpFunctions[currentSrpFunction] === srpFunction) {\r\n const hierarchy = currentSrpFunction.split('__');\r\n return hierarchy[0];\r\n }\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Takes an url and updates it with the new srp function part.\r\n * @param {string} newFunction The function to which we want to update the current url.\r\n * @param {string=} url The url to update. If not provided the current url is used. \r\n */\r\n var updateUrlFunction = function (newFunction, url) {\r\n if (!url) {\r\n url = root.location.href;\r\n }\r\n\r\n var currentSrpFunction = getSrpFunction(url);\r\n\r\n if (currentSrpFunction !== newFunction && newFunction !== \"\") {\r\n var newUrl = url.replace(currentSrpFunction, newFunction);\r\n root.history.pushState({}, \"\", newUrl);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Removes a query parameter from a url string.\r\n * @param {string} parameter The query parameter to remove from the url.\r\n * @param {string=} url The url from which the query parameter should be removed.\r\n * If not provided, the current url will be used instead.\r\n * @returns {string} Url with the query parameter removed.\r\n */\r\n var removeQueryParamFromUrl = function (parameter, url) {\r\n if (!url) {\r\n url = root.location.href;\r\n }\r\n\r\n var thisParam = \"?\" + parameter;\r\n\r\n // Case 1. There's only one query parameter.\r\n // Example: Query parameter \"test=1\" in url \"www.nhs.com/?test=1\".\r\n if (url.indexOf(thisParam) !== -1 && url.endsWith(thisParam)) {\r\n return url.replace(thisParam, \"\");\r\n }\r\n\r\n // Case 2. Query parameter is the first of several parameters.\r\n // Example: Query parameter \"one=true\" in \"www.nhs.com/?one=true&two=true\".\r\n thisParam = \"?\" + parameter + \"&\";\r\n\r\n if (url.indexOf(thisParam) !== -1) {\r\n return url.replace(parameter + \"&\", \"\");\r\n }\r\n\r\n // Case 3. Query parameter is between other parameters.\r\n // Example: Query parameter \"true=2\" in \"www.nhs.com/?one=1&two=2&three=3\".\r\n thisParam = \"&\" + parameter + \"&\";\r\n\r\n if (url.indexOf(thisParam) !== -1) {\r\n return url.replace(\"&\" + parameter, \"\");\r\n }\r\n\r\n // Case 4. Query parameter is the last of several parameters.\r\n // Example: Query parameter \"c=false\" in \"www.nhs.com/a=false&b=true&c=false\".\r\n thisParam = \"&\" + parameter;\r\n\r\n if (url.indexOf(thisParam) !== -1 && url.endsWith(thisParam)) {\r\n return url.replace(thisParam, \"\");\r\n }\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Gets a flag indicating if the srpType is a regular community srpType.\r\n * @param {string} srpType The srpType to check.\r\n * @returns {boolean} True if the srp is a regular community srpType, false otherwise.\r\n */\r\n var isCommunitySearchType = function (srpType) {\r\n return srpType === CONFIGURATION.CommunityResults ||\r\n srpType === CONFIGURATION.CondoDevelopments;\r\n }\r\n\r\n /**\r\n * Gets a flag indicating if the srpType is any type of community srpType.\r\n * @param {string} srpType The srpType to check.\r\n * @returns {boolean} True if the srp is any kind of community srpType, false otherwise.\r\n */\r\n var isAnyCommunitySearchType = function (srpType) {\r\n return srpType === CONFIGURATION.CommunityResults ||\r\n srpType === CONFIGURATION.CondoDevelopments ||\r\n srpType === CONFIGURATION.BoylResults ||\r\n srpType === CONFIGURATION.ManufacturedResults ||\r\n srpType === CONFIGURATION.AmenityResults;\r\n }\r\n\r\n /**\r\n * Gets a flag indicating if the srpType is a regular home srpType.\r\n * @param {string} srpType The srpType to check.\r\n * @returns {boolean} True if the srp is a regular home srpType, false otherwise.\r\n */\r\n var isHomeSearchType = function (srpType) {\r\n return srpType === CONFIGURATION.HomeResults ||\r\n srpType === CONFIGURATION.CondoTownHomes;\r\n }\r\n\r\n /**\r\n * Gets a flag indicating if the srpType is any type of home srpType.\r\n * @param {string} srpType The srpType to check.\r\n * @returns {boolean} True if the srp is any kind of home srpType, false otherwise.\r\n */\r\n var isAnyHomeSearchType = function (srpType) {\r\n return srpType === CONFIGURATION.HomeResults ||\r\n srpType === CONFIGURATION.CondoTownHomes ||\r\n srpType === CONFIGURATION.CustomHomes ||\r\n srpType === CONFIGURATION.ManufacturedHomes;\r\n }\r\n\r\n /**\r\n * Gets a flag indicating if the srpType is a builder results srpType.\r\n * @param {string} srpType The srpType to check.\r\n * @returns {boolean} True if the srp is a builder results srpType, false otherwise.\r\n */\r\n var isBuilderSearchType = function (srpType) {\r\n return srpType === CONFIGURATION.BuilderResults;\r\n }\r\n\r\n /**\r\n * Gets a flag indicating if the srpType is a custom srpType.\r\n * @param {string} srpType The srpType to check.\r\n * @returns {boolean} True if the srp is a custom srpType, false otherwise.\r\n */\r\n var isCustomSearchType = function (srpType) {\r\n return srpType === CONFIGURATION.BoylResults ||\r\n srpType === CONFIGURATION.CustomHomes;\r\n }\r\n\r\n /**\r\n * Gets a flag indicating if the srpType is a custom builder srpType.\r\n * @param {string} srpType The srpType to check.\r\n * @returns {boolean} True if the srp is a custom builder srpType, false otherwise.\r\n */\r\n var isCustomBuilderSearchType = function (srpType) {\r\n return srpType === CONFIGURATION.CustomBuilders;\r\n }\r\n\r\n /**\r\n * Gets a flag indicating if the srpType is a manufactured srpType.\r\n * @param {string} srpType The srpType to check.\r\n * @returns {boolean} True if the srp is a manufactured srpType, false otherwise.\r\n */\r\n var isManufacturedSearchType = function (srpType) {\r\n return srpType === CONFIGURATION.ManufacturedResults ||\r\n srpType === CONFIGURATION.ManufacturedHomes;\r\n }\r\n\r\n /**\r\n * Gets a flag indicating if the srpType is a manufactured or custom srpType.\r\n * @param {string} srpType The srpType to check.\r\n * @returns {boolean} True if the srp is a manufactured or custom srpType, false otherwise.\r\n */\r\n var isCustomOrManufacturedSearchType = function (srpType) {\r\n return isCustomSearchType(srpType) || isCustomBuilderSearchType(srpType) || isManufacturedSearchType(srpType)\r\n }\r\n\r\n /**\r\n * Gets the SRP type from the url.\r\n * @param {string} url The url we want to check.\r\n * @returns The SRP type string value of the url.\r\n */\r\n var getSrpTypeFromUrl = function (url){\r\n const srpFunction = this.getSrpFunction(url);\r\n const srpType = this.getSrpType(srpFunction);\r\n\r\n return srpType;\r\n }\r\n\r\n return {\r\n CommunityResults: CONFIGURATION.CommunityResults,\r\n CondoDevelopments: CONFIGURATION.CondoDevelopments,\r\n HomeResults: CONFIGURATION.HomeResults,\r\n CondoTownHomes: CONFIGURATION.CondoTownHomes,\r\n BuilderResults: CONFIGURATION.BuilderResults,\r\n BoylResults: CONFIGURATION.BoylResults,\r\n CustomHomes: CONFIGURATION.CustomHomes,\r\n CustomBuilders: CONFIGURATION.CustomBuilders,\r\n ManufacturedResults: CONFIGURATION.ManufacturedResults,\r\n ManufacturedHomes: CONFIGURATION.ManufacturedHomes,\r\n AmenityResults: CONFIGURATION.AmenityResults,\r\n getSrpFunction: getSrpFunction,\r\n getAllSrpFunctions: getAllSrpFunctions,\r\n updateUrlFunction: updateUrlFunction,\r\n removeQueryParamFromUrl: removeQueryParamFromUrl,\r\n getAllSrpTypes: getAllSrpTypes,\r\n getSrpType: getSrpType,\r\n getSrpTypeFromUrl: getSrpTypeFromUrl,\r\n isBuilderSearchType: isBuilderSearchType,\r\n isCommunitySearchType: isCommunitySearchType,\r\n isAnyCommunitySearchType: isAnyCommunitySearchType,\r\n isHomeSearchType: isHomeSearchType,\r\n isAnyHomeSearchType: isAnyHomeSearchType,\r\n isCustomSearchType: isCustomSearchType,\r\n isCustomBuilderSearchType: isCustomBuilderSearchType,\r\n isManufacturedSearchType: isManufacturedSearchType,\r\n isCustomOrManufacturedSearchType: isCustomOrManufacturedSearchType\r\n };\r\n});\n","(function trackerLocationsSearch(global) {\r\n 'use strict';\r\n\r\n const locationsSearchBox = global.document.querySelector('[data-locations-search-box]');\r\n\r\n /**\r\n * trackLocationsSearchEvent: tracks the Locations Search click event.\r\n */\r\n function trackLocationsSearchEvent(event) {\r\n const locationsSearchTextInput = locationsSearchBox.querySelector('[data-user-text]');\r\n if (!event || !event.target || event.target.dataset.searchSubmitLocations === undefined ||\r\n !locationsSearchTextInput) {\r\n return;\r\n }\r\n\r\n const eventGa4 = {\r\n eventType: 'GA4Event',\r\n eventName: 'searchterm_events',\r\n params: {\r\n search_value: locationsSearchTextInput.value,\r\n click_target: 'BSP Location search tab'\r\n }\r\n };\r\n document.body.dispatchEvent(new CustomEvent('trackOnDemandEvent', {\r\n detail: { data: eventGa4 }\r\n }));\r\n }\r\n\r\n if (locationsSearchBox) {\r\n locationsSearchBox.addEventListener('click', trackLocationsSearchEvent);\r\n }\r\n}(window));\r\n\ndefine(\"trackerLocationsSearch\", function(){});\n\n","define('askQuestionLoader',[\r\n], () => {\r\n 'use strict';\r\n\r\n /**\r\n * Loads the ask question module.\r\n * @param {*} event Event object.\r\n */\r\n function loadAskQuestionHandlerModule(event) {\r\n const moduleName = document.querySelector('[data-ismobiledevice=\"true\"]')\r\n ? 'askQuestionMobileWrapper'\r\n : 'askQuestionDesktopWrapper';\r\n\r\n // since we're using event delegation for this event, only execute it if the target has a\r\n // data-askQuestionBtn attribute\r\n if (!event.target.closest('[data-askQuestionBtn]')) {\r\n return;\r\n }\r\n\r\n // remove the event listener so it doesn't fire again the load of the module\r\n // since the module adds another event listener and re-loading the module duplicates the event listener.\r\n document.removeEventListener('click', loadAskQuestionHandlerModule);\r\n\r\n require(\r\n [moduleName],\r\n (askQuestionHandler) => {\r\n askQuestionHandler.openModal(event);\r\n }\r\n );\r\n }\r\n\r\n document.addEventListener('click', loadAskQuestionHandlerModule);\r\n});\r\n\n","/*\r\n * Inits the builder showcase about page\r\n */\r\ndefine(\r\n 'locationsInitializer',[\r\n 'searchComponentLoader',\r\n 'lazyLoad',\r\n 'sectionLazyLoad',\r\n 'favoritesLoader',\r\n 'searchTypeHelper',\r\n 'trackerLocationsSearch',\r\n 'askQuestionLoader',\r\n ],\r\n (searchComponentLoader) => {\r\n 'use strict';\r\n\r\n function onDomComplete() {\r\n const dependenciesModuleName = document.querySelector('[data-ismobiledevice=\"true\"]')\r\n ? 'mapLocationsBuilderShowCaseMobileLoader'\r\n : 'mapLocationsBuilderShowCaseDesktopLoader';\r\n\r\n require([dependenciesModuleName]);\r\n }\r\n\r\n if (document.readyState === 'complete') {\r\n onDomComplete();\r\n } else {\r\n window.addEventListener('load', onDomComplete);\r\n }\r\n\r\n const searchConfig = {\r\n cssBundle: '#locationsTypeAheadCss',\r\n form: '#nhs_locationsSearchForm',\r\n shouldAlwaysSubmitForm: true,\r\n submitButton: '[data-search-submit-locations]',\r\n useAutocompleteForSubmit: true,\r\n validationError: '#nhs_locations_field_validation_error',\r\n searchTextField: '#nhs_locations_SearchNav',\r\n componentToInteract: '#nhs_locations_SearchNav',\r\n };\r\n searchComponentLoader.init(searchConfig);\r\n }\r\n);\r\n\n","require(\r\n [\r\n 'locationsInitializer',\r\n ]\r\n);\r\n\ndefine(\"nhs/views/BuilderShowCaseRedesign/ShowLocations\", function(){});\n\n","\nrequire([\"nhs/views/BuilderShowCaseRedesign/ShowLocations\"]);\n"]}