{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/js/common/constants/events.js","webpack:///./src/js/common/constants/class-names.js","webpack:///./src/js/common/constants/selectors.js","webpack:///./src/js/common/constants/misc.js","webpack:///./src/js/common/utils/queryselectorparents.js","webpack:///./src/js/common/utils/serializeform.js","webpack:///./src/js/common/utils/checkemail.js","webpack:///./src/js/app/atoms/Revealer.js","webpack:///./src/js/templates/partials/wishlist/items.hbs","webpack:///./src/js/app/atoms/Forms.js","webpack:///./src/js/templates/partials/subscribe.hbs","webpack:///./src/js/app/modules/Checkout.js","webpack:///./src/js/app/modules/checkout/Account.js","webpack:///./src/js/app/modules/checkout/Shipping.js","webpack:///./src/js/app/modules/checkout/Billing.js","webpack:///./src/js/app/modules/checkout/Totals.js","webpack:///./src/js/templates/partials/checkout/totals.hbs","webpack:///./src/js/app/modules/checkout/Review.js","webpack:///./src/js/app/modules/CoveoSearch.js","webpack:///./src/js/app/modules/ProductBasics.js","webpack:///./src/js/app/modules/ProductGallery.js","webpack:///./src/js/templates/partials/cart/items.hbs","webpack:///./src/js/templates/partials/cart/totals.hbs","webpack:///./src/js/templates/partials/cart/modal.hbs","webpack:///./src/js/templates/partials/cart/options.hbs","webpack:///../_shared/src/js/app/modules/HeroBanner.js","webpack:///../_shared/src/js/app/modules/Slider.js","webpack:///./src/js/common/services/keyupservice.js","webpack:///./src/js/common/services/resizeservice.js","webpack:///./src/js/common/services/scrollservice.js","webpack:///../_shared/src/js/common/services/custombuttonservice.js","webpack:///./src/js/common/services/index.js","webpack:///./src/js/common/utils/tabs.js","webpack:///./src/js/common/utils/tooltips.js","webpack:///./src/js/templates/partials/articletilesitems.hbs","webpack:///./src/js/templates/partials/predictiveresults.hbs","webpack:///./src/js/templates/partials/recentsearches.hbs","webpack:///./src/js/templates/partials/product/shipping.hbs","webpack:///./src/js/templates/partials/product/details.hbs","webpack:///./src/js/templates/partials/producttiles.hbs","webpack:///./src/js/templates/partials/productfilters.hbs","webpack:///./src/js/common/utils/getjson.js","webpack:///./src/js/templates/partials/productsorter.hbs","webpack:///./src/js/templates/partials/basicprofile.hbs","webpack:///./src/js/templates/partials/accountprofile.hbs","webpack:///./src/js/templates/partials/searchproducts.hbs","webpack:///./src/js/templates/partials/searcharticles.hbs","webpack:///./src/js/app/modules/Accordion.js","webpack:///./src/js/app/modules/ArticleTiles.js","webpack:///./src/js/app/modules/BackgroundVideo.js","webpack:///./src/js/app/modules/ContentPromo.js","webpack:///./src/js/app/modules/CreateAccount.js","webpack:///./src/js/app/modules/Difference.js","webpack:///./src/js/app/modules/EmailSignup.js","webpack:///./src/js/app/modules/FeaturedImages.js","webpack:///./src/js/app/modules/FeaturedProducts.js","webpack:///./src/js/app/atoms/Flipper.js","webpack:///./src/js/app/modules/Footer.js","webpack:///./src/js/common/utils/encode.js","webpack:///./src/js/common/utils/search.js","webpack:///./src/js/app/modules/SearchModal.js","webpack:///./src/js/app/modules/SearchModalCoveo.js","webpack:///./src/js/app/modules/GlobalNavigation.js","webpack:///./src/js/app/modules/InlineVideo.js","webpack:///./src/js/app/modules/ModalVideo.js","webpack:///./src/js/common/utils/getposition.js","webpack:///./src/js/app/modules/ProductFilters.js","webpack:///./src/js/app/modules/Profile.js","webpack:///./src/js/app/modules/RetailList.js","webpack:///./src/js/app/modules/RetailLocation.js","webpack:///./src/js/common/utils/urlprotocol.js","webpack:///./src/js/app/modules/RetailLocator.js","webpack:///./src/js/app/modules/Search.js","webpack:///./src/js/common/utils/queryparam.js","webpack:///./src/js/app/modules/Share.js","webpack:///./src/js/app/modules/cart/CartItemModal.js","webpack:///./src/js/app/modules/cart/ReserveItemModal.js","webpack:///./src/js/app/modules/cart/CartItem.js","webpack:///./src/js/app/modules/cart/ShoppingCart.js","webpack:///./src/js/app/modules/Signin.js","webpack:///./src/js/app/modules/SitecoreForm.js","webpack:///./src/js/app/modules/StaticContent.js","webpack:///./src/js/app/modules/ThankYou.js","webpack:///./src/js/app/modules/cart/Wishlist.js","webpack:///./src/js/app/ModuleMap.js","webpack:///./src/js/app/index.js","webpack:///./src/js/app/atoms/Configurator.js","webpack:///./src/js/app/modules/ProductReserve.js","webpack:///./src/js/common/utils/debounce.js","webpack:///./src/js/common/utils/notification.js","webpack:///../_shared/src/js/common/constants/events.js","webpack:///../_shared/src/js/common/constants/selectors.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","EVENTS","ANIMATIONEND","BEFOREUNLOAD","BLUR","CHANGE","CLICK","DOMLOADED","FOCUS","GMAPS_BOUNDSCHANGED","GMAPS_DRAGEND","GMAPS_IDLE","GMAPS_PLACECHANGED","GMAPS_ZOOMCHANGED","INPUT","INFOTRIGGER","KEY_DOWN","KEY_UP","LOAD","LOADED_METADATA","MESSAGE","MOUSEDOWN","MOUSEUP","MOUSEMOVE","MOUSEOVER","MOUSEOUT","PAGESHOW","PLAYING","RESET","RESIZE","SCROLL","SIMULATED_CLICK","SUBMIT","SWIPE_DOWN","SWIPE_UP","TOUCH_END","TOUCH_MOVE","TOUCH_START","TRANSITIONEND","WHEEL","CLASS_NAMES","BASICS_DETAILS","BASICS_DETAILS_HEADER","BASICS_SPOTLIGHT","BANNER_CLOSE","BOTTOM","CLOSING","FIXED","HAMBURGERLINK","HIDDEN","MODAL","MODAL_BG_BLACK","MODAL_BG_PAPER","MODAL_BG_WHITE","MODAL_CONTENT","MODAL_INNER","MODAL_VISIBLE","MODALSCROLLBLOCK","NOTIFICATION","OPEN","SEARCHCONTAINER","SEARCH_MODAL","SELECTED","SELECT_MENU","SELECT_REPLACED","SELECT_TRIGGER","SHOW","TYPEFACE_BLOCK","TYPEFACE_SCRIPT","VIDEO_CONTAINER","VIDEO_HIDE","VIDEO_JS","SELECTORS","ACCORDION_HEAD","ACCORDION_COPY","ANCHOR","ANCHOR_WITH_HREF","BODY","BREADCRUMBS","BUTTON","CONFIG_FORM","DATA_VALID","DATA_INVALID","DIFFERENCE_IMAGE","DIFFERENCE_IMAGE_WRAPPER","DIFFERENCE_IMAGE_ALT","DIFFERENCE_IMAGE_SRC","DIFFERENCE_SLIDER","DIFFERENCE_ITEMS","ENGRAVABLE","FIELDSET","FLIPPER","FLIPPER_CONTAINER","FORM","GALLERY_BACKGROUNDS","GALLERY_DATA","GALLERY_IMAGE","GALLERY_MAGNIFIER","GALLERY_THUMBNAILS","GOOGLE_MAP","GOOGLE_PLACES","HEADER","HTML","IMAGE","INPUT_FIELD","INVALID","LIST_ITEM","LOADMODULE","LOAD_MORE","NAV","OGDESC","OGTITLE","OGURL","OPTGROUP","PARAGRAPH","PASSWORD_SYNC","PICKUPSTORE","REFRESH_MAP","RESULTS_CONTAINER","RETAILERS_LIST","RETAILER_SEARCH","RETAILER_MESSAGE","RETAILER_GIFT","RETAILER_GIFT_MESSAGE","RETAILER_GIFT_TGT","RETAILER_GIFT_MESSAGE_TGT","SEARCH","SEARCH_LOADING","SEARCH_SUGGESTIONS","SET_PREFERRED","SHARE_CONTAINER","SHARE_TOGGLE","SHARE_ICONS","SLIDER","SLIDER_WRAPPER","SLIDER_ITEM","SLIDER_BTN_LEFT","SLIDER_BTN_RIGHT","SPAN","STATIC_PRODUCT_CTA","STORE_DETAILS","SVG","TAB_LIST","TABPANEL","TOOLTIP","TOOLTIP_LINK","TYPEFACE","UNORDERED_LIST","VIDEO_PLAY","VIDEO_PLAYER","SITECORE_FORM","MISC","ARIA_CONTROLS","ARIA_EXPANDED","ARIA_HIDDEN","ARIA_SELECTED","AUTOCOMPLETE_ENDPOINT","AUTOCOMPLETE_ENDPOINT_LOCAL","CHECKOUT_ENDPOINT","CSC","CSC_MESSAGE","DEFAULT","DEV_ENDPOINT","DEV_DOMAIN","EMAIL_INUSE","EXAMPLE_ENDPOINT","FALSE","ID","LOCALHOST","MAP_MARKER","HREF","POSTCODE_LOOKUP_ENDPOINT","PROFILE_ENDPOINT","RETAILERS_ENDPOINT","SEARCH_DEFAULT","TRUE","VIDEO_ID","ZIP_REGEX","queryselectorparents","element","selector","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","this","document","ownerDocument","querySelectorAll","item","parentNode","serializeform","form","obj","elements","type","checked","JSON","stringify","checkemail","email","test","Revealer","init","$el","$","setupDefaults","addListeners","dom","$revealer","find","each","indexedDB","revealer","is","on","toggleRevealer","e","preventDefault","target","event","toggleClass","Handlebars","template","container","depth0","helpers","partials","blockParams","depths","stack1","alias1","lambda","alias2","escapeExpression","alias3","nullContext","lookupProperty","parent","propertyName","program","noop","Forms","blur","keyup","inputfields","inputlist","textareas","inputs","concat","addEventListener","_checkInput","_checkEmail","_syncPassword","getAttribute","_surfaceConstraint","classList","contains","_getPostalCode","_checkCCType","_checkCCValid","add","remove","querySelector","id","constraintLabel","constraintLabelCopy","charsEntered","charsRemaining","innerHTML","postcode","zipUrl","dataset","citySelector","city","stateSelector","state","theTarget","url","getJSON","then","theForm","FieldErrors","setErrors","_setValue","field","cc","CardValidate","getType","valid","isValid","errorLabel","customizeSelects","selects","getElementsByTagName","that","hiddenfield","createElement","setAttribute","options","insertBefore","trigger","_toggleMenu","appendChild","createTextNode","text","replaceUL","k","newli","newa","_setFieldValue","toggle","hiddenfieldname","formatErrors","errors","assign","keys","filter","map","FieldId","ErrorText","input","label","findLabelForControl","clearErrors","forEach","el","idVal","labels","htmlFor","setInputValues","values","Value","Checkout","$element","config","endpoint","cartEndpoint","zip","initialZip","engraving","disclaimer","engravingDisclaimer","engravingLabel","checkoutCta","Error","tabs","tooltips","bindElements","bindEvents","createSections","$accountTab","$shippingTab","$billingTab","$reviewTab","$totals","$editLinks","$loading","$editLink","reopenSection","Promise","all","getData","getCart","cart","totals","Totals","shipping","Shipping","nextStep","gotoStep","nextStepEndpoint","accordionitems","account","Account","billing","Billing","review","Review","$totalsBar","setCurrentTab","updateTotals","closeCurrentTab","ajaxCalls","updateAllStepsData","updateData","bindTotalsCta","checkoutSections","children","section","index","tab","tabHead","tabBody","headcopy","statedisplay","editBtn","tabList","tabIndex","indexOf","removeClass","$newUserForm","$newUserFormInitialState","$newUserFormEmailInUse","$newUserFormResetBtn","$newUserFormGuestBtn","$newUserFormSignBtn","$signForm","$forgotForm","onSubmitForm","onNewUserFormReset","onContinueGuest","onContinueSignIn","currentTarget","Success","userEmail","parse","MoveToNextStep","setGuestEmail","Message","click","msgsuccess","emailInput","reset","setInitialValues","$addressForm","$addressLoader","$storeForm","$storeLoader","$zip","$pickupDate","$shippingZip","$shippingGuestEmail","$storeZip","$storeGuestEmail","addressUrl","storeUrl","handleSubmitAddress","handleSubmitStore","stepData","pickupDate","innerText","showAddressLoader","handleSuccessAddress","res","hideAddressLoader","$formError","showStoreLoader","handleSuccessStore","hideStoreLoader","guestEmail","$form","$billingAddress","$billingAddressFieldset","$securityCodeInput","$paypalSaveContinueBtn","onSaveContinuePaypal","billingAddress","fieldsData","totalsTemplate","postUrl","$wrapper","summarypage","orderSummaryUrl","$btn","$billingForm","onPlaceOrder","disabled","removeAttribute","paymentType","location","OrderGuid","CoveoSearch","_initColorSwatches","Coveo","setTimeout","_extendCoveoPLP","_extendHideSearchModal","previousTab","root","modalContent","closeModal","$$","args","hasClass","query","SearchEndpoint","endpoints","setRequestModifier","params","requestData","groupBy","filterFacetCount","results","groupByResults","group","Field","includes","sort","a","b","Number","split","replace","_addMobileFacetButtons","parents","image","price","previousSrp","attr","clearButton","applyButton","buttonsContainer","append","prepend","_dismissDropdown","_clearAllFilters","ProductBasics","bottom","detailsClass","detailsHeaderClass","fixed","modal","modalBgBlack","modalBgPaper","modalBgWhite","modalInner","modalVisible","spotlightClass","anchor","body","galleryBackgrounds","galleryData","galleryImage","galleryMagnifier","galleryThumbnails","listItem","shippingTemplate","require","detailsTemplate","arr","param","decodeURIComponent","getUrlParams","search","initialParams","qsLength","onChange","configOptions","onLoad","productUrl","disableSubmit","spinner","hideElement","contactUsMessage","productName","productSKU","sku","formSKU","productPrice","fullPrice","productStartingAtLabel","showElement","productPriceLabel","previousSRPPrice","enablePdpStrikethrough","updatePrice","productShippingTab","updateShippingInfo","productDetailsTab","updateProductDetails","reserve","submit","enableSubmit","checkSku","checkReserve","showAction","wishlist","share","hideAction","isAddedToWishList","checkActions","productGallery","images","setImages","checkImages","defaultValues","dv","fieldId","Configurator","updateDefaultValues","updateDefaultValuesNew","path","pathname","history","pushState","updateUrl","reserveWrapper","details","formData","configForm","settings","displays","reduce","acc","getDisplayValue","chatMessageLabel","productInfoLabel","priceLabel","getActiveImage","productReserve","update","updateReserve","updateOnLoad","miniCart","configFormUrl","productPriceHelp","productStartingAtHelp","productPriceWrapper","continueShopping","getElementById","cartModal","viewCart","gallery","productInput","handleConfigFormSubmit","handleReserve","handlePricing","handleAddToCart","handleContinueShopping","handleViewCart","_initBasics","VanillaModal","class","onClose","resetForm","clickOutside","ProductReserve","onSuccess","action","updateMiniCart","catch","response","NumberOfItems","documentElement","open","hof","closeReserveModal","close","href","loadPrimaryGalleryImage","ProductGallery","onZoomIn","setVisible","isView360Loaded","viewerScript","thumbnails","thumbnailWrapper","primary","primaryWrapper","clone","cloneNode","initThumbnails","initPrimary","nextEl","prevEl","buttons","thumbnailsSwiper","Swiper","direction","slidesPerView","navigation","thumb","slides","button","setThumbnailButtonActive","btn","handleThumbnailClick","primaryButtons","handlePrimaryClick","primarySwiper","preloadImages","lazy","loadOnTransitionStart","effect","fadeEffect","crossFade","pagination","clickable","transitionStart","handlePrimaryTransactionStart","transitionEnd","handlePrimaryChange","currentButton","currentIndex","parseInt","slideTo","undefined","loadPrimaryModalImage","activeIndex","src","slide","modalImage","view360","loadView360","thumbnailsSlides","getSlides","primarySlides","destroy","join","itemClass","primaryItems","outerHTML","primaryImage","initView360","script","onload","head","inject_orbitvu","api","scene","set_orbitvu_api","orbitvu","addCallback","orbitvu_initialized","disable_mousewheel","setScene","zoomMul","viewer_center_change","currentScene","getScene","calculate_position","x","centerX","y","centerY","panX","panY","viewer_zoom_in","ovus_folder","content2","width","height","teaser","preload_width","preload_height","hires_forced_zoom","viewer_api_init","frame_rate","vmove","mousewheel","fullscreen_enabled","force_html5","doubletap_mode","hooks","helperMissing","alias4","HeroBanner","video","HEROBANNER_VIDEO","playButton","HEROBANNER_VIDEO_PLAY","volumeButton","HEROBANNER_VIDEO_VOLUME","paused","ended","play","addClass","pause","muted","volume","Slider","_self","$paginationContainer","$pagination","$slides","$previousButton","$nextButton","sliderFrame","autoplayAttribute","autoplayDelay","autoplay","delay","slidesPerViewAttribute","breakpoints","numBreakpoints","incrementDivisor","increment","paginationClass","Math","random","toString","substr","adjustControlPosition","Array","from","matchMedia","css","contentWrappers","flat","heights","wrapper","previousElementSibling","offsetHeight","sumHeights","averageHeight","paginationOffset","navigationHeight","$slider","loop","watchOverflow","slideClass","wrapperClass","pauseOnMouseEnter","some","getId","KeyUpService","onKeyUp","charCode","keyCode","callbacks","callback","removeCallback","ResizeService","debounce","onResize","ScrollService","onScroll","CustomButtonService","colorToRGB","color","isHexColor","g","colorName","div","style","rgb","getComputedStyle","removeChild","colorNameToRGB","match","exec","className","isDark","groups","bgColor","luminance","console","log","getIsDark","textColor","borderColor","setProperty","activeTextColor","activeBgColor","activeBorderColor","Services","tablinks","tabTriggerHandler","tablink","tabWrapper","ourTablinks","ourTabpanels","showHidePanels","tooltipContainer","_returnTooltipShowHandler","_returnTooltipHideHandler","tooltip","bounds","getBoundingClientRect","viewportWidth","offsetWidth","right","_checkPosition","_showTooltips","_hideTooltips","helper","requestHeader","resolve","reject","xhr","XMLHttpRequest","setRequestHeader","responseType","status","onerror","send","Accordion","accordionHeads","_toggleAccordion","hash","copy","onclick","ArticleTiles","articlesTemplate","moreForms","_moreArticles","formtype","productServiceURL","newArticlesList","more","insertAdjacentHTML","BackgroundVideo","initVideo","videojs","ready","ContentPromo","slider","swiper","nextArrow","prevArrow","CreateAccount","creator","confirmation","creatorForm","accountcreated","Difference","resizeTimer","sliderEl","differenceItemLinks","clearTimeout","innerWidth","enableSlider","_switchDifference","opens","imgTarget","imgTargetWrapper","imgTargetSrc","imgTargetAlt","scrollbar","hide","EmailSignup","newsletterForm","sendForm","serviceURL","promocode","findLabelForEmailControl","clearEmailErrors","FeaturedImages","sliders","FeaturedProducts","Flipper","flipper","flippercontainer","flippers","_flipItems","flipperscontainer","flipperscount","turnOn","triggerOn","Footer","countrySelect","countryRedirect","specialCharsRegex","whitespacesRegexG","plusRegexG","encodeSpecialCharacters","str","encodeSpaces","term","decodeSpaces","COOKIE","getRecentSearches","recentSearches","cookie","whitespacesRegex","SearchModal","$container","$input","$results","$recentSearches","$recentSuggestions","$popularSearches","$popularSuggestions","resultsTemplate","recentTemplate","predictiveSearch","handleSubmit","frequentQueriesUrl","searchPageUrl","updatePopularSearches","updateRecentSearches","focus","list","html","bindClickSearchSuggestions","trim","frequentQueries","suggestedTerms","getSuggestedTerms","updateResults","getFequentQueries","hideLoading","occurrences","match1","match2","suggestion","highlight","pos","self","prevIndex","regex","array","lastIndex","len","escapedWord","word","RegExp","handleSuggestionClick","redirectToSearchPage","SearchModalCoveo","host","GlobalNavigation","closing","hamburger","scrollblock","searchcontainer","bodyNavOpenClass","viewport","header","hamburgerlink","getElementsByClassName","_toggleLockBody","_toggleHamburger","searchanchor","_launchSearchModal","hofSiteSearch","isCoveoSearch","thebody","_onKeyUp","arguments","onOpen","display","CoveoBoxes","inputModal","InlineVideo","videos","ModalVideo","poster","setup","videocontainer","player","videobuttons","videoContainer","launchModal","thisButton","buildVideo","onBeforeOpen","startVideo","destroyVideo","thisVideo","Date","getUTCMilliseconds","videoPlayer","dispose","getPosition","xPosition","yPosition","offsetLeft","scrollLeft","clientLeft","offsetTop","scrollTop","clientTop","offsetParent","ProductFilters","_initSort","sorterlinks","sorterholder","_filterHandlerSetter","oldSelected","_updateProductInfo","_updateFilters","formCtas","_toggleButtonState","_toggleFilterState","_filterHandler","loading","newProductFilters","productfilterstemplate","filterholder","newProductSorter","productsortertemplate","newProductList","productlisttemplate","productList","filtertoggle","filtersection","formCtasHolder","filtersPosition","sorterPosition","filtersHeight","clientHeight","Profile","ajaxUpdateForms","subscribeTemplate","unsubscribeTemplate","basicsTemplate","accountTemplate","registerHelper","equal","lvalue","rvalue","inverse","fn","string","replaced","replacement","configObject","checkoutServiceURL","parentWrapper","basics","userdata","birthmonth","birthday","birthyear","gender","tpl","replaceTarget","RetailList","retailerData","retailerslist","retailerMessage","pickupStore","zipStore","searchform","searchUrl","searchinput","giftboolean","giftmessage","loader","initSearchBox","bool","msg","boolTgt","msgTgt","ziptest","getRetailerData","buildRetailerList","retailers","Retailers","message","hasCSC","numRetailers","retailer","csc","Postal","Name","Distance","Address1","Address2","possibleStores","storeID","_storeSelectorSetter","selectStore","_storeSelector","storeRetailerData","getURL","rID","allStores","RetailLocation","userPosition","lat","lng","err","markers","retailLocations","infoWin","parseFloat","loadMap","gmapKey","loadGoogleMapsAPI","googleMaps","initMap","error","mapcenter","mapcontainer","styledMapType","google","maps","StyledMapType","Map","zoom","center","mapTypeControl","scaleControl","streetViewControl","rotateControl","fullscreenControl","mapTypeControlOptions","mapTypeIds","mapTypes","set","setMapTypeId","getCenter","addListener","setCenter","setRetailerMarker","retailerImg","retailerPlace","LatLng","Marker","icon","size","Size","Point","scaledSize","position","urlProtocol","RetailLocator","storesBatch","storesMultiple","listenForDrag","HTMLString","fbretailer","pretailer","refreshMap","refreshButton","radius","csccta","cscmessage","callRetailerText","emailRetailerText","getDirectionsText","setPreferredStoreText","visitWebsiteText","isLoggedIn","setPreferredStoreUrl","libraries","geolocate","toggleRefreshOption","createInfoWindow","buildSearchBox","callDealerPreference","Event","onInfoTrigger","resetAndReload","navigator","geolocation","getCurrentPosition","coords","latitude","longitude","user","setPosition","createGeoMarker","SymbolPath","CIRCLE","scale","fillColor","fillOpacity","strokeColor","strokeOpacity","InfoWindow","populateInfoWindow","urlString","Url","visitWebsite","emailString","Email","emailRetailer","isPreferredStore","setPreferredStore","hoursTempate","hours","cur","hoursopen","callRetailer","Phone","getDirections","buildMapsURL","setContent","openRetailer","autocomplete","places","Autocomplete","enableEnterKey","setBounds","getBounds","place","getPlace","geometry","_addEventListener","attachEvent","addEventListenerWrapper","listener","_listener","suggestion_selected","which","prID","buildRetailerItem","ceil","fallbackRetailer","preferredLinks","infoTriggerHandler","preferred","cta","retailerClass","phoneString","setPreferred","hoursTemplate","initPreferredRetailer","preferredArray","IsPreferredStore","setPreferredRetailer","Latitude","Longitude","addRetailerMarkers","setMap","LatLngBounds","retailerRadius","HOFStore","extend","fallbackRetailMarker","fitBounds","addListenerOnce","Search","q","getResults","$searchForm","$searchInput","$noresults","$suggested","$products","$articles","productsTemplate","productResults","Results","articleResults","getQueryParam","onSuggestedClick","searchByTerm","showSection","hideSection","checkResults","products","articles","productItems","items","articleItems","$section","page","$list","$viewAll","$viewMore","viewMoreUrl","viewAllUrl","viewAll","viewMore","getMoreData","addMore","showLoading","addAll","Share","shareToggle","_toggleShare","CartItemModal","orderLineId","$modalContent","cartItemModalTemplate","getCartItem","getItem","showLoader","createModalOptions","$options","cartOptionsModalTemplate","$cta","ctaTemplate","initConfigurator","hideLoader","option","handleOptionChange","getProduct","handleProductInfo","$image","$productName","$price","$description","$sku","$submit","description","wishlistItem","updateCtaOnClick","chatOnClick","format","showSubmitLoader","updateItem","handleUpdateSuccess","success","onUpdated","hideSubmitLoader","getLoading","ReserveItemModal","getWishlistItem","selectedValues","CartItem","editable","reserveModal","$edit","$move","$reserve","$remove","$engravable","$typefaces","handleMove","handleEdit","handleRemove","$typeface","setTypeface","moveItem","removeItem","handleMoveSuccess","handleRemoveSuccess","onMoved","onRemoved","ShoppingCart","cartSettings","cartData","handleModalOpen","handleModalClose","handleReserveSuccess","registerHelpers","showCartLoader","hideCartLoader","addEventListeners","showWishlistLoader","getWishlist","hideWishlistLoader","$miniCart","$cart","$wishlist","$totalsZip","$totalsInput","$totalsZipLabel","$cartLoader","$cartListing","$cartItems","$cartTotals","$cartTotalsItems","$emptyCart","$wishlistLoader","$wishlistItems","$emptyWishlist","$shareWishlist","newZip","getCurrentZip","setCartData","updateCart","checkCart","setWishlistData","updateWishlist","checkWishlist","cartItems","cartItemsTemplate","cartTotals","cartTotalsTemplate","updateWishlistItem","removeWishlistItem","wishlistTemplate","wishlistData","initCart","initTotals","initWishlist","$items","updateCartItem","removeCartItem","getProductInfo","moveCartItem","handleCartItemUpdated","handleCartItemMoved","handleCartItemRemoved","$item","$zipForm","$cartForm","handleZipSubmit","handleCartSubmit","$promoCodeToggle","$promoCodeButton","$removePromoCodeButton","handleTogglePromoCode","handleAddPromoCode","handleRemovePromoCode","moveWishlistItem","handleWishlistItemUpdated","handleWishlistItemMoved","handleWishlistItemRemoved","$check","$radio","engravingText","engravingStyle","showTotalsLoader","submitCart","redirectToCheckout","hideTotalsLoader","$error","updateZip","handleZipSuccess","$field","promotionCode","addPromoCode","handleAddPromoCodeSuccess","discounts","PromotionCode","PromotionCodeDescription","removePromoCode","handleRemovePromoCodeSuccess","Signin","swap","newCust","signUpButtons","inUseButtons","setDifferentEmail","SitecoreForm","_wrapInput","errorSpan","nextElementSibling","nodeName","_addCheckMark","span","nextSibling","_wrapButton","_wrapInputs","StaticContent","productCtaSelector","productCtaLink","ThankYou","printLink","print","Wishlist","wishlistSettings","ModuleMap","LazyLoad","pageModules","loadPageModules","setInitialParams","wishlistservice","val","$configForm","$menuHeads","$menuDisplays","$menuDisplayItems","$menuItems","$menuMultilevelItems","$menuMultivalueItems","$topLevelItems","$topValueItems","$secondLevelItems","$addToWishlist","toggleConfigMenu","updateFormField","onMultilevelItemClick","onMultivalueItemClick","addToWishList","changed","paramKey","setParamValue","handleChange","setParamValueNew","updateClasses","subvalues","customValue","secondaryList","closest","v","unSelectable","greyedOut","targetOption","paramValue","decomposed","integer","fraction","hideSecondLevel","secondaryItems","updateSecondLevel","setFormField","primaryItem","multivalue","min","max","hideSecondValue","updateSecondValue","isMultiLevel","isMultiValue","openMe","isSecondaryItem","handleUpdateSecondLevel","handleUpdateSecondValue","fieldTarget","targetValue","targetValueInteger","compoundSelected","secondLevel","firstLevel","chosenValue","newValue","secondValue","firstValue","secondOptions","_","$selected","formError","hidden","recaptcha","reserveCta","successCta","reserveUrl","recaptchaScript","recaptchaSitekey","sitekey","chatTemplate","createReCaptchaScript","onReCaptchaSubmit","async","defer","onReCaptchaLoad","grecaptcha","render","badge","theme","onSubmit","execute","checkValidationErrors","showSuccessMessage","resetCaptcha","resetErrors","displayValue","func","wait","immediate","timeout","context","later","callNow","notification","content","notifyBannerOld","banner","msgcontent","notifyBanner","autoClose"],"mappings":"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","file":"main.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\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 = \"/js/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([262,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export var EVENTS = {\r\n ANIMATIONEND: 'animationend',\r\n BEFOREUNLOAD: 'beforeunload',\r\n BLUR: 'blur',\r\n CHANGE: 'change',\r\n CLICK: 'click',\r\n DOMLOADED: 'DOMContentLoaded',\r\n FOCUS: 'focus',\r\n GMAPS_BOUNDSCHANGED:\t\t\t'bounds_changed',\r\n GMAPS_DRAGEND:\t\t\t\t\t'dragend',\r\n GMAPS_IDLE:\t\t\t\t\t\t'idle',\r\n GMAPS_PLACECHANGED:\t\t\t\t'place_changed',\r\n GMAPS_ZOOMCHANGED:\t\t\t\t'zoom_changed',\r\n INPUT: 'input',\r\n INFOTRIGGER:\t\t\t\t\t'infotrigger',\r\n KEY_DOWN: 'keydown',\r\n KEY_UP: 'keyup',\r\n LOAD: 'load',\r\n LOADED_METADATA: 'loadedmetadata',\r\n MESSAGE: 'message',\r\n MOUSEDOWN: 'mousedown',\r\n MOUSEUP: 'mouseup',\r\n MOUSEMOVE: 'mousemove',\r\n MOUSEOVER:\t\t\t\t\t\t'mouseover',\r\n MOUSEOUT: \t\t\t\t\t\t'mouseout',\r\n PAGESHOW: 'pageshow',\r\n PLAYING: 'playing',\r\n RESET: 'reset',\r\n RESIZE: 'resize',\r\n SCROLL: 'scroll',\r\n SIMULATED_CLICK: 'simulated-click',\r\n SUBMIT: 'submit',\r\n SWIPE_DOWN: 'swipedown',\r\n SWIPE_UP: 'swipeup',\r\n TOUCH_END: 'touchend',\r\n TOUCH_MOVE: 'touchmove',\r\n TOUCH_START: 'touchstart',\r\n TRANSITIONEND: 'transitionend',\r\n WHEEL: 'wheel'\r\n};","export var CLASS_NAMES = {\r\n BASICS_DETAILS: 'hof-basics-details',\r\n BASICS_DETAILS_HEADER: 'hof-basics-details-header',\r\n BASICS_SPOTLIGHT: 'hof-basics-spotlight',\r\n\tBANNER_CLOSE:\t\t\t\t\t'banner-close',\r\n BOTTOM: 'bottom',\r\n CLOSING: 'closing',\r\n FIXED: 'fixed',\r\n HAMBURGERLINK: 'hof-hamburger-link',\r\n HIDDEN: 'hidden',\r\n MODAL: 'hof-modal',\r\n MODAL_BG_BLACK: 'black',\r\n MODAL_BG_PAPER: 'paper',\r\n MODAL_BG_WHITE: 'light',\r\n MODAL_CONTENT: 'hof-modal-content',\r\n MODAL_INNER: 'hof-modal-inner',\r\n MODAL_VISIBLE: 'modal-visible',\r\n MODALSCROLLBLOCK: 'scrollblock',\r\n NOTIFICATION:\t\t\t\t\t'hof-notification',\r\n OPEN: 'open',\r\n SEARCHCONTAINER: 'hof-search-container',\r\n SEARCH_MODAL:\t\t\t\t\t'search-modal',\r\n SELECTED: 'hof-selected',\r\n SELECT_MENU: 'hof-select',\r\n SELECT_REPLACED: 'hof-select-replaced',\r\n SELECT_TRIGGER: 'hof-select-trigger',\r\n SHOW:\t\t\t\t\t\t\t'show',\r\n TYPEFACE_BLOCK: 'block',\r\n TYPEFACE_SCRIPT: 'script',\r\n VIDEO_CONTAINER:\t\t\t\t'hof-video-container',\r\n VIDEO_HIDE:\t\t\t\t\t\t'hof-video-hide',\r\n VIDEO_JS:\t\t\t\t\t\t'video-js'\r\n};","export var SELECTORS = {\r\n ACCORDION_HEAD: '.hof-accordion-head',\r\n ACCORDION_COPY: '.hof-accordion-copy',\r\n ANCHOR: 'a',\r\n ANCHOR_WITH_HREF: 'a[href]',\r\n BODY: 'body',\r\n BREADCRUMBS:\t\t\t\t\t'.hof-breadcrumb li',\r\n BUTTON:\t\t\t\t\t\t\t'button',\r\n CONFIG_FORM: '.hof-config-form',\r\n DATA_VALID: 'data-valid-target',\r\n DATA_INVALID: 'data-invalid-target',\r\n DIFFERENCE_IMAGE: '.hof-difference-large-img',\r\n DIFFERENCE_IMAGE_WRAPPER: '.hof-difference-large-img__wrapper',\r\n DIFFERENCE_IMAGE_ALT: 'data-desktop-alt',\r\n DIFFERENCE_IMAGE_SRC: 'data-desktop-image',\r\n DIFFERENCE_SLIDER: '.hof-difference-items-container',\r\n DIFFERENCE_ITEMS: '.hof-difference-items',\r\n ENGRAVABLE: '.hof-engravable',\r\n FIELDSET: 'fieldset',\r\n FLIPPER: '.hof-flip-trigger',\r\n FLIPPER_CONTAINER: '.hof-flipper',\r\n FORM: 'form',\r\n GALLERY_BACKGROUNDS: '.hof-item-gallery-backgrounds',\r\n GALLERY_DATA: '.hof-item-gallery-data',\r\n GALLERY_IMAGE: 'hof-item-gallery-image-placeholder',\r\n GALLERY_MAGNIFIER: 'hof-item-gallery-magnifier',\r\n GALLERY_THUMBNAILS: '.hof-item-gallery-image-thumbs',\r\n GOOGLE_MAP:\t\t\t\t\t\t'.google-map',\r\n GOOGLE_PLACES:\t\t\t\t\t'.retail-locator-search',\r\n HEADER: 'header',\r\n HTML: 'html',\r\n IMAGE: 'img',\r\n INPUT_FIELD: 'input:not([type=\"file\"])',\r\n INVALID: ':invalid',\r\n LIST_ITEM: 'li',\r\n LOADMODULE:\t\t\t\t\t\t'data-loadmodule',\r\n LOAD_MORE:\t\t\t\t\t\t'.load-more',\r\n NAV: 'nav',\r\n OGDESC: 'meta[property=\"og:description\"]',\r\n OGTITLE: 'meta[property=\"og:title\"]',\r\n OGURL: 'meta[property=\"og:url\"]',\r\n OPTGROUP: 'optgroup',\r\n PARAGRAPH: 'p',\r\n PASSWORD_SYNC: 'data-sync-target',\r\n PICKUPSTORE:\t\t\t\t\t'input[name=\"pickupstore\"]',\r\n REFRESH_MAP:\t\t\t\t\t'.refresh-map',\r\n RESULTS_CONTAINER:\t\t\t\t'.hof-results-container',\r\n RETAILERS_LIST:\t\t\t\t\t'.retailers-list',\r\n RETAILER_SEARCH:\t\t\t\t'.retailer-search',\r\n RETAILER_MESSAGE:\t\t\t\t'.hof-retailer-message',\r\n RETAILER_GIFT: '#hof-gift-store-boolean',\r\n RETAILER_GIFT_MESSAGE: '#hof-gift-store-message',\r\n RETAILER_GIFT_TGT: '#hof-gift-store-boolean-tgt',\r\n RETAILER_GIFT_MESSAGE_TGT: '#hof-gift-store-message-tgt',\r\n SEARCH:\t\t\t\t\t\t\t'#hof-site-search',\r\n SEARCH_LOADING: \t\t\t\t'.hof-autocomplete-loading',\r\n SEARCH_SUGGESTIONS:\t\t\t\t'.hof-search-suggestion span',\r\n SET_PREFERRED:\t\t\t\t\t'.set-preferred',\r\n SHARE_CONTAINER: '.hof-share',\r\n SHARE_TOGGLE: '.hof-share-toggle',\r\n SHARE_ICONS: '.hof-share-icons',\r\n SLIDER: '.hof-slider',\r\n SLIDER_WRAPPER: '.hof-slider-frame',\r\n SLIDER_ITEM: '.hof-slider-item',\r\n SLIDER_BTN_LEFT: '.hof-slider-btn.left',\r\n SLIDER_BTN_RIGHT: '.hof-slider-btn.right',\r\n SPAN: 'span',\r\n STATIC_PRODUCT_CTA: '.hof-cta-featuredproducts',\r\n STORE_DETAILS:\t\t\t\t\t'.hof-store-details',\r\n SVG: 'svg',\r\n TAB_LIST: '[role=\"tablist\"] > li',\r\n TABPANEL: '[role=\"tabpanel\"]',\r\n TOOLTIP: '.hof-tooltip',\r\n TOOLTIP_LINK: '.hof-tooltip-link',\r\n TYPEFACE: '[name=typeface]',\r\n UNORDERED_LIST: 'ul',\r\n VIDEO_PLAY:\t\t\t\t\t\t'.hof-video-play',\r\n VIDEO_PLAYER:\t\t\t\t\t'.hof-video-player',\r\n SITECORE_FORM:\t\t\t\t\t'.hof-form-sitecore'\r\n};\r\n","export var MISC = {\r\n ARIA_CONTROLS: 'aria-controls',\r\n ARIA_EXPANDED: 'aria-expanded',\r\n ARIA_HIDDEN: 'aria-hidden',\r\n ARIA_SELECTED: 'aria-selected',\r\n AUTOCOMPLETE_ENDPOINT: '/hofapi/search/getsearchresults',\r\n AUTOCOMPLETE_ENDPOINT_LOCAL: '/assets/json/autocomplete.json',\r\n CHECKOUT_ENDPOINT: '/assets/json/checkout/',\r\n CSC:\t\t\t\t\t\t\t\t'Certified Service Center',\r\n CSC_MESSAGE:\t\t\t\t\t\t'This retailer has been certified by Hearts On Fire. Get best-in-class service that is covered by our comprehensive warranty.',\r\n DEFAULT:\t\t\t\t\t\t\t'default',\r\n DEV_ENDPOINT:\t\t\t\t\t\t'/services/getretailers.php',\r\n DEV_DOMAIN:\t\t\t\t\t\t\t'rf-hof',\r\n EMAIL_INUSE: '/assets/json/emailinuse.json',\r\n EXAMPLE_ENDPOINT:\t\t\t\t\t'/api',\r\n FALSE:\t\t\t\t\t\t\t\t'false',\r\n ID:\t\t\t\t\t\t\t\t\t'id',\r\n LOCALHOST:\t\t\t\t\t\t\t'localhost',\r\n MAP_MARKER:\t\t\t\t\t\t\t'/assets/svg/mapmarker.svg',\r\n HREF:\t\t\t\t\t\t\t\t'href',\r\n POSTCODE_LOOKUP_ENDPOINT: '/assets/json/zip.json',\r\n PROFILE_ENDPOINT: '/assets/json/profile/',\r\n RETAILERS_ENDPOINT:\t\t\t\t\t'/hofapi/memoirestorelocator/getretailers',\r\n SEARCH_DEFAULT:\t\t\t\t\t\t'/hofapi/search/getdefaultpredictiveresults',\r\n TRUE:\t\t\t\t\t\t\t\t'true',\r\n VIDEO_ID:\t\t\t\t\t\t\t'data-videoid',\r\n ZIP_REGEX:\t\t\t\t\t\t\t'^\\\\d{5}(-\\\\d{4})?$'\r\n};\r\n","/**\r\n * Returns a node that is a parent of the element that matches the specified selector\r\n * @param element\r\n * @param selector\r\n */\r\n\r\nexport function queryselectorparents(element, selector) {\r\n // Element.matches() polyfill\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.matchesSelector ||\r\n Element.prototype.mozMatchesSelector ||\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.oMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector ||\r\n function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== this) {}\r\n return i > -1;\r\n };\r\n }\r\n\r\n // Get closest match\r\n for ( ; element && element !== document; element = element.parentNode ) {\r\n if ( element.matches( selector ) ) return element;\r\n }\r\n\r\n return null;\r\n}","export function serializeform( form ) {\r\n var obj = {};\r\n var elements = form.querySelectorAll( \"input, select, textarea, button\" );\r\n for( var i = 0; i < elements.length; ++i ) {\r\n var element = elements[i];\r\n var name = element.name;\r\n var value = element.value;\r\n\r\n \r\n if( name ) {\r\n if( element.type === 'radio' || element.type === 'checkbox' ) {\r\n if( element.checked ) {\r\n obj[ name ] = value;\r\n }\r\n } else {\r\n obj[ name ] = value;\r\n }\r\n }\r\n }\r\n\r\n return JSON.stringify( obj );\r\n}","/**\r\n * Checks if the string is a valid email address\r\n * @param email\r\n */\r\nexport function checkemail(email){\r\n var validation = /^[-a-z0-9~!$%^&*_=+}{\\'?]+(\\.[-a-z0-9~!$%^&*_=+}{\\'?]+)*@([a-z0-9_][-a-z0-9_]*(\\.[-a-z0-9_]+)*\\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;\r\n return validation.test(email);\r\n}","var Revealer = {\r\n init(element) {\r\n this.$el = $(element);\r\n \r\n this.setupDefaults();\r\n this.addListeners();\r\n },\r\n\r\n setupDefaults() {\r\n this.dom = {\r\n $revealer: this.$el.find('.hof-revealer')\r\n };\r\n },\r\n\r\n addListeners() {\r\n this.dom.$revealer.each((indexedDB, revealer) => {\r\n if ($(revealer).is('input')) {\r\n $(revealer).on('change', ::this.toggleRevealer)\r\n } else {\r\n $(revealer).on('click', ::this.toggleRevealer)\r\n }\r\n });\r\n },\r\n\r\n toggleRevealer(e) {\r\n e.preventDefault();\r\n \r\n const target = $(event.target).data('reveals');\r\n $(`#${target}`).toggleClass('open');\r\n }\r\n};\r\n\r\nexport default Revealer;","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\\"\"\n\\r\\n
    \\r\\n
    \\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"productName\") : depth0), depth0))\n + \"
    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"price\") : depth0), depth0))\n + \"

    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"description\") : depth0), depth0))\n + \"

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,(depth0 != null ? lookupProperty(depth0,\"reserve\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0, blockParams, depths),\"inverse\":container.program(4, data, 0, blockParams, depths),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":12},\"end\":{\"line\":22,\"column\":19}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,(depths[1] != null ? lookupProperty(depths[1],\"editable\") : depths[1]),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":12},\"end\":{\"line\":28,\"column\":19}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \\r\\n \\r\\n

    \\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depths[1] != null ? lookupProperty(depths[1],\"editable\") : depths[1]),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":4},\"end\":{\"line\":21,\"column\":11}}})) != null ? stack1 : \"\");\n},\"5\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\t\t

    \\r\\n\t\t\t\t\t\t\"\n + container.escapeExpression(container.lambda(((stack1 = (depths[1] != null ? lookupProperty(depths[1],\"labels\") : depths[1])) != null ? lookupProperty(stack1,\"moveToCart\") : stack1), depth0))\n + \"\\r\\n\t\t\t\t\t

    \\r\\n\";\n},\"7\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"items\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":34,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true,\"useDepths\":true});","import { CLASS_NAMES, EVENTS, SELECTORS, MISC } from '../../common/constants';\r\nimport { checkemail } from '../../common/utils/checkemail';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\nimport CardValidate from 'credit-card-validation';\r\n\r\nvar Forms = {\r\n\r\n // initialize variables\r\n\r\n blur : EVENTS.BLUR,\r\n keyup : EVENTS.KEY_UP,\r\n inputfields : SELECTORS.INPUT_FIELD,\r\n\r\n // initialize the module\r\n\r\n init: function(element) {\r\n\r\n /**\r\n * DOM node that is passed into the module\r\n *\r\n * @property {Object} element DOM node that is passed into the module\r\n */\r\n this.element = element;\r\n var _self = this;\r\n\r\n var that = this;\r\n\r\n // Check and mark if input fields are empty or not\r\n\r\n var inputlist = [].slice.call(this.element.querySelectorAll(this.inputfields)); // NodeLists to Arrays\r\n var textareas = [].slice.call(this.element.querySelectorAll('textarea'));\r\n var inputs = inputlist.concat(textareas);\r\n\r\n\r\n for(var i = 0; i < inputs.length; i++) {\r\n inputs[i].addEventListener(this.keyup, _checkInput);\r\n if (inputs[i].type === 'email') {\r\n inputs[i].addEventListener(this.blur, _checkEmail);\r\n }\r\n if (inputs[i].type === 'password' || inputs[i].name === 'passwordtext') {\r\n inputs[i].addEventListener(this.keyup, _syncPassword);\r\n }\r\n if (inputs[i].getAttribute('maxlength') !== null) {\r\n inputs[i].addEventListener(this.keyup, _surfaceConstraint);\r\n }\r\n if (inputs[i].classList.contains('hof-zip')) {\r\n inputs[i].addEventListener(this.blur, _getPostalCode);\r\n }\r\n if (inputs[i].classList.contains('hof-cc-number')) {\r\n inputs[i].addEventListener(this.keyup, _checkCCType);\r\n inputs[i].addEventListener(this.blur, _checkCCValid);\r\n }\r\n }\r\n\r\n function _checkInput() {\r\n if (this.value) {\r\n this.classList.add('not-empty');\r\n } else {\r\n this.classList.remove('not-empty');\r\n }\r\n }\r\n\r\n function _checkEmail() {\r\n if (checkemail(this.value)) {\r\n return true;\r\n } else {\r\n this.classList.add('error');\r\n return false;\r\n }\r\n }\r\n\r\n function _syncPassword() {\r\n var target = document.querySelector(\"#\" + this.getAttribute(SELECTORS.PASSWORD_SYNC));\r\n target.value = this.value;\r\n }\r\n\r\n function _surfaceConstraint() {\r\n var id = this.getAttribute('id');\r\n var constraintLabel = document.querySelector('.hof-constraint[for=' + id + ']');\r\n var constraintLabelCopy = constraintLabel.getAttribute('data-constraint-label');\r\n var charsEntered = this.value.length;\r\n var limit = this.getAttribute('maxlength');\r\n var charsRemaining = limit - charsEntered;\r\n constraintLabel.innerHTML = charsRemaining + constraintLabelCopy;\r\n }\r\n\r\n function _getPostalCode() {\r\n var postcode = this.value;\r\n var zipUrl = this.dataset.zipUrl;\r\n var citySelector = this.dataset.city;\r\n var stateSelector = this.dataset.state;\r\n if (zipUrl) {\r\n var theTarget = event.target;\r\n var url = zipUrl + '?zip=' + postcode;\r\n getJSON(url).then(function(data){\r\n var theForm = queryselectorparents(theTarget, 'form');\r\n\r\n if(data.FieldErrors && data.FieldErrors.length > 0) {\r\n setErrors(theForm, data.FieldErrors)\r\n } else {\r\n _setValue(theForm, citySelector, data.city);\r\n _setValue(theForm, stateSelector, data.state);\r\n }\r\n \r\n });\r\n }\r\n }\r\n\r\n function _setValue(parent, selector, value) {\r\n if (!selector) {\r\n return;\r\n }\r\n var field = parent.querySelector(selector);\r\n if (field) {\r\n field.value = value;\r\n field.classList.add('not-empty');\r\n }\r\n }\r\n\r\n function _checkCCType() {\r\n var cc = this.value;\r\n var card2validate = CardValidate(cc);\r\n var type = card2validate.getType();\r\n\r\n var theForm = queryselectorparents(this, 'form');\r\n theForm.querySelector('.hof-cc-security-msg__visa').classList.remove('show');\r\n theForm.querySelector('.hof-cc-security-msg__amex').classList.remove('show');\r\n\r\n switch (type) {\r\n case 'visa' :\r\n this.classList.remove('mastercard','discover','amex');\r\n this.classList.add(type);\r\n theForm.querySelector('.hof-cc-security-msg__visa').classList.add('show');\r\n break;\r\n case 'mastercard' :\r\n this.classList.remove('visa','discover','amex');\r\n this.classList.add(type);\r\n theForm.querySelector('.hof-cc-security-msg__visa').classList.add('show');\r\n break;\r\n case 'discover' :\r\n this.classList.remove('visa','mastercard','amex');\r\n this.classList.add(type);\r\n theForm.querySelector('.hof-cc-security-msg__visa').classList.add('show');\r\n break;\r\n case 'amex' :\r\n this.classList.remove('visa','mastercard','discover');\r\n this.classList.add(type);\r\n theForm.querySelector('.hof-cc-security-msg__amex').classList.add('show');\r\n break;\r\n }\r\n }\r\n\r\n function _checkCCValid() {\r\n var cc = this.value;\r\n var card2validate = CardValidate(cc);\r\n var valid = card2validate.isValid();\r\n var errorLabel = this.parentNode.querySelector('.hof-error-label');\r\n\r\n var theForm = queryselectorparents(this, 'form');\r\n if (!valid) {\r\n errorLabel.innerHTML = \"This credit card number is invalid\";\r\n this.parentNode.classList.add('hof-error');\r\n\r\n theForm.querySelector('.hof-cc-security-wrap .hof-tooltip-container').classList.add('hide');\r\n } else {\r\n theForm.querySelector('.hof-cc-security-wrap .hof-tooltip-container').classList.remove('hide');\r\n }\r\n \r\n if (cc.length === 0) {\r\n errorLabel.innerHTML = '';\r\n this.parentNode.classList.remove('hof-error');\r\n }\r\n }\r\n\r\n },\r\n\r\n customizeSelects : function() {\r\n var selects = document.getElementsByTagName('select');\r\n\r\n var that = this;\r\n\r\n for (var j = 0; j < selects.length; j++) {\r\n this.hiddenfield=document.createElement('input');\r\n this.hiddenfield.setAttribute('name', selects[j].getAttribute('name'));\r\n this.hiddenfield.setAttribute('type', 'hidden');\r\n this.hiddenfield.setAttribute('id', selects[j].getAttribute('id') + '-replaced');\r\n this.hiddenfield.setAttribute('value', selects[j].options[0].getAttribute('value'));\r\n selects[j].parentNode.insertBefore(this.hiddenfield,selects[j]);\r\n\r\n this.trigger = document.createElement(SELECTORS.ANCHOR);\r\n this.trigger.classList.add(CLASS_NAMES.SELECT_TRIGGER);\r\n this.trigger.setAttribute('href', '#');\r\n this.trigger.addEventListener(EVENTS.CLICK, _toggleMenu);\r\n\r\n this.trigger.appendChild(document.createTextNode(selects[j].options[0].text));\r\n selects[j].parentNode.insertBefore(this.trigger,selects[j]);\r\n\r\n var replaceUL = document.createElement(SELECTORS.UNORDERED_LIST);\r\n var options = selects[j].querySelectorAll('option');\r\n\r\n for (var k=0; k < options.length; k++) {\r\n var newli = document.createElement(SELECTORS.LIST_ITEM);\r\n var newa = document.createElement(SELECTORS.ANCHOR);\r\n\r\n newli.setAttribute('data-value', options[k].value);\r\n newli.setAttribute('data-field', this.hiddenfield.getAttribute('name'));\r\n newa.setAttribute('href','#');\r\n newa.appendChild(document.createTextNode(options[k].text));\r\n newli.addEventListener(EVENTS.CLICK, _setFieldValue);\r\n newli.appendChild(newa);\r\n replaceUL.appendChild(newli);\r\n }\r\n\r\n selects[j].parentNode.insertBefore(replaceUL, selects[j]);\r\n selects[j].parentNode.classList.add(CLASS_NAMES.SELECT_REPLACED);\r\n\r\n }\r\n\r\n\r\n function _toggleMenu() {\r\n event.preventDefault();\r\n\r\n event.target.classList.toggle(CLASS_NAMES.OPEN);\r\n\r\n var parent = queryselectorparents(event.target, '.' + CLASS_NAMES.SELECT_MENU);\r\n parent.classList.toggle(CLASS_NAMES.OPEN);\r\n }\r\n\r\n function _setFieldValue() {\r\n event.preventDefault();\r\n\r\n var hiddenfieldname = this.getAttribute('data-field');\r\n var value = this.getAttribute('data-value');\r\n var hiddenfield = document.querySelector('[name=' + hiddenfieldname + ']');\r\n hiddenfield.setAttribute('value', value);\r\n that.trigger.text = event.target.text;\r\n\r\n _toggleMenu();\r\n }\r\n\r\n }\r\n\r\n};\r\n\r\nexport default Forms;\r\n\r\nexport function formatErrors(errors) {\r\n return Object.assign([], \r\n Object.keys(errors)\r\n .filter(key => errors[key])\r\n .map(key => {\r\n return {\r\n FieldId: key,\r\n ErrorText: errors[key]\r\n } \r\n })\r\n );\r\n}\r\n\r\nexport function setErrors(element, errors) {\r\n clearErrors(element);\r\n errors.forEach(item => {\r\n var input = element.querySelector(`#${item.FieldId}`);\r\n if (input) {\r\n var parent = queryselectorparents(input, '.hof-input');\r\n var label = findLabelForControl(element, input);\r\n if (parent) {\r\n parent.classList.add('hof-error');\r\n }\r\n if (label) {\r\n label.innerHTML = item.ErrorText;\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function clearErrors(element) {\r\n const inputlist = [].slice.call(element.querySelectorAll('input:not([type=\"file\"])')); // NodeLists to Arrays\r\n const textareas = [].slice.call(element.querySelectorAll('textarea'));\r\n const inputs = inputlist.concat(textareas);\r\n let input;\r\n for(var i = 0; i < inputs.length; i++) {\r\n input = inputs[i];\r\n var parent = queryselectorparents(input, '.hof-input');\r\n var label = findLabelForControl(element, input);\r\n if (parent) {\r\n parent.classList.remove('hof-error');\r\n }\r\n if (label) {\r\n label.innerHTML = '';\r\n }\r\n }\r\n}\r\n \r\nexport function findLabelForControl(container, el) {\r\n var idVal = el.id;\r\n var labels = container.querySelectorAll('label.hof-error-label');\r\n for( var i = 0; i < labels.length; i++ ) {\r\n if (labels[i].htmlFor == idVal) {\r\n return labels[i];\r\n }\r\n }\r\n}\r\n\r\nexport function setInputValues(element, values) {\r\n values.forEach(item => {\r\n var input = element.querySelector(`#${item.FieldId}`);\r\n if (input) {\r\n input.classList.add('not-empty');\r\n input.value = item.Value;\r\n }\r\n });\r\n}","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"newsletter\") : stack1)) != null ? lookupProperty(stack1,\"subscribedcopy\") : stack1), depth0))\n + \"

    \\r\\n\\r\\n

    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"newsletter\") : stack1)) != null ? lookupProperty(stack1,\"disclaimer\") : stack1), depth0))\n + \"

    \\r\\n\\r\\n
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"email\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(4, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":8},\"end\":{\"line\":17,\"column\":15}}})) != null ? stack1 : \"\")\n + \" \\r\\n\\r\\n \\r\\n
    \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \\r\\n\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"newsletter\") : stack1)) != null ? lookupProperty(stack1,\"notsubscribedcopy\") : stack1), depth0))\n + \"

    \\r\\n\\r\\n

    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"newsletter\") : stack1)) != null ? lookupProperty(stack1,\"disclaimer\") : stack1), depth0))\n + \"

    \\r\\n\\r\\n
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"email\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(4, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":8},\"end\":{\"line\":32,\"column\":15}}})) != null ? stack1 : \"\")\n + \" \\r\\n\\r\\n \\r\\n
    \\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"newsletter\") : stack1)) != null ? lookupProperty(stack1,\"header\") : stack1), depth0))\n + \"
    \\r\\n\\r\\n

    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"newsletter\") : stack1)) != null ? lookupProperty(stack1,\"copy\") : stack1), depth0))\n + \"

    \\r\\n\\r\\n

    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"newsletter\") : stack1)) != null ? lookupProperty(stack1,\"message\") : stack1), depth0))\n + \"

    \\r\\n\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"newsletter\") : stack1)) != null ? lookupProperty(stack1,\"subscribed\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(6, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":0},\"end\":{\"line\":37,\"column\":7}}})) != null ? stack1 : \"\")\n + \"\\r\\n\";\n},\"useData\":true});","import { SELECTORS } from '../../common/constants';\r\nimport { tabs } from '../../common/utils/tabs';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\nimport { tooltips } from '../../common/utils/tooltips';\r\nimport Account from './checkout/Account';\r\nimport Shipping from './checkout/Shipping';\r\nimport Billing from './checkout/Billing';\r\nimport Totals from './checkout/Totals';\r\nimport Review from './checkout/Review'\r\n\r\nvar Checkout = {\r\n\r\n // Initialize the module\r\n init : function(element) {\r\n this.$element = element;\r\n this.config = {\r\n endpoint: this.$element.dataset.endpoint,\r\n cartEndpoint: this.$element.dataset.cartEndpoint,\r\n zip: this.$element.dataset.initialZip,\r\n engraving: {\r\n disclaimer: this.$element.dataset.engravingDisclaimer,\r\n label: this.$element.dataset.engravingLabel\r\n },\r\n checkoutCta: this.$element.dataset.checkoutCta\r\n };\r\n this.data = [];\r\n\r\n if (!this.config.endpoint) {\r\n throw Error('Checkout endpoint must not be undefined');\r\n }\r\n\r\n tabs(this.$element);\r\n tooltips(this.$element);\r\n\r\n this.bindElements();\r\n this.bindEvents();\r\n this.createSections();\r\n\r\n },\r\n\r\n bindElements() {\r\n this.dom = {\r\n $accountTab: this.$element.querySelector('.hof-checkout__account'),\r\n $shippingTab: this.$element.querySelector('.hof-checkout__shipping'),\r\n $billingTab: this.$element.querySelector('.hof-checkout__billing'),\r\n $reviewTab: this.$element.querySelector('.hof-checkout__review'),\r\n $totals: this.$element.querySelector('.hof-totals'),\r\n $editLinks: this.$element.querySelectorAll('.hof-squeezebox-edit:not(.hof-cart-link) a'),\r\n $loading: this.$element.querySelector('.hof-checkout__loading'),\r\n }\r\n },\r\n\r\n bindEvents() {\r\n if (this.dom.$editLinks) {\r\n [].forEach.call(this.dom.$editLinks, $editLink => {\r\n $editLink.addEventListener('click', ::this.reopenSection);\r\n });\r\n }\r\n },\r\n\r\n createSections() {\r\n this.dom.$loading.classList.add('show');\r\n \r\n Promise.all([this.getData(this.config.endpoint), this.getCart()])\r\n .then(([data, cart]) => {\r\n\r\n this.data = data;\r\n\r\n this.totals = new Totals(\r\n this.dom.$totals,\r\n {\r\n data: cart,\r\n engraving: this.config.engraving,\r\n checkoutCta: this.config.checkoutCta\r\n }\r\n );\r\n\r\n this.shipping = new Shipping(\r\n this.dom.$shippingTab,\r\n {\r\n nextStep: this.gotoStep.bind(this),\r\n nextStepEndpoint: data.accordionitems[3].data,\r\n data: data.accordionitems[2]\r\n }\r\n );\r\n\r\n this.account = new Account(\r\n this.dom.$accountTab,\r\n {\r\n shipping: this.shipping,\r\n nextStep: this.gotoStep.bind(this),\r\n nextStepEndpoint: data.accordionitems[2].data,\r\n data: data.accordionitems[1]\r\n }\r\n );\r\n\r\n this.billing = new Billing(\r\n this.dom.$billingTab,\r\n {\r\n nextStep: this.gotoStep.bind(this),\r\n nextStepEndpoint: data.accordionitems[4].data,\r\n data: data.accordionitems[3]\r\n }\r\n );\r\n\r\n this.review = new Review(\r\n this.dom.$reviewTab,\r\n {\r\n data: data.accordionitems[4],\r\n $totalsBar: this.dom.$totals\r\n }\r\n )\r\n\r\n \r\n //Here should go the other sections\r\n this.setCurrentTab(data.accordionitems);\r\n\r\n });\r\n },\r\n\r\n getData(endpoint) {\r\n return getJSON(endpoint);\r\n },\r\n\r\n getCart() {\r\n const zip = this.config.zip;\r\n let url = this.config.cartEndpoint\r\n if (zip) {\r\n url = `${url}?zip=${zip}`;\r\n }\r\n return getJSON(url);\r\n },\r\n\r\n gotoStep({ endpoint, updateTotals, zip}) {\r\n this.closeCurrentTab();\r\n this.dom.$loading.classList.add('show');\r\n\r\n let ajaxCalls = [this.getData(endpoint)];\r\n if (updateTotals) {\r\n if (zip) {\r\n this.config.zip = zip;\r\n }\r\n ajaxCalls.push(this.getCart());\r\n }\r\n\r\n return Promise.all(ajaxCalls).then(([data, cart]) => {\r\n this.data = data;\r\n this.setCurrentTab(data.accordionitems);\r\n this.updateAllStepsData(data.accordionitems);\r\n\r\n if (updateTotals) {\r\n this.totals.updateData(cart);\r\n this.review.bindTotalsCta();\r\n }\r\n });\r\n },\r\n\r\n setCurrentTab(data) {\r\n var checkoutSections = this.$element.querySelector('.hof-checkout__steps').children;\r\n data.forEach((section, index) => {\r\n\r\n var tab = checkoutSections[index];\r\n var tabHead = tab.querySelector('.hof-squeezebox-head');\r\n var tabBody = tab.querySelector('.hof-squeezebox-content');\r\n var headcopy = tabHead.querySelector('.hof-squeezebox-head-copy');\r\n\r\n if (section.state === 'complete') {\r\n headcopy.innerHTML = section.statedisplay || '';\r\n tabHead.classList.add('complete');\r\n tabHead.classList.remove('open');\r\n \r\n if(tabBody) {\r\n tabBody.classList.add('complete');\r\n tabBody.classList.remove('open');\r\n }\r\n } else if(section.state === 'open') {\r\n tabHead.classList.add('open');\r\n tabHead.classList.remove('complete');\r\n\r\n if(tabBody) {\r\n tabBody.classList.add('open');\r\n tabBody.classList.remove('complete');\r\n }\r\n }\r\n });\r\n\r\n this.dom.$loading.classList.remove('show');\r\n },\r\n\r\n updateAllStepsData(data) {\r\n this.account.updateData(data[1]);\r\n this.shipping.updateData(data[2]);\r\n this.billing.updateData(data[3]);\r\n this.review.updateData(data[4]);\r\n },\r\n\r\n reopenSection(event) {\r\n event.preventDefault();\r\n var editBtn = event.target;\r\n var tab = queryselectorparents(editBtn, SELECTORS.LIST_ITEM);\r\n var tabList = queryselectorparents(editBtn, '.hof-checkout__steps');\r\n var tabIndex = [].indexOf.call(tabList.children, tab);\r\n this.gotoStep({\r\n endpoint: this.data.accordionitems[tabIndex].data,\r\n updateTotals: false\r\n });\r\n },\r\n\r\n closeCurrentTab() {\r\n const currentlyOpen = $(this.$element).find('.hof-squeezebox-head.open, .hof-squeezebox-content.open');\r\n currentlyOpen.removeClass('open');\r\n }\r\n \r\n};\r\n\r\nexport default Checkout;\r\n","import { getJSON } from '../../../common/utils/getjson';\r\nimport { serializeform } from '../../../common/utils/serializeform';\r\nimport { setErrors } from '../../atoms/Forms';\r\n\r\nclass Account {\r\n constructor(element, config) {\r\n this.$element = element;\r\n this.config = config;\r\n\r\n this.bindElements();\r\n this.bindEvents();\r\n }\r\n\r\n bindElements() {\r\n this.dom = {\r\n $newUserForm: this.$element.querySelector('.hof-new-customer__form'),\r\n $newUserFormInitialState:this.$element.querySelector('.hof-new-customer__init-state'),\r\n $newUserFormEmailInUse: this.$element.querySelector('.hof-new-customer-inuse'),\r\n $newUserFormResetBtn: this.$element.querySelector('.hof-new-customer-inuse__reset'),\r\n $newUserFormGuestBtn: this.$element.querySelector('.hof-new-customer-inuse__guest'),\r\n $newUserFormSignBtn: this.$element.querySelector('.hof-new-customer-inuse__signin'),\r\n ///Sign in Form\r\n $signForm: this.$element.querySelector('#hof-existingcustomer-login'),\r\n $forgotForm: this.$element.querySelector('#hof-forgotpw-form'),\r\n };\r\n }\r\n\r\n bindEvents() {\r\n this.dom.$newUserForm.addEventListener('submit', ::this.onSubmitForm);\r\n this.dom.$newUserFormResetBtn.addEventListener('click', ::this.onNewUserFormReset);\r\n this.dom.$newUserFormGuestBtn.addEventListener('click', ::this.onContinueGuest);\r\n this.dom.$newUserFormSignBtn.addEventListener('click', ::this.onContinueSignIn);\r\n this.dom.$signForm.addEventListener('submit', ::this.onSubmitForm);\r\n this.dom.$forgotForm.addEventListener('submit', ::this.onSubmitForm);\r\n }\r\n\r\n\r\n onSubmitForm(e) {\r\n e.preventDefault();\r\n var form = e.currentTarget;\r\n var data = serializeform(form);\r\n\r\n form.querySelector('.hof-loading').classList.add('show');\r\n\r\n getJSON(form.getAttribute('action'), data)\r\n .then( r => {\r\n if (r.Success) {\r\n this.userEmail = JSON.parse(data).email;\r\n\r\n if (r.MoveToNextStep) {\r\n this.config.nextStep({\r\n endpoint: `${this.config.nextStepEndpoint}?email=${this.userEmail}`,\r\n updateTotals: false\r\n }).then(() => this.config.shipping.setGuestEmail(this.userEmail));;\r\n } else {\r\n if(form.classList.contains('hof-new-customer__form')) {\r\n this.dom.$newUserFormEmailInUse.classList.remove('hide');\r\n this.dom.$newUserFormEmailInUse.querySelector('.hof-new-customer-inuse__email').innerHTML = this.userEmail;\r\n this.dom.$newUserFormInitialState.classList.add('hide');\r\n } \r\n }\r\n\r\n if(r.Message) {\r\n if(form.classList.contains('hof-forgotpw-form')) {\r\n form.querySelector('.hof-flip-trigger').click();\r\n var msgsuccess = this.$element.querySelector('.hof-error-label.success');\r\n msgsuccess.innerHTML = r.Message;\r\n msgsuccess.classList.add('show');\r\n }\r\n }\r\n } else {\r\n setErrors(form, r.FieldErrors);\r\n if(r.Message) {\r\n form.querySelector('.hof-form-error').innerHTML = r.Message;\r\n }\r\n }\r\n form.querySelector('.hof-loading').classList.remove('show');\r\n });\r\n }\r\n\r\n onContinueSignIn(e) {\r\n e.preventDefault();\r\n this.$element.querySelector(\"a[href='#hof-account-existing-customer']\").click();\r\n var emailInput = this.dom.$signForm.querySelector('#hof-existingcustomer-email');\r\n emailInput.value = this.userEmail; \r\n emailInput.classList.add('not-empty'); \r\n }\r\n\r\n onContinueGuest(e) {\r\n this.config.nextStep({\r\n endpoint: `${this.config.nextStepEndpoint}?email=${this.userEmail}`,\r\n updateTotals: false\r\n }).then(() => this.config.shipping.setGuestEmail(this.userEmail));\r\n }\r\n\r\n onNewUserFormReset(e) {\r\n e.preventDefault();\r\n this.dom.$newUserFormEmailInUse.classList.add('hide');\r\n this.dom.$newUserFormInitialState.classList.remove('hide');\r\n this.dom.$newUserForm.reset();\r\n }\r\n\r\n updateData(data) {\r\n this.config.data = data;\r\n }\r\n};\r\n\r\nexport default Account;","import { getJSON } from '../../../common/utils/getjson';\r\nimport { serializeform } from '../../../common/utils/serializeform';\r\nimport { setErrors } from '../../atoms/Forms';\r\n\r\nclass Shipping {\r\n constructor(element, config) {\r\n this.$element = element;\r\n this.config = config;\r\n\r\n this.bindElements();\r\n this.bindEvents();\r\n this.setInitialValues();\r\n }\r\n\r\n bindElements() {\r\n this.dom = {\r\n $addressForm: this.$element.querySelector('.hof-shipping-address form'),\r\n $addressLoader: this.$element.querySelector('.hof-shipping-address .hof-loading'),\r\n $storeForm: this.$element.querySelector('.hof-shipping-store-form'),\r\n $storeLoader: this.$element.querySelector('.hof-shipping-store-wrapper .hof-loading'),\r\n $zip: this.$element.querySelector('.retail-locator-search'),\r\n $pickupDate: this.$element.querySelector('.hof-pickup-date')\r\n };\r\n\r\n this.dom.$shippingZip = this.dom.$addressForm.querySelector('#hof-shipping-zip');\r\n this.dom.$shippingGuestEmail = this.dom.$addressForm.querySelector('#hof-shipping-guest-email');\r\n this.dom.$storeZip = this.dom.$storeForm.querySelector('#hof-store-zip');\r\n this.dom.$storeGuestEmail = this.dom.$storeForm.querySelector('#hof-store-guest-email');\r\n\r\n this.addressUrl = this.dom.$addressForm.getAttribute('action');\r\n this.storeUrl = this.dom.$storeForm.getAttribute('action');\r\n }\r\n\r\n bindEvents() {\r\n this.dom.$addressForm.addEventListener('submit', ::this.handleSubmitAddress);\r\n this.dom.$storeForm.addEventListener('submit', ::this.handleSubmitStore);\r\n }\r\n\r\n setInitialValues() {\r\n const stepData = this.config.data.stepData;\r\n if (stepData) {\r\n if (stepData.pickupDate) {\r\n this.dom.$pickupDate.innerText = stepData.pickupDate;\r\n }\r\n if (stepData.initialZip) {\r\n this.dom.$zip.value = stepData.initialZip;\r\n }\r\n }\r\n }\r\n\r\n handleSubmitAddress(e) {\r\n e.preventDefault();\r\n this.showAddressLoader();\r\n const data = serializeform(e.currentTarget);\r\n getJSON(this.addressUrl, data).then(::this.handleSuccessAddress);\r\n }\r\n\r\n handleSuccessAddress(res) {\r\n this.hideAddressLoader();\r\n if (res.Success) {\r\n if (res.MoveToNextStep) {\r\n this.config.nextStep({\r\n endpoint: this.config.nextStepEndpoint,\r\n updateTotals: true,\r\n zip: this.dom.$shippingZip.value\r\n });\r\n }\r\n } else {\r\n setErrors(this.dom.$addressForm, res.FieldErrors);\r\n const $formError = this.dom.$addressForm.querySelector('.hof-form-error');\r\n if ($formError) {\r\n $formError.innerHTML = '';\r\n if(res.Message) {\r\n $formError.innerHTML = res.Message;\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleSubmitStore(e) {\r\n e.preventDefault();\r\n this.showStoreLoader();\r\n const data = serializeform(e.currentTarget);\r\n getJSON(this.storeUrl, data).then(::this.handleSuccessStore);\r\n }\r\n\r\n handleSuccessStore(res) {\r\n this.hideStoreLoader();\r\n if (res.Success) {\r\n this.config.nextStep({\r\n endpoint: this.config.nextStepEndpoint,\r\n updateTotals: true,\r\n zip: this.dom.$storeZip.value\r\n });\r\n } else {\r\n setErrors(this.dom.$element, res.FieldErrors);\r\n const $formError = this.dom.$storeForm.querySelector('.hof-form-error');\r\n if ($formError) {\r\n $formError.innerHTML = '';\r\n \r\n if(res.Message) {\r\n $formError.innerHTML = res.Message;\r\n }\r\n }\r\n }\r\n }\r\n\r\n showAddressLoader() {\r\n this.dom.$addressLoader.classList.add('show');\r\n }\r\n\r\n hideAddressLoader() {\r\n this.dom.$addressLoader.classList.remove('show');\r\n }\r\n\r\n showStoreLoader() {\r\n this.dom.$storeLoader.classList.add('show');\r\n }\r\n\r\n hideStoreLoader() {\r\n this.dom.$storeLoader.classList.remove('show');\r\n }\r\n\r\n updateData(data) {\r\n this.config.data = data;\r\n }\r\n\r\n setGuestEmail(guestEmail) {\r\n if (this.dom.$shippingGuestEmail) {\r\n this.dom.$shippingGuestEmail.value = guestEmail;\r\n }\r\n if (this.dom.$storeGuestEmail) {\r\n this.dom.$storeGuestEmail.value = guestEmail;\r\n }\r\n }\r\n}\r\n\r\nexport default Shipping;\r\n","import { getJSON } from '../../../common/utils/getjson';\r\nimport { serializeform } from '../../../common/utils/serializeform';\r\nimport { setErrors, setInputValues } from '../../atoms/Forms';\r\n\r\nclass Billing {\r\n constructor(element, config) {\r\n this.$element = element;\r\n this.config = config;\r\n\r\n this.bindElements();\r\n this.bindEvents();\r\n this.setInitialValues();\r\n }\r\n\r\n bindElements() {\r\n this.dom = {\r\n $form: this.$element.querySelector('.hof-billing-creditcard form'),\r\n $billingAddress: this.$element.querySelector('.hof-billing-address'),\r\n $billingAddressFieldset: this.$element.querySelector('#hof-billing-address-fieldset'),\r\n $securityCodeInput: this.$element.querySelector('#hof-cc-security'),\r\n $paypalSaveContinueBtn: this.$element.querySelector('.hof-billing-paypal__continue')\r\n };\r\n }\r\n\r\n bindEvents() {\r\n this.dom.$form.addEventListener('submit', ::this.onSubmitForm);\r\n if (this.dom.$paypalSaveContinueBtn) {\r\n this.dom.$paypalSaveContinueBtn.addEventListener('click', ::this.onSaveContinuePaypal);\r\n }\r\n }\r\n\r\n setInitialValues() {\r\n const stepData = this.config.data.stepData;\r\n if (stepData && stepData.billingAddress) {\r\n this.dom.$billingAddress.innerHTML = stepData.billingAddress;\r\n this.dom.$billingAddress.classList.remove('hide');\r\n this.dom.$billingAddressFieldset.classList.remove('show');\r\n setInputValues(this.dom.$billingAddressFieldset, stepData.fieldsData)\r\n\r\n } else {\r\n this.dom.$billingAddress.classList.add('hide');\r\n this.dom.$billingAddressFieldset.classList.add('show');\r\n }\r\n }\r\n\r\n onSubmitForm(e) {\r\n e.preventDefault();\r\n var form = e.currentTarget;\r\n var data = serializeform(form);\r\n\r\n form.querySelector('.hof-loading').classList.add('show');\r\n\r\n getJSON(form.getAttribute('action'), data)\r\n .then( r => {\r\n if (r.Success) {\r\n this.config.nextStep({\r\n endpoint: this.config.nextStepEndpoint,\r\n updateTotals: true\r\n });\r\n } else {\r\n setErrors(form, r.FieldErrors);\r\n const $formError = form.querySelector('.hof-form-error');\r\n if ($formError) {\r\n $formError.innerHTML = '';\r\n \r\n if(r.Message) {\r\n $formError.innerHTML = r.Message;\r\n }\r\n }\r\n }\r\n\r\n form.querySelector('.hof-loading').classList.remove('show');\r\n });\r\n }\r\n \r\n updateData(data) {\r\n this.config.data = data;\r\n // this.dom.$securityCodeInput.value = '';\r\n this.setInitialValues();\r\n }\r\n\r\n onSaveContinuePaypal(e){\r\n e.preventDefault();\r\n this.config.nextStep({\r\n endpoint: this.config.nextStepEndpoint,\r\n updateTotals: true\r\n });\r\n }\r\n};\r\n\r\nexport default Billing;","import { tooltips } from '../../../common/utils/tooltips';\r\nimport totalsTemplate from '../../../templates/partials/checkout/totals.hbs';\r\n\r\nclass Totals {\r\n constructor(element, config) {\r\n this.$element = element;\r\n this.config = config;\r\n\r\n this.updateTotals();\r\n \r\n }\r\n \r\n updateTotals() {\r\n const data = {\r\n data: this.config.data,\r\n engraving: this.config.engraving,\r\n checkoutCta: this.config.checkoutCta\r\n }\r\n\r\n const HTML = totalsTemplate(data);\r\n this.$element.innerHTML = HTML;\r\n tooltips(this.$element);\r\n }\r\n\r\n updateData(data) {\r\n this.config.data = data;\r\n this.updateTotals();\r\n }\r\n}\r\n\r\nexport default Totals;","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"isPromotion\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(4, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":12},\"end\":{\"line\":16,\"column\":19}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"
    \\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"value\") : depth0), depth0))\n + \"
    \\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"
    \\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"value\") : depth0), depth0))\n + \"
    \\r\\n\";\n},\"6\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\\"\"\n\\r\\n
    \\r\\n
    \\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"productName\") : depth0), depth0))\n + \"
    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"price\") : depth0), depth0))\n + \"

    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"description\") : depth0), depth0))\n + \"

    \\r\\n
    \\r\\n
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"engravingText\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":20},\"end\":{\"line\":44,\"column\":27}}})) != null ? stack1 : \"\")\n + \"
  • \\r\\n\";\n},\"7\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n

    \\r\\n \"\n + alias2(alias1(((stack1 = (depths[1] != null ? lookupProperty(depths[1],\"engraving\") : depths[1])) != null ? lookupProperty(stack1,\"label\") : stack1), depth0))\n + \"\\r\\n \"\n + alias2(alias1(((stack1 = (depths[1] != null ? lookupProperty(depths[1],\"engraving\") : depths[1])) != null ? lookupProperty(stack1,\"disclaimer\") : stack1), depth0))\n + \"\\r\\n

    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"engravingText\") : depth0), depth0))\n + \"

    \\r\\n
    \\r\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n
    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"discounts\") : stack1)) != null ? lookupProperty(stack1,\"PromotionCode\") : stack1), depth0))\n + \"
    \\r\\n
    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"discounts\") : stack1)) != null ? lookupProperty(stack1,\"PromotionCodeDescription\") : stack1), depth0))\n + \"
    \\r\\n
    \\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n \\r\\n
    \\r\\n
    \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"total\") : stack1)) != null ? lookupProperty(stack1,\"label\") : stack1), depth0))\n + \"
    \\r\\n
    \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"total\") : stack1)) != null ? lookupProperty(stack1,\"value\") : stack1), depth0))\n + \"
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(alias3,((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"values\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":8},\"end\":{\"line\":17,\"column\":17}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\\r\\n
    \\r\\n

    \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"zip\") : stack1)) != null ? lookupProperty(stack1,\"label\") : stack1), depth0))\n + \" \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"zip\") : stack1)) != null ? lookupProperty(stack1,\"value\") : stack1), depth0))\n + \"

    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n

    \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"dateText\") : stack1), depth0))\n + \"

    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"discounts\") : stack1)) != null ? lookupProperty(stack1,\"PromotionCode\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":50,\"column\":4},\"end\":{\"line\":55,\"column\":11}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"useData\":true,\"useDepths\":true});","import {\r\n getJSON\r\n} from '../../../common/utils/getjson';\r\nimport {\r\n serializeform\r\n} from '../../../common/utils/serializeform';\r\n\r\nclass Review {\r\n constructor(element, config) {\r\n this.$element = element;\r\n this.config = config;\r\n\r\n this.bindElements();\r\n this.bindEvents();\r\n this.config.postUrl = this.dom.$wrapper.dataset.endpoint;\r\n this.config.summarypage = this.dom.$wrapper.dataset.orderSummaryUrl;\r\n }\r\n\r\n bindElements() {\r\n this.dom = {\r\n $btn: this.$element.querySelector('.hof-review__place-order'),\r\n $wrapper: this.$element.querySelector('.hof-review'),\r\n $billingForm: document.querySelector('.hof-billing-creditcard form'),\r\n $loading: this.$element.querySelector('.hof-loading')\r\n };\r\n }\r\n\r\n bindEvents() {\r\n this.dom.$btn.addEventListener('click', ::this.onPlaceOrder)\r\n }\r\n\r\n updateData(data) {\r\n this.config.data = data;\r\n this.config.$totalsBar.querySelector('.hof-totals__place-order').disabled = true;\r\n }\r\n\r\n bindTotalsCta() {\r\n this.config.$totalsBar.querySelector('.hof-totals__place-order').removeAttribute('disabled');\r\n this.config.$totalsBar.querySelector('.hof-totals__place-order').addEventListener('click', ::this.onPlaceOrder);\r\n }\r\n\r\n onPlaceOrder(e) {\r\n e.preventDefault();\r\n var data = '';\r\n\r\n this.dom.$loading.classList.add('show');\r\n\r\n if (this.config.data.stepData.paymentType === 'paypal') {\r\n data = JSON.stringify({\r\n ...this.config.data.stepData\r\n })\r\n } else if (this.config.data.stepData.paymentType === 'cc') {\r\n var form = this.dom.$billingForm;\r\n data = serializeform(form);\r\n } else {\r\n return;\r\n }\r\n\r\n getJSON(this.config.postUrl, data)\r\n .then(r => {\r\n if (r.Success) {\r\n window.location = `${this.config.summarypage}?orderGuid=${r.OrderGuid}`;\r\n } else {\r\n if (r.Message) {\r\n this.$element.querySelector('.hof-form-error').innerHTML = r.Message;\r\n }\r\n }\r\n\r\n this.dom.$loading.classList.remove('show');\r\n });\r\n }\r\n};\r\n\r\n\r\nexport default Review;","var CoveoSearch = {\r\n init(element) {\r\n this.$el = $(element);\r\n this.$el.on(\"DOMContentLoaded\", () => {\r\n this._initColorSwatches();\r\n\r\n if (typeof Coveo !== \"undefined\" && $(\"#coveo67899e38\").length) {\r\n setTimeout(this._extendCoveoPLP.bind(this), 0);\r\n }\r\n if (typeof Coveo !== \"undefined\" && $(\"#coveo-search-results\").length) {\r\n setTimeout(this._extendHideSearchModal.bind(this), 0);\r\n }\r\n });\r\n },\r\n\r\n _extendHideSearchModal() {\r\n var root = document.querySelector(\"#coveo-search-results\");\r\n var modalContent = document.querySelector(\".hof-modal-content\");\r\n var closeModal = document.querySelector(\".hof-modal-close\");\r\n var previousTab;\r\n\r\n Coveo.$$(root).on(\"newQuery\", function (e, args) {\r\n if ($(modalContent).hasClass(\"open\")) {\r\n closeModal.click();\r\n }\r\n });\r\n\r\n Coveo.$$(root).on(\"noResults\", function (e, args) {\r\n setTimeout(() => {\r\n if (args.query.tab === \"products\" && previousTab !== \"all\") {\r\n $('.CoveoTab[data-id=\"all\"]')[0].click();\r\n }\r\n }, 0);\r\n });\r\n\r\n Coveo.$$(root).on(\"deferredQuerySuccess\", function (e, args) {\r\n previousTab = args.query.tab;\r\n });\r\n },\r\n\r\n _extendCoveoPLP() {\r\n Coveo.SearchEndpoint.endpoints[\"default\"].setRequestModifier(params => {\r\n if (params.requestData && params.requestData.groupBy) {\r\n params.requestData.groupBy.forEach(groupBy => {\r\n if (groupBy.field === \"@computedvariantmetaldisplay\") {\r\n groupBy.filterFacetCount = false;\r\n }\r\n });\r\n }\r\n\r\n return params;\r\n });\r\n\r\n var root = document.querySelector(\"#coveo67899e38\");\r\n\r\n Coveo.$$(root).on(\"preprocessResults\", function (e, args) {\r\n if (args.results && args.results.groupByResults) {\r\n args.results.groupByResults.forEach(group => {\r\n if (group.Field.includes(\"computedpriceranges\")) {\r\n let { values } = group;\r\n\r\n values.sort((a, b) => {\r\n a = Number(\r\n a.value\r\n .split(\" \")[0]\r\n .replace(\",\", \"\")\r\n .replace(/[^0-9.-]+/g, \"\")\r\n );\r\n b = Number(\r\n b.value\r\n .split(\" \")[0]\r\n .replace(\",\", \"\")\r\n .replace(/[^0-9.-]+/g, \"\")\r\n );\r\n\r\n if (a > b) return 1;\r\n else if (a < b) return -1;\r\n return 0;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n this._addMobileFacetButtons();\r\n },\r\n\r\n _initColorSwatches() {\r\n var searchInterface = this.$el.find(\".CoveoSearchInterface\");\r\n searchInterface.on(\r\n \"mouseover\",\r\n \".cov-product-swatches span[data-swatchimageurl]\",\r\n function () {\r\n var target = $(this),\r\n parent = target.parents(\".hof-product-tile\"),\r\n image = parent.find(\"img\"),\r\n price = parent.find('.cost')[0],\r\n previousSrp = parent.find('.previous-srp')[0];\r\n\r\n if (price) {\r\n price.innerHTML = target.data(\"variantprice\");\r\n }\r\n if (previousSrp) {\r\n previousSrp.innerHTML = target.data(\"variantprevioussrp\");\r\n }\r\n\r\n parent.attr(\"href\", target.data(\"varianturl\"));\r\n image.attr(\"src\", target.data(\"swatchimageurl\"));\r\n }\r\n );\r\n },\r\n\r\n _addMobileFacetButtons() {\r\n var clearButton = $(\"\");\r\n var applyButton = $(\"\");\r\n\r\n var buttonsContainer = $(\r\n '
    '\r\n );\r\n buttonsContainer.append(clearButton);\r\n buttonsContainer.append(applyButton);\r\n $(\".coveo-facet-column\").prepend(buttonsContainer);\r\n\r\n applyButton.on(\"click\", e => {\r\n e.preventDefault();\r\n this._dismissDropdown();\r\n });\r\n\r\n clearButton.on(\"click\", e => {\r\n e.preventDefault();\r\n this._clearAllFilters();\r\n });\r\n },\r\n\r\n _dismissDropdown() {\r\n $(\".coveo-facet-dropdown-header\")[0].click();\r\n },\r\n\r\n _clearAllFilters() {\r\n $(\".coveo-breadcrumb-clear-all\")[0].click();\r\n }\r\n};\r\n\r\nexport default CoveoSearch;\r\n","import { SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport { tabs } from '../../common/utils/tabs';\r\nimport { tooltips } from '../../common/utils/tooltips';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { serializeform } from '../../common/utils/serializeform';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\n\r\nimport VanillaModal from 'vanilla-modal';\r\n\r\nimport Configurator from '../atoms/Configurator';\r\nimport ProductReserve from './ProductReserve';\r\nimport ProductGallery from './ProductGallery';\r\n\r\nvar ProductBasics = {\r\n\r\n bottom: CLASS_NAMES.BOTTOM,\r\n detailsClass: CLASS_NAMES.BASICS_DETAILS,\r\n detailsHeaderClass: CLASS_NAMES.BASICS_DETAILS_HEADER,\r\n fixed: CLASS_NAMES.FIXED,\r\n modal: CLASS_NAMES.MODAL,\r\n modalBgBlack: CLASS_NAMES.MODAL_BG_BLACK,\r\n modalBgPaper: CLASS_NAMES.MODAL_BG_PAPER,\r\n modalBgWhite: CLASS_NAMES.MODAL_BG_WHITE,\r\n modalContent: CLASS_NAMES.MODAL_CONTENT,\r\n modalInner: CLASS_NAMES.MODAL_INNER,\r\n modalVisible: CLASS_NAMES.MODAL_VISIBLE,\r\n spotlightClass: CLASS_NAMES.BASICS_SPOTLIGHT,\r\n\r\n anchor: SELECTORS.ANCHOR,\r\n body: SELECTORS.BODY,\r\n galleryBackgrounds: SELECTORS.GALLERY_BACKGROUNDS,\r\n galleryData: SELECTORS.GALLERY_DATA,\r\n galleryImage: SELECTORS.GALLERY_IMAGE,\r\n galleryMagnifier: SELECTORS.GALLERY_MAGNIFIER,\r\n galleryThumbnails: SELECTORS.GALLERY_THUMBNAILS,\r\n image: SELECTORS.IMAGE,\r\n listItem: SELECTORS.LIST_ITEM,\r\n\r\n shippingTemplate: require('../../templates/partials/product/shipping.hbs'),\r\n detailsTemplate: require('../../templates/partials/product/details.hbs'),\r\n\r\n init: function (element) {\r\n\r\n /**\r\n * DOM node that is passed into the module\r\n *\r\n * @property {Object} element DOM node that is passed into the module\r\n */\r\n this.element = element;\r\n this.tabs = element.querySelector('.hof-basics-specs');\r\n tabs(this.tabs);\r\n\r\n // Saving this so it can be accessed inside event handlers\r\n var that = this;\r\n\r\n const [initialParams, qsLength] = getUrlParams(document.location.search);\r\n\r\n const config = {\r\n initialParams,\r\n onChange: updateProductInfo,\r\n updateOnLoad: true\r\n };\r\n\r\n _initBasics(this.element);\r\n\r\n Configurator.init(this.element, config);\r\n\r\n /**\r\n * _initBasics - Does the math to make sure the Basics Details module is appropriately positioned (fixed, static, or absolute, depending)\r\n * @param element\r\n * @private\r\n */\r\n\r\n function _initBasics(element) {\r\n that.details = element.querySelector('.' + that.detailsClass);\r\n that.miniCart = document.querySelector('.hof-mini-cart span');\r\n that.configForm = element.querySelector('.hof-config-form');\r\n that.configFormUrl = that.configForm.getAttribute('action');\r\n that.productName = element.querySelector('.hof-basics-details-name');\r\n that.previousSRPPrice = element.querySelector('span#PrevSRPElement');\r\n that.productPriceLabel = element.querySelector('.hof-config-price-label');\r\n that.productPriceHelp = element.querySelector('.hof-config-price-label a');\r\n that.productStartingAtLabel = element.querySelector('.hof-config-starting-at-label');\r\n that.productStartingAtHelp = element.querySelector('.hof-config-starting-at-label a');\r\n that.productPriceWrapper = element.querySelector('.hof-config-price-wrapper');\r\n that.productPrice = element.querySelector('.hof-config-price');\r\n that.spinner = element.querySelector('.hof-config-price-spinner');\r\n that.productSKU = element.querySelector('.hof-basics-details-sku');\r\n that.formSKU = element.querySelector('.hof-config-form__sku');\r\n that.productShippingTab = element.querySelector('.hof-basics-specs-shipping-tab');\r\n that.productDetailsTab = element.querySelector('.hof-basics-specs-details-tab');\r\n that.wishlist = element.querySelector('.hof-social-links-wishlist');\r\n that.share = element.querySelector('.hof-share');\r\n that.submit = element.querySelector('.hof-config-form-buttons button[type=\"submit\"]');\r\n that.reserve = element.querySelector('.hof-config-reserve');\r\n that.reserveWrapper = element.querySelector('.hof-reserve-wrapper');\r\n that.contactUsMessage = element.querySelector('.hof-config-contact-us');\r\n that.continueShopping = document.getElementById('continue-shopping-button');\r\n that.cartModal = document.querySelector('.hof-cart-modal-wrapper');\r\n that.viewCart = document.getElementById('view-cart-button');\r\n that.gallery = element.querySelector('.hof-image-gallery');\r\n\r\n const productInput = element.querySelector('.hof-config-form__endpoint');\r\n if (productInput) {\r\n that.productUrl = productInput.value;\r\n }\r\n\r\n that.configForm.addEventListener('submit', handleConfigFormSubmit);\r\n\r\n if (that.reserve) {\r\n that.reserve.addEventListener('click', handleReserve);\r\n }\r\n\r\n if (that.productStartingAtHelp) {\r\n that.productStartingAtHelp.addEventListener('click', handlePricing);\r\n }\r\n\r\n if (that.productPriceHelp) {\r\n that.productPriceHelp.addEventListener('click', handlePricing);\r\n }\r\n\r\n if (that.submit) {\r\n that.submit.addEventListener('click', handleAddToCart);\r\n }\r\n\r\n if (that.continueShopping) {\r\n that.continueShopping.addEventListener('click', handleContinueShopping);\r\n }\r\n\r\n if (that.viewCart) {\r\n that.viewCart.addEventListener('click', handleViewCart);\r\n }\r\n\r\n tooltips(that.details);\r\n }\r\n\r\n\r\n /**\r\n * modal : constructs a modal using the VanillaModal library. See https://github.com/thephuse/vanilla-modal for documentation\r\n * @type {VanillaModal|*}\r\n */\r\n\r\n const modal = new VanillaModal({\r\n modal: \".\" + that.modal,\r\n modalInner: \".\" + that.modalInner,\r\n modalContent: \".\" + that.modalContent,\r\n class: that.modalVisible,\r\n onClose: handleModalClose,\r\n clickOutside: false\r\n });\r\n\r\n const productReserve = new ProductReserve(that.reserveWrapper, {\r\n onSuccess: closeModal\r\n });\r\n\r\n let productGallery = null;\r\n if (that.gallery) {\r\n productGallery = new ProductGallery(that.gallery, {\r\n onZoomIn: handleImageZoomIn\r\n });\r\n\r\n if (qsLength === 0) {\r\n productGallery.setVisible();\r\n }\r\n }\r\n\r\n function getUrlParams(query) {\r\n let obj = {};\r\n const queryString = query.slice(1).split('#')[0];\r\n let arr = queryString.split('&');\r\n arr = arr.filter(param => param);\r\n\r\n for (let i = 0; i < arr.length; i++) {\r\n let a = arr[i].split('=');\r\n\r\n obj[a[0]] = a[1] ? decodeURIComponent(a[1]) : a[1];\r\n }\r\n\r\n return [obj, arr.length];\r\n }\r\n\r\n function updateProductInfo(configOptions, onLoad) {\r\n\r\n\r\n if (that.productUrl) {\r\n disableSubmit();\r\n enableSpinner();\r\n\r\n hideElement(that.contactUsMessage);\r\n\r\n getJSON(that.productUrl, configOptions).then(data => {\r\n const query = JSON.parse(configOptions);\r\n\r\n that.productName.innerText = data.productName;\r\n if (that.productSKU) {\r\n that.productSKU.innerText = data.sku || '';\r\n }\r\n if (that.formSKU) {\r\n that.formSKU.value = data.sku || '';\r\n query[that.formSKU.getAttribute(\"name\")] = data.sku;\r\n }\r\n\r\n updatePrice(data);\r\n updateShippingInfo(data);\r\n updateProductDetails(data);\r\n checkReserve(data);\r\n checkActions(data);\r\n checkImages(data);\r\n\r\n if (onLoad && data.defaultValues && data.defaultValues.length) {\r\n data.defaultValues.map(dv => {\r\n if (!query[dv.fieldId]) {\r\n query[dv.fieldId] = dv.value;\r\n }\r\n })\r\n Configurator.updateDefaultValues(data.defaultValues);\r\n } else if (data.options && data.options.length) {\r\n data.options.map(dv => {\r\n if (!query[dv.id]) {\r\n query[dv.id] = dv.value;\r\n }\r\n })\r\n Configurator.updateDefaultValuesNew(data.options);\r\n }\r\n\r\n if (!onLoad) {\r\n updateUrl(query);\r\n }\r\n\r\n updateReserve(data);\r\n disableSpinner();\r\n });\r\n }\r\n }\r\n\r\n function updateUrl(configOptions) {\r\n const path = document.location.pathname;\r\n const query = $.param(configOptions);\r\n window.history.pushState('', '', `${path}?${query}`);\r\n }\r\n\r\n function updateReserve(data) {\r\n if (!that.reserveWrapper) {\r\n return;\r\n }\r\n\r\n const details = {\r\n name: data.productName,\r\n price: data.price,\r\n type: data.type\r\n };\r\n const formData = serializeform(that.configForm);\r\n const settings = JSON.parse(formData);\r\n const displays = Object.keys(settings)\r\n .reduce((acc, key) => {\r\n acc[key] = Configurator.getDisplayValue(key)\r\n return acc;\r\n }, {\r\n chatMessageLabel: data.chatMessageLabel,\r\n productInfoLabel: data.productInfoLabel,\r\n priceLabel: data.priceLabel\r\n });\r\n\r\n let image = '';\r\n if (productGallery) {\r\n image = productGallery.getActiveImage();\r\n }\r\n productReserve.reset();\r\n productReserve.update({ details, settings, displays, image });\r\n }\r\n\r\n function updatePrice(data) {\r\n that.productPrice.innerText = data.price;\r\n if (data.fullPrice) {\r\n hideElement(that.productStartingAtLabel);\r\n showElement(that.productPriceLabel);\r\n } else {\r\n hideElement(that.productPriceLabel);\r\n showElement(that.productStartingAtLabel);\r\n }\r\n if (data.price) {\r\n showElement(that.productPrice);\r\n hideElement(that.contactUsMessage);\r\n } else {\r\n hideElement(that.productPrice);\r\n showElement(that.contactUsMessage);\r\n }\r\n if (data.previousSRPPrice) {\r\n if (data.enablePdpStrikethrough) {\r\n that.previousSRPPrice.innerHTML = \" \" + data.previousSRPPrice + \"\";\r\n } else {\r\n that.previousSRPPrice.innerHTML = \" \" + data.previousSRPPrice;\r\n }\r\n } else {\r\n that.previousSRPPrice.innerHTML = \"\";\r\n }\r\n }\r\n\r\n function updateShippingInfo(data) {\r\n if (that.productShippingTab) {\r\n var shippingTemplate = that.shippingTemplate(data);\r\n that.productShippingTab.innerHTML = shippingTemplate;\r\n }\r\n }\r\n\r\n function updateProductDetails(data) {\r\n var detailsTemplate = that.detailsTemplate(data);\r\n that.productDetailsTab.innerHTML = detailsTemplate;\r\n\r\n tooltips(that.productDetailsTab);\r\n }\r\n\r\n function checkActions(data) {\r\n\r\n if (data.sku) {\r\n showElement(that.tabs);\r\n showAction(that.submit);\r\n showAction(that.wishlist);\r\n showAction(that.share);\r\n } else if (!data.reserve) {\r\n hideElement(that.tabs);\r\n hideAction(that.submit);\r\n hideAction(that.wishlist);\r\n hideAction(that.share);\r\n }\r\n\r\n if (that.wishlist) {\r\n if (data.isAddedToWishList) {\r\n that.wishlist.classList.add('hof-icon-wishlist-added');\r\n that.wishlist.classList.remove('hof-icon-wishlist-add');\r\n } else {\r\n that.wishlist.classList.add('hof-icon-wishlist-add');\r\n that.wishlist.classList.remove('hof-icon-wishlist-added');\r\n }\r\n }\r\n }\r\n\r\n function checkSku(data) {\r\n if (!data.sku) {\r\n disableSubmit();\r\n } else {\r\n showElement(that.submit);\r\n hideElement(that.reserve);\r\n enableSubmit();\r\n }\r\n }\r\n\r\n function checkReserve(data) {\r\n if (data.reserve) {\r\n hideElement(that.submit);\r\n showElement(that.reserve);\r\n disableSubmit();\r\n } else {\r\n showElement(that.submit);\r\n hideElement(that.reserve);\r\n checkSku(data);\r\n }\r\n }\r\n\r\n function checkImages(data) {\r\n if (productGallery && data.images) {\r\n productGallery.setImages(data.images);\r\n }\r\n }\r\n\r\n function hideAction(action) {\r\n if (!action) {\r\n return;\r\n }\r\n const parent = queryselectorparents(action, '.hof-config-action');\r\n if (parent) {\r\n parent.classList.add('hidden');\r\n }\r\n }\r\n\r\n function hideElement(element) {\r\n if (!element) {\r\n return;\r\n }\r\n element.classList.add('hidden');\r\n }\r\n\r\n function showAction(action) {\r\n if (!action) {\r\n return;\r\n }\r\n const parent = queryselectorparents(action, '.hof-config-action');\r\n if (parent) {\r\n parent.classList.remove('hidden');\r\n }\r\n }\r\n\r\n function showElement(element) {\r\n if (!element) {\r\n return;\r\n }\r\n element.classList.remove('hidden');\r\n }\r\n\r\n function enableSpinner() {\r\n that.spinner.classList.add('active');\r\n }\r\n\r\n function disableSpinner() {\r\n that.spinner.classList.remove('active');\r\n }\r\n\r\n function disableSubmit() {\r\n if (that.submit) {\r\n that.submit.disabled = true;\r\n }\r\n }\r\n\r\n function enableSubmit() {\r\n if (that.submit) {\r\n that.submit.disabled = false;\r\n }\r\n }\r\n\r\n function handleConfigFormSubmit(e) {\r\n e.preventDefault();\r\n disableSubmit();\r\n const data = serializeform(e.currentTarget);\r\n getJSON(that.configFormUrl, data)\r\n .then(updateMiniCart)\r\n .catch(enableSubmit);\r\n }\r\n\r\n function updateMiniCart(response) {\r\n that.miniCart.innerText = response.NumberOfItems;\r\n enableSubmit();\r\n return response;\r\n }\r\n\r\n function handlePricing() {\r\n const body = document.documentElement.querySelector(that.body);\r\n body.classList.remove(that.modalBgWhite);\r\n\r\n modal.open('.hof-pricing-wrapper');\r\n }\r\n\r\n function handleReserve() {\r\n const body = document.documentElement.querySelector(that.body);\r\n body.classList.remove(that.modalBgWhite);\r\n\r\n modal.open('.hof-reserve-wrapper');\r\n\r\n if (!window.hof) {\r\n window.hof = {};\r\n }\r\n window.hof.closeReserveModal = closeModal;\r\n }\r\n\r\n function handleAddToCart() {\r\n var body = document.documentElement.querySelector(that.body);\r\n body.classList.remove(that.modalBgWhite);\r\n\r\n if (that.cartModal) {\r\n modal.open('.hof-cart-modal-wrapper');\r\n }\r\n }\r\n\r\n function handleContinueShopping() {\r\n modal.close();\r\n }\r\n\r\n function handleViewCart() {\r\n window.location.href = \"/shop/cart\";\r\n }\r\n\r\n function handleImageZoomIn() {\r\n const body = document.documentElement.querySelector(that.body);\r\n body.classList.add(that.modalBgWhite);\r\n\r\n modal.open('.hof-image-gallery-wrapper');\r\n\r\n if (productGallery) {\r\n productGallery.update();\r\n }\r\n }\r\n\r\n function closeModal() {\r\n modal.close();\r\n\r\n if (productGallery) {\r\n productGallery.loadPrimaryGalleryImage();\r\n }\r\n\r\n if (!window.hof) {\r\n window.hof = {};\r\n }\r\n window.hof.closeReserveModal = null;\r\n }\r\n\r\n function handleModalClose() {\r\n productReserve.resetForm();\r\n\r\n if (productGallery) {\r\n productGallery.update();\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default ProductBasics;\r\n","import Swiper from 'swiper/dist/js/swiper.min.js';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\n\r\n\r\nclass ProductGallery {\r\n\r\n constructor(el, config) {\r\n this.el = el;\r\n this.config = config;\r\n this.isView360Loaded = false;\r\n this.viewerScript = this.el.dataset.viewerScript || '/assets/js/orbitvu.js';\r\n\r\n this.dom = {\r\n thumbnails: this.el.querySelector('.hof-thumbnails'),\r\n thumbnailWrapper: this.el.querySelector('.hof-thumbnails__wrapper'),\r\n primary: this.el.querySelector('.hof-primary-image'),\r\n primaryWrapper: this.el.querySelector('.hof-primary-image__wrapper')\r\n };\r\n\r\n this.clone = {\r\n thumbnails: this.dom.thumbnails.cloneNode(true),\r\n primary: this.dom.primary.cloneNode(true),\r\n };\r\n \r\n this.initThumbnails();\r\n this.initPrimary();\r\n }\r\n\r\n initThumbnails() {\r\n const nextEl = this.dom.thumbnails.querySelector('.swiper-button-next');\r\n const prevEl = this.dom.thumbnails.querySelector('.swiper-button-prev');\r\n const buttons = this.dom.thumbnails.querySelectorAll('.hof-thumbnails__button');\r\n\r\n this.thumbnailsSwiper = new Swiper(this.dom.thumbnails, {\r\n direction: 'vertical',\r\n slidesPerView: 5,\r\n navigation: { nextEl, prevEl }\r\n });\r\n\r\n const thumb = this.thumbnailsSwiper.slides[0];\r\n\r\n if (thumb) {\r\n const button = thumb.querySelector('.hof-thumbnails__button');\r\n\r\n this.setThumbnailButtonActive(button);\r\n\r\n [].forEach.call(buttons, btn => {\r\n btn.addEventListener('click', ::this.handleThumbnailClick);\r\n });\r\n }\r\n }\r\n\r\n initPrimary() {\r\n const el = this.dom.primary.querySelector('.swiper-pagination');\r\n const primaryButtons = this.el.querySelectorAll('.hof-primary-image__button');\r\n\r\n [].forEach.call(primaryButtons, btn => {\r\n btn.addEventListener('click', ::this.handlePrimaryClick);\r\n });\r\n\r\n this.primarySwiper = new Swiper(this.dom.primary, {\r\n preloadImages: false,\r\n lazy: {\r\n loadOnTransitionStart: true\r\n },\r\n effect: 'fade',\r\n fadeEffect: {\r\n crossFade: true\r\n },\r\n slidesPerView: 1,\r\n pagination: { el, clickable: true },\r\n on: {\r\n transitionStart: ::this.handlePrimaryTransactionStart,\r\n transitionEnd: ::this.handlePrimaryChange\r\n }\r\n });\r\n if (primaryButtons.length === 0) {\r\n this.handlePrimaryChange();\r\n }\r\n }\r\n\r\n handleThumbnailClick(e) {\r\n const currentButton = e.currentTarget;\r\n const currentIndex = parseInt(currentButton.dataset.index, 10) || 0;\r\n\r\n this.setThumbnailButtonActive(currentButton);\r\n this.primarySwiper.slideTo(currentIndex, undefined, false);\r\n }\r\n\r\n handlePrimaryClick() {\r\n if (this.config.onZoomIn) {\r\n this.config.onZoomIn();\r\n this.loadPrimaryModalImage();\r\n }\r\n }\r\n\r\n loadPrimaryGalleryImage() {\r\n const index = this.primarySwiper.activeIndex;\r\n const slide = this.primarySwiper.slides[index];\r\n const image = slide.querySelector('.hof-primary-image__image--gallery');\r\n\r\n if (image && image.dataset.src) {\r\n image.src = image.dataset.src;\r\n image.classList.remove('modal-swiper-lazy');\r\n image.classList.add('swiper-lazy');\r\n }\r\n }\r\n\r\n loadPrimaryModalImage() {\r\n const index = this.primarySwiper.activeIndex;\r\n const slide = this.primarySwiper.slides[index];\r\n const image = slide.querySelector('.hof-primary-image__image--modal');\r\n\r\n if (image && image.dataset.src) {\r\n image.src = image.dataset.src;\r\n image.classList.remove('modal-swiper-lazy');\r\n image.classList.add('swiper-lazy');\r\n }\r\n }\r\n\r\n handlePrimaryTransactionStart() {\r\n const index = this.primarySwiper.activeIndex;\r\n const slide = this.primarySwiper.slides[index];\r\n const modal = queryselectorparents(slide, '.hof-modal-content');\r\n const galleryImage = slide.querySelector('.hof-primary-image__image--gallery');\r\n const modalImage = slide.querySelector('.hof-primary-image__image--modal');\r\n\r\n if (!galleryImage || !modalImage) {\r\n return;\r\n }\r\n\r\n if (modal) {\r\n modalImage.classList.remove('modal-swiper-lazy');\r\n modalImage.classList.add('swiper-lazy');\r\n galleryImage.classList.add('modal-swiper-lazy');\r\n galleryImage.classList.remove('swiper-lazy');\r\n } else {\r\n modalImage.classList.add('modal-swiper-lazy');\r\n modalImage.classList.remove('swiper-lazy');\r\n galleryImage.classList.remove('modal-swiper-lazy');\r\n galleryImage.classList.add('swiper-lazy');\r\n }\r\n }\r\n\r\n handlePrimaryChange() {\r\n const index = this.primarySwiper.activeIndex;\r\n const primary = this.primarySwiper.slides[index];\r\n const thumb = this.thumbnailsSwiper.slides[index];\r\n const view360 = this.primarySwiper.el.querySelectorAll('.hof-view-360__container');\r\n\r\n if (thumb) {\r\n const button = thumb.querySelector('.hof-thumbnails__button');\r\n\r\n this.setThumbnailButtonActive(button);\r\n this.thumbnailsSwiper.slideTo(index === 0 ? 0 : index - 1);\r\n }\r\n\r\n [].forEach.call(view360, el => el.classList.remove('is-active'));\r\n\r\n\r\n if (primary && primary.classList.contains('hof-primary-image__item--360')) {\r\n this.loadView360(primary);\r\n }\r\n }\r\n\r\n setThumbnailButtonActive(button) {\r\n const buttons = this.dom.thumbnails.querySelectorAll('.hof-thumbnails__button');\r\n\r\n button.classList.add('hof-thumbnails__button--active');\r\n\r\n [].forEach.call(buttons, btn => {\r\n if (button !== btn) {\r\n btn.classList.remove('hof-thumbnails__button--active');\r\n }\r\n });\r\n }\r\n\r\n update() {\r\n this.thumbnailsSwiper.update();\r\n this.primarySwiper.update();\r\n }\r\n\r\n setImages(images) {\r\n const thumbnailsSlides = this.getSlides(this.clone.thumbnails, images, 'hof-thumbnails__item');\r\n const primarySlides = this.getSlides(this.clone.primary, images, 'hof-primary-image__item');\r\n\r\n this.thumbnailsSwiper.destroy();\r\n this.dom.thumbnailWrapper.innerHTML = thumbnailsSlides.join('');\r\n const buttons = this.dom.thumbnailWrapper.querySelectorAll('.hof-thumbnails__button');\r\n\r\n [].forEach.call(buttons, (btn, index) => {\r\n btn.dataset.index = index;\r\n });\r\n\r\n this.initThumbnails();\r\n\r\n this.primarySwiper.destroy();\r\n this.dom.primaryWrapper.innerHTML = primarySlides.join('');\r\n this.initPrimary();\r\n\r\n this.setVisible();\r\n }\r\n\r\n getSlides(parent, images, itemClass) {\r\n return images.reduce((acc, key) => {\r\n const primaryItems = parent.querySelectorAll(`.${itemClass}--${key}`)\r\n const slides = [].map.call(primaryItems, item => item.outerHTML);\r\n acc.push(...slides);\r\n return acc;\r\n }, []);\r\n }\r\n\r\n getActiveImage() {\r\n const index = this.primarySwiper.activeIndex;\r\n const primaryItem = this.primarySwiper.slides[index];\r\n const primaryImage = primaryItem.querySelector('.hof-primary-image__image');\r\n if (primaryImage) {\r\n return primaryImage.getAttribute('src') || primaryImage.dataset.src;\r\n }\r\n return '';\r\n }\r\n\r\n loadView360(item) {\r\n if (this.isView360Loaded) {\r\n this.initView360(item);\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.src = this.viewerScript;\r\n script.onload = () => {\r\n this.isView360Loaded = true;\r\n this.initView360(item)\r\n };\r\n document.head.appendChild(script);\r\n }\r\n\r\n initView360(item) {\r\n const el = item.querySelector('.hof-view-360__container');\r\n\r\n if (el && window.inject_orbitvu) {\r\n const url = el.dataset.url;\r\n const container = document.getElementById(el.id);\r\n let api = null;\r\n let scene = null;\r\n\r\n container.classList.remove('is-active');\r\n\r\n // this function is executed when the 360 view lib was downloaded.\r\n // adds some callbacks that are needed to start working with 360 view\r\n window.set_orbitvu_api = (orbitvu) => {\r\n api = orbitvu;\r\n api.addCallback('orbitvu_initialized', 'viewer_initialized');\r\n api.addCallback('viewer_zoom_in', 'zoom_in');\r\n api.addCallback('viewer_center_change', 'center_change');\r\n };\r\n\r\n // once the 360 view is initialized the mouse wheel is disabled,\r\n // and the image is zoomed in 100%.\r\n // finally, the 360 view is displayed.\r\n window.orbitvu_initialized = () => {\r\n api.disable_mousewheel();\r\n api.setScene({ zoomMul: 1 });\r\n container.classList.add('is-active');\r\n };\r\n\r\n // this function prevents to move the image\r\n // clicking over the image\r\n window.viewer_center_change = () => {\r\n const currentScene = api.getScene();\r\n const { x, y } = api.calculate_position({\r\n x: scene.centerX,\r\n y: scene.centerY\r\n });\r\n const {\r\n x: currentX,\r\n y: currentY\r\n } = api.calculate_position({\r\n x: currentScene.centerX,\r\n y: currentScene.centerY\r\n });\r\n const panX = x - currentX;\r\n const panY = y - currentY;\r\n api.setScene({ panX, panY });\r\n };\r\n\r\n // once the image is zommed in, this function gets the scene object,\r\n // which contains { centerX, centerY } values.\r\n window.viewer_zoom_in = () => {\r\n scene = api.getScene();\r\n };\r\n\r\n window.inject_orbitvu(\r\n el.id,\r\n '',\r\n '',\r\n {\r\n ovus_folder: url,\r\n content2: 'yes',\r\n width: 'auto',\r\n height: 'auto',\r\n teaser: 'autorotate',\r\n preload_width: '700',\r\n preload_height: '700',\r\n hires_forced_zoom: 'yes',\r\n viewer_api_init: 'set_orbitvu_api',\r\n frame_rate: 5,\r\n vmove: 'no',\r\n mousewheel: 'no',\r\n fullscreen_enabled: 'no',\r\n force_html5: 'yes',\r\n doubletap_mode: 'disabled',\r\n //disable_nosize: 'yes'\r\n }\r\n );\r\n }\r\n }\r\n\r\n setVisible() {\r\n this.el.classList.add('is-active');\r\n }\r\n\r\n}\r\n\r\nexport default ProductGallery;","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\\"\"\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"productName\") : depth0), depth0))\n + \"
    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"price\") : depth0), depth0))\n + \"

    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"description\") : depth0), depth0))\n + \"

    \\r\\n
    \\r\\n \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"engravable\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":16},\"end\":{\"line\":65,\"column\":23}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n\\r\\n

    \"\n + alias3(alias2(((stack1 = ((stack1 = (depths[1] != null ? lookupProperty(depths[1],\"labels\") : depths[1])) != null ? lookupProperty(stack1,\"engraving\") : stack1)) != null ? lookupProperty(stack1,\"disclaimer\") : stack1), depth0))\n + \"

    \\r\\n
    \\r\\n
    \\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"engravingStyle\") : depth0), depth0));\n},\"5\":function(container,depth0,helpers,partials,data) {\n return \"checked\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n return \"open\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n return \"class=\\\"not-empty\\\"\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"value=\\\"\"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"engravingText\") : depth0), depth0))\n + \"\\\"\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \"\n + ((stack1 = (lookupProperty(helpers,\"equal\")||(depth0 && lookupProperty(depth0,\"equal\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"engravingStyle\") : depth0),\"block\",{\"name\":\"equal\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":44},\"end\":{\"line\":45,\"column\":99}}})) != null ? stack1 : \"\")\n + \"\\r\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n return \" checked\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"items\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":72,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true,\"useDepths\":true});","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"isPromotion\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(4, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":8},\"end\":{\"line\":9,\"column\":15}}})) != null ? stack1 : \"\")\n + \" \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"
    \\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"value\") : depth0), depth0))\n + \"
    \\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"
    \\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"value\") : depth0), depth0))\n + \"
    \\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"values\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":11,\"column\":13}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n
    \\r\\n

    \\r\\n \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"zip\") : stack1)) != null ? lookupProperty(stack1,\"label\") : stack1), depth0))\n + \" \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"zip\") : stack1)) != null ? lookupProperty(stack1,\"value\") : stack1), depth0))\n + \"\\r\\n \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"labels\") : depth0)) != null ? lookupProperty(stack1,\"change\") : stack1), depth0))\n + \"\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"labels\") : depth0)) != null ? lookupProperty(stack1,\"cancel\") : stack1), depth0))\n + \"\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"total\") : stack1)) != null ? lookupProperty(stack1,\"label\") : stack1), depth0))\n + \"
    \\r\\n
    \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"totals\") : stack1)) != null ? lookupProperty(stack1,\"total\") : stack1)) != null ? lookupProperty(stack1,\"value\") : stack1), depth0))\n + \"
    \\r\\n
    \\r\\n\\r\\n

    \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"dateText\") : stack1), depth0))\n + \"

    \\r\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n
    \\r\\n \\\"\"\n\\r\\n \\r\\n
    \\r\\n

    \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"productName\") : stack1), depth0))\n + \"

    \\r\\n

    \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"price\") : stack1), depth0))\n + \"

    \\r\\n

    \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"description\") : stack1), depth0))\n + \"

    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n\\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"\\r\\n \\r\\n
    \\r\\n \\r\\n\\r\\n\"\n + ((stack1 = (lookupProperty(helpers,\"equal\")||(depth0 && lookupProperty(depth0,\"equal\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"type\") : depth0),\"simple\",{\"name\":\"equal\",\"hash\":{},\"fn\":container.program(15, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":12},\"end\":{\"line\":58,\"column\":22}}})) != null ? stack1 : \"\")\n + ((stack1 = (lookupProperty(helpers,\"equal\")||(depth0 && lookupProperty(depth0,\"equal\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"type\") : depth0),\"complex\",{\"name\":\"equal\",\"hash\":{},\"fn\":container.program(25, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":12},\"end\":{\"line\":84,\"column\":22}}})) != null ? stack1 : \"\")\n + ((stack1 = (lookupProperty(helpers,\"equal\")||(depth0 && lookupProperty(depth0,\"equal\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"type\") : depth0),\"multilevel\",{\"name\":\"equal\",\"hash\":{},\"fn\":container.program(29, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":85,\"column\":12},\"end\":{\"line\":121,\"column\":22}}})) != null ? stack1 : \"\")\n + ((stack1 = (lookupProperty(helpers,\"equal\")||(depth0 && lookupProperty(depth0,\"equal\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"type\") : depth0),\"multivalue\",{\"name\":\"equal\",\"hash\":{},\"fn\":container.program(36, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":122,\"column\":12},\"end\":{\"line\":165,\"column\":22}}})) != null ? stack1 : \"\")\n + \"\\r\\n
    \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"data-min=\\\"\"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"min\") : depth0), depth0))\n + \"\\\"\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"data-max=\\\"\"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"max\") : depth0), depth0))\n + \"\\\"\";\n},\"6\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0, blockParams, depths),\"inverse\":container.program(13, data, 0, blockParams, depths),\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":28},\"end\":{\"line\":28,\"column\":35}}})) != null ? stack1 : \"\")\n + \" \\r\\n
  • \\r\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n return \" class=\\\"greyed\\\"\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n return \" class=\\\"unselectable\\\"\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \\r\\n \\r\\n \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"\\r\\n

    \\r\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"

    \\r\\n\";\n},\"15\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"cta\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":20},\"end\":{\"line\":56,\"column\":27}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" class=\\\"\"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"options\") : depth0), depth0))\n + \"\\\"\";\n},\"18\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0, blockParams, depths),\"inverse\":container.program(21, data, 0, blockParams, depths),\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":36},\"end\":{\"line\":47,\"column\":43}}})) != null ? stack1 : \"\")\n + \" \\r\\n
  • \\r\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \\r\\n \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"\\r\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"\\r\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \\r\\n \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"cta\") : depth0)) != null ? lookupProperty(stack1,\"label\") : stack1), depth0))\n + \"\\r\\n

    \\r\\n\";\n},\"25\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"cta\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":78,\"column\":20},\"end\":{\"line\":82,\"column\":27}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"26\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n

    \\r\\n \"\n + alias3(alias2((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"priceImpact\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(27, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":40},\"end\":{\"line\":71,\"column\":47}}})) != null ? stack1 : \"\")\n + \"

    \\r\\n \"\n + ((stack1 = alias2((depth0 != null ? lookupProperty(depth0,\"description\") : depth0), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n
    \\r\\n
  • \\r\\n\";\n},\"27\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"priceImpact\") : depth0), depth0))\n + \"\\r\\n\";\n},\"29\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"header\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(30, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":87,\"column\":20},\"end\":{\"line\":89,\"column\":27}}})) != null ? stack1 : \"\")\n + \" \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"subheader\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(34, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":101,\"column\":20},\"end\":{\"line\":103,\"column\":27}}})) != null ? stack1 : \"\")\n + \" \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"cta\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":115,\"column\":20},\"end\":{\"line\":119,\"column\":27}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"30\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"header\") : depth0), depth0))\n + \"
    \\r\\n\";\n},\"32\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n

    \"\n + alias3(alias2((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"

    \\r\\n
    \\r\\n
  • \\r\\n\";\n},\"34\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"subheader\") : depth0), depth0))\n + \"
    \\r\\n\";\n},\"36\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"header\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(30, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":124,\"column\":20},\"end\":{\"line\":126,\"column\":27}}})) != null ? stack1 : \"\")\n + \" \\r\\n
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"subheader\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(37, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":139,\"column\":24},\"end\":{\"line\":141,\"column\":31}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"values\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(39, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":142,\"column\":24},\"end\":{\"line\":156,\"column\":33}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"cta\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":159,\"column\":20},\"end\":{\"line\":163,\"column\":27}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"37\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"subheader\") : depth0), depth0))\n + \"
    \\r\\n\";\n},\"39\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"subvalues\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(40, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":143,\"column\":28},\"end\":{\"line\":155,\"column\":35}}})) != null ? stack1 : \"\");\n},\"40\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \\r\\n\";\n},\"41\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n

    \"\n + alias3(alias2((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"

    \\r\\n
    \\r\\n
  • \\r\\n\";\n},\"43\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"labels\") : depth0)) != null ? lookupProperty(stack1,\"cta\") : stack1)) != null ? lookupProperty(stack1,\"label\") : stack1), depth0))\n + \"\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"data\") : depth0)) != null ? lookupProperty(stack1,\"options\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":168,\"column\":13}}})) != null ? stack1 : \"\")\n + \"\\r\\n \\r\\n \\r\\n\\r\\n

    \\r\\n \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"labels\") : depth0)) != null ? lookupProperty(stack1,\"cta\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(43, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":175,\"column\":8},\"end\":{\"line\":177,\"column\":15}}})) != null ? stack1 : \"\")\n + \" \"\n + alias3(alias2(((stack1 = (depth0 != null ? lookupProperty(depth0,\"labels\") : depth0)) != null ? lookupProperty(stack1,\"cancel\") : stack1), depth0))\n + \"\\r\\n

    \\r\\n
    \\r\\n\";\n},\"useData\":true,\"useDepths\":true});","import { EVENTS, SELECTORS } from '../../common/constants';\r\n\r\nvar HeroBanner = {\r\n init: function (element) {\r\n this.element = element;\r\n\r\n var video = element.querySelector(SELECTORS.HEROBANNER_VIDEO);\r\n var playButton = element.querySelector(SELECTORS.HEROBANNER_VIDEO_PLAY);\r\n var volumeButton = element.querySelector(SELECTORS.HEROBANNER_VIDEO_VOLUME);\r\n\r\n playButton.addEventListener(EVENTS.CLICK, function () {\r\n if (video.paused || video.ended) {\r\n video.play();\r\n $(playButton).addClass('playing');\r\n $(playButton).removeClass('paused');\r\n } else {\r\n video.pause();\r\n $(playButton).addClass('paused');\r\n $(playButton).removeClass('playing');\r\n }\r\n });\r\n\r\n volumeButton.addEventListener(EVENTS.CLICK, function () {\r\n if (video.muted) {\r\n video.muted = false;\r\n video.volume = 0.3;\r\n $(volumeButton).addClass('unmuted');\r\n $(volumeButton).removeClass('muted');\r\n } else {\r\n video.muted = true;\r\n $(volumeButton).addClass('muted');\r\n $(volumeButton).removeClass('unmuted');\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport default HeroBanner;\r\n","import Swiper from 'swiper/dist/js/swiper.min.js';\r\n\r\nvar Slider = {\r\n\r\n init: function (element) {\r\n var _self = this;\r\n this.$element = element;\r\n\r\n this.dom = {\r\n $paginationContainer: this.$element.querySelector('.hof-slider-pagination__container'),\r\n $pagination: this.$element.querySelector('.hof-slider-pagination'),\r\n $slides: this.$element.querySelectorAll('.hof-slider-item'),\r\n $previousButton: this.$element.querySelector('.hof-slider-btn.left'),\r\n $nextButton: this.$element.querySelector('.hof-slider-btn.right')\r\n };\r\n\r\n if (this.$element) {\r\n const sliderFrame = this.$element.querySelectorAll('.hof-slider-frame')[0];\r\n\r\n //autoplay\r\n var autoplayAttribute = this.$element.getAttribute('data-autoplay-delay');\r\n var autoplayDelay = autoplayAttribute ? new Number(autoplayAttribute) * 1000 : 0;\r\n var autoplay = false;\r\n\r\n if (this.dom.$slides.length > 1 && autoplayDelay > 0) {\r\n autoplay = {\r\n delay: autoplayDelay,\r\n };\r\n }\r\n\r\n //slides per view\r\n var slidesPerViewAttribute = this.$element.getAttribute('data-slides-per-view');\r\n var slidesPerView = slidesPerViewAttribute ? (slidesPerViewAttribute) : 1;\r\n\r\n //generate breakpoints\r\n var breakpoints = {}\r\n\r\n if (slidesPerView > 1) {\r\n var minWidth = 480; //Anything below this should be 1 slide\r\n var maxWidth = 960; //Anything above this should be max slides (desktop)\r\n var numBreakpoints = slidesPerView - 1; //default value is slidesperview, create breakpoints for in between\r\n var incrementDivisor = numBreakpoints - 1;\r\n if (incrementDivisor <= 0)\r\n incrementDivisor = 1;\r\n var increment = (maxWidth - minWidth) / incrementDivisor; //we want to include max & min so determine increment to get those + middle points\r\n\r\n for (var i = 0; i < numBreakpoints; i++) {\r\n var width = minWidth + (increment * i);\r\n breakpoints[width] = { slidesPerView: (i + 1) };\r\n }\r\n }\r\n //pagination\r\n var pagination = {};\r\n if (this.dom.$pagination && this.dom.$slides.length > 1) {\r\n var paginationClass = `hof-slider-pagination--${Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5)}`;\r\n this.dom.$pagination.classList.add(paginationClass);\r\n pagination = {\r\n el: `.${paginationClass}`,\r\n clickable: true\r\n };\r\n }\r\n\r\n //navigation\r\n var navigation = {};\r\n if (this.dom.$previousButton && this.dom.$nextButton) {\r\n navigation = {\r\n nextEl: this.dom.$nextButton,\r\n prevEl: this.dom.$previousButton\r\n };\r\n }\r\n\r\n //initialize hof-slider\r\n this.$slider = new Swiper(sliderFrame, {\r\n direction: 'horizontal',\r\n loop: this.dom.$slides.length > 1,\r\n slidesPerView: slidesPerView,\r\n breakpoints: breakpoints,\r\n watchOverflow: false,\r\n slideClass: 'hof-slider-item',\r\n wrapperClass: 'hof-slider-row',\r\n navigation: navigation,\r\n pagination: pagination,\r\n autoplay: autoplay,\r\n pauseOnMouseEnter: true,\r\n lazy: true\r\n });\r\n\r\n /*\r\n * Adjusting control positioning for certain 'slide' components\r\n */\r\n if (Array.from(this.dom.$slides).some(function (slide) { return slide.querySelectorAll('.hero-banner--overlay').length > 0 })) {\r\n adjustControlPosition(); //Call listener function at run time\r\n window.addEventListener('resize', adjustControlPosition);// Attach listener function on state changes\r\n }\r\n\r\n function adjustControlPosition() {\r\n var slides = Array.from(_self.dom.$slides);\r\n \r\n if (window.matchMedia(\"(min-width: 60em)\").matches) {\r\n $(_self.dom.$paginationContainer).css('top', 'unset');\r\n $(_self.dom.$paginationContainer).css('bottom', '5%');\r\n }\r\n //If we're on mobile, get the average height of the imagery on the hero banners\r\n // Move the pagination and nav arrows appropriately\r\n else {\r\n var contentWrappers = $.map(slides, function (slide) { return Array.from(slide.querySelectorAll('.hero-banner__content-wrapper')) }).flat();\r\n var heights = $.map(contentWrappers, function (wrapper) { return wrapper.previousElementSibling.offsetHeight; });\r\n\r\n var sumHeights = 0;\r\n $.each(heights, function () { sumHeights += this });\r\n\r\n var averageHeight = sumHeights / contentWrappers.length;\r\n var paginationOffset = (averageHeight * .95).toString() + 'px';\r\n var navigationHeight = averageHeight.toString() + 'px';\r\n\r\n if (_self.dom.$paginationContainer) {\r\n $(_self.dom.$paginationContainer).css('top', paginationOffset);\r\n $(_self.dom.$paginationContainer).css('bottom', 'unset');\r\n }\r\n if (_self.dom.$previousButton) {\r\n $(_self.dom.$previousButton).css('height', navigationHeight);\r\n }\r\n if (_self.dom.$nextButton) {\r\n $(_self.dom.$nextButton).css('height', navigationHeight);\r\n }\r\n }\r\n }\r\n\r\n return this.$slider;\r\n } \r\n }\r\n};\r\n\r\nexport default Slider;\r\n","import { EVENTS } from './../constants';\r\n\r\n/**\r\n * ID\r\n *\r\n * @type {Number}\r\n * @ignore\r\n */\r\nvar id = 0;\r\n\r\n/**\r\n * Get ID\r\n *\r\n * Because file is loaded only once, this function\r\n * can be used to generate a unique id every time\r\n * it is called.\r\n *\r\n * @return {Number} Unique ID value\r\n * @ignore\r\n */\r\nfunction getId() {\r\n return id++;\r\n}\r\n\r\n/**\r\n * KeyUp Service\r\n */\r\nvar KeyUpService = {};\r\n\r\n\r\n/**\r\n* An array to be populated with callback functions that will be triggered on KeyUp\r\n*\r\n* @property {Array} callbacks\r\n*/\r\nKeyUpService.callbacks = [];\r\n\r\n/**\r\n * @desc Initialize the singleton by attaching the event listener to the window\r\n * @listens {Event} listens to the window KeyUp event\r\n */\r\nKeyUpService.init = function() {\r\n\twindow.addEventListener(EVENTS.KEY_UP, KeyUpService.onKeyUp.bind(this));\r\n};\r\n\r\n/**\r\n* @desc The KeyUp event handler. Itertates through the `callback` array and invokes each callback in the Array\r\n*/\r\nKeyUpService.onKeyUp = function() {\r\n\tvar charCode = event.charCode || event.keyCode;\r\n\tfor (var i = 0; i < this.callbacks.length; i++) {\r\n\t\t\tthis.callbacks[i].callback(charCode);\r\n\t}\r\n};\r\n\r\n/**\r\n * @desc A hook for pushing a callback function\r\n * into the `callbacks` array. A unique\r\n * ID value for the callback is generated\r\n * and a function is returned for removing\r\n * the callback if need be.\r\n *\r\n * @param {Function} callback A function to invoke by the KeyUpService\r\n * @return {Function} `removeCallback` A function which will remove an entry from the `callbacks` array\r\n */\r\nKeyUpService.addCallback = function (callback) {\r\n\t// Generate an id for the callback\r\n\tvar id = getId();\r\n\r\n\t// Push function into array with a unique id\r\n\tthis.callbacks.push({\r\n\t\tid,\r\n\t\tcallback\r\n\t});\r\n\r\n\t// Return the remove function\r\n\treturn this.removeCallback.bind(this, id);\r\n};\r\n\r\n/**\r\n * Filters through the `callback` array and removes\r\n * the entry that corresponds to the id passed\r\n * in as an argument\r\n *\r\n * @param {Number} id An id value to filter by\r\n */\r\nKeyUpService.removeCallback = function (id) {\r\n\tthis.callbacks = this.callbacks.filter((item) => {\r\n\t\treturn item.id !== id;\r\n\t});\r\n};\r\n\r\n\r\nexport {KeyUpService};","import { debounce } from './../utils';\r\nimport { EVENTS } from './../constants';\r\n\r\n/**\r\n * ID\r\n *\r\n * @type {Number}\r\n * @ignore\r\n */\r\nvar id = 0;\r\n\r\n/**\r\n * Get ID\r\n *\r\n * Because file is loaded only once, this function\r\n * can be used to generate a unique id every time\r\n * it is called.\r\n *\r\n * @return {Number} Unique ID value\r\n * @ignore\r\n */\r\nfunction getId() {\r\n return id++;\r\n}\r\n\r\n/**\r\n * Resize Service\r\n */\r\nvar ResizeService = {};\r\n\r\n\r\n/**\r\n* An array to be populated with callback functions that will be triggered on resize\r\n*\r\n* @property {Array} callbacks\r\n*/\r\nResizeService.callbacks = [];\r\n\r\n/**\r\n * @desc Initialize the singleton by attaching the event listener to the window\r\n * @listens {Event} listens to the window resize event\r\n */\r\nResizeService.init = function() {\r\n\twindow.addEventListener(EVENTS.RESIZE, debounce(ResizeService.onResize.bind(this), 10));\r\n};\r\n\r\n/**\r\n* @desc The resize event handler. Itertates through the `callback` array and invokes each callback in the Array\r\n*/\r\nResizeService.onResize = function() {\r\n\tfor (var i = 0; i < this.callbacks.length; i++) {\r\n\t\t\tthis.callbacks[i].callback();\r\n\t}\r\n};\r\n\r\n/**\r\n * @desc A hook for pushing a callback function\r\n * into the `callbacks` array. A unique\r\n * ID value for the callback is generated\r\n * and a function is returned for removing\r\n * the callback if need be.\r\n *\r\n * @param {Function} callback A function to invoke by the ResizeService\r\n * @return {Function} `removeCallback` A function which will remove an entry from the `callbacks` array\r\n */\r\nResizeService.addCallback = function (callback) {\r\n\t// Generate an id for the callback\r\n\tvar id = getId();\r\n\r\n\t// Push function into array with a unique id\r\n\tthis.callbacks.push({\r\n\t\tid,\r\n\t\tcallback\r\n\t});\r\n\r\n\t// Return the remove function\r\n\treturn this.removeCallback.bind(this, id);\r\n};\r\n\r\n/**\r\n * Filters through the `callback` array and removes\r\n * the entry that corresponds to the id passed\r\n * in as an argument\r\n *\r\n * @param {Number} id An id value to filter by\r\n */\r\nResizeService.removeCallback = function (id) {\r\n\tthis.callbacks = this.callbacks.filter((item) => {\r\n\t\treturn item.id !== id;\r\n\t});\r\n};\r\n\r\nexport {ResizeService};","import { debounce } from './../utils';\r\nimport { EVENTS } from './../constants';\r\n\r\n/**\r\n * ID\r\n *\r\n * @type {Number}\r\n * @ignore\r\n */\r\nvar id = 0;\r\n\r\n/**\r\n * Get ID\r\n *\r\n * Because file is loaded only once, this function\r\n * can be used to generate a unique id every time\r\n * it is called.\r\n *\r\n * @return {Number} Unique ID value\r\n * @ignore\r\n */\r\nfunction getId() {\r\n return id++;\r\n}\r\n\r\n/**\r\n * Scroll Service\r\n */\r\nvar ScrollService = {};\r\n\r\n\r\n/**\r\n* An array to be populated with callback functions that will be triggered on scroll\r\n*\r\n* @property {Array} callbacks\r\n*/\r\nScrollService.callbacks = [];\r\n\r\n/**\r\n * @desc Initialize the singleton by attaching the event listener to the window\r\n * @listens {Event} listens to the window scroll event\r\n */\r\nScrollService.init = function() {\r\n\twindow.addEventListener(EVENTS.SCROLL, debounce(ScrollService.onScroll.bind(this), 10));\r\n};\r\n\r\n/**\r\n* @desc The scroll event handler. Itertates through the `callback` array and invokes each callback in the Array\r\n*/\r\nScrollService.onScroll = function() {\r\n\tfor (var i = 0; i < this.callbacks.length; i++) {\r\n\t\t\tthis.callbacks[i].callback();\r\n\t}\r\n};\r\n\r\n/**\r\n * @desc A hook for pushing a callback function\r\n * into the `callbacks` array. A unique\r\n * ID value for the callback is generated\r\n * and a function is returned for removing\r\n * the callback if need be.\r\n *\r\n * @param {Function} callback A function to invoke by the ScrollService\r\n * @return {Function} `removeCallback` A function which will remove an entry from the `callbacks` array\r\n */\r\nScrollService.addCallback = function (callback) {\r\n\t// Generate an id for the callback\r\n\tvar id = getId();\r\n\r\n\t// Push function into array with a unique id\r\n\tthis.callbacks.push({\r\n\t\tid,\r\n\t\tcallback\r\n\t});\r\n\r\n\t// Return the remove function\r\n\treturn this.removeCallback.bind(this, id);\r\n};\r\n\r\n/**\r\n * Filters through the `callback` array and removes\r\n * the entry that corresponds to the id passed\r\n * in as an argument\r\n *\r\n * @param {Number} id An id value to filter by\r\n */\r\nScrollService.removeCallback = function (id) {\r\n\tthis.callbacks = this.callbacks.filter((item) => {\r\n\t\treturn item.id !== id;\r\n\t});\r\n};\r\n\r\n\r\nexport {ScrollService};","var CustomButtonService = {};\r\n\r\nfunction isHexColor(color) {\r\n return /^#([0-9A-F]{3}){1,2}$/i.test(color);\r\n}\r\n\r\nfunction colorToRGB(color) {\r\n if (isHexColor(color)) {\r\n // If it's a hex color, convert directly to RGB\r\n let r, g, b;\r\n if (color.length === 4) { // #RGB\r\n r = parseInt(color[1] + color[1], 16);\r\n g = parseInt(color[2] + color[2], 16);\r\n b = parseInt(color[3] + color[3], 16);\r\n } else if (color.length === 7) { // #RRGGBB\r\n r = parseInt(color[1] + color[2], 16);\r\n g = parseInt(color[3] + color[4], 16);\r\n b = parseInt(color[5] + color[6], 16);\r\n }\r\n return `rgb(${r}, ${g}, ${b})`;\r\n } else {\r\n // If it's a color name, use the colorNameToRGB function\r\n return colorNameToRGB(color);\r\n }\r\n}\r\n\r\nfunction colorNameToRGB(colorName) {\r\n // Create a temporary element\r\n const div = document.createElement(\"div\");\r\n // Set the color\r\n div.style.color = colorName;\r\n // Attach to the DOM to ensure styles are applied\r\n document.body.appendChild(div);\r\n // Use getComputedStyle to get the color value\r\n const rgb = getComputedStyle(div).color;\r\n // Clean up by removing the element\r\n document.body.removeChild(div);\r\n return rgb;\r\n}\r\n\r\nfunction getIsDark(color) {\r\n const rgb = colorToRGB(color).match(/\\d+/g); // Extract RGB components\r\n const [r, g, b] = rgb.map(Number); // Convert to numbers\r\n // Calculate luminance\r\n const luminance = 0.299 * r + 0.587 * g + 0.114 * b;\r\n console.log(luminance)\r\n var isDark = luminance < 220; // Threshold of luminance, might need adjusting\r\n\r\n return isDark;\r\n}\r\n\r\nCustomButtonService.init = function () {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n document.querySelectorAll('[class*=\"button--custom-\"]').forEach(function (element) {\r\n const classRegex = /button--custom-(?[^\\-]+)(?:-(?.+))?/i;\r\n var match = classRegex.exec(element.className);\r\n var textColor, bgColor, borderColor;\r\n var isDark = true;\r\n\r\n if (match) {\r\n if (match.groups[\"bgColor\"]) {\r\n bgColor = match.groups[\"bgColor\"]\r\n }\r\n\r\n isDark = getIsDark(bgColor)\r\n if (match.groups[\"textColor\"]) {\r\n textColor = match.groups[\"textColor\"]\r\n } else if (isDark) {\r\n textColor = \"#ffffff\";\r\n } else {\r\n textColor = \"#000000\";\r\n }\r\n\r\n if (isDark) {\r\n borderColor = bgColor\r\n } else {\r\n borderColor = textColor\r\n }\r\n } else {\r\n var textColor = element.getAttribute('data-text-color');\r\n var bgColor = element.getAttribute('data-bg-color');\r\n var borderColor = element.getAttribute('data-border-color');\r\n }\r\n\r\n //Default\r\n element.style.setProperty('--text-color', textColor);\r\n element.style.setProperty('--bg-color', bgColor);\r\n element.style.setProperty('--border-color', borderColor);\r\n\r\n //Active\r\n var activeTextColor = element.getAttribute('data-active-text-color');\r\n if (!activeTextColor) {\r\n activeTextColor = bgColor;\r\n }\r\n element.style.setProperty('--active-text-color', activeTextColor);\r\n\r\n var activeBgColor = element.getAttribute('data-active-bg-color');\r\n if (!activeBgColor) {\r\n activeBgColor = textColor\r\n }\r\n element.style.setProperty('--active-bg-color', activeBgColor);\r\n\r\n var activeBorderColor = element.getAttribute('data-active-border-color');\r\n if (!activeBorderColor) {\r\n if (isDark) {\r\n activeBorderColor = bgColor\r\n } else {\r\n activeBorderColor = textColor\r\n }\r\n }\r\n element.style.setProperty('--active-border-color', activeBorderColor);\r\n });\r\n });\r\n}\r\n\r\n\r\nexport { CustomButtonService };","import { KeyUpService } from './keyupservice';\r\nimport { ResizeService } from './resizeservice';\r\nimport { ScrollService } from './scrollservice';\r\n\r\n//SHARED\r\nimport { CustomButtonService } from '../../../../../_shared/src/js/common/services/custombuttonservice';\r\n\r\n/**\r\n * Services\r\n */\r\nvar Services = {\r\n\r\n /**\r\n * @desc Initialize the services\r\n */\r\n init: function () {\r\n this.CustomButtonService.init();\r\n this.KeyUpService.init();\r\n this.ResizeService.init();\r\n this.ScrollService.init();\r\n },\r\n\r\n /**\r\n * @desc Assign KeyUpService to an object in Services\r\n */\r\n CustomButtonService: CustomButtonService,\r\n\r\n /**\r\n * @desc Assign KeyUpService to an object in Services\r\n */\r\n KeyUpService: KeyUpService,\r\n\r\n /**\r\n * @desc Assign ResizeService to an object in Services\r\n */\r\n ResizeService: ResizeService,\r\n\r\n /**\r\n * @desc Assign ScrollService to an object in Services\r\n */\r\n ScrollService: ScrollService\r\n\r\n};\r\n\r\nexport { Services };\r\n","import { EVENTS, MISC, SELECTORS } from '../../common/constants';\r\nimport { Services } from '../../common/services';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\n\r\n\r\nexport function tabs(element) {\r\n \r\n // Find the tablinks & tab panels\r\n\tvar tablinks = element.querySelectorAll(SELECTORS.TAB_LIST);\r\n\tvar tabpanels = element.querySelectorAll(SELECTORS.TABPANEL);\r\n\r\n\t// listen for click & show/hide tab\r\n\tfor (var i = 0; i < tablinks.length; i++) {\r\n\t\ttablinks[i].addEventListener(EVENTS.CLICK, tabTriggerHandler(tablinks[i]));\r\n\t}\r\n\t\r\n\t/**\r\n\t* event handler for showHidePanels\r\n\t*\r\n\t*/\r\n function tabTriggerHandler(tablink) {\r\n\t\treturn function(event) {\r\n\t\t\tshowHidePanels(event, tablink);\r\n\t\t};\r\n\t}\r\n\t\r\n\t/**\r\n\t* show/hide Panels\r\n\t*\r\n\t* @param {DOM element} the tablink that was clicked\r\n\t*\r\n\t*/\r\n function showHidePanels(event, tablink) {\r\n \tevent.preventDefault();\r\n \tvar id = tablink.querySelector(SELECTORS.ANCHOR).getAttribute(MISC.HREF);\r\n\t\tvar tabWrapper = queryselectorparents(tablink, '.tabs-container');\r\n\t\tvar ourTablinks = tabWrapper.querySelectorAll(SELECTORS.TAB_LIST);\r\n\t\tvar ourTabpanels = tabWrapper.querySelectorAll(SELECTORS.TABPANEL);\r\n \t// Hide every tab\r\n\t\tfor (var i = 0; i < ourTablinks.length; i++) {\r\n\t\t\tourTablinks[i].setAttribute(MISC.ARIA_SELECTED, MISC.FALSE);\r\n\t\t\tourTabpanels[i].setAttribute(MISC.ARIA_HIDDEN, MISC.TRUE);\r\n\t\t}\r\n\t\t// show only the one we chose\r\n\t\ttablink.setAttribute(MISC.ARIA_SELECTED, MISC.TRUE);\r\n\t\telement.querySelector(id).parentNode.setAttribute(MISC.ARIA_HIDDEN, MISC.FALSE);\r\n }\r\n\r\n return {\r\n \ttabTriggerHandler\r\n }\r\n}","/****\r\n * Tooltips utility\r\n *\r\n *
    \r\n * {{this.title}}\r\n * {{this.tooltip.copy}}\r\n *
    \r\n *\r\n * Note that the surrounding element can be any tag; it doesn't have to be a dt tag.\r\n *\r\n */\r\n\r\nimport { EVENTS, CLASS_NAMES, SELECTORS } from '../../common/constants';\r\n\r\nexport function tooltips(element) {\r\n // find tooltip links\r\n var tooltips = element.querySelectorAll(SELECTORS.TOOLTIP_LINK);\r\n\r\n for (var i = 0; i < tooltips.length; i++) {\r\n var tooltipContainer = tooltips[i].parentNode;\r\n tooltips[i].addEventListener(EVENTS.MOUSEOVER, _returnTooltipShowHandler(tooltipContainer));\r\n tooltips[i].addEventListener(EVENTS.MOUSEOUT, _returnTooltipHideHandler(tooltipContainer));\r\n tooltips[i].addEventListener(EVENTS.FOCUS, _returnTooltipShowHandler(tooltipContainer));\r\n tooltips[i].addEventListener(EVENTS.BLUR, _returnTooltipHideHandler(tooltipContainer));\r\n tooltips[i].addEventListener(EVENTS.CLICK, _returnTooltipShowHandler(tooltipContainer));\r\n }\r\n\r\n function _returnTooltipShowHandler(tooltipContainer) {\r\n return function() {\r\n _showTooltips(tooltipContainer);\r\n };\r\n }\r\n\r\n function _returnTooltipHideHandler(tooltipContainer) {\r\n return function() {\r\n _hideTooltips(tooltipContainer);\r\n };\r\n }\r\n\r\n\r\n function _showTooltips(tooltipContainer) {\r\n event.preventDefault();\r\n\r\n var tooltip = tooltipContainer.querySelector(SELECTORS.TOOLTIP);\r\n\r\n tooltip.setAttribute('aria-hidden', false);\r\n\r\n _checkPosition(tooltip);\r\n }\r\n\r\n function _hideTooltips(tooltipContainer) {\r\n event.preventDefault();\r\n\r\n var tooltip = tooltipContainer.querySelector(SELECTORS.TOOLTIP);\r\n\r\n tooltip.setAttribute('aria-hidden', true);\r\n }\r\n\r\n function _checkPosition(tooltip) {\r\n var bounds = tooltip.getBoundingClientRect();\r\n var viewportWidth = document.documentElement.offsetWidth;\r\n if (bounds.right > viewportWidth) {\r\n tooltip.classList.add('right');\r\n }\r\n\r\n }\r\n\r\n}","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n \\\"\"\n\\r\\n
    \\r\\n \"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"dateline\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":16},\"end\":{\"line\":6,\"column\":103}}})) != null ? stack1 : \"\")\n + \"\\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"title\") : depth0), depth0))\n + \"
    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"copy\") : depth0), depth0))\n + \"

    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"articles\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":12,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \"\n + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"suggestion\") || (depth0 != null ? lookupProperty(depth0,\"suggestion\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"suggestion\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":12},\"end\":{\"line\":4,\"column\":28}}}) : helper))) != null ? stack1 : \"\")\n + \"\\r\\n
  • \\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
      \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"results\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":2},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"
    \";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression;\n\n return \"
  • \\r\\n \"\n + alias2(alias1(depth0, depth0))\n + \"\\r\\n
  • \\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"recentSearches\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":5,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"shipping\") : depth0)) != null ? lookupProperty(stack1,\"shipdate\") : stack1), depth0))\n + \"

    \\r\\n\\r\\n
      \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"shipping\") : depth0)) != null ? lookupProperty(stack1,\"points\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":12},\"end\":{\"line\":8,\"column\":21}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"
  • \"\n + ((stack1 = container.lambda(depth0, depth0)) != null ? stack1 : \"\")\n + \"
  • \\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \"\n + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"emptyShipping\") || (depth0 != null ? lookupProperty(depth0,\"emptyShipping\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"emptyShipping\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":8},\"end\":{\"line\":11,\"column\":27}}}) : helper))) != null ? stack1 : \"\")\n + \"\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"sku\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(4, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":12,\"column\":11}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    SKU: \"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"sku\") || (depth0 != null ? lookupProperty(depth0,\"sku\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"sku\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":54},\"end\":{\"line\":4,\"column\":61}}}) : helper)))\n + \"

    \\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
      \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"specs\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":12},\"end\":{\"line\":15,\"column\":21}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \\r\\n \"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"tooltip\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.program(9, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":20},\"end\":{\"line\":11,\"column\":124}}})) != null ? stack1 : \"\")\n + \"\\r\\n \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"copy\") : depth0), depth0))\n + \"\\r\\n \"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"tooltip\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":20},\"end\":{\"line\":13,\"column\":130}}})) != null ? stack1 : \"\")\n + \"\\r\\n \\r\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n return \" class=\\\"hof-tooltip-container\\\"\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"title\") : depth0), depth0))\n + \"\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"title\") : depth0), depth0));\n},\"11\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"tooltip\") : depth0), depth0))\n + \"\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \"\n + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"emptySpecs\") || (depth0 != null ? lookupProperty(depth0,\"emptySpecs\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"emptySpecs\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":8},\"end\":{\"line\":18,\"column\":24}}}) : helper))) != null ? stack1 : \"\")\n + \"\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"sku\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":4},\"end\":{\"line\":5,\"column\":11}}})) != null ? stack1 : \"\")\n + \"\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"specs\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(13, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":4},\"end\":{\"line\":19,\"column\":11}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"header\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":4,\"column\":11}}})) != null ? stack1 : \"\")\n + \"
      \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"items\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":8},\"end\":{\"line\":15,\"column\":17}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"header\") : depth0), depth0))\n + \"

    \\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\\"\"\n\\r\\n
    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"title\") : depth0), depth0))\n + \"

    \\r\\n

    Starting at \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"cost\") : depth0), depth0))\n + \"

    \\r\\n \"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"metals\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":20},\"end\":{\"line\":12,\"column\":87}}})) != null ? stack1 : \"\")\n + \"\\r\\n
    \\r\\n
  • \\r\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"metals\") : depth0), depth0))\n + \"

    \";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"sections\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"
    \\r\\n \\r\\n\\r\\n
      \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"values\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(2, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":12},\"end\":{\"line\":13,\"column\":21}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\\r\\n
    \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"disabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0, blockParams, depths),\"inverse\":container.program(8, data, 0, blockParams, depths),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":16},\"end\":{\"line\":12,\"column\":23}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"
  • \\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n return \" data-default=\\\"true\\\"\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n return \" data-default=\\\"false\\\"\";\n},\"8\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \"\n + alias3(alias2((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"\\r\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n return \" class=\\\"hof-selected\\\" aria-selected=\\\"true\\\"\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \" aria-selected=\\\"false\\\"\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"filters\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true,\"useDepths\":true});","import { MISC } from './../constants';\r\n\r\n/**\r\n * Returns the result of an XHR request for JSON\r\n *\r\n * @param {string} endpoint The URL of the request\r\n * @param {Object} data Data (if any) to send with POST\r\n */\r\nexport function getJSON(endpoint, data, requestHeader) {\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n //if we have data to send, POST, otherwise, GET\r\n if (data !== false && typeof (data) !== 'undefined') {\r\n xhr.open('post', endpoint, true);\r\n if (requestHeader) {\r\n xhr.setRequestHeader(\"Content-type\", requestHeader);\r\n } else {\r\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\r\n }\r\n } else {\r\n xhr.open('get', endpoint, true);\r\n }\r\n xhr.responseType = 'json';\r\n xhr.onload = function () {\r\n var status = xhr.status;\r\n if (status == 200) {\r\n if (typeof xhr.response == 'string') {\r\n resolve(JSON.parse(xhr.response));\r\n } else {\r\n resolve(xhr.response);\r\n }\r\n } else {\r\n reject(status);\r\n }\r\n };\r\n xhr.onerror = function () {\r\n reject('There was an error making this request.');\r\n };\r\n if (data !== false && typeof (data) !== 'undefined') {\r\n xhr.send(data);\r\n } else {\r\n xhr.send();\r\n }\r\n });\r\n}\r\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \"\n + alias3(alias2((depth0 != null ? lookupProperty(depth0,\"label\") : depth0), depth0))\n + \"\\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n return \" class=\\\"hof-selected\\\" aria-selected=\\\"true\\\"\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n return \" aria-selected=\\\"false\\\"\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n return \" data-default=\\\"true\\\"\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n return \" data-default=\\\"false\\\"\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \\r\\n
    \\r\\n
    \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"sorter\") : depth0)) != null ? lookupProperty(stack1,\"label\") : stack1), depth0))\n + \"
    \\r\\n \\r\\n\\r\\n
      \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"sorter\") : depth0)) != null ? lookupProperty(stack1,\"values\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":12},\"end\":{\"line\":9,\"column\":21}}})) != null ? stack1 : \"\")\n + \"
    \\r\\n\\r\\n
    \\r\\n
    \";\n},\"useData\":true,\"useDepths\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \"aria-hidden=\\\"false\\\"\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n return \"
    \\r\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n return \"
    \\r\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n return \" class=\\\"not-empty\\\"\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \" selected\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n return \"
    \\r\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n return \"
    \\r\\n\";\n},\"17\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n return \" checked\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"header\") : stack1), depth0))\n + \"
    \\r\\n\\r\\n
    \\r\\n

    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"name\") : stack1), depth0))\n + \"

    \\r\\n

    Birth date: \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"birthmonth\") : stack1), depth0))\n + \" \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"birthday\") : stack1), depth0))\n + \"

    \\r\\n

    Birth year: \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"birthyear\") : stack1), depth0))\n + \"

    \\r\\n

    Gender: \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"gender\") : stack1), depth0))\n + \"

    \\r\\n\\r\\n

    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"disclaimer\") : stack1), depth0))\n + \"

    \\r\\n\\r\\n

    \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"cta\") : stack1)) != null ? lookupProperty(stack1,\"copy\") : stack1), depth0))\n + \"

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"FieldErrors\") : depth0)) != null ? lookupProperty(stack1,\"hof-fullname\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":12},\"end\":{\"line\":21,\"column\":19}}})) != null ? stack1 : \"\")\n + \" \"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"FieldErrors\") : depth0)) != null ? lookupProperty(stack1,\"hof-fullname\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":12},\"end\":{\"line\":22,\"column\":127}}})) != null ? stack1 : \"\")\n + \"\\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"FieldErrors\") : depth0)) != null ? lookupProperty(stack1,\"hof-birthyear\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(15, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":81,\"column\":8},\"end\":{\"line\":85,\"column\":15}}})) != null ? stack1 : \"\")\n + \" \"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"FieldErrors\") : depth0)) != null ? lookupProperty(stack1,\"hof-birthyear\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":86,\"column\":8},\"end\":{\"line\":86,\"column\":125}}})) != null ? stack1 : \"\")\n + \"\\r\\n \\r\\n \\r\\n
    \\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"FieldErrors\") : depth0)) != null ? lookupProperty(stack1,\"hof-email\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(15, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":90,\"column\":8},\"end\":{\"line\":94,\"column\":15}}})) != null ? stack1 : \"\")\n + \" \"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"FieldErrors\") : depth0)) != null ? lookupProperty(stack1,\"hof-email\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":95,\"column\":12},\"end\":{\"line\":95,\"column\":121}}})) != null ? stack1 : \"\")\n + \"\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \"\n + alias2(alias1(((stack1 = ((stack1 = ((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"basics\") : stack1)) != null ? lookupProperty(stack1,\"editstate\") : stack1)) != null ? lookupProperty(stack1,\"cancelcta\") : stack1)) != null ? lookupProperty(stack1,\"copy\") : stack1), depth0))\n + \"\\r\\n
    \\r\\n\\r\\n \\r\\n
    \\r\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \"\n + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"account\") : stack1)) != null ? lookupProperty(stack1,\"error\") : stack1), depth0))\n + \"

    \\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \"\n + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"account\") : stack1)) != null ? lookupProperty(stack1,\"success\") : stack1), depth0))\n + \"

    \\r\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n return \" class=\\\"not-empty\\\"\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
    \"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"settings\") : depth0)) != null ? lookupProperty(stack1,\"account\") : stack1)) != null ? lookupProperty(stack1,\"header\") : stack1), depth0))\n + \"
    \\r\\n\\r\\n\\r\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n \\\"\"\n\\r\\n
    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"title\") : depth0), depth0))\n + \"

    \\r\\n

    Starting at \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"cost\") : depth0), depth0))\n + \"

    \\r\\n \"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"metals\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":8},\"end\":{\"line\":8,\"column\":75}}})) != null ? stack1 : \"\")\n + \"\\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"

    \"\n + container.escapeExpression(container.lambda((depth0 != null ? lookupProperty(depth0,\"metals\") : depth0), depth0))\n + \"

    \";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"items\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":12,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n \\\"\"\n\\r\\n
    \\r\\n \"\n + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"dateline\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":8},\"end\":{\"line\":6,\"column\":95}}})) != null ? stack1 : \"\")\n + \"\\r\\n
    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"title\") : depth0), depth0))\n + \"
    \\r\\n

    \"\n + alias2(alias1((depth0 != null ? lookupProperty(depth0,\"copy\") : depth0), depth0))\n + \"

    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"items\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":12,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true});","import { EVENTS, SELECTORS, CLASS_NAMES, MISC } from '../../common/constants';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\n\r\nvar Accordion = {\r\n\r\n init: function(element) {\r\n this.element = element;\r\n\r\n this.accordionHeads = element.querySelectorAll(SELECTORS.ACCORDION_HEAD);\r\n\r\n for (var i = 0; i < this.accordionHeads.length; i++) {\r\n this.accordionHeads[i].addEventListener(EVENTS.CLICK, _toggleAccordion);\r\n }\r\n\r\n var tab = document.querySelector(`${window.location.hash} ${SELECTORS.ACCORDION_HEAD}`);\r\n if(tab) {\r\n if (tab.onclick) {\r\n tab.onclick();\r\n } else if (tab.click) {\r\n tab.click();\r\n }\r\n }\r\n\r\n function _toggleAccordion() {\r\n event.preventDefault();\r\n\r\n var container = queryselectorparents(event.target, SELECTORS.LIST_ITEM);\r\n var copy = container.querySelector(SELECTORS.ACCORDION_COPY);\r\n\r\n container.classList.toggle(CLASS_NAMES.OPEN);\r\n if(copy.getAttribute(MISC.ARIA_HIDDEN)) {\r\n copy.setAttribute(MISC.ARIA_HIDDEN, false);\r\n } else {\r\n copy.setAttribute(MISC.ARIA_HIDDEN, true);\r\n }\r\n\r\n if(container.classList.contains(CLASS_NAMES.OPEN)) {\r\n history.pushState({}, '', `#${container.id}`);\r\n }\r\n }\r\n\r\n }\r\n};\r\n\r\nexport default Accordion;\r\n","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport { tabs } from '../../common/utils/tabs';\r\nimport { serializeform } from '../../common/utils/serializeform';\r\nimport { getJSON } from '../../common/utils/getjson';\r\n\r\n\r\nvar ArticleTiles = {\r\n // Initialize the module\r\n init : function(element) {\r\n\r\n var _self = this;\r\n\r\n this.element = element;\r\n this.articlesTemplate = require(\"../../templates/partials/articletilesitems.hbs\");\r\n\r\n this.moreForms = this.element.querySelectorAll('form.hof-more-article-tiles');\r\n\r\n for (var i = 0; i < this.moreForms.length; i++) {\r\n this.moreForms[i].addEventListener(EVENTS.SUBMIT, _moreArticles);\r\n }\r\n\r\n tabs(this.element);\r\n\r\n function _moreArticles() {\r\n event.preventDefault();\r\n \r\n event.target.querySelector('input[name=\"pageNum\"]').value = parseInt(event.target.querySelector('input[name=\"pageNum\"]').value) + 1;\r\n var configOptions = serializeform(event.target);\r\n var config = JSON.parse(configOptions);\r\n _self.section = config.formtype;\r\n _self.form = event.target;\r\n\r\n var productServiceURL = this.getAttribute('action');\r\n\r\n var result = getJSON(productServiceURL, configOptions).then(function(data) {\r\n // Update the page using Handlebars template\r\n var newArticlesList = _self.articlesTemplate(data);\r\n var target = _self.element.querySelector('#' + _self.section);\r\n var button = _self.form.querySelector('button');\r\n\r\n var more = data.more;\r\n\r\n if(!more) {\r\n button.disabled = true;\r\n button.setAttribute(MISC.ARIA_HIDDEN, true);\r\n }\r\n\r\n target.insertAdjacentHTML('beforeend', newArticlesList);\r\n });\r\n\r\n }\r\n }\r\n};\r\n\r\nexport default ArticleTiles;","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport videojs from 'video.js';\r\nimport 'videojs-youtube';\r\n\r\nvar BackgroundVideo = {\r\n\t\r\n\t// Initialize the module\r\n\tinit : function(element) {\r\n\t\t/**\r\n\t\t* DOM node that is passed into the module\r\n\t\t*\r\n\t\t* @property {Object} element DOM node that is passed into the module\r\n\t\t*/\r\n\t\tthis.element = element;\r\n\t\tthis.video = this.element.querySelector(SELECTORS.VIDEO_PLAYER);\r\n\t\t\r\n\t\tthis.initVideo();\r\n\t\t\r\n\t},\r\n\t\r\n\t/**\r\n\t* Initializes video\r\n\t*\r\n\t*/\r\n\tinitVideo: function() {\r\n\t\tvar _self = this;\r\n\t\tvar video = videojs(this.video).ready(function(){\r\n\t\t var player = this;\r\n\t\t \r\n\t\t\tplayer.muted(true);\r\n\t\t\tplayer.play();\r\n\t\t \r\n\t\t // super-hacky but Safari 9 freaks out when videos play \r\n\t\t // behind other elements & this forces a repaint to correct that\r\n\t\t player.on(EVENTS.PLAYING, function() {\r\n\t\t \t// hack won't work unless there's a delay\r\n\t\t \t// making this a hack of the hack\r\n\t\t \tsetTimeout(function() {\r\n\t\t\t\tdocument.body.removeChild(document.body.appendChild(document.createElement('style')));\r\n\t\t\t}, 500);\r\n\t\t });\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n\r\n\r\n};\r\n\r\nexport default BackgroundVideo;","import { EVENTS, SELECTORS } from '../../common/constants';\r\nimport { slider } from '../../common/utils/slider';\r\nimport Swiper from 'swiper/dist/js/swiper.min.js';\r\n\r\nvar ContentPromo = {\r\n\r\n init: function(element) {\r\n this.element = element;\r\n this.slider = element.querySelector(SELECTORS.SLIDER);\r\n // slider(this.slider, 2);\r\n\r\n var swiper = this.slider.querySelectorAll(SELECTORS.SLIDER_WRAPPER)[0];\r\n var nextArrow = this.slider.querySelectorAll(SELECTORS.SLIDER_BTN_RIGHT)[0];\r\n var prevArrow = this.slider.querySelectorAll(SELECTORS.SLIDER_BTN_LEFT)[0];\r\n\r\n new Swiper (swiper, {\r\n // Optional parameters\r\n direction: 'horizontal',\r\n loop: false,\r\n slidesPerView: 'auto',\r\n watchOverflow: true,\r\n slideClass: 'hof-slider-item',\r\n wrapperClass: 'hof-slider-row',\r\n navigation: {\r\n nextEl: nextArrow,\r\n prevEl: prevArrow,\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport default ContentPromo;","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport { serializeform } from '../../common/utils/serializeform';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { setErrors } from '../atoms/Forms';\r\n\r\n\r\nvar CreateAccount = {\r\n // Initialize the module\r\n init: function (element) {\r\n\r\n var _self = this;\r\n\r\n this.element = element;\r\n\r\n this.creator = element.querySelector('.hof-create-account');\r\n this.confirmation = element.querySelector('.hof-created-account');\r\n\r\n this.creatorForm = element.querySelector(SELECTORS.FORM);\r\n\r\n if(this.creatorForm) {\r\n this.creatorForm.addEventListener(EVENTS.SUBMIT, _createTheAccount);\r\n }\r\n\r\n function _createTheAccount() {\r\n event.preventDefault();\r\n\r\n var configOptions = serializeform(event.target);\r\n var config = JSON.parse(configOptions);\r\n _self.form = event.target;\r\n\r\n var productServiceURL = this.getAttribute('action');\r\n\r\n var result = getJSON(productServiceURL, configOptions).then(function(data) {\r\n\r\n if(data.accountcreated) {\r\n _self.creator.setAttribute(MISC.ARIA_HIDDEN, true);\r\n _self.confirmation.setAttribute(MISC.ARIA_HIDDEN, false);\r\n }\r\n else {\r\n setErrors(_self.form, data.FieldErrors);\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n\r\nexport default CreateAccount;\r\n","import { EVENTS, SELECTORS, MISC, CLASS_NAMES } from '../../common/constants';\r\nimport Swiper from 'swiper/dist/js/swiper.min.js';\r\n\r\nvar Difference = {\r\n\r\n init: function(element) {\r\n\r\n this.element = element;\r\n this.slider;\r\n\r\n var resizeTimer;\r\n var selector = SELECTORS.DIFFERENCE_ITEMS + ' ' + SELECTORS.ANCHOR;\r\n var sliderEl = element.querySelectorAll(SELECTORS.DIFFERENCE_SLIDER)[0];\r\n\r\n this.differenceItemLinks = this.element.querySelectorAll(selector);\r\n window.addEventListener(\"resize\", e => {\r\n clearTimeout(resizeTimer);\r\n\r\n resizeTimer = setTimeout(() => {\r\n if (window.innerWidth < 960) {\r\n this.enableSlider(sliderEl);\r\n } else if(this.slider) {\r\n this.slider.destroy(true, true);\r\n this.slider = undefined;\r\n }\r\n }, 250);\r\n });\r\n\r\n for (var i=0; i < this.differenceItemLinks.length; i++) {\r\n this.differenceItemLinks[i].addEventListener(EVENTS.CLICK, _switchDifference);\r\n }\r\n\r\n if (window.innerWidth < 960) {\r\n this.enableSlider(sliderEl);\r\n }\r\n \r\n function _switchDifference() {\r\n event.preventDefault();\r\n\r\n if (window.innerWidth < 960) {\r\n return;\r\n }\r\n\r\n var target = document.getElementById(event.target.getAttribute(MISC.ARIA_CONTROLS));\r\n var opens = element.querySelectorAll('.' + CLASS_NAMES.OPEN);\r\n\r\n var imgTarget = element.querySelector(SELECTORS.DIFFERENCE_IMAGE);\r\n var imgTargetWrapper = element.querySelector(SELECTORS.DIFFERENCE_IMAGE_WRAPPER);\r\n var imgTargetSrc = event.target.getAttribute(SELECTORS.DIFFERENCE_IMAGE_SRC);\r\n var imgTargetAlt = event.target.getAttribute(SELECTORS.DIFFERENCE_IMAGE_ALT);\r\n\r\n for (var j=0; j < opens.length; j++) {\r\n opens[j].classList.remove(CLASS_NAMES.OPEN);\r\n }\r\n\r\n target.classList.add(CLASS_NAMES.OPEN);\r\n event.target.classList.add(CLASS_NAMES.OPEN);\r\n\r\n imgTarget.setAttribute('src', imgTargetSrc);\r\n imgTarget.setAttribute('alt', imgTargetAlt);\r\n imgTargetWrapper.setAttribute('style', 'background-image: url(\"'+ imgTargetSrc +'\")')\r\n }\r\n },\r\n enableSlider: function(el) {\r\n this.slider = new Swiper (el, {\r\n // Optional parameters\r\n direction: 'horizontal',\r\n loop: false,\r\n slidesPerView: 'auto',\r\n watchOverflow: true,\r\n slideClass: 'hof-difference-item',\r\n wrapperClass: 'hof-difference-items',\r\n scrollbar: {\r\n hide: true\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport default Difference;","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { serializeform } from '../../common/utils/serializeform';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\nimport { setErrors } from '../atoms/Forms';\r\n\r\nimport VanillaModal from 'vanilla-modal';\r\n\r\nvar EmailSignup = {\r\n\t\r\n\t// Initialize the module\r\n\tinit: function(element) {\r\n\t\t\r\n\t\tvar _self = this;\r\n\t\t\r\n\t\tthis.element = element;\r\n\t\tthis.newsletterForm = this.element.querySelector('#newsletter-form');\r\n\t\tthis.submit = this.element.querySelector('#newsletter-form button[type=\"submit\"]');\r\n\t\t\r\n\t\tif(this.newsletterForm != null) {\r\n this.newsletterForm.addEventListener(EVENTS.SUBMIT, this.sendForm.bind(this));\r\n }\r\n\t},\r\n\t\r\n\tsendForm : function() {\r\n event.preventDefault();\r\n var _self = this;\r\n\r\n this.theForm = event.target;\r\n var configOptions = serializeform(this.theForm);\r\n var configObject = JSON.parse(configOptions);\r\n\r\n var serviceURL = this.theForm.getAttribute('action');\r\n var result = getJSON(serviceURL, configOptions)\r\n .then(r => {\r\n if (!r.Success) {\r\n this.theForm.querySelector('.hof-form-error').classList.remove('success');\r\n }\r\n if (r.FieldErrors) {\r\n\t\t\t\t\tsetEmailErrors(this.theForm, r.FieldErrors);\r\n }\r\n if (r.Message) {\r\n this.theForm.querySelector('.hof-form-error').innerHTML = r.Message;\r\n }\r\n\t\t\t\tif(r.FieldErrors.length == 0 && r.promocode != \"\") {\r\n\t\t\t\t\topenPromoCodeModal(r.promocode);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n });\r\n\r\n },\r\n\t\r\n};\r\n\r\nexport default EmailSignup;\r\n\r\nexport function openPromoCodeModal(promocode) {\r\n\tconst modal = new VanillaModal({\r\n\t\tmodal : \".hof-modal\",\r\n\t\tmodalInner : \".hof-modal-inner\",\r\n\t\tmodalContent : \".hof-modal-content\",\r\n\t\tclickOutside: false,\r\n\t\t});\r\n\t\tdocument.querySelector('.hof-footer-modal-promo-code').innerHTML = promocode;\r\n\t\tmodal.open('.hof-footer-modal-wrapper');\r\n}\r\n\r\nexport function setEmailErrors(element, errors) {\r\n\tclearEmailErrors(element);\r\n errors.forEach(item => {\r\n var input = element.querySelector(`#${item.FieldId}`);\r\n if (input) {\r\n var parent = queryselectorparents(input, '.hof-input');\r\n var label = findLabelForEmailControl(element, input);\r\n if (parent) {\r\n parent.classList.add('hof-error');\r\n }\r\n if (label) {\r\n label.innerHTML = item.ErrorText;\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function clearEmailErrors(element) {\r\n\tconst inputlist = [].slice.call(element.querySelectorAll('input:not([type=\"file\"])')); // NodeLists to Arrays\r\n const textareas = [].slice.call(element.querySelectorAll('textarea'));\r\n const inputs = inputlist.concat(textareas);\r\n let input;\r\n for(var i = 0; i < inputs.length; i++) {\r\n input = inputs[i];\r\n var parent = queryselectorparents(input, '.hof-input');\r\n var label = findLabelForEmailControl(element, input);\r\n if (parent) {\r\n parent.classList.remove('hof-error');\r\n }\r\n if (label) {\r\n label.innerHTML = '';\r\n }\r\n }\r\n}\r\n\r\nexport function findLabelForEmailControl(container, el) {\r\n var idVal = el.id;\r\n var labels = container.querySelectorAll('label.newsletter-error-label');\r\n for( var i = 0; i < labels.length; i++ ) {\r\n if (labels[i].htmlFor == idVal) {\r\n return labels[i];\r\n }\r\n }\r\n}","import { EVENTS, SELECTORS } from '../../common/constants';\r\nimport { slider } from '../../common/utils/slider';\r\nimport Swiper from 'swiper/dist/js/swiper.min.js';\r\n\r\nvar FeaturedImages = {\r\n\r\n init: function(element) {\r\n this.element = element;\r\n this.sliders = element.querySelectorAll(SELECTORS.SLIDER);\r\n \r\n for (var i=0; i 1) {\r\n var triggerOn = flipperscontainer.querySelector('[aria-hidden=true]');\r\n var triggerOff = this;\r\n triggerOff.setAttribute(MISC.ARIA_HIDDEN, true);\r\n triggerOn.setAttribute(MISC.ARIA_HIDDEN, false);\r\n }\r\n }\r\n }\r\n\r\n};\r\n\r\nexport default Flipper;","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { serializeform } from '../../common/utils/serializeform';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\nimport { setErrors } from '../atoms/Forms';\r\n\r\nimport VanillaModal from 'vanilla-modal';\r\n\r\nvar Footer = {\r\n // Initialize the module\r\n init : function(element) {\r\n\r\n var _self = this;\r\n\r\n this.element = element;\r\n this.newsletterForm = this.element.querySelector('#hof-footer-newsletter-form');\r\n this.countrySelect = this.element.querySelector('select[name=hof-country]');\r\n\t\tthis.submit = this.element.querySelector('#hof-footer-newsletter-form button[type=\"submit\"]');\r\n\r\n if(this.newsletterForm != null) {\r\n this.newsletterForm.addEventListener(EVENTS.SUBMIT, this.sendForm.bind(this));\r\n }\r\n\r\n if(this.countrySelect != null) {\r\n this.countrySelect.addEventListener(EVENTS.CHANGE, this.countryRedirect);\r\n }\r\n },\r\n\t\r\n sendForm : function() {\r\n event.preventDefault();\r\n var _self = this;\r\n\r\n this.theForm = event.target;\r\n var configOptions = serializeform(this.theForm);\r\n var configObject = JSON.parse(configOptions);\r\n\r\n var serviceURL = this.theForm.getAttribute('action');\r\n\r\n var result = getJSON(serviceURL, configOptions)\r\n .then(r => {\r\n if (!r.Success) {\r\n this.theForm.querySelector('.hof-form-error').classList.remove('success');\r\n }\r\n if (r.FieldErrors) {\r\n setErrors(this.theForm, r.FieldErrors);\r\n }\r\n if (r.Message) {\r\n this.theForm.querySelector('.hof-form-error').innerHTML = r.Message;\r\n }\r\n\t\t\t\tif(r.FieldErrors.length == 0 && r.promocode) {\r\n\t\t\t\t\tconst modal = new VanillaModal({\r\n\t\t\t\t\tmodal : \".hof-modal\",\r\n\t\t\t\t\tmodalInner : \".hof-modal-inner\",\r\n\t\t\t\t\tmodalContent : \".hof-modal-content\",\r\n\t\t\t\t\tclickOutside: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdocument.querySelector('.hof-footer-modal-promo-code').innerHTML = r.promocode;\r\n\t\t\t\t\tmodal.open('.hof-footer-modal-wrapper');\r\n\t\t\t\t}\r\n\t\t\t\t\r\n });\r\n\r\n },\r\n\r\n countryRedirect : function() {\r\n var url = this.value;\r\n\r\n window.location = url;\r\n\r\n }\r\n\r\n};\r\n\r\nexport default Footer;\r\n","const specialCharsRegex = /[.*+?^${}()|[\\]\\\\]/g;\r\nconst whitespacesRegexG = /\\s+/g;\r\nconst plusRegexG = /\\+/g;\r\n\r\nexport function encodeSpecialCharacters(str) {\r\n return str.replace(specialCharsRegex, '');\r\n}\r\n\r\nexport function encodeSpaces(term) {\r\n const escapedTerm = encodeSpecialCharacters(term);\r\n return escapedTerm.replace(whitespacesRegexG, '+');\r\n}\r\n\r\nexport function decodeSpaces(term) {\r\n return term.replace(plusRegexG, ' ');\r\n}","import cookie from 'js-cookie';\r\n\r\nconst COOKIE = 'hof-recent-searches';\r\n\r\nexport function updateRecentSearches(q) {\r\n let arr = getRecentSearches();\r\n const index = arr.indexOf(q);\r\n if (index >= 0) {\r\n arr = [q, ...arr.splice(0, index), ...arr.splice(index + 1)];\r\n } else {\r\n arr = [q, ...arr];\r\n }\r\n cookie.set(COOKIE, arr.splice(0, 2).join(','));\r\n}\r\n\r\nexport function getRecentSearches() {\r\n let recentSearches = cookie.get(COOKIE);\r\n let arr = [];\r\n if (recentSearches) {\r\n arr = recentSearches.split(',');\r\n }\r\n return arr;\r\n}","/*jshint loopfunc: true */\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { encodeSpaces, encodeSpecialCharacters } from '../../common/utils/encode';\r\nimport { getRecentSearches } from '../../common/utils/search';\r\nimport { decodeSpaces } from '../../common/utils/encode';\r\n\r\nconst whitespacesRegex = /\\s+/;\r\n\r\nconst SearchModal = {\r\n\t\r\n\t// Initialize the module\r\n\tinit(element) {\r\n\t\t/**\r\n\t\t* DOM node that is passed into the module\r\n\t\t*\r\n\t\t* @property {Object} element DOM node that is passed into the module\r\n\t\t*/\r\n this.$element = element;\r\n\r\n // bind lements\r\n this.$container = this.$element.parentNode;\r\n this.$form = this.$element.querySelector('form');\r\n this.$input = this.$element.querySelector('input');\r\n this.$loading = this.$container.querySelector('.hof-autocomplete-loading');\r\n this.$results = this.$container.querySelector('.hof-search-results__predictive');\r\n this.$recentSearches = this.$container.querySelector('.hof-search-results__recent');\r\n this.$recentSuggestions = this.$recentSearches.querySelector('.hof-search-suggestions');\r\n this.$popularSearches = this.$container.querySelector('.hof-search-results__popular');\r\n this.$popularSuggestions = this.$popularSearches.querySelector('.hof-search-suggestions');\r\n\r\n\t\t// templates to populate returned results\r\n\t\tthis.resultsTemplate = require (\"../../templates/partials/predictiveresults.hbs\");\r\n\t\tthis.recentTemplate = require (\"../../templates/partials/recentsearches.hbs\");\r\n \r\n // bind events\r\n this.$input.addEventListener('keyup', ::this.predictiveSearch);\r\n this.$form.addEventListener('submit', ::this.handleSubmit);\r\n \r\n // Get data attribute value\r\n this.frequentQueriesUrl = this.$container.dataset.frequentQueriesUrl;\r\n\r\n // Search page URL\r\n this.searchPageUrl = this.$form.getAttribute('action');\r\n\r\n this.updatePopularSearches();\r\n },\r\n \r\n open() {\r\n this.updateRecentSearches();\r\n\t\tthis.$input.focus();\r\n },\r\n\r\n updateRecentSearches() {\r\n let list = getRecentSearches();\r\n if (!list.length) {\r\n return;\r\n }\r\n list = list.map(item => decodeSpaces(item));\r\n const html = this.recentTemplate({ recentSearches: list });\r\n this.$recentSuggestions.innerHTML = html;\r\n const elements = this.$recentSuggestions.querySelectorAll('.hof-search-suggestion');\r\n this.bindClickSearchSuggestions(elements);\r\n this.$recentSearches.classList.add('active');\r\n },\r\n\r\n /**\r\n * Update popular searches section. The values should be defined as \r\n * data attribute (data-popular-searches), and they are comma-separated values\r\n */\r\n updatePopularSearches() {\r\n const elements = this.$popularSuggestions.querySelectorAll('.hof-search-suggestion');\r\n\r\n if (!elements.length) {\r\n return;\r\n }\r\n\r\n this.bindClickSearchSuggestions(elements);\r\n this.$popularSearches.classList.add('active');\r\n },\r\n\r\n\t/**\r\n * Sends value of search input to BE and gets suggested terms.\r\n * Up to 10 predictive results will be displayed as the user is typing.\r\n\t* \r\n\t*/\r\n\tpredictiveSearch(e) {\r\n const charCode = e.charCode || e.keyCode;\r\n let query = this.$input.value.trim();\r\n\r\n if (charCode === 27 || charCode === 13) {\r\n return;\r\n }\r\n \r\n this.$results.classList.remove('active');\r\n this.$results.innerHTML = '';\r\n\r\n if (this.frequentQueries && this.frequentQueries.length && query.length >= 3) {\r\n const suggestedTerms = this.getSuggestedTerms(this.frequentQueries);\r\n this.updateResults(suggestedTerms);\r\n\r\n } else if (query.length >= 3) {\r\n this.$loading.classList.add('visible');\r\n this.getFequentQueries()\r\n .then(::this.getSuggestedTerms)\r\n .then(::this.updateResults)\r\n .then(::this.hideLoading)\r\n .catch(::this.hideLoading);\r\n }\r\n },\r\n\r\n hideLoading() {\r\n this.$loading.classList.remove('visible');\r\n },\r\n \r\n getFequentQueries() {\r\n return getJSON(this.frequentQueriesUrl).then(data => {\r\n this.frequentQueries = data;\r\n return data;\r\n });\r\n },\r\n\r\n getSuggestedTerms(data) {\r\n let query = this.$input.value;\r\n\r\n if (!query || query.trim().length === 0) {\r\n return null;\r\n }\r\n\r\n return data\r\n .map((term, index) => ({ term, occurrences: this.match(query, term), index }))\r\n .sort((match1, match2) => {\r\n const r = match2.occurrences.length - match1.occurrences.length;\r\n if (r === 0) {\r\n return match1.index - match2.index\r\n }\r\n return r;\r\n })\r\n .slice(0, 10)\r\n .filter(match => match.occurrences.length)\r\n .map(match => ({ term: match.term, suggestion: this.highlight(match)}));\r\n },\r\n\r\n highlight({ term, occurrences }) {\r\n return occurrences.reduce((acc, pos, index, self) => {\r\n\r\n acc.result = acc.result +\r\n term.slice(acc.prevIndex, pos[0]) +\r\n `${term.slice(pos[0], pos[1])}`;\r\n\r\n if (self.length === index + 1) {\r\n acc.result = acc.result + term.slice(pos[1]);\r\n }\r\n\r\n acc.prevIndex = pos[1];\r\n\r\n return acc;\r\n\r\n }, {prevIndex: 0, result: ''}).result;\r\n },\r\n\r\n match(query, term) {\r\n let text = term;\r\n let regex;\r\n let array;\r\n let index;\r\n let lastIndex;\r\n let len;\r\n let escapedWord;\r\n \r\n return query\r\n .trim()\r\n .split(whitespacesRegex)\r\n .filter(word => word.length)\r\n .reduce(function(result, word) {\r\n escapedWord = encodeSpecialCharacters(word);\r\n\r\n if (!escapedWord) {\r\n return result;\r\n }\r\n\r\n regex = new RegExp(escapedWord, 'ig');\r\n\r\n while ((array = regex.exec(text)) !== null) {\r\n index = array.index;\r\n lastIndex = regex.lastIndex;\r\n len = lastIndex - index;\r\n\r\n if (index > -1) {\r\n result.push([index, lastIndex]);\r\n\r\n text = text.slice(0, index) +\r\n new Array(len + 1).join(' ') +\r\n text.slice(lastIndex);\r\n }\r\n }\r\n\r\n return result;\r\n }, [])\r\n .sort((match1, match2) => match1[0] - match2[0]);\r\n },\r\n\r\n updateResults(data) {\r\n if (data && data.length) {\r\n const html = this.resultsTemplate({ results: data });\r\n this.$results.innerHTML = html;\r\n const elements = this.$results.querySelectorAll('.hof-search-suggestion');\r\n this.bindClickSearchSuggestions(elements);\r\n this.$results.classList.add('active');\r\n }\r\n },\r\n\r\n bindClickSearchSuggestions(elements) {\r\n\t\tfor (var j = 0; j < elements.length; j++) {\r\n\t\t\telements[j].addEventListener('click', ::this.handleSuggestionClick);\r\n\t\t}\r\n },\r\n\r\n handleSuggestionClick(e) {\r\n const term = e.currentTarget.dataset.term;\r\n this.redirectToSearchPage(term);\r\n },\r\n\r\n handleSubmit(e) {\r\n e.preventDefault();\r\n const query = this.$input.value;\r\n this.redirectToSearchPage(query);\r\n },\r\n\r\n redirectToSearchPage(query) {\r\n const term = encodeSpaces(query);\r\n if (!term) {\r\n return;\r\n }\r\n const url = `${this.searchPageUrl}?q=${term}`;\r\n window.location.href = url;\r\n }\r\n};\r\n\r\nexport default SearchModal;","const SearchModalCoveo = {\r\n init(element) {\r\n /**\r\n * DOM node that is passed into the module\r\n *\r\n * @property {Object} element DOM node that is passed into the module\r\n */\r\n this.$element = element;\r\n\r\n // bind lements\r\n this.$container = this.$element.parentNode;\r\n\r\n this.$popularSearches = this.$container.querySelector(\r\n \".hof-search-results__popular\"\r\n );\r\n\r\n this.bindClickSearchSuggestions(this.$popularSearches);\r\n },\r\n\r\n bindClickSearchSuggestions(elements) {\r\n elements\r\n .querySelectorAll(\"li\")\r\n .forEach(item =>\r\n item.addEventListener(\"click\", () => this.handleSuggestionClick(item))\r\n );\r\n },\r\n handleSuggestionClick(item) {\r\n const term = item.dataset.term;\r\n this.redirectToSearchPage(term);\r\n },\r\n\r\n redirectToSearchPage(query) {\r\n // const term = encodeSpaces(query);\r\n if (!query) {\r\n return;\r\n }\r\n const url = `//${window.location.host}/search#q=${query}`;\r\n window.location.href = url;\r\n }\r\n};\r\n\r\nexport default SearchModalCoveo;\r\n","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from \"../../common/constants\";\r\nimport { Services } from \"../../common/services\";\r\nimport SearchModal from \"./SearchModal\";\r\nimport SearchModalCoveo from \"./SearchModalCoveo\";\r\nimport VanillaModal from \"vanilla-modal\";\r\n\r\nvar GlobalNavigation = {\r\n // Variable with class name of hamburger link for mobile\r\n closing: CLASS_NAMES.CLOSING,\r\n hamburger: CLASS_NAMES.HAMBURGERLINK,\r\n open: CLASS_NAMES.OPEN,\r\n scrollblock: CLASS_NAMES.MODALSCROLLBLOCK,\r\n searchcontainer: CLASS_NAMES.SEARCHCONTAINER,\r\n bodyNavOpenClass: \"navOpen\",\r\n\r\n anchor: SELECTORS.ANCHOR,\r\n viewport: SELECTORS.HTML,\r\n header: SELECTORS.HEADER,\r\n\r\n // Initialize the module\r\n init: function(element) {\r\n /**\r\n * DOM node that is passed into the module\r\n *\r\n * @property {Object} element DOM node that is passed into the module\r\n */\r\n this.element = element;\r\n\r\n // Saving this so it can be accessed inside the event handler\r\n var that = this;\r\n\r\n // Find the hamburger\r\n var hamburgerlink = document.getElementsByClassName(this.hamburger);\r\n\r\n for (var i = 0; i < hamburgerlink.length; i++) {\r\n hamburgerlink[i].addEventListener(EVENTS.CLICK, _makeHamburger());\r\n }\r\n\r\n // Find the search containers\r\n var searchanchor = document.querySelector(\r\n \".\" + this.searchcontainer + \" \" + this.anchor\r\n );\r\n\r\n if (searchanchor === null) {\r\n // There's no search, so this is a Secure Checkout page with reduced header\r\n return;\r\n }\r\n\r\n searchanchor.addEventListener(EVENTS.CLICK, _launchSearchModal.bind(this));\r\n\r\n var modalContent = document.querySelector(\".\" + CLASS_NAMES.MODAL_CONTENT);\r\n\r\n //init search autocomplete\r\n var hofSiteSearch = document.querySelector(\".hof-site-search\");\r\n this.isCoveoSearch = hofSiteSearch.classList.contains(\r\n \"hof-site-search__coveo\"\r\n );\r\n\r\n if (!this.isCoveoSearch) {\r\n SearchModal.init(hofSiteSearch);\r\n } else {\r\n SearchModalCoveo.init(hofSiteSearch);\r\n }\r\n\r\n /**\r\n * event handler for search anchor\r\n *\r\n */\r\n function searchAnchorHandler() {\r\n return function(event) {\r\n _launchSearchModal(event);\r\n };\r\n }\r\n\r\n // Find the body\r\n var thebody = document.querySelector(this.viewport);\r\n\r\n // Add callback to get input value on keyup\r\n Services.KeyUpService.addCallback(function() {\r\n _onKeyUp.apply(that, arguments);\r\n });\r\n\r\n // Set up event handlers for Hamburger\r\n function _makeHamburger() {\r\n return function() {\r\n _toggleHamburger();\r\n };\r\n }\r\n\r\n function _toggleHamburger() {\r\n event.preventDefault();\r\n\r\n var header = document.getElementsByTagName(that.header)[0];\r\n var top;\r\n\r\n if (header.classList.contains(that.open)) {\r\n document.body.classList.remove(that.bodyNavOpenClass);\r\n header.classList.add(that.closing);\r\n window.setTimeout(function() {\r\n header.classList.remove(that.closing);\r\n header.classList.remove(that.open);\r\n }, 600);\r\n } else {\r\n document.body.classList.add(that.bodyNavOpenClass);\r\n header.classList.add(that.open);\r\n }\r\n\r\n _toggleLockBody();\r\n }\r\n\r\n function _toggleLockBody() {\r\n var viewport = document.querySelector(that.viewport);\r\n viewport.classList.toggle(that.scrollblock);\r\n }\r\n\r\n /**\r\n * Launches VanillaModal\r\n *\r\n */\r\n function _launchSearchModal(event) {\r\n var that = this;\r\n event.preventDefault();\r\n document.body.classList.add(CLASS_NAMES.MODAL_BG_WHITE);\r\n var modal = new VanillaModal({\r\n modal: \".\" + CLASS_NAMES.MODAL,\r\n modalInner: \".\" + CLASS_NAMES.MODAL_INNER,\r\n modalContent: \".\" + CLASS_NAMES.MODAL_CONTENT,\r\n class: CLASS_NAMES.MODAL_VISIBLE,\r\n onOpen: function() {\r\n modalContent.classList.add(CLASS_NAMES.OPEN);\r\n document.body.classList.add(CLASS_NAMES.SEARCH_MODAL);\r\n // have to force a redraw for Safari 9\r\n thebody.style.display = \"none\";\r\n thebody.offsetHeight; // jshint ignore:line\r\n thebody.style.display = \"block\";\r\n\r\n if (!that.isCoveoSearch) {\r\n SearchModal.open();\r\n } else {\r\n var CoveoBoxes = document.querySelectorAll(\".CoveoOmnibox\");\r\n // This is because on the coveo search page there are 2 inputs, we need the modal input\r\n var inputModal =\r\n CoveoBoxes.length > 1 ? CoveoBoxes[1] : CoveoBoxes[0];\r\n\r\n inputModal.querySelector(\"input\").focus();\r\n inputModal.setAttribute(\"aria-expanded\", \"true\");\r\n inputModal.classList.add(\"magic-box-hasFocus\");\r\n }\r\n },\r\n onClose: function() {\r\n modalContent.classList.remove(CLASS_NAMES.OPEN);\r\n document.body.classList.remove(CLASS_NAMES.SEARCH_MODAL);\r\n }\r\n });\r\n\r\n modal.open(SELECTORS.SEARCH);\r\n }\r\n\r\n /**\r\n * Closes modal or hamburger overlay on ESC key\r\n *\r\n */\r\n function _onKeyUp(charCode) {\r\n if (charCode === 27) {\r\n var opens = document.querySelectorAll(\".\" + that.open);\r\n for (var l = 0; l < opens.length; l++) {\r\n opens[l].classList.remove(that.open);\r\n }\r\n if (\r\n document\r\n .querySelector(that.viewport)\r\n .classList.contains(that.scrollblock)\r\n ) {\r\n _toggleLockBody();\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default GlobalNavigation;\r\n","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport videojs from 'video.js';\r\nimport 'videojs-youtube';\r\n\r\nvar InlineVideo = {\r\n\t\r\n\t// Initialize the module\r\n\tinit : function(element) {\r\n\t\t/**\r\n\t\t* DOM node that is passed into the module\r\n\t\t*\r\n\t\t* @property {Object} element DOM node that is passed into the module\r\n\t\t*/\r\n\t\tthis.element = element;\r\n\t\tthis.videos = this.element.querySelectorAll(SELECTORS.VIDEO_PLAYER);\r\n\r\n\t\t\r\n\t\tthis.initVideo();\r\n\t\t\r\n\t},\r\n\t\r\n\t/**\r\n\t* Loops through all videos in module and initializes them with videojs\r\n\t*\r\n\t*/\r\n\tinitVideo: function() {\r\n\t\tfor (var i = 0; i < this.videos; i++) {\r\n\t\t\tvideojs(this.videos[i]);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n};\r\n\r\nexport default InlineVideo;","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport videojs from 'video.js';\r\nimport 'videojs-youtube';\r\nimport VanillaModal from 'vanilla-modal';\r\n\r\nvar ModalVideo = {\r\n\t\r\n\t// some variables to store data about the currently-playing video\r\n\tposter: null,\r\n\tsetup: null,\r\n\tvideo: null,\r\n\tvideocontainer: null,\r\n\tplayer: null,\r\n\t\r\n\t// Initialize the module\r\n\tinit : function(element) {\r\n\t\t/**\r\n\t\t* DOM node that is passed into the module\r\n\t\t*\r\n\t\t* @property {Object} element DOM node that is passed into the module\r\n\t\t*/\r\n\t\tthis.element = element;\r\n\t\tthis.videobuttons = this.element.querySelectorAll(SELECTORS.VIDEO_PLAY);\r\n\t\tthis.modalContent = document.querySelector('#'+CLASS_NAMES.MODAL + ' .'+CLASS_NAMES.MODAL_CONTENT);\r\n\t\t\r\n\t\t\r\n\t\tthis.bindEvents();\r\n\t\tthis.videoContainer();\r\n\t},\r\n\t\r\n\tbindEvents: function() {\r\n\t\tvar _self = this;\r\n\t\t\r\n\t\tfor (var i = 0; i < this.videobuttons.length; i++) {\r\n\t\t\t/*jshint loopfunc: true */\r\n\t\t\tthis.videobuttons[i].addEventListener(EVENTS.CLICK, function () {_self.launchModal();});\r\n\t\t}\r\n\t\r\n\t},\r\n\t\r\n\t/**\r\n\t* creates container to hold video is one isn't present\r\n\t*\r\n\t*/\r\n\tvideoContainer: function() {\r\n\t\tvar videoHide = document.querySelectorAll('.'+CLASS_NAMES.VIDEO_HIDE);\r\n\t\tif(videoHide.length === 0) {\r\n\t\t\tthis.videocontainer = document.createElement('div');\r\n\t\t\tthis.videocontainer.classList.add(CLASS_NAMES.HIDDEN,CLASS_NAMES.VIDEO_HIDE);\r\n\t\t\tthis.videocontainer.innerHTML = \"
    \";\r\n\t\t\tdocument.body.appendChild(this.videocontainer);\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t* Launches VanillaModal\r\n\t*\r\n\t*/\r\n\tlaunchModal : function() {\r\n\t\tvar _self = this;\r\n\t\tvar thisButton = event.target;\r\n\t\tthis.poster = thisButton.dataset.poster;\r\n\t\tthis.setup = thisButton.dataset.setup;\r\n\t\tthis.buildVideo();\r\n\t\tdocument.body.classList.add(CLASS_NAMES.MODAL_BG_BLACK);\r\n\t\t\r\n\t\tvar modal = new VanillaModal({\r\n\t\t\tmodal : \".\" + CLASS_NAMES.MODAL,\r\n modalInner : \".\" + CLASS_NAMES.MODAL_INNER,\r\n modalContent : \".\" + CLASS_NAMES.MODAL_CONTENT,\r\n class : CLASS_NAMES.MODAL_VISIBLE,\r\n onBeforeOpen: function() { document.body.classList.add('video-modal'); },\r\n onOpen : function() { _self.startVideo(); },\r\n onClose : function() {_self.destroyVideo();}\r\n\t\t});\r\n\t\t\r\n\t\tmodal.open(\"#\"+_self.video);\r\n\t},\r\n\t\r\n\t/**\r\n\t* Builds Video for use with videojs\r\n\t*\r\n\t*/\r\n\tbuildVideo : function() {\r\n\t\tvar _self = this;\r\n\t\tvar thisVideo = document.createElement('video');\r\n\t\t_self.video = \"hof-video-\" + new Date().getUTCMilliseconds();\r\n\t\tthisVideo.className += CLASS_NAMES.VIDEO_JS + ' vjs-default-skin vjs-big-play-centered vjs-16-9';\r\n\t\tthisVideo.setAttribute('poster',_self.poster);\r\n\t\tthisVideo.setAttribute('data-setup',_self.setup);\r\n\t\tthisVideo.setAttribute('controls','');\r\n\t\t_self.videocontainer.setAttribute(MISC.ID,_self.video);\r\n\t\t_self.videocontainer.querySelector('.'+CLASS_NAMES.VIDEO_CONTAINER).appendChild(thisVideo);\r\n\t\t\r\n\t},\r\n\t\r\n\t/**\r\n\t* starts videojs\r\n\t*\r\n\t*/\r\n\tstartVideo : function() {\r\n\t\tvar query = \".\" + CLASS_NAMES.MODAL_CONTENT + ' .'+CLASS_NAMES.VIDEO_JS;\r\n\t\tvar videoPlayer = document.querySelector(query);\r\n\t\tthis.player = videojs(videoPlayer);\r\n\t\tthis.player.play();\r\n\t},\r\n\t\r\n\t/**\r\n\t* destroys videojs & deletes video\r\n\t*\r\n\t*/\r\n\tdestroyVideo : function() {\r\n\t\tif(this.player) {\r\n\t\t\tthis.player.dispose();\r\n\t\t\tthis.player = null;\r\n\t\t}\r\n\t\tdocument.body.classList.remove('video-modal');\r\n\t}\r\n\r\n\r\n\r\n};\r\n\r\nexport default ModalVideo;","/**\r\n * getPosition - Utility function to find where elements are\r\n * @param element\r\n * @returns {{x: number, y: number}}\r\n */\r\nexport function getPosition(element) {\r\n var xPosition = 0;\r\n var yPosition = 0;\r\n\r\n while(element) {\r\n xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft);\r\n yPosition += (element.offsetTop - element.scrollTop + element.clientTop);\r\n element = element.offsetParent;\r\n }\r\n\r\n return { x: xPosition, y: yPosition };\r\n}\r\n","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport { Services } from '../../common/services';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\nimport { getPosition } from '../../common/utils/getposition';\r\nimport { serializeform } from '../../common/utils/serializeform';\r\n\r\n\r\nvar ProductFilters = {\r\n\r\n init : function(element) {\r\n\r\n /**\r\n * DOM node that is passed into the module\r\n *\r\n * @property {Object} element DOM node that is passed into the module\r\n */\r\n this.element = element;\r\n\r\n // Saving this so it can be accessed inside event handlers\r\n var that = this;\r\n var el;\r\n\r\n this.productlisttemplate = require (\"../../templates/partials/producttiles.hbs\");\r\n this.productfilterstemplate = require (\"../../templates/partials/productfilters.hbs\");\r\n this.productsortertemplate = require (\"../../templates/partials/productsorter.hbs\");\r\n\r\n this.productList = document.querySelector('.hof-producttiles .hof-shrinkwrap');\r\n\r\n this.filtersection = element.querySelector('.hof-product-filters');\r\n this.filterholder = element.querySelector('.hof-product-filters-inner-container');\r\n this.filtertoggle = element.querySelector('.hof-filter-toggle');\r\n this.loading = element.querySelector('.hof-loading');\r\n\r\n this.formCtasHolder = element.querySelector('.hof-product-filters-ctas');\r\n this.formCtas = this.formCtasHolder.querySelectorAll(SELECTORS.BUTTON);\r\n\r\n this.sorterholder = element.querySelector('.hof-product-filters-sorter');\r\n\r\n this.filterholder.addEventListener(EVENTS.CLICK, _filterHandlerSetter(that.filterholder));\r\n\r\n this.element.addEventListener(EVENTS.SUBMIT, _updateProductInfo);\r\n\r\n this.element.addEventListener(EVENTS.RESET, _filterReset);\r\n\r\n this.filtertoggle.addEventListener(EVENTS.CLICK, _toggleFilterState);\r\n\r\n Services.ScrollService.addCallback(_fixFilters);\r\n\r\n _initSort();\r\n\r\n function _initSort() {\r\n console.log(\"sort\");\r\n that.sorterlinks = that.sorterholder.querySelectorAll(SELECTORS.ANCHOR);\r\n\r\n for (var k = 0; k < that.sorterlinks.length; k++) {\r\n el = that.sorterholder;\r\n that.sorterlinks[k].addEventListener(EVENTS.CLICK, _filterHandlerSetter(el));\r\n }\r\n }\r\n function _filterHandlerSetter(el) {\r\n return function(event) {\r\n _filterHandler(event, el);\r\n };\r\n }\r\n\r\n function _filterHandler(event, el) {\r\n event.preventDefault();\r\n\r\n if(el.classList.contains(CLASS_NAMES.OPEN)) {\r\n if (event.target.parentNode.getAttribute(MISC.ARIA_SELECTED) === 'true' || event.target.parentNode.getAttribute('data-default') === 'true') {\r\n return;\r\n } else {\r\n var value = event.target.getAttribute('data-value');\r\n var key = event.target.getAttribute('data-key');\r\n\r\n if(value && key) {\r\n var container = queryselectorparents(event.target, SELECTORS.FIELDSET);\r\n var formField = container.querySelector('[name=' + key + ']');\r\n\r\n formField.setAttribute('value', value);\r\n var oldSelected = container.querySelector('[' + MISC.ARIA_SELECTED + '=true]');\r\n oldSelected.setAttribute(MISC.ARIA_SELECTED, false);\r\n oldSelected.classList.remove('hof-selected');\r\n event.target.parentNode.setAttribute(MISC.ARIA_SELECTED, true);\r\n event.target.parentNode.classList.add('hof-selected');\r\n\r\n _updateProductInfo(event);\r\n\r\n _updateFilters(event);\r\n\r\n if (that.formCtas[0].disabled) {\r\n _toggleButtonState();\r\n }\r\n\r\n _toggleFilterState(event);\r\n }\r\n }\r\n } else {\r\n _toggleFilterState(event);\r\n }\r\n }\r\n\r\n function _updateFilters(event) {\r\n if(event) {\r\n event.preventDefault();\r\n }\r\n\r\n var configOptions = serializeform(that.element);\r\n\r\n var prodFiltersServiceURL = 'https://private-fdfd0-hof1.apiary-mock.com/api/sitecore/producttilesmodule/getproductfiltersjson';\r\n that.loading.classList.add('visible');\r\n\r\n var result = getJSON(prodFiltersServiceURL, configOptions).then(function(data) {\r\n that.loading.classList.remove('visible');\r\n // Update the filters using Handlebars template\r\n var newProductFilters = that.productfilterstemplate(data);\r\n that.filterholder.innerHTML = newProductFilters;\r\n\r\n // Update the sorter using Handlebars template\r\n var newProductSorter = that.productsortertemplate(data);\r\n that.sorterholder.innerHTML = newProductSorter;\r\n _initSort();\r\n });\r\n\r\n }\r\n\r\n function _updateProductInfo(event) {\r\n if(event) {\r\n event.preventDefault();\r\n }\r\n\r\n var configOptions = serializeform(that.element);\r\n\r\n var productServiceURL = 'https://private-fdfd0-hof1.apiary-mock.com/api/sitecore/producttilesmodule/getproductlistjson';\r\n\r\n var result = getJSON(productServiceURL, configOptions).then(function(data) {\r\n // Update the page using Handlebars template\r\n var newProductList = that.productlisttemplate(data);\r\n that.productList.innerHTML = newProductList;\r\n });\r\n\r\n }\r\n\r\n function _filterReset() {\r\n var currentFilters = that.filterholder.querySelectorAll('[' + MISC.ARIA_SELECTED + '=true]');\r\n currentFilters.forEach(function(filter) {\r\n filter.setAttribute(MISC.ARIA_SELECTED, false);\r\n filter.classList.remove('hof-selected');\r\n });\r\n var defaultFilters = that.filterholder.querySelectorAll('[data-default=true]');\r\n defaultFilters.forEach(function(filter) {\r\n filter.setAttribute(MISC.ARIA_SELECTED, true);\r\n filter.classList.add('hof-selected');\r\n });\r\n\r\n var hiddenFilterFields = that.filterholder.querySelectorAll('.hof-filter-facet');\r\n hiddenFilterFields.forEach(function(field) {\r\n field.value = '';\r\n });\r\n var hiddenSorterFields = that.sorterholder.querySelectorAll('.hof-filter-facet');\r\n hiddenSorterFields.forEach(function(field) {\r\n field.value = '';\r\n });\r\n that.filterholder.classList.remove(CLASS_NAMES.OPEN);\r\n that.filtertoggle.classList.remove('hof-icon-arrow-up');\r\n that.filtertoggle.classList.add('hof-icon-arrow-down');\r\n\r\n _updateProductInfo(null);\r\n\r\n _updateFilters(null);\r\n\r\n _toggleButtonState();\r\n }\r\n\r\n function _toggleButtonState() {\r\n var buttons = that.formCtas;\r\n buttons.forEach(function(button) {\r\n if(button.disabled) {\r\n button.disabled = false;\r\n button.classList.remove('disabled');\r\n } else {\r\n button.disabled = true;\r\n button.classList.add('disabled');\r\n }\r\n });\r\n }\r\n\r\n\r\n function _toggleFilterState(event) {\r\n event.preventDefault();\r\n\r\n var target = queryselectorparents(event.target, '#hof-filters-sorter');\r\n\r\n if(target) {\r\n if (that.sorterholder.classList.contains(CLASS_NAMES.OPEN)) {\r\n that.sorterholder.classList.remove(CLASS_NAMES.OPEN);\r\n } else {\r\n that.sorterholder.classList.add(CLASS_NAMES.OPEN);\r\n }\r\n } else {\r\n if (that.filterholder.classList.contains(CLASS_NAMES.OPEN)) {\r\n that.filterholder.classList.remove(CLASS_NAMES.OPEN);\r\n that.filtertoggle.classList.remove('hof-icon-arrow-up');\r\n that.filtertoggle.classList.add('hof-icon-arrow-down');\r\n } else {\r\n that.filterholder.classList.add(CLASS_NAMES.OPEN);\r\n that.filtertoggle.classList.remove('hof-icon-arrow-down');\r\n that.filtertoggle.classList.add('hof-icon-arrow-up');\r\n }\r\n }\r\n }\r\n\r\n\r\n function _fixFilters() {\r\n if (window.innerWidth < 960) {\r\n return;\r\n }\r\n\r\n that.filtersPosition = getPosition(that.filtersection);\r\n that.sorterPosition = getPosition(that.sorterholder);\r\n that.filtersHeight = that.filtersection.clientHeight;\r\n\r\n if (that.filtersPosition.y <= 0) {\r\n if (!that.element.classList.contains(CLASS_NAMES.FIXED)) {\r\n that.element.classList.add(CLASS_NAMES.FIXED);\r\n that.element.classList.remove(CLASS_NAMES.OPEN);\r\n }\r\n }\r\n\r\n if (that.sorterPosition.y >= that.filtersHeight) {\r\n if (that.element.classList.contains(CLASS_NAMES.FIXED)) {\r\n that.element.classList.remove(CLASS_NAMES.FIXED);\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n};\r\n\r\nexport default ProductFilters;\r\n","import { EVENTS, MISC } from '../../common/constants';\r\nimport { tabs } from '../../common/utils/tabs';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { serializeform } from '../../common/utils/serializeform';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\nimport Flipper from '../atoms/Flipper';\r\nimport Forms, { setErrors, formatErrors } from '../atoms/Forms';\r\n\r\n\r\nvar Profile = {\r\n // Initialize the module\r\n init : function(element) {\r\n\r\n var _self = this;\r\n\r\n this.element = element;\r\n this.ajaxUpdateForms = this.element.querySelectorAll('[data-ajaxform=true]');\r\n this.subscribeTemplate = require('../../templates/partials/subscribe.hbs');\r\n this.unsubscribeTemplate = require('../../templates/partials/subscribe.hbs');\r\n this.basicsTemplate = require('../../templates/partials/basicprofile.hbs');\r\n this.accountTemplate = require('../../templates/partials/accountprofile.hbs');\r\n var hb = require('handlebars/runtime');\r\n\r\n hb.registerHelper({\r\n equal : function(lvalue, rvalue, options) {\r\n if( lvalue!=rvalue ) {\r\n return options.inverse(this);\r\n } else {\r\n return options.fn(this);\r\n }\r\n },\r\n replace: function(string,replaced,replacement) {\r\n return(string || '').replace(replaced,replacement);\r\n }\r\n });\r\n\r\n tabs(this.element);\r\n\r\n for (var i = 0; i < this.ajaxUpdateForms.length; i++) {\r\n this.ajaxUpdateForms[i].addEventListener(EVENTS.SUBMIT, this.sendForm.bind(this));\r\n }\r\n\r\n },\r\n\r\n sendForm : function(event) {\r\n event.preventDefault();\r\n var _self = this;\r\n\r\n _self.theForm = event.target;\r\n var configOptions = serializeform(_self.theForm);\r\n var configObject = JSON.parse(configOptions);\r\n var checkoutServiceURL = configObject.formtype;\r\n \r\n var result = getJSON(checkoutServiceURL, configOptions).then(data => {\r\n //TODO: this should be revised for the other forms\r\n if(_self.theForm.id === 'hof-profile-password-edit-form') {\r\n if(data.Success) {\r\n var parentWrapper = queryselectorparents(_self.theForm, '.hof-profile-module');\r\n if (data.Message) {\r\n parentWrapper.querySelector('.hof-error-label.success').innerHTML = data.Message;\r\n }\r\n //This is just password related, everything else could be reused for the other forms\r\n parentWrapper.querySelector('.hof-profile-password-copy').setAttribute(MISC.ARIA_HIDDEN, false);\r\n parentWrapper.querySelector('.hof-profile-password-edit').setAttribute(MISC.ARIA_HIDDEN, true);\r\n } else {\r\n const errors = formatErrors(data.FieldErrors);\r\n setErrors(_self.theForm, errors);\r\n if(data.Message) {\r\n _self.theForm.querySelector('.hof-form-error').innerHTML = data.Message;\r\n }\r\n }\r\n } else if(_self.theForm.id === 'hof-profile-basics-edit-form') { \r\n if (data.Success) {\r\n var parentWrapper = queryselectorparents(_self.theForm, '.hof-profile-basics');\r\n if (data.settings && data.settings.basics) {\r\n var userdata = `\r\n

    ${data.settings.basics.name}

    \r\n \r\n

    Birth date: ${data.settings.basics.birthmonth} ${data.settings.basics.birthday}

    \r\n

    Birth year: ${data.settings.basics.birthyear}

    \r\n

    Gender: ${data.settings.basics.gender}

    \r\n `\r\n\r\n parentWrapper.querySelector('.hof-profile-basics-copy__data').innerHTML = userdata;\r\n }\r\n parentWrapper.querySelector('.hof-profile-basics-copy').setAttribute(MISC.ARIA_HIDDEN, false);\r\n parentWrapper.querySelector('.hof-profile-basics-edit').setAttribute(MISC.ARIA_HIDDEN, true);\r\n } else {\r\n const errors = formatErrors(data.FieldErrors);\r\n setErrors(_self.theForm, errors);\r\n if(data.Message) {\r\n _self.theForm.querySelector('.hof-form-error').innerHTML = data.Message;\r\n }\r\n }\r\n \r\n } else if(_self.theForm.id === 'hof-profile-account-edit-form') {\r\n if (data.Success) {\r\n var parentWrapper = queryselectorparents(_self.theForm, '.hof-profile-account');\r\n if (data.Message) {\r\n parentWrapper.querySelector('.hof-error-label.success').innerHTML = data.Message;\r\n }\r\n\r\n if(data.settings && data.settings.basics) {\r\n parentWrapper.querySelector('.hof-email').innerHTML = data.settings.basics.email;\r\n }\r\n\r\n parentWrapper.querySelector('.hof-profile-account-copy').setAttribute(MISC.ARIA_HIDDEN, false);\r\n parentWrapper.querySelector('.hof-profile-account-edit').setAttribute(MISC.ARIA_HIDDEN, true);\r\n } else {\r\n const errors = formatErrors(data.FieldErrors);\r\n setErrors(_self.theForm, errors);\r\n if(data.Message) {\r\n _self.theForm.querySelector('.hof-form-error').innerHTML = data.Message;\r\n }\r\n }\r\n } else {\r\n var tpl = data.template;\r\n var template = _self[tpl];\r\n\r\n var result = template({...data, form: configObject, errors: !!data.FieldErrors });\r\n var replaceTarget = queryselectorparents(_self.theForm, '.hof-profile-module');\r\n\r\n replaceTarget.innerHTML = result;\r\n\r\n _self.init(_self.element);\r\n\r\n Flipper.init(replaceTarget);\r\n Forms.init(replaceTarget);\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport default Profile;","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { tooltips } from '../../common/utils/tooltips';\r\n\r\nvar RetailList = {\r\n\t\r\n\t//variable to store retailer data\r\n\tretailerData : null,\r\n\t\r\n\t// Initialize the module\r\n\tinit : function(element) {\r\n\r\n\t\tvar that = this;\r\n\r\n\t\t/**\r\n\t\t* DOM node that is passed into the module\r\n\t\t*\r\n\t\t* @property {Object} element DOM node that is passed into the module\r\n\t\t*/\r\n\t\tthis.element = element;\r\n\t\tthis.retailerslist = element.querySelector(SELECTORS.RETAILERS_LIST);\r\n\t\tthis.retailerMessage = element.querySelector(SELECTORS.RETAILER_MESSAGE);\r\n\t\tthis.pickupStore = element.querySelector('#hof-pickup-store');\r\n\t\tthis.zipStore = element.querySelector('#hof-store-zip');\r\n\t\tthis.searchform = this.element.querySelector(SELECTORS.RETAILER_SEARCH);\r\n\t\tthis.searchUrl = this.searchform.getAttribute('action');\r\n\t\tthis.searchinput = this.searchform.querySelector(SELECTORS.GOOGLE_PLACES);\r\n\r\n\t\tthis.giftboolean = element.querySelector(SELECTORS.RETAILER_GIFT);\r\n\t\tthis.giftmessage = element.querySelector(SELECTORS.RETAILER_GIFT_MESSAGE);\r\n\r\n\t\tthis.loader = element.querySelector('.hof-loading');\r\n\t\t\r\n\t\t/* call to temp function for prototype ONLY */\r\n\t\tthis.initSearchBox();\r\n\t\t\r\n\t\t/* for if you want to use Google Places Autocomplete */\r\n\t\t/* \r\n\t\tthis.loadPlaces();\r\n\t\t*/\r\n\r\n\t\tthis.giftmessage.addEventListener(EVENTS.BLUR, _syncGiftFields);\r\n\r\n\t\tfunction _syncGiftFields() {\r\n\t\t\tvar bool = that.giftboolean.value;\r\n\t\t\tvar msg = that.giftmessage.value;\r\n\t\t\tvar boolTgt = that.element.querySelector(SELECTORS.RETAILER_GIFT_TGT);\r\n\t\t\tvar msgTgt = that.element.querySelector(SELECTORS.RETAILER_GIFT_MESSAGE_TGT);\r\n\t\t\tboolTgt.value = bool;\r\n\t\t\tmsgTgt.value = msg;\r\n\t\t}\r\n\t\t\r\n\t},\r\n\t\r\n\tinitSearchBox : function() {\r\n\t\tvar _self = this;\r\n\t\t\r\n\t\t_self.searchform.addEventListener(EVENTS.SUBMIT, function(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tvar ziptest = new RegExp(MISC.ZIP_REGEX);\r\n\t\t\tvar zip = _self.searchinput.value;\r\n\t\t\tvar isValidZip = ziptest.test(zip);\r\n \tif(isValidZip) {\r\n\t\t\t\t_self.getRetailerData(zip);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t},\r\n\t\r\n\t/**\r\n\t* build Retailer list\r\n\t*\r\n\t*/\r\n\tbuildRetailerList : function() {\r\n\t\tvar _self = this;\r\n\t\tvar retailers = _self.retailerData.Retailers;\r\n\t\tvar message = _self.retailerData.Message;\r\n\t\tvar hasCSC = false;\r\n\t\tvar list = '';\r\n\t\tif(typeof(retailers) !== 'undefined') {\r\n\t\t\tvar numRetailers = retailers.length;\r\n\t\t\t// Add new markers\r\n\t\t\tif(numRetailers > 0) {\r\n\t\t\t\t// the below line is to fake Certified Service Center data in the JSON so as to demonstrate in prototype and should be removed\r\n\t\t\t\t//retailers[0].csc = true;\r\n\t\t\t\t// the above line is to fake Certified Service Center data in the JSON so as to demonstrate in prototype and should be removed\r\n\t\t\t\tfor (var i = 0; i < numRetailers; i++) {\r\n\t\t\t\t var retailer = retailers[i];\r\n\t\t\t\t\t// FOR CSC ICON: you will need to add the classname that gets created in scss/base/icons when you run gulp compile-icons after adding the SVG for the CSC icon to the assets/icons folder. Add that class to .hof-tooltip-link\r\n\t\t\t\t\tvar CSC = typeof(retailer.csc) !== 'undefined' && retailer.csc === true ? ''+MISC.CSC+''+MISC.CSC_MESSAGE+'' : '';\r\n\t\t\t\t\tlist += '
  • \\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t
    '+retailer.Name+'
    \\\r\n\t\t\t\t\t\t
    '+CSC+'\\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t'+retailer.Distance+' mi\\\r\n\t\t\t\t\t\t\t'+retailer.Address1+'\\\r\n\t\t\t\t\t\t\t'+retailer.Address2+'\\\r\n\t\t\t\t\t\t
  • ';\r\n\t\t\t\t\tif(!hasCSC && CSC !== '') {\r\n\t\t\t\t\t\thasCSC = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t/* regrettable hack but display:flex collapses margins/paddings/:after at the end of the list */\r\n\t\t\t\tlist += '
  •  
  • ';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_self.retailerMessage.innerHTML = message;\r\n\t\tthis.retailerslist.innerHTML = list;\r\n\t\t\t\t\r\n\t\t//create event listener for newly-created CTA\r\n\t\tvar possibleStores = this.retailerslist.querySelectorAll(SELECTORS.STORE_DETAILS);\r\n\t\t\r\n\t\tfor (var j = 0; j < possibleStores.length; j++) {\r\n\t\t\tvar storeID = possibleStores[j].getAttribute('id');\r\n\t\t\tvar zip = possibleStores[j].dataset.zip;\r\n\t\t\tpossibleStores[j].addEventListener(EVENTS.CLICK, _storeSelectorSetter(storeID, zip));\r\n\t\t}\r\n\r\n\t\tfunction _storeSelectorSetter(storeID, zip) {\r\n\t\t\treturn function() {\r\n\t\t\t\t_storeSelector(storeID, zip);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tfunction _storeSelector(storeID, zip) {\r\n\t\t\t_self.selectStore(storeID, zip);\r\n\t\t}\r\n\t\t//init tooltip\r\n\t\tif(hasCSC) {\r\n\t\t\ttooltips(this.retailerslist);\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t* store Retailer data\r\n\t*\r\n\t* @param {JSON} retailerData stores retailerData in object for use across the module\r\n\t*\r\n\t*/\r\n\tstoreRetailerData : function(retailerData) {\r\n\t\tthis.retailerData = retailerData;\r\n\t},\r\n\t\r\n\t/**\r\n\t* get Retailer data\r\n\t*\r\n\t* @param {JSON} zip zipcode\r\n\t*\r\n\t*/\r\n\tgetRetailerData : function(zip) {\r\n\t\tvar _self = this;\r\n\t\t_self.retailerData = null;\r\n\r\n\t\t_self.loader.classList.add('show');\r\n\t\tvar getURL = this.searchUrl + '?zip=' + zip;\r\n\t\tgetJSON(getURL).then(function(data) {\r\n\t\t\t_self.loader.classList.remove('show');\r\n\t\t\t_self.storeRetailerData(data);\r\n\t\t\t_self.buildRetailerList();\r\n\t\t}, function(status) {\r\n\t\t\t_self.loader.classList.remove('show');\r\n\t\t\t_self.storeRetailerData(status);\r\n\t\t});\r\n\t},\r\n\t\r\n\t/**\r\n\t* selects chosen store \r\n\t*\r\n\t* @param {String} Retailer ID\r\n\t*\r\n\t*/\r\n\tselectStore(rID, zip) {\r\n\t\tthis.pickupStore.value = rID;\r\n\t\tthis.zipStore.value = zip;\r\n\t\tvar allStores = this.retailerslist.querySelectorAll(SELECTORS.STORE_DETAILS);\r\n\t\t\r\n\t\tfor (var j = 0; j < allStores.length; j++) {\r\n\t\t\tallStores[j].classList.remove(CLASS_NAMES.SELECTED);\r\n\t\t}\r\n\t\tdocument.getElementById(rID).classList.add(CLASS_NAMES.SELECTED);\r\n\t}\r\n\r\n};\r\n\r\nexport default RetailList;","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport loadGoogleMapsAPI from 'load-google-maps-api';\r\nimport { Services } from '../../common/services';\r\n\r\nvar RetailLocation = {\r\n\r\n\t// variable to store latitude and longitude\r\n\tuserPosition : {\r\n\t\tlat: 42.3525575,\r\n\t\tlng : -71.0573034,\r\n\t\terr: false\r\n\t},\r\n\r\n\t//variable to store map\r\n\tmap : {},\r\n\r\n\t//variable to store markers\r\n\tmarkers : {\r\n\t\tretailLocations : {}\r\n\t},\r\n\r\n\t//variable to store infoWindow\r\n\tinfoWin : null,\r\n\r\n\t// variable to store map bounds\r\n\tbounds: null,\r\n\r\n\t// Initialize the module\r\n\tinit : function(element) {\r\n\r\n\t\t/**\r\n\t\t* DOM node that is passed into the module\r\n\t\t*\r\n\t\t* @property {Object} element DOM node that is passed into the module\r\n\t\t*/\r\n\t\tthis.element = element;\r\n\r\n\t\t// get lat/lng for retailer\r\n\t\tthis.userPosition.lat = parseFloat(this.element.getAttribute('data-lat'));\r\n\t\tthis.userPosition.lng = parseFloat(this.element.getAttribute('data-lng'));\r\n\r\n\t\t// Load Google Maps API\r\n\t\tthis.loadMap();\r\n\r\n\r\n\t},\r\n\r\n\t/**\r\n\t* Loads Google Maps API via npm-included function\r\n\t* writes a script tag to the document that calls Google API\r\n\t*\r\n\t*/\r\n\tloadMap : function() {\r\n\t\tvar gmapKey = this.element.dataset.key;\r\n\t\tloadGoogleMapsAPI({key: gmapKey}).then((googleMaps) => {\r\n\t\t\tthis.initMap();\r\n\t\t}).catch((err) => {\r\n\t\t\tconsole.error(err);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t* inits Google Map\r\n\t*\r\n\t*/\r\n\tinitMap: function() {\r\n\t\tvar _self = this;\r\n\t\t// set latitude, longitude and DOM element where map will be loaded\r\n\t\tvar mapcenter = _self.userPosition;\r\n\t\tvar mapcontainer = this.element.querySelector(SELECTORS.GOOGLE_MAP);\r\n\r\n\t\t// Create a new StyledMapType object, passing it an array of styles,\r\n\t\t// and the name to be displayed on the map type control.\r\n\t\tvar styledMapType = new google.maps.StyledMapType(\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"administrative\",\r\n\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n \"color\": \"#CA3004\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"gamma\": \"1.16\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"weight\": \"4.11\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"administrative\",\r\n\t\t\t\t\"elementType\": \"labels.text.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"gamma\": \"0.00\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"color\": \"#4c4c4c\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"administrative.country\",\r\n\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"off\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"color\": \"#00ff42\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": \"-55\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"landscape\",\r\n\t\t\t\t\"elementType\": \"all\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"color\": \"#f2f2f2\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"off\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"landscape\",\r\n\t\t\t\t\"elementType\": \"geometry\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"landscape.natural.landcover\",\r\n\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"saturation\": \"-100\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": \"-27\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n \"color\": \"#CA3004\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"gamma\": \"4.55\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"weight\": \"6.79\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"landscape.natural.terrain\",\r\n\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"off\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n \"color\": \"#CA3004\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": \"48\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"gamma\": \"7.59\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"landscape.natural.terrain\",\r\n\t\t\t\t\"elementType\": \"geometry.stroke\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n \"color\": \"#CA3004\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"saturation\": \"-2\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": \"-14\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"poi\",\r\n\t\t\t\t\"elementType\": \"all\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"off\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"weight\": \"5.20\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"road\",\r\n\t\t\t\t\"elementType\": \"all\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"saturation\": -100\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": 45\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"road.highway\",\r\n\t\t\t\t\"elementType\": \"all\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"road.highway\",\r\n\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"saturation\": \"39\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": \"38\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"color\": \"#eed5cd\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"road.highway\",\r\n\t\t\t\t\"elementType\": \"geometry.stroke\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"simplified\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"road.arterial\",\r\n\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"color\": \"#eed5cd\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": \"-1\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"saturation\": \"43\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"road.arterial\",\r\n\t\t\t\t\"elementType\": \"labels.icon\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"off\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"road.local\",\r\n\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"color\": \"#eed5cd\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"saturation\": \"0\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": \"3\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"transit\",\r\n\t\t\t\t\"elementType\": \"all\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"off\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"transit.line\",\r\n\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"color\": \"#fab89b\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"saturation\": \"-20\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": \"-17\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"gamma\": \"5.25\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"transit.line\",\r\n\t\t\t\t\"elementType\": \"geometry.stroke\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"lightness\": \"23\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"water\",\r\n\t\t\t\t\"elementType\": \"all\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"color\": \"#46bcec\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"saturation\": \"27\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"featureType\": \"water\",\r\n\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"color\": \"#eaf5fb\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t],\r\n\t\t{name: 'Styled Map'});\r\n\r\n\t\t// Create map\r\n\t\tthis.map = new google.maps.Map(mapcontainer, {\r\n\t\t\tzoom: 12,\r\n\t\t\tcenter: mapcenter,\r\n\t\t\tmapTypeControl: false,\r\n\t\t\tscaleControl: false,\r\n\t\t\tstreetViewControl: false,\r\n\t\t\trotateControl: false,\r\n\t\t\tfullscreenControl: false,\r\n\t\t\tmapTypeControlOptions: {\r\n\t\t\t\tmapTypeIds: ['roadmap', 'satellite', 'hybrid', 'terrain', 'styled_map']\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// variable to store map object locally\r\n\t\tvar map = this.map;\r\n\r\n\t\t//Associate the styled map with the MapTypeId and set it to display.\r\n map.mapTypes.set('styled_map', styledMapType);\r\n map.setMapTypeId('styled_map');\r\n\r\n\t\t// Create variable to hold map center on load\r\n\t\tvar center = map.getCenter();\r\n\r\n\t\t// Listen for Google Map custom \"idle\" event and update center\r\n\t\tmap.addListener(EVENTS.GMAPS_IDLE, function() {\r\n\t\t\tcenter = map.getCenter();\r\n\t\t});\r\n\r\n\t\t// Add callback to resize service to center the map\r\n\t\tServices.ResizeService.addCallback(function(){\r\n\t\t\tmap.setCenter(center);\r\n\t\t});\r\n\r\n\t\t// set retailer marker\r\n\t\t_self.setRetailerMarker();\r\n\t},\r\n\r\n\t/**\r\n\t* set Retailer marker\r\n\t*\r\n\t*/\r\n\tsetRetailerMarker : function() {\r\n\t\tvar _self = this;\r\n\t\tvar retailerImg = MISC.MAP_MARKER;\r\n\t\tvar retailerPlace = new google.maps.LatLng(_self.userPosition);\r\n\r\n\t\t// Create marker for retailer location\r\n\t\t_self.markers.retailLocations[0] = new google.maps.Marker({\r\n\t\t\ticon: {\r\n\t\t\t\turl: retailerImg,\r\n\t\t\t\tsize: new google.maps.Size(64,64),\r\n\t\t\t\tanchor: new google.maps.Point(0, 32),\r\n\t\t\t\tscaledSize: new google.maps.Size(32,32)\r\n\t\t\t},\r\n\t\t\tposition: retailerPlace,\r\n\t\t\tmap: _self.map\r\n\t\t});\r\n\t}\r\n\r\n};\r\n\r\nexport default RetailLocation;\r\n","/**\r\n * checks for presence of protocol in URL string, returns new string with protocol\r\n * @param {String} url the url to check\r\n * @return {String} the checked/converted url\r\n */\r\nexport function urlProtocol(url) {\r\n if (!/^(f|ht)tps?:\\/\\//i.test(url)) {\r\n url = \"http://\" + url;\r\n }\r\n return url;\r\n}\r\n","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport loadGoogleMapsAPI from 'load-google-maps-api';\r\nimport { Services } from '../../common/services';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { tabs } from '../../common/utils/tabs';\r\nimport { urlProtocol } from '../../common/utils/urlprotocol';\r\nimport { tooltips } from '../../common/utils/tooltips';\r\n\r\nvar RetailLocator = {\r\n\r\n\t// variable to store latitude and longitude\r\n\tuserPosition : {\r\n\t\tlat: 42.3525575,\r\n\t\tlng : -71.0573034,\r\n\t\terr: false\r\n\t},\r\n\r\n\t//variable to store map\r\n\tmap : {},\r\n\r\n\t//variable to store markers\r\n\tmarkers : {\r\n\t\tretailLocations : {}\r\n\t},\r\n\r\n\t//variable to store infoWindow\r\n\tinfoWin : null,\r\n\r\n\t//variable to store retailer data\r\n\tretailerData : null,\r\n\r\n\t// number of stores to load in each batch\r\n\tstoresBatch: 5,\r\n\r\n\t//variable to track stores loaded offset factor\r\n\tstoresMultiple: 1,\r\n\r\n\t// variable to set to enable listening for map drag\r\n\tlistenForDrag: false,\r\n\r\n\t// variable to store HTML string used in populating retailer list\r\n\tHTMLString: '',\r\n\r\n\t// variable to store map bounds\r\n\tbounds: null,\r\n\r\n\t// fallback content for example of closest retailer\r\n\tfbretailer : {\r\n\t\t\t\"__type\": \"Retailer\",\r\n\t\t\t\"Name\": \"Armstrong/Rockwell\",\r\n\t\t\t\"Address1\": \"150 Trumbull Street\",\r\n\t\t\t\"Address2\": \"Hartford, CT 06103\",\r\n\t\t\t\"City\": \"Hartford\",\r\n\t\t\t\"State\": \"CT\",\r\n\t\t\t\"Postal\": \"06103\",\r\n\t\t\t\"Country\": \"USA\",\r\n\t\t\t\"Phone\": \"(860) 246-9858\",\r\n\t\t\t\"Email\": \"info@Email.com\",\r\n\t\t\t\"Url\": \"www.Email.com\",\r\n\t\t\t\"ID\": \"00001239\",\r\n\t\t\t\"Latitude\": 41.77,\r\n\t\t\t\"Longitude\": -72.68,\r\n\t\t\t\"Distance\": 2,\r\n\t\t\t\"SSC\": false,\r\n\t\t\t\"HOFStore\": false,\r\n\t\t\t\"DetailUrl\": \"/locations/armstrongrockwell.aspx?brel=00001239\",\r\n\t\t\t\"IsPreferredStore\": false\r\n\t},\r\n\r\n\t// object to store user's preferred retailer\r\n\tpretailer : null,\r\n\r\n\t// Initialize the module\r\n\tinit : function(element) {\r\n\r\n\t\t/**\r\n\t\t* DOM node that is passed into the module\r\n\t\t*\r\n\t\t* @property {Object} element DOM node that is passed into the module\r\n\t\t*/\r\n\t\tthis.element = element;\r\n\t\tthis.retailerslist = element.querySelector(SELECTORS.RETAILERS_LIST);\r\n\t\tthis.refreshMap = element.querySelector(SELECTORS.REFRESH_MAP);\r\n\t\tthis.refreshButton = this.refreshMap.querySelector(SELECTORS.BUTTON);\r\n\t\tthis.retailerMessage = element.querySelector(SELECTORS.RETAILER_MESSAGE);\r\n\r\n\t\t// set up tabs functionality\r\n\t\ttabs(this.element);\r\n\t\t// Load Google Maps API\r\n\t\tthis.userPosition.lat = (this.element.dataset.lat) ? Number(this.element.dataset.lat) : this.userPosition.lat\r\n\t\tthis.userPosition.lng = (this.element.dataset.lng) ? Number(this.element.dataset.lng) : this.userPosition.lng\r\n\t\tthis.radius = this.element.dataset.radius;\r\n\t\tthis.csc = {\r\n\t\t\t\"cta\": this.element.dataset.csccta,\r\n\t\t\t\"message\": this.element.dataset.cscmessage\r\n\t\t}\r\n\t\tthis.labels = {\r\n\t\t\t\"callRetailer\": this.element.dataset.callRetailerText,\r\n\t\t\t\"emailRetailer\": this.element.dataset.emailRetailerText,\r\n\t\t\t\"getDirections\": this.element.dataset.getDirectionsText,\r\n\t\t\t\"setPreferredStore\": this.element.dataset.setPreferredStoreText,\r\n\t\t\t\"visitWebsite\": this.element.dataset.visitWebsiteText\r\n\t\t}\r\n\t\tthis.isLoggedIn = this.element.dataset.isLoggedIn === 'true';\r\n\t\tthis.setPreferredStoreUrl = this.element.dataset.setPreferredStoreUrl;\r\n\t\tthis.loadMap();\r\n\t},\r\n\r\n\t/**\r\n\t* Loads Google Maps API via npm-included function\r\n\t* writes a script tag to the document that calls Google API\r\n\t*\r\n\t*/\r\n\tloadMap : function() {\r\n\t\tvar gmapKey = this.element.dataset.key;\r\n\t\tloadGoogleMapsAPI({key: gmapKey, libraries: 'places'}).then((googleMaps) => {\r\n\t\t\tthis.initMap();\r\n\t\t}).catch((err) => {\r\n\t\t\tconsole.error(err);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t* inits Google Map\r\n\t*\r\n\t*/\r\n\tinitMap: function() {\r\n\t\t// set latitude, longitude and DOM element where map will be loaded\r\n\t\tvar mapcenter = {lat: this.userPosition.lat, lng: this.userPosition.lng};\r\n\t\tvar mapcontainer = this.element.querySelector(SELECTORS.GOOGLE_MAP);\r\n\t\tvar _self = this;\r\n\r\n\t\t// Create a new StyledMapType object, passing it an array of styles,\r\n\t\t// and the name to be displayed on the map type control.\r\n\t\tvar styledMapType = new google.maps.StyledMapType(\r\n\t\t[],\r\n\t\t{name: 'Styled Map'});\r\n\r\n\t\t// Create map\r\n\t\tthis.map = new google.maps.Map(mapcontainer, {\r\n\t\t\tzoom: 10,\r\n\t\t\tcenter: mapcenter,\r\n\t\t\tmapTypeControl: false,\r\n\t\t\tscaleControl: true,\r\n\t\t\tstreetViewControl: false,\r\n\t\t\trotateControl: false,\r\n\t\t\tfullscreenControl: false,\r\n\t\t\tmapTypeControlOptions: {\r\n\t\t\t\tmapTypeIds: ['roadmap', 'satellite', 'hybrid', 'terrain', 'styled_map']\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// variable to store map object locally\r\n\t\tvar map = this.map;\r\n\r\n\t\t//Associate the styled map with the MapTypeId and set it to display.\r\n map.mapTypes.set('styled_map', styledMapType);\r\n map.setMapTypeId('styled_map');\r\n\r\n\t\t//attempt geolocation\r\n\t\tthis.geolocate();\r\n\r\n\t\t// Create variable to hold map center on load\r\n\t\tvar center = map.getCenter();\r\n\r\n\t\t// Listen for Google Map custom \"idle\" event and update center\r\n\t\tmap.addListener(EVENTS.GMAPS_IDLE, function() {\r\n\t\t\tcenter = map.getCenter();\r\n\t\t});\r\n\r\n\t\t// Listen for Google Map custom \"dragend\" event and display refresh button\r\n\t\tmap.addListener(EVENTS.GMAPS_DRAGEND, function() {\r\n\t\t\tif(_self.listenForDrag) {\r\n\t\t\t\t_self.toggleRefreshOption();\r\n\t\t\t\t_self.listenForDrag = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Add callback to resize service to center the map\r\n\t\tServices.ResizeService.addCallback(function(){\r\n\t\t\tmap.setCenter(center);\r\n\t\t});\r\n\r\n\t\t//create info window\r\n\t\tthis.createInfoWindow();\r\n\r\n\t\t//build search box\r\n\t\tthis.buildSearchBox();\r\n\r\n\t\t// create custom event to call when user clicks on link in map infowindow\r\n\t\twindow.callDealerPreference = new Event(EVENTS.INFOTRIGGER);\r\n\r\n\t\t// Add listener for our custom event\r\n\t\twindow.addEventListener(EVENTS.INFOTRIGGER, function() { _self.onInfoTrigger(_self);}, false);\r\n\r\n\t\t// Add listener for map refresh button\r\n\t\tthis.refreshButton.addEventListener(EVENTS.CLICK, function() { _self.resetAndReload();}, false);\r\n\t},\r\n\r\n\t/**\r\n\t* HTML5 Geolocation\r\n\t* tries to use HTML5 Geolocation, stores lat/long if so\r\n\t*\r\n\t*/\r\n\tgeolocate : function() {\r\n\t\tvar _self = this;\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\t_self.userPosition.lat = position.coords.latitude;\r\n\t\t\t\t_self.userPosition.lng = position.coords.longitude;\r\n\r\n\t\t\t\t// set center based on geolocated coordinates\r\n\t\t\t\t_self.map.setCenter({lat: _self.userPosition.lat, lng: _self.userPosition.lng});\r\n\r\n\r\n\r\n\t\t\t\t_self.markers.user.setPosition({lat: _self.userPosition.lat, lng: _self.userPosition.lng});\r\n\r\n\t\t\t\t// having moved map center, get retailers\r\n\t\t\t\t_self.getRetailerData({lat: _self.userPosition.lat, lng: _self.userPosition.lng});\r\n\r\n\t\t\t}, function() {\r\n\t\t\t\t// Geolocation failed for some other reason\r\n\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// Browser doesn't support Geolocation\r\n\r\n\t\t}\r\n\r\n\t\t// having determined map center, set geo marker, get retailers\r\n\t\t_self.createGeoMarker();\r\n\t\t_self.getRetailerData({lat: _self.map.getCenter().lat(), lng: _self.map.getCenter().lng()});\r\n\t},\r\n\r\n\t/**\r\n\t* create geolocation marker\r\n\t*\r\n\t*/\r\n\tcreateGeoMarker : function() {\r\n\t\tvar _self = this;\r\n\t\t// Create marker for user location\r\n\t\t_self.markers.user = new google.maps.Marker({\r\n\t\t\ticon: {\r\n\t\t\t\tpath: google.maps.SymbolPath.CIRCLE,\r\n\t\t\t\tscale: 5,\r\n\t\t\t\tfillColor: 'blue',\r\n\t\t\t\tfillOpacity: 0.8,\r\n\t\t\t\tstrokeColor: 'blue',\r\n\t\t\t\tstrokeOpacity: 0.8\r\n\t\t\t},\r\n\t\t\tposition: _self.map.getCenter(),\r\n\t\t\tmap: _self.map\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t* create info window in Google map\r\n\t*\r\n\t*/\r\n\tcreateInfoWindow : function() {\r\n\t\tthis.infoWin = new google.maps.InfoWindow({map: this.map});\r\n\t\tthis.infoWin.close();\r\n\t},\r\n\r\n\t/**\r\n\t* populate Info Window\r\n\t*\r\n\t*/\r\n\tpopulateInfoWindow : function(retailer) {\r\n\t\tvar _self = this;\r\n\t\tgoogle.maps.event.addListener(_self.markers.retailLocations[retailer.ID],'click', function() {\r\n\t\t\t_self.infoWin.close();\r\n\t\t\t// as you update the CSS for retail list, you'll need to update this CSS otherwise the designs won't match\r\n\t\t\tvar CSSString = \"\";\r\n\t\t\tvar urlString = (retailer.Url && retailer.Url.length > 0) ? ''+_self.labels.visitWebsite+'' : '';\r\n\t\t\tvar emailString = (retailer.Email && retailer.Email.length > 0) ? ''+_self.labels.emailRetailer+'' : '';\r\n\t\t\tvar isPreferredStore = _self.pretailer && _self.pretailer.ID === retailer.ID;\r\n\t\t\tvar setPreferredStore = _self.isLoggedIn && !isPreferredStore ? ''+_self.labels.setPreferredStore+'' : '';\r\n\r\n\t\t\tvar hoursTempate = retailer.hours.reduce((acc, cur) => {\r\n\t\t\t\treturn acc += `${cur}`;\r\n\t\t\t}, '');\r\n\r\n\t\t\tvar HTMLString = '
    \\\r\n\t\t\t\t\\\r\n\t\t\t\t\t
    '+retailer.Name+'
    \\\r\n\t\t\t\t\t'+retailer.Distance+' mi\\\r\n\t\t\t\t
    \\\r\n\t\t\t\t\\\r\n\t\t\t\t\t'+retailer.Address1+''+retailer.Address2+'\\\r\n\t\t\t\t\\\r\n\t\t\t\t'+retailer.hoursopen+'\\\r\n\t\t\t\t\\\r\n\t\t\t\t'+ hoursTempate +'\\\r\n\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\t\t'+retailer.Phone+'\\\r\n\t\t\t\t\t\t'\r\n\t\t\t\t\t\t+ urlString + emailString +\r\n\t\t\t\t\t\t'\\\r\n\t\t\t\t\t\t\t'+_self.labels.getDirections+'\\\r\n\t\t\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t
    '\r\n\t\t\t\t+ setPreferredStore\r\n\t\t\t\t+ '\\\r\n\t\t\t
    ';\r\n\t\t\t_self.infoWin.setContent(CSSString + HTMLString);\r\n\t\t\t_self.infoWin.open(_self.map, _self.markers.retailLocations[retailer.ID]);\r\n\t\t\twindow.openRetailer = retailer.ID;\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t* link search input to Google map\r\n\t*\r\n\t*/\r\n\tbuildSearchBox : function() {\r\n\t\tvar _self = this;\r\n\t\tvar input = this.element.querySelector(SELECTORS.GOOGLE_PLACES);\r\n var autocomplete = new google.maps.places.Autocomplete(input);\r\n\r\n _self.enableEnterKey(input);\r\n\r\n // Bias the autocomplete results towards current map's viewport.\r\n\t\t_self.map.addListener(EVENTS.GMAPS_BOUNDSCHANGED, function() {\r\n\t\t\tautocomplete.setBounds(_self.map.getBounds());\r\n\t\t});\r\n\r\n autocomplete.addListener(EVENTS.GMAPS_PLACECHANGED, function() {\r\n\t\t\tvar place = autocomplete.getPlace();\r\n\r\n\t\t\tif (!place.geometry) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// recenter map at user's chosen coordinates\r\n\t\t\t_self.map.setCenter(place.geometry.location);\r\n\t\t\t_self.markers.user.setPosition(place.geometry.location);\r\n\r\n\t\t\t// having moved map center, get retailers\r\n\t\t\t_self.getRetailerData({lat: place.geometry.location.lat(), lng: place.geometry.location.lng()});\r\n\t\t});\r\n\t},\r\n\r\n\tenableEnterKey: function(input) {\r\n\r\n\t /* Store original event listener */\r\n\t const _addEventListener = (input.addEventListener) ? input.addEventListener : input.attachEvent\r\n\r\n\t const addEventListenerWrapper = (type, listener) => {\r\n\t if (type === \"keydown\") {\r\n\t /* Store existing listener function */\r\n\t const _listener = listener\r\n\t listener = (event) => {\r\n\t /* Simulate a 'down arrow' keypress if no address has been selected */\r\n\t const suggestion_selected = document.getElementsByClassName('pac-item-selected').length > 0\r\n\t if (event.which === 13 && !suggestion_selected) {\r\n\t const e = JSON.parse(JSON.stringify(event))\r\n\t e.which = 40\r\n\t e.keyCode = 40\r\n\t _listener.apply(input, [e])\r\n\t }\r\n\t _listener.apply(input, [event])\r\n\t }\r\n\t }\r\n\t _addEventListener.apply(input, [type, listener])\r\n\t }\r\n\r\n\t input.addEventListener = addEventListenerWrapper\r\n\t input.attachEvent = addEventListenerWrapper\r\n\t },\r\n\r\n\t/**\r\n\t* build Retailer list\r\n\t*\r\n\t*/\r\n\tbuildRetailerList: function() {\r\n\t\tvar _self = this;\r\n\t\tvar retailers = _self.retailerData;\r\n\t\tvar prID = null;\r\n\t\tvar hasCSC = false;\r\n\t\tvar retailerRadius = this.radius;\r\n\t\tif(typeof(retailers) !== 'undefined') {\r\n\t\t\tvar numRetailers = retailers.length;\r\n\t\t\t// Add new markers\r\n\t\t\tif(numRetailers > 0) {\r\n\t\t\t\t_self.HTMLString = '
      ';\r\n\t\t\t\tif(_self.pretailer !== null && _self.pretailer !== 'undefined') {\r\n\t\t\t\t\tthis.buildRetailerItem(_self.pretailer, true);\r\n\t\t\t\t\tprID = _self.pretailer.ID;\r\n\t\t\t\t}\r\n\t\t\t\t// the below line is to fake Certified Service Center data in the JSON so as to demonstrate in prototype and should be removed\r\n\t\t\t\t// retailers[0].csc = true;\r\n\t\t\t\t// the above line is to fake Certified Service Center data in the JSON so as to demonstrate in prototype and should be removed\r\n\t\t\t\tfor (var i = 0; i < numRetailers; i++) {\r\n\t\t\t\t var retailer = retailers[i];\r\n\t\t\t\t\tif(retailer.ID !== prID) {\r\n\t\t\t\t\t\tthis.buildRetailerItem(retailer, false);\r\n\t\t\t\t\t\tif(!hasCSC && retailer.csc === true) {\r\n\t\t\t\t\t\t\thasCSC = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tnumRetailers = Object.keys(retailers).length;\r\n\t\t\t\tretailerRadius = Math.ceil(parseInt(retailers[numRetailers - 1].Distance) / 100) * 100;\r\n\t\t\t\tif(retailerRadius <= this.radius) {\r\n\t\t\t\t\t_self.retailerMessage.innerHTML = 'Displaying '+numRetailers+' stores within ' + this.radius + ' miles.';\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_self.retailerMessage.innerHTML = 'No stores found within ' + this.radius + ' miles. ' + 'Displaying closest stores.'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t_self.fallbackRetailer();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t_self.fallbackRetailer();\r\n\t\t}\r\n\r\n\t\t_self.HTMLString += '
    ';\r\n\t\tthis.retailerslist.innerHTML = _self.HTMLString;\r\n\r\n\t\t//create event listener for newly-created CTA\r\n\t\tvar preferredLinks = this.retailerslist.querySelectorAll(SELECTORS.SET_PREFERRED);\r\n\r\n\t\tfor (var j = 0; j < preferredLinks.length; j++) {\r\n\t\t\tpreferredLinks[j].addEventListener(EVENTS.CLICK, _self.infoTriggerHandler());\r\n\t\t}\r\n\r\n\t\t//init tooltip\r\n\t\tif(hasCSC) {\r\n\t\t\ttooltips(this.retailerslist);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t* build Retailer item\r\n\t*\r\n\t*/\r\n\tbuildRetailerItem: function(retailer, preferred) {\r\n\t\t// FOR CSC ICON: you will need to add the classname that gets created in scss/base/icons when you run gulp compile-icons after adding the SVG for the CSC icon to the assets/icons folder. Add that class to .hof-tooltip-link\r\n\t\tvar CSC = typeof(retailer.csc) !== 'undefined' && retailer.csc === true ? '\\\r\n\t\t\t' + this.csc.cta + '\\\r\n\t\t\t' + this.csc.message + '\\\r\n\t\t\t' : '';\r\n\t\tvar retailerClass = preferred ? 'class=\"preferred-retailer\"' : '';\r\n\t\tvar urlString = (retailer.Url && retailer.Url.length > 0) ? ''+this.labels.visitWebsite+'' : '';\r\n\t\tvar phoneString = (retailer.Phone && retailer.Phone.length > 0) ?''+retailer.Phone+'': '';\r\n\t\tvar emailString = (retailer.Email && retailer.Email.length > 0) ? ''+this.labels.emailRetailer+'' : '';\r\n\t\tvar setPreferred = (this.isLoggedIn && !preferred) ? ''+this.labels.setPreferredStore+'': '';\r\n\r\n\t\tvar hourOpen = retailer.hoursopen ? ''+ retailer.hoursopen+'' : '';\r\n\t\tvar hours = (retailer.hours && retailer.hours.length) ?\r\n\t\t\tretailer.hours.reduce((acc, cur) => {\r\n\t\t\t\treturn acc += `${cur}`;\r\n\t\t\t}, '')\r\n\t\t\t:\r\n\t\t\t'';\r\n\t\tvar hoursTemplate = ''+ hourOpen + hours + '';\r\n\r\n\t\tthis.HTMLString += '
  • \\\r\n\t\t\t\\\r\n\t\t\t\t
    '+retailer.Name+'
    \\\r\n\t\t\t\t'+retailer.Distance+' mi\\\r\n\t\t\t\t
    '+CSC+'\\\r\n\t\t\t\t\\\r\n\t\t\t\t\t'+retailer.Address1+'\\\r\n\t\t\t\t\t'+retailer.Address2+'\\\r\n\t\t\t\t'\r\n\t\t\t\t+ hoursTemplate\r\n\t\t\t\t+ phoneString\r\n\t\t\t\t+ emailString\r\n\t\t\t\t+ urlString\r\n\t\t\t\t+ '\\\r\n\t\t\t\t\\\r\n\t\t\t\t\t'+this.labels.getDirections+'\\\r\n\t\t\t\t\\\r\n\t\t\t'\r\n\t\t\t\t+ setPreferred\r\n\t\t\t'\\\r\n\t\t\t
  • ';\r\n\t},\r\n\r\n\t/**\r\n\t* fallback Retailer card\r\n\t* placeholder function that loads filler data right now\r\n\t* for the case in which user has centered map on coordinates\r\n\t* not within 100mi of a retailer - the nearest retailer to those coordinates is shown\r\n\t* regardless of how far away\r\n\t*\r\n\t*/\r\n\tfallbackRetailer : function() {\r\n\t\tthis.buildRetailerItem(this.fbretailer, false);\r\n\t},\r\n\r\n\t/**\r\n\t * Filter the store with the property IsPreferredStore === true,\r\n\t * and then, save the user preferred retailer to render it at the beginning\r\n\t * of the list.\r\n\t */\r\n\tinitPreferredRetailer: function() {\r\n\t\tif (this.retailerData && this.retailerData.length) {\r\n\t\t\tvar preferredArray = this.retailerData.filter(function (r) {\r\n\t\t\t\treturn r.IsPreferredStore;\r\n\t\t\t});\r\n\t\t\tif (preferredArray.length) {\r\n\t\t\t\tthis.pretailer = preferredArray[0];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t* add new preferred Retailer card\r\n\t* placeholder function that swaps preferred retailer\r\n\t* when user clicks on preferred retailer link\r\n\t* this needs to be tied to a service call that add the preferred retailer info to user account\r\n\t*\r\n\t*/\r\n\tsetPreferredRetailer : function(ID) {\r\n\t\tvar _self = this;\r\n\t\tvar retailers = _self.retailerData;\r\n\t\tif(typeof(retailers) !== 'undefined') {\r\n\t\t\tvar numRetailers = retailers.length;\r\n\t\t\tif(numRetailers > 0) {\r\n\t\t\t\tfor (var i = 0; i < numRetailers; i++) {\r\n\t\t\t\t var retailer = retailers[i];\r\n\t\t\t\t\tif(parseInt(retailer.ID) == ID) {\r\n\t\t\t\t\t\t_self.pretailer = retailer;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (_self.pretailer) {\r\n\t\t\t\t\tvar url = this.setPreferredStoreUrl + \"?storeId=\" + ID;\r\n\t\t\t\t\tgetJSON(url);\r\n\t\t\t\t\t_self.infoWin.close();\r\n\t\t\t\t\t_self.buildRetailerList();\r\n\t\t\t\t\tthis.retailerslist.scrollTop = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t/**\r\n\t* build Google Maps URL\r\n\t*\r\n\t*/\r\n\tbuildMapsURL : function(retailer) {\r\n\t\tvar addr1 = retailer.Address1.split(' ').join('+');\r\n\t\tvar addr2 = retailer.Address2.split(' ').join('+');\r\n\t\treturn 'https://www.google.com/maps/place/' +addr1+','+addr2+ '/@' +retailer.Latitude+','+retailer.Longitude+',14z';\r\n\t},\r\n\r\n\t/**\r\n\t* add Retailer markers\r\n\t*\r\n\t*/\r\n\taddRetailerMarkers : function() {\r\n\t\tvar _self = this;\r\n\t\tvar retailers = _self.retailerData;\r\n\r\n\t\t// Clear out old markers if any\r\n\t\tfor (var m = 0; m < _self.markers.retailLocations.length; m++) {\r\n\t\t\t_self.markers.retailLocations[m].setMap(null);\r\n\t\t}\r\n\t\t_self.markers.retailLocations = {};\r\n\r\n\t\t//Create bounds object\r\n\t\t_self.bounds = new google.maps.LatLngBounds();\r\n\r\n\t\tif(typeof(retailers) !== 'undefined') {\r\n\t\t\tvar numRetailers = Object.keys(retailers).length;\r\n\r\n\t\t\t// Add new markers\r\n\t\t\tif(numRetailers > 0) {\r\n\t\t\t\t\r\n\t\t\t\t//Retailer list is always sorted ascendigly by distance. Hence the farthest retailer will be at the last index in the list.\r\n\t\t\t\tvar retailerRadius = Math.ceil(parseInt(retailers[numRetailers - 1].Distance) / 100) * 100;\r\n\t\t\t\t\r\n\t\t\t\tfor (var i = 0; i < numRetailers; i++) {\r\n\t\t\t \t\tvar retailer = retailers[i];\r\n\t\t\t \t\tif(parseInt(retailer.Distance) <= retailerRadius) {\r\n\t\t\t\t\t var retailerImg = MISC.MAP_MARKER;\r\n\t\t\t\t\t var retailerPlace = new google.maps.LatLng(retailer.Latitude, retailer.Longitude);\r\n\t\t\t\t\t var markerSize = retailer.HOFStore ? 1.5 : 1;\r\n\r\n\t\t\t\t\t // Create marker for user location\r\n\t\t\t\t\t\t_self.markers.retailLocations[retailer.ID] = new google.maps.Marker({\r\n\t\t\t\t\t\t\ticon: {\r\n\t\t\t\t\t\t\t\turl: retailerImg,\r\n\t\t\t\t\t\t\t\tsize: new google.maps.Size(64,64),\r\n\t\t\t\t\t\t\t\tanchor: new google.maps.Point(0, 32),\r\n\t\t\t\t\t\t\t\tscaledSize: new google.maps.Size(32,32)\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tposition: retailerPlace,\r\n\t\t\t\t\t\t\tmap: _self.map\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t//add retailer coordinates to map bounds\r\n\t\t\t\t\t\t_self.bounds.extend(retailerPlace);\r\n\r\n\t\t\t\t\t\t//open info window on click of marker\r\n\t\t\t\t\t\t_self.populateInfoWindow(retailer);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t_self.fallbackRetailMarker();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t_self.fallbackRetailMarker();\r\n\t\t}\r\n\r\n\t\t// pause map drag listening\r\n\t\t_self.listenForDrag = false;\r\n\r\n\t\t// set bounds of map to fit all markers\r\n\t\t_self.map.fitBounds(_self.bounds);\r\n\r\n\t\t// 'dragend' event listener doesn't have a callback, so here we are binding something to the 'idle' event *once*\r\n\t\tgoogle.maps.event.addListenerOnce(_self.map, EVENTS.GMAPS_IDLE, function() {\r\n\t\t\t // begin map drag listening\r\n\t\t\t_self.listenForDrag = true;\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t* fallback Retailer marker\r\n\t* placeholder function that loads filler data right now\r\n\t* for the case in which user has centered map on coordinates\r\n\t* not within 100mi of a retailer - the nearest retailer to those coordinates is shown\r\n\t* regardless of how far away\r\n\t*\r\n\t*/\r\n\tfallbackRetailMarker : function() {\r\n\t\tvar _self = this;\r\n\t\tvar retailer = this.fbretailer;\r\n\t\tvar retailerImg = MISC.MAP_MARKER;\r\n\t\tvar retailerPlace = new google.maps.LatLng(retailer.Latitude, retailer.Longitude);\r\n\t\tvar markerSize = retailer.HOFStore ? 1.5 : 1;\r\n\r\n\t\t// Create marker for user location\r\n\t\t_self.markers.retailLocations[retailer.ID] = new google.maps.Marker({\r\n\t\t\ticon: {\r\n\t\t\t\turl: retailerImg,\r\n\t\t\t\tsize: new google.maps.Size(64,64),\r\n\t\t\t\tanchor: new google.maps.Point(0, 32),\r\n\t\t\t\tscaledSize: new google.maps.Size(32,32)\r\n\t\t\t},\r\n\t\t\tposition: retailerPlace,\r\n\t\t\tmap: _self.map\r\n\t\t});\r\n\r\n\t\t//add retailer coordinates to map bounds\r\n\t\t_self.bounds.extend(retailerPlace);\r\n\r\n\t\t//open info window on click of marker\r\n\t\t_self.populateInfoWindow(retailer);\r\n\t},\r\n\r\n\t/**\r\n\t* store Retailer data\r\n\t*\r\n\t* @param {JSON} retailerData stores retailerData in object for use across the module\r\n\t*\r\n\t*/\r\n\tstoreRetailerData : function(retailerData) {\r\n\t\tthis.retailerData = retailerData.d;\r\n\t\tthis.pretailer = null;\r\n\t},\r\n\r\n\t/**\r\n\t* get Retailer data\r\n\t*\r\n\t* @param {JSON} mapcenter a latitude/longitude pair to POST to HOF's Search service call\r\n\t* data returned from this service call should be JSON list of Retailers\r\n\t*\r\n\t*/\r\n\tgetRetailerData : function(mapcenter) {\r\n\t\tvar _self = this;\r\n\t\tvar domain = /:\\/\\/([^\\/]+)/.exec(window.location.href)[1];\r\n\t\t_self.retailerData = null;\r\n\t\t// if we're on localhost, scrape the data from client's live API\r\n\r\n\t\t// this should be removed because we are using apiary to mocks some endpoints\r\n\t\t// see gulp/tasks/dev/serve.js file\r\n\t\t// ---------------------------------\r\n\t\t// if(window.location.href.indexOf(MISC.LOCALHOST) > -1 || domain.indexOf(MISC.DEV_DOMAIN) !== -1) {\r\n\t\t// \tvar endpoint = window.location.href.indexOf(MISC.LOCALHOST) > -1 ? MISC.EXAMPLE_ENDPOINT : MISC.DEV_ENDPOINT;\r\n\t\t// \tvar getURL = endpoint + \"?lat=\" + mapcenter.lat + \"&lng=\" + mapcenter.lng;\r\n\r\n\t\t// \tvar xhr = new XMLHttpRequest();\r\n\t\t// \txhr.onreadystatechange = function() {\r\n\t\t// \t\tif (xhr.readyState == XMLHttpRequest.DONE) {\r\n\t\t// \t\t\tparseString.to_json(xhr.responseText, function (err, result) {\r\n\t\t// \t\t\t\tvar retailers = {};\r\n\t\t// \t\t\t\tretailers.d = result.ArrayOfRetailer.Retailer;\r\n\t\t// \t\t\t\t_self.storeRetailerData(retailers);\r\n\t\t// \t\t\t\t_self.initPreferredRetailer();\r\n\t\t// \t\t\t\t_self.addRetailerMarkers();\r\n\t\t// \t\t\t\t_self.buildRetailerList();\r\n\t\t// \t\t\t});\r\n\t\t// \t\t}\r\n\t\t// \t};\r\n\t\t// \txhr.open('GET', getURL, true);\r\n\t\t// \txhr.send(null);\r\n\t\t// } else {\r\n\t\t// \t// client should provide new API endpoint\r\n\t\t// \tvar getURL = MISC.RETAILERS_ENDPOINT + \"?lat=\" + mapcenter.lat + \"&lng=\" + mapcenter.lng;\r\n\t\t// \tvar result = getJSON(getURL).then(function(data) {\r\n\t\t// \t\t_self.storeRetailerData(data);\r\n\t\t// \t\t_self.initPreferredRetailer();\r\n\t\t// \t\t_self.addRetailerMarkers();\r\n\t\t// \t\t_self.buildRetailerList();\r\n\t\t// \t}, function(status) {\r\n\t\t// \t\t_self.storeRetailerData(status);\r\n\t\t// \t});\r\n\t\t// }\r\n\r\n\t\tvar getURL = MISC.RETAILERS_ENDPOINT + \"?lat=\" + mapcenter.lat + \"&lng=\" + mapcenter.lng;\r\n\t\tvar result = getJSON(getURL).then(function(data) {\r\n\t\t\t_self.storeRetailerData(data);\r\n\t\t\t_self.initPreferredRetailer();\r\n\t\t\t_self.addRetailerMarkers();\r\n\t\t\t_self.buildRetailerList();\r\n\t\t}, function(status) {\r\n\t\t\t_self.storeRetailerData(status);\r\n\t\t});\r\n\t},\r\n\r\n\r\n\t/**\r\n\t* event handler for onInfoTrigger\r\n\t*\r\n\t*/\r\n infoTriggerHandler : function() {\r\n \tvar _self = this;\r\n\t\treturn function() {\r\n\t\t\t_self.onInfoTrigger();\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t* actions to perform when user clicks \"Change Preferred Retailer\" link in map infowindow\r\n\t*\r\n\t*/\r\n\tonInfoTrigger : function(_self) {\r\n\t\tvar e = event;\r\n\t\tif(typeof(e) !== 'undefined' && e.type !== EVENTS.INFOTRIGGER) {\r\n\t\t\t// get ID of chosen retailer from retailer list & pass to setPreferredRetailer\r\n\t\t\t//console.log(e.target.parentNode.parentNode.getAttribute('id'));\r\n\t\t\tthis.setPreferredRetailer(e.target.parentNode.parentNode.getAttribute('id'));\r\n\t\t} else if (typeof(window.openRetailer) !== 'undefined') {\r\n\t\t\t// get ID of chosen retailer from Maps info window\r\n\t\t\t//console.log(window.openRetailer);\r\n\t\t\t_self.setPreferredRetailer(window.openRetailer);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t* toggles display of refresh button in map\r\n\t*\r\n\t*/\r\n\ttoggleRefreshOption : function() {\r\n\t\tthis.refreshMap.classList.toggle(CLASS_NAMES.SHOW);\r\n\t},\r\n\r\n\t/**\r\n\t* resets retailer offset and reloads the retailers using map's current center\r\n\t*\r\n\t*/\r\n\tresetAndReload : function() {\r\n\t\tthis.storesMultiple = 1;\r\n\t\tthis.getRetailerData({lat: this.map.getCenter().lat(), lng: this.map.getCenter().lng()});\r\n\t\tthis.toggleRefreshOption();\r\n\t\tthis.listenForDrag = true;\r\n\t}\r\n\r\n};\r\n\r\nexport default RetailLocator;\r\n","/*jshint loopfunc: true */\r\nimport { MISC } from '../../common/constants';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { getQueryParam } from '../../common/utils/queryparam';\r\nimport { encodeSpaces, decodeSpaces } from '../../common/utils/encode'\r\nimport { updateRecentSearches } from '../../common/utils/search';\r\n\r\nconst Search = {\r\n\t\r\n\t// Initialize the module\r\n\tinit(element) {\r\n\t\tthis.$element = element;\r\n\t\tthis.bindElements();\r\n\t\tthis.bindEvents();\r\n\r\n\t\tif (this.q) {\r\n\t\t\tthis.getResults();\r\n\t\t}\r\n\t},\r\n\r\n\tbindElements() {\r\n\t\tthis.$searchForm = this.$element.querySelector('.hof-search-form');\r\n\t\tthis.$searchInput = this.$element.querySelector('.hof-search-form__input');\r\n\t\tthis.$loading = this.$searchForm.querySelector('.hof-loading');\r\n\r\n\t\tthis.$noresults = this.$searchForm.querySelector('.hof-no-results');\r\n\t\tthis.$suggested = this.$noresults.querySelectorAll('.hof-search-suggestion')\r\n\t\tthis.$products = this.$element.querySelector('.hof-search-products');\r\n\t\tthis.$articles = this.$element.querySelector('.hof-search-articles');\r\n\r\n\t\tthis.productsTemplate = require(\"../../templates/partials/searchproducts.hbs\");\r\n\t\tthis.articlesTemplate = require(\"../../templates/partials/searcharticles.hbs\");\r\n\r\n\t\tthis.productResults = new Results(this.$products, this.productsTemplate);\r\n\t\tthis.articleResults = new Results(this.$articles, this.articlesTemplate);\r\n\t\t\r\n\t\tthis.q = getQueryParam('q') || '';\r\n\t\tif (this.q) {\r\n\t\t\tthis.$searchInput.classList.add('not-empty');\r\n\t\t\tthis.$searchInput.value = decodeSpaces(this.q);\r\n\t\t}\r\n\t},\r\n\r\n\tbindEvents() {\r\n\t\tthis.$searchForm.addEventListener('submit', ::this.search);\r\n\r\n\t\tfor (var i = 0; i < this.$suggested.length; i++) {\r\n\t\t\tthis.$suggested[i].addEventListener('click', ::this.onSuggestedClick);\r\n\t\t}\r\n\t},\r\n\r\n\tsearch(e) {\r\n\t\te.preventDefault();\r\n\t\tlet q = this.$searchInput.value;\r\n\t\tthis.searchByTerm(q);\r\n\t},\r\n\r\n\tsearchByTerm(term) {\r\n\t\tconst q = encodeSpaces(term);\r\n\t\tif (q) {\r\n\t\t\tlet url = window.location.href.split('?')[0];\r\n\t\t\turl = `${url}?q=${q}`;\r\n\t\t\twindow.history.pushState('', '', url);\r\n\t\t\tthis.q = q;\r\n\t\t\tthis.getResults();\r\n\t\t}\r\n\t},\r\n\r\n\tgetResults() {\r\n\t\tthis.showSection(this.$loading);\r\n\t\tthis.hideSection(this.$products);\r\n\t\tthis.hideSection(this.$articles);\r\n\t\tPromise\r\n\t\t\t.all([this.productResults.init(this.q), this.articleResults.init(this.q)])\r\n\t\t\t.then(::this.checkResults);\r\n\t},\r\n\r\n\tcheckResults([products, articles]) {\r\n\t\tthis.hideSection(this.$loading);\r\n\r\n\t\tconst productItems = products.items || [];\r\n\t\tconst articleItems = articles.items || [];\r\n\r\n\t\tif (productItems.length) {\r\n\t\t\tthis.showSection(this.$products);\r\n\t\t}\r\n\r\n\t\tif (articleItems.length) {\r\n\t\t\tthis.showSection(this.$articles);\r\n\t\t}\r\n\r\n\t\tif (productItems.length || articleItems.length) {\r\n\t\t\tupdateRecentSearches(this.q);\r\n\t\t} else {\r\n\t\t\tthis.showSection(this.$noresults);\r\n\t\t}\r\n\t},\r\n\r\n\thideSection($section) {\r\n\t\t$section.classList.remove('visible');\r\n\t},\r\n\r\n\tshowSection($section) {\r\n\t\t$section.classList.add('visible');\r\n\t},\r\n\r\n\tonSuggestedClick(e) {\r\n\t\tconst term = e.currentTarget.dataset.term;\r\n\t\tthis.$searchInput.value = term;\r\n this.searchByTerm(term);\r\n\t}\r\n};\r\n\r\nclass Results {\r\n\r\n\tconstructor(element, template) {\r\n\t\tthis.$element = element;\r\n\t\tthis.template = template;\r\n\t\tthis.page = 0;\r\n\t\tthis.bindElements();\r\n\t\tthis.bindEvents();\r\n\t}\r\n\r\n\tbindElements() {\r\n\t\tthis.$list = this.$element.querySelector('ul');\r\n\t\tthis.$viewAll = this.$element.querySelector('.hof-view-all button');\r\n\t\tthis.$viewMore = this.$element.querySelector('.hof-view-more button');\r\n\t\tthis.$loading = this.$element.querySelector('.hof-loading');\r\n\r\n\t\tthis.viewMoreUrl = this.$element.dataset.viewMoreUrl;\r\n\t\tthis.viewAllUrl = this.$element.dataset.viewAllUrl;\r\n\t}\r\n\r\n\tbindEvents() {\r\n\t\tthis.$viewAll.addEventListener('click', ::this.viewAll);\r\n\t\tthis.$viewMore.addEventListener('click', ::this.viewMore);\r\n\t}\r\n\r\n\tinit(q) {\r\n\t\tthis.q = q;\r\n\t\tthis.page = 1;\r\n\t\tthis.$list.innerHTML = '';\r\n\t\treturn this.getMoreData()\r\n\t\t\t.then(::this.addMore)\r\n\t\t\t.then(::this.checkActions);\r\n\t}\r\n\r\n\tviewAll() {\r\n\t\tconst url = `${this.viewAllUrl}?q=${this.q}`;\r\n\t\tthis.showLoading();\r\n\t\tgetJSON(url)\r\n\t\t\t.then(::this.addAll)\r\n\t\t\t.then(::this.hideLoading)\r\n\t\t\t.catch(::this.hideLoading);\r\n\t}\r\n\r\n\tviewMore() {\r\n\t\tthis.page++;\r\n\t\tthis.showLoading();\r\n\t\treturn this.getMoreData()\r\n\t\t\t.then(::this.addMore)\r\n\t\t\t.then(::this.hideLoading)\r\n\t\t\t.catch(::this.hideLoading);\r\n\t}\r\n\r\n\tgetMoreData() {\r\n\t\tconst url = `${this.viewMoreUrl}?q=${this.q}&page=${this.page}`;\r\n\t\treturn getJSON(url);\r\n\t}\r\n\r\n\taddMore(data) {\r\n\t\tconst HTML = this.template(data);\r\n\t\tif (data.items && data.items.length) {\r\n\t\t\tthis.$list.insertAdjacentHTML('beforeend', HTML);\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n\taddAll(data) {\r\n\t\tconst HTML = this.template(data);\r\n\t\tthis.$viewMore.disabled = true;\r\n\t\tthis.$viewMore.setAttribute(MISC.ARIA_HIDDEN, true);\r\n\t\tthis.$list.innerHTML = HTML;\r\n\t}\r\n\r\n\tshowLoading() {\r\n\t\tthis.$loading.classList.add('visible');\r\n\t\tthis.$viewMore.setAttribute(MISC.ARIA_HIDDEN, true);\r\n\t\tthis.$viewAll.setAttribute(MISC.ARIA_HIDDEN, true);\r\n\t}\r\n\r\n\thideLoading(data) {\r\n\t\tthis.$loading.classList.remove('visible');\r\n\t\tthis.checkActions(data);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tcheckActions(data) {\r\n\t\tif(data.more) {\r\n\t\t\tthis.$viewMore.disabled = false;\r\n\t\t\tthis.$viewMore.setAttribute(MISC.ARIA_HIDDEN, false);\r\n\t\t\tthis.$viewAll.disabled = false;\r\n\t\t\tthis.$viewAll.setAttribute(MISC.ARIA_HIDDEN, false);\r\n\t\t} else {\r\n\t\t\tthis.$viewMore.disabled = true;\r\n\t\t\tthis.$viewMore.setAttribute(MISC.ARIA_HIDDEN, true);\r\n\t\t\tthis.$viewAll.disabled = true;\r\n\t\t\tthis.$viewAll.setAttribute(MISC.ARIA_HIDDEN, true);\r\n\t\t}\r\n\t\treturn data;\r\n\t}\r\n\r\n};\r\n\r\nexport default Search;","export function getQueryParam(name) {\r\n const queryString = document.location.search.slice(1).split('#')[0];\r\n const arr = queryString.split('&');\r\n\r\n for (let i = 0; i < arr.length; i++) {\r\n let a = arr[i].split('=');\r\n if (a[0] === name) {\r\n return a[1];\r\n }\r\n }\r\n\r\n return null;\r\n}","import { EVENTS, SELECTORS, CLASS_NAMES, MISC } from '../../common/constants';\r\nimport { queryselectorparents } from '../../common/utils/queryselectorparents';\r\n\r\nvar Share = {\r\n\r\n init: function(element) {\r\n this.element = element;\r\n\r\n this.shareToggle = element.querySelectorAll(SELECTORS.SHARE_TOGGLE);\r\n\r\n for (var i = 0; i < this.shareToggle.length; i++) {\r\n this.shareToggle[i].addEventListener(EVENTS.CLICK, _toggleShare);\r\n }\r\n\r\n function _toggleShare() {\r\n event.preventDefault();\r\n\r\n var container = queryselectorparents(event.target, SELECTORS.SHARE_CONTAINER);\r\n container.classList.toggle(CLASS_NAMES.OPEN);\r\n }\r\n\r\n }\r\n};\r\n\r\nexport default Share;\r\n","import format from 'string-format';\r\nimport cartItemModalTemplate from '../../../templates/partials/cart/modal.hbs';\r\nimport cartOptionsModalTemplate from '../../../templates/partials/cart/options.hbs';\r\nimport Configurator from '../../atoms/Configurator';\r\nimport { getJSON } from '../../../common/utils/getjson';\r\nimport { serializeform } from '../../../common/utils/serializeform';\r\n\r\nclass CartItemModal {\r\n\r\n constructor(element, data, config) {\r\n this.$element = element;\r\n this.data = data;\r\n this.config = config;\r\n }\r\n\r\n open() {\r\n const target = `#hof-item-configurator-${this.data.orderLineId}`;\r\n const $modalContent = this.$element.querySelector(target);\r\n const data = {\r\n labels: this.config.labels,\r\n data: this.data\r\n };\r\n const HTML = cartItemModalTemplate(data);\r\n\r\n $modalContent.innerHTML = HTML;\r\n\r\n const $productInfo = $modalContent.querySelector('.hof-product-info');\r\n\r\n $productInfo.insertAdjacentHTML('beforeend', this.config.loader);\r\n\r\n this.config.modal.open(target, { onOpen: ::this.getCartItem });\r\n }\r\n\r\n getCartItem() {\r\n const { endpoints } = this.config;\r\n const url = `${endpoints.getItem}?orderLineId=${this.data.orderLineId}`;\r\n this.showLoader();\r\n return getJSON(url)\r\n .then(::this.createModalOptions);\r\n }\r\n\r\n createModalOptions(response) {\r\n const $modalContent = this.config.modal.dom.modalContent;\r\n const $options = $modalContent.querySelector('.hof-product-options');\r\n const data = {\r\n labels: this.config.labels,\r\n data: response\r\n };\r\n const HTML = cartOptionsModalTemplate(data);\r\n $options.innerHTML = HTML;\r\n\r\n const $cta = $options.querySelector('.hof-cta');\r\n this.ctaTemplate = null;\r\n if ($cta) {\r\n this.ctaTemplate = $cta.getAttribute('onclick');\r\n }\r\n\r\n this.bindElements();\r\n this.bindEvents();\r\n this.initConfigurator(response);\r\n this.hideLoader();\r\n }\r\n\r\n bindElements() {\r\n const $modalContent = this.config.modal.dom.modalContent;\r\n this.dom = {\r\n $form: $modalContent.querySelector('.hof-config-form')\r\n };\r\n }\r\n\r\n bindEvents() {\r\n this.dom.$form.addEventListener('submit', ::this.handleSubmit);\r\n }\r\n\r\n initConfigurator(response) {\r\n const $modalContent = this.config.modal.dom.modalContent;\r\n\r\n const initialParams = response.options.reduce((params, option) => {\r\n if (option.value) {\r\n params[option.id] = option.value;\r\n }\r\n return params;\r\n }, {});\r\n\r\n const config = {\r\n initialParams,\r\n onChange: ::this.handleOptionChange,\r\n updateOnLoad: false\r\n };\r\n Configurator.init($modalContent, config);\r\n }\r\n\r\n handleOptionChange(configOptions) {\r\n if (this.config.endpoints.getProduct) {\r\n this.disableSubmit();\r\n getJSON(this.config.endpoints.getProduct, configOptions)\r\n .then(::this.handleProductInfo);\r\n }\r\n }\r\n\r\n handleProductInfo(response) {\r\n const $modalContent = this.config.modal.dom.modalContent;\r\n const $image = $modalContent.querySelector('.image');\r\n const $productName = $modalContent.querySelector('.name');\r\n const $price = $modalContent.querySelector('.price');\r\n const $description = $modalContent.querySelector('.description');\r\n const $sku = $modalContent.querySelector('input[name=\"sku\"]');\r\n const $submit = $modalContent.querySelector('button[type=\"submit\"]');\r\n const $cta = $modalContent.querySelector('.hof-cta');\r\n\r\n $productName.innerText = response.productName;\r\n $price.innerText = response.price;\r\n $description.innerText = response.description;\r\n $sku.value = response.sku;\r\n\r\n if (this.config.wishlistItem) {\r\n $submit.disabled = false;\r\n }\r\n\r\n if (response.sku) {\r\n $price.classList.add('visible');\r\n if (!this.config.wishlistItem) {\r\n $submit.classList.add('visible');\r\n $submit.disabled = false;\r\n $cta.classList.remove('visible');\r\n }\r\n } else {\r\n $price.classList.remove('visible');\r\n if (!this.config.wishlistItem) {\r\n $submit.classList.remove('visible');\r\n $submit.disabled = true;\r\n $cta.classList.add('visible');\r\n this.updateCtaOnClick($cta, response);\r\n }\r\n }\r\n\r\n if (response.image) {\r\n $image.setAttribute('src', response.image);\r\n }\r\n\r\n if (response.options && response.options.length) {\r\n Configurator.updateDefaultValuesNew(response.options);\r\n }\r\n }\r\n\r\n updateCtaOnClick($cta, response) {\r\n if (!this.ctaTemplate) {\r\n return;\r\n }\r\n const settings = {\r\n chatMessageLabel: response.chatMessageLabel\r\n };\r\n const chatOnClick = format(this.ctaTemplate, settings);\r\n $cta.setAttribute('onclick', chatOnClick);\r\n }\r\n\r\n handleSubmit(e) {\r\n e.preventDefault();\r\n const data = serializeform(e.currentTarget);\r\n\r\n this.showSubmitLoader();\r\n getJSON(this.config.endpoints.updateItem, data)\r\n .then(::this.handleUpdateSuccess);\r\n }\r\n\r\n handleUpdateSuccess(response) {\r\n if (response.success && this.config.onUpdated) {\r\n this.config.onUpdated(response)\r\n .then(() => {\r\n this.hideSubmitLoader();\r\n this.config.modal.close();\r\n });\r\n } else {\r\n this.hideSubmitLoader();\r\n }\r\n }\r\n\r\n getLoading() {\r\n const $modalContent = this.config.modal.dom.modalContent;\r\n return $modalContent.querySelector('.hof-loading');\r\n }\r\n\r\n showLoader() {\r\n const $loading = this.getLoading();\r\n $loading.classList.add('visible');\r\n }\r\n\r\n hideLoader() {\r\n const $loading = this.getLoading();\r\n $loading.classList.remove('visible');\r\n }\r\n\r\n showSubmitLoader() {\r\n const $loading = this.getLoading();\r\n $loading.classList.add('submit-visible');\r\n }\r\n\r\n hideSubmitLoader() {\r\n const $loading = this.getLoading();\r\n $loading.classList.remove('submit-visible');\r\n }\r\n\r\n disableSubmit() {\r\n const $modalContent = this.config.modal.dom.modalContent;\r\n const $submit = $modalContent.querySelector('button[type=\"submit\"]');\r\n $submit.disabled = true;\r\n }\r\n}\r\n\r\nexport default CartItemModal;\r\n","\r\nimport { getJSON } from '../../../common/utils/getjson';\r\n\r\nclass ReserveItemModal {\r\n\r\n constructor(element, data, config) {\r\n this.el = element;\r\n this.data = data;\r\n this.config = config;\r\n\r\n this.bindElements();\r\n\r\n this.productReserve = this.config.productReserve;\r\n }\r\n\r\n bindElements() {\r\n this.dom = {\r\n reserve: document.querySelector('.hof-reserve-wrapper')\r\n };\r\n }\r\n\r\n open() {\r\n this.productReserve.reset();\r\n this.config.modal.open('.hof-reserve-wrapper', {\r\n onOpen: ::this.getWishlistItem\r\n });\r\n\r\n if (!window.hof) {\r\n window.hof = {};\r\n }\r\n window.hof.closeReserveModal = ::this.close;\r\n }\r\n\r\n close() {\r\n this.config.modal.close();\r\n\r\n if (!window.hof) {\r\n window.hof = {};\r\n }\r\n window.hof.closeReserveModal = null;\r\n }\r\n\r\n getWishlistItem() {\r\n const { endpoints } = this.config;\r\n const url = `${endpoints.getItem}?orderLineId=${this.data.orderLineId}`;\r\n this.productReserve.showLoader();\r\n return getJSON(url)\r\n .then(::this.updateReserve);\r\n }\r\n\r\n updateReserve(data) {\r\n const details = {\r\n name: this.data.productName,\r\n price: this.data.price,\r\n type: this.data.type\r\n };\r\n const settings = data.options.reduce((acc, option) => {\r\n acc[option.id] = option.value\r\n return acc;\r\n }, {});\r\n const displays = data.options\r\n .reduce((acc, option) => {\r\n if (option.value) {\r\n if (option.type === 'multilevel') {\r\n acc[option.id] = option.value;\r\n } else {\r\n const selectedValues = option.values.filter(value => value.value === option.value);\r\n if (selectedValues.length) {\r\n acc[option.id] = selectedValues[0].label;\r\n }\r\n }\r\n }\r\n return acc;\r\n }, {\r\n chatMessageLabel: data.chatMessageLabel,\r\n productInfoLabel: data.productInfoLabel,\r\n priceLabel: data.priceLabel\r\n });\r\n const image = this.data.image;\r\n this.productReserve.update({ details, settings, displays, image });\r\n this.productReserve.hideLoader();\r\n }\r\n\r\n}\r\n\r\nexport default ReserveItemModal;","import CartItemModal from './CartItemModal';\r\nimport { getJSON } from '../../../common/utils/getjson';\r\nimport ReserveItemModal from './ReserveItemModal';\r\n\r\nclass CartItem {\r\n\r\n constructor(element, data, config) {\r\n this.$element = element;\r\n this.data = data;\r\n this.config = config;\r\n\r\n element.insertAdjacentHTML('beforeend', config.loader);\r\n\r\n this.bindElements();\r\n this.bindEvents();\r\n\r\n if (this.config.editable) {\r\n this.modal = new CartItemModal(element, data, config);\r\n }\r\n this.reserveModal = new ReserveItemModal(element, data, config);\r\n }\r\n\r\n bindElements() {\r\n this.dom = {\r\n $edit: this.$element.querySelector('.hof-cart-item__edit'),\r\n $move: this.$element.querySelector('.hof-cart-item__move'),\r\n $reserve: this.$element.querySelector('.hof-cart-item__reserve'),\r\n $remove: this.$element.querySelector('.hof-cart-item__remove'),\r\n $engravable: this.$element.querySelector('.hof-engravable'),\r\n $loading: this.$element.querySelector('.hof-loading')\r\n };\r\n\r\n if (this.dom.$engravable) {\r\n this.dom.$typefaces = this.dom.$engravable.querySelectorAll('[name=typeface]');\r\n }\r\n }\r\n\r\n bindEvents() {\r\n if (this.dom.$move) {\r\n this.dom.$move.addEventListener('click', ::this.handleMove);\r\n }\r\n\r\n if (this.dom.$reserve) {\r\n this.dom.$reserve.addEventListener('click', ::this.handleReserve);\r\n }\r\n \r\n if (this.config.editable) {\r\n this.dom.$edit.addEventListener('click', ::this.handleEdit);\r\n this.dom.$remove.addEventListener('click', ::this.handleRemove);\r\n }\r\n\r\n if (this.dom.$typefaces) {\r\n [].forEach.call(this.dom.$typefaces, $typeface => {\r\n $typeface.addEventListener('change', ::this.setTypeface);\r\n });\r\n }\r\n }\r\n\r\n handleEdit(e) {\r\n e.preventDefault();\r\n this.modal.open();\r\n }\r\n\r\n handleMove(e) {\r\n e.preventDefault();\r\n this.moveItem();\r\n }\r\n\r\n handleReserve(e) {\r\n e.preventDefault();\r\n this.reserveModal.open();\r\n }\r\n\r\n handleRemove(e) {\r\n e.preventDefault();\r\n this.removeItem();\r\n }\r\n\r\n moveItem() {\r\n const url = `${this.config.endpoints.moveItem}?orderLineId=${this.data.orderLineId}`;\r\n this.showLoader();\r\n getJSON(url).then(:: this.handleMoveSuccess);\r\n }\r\n\r\n removeItem() {\r\n const url = `${this.config.endpoints.removeItem}?orderLineId=${this.data.orderLineId}`;\r\n this.showLoader();\r\n getJSON(url).then(:: this.handleRemoveSuccess);\r\n }\r\n\r\n setTypeface(e) {\r\n var value = e.currentTarget.value;\r\n this.dom.$engravable.classList.remove('script');\r\n this.dom.$engravable.classList.remove('block');\r\n this.dom.$engravable.classList.add(value);\r\n }\r\n\r\n handleMoveSuccess(response) {\r\n if (response.success && this.config.onMoved) {\r\n this.config.onMoved(response);\r\n } else {\r\n this.hideLoader();\r\n }\r\n }\r\n\r\n handleRemoveSuccess(response) {\r\n if (response.success && this.config.onRemoved) {\r\n this.config.onRemoved(response);\r\n } else {\r\n this.hideLoader();\r\n }\r\n }\r\n\r\n showLoader() {\r\n this.dom.$loading.classList.add('visible');\r\n }\r\n\r\n hideLoader() {\r\n this.dom.$loading.classList.remove('visible');\r\n }\r\n}\r\n\r\nexport default CartItem;","import VanillaModal from 'vanilla-modal';\r\nimport Revealer from '../../atoms/Revealer';\r\nimport Forms from '../../atoms/Forms';\r\nimport cartItemsTemplate from '../../../templates/partials/cart/items.hbs';\r\nimport cartTotalsTemplate from '../../../templates/partials/cart/totals.hbs';\r\nimport wishlistTemplate from '../../../templates/partials/wishlist/items.hbs';\r\nimport CartItem from './CartItem';\r\nimport ProductReserve from '../ProductReserve';\r\nimport { getJSON } from '../../../common/utils/getjson';\r\nimport { serializeform } from '../../../common/utils/serializeform';\r\n\r\nvar ShoppingCart = {\r\n\r\n // Initialize the module\r\n init(element) {\r\n\r\n const hof = window.hof;\r\n if (!hof || !hof.cartSettings) {\r\n throw Error('hof.cartSettings must not be undefined');\r\n }\r\n\r\n /**\r\n * DOM node that is passed into the module\r\n *\r\n * @property {Object} element DOM node that is passed into the module\r\n */\r\n this.$element = element;\r\n this.cartData = null;\r\n\r\n // there is one vanilla-modal object\r\n this.modal = new VanillaModal({\r\n modal : \".hof-modal\",\r\n modalInner : \".hof-modal-inner\",\r\n modalContent : \".hof-modal-content\",\r\n onOpen: ::this.handleModalOpen,\r\n onClose: ::this.handleModalClose\r\n });\r\n\r\n this.productReserve = new ProductReserve(\r\n document.querySelector('.hof-reserve-wrapper'), \r\n {\r\n onSuccess: ::this.handleReserveSuccess\r\n }\r\n );\r\n \r\n this.endpoints = hof.cartSettings.endpoints;\r\n this.labels = hof.cartSettings.labels;\r\n this.initialZip = hof.cartSettings.initialZip;\r\n this.registerHelpers();\r\n this.bindElements();\r\n\r\n this.showCartLoader();\r\n this.getCart().then(::this.hideCartLoader).then(::this.addEventListeners);\r\n\r\n\r\n\r\n this.showWishlistLoader();\r\n this.getWishlist().then(::this.hideWishlistLoader);\r\n },\r\n\r\n registerHelpers() {\r\n const hb = require('handlebars/runtime');\r\n\r\n hb.registerHelper({\r\n equal : function(lvalue, rvalue, options) {\r\n if( lvalue != rvalue ) {\r\n return options.inverse(this);\r\n } else {\r\n return options.fn(this);\r\n }\r\n },\r\n replace: function(string,replaced,replacement) {\r\n return(string || '').replace(replaced,replacement);\r\n }\r\n });\r\n },\r\n\r\n bindElements() {\r\n this.dom = {\r\n $miniCart: document.querySelector('.hof-mini-cart span'),\r\n $cart: this.$element.querySelector('.hof-cart'),\r\n $wishlist: this.$element.querySelector('.hof-wishlist'),\r\n $modalContent: null,\r\n $totalsZip: this.$element.querySelector('.hof-totals-zip'),\r\n $totalsInput: this.$element.querySelector('.hof-totals-zip-input'),\r\n $totalsZipLabel: this.$element.querySelector('.hof-totals-zip-value')\r\n };\r\n this.dom.$cartLoader = this.dom.$cart.querySelector('.hof-loading');\r\n this.dom.$cartListing = this.dom.$cart.querySelector('.hof-cart-copy:not(.hof-cart-copy-empty)');\r\n this.dom.$cartItems = this.dom.$cartListing.querySelector('.hof-cart-items');\r\n this.dom.$cartTotals = this.dom.$cartListing.querySelector('.hof-totals');\r\n this.dom.$cartTotalsItems = this.dom.$cartListing.querySelector('.hof-totals-items');\r\n this.dom.$emptyCart = this.dom.$cart.querySelector('.hof-cart-empty');\r\n this.dom.$wishlistLoader = this.dom.$wishlist.querySelector('.hof-loading');\r\n this.dom.$wishlistItems = this.dom.$wishlist.querySelector('.hof-cart-items');\r\n this.dom.$emptyWishlist = this.dom.$wishlist.querySelector('.hof-cart-empty');\r\n this.dom.$shareWishlist = this.dom.$wishlist.querySelector('.hof-share-wishlist');\r\n },\r\n\r\n getCart(newZip) {\r\n let url = this.endpoints.getCart;\r\n let zip = newZip ? newZip : this.getCurrentZip();\r\n\r\n if (!zip) {\r\n zip = this.initialZip;\r\n }\r\n if (zip) {\r\n url = `${this.endpoints.getCart}?zip=${zip}`;\r\n }\r\n\r\n return getJSON(url)\r\n .then(::this.setCartData)\r\n .then(::this.updateCart)\r\n .then(::this.checkCart)\r\n .then(::this.updateMiniCart);\r\n },\r\n\r\n getCurrentZip() {\r\n if (!this.dom.$totalsZip) {\r\n return null;\r\n }\r\n return this.dom.$totalsZip.dataset.zip;\r\n },\r\n\r\n getWishlist() {\r\n return getJSON(this.endpoints.getWishlist)\r\n .then(::this.setWishlistData)\r\n .then(::this.updateWishlist)\r\n .then(::this.checkWishlist);\r\n },\r\n\r\n updateCart(response) {\r\n const data = {\r\n labels: this.labels,\r\n data: response\r\n };\r\n const cartItems = cartItemsTemplate(data);\r\n const cartTotals = cartTotalsTemplate(data);\r\n this.dom.$cartItems.innerHTML = cartItems;\r\n this.dom.$cartTotalsItems.innerHTML = cartTotals;\r\n\r\n return response;\r\n },\r\n\r\n updateWishlist(response) {\r\n const data = {\r\n labels: this.labels,\r\n data: response,\r\n editable: !!this.endpoints.updateWishlistItem && !!this.endpoints.removeWishlistItem\r\n };\r\n const wishlist = wishlistTemplate(data);\r\n this.dom.$wishlistItems.innerHTML = wishlist;\r\n\r\n return response;\r\n },\r\n\r\n updateMiniCart() {\r\n if (this.dom.$miniCart) {\r\n this.dom.$miniCart.innerText = this.cartData.items.length;\r\n }\r\n },\r\n\r\n setCartData(response) {\r\n this.cartData = response;\r\n return response;\r\n },\r\n\r\n setWishlistData(response) {\r\n this.wishlistData = response;\r\n return response;\r\n },\r\n\r\n checkCart(response) {\r\n if (response.items.length) {\r\n this.dom.$cartListing.classList.add('visible');\r\n this.dom.$emptyCart.classList.remove('visible');\r\n this.initCart();\r\n this.initTotals();\r\n } else {\r\n this.dom.$cartListing.classList.remove('visible');\r\n this.dom.$emptyCart.classList.add('visible');\r\n }\r\n return response;\r\n },\r\n\r\n checkWishlist(response) {\r\n if (response.items.length) {\r\n this.dom.$wishlistItems.classList.add('visible');\r\n this.dom.$emptyWishlist.classList.remove('visible');\r\n if (this.dom.$shareWishlist) {\r\n this.dom.$shareWishlist.classList.add('visible');\r\n }\r\n this.initWishlist();\r\n } else {\r\n this.dom.$wishlistItems.classList.remove('visible');\r\n this.dom.$emptyWishlist.classList.add('visible');\r\n if (this.dom.$shareWishlist) {\r\n this.dom.$shareWishlist.classList.remove('visible');\r\n }\r\n }\r\n return response;\r\n },\r\n\r\n initCart() {\r\n Revealer.init(this.dom.$cartListing);\r\n Forms.init(this.dom.$cartItems);\r\n\r\n const $items = this.dom.$cartItems.querySelectorAll('.hof-cart-item');\r\n const config = {\r\n wishlistItem: false,\r\n editable: !!this.endpoints.updateCartItem && !!this.endpoints.removeCartItem,\r\n endpoints: {\r\n getItem: this.endpoints.getCartItem,\r\n getProduct: this.endpoints.getProductInfo,\r\n updateItem: this.endpoints.updateCartItem,\r\n moveItem: this.endpoints.moveCartItem,\r\n removeItem: this.endpoints.removeCartItem\r\n },\r\n labels: this.labels,\r\n modal: this.modal,\r\n onUpdated: ::this.handleCartItemUpdated,\r\n onMoved: ::this.handleCartItemMoved,\r\n onRemoved: ::this.handleCartItemRemoved,\r\n loader: `
    ${this.dom.$cartLoader.innerHTML}
    `\r\n };\r\n\r\n [].forEach.call($items, ($item, index) => {\r\n const data = this.cartData.items[index];\r\n new CartItem($item, data, config);\r\n });\r\n },\r\n\r\n\r\n\r\n initTotals() {\r\n const $zipForm = this.dom.$cartTotalsItems.querySelector('#hof-zip-form');\r\n const $cartForm = this.dom.$cart.querySelector('.hof-cart-form');\r\n $zipForm.addEventListener('submit', ::this.handleZipSubmit);\r\n $cartForm.addEventListener('submit', ::this.handleCartSubmit);\r\n \r\n },\r\n\r\n addEventListeners(){\r\n const $promoCodeToggle = this.dom.$cart.querySelector('.hof-add-promo-code-form-toggle');\r\n const $promoCodeButton = this.dom.$cart.querySelector('.hof-add-promo-code-button');\r\n const $removePromoCodeButton = this.dom.$cart.querySelector('.hof-remove-promo-code-button');\r\n $promoCodeToggle.addEventListener('click', ::this.handleTogglePromoCode);\r\n $promoCodeButton.addEventListener('click', ::this.handleAddPromoCode);\r\n $removePromoCodeButton.addEventListener('click', ::this.handleRemovePromoCode);\r\n },\r\n\r\n initWishlist() {\r\n const $items = this.dom.$wishlistItems.querySelectorAll('.hof-cart-item');\r\n const config = {\r\n wishlistItem: true,\r\n editable: this.endpoints.updateWishlistItem && this.endpoints.removeWishlistItem,\r\n endpoints: {\r\n getItem: this.endpoints.getWishlistItem,\r\n getProduct: this.endpoints.getProductInfo,\r\n updateItem: this.endpoints.updateWishlistItem,\r\n moveItem: this.endpoints.moveWishlistItem,\r\n removeItem: this.endpoints.removeWishlistItem\r\n },\r\n labels: this.labels,\r\n modal: this.modal,\r\n productReserve: this.productReserve,\r\n onUpdated: ::this.handleWishlistItemUpdated,\r\n onMoved: ::this.handleWishlistItemMoved,\r\n onRemoved: ::this.handleWishlistItemRemoved,\r\n loader: `
    ${this.dom.$wishlistLoader.innerHTML}
    `\r\n };\r\n\r\n [].forEach.call($items, ($item, index) => {\r\n const data = this.wishlistData.items[index];\r\n new CartItem($item, data, config);\r\n });\r\n },\r\n\r\n handleCartSubmit(e) {\r\n e.preventDefault();\r\n const $engravable = this.dom.$cartItems.querySelectorAll('.hof-engravable');\r\n const data = [];\r\n let $item;\r\n let $check;\r\n let $input;\r\n let $radio;\r\n let orderLineId;\r\n let engravingText;\r\n let engravingStyle;\r\n for (let i = 0; i < $engravable.length; i++) {\r\n $item = $engravable[i];\r\n $check = $item.querySelector('input[type=\"checkbox\"]');\r\n $input = $item.querySelector('input[type=\"text\"]');\r\n $radio = $item.querySelector('input[type=\"radio\"]:checked');\r\n orderLineId = $input.id.replace('hof-engraving-text-', '');\r\n engravingStyle = $radio.value;\r\n\r\n if ($check.checked) {\r\n engravingText = $input.value;\r\n } else {\r\n engravingText = '';\r\n }\r\n\r\n data.push({\r\n orderLineId,\r\n engravingText,\r\n engravingStyle\r\n });\r\n }\r\n \r\n if (data.length) {\r\n this.showTotalsLoader();\r\n getJSON(this.endpoints.submitCart, JSON.stringify(data))\r\n .then(::this.redirectToCheckout);\r\n } else {\r\n this.redirectToCheckout({ success: true });\r\n }\r\n },\r\n\r\n redirectToCheckout(response) {\r\n this.hideTotalsLoader();\r\n if (response.success) {\r\n const $cartForm = this.dom.$cart.querySelector('.hof-cart-form');\r\n const url = $cartForm.getAttribute('action');\r\n window.location.href = url;\r\n } else if (response.error) {\r\n const $cartForm = this.dom.$cart.querySelector('.hof-cart-form');\r\n const $error = $cartForm.querySelector('.hof-error');\r\n if ($error) {\r\n $error.remove();\r\n }\r\n $cartForm.insertAdjacentHTML('afterbegin', `\r\n

    ${response.error}

    \r\n `);\r\n }\r\n },\r\n\r\n handleZipSubmit(e) {\r\n e.preventDefault();\r\n const data = serializeform(e.currentTarget);\r\n this.showTotalsLoader();\r\n\r\n getJSON(this.endpoints.updateZip, data)\r\n .then(::this.handleZipSuccess);\r\n },\r\n\r\n handleZipSuccess(response) {\r\n if (response.success) {\r\n this.getCart(response.zip);\r\n this.hideTotalsLoader();\r\n } else {\r\n const $field = this.dom.$cartTotalsItems.querySelector('#hof-zip-changer');\r\n const $error = $field.querySelector('.hof-form-error');\r\n const $input = $field.querySelector('input[type=\"text\"]');\r\n $field.classList.add('hof-error');\r\n $error.innerText = response.error;\r\n this.hideTotalsLoader();\r\n $input.focus();\r\n }\r\n },\r\n \r\n handleModalOpen(config) {\r\n config.onOpen();\r\n },\r\n\r\n handleModalClose() {\r\n this.productReserve.resetForm();\r\n },\r\n\r\n handleCartItemUpdated() {\r\n return this.getCart();\r\n },\r\n\r\n handleCartItemMoved() {\r\n this.getCart();\r\n this.getWishlist();\r\n },\r\n\r\n handleCartItemRemoved() {\r\n this.getCart();\r\n },\r\n\r\n handleWishlistItemUpdated() {\r\n return this.getWishlist();\r\n },\r\n\r\n handleWishlistItemMoved() {\r\n this.getCart();\r\n this.getWishlist();\r\n },\r\n\r\n handleWishlistItemRemoved() {\r\n this.getWishlist();\r\n },\r\n\r\n handleReserveSuccess() {\r\n this.modal.close();\r\n this.getWishlist();\r\n },\r\n\r\n showCartLoader() {\r\n this.dom.$cartLoader.classList.add('visible');\r\n },\r\n\r\n hideCartLoader() {\r\n this.dom.$cartLoader.classList.remove('visible');\r\n return null;\r\n },\r\n\r\n showWishlistLoader() {\r\n this.dom.$wishlistLoader.classList.add('visible');\r\n },\r\n\r\n hideWishlistLoader() {\r\n this.dom.$wishlistLoader.classList.remove('visible');\r\n },\r\n\r\n showTotalsLoader() {\r\n const $loader = this.dom.$cartTotals.querySelector('.hof-loading');\r\n $loader.classList.add('visible');\r\n },\r\n\r\n hideTotalsLoader() {\r\n const $loader = this.dom.$cartTotals.querySelector('.hof-loading');\r\n $loader.classList.remove('visible');\r\n },\r\n\r\n handleTogglePromoCode() {\r\n const $promoCodeContainer = this.dom.$cart.querySelector('.hof-add-promo-code');\r\n $promoCodeContainer.classList.toggle('active');\r\n },\r\n\r\n handleAddPromoCode(e) {\r\n e.preventDefault();\r\n const promotionCode = this.dom.$cart.querySelector('.hof-add-promo-code-input').value;\r\n const url = `${this.endpoints.addPromoCode}?promotionCode=${promotionCode}`;\r\n this.showTotalsLoader();\r\n return getJSON(url)\r\n .then(::this.handleAddPromoCodeSuccess);\r\n },\r\n\r\n handleAddPromoCodeSuccess(response) {\r\n if (response.success) {\r\n this.getCart(response.data.zip);\r\n this.dom.$cart.querySelector('.hof-totals-items').classList.add('showDiscount');\r\n this.hideTotalsLoader();\r\n this.dom.$cart.querySelector('.hof-promo-code-title').innerHTML = response.data.discounts.PromotionCode;\r\n this.dom.$cart.querySelector('.hof-promo-code-description').innerHTML = response.data.discounts.PromotionCodeDescription;\r\n this.dom.$cart.querySelector('.hof-promo-code-error').innerHTML = '';\r\n this.dom.$cart.querySelector('.hof-add-promo-code').classList.remove('active');\r\n this.dom.$cart.querySelector('.hof-add-promo-code').classList.add('hidden');\r\n this.dom.$cart.querySelector('.hof-remove-promo-code-form').classList.remove('hidden');\r\n this.dom.$cart.querySelector('.hof-add-promo-code-input').value = '';\r\n } else {\r\n this.hideTotalsLoader();\r\n this.dom.$cart.querySelector('.hof-promo-code-error').innerHTML = response.errors;\r\n }\r\n },\r\n\r\n handleRemovePromoCode(e) {\r\n e.preventDefault();\r\n this.showTotalsLoader();\r\n return getJSON(this.endpoints.removePromoCode)\r\n .then(::this.handleRemovePromoCodeSuccess);\r\n },\r\n\r\n handleRemovePromoCodeSuccess(response) {\r\n if (response.success) {\r\n this.getCart(response.data.zip);\r\n this.dom.$cart.querySelector('.hof-totals-items').classList.remove('showDiscount');\r\n this.hideTotalsLoader();\r\n this.dom.$cart.querySelector('.hof-promo-code-error').innerHTML = '';\r\n this.dom.$cart.querySelector('.hof-add-promo-code').classList.remove('active');\r\n this.dom.$cart.querySelector('.hof-add-promo-code').classList.remove('hidden');\r\n this.dom.$cart.querySelector('.hof-remove-promo-code-form').classList.add('hidden');\r\n } else {\r\n this.hideTotalsLoader();\r\n this.dom.$cart.querySelector('.hof-promo-code-error').innerHTML = response.errors;\r\n }\r\n },\r\n};\r\n\r\nexport default ShoppingCart;","import { EVENTS, MISC, SELECTORS, CLASS_NAMES } from '../../common/constants';\r\nimport { tabs } from '../../common/utils/tabs';\r\n\r\nvar Signin = {\r\n // Initialize the module\r\n init : function(element) {\r\n\r\n var _self = this;\r\n\r\n this.element = element;\r\n this.swap = this.element.querySelectorAll('.hof-sign-swap')\r\n this.newCust = this.element.querySelectorAll('.hof-new-customer .hof-checkout-halfpanel')\r\n this.reset = this.element.querySelectorAll('.hof-reset-form-email')\r\n\r\n this.tab = tabs(this.element);\r\n\r\n this.signUpButtons = this.element.querySelectorAll('#hof-email-free-buttons');\r\n this.inUseButtons = this.element.querySelectorAll('#hof-email-inuse-buttons')\r\n if( this.swap.length ) this.swap[0].addEventListener(EVENTS.CLICK, this.tab.tabTriggerHandler(this.swap[0]));\r\n if (this.reset.length) this.reset[0].addEventListener(EVENTS.CLICK, e => this.setDifferentEmail(e))\r\n },\r\n\r\n setDifferentEmail: function(e) {\r\n e.preventDefault();\r\n this.newCust[0].reset();\r\n this.newCust[0].focus();\r\n this.signUpButtons[0].setAttribute('aria-hidden', false)\r\n this.inUseButtons[0].setAttribute('aria-hidden', true)\r\n return this;\r\n }\r\n};\r\n\r\nexport default Signin;","var SitecoreForm = {\r\n // Initialize the module\r\n init : function(elements) {\r\n var _self = this;\r\n elements.forEach(function(form) {\r\n _wrapInputs(form)\r\n });\r\n\r\n function _wrapInputs(form) {\r\n const inputs = form.querySelectorAll('input[type=text], input[type=email], input[type=password], input[type=tel]');\r\n inputs.forEach(function(input) {\r\n _wrapInput(input, 'hof-input');\r\n });\r\n\r\n const textarea = form.querySelectorAll('textarea');\r\n textarea.forEach(function(input) {\r\n _wrapInput(input, 'hof-textarea');\r\n });\r\n\r\n const select = form.querySelectorAll('select');\r\n select.forEach(function(input) {\r\n _wrapInput(input, 'hof-select');\r\n });\r\n\r\n const radio = form.querySelectorAll('input[type=radio]');\r\n radio.forEach(function(input) {\r\n _addCheckMark(input, 'hof-form-sitecore__radio');\r\n });\r\n\r\n const checkbox = form.querySelectorAll('input[type=checkbox]');\r\n checkbox.forEach(function(input) {\r\n _addCheckMark(input, 'hof-form-sitecore__checkbox');\r\n });\r\n\r\n const submitButton = form.querySelectorAll('input[type=submit]');\r\n submitButton.forEach(function(input) {\r\n _wrapButton(input, 'hof-form-button-wrapper');\r\n });\r\n }\r\n\r\n function _wrapInput(input, wrapperClass) {\r\n const wrapper = document.createElement('div');\r\n wrapper.classList.add(wrapperClass);\r\n const label = input.previousElementSibling;\r\n label.parentNode.insertBefore(wrapper, label);\r\n const errorSpan = input.nextElementSibling;\r\n \r\n if(input.nodeName !== 'TEXTAREA') {\r\n wrapper.appendChild(errorSpan);\r\n }\r\n \r\n wrapper.appendChild(input);\r\n \r\n if(label.nodeName === 'LABEL') {\r\n wrapper.appendChild(label);\r\n } else {\r\n wrapper.classList.add('hof-input--no-label');\r\n }\r\n\r\n if(input.value) {\r\n input.classList.add('not-empty');\r\n }\r\n\r\n if(input.nodeName === 'TEXTAREA') {\r\n wrapper.appendChild(errorSpan);\r\n }\r\n }\r\n\r\n function _addCheckMark(input, wrapperClass) {\r\n const span = document.createElement('span');\r\n span.classList.add('checkmark');\r\n input.parentNode.insertBefore(span, input.nextSibling);\r\n input.parentNode.classList.add(wrapperClass);\r\n }\r\n\r\n function _wrapButton(input, wrapperClass) {\r\n const wrapper = document.createElement('div');\r\n wrapper.classList.add(wrapperClass);\r\n input.parentNode.insertBefore(wrapper, input);\r\n wrapper.appendChild(input);\r\n }\r\n }\r\n};\r\n\r\nexport default SitecoreForm;","import { CLASS_NAMES, EVENTS, SELECTORS } from '../../common/constants';\r\n\r\nvar StaticContent = {\r\n\r\n productCtaSelector : SELECTORS.STATIC_PRODUCT_CTA,\r\n\r\n open : CLASS_NAMES.OPEN,\r\n\r\n click : EVENTS.CLICK,\r\n\r\n init: function(element) {\r\n this.element = element;\r\n\r\n var that = this;\r\n\r\n var productCtaLink = element.querySelector(this.productCtaSelector);\r\n\r\n if(productCtaLink) {\r\n productCtaLink.addEventListener(this.click, _flipToProducts);\r\n }\r\n\r\n function _flipToProducts() {\r\n event.preventDefault();\r\n that.element.classList.add(that.open);\r\n }\r\n }\r\n};\r\n\r\nexport default StaticContent;","import { EVENTS } from '../../common/constants';\r\nimport { tooltips } from '../../common/utils/tooltips';\r\n\r\nvar ThankYou = {\r\n\r\n init : function(element) {\r\n\r\n /**\r\n * DOM node that is passed into the module\r\n *\r\n * @property {Object} element DOM node that is passed into the module\r\n */\r\n this.element = element;\r\n\r\n tooltips(this.element);\r\n\r\n this.printLink = element.querySelector('.hof-checkout-thankyou-print a');\r\n\r\n this.printLink.addEventListener(EVENTS.CLICK, function(event) {\r\n event.preventDefault();\r\n window.print();\r\n });\r\n\r\n }\r\n};\r\n\r\nexport default ThankYou;","import VanillaModal from 'vanilla-modal';\r\nimport wishlistTemplate from '../../../templates/partials/wishlist/items.hbs';\r\nimport CartItem from './CartItem';\r\nimport ProductReserve from '../ProductReserve';\r\nimport { getJSON } from '../../../common/utils/getjson';\r\n\r\nvar Wishlist = {\r\n\r\n // Initialize the module\r\n init(element) {\r\n\r\n const hof = window.hof;\r\n if (!hof || !hof.wishlistSettings) {\r\n throw Error('hof.wishlistSettings must not be undefined');\r\n }\r\n\r\n /**\r\n * DOM node that is passed into the module\r\n *\r\n * @property {Object} element DOM node that is passed into the module\r\n */\r\n this.$element = element;\r\n this.wishlistData = null;\r\n\r\n // there is one vanilla-modal object\r\n this.modal = new VanillaModal({\r\n modal : \".hof-modal\",\r\n modalInner : \".hof-modal-inner\",\r\n modalContent : \".hof-modal-content\",\r\n onOpen: ::this.handleModalOpen,\r\n onClose: ::this.handleModalClose\r\n });\r\n\r\n this.productReserve = new ProductReserve(\r\n document.querySelector('.hof-reserve-wrapper'), \r\n {\r\n onSuccess: ::this.handleReserveSuccess\r\n }\r\n );\r\n \r\n this.endpoints = hof.wishlistSettings.endpoints;\r\n this.labels = hof.wishlistSettings.labels;\r\n this.registerHelpers();\r\n this.bindElements();\r\n\r\n this.showWishlistLoader();\r\n this.getWishlist().then(::this.hideWishlistLoader);\r\n },\r\n\r\n registerHelpers() {\r\n const hb = require('handlebars/runtime');\r\n\r\n hb.registerHelper({\r\n equal : function(lvalue, rvalue, options) {\r\n if( lvalue != rvalue ) {\r\n return options.inverse(this);\r\n } else {\r\n return options.fn(this);\r\n }\r\n },\r\n replace: function(string,replaced,replacement) {\r\n return(string || '').replace(replaced,replacement);\r\n }\r\n });\r\n },\r\n\r\n bindElements() {\r\n this.dom = {\r\n $miniCart: document.querySelector('.hof-mini-cart span'),\r\n $wishlist: this.$element.querySelector('.hof-wishlist')\r\n };\r\n this.dom.$wishlistLoader = this.dom.$wishlist.querySelector('.hof-loading');\r\n this.dom.$wishlistItems = this.dom.$wishlist.querySelector('.hof-cart-items');\r\n this.dom.$emptyWishlist = this.dom.$wishlist.querySelector('.hof-cart-empty');\r\n this.dom.$shareWishlist = this.dom.$wishlist.querySelector('.hof-share-wishlist');\r\n },\r\n\r\n getCart() {\r\n return getJSON(this.endpoints.getCart)\r\n .then(::this.updateMiniCart);\r\n },\r\n\r\n getWishlist() {\r\n return getJSON(this.endpoints.getWishlist)\r\n .then(::this.setWishlistData)\r\n .then(::this.updateWishlist)\r\n .then(::this.checkWishlist);\r\n },\r\n\r\n updateWishlist(response) {\r\n const data = {\r\n labels: this.labels,\r\n data: response,\r\n editable: !!this.endpoints.updateWishlistItem && !!this.endpoints.removeWishlistItem\r\n };\r\n const wishlist = wishlistTemplate(data);\r\n this.dom.$wishlistItems.innerHTML = wishlist;\r\n\r\n return response;\r\n },\r\n\r\n setWishlistData(response) {\r\n this.wishlistData = response;\r\n return response;\r\n },\r\n\r\n checkWishlist(response) {\r\n if (response.items.length) {\r\n this.dom.$wishlistItems.classList.add('visible');\r\n this.dom.$emptyWishlist.classList.remove('visible');\r\n if (this.dom.$shareWishlist) {\r\n this.dom.$shareWishlist.classList.add('visible');\r\n }\r\n this.initWishlist();\r\n } else {\r\n this.dom.$wishlistItems.classList.remove('visible');\r\n this.dom.$emptyWishlist.classList.add('visible');\r\n if (this.dom.$shareWishlist) {\r\n this.dom.$shareWishlist.classList.remove('visible');\r\n }\r\n }\r\n return response;\r\n },\r\n\r\n updateMiniCart(response) {\r\n if (this.dom.$miniCart) {\r\n this.dom.$miniCart.innerText = response.items.length;\r\n }\r\n return response;\r\n },\r\n\r\n initWishlist() {\r\n const $items = this.dom.$wishlistItems.querySelectorAll('.hof-cart-item');\r\n const config = {\r\n wishlistItem: true,\r\n editable: !!this.endpoints.updateWishlistItem && !!this.endpoints.removeWishlistItem,\r\n endpoints: {\r\n getItem: this.endpoints.getWishlistItem,\r\n getProduct: this.endpoints.getProductInfo,\r\n updateItem: this.endpoints.updateWishlistItem,\r\n moveItem: this.endpoints.moveWishlistItem,\r\n removeItem: this.endpoints.removeWishlistItem\r\n },\r\n labels: this.labels,\r\n modal: this.modal,\r\n productReserve: this.productReserve,\r\n onUpdated: ::this.handleWishlistItemUpdated,\r\n onMoved: ::this.handleWishlistItemMoved,\r\n onRemoved: ::this.handleWishlistItemRemoved,\r\n loader: `
    ${this.dom.$wishlistLoader.innerHTML}
    `\r\n };\r\n\r\n [].forEach.call($items, ($item, index) => {\r\n const data = this.wishlistData.items[index];\r\n new CartItem($item, data, config);\r\n });\r\n },\r\n\r\n handleModalOpen(config) {\r\n config.onOpen();\r\n },\r\n\r\n handleModalClose() {\r\n this.productReserve.resetForm();\r\n },\r\n\r\n handleReserveSuccess() {\r\n this.modal.close();\r\n this.getWishlist();\r\n },\r\n\r\n handleWishlistItemUpdated() {\r\n return this.getWishlist();\r\n },\r\n\r\n handleWishlistItemMoved() {\r\n this.getCart();\r\n this.getWishlist();\r\n },\r\n\r\n handleWishlistItemRemoved() {\r\n this.getWishlist();\r\n },\r\n\r\n showWishlistLoader() {\r\n this.dom.$wishlistLoader.classList.add('visible');\r\n },\r\n\r\n hideWishlistLoader() {\r\n this.dom.$wishlistLoader.classList.remove('visible');\r\n }\r\n};\r\n\r\nexport default Wishlist;","// Import all required modules\r\nimport Accordion from './modules/Accordion';\r\nimport ArticleTiles from './modules/ArticleTiles';\r\nimport BackgroundVideo from './modules/BackgroundVideo';\r\nimport Checkout from './modules/Checkout';\r\nimport ContentPromo from './modules/ContentPromo';\r\nimport CoveoSearch from './modules/CoveoSearch';\r\nimport CreateAccount from './modules/CreateAccount';\r\nimport Difference from './modules/Difference';\r\nimport EmailSignup from './modules/EmailSignup';\r\nimport FeaturedImages from './modules/FeaturedImages';\r\nimport FeaturedProducts from './modules/FeaturedProducts';\r\nimport Flipper from './atoms/Flipper';\r\nimport Footer from './modules/Footer';\r\nimport Forms from './atoms/Forms';\r\nimport GlobalNavigation from './modules/GlobalNavigation';\r\nimport InlineVideo from './modules/InlineVideo';\r\nimport ModalVideo from './modules/ModalVideo';\r\nimport ModuleExample from './modules/ModuleExample';\r\nimport ProductBasics from './modules/ProductBasics';\r\nimport ProductFilters from './modules/ProductFilters';\r\nimport Profile from './modules/Profile';\r\nimport RetailList from './modules/RetailList';\r\nimport RetailLocation from './modules/RetailLocation';\r\nimport RetailLocator from './modules/RetailLocator';\r\nimport Revealer from './atoms/Revealer';\r\nimport Search from './modules/Search';\r\nimport Share from './modules/Share';\r\nimport ShoppingCart from './modules/cart/ShoppingCart';\r\nimport Signin from './modules/Signin';\r\nimport SitecoreForm from './modules/SitecoreForm';\r\nimport StaticContent from './modules/StaticContent';\r\nimport ThankYou from './modules/ThankYou';\r\nimport Wishlist from './modules/cart/Wishlist';\r\n\r\n/*\r\n\r\nImporting modules from the _shared folder:\r\n\r\nYou'll need to prefix the path with: ../../../../\r\nthen include the _shared path\r\n\r\nFor exmaple to include the Test module:\r\nimport Test from '../../../../_shared/js/Test';\r\n\r\nMake sure to add the corresponding module to the ModuleMap object below.\r\n\r\n*/\r\nimport HeroBanner from '../../../../_shared/src/js/app/modules/HeroBanner';\r\nimport Slider from '../../../../_shared/src/js/app/modules/Slider';\r\n\r\nconst ModuleMap = {\r\n Accordion,\r\n ArticleTiles,\r\n BackgroundVideo,\r\n Checkout,\r\n ContentPromo,\r\n CoveoSearch,\r\n CreateAccount,\r\n Difference,\r\n EmailSignup,\r\n FeaturedImages,\r\n FeaturedProducts,\r\n Flipper,\r\n Footer,\r\n Forms,\r\n GlobalNavigation,\r\n HeroBanner,\r\n InlineVideo,\r\n ModalVideo,\r\n ProductBasics,\r\n ProductFilters,\r\n Profile,\r\n RetailList,\r\n RetailLocation,\r\n RetailLocator,\r\n Revealer,\r\n Search,\r\n Share,\r\n ShoppingCart,\r\n Signin,\r\n SitecoreForm,\r\n Slider,\r\n StaticContent,\r\n ThankYou,\r\n Wishlist\r\n};\r\n\r\nexport { ModuleMap };\r\n","import LazyLoad from 'vanilla-lazyload';\r\nimport { ModuleMap } from './ModuleMap';\r\nimport { Services } from '../common/services';\r\nimport { SELECTORS } from '../common/constants';\r\n/**\r\n * This is a polyfill to suport forEach on NodeList\r\n */\r\n// (function() {\r\n// if (typeof NodeList.prototype.forEach === 'function') return false;\r\n// NodeList.prototype.forEach = Array.prototype.forEach;\r\n// })();\r\n\r\n/**\r\n * This function loops over all elements in the DOM with the\r\n * `data-loadmodule` attribute and loads the specified module.\r\n */\r\nfunction loadPageModules() {\r\n const pageModules = document.querySelectorAll(`[${ SELECTORS.LOADMODULE }]`);\r\n for(let i = 0; i < pageModules.length; i++) {\r\n //console.log(pageModules[i]);\r\n ModuleMap[pageModules[i].getAttribute(SELECTORS.LOADMODULE)].init(pageModules[i]);\r\n }\r\n}\r\n\r\n/**\r\n * This function calls all the other functions used by the app\r\n */\r\nfunction init() {\r\n /**\r\n * Image Optimization | Lazy Load\r\n */\r\n new LazyLoad();\r\n\r\n Services.init();\r\n loadPageModules();\r\n ModuleMap.Forms.init(document);\r\n ModuleMap.Revealer.init(document);\r\n ModuleMap.Flipper.init(document);\r\n ModuleMap.SitecoreForm.init(document.querySelectorAll(SELECTORS.SITECORE_FORM));\r\n ModuleMap.CoveoSearch.init(document);\r\n}\r\n\r\n(function() {\r\n init();\r\n})();\r\n","import {getJSON} from '../../common/utils/getjson';\r\nimport {serializeform} from '../../common/utils/serializeform';\r\n\r\nvar Configurator = {\r\n\r\n init(element, config) {\r\n this.$el = $(element);\r\n this.config = config;\r\n\r\n this.setupDefaults();\r\n this.addListeners();\r\n this.setInitialParams();\r\n },\r\n\r\n setupDefaults() {\r\n this.wishlistservice = this.$el.find('.hof-add-to-wishlist__endpoint').val();\r\n\r\n this.dom = {\r\n $configForm: this.$el.find('.hof-config-form'),\r\n $menuHeads: this.$el.find('.hof-config-facet'),\r\n $menuDisplays: this.$el.find('.hof-facet-display a'),\r\n $menuDisplayItems: this.$el.find('.hof-facet-display li'),\r\n $menuItems: this.$el.find('.hof-facet-simple ul a, .hof-facet-complex ul a'),\r\n $menuMultilevelItems: this.$el.find('.hof-facet-multilevel ul a'),\r\n $menuMultivalueItems: this.$el.find('.hof-facet-multivalue ul a'),\r\n $topLevelItems: this.$el.find('.hof-facet-multilevel :not(.hof-facet-multilevel-secondary) a'),\r\n $topValueItems: this.$el.find('.hof-facet-multivalue :not(.hof-facet-multivalue-secondary) a'),\r\n $secondLevelItems: this.$el.find('.hof-facet-multilevel .hof-facet-multilevel-secondary a'),\r\n $addToWishlist: this.$el.find('.hof-social-links-wishlist')\r\n };\r\n },\r\n\r\n addListeners() {\r\n this.dom.$menuHeads.on('click', ::this.toggleConfigMenu);\r\n this.dom.$menuDisplays.on('click', ::this.toggleConfigMenu);\r\n this.dom.$menuItems.on('click', ::this.updateFormField);\r\n this.dom.$menuMultilevelItems.on('click', ::this.onMultilevelItemClick);\r\n this.dom.$menuMultivalueItems.on('click', ::this.onMultivalueItemClick);\r\n this.dom.$addToWishlist.on('click', ::this.addToWishList);\r\n },\r\n\r\n setInitialParams() {\r\n const {initialParams, updateOnLoad} = this.config;\r\n let changed = false;\r\n\r\n Object.keys(initialParams).forEach(paramKey => {\r\n if (paramKey && initialParams[paramKey]) {\r\n changed = true;\r\n this.setParamValue(paramKey, initialParams[paramKey]);\r\n }\r\n });\r\n\r\n if (changed && updateOnLoad) {\r\n this.handleChange(true);\r\n }\r\n },\r\n\r\n updateDefaultValues(defaultValues) {\r\n defaultValues.forEach(item => {\r\n const fieldTarget = this.$el.find(`input[name=\"${item.fieldId}\"]`);\r\n if (!fieldTarget.val()) {\r\n this.setParamValue(item.fieldId, item.value);\r\n }\r\n });\r\n },\r\n\r\n updateDefaultValuesNew(defaultValues) {\r\n defaultValues.forEach(item => {\r\n const fieldTarget = this.$el.find(`input[name=\"${item.id}\"]`);\r\n \r\n this.setParamValueNew(item.id, item.value, item.type);\r\n\r\n this.updateClasses(item.id, item.values, item.type);\r\n \r\n if (item.subvalues) {\r\n this.updateClasses(item.id, item.subvalues, 'second-level');\r\n }\r\n });\r\n },\r\n\r\n updateClasses(key, values, type, customValue) {\r\n values.forEach(value => {\r\n let items;\r\n if (type.includes('multilevel')) {\r\n items = this.dom.$topLevelItems.filter(`[data-target=\"${key}\"][data-value='${value.value}']`);\r\n }\r\n else if (type.includes('multivalue')) {\r\n items = this.dom.$topValueItems.filter(`[data-target=\"${key}\"][data-value='${value.value}']`);\r\n }\r\n else if (type.includes('second-value')) {\r\n const primaryItem = this.dom.$topValueItems.filter(`[data-target=\"${key}\"][data-value='${value.value}']`);\r\n const secondary = primaryItem.closest('fieldset').find('.hof-facet-multivalue-secondary');\r\n const secondaryList = secondary.find(`ul[data-value=\"${customValue}\"][data-target=\"${key}\"]`);\r\n values.forEach(v => {\r\n const items = secondaryList.find(`[data-target=\"${key}\"][data-value='${v.value}']`);\r\n if (v.unSelectable)\r\n items[0].classList.add('unselectable');\r\n else if (v.greyedOut)\r\n items[0].classList.add('greyed');\r\n }\r\n );\r\n return;\r\n }\r\n else if (type.includes('second-level')) {\r\n items = this.dom.$secondLevelItems.filter(`[data-target=\"${key}\"][data-value='${value.value}']`);\r\n }\r\n else {\r\n items = this.dom.$menuItems.filter(`[data-target=\"${key}\"][data-value='${value.value}']`);\r\n }\r\n\r\n if(items.length) {\r\n const targetOption = items[0];\r\n\r\n if (value.unSelectable) {\r\n targetOption.classList.add('unselectable');\r\n }\r\n else {\r\n targetOption.classList.remove('unselectable');\r\n }\r\n\r\n if (value.greyedOut) {\r\n targetOption.classList.add('greyed');\r\n }\r\n else {\r\n targetOption.classList.remove('greyed');\r\n }\r\n }\r\n\r\n if (value.subvalues) {\r\n this.updateClasses(key, value.subvalues, 'second-value', value.value);\r\n }\r\n });\r\n },\r\n\r\n setParamValueNew(paramKey, paramValue, type) {\r\n if (type.includes('multilevel')) {\r\n const decomposed = paramValue.split('.');\r\n const integer = decomposed[0];\r\n const fraction = decomposed.length > 1 ? decomposed[1] : '00';\r\n const hideSecondLevel = paramValue < 1;\r\n\r\n let primaryItems = this.dom.$topLevelItems.filter(`[data-target=\"${paramKey}\"][data-value='${integer}']`);\r\n\r\n if (hideSecondLevel) {\r\n primaryItems = this.dom.$topLevelItems.filter(`[data-target=\"${paramKey}\"][data-value='.${fraction}']`);\r\n }\r\n\r\n if (primaryItems.length) {\r\n const secondaryItems = this.dom.$secondLevelItems.filter(`[data-target=\"${paramKey}\"][data-value='.${fraction}']`);\r\n\r\n this.updateSecondLevel(primaryItems, hideSecondLevel);\r\n\r\n if (hideSecondLevel) {\r\n this.setFormField(primaryItems);\r\n } else if (secondaryItems.length) {\r\n this.setFormField(secondaryItems);\r\n }\r\n }\r\n\r\n } else if (type.includes('multivalue')) {\r\n\r\n const decomposed = paramValue.split('.');\r\n const integer = decomposed[0] ? parseInt(decomposed[0], 10) : 0;\r\n const fraction = decomposed.length > 1 ? decomposed[1] : '00';\r\n\r\n const primaryItems = this.dom.$topValueItems.filter(`[data-target=\"${paramKey}\"]`);\r\n const multivalue = primaryItems.closest('.multivalue');\r\n const min = multivalue.data('min') || 1;\r\n const max = multivalue.data('max') || 2;\r\n const hideSecondValue = integer < min || integer > max;\r\n\r\n let primaryItem;\r\n if (!hideSecondValue) {\r\n primaryItem = this.dom.$topValueItems.filter(`[data-target=\"${paramKey}\"][data-value='${integer}']`);\r\n } else {\r\n primaryItem = this.dom.$topValueItems.filter(`[data-target=\"${paramKey}\"][data-value='${paramValue}']`);\r\n }\r\n\r\n if (primaryItem.length) {\r\n const secondary = primaryItem.closest('fieldset').find('.hof-facet-multivalue-secondary');\r\n const secondaryList = secondary.find(`ul[data-value=\"${integer}\"][data-target=\"${paramKey}\"]`);\r\n const secondaryItems = secondaryList.find(`[data-target=\"${paramKey}\"][data-value='.${fraction}']`);\r\n\r\n this.updateSecondValue(primaryItem, hideSecondValue);\r\n\r\n if (hideSecondValue) {\r\n this.setFormField(primaryItem);\r\n } else if (secondaryItems.length) {\r\n this.setFormField(secondaryItems);\r\n }\r\n }\r\n\r\n } else {\r\n const target = this.dom.$menuItems.filter(`[data-target=\"${paramKey}\"][data-value='${paramValue}']`);\r\n if (target.length) {\r\n this.setFormField(target);\r\n }\r\n }\r\n },\r\n\r\n setParamValue(paramKey, paramValue) {\r\n if (this.isMultiLevel(paramKey)) {\r\n const decomposed = paramValue.split('.');\r\n const integer = decomposed[0];\r\n const fraction = decomposed.length > 1 ? decomposed[1] : '00';\r\n const hideSecondLevel = paramValue < 1;\r\n\r\n let primaryItems = this.dom.$topLevelItems.filter(`[data-target=\"${paramKey}\"][data-value='${integer}']`);\r\n\r\n if (hideSecondLevel) {\r\n primaryItems = this.dom.$topLevelItems.filter(`[data-target=\"${paramKey}\"][data-value='.${fraction}']`);\r\n }\r\n\r\n if (primaryItems.length) {\r\n const secondaryItems = this.dom.$secondLevelItems.filter(`[data-target=\"${paramKey}\"][data-value='.${fraction}']`);\r\n\r\n this.updateSecondLevel(primaryItems, hideSecondLevel);\r\n\r\n if (hideSecondLevel) {\r\n this.setFormField(primaryItems);\r\n } else if (secondaryItems.length) {\r\n this.setFormField(secondaryItems);\r\n }\r\n }\r\n\r\n } else if (this.isMultiValue(paramKey)) {\r\n\r\n const decomposed = paramValue.split('.');\r\n const integer = decomposed[0] ? parseInt(decomposed[0], 10) : 0;\r\n const fraction = decomposed.length > 1 ? decomposed[1] : '00';\r\n\r\n const primaryItems = this.dom.$topValueItems.filter(`[data-target=\"${paramKey}\"]`);\r\n const multivalue = primaryItems.closest('.multivalue');\r\n const min = multivalue.data('min') || 1;\r\n const max = multivalue.data('max') || 2;\r\n const hideSecondValue = integer < min || integer > max;\r\n\r\n let primaryItem;\r\n if (!hideSecondValue) {\r\n primaryItem = this.dom.$topValueItems.filter(`[data-target=\"${paramKey}\"][data-value='${integer}']`);\r\n } else {\r\n primaryItem = this.dom.$topValueItems.filter(`[data-target=\"${paramKey}\"][data-value='${paramValue}']`);\r\n }\r\n\r\n if (primaryItem.length) {\r\n const secondary = primaryItem.closest('fieldset').find('.hof-facet-multivalue-secondary');\r\n const secondaryList = secondary.find(`ul[data-value=\"${integer}\"][data-target=\"${paramKey}\"]`);\r\n const secondaryItems = secondaryList.find(`[data-target=\"${paramKey}\"][data-value='.${fraction}']`);\r\n\r\n this.updateSecondValue(primaryItem, hideSecondValue);\r\n\r\n if (hideSecondValue) {\r\n this.setFormField(primaryItem);\r\n } else if (secondaryItems.length) {\r\n this.setFormField(secondaryItems);\r\n }\r\n }\r\n\r\n } else {\r\n const target = this.dom.$menuItems.filter(`[data-target=\"${paramKey}\"][data-value='${paramValue}']`);\r\n if (target.length) {\r\n this.setFormField(target);\r\n }\r\n }\r\n },\r\n\r\n isMultiLevel(paramKey) {\r\n return this.dom.$topLevelItems.filter(`[data-target=\"${paramKey}\"]`).length > 0;\r\n },\r\n\r\n isMultiValue(paramKey) {\r\n return this.dom.$topValueItems.filter(`[data-target=\"${paramKey}\"]`).length > 0;\r\n },\r\n\r\n toggleConfigMenu(e) {\r\n e.preventDefault();\r\n\r\n const openMe = $(e.target).closest('fieldset');\r\n\r\n if (this.dom.$configForm.hasClass('open') && !openMe.hasClass('open')) {\r\n return;\r\n }\r\n\r\n openMe.toggleClass('open');\r\n this.dom.$configForm.toggleClass('open');\r\n\r\n },\r\n\r\n onMultilevelItemClick(event) {\r\n event.preventDefault();\r\n\r\n const target = $(event.currentTarget);\r\n const isSecondaryItem = target.closest('.hof-facet-multilevel-secondary').length;\r\n const hideSecondLevel = parseFloat(target.data('value')) < 1;\r\n\r\n if (isSecondaryItem) {\r\n this.updateFormField(event);\r\n } else {\r\n this.handleUpdateSecondLevel(event, hideSecondLevel);\r\n\r\n if (hideSecondLevel) {\r\n this.updateFormField(event);\r\n }\r\n }\r\n },\r\n\r\n onMultivalueItemClick(event) {\r\n event.preventDefault();\r\n\r\n const target = $(event.currentTarget);\r\n const multivalue = target.closest('.multivalue');\r\n const isSecondaryItem = target.closest('.hof-facet-multivalue-secondary').length;\r\n const min = multivalue.data('min') || 1;\r\n const max = multivalue.data('max') || 2;\r\n const value = parseFloat(target.data('value'));\r\n const hideSecondValue = value < min || value > max;\r\n\r\n if (isSecondaryItem) {\r\n this.updateFormField(event);\r\n } else {\r\n this.handleUpdateSecondValue(event, hideSecondValue);\r\n\r\n if (hideSecondValue) {\r\n this.updateFormField(event);\r\n }\r\n }\r\n },\r\n\r\n updateFormField(e) {\r\n e.preventDefault();\r\n\r\n const target = $(e.currentTarget);\r\n\r\n this.setFormField(target);\r\n this.toggleConfigMenu(e);\r\n this.handleChange();\r\n },\r\n\r\n setFormField(target) {\r\n const container = target.closest('fieldset');\r\n const fieldTarget = container.find(`input[name=\"${target.data('target')}\"]`);\r\n const targetValue = target.data('value');\r\n\r\n fieldTarget.val(targetValue);\r\n\r\n container.find('.hof-facet-display li').removeClass('hof-selected');\r\n target.closest('ul').find('li').removeClass('hof-selected');\r\n target.closest('li').addClass('hof-selected');\r\n\r\n const displayLabel = container.find(`.hof-facet-display [data-value=\"${targetValue}\"]`);\r\n\r\n if (displayLabel.length) {\r\n container.find(`.hof-facet-display [data-value=\"${targetValue}\"]`).parent().addClass('hof-selected');\r\n } else {\r\n const targetValueInteger = targetValue.split('.')[0];\r\n const compoundSelected = container.find(`.hof-facet-display [data-value=\"${targetValueInteger}\"]`);\r\n\r\n if (compoundSelected) {\r\n compoundSelected.parent().addClass('hof-selected');\r\n compoundSelected.html(`

    ${targetValue}

    `);\r\n }\r\n }\r\n },\r\n\r\n handleUpdateSecondLevel(event, hide) {\r\n event.preventDefault();\r\n\r\n const target = $(event.currentTarget);\r\n this.updateSecondLevel(target, hide);\r\n },\r\n\r\n updateSecondLevel(target, hide) {\r\n const container = target.closest('.hof-facet-multilevel');\r\n const secondLevel = container.find('.hof-facet-multilevel-secondary');\r\n\r\n if (hide) {\r\n secondLevel.addClass('hof-facet-multilevel-secondary--disabled');\r\n } else {\r\n const firstLevel = container.find('.hof-facet-multilevel-primary');\r\n const chosenValue = target.data('value');\r\n\r\n secondLevel.removeClass('hof-facet-multilevel-secondary--disabled');\r\n\r\n firstLevel.find('.hof-selected').removeClass('hof-selected');\r\n target.parent().addClass('hof-selected');\r\n\r\n secondLevel.find('a').each((index, option) => {\r\n const value = $(option).data('value');\r\n const fraction = value.substr(value.indexOf(\".\"));\r\n const newValue = chosenValue + fraction;\r\n\r\n $(option).data('value', newValue)\r\n .html(`

    ${newValue}

    `);\r\n });\r\n }\r\n },\r\n\r\n handleUpdateSecondValue(event, hide) {\r\n event.preventDefault();\r\n\r\n const target = $(event.currentTarget);\r\n this.updateSecondValue(target, hide);\r\n },\r\n\r\n updateSecondValue(target, hide) {\r\n const container = target.closest('.hof-facet-multivalue');\r\n const secondValue = container.find('.hof-facet-multivalue-secondary');\r\n\r\n if (hide) {\r\n secondValue.addClass('hof-facet-multivalue-secondary--disabled');\r\n } else {\r\n const firstValue = container.find('.hof-facet-multivalue-primary');\r\n const chosenValue = target.data('value');\r\n const secondOptions = secondValue.find(`ul[data-value=\"${chosenValue}\"]`);\r\n\r\n secondValue.removeClass('hof-facet-multivalue-secondary--disabled');\r\n secondValue.find('ul').addClass('hidden');\r\n secondOptions.removeClass('hidden');\r\n\r\n firstValue.find('.hof-selected').removeClass('hof-selected');\r\n target.parent().addClass('hof-selected');\r\n\r\n secondOptions.find('a').each((_, option) => {\r\n const value = $(option).data('value');\r\n const fraction = value.substr(value.indexOf(\".\"));\r\n const newValue = chosenValue + fraction;\r\n\r\n $(option).data('value', newValue)\r\n .html(`

    ${newValue}

    `);\r\n });\r\n }\r\n },\r\n\r\n handleChange(onLoad = false) {\r\n const {onChange} = this.config;\r\n if (onChange) {\r\n var configOptions = serializeform(this.dom.$configForm[0]);\r\n onChange(configOptions, onLoad);\r\n }\r\n },\r\n\r\n addToWishList(e) {\r\n e.preventDefault();\r\n\r\n const configOptions = serializeform(this.dom.$configForm[0]);\r\n\r\n const result = getJSON(this.wishlistservice, configOptions).then(data => {\r\n if (data.success) {\r\n this.dom.$addToWishlist.addClass('hof-icon-wishlist-added');\r\n this.dom.$addToWishlist.removeClass('hof-icon-wishlist-add');\r\n } else {\r\n this.dom.$addToWishlist.addClass('hof-icon-wishlist-add');\r\n this.dom.$addToWishlist.removeClass('hof-icon-wishlist-added');\r\n }\r\n });\r\n },\r\n\r\n getDisplayValue(id) {\r\n const $selected = this.dom.$menuDisplayItems.filter('.hof-selected')\r\n .find(`[data-target=\"${id}\"] .hof-facet-copy`);\r\n if ($selected.length) {\r\n return $selected.text();\r\n }\r\n return null\r\n }\r\n};\r\n\r\nexport default Configurator;\r\n","import format from 'string-format';\r\nimport { serializeform } from '../../common/utils/serializeform';\r\nimport { getJSON } from '../../common/utils/getjson';\r\nimport { setErrors } from '../atoms/Forms';\r\nclass ProductReserve {\r\n \r\n constructor(element, config) {\r\n this.el = element;\r\n this.config = config;\r\n this.dom = {\r\n loader: this.el.querySelector('.hof-loading'),\r\n type: this.el.querySelector('.hof-reserve__type'),\r\n name: this.el.querySelector('.hof-reserve__name'),\r\n price: this.el.querySelector('.hof-reserve__price'),\r\n image: this.el.querySelector('.hof-reserve__image'),\r\n display: this.el.querySelectorAll('[data-display-value]'),\r\n form: this.el.querySelector('.hof-reserve__form'),\r\n formError: this.el.querySelector('.hof-form-error'),\r\n errors: this.el.querySelectorAll('.hof-error-label'),\r\n hidden: this.el.querySelectorAll('input[type=\"hidden\"]'),\r\n recaptcha: this.el.querySelector('#recaptcha'),\r\n reserve: this.el.querySelector('.hof-reserve'),\r\n reserveCta: this.el.querySelector('.hof-reserve__cta'),\r\n success: this.el.querySelector('.hof-success'),\r\n successCta: this.el.querySelector('.hof-success__cta')\r\n };\r\n\r\n this.reserveUrl = this.dom.form.getAttribute('action');\r\n this.recaptchaScript = this.dom.recaptcha.dataset.script;\r\n this.recaptchaSitekey = this.dom.recaptcha.dataset.sitekey;\r\n this.chatTemplate = this.dom.reserveCta.getAttribute('onclick');\r\n\r\n this.createReCaptchaScript();\r\n\r\n this.dom.form.addEventListener('submit', ::this.onReCaptchaSubmit);\r\n this.dom.successCta.addEventListener('click', this.config.onSuccess);\r\n }\r\n\r\n createReCaptchaScript() {\r\n const script = document.createElement('script');\r\n script.src = this.recaptchaScript;\r\n script.async = true;\r\n script.defer = true;\r\n document.body.appendChild(script);\r\n\r\n window.addEventListener('load', ::this.onReCaptchaLoad)\r\n }\r\n\r\n onReCaptchaLoad() {\r\n if (window.grecaptcha) {\r\n window.grecaptcha.render(\"recaptcha\", {\r\n sitekey: this.recaptchaSitekey,\r\n size: 'invisible',\r\n badge: 'inline',\r\n theme: 'light',\r\n callback: ::this.onSubmit\r\n });\r\n }\r\n }\r\n\r\n onReCaptchaSubmit(e) {\r\n e.preventDefault();\r\n grecaptcha.execute();\r\n }\r\n\r\n onSubmit() {\r\n const data = serializeform(this.dom.form);\r\n this.showLoader();\r\n getJSON(this.reserveUrl, data)\r\n .then(::this.checkValidationErrors)\r\n .then(::this.showSuccessMessage)\r\n .then(::this.hideLoader);\r\n }\r\n\r\n showLoader() {\r\n this.dom.loader.classList.add('visible');\r\n }\r\n\r\n hideLoader() {\r\n this.dom.loader.classList.remove('visible');\r\n }\r\n\r\n checkValidationErrors(data) {\r\n let resetCaptcha = false;\r\n\r\n this.resetErrors();\r\n \r\n if (!data.Success && (!data.FieldErrors || data.FieldErrors.length === 0)) {\r\n this.dom.formError.classList.remove('hidden');\r\n resetCaptcha = true;\r\n }\r\n if (data.FieldErrors && data.FieldErrors.length) {\r\n setErrors(this.dom.form, data.FieldErrors);\r\n resetCaptcha = true;\r\n }\r\n if (resetCaptcha) {\r\n grecaptcha.reset();\r\n }\r\n return data;\r\n }\r\n\r\n showSuccessMessage(data) {\r\n if (data.Success && (!data.FieldErrors || data.FieldErrors.length === 0)) {\r\n this.dom.reserve.classList.add('hidden');\r\n this.dom.success.classList.remove('hidden');\r\n }\r\n return data;\r\n }\r\n\r\n resetForm() {\r\n this.dom.form.reset();\r\n this.dom.reserve.classList.remove('hidden');\r\n this.dom.success.classList.add('hidden');\r\n }\r\n\r\n reset() {\r\n this.dom.reserve.classList.remove('hidden');\r\n this.dom.success.classList.add('hidden');\r\n\r\n if (this.dom.type) {\r\n this.dom.type.innerText = '';\r\n }\r\n\r\n this.dom.name.innerText = '';\r\n this.dom.price.innerText = '';\r\n this.dom.image.setAttribute('src', '');\r\n this.dom.reserveCta.setAttribute('onclick', this.chatTemplate);\r\n\r\n if (this.dom.display) {\r\n [].forEach.call(this.dom.display, el => {\r\n el.innerText = '';\r\n });\r\n }\r\n if (this.dom.hidden) {\r\n [].forEach.call(this.dom.hidden, el => {\r\n el.value = '';\r\n });\r\n }\r\n\r\n this.resetErrors();\r\n }\r\n\r\n resetErrors() {\r\n if (this.dom.errors) {\r\n [].forEach.call(this.dom.errors, el => {\r\n el.innerText = '';\r\n });\r\n }\r\n\r\n this.dom.formError.classList.add('hidden');\r\n }\r\n\r\n update({ details, settings, displays, image }) {\r\n\r\n if (this.dom.type && details.type) {\r\n this.dom.type.innerText = details.type;\r\n }\r\n\r\n this.dom.name.innerText = details.name;\r\n this.dom.price.innerText = details.price;\r\n this.dom.image.setAttribute('src', image);\r\n\r\n settings.name = details.name;\r\n settings.price = details.price;\r\n\r\n const chatOnClick = format(this.chatTemplate, displays);\r\n this.dom.reserveCta.setAttribute('onclick', chatOnClick);\r\n\r\n\r\n if (this.dom.display) {\r\n [].forEach.call(this.dom.display, el => {\r\n const key = el.dataset.displayValue;\r\n if (displays[key]) {\r\n el.innerText = displays[key];\r\n } else {\r\n el.innerText = '';\r\n }\r\n });\r\n }\r\n if (this.dom.hidden) {\r\n [].forEach.call(this.dom.hidden, el => {\r\n const key = el.name;\r\n if (settings[key]) {\r\n el.value = settings[key];\r\n } else {\r\n el.value = '';\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default ProductReserve;","/**\r\n * Returns a function, that, as long as it continues to be invoked, will not\r\n * be triggered. The function will be called after it stops being called for\r\n * N milliseconds. If `immediate` is passed, trigger the function on the\r\n * leading edge, instead of the trailing.\r\n *\r\n * @param {Function} func A function to call after N milliseconds\r\n * @param {number} wait The number of milliseconds to wait\r\n * @param {boolean} immediate Trigger the function on the leading edge instead of the trailing\r\n * @return {Function} A function, that, as long as it continues to be invoked, will not be triggered\r\n */\r\nexport function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function() {\r\n var context = this,\r\n args = arguments;\r\n var later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n}","import { EVENTS, CLASS_NAMES } from './../constants';\r\n\r\n/**\r\n * Function to build and show a notification banner\r\n *\r\n * @param {String} message the message to add to the notification\r\n * @param {String} content Any extra content to add; can be HTML string\r\n */\r\nexport function notification(message, content) {\r\n\t// first, let's make sure there aren't any previous notification banners in the DOM\r\n\tvar notifyBannerOld = document.querySelector('.'+CLASS_NAMES.NOTIFICATION);\r\n\tif (notifyBannerOld!== null) {\r\n\t\tdocument.querySelector('main').removeChild(notifyBannerOld);\r\n\t}\r\n\t\r\n\t// now let's build our notification banner and close button\r\n\t\r\n\tvar banner = document.createElement('div');\r\n\tbanner.className = CLASS_NAMES.NOTIFICATION;\r\n\tvar close = document.createElement('span');\r\n\tclose.className = CLASS_NAMES.BANNER_CLOSE;\r\n\tclose.innerHTML = 'Close';\r\n\tbanner.appendChild(close);\r\n\r\n\t// let's add the message for this notification\r\n\tvar msg = document.createElement('h5');\r\n\tmsg.innerHTML = message;\r\n\tbanner.appendChild(msg);\r\n\t\r\n\t// if there is any other content, add it in a separate div\r\n\tif(typeof(content) !== 'undefined' || typeof(content) !== null) {\r\n\t\tvar msgcontent = document.createElement('div');\r\n\t\tmsgcontent.innerHTML = content;\r\n\t\tbanner.appendChild(msgcontent);\r\n\t}\r\n\t\r\n\t// now let's add our banner to the DOM\r\n\tdocument.querySelector('main').appendChild(banner);\r\n\t\r\n\t// create some references to these new DOM objects\r\n\tvar notifyBanner = document.querySelector('.'+CLASS_NAMES.NOTIFICATION);\r\n\tvar closeButton = notifyBanner.querySelector('.'+CLASS_NAMES.BANNER_CLOSE);\r\n\t\r\n\t// bind the event listener to the close button\r\n\tcloseButton.addEventListener(EVENTS.CLICK, function() { notifyBanner.classList.remove(CLASS_NAMES.SHOW);});\r\n\r\n\t// now that we're built, show the banner\r\n\twindow.setTimeout(function() { notifyBanner.classList.add(CLASS_NAMES.SHOW); },500);\r\n\t\r\n\t// also, auto-close the banner after 3 seconds\r\n\tvar autoClose = window.setTimeout(function() { notifyBanner.classList.remove(CLASS_NAMES.SHOW);}, 3000);\r\n\t\r\n\t//UNLESS: the user is hovering oer the banner\r\n\tnotifyBanner.addEventListener(EVENTS.MOUSEOVER, function () { \r\n\t\twindow.clearTimeout(autoClose);\r\n\t});\r\n\t\r\n\tnotifyBanner.addEventListener(EVENTS.MOUSEOUT, function () { \r\n\t\tautoClose = window.setTimeout(function() { notifyBanner.classList.remove(CLASS_NAMES.SHOW);}, 3000);\r\n\t});\r\n}","export var EVENTS = {\r\n CLICK: 'click'\r\n};","export var SELECTORS = {\r\n HEROBANNER_VIDEO: '.hero-banner__video-container.show-controls .hero-banner__video',\r\n HEROBANNER_VIDEO_PLAY: '.play-button',\r\n HEROBANNER_VIDEO_VOLUME: '.volume-button',\r\n SLIDER: '.hof-slider',\r\n SLIDER_WRAPPER: '.hof-slider-frame',\r\n SLIDER_ITEM: '.hof-slider-item',\r\n SLIDER_BTN_LEFT: '.hof-slider-btn.left',\r\n SLIDER_BTN_RIGHT: '.hof-slider-btn.right',\r\n VIDEO_PLAY: '.hof-video-play',\r\n VIDEO_PLAYER: '.hof-video-player'\r\n};\r\n"],"sourceRoot":""}