{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/src/js/modules/consumer-account/account-api.js","webpack:///./assets/src/js/utils/form-validation-utils.js","webpack:///./assets/src/js/modules/consumer-account/account-status-helpers.js","webpack:///./assets/src/js/modules/consumer-account/login.js","webpack:///./assets/src/js/modules/consumer-account/create-account.js","webpack:///./assets/src/js/modules/swatchbook-utils.js","webpack:///./assets/src/js/modules/consumer-account/status-messages.js","webpack:///./assets/src/js/vendors/glide.min.js","webpack:///./assets/src/js/app.js","webpack:///./assets/src/js/utils/url-utils.js","webpack:///./assets/src/js/modules/consumer-account/account-modal.js","webpack:///./assets/src/js/modules/consumer-account/forgot-password.js","webpack:///./assets/src/js/modules/consumer-account/manage-account.js","webpack:///./assets/src/js/modules/consumer-account/change-password.js","webpack:///./assets/src/js/modules/consumer-account/storage-actions.js","webpack:///./assets/src/js/modules/tooltips.js","webpack:///./assets/src/js/events/site-events.js","webpack:///./assets/src/js/modules/consumer-account/authentication.js","webpack:///./assets/src/js/modules/content-toggle.js","webpack:///./assets/src/js/modules/desktop-nav-menus.js","webpack:///./assets/src/js/modules/filter-toggle.js","webpack:///./assets/src/js/modules/grid-sliders.js","webpack:///./assets/src/js/modules/header-offset.js","webpack:///./assets/src/js/modules/header-search.js","webpack:///./assets/src/js/modules/hero-slider.js","webpack:///./assets/src/js/modules/in-page-nav.js","webpack:///./assets/src/js/modules/lazyload.js","webpack:///./assets/src/js/modules/minified-header.js","webpack:///./assets/src/js/modules/mobile-nav.js","webpack:///./assets/src/js/modules/promo-message.js","webpack:///./assets/src/js/modules/tabbed-content.js","webpack:///./assets/src/js/modules/accessibility/tab-role.js","webpack:///./assets/src/js/modules/get-inspired-gallery.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","digitalUserApi","window","digitalUserApiEndoint","addVisualization","data","callback","dealerIdParam","getParameterByName","requestUrl","userId","micrositeName","request","XMLHttpRequest","open","setRequestHeader","onload","status","updateAccountIconStatus","updateAccountStatusMessage","onerror","console","log","send","toString","addPhoto","imageUrl","thumbUrl","description","productLineId","productLineName","responseData","JSON","parse","responseText","stringify","addDealer","accountnumber","addSwatch","productLineCode","colorNumber","swatchId","widenUrl","addSwatches","callbacks","swatchlist","map","swatch","onSuccess","onError","createAccount","forgotPassword","username","getAccountData","getItemsByType","type","brandId","replace","hasAssets","login","password","rememberMe","logout","removeItemByType","id","msgType","updateAccount","updatePassword","validateByType","val","RegExp","test","addRequiredAttrs","form","inputList","querySelectorAll","length","setAttribute","clearInputValues","disableFormSubmit","submitBtn","querySelector","disabled","classList","add","enableFormSubmit","remove","init","validate","fieldList","fieldErrorList","field","isValid","required","isFormValid","getAttribute","fieldWrapper","parentNode","fieldError","push","focus","formatPhone","match","arr","join","substring","positionWindowAtFormElement","options","position","element","offsetTop","offset","scrollTo","top","behavior","removeAllErrors","removeRequiredAttrs","removeAttribute","resetSelectValues","selectList","firstOption","showNavIndicator","icon","document","getElementById","indexOf","setTimeout","showNewNavIndicator","isAuthenticated","assetType","action","msgDiv","innerHTML","updateSwatchCartStatusMessage","a","initialLanuch","onModalClose","event","onModalButtonClick","preventDefault","launchLoginModal","onLoginSuccess","location","myFavoritesUrl","onLoginFail","onLogoutButtonClick","clearAllSwatchbookData","loginUrl","checkLoginStatus","body","getElementsByTagName","modalBtns","btn","removeEventListener","removeModalEventHandlers","logoutBtns","addEventListener","addLogoutEventHandlers","localStorageData","getAllOfType","addModalEventHandlers","toggleCreateAccountForm","isVisible","modal","style","height","resetCreateAccountForm","msg","loginMessageSwatch","loginMessagePhoto","loginMessageDealer","loginMessageVisualization","overlay","openAccountModal","loginSubmitBtn","modalCloseBtn","modalForm","modalErrorMsg","remember","success","closeAccountModal","onLoginSubmit","stopPropagation","addCreateAccountCallbacks","submitForm","passwordMatch","passIpt","passConfirmIpt","onSubmitCallbacks","removereateAccountCallbacks","disableScroll","errorMsg","existingErrorMsg","accountCreationErrorMsg","passwordStrengthErrorMsg","optInVal","passwordStrength","checked","swatchbookData","getItemById","getSwatchbookData","item","items","find","saved","getTruncatedWidenUrl","url","split","updateNavIcon","localStorage","getItem","cart","saveSwatchbookItem","page","href","dateSaved","Date","now","setItem","removeSwatchbookItem","at","findIndex","splice","clearSwatchbook","clearOrderData","destroy","saveItem","widenUtils","getIdFromAssetUrl","setAssetCaption","removeItem","localStorageSwatchEventHandlers","label","collection","colorName","productLine","styleId","swatchCatId","swatchCatName","swatchColorNumber","swatchStyleName","newSwatch","displayMessage","addSwatchToCart","removeSwatchFromCart","filter","getUserData","getCartData","clearCart","getSwatchProductUrlParams","productName","isVisualizerActive","toLowerCase","visualizerModelId","VisualizerModelId","visualizerProgamFamilyName","VisualizerProgramFamilyName","localTesting","onloadend","testData","getProductDetailsPageUrl","statusMsgs","hideMessage","setMessage","showMessage","e","define","y","parseInt","u","f","constructor","Array","h","classes","direction","breakpoints","g","getTime","b","leading","apply","this","arguments","clearTimeout","trailing","cancel","_","firstChild","nextSibling","nodeType","k","HTMLElement","modify","Direction","is","O","Gaps","index","Clones","grow","settings","focusAt","Peek","before","Sizes","width","slideWidth","concat","_t","mutate","E","keys","sort","reduce","Math","min","max","startAt","perView","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perTouch","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","throttle","peek","ltr","rtl","slider","carousel","swipeable","dragging","cloneSlide","activeNav","activeSlide","disabledArrow","iterator","TypeError","configurable","writable","assign","ReferenceError","v","events","hop","on","emit","forEach","_c","_e","selector","mount","Run","make","Transition","disable","Move","_o","set","_i","_d","w","H","listeners","T","x","A","M","C","P","L","z","R","Html","root","track","slides","slice","wrapper","children","contains","_r","Translate","transform","isType","isOffset","after","movement","compose","duration","transition","enable","resolve","addClass","removeClass","_v","setupSlides","setupWrapper","wrapperSize","offsetWidth","reductor","marginLeft","marginRight","translate","floor","collect","cloneNode","unshift","append","reverse","appendChild","insertBefore","removeChild","Resize","unbind","off","Build","typeClass","activeClass","removeClasses","move","calculate","isStart","isEnd","steps","_m","substr","Swipe","PI","passive","bindSwipeStart","start","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","sqrt","abs","asin","parseFloat","end","threshold","round","unbindSwipeMove","unbindSwipeEnd","unbindSwipeStart","changedTouches","Images","dragstart","Anchors","_a","click","detach","draggable","attach","Controls","_n","addBindings","setActive","removeActive","removeBindings","currentTarget","Keyboard","press","keyCode","Autoplay","setInterval","stop","time","clearInterval","Breakpoints","matchMedia","matches","__proto__","getPrototypeOf","setPrototypeOf","Function","getOwnPropertyDescriptor","CreateAccount","ForgotPassword","FormValidationUtils","Login","ManageAccount","StorageActions","SwatchbookUtils","myFavoritesActive","dispatchSiteEvent","getLoggedInStatus","getUserId","jsVersion","initSiteEvents","headerDiv","minClass","minBrkpt","addTooltipsOnPageLoad","detectProduction","results","exec","decodeURIComponent","removeUrlParams","shortUrl","history","replaceState","title","previousElementInFocus","onDocumentModalKeyUp","closeBtn","createElement","zIndex","setPreviousElementInFocus","activeElement","changePassword","statusMessages","changePasswordBtn","changePasswordDiv","changePasswordCancelBtn","serverErrorMsg","showChangePasswordModule","hideChangePasswordModule","address","address2","city","country","currentPassIpt","newPassIpt","newPassConfirmIpt","newPasswordMatch","api","getPhotoAccountIdFromWidenId","assets","asset","getItemsFromAccount","removeItemFromAccount","saveItemToAccount","showTooltip","target","closest","tooltip","offsetLeft","caret","right","offsetHeight","left","setTooltipPosition","hideTooltip","toggleTooltip","addTooltipEventHandlers","addNewTooltipToButton","addNewTooltipsToButtonGroup","btns","tooltipBtns","siteEventNames","ON_RECAPTCHA_LOAD","eventName","siteEventRegistry","dispatchEvent","getEventData","Event","getCookieValue","cookies","cookie","contentToggleBtns","ariaControls","ariaExpanded","closedLabel","content","openLabel","toggleContent","closeAllMenus","subnavDivs","closeMenuOnBodyClick","toggleSubnavImage","navimg","src","img","documentElement","encodeURI","toggleSubnavMenu","menuItem","menuSelector","menu","menus","toggleActiveSubnavItem","activeItems","disableForMyAccoount","resetDefaultSelected","onMenuItemMouseEnter","onMenuItemMouseLeave","blur","onMenuItemClick","collectedEvents","manageMenuEvents","active","dropdown","imgWrappers","scr","imgWrapDiv","defaultImg","defaultMenuItem","menuSelectors","filterMenus","parentElement","toggle","isExpanded","sliders","enabled","updateGlideEvents","innerWidth","autoplayInterval","glide","Glide","991","767","contentWrapper","paddingTop","searchIpt","toggleBtns","searchbar","prevActiveElement","onBodyClick","isParentSearchbar","showSearchModule","hideSearchModule","submit","encodeURIComponent","node","which","shiftKey","getVideoWrapperId","runSlideContentUpdate","parentHeight","isContentOffset","getContentWrapperOffsetClass","slideContent","header","glideTrack","headerHeight","sliderHeight","slideHeight","alignItems","marginTop","removeProperty","overflow","HeroSlider","disableAutoplay","apiLoaded","iframes","players","getPlayerById","player","playerInfo","videoData","video_id","onUpdate","playVideo","pauseVideo","onInteract","getPlayerState","addControls","YT","Player","previews","j","update","tag","firstScriptTag","timer","error","anchors","inPageNavDiv","contentDiv","initLoadHeaderOffset","inPageNavYPos","updateOffsetHeight","headerFixedOffset","headerOffset","clientHeight","addFixedAtY","pageYOffset","updateAnchorOffset","getAnchorPosition","anchor","div","scrollToPosition","pos","updateHashAfterDelay","hash","removeJumpToMenu","onBodyClickOffNav","bodyEvent","menuH","menuW","menuY","getBoundingClientRect","getMenuBounds","clientX","clientY","innerHeight","anchorName","setAsActive","currentActive","urlMatch","lazyLoadHandler","lazyloadThrottleTimeout","images","scrollTop","dataset","imageObserver","IntersectionObserver","entries","entry","isIntersecting","image","srcset","unobserve","rootMargin","observe","onResize","onScroll","menuBtn","mobileHeaderDiv","menuDiv","mobileSubmenus","toggleMobileSubMenuState","state","parent","toggleMenuState","promo","promoBtn","sessionStorage","onMessageClose","tabbedContentList","tabbedNavList","selectedNavItem","addNavEventHandlers","block","attr","evt","createEvent","initUIEvent","getActiveNavLabel","scrollLeft","changeTabs","currentTabs","addTablistEvents","tabList","tabs","tabFocus","closeModal","largeImg","imgCaption","gridItem","nextElementSibling","backBtn","openModal"],"mappings":"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","file":"horizons.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","/* eslint-disable no-console */\n// import * as testData from './test-data';\nimport { getParameterByName } from '../../utils/url-utils';\nimport { updateAccountIconStatus, updateAccountStatusMessage } from './account-status-helpers';\n\nconst baseUrl = '';\nconst digitalUserApi = window.digitalUserApiEndoint;\n\nconst addVisualization = (data, callback) => {\n // console.log('account-api.js, addVisualization');\n // console.log(data);\n let dealerIdParam = '';\n if (getParameterByName('dealerid') !== null) {\n dealerIdParam = `?dealerid=${getParameterByName('dealerid')}`;\n }\n const requestUrl = `${digitalUserApi}/visualization/user/${window.userId}/?site=${window.micrositeName}${dealerIdParam}`;\n const request = new XMLHttpRequest();\n request.open('POST', requestUrl, true);\n request.setRequestHeader('Content-type', 'text/plain');\n request.setRequestHeader('Accept', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n if (callback) {\n callback();\n }\n updateAccountIconStatus();\n updateAccountStatusMessage('visualizer scene', 'add');\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n request.send(data.toString());\n};\n\nconst addPhoto = (data, callback) => {\n const {\n imageUrl,\n thumbUrl,\n description,\n productLineId,\n productLineName,\n } = data;\n const requestUrl = `${digitalUserApi}/photo`;\n const request = new XMLHttpRequest();\n request.open('POST', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callback) {\n callback(responseData);\n }\n updateAccountIconStatus();\n updateAccountStatusMessage('photo', 'add');\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n /* if (window.localTesting) {\n request.onloadend = () => {\n if (callback) {\n const responseData = testData.addPhotoJson;\n callback(JSON.parse(responseData.replace(/\\\\\"/gi, '')));\n }\n };\n } */\n request.send(JSON.stringify({\n 'user-id': window.userId,\n 'photo-url': imageUrl,\n 'thumbnail-url': thumbUrl,\n description,\n 'product-line-id': productLineId,\n 'product-line-name': productLineName,\n }));\n};\n\nconst addDealer = (data, callback) => {\n const requestUrl = `${digitalUserApi}/dealer`;\n const request = new XMLHttpRequest();\n request.open('POST', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callback) {\n callback(responseData);\n }\n updateAccountIconStatus();\n updateAccountStatusMessage('dealer', 'add');\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n request.send(JSON.stringify({\n 'user-id': window.userId,\n 'record-id': data.accountnumber,\n 'ship-to-account': data.accountnumber,\n }));\n};\n\nconst addSwatch = (data, callback) => {\n const {\n productLineCode,\n colorNumber,\n swatchId,\n widenUrl,\n } = data;\n const requestUrl = `${digitalUserApi}/swatch`;\n const request = new XMLHttpRequest();\n request.open('POST', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callback) {\n callback(responseData);\n }\n updateAccountIconStatus();\n updateAccountStatusMessage('swatch', 'add');\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n /* if (window.localTesting) {\n request.onloadend = () => {\n if (callback) {\n const responseData = testData.addSwatchJson;\n callback(JSON.parse(responseData.replace(/\\\\\"/gi, '')));\n }\n };\n } */\n request.send(JSON.stringify({\n 'user-id': window.userId,\n 'product-line-code': productLineCode,\n 'color-number': colorNumber,\n 'swatch-id': swatchId,\n 'widen-url': widenUrl,\n }));\n};\n\nconst addSwatches = (data, callbacks) => {\n // console.log('account-api.js, addSwatches');\n const swatchlist = data.map(swatch => ({\n 'user-id': window.userId,\n 'product-line-code': swatch.productLineCode,\n 'color-number': swatch.colorNumber,\n 'swatch-id': swatch.swatchId,\n }));\n // console.log(swatchlist);\n const requestUrl = `${baseUrl}/addswatches`;\n const request = new XMLHttpRequest();\n request.open('POST', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n if (!callbacks) {\n return;\n }\n if (callbacks.onSuccess) {\n const responseData = JSON.parse(request.responseText);\n callbacks.onSuccess(responseData);\n }\n }\n };\n request.onerror = () => {\n if (!callbacks) {\n return;\n }\n if (callbacks.onError) {\n const responseData = JSON.parse(request.responseText);\n callbacks.onError(responseData);\n }\n };\n request.send(JSON.stringify({\n data: JSON.stringify({\n swatchlist,\n }),\n }));\n};\n\nconst removeItemByType = (type, id, callback) => {\n // console.log(`account-api.js, removeItemByType: ${type}, item: ${id}`);\n let requestUrl;\n let msgType = '';\n switch (type) {\n case 'location':\n requestUrl = `${digitalUserApi}/dealer`;\n msgType = 'dealer';\n break;\n case 'photo':\n requestUrl = `${digitalUserApi}/photo`;\n msgType = 'photo';\n break;\n case 'visualization':\n requestUrl = `${digitalUserApi}/visualization`;\n msgType = 'visualizer scene';\n break;\n case 'swatch':\n requestUrl = `${digitalUserApi}/swatch`;\n msgType = 'swatch';\n break;\n default:\n break;\n }\n const request = new XMLHttpRequest();\n request.open('DELETE', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callback) {\n callback(responseData);\n }\n updateAccountIconStatus();\n updateAccountStatusMessage(msgType, 'remove');\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n /* if (window.localTesting) {\n request.onloadend = () => {\n if (callback) {\n const responseData = testData.removeItemJson;\n callback(JSON.parse(responseData.replace(/\\\\\"/gi, '')));\n }\n };\n } */\n request.send(JSON.stringify({\n 'asset-id': id,\n }));\n};\n\nconst getItemsByType = (type, callback) => {\n let requestUrl;\n switch (type) {\n case 'location':\n requestUrl = `${digitalUserApi}/dealer/brand/${window.brandId}/user/${window.userId}`;\n break;\n case 'photo':\n requestUrl = `${digitalUserApi}/photos/user/${window.userId}`;\n break;\n case 'swatch':\n requestUrl = `${digitalUserApi}/swatches/microsite/${window.micrositeName}/user/${window.userId}`;\n break;\n case 'visualization':\n requestUrl = `${digitalUserApi}/visualizations/user/${window.userId}?site=${window.micrositeName}`;\n break;\n default:\n break;\n }\n const request = new XMLHttpRequest();\n request.open('GET', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText.replace(/\\\\\"/gi, '\\\\\"'));\n if (callback) {\n callback(responseData);\n }\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n /* if (window.localTesting) {\n request.onloadend = () => {\n if (callback) {\n let data;\n switch (type) {\n case 'location':\n data = testData.getDealersJson;\n break;\n case 'photo':\n data = testData.getPhotosJson;\n break;\n case 'swatch':\n data = testData.getSwatchesJson;\n break;\n case 'visualization':\n data = testData.getVisualizationsJson;\n break;\n default:\n data = '';\n break;\n }\n callback(JSON.parse(data.replace(/\\\\\"/gi, '')));\n }\n };\n } */\n request.send();\n};\n\nconst getAccountData = (callback) => {\n const requestUrl = `${digitalUserApi}/account/${window.userId}`;\n const request = new XMLHttpRequest();\n request.open('GET', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callback) {\n callback(responseData);\n }\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n request.send();\n};\n\nconst forgotPassword = (data, callbacks) => {\n const {\n username,\n } = data;\n const requestUrl = `${baseUrl}/forgot-password/SendPasswordResetEmail`;\n const request = new XMLHttpRequest();\n request.open('POST', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n if (!callbacks) {\n return;\n }\n if (callbacks.onSuccess) {\n const responseData = JSON.parse(request.responseText);\n callbacks.onSuccess(responseData);\n }\n }\n };\n request.onerror = () => {\n if (!callbacks) {\n return;\n }\n if (callbacks.onError) {\n const responseData = JSON.parse(request.responseText);\n callbacks.onError(responseData);\n }\n };\n request.send(JSON.stringify({\n username,\n }));\n};\n\nconst login = (data, callbacks) => {\n const {\n username,\n password,\n rememberMe,\n } = data;\n const requestUrl = `${baseUrl}/userlogin`;\n const request = new XMLHttpRequest();\n request.open('POST', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n if (!callbacks) {\n return;\n }\n if (callbacks.onSuccess) {\n const responseData = JSON.parse(request.responseText);\n callbacks.onSuccess(responseData);\n }\n }\n };\n request.onerror = () => {\n if (!callbacks) {\n return;\n }\n if (callbacks.onError) {\n const responseData = JSON.parse(request.responseText);\n callbacks.onError(responseData);\n }\n };\n /* if (window.localTesting) {\n request.onloadend = () => {\n if (callbacks) {\n const responseData = testData.loginSuccessResponse;\n console.log(callbacks);\n callbacks.onSuccess(JSON.parse(responseData.replace(/\\\\\"/gi, '')));\n }\n };\n } */\n request.send(JSON.stringify({\n data: JSON.stringify({\n 'microsite-name': window.micrositeName,\n username,\n password,\n rememberMe,\n }),\n }));\n};\n\nconst logout = (callbacks) => {\n const requestUrl = `${baseUrl}/logout`;\n const request = new XMLHttpRequest();\n request.open('POST', requestUrl, true);\n // request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n if (!callbacks) {\n return;\n }\n if (callbacks.onSuccess) {\n // const responseData = JSON.parse(request.responseText);\n const responseData = request.responseText;\n callbacks.onSuccess(responseData);\n }\n }\n };\n request.onerror = () => {\n if (!callbacks) {\n return;\n }\n if (callbacks.onError) {\n // const responseData = JSON.parse(request.responseText);\n const responseData = request.responseText;\n callbacks.onError(responseData);\n }\n };\n request.send();\n};\n\nconst updatePassword = (data, callbacks) => {\n const requestUrl = `${digitalUserApi}/password`;\n const request = new XMLHttpRequest();\n request.open('PATCH', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callbacks.onSuccess) {\n callbacks.onSuccess(responseData);\n }\n }\n };\n request.onerror = () => {\n if (callbacks.onError) {\n const responseData = JSON.parse(request.responseText);\n callbacks.onError(responseData);\n }\n };\n request.send(JSON.stringify(data));\n};\n\nconst updateAccount = (data, callbacks) => {\n const requestUrl = `${digitalUserApi}/account`;\n const request = new XMLHttpRequest();\n request.open('PATCH', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callbacks.onSuccess) {\n callbacks.onSuccess(responseData);\n }\n }\n };\n request.onerror = () => {\n if (callbacks.onError) {\n const responseData = JSON.parse(request.responseText);\n callbacks.onError(responseData);\n }\n };\n request.send(JSON.stringify(data));\n};\n\nconst createAccount = (data, callbacks) => {\n const requestUrl = `${baseUrl}/usercreateaccount`;\n const request = new XMLHttpRequest();\n request.open('POST', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callbacks.onSuccess) {\n callbacks.onSuccess(responseData);\n }\n }\n };\n request.onerror = () => {\n if (callbacks.onError) {\n const responseData = JSON.parse(request.responseText);\n callbacks.onError(responseData);\n }\n };\n /* if (window.localTesting) {\n request.onloadend = () => {\n if (callbacks.onSuccess) {\n callbacks.onSuccess(testData.createAccountSuccess);\n }\n };\n } */\n request.send(JSON.stringify({\n data: JSON.stringify(data),\n }));\n};\n\nconst hasAssets = (callback) => {\n const requestUrl = `${digitalUserApi}/has-assets/${window.userId}`;\n const request = new XMLHttpRequest();\n request.open('GET', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callback) {\n callback(responseData);\n }\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n request.send();\n};\n\nexport {\n addVisualization,\n addPhoto,\n addDealer,\n addSwatch,\n addSwatches,\n createAccount,\n forgotPassword,\n getAccountData,\n getItemsByType,\n hasAssets,\n login,\n logout,\n removeItemByType,\n updateAccount,\n updatePassword,\n};\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\n\nconst validateByType = (type, val) => {\n // console.log(`${type}, ${val}`);\n let status;\n switch (type) {\n case 'text':\n status = val !== '';\n break;\n case 'phone':\n status = new RegExp(/^(\\+\\d{1,2}\\s)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/).test(val);\n break;\n case 'zipcode':\n status = new RegExp(/(^\\d{5}(-\\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\\d{1}[A-Z]{1} *\\d{1}[A-Z]{1}\\d{1}$)/).test(val);\n break;\n case 'email':\n /* eslint-disable no-useless-escape */\n status = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/).test(val);\n /* eslint-enable no-useless-escape */\n break;\n case 'password':\n status = new RegExp(/^(?=.*[a-z])(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#\\$%\\^&\\*])(?=.{8,})/).test(val); /* eslint-disable-line no-useless-escape */\n break;\n default:\n break;\n }\n return status;\n};\n\n// Format phone as xxx xxx xxxx\nconst formatPhone = (s) => {\n if (s !== null && s !== undefined && s !== '') {\n if (s.match(new RegExp(/\\d/g) || []) !== null) {\n const arr = s.match(new RegExp(/\\d/g) || []).join('');\n return `${arr.substring(0, 3)}-${arr.substring(3, 6)}-${arr.substring(6)}`;\n }\n return s;\n }\n return s;\n};\n\nconst validate = (form) => {\n // Identify all fields with a validate attribute in form (will be on the label for the input/submit)\n const fieldList = form.querySelectorAll('[validate]');\n const fieldErrorList = [];\n let field;\n let isValid;\n let required;\n let isFormValid = true;\n for (let i = 0; i < fieldList.length; i++) { /* eslint-disable-line no-plusplus */\n field = fieldList[i];\n isValid = true;\n required = field.getAttribute('required') !== null;\n // If value is required, run against validation OR\n if (required) {\n isValid = validateByType(field.getAttribute('validate'), field.value);\n }\n // If value isn't required but value has been entered that requires validation, then run\n if (!required && field.value !== '' && field.getAttribute('validate') !== 'text') {\n isValid = validateByType(field.getAttribute('validate'), field.value);\n }\n // Mark form as invalid\n const fieldWrapper = form.querySelector(`[for=\"${field.id}\"]`).parentNode;\n const fieldError = fieldWrapper.querySelector('.text-danger');\n if (!isValid) {\n isFormValid = isValid;\n // Toggle error class on element label\n fieldWrapper.classList.add('ValidationFail');\n if (fieldError) {\n fieldError.classList.add('field-validation-error');\n fieldError.classList.remove('field-validation-valid');\n }\n fieldErrorList.push(field);\n } else {\n fieldWrapper.classList.remove('ValidationFail');\n if (fieldError) {\n fieldError.classList.remove('field-validation-error');\n fieldError.classList.add('field-validation-valid');\n }\n }\n }\n if (fieldErrorList.length > 0) {\n fieldErrorList[0].focus();\n }\n return isFormValid;\n};\n\nconst removeAllErrors = (form) => {\n const fieldList = form.querySelectorAll('[validate]');\n for (let i = 0; i < fieldList.length; i++) { /* eslint-disable-line no-plusplus */\n const field = fieldList[i];\n const fieldWrapper = form.querySelector(`[for=\"${field.id}\"]`).parentNode;\n const fieldError = fieldWrapper.querySelector('.text-danger');\n fieldWrapper.classList.remove('ValidationFail');\n if (fieldError) {\n fieldError.classList.remove('field-validation-error');\n fieldError.classList.add('field-validation-valid');\n }\n }\n};\n\nconst addRequiredAttrs = (form) => {\n const inputList = form.querySelectorAll('input[type=\"text\"], input[type=\"password\"], textarea');\n for (let i = 0; i < inputList.length; i++) { /* eslint-disable-line no-plusplus */\n inputList[i].setAttribute('required', 'required');\n }\n};\n\nconst removeRequiredAttrs = (form) => {\n const inputList = form.querySelectorAll('input[type=\"text\"], input[type=\"password\"], textarea');\n for (let i = 0; i < inputList.length; i++) { /* eslint-disable-line no-plusplus */\n inputList[i].removeAttribute('required');\n }\n};\n\nconst clearInputValues = (form) => {\n const inputList = form.querySelectorAll('input[type=\"text\"], input[type=\"password\"], textarea');\n for (let i = 0; i < inputList.length; i++) { /* eslint-disable-line no-plusplus */\n inputList[i].value = '';\n }\n};\nconst resetSelectValues = (form) => {\n const selectList = form.querySelectorAll('select');\n for (let i = 0; i < selectList.length; i++) { /* eslint-disable-line no-plusplus */\n const select = selectList[i];\n const firstOption = select.querySelector('option:first-child');\n if (firstOption) {\n selectList[i].value = firstOption.value;\n }\n }\n};\n\nconst positionWindowAtFormElement = (options) => {\n let position = 0;\n if (options.element) {\n // console.log(`form-validation-utils.js, positionWindowAtFormElement, ${options.element.offsetTop}`);\n position = options.element.offsetTop;\n }\n if (options.position) {\n position = options.position; /* eslint-disable-line prefer-destructuring */\n }\n let offset = options.offset; /* eslint-disable-line prefer-destructuring */\n if (!offset) {\n offset = 0;\n }\n window.scrollTo({\n top: position + offset,\n behavior: 'smooth',\n });\n};\n\nconst disableFormSubmit = (form) => {\n if (!form) return;\n const submitBtn = form.querySelector('[type=submit]');\n if (!submitBtn) return;\n submitBtn.disabled = true;\n submitBtn.classList.add('updating');\n};\n\nconst enableFormSubmit = (form) => {\n if (!form) return;\n const submitBtn = form.querySelector('[type=submit]');\n if (!submitBtn) return;\n submitBtn.disabled = false;\n submitBtn.classList.remove('updating');\n};\n\nconst init = () => {};\n/* eslint-enable no-console */\n\nexport {\n addRequiredAttrs,\n clearInputValues,\n disableFormSubmit,\n enableFormSubmit,\n init,\n validate,\n formatPhone,\n positionWindowAtFormElement,\n removeAllErrors,\n removeRequiredAttrs,\n resetSelectValues,\n validateByType,\n};\n","/* eslint-disable no-console */\nimport { hasAssets } from './account-api';\n\nconst showNewNavIndicator = (status) => {\n const icon = document.querySelector('.topbar-section .my-account-item');\n if (icon === null) {\n return;\n }\n const visibleClass = 'items-added-to-swatchbook';\n if (!status) {\n icon.classList.remove(visibleClass);\n } else {\n icon.classList.add(visibleClass);\n }\n};\n\nconst showNavIndicator = (status) => {\n const icon = document.getElementById('swbk-plus');\n // if element doesn't exist, use new nav indicator\n if (icon === null) {\n showNewNavIndicator(status);\n return;\n }\n const visibleClass = 'is-visible';\n const growClass = 'is-grow';\n\n if (!status) {\n icon.classList.remove(visibleClass);\n return;\n }\n if (icon.classList.toString().indexOf(visibleClass) !== -1) {\n icon.classList.add(growClass);\n setTimeout(() => {\n icon.classList.remove(growClass);\n }, 200);\n } else {\n icon.classList.add(visibleClass);\n }\n};\n\nconst updateAccountStatusMessage = (assetType, action) => {\n const msgDiv = document.querySelector('.my-account-status-message');\n if (!window.isAuthenticated || !msgDiv) {\n return;\n }\n // Clear existing message\n msgDiv.innerHTML = '';\n setTimeout(() => {\n if (action === 'add') {\n msgDiv.innerHTML = `${assetType} has been added to your favorites.`;\n }\n if (action === 'remove') {\n msgDiv.innerHTML = `${assetType} has been removed from your favorites.`;\n }\n }, 100);\n};\n\nconst updateSwatchCartStatusMessage = (action) => {\n const msgDiv = document.querySelector('.my-account-status-message');\n if (!msgDiv) {\n return;\n }\n // Clear existing message\n msgDiv.innerHTML = '';\n setTimeout(() => {\n if (action === 'add') {\n msgDiv.innerHTML = 'Swatch has been added to your swatch cart.';\n }\n if (action === 'remove') {\n msgDiv.innerHTML = 'Swatch has been removed from your swatch cart.';\n }\n }, 100);\n};\n\nconst updateAccountIconStatus = () => {\n if (!window.isAuthenticated) {\n return;\n }\n hasAssets((data) => {\n if (data['has-assets']) {\n showNavIndicator(true);\n } else {\n showNavIndicator(false);\n }\n });\n};\n\nexport {\n updateAccountIconStatus,\n updateAccountStatusMessage,\n updateSwatchCartStatusMessage,\n};\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nimport { clearAllSwatchbookData, getAllOfType } from '../swatchbook-utils';\nimport { login, logout, addSwatches } from './account-api';\nimport { openAccountModal, closeAccountModal } from './account-modal';\nimport { addCreateAccountCallbacks, resetCreateAccountForm } from './create-account';\nimport { updateAccountIconStatus } from './account-status-helpers';\nimport { validate } from '../../utils/form-validation-utils';\n\nlet initialLanuch = true;\n\nconst loginModalId = 'acct-login-modal';\n\nconst onLoginSubmit = (event, callbacks) => {\n event.preventDefault();\n const modalForm = document.querySelector('.acct-login-modal-form');\n const modalErrorMsg = modalForm.querySelector('.form-error-message');\n if (validate(modalForm)) {\n modalErrorMsg.classList.add('hide');\n let remember = false;\n if (document.querySelectorAll('#modalAcctRememberMe:checked').length === 1) {\n remember = true;\n }\n login(\n {\n username: document.getElementById('modalAcctUsername').value,\n password: document.getElementById('modalAcctPassword').value,\n rememberMe: remember,\n },\n {\n onSuccess: (data) => {\n // console.log(data);\n if (!data.success) {\n modalErrorMsg.classList.remove('hide');\n } else {\n window.isAuthenticated = true;\n window.userId = data['user-id'];\n checkLoginStatus(() => { /* eslint-disable-line no-use-before-define */\n if (callbacks) {\n if (callbacks.onLoginSuccess) {\n callbacks.onLoginSuccess();\n }\n }\n });\n const modal = document.querySelector(`#${loginModalId}`);\n closeAccountModal(modal);\n }\n },\n onError: () => {\n if (!callbacks) {\n return;\n }\n if (callbacks.onLoginFail) {\n callbacks.onLoginFail();\n }\n },\n },\n );\n }\n};\n\nconst onModalClose = (event, callback) => {\n if (callback) {\n callback();\n }\n};\n\nconst onModalButtonClick = (event) => {\n // User is already logged in and for some reason this\n // event handler has not been removed.\n if (window.isAuthenticated) {\n return;\n }\n event.preventDefault();\n launchLoginModal({ /* eslint-disable-line no-use-before-define */\n type: '',\n callbacks: {\n onLoginSuccess: () => {\n window.location = window.myFavoritesUrl;\n },\n onLoginFail: () => {\n //\n },\n },\n });\n};\n\nconst onLogoutButtonClick = (event) => {\n event.preventDefault();\n logout({\n onSuccess: () => {\n clearAllSwatchbookData();\n window.location = window.loginUrl;\n },\n });\n};\n\nconst addLogoutEventHandlers = () => {\n const logoutBtns = document.querySelectorAll('a[href=\"/logout\"], a[href=\"/logout/\"]');\n if (logoutBtns) {\n [].map.call(logoutBtns, btn => btn.addEventListener('click', onLogoutButtonClick));\n }\n};\n\nconst removeModalEventHandlers = () => {\n const modalBtns = document.querySelectorAll('.acct-login-modal-btn');\n // console.log('login.js, removeModalEventHandlers');\n // console.log(modalBtns);\n if (modalBtns) {\n [].map.call(modalBtns, btn => btn.removeEventListener('click', onModalButtonClick));\n }\n};\n\nconst addModalEventHandlers = () => {\n const modalBtns = document.querySelectorAll('.acct-login-modal-btn');\n // console.log('login.js, addModalEventHandlers');\n // console.log(modalBtns);\n if (modalBtns) {\n [].map.call(modalBtns, btn => btn.addEventListener('click', onModalButtonClick));\n }\n};\n\nconst checkLoginStatus = (callback) => {\n // console.log(`login.js, checkLoginStatus, isAuthenticated: ${window.isAuthenticated}`);\n const body = document.getElementsByTagName('body')[0];\n if (window.isAuthenticated) {\n body.classList.add('is-authenticated');\n removeModalEventHandlers();\n addLogoutEventHandlers();\n // Check to see if there are any swatches in localstorage\n const localStorageData = getAllOfType('swatch');\n if (localStorageData.length !== 0) {\n addSwatches(localStorageData, {\n onSuccess: () => {\n clearAllSwatchbookData();\n updateAccountIconStatus();\n if (callback) {\n callback();\n }\n },\n onError: () => {\n updateAccountIconStatus();\n if (callback) {\n callback();\n }\n },\n });\n } else {\n updateAccountIconStatus();\n if (callback) { /* eslint-disable-line no-lonely-if */\n callback();\n }\n }\n } else {\n body.classList.remove('is-authenticated');\n addModalEventHandlers();\n updateAccountIconStatus();\n }\n};\n\nconst toggleCreateAccountForm = (isVisible) => {\n const modal = document.getElementById(loginModalId);\n if (isVisible) {\n modal.querySelector('.account-login-container').classList.add('hidden');\n // modal.querySelector('.login-side-column').classList.add('hidden');\n modal.querySelector('.create-account-container').classList.remove('hidden');\n // modal.querySelector('.create-account-side-column').classList.remove('hidden');\n if (modal.querySelectorAll('.login-message-wrapper').length !== 0) {\n modal.querySelector('.login-message-wrapper').classList.add('hidden');\n }\n modal.style.height = '600px';\n } else {\n modal.querySelector('.account-login-container').classList.remove('hidden');\n // modal.querySelector('.login-side-column').classList.remove('hidden');\n modal.querySelector('.create-account-container').classList.add('hidden');\n // modal.querySelector('.create-account-side-column').classList.add('hidden');\n modal.removeAttribute('style');\n if (modal.querySelectorAll('.login-message-wrapper').length !== 0) {\n modal.querySelector('.login-message-wrapper').classList.remove('hidden');\n }\n }\n};\n\nconst launchLoginModal = (options) => {\n // Reset modal\n toggleCreateAccountForm();\n resetCreateAccountForm({\n form: document.querySelector('.modal-acct-create-form'),\n });\n const {\n type,\n callbacks,\n } = options;\n const modal = document.getElementById(loginModalId);\n if (type) {\n modal.classList.add('c-modal--loginCTA');\n modal.querySelector('.login-message-wrapper').classList.remove('hidden');\n let msg = '';\n switch (type) {\n case 'swatch':\n msg = window.loginMessageSwatch;\n break;\n case 'photo':\n msg = window.loginMessagePhoto;\n break;\n case 'location':\n msg = window.loginMessageDealer;\n break;\n case 'visualization':\n msg = window.loginMessageVisualization;\n break;\n default:\n break;\n }\n modal.querySelector('.login-message-wrapper p').innerHTML = msg;\n } else {\n modal.classList.remove('c-modal--loginCTA');\n modal.querySelector('.login-message-wrapper').classList.add('hidden');\n modal.querySelector('.login-message-wrapper p').innerHTML = '';\n }\n const overlay = document.querySelector('#modal-overlay');\n openAccountModal(modal);\n // Submit modal form\n const loginSubmitBtn = modal.querySelector('.acct-login-modal-form .o-form__submit');\n const modalCloseBtn = modal.querySelector('#close-btn');\n // const toggleCreateAccountBtn = modal.querySelector('.create-account-btn');\n // Only run once\n if (initialLanuch) {\n initialLanuch = false;\n loginSubmitBtn.addEventListener('click', (event) => {\n onLoginSubmit(event, callbacks);\n });\n modalCloseBtn.addEventListener('click', (event) => {\n event.stopPropagation();\n onModalClose(event, callbacks.onLoginFail);\n });\n if (overlay) {\n overlay.addEventListener('click', event => onModalClose(event, callbacks.onLoginFail));\n }\n // Toggle create account form\n // if (type === 'visualization' || type === 'photo' || type === 'location' || type === 'swatch') {\n // Need to account for error message as well...\n [].map.call(document.querySelectorAll('.create-account-btn, .acct-login-modal-form .form-error-message a'), btn => btn.addEventListener('click', (event) => {\n event.preventDefault();\n addCreateAccountCallbacks({\n onLoginSuccess: () => {\n callbacks.onLoginSuccess();\n closeAccountModal(modal);\n },\n onLoginFail: () => {\n // console.log('onLoginFail');\n callbacks.onLoginFail();\n },\n });\n toggleCreateAccountForm(true);\n }));\n // }\n }\n};\n\nconst submitForm = (data, callbacks) => {\n login(data, callbacks);\n};\n\nconst init = () => {\n checkLoginStatus();\n};\n\nexport {\n checkLoginStatus,\n init,\n launchLoginModal,\n submitForm,\n};\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nimport { validate, validateByType, positionWindowAtFormElement, removeAllErrors } from '../../utils/form-validation-utils';\nimport { createAccount } from './account-api';\nimport { checkLoginStatus } from './login';\n\nconst addCreateAccountCallbacks = (callbacks) => {\n window.onSubmitCallbacks = callbacks;\n};\n\nconst removereateAccountCallbacks = () => {\n window.onSubmitCallbacks = null;\n};\n\nconst passwordMatch = (passIpt, passConfirmIpt) => {\n // console.log(`${passIpt.value}/${passConfirmIpt.value}`);\n if (passIpt.value === passConfirmIpt.value) {\n return true;\n }\n return false;\n};\n\nconst passwordStrength = (passIpt, passConfirmIpt) => {\n // console.log(`${passIpt.value}/${passConfirmIpt.value}`);\n if (passIpt.value === '' && passConfirmIpt.value === '') {\n return true; // ignore\n }\n if (validateByType('password', passIpt.value) && validateByType('password', passConfirmIpt.value)) {\n return true;\n }\n return false;\n};\n\nconst resetCreateAccountForm = (options) => {\n const { form } = options;\n const errorMsg = form.querySelector('.password-mismatch-error-message');\n const existingErrorMsg = form.querySelector('.existing-account-error-message');\n const accountCreationErrorMsg = form.querySelector('.account-creation-error-message');\n const passwordStrengthErrorMsg = form.querySelector('.password-strength-error-message');\n const username = form.querySelector('[name=\"acctUsername\"]');\n const passIpt = form.querySelector('[name=\"acctPassword\"]');\n const passConfirmIpt = form.querySelector('[name=\"acctPasswordConfirm\"]');\n username.value = '';\n passIpt.value = '';\n passConfirmIpt.value = '';\n form.querySelector('[name=\"offer-opt-in\"]').checked = true;\n // Remove errors\n errorMsg.classList.add('hide');\n existingErrorMsg.classList.add('hide');\n accountCreationErrorMsg.classList.add('hide');\n passwordStrengthErrorMsg.classList.add('hide');\n removeAllErrors(form);\n};\n\nconst init = (options) => {\n const { form, disableScroll } = options;\n const errorMsg = form.querySelector('.password-mismatch-error-message');\n const existingErrorMsg = form.querySelector('.existing-account-error-message');\n const accountCreationErrorMsg = form.querySelector('.account-creation-error-message');\n const passwordStrengthErrorMsg = form.querySelector('.password-strength-error-message');\n const username = form.querySelector('[name=\"acctUsername\"]');\n const passIpt = form.querySelector('[name=\"acctPassword\"]');\n const passConfirmIpt = form.querySelector('[name=\"acctPasswordConfirm\"]');\n const submitBtn = form.querySelector('.o-form__submit');\n\n submitBtn.addEventListener('click', (event) => {\n event.preventDefault();\n const { onSubmitCallbacks } = window;\n passIpt.parentNode.classList.remove('ValidationFail');\n passConfirmIpt.parentNode.classList.remove('ValidationFail');\n errorMsg.classList.add('hide');\n existingErrorMsg.classList.add('hide');\n accountCreationErrorMsg.classList.add('hide');\n passwordStrengthErrorMsg.classList.add('hide');\n if (validate(form) && passwordMatch(passIpt, passConfirmIpt)) {\n // Unhecked/checked opt-in map to 0/1\n let optInVal = 0;\n if (form.querySelectorAll('[name=\"offer-opt-in\"]:checked').length === 1) {\n optInVal = 1;\n }\n createAccount(\n {\n username: username.value,\n password: passIpt.value,\n 'marketing-opt-in': optInVal,\n 'microsite-name': window.micrositeName,\n },\n {\n onSuccess: (data) => {\n if (data['user-id'] === 0 || data['user-id'] === '0') {\n existingErrorMsg.classList.remove('hide');\n } else if (data['user-id'] === -1) {\n accountCreationErrorMsg.classList.remove('hide');\n } else {\n window.isAuthenticated = true;\n window.userId = data['user-id'];\n checkLoginStatus(() => {\n if (onSubmitCallbacks) {\n onSubmitCallbacks.onLoginSuccess();\n } else {\n window.location = window.myFavoritesUrl;\n }\n });\n }\n },\n onError: () => {\n errorMsg.classList.remove('hide');\n if (onSubmitCallbacks) {\n onSubmitCallbacks.onLoginFail();\n }\n },\n },\n );\n } else if (!passwordMatch(passIpt, passConfirmIpt)) {\n passIpt.parentNode.classList.add('ValidationFail');\n passConfirmIpt.parentNode.classList.add('ValidationFail');\n errorMsg.classList.remove('hide');\n // Don't run if in modal\n // console.log(`create-account.js, disableScroll: ${disableScroll}`);\n if (!disableScroll) {\n positionWindowAtFormElement({\n element: form.parentNode,\n offset: -75,\n });\n }\n } else {\n // Don't run if in modal\n if (!disableScroll) {\n positionWindowAtFormElement({\n element: form.parentNode,\n offset: -75,\n });\n }\n if (!passwordStrength(passIpt, passConfirmIpt)) {\n passwordStrengthErrorMsg.classList.remove('hide');\n }\n }\n });\n};\n\nexport {\n addCreateAccountCallbacks,\n removereateAccountCallbacks,\n init,\n resetCreateAccountForm,\n};\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nimport { updateAccountIconStatus } from './consumer-account/account-status-helpers';\nimport { getAccountData } from './consumer-account/account-api';\n\nconst swatchbookLsObj = 'horizons_swbk';\nlet swatchbookData;\n\nconst getItemById = (id) => {\n if (!swatchbookData) {\n swatchbookData = getSwatchbookData(); /* eslint-disable-line no-use-before-define */\n }\n const item = swatchbookData.items.find(saved => saved.id === id);\n if (item !== undefined) {\n return item;\n }\n return null;\n};\n\n// We're only saving the portion of the url AFTER springswindowfashions/\nconst getTruncatedWidenUrl = (url) => {\n if (url.indexOf('springswindowfashions/') !== -1) {\n return url.split('springswindowfashions/')[1];\n }\n return url;\n};\n\nconst isEmpty = () => {\n if (swatchbookData.items.length === 0) {\n return true;\n }\n return false;\n};\n\nconst updateNavIcon = () => {\n // Do not update icon if window.isAuthenticated = false\n if (!window.isAuthenticated) {\n return;\n }\n const icon = document.querySelector('.my-account-item');\n const addedClass = 'items-added-to-swatchbook';\n if (icon === null) {\n return;\n }\n if (isEmpty()) {\n icon.classList.remove(addedClass);\n } else {\n icon.classList.add(addedClass);\n }\n};\n\nconst getSwatchbookData = () => {\n let data = JSON.parse(window.localStorage.getItem(swatchbookLsObj));\n if (data === null) {\n // Set up an empty data object\n data = { items: [], cart: [] };\n }\n return data;\n};\n\nconst getUserData = (callback) => {\n getAccountData(callback);\n};\n\nconst saveItem = (options) => {\n switch (options.type) {\n case 'swatch':\n break;\n case 'photo':\n options.id = window.widenUtils.getIdFromAssetUrl(options.imageUrl);\n break;\n case 'location':\n options.id = 'dealer';\n break;\n default:\n break;\n }\n if (getItemById(options.id) !== null) {\n // console.log(`${options.id} already in swatchbook.`);\n return;\n }\n // Add timestamp\n options.page = window.location.href;\n options.dateSaved = Date.now();\n swatchbookData.items.push(options);\n window.localStorage.setItem(swatchbookLsObj, JSON.stringify(swatchbookData));\n updateAccountIconStatus();\n\n if (options.type === 'photo' && options.description == null) {\n window.widenUtils.setAssetCaption(options.id, options.imageUrl);\n }\n};\n\nconst removeItem = (type, val) => {\n let id;\n switch (type) {\n case 'swatch':\n id = val;\n break;\n case 'photo':\n id = window.widenUtils.getIdFromAssetUrl(val);\n break;\n case 'location':\n id = val;\n break;\n case 'visualization':\n id = val;\n break;\n default:\n break;\n }\n const at = swatchbookData.items.findIndex(saved => saved.id === id);\n if (at !== undefined) {\n // Remove item\n swatchbookData.items.splice(at, 1);\n // console.log(`${id} removed from swatchbook.`);\n // Update data object in storage\n window.localStorage.setItem(swatchbookLsObj, JSON.stringify(swatchbookData));\n }\n updateAccountIconStatus();\n};\n\nconst getAllOfType = (type) => {\n if (swatchbookData === null || !swatchbookData) {\n return [];\n }\n if (!swatchbookData.items) {\n return [];\n }\n const arr = swatchbookData.items.filter(item => item.type === type);\n return arr;\n};\n\nconst saveSwatchbookItem = (options) => {\n /* if (options.type === 'swatch') {\n options.modalData = encodeSwatchModalTableDataById(options.id);\n } */\n if (getItemById(options.id) === null) {\n options.page = window.location.href;\n options.dateSaved = Date.now();\n swatchbookData.items.push(options);\n window.localStorage.setItem(swatchbookLsObj, JSON.stringify(swatchbookData));\n updateNavIcon();\n }\n};\n\nconst removeSwatchbookItem = (options) => {\n let id;\n switch (options.type) {\n case 'swatch':\n id = options.value;\n break;\n case 'photo':\n id = options.value;\n break;\n default:\n break;\n }\n const at = swatchbookData.items.findIndex(saved => saved.id === id);\n if (at !== undefined) {\n // Remove item\n swatchbookData.items.splice(at, 1);\n // Update data object in storage\n window.localStorage.setItem(swatchbookLsObj, JSON.stringify(swatchbookData));\n }\n updateNavIcon();\n};\n\nconst localStorageSwatchEventHandlers = (item) => {\n const id = item.getAttribute('id');\n const btn = item.querySelector('.swatchbutton');\n const label = item.querySelector('.swatchbutton--label');\n if (btn) {\n // Toggle button to remove state if in swatchbook\n if (getItemById(id) !== null) {\n btn.classList.add('is-active');\n label.innerHTML = 'Remove Swatch';\n } else {\n btn.classList.remove('is-active');\n label.innerHTML = 'Add Swatch';\n }\n // Add/remove swatch event handlers\n btn.addEventListener('click', (event) => {\n event.stopPropagation();\n // Remove\n if (btn.classList.toString().indexOf('is-active') !== -1) {\n removeSwatchbookItem({\n type: 'swatch',\n value: id,\n });\n btn.classList.remove('is-active');\n label.innerHTML = 'Add Swatch';\n // Add\n } else {\n const data = {\n collection: btn.getAttribute('data-collection'),\n colorName: btn.getAttribute('data-colorName'),\n colorNumber: btn.getAttribute('data-colorNumber'),\n id: btn.getAttribute('data-id'),\n imageUrl: btn.getAttribute('data-imageUrl'),\n productLine: btn.getAttribute('data-productLine'),\n productLineCode: btn.getAttribute('data-productLineCode'),\n styleId: btn.getAttribute('data-styleId'),\n swatchCatId: btn.getAttribute('data-swatchCatId'),\n swatchCatName: btn.getAttribute('data-swatchCatName'),\n swatchColorNumber: btn.getAttribute('data-swatchColorNumber'),\n swatchStyleName: btn.getAttribute('data-swatchStyleName'),\n swatchId: btn.getAttribute('data-swatchId'),\n newSwatch: btn.getAttribute('data-new-swatch'),\n displayMessage: btn.getAttribute('data-display-message'),\n type: btn.getAttribute('data-type'),\n widenUrl: getTruncatedWidenUrl(btn.getAttribute('data-imageUrl')),\n };\n saveSwatchbookItem(data);\n btn.classList.add('is-active');\n label.innerHTML = 'Remove Swatch';\n }\n });\n }\n};\n\nconst addSwatchToCart = (id) => {\n if (getSwatchbookData === null) {\n init(); /* eslint-disable-line no-use-before-define */\n }\n if (swatchbookData.cart.indexOf(id) === -1) {\n swatchbookData.cart.push(id);\n window.localStorage.setItem(swatchbookLsObj, JSON.stringify(swatchbookData));\n }\n};\n\nconst removeSwatchFromCart = (id) => {\n const at = swatchbookData.cart.findIndex(saved => saved === id);\n if (at !== -1) {\n // Remove item\n swatchbookData.cart.splice(at, 1);\n // Update data object in storage\n window.localStorage.setItem(swatchbookLsObj, JSON.stringify(swatchbookData));\n }\n};\n\nconst clearSwatchbook = () => {\n if (swatchbookData === null) {\n return;\n }\n swatchbookData.items = [];\n window.localStorage.setItem(swatchbookLsObj, JSON.stringify(swatchbookData));\n};\n\nconst clearCart = () => {\n if (swatchbookData === null) {\n return;\n }\n swatchbookData.cart = [];\n window.localStorage.setItem(swatchbookLsObj, JSON.stringify(swatchbookData));\n};\n\nconst getCartData = () => {\n if (swatchbookData === null) {\n return [];\n }\n return swatchbookData.cart;\n};\n\n\nconst clearOrderData = () => {\n swatchbookData.cart = [];\n window.localStorage.setItem(swatchbookLsObj, JSON.stringify(swatchbookData));\n};\n\nconst destroy = () => {\n swatchbookData = null;\n};\n\nconst clearAllSwatchbookData = () => {\n if (!swatchbookData) {\n swatchbookData = getSwatchbookData();\n }\n clearOrderData();\n clearSwatchbook();\n destroy();\n};\n\nconst init = () => {\n swatchbookData = getSwatchbookData();\n updateAccountIconStatus();\n};\n\nconst getProductDetailsPageUrl = (productLineId, callback) => {\n const requestUrl = `/GetProductDetailsUrl?productLineId=${productLineId}`;\n const request = new XMLHttpRequest();\n request.open('GET', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callback) {\n callback(responseData.url);\n }\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n request.send();\n};\n\nconst getSwatchProductUrlParams = (productName, callback) => {\n // If visualizer isn't active immediately run the callback method\n if (!window.isVisualizerActive) {\n callback();\n return;\n }\n // console.log(productName.toLowerCase());\n // Pass product name (lc) to get visualization url params...\n const requestUrl = `/GetVisualizationProperties?pagename=${productName.toLowerCase()}`;\n const request = new XMLHttpRequest();\n request.open('GET', requestUrl, true);\n request.setRequestHeader('Content-type', 'application/json');\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const responseData = JSON.parse(request.responseText);\n if (callback) {\n callback({\n visualizerModelId: responseData.VisualizerModelId,\n visualizerProgamFamilyName: responseData.VisualizerProgramFamilyName,\n });\n }\n }\n };\n request.onerror = () => {\n console.log('error');\n };\n if (window.localTesting) {\n request.onloadend = () => {\n if (callback) {\n let testData = {\n visualizerModelId: null,\n visualizerProgamFamilyName: null,\n };\n if (productName.indexOf('Cellular Shades') !== -1) {\n testData = {\n visualizerModelId: 'CELL',\n visualizerProgamFamilyName: 'CELL',\n };\n }\n callback(testData);\n }\n };\n }\n request.send();\n};\n\nexport {\n saveItem,\n removeItem,\n getTruncatedWidenUrl,\n saveSwatchbookItem,\n removeSwatchbookItem,\n localStorageSwatchEventHandlers,\n addSwatchToCart,\n removeSwatchFromCart,\n getSwatchbookData,\n getItemById,\n getAllOfType,\n getUserData,\n clearAllSwatchbookData,\n getCartData,\n clearCart,\n clearOrderData,\n clearSwatchbook,\n getSwatchProductUrlParams,\n getProductDetailsPageUrl,\n init,\n destroy,\n};\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nconst statusMsgs = document.querySelectorAll('.form-status-message');\n\nconst hideMessage = () => {\n for (let i = 0; i < statusMsgs.length; i++) { /* eslint-disable-line no-plusplus */\n statusMsgs[i].classList.add('hidden');\n statusMsgs[i].classList.remove('infobox-fade');\n }\n};\n\nconst showMessage = () => {\n for (let i = 0; i < statusMsgs.length; i++) { /* eslint-disable-line no-plusplus */\n statusMsgs[i].classList.remove('hidden');\n statusMsgs[i].classList.add('infobox-fade');\n }\n setTimeout(() => {\n hideMessage();\n }, 4000);\n};\n\nconst setMessage = (msg) => {\n for (let i = 0; i < statusMsgs.length; i++) { /* eslint-disable-line no-plusplus */\n statusMsgs[i].innerHTML = msg;\n }\n};\n\nexport {\n hideMessage,\n setMessage,\n showMessage,\n};\n/* eslint-enable no-console */\n","/*!\n * Glide.js v3.3.0\n * (c) 2013-2019 Jędrzej Chałubek (http://jedrzejchalubek.com/)\n * Released under the MIT License.\n */\n/* eslint-disable */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.Glide=e()}(this,function(){\"use strict\";var i={type:\"slider\",startAt:0,perView:1,focusAt:0,gap:10,autoplay:!1,hoverpause:!0,keyboard:!0,bound:!1,swipeThreshold:80,dragThreshold:120,perTouch:!1,touchRatio:.5,touchAngle:45,animationDuration:400,rewind:!0,rewindDuration:800,animationTimingFunc:\"cubic-bezier(.165, .840, .440, 1)\",throttle:10,direction:\"ltr\",peek:0,breakpoints:{},classes:{direction:{ltr:\"glide--ltr\",rtl:\"glide--rtl\"},slider:\"glide--slider\",carousel:\"glide--carousel\",swipeable:\"glide--swipeable\",dragging:\"glide--dragging\",cloneSlide:\"glide__slide--clone\",activeNav:\"glide__bullet--active\",activeSlide:\"glide__slide--active\",disabledArrow:\"glide__arrow--disabled\"}};var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},r=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")},o=function(){function i(t,e){for(var n=0;n\":\"<\",\"<\":\">\",\"=\":\"=\"};function t(t,e){return{modify:function(t){return e.Direction.is(\"rtl\")?-t:t}}}function O(i,r,o){var s=[function(e,n){return{modify:function(t){return t+n.Gaps.value*e.index}}},function(t,e){return{modify:function(t){return t+e.Clones.grow/2}}},function(n,i){return{modify:function(t){if(0<=n.settings.focusAt){var e=i.Peek.value;return c(e)?t-e.before:t-e}return t}}},function(o,s){return{modify:function(t){var e=s.Gaps.value,n=s.Sizes.width,i=o.settings.focusAt,r=s.Sizes.slideWidth;return\"center\"===i?t-(n/2-r/2):t-r*i-e*i}}}].concat(i._t,[t]);return{mutate:function(t){for(var e=0;e\")?(o.Transition.after(function(){s.emit(\"translate.jump\"),u.set(0)}),u.set(i*n+e*n)):u.set(t.movement)}),s.on(\"destroy\",function(){u.remove()}),u},Transition:function(n,e,t){var i=!1,r={compose:function(t){var e=n.settings;return i?t+\" 0ms \"+e.animationTimingFunc:t+\" \"+this.duration+\"ms \"+e.animationTimingFunc},set:function(){var t=0\"))&&(e._o=!1,i.emit(\"run.offset\",e.move)),i.emit(\"run.after\",e.move),o.enable()}))},calculate:function(){var t=this.move,e=this.length,n=t.steps,i=t.direction,r=\"number\"==typeof y(n)&&0!==y(n);switch(i){case\">\":\">\"===n?o.index=e:this.isEnd()?o.isType(\"slider\")&&!o.settings.rewind||(this._o=!0,o.index=0):r?o.index+=Math.min(e-o.index,-y(n)):o.index++;break;case\"<\":\"<\"===n?o.index=0:this.isStart()?o.isType(\"slider\")&&!o.settings.rewind||(this._o=!0,o.index=e):r?o.index-=Math.min(o.index,y(n)):o.index--;break;case\"=\":o.index=n}},isStart:function(){return 0===o.index},isEnd:function(){return o.index===this.length},isOffset:function(t){return this._o&&this.move.direction===t}};return p(t,\"move\",{get:function(){return this._m},set:function(t){var e=t.substr(1);this._m={direction:t.substr(0,1),steps:e?y(e)?y(e):e:0}}}),p(t,\"length\",{get:function(){var t=o.settings,e=n.Html.slides.length;return o.isType(\"slider\")&&\"center\"!==t.focusAt&&t.bound?e-1-(y(t.perView)-1)+y(t.focusAt):e-1}}),p(t,\"offset\",{get:function(){return this._o}}),t},Swipe:function(d,h,v){var n=new H,p=0,m=0,g=0,i=!1,r=!!M&&{passive:!0},t={mount:function(){this.bindSwipeStart()},start:function(t){if(!i&&!d.disabled){this.disable();var e=this.touches(t);p=null,m=y(e.pageX),g=y(e.pageY),this.bindSwipeMove(),this.bindSwipeEnd(),v.emit(\"swipe.start\")}},move:function(t){if(!d.disabled){var e=d.settings,n=e.touchAngle,i=e.touchRatio,r=e.classes,o=this.touches(t),s=y(o.pageX)-m,u=y(o.pageY)-g,a=Math.abs(s<<2),c=Math.abs(u<<2),l=Math.sqrt(a+c),f=Math.sqrt(c);if(!(180*(p=Math.asin(f/l))/Math.PI\"+s))):h.Move.make(),h.Html.root.classList.remove(e.classes.dragging),this.unbindSwipeMove(),this.unbindSwipeEnd(),v.emit(\"swipe.end\")}},bindSwipeStart:function(){var e=this,t=d.settings;t.swipeThreshold&&n.on(C[0],h.Html.wrapper,function(t){e.start(t)},r),t.dragThreshold&&n.on(C[1],h.Html.wrapper,function(t){e.start(t)},r)},unbindSwipeStart:function(){n.off(C[0],h.Html.wrapper,r),n.off(C[1],h.Html.wrapper,r)},bindSwipeMove:function(){var e=this;n.on(P,h.Html.wrapper,b(function(t){e.move(t)},d.settings.throttle),r)},unbindSwipeMove:function(){n.off(P,h.Html.wrapper,r)},bindSwipeEnd:function(){var e=this;n.on(L,h.Html.wrapper,function(t){e.end(t)})},unbindSwipeEnd:function(){n.off(L,h.Html.wrapper)},touches:function(t){return-1\")),37===t.keyCode&&e.Run.make(e.Direction.resolve(\"<\"))}};return n.on([\"destroy\",\"update\"],function(){r.unbind()}),n.on(\"update\",function(){r.mount()}),n.on(\"destroy\",function(){i.destroy()}),r},Autoplay:function(e,n,t){var i=new H,r={mount:function(){this.start(),e.settings.hoverpause&&this.bind()},start:function(){var t=this;e.settings.autoplay&&f(this._i)&&(this._i=setInterval(function(){t.stop(),n.Run.make(\">\"),t.start()},this.time))},stop:function(){this._i=clearInterval(this._i)},bind:function(){var t=this;i.on(\"mouseover\",n.Html.root,function(){t.stop()}),i.on(\"mouseout\",n.Html.root,function(){t.start()})},unbind:function(){i.off([\"mouseover\",\"mouseout\"],n.Html.root)}};return p(r,\"time\",{get:function(){var t=n.Html.slides[e.index].getAttribute(\"data-glide-autoplay\");return y(t||e.settings.autoplay)}}),t.on([\"destroy\",\"update\"],function(){r.unbind()}),t.on([\"run.before\",\"pause\",\"destroy\",\"swipe.start\",\"update\"],function(){r.stop()}),t.on([\"run.after\",\"play\",\"swipe.end\"],function(){r.start()}),t.on(\"update\",function(){r.mount()}),t.on(\"destroy\",function(){i.destroy()}),r},Breakpoints:function(t,e,n){var i=new H,r=t.settings,o=E(r.breakpoints),s=a({},r),u={match:function(t){if(void 0!==window.matchMedia)for(var e in t)if(t.hasOwnProperty(e)&&window.matchMedia(\"(max-width: \"+e+\"px)\").matches)return t[e];return s}};return a(r,u.match(o)),i.on(\"resize\",window,b(function(){t.settings=h(r,u.match(o))},t.settings.throttle)),n.on(\"update\",function(){o=E(o),s=a({},r)}),n.on(\"destroy\",function(){i.off(\"resize\",window)}),u}};return function(t){function e(){return r(this,e),s(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,m),o(e,[{key:\"mount\",value:function(){var t=0 0) {\n buildGridGallery();\n}\n/* eslint-enable no-console */\n","const getParameterByName = (name, url) => {\n const location = url || window.location.href;\n const regex = new RegExp(`[?&]${name.replace(/[\\[\\]]/g, '\\\\$&')}(=([^&#]*)|&|#|$)`);\n const results = regex.exec(location);\n if (!results) {\n return '';\n }\n if (!results[2]) {\n return '';\n }\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n};\n\nconst removeUrlParams = () => {\n let url = window.location.href;\n const reg = /.+?(?=\\?)/;\n const shortUrl = url.match(reg);\n if (shortUrl !== null) {\n url = shortUrl[0]; // eslint-disable-line prefer-destructuring\n window.history.replaceState({}, document.title, url);\n }\n};\n\n\nconst detectProduction = function() {\n if (\n window.location.href.indexOf('www.horizonshades.com') !== -1 ||\n window.location.href.indexOf('https://horizonshades.com') !== -1 ||\n window.location.href.indexOf('http://horizonshades.com') !== -1\n ) {\n return true;\n }\n return false;\n};\nexport {\n detectProduction,\n getParameterByName,\n removeUrlParams,\n};\n","/* eslint-disable no-console */\nimport { clearInputValues, removeAllErrors } from '../../utils/form-validation-utils';\n\nlet previousElementInFocus = null;\nconst onDocumentModalKeyUp = (event, modal) => {\n if (event.keyCode === 27) {\n closeAccountModal(modal); /* eslint-disable-line no-use-before-define */\n }\n};\nconst setPreviousElementInFocus = (element) => {\n previousElementInFocus = element;\n};\nconst resetFocus = () => {\n if (previousElementInFocus) {\n previousElementInFocus.focus();\n }\n};\n\nconst closeAccountModal = (modal) => {\n // Clear any form values, input errors, error messages\n const form = modal.querySelector('.acct-login-modal-form');\n clearInputValues(form);\n removeAllErrors(form);\n form.querySelector('.form-error-message').classList.add('hide');\n // Remove active classes\n modal.classList.remove('modal-visible');\n modal.removeAttribute('style');\n const closeBtn = modal.querySelector('#close-btn');\n const overlay = document.querySelector('#modal-overlay');\n overlay.classList.remove('modal-visible');\n // Remove event listeners\n closeBtn.removeEventListener('click', closeAccountModal);\n overlay.removeEventListener('click', closeAccountModal);\n document.removeEventListener('keyup', onDocumentModalKeyUp);\n resetFocus();\n};\n\nconst openAccountModal = (modal) => {\n if (!modal) {\n return;\n }\n // Check if overlay bg exists\n let overlay = document.querySelector('#modal-overlay');\n if (!overlay) {\n const body = document.getElementsByTagName('body')[0];\n overlay = document.createElement('div');\n body.appendChild(overlay);\n overlay.setAttribute('id', 'modal-overlay');\n overlay.classList.add('c-modalOverlay');\n }\n overlay.style.zIndex = '9998';\n // Add active classes\n modal.classList.add('modal-visible');\n overlay.classList.add('modal-visible');\n const closeBtn = modal.querySelector('#close-btn');\n // Add events\n closeBtn.addEventListener('click', () => closeAccountModal(modal));\n overlay.addEventListener('click', () => closeAccountModal(modal));\n document.addEventListener('keyup', event => onDocumentModalKeyUp(event, modal));\n setPreviousElementInFocus(document.activeElement);\n modal.focus();\n};\n\nexport {\n openAccountModal,\n closeAccountModal,\n};\n/* eslint-enable no-console */\n","/* eslint-disable no-console, import/prefer-default-export */\nimport { forgotPassword } from './account-api';\n\nconst submitForm = (data, callbacks) => {\n forgotPassword(data, callbacks);\n};\n\nexport {\n submitForm,\n};\n/* eslint-enable no-console, import/prefer-default-export */\n","/* eslint-disable no-console, import/prefer-default-export */\nimport * as changePassword from './change-password';\nimport * as statusMessages from './status-messages';\nimport { updateAccount } from './account-api';\nimport { validate, positionWindowAtFormElement, formatPhone } from '../../utils/form-validation-utils';\n\nconst init = () => {\n const changePasswordBtn = document.querySelector('.btn--change-password');\n const changePasswordDiv = document.querySelector('.change-your-password');\n const changePasswordCancelBtn = document.querySelector('.btn--cancel-change-password');\n const form = document.querySelector('.acct-manage-form');\n const submitBtn = form.querySelector('.o-form__submit');\n const errorMsg = document.querySelector('.acct-manage-form-error-message');\n const serverErrorMsg = document.querySelector('.server-form-error-message');\n // const statusMsgs = document.querySelectorAll('.form-status-message');\n\n // Format phone number\n document.getElementById('PhoneNumber').value = formatPhone(document.getElementById('PhoneNumber').value);\n\n changePasswordBtn.addEventListener('click', () => {\n changePasswordDiv.classList.remove('hide');\n changePassword.showChangePasswordModule();\n });\n\n changePasswordCancelBtn.addEventListener('click', () => {\n changePassword.hideChangePasswordModule();\n changePasswordDiv.classList.add('hide');\n });\n\n submitBtn.addEventListener('click', (event) => {\n event.preventDefault();\n if (validate(form)) {\n errorMsg.classList.add('hide');\n serverErrorMsg.classList.add('hide');\n updateAccount(\n {\n 'user-id': window.userId,\n 'first-name': document.getElementById('FirstName').value,\n 'last-name': document.getElementById('LastName').value,\n address: document.getElementById('Address').value,\n address2: document.getElementById('Address2').value,\n city: document.getElementById('City').value,\n 'state-or-province': document.getElementById('StateOrProvince').value,\n 'postal-code': document.getElementById('PostalCode').value,\n country: document.getElementById('Country').value,\n 'phone-number': formatPhone(document.getElementById('PhoneNumber').value),\n },\n {\n onSuccess: () => {\n statusMessages.setMessage('

Your account has been updated.

');\n statusMessages.showMessage();\n },\n onError: () => {\n serverErrorMsg.classList.remove('hide');\n positionWindowAtFormElement({\n element: errorMsg,\n offset: -233,\n });\n },\n },\n );\n } else {\n errorMsg.classList.remove('hide');\n positionWindowAtFormElement({\n element: form.querySelectorAll('.ValidationFail')[0],\n offset: -75,\n });\n }\n });\n changePassword.init();\n};\n\n// const showStatusMessage = () => {\n// for (let i = 0; i < inputList.length; i++) { /* eslint-disable-line no-plusplus */\n// inputList[i].removeAttribute('required')\n// }\n// };\n\n// const hideStatusMessage = () => {\n// for (let i = 0; i < inputList.length; i++) { /* eslint-disable-line no-plusplus */\n// inputList[i].removeAttribute('required');\n// }\n// };\n\nexport {\n init,\n};\n/* eslint-enable no-console, import/prefer-default-export */\n","/* eslint-disable no-console */\nimport * as statusMessages from './status-messages';\nimport { updatePassword } from './account-api';\nimport {\n addRequiredAttrs,\n clearInputValues,\n positionWindowAtFormElement,\n removeAllErrors,\n removeRequiredAttrs,\n validate,\n validateByType,\n} from '../../utils/form-validation-utils';\n\nconst currentPassIpt = document.getElementById('acctPassword');\nconst newPassIpt = document.getElementById('newAcctPassword');\nconst newPassConfirmIpt = document.getElementById('newAcctPasswordConfirm');\n\nconst newPasswordMatch = () => {\n if (newPassIpt.value === newPassConfirmIpt.value) {\n return true;\n }\n return false;\n};\n\nconst passwordStrength = () => {\n if (validateByType('password', newPassIpt.value) && validateByType('password', newPassConfirmIpt.value)) {\n return true;\n }\n return false;\n};\n\nconst init = () => {\n const form = document.querySelector('.acct-password-form');\n const submitBtn = form.querySelector('.o-form__submit');\n const errorMsg = form.querySelector('.validation-error-message');\n const serverErrorMsg = form.querySelector('.server-error-message');\n const passwordStrengthErrorMsg = form.querySelector('.password-strength-error-message');\n\n submitBtn.addEventListener('click', (event) => {\n event.preventDefault();\n newPassIpt.parentNode.classList.remove('ValidationFail');\n newPassConfirmIpt.parentNode.classList.remove('ValidationFail');\n errorMsg.classList.add('hide');\n passwordStrengthErrorMsg.classList.add('hide');\n serverErrorMsg.classList.add('hide');\n serverErrorMsg.innerHTML = '';\n if (validate(form) && newPasswordMatch()) {\n updatePassword(\n {\n 'user-id': window.userId,\n password: newPassIpt.value,\n 'current-password': currentPassIpt.value,\n },\n {\n onSuccess: (data) => {\n if (data.success) {\n statusMessages.setMessage('

Your account has been updated.

');\n statusMessages.showMessage();\n } else {\n serverErrorMsg.classList.remove('hide');\n serverErrorMsg.innerHTML = `

${data['friendly-error-message']}

`;\n }\n },\n onError: () => {\n errorMsg.classList.remove('hide');\n },\n },\n );\n } else if (!newPasswordMatch()) {\n newPassIpt.parentNode.classList.add('ValidationFail');\n newPassConfirmIpt.parentNode.classList.add('ValidationFail');\n errorMsg.classList.remove('hide');\n positionWindowAtFormElement({\n element: form.querySelectorAll('.ValidationFail')[0],\n offset: -233,\n });\n } else {\n positionWindowAtFormElement({\n element: form.querySelectorAll('.ValidationFail')[0],\n offset: -233,\n });\n if (!passwordStrength()) {\n passwordStrengthErrorMsg.classList.remove('hide');\n }\n }\n });\n};\n\nconst showChangePasswordModule = () => {\n const form = document.querySelector('.acct-password-form');\n addRequiredAttrs(form);\n form.querySelector('.form-error-message').classList.add('hide');\n};\n\nconst hideChangePasswordModule = () => {\n const form = document.querySelector('.acct-password-form');\n clearInputValues(form);\n removeRequiredAttrs(form);\n removeAllErrors(form);\n};\n\nexport {\n hideChangePasswordModule,\n init,\n showChangePasswordModule,\n};\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nimport * as api from './account-api';\nimport { launchLoginModal } from './login';\n\nconst getPhotoAccountIdFromWidenId = (url, assets) => {\n const item = assets.find(asset => asset['photo-url'] === url);\n if (item !== undefined) {\n return item['photo-id'];\n }\n return null;\n};\n\nconst saveItemToAccount = (type, options, callback) => {\n // console.log({type, options, callback});\n if (window.isAuthenticated) {\n switch (type) {\n case 'location':\n api.addDealer(options, callback);\n break;\n case 'photo':\n api.addPhoto(options, callback);\n break;\n case 'swatch':\n api.addSwatch(options, callback);\n break;\n case 'visualization':\n api.addVisualization(options, callback);\n break;\n default:\n break;\n }\n } else {\n launchLoginModal({\n type,\n callbacks: {\n onLoginSuccess: () => {\n switch (type) {\n case 'location':\n api.addDealer(options, callback);\n break;\n case 'photo':\n api.addPhoto(options, callback);\n break;\n case 'swatch':\n api.addSwatch(options, callback);\n break;\n case 'visualization':\n api.addVisualization(options, callback);\n break;\n default:\n break;\n }\n },\n onLoginFail: () => {\n // console.log('storage-actions.js, onLoginFail');\n // Fix for not having to have FQ check for success param\n if (callback && type !== 'visualization') {\n callback({\n success: false,\n });\n }\n },\n },\n });\n }\n};\n\nconst removeItemFromAccount = (type, id, callback) => {\n api.removeItemByType(type, id, callback);\n};\n\nconst getItemsFromAccount = (type, callback) => {\n api.getItemsByType(type, callback);\n};\n\nexport {\n getPhotoAccountIdFromWidenId,\n getItemsFromAccount,\n removeItemFromAccount,\n saveItemToAccount,\n};\n/* eslint-enable no-console */\n","const setTooltipPosition = (btn, tooltip) => {\n let x = (btn.offsetLeft + btn.offsetWidth) - tooltip.offsetWidth;\n const caret = tooltip.querySelector('.tooltip-caret');\n if (x < 0) {\n // Offset caret\n caret.style.right = `${Math.abs(x) + 5}px`;\n // Reset x to 0\n x = 0;\n } else {\n caret.removeAttribute('style');\n }\n const y = btn.offsetTop - (tooltip.offsetHeight + 12);\n tooltip.style.left = `${x}px`;\n tooltip.style.top = `${y}px`;\n};\n\nconst showTooltip = (event) => {\n const btn = event.target.closest('[data-tooltip-id]');\n if (btn === null) {\n return;\n }\n const id = btn.getAttribute('data-tooltip-id');\n const tooltip = document.getElementById(id);\n tooltip.classList.add('show');\n setTooltipPosition(btn, tooltip);\n};\n\nconst hideTooltip = (event) => {\n const btn = event.target.closest('[data-tooltip-id]');\n if (btn === null) {\n return;\n }\n const id = btn.getAttribute('data-tooltip-id');\n const tooltip = document.getElementById(id);\n tooltip.classList.remove('show');\n};\n\nconst toggleTooltip = (event) => {\n const btn = event.target.closest('[data-tooltip-id]');\n if (btn === null) {\n return;\n }\n const id = btn.getAttribute('data-tooltip-id');\n const tooltip = document.getElementById(id);\n if (tooltip.classList.contains('show')) {\n tooltip.classList.remove('show');\n } else {\n tooltip.classList.add('show');\n }\n};\n\nconst addTooltipEventHandlers = (btn) => {\n btn.addEventListener('click', toggleTooltip);\n btn.addEventListener('mouseover', showTooltip);\n btn.addEventListener('mouseout', hideTooltip);\n btn.addEventListener('focus', showTooltip);\n btn.addEventListener('blur', hideTooltip);\n};\n\nconst addTooltipsOnPageLoad = () => {\n const tooltipBtns = document.querySelectorAll('[data-tooltip-id]');\n if (tooltipBtns.length === 0) {\n return;\n }\n for (let i = 0; i < tooltipBtns.length; i++) { /* eslint-disable-line no-plusplus */\n addTooltipEventHandlers(tooltipBtns[i]);\n }\n};\n\nconst addNewTooltipsToButtonGroup = (options) => {\n const { btns } = options;\n if (btns.length === 0) {\n return;\n }\n for (let i = 0; i < btns.length; i++) { /* eslint-disable-line no-plusplus */\n addTooltipEventHandlers(btns[i]);\n }\n};\n\nconst addNewTooltipToButton = (options) => {\n const { btn } = options;\n addTooltipEventHandlers(btn);\n};\n\nexport {\n addNewTooltipToButton,\n addNewTooltipsToButtonGroup,\n addTooltipsOnPageLoad,\n};\n","const siteEventNames = {\n ON_RECAPTCHA_LOAD: 'onrecaptchaload',\n};\n\nconst initSiteEvents = () => {\n if (window.siteEventRegistry) {\n return;\n }\n // Init events and add them to window scope here\n window.siteEventRegistry = {};\n Object.keys(siteEventNames).forEach((key) => {\n const value = siteEventNames[key];\n siteEventRegistry[value] = {\n event: new Event(value),\n data: {},\n }\n });\n};\n\nconst getEventData = (eventName) => {\n const { siteEventRegistry } = window;\n let data = {};\n Object.keys(siteEventRegistry).forEach((key) => {\n if (key === eventName) {\n data = siteEventRegistry[key].data;\n }\n });\n return data;\n}\n\nconst dispatchSiteEvent = (eventName, data) => {\n const { siteEventRegistry } = window;\n Object.keys(siteEventRegistry).forEach((key) => {\n if (key === eventName) {\n const event = siteEventRegistry[key].event;\n siteEventRegistry[key].data = data;\n window.dispatchEvent(event);\n }\n });\n};\n\nexport {\n dispatchSiteEvent,\n getEventData,\n initSiteEvents,\n siteEventNames,\n};\n","/* eslint-disable no-console */\nconst getCookieValue = () => {\n const cookies = document.cookie.toString().split(';');\n let cookie;\n let arr = [];\n for (let i = 0; i < cookies.length; i++) { /* eslint-disable-line no-plusplus */\n cookie = cookies[i].toString().match(new RegExp('UserCookie', 'gi'));\n if (cookie !== null) {\n arr = cookies[i].split('=');\n return arr[2];\n }\n }\n return '';\n};\n\nconst getLoggedInStatus = () => {\n if (getCookieValue() !== '') {\n return true;\n }\n return false;\n};\n\nconst getUserId = () => (\n parseInt(getCookieValue(), 10)\n);\n\nexport {\n getLoggedInStatus,\n getUserId,\n};\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nconst contentToggle = () => {\n const toggleContent = (btn) => {\n const ariaControls = btn.getAttribute('aria-controls');\n const ariaExpanded = btn.getAttribute('aria-expanded');\n const closedLabel = btn.getAttribute('data-closedlabel');\n const content = document.getElementById(ariaControls);\n const openLabel = btn.getAttribute('data-openlabel');\n\n if (ariaExpanded === 'false') {\n btn.setAttribute('aria-expanded', 'true');\n btn.innerHTML = openLabel;\n content.classList.remove('hidden');\n } else {\n btn.setAttribute('aria-expanded', 'false');\n btn.innerHTML = closedLabel;\n content.classList.add('hidden');\n }\n };\n\n const contentToggleBtns = document.querySelectorAll('.content-toggle-btn');\n [].map.call(contentToggleBtns, btn => btn.addEventListener('click', () => {\n toggleContent(btn);\n }));\n};\n\nexport default contentToggle;\n/* eslint-enable no-console */\n","const desktopNavMenus = () => {\n const body = document.querySelector('body');\n\n const closeAllMenus = () => {\n // Remove page overlay\n body.classList.remove('nav-menu-dropdown');\n const subnavDivs = document.querySelectorAll('.subnav');\n // Set default content for each menu\n for (let i = 0; i < subnavDivs.length; i++) { /* eslint-disable-line no-plusplus */\n subnavDivs[i].classList.remove('is-active');\n if (subnavDivs[i].querySelector('button') !== null) {\n subnavDivs[i].querySelector('button').setAttribute('aria-expanded', 'false');\n }\n }\n };\n\n const closeMenuOnBodyClick = (event) => {\n if (event.target.closest('.subnav') === null) {\n closeAllMenus();\n document.querySelector('body').removeEventListener('click', closeMenuOnBodyClick);\n }\n };\n\n const toggleSubnavImage = (selector) => {\n if (selector === null) {\n return;\n }\n const navimg = selector.getAttribute('data-navimg');\n const src = selector.getAttribute('data-imgsrc');\n if (navimg === null || navimg === '' || src === null || src === '') {\n return;\n }\n const img = document.querySelector(navimg);\n if (img !== null && src !== null) {\n // Check if image has a default image set, in which case, do not swap\n if (img.classList.contains('use-default-image')) {\n return;\n }\n img.src = src;\n // object-fit fallback\n if ('objectFit' in document.documentElement.style === false) {\n if (img.src) {\n img.parentNode.setAttribute('style', `background-image:url(${encodeURI(img.src)});`);\n img.parentNode.classList.add('compat-object-fit');\n }\n }\n }\n };\n\n const toggleSubnavMenu = (menuItem) => {\n // const menuSelector = '.nav-dropdown-list-item-inner';\n const menuSelector = menuItem.getAttribute('data-subnav');\n const menu = document.querySelector(menuSelector);\n const hiddenClass = 'hidden';\n // const menus = menuItem.parentNode.querySelectorAll(menuSelector);\n const menus = menu.parentNode.querySelectorAll('ul');\n for (let i = 0; i < menus.length; i++) { /* eslint-disable-line no-plusplus */\n menus[i].classList.add(hiddenClass);\n menus[i].removeAttribute('hidden');\n }\n // const menu = menuItem.querySelector(menuSelector);\n menu.classList.remove(hiddenClass);\n };\n\n const toggleActiveSubnavItem = (menuItem) => {\n const activeClass = 'is-active';\n const activeItems = menuItem.parentNode.querySelectorAll(`.${activeClass}`);\n for (let i = 0; i < activeItems.length; i++) { /* eslint-disable-line no-plusplus */\n activeItems[i].classList.remove(activeClass);\n }\n menuItem.classList.add(activeClass);\n };\n\n const disableForMyAccoount = (menuItem) => {\n const { isAuthenticated } = window;\n return menuItem.parentNode.classList.contains('my-account-item') && !isAuthenticated;\n };\n\n const resetDefaultSelected = (item) => {\n const menuItem = item.parentNode.querySelector('.nav-default-selected');\n if (menuItem) {\n toggleSubnavImage(menuItem);\n toggleSubnavMenu(menuItem);\n toggleActiveSubnavItem(menuItem);\n }\n };\n\n const onMenuItemMouseEnter = (menuItem) => {\n closeAllMenus();\n if (disableForMyAccoount(menuItem)) {\n return;\n }\n menuItem.parentNode.classList.add('is-active');\n menuItem.setAttribute('aria-expanded', 'true');\n body.addEventListener('click', closeMenuOnBodyClick);\n body.classList.add('nav-menu-dropdown');\n resetDefaultSelected(menuItem);\n };\n\n const onMenuItemMouseLeave = (menuItem) => {\n document.activeElement.blur();\n if (disableForMyAccoount(menuItem)) {\n return;\n }\n menuItem.parentNode.classList.remove('is-active');\n menuItem.setAttribute('aria-expanded', 'false');\n body.removeEventListener('click', closeMenuOnBodyClick);\n body.classList.remove('nav-menu-dropdown');\n };\n\n const onMenuItemClick = (menuItem) => {\n if (disableForMyAccoount(menuItem)) {\n return;\n }\n if (menuItem.parentNode.classList.contains('is-active')) {\n menuItem.parentNode.classList.remove('is-active');\n menuItem.setAttribute('aria-expanded', 'false');\n body.removeEventListener('click', closeMenuOnBodyClick);\n body.classList.remove('nav-menu-dropdown');\n } else {\n closeAllMenus();\n menuItem.parentNode.classList.add('is-active');\n menuItem.setAttribute('aria-expanded', 'true');\n body.addEventListener('click', closeMenuOnBodyClick);\n body.classList.add('nav-menu-dropdown');\n resetDefaultSelected(menuItem);\n }\n };\n\n let collectedEvents = [];\n\n const selectEventHandler = () => {\n setTimeout(() => {\n // If click present, route to click event\n let active = collectedEvents.find(item => item.type === 'click');\n if (active) {\n active.callback(active.menuItem);\n } else {\n // Otherwise, use last event in array\n active = collectedEvents[collectedEvents.length - 1];\n if (active.type === 'mouseenter') {\n active.callback(active.menuItem);\n } else if (active.type === 'mouseleave') {\n active.callback(active.menuItem);\n }\n }\n // Otherwise chose last event handler in list\n collectedEvents = [];\n }, 100);\n };\n\n const manageMenuEvents = (menuItem, type, callback) => {\n if (collectedEvents.length === 0) {\n selectEventHandler();\n }\n collectedEvents.push({\n type,\n menuItem,\n callback,\n });\n };\n\n const addListeners = () => {\n const menuSelectors = document.querySelectorAll('.subnav .nav-dropdown-list-item');\n // Add event listeners to each menuItem\n [].map.call(menuSelectors, menuItem => menuItem.addEventListener('mouseenter', (event) => {\n manageMenuEvents(menuItem, event.type, () => {\n toggleSubnavImage(menuItem);\n toggleSubnavMenu(menuItem);\n toggleActiveSubnavItem(menuItem);\n });\n }));\n [].map.call(menuSelectors, menuItem => menuItem.addEventListener('click', (event) => {\n manageMenuEvents(menuItem, event.type, () => {\n toggleSubnavImage(menuItem);\n toggleSubnavMenu(menuItem);\n toggleActiveSubnavItem(menuItem);\n });\n }));\n };\n\n [].map.call(document.querySelectorAll('.subnav > button'), menuItem => (\n menuItem.addEventListener('click', (event) => {\n manageMenuEvents(menuItem, event.type, onMenuItemClick);\n })\n ));\n [].map.call(document.querySelectorAll('.subnav > button'), menuItem => (\n menuItem.parentNode.addEventListener('mouseenter', (event) => {\n manageMenuEvents(menuItem, event.type, onMenuItemMouseEnter);\n })\n ));\n [].map.call(document.querySelectorAll('.subnav > button'), menuItem => (\n menuItem.parentNode.addEventListener('mouseleave', (event) => {\n manageMenuEvents(menuItem, event.type, onMenuItemMouseLeave);\n })\n ));\n [].map.call(document.querySelectorAll('.primary-nav-list .dd-nav'), dropdown => (\n dropdown.addEventListener('mouseleave', () => {\n closeAllMenus();\n body.removeEventListener('click', closeMenuOnBodyClick);\n body.classList.remove('nav-menu-dropdown');\n })\n ));\n\n const imgWrappers = document.querySelectorAll('.subnav');\n // Set default content for each menu\n for (let i = 0; i < imgWrappers.length; i++) { /* eslint-disable-line no-plusplus */\n const img = document.createElement('IMG');\n img.scr = '';\n img.setAttribute('alt', '');\n const imgWrapDiv = imgWrappers[i].querySelector('.nav-image .img-wrap');\n const defaultImg = imgWrappers[i].querySelector('.nav-image .img-wrap img');\n if (imgWrapDiv && !defaultImg) {\n imgWrapDiv.appendChild(img);\n const defaultMenuItem = imgWrappers[i].querySelector('.nav-default-selected');\n toggleSubnavImage(defaultMenuItem);\n }\n }\n addListeners();\n};\n\nexport default desktopNavMenus;\n","/* eslint-disable no-console */\nconst filterToggle = () => {\n // Elements\n const filterMenus = document.querySelectorAll('.filter-heading');\n\n if (filterMenus) {\n [].map.call(filterMenus, btn => btn.addEventListener('click', (event) => {\n event.preventDefault();\n // Toggle class of .is-active on .filter-set\n btn.parentElement.classList.toggle('is-active');\n const isExpanded = btn.parentElement.classList.contains('is-active');\n btn.setAttribute('aria-expanded', isExpanded);\n }));\n }\n};\n\nexport default filterToggle;\n/* eslint-enable no-console */\n","/* eslint-disable no-console */\nimport Glide from '../vendors/glide.min';\n\nconst gridSliders = () => {\n if (document.querySelectorAll('.grid-slider').length === 0) {\n return;\n }\n\n const sliders = [];\n let enabled = false;\n\n const init = () => {\n [].map.call(document.querySelectorAll('.grid-slider'), (slider) => {\n // Set autoplay from global param, then check to see if local setting was passed\n let autoplay = window.autoplayInterval;\n if (!autoplay) {\n autoplay = 0;\n }\n if (slider.getAttribute('data-glide-autoplay')) {\n autoplay = parseInt(slider.getAttribute('data-glide-autoplay'), 10);\n }\n // Is there more than 1 slide\n if (slider.querySelectorAll('.glide__slide').length > 1) {\n // Add glide\n const glide = new Glide(slider, {\n type: 'carousel',\n startAt: 0,\n gap: 0, // 30\n autoplay,\n hoverpause: true,\n breakpoints: {\n 991: {\n perView: 2,\n focusAt: 0,\n },\n 767: {\n perView: 1,\n focusAt: 'center',\n },\n },\n });\n glide.mount();\n sliders.push(glide);\n }\n });\n };\n\n const destroy = () => {\n sliders.forEach((slider) => {\n slider.destroy();\n });\n sliders.splice(0, sliders.length);\n };\n\n const updateGlideEvents = () => {\n if (window.innerWidth <= 991 && !enabled) {\n enabled = true;\n init();\n }\n if (window.innerWidth > 991 && enabled) {\n enabled = false;\n destroy();\n }\n };\n\n window.addEventListener('resize', () => {\n updateGlideEvents();\n });\n\n updateGlideEvents();\n};\n\nexport default gridSliders;\n/* eslint-enable no-console */\n","const headerOffset = () => {\n const headerDiv = document.querySelector('.header');\n const contentWrapper = document.querySelector('main.content');\n const offsetClass = 'offset-header';\n\n if (contentWrapper === null) {\n return;\n }\n\n const onIntervalUpdate = () => {\n if (contentWrapper.classList.contains(offsetClass)) {\n contentWrapper.style.paddingTop = `${headerDiv.offsetHeight}px`;\n }\n };\n\n setInterval(() => {\n onIntervalUpdate();\n }, 1000);\n};\n\nexport default headerOffset;\n","const headerSearch = () => {\n const searchIpt = document.querySelector('.search-input');\n const submitBtn = document.querySelector('.site-search-btn');\n const toggleBtns = document.querySelectorAll('.search-item button, .mobile-search-item button, .search-wrapper .close-btn');\n const searchbar = document.querySelector('.search-wrapper');\n const body = document.querySelector('body');\n let prevActiveElement = null;\n\n if (searchbar === null) {\n return;\n }\n\n const onBodyClick = (event) => {\n isParentSearchbar(event.target); /* eslint-disable-line no-use-before-define */\n };\n\n const showSearchModule = () => {\n searchbar.classList.add('active');\n // Reset input value\n searchIpt.value = '';\n setTimeout(() => {\n searchIpt.focus();\n }, 200);\n body.addEventListener('click', onBodyClick);\n };\n\n const hideSearchModule = () => {\n searchbar.classList.remove('active');\n body.removeEventListener('click', onBodyClick);\n setTimeout(() => {\n prevActiveElement.focus();\n prevActiveElement.setAttribute('aria-expanded', 'false');\n }, 100);\n };\n\n const submit = () => {\n if (searchIpt.value !== '') {\n window.location.href = `/search/?q=${encodeURIComponent(searchIpt.value)}`;\n }\n };\n\n const isParentSearchbar = (node) => {\n if (node === null || node.classList === undefined) {\n hideSearchModule();\n return;\n }\n if (node.classList.contains('search-wrapper') || node.classList.contains('search-item') || node.classList.contains('mobile-search-item')) {\n return;\n }\n isParentSearchbar(node.parentNode);\n };\n\n // Event handlers\n [].map.call(toggleBtns, btn => btn.addEventListener('click', (event) => {\n event.preventDefault();\n if (searchbar.classList.contains('active')) {\n hideSearchModule();\n } else {\n showSearchModule();\n btn.setAttribute('aria-expanded', 'true');\n prevActiveElement = btn;\n }\n }));\n\n searchIpt.addEventListener('keydown', (event) => {\n if (event.which === 13) {\n submit();\n }\n\n if (event.shiftKey && event.keyCode === 9) {\n // Return to search toggle\n hideSearchModule();\n }\n });\n\n submitBtn.addEventListener('click*', () => {\n submit();\n });\n\n const onScroll = () => {\n if (searchbar.classList.contains('active')) {\n hideSearchModule();\n }\n };\n window.addEventListener('scroll', onScroll);\n};\n\nexport default headerSearch;\n","/* eslint-disable no-console */\nimport Glide from '../vendors/glide.min';\n\nconst getVideoWrapperId = id => `ytid_${id}`;\n\nconst getContentWrapperOffsetClass = () => {\n // Check for header offset in section.content\n const contentWrapper = document.querySelector('main.content');\n if (contentWrapper === null) {\n return false;\n }\n if (contentWrapper.classList.contains('offset-header')) {\n return true;\n }\n return false;\n};\n\nconst runSlideContentUpdate = () => {\n const isContentOffset = getContentWrapperOffsetClass();\n const slideContent = document.querySelectorAll('.hero-slider .slide-caption-inner');\n const header = document.querySelector('.header');\n const slider = document.querySelector('.hero-slider');\n const glideTrack = document.querySelector('.hero-slider .glide__track');\n const headerHeight = isContentOffset ? 0 : header.offsetHeight;\n const sliderHeight = slider.offsetHeight;\n let slideHeight = 0;\n for (let i = 0; i < slideContent.length; i++) { /* eslint-disable-line no-plusplus */\n const parentHeight = slideContent[i].parentNode.offsetHeight;\n slideHeight = Math.max(slideHeight, slideContent[i].offsetHeight);\n if (slideContent[i].offsetHeight > parentHeight - headerHeight) {\n slideContent[i].parentNode.style.alignItems = 'flex-start';\n slideContent[i].style.marginTop = `${headerHeight}px`;\n } else {\n slideContent[i].parentNode.style.removeProperty('align-items');\n slideContent[i].style.removeProperty('margin-top');\n }\n }\n // console.log(`${slideHeight}/${sliderHeight + headerHeight}`);\n if (slideHeight > sliderHeight - headerHeight) {\n slider.style.height = `${slideHeight + headerHeight}px`;\n glideTrack.style.overflow = 'visible';\n return;\n }\n // console.log(`-- ${sliderHeight}/${slideHeight + headerHeight}`);\n if (sliderHeight !== slideHeight + headerHeight) {\n slider.style.removeProperty('height');\n glideTrack.style.removeProperty('overflow');\n }\n};\n\nconst adjustSlideContentFit = () => {\n const slideContent = document.querySelectorAll('.hero-slider .slide-caption-inner');\n if (slideContent.length === 0) {\n return;\n }\n setInterval(() => {\n runSlideContentUpdate();\n }, 1000);\n runSlideContentUpdate();\n};\n\nconst HeroSlider = {\n glide: null,\n disableAutoplay: false,\n apiLoaded: false,\n iframes: document.querySelectorAll('.hero-slider iframe'),\n players: [],\n getPlayerById: (id) => {\n let player;\n for (let i = 0; i < HeroSlider.players.length; i++) { /* eslint-disable-line no-plusplus */\n if (id === getVideoWrapperId(HeroSlider.players[i].playerInfo.videoData.video_id)) {\n player = HeroSlider.players[i];\n }\n }\n return player;\n },\n onUpdate: () => {\n if (!HeroSlider.apiLoaded) {\n return;\n }\n for (let i = 0; i < HeroSlider.players.length; i++) { /* eslint-disable-line no-plusplus */\n const slider = document.getElementById(getVideoWrapperId(HeroSlider.players[i].playerInfo.videoData.video_id));\n // console.log(`${parseInt(HeroSlider.glide.index, 10)}/${parseInt(slider.getAttribute('data-slideNum'), 10)}`);\n if (parseInt(HeroSlider.glide.index, 10) === parseInt(slider.getAttribute('data-slideNum'), 10)) {\n HeroSlider.players[i].playVideo();\n } else {\n HeroSlider.players[i].pauseVideo();\n }\n }\n },\n onInteract: () => {\n if (!HeroSlider.apiLoaded) {\n return;\n }\n // Pause any video\n for (let i = 0; i < HeroSlider.players.length; i++) { /* eslint-disable-line no-plusplus */\n if (HeroSlider.players[i].getPlayerState() === 1) {\n HeroSlider.players[i].pauseVideo();\n }\n }\n },\n addControls: () => {\n let player;\n for (let i = 0; i < HeroSlider.iframes.length; i++) { /* eslint-disable-line no-plusplus */\n if (HeroSlider.iframes[i].id !== '') {\n player = new YT.Player(HeroSlider.iframes[i].id, { /* eslint-disable-line no-undef */\n events: {\n 'onReady': function (event) { /* eslint-disable-line func-names, quote-props */\n HeroSlider.apiLoaded = true;\n const id = getVideoWrapperId(event.target.playerInfo.videoData.video_id); /* eslint-disable-line prefer-destructuring */\n const slides = document.querySelectorAll('.hero-slider .glide__slides li');\n if (slides.length > 1) {\n if (parseInt(document.getElementById(id).getAttribute('data-slideNum'), 10) !== parseInt(HeroSlider.glide.index, 10)) {\n HeroSlider.getPlayerById(id).pauseVideo();\n }\n }\n setTimeout(() => {\n // Because glide.js duplicates the div...\n const previews = document.querySelectorAll(`[data-videoId=\"preview_${id}\"]`);\n for (let j = 0; j < previews.length; j++) { /* eslint-disable-line no-plusplus */\n previews[j].classList.add('loaded');\n }\n // document.getElementById(`preview_${id}`).classList.add('loaded');\n }, 1000);\n },\n },\n });\n HeroSlider.players.push(player);\n }\n }\n },\n};\n\nconst heroSlider = () => {\n const slides = document.querySelectorAll('.hero-slider .glide__slides li');\n if (slides.length > 1) {\n HeroSlider.glide = new Glide('.glide', {\n type: 'carousel',\n startAt: 0,\n perView: 1,\n focusAt: 'center',\n gap: 0,\n autoplay: window.autoplayInterval,\n hoverpause: true,\n });\n\n HeroSlider.glide.mount();\n\n HeroSlider.glide.on('run', () => {\n HeroSlider.onUpdate();\n });\n HeroSlider.glide.on('swipe.end', () => {\n if (!HeroSlider.disableAutoplay) {\n HeroSlider.glide.update({ autoplay: false });\n HeroSlider.disableAutoplay = true;\n }\n HeroSlider.onInteract();\n });\n }\n // YT\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n const timer = setInterval(() => {\n try {\n if (YT) { /* eslint-disable-line no-undef */\n clearInterval(timer);\n HeroSlider.addControls();\n }\n } catch (error) {\n // error\n }\n }, 1000);\n // Fix for resizing content with text-zoom (accessibility)\n adjustSlideContentFit();\n};\n\nexport default heroSlider;\n/* eslint-enable no-console */\n","const inPageNav = () => {\n // Fixed navbar behavior\n const body = document.getElementsByTagName('body')[0];\n const headerDiv = document.querySelector('.header');\n const anchors = document.querySelectorAll('.page-anchor');\n const inPageNavDiv = document.querySelector('.in-page-nav');\n const contentDiv = document.querySelector('.content');\n let initLoadHeaderOffset = 24;\n if (headerDiv === null || inPageNavDiv === null) {\n return;\n }\n const inPageNavYPos = inPageNavDiv.offsetTop;\n const updateOffsetHeight = () => {\n let headerFixedOffset = 0;\n let headerOffset = headerDiv.clientHeight;\n // No fixed header on \"mobile\" < 400px\n if (window.innerWidth <= 400) {\n headerOffset = 0;\n }\n const addFixedAtY = inPageNavYPos - headerOffset;\n /* // Check if header is fixed\n const headerStyles = window.getComputedStyle(headerDiv);\n if (headerStyles.getPropertyValue('position').toLowerCase() === 'fixed') {\n addFixedAtY = inPageNavYPos - headerOffset;\n } */\n if (addFixedAtY < window.pageYOffset) {\n headerFixedOffset = Math.min(window.pageYOffset - addFixedAtY, headerDiv.offsetHeight) * -1;\n inPageNavDiv.classList.add('is-fixed');\n inPageNavDiv.style.top = `${headerOffset + headerFixedOffset}px`;\n contentDiv.style.marginTop = `${inPageNavDiv.offsetHeight}px`;\n // console.log(`${headerFixedOffset}px`);\n // Slide up header and in-page nav,\n // so in-page nav is locked to top of screen\n headerDiv.style.top = `${headerFixedOffset}px`;\n } else {\n inPageNavDiv.classList.remove('is-fixed');\n inPageNavDiv.removeAttribute('style');\n contentDiv.removeAttribute('style');\n headerDiv.removeAttribute('style');\n }\n };\n\n // Scrolling & Anchors\n const updateAnchorOffset = () => {\n let offset = 0;\n if (headerDiv) {\n offset = `${(((headerDiv.clientHeight + inPageNavDiv.clientHeight) - initLoadHeaderOffset) * -1)}px`;\n }\n for (let i = 0; i < anchors.length; i++) { /* eslint-disable-line no-plusplus */\n anchors[i].style.top = offset;\n }\n // Reset to 0 after applying on load\n if (initLoadHeaderOffset !== 0) {\n initLoadHeaderOffset = 0;\n }\n };\n\n const getAnchorPosition = (anchor) => {\n const div = document.querySelector(`a[data-anchor-name=\"${anchor}\"]`);\n if (div) {\n if (!inPageNavDiv.classList.contains('is-fixed')) {\n return div.offsetTop - 60;\n }\n return div.offsetTop;\n }\n return 0;\n };\n\n const scrollToPosition = (pos) => {\n window.scrollTo({\n top: pos,\n behavior: 'smooth',\n });\n };\n\n const updateHashAfterDelay = (anchor) => {\n setTimeout(() => {\n window.location.hash = anchor;\n }, 250);\n };\n\n const removeJumpToMenu = () => {\n inPageNavDiv.querySelector('ul').classList.remove('open-jump-to-menu');\n };\n\n const getMenuBounds = (x, y) => {\n const menu = document.querySelector('.open-jump-to-menu');\n if (menu === null) {\n return false;\n }\n const menuH = menu.offsetHeight;\n const menuW = menu.offsetWidth; // 270;\n const menuY = menu.getBoundingClientRect().top;\n if (x > menuW) {\n return true;\n }\n if (y < menuY || y > menuY + menuH) {\n return true;\n }\n return false;\n };\n\n const onBodyClickOffNav = (bodyEvent) => {\n const div = document.querySelector('.open-jump-to-menu');\n if (div === null) {\n return;\n }\n if (getMenuBounds(bodyEvent.clientX, bodyEvent.clientY)) {\n removeJumpToMenu();\n body.removeEventListener('click', onBodyClickOffNav);\n }\n };\n\n window.addEventListener('resize', () => {\n updateAnchorOffset();\n removeJumpToMenu();\n if (window.innerWidth > 768) {\n removeJumpToMenu();\n }\n });\n\n window.addEventListener('scroll', () => {\n updateOffsetHeight();\n // Don't run on \"mobile\" < 400px\n if (window.innerWidth <= 400) {\n return;\n }\n if (window.innerHeight + window.pageYOffset >= document.body.offsetHeight && anchors.length > 0) {\n const anchorName = anchors[anchors.length - 1].getAttribute('data-anchor-name');\n let setAsActive = inPageNavDiv.querySelector(`[href*=\"#${anchorName}\"]`);\n if (setAsActive === null) {\n return;\n }\n setAsActive = setAsActive.parentNode;\n // If nav item is already active, return\n if (setAsActive.classList.contains('active')) {\n return;\n }\n // Remove active state\n const currentActive = inPageNavDiv.querySelector('.active');\n if (currentActive) {\n currentActive.classList.remove('active');\n }\n // Set new active and update hash\n setAsActive.classList.add('active');\n updateHashAfterDelay(anchorName);\n return;\n }\n window.updateAnchorOffset(); // Weird scope issue, so added reference to window\n for (let i = anchors.length - 1; i >= 0; i--) { /* eslint-disable-line no-plusplus */\n if (anchors[i].offsetTop <= window.pageYOffset) {\n const anchorName = anchors[i].getAttribute('data-anchor-name');\n let setAsActive = inPageNavDiv.querySelector(`[href*=\"#${anchorName}\"]`);\n if (setAsActive === null) {\n return;\n }\n setAsActive = setAsActive.parentNode;\n // If nav item is already active, return\n if (setAsActive.classList.contains('active')) {\n return;\n }\n // Remove active state\n const currentActive = inPageNavDiv.querySelector('.active');\n if (currentActive) {\n currentActive.classList.remove('active');\n }\n // Set new active and update hash\n setAsActive.classList.add('active');\n updateHashAfterDelay(anchorName);\n return;\n }\n }\n });\n\n // Load\n updateOffsetHeight();\n updateAnchorOffset();\n window.updateAnchorOffset = updateAnchorOffset;\n // Check to see if url is hashed and if hash matches page anchor\n if (window.location.hash) {\n const anchor = window.location.hash.substr(1);\n const pos = getAnchorPosition(anchor);\n scrollToPosition(pos);\n if (pos !== 0) {\n updateHashAfterDelay(anchor);\n }\n }\n\n // Event handlers\n [].map.call(document.querySelectorAll('a, .in-page-nav-item button'), btn => (\n // [].map.call(inPageNavDiv.querySelectorAll('.in-page-nav-item a, .in-page-nav-item button'), btn => (\n btn.addEventListener('click', (event) => {\n /* if (!btn.classList.contains('anchor-link')) {\n return;\n } */\n // event.preventDefault();\n // Do not attach anchoring to \".jump-to-section\"\n if (btn.parentNode.classList.contains('jump-to-section')) {\n event.preventDefault();\n if (inPageNavDiv.querySelector('ul').classList.contains('open-jump-to-menu')) {\n inPageNavDiv.querySelector('ul').classList.remove('open-jump-to-menu');\n body.removeEventListener('click', onBodyClickOffNav);\n } else {\n inPageNavDiv.querySelector('ul').classList.add('open-jump-to-menu');\n body.addEventListener('click', onBodyClickOffNav);\n }\n return;\n }\n let anchor = btn.getAttribute('href');\n if (anchor) {\n const url = window.location.href;\n const urlMatch = anchor.substring(0, anchor.indexOf('#')) === url.substr(0, url.indexOf('#'));\n if (anchor.indexOf('#') === 0 || (anchor.indexOf('#') !== -1 && urlMatch)) {\n event.preventDefault();\n anchor = anchor.substr(anchor.indexOf('#') + 1);\n const pos = getAnchorPosition(anchor);\n scrollToPosition(pos);\n if (pos !== 0) {\n updateHashAfterDelay(anchor);\n }\n }\n }\n })\n ));\n};\n\nexport default inPageNav;\n","/* eslint-disable no-console */\n// Lazy Load imagesVideosFilter\nconst lazyLoadHandler = () => {\n let lazyloadThrottleTimeout;\n const images = document.querySelectorAll('.lazy');\n\n if (lazyloadThrottleTimeout) {\n clearTimeout(lazyloadThrottleTimeout);\n }\n\n lazyloadThrottleTimeout = setTimeout(() => {\n const scrollTop = window.pageYOffset;\n Array.prototype.forEach.call(images, (img) => {\n if (img.offsetTop < (window.innerHeight + scrollTop)) {\n // IE11 Fix\n if (img.dataset.src) {\n img.src = img.dataset.src;\n } else {\n // Check to see if parent has class of object-fit, and ignore if so\n const classNames = img.parentNode.classList;\n if (classNames.toString().indexOf('object-fit') === -1) {\n img.src = img.getAttribute('data-src-ie11');\n }\n }\n img.classList.remove('lazy');\n img.classList.add('image-loaded');\n }\n });\n\n if (images.length === 0) {\n document.removeEventListener('scroll', lazyLoadHandler);\n window.removeEventListener('resize', lazyLoadHandler);\n window.removeEventListener('orientationChange', lazyLoadHandler);\n }\n }, 20);\n};\n\nconst lazyload = () => {\n if ('IntersectionObserver' in window) {\n const images = document.querySelectorAll('.lazy');\n\n const options = {\n rootMargin: '100px',\n threshold: [0],\n };\n\n const imageObserver = new IntersectionObserver((entries) => {\n Array.prototype.forEach.call(entries, (entry) => {\n if (entry.isIntersecting) {\n const image = entry.target;\n let srcset = image.dataset.src;\n if (!srcset) {\n srcset = image.getAttribute('data-srcset');\n }\n if (srcset !== null) {\n image.srcset = srcset;\n image.classList.remove('lazy');\n image.classList.add('image-loaded');\n imageObserver.unobserve(image);\n }\n }\n });\n }, options);\n\n images.forEach((image) => {\n imageObserver.observe(image);\n });\n } else {\n lazyLoadHandler();\n document.addEventListener('scroll', lazyLoadHandler);\n window.addEventListener('resize', lazyLoadHandler);\n window.addEventListener('orientationChange', lazyLoadHandler);\n }\n};\n\nexport default lazyload;\n/* eslint-enable no-console */\n","const minifiedHeader = (options) => {\n const {\n headerDiv,\n minClass,\n minBrkpt,\n } = options;\n\n const onResize = () => {\n if (window.innerWidth < minBrkpt) {\n headerDiv.classList.remove(minClass);\n }\n };\n\n const onScroll = () => {\n if (window.innerWidth < minBrkpt) {\n return;\n }\n if (headerDiv.offsetHeight <= window.pageYOffset) {\n headerDiv.classList.add(minClass);\n } else {\n headerDiv.classList.remove(minClass);\n }\n };\n\n window.addEventListener('scroll', onScroll);\n window.addEventListener('resize', onResize);\n onScroll();\n onResize();\n};\n\nexport default minifiedHeader;\n","const mobileNav = () => {\n // Elements\n const body = document.getElementsByTagName('body')[0];\n const menuBtn = document.querySelector('.mobile-menu > button');\n const mobileHeaderDiv = document.querySelector('.nav-wrapper-mobile');\n const menuDiv = document.querySelector('.mobile-flyout');\n const mobileSubmenus = document.querySelectorAll('.nav-wrapper-mobile .subnav-toggle-btn');\n // Hide flyout on load\n if (menuDiv !== null) {\n menuDiv.setAttribute('style', 'display:none;');\n }\n\n const toggleMobileSubMenuState = (btn, state) => {\n const parent = btn.parentNode.parentNode;\n if (state) {\n parent.classList.remove('subnav-open');\n btn.setAttribute('aria-expanded', 'false');\n // parent.classList.remove('open');\n } else {\n parent.classList.add('subnav-open');\n btn.setAttribute('aria-expanded', 'true');\n // parent.classList.add('open');\n }\n };\n\n const onBodyClickOffNav = (bodyEvent) => {\n if (bodyEvent.target.classList.contains('mobile-flyout-bg')) {\n toggleMenuState(); /* eslint-disable-line no-use-before-define */\n }\n };\n\n const toggleMenuState = () => {\n if (mobileHeaderDiv.classList.contains('open')) {\n mobileHeaderDiv.classList.remove('open');\n // Toggle aria-expanded attribute\n menuBtn.setAttribute('aria-expanded', 'false');\n // Remove body click event handler\n body.removeEventListener('click', onBodyClickOffNav);\n const timer = setTimeout(() => {\n menuDiv.setAttribute('style', 'display:none;');\n // Close any open submenus, IE 11\n for (let i = 0; i < mobileSubmenus.length; i++) { /* eslint-disable-line no-plusplus */\n toggleMobileSubMenuState(mobileSubmenus[i], true);\n }\n clearTimeout(timer);\n }, 450);\n } else {\n menuDiv.setAttribute('style', 'display:block;');\n // Add body click event handler\n body.addEventListener('click', onBodyClickOffNav);\n const timer = setTimeout(() => {\n mobileHeaderDiv.classList.add('open');\n // Toggle aria-expanded attribute\n menuBtn.setAttribute('aria-expanded', 'true');\n clearTimeout(timer);\n }, 150);\n }\n };\n // Add events\n // Open Mobile Menu\n if (menuBtn) {\n menuBtn.addEventListener('click', () => {\n toggleMenuState();\n });\n }\n // Toggle Mobile Submenus\n if (mobileSubmenus) {\n [].map.call(mobileSubmenus, btn => btn.addEventListener('click', (event) => {\n event.preventDefault();\n toggleMobileSubMenuState(btn, btn.parentNode.parentNode.classList.contains('subnav-open'));\n }));\n }\n};\n\nexport default mobileNav;\n","const promoMessage = () => {\n const promo = document.querySelector('.brand-promo');\n const promoBtn = document.querySelector('.promo-close-btn');\n const ssVar = 'horizons_promo';\n const { sessionStorage } = window;\n\n const showMessage = () => {\n if (!sessionStorage.getItem(ssVar)) {\n promo.classList.remove('hidden');\n }\n };\n\n const onMessageClose = (event) => {\n if (!sessionStorage.getItem(ssVar)) {\n event.preventDefault();\n sessionStorage.setItem(ssVar, 'dismissed');\n promo.classList.add('hidden');\n promoBtn.removeEventListener('click', onMessageClose);\n }\n };\n\n if (promo !== null) {\n document.addEventListener('DOMContentLoaded', showMessage);\n promoBtn.addEventListener('click', onMessageClose);\n }\n};\n\nexport default promoMessage;\n","/* eslint-disable no-console */\n\nconst tabbedContent = () => {\n const tabbedContentList = document.querySelectorAll('.tabbed-content-block');\n if (tabbedContentList.length === 0) {\n return;\n }\n const tabbedNavList = document.querySelector('.tabbed-nav ul');\n const listOpenClass = 'open-tabbed-nav-menu';\n const selectedNavItem = tabbedNavList.querySelector('.selected-nav-item button');\n\n const addNavEventHandlers = (block) => {\n [].map.call(block.querySelectorAll('.tabbed-nav-item button'), btn => (\n btn.addEventListener('click', () => {\n // Remove existing active nav state\n block.querySelector('.tabbed-nav-item.active').classList.remove('active');\n // Add active state\n btn.parentNode.classList.add('active');\n // Hide existing tabbed content\n let content = block.querySelector('.tabbed-content.active');\n if (content) {\n content.classList.remove('active');\n }\n // Show related content\n const attr = btn.getAttribute('data-tabbednav');\n content = block.querySelector(`[data-tabbedcontent=\"${attr}\"]`);\n if (content) {\n content.classList.add('active');\n }\n if (content.querySelector('.grid-slider') !== null) {\n // Run resize?\n window.dispatchEvent(new Event('resize')); /* eslint-disable-line no-undef */\n if (typeof (Event) === 'function') {\n // modern browsers\n window.dispatchEvent(new Event('resize')); /* eslint-disable-line no-undef */\n } else {\n // for IE and other old browsers\n // causes deprecation warning on modern browsers\n const evt = window.document.createEvent('UIEvents');\n evt.initUIEvent('resize', true, false, window, 0);\n window.dispatchEvent(evt);\n }\n }\n })\n ));\n };\n\n const getActiveNavLabel = () => (\n tabbedNavList.querySelector('.tabbed-nav-item.active button').innerHTML\n );\n\n const updateTabbedNavList = () => {\n if (window.innerWidth < 768 && !tabbedNavList.classList.contains(listOpenClass)) {\n tabbedNavList.classList.add(listOpenClass);\n // Set selected nav item to \"Select Section\"\n selectedNavItem.innerHTML = 'Select Section';\n } else {\n tabbedNavList.classList.remove(listOpenClass);\n // Set selected nav to name of active section\n selectedNavItem.innerHTML = getActiveNavLabel();\n }\n };\n\n window.addEventListener('resize', () => {\n if (window.innerWidth >= 768 && tabbedNavList.classList.contains(listOpenClass)) {\n tabbedNavList.classList.remove(listOpenClass);\n }\n });\n\n [].map.call(document.querySelectorAll('.tabbed-nav--more'), btn => (\n btn.addEventListener('click', () => {\n btn.parentNode.querySelector('.tabbed-nav-inner').scrollLeft += 50;\n })\n ));\n for (let i = 0; i < tabbedContentList.length; i++) { /* eslint-disable-line no-plusplus */\n addNavEventHandlers(tabbedContentList[i]);\n }\n // Event handler for mobile/dropdown\n tabbedNavList.addEventListener('click', () => {\n updateTabbedNavList();\n });\n selectedNavItem.innerHTML = getActiveNavLabel();\n};\n\nexport default tabbedContent;\n/* eslint-enable no-console */\n","const tabRole = () => {\n function changeTabs(e) {\n const { target } = e;\n const parent = target.parentNode;\n const grandparent = parent.parentNode;\n const currentTabs = grandparent.querySelectorAll('[aria-controls]');\n for (let i = 0; i < currentTabs.length; i++) { /* eslint-disable-line no-plusplus */\n // Remove all current selected tabs\n currentTabs[i].setAttribute('aria-selected', false);\n // Hide all tab panels\n document.getElementById(currentTabs[i].getAttribute('aria-controls')).setAttribute('hidden', true);\n }\n // Set this tab as selected\n target.setAttribute('aria-selected', true);\n // Show the selected panel\n document.getElementById(target.getAttribute('aria-controls')).removeAttribute('hidden');\n }\n\n const addTablistEvents = (tabList) => {\n const tabs = tabList.querySelectorAll('[role=\"tab\"]');\n for (let i = 0; i < tabs.length; i++) { /* eslint-disable-line no-plusplus */\n tabs[i].addEventListener('click', changeTabs);\n }\n // Enable arrow navigation between tabs in the tab list\n let tabFocus = 0;\n tabList.addEventListener('keydown', (e) => {\n // Move right\n if (e.keyCode === 39 || e.keyCode === 37) {\n tabs[tabFocus].setAttribute('tabindex', -1);\n if (e.keyCode === 39) {\n tabFocus++; /* eslint-disable-line no-plusplus */\n // If we're at the end, go to the start\n if (tabFocus >= tabs.length) {\n tabFocus = 0;\n }\n // Move left\n } else if (e.keyCode === 37) {\n tabFocus--; /* eslint-disable-line no-plusplus */\n // If we're at the start, move to the end\n if (tabFocus < 0) {\n tabFocus = tabs.length - 1;\n }\n }\n tabs[tabFocus].setAttribute('tabindex', 0);\n tabs[tabFocus].focus();\n }\n });\n };\n\n // init\n const tabList = document.querySelectorAll('[role=\"tablist\"]');\n // Add a click event handler to each tab\n for (let i = 0; i < tabList.length; i++) { /* eslint-disable-line no-plusplus */\n addTablistEvents(tabList[i]);\n }\n};\n\nexport default tabRole;\n","function closeModal(modal, largeImg, imgCaption) {\n // toggle off the slide in classes;\n largeImg.classList.toggle('slide-in-right');\n imgCaption.classList.toggle('slide-in-left');\n // toggle on the slid out classes\n largeImg.classList.toggle('slide-out-right');\n imgCaption.classList.toggle('slide-out-left');\n // delay the modal-hidden toggle so the animations will play\n setTimeout(() => { modal.classList.toggle('modal-hidden'); }, 300);\n}\n\nfunction openModal(modal, largeImg, imgCaption) {\n if (modal.classList.contains('modal-hidden')) {\n if (largeImg.classList.contains('slide-out-right')) {\n // toggle off the slide out classes\n largeImg.classList.toggle('slide-out-right');\n imgCaption.classList.toggle('slide-out-left');\n }\n modal.classList.toggle('modal-hidden');\n largeImg.classList.toggle('slide-in-right');\n imgCaption.classList.toggle('slide-in-left');\n }\n}\n\nfunction buildGridGallery() {\n [].map.call(document.querySelectorAll('.grid-item.pop-up'), (gridItem) => {\n const modal = gridItem.nextElementSibling;\n // console.log(modal);\n const largeImg = modal.querySelector('.large-image');\n const imgCaption = modal.querySelector('.image-caption');\n const closeBtn = modal.querySelector('.close-button');\n const backBtn = modal.querySelector('.back-btn');\n\n gridItem.addEventListener('click', () => {\n openModal(modal, largeImg, imgCaption);\n });\n\n closeBtn.addEventListener('click', () => {\n closeModal(modal, largeImg, imgCaption);\n });\n\n backBtn.addEventListener('click', () => {\n closeModal(modal, largeImg, imgCaption);\n });\n\n document.addEventListener('keydown', (e) => {\n if (!modal.classList.contains('modal-hidden') && e.key === 'Escape') {\n closeModal(modal, largeImg, imgCaption);\n }\n });\n });\n}\n\nexport default buildGridGallery;\n"],"sourceRoot":""}