{"version":3,"sources":["webpack:///./src/Foundation/src/svg sync ^\\.\\/.*\\.svg","webpack:///./src/Foundation/src/svg/404-image-eukanuba.svg","webpack:///./src/Foundation/src/svg/circle-with-check-fill.svg","webpack:///./src/Foundation/src/svg/social-sharing/email--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/facebook--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/instagram--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/kakao-story--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/kakao-talk--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/line--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/linkedIn--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/messenger--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/naver-band--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/odno-klassniki--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/pintrest--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/telegram--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/tiktok--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/twitter--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/viber--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/vkontakte--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/wechat--sm.svg","webpack:///./src/Foundation/src/svg/social-sharing/whatsapp--sm.svg","webpack:///./front/components/article/card/styled.jsx","webpack:///./front/components/article/card/index.jsx","webpack:///./front/components/my-account-dropdown/styled.jsx","webpack:///./front/components/my-account-dropdown/index.jsx","webpack:///./src/Foundation/src/js/dLScriptsObserver.js","webpack:///./src/Feature/GenericComponents/code/src/content-cards/index.js","webpack:///./src/Feature/GenericComponents/code/src/product-block/index.js","webpack:///./src/Feature/GenericComponents/code/src/paragraphs-in-two-columns/index.js","webpack:///./src/Feature/GenericComponents/code/src/tabbed-image/index.js","webpack:///./src/Feature/Products/code/src/product-details/index.js","webpack:///./src/Feature/SocialSharing/code/src/index.js","webpack:///./src/Feature/Stockists/code/src/index.js","webpack:///./src/Foundation/src/js/ViewportInfo.js","webpack:///./src/Feature/ProductFinder/code/src/product-finder/js/utils.js","webpack:///./src/Feature/ProductFinder/code/src/product-finder/js/enums.js","webpack:///./src/Feature/ProductFinder/code/src/recommendations/index.js","webpack:///./src/Foundation/src/js/utils.js","webpack:///./src/Foundation/src/js/gtm/gtm.js","webpack:///./src/Feature/LanguagePicker/Code/src/royal-canin/index.js","webpack:///./src/Feature/LanguagePicker/Code/src/royal-canin-QRCode/index.js","webpack:///./src/Feature/LanguagePicker/Code/src/eukanuba/index.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/enums/mediatorEvents.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/models/mediatorEventModel.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/AbstractFilterControl.js","webpack:///./src/Foundation/src/js/gtm/gtmPetDetails.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterCheckboxControl.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterRangeControl.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterSelectControl.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterPanelControl.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterTagsControl.js","webpack:///./src/Foundation/src/js/gtm/gtmStockistDetails.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterListingControl.js","webpack:///./src/Foundation/src/js/api.js","webpack:///./src/Feature/GenericComponents/code/src/autocomplete/index.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/filterTrackingService.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterSearchControl.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/mapScriptObserver.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterStockistsControl.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/map/filterPlacesSearchControl.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterViewAllBtnControl.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/filterPaginationControl.js","webpack:///./src/Feature/GenericComponents/code/src/mapGeneric/implementations/mapGenericGoogle.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/map/implementations/filterMapGoogle.js","webpack:///./src/Feature/GenericComponents/code/src/mapGeneric/implementations/mapGenericBaidu.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/map/implementations/filterMapBaidu.js","webpack:///./src/Feature/GenericComponents/code/src/mapGeneric/implementations/mapGenericKakao.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/map/implementations/filterMapKakao.js","webpack:///./src/Feature/GenericComponents/code/src/mapGeneric/mapBridge.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/map/filterMapBridge.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/controls/map/filterMapControl.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/mediator.js","webpack:///./src/Feature/GenericComponents/code/src/filter/js/dataLoader.js","webpack:///./src/Feature/GenericComponents/code/src/filter/index.js","webpack:///./src/Feature/GenericComponents/code/src/mobile-search-button/index.js","webpack:///./src/Feature/GenericComponents/code/src/button-switch/index.js","webpack:///./src/Feature/GenericComponents/code/src/listing-with-pagination/index.js","webpack:///./src/Feature/Breeds/code/src/timeline/index.js","webpack:///./src/Feature/Articles/code/src/view-all-articles/index.js","webpack:///./src/Feature/Articles/code/src/back-to-top/index.js","webpack:///./src/Feature/Articles/code/src/related-articles/index.js","webpack:///./src/Feature/GenericComponents/code/src/read-more/index.js","webpack:///./src/Feature/GenericComponents/code/src/search-results/index.js","webpack:///./src/Feature/Forms/code/src/recaptcha/loadRecaptcha.js","webpack:///./src/Feature/Forms/code/src/recaptcha/index.js","webpack:///./src/Foundation/src/js/gtm/gtmContactUs.js","webpack:///./src/Feature/Forms/code/src/form/parlsey-localization.js","webpack:///./src/Feature/Forms/code/src/form/form.js","webpack:///./src/Feature/Forms/code/src/form/show-rule.js","webpack:///./src/Feature/Forms/code/src/form/hidden-if.js","webpack:///./src/Feature/Forms/code/src/form/server-validation.js","webpack:///./src/Feature/Forms/code/src/form/calendar.js","webpack:///./src/Feature/GenericComponents/code/src/map/implementations/mapGoogle.js","webpack:///./src/Feature/GenericComponents/code/src/map/implementations/mapBaidu.js","webpack:///./src/Feature/GenericComponents/code/src/map/implementations/mapKakao.js","webpack:///./src/Feature/GenericComponents/code/src/map/mapBridge.js","webpack:///./src/Feature/GenericComponents/code/src/map/index.js","webpack:///./src/Feature/Products/code/src/product-rating/index.js","webpack:///./src/Feature/Products/code/src/write-review/index.js","webpack:///./src/Feature/EukanubaProducts/code/src/filters-list/index.js","webpack:///./src/Feature/EukanubaProducts/code/src/review-feedback/index.js","webpack:///./src/Feature/EukanubaProducts/code/src/ps-tracking/index.js","webpack:///./src/Feature/Articles/code/src/article-tabbed-nav/index.js","webpack:///./src/Feature/Articles/code/src/article-tags/index.js","webpack:///./src/Feature/Articles/code/src/article-reading-time/index.js","webpack:///./src/Feature/GenericComponents/code/src/video-wrapper/index.js","webpack:///./src/Feature/GenericComponents/code/src/carousel-event-tracker/index.js","webpack:///./src/Feature/GenericComponents/code/src/cta-event-tracker/index.js","webpack:///./src/Feature/GenericComponents/code/src/search-event-tracker/index.js","webpack:///./src/Feature/GenericComponents/code/src/navigation-event-tracker/index.js","webpack:///./src/Feature/GenericComponents/code/src/content-tracker/index.js","webpack:///./src/Foundation/src/js/intersection-helper.js","webpack:///./src/Feature/GenericComponents/code/src/content-animation/index.js","webpack:///./src/Foundation/src/js/gtm/gtmProductDetails.js","webpack:///./src/Feature/Products/code/src/product-track/index.js","webpack:///./src/Feature/GenericComponents/code/src/article-hero-panel/index.js","webpack:///./src/Feature/Products/code/src/product-list-track/index.js","webpack:///./src/Feature/Products/code/src/amp-redirect-buy-widget/index.js","webpack:///./src/Feature/GenericComponents/code/src/live-chat/index.js","webpack:///./src/Foundation/src/js/gtm/gtmLiveChat.js","webpack:///./src/Feature/GenericComponents/code/src/live-chat-popup/index.js","webpack:///./src/Feature/GenericComponents/code/src/tencent-video/index.js","webpack:///./src/Feature/RegionPicker/code/src/browser-region/index.js","webpack:///./src/Feature/RegionPicker/code/src/manual-region/index.js","webpack:///./src/Feature/RegionPicker/code/src/region-links/index.js","webpack:///./src/Feature/GenericComponents/code/src/puppies-kittens/timeline/index.js","webpack:///./src/Feature/GenericComponents/code/src/commerce-button/index.js","webpack:///./src/Feature/GenericComponents/code/src/hero-panel/index.js","webpack:///./src/Feature/GenericComponents/code/src/modal-nav/index.js","webpack:///./src/Feature/VetFocusArticles/code/src/index.js","webpack:///./src/Foundation/src/js/gtm/gtmVetFocusIssueCard.js","webpack:///./src/Feature/VetFocusIssues/code/src/issue-card/index.js","webpack:///./src/Feature/VetFocusIssues/code/src/article-issue-detail/index.js","webpack:///./src/Project/VetFocusMetadata/code/src/social-links/index.js","webpack:///./src/Feature/GenericComponents/code/src/enlarge-image/index.js","webpack:///./src/Feature/GenericComponents/code/src/my-account-register-step/index.js","webpack:///./src/Feature/GenericComponents/code/src/my-account/index.js","webpack:///./src/Feature/GenericComponents/code/src/promo-item/index.js","webpack:///./src/Feature/GenericComponents/code/src/navigation-product-block/index.js","webpack:///./src/Feature/GenericComponents/code/src/navigation-contact-dropdown/index.js","webpack:///./src/Feature/GenericComponents/code/src/navigation-items-list/index.js","webpack:///./src/Feature/HeaderBar/code/src/dlHeaderScript.js","webpack:///./src/Feature/HeaderBar/code/src/index.js","webpack:///./src/Feature/GenericComponents/code/src/copy-link/index.js","webpack:///./src/Feature/GenericComponents/code/src/homepage-carousel/index.js","webpack:///./src/Feature/GenericComponents/code/src/accordion/index.js","webpack:///./src/Feature/KittenZooplus/Code/src/market-picker/index.js","webpack:///./src/Feature/GenericComponents/Code/src/routine-step/index.js","webpack:///./src/Foundation/src/js/lazysizes/index.js","webpack:///./front/entries/app.js","webpack:///./front/autobind.js","webpack:///./src/Feature/GenericComponents/code/src/filter/templates/infoWindow.hbs","webpack:///./.modernizrrc","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/al.js","webpack:///./src/Feature/GenericComponents/code/src/filter/templates/filter-tag.hbs","webpack:///./src/Feature/GenericComponents/code/src/filter/templates/eukaInfoWindow.hbs","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ar.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/bg.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ca.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/cs.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/cs.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/da.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/de.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/de.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/el.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/el.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/en.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/en.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/es.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/et.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/eu.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/fa.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/fi.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/fi.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/fr.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/fr.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/he.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/he.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/hr.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/hr.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/hu.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/hu.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/id.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/id.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/it.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/it.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ja.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ja.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ko.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/lt.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/lt.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/lv.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/lv.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ms.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ms.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/nl.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/nl.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/no.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/nb.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/pl.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/pt-br.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/pt-pt.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ro.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ro.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ru.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ru.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/sk.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/sk.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/sl.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/sl.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/sq.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/sr.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/sr.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/sv.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/sv.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/th.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/tk.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/tr.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ua.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/ua.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/uk.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/uk.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/zh_cn.extra.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/zh_cn.js","webpack:///./src/Feature/Forms/code/src/form/parsley-localization/i18n/zh_tw.js"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","symbol","add","Wrapper","styled","a","isVertical","ArticleCard","href","editorialFormat","heading","summary","imgSrc","imgSrcSet","imgAlt","windowWidth","useWindowSize","innerWidth","showOnly","str","n","is","string","length","substring","useState","setIsVertical","useEffect","Number","BreakPoints","S","className","src","alt","srcSet","sizes","DropdownWrapper","div","MyAccountDropdown","loginurl","loginlabel","signupurl","signuplabel","submenuitems","loginEnabled","showAccountDropdown","setShowAccountDropdown","handleClickIcon","useCallback","handleClick","document","body","addEventListener","removeEventListener","parsedSubMenuItems","JSON","parse","onClick","stopPropagation","aria-label","type","links","Item2","target","rel","Item1","instance","this","_isLoaded","subscribers","onDLWebpackDone","bind","forEach","cb","window","webpackComplete","isLoaded","push","ContentCards","el","dLScriptsObserver","onLoad","init","cardButtons","querySelectorAll","setVariables","addListeners","addListener","onBtnClick","dataLayer","event","contentCardClick","itemName","innerText","BaseComponent","ProductBlock","isInited","firstDot","querySelector","lastDot","container","productBlocksWrapper","pb","productBlockClick","lastElementChild","scroll","left","behavior","offsetWidth","scrollLeft","classList","remove","ParagraphsInTwoColumns","buttonMore","buttonLess","items","isOpen","handleButtonClick","Array","prototype","toggle","call","i","scrollIntoView","block","TabbedImage","contentId","dataset","tabs","tabButton","contents","handlePlayButtonClick","title","getAttribute","btn","content","getElementById","ProductDetails","customAnchor","waitForEl","img","imageUrl","indexOf","setAttribute","replace","DPT","vetRegexp","location","match","style","display","selector","observer","MutationObserver","mutations","disconnect","observe","childList","subtree","currentUrl","anchorRegexp","scrollingEnd","feedingButton","scrollTo","top","yOffset","yAxis","getBoundingClientRect","pageYOffset","dispatchEvent","Event","vetDPT","SocialSharing","copyToClipboardButton","handleCopyButtonClick","preventDefault","dummy","createElement","text","appendChild","value","select","execCommand","removeChild","StockistsLandingPage","initializeAutocomplete","google","maps","loadGoogleMap","WTBLandingPage","WTBMapRetailers","WTBMapVets","WTBOnlineRetailers","landingPageLocationBtn","landingPageOnlineRetailersBtn","currentCulture","stockistButton","stockistType","stockistId","searchFieldNode","searchButtonNode","hasDownBeenPressed","handleOnlineRetailersRedirect","handleLocationPermissions","handlePlacesSearch","handleKeyDown","handleSearchFieldFocus","options","componentRestrictions","country","interval","setInterval","autocomplete","places","Autocomplete","setFields","handlePlaceChanged","clearInterval","createEvent","keyCode","which","key","initEvent","place","getPlace","address_components","placeName","name","geometry","latitudeParam","lat","longitudeParam","lng","searchQuery","urlParams","handleWTBRedirect","gmapApiKey","initialWebsiteConfig","googleMapApiKey","mapscript","async","urlParamsPresent","assign","url","navigator","geolocation","getCurrentPosition","position","coords","latitude","longitude","error","console","log","resized","timeout","timeoutId","setGlobals","handleResize","handleOnload","isTouch","Modernizr","touchevents","viewport","width","outerWidth","height","outerHeight","orientation","Math","abs","isDesktop","mq","isTablet","deviceTypeByViewport","connectedPackSustainability","connectedPackRecyclability","clearTimeout","setTimeout","onResized","hash","substr","offsetTop","oldDeviceType","EventEmitter","emit","devicetype","localStorage","removeItem","events","STEP_SUBMITTED","STEP_LOADED","CONTENT_WILL_REMOVE","CONTENT_UPDATED","CHECKBOX_CLICKED","INPUTS_CHANGED","Recommend","fadeInContainer","hiddenItems","border","startAgainBtn","subscribe","initFadeScroll","initSummaryAccordion","handleSummaryTitleClick","handleStartAgainBtnClick","itemsWidth","itemsContainerWidth","item","ViewportInfo","clearState","PFUtils","bubbles","htmlString","template","innerHTML","element","firstChild","adoptNode","getParamsFromQueryString","queryString","obj","split","keyValue","decodeURIComponent","camelizeString","stringResult","chr","toUpperCase","charAt","toLowerCase","elem","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","s","ownerDocument","parents","parentNode","data","endPointUrl","isUrlWithParameters","query","join","search","targetNode","classToWatch","classAddedCallback","classRemovedCallback","lastClassState","contains","mutationsList","mutation","attributeName","currentClassState","attributes","host","some","part","EUKA","RCDL","category","action","label","siteId","eventCamelized","eventFull","interaction","LanguagePicker","countries","buttonsWrapper","modal","filterSelect","selectedCountry","selectedLanguage","_isModalOpened","isClickInit","isModalOpened","modalObserver","currentSelection","currentItemId","fetch","origin","pathname","method","headers","then","response","json","culture","currentSelectedCountry","selectedIndex","DLClass","Utils","endpoint","selectedLanguages","y","Name","Languages","z","LanguageCode","language","features","Selects","placeholderValue","shouldSort","itemSelectText","classNames","currentSelectedLanguage","setRedirectUrl","onCountryClick","updateLanguages","edgeFix","initLanguagePicker","setFocusAfterOpening","focus","DLObject","ToggleGroup","trackCategory","trackLabel","trackEvent","GTM","countryCode","setCookie","cname","cvalue","exdays","date","Date","setTime","getTime","expires","toUTCString","cookie","click","initGTA","LanguagePickerQRCode","qrCodeItem","CountryCodeISO2","LanguagePickerEukanuba","selectedRegion","region","currentSelectedRegion","selectedCountries","x","Countries","Url","updateCountries","MediatorEvents","MediatorEventModel","eventType","eventMethod","eventData","eventParams","htmlData","eventUrl","typeOfInsertingContent","trackDetails","AbstractFilterControl","breedId","specieId","age","pet","isPetDataEmpty","collectPetData","breedIdValue","specieIdValue","ageValue","resultObject","FilterCheckboxControl","addListheners","handleCheckboxChange","isExcluded","trackAction","trackBreedId","trackSpecieId","trackAge","mediator","checked","mediatorEvent","config","filterPanelControl","getSearchQuery","requestParameters","bounds","state","isArray","currentLatitude","currentLongitude","filterChanged","stateChanged","FilterRangeControl","createRange","hiddenInputNode","rangeOptions","noUiSlider","set","parseFloat","get","step","settings","option","index","create","start","snap","tooltips","to","connect","range","min","max","direction","documentDirection","on","handleRangeChange","values","getLabel","FilterSelectControl","handleSelectChange","contactTypes","sortResultsBy","filterSearchControl","getInputValue","contacttypes","sortresultsby","isLocal","filterSelectChanged","FilterPanelControl","createFilters","isActive","filters","filterButtons","closeFilterBtnNode","applyFilterBtnNode","checkboxes","clearAllLinkNode","clearAllBtnNode","filterCategoryNodes","filterRangeNodes","filterSelectNodes","filterFacetNodes","clearCategoryBtnNodes","isHistoryApiEnabled","history","pushState","handleClearCategoryFilters","button","handleFilterBtnClick","handleClearAllFilters","handleApplyFilters","handleCloseFilterClick","handleFacetsUpdate","createCheckboxes","createRanges","createSelects","checkbox","checkboxId","filter","setMediator","rangeId","selectId","viewAll","createMediatorEventModel","clear","filterCategoryNode","getCategory","f","handleFilterChanged","setValue","tenantPrefix","filterCategory","clearBtnNode","shouldBeExcluded","getValue","facets","facet","removeAttribute","checkboxParent","replaceState","cleanUrl","protocol","targetElement","onAddedCallback","attributeObserver","anyFilterApplied","firstFilterCategory","categoryId","categoryListHeader","FilterTagsControl","setUpPreselectedTags","handleRemoveTag","tagId","tagRemoved","removeTag","getAllFilters","addTag","updateTags","updateClearBtnVisibility","updateClearAllLinkVisibility","paramsObj","from","tagHtml","tagTemplate","insertAdjacentHTML","animateHeight","divStyler","styler","tween","duration","update","complete","resetContainerStyles","cssText","shouldBeHidden","customerType","customerName","customer","isStockistDataEmpty","collectStockistData","customerTypeValue","customerNameValue","FilterListingControl","firefoxFixImageSize","preloader","dataContainer","carouselInstances","handleContainerClick","userAgent","imagArray","getElementsByClassName","imag","filterItemNode","pushGoogleTracking","pinId","targetPin","pins","filterItemclicked","trackCustomerType","trackCustomerName","destroyCarousels","html","initCarousels","dataObj","getFacetsData","carouselInstancesWithinContainer","carouselInstancesIds","RCDLCarouselInstances","Carousel","isOn","getInfo","destroy","jsonScriptNode","targetEl","axios","interceptors","use","reject","CancelToken","isCancel","AutoComplete","isIE","inputNode","autoCompleteInstanse","autoCompleteEnabled","jsonData","preDefinedSuggestion","isValueSelected","endPoint","minChairs","maxItems","onKeyUpTimeOut","loadingTime","defaultSettings","handleInputFill","handleInputFocus","handleInputBlur","handleAwesompleteSelectComplete","handleInput","handleSubmit","handleSearchButtonClick","createAutocompleteInstanse","mainClass","listClass","listWithFeaturedClass","minChars","sort","input","inputRegexPattern","Awesomplete","$","regExpEscape","regExp","RegExp","Title","awesompleteSettings","ul","list","Items","FeaturedItems","listElements","onclick","handleDataLayerSearchResultClick","mousedown","goto","suggestion","suggestions","fire","keyword","utfEightStringToBytes","api","setDataFromModel","totalResults","TotalResults","numArr","textEncode","bytes","toString","utf8","unescape","encodeURIComponent","result","Uint8Array","charCodeAt","_list","FilterTrackingService","tracking","getTrackingCategory","FilterSearchControl","inputSearchString","handleInputKeyUp","close","getTrackDetails","suggestionText","isTrackingEnabled","triggerTracking","inputNodeValue","handleSuccessPosition","handleErrorPosition","resetInputValue","message","onMapApiDone","mapIsInitialized","FilterStockistsControl","initFilters","IsFilterApplied","filterButton","filterResultBox","filterCloseButton","filterDiscardButton","filterClearButton","filterApplyButton","filterActiveState","filterActiveNum","filterEditActive","filterClearAllActive","categories","handleEditActiveFilters","handleClearAllActiveFilters","handleFilterButtonClick","handleFilterCloseButtonClick","handleFilterDiscardButtonClick","handleCheckboxChecked","handleCheckboxUncheck","handleFilterCategoryClearButtonClick","getFiltersFromUrl","handleDatalayerEvent","filterCategoryId","handleClearFilters","clearFilters","clearCheckboxes","handleMediatorEvent","handleFilterActiveState","page","undefined","params","allCategories","getAllCategories","dealerFinderFilterInteraction","FilterPlacesSearchControl","MapScriptObserver","locateMeBtn","currentPositionBtn","mapType","filteredStockists","deleteInputValueBtn","updateSearchFieldInputValue","handleStockistClicked","handleGetCurrentPosition","addDomListener","cancelBubble","stockist","mapZoomElement","mapZoom","placesArray","types","handleSelectPlace","urlCurrentLatitude","urlCurrentLongitude","urlLatitude","urlLongitude","isFilterApplied","filter1","filter2","filter3","FilterListingViewAllControl","handleViewAllBtnClick","viewAllBtnClicked","FilterPaginationControl","paginationButtons","paginationInputs","handlePaginationBtnClick","handleInputKeyPress","paginationButtonClicked","filterStockistsControl","char","String","fromCharCode","test","inputValue","Gmap","gmap","marker","apiReadyPromise","apiResolve","gmapInitialize","isGmapReady","loadScript","trigger","zoom","setZoom","callback","callbacks","isScriptInserted","onScriptLoaded","l","FilterMapGoogle","gmapOptions","center","LatLng","mapTypeId","MapTypeId","ROADMAP","disableDefaultUI","zoomControl","Map","cluster","markers","locations","isBoundsSetted","isGeoPositionEnabled","currentPositionCoords","afterIdleTimeout","defaultZoom","infoWindowTemplate","eukaInfoWindowTemplate","infoWindow","InfoWindow","attachEvents","handleSuccessGetPosition","handleErrorGetPosition","closeInfoWindow","onIdle","stockists","translations","updateMarkers","applyBounds","markersList","renderMarkers","generateDisabledMarkers","currentPosMarker","generateCurrentPositionMarker","attachEventsToMarkers","pin","icon","getDisabledMarkerIconOptions","gicon","size","Size","round","scaledSize","markerOptions","Marker","clicked","generateMarker","handleMarkerClick","getMarkerIconOptions","clearCluster","generateCluster","openInfoWindow","updateCluster","calcBounds","fitBounds","setCenter","getCenter","latLngBounds","imax","extend","getPosition","LatLngBounds","clearMarkers","addMarkers","clusterOptions","getClusterOptions","MarkerClusterer","IsGeoPositionEnabled","getFormattedBounds","mapClicked","revertStockistsHide","mapIdleFinished","setRefreshButton","pagination","copiedLocations","changePinColorBasedOnSelection","updateDisabledMarkers","renderDisabledMarkers","mapMarkerClicked","hideStockistBasedOnPinSelection","mapTypeGoogle","infoWindowContent","panTo","setContent","open","attachGetDirectionClickEvent","attachVisitWebsiteClickEvent","infoWindowHtml","ctaGetDirection","ctaVisitWebsite","companyName","getPinById","panBy","refreshElement","once","passive","capture","getBounds","northEast","getNorthEast","southWest","getSouthWest","northeast","southwest","getMapBounds","neLatitude","neLongitude","swLatitude","swLongitude","styles","textColor","textSize","anchorIcon","enableRetinaIcons","clusterClass","MapGenericGoogle","BaiduMap","isApiReady","baiduLoadCallback","isInfoboxScriptLoaded","infoboxCallbacks","isInfoboxScriptInserted","script","onload","googleMapZoom","FilterMapBaidu","MapGenericBaidu","Kakao","kakao","isMapReady","setLevel","FilterMapKakao","level","ZoomControl","addControl","ControlPosition","RIGHT","removable","iconImage","MarkerImage","image","relayout","setBounds","averageCenter","minLevel","background","backgroundSize","fontWeight","fontSize","color","textAlign","lineHeight","mapTypeKakao","getLat","getLng","MapGenericKakao","MapBridge","mapClasses","Google","Baidu","Yandex","defineImplementations","chooseImplementation","_implementation","initApi","triggerResize","FilterWithMapBridge","initMap","afterMapLoaded","updateData","setMarkerActive","GenericMapBridge","FilterMapControl","mapBridge","jsonMapDefaultData","parseInt","FilterMapBridge","getData","Mediator","lastSearchQuery","eventModel","getSearchQueryFromEvent","getTrackDetailsFromEvent","getTrackingAction","filterListingControl","showPreloader","dataLoader","updateListing","setUrl","filterTagsControl","filterMapControl","hidePreloader","clearAllFilters","applyFilters","resetConcreteFilters","clickFilterButton","isFilterPanelActive","updateVisibility","closeFilters","shouldTriggerTrackingEvent","storeLastSearchInfo","updateFilterCategory","setActiveItem","resetActiveItems","filterItemClicked","getListingItems","DataLoader","lastRequestCancel","source","cancel","cancelToken","token","warn","FilterAndListing","controls","controlInstances","regex","attr","FilterViewAllBtnControl","isfilterPanelActive","activePin","stockistsList","stockistsMap","isWhereToBuyPage","matchMedia","insertBefore","initControls","destroyControls","scrollElIntoView","handleMobileMap","sortResultsByDistance","Control","initControl","controlName","tagName","controlNodes","controlNode","components","allowToInit","instanse","constructor","controlInstance","controlInstanceName","constructorName","isDestroyed","headerOffset","moveTo","MoveTo","tolerance","move","MobileSearchButton","searchButtonElement","searchInputElement","topNavigationMenuButtonElement","hideSearchBar","showSearchBar","scrollY","ButtonSwitch","onCheckboxClick","buttonId","ListingWithPagination","requestFilter","requestCategory","viewAllBtns","retailerLink","sortby","handleViewAllClick","link","handleRetailerClick","handleSetSearchQuery","initSelects","selectInstances","retailer","Timeline","nav","navLinks","sections","onLinkClick","initTimeline","onscroll","updateTimeline","onTimelineVisible","onSectionsVisible","onSectionVisible","innerHeight","offsetHeight","sectionName","targetName","ViewAllArticles","addCarouselTracking","trackCarouselNavigationClick","trackCarouselSlideCTAClick","viewAllButtons","handleCarouselUpdates","carouselTarget","allCarouselsItemsUpdates","getAllCarouselsItemsUpdates","getParentCarousels","carouselContainer","handleViewAllBtnVisibility","targetParents","parentElement","viewAllButton","offsetParent","hiddenCarouselItems","displayBtn","hideBtn","btnEl","carouselTitle","card","closest","cardTitle","slideIndex","carouselInteraction","buttonLabel","carousselType","slideId","currentActiveSlideIndex","navigationButtons","contentButtons","header","removeCarouselTracking","BackToTop","scrollLimit","scrollStopHeight","handleButtonBehaviour","handleButtonVisibility","handleButtonPosition","buttonPosition","bottomLimit","bottom","scrollTop","handleAnalitycs","RelatedArticles","relatedArticleLinks","relatedArticleLink","onRelatedArticleLinkClick","ReadMore","defaultVisibleSentencesQty","visibleSentencesQty","visibleText","hiddenText","initReadMore","sentences","visibleSentencesCount","val","raw","addDOMElement","visiblePart","allText","visibleTextHeight","clientHeight","textHeight","parent","dataRef","domElement","maxHeight","showInvisibleText","hideInvisibleText","splitText","reformatText","buttonListener","btnClick","SearchResults","searchField","listingContainer","tabButtons","handleTabActivate","handleReturnSearchQuery","getWindowLocation","searchQueryObj","activeBtn","timer","hasAttribute","activeBtnTopOffset","scrollBy","initTabs","tabsInstances","onloadQueue","lang","defer","getElementsByTagName","insertScript","grecaptcha","Recaptcha","captchaId","containerElement","inputElement","sitekey","onError","successCallback","expiredCallback","render","reset","userCity","userType","user","isUserDataEmpty","collectuserData","userCityValue","userTypeValue","city","localeList","isForm","jQueryScript","head","parsleyJsScript","jQuerySerializeJsonScript","FormComponent","isSubmiting","isSubmitAttempted","formControlSelector","onSubmit","onFieldError","sendFormTracking","onSubmitAttempt","fieldInput","first","_parsleyForm","_trackCategory","_trackAction","_trackLabel","_trackEvent","_trackUserCity","_trackUserType","isFormTrackingSended","form","$form","enctype","DLOBject","nodeName","submitElement","formName","isAsync","getParsleyForm","applyServerValidation","hideBreederInputPlaceholder","handleValidationInput","validate","isMustBeTracked","setUpFormTracking","required","every","c","placeholderElement","currentTarget","nextElementSibling","lengthInput","childNodes","visibility","selectInstancesWithinContainer","customOptions","customSelectInstancesWithinContainer","fields","field","errors","getFieldServerErrors","addConstraint","serverMessage","hasFieldValue","validateIfEmpty","isCaptchaField","serverErrorsString","$element","locale","getCurrentLanguage","isParsleyLocaleExist","Parsley","setLocale","inputValidationClass","Factory","inputs","excluded","errorClass","successClass","classHandler","errorsContainer","errorsWrapper","errorTemplate","validationThreshold","getTrackCategory","_trackUserTypeValue","beforeSubmit","getUrl","getRequestParams","afterSubmit","handleSuccessSubmit","err","handleDestroy","insertAdjacentElement","getResultElementFromResponse","eventEmitter","onSuccess","resultElement","children","getUrlencodedFormData","getMultipartFormData","dataObject","serializeJSON","checkboxUncheckedValue","parseBooleans","useIntKeysAsArrayIndex","param","serializeArray","formData","FormData","v","append","getEmptyRadioListsData","kv","k","keyGetter","radioInputs","groupMap","r","reduce","rv","rb","getTrackEvent","getTrackUserCity","getTrackUserType","errorMessage","disabled","onAfterSubmit","onBeforeSubmit","_ui","errorsWrapperId","childNode","constraintsByName","addValidator","validateString","priority","messages","en","serverErrorValue","requirementType","validateMultiple","ShowRule","idAttributeName","condition","elementsValues","lastResult","configString","elements","elementsConditions","elementCondition","elementId","elementValue","elementsById","elementsCount","bootstrap","configPart","getElementId","getElementValue","isTextControl","onElementChange","manage","selectedOptions","checkFunction","multiple","updateShow","updateClass","class","TestComponent","smallRules","empty","ruleAttribute","idAttribute","allSmallRules","getAllSmallRules","getResultFromSmallRules","changeSelf","rule","elementUniqueKey","setEventListeners","mainRule","splitRulesWithOr","longRule","flag","ServerValidation","fieldErrorMessage","fieldWrapper","inputHappened","errorClassName","onFieldUpdate","MapGoogle","draggable","MapBaidu","MapKakao","ProductRatingLink","WriteReview","scriptUrl","jsSource","productId","codescript","$BV","ui","FiltersList","handleFiltersListOpen","handleFiltersListClose","tentantPrefix","documentElement","addClassWatcher","ReviewFeedback","reviewId","feedbackButtons","feedbackType","feedbackVote","getItem","disableButtonsForAlreadySubmittedFeedback","setItem","contentType","apiVersion","passkey","isOnStaging","vote","post","res","HasErrors","handleFeedbackSubmitSuccess","PSTracking","addBuyButtonsClickListeners","shopNowButtons","getBuyButtons","productSize","shopName","product","ArticleTabbedNavigation","listWrapper","elHeight","listHeight","headerHeight","main","isDirectionDown","heightDifference","lastScrollTop","listLink","listFigure","isScrolling","initNav","marginBottom","changeNavHeight","isBottom","updateNav","updateNavAfterScroll","currentScroll","headerNavSec","headerNavSecHeight","headerNavSecTransform","getComputedStyle","getPropertyValue","headerNavSecTranslateY","headerNavSecTransformValues","headerNavPrimary","floor","setNavTop","isDecreasing","marginTop","ArticleTags","viewAllTagsLink","tagLinks","onViewAllTagsLinkClick","tagLink","onTagLinkClick","ArticleReadingTime","addIcon","readingTimeIcon","backgroundImage","spriteRed","VideoPanel","video","playButton","handleVideoPlay","togglePlayButtonVisibility","paused","play","pause","isVideoControlsEnabled","CarouselEventTracker","carouselInstance","onIndexChanged","getPagesCount","info","pages","getTrackLabel","getCurrentPage","ceil","CtaEventTracker","trackCustom","elText","pageName","standardTracking","customTracking","definedCustomTracking","campusTourTracking","bannerTitle","component","textContent","SearchEventTracker","searchInput","NavigationEventTracker","headerItems","headerItem","firstElementChild","topNavSearchBar","mutationList","topNavClick","ContentTracker","elementText","wordCount","wordCountRounded","dataLayerLoadedEvent","articleLength","defaultOptions","rootMargin","observerInstance","IntersectionObserver","changes","change","isIntersecting","ContentAnimation","baseAnimationCSSClass","activateAnimationCSSClass","mobile","animationDisabled","animate","readMoreButton","readMore","initialReadMore","isElementIntoView","applyBaseAnimationStyles","intersectionHelper","enterViewportOnce","threshold","textContainer","paragraph","analyticsInteraction","titleElement","enTitle","analyticsTitle","windowBottomEdge","trackType","ecommerce","actionField","products","price","brand","variant","impressions","productList","ProductTrack","trackDetailsParsed","trackEventClick","trackEventImpression","handleGettingInViewport","isImpressionTracked","impressionTrackingDelay","ArticleHeroPanel","column1","paddingBottom","ProductListTrack","productItems","trackDetailsArray","pushGTM","AmpRedirectBuyWidget","getUrlParam","waitForBuyWidget","parameter","defaultvalue","urlparameter","getUrlVars","vars","m","buyWidget","LiveChat","liveChatHelpButtonEnabled","siteDomain","liveChatUrl","liveChatUrlFull","openLiveChat","liveChatRibbon","marketHomeUrl","advisorAvailability","advisor","isAdvisorInfoEmpty","advisorAvailabilityValue","availability","LiveChatPopup","isChatLoaded","showChat","closeButton","formContent","startChatButton","setTrackingProperties","sendGtmEvent","timerOn","TencentVideo","poster","BrowserRegion","initContentBlock","ymaps","ready","geoObject","metaDataProperty","provider","autoReverseGeocode","geoObjects","properties","GeocoderMetaData","AddressDetails","Country","AdministrativeArea","AdministrativeAreaName","CookieDate","setFullYear","getFullYear","toGMTString","ManualRegion","cityLinks","cityList","currentCityName","searchWrapper","mainNavModal","openModalLink","manualRegionCookieName","browserRegionCookieName","serverRegionCookieName","currentRegion","regionPickerLinks","regionPickerNames","regionPickerTooltipLink","onCityLinkClick","handleOpenModalLink","updatePickerLinksName","handleRegionPickerLinkClick","handleRegionPickerTooltipLinkKeyUp","handleRegionPickerTooltipLinkClick","initAutocomplete","getCurrentRegion","itemRegionSpan","getCityList","node","manualRegionCookie","getCookie","browserRegionCookie","serverRegionCookie","parts","pop","shift","cityName","onCitySelect","closeAndReload","reload","cookieName","cookievalue","RegionLinks","regionList","regionListArray","visibilityClass","initRegionLinks","getRegionListArray","updateRegionlinks","TimelineLink","anchor","point","handleTimelineLinkClick","CommerceButton","elseSpan","customBuyNow","sizeButtons","shopButtons","PSButtons","recipe","recipePackSize","checkedSize","vetProducts","retailProducts","cciWidgetSettingsData","commerceConnectorWidgetSettings","onRadioChange","onRadioChangeRecipe","initButtonsOnLoad","initRecipesOnLoad","initCommerceTracking","initCommerceButtonPlaceholder","checkGoogleAnalyticsLoaded","waitForElm","showButtonAndElse","isShown","targetId","placeholderButton","checkedEan","ean","globalEANCode","eanCode","buyButtonSelector","checkedItem","currentSizeTarget","now","ga","clientId","trackers","getAll","tracker","addCommerceConnectorScriptWidget","maxMillisecondsToWait","scriptContainer","scriptSrc","displayLanguage","widgetId","subID","trackingPrefix","recipeURL","current","CCEventTrackingCallback","eventContext","shop_name","HeroPanel","arrowDown","parentElem","cursor","onArrowClick","removeNbspFromTitleOnSmallScreens","checkIfDiv","nextElem","ModalNav","addClassIfAccessedFromiOSDevice","BigInt","platform","VetFocusArticles","snippetEls","texts","snippetEl","openSnippet","closeAllSnippets","textNode","createTextNode","snippetContentEl","publishDate","masterName","format","issue","VetFocusIssueCard","vetFocusIssueCardCTA","VetFocusArticleIssueDetail","authorCards","author","VetFocusSocialLinks","socialLinks","EnlargeImage","enlargeButtons","enlargeModals","enlargeCloseButtons","shadowBoxes","openModal","closeModal","MyAccountRegisterStep","continueButton","inputChecked","checkButtonStatus","MyAccount","dropDown","selectOption","settingssection","selectInnerChoices","listItem","editButton","vetFocusSettings","cancelButton","setModalBehavior","clickOnEditButton","clickOnCancelButton","PromotItem","p","limit","NavigationProductBlock","pItems","NavigationContactDropdown","phone","footer","titleLinks","NavigationItemsList","childElementCount","alignItems","t","hasOwnProperty","0","charset","nc","onerror","request","all","d","defineProperty","enumerable","__esModule","default","oe","NewNavigationjsonFunction","needQuotes","concat","HTMLIFrameElement","contentDocument","identifier","base","u","css","media","sourceMap","references","updater","_","nonce","insert","Boolean","styleSheet","btoa","h","g","singleton","atob","w","b","C","L","E","M","I","A","j","T","D","Z","N","B","F","q","O","P","Y","R","H","W","G","V","U","X","injectType","locals","cloneNode","dropdown","number","root","boundingClientRect","clientWidth","breakpoints","lg","listItemDropdowns","apply","unobserve","previousElementSibling","scrollingElement","keyIdentifier","NodeList","submenus","shade","showShade","isShow","HeaderBar","searchbarButtons","displayMenu","menuText","CopyLink","shareUrl","clipboard","writeText","alert","HomepageCarousel","startInterval","stopInterval","carouselSlideInterval","changeSlide","currentActiveSlideTitle","slideTitle","nextButtons","firstSlideButtons","handleClickEvent","AccordionBreed","getResolution","mobileAccordion","desktopAccordion","MarketPicker","redirectPage","countrySelect","languageSelect","_that","Path","updateRedirectUrl","RoutineStep","numericArticlesContent","videoWrapper","margin","lazySizesConfig","minSize","expand","delayedItems","lazySizes","React","baseCore","BaseCore","componentClasses","PfRecommendations","Filter","Form","HiddenIf","ProductRating","PromoItem","files","require","RC","componentPath","props","Key","newKey","Component","ReactDOM","react","Handlebars","depth0","helpers","partials","escapeExpression","lambda","helper","distance","helperMissing","nullContext","stack1","each","openingHours","program","noop","alias1","alias2","alias4","websiteUrl","visitWebsite","tags","address","getDirections","hadGlobal","oldGlobal","arguments","createElementNS","fake","overflow","currentStyle","CSS","supports","modElem","slice","_version","_config","classPrefix","enableClasses","enableJSClass","usePrefixes","_q","addTest","fn","addAsyncTest","cache","createElem","canHaveChildren","tagUrn","frag","createFrag","createDocumentFragment","shivMethods","Function","shivCSS","hasCSS","lastChild","html5","version","supportsUnknownElements","shivDocument","addElements","_cssomPrefixes","unshift","_domPrefixes","testAllProps","CSSRule","atRule","prefixed","msMatchMedia","_prefixes","testStyles","DocumentTouch","CustomEvent","aliases","baseVal","addMessages","defaultMessage","email","integer","digits","alphanum","notblank","pattern","minlength","maxlength","mincheck","maxcheck","check","equalto","alias3","openingTimes","dateiso","minwords","maxwords","words","gt","gte","lt","lte","notequalto","datebeforenow","dateafternow","euvatin"],"mappings":"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","file":"app.6aa14b8bb8a4568af7d4.js","sourcesContent":["var map = {\n\t\"./404-image-eukanuba.svg\": 1098,\n\t\"./circle-with-check-fill.svg\": 1099,\n\t\"./social-sharing/email--sm.svg\": 1100,\n\t\"./social-sharing/facebook--sm.svg\": 1101,\n\t\"./social-sharing/instagram--sm.svg\": 1102,\n\t\"./social-sharing/kakao-story--sm.svg\": 1103,\n\t\"./social-sharing/kakao-talk--sm.svg\": 1104,\n\t\"./social-sharing/line--sm.svg\": 1105,\n\t\"./social-sharing/linkedIn--sm.svg\": 1106,\n\t\"./social-sharing/messenger--sm.svg\": 1107,\n\t\"./social-sharing/naver-band--sm.svg\": 1108,\n\t\"./social-sharing/odno-klassniki--sm.svg\": 1109,\n\t\"./social-sharing/pintrest--sm.svg\": 1110,\n\t\"./social-sharing/telegram--sm.svg\": 1111,\n\t\"./social-sharing/tiktok--sm.svg\": 1112,\n\t\"./social-sharing/twitter--sm.svg\": 1113,\n\t\"./social-sharing/viber--sm.svg\": 1114,\n\t\"./social-sharing/vkontakte--sm.svg\": 1115,\n\t\"./social-sharing/wechat--sm.svg\": 1116,\n\t\"./social-sharing/whatsapp--sm.svg\": 1117\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1097;","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-404-image-eukanuba\",\n \"use\": \"icon-404-image-eukanuba-usage\",\n \"viewBox\": \"0 0 260 265\",\n \"content\": \"\\r\\n\\r\\n\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t\\r\\n\\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\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\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\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\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\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\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\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\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\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\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\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\\r\\n\\r\\n\\t\\t\\r\\n\\r\\n\\t\\t\\r\\n\\t\\r\\n\\t\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-circle-with-check-fill\",\n \"use\": \"icon-circle-with-check-fill-usage\",\n \"viewBox\": \"0 0 48 48\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-email--sm\",\n \"use\": \"icon-email--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Email\\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});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-facebook--sm\",\n \"use\": \"icon-facebook--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Facebook\\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-instagram--sm\",\n \"use\": \"icon-instagram--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Instagram\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-kakao-story--sm\",\n \"use\": \"icon-kakao-story--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n\\r\\n\\r\\n\\r\\n\\t\\r\\n\\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-kakao-talk--sm\",\n \"use\": \"icon-kakao-talk--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Kakao Talk\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-line--sm\",\n \"use\": \"icon-line--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Line\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-linkedIn--sm\",\n \"use\": \"icon-linkedIn--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/LinkedIn\\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-messenger--sm\",\n \"use\": \"icon-messenger--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Messenger\\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-naver-band--sm\",\n \"use\": \"icon-naver-band--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Naver Band\\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-odno-klassniki--sm\",\n \"use\": \"icon-odno-klassniki--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/OdnoKlassniki\\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-pintrest--sm\",\n \"use\": \"icon-pintrest--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Pintrest\\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-telegram--sm\",\n \"use\": \"icon-telegram--sm-usage\",\n \"viewBox\": \"0 0 260 260\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiktok--sm\",\n \"use\": \"icon-tiktok--sm-usage\",\n \"viewBox\": \"0 0 64 64\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-twitter--sm\",\n \"use\": \"icon-twitter--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Twitter\\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-viber--sm\",\n \"use\": \"icon-viber--sm-usage\",\n \"viewBox\": \"0 0 50 50\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-vkontakte--sm\",\n \"use\": \"icon-vkontakte--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Vkontakte\\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-wechat--sm\",\n \"use\": \"icon-wechat--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/WeChat\\r\\n \\r\\n \\r\\n \\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-whatsapp--sm\",\n \"use\": \"icon-whatsapp--sm-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\r\\n Icons/Social Share/Whatsapp\\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});\nvar result = sprite.add(symbol);\nexport default symbol","import styled from \"styled-components\";\r\n\r\nconst Wrapper = styled.a`\r\n text-decoration: none;\r\n margin-top: 10px;\r\n display: inline-block;\r\n .article-card__inner {\r\n border-width: 1px 1px 1px 1px;\r\n border-style: solid;\r\n border-color: #d7d7d7;\r\n border-radius: 3px;\r\n display: flex;\r\n flex-direction: ${({ isVertical }) => (isVertical ? \"column\" : \"row\")};\r\n max-width: 860px;\r\n\r\n .article-card__image-wrapper {\r\n max-width: ${({ isVertical }) => (isVertical ? \"100%\" : \"410px\")};\r\n max-height: 300px\r\n\r\n img {\r\n max-width: 100%;\r\n height: 100%;\r\n max-height: 250px;\r\n min-width: 400px;\r\n object-fit: cover;\r\n \r\n @media(max-width: 920px){\r\n min-width: unset;\r\n }\r\n }\r\n }\r\n\r\n .article-card__content-wrapper {\r\n ${({ isVertical }) => (isVertical ? \"100%\" : \"446px\")};\r\n padding: 31px 36px;\r\n\r\n .article-card__content-wrapper__editorial-format {\r\n font-size: 14px;\r\n color: #666;\r\n }\r\n\r\n .article-card__content-wrapper__editorial-heading {\r\n margin-top: 4px;\r\n font-size: 26px;\r\n color: #e2001a;\r\n }\r\n\r\n .article-card__content-wrapper__editorial-summary {\r\n margin-top: 12px;\r\n font-size: 16px;\r\n color: #666;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport default Wrapper;\r\n","import React, { useEffect, useState, } from \"react\";\r\nimport is from \"is_js\";\r\nimport { useWindowSize, } from \"rooks\";\r\nimport Wrapper from \"./styled\";\r\nimport BreakPoints from \"../../utils/break-points\";\r\n\r\nconst ArticleCard = ({\r\n href,\r\n editorialFormat,\r\n heading,\r\n summary,\r\n imgSrc,\r\n imgSrcSet,\r\n imgAlt,\r\n},) => {\r\n const { innerWidth: windowWidth, } = useWindowSize();\r\n\r\n const showOnly = (str, n,) => {\r\n if (!is.string(str,) || str.length <= n) return str;\r\n return `${str.substring(0, n,)}...`;\r\n };\r\n\r\n const [\r\n isVertical,\r\n setIsVertical,\r\n ] = useState(false,);\r\n\r\n useEffect(() => {\r\n setIsVertical(windowWidth < Number(BreakPoints.S,),);\r\n }, [\r\n windowWidth,\r\n ],);\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
{editorialFormat}
\r\n
{showOnly(heading, 65,)}
\r\n
{showOnly(summary, 135,)}
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ArticleCard;\r\n","import styled from \"styled-components\";\r\n\r\nconst DropdownWrapper = styled.div`\r\n position: fixed;\r\n top: 45px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 80vw;\r\n max-width: 330px;\r\n background-color: #ffffff;\r\n border: 1px solid #d7d7d7;\r\n border-radius: 3px;\r\n\r\n .register-container {\r\n width: 100%;\r\n position: relative;\r\n text-align: center;\r\n padding: 1.5rem;\r\n\r\n & > div {\r\n margin-top: 2rem;\r\n }\r\n\r\n &_log-in-btn {\r\n max-width: 100%;\r\n }\r\n }\r\n\r\n .separator {\r\n width: 100%;\r\n height: 1px;\r\n background-color: #d7d7d7;\r\n }\r\n\r\n .external-links {\r\n width: 100%;\r\n font-weight: 500;\r\n padding: 1.5rem;\r\n\r\n & > a {\r\n text-decoration: none;\r\n display: block;\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n cursor: pointer;\r\n margin-bottom: 0;\r\n }\r\n }\r\n`;\r\n\r\nexport default DropdownWrapper;\r\n","import React, { useCallback, useState, useEffect } from \"react\";\r\n\r\nimport DropdownWrapper from \"./styled\";\r\n\r\nconst MyAccountDropdown = ({\r\n loginurl,\r\n loginlabel,\r\n signupurl,\r\n signuplabel,\r\n submenuitems,\r\n loginEnabled,\r\n}) => {\r\n const [showAccountDropdown, setShowAccountDropdown] = useState(false);\r\n\r\n const handleClickIcon = useCallback(() => {\r\n setShowAccountDropdown(true);\r\n }, [setShowAccountDropdown]);\r\n\r\n useEffect(() => {\r\n function handleClick() {\r\n setShowAccountDropdown(false);\r\n }\r\n\r\n document.body.addEventListener(\"click\", handleClick);\r\n return () => document.body.removeEventListener(\"click\", handleClick);\r\n }, [setShowAccountDropdown]);\r\n\r\n const parsedSubMenuItems = submenuitems ? JSON.parse(submenuitems) : [];\r\n\r\n return ( \r\n
e.stopPropagation()}>\r\n \r\n My Account\r\n \r\n {showAccountDropdown && (\r\n \r\n {(loginEnabled === \"true\" || signupurl) && (\r\n
\r\n {loginEnabled === \"true\" && (\r\n <>\r\n

Already registered ?

\r\n \r\n \r\n {loginlabel}\r\n \r\n \r\n \r\n )}\r\n {signupurl && (\r\n
\r\n Don't have an account yet ?\r\n \r\n {signuplabel}\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n
\r\n {parsedSubMenuItems.map((links) => (\r\n \r\n {links?.Item1 || \"\"}\r\n \r\n \r\n ))}\r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default MyAccountDropdown;\r\n","class DLScriptsObserver {\r\n constructor() {\r\n this._isLoaded = null;\r\n this.subscribers = [];\r\n this.onDLWebpackDone = this.onDLWebpackDone.bind(this);\r\n }\r\n\r\n onDLWebpackDone() {\r\n this._isLoaded = true;\r\n this.subscribers.forEach(cb => cb());\r\n }\r\n\r\n isLoaded() {\r\n if (this._isLoaded === null) {\r\n if (window.webpackComplete) {\r\n this._isLoaded = true;\r\n } else {\r\n this._isLoaded = false;\r\n document.addEventListener('rc_webpack_done', this.onDLWebpackDone.bind(this));\r\n }\r\n }\r\n\r\n return this._isLoaded;\r\n }\r\n\r\n onLoad(cb) {\r\n if (this.isLoaded()) {\r\n cb();\r\n } else {\r\n this.subscribers.push(cb);\r\n }\r\n }\r\n}\r\n\r\nconst instance = new DLScriptsObserver();\r\n\r\nexport default instance;\r\n","import \"./styles.scss\";\r\nimport BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport dLScriptsObserver from \"$Foundation/src/js/dLScriptsObserver\";\r\n\r\nexport default class ContentCards extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return \"content-cards\";\r\n }\r\n\r\n setVariables() {\r\n this.cardButtons = this.el.querySelectorAll(\".content-card-btn a\");\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n addListeners() {\r\n this.cardButtons.forEach((el) => {\r\n this.addListener(el, \"click\", (e) => this.onBtnClick(e, el));\r\n });\r\n }\r\n\r\n onBtnClick(e, el) {\r\n let dataLayer = (window.dataLayer = window.dataLayer || []);\r\n dataLayer.push({\r\n event: \"contentCardClick\",\r\n contentCardClick: {\r\n itemName: el.innerText,\r\n },\r\n });\r\n }\r\n}\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport \"./styles.scss\";\r\n\r\nexport default class ProductBlock extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return \"product-block\";\r\n }\r\n\r\n init() {\r\n const firstDot = this.el.querySelector(\r\n \"#product-block-controls-first-dot\"\r\n );\r\n const lastDot = this.el.querySelector(\r\n \"#product-block-controls-last-dot\"\r\n );\r\n\r\n const container = this.el.querySelector(\".product-block-container\");\r\n\r\n const productBlocksWrapper = this.el.querySelector(\r\n \".product-block-container > div\"\r\n );\r\n\r\n const productBlocks = this.el.querySelectorAll(\r\n \".product-block-container .product-block\"\r\n );\r\n\r\n productBlocks.forEach((pb) => {\r\n pb.addEventListener(\"click\", (e) => {\r\n const dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n event: \"productBlockClick\",\r\n productBlockClick: {\r\n itemName: pb.lastElementChild.innerText,\r\n },\r\n });\r\n });\r\n });\r\n\r\n firstDot.addEventListener(\"click\", () => {\r\n container.scroll({\r\n left: 0,\r\n behavior: \"auto\",\r\n });\r\n });\r\n\r\n lastDot.addEventListener(\"click\", () => {\r\n container.scroll({\r\n left: container.offsetWidth,\r\n behavior: \"auto\",\r\n });\r\n });\r\n\r\n container.addEventListener(\"scroll\", () => {\r\n const percent =\r\n (container.scrollLeft /\r\n (productBlocksWrapper.offsetWidth -\r\n container.offsetWidth)) *\r\n 100;\r\n\r\n if (percent <= 50) {\r\n firstDot.classList.add(\"active\");\r\n lastDot.classList.remove(\"active\");\r\n } else {\r\n firstDot.classList.remove(\"active\");\r\n lastDot.classList.add(\"active\");\r\n }\r\n });\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport './styles.scss';\r\n\r\nexport default class ParagraphsInTwoColumns extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'paragraphs-in-two-columns';\r\n }\r\n\r\n setVariables() { \r\n this.buttonMore = this.el.querySelector('.paragraphs-in-two-columns-button .show-more');\r\n this.buttonLess = this.el.querySelector('.paragraphs-in-two-columns-button .show-less');\r\n this.items = this.el.querySelectorAll('.paragraphs-in-two-columns-container');\r\n this.isOpen = false;\r\n }\r\n\r\n init() {\r\n this.setVariables()\r\n this.addListeners();\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.buttonMore, 'click', () => this.handleButtonClick());\r\n this.addListener(this.buttonLess, 'click', () => this.handleButtonClick());\r\n }\r\n\r\n handleButtonClick() {\r\n const forEach = Array.prototype.forEach;\r\n this.buttonMore.classList.toggle('hide');\r\n this.buttonLess.classList.toggle('hide');\r\n \r\n forEach.call(this.items, (el, i ) => {\r\n el.classList.toggle('blured');\r\n\r\n if (i) {\r\n el.classList.toggle('hide');\r\n }\r\n });\r\n\r\n if (this.isOpen) {\r\n this.items[0].scrollIntoView({block: \"center\", behavior: \"smooth\"})\r\n }\r\n\r\n this.isOpen = !this.isOpen;\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class TabbedImage extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'tabbed-image';\r\n }\r\n\r\n setVariables() {\r\n const contentId = this.el.dataset.id;\r\n const container = document.querySelector(\"[data-id='\"+contentId+\"']\");\r\n this.tabs = container.querySelector(\".wrapper\");\r\n this.tabButton = container.querySelectorAll(\".rc-image-tab-content\");\r\n this.contents = container.querySelectorAll(\".rc-content-container\");\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.tabs, 'click', e => this.handlePlayButtonClick(e));\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n handlePlayButtonClick(e) {\r\n const id = e.target.dataset.id;\r\n const title = e.target.getAttribute('id');\r\n if (id) {\r\n this.tabButton.forEach((btn) => {\r\n btn.classList.remove(\"active\");\r\n });\r\n e.target.classList.add(\"active\");\r\n this.contents.forEach((content) => {\r\n content.classList.remove(\"active\");\r\n });\r\n const element = document.getElementById(\"description\" + id);\r\n element.classList.add(\"active\");\r\n\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n 'event': 'imageTabClick',\r\n 'component': {\r\n 'title': title,\r\n }\r\n });\r\n }\r\n };\r\n}\r\n","import \"./styles.scss\";\r\nimport BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\n\r\nexport default class ProductDetails extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.customAnchor = this.customAnchor.bind(this);\r\n this.waitForEl = this.waitForEl.bind(this);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return \"product-image-gallery\";\r\n }\r\n\r\n addListeners() {\r\n window.addEventListener(\"load\", () => {\r\n const images = document.querySelectorAll(\".tns-item img\");\r\n for (const img of images) {\r\n const imageUrl = img.getAttribute(\"src\");\r\n if (imageUrl.indexOf(\"salsify.com\") < 0) return;\r\n img.setAttribute(\"src\", imageUrl.replace(/\\/w_\\d+/, \"\"));\r\n }\r\n });\r\n }\r\n\r\n vetDPT(){\r\n const DPT = document.querySelectorAll(\".content-block-variation-1\");\r\n \r\n if(DPT){\r\n const vetRegexp = DPT[0].getAttribute(\"vet-products-partial-path\");\r\n const currentUrl = window.location.href;\r\n if(currentUrl.match(vetRegexp)){\r\n DPT.forEach(el => el.style.display = \"none\")\r\n }\r\n }\r\n }\r\n\r\n waitForEl(selector) {\r\n return new Promise((resolve) => {\r\n if (document.querySelector(selector)) {\r\n return resolve(document.querySelector(selector));\r\n }\r\n\r\n const observer = new MutationObserver((mutations) => {\r\n if (document.querySelector(selector)) {\r\n resolve(document.querySelector(selector));\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n observer.observe(document.body, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n });\r\n }\r\n\r\n async customAnchor() {\r\n const currentUrl = window.location.href;\r\n const anchorRegexp = /ConnectedPackRationsTable/;\r\n\r\n if (currentUrl.match(anchorRegexp)) {\r\n const scrollingEnd = await this.waitForEl(\"#scrollToConnectedDPT\");\r\n if (scrollingEnd) {\r\n const feedingButton = await this.waitForEl(\r\n \"#scrollToConnectedDPT li:last-child button\"\r\n );\r\n window.scrollTo({ top: 300, behavior: \"smooth\" });\r\n const yOffset = window.innerWidth > 960 ? -175 : -115;\r\n const yAxis =\r\n scrollingEnd.getBoundingClientRect().top +\r\n window.pageYOffset +\r\n yOffset;\r\n\r\n window.scrollTo({ top: yAxis, behavior: \"smooth\" });\r\n feedingButton.dispatchEvent(new Event(\"click\")); \r\n }\r\n }\r\n }\r\n\r\n init() {\r\n this.vetDPT();\r\n this.customAnchor();\r\n this.addListeners();\r\n }\r\n}\r\n","import './styles.scss';\r\n\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\nexport default class SocialSharing extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'social-sharing';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n addListeners() { \r\n this.addListener(this.copyToClipboardButton, 'click', e => this.handleCopyButtonClick(e)); \r\n }\r\n\r\n setVariables() {\r\n this.copyToClipboardButton = this.el.querySelector('.custom-copy-link');\r\n\r\n }\r\n\r\n handleCopyButtonClick(e) {\r\n e.preventDefault();\r\n\r\n let dummy = window.document.createElement('input');\r\n let text = window.location.href;\r\n\r\n window.document.body.appendChild(dummy);\r\n dummy.value = text;\r\n dummy.select();\r\n window.document.execCommand('copy');\r\n window.document.body.removeChild(dummy);\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport './styles.scss';\r\n\r\nexport default class StockistsLandingPage extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'stockists-landing-page';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initializeAutocomplete();\r\n if (typeof google !== 'object' || typeof google.maps !== 'object') {\r\n this.loadGoogleMap();\r\n }\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.WTBLandingPage = this.el.querySelectorAll('[data-ref=\"wtb-landing-page\"]');\r\n this.WTBMapRetailers = this.el.getAttribute('data-wtb-map-retailers');\r\n this.WTBMapVets = this.el.getAttribute('data-wtb-map-vets');\r\n this.WTBOnlineRetailers = this.el.getAttribute('data-wtb-map-online-retailers');\r\n this.landingPageLocationBtn = this.el.querySelector('[data-ref=\"location-btn\"]');\r\n this.landingPageOnlineRetailersBtn = this.el.querySelector(\r\n '[data-ref=\"online-retailers-btn\"]'\r\n );\r\n this.currentCulture = this.el.querySelector('[data-control=\"filter-places-search\"').getAttribute('data-search-current-culture');\r\n this.stockistButton = this.el.querySelector('[data-ref=\"stockist-submit\"]');\r\n this.stockistType = this.stockistButton && this.stockistButton.getAttribute('data-stockist-type');\r\n this.stockistId = this.stockistButton && this.stockistButton.getAttribute('data-contact-type');\r\n this.searchFieldNode = this.el.querySelector('[data-ref=\"filter-input\"]');\r\n this.searchButtonNode = this.el.querySelector('[data-ref=\"filter-search-btn\"]');\r\n this.hasDownBeenPressed = false;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.landingPageOnlineRetailersBtn, 'click', (e) =>\r\n this.handleOnlineRetailersRedirect(e)\r\n );\r\n this.addListener(this.landingPageLocationBtn, 'click', (e) =>\r\n this.handleLocationPermissions(e)\r\n );\r\n this.addListener(this.searchButtonNode, 'click', e => this.handlePlacesSearch(e));\r\n this.addListener(this.searchFieldNode, 'keydown', e => this.handleKeyDown(e));\r\n this.addListener(this.searchFieldNode, 'focus', () => this.handleSearchFieldFocus());\r\n }\r\n\r\n initializeAutocomplete() {\r\n const cultures = JSON.parse(this.currentCulture);\r\n const options = {\r\n componentRestrictions: { country: cultures }\r\n };\r\n\r\n const interval = setInterval(() => {\r\n if (typeof google === 'object' && typeof google.maps === 'object') {\r\n\r\n this.autocomplete = new window.google.maps.places.Autocomplete(this.searchFieldNode, {\r\n options\r\n });\r\n\r\n this.autocomplete.setFields(['address_components', 'geometry', 'name']);\r\n window.google.maps.event.addListener(\r\n this.autocomplete,\r\n 'place_changed',\r\n this.handlePlaceChanged.bind(this)\r\n );\r\n clearInterval(interval);\r\n }\r\n }, 250);\r\n\r\n }\r\n\r\n handlePlacesSearch(e) {\r\n e.preventDefault();\r\n if (!this.hasDownBeenPressed) {\r\n const event = document.createEvent('Event');\r\n event.keyCode = 13;\r\n event.which = 13;\r\n event.key = 13;\r\n event.initEvent('keydown', true, true, false, 13);\r\n this.searchFieldNode.dispatchEvent(event);\r\n }\r\n }\r\n\r\n handlePlaceChanged() {\r\n const place = this.autocomplete.getPlace();\r\n\r\n if (typeof place.address_components !== 'undefined') {\r\n this.hasDownBeenPressed = false;\r\n }\r\n\r\n const placeName = place.name;\r\n const location = place.geometry ? place.geometry.location : null;\r\n\r\n const latitudeParam = 'latitude=' + location.lat();\r\n const longitudeParam = 'longitude=' + location.lng();\r\n const searchQuery = 'searchQuery=' + placeName;\r\n const urlParams = `${searchQuery}&${latitudeParam}&${longitudeParam}`;\r\n this.handleWTBRedirect(urlParams);\r\n }\r\n\r\n loadGoogleMap() {\r\n const gmapApiKey =\r\n window.initialWebsiteConfig && window.initialWebsiteConfig.googleMapApiKey\r\n ? window.initialWebsiteConfig.googleMapApiKey\r\n : '';\r\n\r\n const mapscript = document.createElement('script');\r\n mapscript.type = 'text/javascript';\r\n mapscript.async = true;\r\n mapscript.src = `//maps.googleapis.com/maps/api/js?key=${gmapApiKey}&callback=gmapInitialize&libraries=places`;\r\n document.body.appendChild(mapscript);\r\n }\r\n\r\n handleSearchFieldFocus() {\r\n this.hasDownBeenPressed = false;\r\n }\r\n\r\n handleKeyDown(e) {\r\n if (e.keyCode === 40) {\r\n this.hasDownBeenPressed = true;\r\n } else if (e.keyCode ===13) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n handleWTBRedirect(urlParams) {\r\n const stockistId = 'contacttypes=' + this.stockistId;\r\n const urlParamsPresent = urlParams ? `&${urlParams}` : '';\r\n const sortResults = 'sortresultsby=1';\r\n if (this.stockistType === 'retailer') {\r\n window.location.assign(`${this.WTBMapRetailers}?${stockistId}&${sortResults}${urlParamsPresent}`);\r\n } else {\r\n window.location.assign(`${this.WTBMapVets}?${stockistId}&${sortResults}${urlParamsPresent}`);\r\n }\r\n }\r\n\r\n handleOnlineRetailersRedirect(e) {\r\n const url = `${this.WTBOnlineRetailers}`;\r\n e.preventDefault();\r\n window.location.assign(url);\r\n }\r\n\r\n handleLocationPermissions(e) {\r\n e.preventDefault();\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n const latitudeParam = 'currentLatitude=' + position.coords.latitude;\r\n const longitudeParam = 'currentLongitude=' + position.coords.longitude;\r\n const urlParams = `${latitudeParam}&${longitudeParam}&location=true`;\r\n this.handleWTBRedirect(urlParams)\r\n },\r\n (error) => {\r\n console.log('error', error),\r\n this.handleWTBRedirect();\r\n }\r\n );\r\n } else {\r\n console.log('Geolocation is not supported by this browser');\r\n }\r\n }\r\n}\r\n","import Modernizr from \"modernizr\";\r\nimport EventEmitter from \"$Foundation/src/js/EventEmitter\";\r\n\r\nexport const DEVICE_TYPE_DESKTOP = \"desktop\";\r\nexport const DEVICE_TYPE_TABLET = \"tablet\";\r\nexport const DEVICE_TYPE_MOBILE = \"mobile\";\r\n\r\nexport const EVENT_DEVICE_TYPE_CHANGED = \"device-type-changed\";\r\nexport const EVENT_RESIZE_FINISHED = \"resize:finished\";\r\n\r\nclass ViewportInfo {\r\n constructor() {\r\n this.resized = false;\r\n this.timeout = 150;\r\n this.timeoutId = null;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.setGlobals();\r\n this.setVariables();\r\n window.addEventListener(\"resize\", this.handleResize.bind(this));\r\n window.addEventListener(\"load\", this.handleOnload.bind(this));\r\n }\r\n\r\n setGlobals() {\r\n this.isTouch = Modernizr.touchevents;\r\n this.viewport = {\r\n width: window.outerWidth,\r\n height: window.outerHeight,\r\n orientation:\r\n typeof window.orientation === \"undefined\" ||\r\n Math.abs(window.orientation) === 90\r\n ? \"landscape\"\r\n : \"portrait\",\r\n };\r\n\r\n this.isDesktop = Modernizr.mq(\"only screen and (min-width:769px)\");\r\n\r\n if (this.isDesktop) {\r\n this.isTablet = true;\r\n } else {\r\n this.isTablet = Modernizr.mq(\"only screen and (min-width:768px)\");\r\n }\r\n\r\n if (this.isDesktop) {\r\n this.deviceTypeByViewport = DEVICE_TYPE_DESKTOP;\r\n } else if (this.isTablet) {\r\n this.deviceTypeByViewport = DEVICE_TYPE_TABLET;\r\n } else {\r\n this.deviceTypeByViewport = DEVICE_TYPE_MOBILE;\r\n }\r\n }\r\n\r\n setVariables() {\r\n this.connectedPackSustainability = document.querySelector(\r\n '[name=\"ConnectedPackSustainability\"]'\r\n );\r\n this.connectedPackRecyclability = document.querySelector(\r\n '[name=\"ConnectedPackRecyclability\"]'\r\n );\r\n }\r\n\r\n handleResize() {\r\n if (this.timeoutId !== null) {\r\n clearTimeout(this.timeoutId);\r\n }\r\n\r\n this.resized = true;\r\n this.timeoutId = setTimeout(this.onResized.bind(this), this.timeout);\r\n }\r\n\r\n handleOnload() {\r\n const hash = location.hash.substr(1);\r\n setTimeout(() => {\r\n if (hash === \"ConnectedPackSustainability\") {\r\n window.scroll(0, this.connectedPackSustainability.offsetTop);\r\n } else if (hash === \"ConnectedPackRecyclability\") {\r\n window.scroll(0, this.connectedPackRecyclability.offsetTop);\r\n }\r\n }, this.timeout);\r\n }\r\n\r\n onResized() {\r\n const oldDeviceType = this.deviceTypeByViewport;\r\n this.setGlobals();\r\n EventEmitter.emit(EVENT_RESIZE_FINISHED);\r\n if (oldDeviceType !== this.deviceTypeByViewport) {\r\n EventEmitter.emit(EVENT_DEVICE_TYPE_CHANGED, {\r\n oldDeviceType,\r\n devicetype: this.deviceTypeByViewport,\r\n });\r\n }\r\n }\r\n}\r\n\r\nconst instance = new ViewportInfo();\r\n\r\nexport default instance;\r\n","const PF_LOCAL_STORAGE = 'pfls';\r\n\r\nconst getStateFromLocalStorage = () => {\r\n const localStorageValue = localStorage.getItem(PF_LOCAL_STORAGE);\r\n return localStorageValue ? JSON.parse(localStorageValue) : null;\r\n};\r\n\r\nconst setStateToLocalStorage = (data) => {\r\n localStorage.setItem(PF_LOCAL_STORAGE, JSON.stringify(data));\r\n};\r\n\r\nconst removeLocalStorage = () => {\r\n localStorage.removeItem(PF_LOCAL_STORAGE);\r\n}\r\n\r\n// this function is copied from Utils but it's updated so it's possible to sent empty params\r\nconst convertToQuery = (data, endPointUrl) => {\r\n const isUrlWithParameters = endPointUrl && endPointUrl.indexOf('?') > -1;\r\n const query = Object.keys(data)\r\n .filter(key => data[key] !== null)\r\n .map(key => key + '=' + data[key])\r\n .join('&');\r\n const queryString = isUrlWithParameters ? '&' + query : '?' + query;\r\n return query.length > 0 ? queryString : '';\r\n};\r\n\r\nexport default {\r\n getStateFromLocalStorage,\r\n setStateToLocalStorage,\r\n removeLocalStorage,\r\n convertToQuery\r\n};","export const events = Object.freeze({\r\n STEP_SUBMITTED: 'step:submitted',\r\n STEP_LOADED: 'step:loaded',\r\n CONTENT_WILL_REMOVE: 'content:willRemove',\r\n CONTENT_UPDATED: 'content:updated',\r\n CHECKBOX_CLICKED: 'checkbox:clicked',\r\n INPUTS_CHANGED: 'inputs:changed'\r\n});\r\n","import './scss/recommendations';\r\nimport './scss/profile';\r\nimport './scss/our-products';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport ViewportInfo, { EVENT_RESIZE_FINISHED, EVENT_DEVICE_TYPE_CHANGED } from '$Foundation/src/js/ViewportInfo';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\nimport PFUtils from '../product-finder/js/utils';\r\nimport { events } from '../product-finder/js/enums';\r\n\r\nconst RC_FADE_CLASS = 'rc-fade--x';\r\nconst SUMMARY_HIDDEN_CLASS = 'pf-recommend__summary-hidden';\r\nconst SUMMARY_TITLE_OPEN_CLASS = 'pf-recommend__summary-title--open';\r\nconst SUMMARY_BORDER_CLOSE_CLASS = 'pf-recommend__summary-border--close';\r\n\r\nexport default class Recommend extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.setVariables(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'pf-recommend';\r\n }\r\n\r\n setVariables() {\r\n this.scroll = {\r\n fadeInContainer: this.el.querySelector('[data-ref=\"fade-in\"]'),\r\n items: [...this.el.querySelectorAll('[data-ref=\"scroll-item\"]')],\r\n container: this.el.querySelector('[data-ref=\"scroll-items-container\"]')\r\n };\r\n\r\n this.summary = {\r\n title: this.el.querySelector('[data-ref=\"summary-title\"]'),\r\n hiddenItems: [...this.el.querySelectorAll('[data-ref=\"summary-hidden\"]')],\r\n border: this.el.querySelector('[data-ref=\"summary-border\"]'),\r\n isOpen: false\r\n };\r\n\r\n this.startAgainBtn = this.el.querySelector('[data-ref=\"start-again-btn\"]');\r\n \r\n }\r\n\r\n addListeners() {\r\n EventEmitter.subscribe(EVENT_RESIZE_FINISHED, () => {\r\n this.initFadeScroll();\r\n });\r\n EventEmitter.subscribe(EVENT_DEVICE_TYPE_CHANGED, () => {\r\n this.initSummaryAccordion();\r\n });\r\n this.addListener(this.summary.title, 'click', () => this.handleSummaryTitleClick());\r\n this.addListener(this.startAgainBtn, 'click', e => this.handleStartAgainBtnClick(e));\r\n }\r\n\r\n init() {\r\n this.addListeners();\r\n setTimeout(() => { // give time for lazyload to finish its job\r\n this.initFadeScroll();\r\n }, 300);\r\n this.initSummaryAccordion();\r\n\r\n }\r\n\r\n initFadeScroll() {\r\n if (!this.scroll.container || !this.scroll.items) return;\r\n\r\n let itemsWidth = 0;\r\n const itemsContainerWidth = this.scroll.container.offsetWidth;\r\n\r\n this.scroll.items.forEach((item) => {\r\n itemsWidth += item.offsetWidth;\r\n });\r\n\r\n if (itemsWidth > itemsContainerWidth) {\r\n this.scroll.fadeInContainer.classList.add(RC_FADE_CLASS);\r\n } else {\r\n this.scroll.fadeInContainer.classList.remove(RC_FADE_CLASS);\r\n }\r\n }\r\n\r\n initSummaryAccordion() {\r\n if (!this.summary.title || !this.summary.hiddenItems) return;\r\n\r\n if (ViewportInfo.isDesktop || this.summary.isOpen) {\r\n this.summary.hiddenItems.forEach((item) => {\r\n item.classList.remove(SUMMARY_HIDDEN_CLASS);\r\n });\r\n this.summary.border.classList.remove(SUMMARY_BORDER_CLOSE_CLASS);\r\n } else {\r\n this.summary.hiddenItems.forEach((item) => {\r\n item.classList.add(SUMMARY_HIDDEN_CLASS);\r\n });\r\n this.summary.border.classList.add(SUMMARY_BORDER_CLOSE_CLASS);\r\n }\r\n }\r\n\r\n handleSummaryTitleClick() {\r\n if (!this.summary.title || !this.summary.hiddenItems || ViewportInfo.isDesktop) return;\r\n\r\n this.summary.hiddenItems.forEach((item) => {\r\n item.classList.toggle(SUMMARY_HIDDEN_CLASS);\r\n });\r\n this.summary.title.classList.toggle(SUMMARY_TITLE_OPEN_CLASS);\r\n this.summary.border.classList.toggle(SUMMARY_BORDER_CLOSE_CLASS);\r\n this.summary.isOpen = !this.summary.isOpen;\r\n }\r\n\r\n handleStartAgainBtnClick(e) {\r\n e.preventDefault();\r\n this.clearState();\r\n EventEmitter.emit(events.STEP_SUBMITTED);\r\n }\r\n\r\n clearState() {\r\n PFUtils.removeLocalStorage();\r\n }\r\n}\r\n","export const getClosestNodes = (elem, selector) => {\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 const matches = (this.document || this.ownerDocument).querySelectorAll(s);\r\n const i = matches.length;\r\n return i > -1;\r\n };\r\n }\r\n\r\n const parents = [];\r\n\r\n for (; elem && elem !== document; elem = elem.parentNode) {\r\n if (selector) {\r\n if (elem.matches(selector)) {\r\n parents.push(elem);\r\n }\r\n } else {\r\n parents.push(elem);\r\n }\r\n }\r\n\r\n return parents;\r\n};\r\n\r\nexport const convertToQuery = (data, endPointUrl) => {\r\n const isUrlWithParameters = endPointUrl && endPointUrl.indexOf('?') > -1;\r\n const query = Object.keys(data)\r\n .filter(key => data[key] !== '' && data[key] !== null)\r\n .map(key => key + '=' + data[key])\r\n .join('&');\r\n const queryString = isUrlWithParameters ? '&' + query : '?' + query;\r\n return query.length > 0 ? queryString : '';\r\n};\r\n\r\nexport const createEvent = (name) => {\r\n if (typeof Event === 'function') {\r\n return new Event(name, { bubbles: true });\r\n }\r\n const event = document.createEvent('Event');\r\n event.initEvent(name, true, true);\r\n return event;\r\n};\r\n\r\nexport const createElement = (htmlString) => {\r\n if (htmlString.indexOf(' {\r\n const str = queryString.replace(/\\/$/, '') || '';\r\n const obj = {};\r\n let key;\r\n let value;\r\n\r\n str.split('&').forEach((keyValue) => {\r\n if (keyValue) {\r\n value = keyValue.split('=');\r\n key = decodeURIComponent(value[0]);\r\n obj[key] = value[1] ? decodeURIComponent(value[1]) : '';\r\n }\r\n });\r\n return obj;\r\n};\r\n\r\nexport const getSearchFromLocation = location => getParamsFromQueryString(location.search.substring(1));\r\n\r\nexport const camelizeString = (str) => {\r\n const stringResult = str.replace(/\\W+(.)/g, (match, chr) => {\r\n return chr.toUpperCase();\r\n });\r\n return stringResult.charAt(0).toLowerCase() + stringResult.slice(1);\r\n};\r\n\r\n\r\nexport const classWatcher = (targetNode, classToWatch, classAddedCallback, classRemovedCallback) => {\r\n\r\n let observer = null;\r\n let lastClassState = targetNode.classList.contains(classToWatch);\r\n\r\n const mutationCallback = (mutationsList) => {\r\n for(let mutation of mutationsList) {\r\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\r\n let currentClassState = mutation.target.classList.contains(classToWatch);\r\n if(lastClassState !== currentClassState) {\r\n lastClassState = currentClassState;\r\n if(currentClassState && (typeof classAddedCallback === \"function\")) {\r\n classAddedCallback();\r\n }\r\n else if (typeof classRemovedCallback === \"function\") {\r\n classRemovedCallback();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n observer = new MutationObserver(mutationCallback);\r\n observer.observe(targetNode, { attributes: true });\r\n const disconnect = () => {\r\n observer.disconnect();\r\n }\r\n}\r\n\r\nexport const getDLObject = () => {\r\n if (window.location &&\r\n window.location.host &&\r\n (window.location.host.split('.').some(part => part.includes('eukanuba')) || window.location.host.split('.').some(part => part.includes('sportingdog')))\r\n ) {\r\n return window.EUKA\r\n } else {\r\n return window.RCDL\r\n }\r\n};\r\n\r\nexport const getDLClass = () => {\r\n if (window.location &&\r\n window.location.host &&\r\n (window.location.host.split('.').some(part => part.includes('eukanuba')) || window.location.host.split('.').some(part => part.includes('sportingdog')))\r\n ) {\r\n return 'euka'\r\n } else {\r\n return 'rc'\r\n }\r\n};\r\n\r\nexport const isEukanuba = () => {\r\n if (window.location &&\r\n window.location.host &&\r\n (window.location.host.split('.').some(part => part.includes('eukanuba')) || window.location.host.split('.').some(part => part.includes('sportingdog')))\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport const isVetFocus = () => {\r\n if (window.location && window.location.host && window.location.host.split('.')[0].includes('vetfocus') === true) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport default {\r\n getClosestNodes,\r\n convertToQuery,\r\n createEvent,\r\n createElement,\r\n getParamsFromQueryString,\r\n getSearchFromLocation,\r\n camelizeString,\r\n classWatcher,\r\n getDLObject,\r\n getDLClass,\r\n isEukanuba,\r\n isVetFocus\r\n};\r\n","import { camelizeString } from '$Foundation/src/js/utils';\r\n\r\nclass GTM {\r\n push(category, action, label, event = 'eventTrack') {\r\n const siteId = document.body.dataset.siteId;\r\n const eventCamelized = camelizeString(event);\r\n const eventFull = siteId + eventCamelized;\r\n\r\n if (window.dataLayer) { \r\n window.dataLayer.push(Object.assign(\r\n {\r\n event: eventFull\r\n },\r\n {\r\n interaction: {\r\n category: category,\r\n action: action,\r\n label: label\r\n }\r\n }\r\n ));\r\n }\r\n }\r\n}\r\n\r\nexport default new GTM();\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\nimport GTM from '$Foundation/src/js/gtm/gtm';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class LanguagePicker extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.items = [...this.el.querySelectorAll('[data-toggle]')];\r\n this.countries = [...this.el.querySelectorAll('[data-country-code]')];\r\n this.buttonsWrapper = this.el.querySelector('[data-toggle-group]');\r\n this.modal = document.querySelector('[data-modal-target=\"country-lang-selector\"]');\r\n this.filterSelect = this.el.querySelector('[data-ref=\"filter-select\"]');\r\n this.selectedCountry = document.getElementById('id-select-country');\r\n this.selectedLanguage = document.getElementById('id-select-language');\r\n this._isModalOpened = false;\r\n this.isClickInit = null;\r\n dLScriptsObserver.onLoad(() => {\r\n if (this.isModalOpened()) {\r\n this.init();\r\n } else {\r\n this.modalObserver();\r\n }\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'languagepicker';\r\n }\r\n\r\n setRedirectUrl(currentSelection) {\r\n let currentItemId = this.modal.getAttribute('item-id');\r\n\r\n let params = {\r\n method: 'GET',\r\n headers: {}\r\n };\r\n\r\n fetch(`${location.origin + \"/\" + location.pathname.split('/')[1]}/api/languagepicker/languagepickerredirect?itemId=${currentItemId}&languageCode=${currentSelection}`, params)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (response) {\r\n document.getElementById('id-button-language').setAttribute(\"href\", response.url);\r\n });\r\n \r\n }\r\n\r\n updateLanguages() {\r\n let params = {\r\n method: 'GET',\r\n headers: {}\r\n };\r\n let culture = document.querySelector(\"html\").getAttribute(\"lang\");\r\n let country = document.getElementById(\"id-select-country\");\r\n let currentSelectedCountry = country.options[country.selectedIndex].value;\r\n const DLClass = Utils.getDLClass();\r\n var endpoint = `${location.origin + \"/\" + location.pathname.split('/')[1]}/api/languagepicker/getcountries?culture=${culture}`\r\n if (culture === \"es-US\") {\r\n endpoint = `${location.origin + \"/\" + location.pathname.split('/')[1] + \"/\" + location.pathname.split('/')[2]}/api/languagepicker/getcountries?culture=${culture}`\r\n }\r\n fetch(endpoint, params).then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (response) {\r\n let selectedLanguages = [];\r\n response.map(\r\n y => {\r\n if (y.Name === currentSelectedCountry) {\r\n y.Languages.map(\r\n z => selectedLanguages.push(z)\r\n )\r\n }\r\n }\r\n );\r\n document.getElementById('modal-select-language').innerHTML = `\r\n \r\n \r\n \r\n \r\n `\r\n const DLOBject = Utils.getDLObject();\r\n const languageOptions = {\r\n placeholderValue: 'data-js-custom-placeholder',\r\n shouldSort: false,\r\n itemSelectText: '',\r\n classNames: {\r\n item: 'choices__item choices__item--custom-data'\r\n }\r\n };\r\n DLOBject.features.Selects.init('[data-js-select-language]', null, languageOptions);\r\n let language = document.getElementById(\"id-select-language\");\r\n let currentSelectedLanguage = language.options[language.selectedIndex].value;\r\n setRedirectUrl(currentSelectedLanguage);\r\n document.getElementById('id-button-language').setAttribute(\"href\", currentSelectedLanguage);\r\n });\r\n }\r\n\r\n addListeners() {\r\n this.countries.forEach((item) => {\r\n this.addListener(item, 'click', e => this.onCountryClick(e));\r\n });\r\n this.selectedCountry.addEventListener('change', () => {\r\n this.updateLanguages();\r\n });\r\n this.selectedLanguage.addEventListener('change', () => {\r\n let language = document.getElementById(\"id-select-language\");\r\n let currentSelectedLanguage = language.options[language.selectedIndex].value;\r\n this.setRedirectUrl(currentSelectedLanguage);\r\n });\r\n }\r\n init() {\r\n this.edgeFix();\r\n this.addListeners();\r\n this.initLanguagePicker();\r\n }\r\n isModalOpened() {\r\n const DLClass = Utils.getDLClass();\r\n return (!(this.modal.classList.contains(`${DLClass}-hidden`)));\r\n }\r\n modalObserver() {\r\n const DLClass = Utils.getDLClass();\r\n Utils.classWatcher(this.modal, `${DLClass}-hidden`, null, () => { // init when rc-hidden removed (modal is shown)\r\n // this timeout required to get DL scripts finish their work on modal opening\r\n\r\n this.setFocusAfterOpening();\r\n\r\n setTimeout(() => {\r\n this.init();\r\n }, 100);\r\n });\r\n }\r\n\r\n setFocusAfterOpening() {\r\n if (!this._isModalOpened) {\r\n document.querySelector('.language-picker-modal .rc-modal__close').focus()\r\n }\r\n\r\n this._isModalOpened = !this._isModalOpened;\r\n }\r\n\r\n edgeFix() {\r\n const DLObject = Utils.getDLObject();\r\n const DLClass = Utils.getDLClass();\r\n if (!(document.querySelector('html').classList.contains('edge'))) return;\r\n if (this.modal.classList.contains(`${DLClass}-hidden`)) {\r\n Utils.classWatcher(this.modal, `${DLClass}-hidden`, null, () => {\r\n // this timeout required to get DL scripts finish their work on modal opening\r\n setTimeout(() => {\r\n DLObject.features.ToggleGroup.init('[data-toggle-group]', this.buttonsWrapper);\r\n }, 100);\r\n });\r\n } else {\r\n DLObject.features.ToggleGroup.init('[data-toggle-group]', this.buttonsWrapper);\r\n }\r\n }\r\n\r\n initGTA() {\r\n this.items.forEach((item) => {\r\n this.addListener(item, 'click', e => this.onClick(e));\r\n });\r\n }\r\n onClick(e) {\r\n const item = Utils.getClosestNodes(e.target, '[data-ref=\"language-continent\"]')[0];\r\n const trackCategory = item.getAttribute('data-track-category');\r\n const trackLabel = item.getAttribute('data-track-label');\r\n const trackEvent = trackCategory + ' ' + trackLabel;\r\n if (!this.isClickInit) {\r\n GTM.push(trackCategory, 'Click', trackLabel, trackEvent);\r\n } else {\r\n this.isClickInit = !this.isClickInit;\r\n }\r\n }\r\n onCountryClick(e) {\r\n const item = Utils.getClosestNodes(e.target, '[data-ref=\"language-country\"]')[0];\r\n const countryCode = item.getAttribute('data-country-code');\r\n if (countryCode && countryCode.length) {\r\n this.setCookie('selected_country', countryCode, 365);\r\n }\r\n }\r\n setCookie(cname, cvalue, exdays) {\r\n const date = new Date();\r\n date.setTime(date.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n const expires = 'expires=' + date.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n }\r\n initLanguagePicker() {\r\n // if no buttons stop function\r\n const buttonsWrapperSelector = this.buttonsWrapper && this.buttonsWrapper.querySelector('[role=tab]');\r\n if (!buttonsWrapperSelector) return;\r\n\r\n this.items.forEach((item) => {\r\n if (item.getAttribute('data-active-continent')) {\r\n this.isClickInit = true;\r\n item.click();\r\n }\r\n });\r\n this.initGTA();\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\nimport GTM from '$Foundation/src/js/gtm/gtm';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class LanguagePickerQRCode extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.items = [...this.el.querySelectorAll('[data-toggle]')];\r\n this.countries = [...this.el.querySelectorAll('[data-country-code]')];\r\n this.buttonsWrapper = this.el.querySelector('[data-toggle-group]');\r\n this.modal = document.querySelector('[data-modal-target=\"country-lang-selector\"]');\r\n this.filterSelect = this.el.querySelector('[data-ref=\"filter-select\"]');\r\n this.selectedCountry = document.getElementById('id-select-country');\r\n this.selectedLanguage = document.getElementById('id-select-language');\r\n this._isModalOpened = false;\r\n this.isClickInit = null;\r\n dLScriptsObserver.onLoad(() => {\r\n if (this.isModalOpened()) {\r\n this.init();\r\n } else {\r\n this.modalObserver();\r\n }\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'LanguagePickerQRCode';\r\n }\r\n\r\n setRedirectUrl(currentSelection) {\r\n let qrCodeItem = document.getElementById(\"qrCodeItem\").value;\r\n let params = {\r\n method: 'GET',\r\n headers: {}\r\n };\r\n\r\n fetch(`${location.origin + \"/\" + location.pathname.split('/')[1]}/api/languagepicker/LanguagePickerQRCodeRedirect?languageCode=${currentSelection}&qrCodeItem=${qrCodeItem}`, params)\r\n .then(function (response) {\r\n return response.json();\r\n }).then(function (response) {\r\n document.getElementById('id-button-language').setAttribute(\"href\", response.url);\r\n });\r\n }\r\n\r\n updateLanguages() {\r\n let params = {\r\n method: 'GET',\r\n headers: {}\r\n };\r\n \r\n const DLClass = Utils.getDLClass();\r\n fetch(`${location.origin + \"/\" + location.pathname.split('/')[1]}/api/languagepicker/getcountries`, params).then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (response) {\r\n let selectedLanguages = [];\r\n let country = document.getElementById(\"id-select-country\");\r\n let currentSelectedCountry = country.options[country.selectedIndex].value;\r\n response.map(\r\n y => {\r\n if (y.CountryCodeISO2 === currentSelectedCountry) {\r\n y.Languages.map(\r\n z => selectedLanguages.push(z)\r\n )\r\n }\r\n }\r\n );\r\n document.getElementById('modal-select-language').innerHTML = `\r\n \r\n \r\n \r\n \r\n `\r\n const DLOBject = Utils.getDLObject();\r\n const languageOptions = {\r\n placeholderValue: 'data-js-custom-placeholder',\r\n shouldSort: false,\r\n itemSelectText: '',\r\n classNames: {\r\n item: 'choices__item choices__item--custom-data'\r\n }\r\n };\r\n DLOBject.features.Selects.init('[data-js-select-language]', null, languageOptions);\r\n let language = document.getElementById(\"id-select-language\");\r\n let currentSelectedLanguage = language.options[language.selectedIndex].value;\r\n \r\n setRedirectUrl(currentSelectedLanguage);\r\n //document.getElementById('id-button-language').setAttribute(\"href\", currentSelectedLanguage);\r\n });\r\n }\r\n\r\n addListeners() {\r\n this.countries.forEach((item) => {\r\n this.addListener(item, 'click', e => this.onCountryClick(e));\r\n });\r\n this.selectedCountry.addEventListener('change', () => {\r\n this.updateLanguages();\r\n });\r\n this.selectedLanguage.addEventListener('change', () => {\r\n let language = document.getElementById(\"id-select-language\");\r\n let currentSelectedLanguage = language.options[language.selectedIndex].value;\r\n \r\n this.setRedirectUrl(currentSelectedLanguage);\r\n });\r\n }\r\n init() {\r\n this.edgeFix();\r\n this.addListeners();\r\n this.initLanguagePicker();\r\n }\r\n isModalOpened() {\r\n const DLClass = Utils.getDLClass();\r\n return (!(this.modal.classList.contains(`${DLClass}-hidden`)));\r\n }\r\n modalObserver() {\r\n const DLClass = Utils.getDLClass();\r\n Utils.classWatcher(this.modal, `${DLClass}-hidden`, null, () => { // init when rc-hidden removed (modal is shown)\r\n // this timeout required to get DL scripts finish their work on modal opening\r\n setTimeout(() => {\r\n this.init();\r\n }, 100);\r\n });\r\n }\r\n\r\n edgeFix() {\r\n const DLObject = Utils.getDLObject();\r\n const DLClass = Utils.getDLClass();\r\n if (!(document.querySelector('html').classList.contains('edge'))) return;\r\n if (this.modal.classList.contains(`${DLClass}-hidden`)) {\r\n Utils.classWatcher(this.modal, `${DLClass}-hidden`, null, () => {\r\n // this timeout required to get DL scripts finish their work on modal opening\r\n setTimeout(() => {\r\n DLObject.features.ToggleGroup.init('[data-toggle-group]', this.buttonsWrapper);\r\n }, 100);\r\n });\r\n } else {\r\n DLObject.features.ToggleGroup.init('[data-toggle-group]', this.buttonsWrapper);\r\n }\r\n }\r\n\r\n initGTA() {\r\n this.items.forEach((item) => {\r\n this.addListener(item, 'click', e => this.onClick(e));\r\n });\r\n }\r\n onClick(e) {\r\n const item = Utils.getClosestNodes(e.target, '[data-ref=\"language-continent\"]')[0];\r\n const trackCategory = item.getAttribute('data-track-category');\r\n const trackLabel = item.getAttribute('data-track-label');\r\n const trackEvent = trackCategory + ' ' + trackLabel;\r\n if (!this.isClickInit) {\r\n GTM.push(trackCategory, 'Click', trackLabel, trackEvent);\r\n } else {\r\n this.isClickInit = !this.isClickInit;\r\n }\r\n }\r\n onCountryClick(e) {\r\n const item = Utils.getClosestNodes(e.target, '[data-ref=\"language-country\"]')[0];\r\n const countryCode = item.getAttribute('data-country-code');\r\n if (countryCode && countryCode.length) {\r\n this.setCookie('selected_country', countryCode, 365);\r\n }\r\n }\r\n setCookie(cname, cvalue, exdays) {\r\n const date = new Date();\r\n date.setTime(date.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n const expires = 'expires=' + date.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n }\r\n initLanguagePicker() {\r\n // if no buttons stop function\r\n const buttonsWrapperSelector = this.buttonsWrapper && this.buttonsWrapper.querySelector('[role=tab]');\r\n if (!buttonsWrapperSelector) return;\r\n\r\n this.items.forEach((item) => {\r\n if (item.getAttribute('data-active-continent')) {\r\n this.isClickInit = true;\r\n item.click();\r\n }\r\n });\r\n this.initGTA();\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\nimport GTM from '$Foundation/src/js/gtm/gtm';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class LanguagePickerEukanuba extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.items = [...this.el.querySelectorAll('[data-toggle]')];\r\n this.countries = [...this.el.querySelectorAll('[data-country-code]')];\r\n this.buttonsWrapper = this.el.querySelector('[data-toggle-group]');\r\n this.modal = document.querySelector('[data-modal-target=\"country-lang-selector\"]');\r\n this.filterSelect = this.el.querySelector('[data-ref=\"filter-select\"]');\r\n this.selectedRegion = document.getElementById('id-select-region');\r\n this.selectedCountry = document.getElementById('id-select-country');\r\n this.selectedLanguage = document.getElementById('id-select-language');\r\n this._isModalOpened = false;\r\n this.isClickInit = null;\r\n dLScriptsObserver.onLoad(() => {\r\n if (this.isModalOpened()) {\r\n this.init();\r\n } else {\r\n this.modalObserver();\r\n }\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'languagepickerEukanuba';\r\n }\r\n\r\n updateCountries() {\r\n let params = {\r\n method: 'GET',\r\n headers: {}\r\n };\r\n let region = document.getElementById(\"id-select-region\");\r\n let currentSelectedRegion = region.options[region.selectedIndex].value;\r\n const DLClass = Utils.getDLClass();\r\n fetch(`${location.origin + \"/\" + location.pathname.split('/')[1]}/api/languagepicker/getregions`, params).then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (response) {\r\n let selectedCountries = [];\r\n response.map(\r\n x => {\r\n if (x.Name === currentSelectedRegion) {\r\n x.Countries.map(\r\n y => selectedCountries.push(y)\r\n \r\n )\r\n }\r\n }\r\n );\r\n document.getElementById('modal-select-country').innerHTML = `\r\n \r\n \r\n \r\n ` \r\n const DLOBject = Utils.getDLObject();\r\n const countryOptions = {\r\n placeholderValue: 'data-js-custom-placeholder',\r\n shouldSort: false,\r\n itemSelectText: '',\r\n classNames: {\r\n item: 'choices__item choices__item--custom-data'\r\n }\r\n }\r\n DLOBject.features.Selects.init('[data-js-select-country]', null, countryOptions);\r\n let language = document.getElementById(\"id-select-language\");\r\n let currentSelectedLanguage = language.options[language.selectedIndex].value;\r\n document.getElementById('id-button-language').setAttribute(\"href\", currentSelectedLanguage);\r\n updateLanguages()\r\n });\r\n }\r\n \r\n\r\n updateLanguages() {\r\n let params = {\r\n method: 'GET',\r\n headers: {}\r\n };\r\n let region = document.getElementById(\"id-select-region\");\r\n let currentSelectedRegion = region.options[region.selectedIndex].value;\r\n let country = document.getElementById(\"id-select-country\");\r\n let currentSelectedCountry = country.options[country.selectedIndex].value;\r\n const DLClass = Utils.getDLClass();\r\n fetch(`${location.origin + \"/\" + location.pathname.split('/')[1]}/api/languagepicker/getregions`, params).then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (response) {\r\n let selectedLanguages = [];\r\n response.map(\r\n x => {\r\n if (x.Name === currentSelectedRegion) {\r\n x.Countries.map(\r\n y => {\r\n if (y.Name === currentSelectedCountry) {\r\n y.Languages.map(\r\n z => selectedLanguages.push(z)\r\n )\r\n }\r\n }\r\n )\r\n }\r\n }\r\n );\r\n document.getElementById('modal-select-language').innerHTML = `\r\n \r\n \r\n \r\n \r\n `\r\n const DLOBject = Utils.getDLObject(); \r\n const languageOptions = {\r\n placeholderValue: 'data-js-custom-placeholder',\r\n shouldSort: false,\r\n itemSelectText: '',\r\n classNames: {\r\n item: 'choices__item choices__item--custom-data'\r\n }\r\n };\r\n DLOBject.features.Selects.init('[data-js-select-language]', null, languageOptions);\r\n let language = document.getElementById(\"id-select-language\");\r\n let currentSelectedLanguage = language.options[language.selectedIndex].value;\r\n document.getElementById('id-button-language').setAttribute(\"href\", currentSelectedLanguage);\r\n });\r\n }\r\n\r\n setRedirectUrl() {\r\n let params = {\r\n method: 'GET',\r\n headers: {}\r\n };\r\n let region = document.getElementById(\"id-select-region\");\r\n let currentSelectedRegion = region.options[region.selectedIndex].value;\r\n let country = document.getElementById(\"id-select-country\");\r\n let currentSelectedCountry = country.options[country.selectedIndex].value;\r\n fetch(`${location.origin + \"/\" + location.pathname.split('/')[1]}/api/languagepicker/getregions`, params).then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (response) {\r\n let selectedLanguage = {};\r\n response.map(\r\n x => {\r\n if (x.Name === currentSelectedRegion) {\r\n x.Countries.map(\r\n y => {\r\n if (y.Name === currentSelectedCountry) {\r\n y.Languages.map(\r\n z => {\r\n if (z.Name === currentSelectedCountry) {\r\n selectedLanguage = z;\r\n }\r\n }\r\n )\r\n }\r\n }\r\n )\r\n }\r\n }\r\n );\r\n let language = document.getElementById(\"id-select-language\");\r\n let currentSelectedLanguage = language.options[language.selectedIndex].value;\r\n document.getElementById('id-button-language').setAttribute(\"href\", currentSelectedLanguage);\r\n });\r\n }\r\n addListeners() {\r\n this.countries.forEach((item) => {\r\n this.addListener(item, 'click', e => this.onCountryClick(e));\r\n });\r\n this.selectedRegion.addEventListener('change', () => {\r\n this.updateCountries();\r\n });\r\n this.selectedCountry.addEventListener('change', () => {\r\n this.updateLanguages();\r\n });\r\n this.selectedLanguage.addEventListener('change', () => {\r\n this.setRedirectUrl(); \r\n });\r\n }\r\n init() { \r\n this.edgeFix();\r\n this.addListeners();\r\n this.initLanguagePicker();\r\n }\r\n isModalOpened() {\r\n const DLClass = Utils.getDLClass(); \r\n return (!(this.modal.classList.contains(`${DLClass}-hidden`)));\r\n }\r\n modalObserver() {\r\n const DLClass = Utils.getDLClass();\r\n Utils.classWatcher(this.modal, `${DLClass}-hidden`, null, () => { // init when rc-hidden removed (modal is shown)\r\n // this timeout required to get DL scripts finish their work on modal opening\r\n setTimeout(() => {\r\n this.init();\r\n }, 100);\r\n });\r\n }\r\n\r\n edgeFix() {\r\n const DLObject = Utils.getDLObject();\r\n const DLClass = Utils.getDLClass();\r\n if (!(document.querySelector('html').classList.contains('edge'))) return;\r\n if (this.modal.classList.contains(`${DLClass}-hidden`)) { \r\n Utils.classWatcher(this.modal, `${DLClass}-hidden`, null, () => {\r\n // this timeout required to get DL scripts finish their work on modal opening\r\n setTimeout(() => { \r\n DLObject.features.ToggleGroup.init('[data-toggle-group]', this.buttonsWrapper);\r\n }, 100);\r\n });\r\n } else {\r\n DLObject.features.ToggleGroup.init('[data-toggle-group]', this.buttonsWrapper);\r\n }\r\n } \r\n\r\n initGTA() {\r\n this.items.forEach((item) => {\r\n this.addListener(item, 'click', e => this.onClick(e));\r\n });\r\n }\r\n onClick(e) {\r\n const item = Utils.getClosestNodes(e.target, '[data-ref=\"language-continent\"]')[0];\r\n const trackCategory = item.getAttribute('data-track-category');\r\n const trackLabel = item.getAttribute('data-track-label');\r\n const trackEvent = trackCategory + ' ' + trackLabel;\r\n if (!this.isClickInit) {\r\n GTM.push(trackCategory, 'Click', trackLabel, trackEvent);\r\n } else {\r\n this.isClickInit = !this.isClickInit;\r\n }\r\n }\r\n onCountryClick(e) {\r\n const item = Utils.getClosestNodes(e.target, '[data-ref=\"language-country\"]')[0];\r\n const countryCode = item.getAttribute('data-country-code');\r\n if (countryCode && countryCode.length) {\r\n this.setCookie('selected_country', countryCode, 365);\r\n }\r\n }\r\n setCookie(cname, cvalue, exdays) {\r\n const date = new Date();\r\n date.setTime(date.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n const expires = 'expires=' + date.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n }\r\n initLanguagePicker() {\r\n // if no buttons stop function\r\n if (!this.buttonsWrapper.querySelector('[role=tab]')) return;\r\n\r\n this.items.forEach((item) => {\r\n if (item.getAttribute('data-active-continent')) {\r\n this.isClickInit = true;\r\n item.click();\r\n }\r\n });\r\n this.initGTA();\r\n }\r\n}\r\n","export default class MediatorEvents {\r\n static get applyFilters() {\r\n return 'APPLY_FILTERS';\r\n }\r\n\r\n static get clearAllFilters() {\r\n return 'CLEAR_ALL_FILTERS';\r\n }\r\n\r\n static get checkboxChanged() {\r\n return 'CHECKBOX_CHANGED';\r\n }\r\n\r\n static get filterChanged() {\r\n return 'FILTER_CHANGED';\r\n }\r\n\r\n static get clickFilterButton() {\r\n return 'CLICK_FILTER_BUTTON';\r\n }\r\n\r\n static get closeFilters() {\r\n return 'CLOSE_FILTERS';\r\n }\r\n\r\n static get tagRemoved() {\r\n return 'TAG_REMOVED';\r\n }\r\n\r\n static get search() {\r\n return 'SEARCH';\r\n }\r\n\r\n static get viewAllBtnClicked() {\r\n return 'VIEW_ALL_BTN_CLICKED';\r\n }\r\n\r\n static get paginationButtonClicked() {\r\n return 'PAGINATION_BUTTON_CLICKED';\r\n }\r\n\r\n static get mapMarkerClicked() {\r\n return 'MAP_MARKER_CLICKED';\r\n }\r\n\r\n static get mapClicked() {\r\n return 'MAP_CLICKED';\r\n }\r\n\r\n static get filterItemСlicked() {\r\n return 'FILTER_ITEM_CLICKED';\r\n }\r\n\r\n static get filterSelectChanged() {\r\n return 'FILTER_SELECT_CHANGED';\r\n }\r\n\r\n static get mapIdleFinished() {\r\n return 'MAP_IDLE_FINISHED';\r\n }\r\n\r\n static get getCurrentPosition() {\r\n return 'GET_CURRENT_POSITION';\r\n }\r\n}\r\n","export default class MediatorEventModel {\r\n constructor() {\r\n this.eventType = '';\r\n this.eventMethod = 'GET';\r\n this.eventData = {};\r\n this.eventParams = '';\r\n this.htmlData = '';\r\n this.eventUrl = '';\r\n this.searchQuery = [];\r\n this.typeOfInsertingContent = 'replace';\r\n this.trackDetails = {};\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class AbstractFilterControl extends BaseComponent {\r\n constructor(el, id) {\r\n super(el);\r\n this.el = el;\r\n this.id = id;\r\n }\r\n\r\n clear() {}\r\n\r\n isActive() {}\r\n\r\n getValue() {}\r\n\r\n getLabel() {}\r\n\r\n getCategory() {}\r\n\r\n setValue() {}\r\n}\r\n","import { camelizeString } from '$Foundation/src/js/utils';\r\n\r\nclass GTM {\r\n push(category, action, label, event = 'eventTrack', breedId, specieId, age) {\r\n\r\n const siteId = document.body.dataset.siteId;\r\n const eventCamelized = camelizeString(event);\r\n const eventFull = siteId + eventCamelized;\r\n let pet = {};\r\n let isPetDataEmpty = true;\r\n\r\n const collectPetData = (breedIdValue, specieIdValue, ageValue) => {\r\n if (breedIdValue) {\r\n Object.assign( pet, { breedId: breedIdValue });\r\n isPetDataEmpty = false;\r\n }\r\n if (specieIdValue) {\r\n Object.assign( pet, { specieId: specieIdValue });\r\n isPetDataEmpty = false;\r\n }\r\n if (ageValue) {\r\n Object.assign( pet, { age: ageValue });\r\n isPetDataEmpty = false;\r\n }\r\n } \r\n\r\n if (window.dataLayer) {\r\n\r\n const resultObject = {};\r\n collectPetData(breedId, specieId, age);\r\n if (!isPetDataEmpty) {\r\n Object.assign(resultObject, { pet });\r\n }\r\n\r\n Object.assign(resultObject,\r\n {\r\n event: eventFull\r\n },\r\n {\r\n interaction: {\r\n category,\r\n action,\r\n label,\r\n value: 1\r\n }\r\n });\r\n\r\n window.dataLayer.push(resultObject);\r\n }\r\n }\r\n}\r\n\r\nexport default new GTM();\r\n","import Utils from '$Foundation/src/js/utils';\r\nimport { config } from '../../index';\r\nimport MediatorEvents from '../enums/mediatorEvents';\r\nimport MediatorEventModel from '../models/mediatorEventModel';\r\nimport AbstractFilterControl from './AbstractFilterControl';\r\nimport ViewportInfo, { DEVICE_TYPE_DESKTOP } from '$Foundation/src/js/ViewportInfo';\r\nimport GTM from '$Foundation/src/js/gtm/gtmPetDetails';\r\n\r\nexport default class FilterCheckboxControl extends AbstractFilterControl {\r\n constructor(el, id) {\r\n super(el, id);\r\n this.trackCategory = null;\r\n this.trackLabel = null;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListheners();\r\n }\r\n\r\n addListheners() {\r\n this.addListener(this.el, 'change', e => this.handleCheckboxChange(e));\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n\r\n this.isExcluded = this.el.getAttribute('data-exclude-filter')\r\n ? this.el.getAttribute('data-exclude-filter') === 'true'\r\n : false;\r\n\r\n this.trackCategory = this.el.getAttribute('data-track-category') || '';\r\n this.trackLabel = this.el.getAttribute('data-track-label') || '';\r\n this.trackEvent = this.el.getAttribute('data-track-event') || '';\r\n this.trackAction = this.el.getAttribute('data-track-action') || '';\r\n this.trackBreedId = this.el.getAttribute('data-track-breed-id') || '';\r\n this.trackSpecieId = this.el.getAttribute('data-track-specie-id') || '';\r\n this.trackAge = this.el.getAttribute('data-track-age') || '';\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n clear() {\r\n this.el.checked = false;\r\n }\r\n\r\n isActive() {\r\n return this.el.checked;\r\n }\r\n\r\n getCategory() {\r\n const parentNode = Utils.getClosestNodes(this.el, '[data-ref=\"filter-category\"]');\r\n\r\n const category = parentNode[0].getAttribute('data-filter-category').toLowerCase();\r\n return category;\r\n }\r\n\r\n getLabel() {\r\n return this.el.getAttribute('data-label');\r\n }\r\n\r\n getValue() {\r\n return this.el.value;\r\n }\r\n\r\n setValue(value) {\r\n this.el.checked = this.el.value === value;\r\n }\r\n\r\n shouldBeExcluded() {\r\n return this.isExcluded;\r\n }\r\n\r\n handleCheckboxChange() {\r\n if (\r\n ViewportInfo.deviceTypeByViewport !== DEVICE_TYPE_DESKTOP &&\r\n ViewportInfo.isTouch &&\r\n !this.isExcluded\r\n ) {\r\n return;\r\n }\r\n const mediatorEvent = new MediatorEventModel();\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n // searchQuery.searchQuery = config.filterSearchControl.getInputValue(); (I don't know why it is here but this was breaking filtering)\r\n const bounds = config.state.map.bounds;\r\n if (Array.isArray(bounds)) Object.assign(searchQuery, ...bounds);\r\n searchQuery.latitude = config.state.map.latitude;\r\n searchQuery.longitude = config.state.map.longitude;\r\n searchQuery.currentLatitude = config.state.map.currentLatitude;\r\n searchQuery.currentLongitude = config.state.map.currentLongitude;\r\n mediatorEvent.searchQuery = searchQuery;\r\n\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.eventType = MediatorEvents.filterChanged;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n\r\n // Google Tracking\r\n // const trackLabel = this.el.checked\r\n // ? this.trackLabel + ' checked'\r\n // : this.trackLabel + ' unchecked';\r\n\r\n GTM.push(this.trackCategory, this.trackAction, this.trackLabel, this.trackEvent, this.trackBreedId, this.trackSpecieId, this.trackAge);\r\n }\r\n}\r\n","import Utils from '$Foundation/src/js/utils';\r\nimport { config } from '../../index';\r\nimport MediatorEvents from '../enums/mediatorEvents';\r\nimport MediatorEventModel from '../models/mediatorEventModel';\r\nimport AbstractFilterControl from './AbstractFilterControl';\r\nimport ViewportInfo, { DEVICE_TYPE_DESKTOP } from '$Foundation/src/js/ViewportInfo';\r\nimport GTM from '$Foundation/src/js/gtm/gtmPetDetails';\r\n\r\nexport default class FilterRangeControl extends AbstractFilterControl {\r\n constructor(el, id) {\r\n super(el, id);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.createRange();\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.mediator = null;\r\n this.hiddenInputNode = this.el.querySelector('[data-ref=\"filter-input-range\"]');\r\n this.rangeOptions = JSON.parse(this.el.querySelector('[data-ref=\"filter-range-options-json\"]').innerHTML);\r\n this.isExcluded = this.el.getAttribute('data-exclude-filter')\r\n ? this.el.getAttribute('data-exclude-filter') === 'true'\r\n : false;\r\n this.trackCategory = this.hiddenInputNode.getAttribute('data-track-category');\r\n this.trackLabel = this.hiddenInputNode.getAttribute('data-track-label');\r\n this.trackEvent = this.hiddenInputNode.getAttribute('data-track-event');\r\n this.trackAction = '';\r\n this.trackBreedId = this.hiddenInputNode.getAttribute('data-track-breed-id');\r\n this.trackSpecieId = this.hiddenInputNode.getAttribute('data-track-specie-id');\r\n this.trackAge = {};\r\n }\r\n\r\n clear() {\r\n this.el.noUiSlider.set(0);\r\n this.hiddenInputNode.value = 0;\r\n }\r\n\r\n isActive() {\r\n return parseFloat(this.el.noUiSlider.get()) > 0;\r\n }\r\n\r\n getCategory() {\r\n const parentNode = Utils.getClosestNodes(this.el, '[data-ref=\"filter-category\"]');\r\n\r\n const category = parentNode[0].getAttribute('data-filter-category').toLowerCase();\r\n return category;\r\n }\r\n\r\n getLabel() {\r\n if (this.hiddenInputNode.value !== '') {\r\n const value = parseFloat(this.hiddenInputNode.value);\r\n const label = this.rangeOptions.filter(x => x.value === value)[0].title;\r\n return label;\r\n }\r\n return '';\r\n }\r\n\r\n getValue() {\r\n return parseFloat(this.el.noUiSlider.get());\r\n }\r\n\r\n setValue(value) {\r\n this.el.noUiSlider.set(value);\r\n }\r\n\r\n shouldBeExcluded() {\r\n return this.isExcluded;\r\n }\r\n\r\n createRange() {\r\n const step = 100 / (this.rangeOptions.length - 1);\r\n\r\n const settings = {};\r\n\r\n this.rangeOptions.forEach((option, index) => {\r\n if (index + 1 === this.rangeOptions.length) return;\r\n settings[step * index] = option.value;\r\n });\r\n\r\n import('nouislider').then((noUiSlider) => {\r\n noUiSlider.create(this.el, {\r\n start: this.hiddenInputNode.value || 0,\r\n snap: true,\r\n tooltips: [\r\n {\r\n to: value => this.rangeOptions.filter(x => x.value === value)[0].title\r\n }\r\n ],\r\n connect: [true, false],\r\n range: Object.assign({}, { min: this.rangeOptions[0].value }, settings, {\r\n max: this.rangeOptions.slice(-1)[0].value\r\n }),\r\n direction: RCDL.config.documentDirection\r\n });\r\n\r\n this.el.noUiSlider.on('change', (value) => {\r\n this.handleRangeChange(parseFloat(value));\r\n });\r\n });\r\n }\r\n\r\n handleRangeChange(values) {\r\n this.hiddenInputNode.value = values;\r\n\r\n if (\r\n ViewportInfo.deviceTypeByViewport !== DEVICE_TYPE_DESKTOP &&\r\n ViewportInfo.isTouch &&\r\n !this.isExcluded\r\n ) {\r\n return;\r\n }\r\n\r\n const mediatorEvent = new MediatorEventModel();\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n\r\n // searchQuery.searchQuery = config.filterSearchControl.getInputValue();\r\n\r\n mediatorEvent.searchQuery = searchQuery;\r\n\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.eventType = MediatorEvents.filterChanged;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n\r\n this.trackAction = this.getLabel();\r\n this.trackAge = this.getLabel();\r\n\r\n // Google Tracking\r\n GTM.push(\r\n this.trackCategory,\r\n this.trackAction,\r\n this.trackLabel,\r\n this.trackEvent,\r\n this.trackBreedId,\r\n this.trackSpecieId,\r\n this.trackAge\r\n );\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n addListeners() {}\r\n}\r\n","import Utils from '$Foundation/src/js/utils';\r\nimport { config } from '../../index';\r\nimport MediatorEvents from '../enums/mediatorEvents';\r\nimport MediatorEventModel from '../models/mediatorEventModel';\r\nimport AbstractFilterControl from './AbstractFilterControl';\r\nimport ViewportInfo, { DEVICE_TYPE_DESKTOP } from '$Foundation/src/js/ViewportInfo';\r\n\r\nexport default class FilterSelectControl extends AbstractFilterControl {\r\n constructor(el, id) {\r\n super(el, id);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListheners();\r\n }\r\n\r\n addListheners() {\r\n this.addListener(this.el, 'change', e => this.handleSelectChange(e));\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.isExcluded = this.el.getAttribute('data-exclude-filter')\r\n ? this.el.getAttribute('data-exclude-filter') === 'true'\r\n : false;\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n clear() {\r\n this.el.selectedIndex = -1;\r\n }\r\n\r\n isActive() {\r\n return this.el.selectedIndex !== -1\r\n ? this.el.options[ this.el.selectedIndex ].value !== ''\r\n : false;\r\n }\r\n\r\n getCategory() {\r\n const parentNode = Utils.getClosestNodes(this.el, '[data-ref=\"filter-category\"]');\r\n\r\n const category = parentNode[ 0 ].getAttribute('data-filter-category').toLowerCase();\r\n return category;\r\n }\r\n\r\n getLabel() {\r\n return this.id;\r\n }\r\n\r\n getValue() {\r\n return this.el.options[ this.el.selectedIndex ].value;\r\n }\r\n\r\n setValue(value) {\r\n this.el.selectedIndex = value;\r\n }\r\n\r\n shouldBeExcluded() {\r\n return this.isExcluded;\r\n }\r\n\r\n handleSelectChange() {\r\n if (\r\n ViewportInfo.deviceTypeByViewport !== DEVICE_TYPE_DESKTOP &&\r\n ViewportInfo.isTouch &&\r\n !this.isExcluded\r\n ) {\r\n return;\r\n }\r\n\r\n const mediatorEvent = new MediatorEventModel();\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const contactTypes = urlParams.get('contacttypes') && urlParams.get('contacttypes');\r\n const sortResultsBy = urlParams.get('sortresultsby') && urlParams.get('sortresultsby');\r\n\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n\r\n if (config.filterSearchControl) {\r\n searchQuery.searchQuery = config.filterSearchControl.getInputValue();\r\n }\r\n\r\n mediatorEvent.searchQuery = searchQuery;\r\n const bounds = config.state.map.bounds;\r\n if (Array.isArray(bounds)) Object.assign(searchQuery, ...bounds);\r\n searchQuery.latitude = config.state.map.latitude;\r\n searchQuery.longitude = config.state.map.longitude;\r\n searchQuery.currentLatitude = config.state.map.currentLatitude;\r\n searchQuery.currentLongitude = config.state.map.currentLongitude;\r\n \r\n if (contactTypes) {\r\n searchQuery.contacttypes = contactTypes;\r\n }\r\n\r\n\t\tif (!Utils.isEukanuba()) { \t\t\t\r\n\t\t\tif (sortResultsBy) {\r\n\t\t\t\tsearchQuery.sortresultsby = sortResultsBy;\r\n\t\t\t}\r\n }\r\n \t\t\r\n searchQuery.isLocal = true;\r\n \r\n\t\tif (!Utils.isEukanuba()) {\r\n\t\t\tsearchQuery.isLocal = searchQuery.searchQuery != null && searchQuery.searchQuery.length > 0 ? false : true;\r\n\t\t}\r\n\t\t\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.eventType = MediatorEvents.filterSelectChanged;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n}\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport Utils from \"$Foundation/src/js/utils\";\r\nimport { config } from \"../../index\";\r\nimport MediatorEvents from \"../enums/mediatorEvents\";\r\nimport MediatorEventModel from \"../models/mediatorEventModel\";\r\nimport FilterCheckboxControl from \"./filterCheckboxControl\";\r\nimport FilterRangeControl from \"./filterRangeControl\";\r\nimport FilterSelectControl from \"./filterSelectControl\";\r\nimport EventEmitter from \"$Foundation/src/js/EventEmitter\";\r\n\r\nexport default class FilterPanelControl extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return \"filter-panel\";\r\n }\r\n\r\n static get constructorName() {\r\n return \"filterPanelControl\";\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.createFilters();\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.mediator = null;\r\n this.isActive = false;\r\n this.filters = [];\r\n this.filterButtons = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-button\"]'),\r\n ];\r\n this.closeFilterBtnNode = this.el.querySelector(\r\n '[data-ref=\"close-filter-btn\"]'\r\n );\r\n this.applyFilterBtnNode = this.el.querySelector(\r\n '[data-ref=\"apply-filters\"]'\r\n );\r\n this.checkboxes = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-checkbox\"]'),\r\n ];\r\n this.clearAllLinkNode = this.el.querySelector(\r\n '[data-ref=\"clear-all-filters-link\"]'\r\n );\r\n this.clearAllBtnNode = this.el.querySelector(\r\n '[data-ref=\"clear-all-filters-btn\"]'\r\n );\r\n this.filterCategoryNodes = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-category\"]'),\r\n ];\r\n this.filterRangeNodes = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-range\"]'),\r\n ];\r\n this.filterSelectNodes = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-select\"]'),\r\n ];\r\n this.filterFacetNodes = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-facet\"]'),\r\n ];\r\n this.clearCategoryBtnNodes = [\r\n ...this.el.querySelectorAll(\r\n '[data-ref=\"clear-category-filters-btn\"]'\r\n ),\r\n ];\r\n this.isHistoryApiEnabled = !!(\r\n window.history && window.history.pushState\r\n );\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n addListeners() {\r\n this.clearCategoryBtnNodes.forEach((item) => {\r\n this.addListener(item, \"click\", (e) =>\r\n this.handleClearCategoryFilters(e)\r\n );\r\n });\r\n\r\n this.filterButtons.forEach((button) => {\r\n this.addListener(button, \"click\", (e) =>\r\n this.handleFilterBtnClick(e)\r\n );\r\n });\r\n\r\n this.addListener(this.clearAllLinkNode, \"click\", (e) =>\r\n this.handleClearAllFilters(e)\r\n );\r\n this.addListener(this.clearAllBtnNode, \"click\", (e) =>\r\n this.handleClearAllFilters(e)\r\n );\r\n this.addListener(this.applyFilterBtnNode, \"click\", (e) =>\r\n this.handleApplyFilters(e)\r\n );\r\n this.addListener(this.closeFilterBtnNode, \"click\", () =>\r\n this.handleCloseFilterClick()\r\n );\r\n\r\n EventEmitter.subscribe(\"facets:updated\", (data) =>\r\n this.handleFacetsUpdate(data)\r\n );\r\n }\r\n\r\n getAllFilters() {\r\n return this.filters;\r\n }\r\n\r\n createFilters() {\r\n this.createCheckboxes();\r\n this.createRanges();\r\n this.createSelects();\r\n }\r\n\r\n createCheckboxes() {\r\n this.checkboxes.forEach((checkbox) => {\r\n const checkboxId = checkbox.getAttribute(\"id\");\r\n const filter = new FilterCheckboxControl(checkbox, checkboxId);\r\n filter.setMediator(config.el);\r\n this.filters.push(filter);\r\n });\r\n }\r\n\r\n createRanges() {\r\n this.filterRangeNodes.forEach((range) => {\r\n const rangeId = range.getAttribute(\"id\");\r\n const filter = new FilterRangeControl(range, rangeId);\r\n this.filters.push(filter);\r\n });\r\n }\r\n\r\n createSelects() {\r\n this.filterSelectNodes.forEach((select) => {\r\n const selectId = select.getAttribute(\"id\");\r\n const filter = new FilterSelectControl(select, selectId);\r\n filter.setMediator(config.el);\r\n this.filters.push(filter);\r\n });\r\n }\r\n\r\n createMediatorEventModel(eventType, data) {\r\n const mediatorEvent = new MediatorEventModel();\r\n const urlParams = new URLSearchParams(window.location.search);\r\n\r\n const searchQuery = this.getSearchQuery();\r\n\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n // searchQuery.searchQuery = config.filterSearchControl.getInputValue();\r\n\r\n if (data && data.viewAll) {\r\n searchQuery.viewAll = data.viewAll;\r\n }\r\n\r\n if (urlParams.get('searchQuery')) {\r\n searchQuery.searchQuery = urlParams.get('searchQuery');\r\n }\r\n\r\n mediatorEvent.searchQuery = searchQuery;\r\n\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.eventType = MediatorEvents[`${eventType}`];\r\n\r\n return mediatorEvent;\r\n }\r\n\r\n handleFilterBtnClick() {\r\n const mediatorEvent =\r\n this.createMediatorEventModel(\"clickFilterButton\");\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n handleFilterChanged(data) {\r\n const mediatorEvent = this.createMediatorEventModel(\r\n \"filterChanged\",\r\n data\r\n );\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n handleClearAllFilters(e) {\r\n e.preventDefault();\r\n this.filters.forEach((filter) => {\r\n filter.clear();\r\n });\r\n\r\n const mediatorEvent = this.createMediatorEventModel(\"clearAllFilters\");\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n handleClearCategoryFilters(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n const filterCategoryNode = Utils.getClosestNodes(\r\n e.target,\r\n '[data-ref=\"filter-category\"]'\r\n )[0];\r\n\r\n this.filters\r\n .filter(\r\n (filter) =>\r\n filter.getCategory() ===\r\n filterCategoryNode\r\n .getAttribute(\"data-filter-category\")\r\n .toLowerCase()\r\n )\r\n .forEach((filter) => filter.clear());\r\n\r\n const mediatorEvent = this.createMediatorEventModel(\"filterChanged\");\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n handleCloseFilterClick() {\r\n const mediatorEvent = this.createMediatorEventModel(\"closeFilters\");\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n handleApplyFilters() {\r\n const mediatorEvent = this.createMediatorEventModel(\"applyFilters\");\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n resetConcreteFilters(id) {\r\n const filter = this.filters.filter((f) => f.id === id)[0];\r\n\r\n if (filter) {\r\n filter.clear();\r\n this.handleFilterChanged();\r\n }\r\n }\r\n\r\n updateFilterCategory(data) {\r\n const { category, value } = data;\r\n const filters = this.filters.filter(\r\n (f) => f.getCategory() === category.toLowerCase()\r\n );\r\n filters.forEach((filter) => {\r\n filter.setValue(value);\r\n });\r\n\r\n this.handleFilterChanged(data);\r\n }\r\n\r\n updateClearBtnVisibility() {\r\n const tenantPrefix = Utils.getDLClass();\r\n\r\n this.filterCategoryNodes.forEach((filterCategory) => {\r\n const clearBtnNode = filterCategory.querySelector(\r\n '[data-ref=\"clear-category-filters-btn\"]'\r\n );\r\n if (\r\n this.filters\r\n .filter(\r\n (filter) =>\r\n filter.getCategory() ===\r\n filterCategory\r\n .getAttribute(\"data-filter-category\")\r\n .toLowerCase()\r\n )\r\n .some((f) => f.isActive())\r\n ) {\r\n if (clearBtnNode) {\r\n clearBtnNode.classList.remove(`${tenantPrefix}-hidden`);\r\n }\r\n } else if (clearBtnNode) {\r\n clearBtnNode.classList.add(`${tenantPrefix}-hidden`);\r\n }\r\n });\r\n }\r\n\r\n updateClearAllLinkVisibility() {\r\n const tenantPrefix = Utils.getDLClass();\r\n\r\n if (\r\n this.filters.some(\r\n (filter) => filter.isActive() && !filter.shouldBeExcluded()\r\n )\r\n ) {\r\n this.clearAllLinkNode.classList.remove(`${tenantPrefix}-hidden`);\r\n } else if (this.clearAllLinkNode) {\r\n this.clearAllLinkNode.classList.add(`${tenantPrefix}-hidden`);\r\n }\r\n }\r\n\r\n isFilterPanelActive() {\r\n this.isActive = !this.isActive;\r\n return this.isActive;\r\n }\r\n\r\n getSearchQuery() {\r\n const searchQuery = {};\r\n\r\n this.filters.forEach((filter) => {\r\n if (filter.isActive()) {\r\n const value = filter.getValue();\r\n const category = filter.getCategory();\r\n\r\n if (\r\n searchQuery[`${category}`] &&\r\n searchQuery[`${category}`].length > 0\r\n ) {\r\n searchQuery[`${category}`].push(`${value}`);\r\n } else {\r\n searchQuery[`${category}`] = [`${value}`];\r\n }\r\n }\r\n });\r\n return searchQuery;\r\n }\r\n\r\n handleFacetsUpdate(data) {\r\n const { facets } = data;\r\n\r\n if (!facets) {\r\n return;\r\n }\r\n\r\n this.filterFacetNodes.forEach((facet) => {\r\n facet.innerHTML = \"0\";\r\n });\r\n\r\n Object.keys(facets).forEach((key) => {\r\n const checkboxNodes = this.checkboxes.filter(\r\n (checkbox) => checkbox.value === key\r\n );\r\n checkboxNodes.forEach((checkbox) => {\r\n const facet = this.el.querySelector(`[data-facet-id=\"${key}\"]`);\r\n facet.innerHTML = facets[key];\r\n const checkboxParent = Utils.getClosestNodes(\r\n facet,\r\n '[data-ref=\"filter-checkbox-parent\"]'\r\n )[0];\r\n checkboxParent.classList.remove(\"is-disabled\");\r\n checkbox.removeAttribute(\"disabled\");\r\n });\r\n });\r\n\r\n this.filterFacetNodes.forEach((facet) => {\r\n const checkboxParent = Utils.getClosestNodes(\r\n facet,\r\n '[data-ref=\"filter-checkbox-parent\"]'\r\n )[0];\r\n const checkbox = checkboxParent.querySelector(\r\n '[data-ref=\"filter-checkbox\"]'\r\n );\r\n if (facet.innerHTML === \"0\" && !checkbox.checked) {\r\n checkboxParent.classList.add(\"is-disabled\");\r\n checkbox.setAttribute(\"disabled\", \"disabled\");\r\n }\r\n });\r\n }\r\n\r\n setUrl(url) {\r\n if (!this.isHistoryApiEnabled) {\r\n return false;\r\n }\r\n\r\n if (url) {\r\n window.history.replaceState({}, \"\", url);\r\n } else {\r\n const cleanUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}`;\r\n window.history.replaceState({}, \"\", cleanUrl);\r\n }\r\n return true;\r\n }\r\n\r\n onAttributeAdded(targetElement, attributeName, onAddedCallback) {\r\n const observerCallback = (mutationsList, observer) => {\r\n for (const mutation of mutationsList) {\r\n if (\r\n mutation.type === \"attributes\" &&\r\n mutation.attributeName === attributeName &&\r\n !!mutation.target.getAttribute(attributeName)\r\n ) {\r\n onAddedCallback();\r\n observer.disconnect();\r\n }\r\n }\r\n };\r\n\r\n const attributeObserver = new MutationObserver(observerCallback);\r\n\r\n if (targetElement) {\r\n attributeObserver.observe(targetElement, { attributes: true });\r\n }\r\n }\r\n\r\n collapsePrefilteredCategories() {\r\n let anyFilterApplied = false;\r\n const firstFilterCategory = document.getElementById(\"header-id-0\");\r\n\r\n this.filters.forEach((filter) => {\r\n const categoryId = filter.id.split(\"-\")[2];\r\n const categoryListHeader = document.getElementById(\r\n `header-id-${categoryId}`\r\n );\r\n\r\n if (\r\n filter.isActive() &&\r\n categoryListHeader &&\r\n categoryListHeader.getAttribute(\"aria-selected\") !== \"true\"\r\n ) {\r\n categoryListHeader.click();\r\n anyFilterApplied = true;\r\n }\r\n });\r\n\r\n if (!anyFilterApplied && firstFilterCategory) {\r\n firstFilterCategory.click();\r\n }\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport { styler, tween } from 'popmotion';\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport { config } from '../../index';\r\nimport tagTemplate from '../../templates/filter-tag.hbs';\r\nimport MediatorEvents from '../enums/mediatorEvents';\r\nimport MediatorEventModel from '../models/mediatorEventModel';\r\nimport ViewportInfo, { DEVICE_TYPE_DESKTOP } from '$Foundation/src/js/ViewportInfo';\r\n\r\nexport default class FilterTagsControl extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'filter-tags';\r\n }\r\n\r\n static get constructorName() {\r\n return 'filterTagsControl';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n setTimeout(() => {\r\n this.setUpPreselectedTags();\r\n }, 500);\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.mediator = null;\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.el, 'click', e => this.handleRemoveTag(e));\r\n }\r\n\r\n handleRemoveTag(e) {\r\n e.preventDefault();\r\n if (!e.target.getAttribute('data-ref')) {\r\n return;\r\n }\r\n\r\n const tagNode = Utils.getClosestNodes(e.target, '[data-ref=\"filter-tag\"]')[0];\r\n\r\n const tagId = tagNode.getAttribute('data-id');\r\n\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.tagRemoved;\r\n mediatorEvent.eventData = {\r\n id: tagId\r\n };\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n\r\n this.removeTag(tagId);\r\n }\r\n\r\n updateTags() {\r\n const filters = config.filterPanelControl.getAllFilters();\r\n\r\n filters.forEach((filter) => {\r\n if (filter.isActive() && !filter.shouldBeExcluded()) {\r\n this.addTag(filter.id, filter.getLabel());\r\n } else {\r\n this.removeTag(filter.id);\r\n }\r\n });\r\n }\r\n\r\n setUpPreselectedTags() {\r\n const queryString = window.location.search;\r\n\r\n if (queryString.length > 0) {\r\n this.updateTags();\r\n config.filterPanelControl.updateClearBtnVisibility();\r\n config.filterPanelControl.updateClearAllLinkVisibility();\r\n }\r\n }\r\n\r\n addTag(id, label) {\r\n const paramsObj = {\r\n id,\r\n text: label,\r\n DLClass: Utils.getDLClass(),\r\n };\r\n\r\n const el = this.el.querySelector(`[data-id=\"${id}\"]`);\r\n const from = this.el.getBoundingClientRect().height;\r\n\r\n if (el) {\r\n this.el.removeChild(el);\r\n }\r\n\r\n const tagHtml = tagTemplate(paramsObj);\r\n\r\n this.el.insertAdjacentHTML('beforeend', tagHtml);\r\n\r\n const to = this.el.getBoundingClientRect().height;\r\n\r\n this.animateHeight(from, to);\r\n }\r\n\r\n removeTag(id) {\r\n const el = this.el.querySelector(`[data-id=\"${id}\"]`);\r\n const from = this.el.getBoundingClientRect().height;\r\n\r\n if (el) {\r\n this.el.removeChild(el);\r\n }\r\n\r\n const to = this.el.getBoundingClientRect().height;\r\n\r\n this.animateHeight(from, to);\r\n }\r\n\r\n animateHeight(from, to) {\r\n const divStyler = styler(this.el);\r\n\r\n if (from !== to) {\r\n const tweenInstance = tween({\r\n from,\r\n to: { height: to },\r\n duration: 300\r\n });\r\n\r\n tweenInstance.start({\r\n update: divStyler.set,\r\n complete: () => this.resetContainerStyles(this.el)\r\n });\r\n }\r\n }\r\n\r\n resetContainerStyles(el) {\r\n setTimeout(() => {\r\n el.style.cssText = '';\r\n }, 0);\r\n }\r\n\r\n updateVisibility(shouldBeHidden) {\r\n const isDesktop = ViewportInfo.deviceTypeByViewport === DEVICE_TYPE_DESKTOP;\r\n\r\n if (shouldBeHidden && isDesktop) {\r\n this.el.classList.add('is-hidden');\r\n } else {\r\n this.el.classList.remove('is-hidden');\r\n }\r\n }\r\n}\r\n","import { camelizeString } from '$Foundation/src/js/utils';\r\n\r\nclass GTM {\r\n push(category, action, label, event = 'eventTrack', customerType, customerName) {\r\n const siteId = document.body.dataset.siteId;\r\n const eventCamelized = camelizeString(event);\r\n const eventFull = siteId + eventCamelized;\r\n const customer = {};\r\n let isStockistDataEmpty = true;\r\n\r\n const collectStockistData = (customerTypeValue, customerNameValue) => {\r\n if (customerTypeValue) {\r\n Object.assign(customer, { type: customerTypeValue });\r\n isStockistDataEmpty = false;\r\n }\r\n if (customerName) {\r\n Object.assign(customer, { name: customerNameValue });\r\n isStockistDataEmpty = false;\r\n }\r\n }\r\n\r\n if (window.dataLayer) {\r\n\r\n const resultObject = {};\r\n\r\n Object.assign(resultObject,\r\n {\r\n event: eventFull\r\n },\r\n {\r\n interaction: {\r\n category,\r\n action,\r\n label,\r\n value: 1\r\n }\r\n }\r\n );\r\n\r\n collectStockistData(customerType, customerName);\r\n if (!isStockistDataEmpty) {\r\n Object.assign(resultObject, { customer });\r\n }\r\n window.dataLayer.push(resultObject);\r\n }\r\n }\r\n}\r\n\r\nexport default new GTM();\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport { config } from '../../index';\r\nimport MediatorEvents from '../enums/mediatorEvents';\r\nimport MediatorEventModel from '../models/mediatorEventModel';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\nimport GTM from '$Foundation/src/js/gtm/gtmStockistDetails';\r\n\r\nexport default class FilterListingControl extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.firefoxFixImageSize();\r\n }\r\n\r\n static get tagName() {\r\n return 'filter-listing';\r\n }\r\n\r\n static get constructorName() {\r\n return 'filterListingControl';\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.mediator = null;\r\n this.preloader = this.el.querySelector('[data-ref=\"preloader\"]');\r\n this.dataContainer = this.el.querySelector('[data-ref=\"data-container\"]');\r\n this.carouselInstances = [...this.el.querySelectorAll('[data-js-carousel]')];\r\n this.selector = '[data-ref=\"data-container\"]';\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n\r\n addListeners() {\r\n this.addListener(this.dataContainer, 'click', e => this.handleContainerClick(e));\r\n }\r\n firefoxFixImageSize() {\r\n if (navigator.userAgent.indexOf(\"Firefox\") != -1) {\r\n let imagArray = document.getElementsByClassName('rc-card__bagshot')\r\n let imgArrayList = [...imagArray]\r\n imgArrayList.forEach(imag => {\r\n imag.attributes.sizes.value = '200px';\r\n })\r\n }\r\n }\r\n\r\n handleContainerClick(e) {\r\n const filterItemNode = Utils.getClosestNodes(\r\n e.target,\r\n '[data-ref=\"filter-listing-item\"]'\r\n )[0];\r\n\r\n if (!filterItemNode) {\r\n return;\r\n }\r\n\r\n this.pushGoogleTracking(filterItemNode);\r\n\r\n const pinId = filterItemNode.getAttribute('data-id');\r\n const mediatorEvent = new MediatorEventModel();\r\n\r\n const targetPin = config.state.pins.data.filter(x => x.id === pinId)[0];\r\n\r\n mediatorEvent.eventData = {\r\n pinId,\r\n targetPin\r\n };\r\n\r\n mediatorEvent.eventType = MediatorEvents.filterItemclicked;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n pushGoogleTracking(item) {\r\n const trackCategory = item.getAttribute('data-track-category') || '';\r\n const trackLabel = item.getAttribute('data-track-label') || '';\r\n const trackEvent = item.getAttribute('data-track-event') || '';\r\n const trackAction = item.getAttribute('data-track-action') || '';\r\n const trackCustomerType = item.getAttribute('data-track-customer-type') || '';\r\n const trackCustomerName = item.getAttribute('data-track-customer-name') || '';\r\n GTM.push(trackCategory, trackAction, trackLabel, trackEvent, trackCustomerType, trackCustomerName);\r\n }\r\n\r\n updateListing(data, typeOfInsertingContent) {\r\n EventEmitter.emit('content:willRemove', this.dataContainer);\r\n\r\n\r\n if (this.carouselInstances.length > 0) {\r\n this.destroyCarousels();\r\n }\r\n\r\n const dummy = document.createElement('div');\r\n dummy.innerHTML = data;\r\n\r\n const container = dummy.querySelector(`${this.selector}`);\r\n\r\n const html = container ? container.innerHTML : '';\r\n\r\n switch (typeOfInsertingContent) {\r\n case 'append':\r\n this.dataContainer.innerHTML += html;\r\n\r\n break;\r\n\r\n case 'replace':\r\n this.dataContainer.innerHTML = html;\r\n break;\r\n\r\n default:\r\n this.dataContainer.innerHTML = html;\r\n }\r\n\r\n\r\n this.initCarousels();\r\n\r\n const dataObj = {\r\n facets: this.getFacetsData()\r\n };\r\n\r\n EventEmitter.emit('content:updated', this.dataContainer);\r\n EventEmitter.emit('facets:updated', dataObj);\r\n }\r\n\r\n destroyCarousels() {\r\n const carouselInstancesWithinContainer = [\r\n ...this.el.querySelectorAll('[data-js-carousel]')\r\n ];\r\n const carouselInstancesIds = carouselInstancesWithinContainer.map(instance =>\r\n instance.getAttribute('id'));\r\n\r\n const DLObject = Utils.getDLObject();\r\n const RCDLCarouselInstances = DLObject.features.Carousel.instance;\r\n Object.keys(RCDLCarouselInstances).forEach((i) => {\r\n const instance = RCDLCarouselInstances[i];\r\n\r\n if (instance != null && instance.isOn) {\r\n if (carouselInstancesIds.includes(instance.getInfo().container.id)) {\r\n instance.destroy();\r\n }\r\n }\r\n });\r\n }\r\n\r\n initCarousels() {\r\n const carouselInstancesWithinContainer = [\r\n ...this.el.querySelectorAll('[data-js-carousel]')\r\n ];\r\n\r\n const DLObject = Utils.getDLObject();\r\n if (DLObject.features.Carousel) {\r\n carouselInstancesWithinContainer.map((instance) => {\r\n DLObject.features.Carousel.init('[data-js-carousel]', instance);\r\n }\r\n );\r\n }\r\n }\r\n\r\n onDestroy() {\r\n while (this.dataContainer.firstChild) {\r\n this.dataContainer.firstChild.remove();\r\n }\r\n }\r\n\r\n getFacetsData() {\r\n const jsonScriptNode = this.el.querySelector('[data-ref=\"filter-facets-json\"]');\r\n const jsonData = jsonScriptNode ? JSON.parse(jsonScriptNode.innerHTML) : null;\r\n return jsonData;\r\n }\r\n\r\n setActiveItem(target) {\r\n const items = [...this.el.querySelectorAll('[data-ref=\"filter-listing-item\"]')];\r\n items.forEach((item) => {\r\n item.classList.add('is-hidden');\r\n });\r\n const targetEl = this.el.querySelector(`[data-id=\"${target.id}\"]`);\r\n if (targetEl) {\r\n targetEl.classList.remove('is-hidden');\r\n }\r\n }\r\n\r\n resetActiveItems() {\r\n const items = [...this.el.querySelectorAll('[data-ref=\"filter-listing-item\"]')];\r\n items.forEach((item) => {\r\n item.classList.remove('is-hidden');\r\n });\r\n }\r\n\r\n showPreloader() {\r\n const DLClass = Utils.getDLClass();\r\n if (this.preloader) this.preloader.classList.remove(`${DLClass}-hidden`);\r\n }\r\n\r\n hidePreloader() {\r\n const DLClass = Utils.getDLClass();\r\n this.preloader.classList.add(`${DLClass}-hidden`);\r\n }\r\n}\r\n","import axios from 'axios';\r\n\r\nconst instance = axios.create({\r\n timeout: 30000,\r\n headers: { 'X-Requested-With': 'XMLHttpRequest' }\r\n});\r\n\r\ninstance.interceptors.response.use(response => response, error => Promise.reject(error));\r\n\r\nexport default instance;\r\n\r\nexport const CancelToken = axios.CancelToken;\r\nexport const isCancel = axios.isCancel;\r\n","import './styles.scss';\r\n\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Awesomplete from 'awesomplete';\r\nimport api from '$Foundation/src/js/api';\r\n\r\nexport default class AutoComplete extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isIE = document.querySelector('html').classList.contains('ie11');\r\n }\r\n\r\n static get tagName() {\r\n return 'autocomplete';\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.inputNode = this.el.querySelector('[data-ref=\"input\"]');\r\n this.searchButtonNode = this.el.querySelector('[data-ref=\"search-button\"]');\r\n this.autoCompleteInstanse = null;\r\n this.autoCompleteEnabled = this.el.getAttribute('data-autocomplete-enabled')\r\n ? this.el.getAttribute('data-autocomplete-enabled') === 'true'\r\n : true;\r\n\r\n this.jsonData = null;\r\n this.preDefinedSuggestion = null;\r\n\r\n this.isValueSelected = false;\r\n this.endPoint = this.el.getAttribute('data-endpoint');\r\n this.minChairs = 2;\r\n this.maxItems = 100;\r\n this.onKeyUpTimeOut = null;\r\n this.loadingTime = 300;\r\n\r\n this.settings = { ...this.defaultSettings, ...this.el.dataset };\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.inputNode, 'input', e => this.handleInputFill(e));\r\n this.addListener(this.inputNode, 'focus', e => this.handleInputFocus(e));\r\n this.addListener(this.inputNode, 'blur', e => this.handleInputBlur(e));\r\n this.addListener(this.inputNode, 'awesomplete-selectcomplete', e =>\r\n this.handleAwesompleteSelectComplete(e));\r\n this.addListener(this.inputNode, 'input', e => this.handleInput(e));\r\n this.addListener(this.el, 'submit', e => this.handleSubmit(e));\r\n this.addListener(this.searchButtonNode, 'click', e => this.handleSearchButtonClick(e));\r\n\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n\r\n if (this.autoCompleteEnabled) {\r\n this.createAutocompleteInstanse();\r\n }\r\n }\r\n\r\n get defaultSettings() {\r\n return {\r\n mainClass: 'autocomplete',\r\n listClass: 'autocomplete__list',\r\n listWithFeaturedClass: 'autocomplete__list--featured'\r\n };\r\n }\r\n\r\n get awesompleteSettings() {\r\n return {\r\n minChars: this.minChairs,\r\n maxItems: this.maxItems,\r\n filter: () => true,\r\n sort: false,\r\n item: (text, input) => {\r\n const inputRegexPattern = Awesomplete.$.regExpEscape(input.trim());\r\n // highlight only if word starts with pattern\r\n const regExp = RegExp(`^${inputRegexPattern}|[\\\\s]+${inputRegexPattern}`, 'gi');\r\n const html = input.trim() === '' ? text : text.replace(regExp, '$&');\r\n return Awesomplete.$.create('li', {\r\n innerHTML: html,\r\n 'aria-selected': 'false'\r\n });\r\n },\r\n data: (item) => {\r\n const suggestionObj = {\r\n label: item.Title,\r\n value: item.Title,\r\n url: item.Url\r\n };\r\n return suggestionObj;\r\n }\r\n };\r\n }\r\n\r\n createAutocompleteInstanse() {\r\n this.autoCompleteInstanse = new Awesomplete(this.inputNode, {\r\n ...this.awesompleteSettings,\r\n ...this.settings\r\n });\r\n\r\n this.autoCompleteInstanse.container.className += ` ${this.settings.mainClass}`;\r\n this.autoCompleteInstanse.ul.classList.add(this.settings.listClass);\r\n }\r\n\r\n\r\n setDataFromModel() {\r\n const list = [...this.jsonData.Items];\r\n if (this.jsonData.FeaturedItems && this.jsonData.FeaturedItems.length > 0) {\r\n list.push(...this.jsonData.FeaturedItems);\r\n this.autoCompleteInstanse.ul.classList.add(this.settings.listWithFeaturedClass);\r\n } else {\r\n this.autoCompleteInstanse.ul.classList.remove(this.settings.listWithFeaturedClass);\r\n }\r\n\r\n if (this.autoCompleteEnabled) {\r\n this.autoCompleteInstanse.list = list;\r\n }\r\n let listElements = document.querySelectorAll('ul.autocomplete__list li');\r\n\r\n if (listElements != null) {\r\n for (var i = 0; i < listElements.length -1; i++) {\r\n listElements[i].onclick = function () {\r\n handleDataLayerSearchResultClick(listElements, this);\r\n }\r\n listElements[i].mousedown = function () {\r\n handleDataLayerSearchResultClick(listElements, this);\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleSubmit(e) {\r\n if (this.inputNode.value.length < this.minChairs) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n handleSearchButtonClick(e) {\r\n e.preventDefault();\r\n if (this.inputNode.value.length >= this.minChairs) {\r\n this.autoCompleteInstanse.goto(0);\r\n const suggestion = this.autoCompleteInstanse.suggestions[\r\n this.autoCompleteInstanse.index\r\n ];\r\n this.inputNode.value = suggestion.value;\r\n Awesomplete.$.fire(this.inputNode, 'awesomplete-selectcomplete', {\r\n text: suggestion\r\n });\r\n }\r\n }\r\n\r\n handleInput() {\r\n const isVetFocus = Utils.isVetFocus();\r\n if (isVetFocus && this.inputNode.type !== \"search\") return; \r\n\r\n if (this.inputNode.value.length < this.minChairs || !this.autoCompleteEnabled) return;\r\n\r\n if (this.onKeyUpTimeOut) {\r\n clearTimeout(this.onKeyUpTimeOut);\r\n }\r\n const inputValue = this.isIE ? this.utfEightStringToBytes(this.inputNode.value) : this.inputNode.value;\r\n const searchQuery = {\r\n keyword: inputValue.replace(/ /g, '+')\r\n };\r\n const queryString = Utils.convertToQuery(searchQuery, this.endPoint);\r\n const url = `${this.endPoint}${queryString}`;\r\n\r\n this.onKeyUpTimeOut = setTimeout(() => {\r\n api.get(url).then((response) => {\r\n this.jsonData = response.data;\r\n this.preDefinedSuggestion =\r\n this.jsonData.FeaturedItems && this.jsonData.FeaturedItems[0]\r\n ? this.jsonData.FeaturedItems[0].Title\r\n : 'undefined';\r\n this.setDataFromModel();\r\n\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n var totalResults = this.jsonData.FeaturedItems && this.jsonData.FeaturedItems[0]\r\n ? this.jsonData.FeaturedItems[0].TotalResults : \"\";\r\n dataLayer.push({\r\n 'event': 'instantSearchResultDisplay',\r\n 'instantSearchResultDisplay': {\r\n 'query': searchQuery.keyword, //Query as written by the user\r\n 'results': totalResults\r\n }\r\n })\r\n console.log(\"Event - instantSearchResultDisplay added\");\r\n });\r\n }, this.loadingTime);\r\n }\r\n\r\n utfEightStringToBytes(str) {\r\n const numArr = this.textEncode(str);\r\n let bytes = [];\r\n\r\n for (let i = 0; i < numArr.length; i++) {\r\n bytes = bytes.concat([`%${Math.abs(numArr[i]).toString(16).toUpperCase()}`])\r\n }\r\n\r\n return bytes.join('');\r\n }\r\n\r\n textEncode(str) {\r\n var utf8 = unescape(encodeURIComponent(str));\r\n var result = new Uint8Array(utf8.length);\r\n for (var i = 0; i < utf8.length; i++) {\r\n result[i] = utf8.charCodeAt(i);\r\n }\r\n return result;\r\n }\r\n\r\n handleInputFill(e) {\r\n if (e.target.value.trim() !== '') {\r\n this.el.classList.add('is-filled');\r\n } else {\r\n this.el.classList.remove('is-filled');\r\n }\r\n }\r\n\r\n handleInputFocus() {\r\n this.el.classList.add('is-focused');\r\n }\r\n\r\n handleInputBlur() {\r\n this.el.classList.remove('is-focused');\r\n }\r\n\r\n resetInputValue() {\r\n this.inputNode.value = '';\r\n this.el.classList.remove('is-focused');\r\n this.el.classList.remove('is-filled');\r\n }\r\n\r\n handleAwesompleteSelectComplete(e) {\r\n this.isValueSelected = true;\r\n\r\n const url = this.autoCompleteInstanse._list.filter(function (x) {\r\n return x.Title === e.text.label\r\n })[0].Url;\r\n\r\n window.location.href = url;\r\n }\r\n\r\n onDestroy() {\r\n this.autoCompleteInstanse.destroy();\r\n }\r\n}\r\nvar handleDataLayerSearchResultClick = function(listElements, element) {\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n 'event': 'instantSearchResultClick',\r\n 'instantSearchResultClick': {\r\n 'name': element.innerText, //Article name, as written on the list\r\n 'position': Array.prototype.indexOf.call(listElements, element) + 1 //Position of the article in the list\r\n }\r\n })\r\n console.log(\"Event - instantSearchResultClick added\");\r\n};\r\n","import GTM from '$Foundation/src/js/gtm/gtmPetDetails';\r\nimport { config } from '../index';\r\n\r\nclass FilterTrackingService {\r\n static getTrackingCategory() {\r\n return 'category' in config.tracking ? config.tracking.category : null;\r\n }\r\n\r\n static isTrackingEnabled() {\r\n return this.getTrackingCategory() !== null;\r\n }\r\n\r\n static triggerTracking(action, label, event, breedId, specieId, age, category) {\r\n GTM.push(\r\n category || this.getTrackingCategory(),\r\n action,\r\n label,\r\n event,\r\n breedId,\r\n specieId,\r\n age\r\n );\r\n }\r\n}\r\n\r\nexport default FilterTrackingService;\r\n","import Utils from '$Foundation/src/js/utils';\r\nimport AutoComplete from '../../../autocomplete';\r\nimport { config } from '../../index';\r\nimport MediatorEvents from '../enums/mediatorEvents';\r\nimport MediatorEventModel from '../models/mediatorEventModel';\r\nimport FilterTrackingService from '../filterTrackingService';\r\n\r\nexport default class FilterSearchControl extends AutoComplete {\r\n static get tagName() {\r\n return 'filter-search';\r\n }\r\n\r\n static get constructorName() {\r\n return 'filterSearchControl';\r\n }\r\n\r\n setVariables() {\r\n super.setVariables();\r\n this.mediator = null;\r\n this.searchButtonNode = this.el.querySelector('[data-ref=\"filter-search-button\"]');\r\n\r\n this.inputSearchString = this.el.querySelector('[data-ref=\"input\"]');\r\n this.trackCategory = this.inputSearchString.getAttribute('data-track-category') || '';\r\n this.trackLabel = this.inputSearchString.getAttribute('data-track-label') || '';\r\n this.trackEvent = this.inputSearchString.getAttribute('data-track-event') || '';\r\n this.trackAction = this.inputSearchString.getAttribute('data-track-action') || '';\r\n this.trackBreedId = this.inputSearchString.getAttribute('data-track-breed-id') || '';\r\n this.trackSpecieId = this.inputSearchString.getAttribute('data-track-specie-id') || '';\r\n this.trackAge = this.inputSearchString.getAttribute('data-track-age') || '';\r\n }\r\n\r\n addListeners() {\r\n super.addListeners();\r\n this.addListener(this.inputNode, 'keyup', e => this.handleInputKeyUp(e));\r\n this.addListener(this.searchButtonNode, 'click', () => this.handleSearchButtonClick());\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n handleInputKeyUp(e) {\r\n e.preventDefault();\r\n if (e.keyCode === 13) {\r\n if (this.isValueSelected) {\r\n this.isValueSelected = false;\r\n return;\r\n }\r\n\r\n if (this.autoCompleteEnabled) {\r\n this.autoCompleteInstanse.close();\r\n }\r\n if (this.inputNode.value.length < this.minChairs || !this.autoCompleteEnabled) {\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.search;\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n searchQuery.searchQuery = '';\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n else {\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.search;\r\n \r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n searchQuery.searchQuery = this.getInputValue();\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n \r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n } \r\n }\r\n }\r\n\r\n handleSearchButtonClick() {\r\n if (this.inputNode.value.length < this.minChairs || !this.autoCompleteEnabled) {\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.search;\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n searchQuery.searchQuery = '';\r\n config.state.map.bounds = {};\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n\r\n mediatorEvent.trackDetails = this.getTrackDetails();\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n else {\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.search;\r\n \r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n searchQuery.searchQuery = this.getInputValue();\r\n config.state.map.bounds = {};\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n \r\n mediatorEvent.trackDetails = this.getTrackDetails();\r\n \r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n \r\n }\r\n\r\n handleAwesompleteSelectComplete(e) {\r\n this.isValueSelected = true;\r\n const suggestionText = e.target.value;\r\n if (this.type === 'places-search') {\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.search;\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n config.state.map.bounds = {};\r\n searchQuery.searchQuery = this.getInputValue();\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n } else {\r\n if (FilterTrackingService.isTrackingEnabled()) {\r\n FilterTrackingService.triggerTracking(\r\n 'Predictive search suggestion click',\r\n `${this.inputNodeValue} > ${suggestionText}`\r\n );\r\n }\r\n const url = this.autoCompleteInstanse._list.find(x => x.Title === e.text.label).Url;\r\n window.location.href = url;\r\n }\r\n }\r\n\r\n handleGetCurrentPosition() {\r\n if (Utils.isEukanuba()) {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n position => this.handleSuccessPosition(position),\r\n error => this.handleErrorPosition(error)\r\n );\r\n } else {\r\n throw new Error('Geolocation is not supported by this browser');\r\n }\r\n }\r\n }\r\n \r\n handleSuccessPosition(position) {\r\n const { latitude, longitude } = position.coords;\r\n \r\n const mediatorEvent = new MediatorEventModel();\r\n this.resetInputValue();\r\n mediatorEvent.eventType = MediatorEvents.getCurrentPosition;\r\n \r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n const bounds = config.state.map.bounds;\r\n if (Array.isArray(bounds)) Object.assign(searchQuery, ...bounds);\r\n searchQuery.latitude = latitude;\r\n searchQuery.longitude = longitude;\r\n searchQuery.isLocal = true;\r\n \r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.position = position;\r\n \r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n \r\n handleErrorPosition(error) {\r\n throw new Error(`ERROR(${error.code}): ${error.message}`);\r\n }\r\n\r\n handleErrorPosition(error) {\r\n throw new Error(`ERROR(${error.code}): ${error.message}`);\r\n }\r\n\r\n getInputValue() {\r\n return this.inputNode.value;\r\n }\r\n\r\n getTrackDetails() {\r\n const trackDetails = {\r\n category: this.trackCategory,\r\n label: this.trackLabel,\r\n event: this.trackEvent,\r\n breedId: this.trackBreedId,\r\n specieId: this.trackSpecieId,\r\n age: this.trackAge\r\n };\r\n return trackDetails;\r\n }\r\n}\r\n","import EventEmitter from '$Foundation/src/js/EventEmitter';\r\n\r\nclass MapScriptObserver {\r\n constructor() {\r\n this._isLoaded = null;\r\n this.subscribers = [];\r\n this.onMapApiDone = this.onMapApiDone.bind(this);\r\n }\r\n\r\n onMapApiDone() {\r\n this._isLoaded = true;\r\n this.subscribers.forEach(cb => cb());\r\n }\r\n\r\n isLoaded() {\r\n if (this._isLoaded === null) {\r\n if (window.mapIsInitialized) {\r\n this._isLoaded = true;\r\n } else {\r\n this._isLoaded = false;\r\n EventEmitter.subscribe('map:initialized', this.onMapApiDone.bind(this));\r\n }\r\n }\r\n\r\n return this._isLoaded;\r\n }\r\n\r\n onLoad(cb) {\r\n if (this.isLoaded()) {\r\n cb();\r\n } else {\r\n this.subscribers.push(cb);\r\n }\r\n }\r\n}\r\n\r\nconst instance = new MapScriptObserver();\r\n\r\nexport default instance;\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport Utils from \"$Foundation/src/js/utils\";\r\nimport { config } from \"../../index\";\r\nimport MediatorEvents from \"../enums/mediatorEvents\";\r\nimport MediatorEventModel from \"../models/mediatorEventModel\";\r\n\r\nexport default class FilterStockistsControl extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n static get tagName() {\r\n return \"stockists-filter-panel\";\r\n }\r\n\r\n static get constructorName() {\r\n return \"filterStockistsControl\";\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n setTimeout(() => {\r\n this.initFilters();\r\n }, 1000);\r\n }\r\n\r\n setVariables() {\r\n this.mediator = null;\r\n this.IsFilterApplied = false;\r\n //stockist filters\r\n this.filters = {};\r\n\r\n this.filterButton = this.el.querySelector(\r\n '[data-ref=\"stockist-filter-button\"]'\r\n );\r\n\r\n this.filterResultBox = this.el.querySelector(\r\n '[data-ref=\"stockist-filter-result\"]'\r\n );\r\n\r\n this.filterCloseButton = this.el.querySelector(\r\n '[data-ref=\"stockist-close-filter-button\"]'\r\n );\r\n this.filterDiscardButton = this.el.querySelector(\r\n '[data-ref=\"stockist-discard-filter-button\"]'\r\n );\r\n this.filterClearButton = this.el.querySelectorAll(\r\n '[data-ref=\"stockist-clear-filter-button\"]'\r\n );\r\n this.filterApplyButton = this.el.querySelector(\r\n '[data-ref=\"stockist-apply-filter-button\"]'\r\n );\r\n this.filterActiveState = this.el.querySelector(\r\n '[data-ref=\"stockist-filters-active\"]'\r\n );\r\n this.filterActiveNum = this.el.querySelector(\r\n '[data-ref=\"stockist-filters-active-filters-num\"]'\r\n );\r\n this.filterEditActive = this.el.querySelector(\r\n '[data-ref=\"stockist-edit-filter-button\"]'\r\n );\r\n this.filterClearAllActive = this.el.querySelector(\r\n '[data-ref=\"stockist-clear-all-filters-button\"]'\r\n );\r\n this.checkboxes = [\r\n ...this.el.querySelectorAll('[data-ref=\"stockist-filter-checkbox\"]'),\r\n ];\r\n this.categories = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-category\"]'),\r\n ];\r\n\r\n this.isHistoryApiEnabled = !!(window.history && window.history.pushState);\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.filterEditActive, \"click\", (e) =>\r\n this.handleEditActiveFilters(e)\r\n );\r\n this.addListener(this.filterClearAllActive, \"click\", (e) =>\r\n this.handleClearAllActiveFilters(e)\r\n );\r\n this.addListener(this.filterApplyButton, \"click\", (e) =>\r\n this.handleApplyFilters(e)\r\n );\r\n this.addListener(this.filterButton, \"click\", () =>\r\n this.handleFilterButtonClick()\r\n );\r\n this.addListener(this.filterCloseButton, \"click\", () =>\r\n this.handleFilterCloseButtonClick()\r\n );\r\n this.addListener(this.filterDiscardButton, \"click\", () =>\r\n this.handleFilterDiscardButtonClick()\r\n );\r\n this.checkboxes.forEach((item) => {\r\n this.addListener(item, \"change\", (e) =>\r\n item.checked\r\n ? this.handleCheckboxChecked(e)\r\n : this.handleCheckboxUncheck(e)\r\n );\r\n });\r\n this.filterClearButton.forEach((button) => {\r\n this.addListener(button, \"click\", (e) =>\r\n this.handleFilterCategoryClearButtonClick(e)\r\n );\r\n });\r\n }\r\n\r\n handleFilterButtonClick() {\r\n this.filterButton.classList.toggle(\"rc-hidden\");\r\n this.filterResultBox.classList.toggle(\"is-opened\");\r\n }\r\n\r\n handleFilterCloseButtonClick() {\r\n this.filterResultBox.classList.toggle(\"is-opened\");\r\n this.getFiltersFromUrl();\r\n if (Object.keys(this.filters).length !== 0) {\r\n this.filterActiveState.classList.toggle(\"rc-hidden\");\r\n } else {\r\n this.filterButton.classList.toggle(\"rc-hidden\");\r\n }\r\n this.handleDatalayerEvent(\"Close Filter\");\r\n }\r\n\r\n handleEditActiveFilters() {\r\n this.filterResultBox.classList.toggle(\"is-opened\");\r\n this.filterActiveState.classList.toggle(\"rc-hidden\");\r\n }\r\n\r\n handleFilterCategoryClearButtonClick(e) {\r\n const filterCategoryNode = Utils.getClosestNodes(\r\n e.target,\r\n '[data-ref=\"filter-category\"]'\r\n )[0];\r\n const filterCategoryId = filterCategoryNode\r\n .getAttribute(\"data-filter-category\")\r\n .toLowerCase();\r\n\r\n filterCategoryNode\r\n .querySelectorAll('[data-ref=\"stockist-filter-checkbox\"]')\r\n .forEach((item) => (item.checked = false));\r\n\r\n delete this.filters[filterCategoryId];\r\n }\r\n\r\n handleClearAllActiveFilters() {\r\n this.filterButton.classList.toggle(\"rc-hidden\");\r\n this.filterActiveState.classList.toggle(\"rc-hidden\");\r\n this.handleClearFilters();\r\n }\r\n\r\n handleClearFilters() {\r\n this.clearFilters();\r\n this.clearCheckboxes();\r\n this.IsFilterApplied = false;\r\n this.handleMediatorEvent();\r\n this.handleDatalayerEvent(\"Clear all\");\r\n }\r\n\r\n handleFilterDiscardButtonClick() {\r\n this.filterButton.classList.toggle(\"rc-hidden\");\r\n this.filterResultBox.classList.toggle(\"is-opened\");\r\n this.handleClearFilters();\r\n }\r\n\r\n handleApplyFilters() {\r\n this.handleFilterActiveState();\r\n this.IsFilterApplied = (this.checkboxes.filter((item) => item.checked).length > 0);\r\n this.handleMediatorEvent();\r\n this.handleDatalayerEvent(\"Apply filters\");\r\n }\r\n\r\n handleMediatorEvent() {\r\n const mediatorEvent = new MediatorEventModel();\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const contactTypes =\r\n urlParams.get(\"contacttypes\") && urlParams.get(\"contacttypes\");\r\n const sortResultsBy =\r\n urlParams.get(\"sortresultsby\") && urlParams.get(\"sortresultsby\");\r\n\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n\r\n if (config.filterSearchControl) {\r\n searchQuery.searchQuery = config.filterSearchControl.getInputValue();\r\n }\r\n\r\n mediatorEvent.searchQuery = searchQuery;\r\n const bounds = config.state.map.bounds;\r\n if (Array.isArray(bounds)) Object.assign(searchQuery, ...bounds);\r\n searchQuery.latitude = config.state.map.latitude;\r\n searchQuery.longitude = config.state.map.longitude;\r\n searchQuery.currentLatitude = config.state.map.currentLatitude;\r\n searchQuery.currentLongitude = config.state.map.currentLongitude;\r\n searchQuery.page = urlParams.get(\"page\");\r\n\r\n if (contactTypes) {\r\n searchQuery.contacttypes = contactTypes;\r\n }\r\n\r\n if (sortResultsBy) {\r\n searchQuery.sortresultsby = sortResultsBy;\r\n }\r\n\r\n searchQuery.isLocal =\r\n searchQuery.searchQuery != null && searchQuery.searchQuery.length > 0\r\n ? false\r\n : true;\r\n\r\n for (const [key, value] of Object.entries(this.filters)) {\r\n searchQuery[key] = value;\r\n }\r\n\r\n if (this.IsFilterApplied) searchQuery.IsFilterApplied = true;\r\n\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.eventType = MediatorEvents.filterChanged;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n createMediatorEventModel(eventType, data) {\r\n const mediatorEvent = new MediatorEventModel();\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n searchQuery.searchQuery = config.filterSearchControl.getInputValue();\r\n\r\n if (data && data.viewAll) {\r\n searchQuery.viewAll = data.viewAll;\r\n }\r\n mediatorEvent.searchQuery = searchQuery;\r\n\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.eventType = MediatorEvents[`${eventType}`];\r\n\r\n return mediatorEvent;\r\n }\r\n\r\n handleFilterActiveState() {\r\n this.filterActiveNum.innerHTML = `(${\r\n this.checkboxes.filter((item) => item.checked).length\r\n })`;\r\n\r\n this.filterButton.classList.toggle(\"rc-hidden\");\r\n this.filterActiveState.classList.toggle(\"rc-hidden\");\r\n }\r\n\r\n handleCheckboxChecked(e) {\r\n const filterCategoryId = Utils.getClosestNodes(\r\n e.target,\r\n '[data-ref=\"filter-category\"]'\r\n )[0]\r\n .getAttribute(\"data-filter-category\")\r\n .toLowerCase();\r\n if (this.filters[filterCategoryId] === undefined)\r\n this.filters[filterCategoryId] = [];\r\n this.filters[filterCategoryId].push(e.target.value);\r\n }\r\n\r\n handleCheckboxUncheck(e) {\r\n const filterCategoryId = Utils.getClosestNodes(\r\n e.target,\r\n '[data-ref=\"filter-category\"]'\r\n )[0]\r\n .getAttribute(\"data-filter-category\")\r\n .toLowerCase();\r\n if (this.filters[filterCategoryId] === undefined)\r\n this.filters[filterCategoryId] = [];\r\n if (this.filters[filterCategoryId].indexOf(e.target.value) > -1) {\r\n this.filters[filterCategoryId].splice(\r\n this.filters[filterCategoryId].indexOf(e.target.value),\r\n 1\r\n );\r\n }\r\n if (this.filters[filterCategoryId].length === 0) {\r\n delete this.filters[filterCategoryId];\r\n }\r\n }\r\n\r\n initFilters() {\r\n this.getFiltersFromUrl();\r\n if (Object.keys(this.filters).length !== 0) {\r\n this.handleFilterActiveState();\r\n }\r\n }\r\n\r\n getFiltersFromUrl() {\r\n const params = new URLSearchParams(document.location.search.substring(1));\r\n const allCategories = this.getAllCategories();\r\n this.clearCheckboxes();\r\n\r\n allCategories.forEach((category) => {\r\n if (this.filters[category] === undefined) this.filters[category] = [];\r\n\r\n if (params.get(category) !== null) {\r\n params\r\n .get(category)\r\n .split(\",\")\r\n .forEach((item) => {\r\n if (this.filters[category].indexOf(item) === -1)\r\n this.filters[category].push(item);\r\n this.checkboxes.forEach((checkbox) => {\r\n if (checkbox.value === item) checkbox.checked = true;\r\n });\r\n });\r\n } else {\r\n delete this.filters[category];\r\n }\r\n });\r\n }\r\n\r\n getAllCategories() {\r\n return this.categories.map((item) =>\r\n item.getAttribute(\"data-filter-category\").toLowerCase()\r\n );\r\n }\r\n\r\n clearCheckboxes() {\r\n this.checkboxes.forEach((item) => (item.checked = false));\r\n }\r\n\r\n clearFilters() {\r\n this.filters = {};\r\n }\r\n\r\n getAllFilters() {\r\n return this.filters;\r\n }\r\n\r\n handleDatalayerEvent(event) {\r\n let dataLayer = (window.dataLayer = window.dataLayer || []);\r\n dataLayer.push({\r\n event: \"RCGlobalMC1dealerFinderFilterInteraction\",\r\n dealerFinderFilterInteraction: event, //'Close Filter', 'Clear all', 'Apply filters', depending on clicked button\r\n });\r\n }\r\n}\r\n","import Utils from '$Foundation/src/js/utils';\r\nimport { config } from '../../../index';\r\nimport MediatorEvents from '../../enums/mediatorEvents';\r\nimport MediatorEventModel from '../../models/mediatorEventModel';\r\nimport MapScriptObserver from '../mapScriptObserver';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport FilterStockistsControl from '../filterStockistsControl';\r\n\r\nexport default class FilterPlacesSearchControl extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n\r\n MapScriptObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'filter-places-search';\r\n }\r\n\r\n static get constructorName() {\r\n // Use the same name as filterSearchControl\r\n return 'filterSearchControl';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initializeAutocomplete();\r\n const locateMeBtn = document.querySelector('[data-ref=\"locate-to-me-btn\"]');\r\n if (typeof google !== 'object' || typeof google.maps !== 'object') {\r\n this.loadGoogleMap();\r\n }\r\n if (!Utils.isEukanuba()) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const locationShared = urlParams.get('location') && urlParams.get('location');\r\n locationShared && window.addEventListener('load', () => {\r\n setTimeout(() => {\r\n window.RCDL && window.RCDL.click(locateMeBtn);\r\n }, 2000);\r\n });\r\n }\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.currentPositionBtn = this.el.querySelector('[data-ref=\"locate-to-me-btn\"]');\r\n this.searchFieldNode = this.el.querySelector('[data-ref=\"filter-input\"]');\r\n this.searchButtonNode = this.el.querySelector('[data-ref=\"filter-search-btn\"]');\r\n this.currentCulture = this.el.getAttribute('data-search-current-culture');\r\n\r\n this.hasDownBeenPressed = false;\r\n this.trackCategory = this.searchFieldNode.getAttribute('data-track-category') || '';\r\n this.trackLabel = this.searchFieldNode.getAttribute('data-track-label') || '';\r\n this.trackEvent = this.searchFieldNode.getAttribute('data-track-event') || '';\r\n this.trackAction = this.searchFieldNode.getAttribute('data-track-action') || '';\r\n this.trackBreedId = this.searchFieldNode.getAttribute('data-track-breed-id') || '';\r\n this.trackSpecieId = this.searchFieldNode.getAttribute('data-track-specie-id') || '';\r\n this.trackAge = this.searchFieldNode.getAttribute('data-track-age') || '';\r\n\r\n this.mapType = document.querySelector('body').getAttribute('data-map-type');\r\n this.filteredStockists = document.querySelectorAll('[data-ref=\"filter-listing-item\"]');\r\n\r\n this.deleteInputValueBtn = this.el.querySelector('[data-ref=\"delete-value-button\"]');\r\n\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.searchFieldNode, 'input', e => this.updateSearchFieldInputValue(e));\r\n this.addListener(this.searchButtonNode, 'click', e => this.handlePlacesSearch(e));\r\n this.addListener(this.searchFieldNode, 'keydown', e => this.handleKeyDown(e));\r\n this.addListener(this.searchFieldNode, 'focus', () => this.handleSearchFieldFocus());\r\n this.filteredStockists.forEach((item, i) => {\r\n this.addListener(item, 'click', e => this.handleStockistClicked(e, i));\r\n });\r\n this.addListener(this.deleteInputValueBtn, 'click', e => this.resetInputValue(e));\r\n\r\n this.addListener(this.currentPositionBtn, 'click', e => this.handleGetCurrentPosition(e));\r\n \r\n const interval = setInterval(() => {\r\n if (typeof google === 'object' && typeof google.maps === 'object') {\r\n window.google.maps.event.addDomListener(this.searchFieldNode, 'keydown', (e) => {\r\n e.cancelBubble = true;\r\n if (e.keyCode === 13 || e.keyCode === 9) {\r\n if (!this.hasDownBeenPressed) {\r\n const event = document.createEvent('Event');\r\n event.keyCode = 40;\r\n event.which = 40;\r\n event.key = 40;\r\n event.initEvent('keydown', true, true, false, 40);\r\n this.searchFieldNode.dispatchEvent(event);\r\n this.hasDownBeenPressed = true;\r\n }\r\n }\r\n });\r\n clearInterval(interval);\r\n }\r\n }, 250);\r\n }\r\n\r\n updateSearchFieldInputValue(e) {\r\n this.searchFieldNode.setAttribute(\"value\", e.target.value);\r\n }\r\n\r\n handleStockistClicked(e, i) {\r\n this.filteredStockists.forEach(stockist => {\r\n if (stockist.classList.contains(`stockist-${i}`)) {\r\n stockist.classList.add('rc-stockist-list__list-item--active')\r\n } else {\r\n stockist.classList.remove('rc-stockist-list__list-item--active')\r\n }\r\n });\r\n }\r\n\r\n handleSearchFieldFocus() {\r\n this.hasDownBeenPressed = false;\r\n }\r\n\r\n handleKeyDown(e) {\r\n if (e.keyCode === 40) {\r\n this.hasDownBeenPressed = true;\r\n } else if (e.keyCode ===13) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n initializeAutocomplete() {\r\n const cultures = JSON.parse(this.currentCulture);\r\n const options = {\r\n componentRestrictions: { country: cultures }\r\n };\r\n\r\n const interval = setInterval(() => {\r\n if (typeof google === 'object' && typeof google.maps === 'object') {\r\n\r\n this.autocomplete = new window.google.maps.places.Autocomplete(this.searchFieldNode, {\r\n options\r\n });\r\n\r\n this.autocomplete.setFields(['address_components', 'geometry', 'name']);\r\n window.google.maps.event.addListener(\r\n this.autocomplete,\r\n 'place_changed',\r\n this.handlePlaceChanged.bind(this)\r\n ); \r\n clearInterval(interval);\r\n }\r\n }, 250);\r\n\r\n }\r\n\r\n loadGoogleMap() { \r\n const gmapApiKey =\r\n window.initialWebsiteConfig && window.initialWebsiteConfig.googleMapApiKey\r\n ? window.initialWebsiteConfig.googleMapApiKey\r\n : '';\r\n\r\n const mapscript = document.createElement('script');\r\n mapscript.type = 'text/javascript';\r\n mapscript.async = true;\r\n mapscript.src = `//maps.googleapis.com/maps/api/js?key=${gmapApiKey}&callback=gmapInitialize&libraries=places`;\r\n document.body.appendChild(mapscript);\r\n }\r\n\r\n handlePlacesSearch() {\r\n if (!this.hasDownBeenPressed) {\r\n const event = document.createEvent('Event');\r\n event.keyCode = 13;\r\n event.which = 13;\r\n event.key = 13;\r\n event.initEvent('keydown', true, true, false, 13);\r\n this.searchFieldNode.dispatchEvent(event);\r\n }\r\n }\r\n\r\n handlePlaceChanged() {\r\n const place = this.autocomplete.getPlace(); \r\n const mapZoomElement = document.getElementsByClassName('filter-map-custom')[0];\r\n // default map zoom value\r\n let mapZoom = 10;\r\n const placesArray = place && place.address_components;\r\n\r\n if (!Utils.isEukanuba()) {\r\n if (typeof placesArray !== 'undefined') {\r\n const types = placesArray.map(x => x.types).flat();\r\n if (types.includes('route')) {\r\n mapZoom = 15;\r\n } else if (types.includes('locality')) {\r\n mapZoom = 12;\r\n } else if (types.includes('sublocality')) {\r\n mapZoom = 8;\r\n }\r\n }\r\n }\r\n\r\n if (typeof place.address_components !== 'undefined') {\r\n this.hasDownBeenPressed = false;\r\n }\r\n\r\n const placeName = place.name;\r\n const location = place.geometry ? place.geometry.location : null;\r\n\r\n mapZoomElement.setAttribute('data-zoom', mapZoom);\r\n this.handleSelectPlace(placeName, location);\r\n\r\n if(!document.querySelector(\"header\")){\r\n document.querySelector(\"main\").classList.remove(\"rc-content--fixed-header\")\r\n }\r\n }\r\n\r\n handleSelectPlace(placeName, location) {\r\n const mediatorEvent = new MediatorEventModel();\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const map = config.state.map;\r\n const urlCurrentLatitude = urlParams.get('currentLatitude') && urlParams.get('currentLatitude');\r\n const urlCurrentLongitude = urlParams.get('currentLongitude') && urlParams.get('currentLongitude');\r\n const urlLatitude = urlParams.get('latitude') && urlParams.get('latitude');\r\n const urlLongitude = urlParams.get('longitude') && urlParams.get('longitude');\r\n const contactTypes = urlParams.get('contacttypes') && urlParams.get('contacttypes');\r\n const sortResultsBy = urlParams.get('sortresultsby') && urlParams.get('sortresultsby');\r\n mediatorEvent.eventType = MediatorEvents.search;\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n config.state.map.bounds = {};\r\n\r\n if (placeName) {\r\n searchQuery.searchQuery = placeName;\r\n } else {\r\n searchQuery.searchQuery = urlParams.get('searchQuery') && urlParams.get('searchQuery');\r\n }\r\n\r\n if (location) {\r\n searchQuery.latitude = location.lat();\r\n config.state.map.latitude = location.lat();\r\n searchQuery.longitude = location.lng();\r\n config.state.map.longitude = location.lng();\r\n } else {\r\n searchQuery.latitude = urlLatitude;\r\n searchQuery.longitude = urlLongitude;\r\n }\r\n \r\n if (map.currentLatitude && map.currentLongitude) {\r\n searchQuery.currentLatitude = map.currentLatitude;\r\n searchQuery.currentLongitude = map.currentLongitude;\r\n } else {\r\n searchQuery.currentLatitude = urlCurrentLatitude;\r\n searchQuery.currentLongitude = urlCurrentLongitude;\r\n }\r\n\r\n if (contactTypes) {\r\n searchQuery.contacttypes = contactTypes;\r\n }\r\n\r\n if (sortResultsBy) {\r\n searchQuery.sortresultsby = sortResultsBy;\r\n }\r\n\r\n // keeping filters related url params\r\n const isLocal = urlParams.get(\"isLocal\");\r\n if (isLocal) {\r\n searchQuery.isLocal = isLocal;\r\n\r\n if (!Utils.isEukanuba()) {\r\n searchQuery.isLocal =\r\n !(searchQuery.searchQuery != null\r\n && searchQuery.searchQuery.length > 0);\r\n }\r\n }\r\n\r\n const isFilterApplied = urlParams.get(\"IsFilterApplied\");\r\n if (isFilterApplied) {\r\n searchQuery.IsFilterApplied = isFilterApplied;\r\n }\r\n\r\n const filter1 = urlParams.get(\"filter1\");\r\n if (filter1) {\r\n searchQuery.filter1 = filter1;\r\n }\r\n const filter2 = urlParams.get(\"filter2\");\r\n if (filter2) {\r\n searchQuery.filter2 = filter2;\r\n }\r\n const filter3 = urlParams.get(\"filter3\");\r\n if (filter3) {\r\n searchQuery.filter3 = filter3;\r\n }\r\n\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n\r\n mediatorEvent.trackDetails = this.getTrackDetails();\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n handleGetCurrentPosition() {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n position => this.handleSuccessPosition(position),\r\n error => this.handleErrorPosition(error)\r\n );\r\n } else {\r\n throw new Error('Geolocation is not supported by this browser');\r\n }\r\n }\r\n \r\n handleSuccessPosition(position) {\r\n const { latitude, longitude } = position.coords;\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const contactTypes = urlParams.get('contacttypes') && urlParams.get('contacttypes');\r\n const sortResultsBy = urlParams.get('sortresultsby') && urlParams.get('sortresultsby');\r\n const urlCurrentLatitude = urlParams.get('currentLatitude') && urlParams.get('currentLatitude');\r\n const urlCurrentLongitude = urlParams.get('currentLongitude') && urlParams.get('currentLongitude');\r\n \r\n const mediatorEvent = new MediatorEventModel();\r\n this.resetInputValue();\r\n mediatorEvent.eventType = MediatorEvents.getCurrentPosition;\r\n \r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n const bounds = config.state.map.bounds;\r\n if (Array.isArray(bounds)) Object.assign(searchQuery, ...bounds);\r\n \r\n if (Utils.isEukanuba()) {\r\n searchQuery.currentLatitude = latitude;\r\n searchQuery.latitude = undefined;\r\n searchQuery.currentLongitude = longitude;\r\n searchQuery.longitude = undefined;\r\n config.state.map.currentLatitude = latitude;\r\n config.state.map.latitude = undefined;\r\n config.state.map.currentLongitude = longitude;\r\n config.state.map.longitude = undefined;\r\n } else {\r\n if (urlCurrentLatitude && urlCurrentLongitude) {\r\n searchQuery.currentLatitude = urlCurrentLatitude;\r\n searchQuery.currentLongitude = urlCurrentLongitude;\r\n }\r\n\r\n if (contactTypes) {\r\n searchQuery.contacttypes = contactTypes;\r\n }\r\n if (sortResultsBy) {\r\n searchQuery.sortresultsby = sortResultsBy;\r\n }\r\n }\r\n searchQuery.isLocal = true;\r\n\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.position = position;\r\n \r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n\r\n if(FilterStockistsControl.IsFilterApplied === true){\r\n FilterStockistsControl.handleApplyFilters();\r\n }\r\n\r\n }\r\n \r\n handleErrorPosition(error) {\r\n throw new Error(`ERROR(${error.code}): ${error.message}`);\r\n }\r\n\r\n getInputValue() {\r\n return this.searchFieldNode.value;\r\n }\r\n\r\n resetInputValue() {\r\n this.searchFieldNode.value = '';\r\n }\r\n\r\n getTrackDetails() {\r\n const trackDetails = {\r\n category: this.trackCategory,\r\n label: this.trackLabel,\r\n event: this.trackEvent,\r\n breedId: this.trackBreedId,\r\n specieId: this.trackSpecieId,\r\n age: this.trackAge\r\n };\r\n return trackDetails;\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport { config } from '../../index';\r\nimport MediatorEvents from '../enums/mediatorEvents';\r\nimport MediatorEventModel from '../models/mediatorEventModel';\r\n\r\nexport default class FilterListingViewAllControl extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'filter-view-all-btn';\r\n }\r\n\r\n static get constructorName() {\r\n return 'filterListingViewAllControl';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.mediator = null;\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.el, 'click', e => this.handleViewAllBtnClick(e));\r\n }\r\n\r\n handleViewAllBtnClick(e) {\r\n e.preventDefault();\r\n const category = e.target.getAttribute('data-filter-category');\r\n const value = e.target.getAttribute('data-filter-value');\r\n const mediatorEvent = new MediatorEventModel();\r\n\r\n mediatorEvent.eventData = {\r\n category,\r\n value,\r\n viewAll: true\r\n };\r\n\r\n mediatorEvent.eventType = MediatorEvents.viewAllBtnClicked;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n onDestroy() {\r\n this.el = null;\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport { config } from '../../index';\r\nimport MediatorEvents from '../enums/mediatorEvents';\r\nimport MediatorEventModel from '../models/mediatorEventModel';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\n\r\nexport default class FilterPaginationControl extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'filter-pagination';\r\n }\r\n\r\n static get constructorName() {\r\n return 'filterPaginationControl';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.mediator = null;\r\n this.paginationButtons = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-pagination-btn\"]')\r\n ];\r\n this.paginationInputs = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-pagination-input\"]')\r\n ];\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n addListeners() {\r\n this.paginationButtons.forEach((button) => {\r\n this.addListener(button, 'click', e => this.handlePaginationBtnClick(e));\r\n });\r\n\r\n this.paginationInputs.forEach((input) => {\r\n this.addListener(input, 'keypress', e => this.handleInputKeyPress(e));\r\n });\r\n }\r\n\r\n handlePaginationBtnClick(e) {\r\n e.preventDefault();\r\n\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.paginationButtonClicked;\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const map = config.state.map;\r\n const urlCurrentLatitude = urlParams.get('currentLatitude') && urlParams.get('currentLatitude');\r\n const urlCurrentLongitude = urlParams.get('currentLongitude') && urlParams.get('currentLongitude');\r\n const contactTypes = urlParams.get('contacttypes') && urlParams.get('contacttypes');\r\n const sortResultsBy = urlParams.get('sortresultsby') && urlParams.get('sortresultsby');\r\n const urlLatitude = urlParams.get('latitude') && urlParams.get('latitude');\r\n const urlLongitude = urlParams.get('longitude') && urlParams.get('longitude');\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n // searchQuery.searchQuery = config.filterSearchControl.getInputValue(); (I don't know why it is here but this was breaking the pagination)\r\n const bounds = config.state.map.bounds;\r\n if (Array.isArray(bounds)) Object.assign(searchQuery, ...bounds);\r\n searchQuery.page = e.target.getAttribute('data-page');\r\n\r\n if (map.latitude && map.longitude) {\r\n searchQuery.latitude = map.latitude;\r\n searchQuery.longitude = map.longitude;\r\n } else {\r\n searchQuery.latitude = urlLatitude;\r\n searchQuery.longitude = urlLongitude;\r\n }\r\n\r\n if (urlParams.get('searchQuery')) {\r\n searchQuery.searchQuery = urlParams.get('searchQuery');\r\n }\r\n\r\n if (map.currentLatitude && map.currentLongitude) {\r\n searchQuery.currentLatitude = map.currentLatitude;\r\n searchQuery.currentLongitude = map.currentLongitude;\r\n } else {\r\n searchQuery.currentLatitude = urlCurrentLatitude;\r\n searchQuery.currentLongitude = urlCurrentLongitude;\r\n }\r\n\r\n if (contactTypes) {\r\n searchQuery.contacttypes = contactTypes;\r\n }\r\n\r\n if (sortResultsBy) {\r\n searchQuery.sortresultsby = sortResultsBy;\r\n }\r\n if (config.filterStockistsControl) {\r\n for (const [key, value] of Object.entries(\r\n config.filterStockistsControl.getAllFilters()\r\n )) {\r\n searchQuery[key] = value;\r\n }\r\n }\r\n\r\n searchQuery.IsFilterApplied = urlParams.get(\"IsFilterApplied\") && urlParams.get(\"IsFilterApplied\");\r\n\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n EventEmitter.emit('pagination:change');\r\n }\r\n }\r\n\r\n handleInputKeyPress(e) {\r\n const regExp = /^\\d+$/;\r\n const char = String.fromCharCode(e.which);\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const map = config.state.map;\r\n const urlCurrentLatitude = urlParams.get('currentLatitude') && urlParams.get('currentLatitude');\r\n const urlCurrentLongitude = urlParams.get('currentLongitude') && urlParams.get('currentLongitude');\r\n const contactTypes = urlParams.get('contacttypes') && urlParams.get('contacttypes');\r\n const sortResultsBy = urlParams.get('sortresultsby') && urlParams.get('sortresultsby');\r\n const urlLatitude = urlParams.get('latitude') && urlParams.get('latitude');\r\n const urlLongitude = urlParams.get('longitude') && urlParams.get('longitude');\r\n\r\n if (!regExp.test(char)) {\r\n e.preventDefault();\r\n }\r\n\r\n const inputValue = e.target.value;\r\n\r\n if (e.keyCode === 13) {\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.paginationButtonClicked;\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n // searchQuery.searchQuery = config.filterSearchControl.getInputValue();\r\n const bounds = config.state.map.bounds;\r\n if (Array.isArray(bounds)) Object.assign(searchQuery, ...bounds);\r\n searchQuery.page = inputValue;\r\n\r\n if (map.latitude && map.longitude) {\r\n searchQuery.latitude = map.latitude;\r\n searchQuery.longitude = map.longitude;\r\n } else {\r\n searchQuery.latitude = urlLatitude;\r\n searchQuery.longitude = urlLongitude;\r\n }\r\n\r\n if (urlParams.get('searchQuery')) {\r\n searchQuery.searchQuery = urlParams.get('searchQuery');\r\n }\r\n if (config.filterStockistsControl) {\r\n\r\n for (const [key, value] of Object.entries(\r\n config.filterStockistsControl.getAllFilters()\r\n )) {\r\n searchQuery[key] = value;\r\n }\r\n }\r\n\r\n searchQuery.IsFilterApplied = urlParams.get(\"IsFilterApplied\") && urlParams.get(\"IsFilterApplied\");\r\n \r\n if (map.currentLatitude && map.currentLongitude) {\r\n searchQuery.currentLatitude = map.currentLatitude;\r\n searchQuery.currentLongitude = map.currentLongitude;\r\n } else {\r\n searchQuery.currentLatitude = urlCurrentLatitude;\r\n searchQuery.currentLongitude = urlCurrentLongitude;\r\n }\r\n \r\n if (contactTypes) {\r\n searchQuery.contacttypes = contactTypes;\r\n }\r\n \r\n if (sortResultsBy) {\r\n searchQuery.sortresultsby = sortResultsBy;\r\n }\r\n\t\t\t\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n EventEmitter.emit('pagination:change');\r\n }\r\n }\r\n }\r\n\r\n onDestroy() {\r\n this.paginationButtons = null;\r\n this.paginationInputs = null;\r\n this.el = null;\r\n }\r\n}\r\n","import EventEmitter from '$Foundation/src/js/EventEmitter';\r\n\r\nexport default class Gmap {\r\n constructor(el, options) {\r\n this.el = el;\r\n this.options = options;\r\n this.gmap = null;\r\n this.marker = null;\r\n }\r\n\r\n initApi() {\r\n this.apiReadyPromise = new Promise((apiResolve) => {\r\n if (typeof window.gmapInitialize === 'undefined' || !Gmap.isGmapReady) {\r\n Gmap.loadScript(apiResolve);\r\n } else {\r\n apiResolve();\r\n }\r\n });\r\n return this.apiReadyPromise;\r\n }\r\n\r\n triggerResize() {\r\n window.google.maps.event.trigger(this.gmap, 'resize');\r\n }\r\n\r\n setZoom(zoom) {\r\n this.gmap.setZoom(zoom);\r\n }\r\n\r\n static loadScript(callback) {\r\n Gmap.callbacks.push(callback);\r\n if (Gmap.isScriptInserted === true) {\r\n return;\r\n }\r\n\r\n Gmap.isScriptInserted = true;\r\n\r\n const gmapApiKey =\r\n window.initialWebsiteConfig && window.initialWebsiteConfig.googleMapApiKey\r\n ? window.initialWebsiteConfig.googleMapApiKey\r\n : '';\r\n\r\n const mapscript = document.createElement('script');\r\n mapscript.type = 'text/javascript';\r\n mapscript.async = true;\r\n mapscript.src = `//maps.googleapis.com/maps/api/js?key=${gmapApiKey}&callback=gmapInitialize&libraries=places`;\r\n\r\n document.body.appendChild(mapscript);\r\n window.gmapInitialize = Gmap.onScriptLoaded;\r\n }\r\n\r\n static onScriptLoaded() {\r\n for (let i = 0, l = Gmap.callbacks.length; i < l; i++) {\r\n Gmap.callbacks[i]();\r\n }\r\n Gmap.isGmapReady = true;\r\n window.mapIsInitialized = true;\r\n EventEmitter.emit('map:initialized');\r\n }\r\n}\r\n\r\nGmap.isScriptInserted = false;\r\nGmap.isGmapReady = false;\r\nGmap.callbacks = [];\r\n","import 'js-marker-clusterer';\r\nimport MapGenericGoogle from '$Feature/GenericComponents/code/src/mapGeneric/implementations/mapGenericGoogle';\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport ViewportInfo from '$Foundation/src/js/ViewportInfo';\r\nimport { config } from '../../../../index';\r\nimport infoWindowTemplate from '../../../../templates/infoWindow.hbs';\r\nimport eukaInfoWindowTemplate from '../../../../templates/eukaInfoWindow.hbs';\r\nimport MediatorEvents from '../../../enums/mediatorEvents';\r\nimport MediatorEventModel from '../../../models/mediatorEventModel';\r\nimport GTM from '$Foundation/src/js/gtm/gtmStockistDetails';\r\n\r\nexport default class FilterMapGoogle extends MapGenericGoogle {\r\n initMap() {\r\n const latLng = new google.maps.LatLng(this.options.center);\r\n\r\n const gmapOptions = {\r\n center: latLng,\r\n mapTypeId: window.google.maps.MapTypeId.ROADMAP,\r\n disableDefaultUI: true,\r\n zoomControl: true,\r\n zoom: this.options.zoom\r\n };\r\n\r\n this.gmap = new window.google.maps.Map(this.el, gmapOptions);\r\n\r\n this.cluster = null;\r\n this.markers = [];\r\n this.locations = [];\r\n this.isBoundsSetted = false;\r\n this.isGeoPositionEnabled = false;\r\n this.currentPositionCoords = null;\r\n this.afterIdleTimeout = null;\r\n this.defaultZoom = 13;\r\n this.loadingTime = 200;\r\n\r\n this.infoWindowTemplate = Utils.isEukanuba() ? eukaInfoWindowTemplate : infoWindowTemplate;\r\n\r\n this.infoWindow = new window.google.maps.InfoWindow({\r\n content: ''\r\n });\r\n\r\n this.attachEvents();\r\n\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n position => this.handleSuccessGetPosition(position),\r\n error => this.handleErrorGetPosition(error)\r\n );\r\n } else {\r\n console.log('Geolocation is not supported by this browser');\r\n }\r\n }\r\n\r\n handleSuccessGetPosition(position) {\r\n this.isGeoPositionEnabled = true;\r\n this.currentPositionCoords = position;\r\n const { latitude, longitude } = position.coords;\r\n\r\n const mediatorEvent = new MediatorEventModel();\r\n\r\n mediatorEvent.eventType = MediatorEvents.getCurrentPosition;\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n searchQuery.searchQuery = config.filterSearchControl.getInputValue();\r\n searchQuery.currentLatitude = latitude;\r\n searchQuery.currentLongitude = longitude;\r\n config.state.map.currentLatitude = latitude;\r\n config.state.map.currentLongitude = longitude;\r\n searchQuery.isLocal = true;\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.position = position;\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }\r\n\r\n handleErrorGetPosition(error) {\r\n console.log(`ERROR(${error.code}): ${error.message}`);\r\n }\r\n\r\n attachEvents() {\r\n this.gmap.addListener('click', () => this.closeInfoWindow());\r\n\r\n window.google.maps.event.addListener(this.infoWindow, 'closeclick', () =>\r\n this.closeInfoWindow());\r\n\r\n window.google.maps.event.addListener(this.gmap, 'idle', () => this.onIdle());\r\n }\r\n\r\n afterMapLoaded(data) {\r\n this.locations = data.stockists;\r\n this.translations = data.translations;\r\n this.updateMarkers();\r\n this.isBoundsSetted = true;\r\n this.applyBounds(this.markersList);\r\n this.renderMarkers();\r\n }\r\n\r\n updateDisabledMarkers(locations) {\r\n if (!Utils.isEukanuba()) {\r\n this.markersList = [];\r\n locations.forEach((location) => {\r\n location.marker = this.generateDisabledMarkers(location);\r\n this.markersList.push(location.marker);\r\n });\r\n\r\n if (this.isGeoPositionEnabled) {\r\n const currentPosMarker = this.generateCurrentPositionMarker(this.currentPositionCoords);\r\n this.markersList.push(currentPosMarker);\r\n }\r\n\r\n this.attachEventsToMarkers(locations);\r\n }\r\n }\r\n\r\n generateDisabledMarkers(pin) {\r\n if (!pin.location.lat || !pin.location.lng) return false;\r\n\r\n const icon = this.getDisabledMarkerIconOptions(pin);\r\n\r\n if (icon.gicon !== null) {\r\n return false;\r\n }\r\n\r\n icon.gicon = {\r\n url: icon.url,\r\n size: new google.maps.Size(Math.round(icon.width / 2), Math.round(icon.height / 2)),\r\n scaledSize: new google.maps.Size(\r\n Math.round(icon.width / 2),\r\n Math.round(icon.height / 2)\r\n )\r\n };\r\n\r\n const markerOptions = {\r\n position: new google.maps.LatLng(pin.location.lat, pin.location.lng),\r\n title: pin.name,\r\n icon: icon.gicon,\r\n id: pin.id\r\n };\r\n\r\n return new google.maps.Marker(markerOptions);\r\n }\r\n\r\n getDisabledMarkerIconOptions(pin) {\r\n const iconOptions = {\r\n url: pin.clicked ? '/dist/images/map/map-marker.png' : '/dist/images/map/map-marker-gray.png',\r\n width: 64,\r\n height: 85,\r\n gicon: null\r\n };\r\n return iconOptions;\r\n }\r\n\r\n updateMarkers() {\r\n this.markersList = [];\r\n this.locations.forEach((location) => {\r\n location.marker = this.generateMarker(location);\r\n this.markersList.push(location.marker);\r\n });\r\n\r\n if (this.isGeoPositionEnabled) {\r\n const currentPosMarker = this.generateCurrentPositionMarker(this.currentPositionCoords);\r\n this.markersList.push(currentPosMarker);\r\n }\r\n\r\n this.attachEventsToMarkers(this.locations);\r\n }\r\n\r\n attachEventsToMarkers(locations) {\r\n locations.forEach((pin) => {\r\n if (pin.marker) {\r\n pin.marker.addListener('click', () => this.handleMarkerClick(pin));\r\n }\r\n });\r\n }\r\n\r\n generateMarker(pin) {\r\n if (!pin.location.lat || !pin.location.lng) return false;\r\n\r\n const icon = this.getMarkerIconOptions();\r\n\r\n if (icon.gicon !== null) {\r\n return false;\r\n }\r\n\r\n icon.gicon = {\r\n url: icon.url,\r\n size: new google.maps.Size(Math.round(icon.width / 2), Math.round(icon.height / 2)),\r\n scaledSize: new google.maps.Size(\r\n Math.round(icon.width / 2),\r\n Math.round(icon.height / 2)\r\n )\r\n };\r\n\r\n const markerOptions = {\r\n position: new google.maps.LatLng(pin.location.lat, pin.location.lng),\r\n title: pin.name,\r\n icon: icon.gicon,\r\n id: pin.id\r\n };\r\n\r\n return new google.maps.Marker(markerOptions);\r\n }\r\n\r\n generateCurrentPositionMarker(position) {\r\n const isEukanuba = Utils.isEukanuba();\r\n const icon = {\r\n url: isEukanuba ? '/dist/images/map/eukanuba/map-default-marker.png' : '/dist/images/map/map-default-marker.png',\r\n width: 64,\r\n height: 64,\r\n gicon: null\r\n };\r\n\r\n if (icon.gicon !== null) {\r\n return false;\r\n }\r\n\r\n icon.gicon = {\r\n url: icon.url,\r\n size: new google.maps.Size(Math.round(icon.width / 2), Math.round(icon.height / 2)),\r\n scaledSize: new google.maps.Size(\r\n Math.round(icon.width / 2),\r\n Math.round(icon.height / 2)\r\n )\r\n };\r\n\r\n const markerOptions = {\r\n position: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),\r\n icon: icon.gicon,\r\n map: this.gmap\r\n };\r\n\r\n return new google.maps.Marker(markerOptions);\r\n }\r\n\r\n renderDisabledMarkers(locations) {\r\n this.clearCluster();\r\n this.generateCluster(locations);\r\n let pin = locations.find(location => location.clicked);\r\n this.openInfoWindow(pin);\r\n }\r\n\r\n renderMarkers() {\r\n this.clearCluster();\r\n this.generateCluster(this.locations);\r\n }\r\n\r\n generateCluster(locations) {\r\n if (!locations) return;\r\n\r\n const markers = [];\r\n\r\n locations.forEach((pin) => {\r\n markers.push(pin.marker);\r\n });\r\n\r\n this.updateCluster(markers);\r\n }\r\n\r\n applyBounds(markers) {\r\n const bounds = this.calcBounds(markers);\r\n\r\n google.maps.event.trigger(this.gmap, 'resize');\r\n\r\n if (bounds && this.markersList.length > 1) {\r\n this.gmap.fitBounds(bounds);\r\n } else if (bounds && this.markersList.length === 1) {\r\n this.gmap.setCenter(bounds.getCenter());\r\n this.gmap.setZoom(this.defaultZoom);\r\n }\r\n }\r\n\r\n calcBounds(markers) {\r\n if (!markers || !markers.length) return false;\r\n\r\n let latLngBounds;\r\n\r\n for (let i = 0, imax = markers.length; i < imax; i++) {\r\n if (markers[i]) {\r\n if (latLngBounds) {\r\n latLngBounds.extend(markers[i].getPosition());\r\n } else {\r\n latLngBounds = new google.maps.LatLngBounds(markers[i].getPosition());\r\n }\r\n }\r\n }\r\n return latLngBounds;\r\n }\r\n\r\n clearCluster() {\r\n if (this.cluster) {\r\n this.cluster.clearMarkers();\r\n }\r\n }\r\n\r\n updateCluster(markers) {\r\n if (this.cluster) {\r\n this.cluster.clearMarkers();\r\n this.cluster.addMarkers(markers);\r\n } else {\r\n const clusterOptions = this.getClusterOptions();\r\n /* eslint-disable */\r\n this.cluster = new MarkerClusterer(this.gmap, markers, clusterOptions);\r\n /* eslint-enable */\r\n }\r\n }\r\n\r\n updateData(data, applyBounds, IsGeoPositionEnabled) {\r\n const dummy = document.createElement('div');\r\n dummy.innerHTML = data;\r\n const jsonScriptNode = dummy.querySelector('[data-ref=\"json-map-data\"]');\r\n const jsonData = jsonScriptNode ? JSON.parse(jsonScriptNode.innerHTML).stockists : null;\r\n\r\n if (!jsonData) {\r\n return;\r\n }\r\n\r\n config.state.pins.data = jsonData;\r\n this.locations = jsonData;\r\n\r\n this.updateMarkers();\r\n this.renderMarkers();\r\n\r\n if (applyBounds) {\r\n this.isBoundsSetted = true;\r\n this.applyBounds(this.markersList);\r\n }\r\n\r\n if (IsGeoPositionEnabled) {\r\n const bounds = this.getFormattedBounds();\r\n config.state.map.bounds = [bounds];\r\n }\r\n }\r\n\r\n closeInfoWindow() {\r\n this.infoWindow.close();\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.mapClicked;\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n if (!Utils.isEukanuba()) {\r\n this.updateMarkers();\r\n this.renderMarkers();\r\n this.revertStockistsHide();\r\n }\r\n }\r\n\r\n onIdle() {\r\n if (this.isBoundsSetted) {\r\n this.isBoundsSetted = false;\r\n return;\r\n }\r\n\r\n if (this.afterIdleTimeout) {\r\n clearTimeout(this.afterIdleTimeout);\r\n }\r\n\r\n if (!Utils.isEukanuba()) {\r\n this.revertStockistsHide();\r\n }\r\n\r\n this.afterIdleTimeout = setTimeout(() => {\r\n const mediatorEvent = new MediatorEventModel();\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const contactTypes = urlParams.get('contacttypes') && urlParams.get('contacttypes');\r\n const sortResultsBy = urlParams.get('sortresultsby') && urlParams.get('sortresultsby');\r\n mediatorEvent.eventType = MediatorEvents.mapIdleFinished;\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n const bounds = [this.getFormattedBounds()];\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n Object.assign(searchQuery, ...bounds);\r\n config.filterSearchControl.resetInputValue();\r\n\r\n if (urlParams.get('searchQuery')) {\r\n searchQuery.searchQuery = urlParams.get('searchQuery');\r\n }\r\n\r\n if (config.state.map.latitude != undefined) {\r\n config.state.map.latitude = '';\r\n }\r\n if (config.state.map.longitude != undefined) {\r\n config.state.map.longitude = '';\r\n }\r\n\r\n if (Utils.isEukanuba()) {\r\n if (this.isGeoPositionEnabled) {\r\n searchQuery.currentLatitude = this.currentPositionCoords.coords.latitude;\r\n searchQuery.currentLongitude = this.currentPositionCoords.coords.longitude;\r\n }\r\n } else {\r\n if (this.isGeoPositionEnabled) {\r\n searchQuery.currentLatitude = this.currentPositionCoords.coords.latitude;\r\n searchQuery.currentLongitude = this.currentPositionCoords.coords.longitude;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n if (contactTypes) {\r\n searchQuery.contacttypes = contactTypes;\r\n }\r\n if (sortResultsBy) {\r\n searchQuery.sortresultsby = sortResultsBy;\r\n }\r\n\r\n mediatorEvent.searchQuery = searchQuery;\r\n\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n config.state.map.bounds = bounds;\r\n this.setRefreshButton(mediatorEvent);\r\n }, this.loadingTime);\r\n }\r\n\r\n hideStockistBasedOnPinSelection(pin) {\r\n if (!Utils.isEukanuba()) {\r\n const stockists = document.querySelectorAll('[data-ref=\"filter-listing-item\"]');\r\n const pagination = document.querySelector('[data-ref=\"pagination-section\"]');\r\n const copiedLocations = [...this.locations];\r\n stockists && stockists.forEach(stockist => {\r\n if (stockist.getAttribute('data-id') === pin.id) {\r\n stockist.classList.remove('rc-hidden');\r\n stockist.classList.add('rc-stockist-list__list-item--active')\r\n copiedLocations.forEach(location => {\r\n if (location.id === pin.id) {\r\n location.clicked = true;\r\n } else {\r\n location.clicked = false;\r\n }\r\n })\r\n } else {\r\n stockist.classList.add('rc-hidden');\r\n stockist.classList.remove('rc-stockist-list__list-item--active')\r\n }\r\n });\r\n pagination && pagination.classList.add('rc-hidden');\r\n this.changePinColorBasedOnSelection(copiedLocations);\r\n }\r\n }\r\n\r\n changePinColorBasedOnSelection(locations) {\r\n this.updateDisabledMarkers(locations);\r\n this.renderDisabledMarkers(locations);\r\n }\r\n\r\n revertStockistsHide() {\r\n if (!Utils.isEukanuba()) {\r\n const stockists = document.querySelectorAll('[data-ref=\"filter-listing-item\"]');\r\n const pagination = document.querySelector('[data-ref=\"pagination-section\"]');\r\n\r\n stockists && stockists.forEach(stockist => {\r\n stockist.classList.remove('rc-hidden');\r\n stockist.classList.remove('rc-stockist-list__list-item--active');\r\n });\r\n pagination && pagination.classList.remove('rc-hidden');\r\n }\r\n }\r\n\r\n handleMarkerClick(pin) {\r\n this.isBoundsSetted = true;\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.mapMarkerClicked;\r\n mediatorEvent.eventData = {\r\n pin\r\n };\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n // for RC\r\n this.hideStockistBasedOnPinSelection(pin);\r\n this.pushGoogleTracking(pin, 'dealerFinderClickMap', 'Map');\r\n }\r\n\r\n openInfoWindow(pin) {\r\n const mapType = { mapTypeGoogle: true };\r\n\r\n pin = { ...pin, ...this.translations, ...mapType };\r\n const marker = pin.marker;\r\n const infoWindowContent = this.infoWindowTemplate(pin);\r\n\r\n if (!ViewportInfo.isTouch) {\r\n this.gmap.panTo(marker.getPosition());\r\n }\r\n\r\n this.infoWindow.setContent(infoWindowContent);\r\n this.infoWindow.open(this.gmap, marker);\r\n this.attachGetDirectionClickEvent(pin);\r\n this.attachVisitWebsiteClickEvent(pin);\r\n }\r\n\r\n attachGetDirectionClickEvent(pin) {\r\n setTimeout(() => {\r\n const infoWindowHtml = document.querySelector('.info-window');\r\n if (!infoWindowHtml) return;\r\n const ctaGetDirection = infoWindowHtml.querySelector('[data-component=\"get-directions-track\"]');\r\n if (!ctaGetDirection) return;\r\n\r\n ctaGetDirection.addEventListener('click', () => { this.pushGoogleTracking(pin, 'dealerFinderClickDirections', 'Get directions'); });\r\n }, 0);\r\n }\r\n\r\n attachVisitWebsiteClickEvent(pin) {\r\n setTimeout(() => {\r\n const infoWindowHtml = document.querySelector('.info-window');\r\n if (!infoWindowHtml) return;\r\n const ctaVisitWebsite = infoWindowHtml.querySelector('[data-component=\"visit-website-track\"]');\r\n if (!ctaVisitWebsite) return;\r\n ctaVisitWebsite.addEventListener('click', () => { this.pushGoogleTracking(pin, 'dealerFinderEretailerClick', 'Online Retailer'); });\r\n })\r\n }\r\n\r\n pushGoogleTracking(pin, event, label) {\r\n const trackCategory = config.tracking.category || '';\r\n const trackLabel = label;\r\n const trackEvent = event;\r\n const trackAction = 'Click';\r\n const trackCustomerType = pin.contactTypes.toString();\r\n const trackCustomerName = pin.companyName;\r\n GTM.push(trackCategory, trackAction, trackLabel, trackEvent, trackCustomerType, trackCustomerName);\r\n }\r\n\r\n setMarkerActive(id) {\r\n const pin = this.getPinById(id);\r\n if (pin === null) {\r\n return;\r\n }\r\n\r\n this.infoWindow.close();\r\n\r\n this.gmap.setZoom(this.defaultZoom);\r\n this.gmap.setCenter(pin.marker.getPosition());\r\n this.openInfoWindow(pin);\r\n this.gmap.panBy(0, -0.001);\r\n\r\n this.isBoundsSetted = true;\r\n }\r\n\r\n setRefreshButton(mediatorEvent) {\r\n const refreshElement = document.getElementById('refresh-button');\r\n refreshElement.classList.remove('map-view-display');\r\n refreshElement.addEventListener('click', () => {\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n const dataLayer = window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n 'event' : 'RCGlobalMC1dealerFinderRefreshMap'\r\n });\r\n }\r\n }, { once: true, passive: true, capture: true });\r\n }\r\n\r\n getMapBounds() {\r\n const bounds = this.gmap.getBounds();\r\n\r\n if (!bounds) return false;\r\n\r\n const northEast = bounds.getNorthEast();\r\n const southWest = bounds.getSouthWest();\r\n\r\n return {\r\n northeast: {\r\n latitude: northEast.lat(),\r\n longitude: northEast.lng()\r\n },\r\n southwest: {\r\n latitude: southWest.lat(),\r\n longitude: southWest.lng()\r\n }\r\n };\r\n }\r\n\r\n getFormattedBounds() {\r\n const bounds = this.getMapBounds();\r\n\r\n return {\r\n neLatitude: bounds.northeast.latitude,\r\n neLongitude: bounds.northeast.longitude,\r\n swLatitude: bounds.southwest.latitude,\r\n swLongitude: bounds.southwest.longitude\r\n };\r\n }\r\n\r\n getPinById(id) {\r\n return this.locations.filter(x => x.id === id)[0];\r\n }\r\n\r\n getClusterOptions() {\r\n const isEukanuba = Utils.isEukanuba();\r\n const clusterStyleOptions = {\r\n styles: [\r\n {\r\n url: isEukanuba ? '/dist/images/map/eukanuba/map-cluster.png' : '/dist/images/map/map-cluster.png',\r\n width: 64,\r\n height: 64,\r\n textColor: 'white',\r\n textSize: 16,\r\n anchorIcon: [32, 32]\r\n }\r\n ],\r\n enableRetinaIcons: true,\r\n clusterClass: 'cluster-icon'\r\n };\r\n\r\n return clusterStyleOptions;\r\n }\r\n\r\n getMarkerIconOptions() {\r\n const isEukanuba = Utils.isEukanuba();\r\n const iconOptions = {\r\n url: isEukanuba ? '/dist/images/map/eukanuba/map-marker.png' : '/dist/images/map/map-marker.png',\r\n width: 64,\r\n height: 85,\r\n gicon: null\r\n };\r\n return iconOptions;\r\n }\r\n}\r\n","export default class BaiduMap {\r\n constructor(el, options) {\r\n this.el = el;\r\n this.options = options;\r\n }\r\n\r\n initApi() {\r\n this.apiReadyPromise = new Promise((apiResolve) => {\r\n if (!BaiduMap.isApiReady) {\r\n BaiduMap.loadScript(apiResolve);\r\n } else {\r\n apiResolve();\r\n }\r\n });\r\n return this.apiReadyPromise;\r\n }\r\n\r\n triggerResize() {}\r\n\r\n static loadScript(callback) {\r\n BaiduMap.callbacks.push(callback);\r\n if (BaiduMap.isScriptInserted === true) {\r\n return;\r\n }\r\n\r\n BaiduMap.isScriptInserted = true;\r\n\r\n const mapscript = document.createElement('script');\r\n mapscript.type = 'text/javascript';\r\n mapscript.async = false;\r\n mapscript.src = '//api.map.baidu.com/api?v=3.0&callback=baiduLoadCallback';\r\n\r\n window.baiduLoadCallback = BaiduMap.onScriptLoaded;\r\n document.body.appendChild(mapscript);\r\n }\r\n\r\n static loadInfoboxScript(callback) {\r\n if (BaiduMap.isInfoboxScriptLoaded) {\r\n callback();\r\n } else {\r\n BaiduMap.infoboxCallbacks.push(callback);\r\n if (BaiduMap.isInfoboxScriptInserted === true) {\r\n return;\r\n }\r\n\r\n BaiduMap.isInfoboxScriptInserted = true;\r\n\r\n const script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.async = false;\r\n script.src = '//api.map.baidu.com/library/InfoBox/1.2/src/InfoBox.js';\r\n\r\n script.onload = () => {\r\n BaiduMap.isInfoboxScriptLoaded = true;\r\n BaiduMap.infoboxCallbacks.forEach((cb) => {\r\n cb();\r\n });\r\n };\r\n document.body.appendChild(script);\r\n }\r\n }\r\n\r\n static onScriptLoaded() {\r\n BaiduMap.isApiReady = true;\r\n for (let i = 0, l = BaiduMap.callbacks.length; i < l; i++) {\r\n BaiduMap.callbacks[i]();\r\n }\r\n }\r\n\r\n static getConvertedZoom(googleMapZoom) {\r\n return googleMapZoom + 1;\r\n }\r\n}\r\n\r\nBaiduMap.isScriptInserted = false;\r\nBaiduMap.isInfoboxScriptInserted = false;\r\nBaiduMap.isInfoboxScriptLoaded = false;\r\nBaiduMap.isApiReady = false;\r\nBaiduMap.callbacks = [];\r\nBaiduMap.infoboxCallbacks = [];\r\n","import MapGenericBaidu from '$Feature/GenericComponents/code/src/mapGeneric/implementations/mapGenericBaidu';\r\n\r\nexport default class FilterMapBaidu extends MapGenericBaidu {\r\n initMap() {}\r\n}\r\n","import EventEmitter from '$Foundation/src/js/EventEmitter';\r\n\r\nexport default class Kakao {\r\n constructor(el, options) {\r\n this.el = el;\r\n this.options = options;\r\n this.map = null;\r\n this.marker = null;\r\n }\r\n\r\n initApi() {\r\n this.apiReadyPromise = new Promise((apiResolve) => {\r\n if (typeof window.kakao.maps.Map === 'undefined' || !Kakao.isMapReady) {\r\n Kakao.loadScript(apiResolve);\r\n } else {\r\n apiResolve();\r\n }\r\n });\r\n return this.apiReadyPromise;\r\n }\r\n\r\n triggerResize() {\r\n window.kakao.maps.event.trigger(this.map, 'resize');\r\n }\r\n\r\n setZoom(zoom) {\r\n this.map.setLevel(zoom);\r\n }\r\n\r\n static loadScript(callback) {\r\n Kakao.callbacks.push(callback);\r\n \r\n const interval = setInterval(() => {\r\n if (typeof window.kakao.maps.Map !== 'undefined') {\r\n\r\n for (let i = 0, l = Kakao.callbacks.length; i < l; i++) {\r\n Kakao.callbacks[i]();\r\n }\r\n Kakao.isMapReady = true;\r\n window.mapIsInitialized = true;\r\n EventEmitter.emit('map:initialized');\r\n\r\n clearInterval(interval);\r\n }\r\n }, 250);\r\n\r\n }\r\n}\r\n\r\nKakao.isMapReady = false;\r\nKakao.callbacks = [];\r\n","import MapGenericKakao from '$Feature/GenericComponents/code/src/mapGeneric/implementations/mapGenericKakao';\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport ViewportInfo from '$Foundation/src/js/ViewportInfo';\r\nimport { config } from '../../../../index';\r\nimport infoWindowTemplate from '../../../../templates/infoWindow.hbs';\r\nimport MediatorEvents from '../../../enums/mediatorEvents';\r\nimport MediatorEventModel from '../../../models/mediatorEventModel';\r\nimport GTM from '$Foundation/src/js/gtm/gtmStockistDetails';\r\n\r\nexport default class FilterMapKakao extends MapGenericKakao {\r\n initMap() {\r\n \r\n const latLng = new window.kakao.maps.LatLng(this.options.center.lat, this.options.center.lng);\r\n const gmapOptions = {\r\n center: latLng,\r\n level: this.options.zoom\r\n };\r\n \r\n this.map = new window.kakao.maps.Map(this.el, gmapOptions);\r\n this.zoomControl = new window.kakao.maps.ZoomControl();\r\n this.map.addControl(this.zoomControl, window.kakao.maps.ControlPosition.RIGHT);\r\n\r\n this.cluster = null;\r\n this.markers = [];\r\n this.locations = [];\r\n this.isBoundsSetted = false;\r\n this.isGeoPositionEnabled = false;\r\n this.currentPositionCoords = null;\r\n this.afterIdleTimeout = null;\r\n this.defaultZoom = 3;\r\n this.loadingTime = 200;\r\n\r\n this.infoWindowTemplate = infoWindowTemplate;\r\n\r\n this.infoWindow = new window.kakao.maps.InfoWindow({\r\n removable : false\r\n });\r\n\r\n this.attachEvents();\r\n\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n position => this.handleSuccessGetPosition(position),\r\n error => this.handleErrorGetPosition(error)\r\n );\r\n } else {\r\n console.log('Geolocation is not supported by this browser');\r\n }\r\n }\r\n\r\n handleSuccessGetPosition(position) {\r\n \r\n this.isGeoPositionEnabled = true;\r\n this.currentPositionCoords = position;\r\n const { latitude, longitude } = position.coords;\r\n\r\n const mediatorEvent = new MediatorEventModel();\r\n\r\n mediatorEvent.eventType = MediatorEvents.getCurrentPosition;\r\n\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n searchQuery.searchQuery = config.filterSearchControl.getInputValue();\r\n searchQuery.currentLatitude = latitude;\r\n searchQuery.currentLongitude = longitude;\r\n config.state.map.currentLatitude = latitude;\r\n config.state.map.currentLongitude = longitude;\r\n searchQuery.isLocal = true;\r\n mediatorEvent.searchQuery = searchQuery;\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n mediatorEvent.position = position;\r\n\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n } \r\n }\r\n\r\n handleErrorGetPosition(error) {\r\n console.log(`ERROR(${error.code}): ${error.message}`);\r\n }\r\n\r\n attachEvents() {\r\n this.map.addListener('click', () => this.closeInfoWindow());\r\n window.kakao.maps.event.addListener(this.map, 'idle', () => this.onIdle());\r\n }\r\n\r\n afterMapLoaded(data) {\r\n this.locations = data.stockists;\r\n this.translations = data.translations;\r\n this.updateMarkers(); \r\n this.isBoundsSetted = true;\r\n this.applyBounds(this.markersList); // back to it later\r\n this.renderMarkers();\r\n }\r\n\r\n generateDisabledMarkers(pin) {\r\n if (!pin.location.lat || !pin.location.lng) return false;\r\n\r\n const icon = this.getDisabledMarkerIconOptions(pin);\r\n\r\n if (icon.gicon !== null) {\r\n return false;\r\n }\r\n\r\n icon.gicon = {\r\n url: icon.url,\r\n size: new google.maps.Size(Math.round(icon.width / 2), Math.round(icon.height / 2)),\r\n scaledSize: new google.maps.Size(\r\n Math.round(icon.width / 2),\r\n Math.round(icon.height / 2)\r\n )\r\n };\r\n\r\n const markerOptions = {\r\n position: new google.maps.LatLng(pin.location.lat, pin.location.lng),\r\n title: pin.name,\r\n icon: icon.gicon,\r\n id: pin.id\r\n };\r\n\r\n return new google.maps.Marker(markerOptions);\r\n }\r\n\r\n getDisabledMarkerIconOptions(pin) {\r\n const iconOptions = {\r\n url: pin.clicked ? '/dist/images/map/map-marker.png' : '/dist/images/map/map-marker-gray.png',\r\n width: 64,\r\n height: 85,\r\n gicon: null\r\n };\r\n return iconOptions;\r\n }\r\n\r\n updateMarkers() {\r\n this.markersList = [];\r\n this.locations.forEach((location) => {\r\n location.marker = this.generateMarker(location);\r\n this.markersList.push(location.marker);\r\n });\r\n\r\n if (this.isGeoPositionEnabled) {\r\n const currentPosMarker = this.generateCurrentPositionMarker(this.currentPositionCoords);\r\n this.markersList.push(currentPosMarker);\r\n }\r\n\r\n this.attachEventsToMarkers(this.locations);\r\n }\r\n\r\n attachEventsToMarkers(locations) {\r\n locations.forEach((pin) => {\r\n if (pin.marker) {\r\n pin.marker.addListener('click', () => this.handleMarkerClick(pin));\r\n }\r\n //this.openInfoWindow(pin);\r\n });\r\n }\r\n\r\n generateMarker(pin) {\r\n if (!pin.location.lat || !pin.location.lng) return false;\r\n\r\n const icon = this.getMarkerIconOptions();\r\n\r\n if (icon.gicon !== null) {\r\n return false;\r\n }\r\n\r\n const iconImage = new window.kakao.maps.MarkerImage(\r\n icon.url,\r\n new window.kakao.maps.Size(Math.round(icon.width / 2), Math.round(icon.height / 2))\r\n );\r\n\r\n const markerOptions = {\r\n position: new window.kakao.maps.LatLng(pin.location.lat, pin.location.lng),\r\n map: this.map,\r\n title: pin.name,\r\n image: iconImage\r\n \r\n };\r\n\r\n return new window.kakao.maps.Marker(markerOptions);\r\n }\r\n\r\n generateCurrentPositionMarker(position) { \r\n // const icon = {\r\n // url: '/dist/images/map/map-default-marker.png',\r\n // width: 64,\r\n // height: 64,\r\n // gicon: null\r\n // };\r\n\r\n // if (icon.gicon !== null) {\r\n // return false;\r\n // }\r\n\r\n // icon.gicon = {\r\n // url: icon.url,\r\n // size: new google.maps.Size(Math.round(icon.width / 2), Math.round(icon.height / 2)),\r\n // scaledSize: new google.maps.Size(\r\n // Math.round(icon.width / 2),\r\n // Math.round(icon.height / 2)\r\n // )\r\n // };\r\n\r\n const markerOptions = { \r\n position: new kakao.maps.LatLng(position.coords.latitude, position.coords.longitude),\r\n //icon: icon.gicon,\r\n map: this.map\r\n };\r\n\r\n return new window.kakao.maps.Marker(markerOptions);\r\n }\r\n\r\n renderDisabledMarkers(locations) {\r\n this.clearCluster();\r\n this.generateCluster(locations);\r\n let pin = locations.find(location => location.clicked);\r\n this.openInfoWindow(pin);\r\n }\r\n\r\n renderMarkers() {\r\n this.clearCluster();\r\n this.generateCluster(this.locations);\r\n }\r\n\r\n generateCluster(locations) {\r\n if (!locations) return;\r\n\r\n const markers = [];\r\n\r\n locations.forEach((pin) => {\r\n markers.push(pin.marker);\r\n });\r\n\r\n this.updateCluster(markers);\r\n }\r\n\r\n applyBounds(markers) { \r\n const bounds = this.calcBounds(markers);\r\n this.map.relayout();\r\n \r\n if (bounds && this.markersList.length > 1) {\r\n this.map.setBounds(bounds);\r\n } else if (bounds && this.markersList.length === 1) {\r\n this.map.setCenter(bounds.getCenter());\r\n this.map.setLevel(this.defaultZoom);\r\n }\r\n }\r\n\r\n calcBounds(markers) { \r\n\r\n if (!markers || !markers.length) return false;\r\n\r\n let latLngBounds;\r\n\r\n for (let i = 0, imax = markers.length; i < imax; i++) {\r\n if (markers[i]) {\r\n if (latLngBounds) {\r\n latLngBounds.extend(markers[i].getPosition());\r\n } else {\r\n latLngBounds = this.map.getBounds(markers[i].getPosition());\r\n }\r\n }\r\n }\r\n return latLngBounds;\r\n }\r\n\r\n clearCluster() {\r\n if (this.cluster) {\r\n this.cluster.clear();\r\n }\r\n }\r\n\r\n updateCluster(markers) { \r\n\r\n if (this.cluster) {\r\n this.cluster.clear();\r\n this.cluster.addMarkers(markers);\r\n } else {\r\n this.cluster = new window.kakao.maps.MarkerClusterer({\r\n map: this.map,\r\n markers: markers,\r\n averageCenter: true,\r\n minLevel: 6,\r\n styles: [{\r\n width : '64px', height : '64px',\r\n background: 'url(/dist/images/map/map-cluster.png) no-repeat',\r\n backgroundSize: '100%',\r\n fontWeight: 'bold',\r\n fontSize: '14px',\r\n color: '#fff',\r\n textAlign: 'center',\r\n lineHeight: '64px'\r\n }]\r\n });\r\n }\r\n }\r\n\r\n updateData(data, applyBounds, IsGeoPositionEnabled) { \r\n const dummy = document.createElement('div');\r\n dummy.innerHTML = data;\r\n const jsonScriptNode = dummy.querySelector('[data-ref=\"json-map-data\"]');\r\n const jsonData = jsonScriptNode ? JSON.parse(jsonScriptNode.innerHTML).stockists : null;\r\n\r\n if (!jsonData) {\r\n return;\r\n }\r\n\r\n config.state.pins.data = jsonData;\r\n this.locations = jsonData;\r\n\r\n this.updateMarkers();\r\n this.renderMarkers();\r\n\r\n if (applyBounds) {\r\n this.isBoundsSetted = true;\r\n this.applyBounds(this.markersList);\r\n }\r\n\r\n if (IsGeoPositionEnabled) {\r\n const bounds = this.getFormattedBounds();\r\n config.state.map.bounds = [bounds];\r\n }\r\n }\r\n\r\n closeInfoWindow() {\r\n this.infoWindow.close();\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.mapClicked;\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n if (!Utils.isEukanuba()) {\r\n this.updateMarkers();\r\n this.renderMarkers();\r\n this.revertStockistsHide();\r\n }\r\n }\r\n\r\n onIdle() { \r\n if (this.isBoundsSetted) {\r\n this.isBoundsSetted = false;\r\n return;\r\n }\r\n\r\n if (this.afterIdleTimeout) {\r\n clearTimeout(this.afterIdleTimeout);\r\n }\r\n\r\n this.afterIdleTimeout = setTimeout(() => {\r\n const mediatorEvent = new MediatorEventModel();\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const contactTypes = urlParams.get('contacttypes') && urlParams.get('contacttypes');\r\n const sortResultsBy = urlParams.get('sortresultsby') && urlParams.get('sortresultsby');\r\n mediatorEvent.eventType = MediatorEvents.mapIdleFinished;\r\n const searchQuery = config.filterPanelControl.getSearchQuery();\r\n const bounds = [this.getFormattedBounds()];\r\n Object.assign(searchQuery, ...config.requestParameters);\r\n Object.assign(searchQuery, ...bounds);\r\n config.filterSearchControl.resetInputValue();\r\n\r\n if (urlParams.get('searchQuery')) {\r\n searchQuery.searchQuery = urlParams.get('searchQuery');\r\n }\r\n\r\n if (config.state.map.latitude != undefined) {\r\n config.state.map.latitude = '';\r\n }\r\n if (config.state.map.longitude != undefined) {\r\n config.state.map.longitude = '';\r\n }\r\n\r\n if (urlParams.get('searchQuery')) {\r\n searchQuery.searchQuery = urlParams.get('searchQuery');\r\n }\r\n\r\n if (Utils.isEukanuba()) {\r\n if (this.isGeoPositionEnabled) {\r\n searchQuery.currentLatitude = this.currentPositionCoords.coords.latitude;\r\n searchQuery.currentLongitude = this.currentPositionCoords.coords.longitude;\r\n }\r\n } else {\r\n if (this.isGeoPositionEnabled) {\r\n searchQuery.currentLatitude = this.currentPositionCoords.coords.latitude;\r\n searchQuery.currentLongitude = this.currentPositionCoords.coords.longitude;\r\n } else { \r\n return;\r\n }\r\n } \r\n \r\n searchQuery.contacttypes = contactTypes;\r\n searchQuery.sortresultsby = sortResultsBy;\r\n\r\n mediatorEvent.searchQuery = searchQuery;\r\n\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n mediatorEvent.eventUrl = `${config.endPointUrl}${queryString}`;\r\n config.state.map.bounds = bounds;\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n }, this.loadingTime);\r\n }\r\n\r\n hideStockistBasedOnPinSelection(pin) {\r\n if (!Utils.isEukanuba()) {\r\n const stockists = document.querySelectorAll('[data-ref=\"filter-listing-item\"]');\r\n const pagination = document.querySelector('[data-ref=\"pagination-section\"]');\r\n const copiedLocations = [...this.locations];\r\n stockists && stockists.forEach(stockist => {\r\n if (stockist.getAttribute('data-id') === pin.id) {\r\n stockist.classList.remove('rc-hidden');\r\n stockist.classList.add('rc-stockist-list__list-item--active')\r\n copiedLocations.forEach(location => {\r\n if (location.id === pin.id) {\r\n location.clicked = true;\r\n } else {\r\n location.clicked = false;\r\n }\r\n })\r\n } else {\r\n stockist.classList.add('rc-hidden');\r\n stockist.classList.remove('rc-stockist-list__list-item--active')\r\n }\r\n });\r\n pagination && pagination.classList.add('rc-hidden');\r\n this.changePinColorBasedOnSelection(copiedLocations);\r\n }\r\n }\r\n\r\n changePinColorBasedOnSelection(locations) {\r\n this.updateDisabledMarkers(locations);\r\n this.renderDisabledMarkers(locations);\r\n }\r\n\r\n revertStockistsHide() {\r\n if (!Utils.isEukanuba()) {\r\n const stockists = document.querySelectorAll('[data-ref=\"filter-listing-item\"]');\r\n const pagination = document.querySelector('[data-ref=\"pagination-section\"]');\r\n \r\n stockists && stockists.forEach(stockist => {\r\n stockist.classList.remove('rc-hidden');\r\n stockist.classList.remove('rc-stockist-list__list-item--active');\r\n });\r\n pagination && pagination.classList.remove('rc-hidden');\r\n }\r\n }\r\n\r\n handleMarkerClick(pin) {\r\n this.isBoundsSetted = true;\r\n const mediatorEvent = new MediatorEventModel();\r\n mediatorEvent.eventType = MediatorEvents.mapMarkerClicked;\r\n mediatorEvent.eventData = {\r\n pin\r\n };\r\n if (config.mediator) {\r\n config.mediator.stateChanged(mediatorEvent);\r\n }\r\n this.hideStockistBasedOnPinSelection(pin);\r\n this.pushGoogleTracking(pin, 'dealerFinderClickMap', 'Map');\r\n }\r\n\r\n openInfoWindow(pin) {\r\n const mapType = { mapTypeKakao: true };\r\n pin = { ...pin, ...this.translations, ...mapType };\r\n const marker = pin.marker; \r\n const infoWindowContent = this.infoWindowTemplate(pin);\r\n\r\n if (!ViewportInfo.isTouch) {\r\n this.map.panTo(marker.getPosition());\r\n }\r\n\r\n this.infoWindow.setContent(infoWindowContent);\r\n this.infoWindow.open(this.map, marker);\r\n this.attachGetDirectionClickEvent(pin);\r\n }\r\n\r\n attachGetDirectionClickEvent(pin) {\r\n setTimeout(() => {\r\n const infoWindowHtml = document.querySelector('.info-window');\r\n if (!infoWindowHtml) return;\r\n const ctaGetDirection = infoWindowHtml.querySelector('[data-component=\"get-directions-track\"]');\r\n if (!ctaGetDirection) return;\r\n\r\n ctaGetDirection.addEventListener('click', () => { this.pushGoogleTracking(pin, 'dealerFinderClickDirections', 'Get directions'); });\r\n }, 0);\r\n }\r\n\r\n pushGoogleTracking(pin, event, label) {\r\n const trackCategory = config.tracking.category || '';\r\n const trackLabel = label;\r\n const trackEvent = event;\r\n const trackAction = 'Click';\r\n const trackCustomerType = pin.contactTypes.toString();\r\n const trackCustomerName = pin.companyName;\r\n GTM.push(trackCategory, trackAction, trackLabel, trackEvent, trackCustomerType, trackCustomerName);\r\n }\r\n\r\n setMarkerActive(id) {\r\n const pin = this.getPinById(id);\r\n if (pin === null) {\r\n return;\r\n }\r\n\r\n this.infoWindow.close();\r\n this.map.setLevel(this.defaultZoom);\r\n this.map.setCenter(pin.marker.getPosition());\r\n this.openInfoWindow(pin);\r\n this.map.panBy(0, -0.001);\r\n\r\n this.isBoundsSetted = true;\r\n }\r\n\r\n getMapBounds() { // revised\r\n const bounds = this.map.getBounds(); \r\n\r\n if (!bounds) return false;\r\n\r\n const northEast = bounds.getNorthEast();\r\n const southWest = bounds.getSouthWest();\r\n\r\n return {\r\n northeast: {\r\n latitude: northEast.getLat(),\r\n longitude: northEast.getLng()\r\n },\r\n southwest: {\r\n latitude: southWest.getLat(),\r\n longitude: southWest.getLng()\r\n }\r\n };\r\n }\r\n\r\n getFormattedBounds() { // revised\r\n const bounds = this.getMapBounds();\r\n\r\n return {\r\n neLatitude: bounds.northeast.latitude,\r\n neLongitude: bounds.northeast.longitude,\r\n swLatitude: bounds.southwest.latitude,\r\n swLongitude: bounds.southwest.longitude\r\n };\r\n }\r\n\r\n getPinById(id) {\r\n return this.locations.filter(x => x.id === id)[0];\r\n }\r\n\r\n getMarkerIconOptions() {\r\n const iconOptions = {\r\n url: '/dist/images/map/map-marker.png',\r\n width: 64,\r\n height: 85,\r\n gicon: null\r\n };\r\n return iconOptions;\r\n }\r\n}\r\n","export default class MapBridge {\r\n constructor(el, options) {\r\n this.el = el;\r\n this.options = options;\r\n this.mapClasses = {\r\n Google: null,\r\n Baidu: null,\r\n Yandex: null,\r\n Kakao: null\r\n };\r\n this.defineImplementations();\r\n this.chooseImplementation();\r\n }\r\n\r\n defineImplementations() {\r\n throw new Error('Please define the method in inherited class');\r\n }\r\n\r\n chooseImplementation() {\r\n\r\n const mapType = document.querySelector('body').getAttribute('data-map-type');\r\n \r\n switch (mapType) {\r\n case 'KakaoMaps':\r\n this._implementation = new this.mapClasses.Kakao(this.el, this.options);\r\n break;\r\n\r\n default:\r\n this._implementation = new this.mapClasses.Google(this.el, this.options);\r\n break;\r\n }\r\n }\r\n\r\n initApi() {\r\n return this._implementation.initApi();\r\n }\r\n\r\n triggerResize() {\r\n this._implementation.triggerResize();\r\n }\r\n\r\n setZoom(zoom) {\r\n this._implementation.setZoom(zoom);\r\n }\r\n}\r\n","import FilterMapGoogle from './implementations/filterMapGoogle';\r\nimport FilterMapBaidu from './implementations/filterMapBaidu';\r\nimport FilterMapKakao from './implementations/filterMapKakao';\r\nimport GenericMapBridge from '$Feature/GenericComponents/code/src/mapGeneric/mapBridge';\r\n\r\nexport default class FilterWithMapBridge extends GenericMapBridge {\r\n defineImplementations() {\r\n this.mapClasses.Google = FilterMapGoogle;\r\n this.mapClasses.Baidu = FilterMapBaidu;\r\n this.mapClasses.Kakao = FilterMapKakao;\r\n }\r\n\r\n initMap() {\r\n this._implementation.initMap();\r\n }\r\n\r\n afterMapLoaded(data) {\r\n this._implementation.afterMapLoaded(data);\r\n }\r\n\r\n updateData(data, applyBounds, IsGeoPositionEnabled) {\r\n this._implementation.updateData(data, applyBounds, IsGeoPositionEnabled);\r\n }\r\n\r\n setMarkerActive(id) {\r\n this._implementation.setMarkerActive(id);\r\n }\r\n\r\n openInfoWindow(pin) {\r\n this._implementation.openInfoWindow(pin);\r\n }\r\n\r\n getPinById(id) {\r\n this._implementation.getPinById(id);\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport { config } from '../../../index';\r\nimport FilterMapBridge from './filterMapBridge';\r\n\r\nexport default class FilterMapControl extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'filter-map';\r\n }\r\n\r\n static get constructorName() {\r\n return 'filterMapControl';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initMap();\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.mediator = null;\r\n this.mapBridge = null;\r\n this.jsonMapDefaultData = null;\r\n this.options = {};\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n addListeners() {}\r\n\r\n initMap() {\r\n const coords = this.el.getAttribute('data-coords').split(',');\r\n const zoom = this.el.getAttribute('data-zoom')\r\n ? parseInt(this.el.getAttribute('data-zoom'), 10)\r\n : 10;\r\n\r\n this.options = {\r\n center: {\r\n lat: window.parseFloat(coords[0]),\r\n lng: window.parseFloat(coords[1])\r\n },\r\n zoom\r\n };\r\n\r\n this.mapBridge = new FilterMapBridge(this.el, this.options);\r\n\r\n this.jsonMapDefaultData = this.getData();\r\n\r\n this.mapBridge.initApi().then(() => {\r\n this.mapBridge.initMap();\r\n\r\n if (this.jsonMapDefaultData) {\r\n config.state.pins.data = this.jsonMapDefaultData.stockists;\r\n this.mapBridge.afterMapLoaded(this.jsonMapDefaultData);\r\n }\r\n });\r\n }\r\n\r\n getData() {\r\n const jsonScriptNode = this.el.querySelector('[data-ref=\"json-map-data\"]');\r\n const jsonData = jsonScriptNode ? JSON.parse(jsonScriptNode.innerHTML) : null;\r\n return jsonData;\r\n }\r\n}\r\n","import { config } from '../index';\r\nimport MediatorEvents from './enums/mediatorEvents';\r\nimport ViewportInfo, { DEVICE_TYPE_MOBILE } from '$Foundation/src/js/ViewportInfo';\r\nimport { isCancel } from '$Foundation/src/js/api';\r\nimport FilterTrackingService from './filterTrackingService';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class Mediator {\r\n constructor() {\r\n this.lastSearchQuery = null;\r\n }\r\n\r\n getTrackingAction(searchQuery) {\r\n return searchQuery;\r\n }\r\n\r\n shouldTriggerTrackingEvent(eventModel) {\r\n const searchQuery = this.getSearchQueryFromEvent(eventModel);\r\n return searchQuery && searchQuery !== this.lastSearchQuery;\r\n }\r\n\r\n storeLastSearchInfo(eventModel) {\r\n this.lastSearchQuery = this.getSearchQueryFromEvent(eventModel);\r\n }\r\n\r\n triggerTracking(eventModel) {\r\n const searchQuery = this.getSearchQueryFromEvent(eventModel);\r\n const trackCategory = this.getTrackDetailsFromEvent(eventModel).category;\r\n const trackLabel = this.getTrackDetailsFromEvent(eventModel).label;\r\n const trackEvent = this.getTrackDetailsFromEvent(eventModel).event;\r\n const trackBreedId = this.getTrackDetailsFromEvent(eventModel).breedId;\r\n const trackSpecieId = this.getTrackDetailsFromEvent(eventModel).specieId;\r\n const trackAge = this.getTrackDetailsFromEvent(eventModel).age;\r\n\r\n FilterTrackingService.triggerTracking(\r\n this.getTrackingAction(searchQuery),\r\n trackLabel,\r\n trackEvent,\r\n trackBreedId,\r\n trackSpecieId,\r\n trackAge,\r\n trackCategory\r\n );\r\n }\r\n\r\n getSearchQueryFromEvent(eventModel) {\r\n return eventModel.searchQuery.searchQuery;\r\n }\r\n\r\n getTrackDetailsFromEvent(eventModel) {\r\n return eventModel.trackDetails;\r\n }\r\n\r\n stateChanged(eventModel) {\r\n switch (eventModel.eventType) {\r\n case MediatorEvents.filterChanged: {\r\n config.filterListingControl.showPreloader();\r\n\r\n const getListingItems = config.dataLoader.getData(\r\n eventModel.eventMethod,\r\n eventModel.eventParams,\r\n eventModel.eventUrl\r\n );\r\n\r\n getListingItems.then(\r\n (result) => {\r\n config.filterListingControl.updateListing(\r\n result.data,\r\n eventModel.typeOfInsertingContent\r\n );\r\n const queryString = Utils.convertToQuery(eventModel.searchQuery);\r\n config.filterPanelControl.setUrl(queryString);\r\n\r\n if (config.filterTagsControl) config.filterTagsControl.updateTags();\r\n config.filterPanelControl.updateClearBtnVisibility();\r\n config.filterPanelControl.updateClearAllLinkVisibility();\r\n\r\n if (config.filterMapControl) {\r\n config.filterMapControl.mapBridge.updateData(result.data, true);\r\n }\r\n\r\n\r\n config.filterListingControl.hidePreloader();\r\n },\r\n (error) => {\r\n if (isCancel(error)) {\r\n return;\r\n }\r\n config.filterListingControl.hidePreloader();\r\n throw new Error(error);\r\n }\r\n );\r\n\r\n //\r\n\r\n break;\r\n }\r\n\r\n case MediatorEvents.clearAllFilters: {\r\n config.filterListingControl.showPreloader();\r\n const getListingItems = config.dataLoader.getData(\r\n eventModel.eventMethod,\r\n eventModel.eventParams,\r\n eventModel.eventUrl\r\n );\r\n\r\n getListingItems.then(\r\n (result) => {\r\n config.filterListingControl.updateListing(\r\n result.data,\r\n eventModel.typeOfInsertingContent\r\n );\r\n if (config.filterTagsControl) config.filterTagsControl.updateTags();\r\n config.filterPanelControl.updateClearBtnVisibility();\r\n config.filterPanelControl.setUrl();\r\n config.filterPanelControl.updateClearAllLinkVisibility();\r\n if (config.filterMapControl) {\r\n config.filterMapControl.mapBridge.updateData(result.data, true);\r\n }\r\n if (ViewportInfo.deviceTypeByViewport === DEVICE_TYPE_MOBILE) {\r\n config.filterPanelControl.handleCloseFilterClick();\r\n }\r\n config.filterListingControl.hidePreloader();\r\n },\r\n (error) => {\r\n if (isCancel(error)) {\r\n return;\r\n }\r\n config.filterListingControl.hidePreloader();\r\n throw new Error(error);\r\n }\r\n );\r\n\r\n break;\r\n }\r\n\r\n case MediatorEvents.applyFilters: {\r\n config.filterListingControl.showPreloader();\r\n\r\n const getListingItems = config.dataLoader.getData(\r\n eventModel.eventMethod,\r\n eventModel.eventParams,\r\n eventModel.eventUrl\r\n );\r\n\r\n getListingItems.then(\r\n (result) => {\r\n config.filterListingControl.updateListing(\r\n result.data,\r\n eventModel.typeOfInsertingContent\r\n );\r\n const queryString = Utils.convertToQuery(eventModel.searchQuery);\r\n config.filterPanelControl.updateClearBtnVisibility();\r\n config.filterPanelControl.updateClearAllLinkVisibility();\r\n config.filterPanelControl.setUrl(queryString);\r\n\r\n if (config.filterTagsControl) config.filterTagsControl.updateTags();\r\n if (config.filterMapControl) {\r\n config.filterMapControl.mapBridge.updateData(result.data, true);\r\n }\r\n config.filterPanelControl.handleCloseFilterClick();\r\n config.filterListingControl.hidePreloader();\r\n },\r\n (error) => {\r\n if (isCancel(error)) {\r\n return;\r\n }\r\n config.filterListingControl.hidePreloader();\r\n throw new Error(error);\r\n }\r\n );\r\n break;\r\n }\r\n\r\n case MediatorEvents.tagRemoved: {\r\n const id = eventModel.eventData.id;\r\n config.filterPanelControl.resetConcreteFilters(id);\r\n break;\r\n }\r\n\r\n case MediatorEvents.clickFilterButton: {\r\n const DLObject = Utils.getDLObject();\r\n config.state.isFilterPanelActive = config.filterPanelControl.isFilterPanelActive();\r\n config.filterTagsControl.updateVisibility(config.state.isFilterPanelActive);\r\n DLObject.features.filter('[data-filter-trigger]');\r\n break;\r\n }\r\n\r\n case MediatorEvents.closeFilters: {\r\n config.state.isFilterPanelActive = false;\r\n config.filterTagsControl.updateVisibility(config.state.isFilterPanelActive);\r\n break;\r\n }\r\n\r\n case MediatorEvents.search: {\r\n config.filterListingControl.showPreloader();\r\n\r\n if (FilterTrackingService.isTrackingEnabled()) {\r\n if (this.shouldTriggerTrackingEvent(eventModel)) {\r\n this.storeLastSearchInfo(eventModel);\r\n this.triggerTracking(eventModel);\r\n }\r\n }\r\n\r\n const getListingItems = config.dataLoader.getData(\r\n eventModel.eventMethod,\r\n eventModel.eventParams,\r\n eventModel.eventUrl\r\n );\r\n\r\n getListingItems.then(\r\n (result) => {\r\n config.filterListingControl.updateListing(\r\n result.data,\r\n eventModel.typeOfInsertingContent\r\n );\r\n const queryString = Utils.convertToQuery(eventModel.searchQuery);\r\n config.filterPanelControl.setUrl(queryString);\r\n\r\n if (config.filterMapControl) {\r\n config.filterMapControl.mapBridge.updateData(result.data, true);\r\n }\r\n config.filterListingControl.hidePreloader();\r\n },\r\n (error) => {\r\n if (isCancel(error)) {\r\n return;\r\n }\r\n config.filterListingControl.hidePreloader();\r\n throw new Error(error);\r\n }\r\n );\r\n break;\r\n }\r\n\r\n case MediatorEvents.viewAllBtnClicked: {\r\n config.filterPanelControl.updateFilterCategory(eventModel.eventData);\r\n break;\r\n }\r\n\r\n case MediatorEvents.paginationButtonClicked: {\r\n config.filterListingControl.showPreloader();\r\n\r\n const getListingItems = config.dataLoader.getData(\r\n eventModel.eventMethod,\r\n eventModel.eventParams,\r\n eventModel.eventUrl\r\n );\r\n\r\n getListingItems.then(\r\n (result) => {\r\n config.filterListingControl.updateListing(\r\n result.data,\r\n eventModel.typeOfInsertingContent\r\n );\r\n const queryString = Utils.convertToQuery(eventModel.searchQuery);\r\n config.filterPanelControl.setUrl(queryString);\r\n if (config.filterMapControl) {\r\n config.filterMapControl.mapBridge.updateData(result.data, true);\r\n }\r\n\r\n config.filterListingControl.hidePreloader();\r\n },\r\n (error) => {\r\n if (isCancel(error)) {\r\n return;\r\n }\r\n config.filterListingControl.hidePreloader();\r\n throw new Error(error);\r\n }\r\n );\r\n break;\r\n }\r\n\r\n /**\r\n * Map mediator events\r\n */\r\n\r\n case MediatorEvents.mapMarkerClicked: {\r\n config.filterMapControl.mapBridge.openInfoWindow(eventModel.eventData.pin);\r\n config.filterListingControl.setActiveItem(eventModel.eventData.pin);\r\n break;\r\n }\r\n\r\n case MediatorEvents.mapClicked: {\r\n config.filterListingControl.resetActiveItems();\r\n break;\r\n }\r\n\r\n case MediatorEvents.filterItemClicked: {\r\n config.filterMapControl.mapBridge.setMarkerActive(eventModel.eventData.pinId);\r\n config.filterListingControl.setActiveItem(eventModel.eventData.targetPin);\r\n break;\r\n }\r\n\r\n case MediatorEvents.filterSelectChanged: {\r\n config.filterListingControl.showPreloader();\r\n\r\n const getListingItems = config.dataLoader.getData(\r\n eventModel.eventMethod,\r\n eventModel.eventParams,\r\n eventModel.eventUrl\r\n );\r\n\r\n getListingItems.then(\r\n (result) => {\r\n config.filterListingControl.updateListing(\r\n result.data,\r\n eventModel.typeOfInsertingContent\r\n );\r\n const queryString = Utils.convertToQuery(eventModel.searchQuery);\r\n config.filterPanelControl.setUrl(queryString);\r\n\r\n if (config.filterMapControl) {\r\n config.filterMapControl.mapBridge.updateData(result.data, true);\r\n }\r\n config.filterListingControl.hidePreloader();\r\n },\r\n (error) => {\r\n if (isCancel(error)) {\r\n return;\r\n }\r\n config.filterListingControl.hidePreloader();\r\n throw new Error(error);\r\n }\r\n );\r\n break;\r\n }\r\n\r\n case MediatorEvents.mapIdleFinished: {\r\n config.filterListingControl.showPreloader();\r\n const getListingItems = config.dataLoader.getData(\r\n eventModel.eventMethod,\r\n eventModel.eventParams,\r\n eventModel.eventUrl\r\n );\r\n\r\n getListingItems.then(\r\n (result) => {\r\n config.filterListingControl.updateListing(\r\n result.data,\r\n eventModel.typeOfInsertingContent\r\n );\r\n if (config.filterMapControl) {\r\n config.filterMapControl.mapBridge.updateData(result.data, false);\r\n }\r\n config.filterListingControl.hidePreloader();\r\n },\r\n (error) => {\r\n if (isCancel(error)) {\r\n return;\r\n }\r\n config.filterListingControl.hidePreloader();\r\n throw new Error(error);\r\n }\r\n );\r\n break;\r\n }\r\n\r\n case MediatorEvents.getCurrentPosition: {\r\n config.filterListingControl.showPreloader();\r\n const getListingItems = config.dataLoader.getData(\r\n eventModel.eventMethod,\r\n eventModel.eventParams,\r\n eventModel.eventUrl\r\n );\r\n\r\n const IsGeoPositionEnabled = true;\r\n\r\n getListingItems.then(\r\n (result) => {\r\n config.filterListingControl.updateListing(\r\n result.data,\r\n eventModel.typeOfInsertingContent\r\n );\r\n if (config.filterMapControl) {\r\n config.filterMapControl.mapBridge.updateData(\r\n result.data,\r\n true,\r\n IsGeoPositionEnabled,\r\n eventModel.position\r\n );\r\n }\r\n config.filterListingControl.hidePreloader();\r\n },\r\n (error) => {\r\n if (isCancel(error)) {\r\n return;\r\n }\r\n config.filterListingControl.hidePreloader();\r\n throw new Error(error);\r\n }\r\n );\r\n break;\r\n }\r\n\r\n default: {\r\n throw new Error(eventModel.eventType, ' hasn\\'t been handled.');\r\n }\r\n }\r\n }\r\n}\r\n","import api, { CancelToken, isCancel } from '$Foundation/src/js/api';\r\n\r\nexport default class DataLoader {\r\n constructor() {\r\n this.lastRequestCancel = null;\r\n }\r\n\r\n async getData(method, data, url) {\r\n if (this.lastRequestCancel) {\r\n this.lastRequestCancel('Request canceled');\r\n this.lastRequestCancel = null;\r\n }\r\n\r\n const source = CancelToken.source();\r\n this.lastRequestCancel = source.cancel.bind(source);\r\n\r\n try {\r\n return await api({\r\n method,\r\n data,\r\n url,\r\n cancelToken: source.token\r\n });\r\n } catch (error) {\r\n if (isCancel(error)) {\r\n console.warn(error.message);\r\n }\r\n throw error;\r\n }\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport FilterPanelControl from './js/controls/filterPanelControl';\r\nimport FilterTagsControl from './js/controls/filterTagsControl';\r\nimport FilterListingControl from './js/controls/filterListingControl';\r\nimport FilterSearchControl from './js/controls/filterSearchControl';\r\nimport FilterPlacesSearchControl from './js/controls/map/filterPlacesSearchControl';\r\nimport FilterViewAllBtnControl from './js/controls/filterViewAllBtnControl';\r\nimport FilterPaginationControl from './js/controls/filterPaginationControl';\r\nimport FilterMapControl from './js/controls/map/filterMapControl';\r\nimport Mediator from './js/mediator';\r\nimport DataLoader from './js/dataLoader';\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\nimport MoveTo from 'moveto';\r\nimport FilterStockistsControl from './js/controls/filterStockistsControl';\r\n\r\nconst config = {};\r\n\r\nexport default class FilterAndListing extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'filter-and-listing';\r\n }\r\n\r\n setVariables() {\r\n this.controls = [];\r\n this.controlInstances = [];\r\n\r\n // Create config\r\n config.el = this;\r\n config.mediator = new Mediator();\r\n config.dataLoader = new DataLoader();\r\n config.endPointUrl = this.el.getAttribute('data-endpoint');\r\n config.tracking = {\r\n category: this.el.getAttribute('data-track-category'),\r\n action: this.el.getAttribute('data-track-action')\r\n };\r\n\r\n const dataRequestAttributes = 'data-request-';\r\n const regex = new RegExp(dataRequestAttributes, 'gi');\r\n config.requestParameters = [...this.el.attributes]\r\n .filter(attr => regex.test(attr.name))\r\n .map(attr => ({ [`${attr.name.substr(dataRequestAttributes.length)}`]: attr.value }));\r\n\r\n this.controls.push(\r\n FilterMapControl,\r\n FilterPanelControl,\r\n FilterStockistsControl,\r\n FilterTagsControl,\r\n FilterListingControl,\r\n FilterSearchControl,\r\n FilterPaginationControl,\r\n FilterViewAllBtnControl,\r\n FilterPlacesSearchControl\r\n );\r\n\r\n config.state = {\r\n isfilterPanelActive: false,\r\n pins: {\r\n data: [],\r\n activePin: null\r\n },\r\n map: {\r\n bounds: {},\r\n latitude: null,\r\n longitude: null,\r\n currentLatitude: null,\r\n currentLongitude: null\r\n }\r\n };\r\n this.stockistsList = this.el.querySelector('[data-control=\"filter-panel\"]');\r\n this.stockistsMap = this.el.querySelector('.stockist-map');\r\n this.parentNode = this.el.querySelector('.parent-node');\r\n }\r\n handleMobileMap() {\r\n if (this.isWhereToBuyPage() && this.parentNode \r\n && this.stockistsMap && this.stockistsList\r\n && window.matchMedia('(max-width: 770px)').matches) {\r\n \r\n this.parentNode.insertBefore(this.stockistsMap, this.stockistsList)\r\n }\r\n }\r\n\r\n addListeners() {\r\n EventEmitter.subscribe('content:updated', () => {\r\n this.initControls();\r\n });\r\n\r\n EventEmitter.subscribe('content:willRemove', (container) => {\r\n this.destroyControls(container);\r\n });\r\n\r\n EventEmitter.subscribe('pagination:change', () => {\r\n this.scrollElIntoView();\r\n });\r\n }\r\n\r\n sortResultsByDistance() {\r\n // set default Sort results by distance for Euka project after page load\r\n window.addEventListener(\"load\", function () {\r\n const locateMeBtn = document.querySelector('[data-ref=\"locate-to-me-btn\"]');\r\n const isEukaWhereToBuyPage = Utils.isEukanuba() && this.isWhereToBuyPage() \r\n && window.location.search.length === 0;\r\n if (isEukaWhereToBuyPage) {\r\n // timeout needed for button load\r\n setTimeout(function () {\r\n window.EUKA && window.EUKA.click(locateMeBtn)\r\n }, 2000);\r\n }\r\n });\r\n }\r\n\r\n isWhereToBuyPage() {\r\n const location = window.location;\r\n \r\n return location && location.pathname.split('/')[2] \r\n && location.pathname.split('/')[2].includes('where-to-buy');\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.handleMobileMap();\r\n this.addListeners();\r\n this.initControls();\r\n this.sortResultsByDistance();\r\n }\r\n\r\n initControls(container) {\r\n this.controls.forEach((Control) => {\r\n this.initControl(container, Control);\r\n });\r\n }\r\n\r\n initControl(container = this.el, Control) {\r\n const controlName = Control.tagName;\r\n\r\n if (typeof controlName !== 'string') {\r\n throw new Error(' tagName is empty', Control);\r\n }\r\n\r\n const controlNodes = [...container.querySelectorAll(`[data-control~=\"${controlName}\"]`)];\r\n\r\n controlNodes.forEach((controlNode) => {\r\n if (!controlNode.components) {\r\n controlNode.components = [];\r\n }\r\n\r\n let allowToInit = true;\r\n\r\n controlNode.components.forEach((instanse) => {\r\n if (instanse.constructor.tagName === controlName && instanse.isInited) {\r\n allowToInit = false;\r\n }\r\n });\r\n\r\n if (allowToInit) {\r\n const controlInstance = new Control(controlNode);\r\n controlNode.components.push(controlInstance);\r\n this.controlInstances.push(controlInstance);\r\n const controlInstanceName = controlInstance.constructor.constructorName;\r\n config[controlInstanceName] = controlInstance;\r\n config[controlInstanceName].setMediator(this);\r\n }\r\n });\r\n }\r\n\r\n destroyControls(container = this.el) {\r\n this.controls.forEach((Control) => {\r\n const controlName = Control.tagName;\r\n\r\n if (typeof controlName !== 'string') {\r\n throw new Error(' tagName is empty', Control);\r\n }\r\n\r\n const controlNodes = [\r\n ...container.querySelectorAll(`[data-control~=\"${controlName}\"]`)\r\n ];\r\n\r\n controlNodes.forEach((controlNode) => {\r\n if (!controlNode.components || !controlNode.components.length) {\r\n return;\r\n }\r\n\r\n controlNode.components.forEach((instance) => {\r\n instance.destroy();\r\n instance.isDestroyed = true;\r\n });\r\n\r\n this.controlInstances = this.controlInstances.filter(x => !x.isDestroyed);\r\n });\r\n });\r\n }\r\n\r\n scrollElIntoView() {\r\n if (window.pageYOffset > this.el.offsetTop) {\r\n setTimeout(() => {\r\n const header = document.querySelector('[data-js-header-scroll]');\r\n const headerOffset = header.getBoundingClientRect().height;\r\n\r\n const moveTo = new MoveTo({\r\n tolerance: headerOffset\r\n });\r\n const target = this.el;\r\n moveTo.move(target);\r\n }, 100);\r\n }\r\n }\r\n}\r\n\r\nexport { config };\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\n\r\nexport default class MobileSearchButton extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return \"mobile-search-button\";\r\n }\r\n\r\n init() {\r\n this.addListeners();\r\n }\r\n\r\n addListeners() {\r\n if(location.href.indexOf(\"hk\")!==-1){\r\n const testArr = [document.querySelectorAll(\".mobile-search-button\"), document.querySelectorAll(\"[data-react = 'my-account-dropdown']\")]\r\n\r\n for(let nodes of testArr){\r\n for(let el of nodes){\r\n el.style.display = \"none\"\r\n }\r\n }\r\n }\r\n\r\n const searchButtonElement = document.querySelector(\r\n \".top-navigation-actions-container > .rc-search--xs\"\r\n );\r\n const searchInputElement = document.querySelector(\r\n \".rc-search_top_menu\"\r\n );\r\n const topNavigationMenuButtonElement = document.querySelector(\r\n \"button[role=menuitem].rc-menu--xs\"\r\n );\r\n function hideSearchBar() {\r\n searchInputElement.style.display = \"none\";\r\n searchButtonElement.style.display = \"block\";\r\n }\r\n function showSearchBar() {\r\n searchInputElement.style.display = \"block\";\r\n searchButtonElement.style.display = \"none\";\r\n }\r\n function handleResize() {\r\n if (window.scrollY > 100 && searchInputElement) {\r\n hideSearchBar();\r\n } else {\r\n showSearchBar();\r\n }\r\n }\r\n handleResize();\r\n window.addEventListener(\"scroll\", handleResize);\r\n searchButtonElement.addEventListener(\"click\", showSearchBar);\r\n topNavigationMenuButtonElement.addEventListener(\"click\", () => {\r\n if (document.querySelector(\".rc-secondary-nav--open\")) {\r\n showSearchBar();\r\n } else {\r\n hideSearchBar();\r\n }\r\n });\r\n\r\n if(location.href.indexOf(\"hk\")!==-1){\r\n const testArr = [document.querySelectorAll(\".mobile-search-button\"), document.querySelectorAll(\"[data-react = 'my-account-dropdown']\")]\r\n\r\n for(let nodes of testArr){\r\n for(let el of nodes){\r\n el.style.display = \"none\"\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\n\r\nexport default class ButtonSwitch extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.checkboxes = document.querySelectorAll('[button-switch]');\r\n this.isClickInit = null;\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'button-switch';\r\n }\r\n\r\n init() {\r\n this.addListeners();\r\n }\r\n\r\n addListeners() {\r\n this.checkboxes.forEach((checkbox) => {\r\n this.addListener(checkbox, 'click', e => this.onCheckboxClick(e.target));\r\n });\r\n }\r\n\r\n onCheckboxClick(e) {\r\n const buttonId = e.getAttribute('button-switch');\r\n if (buttonId && buttonId.length) {\r\n let button = document.getElementById(buttonId);\r\n\r\n if (button == undefined) return;\r\n\r\n if (e.checked) {\r\n button.removeAttribute('disabled');\r\n } else {\r\n button.setAttribute('disabled','');\r\n }\r\n }\r\n }\r\n}\r\n\r\n","import api from '$Foundation/src/js/api';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport './styles.scss';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\nimport MoveTo from 'moveto';\r\n\r\nexport default class ListingWithPagination extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'listing-with-pagination';\r\n }\r\n\r\n setVariables() {\r\n this.endPointUrl = this.el.getAttribute('data-endpoint');\r\n this.requestFilter = this.el.getAttribute('data-request-filter');\r\n this.requestCategory = this.el.getAttribute('data-request-category');\r\n this.viewAllBtns = [...this.el.querySelectorAll('[data-ref=\"view-all-btn\"]')];\r\n this.paginationButtons = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-pagination-btn\"]')\r\n ];\r\n this.paginationInputs = [\r\n ...this.el.querySelectorAll('[data-ref=\"filter-pagination-input\"]')\r\n ];\r\n this.dataContainer = this.el.querySelector('[data-ref=\"data-container\"]');\r\n this.selector = '[data-ref=\"data-container\"]';\r\n this.preloader = this.el.querySelector('[data-ref=\"preloader\"]');\r\n this.filterSelect = this.el.querySelector('[data-ref=\"filter-select\"]');\r\n this.retailerLink = [\r\n ...this.el.querySelectorAll('[data-ref=\"retailer-link\"]')\r\n ]\r\n this.searchQuery = {\r\n filter: this.requestFilter,\r\n category: this.requestCategory,\r\n sortby: this.filterSelect\r\n ? this.filterSelect.options[this.filterSelect.selectedIndex].value.toLowerCase()\r\n : null\r\n };\r\n }\r\n\r\n addListeners() {\r\n this.paginationButtons.forEach((button) => {\r\n this.addListener(button, 'click', e => this.handlePaginationBtnClick(e));\r\n });\r\n\r\n this.viewAllBtns.forEach((button) => {\r\n this.addListener(button, 'click', e => this.handleViewAllClick(e));\r\n });\r\n\r\n this.paginationInputs.forEach((input) => {\r\n this.addListener(input, 'keypress', e => this.handleInputKeyPress(e));\r\n });\r\n this.retailerLink.forEach((link) => {\r\n this.addListener(link, 'click', e => this.handleRetailerClick(e));\r\n });\r\n this.addListener(this.filterSelect, 'change', e => this.handleSelectChange(e));\r\n\r\n EventEmitter.subscribe('search-field:updated', data => this.handleSetSearchQuery(data));\r\n EventEmitter.subscribe('search-field:set', data => this.handleSetSearchQuery(data));\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n EventEmitter.emit('search-field:get');\r\n }\r\n\r\n handlePaginationBtnClick(e) {\r\n this.showPreloader();\r\n this.searchQuery.page = e.target.getAttribute('data-page');\r\n const queryString = Utils.convertToQuery(this.searchQuery, this.endPointUrl);\r\n const url = `${this.endPointUrl}${queryString}`;\r\n this.scrollElIntoView();\r\n this.getData('GET', {}, url).then((result) => {\r\n this.updateListing(result.data);\r\n this.hidePreloader();\r\n });\r\n }\r\n\r\n handleInputKeyPress(e) {\r\n const regExp = /^\\d+$/;\r\n const char = String.fromCharCode(e.which);\r\n\r\n if (!regExp.test(char)) {\r\n e.preventDefault();\r\n }\r\n\r\n const inputValue = e.target.value;\r\n\r\n if (e.keyCode === 13) {\r\n this.showPreloader();\r\n this.searchQuery.page = inputValue;\r\n const queryString = Utils.convertToQuery(this.searchQuery, this.endPointUrl);\r\n const url = `${this.endPointUrl}${queryString}`;\r\n this.scrollElIntoView();\r\n this.getData('GET', {}, url).then((result) => {\r\n this.updateListing(result.data);\r\n this.hidePreloader();\r\n });\r\n }\r\n }\r\n\r\n handleViewAllClick(e) {\r\n e.preventDefault();\r\n const category = e.target.getAttribute('data-category');\r\n const data = {\r\n category\r\n };\r\n EventEmitter.emit('viewAll:click', data);\r\n }\r\n\r\n handleSelectChange(e) {\r\n this.showPreloader();\r\n const data = { sortby: e.target.options[e.target.selectedIndex].value.toLowerCase() };\r\n this.searchQuery = { ...this.searchQuery, ...data };\r\n const queryString = Utils.convertToQuery(this.searchQuery, this.endPointUrl);\r\n const url = `${this.endPointUrl}${queryString}`;\r\n this.getData('GET', {}, url).then((result) => {\r\n this.updateListing(result.data);\r\n this.hidePreloader();\r\n });\r\n }\r\n\r\n handleSetSearchQuery(data) {\r\n const searchQuery = data.value;\r\n this.searchQuery = { ...this.searchQuery, ...{ searchQuery } };\r\n }\r\n\r\n async getData(method, data, url) {\r\n try {\r\n return await api({\r\n method,\r\n url,\r\n data\r\n });\r\n } catch (err) {\r\n this.hidePreloader();\r\n throw new Error(err);\r\n }\r\n }\r\n\r\n updateListing(data, typeOfInsertingContent) {\r\n EventEmitter.emit('content:willRemove', this.dataContainer);\r\n\r\n const dummy = document.createElement('div');\r\n dummy.innerHTML = data;\r\n\r\n const container = dummy.querySelector(`${this.selector}`);\r\n\r\n const html = container ? container.innerHTML : '';\r\n\r\n switch (typeOfInsertingContent) {\r\n case 'append':\r\n this.dataContainer.innerHTML += html;\r\n break;\r\n\r\n case 'replace':\r\n this.dataContainer.innerHTML = html;\r\n break;\r\n\r\n default:\r\n this.dataContainer.innerHTML = html;\r\n }\r\n EventEmitter.emit('content:updated', this.dataContainer);\r\n this.init();\r\n this.initSelects();\r\n }\r\n\r\n initSelects() {\r\n const selectInstances = [\r\n ...this.el.querySelectorAll('[data-js-select]')\r\n ];\r\n const DLObject = Utils.getDLObject();\r\n\r\n if (DLObject.features.Selects && selectInstances.length > 0) {\r\n selectInstances.map((instance) => {\r\n DLObject.features.Selects.init('[data-js-select]', instance);\r\n });\r\n }\r\n }\r\n\r\n showPreloader() {\r\n const DLClass = Utils.getDLClass();\r\n this.preloader.classList.remove(`${DLClass}-hidden`);\r\n }\r\n hidePreloader() {\r\n const DLClass = Utils.getDLClass();\r\n this.preloader.classList.add(`${DLClass}-hidden`);\r\n }\r\n\r\n scrollElIntoView() {\r\n if (window.pageYOffset > this.el.offsetTop) {\r\n setTimeout(() => {\r\n const header = document.querySelector('[data-js-header-scroll]');\r\n const headerOffset = header.getBoundingClientRect().height;\r\n\r\n const moveTo = new MoveTo({\r\n tolerance: headerOffset\r\n });\r\n const target = this.el;\r\n moveTo.move(target);\r\n }, 100);\r\n }\r\n }\r\n\r\n handleRetailerClick(e) {\r\n const title = e.target.getAttribute('data-retailer-name') || \"\";\r\n\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n 'event': 'onlineRetailerClick',\r\n retailer: {\r\n 'name': title\r\n }\r\n });\r\n }\r\n\r\n onDestroy() {\r\n while (this.dataContainer.firstChild) {\r\n\r\n if (this.dataContainer.firstChild.remove) {\r\n this.dataContainer.firstChild.remove();\r\n } else {\r\n this.dataContainer.removeChild(this.dataContainer.firstChild);\r\n }\r\n }\r\n this.preloader = null;\r\n this.dataContainer = null;\r\n this.paginationButtons = null;\r\n this.paginationInputs = null;\r\n this.viewAllBtns = null;\r\n this.el = null;\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport ViewportInfo from '$Foundation/src/js/ViewportInfo';\r\nimport MoveTo from 'moveto';\r\n\r\nexport default class Timeline extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'timeline';\r\n }\r\n\r\n setVariables() {\r\n this.nav = this.el.querySelector('[data-ref=\"timeline-nav\"]');\r\n this.navLinks = [...this.el.querySelectorAll('[data-ref=\"timeline-link\"]')];\r\n this.sections = [...this.el.querySelectorAll('[data-ref=\"timeline-section\"]')];\r\n this.content = this.el.querySelector('[data-ref=\"timeline-content\"]');\r\n }\r\n\r\n addListeners() {\r\n this.navLinks.forEach((link) => {\r\n this.addListener(link, 'click', e => this.onLinkClick(e, link));\r\n });\r\n }\r\n\r\n init() {\r\n if (ViewportInfo.isTouch) return;\r\n this.setVariables();\r\n this.addListeners();\r\n this.initTimeline();\r\n }\r\n\r\n initTimeline() {\r\n window.onscroll = () => {\r\n this.updateTimeline();\r\n };\r\n }\r\n\r\n updateTimeline() {\r\n this.onTimelineVisible();\r\n this.onSectionsVisible();\r\n this.onSectionVisible();\r\n }\r\n\r\n onTimelineVisible() {\r\n // show/hide timeline navigation when timeline is shown\r\n if (\r\n this.el.offsetTop - window.innerHeight / 2 < window.pageYOffset &&\r\n this.el.offsetTop + this.el.offsetHeight - window.innerHeight / 2 > window.pageYOffset\r\n ) {\r\n this.nav.classList.add('nav-active');\r\n } else {\r\n this.nav.classList.remove('nav-active');\r\n }\r\n }\r\n\r\n onSectionsVisible() {\r\n // add/remove class to nav when sections are shown\r\n if (\r\n this.content.offsetTop - window.innerHeight / 2 < window.pageYOffset &&\r\n this.content.offsetTop + this.content.offsetHeight - window.innerHeight / 2 >\r\n window.pageYOffset\r\n ) {\r\n this.nav.classList.add('sections-active');\r\n } else {\r\n this.nav.classList.remove('sections-active');\r\n }\r\n }\r\n\r\n onSectionVisible() {\r\n // add/remove class to nav link when particular section is active\r\n // if the top of the section passed middle of the screen\r\n // and its bottom didn't pass the middle of the screen\r\n\r\n this.sections.forEach((item) => {\r\n const sectionName = item.getAttribute('id');\r\n if (\r\n item.offsetTop - window.innerHeight / 2 < window.pageYOffset &&\r\n item.offsetTop + item.offsetHeight - window.innerHeight / 2 > window.pageYOffset\r\n ) {\r\n /* find proper nav item and make it active */\r\n this.navLinks.forEach((link) => {\r\n if (link.getAttribute('data-id') === sectionName) {\r\n link.classList.add('section-active');\r\n }\r\n });\r\n } else {\r\n /* find proper nav item and make it unactive */\r\n this.navLinks.forEach((link) => {\r\n if (link.getAttribute('data-id') === sectionName) {\r\n link.classList.remove('section-active');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n onLinkClick(e, link) {\r\n e.preventDefault();\r\n const targetName = link.hash.substr(1);\r\n const targetNode = this.el.querySelector('#' + targetName);\r\n const header = document.querySelector('[data-js-header-scroll]');\r\n let headerOffset = header.getBoundingClientRect().height;\r\n const distanceToTop = targetNode.getBoundingClientRect().top;\r\n const headerReducingValue = 40;\r\n\r\n // distance from top depends on header height at the moment, when the page is scrolled to top, header is full height\r\n if (distanceToTop > 0) {\r\n headerOffset -= headerReducingValue;\r\n }\r\n const moveTo = new MoveTo({\r\n tolerance: headerOffset\r\n });\r\n moveTo.move(targetNode);\r\n }\r\n}\r\n","import MoveTo from \"moveto\";\r\nimport api from \"$Foundation/src/js/api\";\r\nimport BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport dLScriptsObserver from \"$Foundation/src/js/dLScriptsObserver\";\r\nimport EventEmitter from \"$Foundation/src/js/EventEmitter\";\r\nimport Utils from \"$Foundation/src/js/utils\";\r\nimport \"./styles.scss\";\r\n\r\nexport default class ViewAllArticles extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n dLScriptsObserver.onLoad(() => {\r\n this.addCarouselTracking = this.addCarouselTracking.bind(this);\r\n this.trackCarouselNavigationClick =\r\n this.trackCarouselNavigationClick.bind(this);\r\n this.trackCarouselSlideCTAClick =\r\n this.trackCarouselSlideCTAClick.bind(this);\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return \"view-all-articles\";\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.endPointUrl = this.el.getAttribute(\"data-endpoint\");\r\n this.requestFilter = this.el.getAttribute(\"data-request-filter\");\r\n this.dataContainer = this.el.querySelector(\r\n '[data-ref=\"data-container\"]'\r\n );\r\n this.selector = '[data-ref=\"data-container\"]';\r\n this.viewAllButtons = [\r\n ...this.el.querySelectorAll('[data-ref=\"view-all-button\"]'),\r\n ];\r\n this.preloader = this.el.querySelector('[data-ref=\"preloader\"]');\r\n this.carouselInstances = [\r\n ...this.el.querySelectorAll(\"[data-js-carousel]\"),\r\n ];\r\n\r\n this.searchQuery = {\r\n filter: this.requestFilter,\r\n };\r\n }\r\n\r\n addListeners() {\r\n this.viewAllButtons.forEach((button) => {\r\n this.addListener(button, \"click\", (e) =>\r\n this.handleViewAllBtnClick(e)\r\n );\r\n });\r\n\r\n const observer = new MutationObserver((mutations) =>\r\n this.handleCarouselUpdates(mutations)\r\n );\r\n const carouselTargets = document.querySelectorAll(\r\n \".rc-carousel.rc-carousel--cards\"\r\n );\r\n carouselTargets.forEach((carouselTarget) =>\r\n observer.observe(carouselTarget, {\r\n attributes: true,\r\n childList: true,\r\n subtree: true,\r\n })\r\n );\r\n }\r\n\r\n handleCarouselUpdates(mutations) {\r\n if (mutations && mutations.length > 0) {\r\n const allCarouselsItemsUpdates =\r\n this.getAllCarouselsItemsUpdates(mutations);\r\n if (allCarouselsItemsUpdates.length > 0) {\r\n const targetCarousels = this.getParentCarousels(\r\n allCarouselsItemsUpdates\r\n );\r\n targetCarousels.forEach((carouselContainer) =>\r\n this.handleViewAllBtnVisibility(carouselContainer)\r\n );\r\n }\r\n }\r\n }\r\n\r\n getAllCarouselsItemsUpdates(mutations) {\r\n return mutations.filter(\r\n (x) =>\r\n x.type === \"attributes\" &&\r\n x.attributeName === \"class\" &&\r\n x.target.classList.contains(\"rc-card__link\") &&\r\n x.target.classList.contains(\"tns-item\")\r\n );\r\n }\r\n\r\n getParentCarousels(mutations) {\r\n const targetParents = mutations.map((x) => x.target.parentElement);\r\n return [...new Set(targetParents)];\r\n }\r\n\r\n handleViewAllBtnVisibility(carouselContainer) {\r\n const viewAllButton =\r\n carouselContainer.offsetParent.parentElement.querySelector(\r\n \".rc-styled-link--cta.rc-md-up\"\r\n );\r\n const hiddenCarouselItems =\r\n carouselContainer.querySelectorAll('[tabindex=\"-1\"]');\r\n if (hiddenCarouselItems && hiddenCarouselItems.length > 0) {\r\n this.displayBtn(viewAllButton);\r\n } else {\r\n this.hideBtn(viewAllButton);\r\n }\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.addCarouselTracking();\r\n }\r\n\r\n trackCarouselSlideCTAClick(btnEl) {\r\n const carouselTitle = this.el.querySelector(\r\n \".rc-carousel__header-title\"\r\n );\r\n\r\n const card = btnEl.target.closest(\".rc-card\");\r\n const cardTitle = card.querySelector(\".rc-card__title\");\r\n\r\n const slideIndex = card ? card.getAttribute(\"id\").substr(9) : undefined;\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n event: \"carouselInteraction\",\r\n carouselInteraction: {\r\n name: \"buttonClick\",\r\n buttonLabel: btnEl.target.innerText,\r\n carousselType: \"Article\",\r\n carouselTitle:\r\n carouselTitle && carouselTitle?.innerText\r\n ? carouselTitle.innerText\r\n : undefined,\r\n slideId: slideIndex,\r\n cardTitle: cardTitle.innerText,\r\n },\r\n });\r\n }\r\n\r\n trackCarouselNavigationClick() {\r\n const currentActiveSlideIndex = this.el.querySelector(\r\n \".tns-nav button.tns-nav-active\"\r\n );\r\n const carouselTitle = this.el.querySelector(\r\n \".rc-carousel__header-title\"\r\n );\r\n if (currentActiveSlideIndex) {\r\n window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n event: \"carouselInteraction\",\r\n carouselInteraction: {\r\n name: \"slideLoad\",\r\n slideId:\r\n parseInt(\r\n currentActiveSlideIndex.getAttribute(\"data-nav\")\r\n ) + 1,\r\n carouselTitle: carouselTitle\r\n ? carouselTitle.innerText\r\n : undefined,\r\n carousselType: \"Article\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n addCarouselTracking() {\r\n const navigationButtons = this.el.querySelectorAll(\r\n 'button[data-controls=\"next\"], button[data-controls=\"prev\"], .tns-nav button'\r\n );\r\n const contentButtons = this.el.querySelectorAll(\r\n \".rc-card_footer__link\"\r\n );\r\n for (let i = 0; i < navigationButtons.length; i++) {\r\n navigationButtons[i].addEventListener(\r\n \"click\",\r\n this.trackCarouselNavigationClick\r\n );\r\n }\r\n for (let i = 0; i < contentButtons.length; i++) {\r\n contentButtons[i].addEventListener(\r\n \"click\",\r\n this.trackCarouselSlideCTAClick\r\n );\r\n }\r\n }\r\n\r\n removeCarouselTracking() {\r\n const navigationButtons = document.querySelectorAll(\r\n '[data-component=\"view-all-articles\"] [data-controls=\"next\"], [data-component=\"view-all-articles\"] [data-controls=\"prev\"], [data-component=\"view-all-articles\"] .tns-nav button'\r\n );\r\n const contentButtons = document.querySelectorAll(\r\n '[data-component=\"view-all-articles\"] .rc-card_footer__link'\r\n );\r\n for (let i = 0; i < navigationButtons.length; i++) {\r\n navigationButtons[i].removeEventListener(\r\n \"click\",\r\n this.trackCarouselNavigationClick\r\n );\r\n }\r\n for (let i = 0; i < contentButtons.length; i++) {\r\n contentButtons[i].removeEventListener(\r\n \"click\",\r\n this.trackCarouselSlideCTAClick\r\n );\r\n }\r\n }\r\n\r\n handleViewAllBtnClick(e) {\r\n e.preventDefault();\r\n this.showPreloader();\r\n const queryString = Utils.convertToQuery(\r\n this.searchQuery,\r\n this.endPointUrl\r\n );\r\n const url = `${this.endPointUrl}${queryString}`;\r\n\r\n this.getData(\"GET\", {}, url)\r\n .then((result) => {\r\n this.updateListing(result.data);\r\n this.hidePreloader();\r\n })\r\n .then(this.scrollElIntoView());\r\n }\r\n\r\n async getData(method, data, url) {\r\n try {\r\n return await api({\r\n method,\r\n url,\r\n data,\r\n });\r\n } catch (err) {\r\n this.hidePreloader();\r\n throw new Error(err);\r\n }\r\n }\r\n\r\n updateListing(data) {\r\n EventEmitter.emit(\"content:willRemove\", this.dataContainer);\r\n\r\n if (this.carouselInstances.length > 0) {\r\n this.destroyCarousels();\r\n }\r\n\r\n const dummy = document.createElement(\"div\");\r\n dummy.innerHTML = data;\r\n\r\n const container = dummy.querySelector(`${this.selector}`);\r\n\r\n const html = container ? container.innerHTML : \"\";\r\n this.dataContainer.innerHTML = html;\r\n }\r\n\r\n scrollElIntoView() {\r\n if (window.pageYOffset > this.el.offsetTop) {\r\n setTimeout(() => {\r\n const header = document.querySelector(\r\n \"[data-js-header-scroll]\"\r\n );\r\n const headerOffset = header\r\n ? header.getBoundingClientRect().height\r\n : 0;\r\n\r\n const moveTo = new MoveTo({\r\n tolerance: headerOffset,\r\n });\r\n const target = this.el;\r\n moveTo.move(target);\r\n }, 300);\r\n }\r\n }\r\n\r\n showPreloader() {\r\n const DLClass = Utils.getDLClass();\r\n this.preloader.classList.remove(`${DLClass}-hidden`);\r\n }\r\n\r\n hidePreloader() {\r\n const DLClass = Utils.getDLClass();\r\n this.preloader.classList.add(`${DLClass}-hidden`);\r\n }\r\n\r\n destroyCarousels() {\r\n const carouselInstancesWithinContainer = [\r\n ...this.el.querySelectorAll(\"[data-js-carousel]\"),\r\n ];\r\n const carouselInstancesIds = carouselInstancesWithinContainer.map(\r\n (instance) => instance.getAttribute(\"id\")\r\n );\r\n\r\n const DLOBject = Utils.getDLObject();\r\n const RCDLCarouselInstances = DLOBject.features.Carousel.instance;\r\n Object.keys(RCDLCarouselInstances).forEach((i) => {\r\n const instance = RCDLCarouselInstances[i];\r\n\r\n if (instance.isOn) {\r\n if (\r\n carouselInstancesIds.includes(\r\n instance.getInfo().container.id\r\n )\r\n ) {\r\n instance.destroy();\r\n }\r\n }\r\n });\r\n }\r\n\r\n onDestroy() {\r\n while (this.dataContainer.firstChild) {\r\n this.dataContainer.firstChild.remove();\r\n }\r\n this.preloader = null;\r\n this.dataContainer = null;\r\n this.viewAllButtons = null;\r\n this.el = null;\r\n this.removeCarouselTracking();\r\n }\r\n\r\n displayBtn(elem) {\r\n if (elem) {\r\n elem.classList.remove(\"rc-hidden\");\r\n }\r\n }\r\n\r\n hideBtn(elem) {\r\n if (elem) {\r\n elem.classList.add(\"rc-hidden\");\r\n }\r\n }\r\n}\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport dLScriptsObserver from \"$Foundation/src/js/dLScriptsObserver\";\r\n\r\nimport \"./styles.scss\";\r\n\r\nexport default class BackToTop extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return \"back-to-top\";\r\n }\r\n\r\n setVariables() {\r\n this.scrollLimit = 700;\r\n this.scrollStopHeight = 0;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(window, \"scroll\", () => this.handleButtonBehaviour());\r\n this.addListener(this.el, \"click\", () => this.handleClick());\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n\r\n if (window.scrollY > this.scrollLimit) {\r\n this.el.classList.add(\"visible\");\r\n }\r\n\r\n this.el.parentElement.style.position = \"relative\";\r\n }\r\n\r\n handleButtonBehaviour() {\r\n this.handleButtonVisibility();\r\n this.handleButtonPosition();\r\n }\r\n\r\n handleButtonVisibility() {\r\n if (window.scrollY > this.scrollLimit) {\r\n this.el.classList.add(\"visible\");\r\n } else {\r\n this.el.classList.remove(\"visible\");\r\n }\r\n }\r\n\r\n handleButtonPosition() {\r\n const buttonPosition = this.el.getBoundingClientRect();\r\n const parentPosition = this.el.parentElement.getBoundingClientRect();\r\n const bottomLimit = parentPosition.bottom - 50;\r\n\r\n if (buttonPosition.bottom > bottomLimit) {\r\n this.el.classList.add(\"bottom-limit\");\r\n this.scrollStopHeight = window.scrollY;\r\n } else if (this.scrollStopHeight > window.scrollY) {\r\n this.el.classList.remove(\"bottom-limit\");\r\n }\r\n }\r\n\r\n handleClick() {\r\n // Bugs fix for ios safary\r\n const to = setInterval(() => {\r\n document.body.scrollTop = -1;\r\n\r\n // clear timeout after 250 ms and reset scrollTop to 0\r\n if (i++ > 25) {\r\n clearInterval(to);\r\n document.body.scrollTop = 0;\r\n }\r\n }, 10);\r\n\r\n this.handleAnalitycs();\r\n }\r\n\r\n handleAnalitycs() {\r\n let dataLayer = (window.dataLayer = window.dataLayer || []);\r\n dataLayer.push({\r\n event: \"backToTopWidget\",\r\n });\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\n\r\nexport default class RelatedArticles extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'related-articles';\r\n }\r\n\r\n setVariables() {\r\n this.relatedArticleLinks = this.el.querySelectorAll('a');\r\n }\r\n\r\n addListeners() {\r\n this.relatedArticleLinks.forEach(relatedArticleLink => {\r\n this.addListener(relatedArticleLink, 'click', e => this.onRelatedArticleLinkClick(e, relatedArticleLink));\r\n });\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n onRelatedArticleLinkClick(e, relatedArticleLink) {\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n 'event' : 'readMoreBlockClick',\r\n 'readMoreBlockClick' : {\r\n 'name' : relatedArticleLink.parentElement.dataset.name,\r\n 'position' : relatedArticleLink.parentElement.dataset.position\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport { split } from 'sentence-splitter';\r\n\r\nexport default class ReadMore extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'read-more';\r\n }\r\n\r\n setVariables() {\r\n this.text = this.el.innerHTML;\r\n this.defaultVisibleSentencesQty = 7;\r\n this.visibleSentencesQty = this.el.getAttribute('data-sentence-qty') || 2;\r\n this.visibleText = '';\r\n this.hiddenText = '';\r\n }\r\n\r\n addListeners() {}\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initReadMore();\r\n }\r\n\r\n splitText() {\r\n const sentences = split(this.text);\r\n let visibleSentencesCount = 0;\r\n sentences.forEach((val) => {\r\n if (visibleSentencesCount < this.visibleSentencesQty) {\r\n if (val.type === 'Sentence') {\r\n visibleSentencesCount++;\r\n }\r\n this.visibleText = this.visibleText.concat(val.raw);\r\n } else if (val.type === 'Sentence') {\r\n this.hiddenText = this.hiddenText.concat(val.raw);\r\n }\r\n });\r\n }\r\n\r\n reformatText() {\r\n this.el.innerHTML = '';\r\n this.addDOMElement('div', 'read-more__wrapper', '', this.el, 'read-more-wrapper');\r\n this.addDOMElement(\r\n 'div',\r\n 'read-more__visible-text',\r\n this.visibleText,\r\n this.el.querySelector('[data-ref=\"read-more-wrapper\"]'),\r\n 'read-more-visible'\r\n );\r\n this.addDOMElement(\r\n 'div',\r\n 'read-more__hidden-text',\r\n this.hiddenText,\r\n this.el.querySelector('[data-ref=\"read-more-wrapper\"]'),\r\n 'read-more-hidden'\r\n );\r\n this.addDOMElement(\r\n 'a',\r\n 'rc-styled-link read-more__button',\r\n 'Read more',\r\n this.el,\r\n 'read-more-button'\r\n );\r\n\r\n this.visiblePart = this.el.querySelector('[data-ref=\"read-more-visible\"]');\r\n this.allText = this.el.querySelector('[data-ref=\"read-more-wrapper\"]');\r\n this.visibleTextHeight = this.visiblePart.clientHeight;\r\n this.textHeight = this.allText.clientHeight;\r\n this.button = this.el.querySelector('[data-ref=\"read-more-button\"]');\r\n }\r\n\r\n addDOMElement(element, className, text, parent, dataRef) {\r\n const domElement = document.createElement(element);\r\n\r\n domElement.innerHTML = text;\r\n\r\n domElement.setAttribute('class', className);\r\n domElement.setAttribute('data-ref', dataRef);\r\n parent.appendChild(domElement);\r\n }\r\n\r\n hideInvisibleText() {\r\n this.allText.style.maxHeight = this.visibleTextHeight + 'px';\r\n this.el.classList.add('is-closed');\r\n this.button.innerHTML = 'Read more';\r\n }\r\n\r\n showInvisibleText() {\r\n this.allText.style.maxHeight = this.textHeight + 'px';\r\n this.el.classList.remove('is-closed');\r\n this.button.innerHTML = 'Read less';\r\n }\r\n\r\n btnClick(e) {\r\n e.preventDefault();\r\n if (this.el.classList.contains('is-closed')) {\r\n this.showInvisibleText();\r\n } else {\r\n this.hideInvisibleText();\r\n }\r\n }\r\n\r\n initReadMore() {\r\n this.splitText();\r\n if (this.hiddenText === '') return;\r\n this.reformatText();\r\n this.button.addEventListener('click', (this.buttonListener = this.btnClick.bind(this)));\r\n this.button.addEventListener(\r\n 'touchstart',\r\n (this.buttonListener = this.btnClick.bind(this))\r\n );\r\n this.hideInvisibleText();\r\n }\r\n}\r\n","import api from '$Foundation/src/js/api';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\nimport './styles.scss';\r\n\r\nexport default class SearchResults extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n this.isInited = true;\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'search-results';\r\n }\r\n\r\n setVariables() {\r\n this.endPointUrl = this.el.getAttribute('data-endpoint');\r\n this.requestFilter = this.el.getAttribute('data-request-filter');\r\n this.searchField = this.el.querySelector('[data-ref=\"sr-search-field\"]');\r\n this.searchButtonNode = this.el.querySelector('[data-ref=\"search-button\"]');\r\n this.inputValue = encodeURIComponent(this.searchField.value);\r\n this.listingContainer = this.el.querySelector('[data-ref=\"sr-listing-container\"]');\r\n this.selector = '[data-ref=\"sr-listing-container\"]';\r\n this.preloader = this.el.querySelector('[data-ref=\"sr-preloader\"]');\r\n this.tabButtons = undefined;\r\n this.minChars = 2;\r\n this.isHistoryApiEnabled = !!(window.history && window.history.pushState);\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.searchField, 'keyup', e => this.handleInputKeyUp(e));\r\n this.addListener(this.searchButtonNode, 'click', () => this.handleSearchButtonClick());\r\n EventEmitter.subscribe('viewAll:click', data => this.handleTabActivate(data));\r\n EventEmitter.subscribe('search-field:get', () => this.handleReturnSearchQuery());\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n EventEmitter.emit('search-field:updated', { value: this.inputValue });\r\n\r\n const location = this.getWindowLocation();\r\n const searchQueryObj = Utils.getSearchFromLocation(location);\r\n\r\n this.handleTabActivate(searchQueryObj);\r\n }\r\n\r\n handleTabActivate(data) {\r\n const category = data.category;\r\n if (!category) {\r\n return;\r\n }\r\n this.tabButtons = [...this.el.querySelectorAll('[data-ref=\"tab-btn\"]')];\r\n const activeBtn = this.tabButtons.filter(btn => btn.getAttribute('data-category') === category)[0];\r\n if (activeBtn) {\r\n const timer = setInterval(() => {\r\n if (activeBtn.hasAttribute('data-active')) {\r\n const activeBtnTopOffset = activeBtn.getBoundingClientRect().top;\r\n activeBtn.scrollIntoView();\r\n window.scrollBy(0, -activeBtnTopOffset);\r\n activeBtn.click();\r\n clearInterval(timer);\r\n }\r\n }, 100);\r\n }\r\n }\r\n\r\n handleReturnSearchQuery() {\r\n EventEmitter.emit('search-field:set', { value: this.inputValue });\r\n }\r\n\r\n handleInputKeyUp(e) {\r\n this.inputValue = e.target.value;\r\n\r\n if (e.keyCode === 13 && this.inputValue.length >= this.minChars) {\r\n this.showPreloader();\r\n\r\n const searchQuery = {\r\n searchQuery: encodeURIComponent(this.inputValue),\r\n filter: this.requestFilter\r\n };\r\n\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n const url = `${this.endPointUrl}${queryString}`;\r\n this.getData('GET', {}, url).then((result) => {\r\n this.updateListing(result.data);\r\n this.hidePreloader();\r\n });\r\n this.setUrl(queryString);\r\n }\r\n }\r\n\r\n handleSearchButtonClick() {\r\n\r\n if (this.inputValue.length < this.minChars) return;\r\n this.showPreloader();\r\n\r\n const searchQuery = {\r\n searchQuery: encodeURIComponent(this.inputValue),\r\n filter: this.requestFilter\r\n };\r\n\r\n const queryString = Utils.convertToQuery(searchQuery);\r\n const url = `${this.endPointUrl}${queryString}`;\r\n this.getData('GET', {}, url).then((result) => {\r\n this.updateListing(result.data);\r\n this.hidePreloader();\r\n });\r\n this.setUrl(queryString);\r\n }\r\n\r\n async getData(method, data, url) {\r\n try {\r\n return await api({\r\n method,\r\n url,\r\n data\r\n });\r\n } catch (err) {\r\n this.hidePreloader();\r\n throw new Error(err);\r\n }\r\n }\r\n\r\n updateListing(data, typeOfInsertingContent) {\r\n EventEmitter.emit('content:willRemove', this.listingContainer);\r\n const dummy = document.createElement('div');\r\n dummy.innerHTML = data;\r\n\r\n const container = dummy.querySelector(`${this.selector}`);\r\n const html = container ? container.innerHTML : '';\r\n\r\n switch (typeOfInsertingContent) {\r\n case 'append':\r\n this.listingContainer.innerHTML += html;\r\n break;\r\n\r\n case 'replace':\r\n this.listingContainer.innerHTML = html;\r\n break;\r\n\r\n default:\r\n this.listingContainer.innerHTML = html;\r\n }\r\n\r\n EventEmitter.emit('content:updated', this.listingContainer);\r\n EventEmitter.emit('search-field:updated', { value: this.inputValue });\r\n this.initTabs();\r\n }\r\n\r\n initTabs() {\r\n const tabsInstances = [...this.el.querySelectorAll('[data-toggle-group]')];\r\n const DLObject = Utils.getDLObject();\r\n if (DLObject.features.ToggleGroup && tabsInstances.length > 0) {\r\n tabsInstances.map((instance) => {\r\n DLObject.features.ToggleGroup.init('[data-toggle-group]', instance);\r\n });\r\n }\r\n }\r\n\r\n setUrl(url) {\r\n if (!this.isHistoryApiEnabled) {\r\n return false;\r\n }\r\n\r\n if (url) {\r\n window.history.replaceState({}, '', url);\r\n } else {\r\n const cleanUrl =\r\n window.location.protocol + '//' + window.location.host + window.location.pathname;\r\n window.history.replaceState({}, '', cleanUrl);\r\n }\r\n return true;\r\n }\r\n\r\n getWindowLocation() {\r\n return window.location;\r\n }\r\n\r\n showPreloader() {\r\n const DLClass = Utils.getDLClass();\r\n this.preloader.classList.remove(`${DLClass}-hidden`);\r\n }\r\n\r\n hidePreloader() {\r\n const DLClass = Utils.getDLClass();\r\n this.preloader.classList.add(`${DLClass}-hidden`);\r\n }\r\n}\r\n","const callbackName = 'onRecatpchaLoad';\r\n\r\nlet _isLoaded = null;\r\nconst onloadQueue = [];\r\n\r\nwindow[callbackName] = () => {\r\n _isLoaded = true;\r\n onloadQueue.forEach(callback => callback(window.grecaptcha));\r\n};\r\n\r\nfunction insertScript(lang) {\r\n const script = document.createElement('script');\r\n script.async = true;\r\n script.defer = true;\r\n script.src = `https://www.google.com/recaptcha/api.js?onload=${callbackName}&render=explicit&hl=${lang}`;\r\n const s = document.getElementsByTagName('script')[0];\r\n s.parentNode.insertBefore(script, s);\r\n}\r\n\r\nfunction isLoaded(lang) {\r\n if (_isLoaded === null) {\r\n _isLoaded = false;\r\n insertScript(lang);\r\n }\r\n return _isLoaded;\r\n}\r\n\r\nexport default function onLoad(callback, lang) {\r\n if (isLoaded(lang)) {\r\n callback(window.grecaptcha);\r\n } else {\r\n onloadQueue.push(callback);\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport { createEvent } from '$Foundation/src/js/utils';\r\nimport onLoad from './loadRecaptcha';\r\n\r\nexport const EVENT_ON_ERROR = 'recaptcha:onError';\r\n\r\nexport default class Recaptcha extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n\r\n this.captchaId = null;\r\n\r\n this.containerElement = this.el.querySelector('[data-ref=\"container\"]');\r\n this.inputElement = this.el.querySelector('[data-ref=\"input\"]');\r\n\r\n this.sitekey = this.el.getAttribute('data-sitekey');\r\n this.lang = this.el.getAttribute('data-lang');\r\n\r\n this.onError = this.onError.bind(this);\r\n this.init = this.init.bind(this);\r\n this.successCallback = this.successCallback.bind(this);\r\n this.expiredCallback = this.expiredCallback.bind(this);\r\n\r\n onLoad(this.init, this.lang);\r\n }\r\n\r\n static get tagName() {\r\n return 'recaptcha';\r\n }\r\n\r\n init(grecaptcha) {\r\n this.grecaptcha = grecaptcha;\r\n\r\n this.captchaId = grecaptcha.render(this.containerElement, {\r\n sitekey: this.sitekey,\r\n callback: this.successCallback,\r\n 'expired-callback': this.expiredCallback\r\n });\r\n\r\n this.inputElement.addEventListener(EVENT_ON_ERROR, this.onError);\r\n }\r\n\r\n successCallback(response) {\r\n this.inputElement.value = response;\r\n this.inputElement.dispatchEvent(createEvent('input'));\r\n this.inputElement.dispatchEvent(createEvent('change'));\r\n }\r\n\r\n expiredCallback() {\r\n this.reset();\r\n }\r\n\r\n onError() {\r\n this.grecaptcha.reset(this.captchaId);\r\n this.reset();\r\n }\r\n\r\n reset() {\r\n this.inputElement.value = '';\r\n this.inputElement.dispatchEvent(createEvent('input'));\r\n this.inputElement.dispatchEvent(createEvent('change'));\r\n }\r\n}\r\n","import { camelizeString } from '$Foundation/src/js/utils';\r\n\r\nclass GTM {\r\n push(category, action, label, event = 'eventTrack', userCity, userType) {\r\n const siteId = document.body.dataset.siteId;\r\n const eventCamelized = camelizeString(event);\r\n const eventFull = siteId + eventCamelized;\r\n let user = {};\r\n let isUserDataEmpty = true;\r\n\r\n const collectuserData = (userCityValue, userTypeValue) => {\r\n if (userCityValue) {\r\n Object.assign(user, { city: userCity });\r\n isUserDataEmpty = false;\r\n }\r\n if (userTypeValue) {\r\n Object.assign(user, { type: userType });\r\n isUserDataEmpty = false;\r\n }\r\n } \r\n\r\n if (window.dataLayer) {\r\n\r\n const resultObject = {};\r\n\r\n Object.assign(resultObject,\r\n {\r\n event: eventFull\r\n },\r\n {\r\n interaction: {\r\n category,\r\n action,\r\n label,\r\n value: undefined\r\n }\r\n }\r\n );\r\n\r\n collectuserData(userCity, userType);\r\n if (!isUserDataEmpty) {\r\n Object.assign(resultObject, { user });\r\n }\r\n window.dataLayer.push(resultObject);\r\n }\r\n }\r\n}\r\n\r\nexport default new GTM();\r\n","// list of all available localizations \r\n\r\nimport './parsley-localization/i18n/al'\r\nimport './parsley-localization/i18n/al';\r\nimport './parsley-localization/i18n/ar';\r\nimport './parsley-localization/i18n/bg';\r\nimport './parsley-localization/i18n/ca';\r\nimport './parsley-localization/i18n/cs.extra';\r\nimport './parsley-localization/i18n/cs';\r\nimport './parsley-localization/i18n/da';\r\nimport './parsley-localization/i18n/de.extra';\r\nimport './parsley-localization/i18n/de';\r\nimport './parsley-localization/i18n/el.extra';\r\nimport './parsley-localization/i18n/el';\r\nimport './parsley-localization/i18n/en.extra';\r\nimport './parsley-localization/i18n/en';\r\nimport './parsley-localization/i18n/es';\r\nimport './parsley-localization/i18n/et';\r\nimport './parsley-localization/i18n/eu';\r\nimport './parsley-localization/i18n/fa';\r\nimport './parsley-localization/i18n/fi.extra';\r\nimport './parsley-localization/i18n/fi';\r\nimport './parsley-localization/i18n/fr.extra';\r\nimport './parsley-localization/i18n/fr';\r\nimport './parsley-localization/i18n/he.extra';\r\nimport './parsley-localization/i18n/he';\r\nimport './parsley-localization/i18n/hr.extra';\r\nimport './parsley-localization/i18n/hr';\r\nimport './parsley-localization/i18n/hu.extra';\r\nimport './parsley-localization/i18n/hu';\r\nimport './parsley-localization/i18n/id.extra';\r\nimport './parsley-localization/i18n/id';\r\nimport './parsley-localization/i18n/it.extra';\r\nimport './parsley-localization/i18n/it';\r\nimport './parsley-localization/i18n/ja.extra';\r\nimport './parsley-localization/i18n/ja';\r\nimport './parsley-localization/i18n/ko';\r\nimport './parsley-localization/i18n/lt.extra';\r\nimport './parsley-localization/i18n/lt';\r\nimport './parsley-localization/i18n/lv.extra';\r\nimport './parsley-localization/i18n/lv';\r\nimport './parsley-localization/i18n/ms.extra';\r\nimport './parsley-localization/i18n/ms';\r\nimport './parsley-localization/i18n/nl.extra';\r\nimport './parsley-localization/i18n/nl';\r\nimport './parsley-localization/i18n/no';\r\nimport './parsley-localization/i18n/nb';\r\nimport './parsley-localization/i18n/pl';\r\nimport './parsley-localization/i18n/pt-br';\r\nimport './parsley-localization/i18n/pt-pt';\r\nimport './parsley-localization/i18n/ro.extra';\r\nimport './parsley-localization/i18n/ro';\r\nimport './parsley-localization/i18n/ru.extra';\r\nimport './parsley-localization/i18n/ru';\r\nimport './parsley-localization/i18n/sk.extra';\r\nimport './parsley-localization/i18n/sk';\r\nimport './parsley-localization/i18n/sl.extra';\r\nimport './parsley-localization/i18n/sl';\r\nimport './parsley-localization/i18n/sq';\r\nimport './parsley-localization/i18n/sr.extra';\r\nimport './parsley-localization/i18n/sr';\r\nimport './parsley-localization/i18n/sv.extra';\r\nimport './parsley-localization/i18n/sv';\r\nimport './parsley-localization/i18n/th';\r\nimport './parsley-localization/i18n/tk';\r\nimport './parsley-localization/i18n/tr';\r\nimport './parsley-localization/i18n/ua.extra';\r\nimport './parsley-localization/i18n/ua';\r\nimport './parsley-localization/i18n/uk.extra';\r\nimport './parsley-localization/i18n/uk';\r\nimport './parsley-localization/i18n/zh_cn.extra';\r\nimport './parsley-localization/i18n/zh_cn';\r\nimport './parsley-localization/i18n/zh_tw';\r\n\r\nconst localeList = ['nl', 'ru', 'no', 'al', 'ar', 'bg', 'ca', 'cs',\r\n 'da', 'de', 'el', 'en', 'es', 'et', 'eu', 'fa', 'fi', 'fr', 'he', 'hr',\r\n 'hu', 'id', 'it', 'ja', 'ko', 'lt', 'lv', 'ms', 'nl', 'no', 'nb', 'pl', 'pt-pt',\r\n 'pt-br', 'ro', 'ru', 'sk', 'sl', 'sq', 'sr', 'sv', 'th', 'tk', 'tr', 'ua', \r\n 'uk'];\r\n \r\nexport { localeList };\r\n","import MoveTo from \"moveto\";\r\nimport api from \"$Foundation/src/js/api\";\r\nimport { EVENT_ON_ERROR } from \"../recaptcha/index\";\r\nimport Utils, { createEvent, createElement } from \"$Foundation/src/js/utils\";\r\nimport GTM from \"$Foundation/src/js/gtm/gtmContactUs\";\r\nimport BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport eventEmitter from \"$Foundation/src/js/EventEmitter\";\r\n\r\nimport { localeList } from \"./parlsey-localization\";\r\n\r\nconst ENCTYPE_URLENCODED = \"application/x-www-form-urlencoded\";\r\nconst ENCTYPE_MULTIPART = \"multipart/form-data\";\r\nconst FORM_CONTROL_ATTRIBUTE = \"data-form-control\";\r\nconst PARSLEY_SERVER_CONSTRAINT_NAME = \"server\";\r\nconst isForm = document.getElementById(\"is-form\") !== null;\r\n\r\n// removed scripts from webpack bundle and loaded them via CDN since they're used only in the Form\r\nif (isForm) {\r\n const jQueryScript = document.createElement(\"script\");\r\n jQueryScript.setAttribute(\"type\", \"text/javascript\");\r\n jQueryScript.async = false;\r\n jQueryScript.setAttribute(\r\n \"src\",\r\n \"https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js\"\r\n );\r\n document.head.appendChild(jQueryScript);\r\n\r\n const parsleyJsScript = document.createElement(\"script\");\r\n parsleyJsScript.setAttribute(\"type\", \"text/javascript\");\r\n parsleyJsScript.async = false;\r\n parsleyJsScript.setAttribute(\r\n \"src\",\r\n \"https://cdnjs.cloudflare.com/ajax/libs/parsley.js/2.9.2/parsley.min.js\"\r\n );\r\n document.head.appendChild(parsleyJsScript);\r\n\r\n const jQuerySerializeJsonScript = document.createElement(\"script\");\r\n jQuerySerializeJsonScript.setAttribute(\"type\", \"text/javascript\");\r\n jQuerySerializeJsonScript.async = false;\r\n jQuerySerializeJsonScript.setAttribute(\r\n \"src\",\r\n \"https://cdnjs.cloudflare.com/ajax/libs/jquery.serializeJSON/2.9.0/jquery.serializejson.min.js\"\r\n );\r\n document.head.appendChild(jQuerySerializeJsonScript);\r\n}\r\n\r\nexport default class FormComponent extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n // wait for all scripts to load\r\n window.addEventListener(\"load\", () => {\r\n if (isForm) {\r\n this.element = el;\r\n this.isSubmiting = false;\r\n this.isSubmitAttempted = false;\r\n this.formControlSelector = `[${FORM_CONTROL_ATTRIBUTE}]`;\r\n this.preloader = this.el.querySelector(\r\n '[data-ref=\"preloader\"]'\r\n );\r\n\r\n this.onSubmit = this.onSubmit.bind(this);\r\n this.onFieldError = this.onFieldError.bind(this);\r\n this.sendFormTracking = this.sendFormTracking.bind(this);\r\n this.onSubmitAttempt = this.onSubmitAttempt.bind(this);\r\n this.init(true);\r\n this.isInited = true;\r\n this.fieldInput = this.el.querySelector(\r\n '[data-ref=\"field-server-error-input\"'\r\n );\r\n }\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return \"form\";\r\n }\r\n\r\n init(first = false) {\r\n this._parsleyForm = null;\r\n this._trackCategory = null;\r\n this._trackAction = null;\r\n this._trackLabel = null;\r\n this._trackEvent = null;\r\n this._trackUserCity = null;\r\n this._trackUserType = null;\r\n this.isFormTrackingSended = false;\r\n\r\n this.form = this.el.querySelector(\"form\");\r\n this.$form = window.$(this.form);\r\n this.method = this.form.method || \"post\";\r\n this.action = this.form.action;\r\n this.enctype = this.form.enctype || ENCTYPE_URLENCODED;\r\n\r\n const DLOBject = Utils.getDLObject();\r\n\r\n if (this.form.nodeName !== \"FORM\") {\r\n throw new Error(\"element must be a form\");\r\n }\r\n\r\n this.submitElement = this.form.querySelector('[data-ref=\"submit\"]');\r\n\r\n this.formName = this.el.getAttribute(\"data-form-name\");\r\n\r\n if (first) {\r\n this.form.addEventListener(\"submit\", this.onSubmitAttempt);\r\n }\r\n\r\n if (this.isAsync()) {\r\n this.getParsleyForm().on(\"form:submit\", this.onSubmit);\r\n }\r\n\r\n this.getParsleyForm().on(\"field:error\", this.onFieldError);\r\n\r\n this.applyServerValidation();\r\n if (Utils.isEukanuba()) {\r\n this.hideBreederInputPlaceholder();\r\n this.handleValidationInput();\r\n }\r\n\r\n if (!first) {\r\n this.getParsleyForm().validate();\r\n }\r\n\r\n if (this.isMustBeTracked()) {\r\n this.setUpFormTracking();\r\n }\r\n\r\n if (DLOBject.features.Selects) {\r\n this.initSelects();\r\n } else {\r\n const interval = setInterval(() => {\r\n if (DLOBject.features.Selects) {\r\n this.initSelects();\r\n clearInterval(interval);\r\n }\r\n }, 500);\r\n }\r\n\r\n if (this.formName === \"Pet Expert Booking\") {\r\n const checkboxes = this.el.querySelectorAll(\".rc-input__checkbox\");\r\n\r\n for (let i = 0; i < checkboxes.length; i++) {\r\n checkboxes[i].required = true;\r\n }\r\n\r\n this.el\r\n .querySelector(\"button[type=submit]\")\r\n .addEventListener(\"click\", () => {\r\n if (!Array.from(checkboxes).every((c) => c.checked)) {\r\n document.querySelector(\r\n \".rc-form-submit-show-display-error\"\r\n ).style.display = \"flex\";\r\n }\r\n });\r\n }\r\n }\r\n\r\n hideBreederInputPlaceholder() {\r\n const container = document.getElementsByClassName(\r\n \"euka-input__control\"\r\n );\r\n container &&\r\n container.forEach((element) => {\r\n element.addEventListener(\"input\", (event) => {\r\n const placeholderElement =\r\n event.currentTarget.nextElementSibling;\r\n const lengthInput = element.value.length;\r\n if (placeholderElement) {\r\n placeholderElement.childNodes[0].style.visibility =\r\n \"hidden\";\r\n }\r\n if (lengthInput == 0) {\r\n placeholderElement.childNodes[0].style.visibility =\r\n \"visible\";\r\n }\r\n });\r\n });\r\n }\r\n\r\n handleValidationInput() {\r\n console.log(\"handle validation input\");\r\n const container = document.getElementsByClassName(\r\n \"euka-input__validation-message\"\r\n );\r\n console.log(\"container\", container);\r\n for (let i = 0; i <= container.length; i++) {\r\n console.log(container[i], \" container[i]\");\r\n container[i].classList.remove(\"filled\");\r\n }\r\n }\r\n\r\n onSubmitAttempt() {\r\n this.isSubmitAttempted = true;\r\n }\r\n\r\n initSelects() {\r\n const selectInstancesWithinContainer = [\r\n ...this.el.querySelectorAll(\"[data-js-select]\"),\r\n ];\r\n const DLObject = Utils.getDLObject();\r\n\r\n selectInstancesWithinContainer.map((instance) => {\r\n DLObject.features.Selects.init(\"[data-js-select]\", instance, null);\r\n });\r\n\r\n const customOptions = {\r\n shouldSort: false,\r\n };\r\n const customSelectInstancesWithinContainer = [\r\n ...this.el.querySelectorAll(\"[data-js-select-no-sort]\"),\r\n ];\r\n customSelectInstancesWithinContainer.map((instance) => {\r\n DLObject.features.Selects.init(\r\n \"[data-js-select-no-sort]\",\r\n instance,\r\n customOptions\r\n );\r\n });\r\n }\r\n\r\n applyServerValidation() {\r\n this.getParsleyForm().fields.forEach((field) => {\r\n const errors = this.getFieldServerErrors(field);\r\n if (errors.length > 0) {\r\n // programmatically add constraint (not public Parsley method)\r\n field.addConstraint(PARSLEY_SERVER_CONSTRAINT_NAME);\r\n\r\n // programmatically set constraint error text\r\n field.options.serverMessage = errors.join(\", \");\r\n\r\n if (!FormComponent.hasFieldValue(field)) {\r\n field.options.validateIfEmpty = true;\r\n }\r\n\r\n if (FormComponent.isCaptchaField(field)) {\r\n field.element.dispatchEvent(createEvent(EVENT_ON_ERROR));\r\n }\r\n\r\n // reset ui for apply new trigger rule\r\n field.reset();\r\n field.validate();\r\n }\r\n });\r\n }\r\n\r\n getFieldServerErrors(field) {\r\n const element = field.$element[0];\r\n const serverErrorsString = element.getAttribute(\"data-server-errors\");\r\n if (serverErrorsString) {\r\n try {\r\n return JSON.parse(serverErrorsString);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n getCurrentLanguage() {\r\n const html = document.querySelector(\"html\");\r\n const lang = html.getAttribute(\"lang\");\r\n const language = lang.includes(\"pt\")\r\n ? lang.toLowerCase()\r\n : lang.slice(0, lang.indexOf(\"-\"));\r\n\r\n return language;\r\n }\r\n\r\n isParsleyLocaleExist(locale) {\r\n return localeList.includes(locale);\r\n }\r\n\r\n setLocale() {\r\n const locale = this.getCurrentLanguage();\r\n if (this.isParsleyLocaleExist(locale)) {\r\n window.Parsley.setLocale(locale);\r\n } else {\r\n window.Parsley.setLocale(\"en\");\r\n }\r\n }\r\n\r\n getParsleyForm() {\r\n const DLClass = Utils.getDLClass();\r\n const inputValidationClass = `${DLClass}-input__validation-message`;\r\n if (this._parsleyForm === null) {\r\n this.setLocale();\r\n this._parsleyForm = new window.Parsley.Factory(this.form, {\r\n inputs: `${window.Parsley.options.inputs},[data-parsley-checkboxes-group]`,\r\n // exclude hidden, disabled but keep custom selects included\r\n excluded: (index, element) => {\r\n const $element = window.$(element);\r\n if ($element.is(\"[data-js-select]\")) {\r\n return false;\r\n }\r\n return $element.is(\r\n \"input[type=button], input[type=submit], input[type=reset], input[type=hidden], :disabled\"\r\n );\r\n },\r\n errorClass: `${DLClass}-input--error`,\r\n successClass: `${DLClass}-input--success`,\r\n classHandler: (field) =>\r\n field.$element.closest(this.formControlSelector),\r\n errorsContainer: (field) =>\r\n field.$element.closest(this.formControlSelector),\r\n errorsWrapper: ``,\r\n errorTemplate: \"\",\r\n trigger: \"input\",\r\n validationThreshold: 0,\r\n });\r\n }\r\n return this._parsleyForm;\r\n }\r\n\r\n isMustBeTracked() {\r\n const formName = this.element.getAttribute(\"data-form-name\");\r\n\r\n return (\r\n formName.includes(\"Contact Us\") && this.getTrackCategory() !== null\r\n );\r\n }\r\n\r\n getTrackCategory() {\r\n if (this._trackCategory === null) {\r\n this._trackCategory =\r\n this.element.getAttribute(\"data-track-category\") ||\r\n this.element.getAttribute(\"data-form-name\");\r\n }\r\n return this._trackCategory;\r\n }\r\n\r\n getTrackAction() {\r\n if (this._trackAction === null) {\r\n this._trackAction = this.element.getAttribute(\"data-track-action\");\r\n }\r\n return this._trackAction;\r\n }\r\n\r\n getTrackLabel() {\r\n if (this._trackLabel === null) {\r\n this._trackLabel = this.element.getAttribute(\"data-track-label\");\r\n }\r\n return this._trackLabel;\r\n }\r\n\r\n getTrackEvent() {\r\n this._trackEvent = this.getTrackCategory();\r\n return this._trackEvent;\r\n }\r\n\r\n getTrackUserCity() {\r\n this._trackUserCity = this.el.querySelector(\"[data-track-city]\");\r\n if (!this._trackUserCity) return this._trackUserCity;\r\n return this._trackUserCity.value;\r\n }\r\n\r\n getTrackUserType() {\r\n this._trackUserType = this.el.querySelector(\"[data-track-type]\");\r\n if (!this._trackUserType) return this._trackUserType;\r\n this._trackUserTypeValue =\r\n this._trackUserType.options[\r\n this._trackUserType.selectedIndex\r\n ].value;\r\n return this._trackUserTypeValue;\r\n }\r\n\r\n isAsync() {\r\n return this.form.getAttribute(\"data-ajax\") === \"true\";\r\n }\r\n\r\n onSubmit() {\r\n if (!this.isSubmiting) {\r\n this.isSubmiting = true;\r\n try {\r\n this.beforeSubmit();\r\n api({\r\n method: this.method,\r\n url: this.getUrl(),\r\n data: this.getRequestParams(),\r\n }).then(\r\n (response) => {\r\n // Shouldn't be here, dirty fix before rewrite\r\n if (this.formName === \"Pet Expert Booking\") {\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n event: \"petExpertBookingConfirmation\",\r\n });\r\n }\r\n this.afterSubmit();\r\n return this.handleSuccessSubmit(response);\r\n },\r\n (error) => {\r\n this.afterSubmit();\r\n return this.onError(error);\r\n }\r\n );\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n\r\n // prevent default form submit\r\n return false;\r\n }\r\n\r\n handleSuccessSubmit(response) {\r\n this.handleDestroy();\r\n this.element.innerHTML = \"\";\r\n this.element.insertAdjacentElement(\r\n \"beforeend\",\r\n this.getResultElementFromResponse(response)\r\n );\r\n eventEmitter.emit(\"content:updated\", this.el);\r\n this.init();\r\n this.onSuccess(response);\r\n }\r\n\r\n getResultElementFromResponse(response) {\r\n let resultElement = createElement(response.data);\r\n const form =\r\n resultElement.children[0] &&\r\n resultElement.children[0].nodeName === \"FORM\"\r\n ? resultElement.children[0]\r\n : null;\r\n if (form) {\r\n resultElement = form;\r\n }\r\n\r\n return resultElement;\r\n }\r\n\r\n getRequestParams() {\r\n let data = null;\r\n switch (this.enctype) {\r\n case ENCTYPE_URLENCODED:\r\n data = this.getUrlencodedFormData();\r\n break;\r\n case ENCTYPE_MULTIPART:\r\n data = this.getMultipartFormData();\r\n break;\r\n default:\r\n throw new Error(\"Unknown form enctype\");\r\n }\r\n\r\n return data;\r\n }\r\n\r\n getUrlencodedFormData() {\r\n const dataObject = this.$form.serializeJSON({\r\n checkboxUncheckedValue: \"false\",\r\n parseBooleans: true,\r\n useIntKeysAsArrayIndex: true,\r\n });\r\n return window.$.param(dataObject);\r\n }\r\n\r\n getMultipartFormData() {\r\n const { name } = this.submitElement;\r\n let data = name ? [{ name, value: this.submitElement.value }] : [];\r\n\r\n data = data.concat(window.$(this.form).serializeArray());\r\n\r\n data.push({ name: \"X-Requested-With\", value: \"XMLHttpRequest\" });\r\n\r\n const formData = new FormData();\r\n data.forEach((v) => {\r\n formData.append(v.name, v.value);\r\n });\r\n\r\n const emptyRadioListButtonData = this.getEmptyRadioListsData();\r\n emptyRadioListButtonData.forEach((kv) => {\r\n formData.append(kv.k, kv.v);\r\n });\r\n\r\n return formData;\r\n }\r\n\r\n getEmptyRadioListsData() {\r\n const radioInputs = [\r\n ...this.form.querySelectorAll('input[type=\"radio\"]'),\r\n ];\r\n\r\n const groupBy = (xs, keyGetter) =>\r\n xs.reduce((rv, x) => {\r\n const key = keyGetter(x);\r\n (rv[key] = rv[key] || []).push(x);\r\n return rv;\r\n }, {});\r\n\r\n const groupMap = groupBy(radioInputs, (r) => r.name);\r\n return Object.keys(groupMap)\r\n .map((name) => {\r\n const val = groupMap[name].reduce((result, rb) => {\r\n result = result || (rb.checked ? rb.value : \"\");\r\n return result;\r\n }, \"\");\r\n return { k: name, v: val };\r\n })\r\n .filter((o) => o.v.length === 0);\r\n }\r\n\r\n getUrl() {\r\n return this.action;\r\n }\r\n\r\n setUpFormTracking() {\r\n this.getParsleyForm().on(\"form:success\", this.sendFormTracking);\r\n }\r\n\r\n sendFormTracking() {\r\n if (!this.isFormTrackingSended) {\r\n this.isFormTrackingSended = true;\r\n const trackAction = \"Form submmit\";\r\n const trackLabel = \"Success\";\r\n const trackEvent = this.getTrackEvent();\r\n GTM.push(\r\n this.getTrackCategory(),\r\n trackAction,\r\n trackLabel,\r\n trackEvent,\r\n this.getTrackUserCity(),\r\n this.getTrackUserType()\r\n );\r\n }\r\n }\r\n\r\n getSubmitTrackingDetails() {}\r\n\r\n onSubmitClick() {\r\n // hook for descendants\r\n }\r\n\r\n onBeforeSubmit() {\r\n // hook for descendants\r\n // can be used for showing preloader\r\n\r\n const errorMessage = this.el.querySelector(\r\n \".rc-form-submit-show-display-error\"\r\n );\r\n\r\n if (errorMessage) {\r\n errorMessage.remove();\r\n }\r\n }\r\n\r\n // onSuccess(result) {}\r\n onSuccess() {\r\n // hook for descendants\r\n }\r\n\r\n // onError(error) {}\r\n onError(error) {\r\n // hook for descendants\r\n GTM.push(\r\n this.formName,\r\n \"submit\",\r\n `error ${error}`,\r\n `${this.formName} submit: error`\r\n );\r\n }\r\n\r\n onAfterSubmit() {\r\n // hook for descendants\r\n // can be used for hiding preloader\r\n if (this.isMustBeTracked()) {\r\n this.sendFormTracking();\r\n }\r\n this.scrollElIntoView();\r\n }\r\n\r\n onAfterReset() {\r\n // hook for descendants\r\n }\r\n\r\n afterSubmit() {\r\n this.hidePreloader();\r\n if (this.submitElement) {\r\n this.submitElement.disabled = false;\r\n }\r\n this.isSubmiting = false;\r\n this.onAfterSubmit();\r\n }\r\n\r\n beforeSubmit() {\r\n this.showPreloader();\r\n if (this.submitElement) {\r\n this.submitElement.disabled = true;\r\n }\r\n this.onBeforeSubmit();\r\n }\r\n\r\n handleDestroy() {\r\n this.getParsleyForm().destroy();\r\n eventEmitter.emit(\"content:willRemove\", this.form);\r\n }\r\n\r\n onDestroy() {\r\n this.handleDestroy();\r\n }\r\n\r\n onFieldError(event) {\r\n // a11y fix\r\n event.$element.attr(\"aria-describedby\", event._ui.errorsWrapperId);\r\n\r\n if (event.$element[0].hasAttribute(\"data-parsley-splitdate\")) {\r\n [...event.$element[0].children].forEach((childNode) => {\r\n childNode.setAttribute(\r\n \"aria-describedby\",\r\n event._ui.errorsWrapperId\r\n );\r\n });\r\n }\r\n }\r\n\r\n showPreloader() {\r\n this.preloader.classList.add(\"is-active\");\r\n }\r\n\r\n hidePreloader() {\r\n this.preloader.classList.remove(\"is-active\");\r\n }\r\n\r\n scrollElIntoView() {\r\n if (window.pageYOffset > this.el.offsetTop) {\r\n setTimeout(() => {\r\n const header = document.querySelector(\r\n \"[data-js-header-scroll]\"\r\n );\r\n const headerOffset = header.getBoundingClientRect().height;\r\n\r\n const moveTo = new MoveTo({\r\n tolerance: headerOffset,\r\n });\r\n const target = this.element;\r\n moveTo.move(target);\r\n }, 100);\r\n }\r\n }\r\n\r\n static isCaptchaField(field) {\r\n return \"recaptcha\" in field.constraintsByName;\r\n }\r\n\r\n static hasFieldValue(field) {\r\n return (\r\n (field.element.tagName === \"INPUT\" &&\r\n field.element.type !== \"file\") ||\r\n field.element.tagName === \"TEXTAREA\" ||\r\n field.element.tagName === \"SELECT\"\r\n );\r\n }\r\n}\r\n\r\n// wait for script load\r\nwindow.addEventListener(\"load\", () => {\r\n if (isForm) {\r\n window.Parsley &&\r\n window.Parsley.addValidator(\"recaptcha\", {\r\n validateString: (value) => /\\S/.test(value),\r\n priority: 512,\r\n messages: {\r\n en: \"Please confirm that you are not a robot\",\r\n },\r\n });\r\n\r\n window.Parsley &&\r\n window.Parsley.addValidator(PARSLEY_SERVER_CONSTRAINT_NAME, {\r\n validateString: (value, c, field) => {\r\n // if field cant store value we show error just once\r\n if (!FormComponent.hasFieldValue(field)) {\r\n if (field.serverErrorValue !== true) {\r\n field.serverErrorValue = true;\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // otherwise field is valid only if new value do not matches old one\r\n if (\"serverErrorValue\" in field) {\r\n return field.serverErrorValue !== field.$element.val();\r\n }\r\n\r\n field.serverErrorValue = field.$element.val();\r\n return false;\r\n },\r\n requirementType: \"string\",\r\n priority: 1024,\r\n });\r\n\r\n window.Parsley &&\r\n window.Parsley.addValidator(\"checkboxesGroup\", {\r\n validateMultiple: (values) => values.length > 0,\r\n priority: 512,\r\n });\r\n }\r\n});","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class ShowRule extends BaseComponent {\r\n /**\r\n * example config\r\n * {\r\n * elements: \"id1,id2:false,id3:concreteValue\"\r\n * condition: 'and'\r\n action: 'show' //hide, class\r\n class: 'example-class' // if action is class\r\n * }\r\n * Add to dependent field 'data-rule=\"checkbox-id\" data-component=\"show-rule\"'\r\n *
\r\n *\r\n * Add to main field data-rule-id=\"checkbox-id\"\r\n *\r\n * @param el\r\n */\r\n constructor(el) {\r\n super(el);\r\n this.idAttributeName = 'data-rule-id';\r\n this.config = {\r\n action: 'show',\r\n condition: 'and'\r\n };\r\n this.elementsValues = {};\r\n this.lastResult = undefined;\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'show-rule';\r\n }\r\n\r\n init() {\r\n const configString = this.el.getAttribute('data-rule');\r\n let config = {};\r\n try {\r\n config = JSON.parse(configString);\r\n } catch (e) {\r\n // maybe we pass single string to set elements only\r\n config = { elements: configString };\r\n }\r\n\r\n const elementsString = config.elements;\r\n if (elementsString) {\r\n const elements = [];\r\n const elementsConditions = {};\r\n config.elements.split(',').forEach((elementCondition) => {\r\n const [elementId, elementValue] = elementCondition.trim().split(':');\r\n const elementsById = document.querySelectorAll(`[${this.idAttributeName}=\"${elementId}\"]`);\r\n const elementsCount = elementsById.length;\r\n\r\n Array.prototype.forEach.call(elementsById, (element) => {\r\n if (\r\n element &&\r\n (element.tagName === 'INPUT' ||\r\n element.tagName === 'SELECT' ||\r\n element.tagName === 'TEXTAREA')\r\n ) {\r\n elements.push(element);\r\n if (\r\n elementValue === undefined ||\r\n elementValue === 'true' ||\r\n elementValue === 'false'\r\n ) { \r\n elementsConditions[elementId] = !!(\r\n elementValue === undefined || elementValue === 'true'\r\n );\r\n } else if (element.value === elementValue || elementsCount === 1) {\r\n elementsConditions[elementId] = elementValue;\r\n }\r\n }\r\n });\r\n });\r\n config.elementsConditions = elementsConditions;\r\n if (elements.length) {\r\n this.bootstrap(config, elements);\r\n }\r\n }\r\n }\r\n\r\n getElementId(element) {\r\n return element.getAttribute(this.idAttributeName);\r\n }\r\n\r\n bootstrap(configPart, elements) {\r\n Object.assign(this.config, configPart);\r\n this.elementsValues = elements.reduce((result, element) => {\r\n if (element.type === 'radio') {\r\n if (!result[this.getElementId(element)] ) { \r\n result[this.getElementId(element)] = this.getElementValue(element);\r\n }\r\n } else {\r\n result[this.getElementId(element)] = this.getElementValue(element);\r\n } \r\n return result;\r\n }, {});\r\n this.elements = elements.reduce((result, element) => {\r\n result[this.getElementId(element)] = element;\r\n return result;\r\n }, {});\r\n \r\n elements.forEach((element) => {\r\n if (this.isTextControl(element)) {\r\n element.addEventListener('input', this.onElementChange.bind(this));\r\n } else {\r\n element.addEventListener('change', this.onElementChange.bind(this));\r\n }\r\n });\r\n this.manage();\r\n }\r\n\r\n getElementValue(element) {\r\n switch (element.type) {\r\n case 'checkbox':\r\n case 'radio':\r\n return element.checked ? element.value : false;\r\n case 'select-multiple':\r\n return [...element.selectedOptions].map(x => x.value);\r\n default:\r\n return element.value;\r\n }\r\n }\r\n\r\n isTextControl(element) {\r\n return (\r\n element.tagName === 'TEXTAREA' ||\r\n (element.tagName === 'INPUT' &&\r\n (element.type === 'text' ||\r\n element.type === 'email' ||\r\n element.type === 'number' ||\r\n element.type === 'password'))\r\n );\r\n }\r\n\r\n onElementChange(e) {\r\n const element = e.target;\r\n this.elementsValues[this.getElementId(element)] = this.getElementValue(element);\r\n this.manage();\r\n }\r\n\r\n manage() {\r\n let result = false;\r\n \r\n const checkFunction = (id) => { \r\n const element = this.elements[id];\r\n if (\r\n (this.isTextControl(element) || element.tagName === 'SELECT') &&\r\n this.config.elementsConditions[id] === true\r\n ) {\r\n return this.elementsValues[id] !== '';\r\n }\r\n\r\n if (\r\n (element.type === 'checkbox' || element.type === 'radio') &&\r\n this.config.elementsConditions[id] === true\r\n ) {\r\n return this.elementsValues[id] !== false;\r\n }\r\n\r\n if (element.tagName === 'SELECT' && element.multiple) {\r\n return this.elementsValues[id].includes(this.config.elementsConditions[id]);\r\n }\r\n\r\n return this.elementsValues[id] === this.config.elementsConditions[id];\r\n }; \r\n\r\n if (this.config.condition === 'and') {\r\n result = Object.keys(this.elementsValues).every(checkFunction);\r\n } else {\r\n result = Object.keys(this.elementsValues).some(checkFunction);\r\n }\r\n if (result !== this.lastResult) {\r\n this.update(result);\r\n }\r\n }\r\n\r\n update(result) {\r\n this.lastResult = result;\r\n switch (this.config.action) {\r\n case 'show':\r\n this.updateShow(result);\r\n break;\r\n case 'hide':\r\n this.updateShow(!result);\r\n break;\r\n case 'class':\r\n this.updateClass(result);\r\n break;\r\n default:\r\n throw new Error('Unknown action');\r\n }\r\n }\r\n\r\n updateShow(result) {\r\n if (result) {\r\n this.el.style.display = 'block';\r\n } else {\r\n this.el.style.display = 'none';\r\n }\r\n }\r\n\r\n updateClass(result) {\r\n if (result) {\r\n this.el.classList.add(this.config.class);\r\n } else {\r\n this.el.classList.remove(this.config.class);\r\n }\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class TestComponent extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.smallRules = undefined;\r\n this.empty = true;\r\n this.state = null;\r\n this.ruleAttribute = 'hidden-if-rule';\r\n this.idAttribute = 'hidden-if-id';\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'hidden-if';\r\n }\r\n\r\n init() {\r\n\r\n if (this.smallRules === undefined) { \r\n this.allSmallRules = this.getAllSmallRules();\r\n }\r\n\r\n const elements = [...document.querySelectorAll(`[${this.idAttribute}]`)]; \r\n elements.forEach((element) => { \r\n this.state = this.getElementValue(element);\r\n const result = this.getResultFromSmallRules(this.allSmallRules);\r\n this.changeSelf(result);\r\n });\r\n }\r\n\r\n update(e) {\r\n if (e !== undefined) {\r\n this.state = this.getElementValue(e.target);\r\n }\r\n\r\n const result = this.getResultFromSmallRules(this.allSmallRules);\r\n this.changeSelf(result);\r\n }\r\n\r\n getResultFromSmallRules(smallRules) {\r\n let result = false;\r\n smallRules.forEach((rule) => {\r\n const [elementUniqueKey, elementValue] = rule.split(':');\r\n\r\n if (this.empty) {\r\n this.empty = false;\r\n this.setEventListeners(elementUniqueKey);\r\n }\r\n result = result || elementValue === this.state;\r\n });\r\n return result;\r\n }\r\n\r\n getAllSmallRules() {\r\n const mainRule = this.el.getAttribute(this.ruleAttribute);\r\n const orRules = this.splitRulesWithOr(mainRule);\r\n return orRules;\r\n }\r\n\r\n splitRulesWithOr(longRule) {\r\n return longRule.split('|');\r\n }\r\n\r\n setEventListeners(elementUniqueKey) {\r\n const elements = [...document.querySelectorAll(`[${this.idAttribute}=\"${elementUniqueKey}\"]`)];\r\n elements.forEach(x => x.addEventListener('change', this.update.bind(this)));\r\n }\r\n \r\n getElementValue(element) {\r\n switch (element.type) {\r\n case 'checkbox':\r\n case 'radio':\r\n return element.checked ? element.value : false;\r\n case 'select-multiple':\r\n return [...element.selectedOptions].map(x => x.value);\r\n default:\r\n return element.value;\r\n }\r\n }\r\n\r\n changeSelf(flag) {\r\n if (flag) {\r\n this.el.style.display = 'block';\r\n } else {\r\n this.el.style.display = 'none';\r\n }\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class ServerValidation extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.fieldErrorMessage = this.el.querySelector('[data-ref=\"field-server-error-message\"');\r\n this.fieldInput = this.el.querySelector('[data-ref=\"field-server-error-input\"');\r\n this.fieldWrapper = this.el.querySelector('[data-ref=\"field-server-error-input-wrapper\"');\r\n this.inputHappened = false;\r\n this.errorClassName = 'input-with-error-message';\r\n\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'field-server-error';\r\n }\r\n \r\n init() {\r\n if (!this.fieldErrorMessage || !this.fieldWrapper) return;\r\n Utils.classWatcher(this.fieldInput, 'focus-visible', () => {\r\n this.onFieldUpdate();\r\n }, null);\r\n }\r\n\r\n onFieldUpdate() {\r\n if (this.inputHappened) return;\r\n this.inputHappened = true;\r\n this.fieldWrapper.classList.remove(this.errorClassName);\r\n this.fieldErrorMessage.classList.add('rc-hidden');\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class Calendar extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.slideIndex = 1;\r\n }\r\n\r\n static get tagName() {\r\n return 'form-calendar';\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.calendarButton = this.el.querySelector('[data-ref=\"calendar-button\"]');\r\n this.previousButton = this.el.querySelector('[data-ref=\"previous-button\"]');\r\n this.nextButton = this.el.querySelector('[data-ref=\"next-button\"]');\r\n this.dayButtons = this.el.querySelectorAll('[data-ref=\"day-button\"]');\r\n this.slides = this.el.querySelectorAll('[data-calendar-slide]');\r\n this.hourSection = this.el.querySelector('[data-ref=\"hour-section\"]');\r\n this.hourButtons = this.el.querySelectorAll('[data-ref=\"hour-button\"]');\r\n this.calendarInputHidden = document.querySelector('.calendar-input-hidden');\r\n this.hourSectionList = this.el.querySelector('[data-ref=\"hour-section-ul\"]');\r\n }\r\n\r\n addListeners() {\r\n this.dayButtons.forEach((button) => {\r\n this.addListener(button, 'click', e => this.handleDay(e));\r\n });\r\n this.hourButtons.forEach((button) => {\r\n this.addListener(button, 'click', e => this.handleHour(e));\r\n });\r\n this.addListener(this.calendarButton, 'click', () => this.showSlides(1));\r\n this.addListener(this.previousButton, 'click', () => this.handleSwitch(-1));\r\n this.addListener(this.nextButton, 'click', () => this.handleSwitch(1));\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n setBookableHours(day) {\r\n const params = {\r\n method: 'GET',\r\n headers: {}\r\n };\r\n fetch(`${location.origin + '/' + location.pathname.split('/')[1]}/api/calendar/getcalendar`, params).then(response => response.json())\r\n .then((response) => {\r\n response.Months.map(x =>\r\n x.CalendarDays.map((y) => {\r\n if (y.FullName === day) {\r\n this.hourSectionList.innerHTML =\r\n `\r\n ${day}\r\n ${y.Hours.map(z => `
  • ${z.Hour}
  • `).join('')}\r\n `;\r\n }\r\n }));\r\n this.el.querySelectorAll('[data-ref=\"hour-button\"]').forEach((button) => {\r\n this.addListener(button, 'click', e => this.handleHour(e));\r\n });\r\n });\r\n }\r\n\r\n handleSwitch(n) {\r\n this.showSlides(this.slideIndex += n);\r\n this.hourSection.style.display = 'none';\r\n this.dayButtons.forEach(x => x.classList.remove('active-day'));\r\n this.calendarInputHidden.value = null;\r\n }\r\n\r\n handleDay(e) {\r\n const selectedDay = e.currentTarget.getAttribute('data-value');\r\n this.hourSection.style.display = 'flex';\r\n this.dayButtons.forEach(x => x.classList.remove('active-day'));\r\n e.currentTarget.classList.add('active-day');\r\n this.setBookableHours(selectedDay);\r\n }\r\n\r\n handleHour(e) {\r\n this.el.querySelectorAll('[data-ref=\"hour-button\"]').forEach(x => x.classList.remove('active-hour'));\r\n e.currentTarget.classList.add('active-hour');\r\n this.calendarInputHidden.value = e.currentTarget.getAttribute('data-value');\r\n }\r\n\r\n showSlides(n) {\r\n let i;\r\n if (n > this.slides.length) { this.slideIndex = 1; }\r\n if (n < 1) { this.slideIndex = this.slides.length; }\r\n for (i = 0; i < this.slides.length; i++) {\r\n this.slides[i].style.display = 'none';\r\n }\r\n this.slides[this.slideIndex - 1].style.display = 'block';\r\n this.previousButton.style.display = 'block';\r\n this.nextButton.style.display = 'block';\r\n }\r\n}\r\n","import MapGenericGoogle from '$Feature/GenericComponents/code/src/mapGeneric/implementations/mapGenericGoogle';\r\n\r\nexport default class MapGoogle extends MapGenericGoogle {\r\n initMap() {\r\n const latLng = new google.maps.LatLng(this.options.center);\r\n\r\n const gmapOptions = {\r\n center: latLng,\r\n mapTypeId: window.google.maps.MapTypeId.ROADMAP,\r\n disableDefaultUI: true,\r\n zoomControl: true,\r\n zoom: this.options.zoom,\r\n draggable: true\r\n };\r\n\r\n this.gmap = new window.google.maps.Map(this.el, gmapOptions);\r\n this.marker = new google.maps.Marker({ position: this.options.center, map: this.gmap });\r\n }\r\n}\r\n","import MapGenericBaidu from '$Feature/GenericComponents/code/src/mapGeneric/implementations/mapGenericBaidu';\r\n\r\nexport default class MapBaidu extends MapGenericBaidu {\r\n initMap() {}\r\n}\r\n","import MapGenericKakao from '$Feature/GenericComponents/code/src/mapGeneric/implementations/mapGenericKakao';\r\n\r\nexport default class MapKakao extends MapGenericKakao {\r\n initMap() {\r\n const latLng = new window.kakao.maps.LatLng(this.options.center.lat, this.options.center.lng); \r\n const gmapOptions = {\r\n center: latLng,\r\n level: this.options.zoom\r\n };\r\n this.map = new window.kakao.maps.Map(this.el, gmapOptions);\r\n\r\n const markerOptions = { // revised but icons are not custom\r\n position: new window.kakao.maps.LatLng(this.options.center.lat, this.options.center.lng),\r\n map: this.map\r\n };\r\n\r\n this.zoomControl = new window.kakao.maps.ZoomControl();\r\n this.map.addControl(this.zoomControl, window.kakao.maps.ControlPosition.RIGHT); \r\n this.marker = new window.kakao.maps.Marker(markerOptions);\r\n }\r\n}\r\n","import MapGoogle from './implementations/mapGoogle';\r\nimport MapBaidu from './implementations/mapBaidu';\r\nimport MapKakao from './implementations/mapKakao';\r\nimport GenericMapBridge from '$Feature/GenericComponents/code/src/mapGeneric/mapBridge';\r\n\r\nexport default class MapBridge extends GenericMapBridge {\r\n defineImplementations() {\r\n this.mapClasses.Google = MapGoogle;\r\n this.mapClasses.Baidu = MapBaidu;\r\n this.mapClasses.Kakao = MapKakao;\r\n }\r\n\r\n initMap() {\r\n this._implementation.initMap();\r\n }\r\n\r\n afterMapLoaded(data) {\r\n this._implementation.afterMapLoaded(data);\r\n }\r\n\r\n updateData(data, applyBounds) {\r\n this._implementation.updateData(data, applyBounds);\r\n }\r\n\r\n setMarkerActive(id) {\r\n this._implementation.setMarkerActive(id);\r\n }\r\n\r\n openInfoWindow(pin) {\r\n this._implementation.openInfoWindow(pin);\r\n }\r\n\r\n getPinById(id) {\r\n this._implementation.getPinById(id);\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport MapBridge from './mapBridge';\r\n\r\nexport default class Map extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'map';\r\n }\r\n\r\n static get constructorName() {\r\n return 'mapControl';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initMap();\r\n }\r\n\r\n setVariables() {\r\n this.isInited = true;\r\n this.mediator = null;\r\n this.mapBridge = null;\r\n this.options = {};\r\n }\r\n\r\n setMediator(mediator) {\r\n this.mediator = mediator;\r\n }\r\n\r\n addListeners() {}\r\n\r\n initMap() {\r\n const latitude = this.el.getAttribute('data-latitude');\r\n const longitude = this.el.getAttribute('data-longitude');\r\n const zoom = this.el.getAttribute('data-zoom')\r\n ? parseInt(this.el.getAttribute('data-zoom'), 10)\r\n : 10;\r\n this.options = {\r\n center: {\r\n lat: window.parseFloat(latitude),\r\n lng: window.parseFloat(longitude)\r\n },\r\n zoom\r\n };\r\n\r\n this.mapBridge = new MapBridge(this.el, this.options);\r\n\r\n this.mapBridge.initApi().then(() => {\r\n this.mapBridge.initMap();\r\n });\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport MoveTo from 'moveto';\r\n\r\nexport default class ProductRatingLink extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'product-rating-link';\r\n }\r\n\r\n setVariables() {\r\n this.target = document.querySelector('[data-review-header]');\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.el, 'click', e => this.handleClick(e));\r\n }\r\n\r\n handleClick() {\r\n if (!this.target) return;\r\n const header = document.querySelector('[data-js-header-scroll]');\r\n const headerOffset = header ? header.getBoundingClientRect().height : 0;\r\n const moveTo = new MoveTo({\r\n tolerance: headerOffset,\r\n });\r\n\r\n moveTo.move(this.target);\r\n }\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n\r\n if (this.target) {\r\n this.el.classList.add('rating--link');\r\n }\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class WriteReview extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'write-review';\r\n }\r\n\r\n setVariables() {\r\n this.scriptUrl = this.el.dataset.jsSource;\r\n this.productId = this.el.dataset.productId;\r\n this.isScriptInserted = false;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.el, 'click', e => this.handleClick(e));\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.loadScript();\r\n this.addListeners();\r\n }\r\n\r\n loadScript() {\r\n if (this.isScriptInserted === true) {\r\n return;\r\n }\r\n this.isScriptInserted = true;\r\n\r\n const codescript = document.createElement('script');\r\n codescript.type = 'text/javascript';\r\n codescript.async = true;\r\n codescript.src = this.scriptUrl;\r\n\r\n document.body.appendChild(codescript);\r\n }\r\n\r\n handleClick(e) {\r\n e.preventDefault();\r\n $BV.ui('rr', 'submit_review', { /* eslint-disable-line */\r\n productId: this.productId\r\n });\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class FiltersList extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n this.handleFiltersListOpen = this.handleFiltersListOpen.bind(this);\r\n this.handleFiltersListClose = this.handleFiltersListClose.bind(this);\r\n }\r\n\r\n static get tagName() {\r\n return 'filters-list';\r\n }\r\n\r\n handleFiltersListOpen() {\r\n const tentantPrefix = Utils.getDLClass();\r\n\r\n document.documentElement.classList.add(`${tentantPrefix}-nav-open`);\r\n }\r\n handleFiltersListClose() {\r\n const tentantPrefix = Utils.getDLClass();\r\n\r\n document.documentElement.classList.remove(`${tentantPrefix}-nav-open`);\r\n }\r\n\r\n addClassWatcher() {\r\n const tentantPrefix = Utils.getDLClass();\r\n\r\n Utils.classWatcher(\r\n this.el,\r\n `${tentantPrefix}-active`,\r\n this.handleFiltersListOpen,\r\n this.handleFiltersListClose\r\n );\r\n }\r\n\r\n init() {\r\n this.addClassWatcher();\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport api from '$Foundation/src/js/api';\r\n\r\nexport default class ReviewFeedback extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'review-feedback';\r\n }\r\n\r\n setVariables() {\r\n this.scriptUrl = this.el.dataset.jsSource;\r\n this.productId = this.el.dataset.productId;\r\n this.reviewId = this.el.dataset.reviewId;\r\n this.isScriptInserted = false;\r\n this.feedbackButtons = this.el.querySelectorAll('button.review-button');\r\n }\r\n\r\n addListeners() {\r\n this.feedbackButtons.forEach(button => {\r\n button.addEventListener('click', e => this.handleClick(\r\n e,\r\n button.dataset.feedbackType,\r\n button.dataset.feedbackVote\r\n ));\r\n });\r\n }\r\n\r\n disableButtonsForAlreadySubmittedFeedback() {\r\n this.feedbackButtons.forEach(button => {\r\n if (\r\n localStorage.getItem(\r\n `BV-review-${this.reviewId}-${button.dataset.feedbackType}`\r\n ) === 'submitted'\r\n ) {\r\n button.setAttribute('disabled', '');\r\n }\r\n });\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.loadScript();\r\n this.addListeners();\r\n this.disableButtonsForAlreadySubmittedFeedback();\r\n }\r\n\r\n loadScript() {\r\n if (this.isScriptInserted === true) {\r\n return;\r\n }\r\n this.isScriptInserted = true;\r\n\r\n const codescript = document.createElement('script');\r\n codescript.type = 'text/javascript';\r\n codescript.async = true;\r\n codescript.src = this.scriptUrl;\r\n document.body.appendChild(codescript);\r\n }\r\n\r\n handleFeedbackSubmitSuccess(feedbackType, reviewId) {\r\n this.feedbackButtons.forEach(button => {\r\n if (button.dataset.feedbackType === feedbackType) {\r\n button.setAttribute('disabled', '');\r\n }\r\n });\r\n\r\n localStorage.setItem(`BV-review-${reviewId}-${feedbackType}`, 'submitted');\r\n }\r\n\r\n isOnStaging() {\r\n return ['deletedev', 'deletestaging'].includes(\r\n window.location.host.split('.')[1]\r\n );\r\n }\r\n\r\n handleClick(e, feedbackType, feedbackVote) {\r\n const { reviewId } = this;\r\n\r\n let params = {\r\n feedbackType: feedbackType,\r\n contentType: 'review',\r\n contentId: reviewId,\r\n apiVersion: '5.4',\r\n passkey: this.isOnStaging() ?\r\n '7gbjo0u78s64lbnituf33sh2k' :\r\n '3dycvni8fq2cozoxjs42dxdbb',\r\n };\r\n\r\n if (feedbackType === 'helpfulness') {\r\n params.vote = feedbackVote;\r\n }\r\n\r\n api.post(\r\n `https://${this.isOnStaging() ? 'stg.' : ''}api.bazaarvoice.com/data/submitfeedback.json`,\r\n null,\r\n {\r\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\r\n params,\r\n }\r\n ).then(res => {\r\n if (!res.data.HasErrors) {\r\n this.handleFeedbackSubmitSuccess(feedbackType, reviewId);\r\n }\r\n });\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class PSTracking extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n this.addBuyButtonsClickListeners = this.addBuyButtonsClickListeners\r\n .bind(this);\r\n }\r\n\r\n static get tagName() {\r\n return 'ps-tracking';\r\n }\r\n\r\n getBuyButtons() {\r\n return [\r\n ...document.querySelectorAll('.ps-online-buy-cell'),\r\n ...document.querySelectorAll('.ps-online-buy-button-mobile'),\r\n ...document.querySelectorAll('.ps-online-seller-cell'),\r\n ];\r\n }\r\n\r\n setVariables() {\r\n this.shopNowButtons = this.el.querySelectorAll('.ps-widget');\r\n }\r\n\r\n addListeners() {\r\n this.shopNowButtons.forEach(button => {\r\n button.addEventListener('click', () => setTimeout(\r\n this.addBuyButtonsClickListeners,\r\n 1000\r\n ));\r\n });\r\n }\r\n\r\n addBuyButtonsClickListeners() {\r\n const buyButtons = this.getBuyButtons();\r\n\r\n buyButtons.forEach(button => {\r\n button.addEventListener('click', () => {\r\n const siteId = document.body.getAttribute('data-site-id');\r\n const productId = document.querySelector('h1').getAttribute('data-product-id');\r\n const productSize = document.querySelector('h1').getAttribute('data-checked-size');\r\n const shopName = button.parentNode.querySelector('.ps-online-seller-cell > img') &&\r\n button.parentNode.querySelector('.ps-online-seller-cell > img').title;\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n\r\n if (Utils.isEukanuba()) {\r\n dataLayer.push({\r\n 'event': siteId + 'dealerFinderEretailerClick',\r\n product: {\r\n 'id': productId,\r\n 'variant': productSize,\r\n },\r\n interaction: {\r\n 'category': undefined,\r\n 'action': undefined,\r\n 'label': shopName,\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n}\r\n","import './styles.scss';\r\n\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\n\r\nexport default class ArticleTabbedNavigation extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.isInited = true;\r\n dLScriptsObserver.onLoad(() => {\r\n // make sure header is inited\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'article-tabbed-nav';\r\n }\r\n\r\n setVariables() {\r\n this.list = this.el.querySelector('[data-ref=\"list\"]');\r\n this.listWrapper = this.el.querySelector('[data-ref=\"list-wrapper\"]');\r\n this.elHeight = 0;\r\n this.listHeight = 0;\r\n this.header = document.querySelector('header[data-js-header-scroll]');\r\n this.headerHeight = 0;\r\n this.main = document.querySelector('main');\r\n this.isDirectionDown = false;\r\n this.heightDifference = 0;\r\n this.lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n this.listLink = this.list.querySelector('a.rc-tab');\r\n this.listFigure = this.list.querySelector('figure');\r\n this.isScrolling = 0;\r\n }\r\n\r\n addListeners() {}\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initNav();\r\n }\r\n\r\n initNav() {\r\n this.el.style.top = this.header.offsetHeight + 'px'; // set offset from top so tabbed nav below main nav\r\n setTimeout(() => {\r\n this.elHeight = this.listWrapper.offsetHeight;\r\n\r\n this.heightDifference =\r\n parseInt(this.listFigure.offsetHeight + this.listFigure.style.marginBottom, 0) + 10;\r\n\r\n this.changeNavHeight(true);\r\n window.addEventListener(\r\n 'scroll',\r\n () => {\r\n // fix for iPhone\r\n if (this.isBottom()) {\r\n return;\r\n }\r\n this.updateNav();\r\n // Clear our timeout throughout the scroll\r\n window.clearTimeout(this.isScrolling);\r\n // Set a timeout to run after scrolling ends\r\n this.isScrolling = setTimeout(() => {\r\n this.updateNavAfterScroll();\r\n }, 200);\r\n },\r\n false\r\n );\r\n\r\n }, 500); \r\n }\r\n\r\n isBottom() {\r\n return ((window.innerHeight + window.scrollY + 1) >= document.body.offsetHeight);\r\n }\r\n updateNav() {\r\n const currentScroll = window.pageYOffset || document.documentElement.scrollTop;\r\n if (currentScroll > this.lastScrollTop) {\r\n if (!this.isDirectionDown) {\r\n this.isDirectionDown = true; \r\n }\r\n } else if (this.isDirectionDown) {\r\n this.isDirectionDown = false;\r\n }\r\n \r\n this.changeNavHeight(this.isDirectionDown);\r\n this.lastScrollTop = currentScroll <= 0 ? 0 : currentScroll;\r\n }\r\n\r\n setNavTop() {\r\n // get translate value of second part of nav in header\r\n const headerNavSec = this.header.querySelector('.rc-header__nav--secondary');\r\n const headerNavSecHeight = headerNavSec.clientHeight;\r\n const headerNavSecStyles = window.getComputedStyle(headerNavSec);\r\n const headerNavSecTransform = headerNavSecStyles.getPropertyValue('transform');\r\n let headerNavSecTranslateY = 0;\r\n\r\n if (headerNavSecTransform !== 'none') {\r\n let headerNavSecTransformValues = headerNavSecTransform.split('(')[1];\r\n headerNavSecTransformValues = headerNavSecTransformValues.split(')')[0];\r\n headerNavSecTransformValues = headerNavSecTransformValues.split(',');\r\n headerNavSecTranslateY = parseInt(headerNavSecTransformValues[5], 0);\r\n }\r\n\r\n // get height of header\r\n const headerNavPrimary = this.header.querySelector('.rc-header__nav--primary');\r\n const headerNavPrimaryNew = this.header.querySelector('.rc-header__nav--primary--new');\r\n\r\n let headerHeight = '';\r\n\r\n if (headerNavPrimaryNew) {\r\n headerHeight = Math.floor(this.header.clientHeight) + 'px';\r\n } else {\r\n headerHeight = Math.floor(headerNavPrimary.clientHeight + headerNavSecHeight + headerNavSecTranslateY) + 'px';\r\n }\r\n\r\n \r\n this.el.style.top = headerHeight; // set offset from top to be below main nav \r\n }\r\n\r\n updateNavAfterScroll() {\r\n this.setNavTop();\r\n }\r\n\r\n changeNavHeight(isDecreasing) {\r\n this.setNavTop(); \r\n if (isDecreasing) {\r\n this.listHeight = this.elHeight - this.heightDifference;\r\n this.list.style.marginTop = '-' + this.heightDifference + 'px'; \r\n } else {\r\n this.listHeight = this.elHeight;\r\n this.list.style.marginTop = '0'; \r\n } \r\n this.main.style.marginTop = this.listHeight + 10 + 'px';\r\n }\r\n}\r\n","import './styles.scss';\r\n\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\n\r\nexport default class ArticleTags extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'article-tags';\r\n }\r\n\r\n setVariables() {\r\n this.viewAllTagsLink = this.el.querySelector('.view-all-tags-link');\r\n this.tagLinks = this.el.querySelectorAll('.tag-link');\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.viewAllTagsLink, 'click', e => this.onViewAllTagsLinkClick(e));\r\n this.tagLinks.forEach(tagLink => {\r\n this.addListener(tagLink, 'click', e => this.onTagLinkClick(e, tagLink));\r\n });\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n onViewAllTagsLinkClick(e) {\r\n e.preventDefault();\r\n this.el.classList.add('show-all-tags');\r\n }\r\n\r\n onTagLinkClick(e, tagLink) {\r\n e.preventDefault();\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n 'event' : 'articleTagsClick',\r\n 'articleTagsClick' : {\r\n 'name' : tagLink.getAttribute('aria-label'),\r\n 'position' : tagLink.dataset.position\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","import './styles.scss';\r\n\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\nimport spriteRed from \"../../../../../../front/assets/royal-canin.sprite-brand1-xs.svg\";\r\n\r\nexport default class ArticleReadingTime extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'reading-time';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addIcon();\r\n }\r\n\r\n setVariables() {\r\n this.readingTimeIcon = this.el.querySelector('.reading-time-icon');\r\n }\r\n\r\n addIcon() {\r\n this.readingTimeIcon.style.backgroundImage = `url('${spriteRed}')`;\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class VideoPanel extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'video-panel';\r\n }\r\n\r\n setVariables() {\r\n this.video = this.el.querySelector('[data-ref=\"video\"]');\r\n this.playButton = this.el.querySelector('[data-ref=\"video-play-button\"]');\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.playButton, 'click', () => this.handleVideoPlay());\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.togglePlayButtonVisibility();\r\n }\r\n\r\n handleVideoPlay() {\r\n if (this.video.paused === true) {\r\n this.video.play();\r\n this.playButton.classList.remove('is-visible');\r\n } else {\r\n this.video.pause();\r\n }\r\n }\r\n\r\n isVideoControlsEnabled() {\r\n return this.video.hasAttribute('controls');\r\n }\r\n\r\n togglePlayButtonVisibility() {\r\n const videoControlsEnabled = this.isVideoControlsEnabled();\r\n if (videoControlsEnabled) {\r\n this.playButton.classList.remove('is-visible');\r\n } else {\r\n this.playButton.classList.add('is-visible');\r\n }\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport dLScriptsObserver from '$Foundation/src/js/dLScriptsObserver';\r\nimport GTM from '$Foundation/src/js/gtm/gtm';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class CarouselEventTracker extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.trackCategory = null;\r\n this.carouselInstance = null;\r\n this.onIndexChanged = this.onIndexChanged.bind(this);\r\n dLScriptsObserver.onLoad(() => {\r\n this.init();\r\n });\r\n }\r\n\r\n static get tagName() {\r\n return 'carousel-event-tracker';\r\n }\r\n\r\n init() {\r\n const DLObject = Utils.getDLObject();\r\n\r\n Object.keys(DLObject.features.Carousel.instance).forEach((i) => {\r\n const instance = DLObject.features.Carousel.instance[i];\r\n if (instance!=null && instance.isOn) {\r\n const container = instance.getInfo().container;\r\n if (\r\n this.carouselInstance === null &&\r\n (container === this.el || this.el.contains(container))\r\n ) {\r\n this.carouselInstance = instance;\r\n }\r\n }\r\n });\r\n\r\n if (this.carouselInstance) {\r\n this.trackCategory = this.el.getAttribute('data-track-category');\r\n if (this.trackCategory && this.getPagesCount(this.carouselInstance.getInfo()) > 1) {\r\n this.carouselInstance.events.on('indexChanged', this.onIndexChanged);\r\n }\r\n }\r\n }\r\n\r\n getPagesCount(info) {\r\n return info.pages;\r\n }\r\n\r\n onIndexChanged(info) {\r\n const trackEvent = this.trackCategory + ' ' + this.getTrackLabel(info);\r\n GTM.push(this.trackCategory, 'Scroll', this.getTrackLabel(info), trackEvent);\r\n }\r\n\r\n getTrackLabel(info) {\r\n return `${this.getCurrentPage(info)} of ${this.getPagesCount(info)}`;\r\n }\r\n\r\n getCurrentPage(info) {\r\n if (info.index === 0) {\r\n return 1;\r\n }\r\n return Math.ceil((info.index / info.items)) + 1;\r\n }\r\n\r\n onDestroy() {\r\n this.trackCategory = null;\r\n this.carouselInstance = null;\r\n this.onIndexChanged = null;\r\n this.el = null;\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport GTM from '$Foundation/src/js/gtm/gtm';\r\n\r\nexport default class CtaEventTracker extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.trackCategory = null;\r\n this.trackLabel = null;\r\n this.trackEvent = null;\r\n this.trackCustom = null;\r\n this.trackAction = null;\r\n this.elText = null;\r\n this.pageName = document.title;\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'cta-event-tracker';\r\n }\r\n\r\n init() {\r\n this.el.addEventListener('click', this.onClick.bind(this));\r\n }\r\n\r\n onClick() {\r\n const url = location.pathname || \"\";\r\n \r\n this.standardTracking();\r\n this.customTracking();\r\n this.definedCustomTracking();\r\n //Check for virtual-campus-tour page to enable campus tour specific analytics\r\n if (url.includes('virtual-campus-tour')) {\r\n this.campusTourTracking();\r\n }\r\n }\r\n\r\n campusTourTracking() {\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n 'event' : 'campusTourLoginButtonClick',\r\n 'campusTourLoginButtonClickType' : this.elText\r\n });\r\n }\r\n\r\n definedCustomTracking() {\r\n const lang = location.pathname.split('/').length >= 2 ? location.pathname.split('/')[1] : \"\";\r\n let bannerTitle = this.el.getAttribute('data-track-banner-title') || \"\"; \r\n \r\n if (lang === 'fr') {\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n\r\n dataLayer.push({\r\n 'event': 'bannerClick',\r\n component:{\r\n 'title': bannerTitle\r\n }\r\n });\r\n };\r\n }\r\n\r\n standardTracking() {\r\n this.elText = this.el.innerText || this.el.textContent;\r\n\r\n this.trackCategory = this.el.getAttribute('data-track-category')\r\n ? this.el.getAttribute('data-track-category')\r\n : this.pageName;\r\n\r\n this.trackLabel = this.el.getAttribute('data-track-label')\r\n ? this.el.getAttribute('data-track-label')\r\n : this.elText;\r\n\r\n this.trackEvent = this.trackCategory + ' ' + this.trackLabel;\r\n\r\n GTM.push(this.trackCategory, 'Click', this.trackLabel, this.trackEvent);\r\n \r\n }\r\n\r\n customTracking() {\r\n \r\n this.trackCustom = this.el.getAttribute('data-track-custom');\r\n \r\n if (!this.trackCustom) return;\r\n \r\n this.trackCategory = this.el.getAttribute('data-track-custom-category');\r\n this.trackAction = this.el.getAttribute('data-track-custom-action');\r\n this.trackLabel = this.el.getAttribute('data-track-custom-label').replace(/(^\\w+:|^)\\/\\//, '');\r\n this.trackEvent = this.el.getAttribute('data-track-custom-event');\r\n\r\n GTM.push(this.trackCategory, this.trackAction, this.trackLabel, this.trackEvent);\r\n \r\n }\r\n\r\n onDestroy() {\r\n this.el = null;\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport GTM from '$Foundation/src/js/gtm/gtm';\r\n\r\nexport default class SearchEventTracker extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.trackCategory = null;\r\n this.trackLabel = null;\r\n this.form = this.el.querySelector('form');\r\n this.searchInput = this.form.querySelector('[data-ref=\"input\"]');\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'search-track';\r\n }\r\n\r\n init() {\r\n this.form.addEventListener('submit', this.onSubmit.bind(this));\r\n }\r\n\r\n onSubmit() {\r\n this.trackCategory = this.el.getAttribute('data-track-category');\r\n this.trackLabel = this.searchInput.value;\r\n const trackEvent = this.trackCategory + ' ' + this.trackLabel;\r\n GTM.push(this.trackCategory, 'Submit', this.trackLabel, trackEvent);\r\n }\r\n}\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport \"./styles.scss\";\r\n\r\nexport default class NavigationEventTracker extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.items = [...this.el.querySelectorAll('[data-ref=\"nav-link\"]')];\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return \"nav-track\";\r\n }\r\n\r\n // We have to set data-ref=\"nav-link\" to all top navigation clickable elements\r\n\r\n init() {\r\n if (\r\n this.el.classList.contains(\"rc-header__nav--new\") &&\r\n this.el.classList.contains(\"rc-header__nav--secondary\")\r\n ) {\r\n // 371981 - Implement new tagging\r\n this.items.forEach((link) => {\r\n link.addEventListener(\"click\", this.onClick.bind(this));\r\n });\r\n\r\n // 371894 - Update aria-expanded attribute when the according menu item dropdown is open or not\r\n const headerItems = this.el.querySelectorAll(\r\n \".rc-header__nav--secondary__list > .rc-list__item\"\r\n );\r\n if (headerItems) {\r\n headerItems.forEach((headerItem) => {\r\n headerItem.addEventListener(\"mouseover\", () => {\r\n headerItem.firstElementChild.setAttribute(\"aria-expanded\", \"true\");\r\n });\r\n\r\n headerItem.addEventListener(\"mouseout\", () => {\r\n headerItem.firstElementChild.setAttribute(\"aria-expanded\", \"false\");\r\n });\r\n });\r\n }\r\n\r\n // 372877 - Update in real-time the nav-menu top position\r\n const topNavSearchBar = document.querySelector(\".rc-search_top_menu\");\r\n if (topNavSearchBar) {\r\n const observer = new MutationObserver((mutationList) => {\r\n mutationList.forEach((mutation) => {\r\n if (\r\n mutation.type === \"attributes\" &&\r\n mutation.attributeName === \"style\"\r\n ) {\r\n if (mutation.target.style.display === \"block\") {\r\n this.el.classList.add(\"top-navigation-search-bar-visible\");\r\n } else {\r\n this.el.classList.remove(\"top-navigation-search-bar-visible\");\r\n }\r\n }\r\n });\r\n });\r\n observer.observe(topNavSearchBar, { attributes: true });\r\n }\r\n }\r\n }\r\n\r\n onClick(e) {\r\n const dataLayer = (window.dataLayer = window.dataLayer || []);\r\n dataLayer.push({\r\n event: \"topNavClick\",\r\n topNavClick: {\r\n name: e.target.textContent.trim(),\r\n },\r\n });\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class ContentTracker extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.elementText = null;\r\n this.wordCount = null;\r\n this.wordCountRounded = null;\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'content-tracker';\r\n }\r\n\r\n init() {\r\n this.elementText = this.el.innerText;\r\n this.wordCount = this.elementText.trim().split(/[\\s.,;]+/).length;\r\n // round words length\r\n if (this.wordCount <= 100) {\r\n this.wordCountRounded = this.wordCount;\r\n } else {\r\n this.wordCountRounded = Math.round(this.wordCount / 100) * 100;\r\n }\r\n if (window.dataLayer) {\r\n\t\tconst isVetFocus = Utils.isVetFocus();\r\n\t\tif (isVetFocus) {\r\n\t\t\tconst dataLayerLoadedEvent = dataLayer.find(o => o.event === 'datalayerLoaded');\r\n\t\t\tdataLayerLoadedEvent.page && Object.assign(dataLayerLoadedEvent.page, { wordCount: this.wordCountRounded });\r\n\t\t} else {\r\n\t\t\twindow.dataLayer.push({ page: { articleLength: this.wordCountRounded } });\r\n\t\t}\r\n\t}\r\n }\r\n}\r\n","class IntersectionObserverHelper {\r\n constructor() {\r\n // take a fixed header into account\r\n this.defaultOptions = {\r\n rootMargin: '-80px 0px 0px 0px'\r\n };\r\n }\r\n\r\n enterViewportOnce(element, callback, options = {}) {\r\n options = { ...this.defaultOptions, ...options };\r\n const observerInstance = new IntersectionObserver((changes, observer) => {\r\n const change = changes[0];\r\n if (change.isIntersecting) {\r\n observer.disconnect();\r\n callback(change);\r\n }\r\n }, options);\r\n observerInstance.observe(element);\r\n return observerInstance;\r\n }\r\n\r\n enterViewport(element, callback, options = {}) {\r\n options = { ...this.defaultOptions, ...options };\r\n const observerInstance = new IntersectionObserver((changes) => {\r\n const change = changes[0];\r\n if (change.isIntersecting) {\r\n callback(change);\r\n }\r\n }, options);\r\n observerInstance.observe(element);\r\n return observerInstance;\r\n }\r\n}\r\n\r\nconst instance = new IntersectionObserverHelper();\r\n\r\nexport default instance;\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Utils from '$Foundation/src/js/utils';\r\nimport './styles.scss';\r\nimport intersectionHelper from '$Foundation/src/js/intersection-helper';\r\n\r\nexport default class ContentAnimation extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'content-animation';\r\n }\r\n\r\n setVariables() {\r\n const DLClass = Utils.getDLClass();\r\n\r\n this.defaultOptions = {\r\n baseAnimationCSSClass: `${DLClass}-animation-001--base`,\r\n activateAnimationCSSClass: `${DLClass}-animation-001--active`,\r\n mobile: true,\r\n animationDisabled: false\r\n };\r\n\r\n this.settings = {\r\n ...this.defaultOptions,\r\n ...this.el.dataset\r\n };\r\n\r\n this.animate = this.animate.bind(this);\r\n this.readMoreButton = this.el.getElementsByClassName('read-more-btn')[0]\r\n\r\n }\r\n\r\n addListeners() {\r\n if (this.readMoreButton != undefined) {\r\n this.addListener(this.readMoreButton, 'click', e => {\r\n this.readMore(e)\r\n });\r\n }\r\n }\r\n\r\n init() {\r\n\r\n this.isInited = true;\r\n this.setVariables();\r\n if (this.readMoreButton != undefined) {\r\n this.initialReadMore();\r\n }\r\n this.addListeners();\r\n\r\n if (this.settings.animationDisabled) return;\r\n\r\n setTimeout(() => {\r\n const isElementIntoView = this.isElementIntoView();\r\n if (!isElementIntoView) {\r\n this.applyBaseAnimationStyles();\r\n intersectionHelper.enterViewportOnce(this.el, this.animate.bind(this), {\r\n threshold: 0\r\n });\r\n }\r\n }, 300);\r\n }\r\n\r\n \r\n\r\n readMore() {\r\n this.textContainer = this.el.getElementsByClassName('rc-container-text')[0]\r\n this.paragraph = [...this.textContainer.getElementsByTagName(\"p\")];\r\n this.div = [...this.textContainer.getElementsByTagName(\"div\")];\r\n\r\n if (this.paragraph.length > 2) {\r\n if (this.readMoreButton.classList.contains('rc-more')) {\r\n this.paragraph[0].classList.add('ellipsis');\r\n }\r\n else{\r\n this.paragraph[0].classList.remove('ellipsis');\r\n }\r\n this.paragraph.slice(1).forEach(element => {\r\n if (this.readMoreButton.classList.contains('rc-more')) {\r\n element.classList.add('delete')\r\n }\r\n else {\r\n element.classList.remove('delete')\r\n }\r\n })\r\n }\r\n else {\r\n if (this.readMoreButton.classList.contains('rc-more')) {\r\n this.paragraph[0].classList.add(\"ellipsis\")\r\n this.paragraph[1].classList.add(\"single-paragraph\")\r\n }\r\n else {\r\n this.paragraph[0].classList.remove(\"ellipsis\")\r\n this.paragraph[1].classList.remove(\"single-paragraph\")\r\n }\r\n }\r\n\r\n // Tagging(Analytics)\r\n let analyticsInteraction = \"Read more\";\r\n if (this.readMoreButton.classList.contains('rc-more')) {\r\n analyticsInteraction = \"Read less\";\r\n }\r\n\r\n const titleElement = this.textContainer && this.textContainer.querySelector(\"h2\");\r\n if(titleElement && titleElement.dataset.enTitle){\r\n let analyticsTitle = titleElement.dataset.enTitle;\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event' : 'ReadMoreOrLessButton',\r\n 'component' : {\r\n 'title' : analyticsTitle,\r\n 'interaction' : analyticsInteraction\r\n }\r\n })\r\n }\r\n }\r\n\r\n initialReadMore() {\r\n this.textContainer = this.el.getElementsByClassName('rc-container-text')[0]\r\n this.paragraph = [...this.textContainer.getElementsByTagName(\"p\")];\r\n if (this.paragraph.length === 0) {\r\n this.readMoreButton.style.display = 'none';\r\n }\r\n if (this.paragraph.length > 2) {\r\n this.paragraph[0].classList.add('ellipsis');\r\n this.paragraph.slice(1).forEach(element => {\r\n element.classList.add('delete');\r\n });\r\n }\r\n else {\r\n if (this.paragraph.length !== 0) {\r\n this.paragraph[0].classList.add('ellipsis');\r\n this.paragraph[1].classList.add('single-paragraph');\r\n }\r\n }\r\n }\r\n\r\n isElementIntoView() {\r\n const windowBottomEdge = window.scrollY + window.innerHeight;\r\n const elementTopEdge = this.el.offsetTop;\r\n return elementTopEdge <= windowBottomEdge;\r\n }\r\n\r\n applyBaseAnimationStyles() {\r\n this.el.classList.add(this.settings.baseAnimationCSSClass);\r\n }\r\n\r\n animate() {\r\n this.el.classList.add(this.settings.activateAnimationCSSClass);\r\n }\r\n}\r\n","import { camelizeString } from '$Foundation/src/js/utils';\r\n\r\nclass GTM {\r\n push(trackDetails, event = 'eventTrack', trackType) {\r\n\r\n const siteId = document.body.dataset.siteId;\r\n const eventCamelized = camelizeString(event);\r\n const eventFull = siteId + eventCamelized;\r\n \r\n if (window.dataLayer) {\r\n\r\n const resultObject = {};\r\n\r\n switch(trackType) {\r\n case 'click': \r\n Object.assign(resultObject,\r\n {\r\n event: eventFull\r\n },\r\n {\r\n ecommerce: {\r\n click: {\r\n actionField: { list: trackDetails.list },\r\n products: [{ // can only contain one product\r\n name: trackDetails.name,\r\n id: trackDetails.id,\r\n price: undefined,\r\n brand: trackDetails.brand,\r\n category: trackDetails.category,\r\n variant: undefined,\r\n position: trackDetails.position\r\n }]\r\n }\r\n }\r\n });\r\n break;\r\n\r\n case 'impression': \r\n Object.assign(resultObject,\r\n {\r\n event: eventFull\r\n },\r\n {\r\n ecommerce: {\r\n impressions: [\r\n { // can only contain one product\r\n name: trackDetails.name,\r\n id: trackDetails.id,\r\n price: undefined,\r\n brand: trackDetails.brand,\r\n category: trackDetails.category,\r\n list: trackDetails.list,\r\n variant: undefined,\r\n position: trackDetails.position\r\n } \r\n ] \r\n }\r\n });\r\n break;\r\n case 'impressionList':\r\n const productList = [...trackDetails]; \r\n let products = [];\r\n productList.forEach((item) => {\r\n let product = {\r\n name: item.name,\r\n id: item.id,\r\n price: undefined,\r\n brand: item.brand,\r\n category: item.category,\r\n list: item.list,\r\n variant: undefined,\r\n position: item.position\r\n }\r\n products = [...products, product];\r\n }); \r\n\r\n Object.assign(resultObject,\r\n {\r\n event: eventFull\r\n },\r\n {\r\n ecommerce: {\r\n impressions: products\r\n }\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n \r\n window.dataLayer.push(resultObject);\r\n }\r\n }\r\n}\r\n\r\nexport default new GTM();\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport GTM from '$Foundation/src/js/gtm/gtmProductDetails';\r\nimport intersectionHelper from '$Foundation/src/js/intersection-helper';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\n\r\nexport default class ProductTrack extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'product-track';\r\n }\r\n\r\n setVariables() {\r\n this.trackDetails = this.el.getAttribute('data-product-details');\r\n this.trackDetailsParsed = JSON.parse(this.trackDetails);\r\n this.trackEventClick = 'eComProductClick';\r\n this.trackEventImpression = 'eComProductImpression';\r\n this.handleGettingInViewport = this.handleGettingInViewport.bind(this);\r\n this.isImpressionTracked = false;\r\n this.impressionTrackingDelay = 1000;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.el, 'click', e => this.handleClick(e));\r\n EventEmitter.subscribe('productListTracked:started', () => {\r\n this.impressionTrackingDelay = 3000;\r\n });\r\n EventEmitter.subscribe('productListTracked:stopped', () => {\r\n this.impressionTrackingDelay = 0;\r\n });\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n // impression track - track when element is in viewport\r\n setTimeout(() => {\r\n this.isImpressionTracked = this.el.classList.contains('is-impression-tracked');\r\n if (!this.isImpressionTracked) {\r\n intersectionHelper.enterViewportOnce(\r\n this.el,\r\n this.handleGettingInViewport.bind(this),\r\n {\r\n threshold: 1\r\n }\r\n );\r\n }\r\n }, this.impressionTrackingDelay);\r\n }\r\n\r\n handleClick() {\r\n // e.preventDefault(); // temp for testing (to avoid jumping to another page)\r\n GTM.push(this.trackDetailsParsed, this.trackEventClick, 'click');\r\n }\r\n\r\n handleGettingInViewport() {\r\n GTM.push(this.trackDetailsParsed, this.trackEventImpression, 'impression');\r\n }\r\n}\r\n","import { setTimeout } from \"core-js\";\r\nimport BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\n\r\nexport default class ArticleHeroPanel extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return \"article-hero-panel\";\r\n }\r\n\r\n init() {\r\n setTimeout(() => {\r\n const column1 = this.el.querySelector(\".column-1\");\r\n const column2Title = this.el.querySelector(\r\n \".column-2 .hero-panel_article-title\"\r\n );\r\n\r\n if (column2Title.offsetHeight > 130) {\r\n column1.style.top = \"200px\";\r\n this.el.style.paddingBottom = \"80px\";\r\n } else {\r\n column1.style.top = \"120px\";\r\n }\r\n }, 1000);\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport GTM from '$Foundation/src/js/gtm/gtmProductDetails';\r\nimport intersectionHelper from '$Foundation/src/js/intersection-helper';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\nimport PFUtils from '../../../../ProductFinder/code/src/product-finder/js/utils';\r\nexport default class ProductListTrack extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'product-list-track';\r\n }\r\n\r\n setVariables() {\r\n this.productItems = [...this.el.querySelectorAll('[data-component=\"product-track\"]')];\r\n this.trackEventImpression = 'eComProductImpression';\r\n this.trackDetailsArray = [];\r\n }\r\n\r\n addListeners() {\r\n if (window.location.href.indexOf(\"products\") != -1) {\r\n this.addListener(window, 'beforeunload', () => {\r\n PFUtils.removeLocalStorage();\r\n });\r\n }\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n\r\n EventEmitter.emit('productListTracked:started');\r\n\r\n this.productItems.forEach((item) => {\r\n setTimeout(() => {\r\n intersectionHelper.enterViewportOnce(\r\n item,\r\n this.handleGettingInViewport.bind(this, item),\r\n {\r\n threshold: 1\r\n }\r\n );\r\n }, 300);\r\n });\r\n\r\n setTimeout(() => {\r\n this.pushGTM();\r\n }, 1000);\r\n }\r\n\r\n handleGettingInViewport(item) {\r\n const trackDetails = item.getAttribute('data-product-details');\r\n const trackDetailsParsed = JSON.parse(trackDetails);\r\n this.trackDetailsArray.push(trackDetailsParsed);\r\n item.classList.add('is-impression-tracked');\r\n }\r\n\r\n pushGTM() {\r\n if (!this.trackDetailsArray.length) {\r\n return;\r\n }\r\n GTM.push(this.trackDetailsArray, this.trackEventImpression, 'impressionList');\r\n this.trackDetailsArray.length = 0;\r\n EventEmitter.emit('productListTracked:stopped');\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class AmpRedirectBuyWidget extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'amp-redirect-buy-widget';\r\n }\r\n\r\n init() {\r\n\t\tif(this.getUrlParam('findLocations', 'Empty') !='Empty'){\r\n\t\t\tthis.waitForBuyWidget();\r\n\t\t}\r\n }\r\n\r\n\tgetUrlParam(parameter, defaultvalue){\r\n\t\tvar urlparameter = defaultvalue;\r\n\t\tif(window.location.href.indexOf(parameter) > -1){\r\n\t\t\turlparameter = this.getUrlVars()[parameter];\r\n }\r\n return urlparameter;\r\n\t}\r\n\r\n getUrlVars() {\r\n\t\tvar vars = {};\r\n\t\tvar parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {\r\n vars[key] = value;\r\n });\r\n return vars;\r\n}\r\n\r\n waitForBuyWidget() {\r\n var interval = setInterval(function() {\r\n\t var buyWidget = document.querySelector(\".ps-widget\")\r\n\r\n if (!buyWidget || buyWidget.style.display == \"none\") {\r\n return;\r\n } else {\r\n buyWidget.click();\r\n clearInterval(interval);\r\n }\r\n }, 1500);\r\n\t}\r\n}","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport GTM from '$Foundation/src/js/gtm/gtm';\r\n\r\nexport default class LiveChat extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'live-chat-link';\r\n }\r\n\r\n setVariables() { \r\n this.liveChatHelpButtonEnabled = 'helpButtonEnabled';\r\n this.siteDomain = '';\r\n this.liveChatUrl = '/contact-us/livechat';\r\n this.liveChatUrlFull = '';\r\n\t\tthis.trackCategory = 'Live-Chat Open / Outbound Link';\r\n this.trackLabel = null;\r\n this.trackEvent = null;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.el, 'click', e => this.openLiveChat(e));\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners(); \r\n }\r\n\r\n openLiveChat(e) { \r\n e.preventDefault();\r\n const liveChatRibbon = document.getElementsByClassName(this.liveChatHelpButtonEnabled);\r\n if (!(typeof liveChatRibbon === undefined || liveChatRibbon[0] === undefined)) {\r\n liveChatRibbon[0].click(); \r\n } else { \r\n this.siteDomain = document.body.dataset.marketHomeUrl;\r\n this.liveChatUrlFull = this.siteDomain + this.liveChatUrl;\r\n\t\t\tthis.trackLabel = this.liveChatUrlFull;\r\n this.trackEvent = this.trackCategory + ' ' + this.trackLabel;\r\n GTM.push(this.trackCategory, 'Click', this.trackLabel, this.trackEvent);\r\n window.open(this.liveChatUrlFull, 'popUpWindow', 'height=400,width=390,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes');\r\n } \r\n }\r\n} \r\n","import { camelizeString } from '$Foundation/src/js/utils';\r\n\r\nclass GTM {\r\n push(category, action, label, event = 'eventTrack', advisorAvailability) {\r\n const siteId = document.body.dataset.siteId;\r\n const eventCamelized = camelizeString(event);\r\n const eventFull = siteId + eventCamelized;\r\n let advisor = {};\r\n let isAdvisorInfoEmpty = true;\r\n\r\n const collectuserData = (advisorAvailabilityValue) => {\r\n if (advisorAvailabilityValue) {\r\n Object.assign(advisor, { availability: advisorAvailabilityValue });\r\n isAdvisorInfoEmpty = false;\r\n }\r\n } \r\n\r\n if (window.dataLayer) {\r\n\r\n const resultObject = {};\r\n\r\n Object.assign(resultObject,\r\n {\r\n event: eventFull\r\n },\r\n {\r\n interaction: {\r\n category,\r\n action,\r\n label\r\n }\r\n }\r\n );\r\n\r\n collectuserData(advisorAvailability);\r\n if (!isAdvisorInfoEmpty) {\r\n Object.assign(resultObject, { advisor });\r\n }\r\n window.dataLayer.push(resultObject);\r\n }\r\n }\r\n}\r\n\r\nexport default new GTM();\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport GTM from '$Foundation/src/js/gtm/gtmLiveChat';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class LiveChatPopup extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.openLiveChat = this.openLiveChat.bind(this);\r\n this.hidePreloader = this.hidePreloader.bind(this);\r\n this.isChatLoaded = this.isChatLoaded.bind(this);\r\n this.showChat = this.showChat.bind(this);\r\n this.closeButton = null; \r\n this.formContent = null;\r\n this.startChatButton = null;\r\n this.trackCategory = 'Live-Chat Engagement / Button';\r\n this.trackLabel = null;\r\n this.trackEvent = null;\r\n this.advisorAvailability = null;\r\n this.setTrackingProperties = this.setTrackingProperties.bind(this);\r\n this.sendGtmEvent = this.sendGtmEvent.bind(this);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'live-chat-popup';\r\n }\r\n\r\n setVariables() {\r\n this.preloader = this.el.querySelector('[data-ref=\"preloader\"]');\r\n }\r\n\r\n addListeners() {\r\n }\r\n \r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.showPreloader();\r\n setTimeout(this.openLiveChat.bind(this), 2000);\r\n }\r\n\r\n openLiveChat() { \r\n const liveChatRibbon = document.getElementsByClassName('helpButtonEnabled');\r\n if (typeof liveChatRibbon === undefined || liveChatRibbon[0] === undefined) {\r\n return false;\r\n }\r\n liveChatRibbon[0].click();\r\n this.isChatLoaded();\r\n return false;\r\n }\r\n\r\n isChatLoaded() { \r\n this.timer = setInterval(() => this.showChat(), 100);\r\n // wait component initialisation\r\n setTimeout(() => { // stop waiting in 20 seconds\r\n if (this.timerOn) {\r\n clearInterval(this.timer);\r\n }\r\n },20000);\r\n }\r\n \r\n showChat() {\r\n this.closeButton = document.querySelector('.closeButton');\r\n if (!this.closeButton) return false;\r\n clearInterval(this.timer);\r\n this.timerOn = false;\r\n setTimeout(this.hidePreloader, 2000); \r\n\r\n this.formContent = document.querySelector('.formContent');\r\n this.startChatButton = document.querySelector('.uiButton.embeddedServiceSidebarButton');\r\n if (this.startChatButton) {\r\n this.advisorAvailability = (!this.formContent) ? \"Offline\" : \"Online\";\r\n this.startChatButton.addEventListener('click', () => {\r\n this.sendGtmEvent('Live-Chat embedded button');\r\n });\r\n }\r\n\r\n this.closeButton.addEventListener('click', () => {\r\n this.sendGtmEvent('Close popup');\r\n window.close();\r\n });\r\n\r\n return false;\r\n }\r\n\r\n showPreloader() {\r\n const DLClass = Utils.getDLClass();\r\n this.preloader.classList.remove(`${DLClass}-hidden`); \r\n }\r\n\r\n hidePreloader() {\r\n const DLClass = Utils.getDLClass();\r\n this.preloader.classList.add(`${DLClass}-hidden`);\r\n }\r\n\r\n setTrackingProperties(label) {\r\n this.trackLabel = label;\r\n this.trackEvent = this.trackCategory + ' ' + this.trackLabel;\r\n }\r\n\r\n sendGtmEvent(label) {\r\n this.setTrackingProperties(label);\r\n GTM.push(this.trackCategory, 'Click', this.trackLabel, this.trackEvent, this.advisorAvailability);\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class TencentVideo extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'tencent-video';\r\n }\r\n\r\n setVariables() {\r\n this.video = this.el.querySelector('[data-ref=\"video\"]');\r\n this.poster = this.el.querySelector('[data-ref=\"poster\"]');\r\n this.playButton = this.el.querySelector('[data-ref=\"video-play-button\"]');\r\n }\r\n\r\n addListeners() { \r\n this.addListener(this.playButton, 'click', e => this.handlePlayButtonClick(e));\r\n }\r\n\r\n init() { \r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n \r\n handlePlayButtonClick(e) {\r\n e.preventDefault();\r\n this.poster.classList.add('rc-hidden');\r\n this.video.src += \"&autoplay=true\"; \r\n };\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\n\r\nexport default class BrowserRegion extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'browser-region';\r\n }\r\n\r\n setVariables() {}\r\n\r\n addListeners() {}\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initContentBlock();\r\n }\r\n\r\n initContentBlock() {\r\n const yandexLocationCookieName = 'BrowserRegion';\r\n\r\n if (document.cookie.indexOf(yandexLocationCookieName) === -1 && window.ymaps) {\r\n window.ymaps.ready(init);\r\n }\r\n\r\n function init() {\r\n const geolocation = window.ymaps.geolocation;\r\n let geoObject = null,\r\n metaDataProperty = null,\r\n region = null;\r\n geolocation.get({\r\n provider: 'auto',\r\n autoReverseGeocode: true\r\n })\r\n .then((result) => {\r\n geoObject = result.geoObjects.get(0);\r\n metaDataProperty = geoObject.properties.get('metaDataProperty');\r\n region = metaDataProperty.GeocoderMetaData.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;\r\n\r\n const CookieDate = new Date();\r\n CookieDate.setFullYear(CookieDate.getFullYear() + 1); // expire in 1 year\r\n document.cookie = `${yandexLocationCookieName}=${encodeURIComponent(region)}; expires=${CookieDate.toGMTString()};path=/`;\r\n EventEmitter.emit('region:get', document);\r\n });\r\n }\r\n }\r\n}\r\n","import './styles.scss';\r\nimport '$Feature/GenericComponents/code/src/autocomplete/styles.scss';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Awesomplete from 'awesomplete';\r\n\r\nexport default class ManualRegion extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'manual-region';\r\n }\r\n\r\n setVariables() {\r\n this.input = this.el.querySelector('[data-ref=\"input\"]');\r\n this.cityLinks = [...this.el.querySelectorAll('[data-ref=\"city\"]')];\r\n this.cityList = [];\r\n this.currentCityName = null;\r\n\r\n this.searchButtonNode = this.el.querySelector('[data-ref=\"search-button\"]');\r\n this.searchWrapper = this.el.querySelector('[data-ref=\"search-wrapper\"]');\r\n this.closeButton = this.el.querySelector('[data-modal-trigger=\"modal-region-picker\"]');\r\n this.mainNavModal = document.querySelector('[data-js-modal-menu]');\r\n this.openModalLink = this.mainNavModal && this.mainNavModal.querySelector('[data-modal-trigger=\"modal-region-picker\"]');\r\n this.minChars = 2;\r\n\r\n this.manualRegionCookieName = 'ManualRegion';\r\n this.browserRegionCookieName = 'BrowserRegion';\r\n this.serverRegionCookieName = 'ServerRegion';\r\n\r\n this.currentRegion = null;\r\n this.regionPickerLinks = [...document.querySelectorAll('[data-modal-trigger=\"modal-region-picker\"]:not([data-ref=\"mrp-static-name\"])')];\r\n this.regionPickerNames = [...document.querySelectorAll('[data-ref=\"region-picker-name\"]')];\r\n this.regionPickerTooltipLink = document.querySelector('[data-tooltip=\"region-tooltip\"]');\r\n }\r\n\r\n addListeners() {\r\n this.cityLinks.forEach((link) => {\r\n this.addListener(link, 'click', e => this.onCityLinkClick(e));\r\n });\r\n this.addListener(this.input, 'input', e => this.handleInputFill(e));\r\n this.addListener(this.input, 'awesomplete-selectcomplete', e =>\r\n this.handleAwesompleteSelectComplete(e));\r\n this.addListener(this.searchButtonNode, 'click', e => this.handleSearchButtonClick(e));\r\n this.addListener(this.openModalLink, 'click', e => this.handleOpenModalLink(e));\r\n EventEmitter.subscribe('region:get', this.updatePickerLinksName.bind(this));\r\n this.regionPickerLinks.forEach((link) => {\r\n this.addListener(link, 'click', e => this.handleRegionPickerLinkClick(e));\r\n });\r\n\r\n this.addListener(this.regionPickerTooltipLink, 'keyup', e => this.handleRegionPickerTooltipLinkKeyUp(e));\r\n this.addListener(this.regionPickerTooltipLink, 'click', e => this.handleRegionPickerTooltipLinkClick(e));\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.updatePickerLinksName();\r\n setTimeout(() => {\r\n this.initAutocomplete();\r\n }, 200);\r\n }\r\n\r\n updatePickerLinksName() {\r\n this.getCurrentRegion();\r\n this.regionPickerLinks = [...this.regionPickerLinks, ...this.regionPickerNames];\r\n\r\n if ( this.regionPickerLinks !== undefined && this.regionPickerLinks.length !== 0 && this.currentRegion) {\r\n this.regionPickerLinks.forEach((item) => {\r\n const itemRegionSpan = item.querySelector('[data-ref=\"region-picker-name\"]');\r\n if (itemRegionSpan !== null ) {\r\n itemRegionSpan.textContent = this.currentRegion;\r\n } else {\r\n item.textContent = this.currentRegion;\r\n item.title = this.currentRegion;\r\n }\r\n });\r\n }\r\n }\r\n\r\n initAutocomplete() {\r\n this.getCityList();\r\n this.currentCityName = this.currentRegion;\r\n this.autoCompleteInstanse = new Awesomplete(this.input, {\r\n list: this.cityList\r\n });\r\n this.autoCompleteInstanse.container.className += ' autocomplete';\r\n this.autoCompleteInstanse.ul.classList.add('autocomplete__list');\r\n }\r\n\r\n getCityList() {\r\n this.cityLinks.forEach((node) => {\r\n this.cityList.push(node.textContent);\r\n });\r\n }\r\n\r\n getCurrentRegion() {\r\n let currentRegion = '';\r\n const manualRegionCookie = this.getCookie(this.manualRegionCookieName);\r\n const browserRegionCookie = this.getCookie(this.browserRegionCookieName);\r\n const serverRegionCookie = this.getCookie(this.serverRegionCookieName);\r\n\r\n if (manualRegionCookie !== undefined) {\r\n currentRegion = decodeURIComponent(manualRegionCookie);\r\n } else if (browserRegionCookie !== undefined) {\r\n currentRegion = decodeURIComponent(browserRegionCookie);\r\n } else if (serverRegionCookie !== undefined) {\r\n currentRegion = decodeURIComponent(serverRegionCookie);\r\n currentRegion = currentRegion.replace(new RegExp('\\\\+', 'g'), ' ');\r\n if (currentRegion === 'Serverside location detection failed') {\r\n currentRegion = null;\r\n }\r\n }\r\n this.currentRegion = currentRegion;\r\n }\r\n\r\n getCookie(name) {\r\n let value = '; ' + document.cookie;\r\n let parts = value.split('; ' + name + '=');\r\n if (parts.length == 2) {\r\n return parts.pop().split(';').shift();\r\n }\r\n }\r\n\r\n\r\n onCityLinkClick(e) {\r\n e.preventDefault();\r\n const cityName = e.target.textContent;\r\n this.onCitySelect(cityName);\r\n }\r\n\r\n onCitySelect(cityName) {\r\n if (cityName !== this.currentCityName) {\r\n this.setCookie(this.manualRegionCookieName, cityName);\r\n this.closeAndReload();\r\n } else {\r\n this.close();\r\n }\r\n }\r\n close() {\r\n this.closeButton.click();\r\n }\r\n\r\n closeAndReload() {\r\n this.closeButton.click();\r\n location.reload(true);\r\n }\r\n\r\n setCookie(cookieName, cookievalue) {\r\n const CookieDate = new Date();\r\n CookieDate.setFullYear(CookieDate.getFullYear() + 1); // expire in 1 year\r\n document.cookie = `${cookieName}=${encodeURIComponent(cookievalue)}; expires=${CookieDate.toGMTString()};path=/`;\r\n }\r\n\r\n handleSearchButtonClick(e) {\r\n e.preventDefault();\r\n }\r\n\r\n handleAwesompleteSelectComplete(e) {\r\n this.isValueSelected = true;\r\n const cityName = e.text.value;\r\n this.onCitySelect(cityName);\r\n }\r\n\r\n handleInputFill(e) {\r\n if (e.target.value.trim() !== '') {\r\n this.searchWrapper.classList.add('is-filled');\r\n } else {\r\n this.searchWrapper.classList.remove('is-filled');\r\n }\r\n }\r\n\r\n handleOpenModalLink(e) { // close main nav if region picker is triggered from main nav\r\n this.mainNavModal.querySelector('[data-modal-trigger=\"main-nav-modal\"]').click();\r\n }\r\n\r\n handleRegionPickerLinkClick(e) {\r\n e.preventDefault();\r\n }\r\n\r\n handleRegionPickerTooltipLinkClick(e) {\r\n e.preventDefault();\r\n }\r\n\r\n handleRegionPickerTooltipLinkKeyUp(e) {\r\n e.preventDefault();\r\n if (e.keyCode === 13) {\r\n e.preventDefault();\r\n this.openModalLink.click();\r\n setTimeout(() => {\r\n this.input.focus();\r\n }, 200);\r\n }\r\n }\r\n\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport EventEmitter from '$Foundation/src/js/EventEmitter';\r\n\r\nexport default class RegionLinks extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'region-link';\r\n }\r\n\r\n setVariables() {\r\n this.regionList = this.el.getAttribute('data-region-name');\r\n this.regionListArray=[];\r\n this.manualRegionCookieName = 'ManualRegion';\r\n this.browserRegionCookieName = 'BrowserRegion';\r\n this.serverRegionCookieName = 'ServerRegion';\r\n this.visibilityClass = 'rc-hidden';\r\n }\r\n\r\n addListeners() { \r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initRegionLinks();\r\n }\r\n\r\n initRegionLinks() { \r\n this.getRegionListArray();\r\n const currentRegion = this.getCurrentRegion();\r\n\r\n if (this.regionListArray.indexOf(currentRegion) > -1) {\r\n this.el.classList.remove('rc-hidden'); \r\n }\r\n\r\n EventEmitter.subscribe('region:get', this.updateRegionlinks.bind(this));\r\n }\r\n\r\n getRegionListArray() {\r\n this.regionListArray = this.regionList.split(', ');\r\n }\r\n\r\n getCurrentRegion() {\r\n let currentRegion = '';\r\n \r\n let manualRegionCookie = this.getCookie(this.manualRegionCookieName);\r\n let browserRegionCookie = this.getCookie(this.browserRegionCookieName);\r\n let serverRegionCookie = this.getCookie(this.serverRegionCookieName);\r\n\r\n if (manualRegionCookie !== undefined) {\r\n currentRegion = decodeURIComponent(manualRegionCookie);\r\n } else { \r\n if (browserRegionCookie !== undefined) {\r\n currentRegion = decodeURIComponent(browserRegionCookie);\r\n } else { \r\n if (serverRegionCookie !== undefined && serverRegionCookie !== 'No detect geolocation'){\r\n currentRegion = decodeURIComponent(serverRegionCookie);\r\n }\r\n }\r\n } \r\n return currentRegion;\r\n }\r\n\r\n updateRegionlinks() {\r\n let currentRegion;\r\n let browserRegionCookie = this.getCookie(this.browserRegionCookieName);\r\n\r\n if (browserRegionCookie !== undefined) {\r\n currentRegion = decodeURIComponent(browserRegionCookie);\r\n } \r\n\r\n if (this.regionListArray.indexOf(currentRegion) > -1) {\r\n this.el.classList.remove('rc-hidden'); \r\n }\r\n \r\n }\r\n\r\n getCookie(name) {\r\n let value = \"; \" + document.cookie;\r\n let parts = value.split(\"; \" + name + \"=\");\r\n if (parts.length == 2) return parts.pop().split(\";\").shift();\r\n }\r\n\r\n}","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport MoveTo from 'moveto';\r\n\r\nexport default class TimelineLink extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'timeline-link';\r\n }\r\n\r\n setVariables() {\r\n this.hash = this.el.hash;\r\n this.anchor = null;\r\n this.point = null;\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.el, 'click', e => this.handleTimelineLinkClick(e));\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n scrollElIntoView(element) {\r\n if (window.pageYOffset >= this.el.offsetTop) {\r\n setTimeout(() => {\r\n const header = document.querySelector('[data-js-header-scroll]');\r\n const headerOffset = header ? header.getBoundingClientRect().height : 0;\r\n\r\n const moveTo = new MoveTo({\r\n tolerance: headerOffset\r\n });\r\n const target = element;\r\n moveTo.move(target);\r\n }, 300);\r\n }\r\n }\r\n\r\n handleTimelineLinkClick(e) {\r\n e.preventDefault();\r\n\r\n if (!this.hash) return;\r\n\r\n this.anchor = this.hash.substring(1);\r\n this.point = document.getElementById(this.anchor);\r\n\r\n if (this.point) {\r\n this.scrollElIntoView(this.point);\r\n }\r\n }\r\n}\r\n","import \"./styles.scss\";\r\nimport BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport Utils from \"$Foundation/src/js/utils\";\r\n\r\nexport default class CommerceButton extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return \"commerce-button\";\r\n }\r\n\r\n setVariables() {\r\n this.elseSpan = document.querySelector(\".buy-now-opt\");\r\n this.customBuyNow = document.querySelector(\".styled-custom-buy-now\");\r\n this.sizeButtons = [...this.el.querySelectorAll('[data-ref=\"size\"]')];\r\n this.shopButtons = [\r\n ...document.querySelectorAll('[data-ccid=\"wtb-target\"]'),\r\n ];\r\n this.PSButtons = [...document.querySelectorAll('[data-ccid=\"ps-widget\"]')];\r\n this.recipe = [...this.el.querySelectorAll('[data-ref=\"recipe\"]')];\r\n this.recipePackSize = [\r\n ...this.el.querySelectorAll('[data-ref=\"pack-size\"]'),\r\n ];\r\n this.checkedSize = null;\r\n this.vetProducts = document.getElementsByClassName(\"vet-product\");\r\n this.retailProducts = document.getElementsByClassName(\"retail-global-ean\");\r\n\r\n const jsonScriptNode = document.getElementById(\"cc-widget-settings-json\");\r\n this.cciWidgetSettingsData = jsonScriptNode\r\n ? JSON.parse(jsonScriptNode.innerHTML).commerceConnectorWidgetSettings\r\n : null;\r\n }\r\n\r\n addListeners() {\r\n this.sizeButtons.forEach((item) => {\r\n this.addListener(item, \"change\", (e) => this.onRadioChange(e, item));\r\n });\r\n this.recipe.forEach((item) => {\r\n this.addListener(item, \"change\", (e) =>\r\n this.onRadioChangeRecipe(e, item)\r\n );\r\n });\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.sizeButtons.length > 0 && this.initButtonsOnLoad();\r\n this.recipe.length > 0 && this.initRecipesOnLoad();\r\n this.initCommerceTracking();\r\n this.initCommerceButtonPlaceholder();\r\n this.cciWidgetSettingsData && this.checkGoogleAnalyticsLoaded();\r\n\r\n if (this.customBuyNow) {\r\n this.waitForElm('[data-ccid=\"wtb-inline-button\"]').then(() => {\r\n this.showButtonAndElse(\r\n this.shopButtons[0].querySelectorAll(\"a\").length\r\n );\r\n });\r\n } else {\r\n this.elseSpan.style.display = \"block\";\r\n }\r\n }\r\n\r\n waitForElm(selector) {\r\n return new Promise((resolve) => {\r\n if (document.querySelector(selector)) {\r\n return resolve(document.querySelector(selector));\r\n }\r\n\r\n const observer = new MutationObserver((mutations) => {\r\n if (document.querySelector(selector)) {\r\n resolve(document.querySelector(selector));\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n observer.observe(document.body, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n });\r\n }\r\n\r\n showButtonAndElse(isShown) {\r\n if (isShown) {\r\n this.elseSpan.style.display = \"block\";\r\n this.customBuyNow.style.display = \"block\";\r\n } else {\r\n this.elseSpan.style.display = \"none\";\r\n this.customBuyNow.style.display = \"none\";\r\n }\r\n }\r\n\r\n // remove placeholder button after Buy Now button finished loading\r\n initCommerceButtonPlaceholder() {\r\n const targetId = document.querySelector('[id^=\"commerce-button\"]').id;\r\n const targetNode = document.getElementById(targetId);\r\n const placeholderButton = document.getElementById(\r\n \"placeholder-commerce-button\"\r\n );\r\n const config = { attributes: true, childList: true, subtree: true };\r\n const callback = function (mutationsList) {\r\n // Use traditional 'for loops' for IE 11\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === \"childList\") {\r\n placeholderButton && placeholderButton.remove();\r\n console.log(\"A child node has been added or removed.\");\r\n }\r\n }\r\n };\r\n const observer = new MutationObserver(callback);\r\n observer.observe(targetNode, config);\r\n }\r\n\r\n initButtonsOnLoad() {\r\n let checkedEan;\r\n\r\n this.sizeButtons.forEach((item) => {\r\n checkedEan = item.checked ? item.getAttribute(\"data-ean-id\") : checkedEan;\r\n this.checkedSize = item.checked\r\n ? item.getAttribute(\"value\")\r\n : this.checkedSize;\r\n });\r\n\r\n this.shopButtons.forEach((item) => {\r\n let ean = item.getAttribute(\"data-ean\");\r\n let globalEANCode =\r\n this.cciWidgetSettingsData && this.cciWidgetSettingsData.eanCode;\r\n if (this.vetProducts.length > 0) {\r\n if (ean !== globalEANCode) {\r\n item.classList.add(\"rc-hidden\");\r\n }\r\n } else if (this.retailProducts.length > 0) {\r\n if (ean !== globalEANCode) {\r\n item.classList.add(\"rc-hidden\");\r\n }\r\n } else {\r\n if (ean !== checkedEan) {\r\n item.classList.add(\"rc-hidden\");\r\n }\r\n }\r\n });\r\n\r\n this.PSButtons.forEach((item) => {\r\n let ean = item.getAttribute(\"data-ean\");\r\n if (ean !== checkedEan) {\r\n item.classList.add(\"rc-hidden\");\r\n }\r\n\r\n console.log(\"initial\")\r\n\r\n document.addEventListener(\"DOMContentLoaded\", function(event) { \r\n const buyButtonSelector = document.querySelectorAll(\".styled-custom-buy-now\");\r\n if (document.querySelectorAll(\".styled-custom-buy-now .rc-hidden\").length > 0){buyButtonSelector[0].style.display=\"none\"}\r\n console.log(\"final\")\r\n });\r\n });\r\n\r\n\r\n document\r\n .querySelector(\"h1\")\r\n .setAttribute(\"data-checked-size\", this.checkedSize);\r\n\r\n }\r\n\r\n initRecipesOnLoad() {\r\n let checkedEan;\r\n let checkedItem;\r\n\r\n this.recipe.forEach((item) => {\r\n checkedEan = item.checked ? item.getAttribute(\"data-ean-id\") : checkedEan;\r\n });\r\n\r\n this.recipePackSize.forEach((container) => {\r\n const current = container.getAttribute(\"data-ean-id\");\r\n if (current !== checkedEan) {\r\n container.classList.add(\"rc-hidden\");\r\n }\r\n });\r\n\r\n this.sizeButtons.forEach((size) => {\r\n const currentSizeTarget = size.getAttribute(\"data-ref-target\");\r\n checkedItem = size.checked\r\n ? size.getAttribute(\"data-ean-id\")\r\n : checkedItem;\r\n if (checkedEan === currentSizeTarget) {\r\n this.shopButtons.forEach((button) => {\r\n const curEan = button.getAttribute(\"data-ean\");\r\n if (curEan !== checkedItem) {\r\n button.classList.add(\"rc-hidden\");\r\n } else {\r\n button.classList.remove(\"rc-hidden\");\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n checkGoogleAnalyticsLoaded() {\r\n let timer = Date.now();\r\n let checkIntervalInMilliseconds = 200;\r\n let maxMillisecondsToWait = 4000;\r\n\r\n // check once every checkIntervalInMilliseconds if GA script loaded for maxMillisecondsToWait\r\n // if it loaded in maxMillisecondsToWait then get client ID from GA and add it in the CC widget script\r\n let interval = setInterval(() => {\r\n if (Date.now() - timer > maxMillisecondsToWait) {\r\n clearInterval(interval);\r\n } else {\r\n if (typeof window.ga === \"function\") {\r\n window.ga(() => {\r\n let clientId = \"\";\r\n\r\n let trackers = window.ga.getAll();\r\n for (var i = 0; i < trackers.length; ++i) {\r\n var tracker = trackers[i];\r\n\r\n if (tracker) {\r\n clientId = tracker.get(\"clientId\");\r\n break;\r\n }\r\n }\r\n\r\n this.addCommerceConnectorScriptWidget(clientId);\r\n });\r\n }\r\n }\r\n }, checkIntervalInMilliseconds);\r\n\r\n // if GA is blocked by AdBlocker or did not load in maxMillisecondsToWait\r\n // add the CC widget script anyway without the client ID\r\n setTimeout(() => {\r\n this.addCommerceConnectorScriptWidget();\r\n }, maxMillisecondsToWait + 50);\r\n }\r\n\r\n addCommerceConnectorScriptWidget(clientId) {\r\n let scriptContainer = document.getElementById(\"cc-script-container\");\r\n\r\n if (scriptContainer.innerHTML.length > 0) {\r\n return;\r\n }\r\n\r\n let script = document.createElement(\"script\");\r\n script.type = \"text/javascript\";\r\n script.id = \"cci-widget\";\r\n script.src = this.cciWidgetSettingsData.scriptSrc;\r\n script.setAttribute(\"data-token\", this.cciWidgetSettingsData.token);\r\n script.setAttribute(\"data-locale\", this.cciWidgetSettingsData.locale);\r\n script.setAttribute(\r\n \"data-displaylanguage\",\r\n this.cciWidgetSettingsData.displayLanguage\r\n );\r\n script.setAttribute(\"data-widgetid\", this.cciWidgetSettingsData.widgetId);\r\n script.setAttribute(\"data-ean\", this.cciWidgetSettingsData.eanCode);\r\n script.setAttribute(\"data-subid\", this.cciWidgetSettingsData.subID);\r\n script.setAttribute(\r\n \"data-trackingid\",\r\n clientId ? this.cciWidgetSettingsData.trackingPrefix + clientId : \"\"\r\n );\r\n\r\n scriptContainer.appendChild(script);\r\n }\r\n\r\n onRadioChangeRecipe(e, item) {\r\n const checkedEan = item.getAttribute(\"data-ean-id\");\r\n const recipeURL = item.getAttribute(\"data-product-url\");\r\n this.checkedSize = item.getAttribute(\"value\");\r\n let checkedItem;\r\n\r\n recipeURL && history.replaceState(null, \"\", recipeURL);\r\n\r\n this.recipePackSize.forEach((container) => {\r\n const current = container.getAttribute(\"data-ean-id\");\r\n if (current !== checkedEan) {\r\n container.classList.add(\"rc-hidden\");\r\n } else {\r\n container.classList.remove(\"rc-hidden\");\r\n }\r\n });\r\n\r\n // display PS button based on selected pack size\r\n this.sizeButtons.forEach((size) => {\r\n const currentSizeTarget = size.getAttribute(\"data-ref-target\");\r\n checkedItem = size.checked\r\n ? size.getAttribute(\"data-ean-id\")\r\n : checkedItem;\r\n if (checkedEan === currentSizeTarget) {\r\n this.shopButtons.forEach((button) => {\r\n const curEan = button.getAttribute(\"data-ean\");\r\n if (curEan !== checkedItem) {\r\n button.classList.add(\"rc-hidden\");\r\n } else {\r\n button.classList.remove(\"rc-hidden\");\r\n }\r\n });\r\n }\r\n });\r\n\r\n // display product ingredients based on selected recipe\r\n document\r\n .querySelectorAll('[data-ref=\"product-specific-details\"]')\r\n .forEach((x) => {\r\n const current = x.getAttribute(\"data-ean-id\");\r\n if (current !== checkedEan) {\r\n x.classList.add(\"rc-hidden\");\r\n } else if (current === checkedEan) {\r\n x.classList.remove(\"rc-hidden\");\r\n }\r\n });\r\n }\r\n\r\n onRadioChange(e, item) {\r\n const checkedEan = item.getAttribute(\"data-ean-id\");\r\n this.checkedSize = item.getAttribute(\"value\");\r\n document\r\n .querySelector(\"h1\")\r\n .setAttribute(\"data-checked-size\", this.checkedSize);\r\n\r\n this.shopButtons.forEach((button) => {\r\n const curEan = button.getAttribute(\"data-ean\");\r\n if (curEan !== checkedEan) {\r\n button.classList.add(\"rc-hidden\");\r\n } else {\r\n button.classList.remove(\"rc-hidden\");\r\n this.showButtonAndElse(button.querySelectorAll(\"a\").length);\r\n }\r\n });\r\n this.PSButtons.forEach((button) => {\r\n const curEan = button.getAttribute(\"data-ean\");\r\n if (curEan !== checkedEan) {\r\n button.classList.add(\"rc-hidden\");\r\n } else {\r\n button.classList.remove(\"rc-hidden\");\r\n }\r\n });\r\n }\r\n\r\n initCommerceTracking() {\r\n window.CCEventTrackingCallback = function (eventType, eventContext) {\r\n const siteId = document.body.getAttribute(\"data-site-id\");\r\n const productId = document\r\n .querySelector(\"h1\")\r\n .getAttribute(\"data-product-id\");\r\n const productSize = document\r\n .querySelector(\"h1\")\r\n .getAttribute(\"data-checked-size\");\r\n\r\n if (eventType === \"wtb_button_click\") {\r\n var dataLayer = (window.dataLayer = window.dataLayer || []);\r\n dataLayer.push({\r\n event: siteId + \"productPageBuyNow\",\r\n interaction: {\r\n category: \"Buy Now\",\r\n action: \"Click\",\r\n label: \"CommerceConnector\",\r\n },\r\n });\r\n }\r\n\r\n if (eventType === \"shop_clickout\") {\r\n //push Data Layer event - {{site.id}} to be replaced with context site.id\r\n var dataLayer = (window.dataLayer = window.dataLayer || []);\r\n dataLayer.push({\r\n event: siteId + \"dealerFinderEretailerClick\",\r\n product: {\r\n id: productId, //Main item ID of the context product page\r\n variant: productSize, //currently selected pack size\r\n },\r\n interaction: {\r\n category: undefined,\r\n action: undefined,\r\n label: eventContext.shop_name, //shop name from widget event context\r\n },\r\n component: {\r\n title: \"CommerceConnector\",\r\n },\r\n });\r\n }\r\n };\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport MoveTo from 'moveto';\r\n\r\nexport default class HeroPanel extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'hero-panel';\r\n }\r\n\r\n setVariables() {\r\n this.title = this.el.querySelector('h1');\r\n this.arrowDown = this.el.getElementsByClassName('euka-header-hero-banner__arrow')\r\n this.parentElem = document.querySelector('.euka-header-hero-banner').nextElementSibling\r\n this.arrowDown[0].style.cursor = 'pointer'\r\n }\r\n addListeners() {\r\n this.arrowDown[0].addEventListener(\"click\", e => this.onArrowClick(e));\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.removeNbspFromTitleOnSmallScreens();\r\n this.addListeners();\r\n \r\n }\r\n\r\n removeNbspFromTitleOnSmallScreens() {\r\n if (window.innerWidth < 768 || window.innerHeight < 480) {\r\n this.title.innerHTML = this.title.innerHTML.replace(/ /g, '');\r\n }\r\n }\r\n onArrowClick(e) {\r\n\r\n const target = this.parentElem;\r\n this.checkIfDiv(target);\r\n\r\n }\r\n checkIfDiv(target) {\r\n if (target.tagName == 'DIV' || target.tagName == 'SECTION') {\r\n console.log('target div ori section')\r\n const header = document.querySelector('[data-js-header-scroll]');\r\n let headerOffset = header.getBoundingClientRect().height;\r\n\r\n const moveTo = new MoveTo({\r\n tolerance: headerOffset\r\n });\r\n moveTo.move(target);\r\n }\r\n else {\r\n\r\n console.log('not div', target.tagName)\r\n let nextElem = target.nextElementSibling;\r\n this.checkIfDiv(nextElem);\r\n }\r\n }\r\n\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class ModalNav extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'modal-nav';\r\n }\r\n\r\n init() {\r\n this.addClassIfAccessedFromiOSDevice();\r\n }\r\n\r\n addClassIfAccessedFromiOSDevice() {\r\n try {\r\n const supportsBigInt = typeof BigInt('1') == \"bigint\";\r\n } catch (e) {\r\n if (navigator.platform === 'iPhone') {\r\n this.el.classList.add('before-ios-14');\r\n }\r\n }\r\n }\r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class VetFocusArticles extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'VetFocusArticles';\r\n }\r\n\r\n setVariables() {\r\n this.snippetEls = document.getElementsByClassName('reference-snippet');\r\n this.texts = Array.from(document.getElementsByClassName('reference-list-item'))\r\n .map((element)=>element.innerText);\r\n\r\n }\r\n\r\n addListeners() {\r\n this.snippetEls.forEach(snippetEl=>{\r\n this.addListener(snippetEl,\"click\",e=>this.openSnippet(e.target));\r\n })\r\n\r\n window.addEventListener(\"click\",e=>{\r\n if(!Array.from(e.target.classList).includes(\"reference-snippet\")){\r\n this.closeAllSnippets();\r\n }\r\n })\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n // Add hidden text to all snippets\r\n this.snippetEls.forEach(snippetEl=>{\r\n const index = +snippetEl.innerHTML;\r\n if(index >= 1 && index <= this.texts.length) {\r\n const text = this.texts[index - 1];\r\n const node = document.createElement('div');\r\n node.classList.add('snippet-container');\r\n const textNode = document.createTextNode(text);\r\n node.appendChild(textNode);\r\n node.style.display = \"none\";\r\n snippetEl.appendChild(node);\r\n }\r\n \r\n })\r\n }\r\n\r\n\r\n closeAllSnippets(){\r\n this.snippetEls.forEach(snippetEl=>{\r\n const snippetContentEl = snippetEl.querySelector(\".snippet-container\");\r\n if(snippetContentEl) snippetContentEl.style.display = \"none\";\r\n })\r\n }\r\n\r\n openSnippet(snippetEl){\r\n this.closeAllSnippets();\r\n const snippetContentEl = snippetEl.querySelector(\".snippet-container\");\r\n if(snippetContentEl) snippetContentEl.style.display = \"block\";\r\n }\r\n}\r\n","import { camelizeString } from '$Foundation/src/js/utils';\r\n\r\nclass GTM {\r\n push(category, action, label, id, publishDate, masterName, format, type, event = 'eventTrack') {\r\n const siteId = document.body.dataset.siteId;\r\n const eventCamelized = camelizeString(event);\r\n const eventFull = siteId + eventCamelized; \r\n\r\n if (window.dataLayer) {\r\n\r\n const resultObject = {};\r\n\r\n Object.assign(resultObject,\r\n {\r\n event: eventFull\r\n },\r\n {\r\n interaction: {\r\n category,\r\n action,\r\n label\r\n }\r\n },\r\n {\r\n issue: {\r\n id,\r\n publishDate,\r\n masterName,\r\n format,\r\n type\r\n }\r\n }\r\n );\r\n window.dataLayer.push(resultObject);\r\n }\r\n }\r\n}\r\n\r\nexport default new GTM();","import './styles.scss';\r\nimport GTM from '$Foundation/src/js/gtm/gtmVetFocusIssueCard';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class VetFocusIssueCard extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'vetfocus-issue-card';\r\n }\r\n\r\n setVariables() {\r\n this.vetFocusIssueCardCTA = this.el.querySelector('[data-ref=\"issue-card-cta\"]');\r\n }\r\n\r\n addListeners() {\r\n this.vetFocusIssueCardCTA && this.vetFocusIssueCardCTA.addEventListener('click', e => this.pushGTM(e));\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initContentBlock();\r\n }\r\n\r\n initContentBlock() {\r\n console.log('Module inited: vetfocus-issue-card');\r\n }\r\n \r\n pushGTM(e) {\r\n const id = e.currentTarget.getAttribute('data-track-id');\r\n const publishDate = e.currentTarget.getAttribute('data-track-publish-date');\r\n const masterName = e.currentTarget.getAttribute('data-track-master-name');\r\n const format = e.currentTarget.getAttribute('data-track-format');\r\n const type = e.currentTarget.getAttribute('data-track-type');\r\n GTM.push('PDFs', 'Download', 'Issues', id, publishDate, masterName, format, type, 'downloadPDF');\r\n }\r\n}\r\n","import './styles.scss';\r\nimport GTM from '$Foundation/src/js/gtm/gtm';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class VetFocusArticleIssueDetail extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'authors-list';\r\n }\r\n\r\n setVariables() {\r\n this.authorCards = this.el.querySelectorAll('[data-ref=\"author-card\"]');\r\n }\r\n\r\n addListeners() {}\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initContentBlock();\r\n this.authorCards.forEach(author => {\r\n this.pushGTM(author);\r\n });\r\n }\r\n\r\n initContentBlock() {\r\n console.log(`Module inited: authors-list`);\r\n }\r\n \r\n pushGTM(e) {\r\n const category = e.getAttribute('data-track-category');\r\n const action = e.getAttribute('data-track-action');\r\n const label = e.getAttribute('data-track-label');\r\n GTM.push(category, action, label, 'author');\r\n }\r\n}\r\n","import './styles.scss';\r\nimport GTM from '$Foundation/src/js/gtm/gtm';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class VetFocusSocialLinks extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'social-links';\r\n }\r\n\r\n setVariables() {\r\n this.socialLinks = this.el.querySelectorAll('[data-ref=\"social-link\"]');\r\n }\r\n\r\n addListeners() {\r\n this.socialLinks.forEach(link => {\r\n link.addEventListener('click', e => this.pushGTM(e));\r\n });\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n this.initContentBlock();\r\n }\r\n\r\n initContentBlock() {\r\n console.log(`Module inited: social-links`);\r\n }\r\n \r\n pushGTM(e) {\r\n const category = e.currentTarget.getAttribute('data-track-category');\r\n const action = e.currentTarget.getAttribute('data-track-action');\r\n const label = e.currentTarget.getAttribute('data-track-label');\r\n GTM.push(category, action, label, 'socialShare');\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\n\r\nexport default class EnlargeImage extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'vetfocus-enlarge-image';\r\n }\r\n \r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n setVariables() {\r\n this.enlargeButtons = document.querySelectorAll('[data-modal-trigger=\"full-modal-image\"].rc-expand--xs');\r\n this.enlargeModals = document.querySelectorAll('[ data-modal-target=\"full-modal-image\"]');\r\n this.enlargeCloseButtons = document.querySelectorAll('[ data-modal-trigger=\"full-modal-image\"].rc-modal__close')\r\n this.shadowBoxes = document.getElementsByClassName('shadow-box');\r\n\r\n }\r\n\r\n addListeners() {\r\n this.enlargeButtons.forEach((button, i) => {\r\n this.addListener(button, 'click', e => this.openModal(e, i));\r\n });\r\n this.enlargeCloseButtons.forEach((button, i) => {\r\n this.addListener(button, 'click', e => this.closeModal(e, i));\r\n\r\n });\r\n }\r\n\r\n openModal(e, i) {\r\n if (this.enlargeModals[i].classList.contains(\"rc-hidden\")) {\r\n this.enlargeModals[i].classList.remove(\"rc-hidden\");\r\n this.shadowBoxes[i].classList.add('rc-shade');\r\n }\r\n }\r\n\r\n closeModal(e, i) {\r\n this.enlargeModals[i].classList.add(\"rc-hidden\");\r\n this.shadowBoxes[i].classList.remove('rc-shade');\r\n }\r\n} \r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport './styles.scss';\r\n\r\nexport default class MyAccountRegisterStep extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'my-account-register';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners();\r\n }\r\n\r\n setVariables() {\r\n this.continueButton = document.getElementsByClassName('vf-submit-button')[0];\r\n this.inputChecked = document.querySelector('[name=\"terms-conditions\"]')\r\n\r\n }\r\n\r\n addListeners() {\r\n console.log(this.continueButton, 'continueButton');\r\n console.log('this.inputChecked', this.inputChecked);\r\n\r\n this.inputChecked.addEventListener(\"click\", e => this.checkButtonStatus(e))\r\n\r\n\r\n\r\n }\r\n checkButtonStatus(e) {\r\n if(this.inputChecked.checked){\r\n console.log('event listener ')\r\n this.continueButton.disabled = false\r\n }\r\n else{\r\n this.continueButton.disabled = true\r\n }\r\n }\r\n} ","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nconsole.log('initiated script index.js')\r\nexport default class MyAccount extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return 'myaccount';\r\n }\r\n\r\n setVariables() {\r\n this.dropDown = this.el.getElementsByClassName('choices__list--dropdown')[0]\r\n this.selectOption=this.el.getElementsByClassName('choices');\r\n\t\tthis.settingssection = this.el.getElementsByClassName('vf-settings-hidden')[0];\r\n this.selectInnerChoices=document.getElementById(\"id-job-role-select\");\r\n this.listItem=this.el.querySelectorAll('[role=\"option\"]')[1];\r\n console.log(this.listItem,'list item')\r\n this.editButton = this.el.querySelector('[role=tablist]');\r\n this.vetFocusSettings=this.el.querySelector('[data-js-my-account-edit-target=\"my-account\"]') \r\n this.cancelButton=this.el.getElementsByClassName('vf-settings-cancel-button')[0];\r\n console.log(' this.vetFocusSettings', this.vetFocusSettings)\r\n console.log(' this.cancelButton', this.cancelButton)\r\n }\r\n addListeners() {\r\n\r\n this.addListener(this.selectOption[0], 'click', e => this.setModalBehavior(e));\r\n // this.addListener(this.selectOption[0], 'mouseover' , e => this.onHover(e));\r\n this.addListener(this.editButton, 'click', e => this.clickOnEditButton(e));\r\n this.addListener(this.cancelButton, 'click', e => this.clickOnCancelButton(e));\r\n\r\n }\r\n\r\n init() {\r\n console.log('initited ',this.isInited)\r\n this.setVariables();\r\n this.addListeners();\r\n \r\n }\r\n clickOnEditButton(e){\r\n console.log('editButton',this.editButton)\r\n console.log(' this.vetFocusSettings', this.vetFocusSettings)\r\n this.vetFocusSettings.classList.remove('rc-hidden')\r\n\t\tthis.settingssection.classList.add('rc-hidden')\r\n }\r\n clickOnCancelButton(e){\r\n this.vetFocusSettings.classList.add('rc-hidden')\r\n\t\tthis.settingssection.classList.remove('rc-hidden')\r\n }\r\n setModalBehavior(e){\r\n e.preventDefault();\r\n if (this.isInited==true){\r\n this.openModal(e);\r\n this.isInited=false;\r\n\r\n }\r\n else{\r\n this.closeModal(e);\r\n this.isInited= true;\r\n }\r\n }\r\n \r\n openModal(e) {\r\n\r\n console.log('isInited open modal' ,this.isInited)\r\n e.preventDefault();\r\n this.dropDown.classList.add('is-active');\r\n this.dropDown.setAttribute(\"aria-expanded\", \"true\");\r\n // this.addListener(this.listItem, 'click', e => this.onHover(e));\r\n let i=0;\r\n for (i = 0;\r\n i < this.listItem.length; i++) { \r\n console.log(this.listItem[i] ,i)\r\n\r\n this.addListener(this.listItem[i], 'click', e => {\r\n console.log('clicked on ',this.listItem[i])\r\n });\r\n }\r\n \r\n console.log('isInited open modal' ,this.isInited)\r\n };\r\n closeModal(e){\r\n console.log('isInited close modal' ,this.isInited)\r\n e.preventDefault();\r\n this.dropDown.classList.remove('is-active');\r\n this.dropDown.setAttribute(\"aria-expanded\", \"false\");\r\n \r\n console.log('isInited close modal' ,this.isInited)\r\n }\r\n onHover(e){\r\n console.log('onHover')\r\n // this.listOfLanguages =document.getElementsByClassName('choices__item--choice')\r\n // this.listOfLanguages.array.forEach(element => {\r\n // element.classList.add('is-highlighted')\r\n // console.log('test')\r\n // });\r\n\r\n } \r\n clickOnItemList(i,e){\r\n console.log('click on item list');\r\n console.log('this.listItem[i]',this.listItem[i])\r\n\r\n\r\n }\r\n \r\n \r\n \r\n \r\n}\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport \"./styles.scss\";\r\n\r\nexport default class PromotItem extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return \"promo-item\";\r\n }\r\n\r\n init() {\r\n const p = this.el.querySelector(\"p.rc-body\");\r\n\r\n if (p.offsetHeight > 80) {\r\n const limit =\r\n window.innerWidth > 768\r\n ? 100\r\n : Math.round((p.offsetWidth / 8) * 3);\r\n p.innerHTML = `${p.innerHTML.substr(0, limit)}...`;\r\n }\r\n }\r\n}\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport \"./styles.scss\";\r\n\r\nexport default class NavigationProductBlock extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return \"navigation-product-block\";\r\n }\r\n\r\n init() {\r\n const pItems = this.el.querySelectorAll(\"p.rc-meta\");\r\n\r\n for (let i = 0; i < pItems.length; i++) {\r\n if (pItems[i].offsetHeight > 45) {\r\n pItems[i].innerHTML = `${pItems[i].innerHTML.substr(0, 120)}...`;\r\n }\r\n }\r\n }\r\n}\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\n\r\nexport default class NavigationContactDropdown extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return \"navigation-contact-dropdown\";\r\n }\r\n\r\n init() {\r\n const title = this.el.querySelector(\r\n \".contact-dropdown-title > .rc-delta\"\r\n );\r\n if (title && title.offsetHeight > 90) {\r\n const limit =\r\n window.innerWidth > 768\r\n ? 220\r\n : Math.round((title.offsetWidth / 10) * 2);\r\n title.innerHTML = `${title.innerHTML.substr(0, limit)}...`;\r\n }\r\n\r\n const texts = this.el.querySelectorAll(\r\n \".contact-dropdown-title > p:not(.rc-delta)\"\r\n );\r\n if (texts) {\r\n texts.forEach((text) => {\r\n if (text && text.offsetHeight > 65) {\r\n const limit =\r\n window.innerWidth > 768\r\n ? 270\r\n : Math.round((text.offsetWidth / 8) * 2);\r\n text.innerHTML = `${text.innerHTML.substr(0, limit)}...`;\r\n }\r\n });\r\n }\r\n\r\n const phone = this.el.querySelector(\".contact-dropdown-tel > a\");\r\n if (phone && phone.offsetHeight > 70) {\r\n phone.innerHTML = `${phone.innerHTML.substr(0, 55)}...`;\r\n }\r\n\r\n const footer = this.el.querySelector(\".contact-dropdown-footer > p\");\r\n if (footer && footer.offsetHeight > 70) {\r\n const limit =\r\n window.innerWidth > 768\r\n ? 290\r\n : Math.round((footer.offsetWidth / 7) * 3);\r\n footer.innerHTML = `${footer.innerHTML.substr(0, limit)}...`;\r\n }\r\n\r\n const titleLinks = this.el.querySelectorAll(\r\n \".contact-dropdown-title a\"\r\n );\r\n if (titleLinks) {\r\n titleLinks.forEach((link) => {\r\n link.classList.add(\"rc-styled-link\");\r\n });\r\n }\r\n }\r\n}\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\n\r\nexport default class NavigationItemsList extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return \"navigation-items-list\";\r\n }\r\n\r\n init() {\r\n const list = this.el.querySelector(\"ul\");\r\n\r\n if (list.childElementCount > 3) {\r\n this.el.style.alignItems = \"flex-start\";\r\n } else {\r\n this.el.style.alignItems = \"center\";\r\n }\r\n }\r\n}\r\n","document.querySelector('[data-component=\"rc-header-bar\"]') !== null &&\r\n !(function (e) {\r\n function t(t) {\r\n for (var n, o, i = t[0], a = t[1], c = 0, s = []; c < i.length; c++)\r\n (o = i[c]),\r\n Object.prototype.hasOwnProperty.call(r, o) &&\r\n r[o] &&\r\n s.push(r[o][0]),\r\n (r[o] = 0);\r\n for (n in a)\r\n Object.prototype.hasOwnProperty.call(a, n) && (e[n] = a[n]);\r\n for (l && l(t); s.length; ) s.shift()();\r\n }\r\n var n = {},\r\n r = {\r\n 0: 0,\r\n };\r\n function o(t) {\r\n if (n[t]) return n[t].exports;\r\n var r = (n[t] = {\r\n i: t,\r\n l: !1,\r\n exports: {},\r\n });\r\n return e[t].call(r.exports, r, r.exports, o), (r.l = !0), r.exports;\r\n }\r\n (o.e = function (e) {\r\n var t = [],\r\n n = r[e];\r\n if (0 !== n)\r\n if (n) t.push(n[2]);\r\n else {\r\n var i = new Promise(function (t, o) {\r\n n = r[e] = [t, o];\r\n });\r\n t.push((n[2] = i));\r\n var a,\r\n c = document.createElement(\"script\");\r\n (c.charset = \"utf-8\"),\r\n (c.timeout = 120),\r\n o.nc && c.setAttribute(\"nonce\", o.nc),\r\n (c.src = (function (e) {\r\n return o.p + \"js/\" + ({}[e] || e) + \".js\";\r\n })(e));\r\n var l = new Error();\r\n a = function (t) {\r\n (c.onerror = c.onload = null), clearTimeout(s);\r\n var n = r[e];\r\n if (0 !== n) {\r\n if (n) {\r\n var o =\r\n t &&\r\n (\"load\" === t.type\r\n ? \"missing\"\r\n : t.type),\r\n i = t && t.target && t.target.src;\r\n (l.message =\r\n \"Loading chunk \" +\r\n e +\r\n \" failed.\\n(\" +\r\n o +\r\n \": \" +\r\n i +\r\n \")\"),\r\n (l.name = \"ChunkLoadError\"),\r\n (l.type = o),\r\n (l.request = i),\r\n n[1](l);\r\n }\r\n r[e] = void 0;\r\n }\r\n };\r\n var s = setTimeout(function () {\r\n a({\r\n type: \"timeout\",\r\n target: c,\r\n });\r\n }, 12e4);\r\n (c.onerror = c.onload = a), document.head.appendChild(c);\r\n }\r\n return Promise.all(t);\r\n }),\r\n (o.m = e),\r\n (o.c = n),\r\n (o.d = function (e, t, n) {\r\n o.o(e, t) ||\r\n Object.defineProperty(e, t, {\r\n enumerable: !0,\r\n get: n,\r\n });\r\n }),\r\n (o.r = function (e) {\r\n \"undefined\" != typeof Symbol &&\r\n Symbol.toStringTag &&\r\n Object.defineProperty(e, Symbol.toStringTag, {\r\n value: \"Module\",\r\n }),\r\n Object.defineProperty(e, \"__esModule\", {\r\n value: !0,\r\n });\r\n }),\r\n (o.t = function (e, t) {\r\n if ((1 & t && (e = o(e)), 8 & t)) return e;\r\n if (4 & t && \"object\" == typeof e && e && e.__esModule)\r\n return e;\r\n var n = Object.create(null);\r\n if (\r\n (o.r(n),\r\n Object.defineProperty(n, \"default\", {\r\n enumerable: !0,\r\n value: e,\r\n }),\r\n 2 & t && \"string\" != typeof e)\r\n )\r\n for (var r in e)\r\n o.d(\r\n n,\r\n r,\r\n function (t) {\r\n return e[t];\r\n }.bind(null, r)\r\n );\r\n return n;\r\n }),\r\n (o.n = function (e) {\r\n var t =\r\n e && e.__esModule\r\n ? function () {\r\n return e.default;\r\n }\r\n : function () {\r\n return e;\r\n };\r\n return o.d(t, \"a\", t), t;\r\n }),\r\n (o.o = function (e, t) {\r\n return Object.prototype.hasOwnProperty.call(e, t);\r\n }),\r\n (o.p = \"\"),\r\n (o.oe = function (e) {\r\n throw (console.error(e), e);\r\n });\r\n var i = (window.NewNavigationjsonFunction =\r\n window.NewNavigationjsonFunction || []),\r\n a = i.push.bind(i);\r\n (i.push = t), (i = i.slice());\r\n for (var c = 0; c < i.length; c++) t(i[c]);\r\n var l = a;\r\n o((o.s = 22));\r\n })([\r\n function (e, t, n) {\r\n \"use strict\";\r\n e.exports = function (e, t) {\r\n return (\r\n t || (t = {}),\r\n \"string\" != typeof (e = e && e.__esModule ? e.default : e)\r\n ? e\r\n : (/^['\"].*['\"]$/.test(e) && (e = e.slice(1, -1)),\r\n t.hash && (e += t.hash),\r\n /[\"'() \\t\\n]/.test(e) || t.needQuotes\r\n ? '\"'.concat(\r\n e\r\n .replace(/\"/g, '\\\\\"')\r\n .replace(/\\n/g, \"\\\\n\"),\r\n '\"'\r\n )\r\n : e)\r\n );\r\n };\r\n },\r\n function (e, t, n) {\r\n \"use strict\";\r\n var r,\r\n o = function () {\r\n return (\r\n void 0 === r &&\r\n (r = Boolean(\r\n window &&\r\n document &&\r\n document.all &&\r\n !window.atob\r\n )),\r\n r\r\n );\r\n },\r\n i = (function () {\r\n var e = {};\r\n return function (t) {\r\n if (void 0 === e[t]) {\r\n var n = document.querySelector(t);\r\n if (\r\n window.HTMLIFrameElement &&\r\n n instanceof window.HTMLIFrameElement\r\n )\r\n try {\r\n n = n.contentDocument.head;\r\n } catch (e) {\r\n n = null;\r\n }\r\n e[t] = n;\r\n }\r\n return e[t];\r\n };\r\n })(),\r\n a = [];\r\n function c(e) {\r\n for (var t = -1, n = 0; n < a.length; n++)\r\n if (a[n].identifier === e) {\r\n t = n;\r\n break;\r\n }\r\n return t;\r\n }\r\n function l(e, t) {\r\n for (var n = {}, r = [], o = 0; o < e.length; o++) {\r\n var i = e[o],\r\n l = t.base ? i[0] + t.base : i[0],\r\n s = n[l] || 0,\r\n d = \"\".concat(l, \" \").concat(s);\r\n n[l] = s + 1;\r\n var p = c(d),\r\n u = {\r\n css: i[1],\r\n media: i[2],\r\n sourceMap: i[3],\r\n };\r\n -1 !== p\r\n ? (a[p].references++, a[p].updater(u))\r\n : a.push({\r\n identifier: d,\r\n updater: _(u, t),\r\n references: 1,\r\n }),\r\n r.push(d);\r\n }\r\n return r;\r\n }\r\n function s(e) {\r\n var t = document.createElement(\"style\"),\r\n r = e.attributes || {};\r\n if (void 0 === r.nonce) {\r\n var o = n.nc;\r\n o && (r.nonce = o);\r\n }\r\n if (\r\n (Object.keys(r).forEach(function (e) {\r\n t.setAttribute(e, r[e]);\r\n }),\r\n \"function\" == typeof e.insert)\r\n )\r\n e.insert(t);\r\n else {\r\n var a = i(e.insert || \"head\");\r\n if (!a)\r\n throw new Error(\r\n \"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\"\r\n );\r\n a.appendChild(t);\r\n }\r\n return t;\r\n }\r\n var d,\r\n p =\r\n ((d = []),\r\n function (e, t) {\r\n return (d[e] = t), d.filter(Boolean).join(\"\\n\");\r\n });\r\n function u(e, t, n, r) {\r\n var o = n\r\n ? \"\"\r\n : r.media\r\n ? \"@media \".concat(r.media, \" {\").concat(r.css, \"}\")\r\n : r.css;\r\n if (e.styleSheet) e.styleSheet.cssText = p(t, o);\r\n else {\r\n var i = document.createTextNode(o),\r\n a = e.childNodes;\r\n a[t] && e.removeChild(a[t]),\r\n a.length ? e.insertBefore(i, a[t]) : e.appendChild(i);\r\n }\r\n }\r\n function m(e, t, n) {\r\n var r = n.css,\r\n o = n.media,\r\n i = n.sourceMap;\r\n if (\r\n (o\r\n ? e.setAttribute(\"media\", o)\r\n : e.removeAttribute(\"media\"),\r\n i &&\r\n \"undefined\" != typeof btoa &&\r\n (r +=\r\n \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(\r\n btoa(\r\n unescape(\r\n encodeURIComponent(JSON.stringify(i))\r\n )\r\n ),\r\n \" */\"\r\n )),\r\n e.styleSheet)\r\n )\r\n e.styleSheet.cssText = r;\r\n else {\r\n for (; e.firstChild; ) e.removeChild(e.firstChild);\r\n e.appendChild(document.createTextNode(r));\r\n }\r\n }\r\n var h = null,\r\n g = 0;\r\n function _(e, t) {\r\n var n, r, o;\r\n if (t.singleton) {\r\n var i = g++;\r\n (n = h || (h = s(t))),\r\n (r = u.bind(null, n, i, !1)),\r\n (o = u.bind(null, n, i, !0));\r\n } else\r\n (n = s(t)),\r\n (r = m.bind(null, n, t)),\r\n (o = function () {\r\n !(function (e) {\r\n if (null === e.parentNode) return !1;\r\n e.parentNode.removeChild(e);\r\n })(n);\r\n });\r\n return (\r\n r(e),\r\n function (t) {\r\n if (t) {\r\n if (\r\n t.css === e.css &&\r\n t.media === e.media &&\r\n t.sourceMap === e.sourceMap\r\n )\r\n return;\r\n r((e = t));\r\n } else o();\r\n }\r\n );\r\n }\r\n e.exports = function (e, t) {\r\n (t = t || {}).singleton ||\r\n \"boolean\" == typeof t.singleton ||\r\n (t.singleton = o());\r\n var n = l((e = e || []), t);\r\n return function (e) {\r\n if (\r\n ((e = e || []),\r\n \"[object Array]\" === Object.prototype.toString.call(e))\r\n ) {\r\n for (var r = 0; r < n.length; r++) {\r\n var o = c(n[r]);\r\n a[o].references--;\r\n }\r\n for (var i = l(e, t), s = 0; s < n.length; s++) {\r\n var d = c(n[s]);\r\n 0 === a[d].references &&\r\n (a[d].updater(), a.splice(d, 1));\r\n }\r\n n = i;\r\n }\r\n };\r\n };\r\n },\r\n function (e, t, n) {\r\n \"use strict\";\r\n e.exports = function (e) {\r\n var t = [];\r\n return (\r\n (t.toString = function () {\r\n return this.map(function (t) {\r\n var n = e(t);\r\n return t[2]\r\n ? \"@media \".concat(t[2], \" {\").concat(n, \"}\")\r\n : n;\r\n }).join(\"\");\r\n }),\r\n (t.i = function (e, n, r) {\r\n \"string\" == typeof e && (e = [[null, e, \"\"]]);\r\n var o = {};\r\n if (r)\r\n for (var i = 0; i < this.length; i++) {\r\n var a = this[i][0];\r\n null != a && (o[a] = !0);\r\n }\r\n for (var c = 0; c < e.length; c++) {\r\n var l = [].concat(e[c]);\r\n (r && o[l[0]]) ||\r\n (n &&\r\n (l[2]\r\n ? (l[2] = \"\"\r\n .concat(n, \" and \")\r\n .concat(l[2]))\r\n : (l[2] = n)),\r\n t.push(l));\r\n }\r\n }),\r\n t\r\n );\r\n };\r\n },\r\n function (e, t, n) {\r\n \"use strict\";\r\n var r = n(2),\r\n o = n.n(r)()(function (e) {\r\n return e[1];\r\n });\r\n o.push([\r\n e.i,\r\n '.rc-btn--social{min-width:2.75rem;height:2.75rem;border:0}.rc-no-stack{justify-content:space-between}.rc-no-stack.rc-three-column .rc-column{width:30%}.rc-no-stack.rc-two-column .rc-column{width:50%}@media only screen and (max-width: 960px){.rc-flex-column--sm{flex-direction:column}}.rc-btn-muted.rc-btn--two::after{background-image:none}.rc-btn.rc-btn-bg--brand4{background-color:#f6f6f6}@media only screen and (max-width: 960px){.rc-text--center--mobile{text-align:center}}@media only screen and (max-width: 960px){.rc-full-width--mobile{width:100%}}.rc-btn .rc-location2--xs.rc-iconography::after{height:24px}.rc-input__submit--micro.rc-search::after{background-image:url(https://dl.royalcanin.com/8-10-0/royal-caninsprite--brand3--xs.svg);background-position:81.82% 85.71%;width:24px}@media all and (min-width: 960px){.rc-list__item-sub-menu{display:flex}.rc-list__item-sub-menu .rc-list__item-sub-menu__container{display:flex;position:relative;flex:0 0 calc(50% - 20px)}.rc-list__item-sub-menu .rc-list__item-sub-menu__container:first-of-type:after{top:0;width:2px;content:\"\";height:100%;right:-30px;position:absolute;background-color:#d7d7d7}html[dir=rtl] .rc-list__item-sub-menu .rc-list__item-sub-menu__container:first-of-type:after{display:none}.rc-list__item-sub-menu.rc-list__item-sub-menu--three-column{width:1360px}.rc-list__item-sub-menu.rc-list__item-sub-menu--three-column .rc-list__item-sub-menu__container{flex:0 0 calc(33.333% - 20px)}.rc-list__item-sub-menu.rc-list__item-sub-menu--two-column{width:1140px}.rc-list__item-sub-menu.rc-list__item-sub-menu--two-column .rc-list__item-sub-menu__container{flex:0 0 calc(50% - 20px)}}.rc-flex-wrap--wrap{flex-wrap:wrap}.rc-mega-menu-dropdown__sub-section-header{width:100%;border:none;appearance:none;background-color:transparent}.rc-mega-menu-dropdown__column-inner{display:flex;padding:10px 0;flex-wrap:wrap;align-items:center}.rc-mega-menu-dropdown__column-title{margin-bottom:0}html[dir=rtl] .rc-btn--icon-label{float:left}html[dir=rtl] .rc-btn--icon-label::after{right:inherit}html[dir=rtl] .rc-mega-menu-dropdown__column:last-of-type{padding:0 30px;display:flex;flex-wrap:wrap;align-items:center;box-sizing:border-box;flex:0 0 calc(50% - 10px);justify-content:space-between;border-right:2px solid #f6f6f6}html[dir=rtl] .rc-mega-menu-dropdown__column{border-right:none}html[dir=rtl] .rc-column.rc-text--right.rc-lg-up{text-align:left}html[dir=rtl] .rc-list:not(.rc-icon-list--xs):not(.rc-icon-list--sm) .rc-list__item.rc-icon::after{right:10px}@media all and (min-width: 960px){html[dir=rtl] .rc-list:not(.rc-icon-list--xs):not(.rc-icon-list--sm) .rc-list__item.rc-icon::after{right:0}}.rc-list__item-sub-menu--fixed{position:fixed !important;left:0 !important;right:0 !important;width:100% !important;overflow:scroll !important;transform:none !important}',\r\n \"\",\r\n ]),\r\n (t.a = o);\r\n },\r\n function (e, t, n) {\r\n \"use strict\";\r\n var r = n(2),\r\n o = n.n(r)()(function (e) {\r\n return e[1];\r\n });\r\n o.push([\r\n e.i,\r\n \".rc-contact-dropdown-column--first{padding:0;box-sizing:border-box}@media all and (min-width: 960px){.rc-contact-dropdown-column--first{padding:1rem}}.rc-contact-dropdown{padding:24px 16px;align-items:stretch}@media all and (min-width: 960px){.rc-contact-dropdown{padding:0}}.rc-contact-dropdown-column{display:flex;align-items:center;margin-bottom:10px;padding:20px 0}.rc-contact-dropdown-column:last-of-type{margin-bottom:0}@media all and (min-width: 960px){.rc-contact-dropdown-column{margin-bottom:0;padding:1rem}}.rc-contact-dropdown-column__link{flex:0 0 100%;text-decoration:none}.rc-contact-dropdown-column__container{display:flex;justify-content:center;align-items:center}.rc-contact-dropdown-column__inner{padding-top:0 !important;padding-bottom:0 !important}.rc-contact-dropdown-column__icon{top:50%;right:10px;text-align:right;position:absolute;transform:translateY(-50%)}html[dir=rtl] .rc-contact-dropdown-column__icon{left:10px;right:auto;text-align:left}.rc-contact-dropdown__title{margin:0;font-size:22px;color:#e2001a;font-weight:300}.rc-contact-dropdown__sub-title{margin:0;font-size:16px;color:#666;font-weight:600}.rc-contact-dropdown__opening-hours{font-size:14px;color:#666;font-weight:300;margin:5px 0 0 0}\",\r\n \"\",\r\n ]),\r\n (t.a = o);\r\n },\r\n function (e, t, n) {\r\n \"use strict\";\r\n var r = n(2),\r\n o = n.n(r)()(function (e) {\r\n return e[1];\r\n });\r\n o.push([\r\n e.i,\r\n 'html[dir=rtl].firefox .btn--icon-label:after,html[dir=rtl].firefox .rc-btn--icon-label:after,html[dir=rtl].firefox .rc-btn--icon-tab:after{left:0;right:.5rem}.rc-content--fixed-header{padding-top:4.1rem}.rc-language-banner .rc-column{padding:0}.rc-language-banner .rc-column button{font-size:14px}@media all and (min-width: 960px){.rc-language-banner .rc-column button:hover{color:#e2001a}}#search_top_menu{width:80%;margin:0 auto;display:block}.rc-header__nav--primary__interaction-menu,nav>div>div:last-of-type{display:flex}.rc-header__nav--primary__interaction-menu .rc-cart--xs:hover::after{background-image:url(\"https://dl.royalcanin.com/8-10-0/royal-canin.sprite--brand1--xs.svg\") !important}.rc-header__nav--new.rc-header__nav--secondary{box-shadow:none}.rc-header__nav--secondary .rc-list__item{position:relative}.rc-header__nav--secondary .rc-list__item.rc-submenu--open__parent{top:0;left:0;width:100%;height:100%;position:absolute}.rc-header__nav--secondary .rc-list__item.rc-submenu--open__parent~a{color:#e2001a}.rc-header__nav--secondary .rc-list__item.rc-submenu--open__parent .rc-mega-menu-dropdown__column-inner{display:block}@media all and (min-width: 960px){.rc-header__nav--secondary .rc-list__item:hover>.rc-header__list-item{color:#e2001a}.rc-header__nav--secondary .rc-list__item:hover:after{background-image:url(\"https://dl.royalcanin.com/8-10-0/royal-canin.sprite--brand1--xs.svg\") !important}}@media all and (max-width: 961px){.rc-submenu--open__parent-element .rc-header__list-item__link{color:#e2001a}.rc-submenu--open__parent-element:after{transform:rotate(180deg);background-image:url(\"https://dl.royalcanin.com/8-10-0/royal-canin.sprite--brand1--xs.svg\") !important}}.rc-header--new{top:0;left:0;width:100%;z-index:700;position:fixed;background-color:#fff;box-shadow:0 2px 4px #f1f1f1}.rc-icon-v-align--center{top:50%;transform:translateY(-50%)}.rc-icon-v-align--top{top:0;transform:translateY(0)}.rc-header__nav--new.rc-header__nav--primary--new .rc-column{padding:0}.rc-header__nav--new.rc-header__nav--primary--new{padding:10px 0}.rc-header__nav--new.rc-header__nav--primary--new>.rc-layout-container{align-items:center}.rc-header__nav--new.rc-header__nav--primary--new .rc-column:first-of-type{left:0;top:13px;width:auto;z-index:100;position:absolute}.rc-header__nav--new.rc-header__nav--secondary{left:0;top:7rem;width:100%;display:block;max-height:100vh;overflow-x:hidden;overflow-y:scroll;position:absolute;background-color:gray;transform:translateY(100%);height:calc(100vh - 6.4rem);transition:.25s cubic-bezier(0.81, 0.23, 0.23, 0.76)}@media all and (min-width: 960px){.rc-header__nav--new.rc-header__nav--secondary{overflow-x:visible}}.rc-header__nav--new.rc-header__nav--secondary.rc-secondary-nav--open{transform:translateY(0)}.rc-header__nav--new{position:relative}.rc-btn--search-input.rc-btn--search-input{display:block;width:calc(100% - 48px);font-size:14px;cursor:pointer;color:#666;font-weight:300;overflow:hidden;position:relative;border-radius:999px;text-decoration:none;margin:3px auto 0 auto;transition:all .2s ease;background-color:#f6f6f6;border:1px solid #d7d7d7;padding:.2rem 2rem .2rem 3rem;font-family:RC TYPE,Roboto,Avenir,Helvetica,Arial,sans-serif}@media all and (min-width: 960px){.rc-btn--search-input.rc-btn--search-input{width:auto;margin:0 0 0 auto}}@media all and (min-width: 960px){html[dir=rtl] .rc-btn--search-input.rc-btn--search-input{margin:0 auto 0 0}}.rc-btn--search-input.rc-btn.rc-btn--icon:after{left:25px}.rc-header__nav--new.rc-header__nav--secondary>ul{background-color:#f6f6f6}.rc-header__nav--new.rc-header__nav--secondary ul li{width:100%;display:block;margin-left:0}@media all and (min-width: 960px){html[dir=rtl] .rc-header__nav--new.rc-header__nav--secondary ul li{margin-left:2rem}}.rc-list__item-sub-menu{margin:0;padding:0;overflow:hidden;background-color:#fff}.rc-list__item-sub-menu li a{border-top:0;padding:12px 16px;text-transform:capitalize}html[dir=rtl] .rc-header__list-item{padding:24px 40px 24px 16px}.rc-header__list-item{width:100%;display:block;font-weight:500;padding:24px 16px;text-decoration:none;text-transform:uppercase;border-top:1px solid #d7d7d7}.rc-header__button-list{margin:0;padding:10px 0 125px 0}@media all and (min-width: 960px){.rc-header__button-list{padding:10px 0}}.rc-header__button-list li{margin:0;padding:0;width:100%;display:block;list-style-type:none}html[dir=rtl] .rc-header__button-list{margin:0;padding:10px 10px 125px 0}@media all and (min-width: 960px){html[dir=rtl] .rc-header__button-list{padding:10px 10px 0 0}}.rc-header__nav--secondary .rc-list__item.rc-icon:after{top:21px;left:auto;right:20px;margin-top:0;pointer-events:none}.rc-mega-menu-dropdown__column-inner{width:100%}@media all and (min-width: 960px){.rc-mega-menu-dropdown__column-inner{flex-direction:column}}.rc-mega-menu-dropdown__sub-section__slide-tray{top:0;z-index:100;height:100%;position:absolute;background:#fff;transform:translateX(100%)}.rc-mega-menu-dropdown__sub-section__slide-tray.rc-mega-menu-dropdown__sub-section__slide-tray--slide-in{transform:translateX(0)}@media all and (min-width: 960px){.rc-mega-menu-dropdown__sub-section__slide-tray{position:relative;transform:translateX(0)}}.rc-mega-menu-dropdown__sub-section__slide-tray-control{border-radius:0;text-align:left;margin-bottom:10px;padding:10px 20px 10px 50px !important}.rc-mega-menu-dropdown__sub-section__slide-tray-control:before{top:12px;left:14px;content:\"\";width:24px;height:24px;position:absolute;background-position:0 71.43%;background-image:url(https://dl.royalcanin.com/8-10-0/royal-canin.sprite--iconography--xs.svg)}.rc-mega-menu-dropdown__column-inner img{width:80px;flex:0 0 80px;margin-right:10px}.rc-mega-menu-dropdown__column-inner h3{text-align:left}.rc-account-dropdown-container{display:inline-block}.rc-my-account-dropdown{right:0;top:35px;z-index:500;width:300px;display:none;position:absolute}html[dir=rtl] .rc-my-account-dropdown{left:0;right:auto}.rc-my-account-dropdown.rc-open-account-dropdown{display:block}.rc-my-account-dropdown_primary-menu,.rc-my-account-dropdown_sub-menu{padding:15px 5px}.rc-my-account-dropdown_primary-menu a{margin:5px auto 7px auto}.rc-my-account-dropdown_primary-menu a.rc-btn--two{width:80%}.rc-my-account-dropdown_sub-menu a{color:#666;border-bottom:1px solid;margin:15px auto 0 auto}.rc-header__nav--new.rc-header__nav--primary--new .rc-btn--icon{height:2.1rem}.rc-logo{width:120px;height:auto;position:relative}.rc-logo path{transition:.25s cubic-bezier(0.81, 0.23, 0.23, 0.76)}.rc-logo .rc-header__logo-crown{position:relative;transform-box:fill-box;transform-origin:top}.rc-logo.rc-logo--scrolled .rc-header__logo-text{opacity:0}.rc-logo.rc-logo--scrolled .rc-header__logo-crown{transform:translateY(18px)}.rc-mega-menu-dropdown__link{display:block;padding:10px 20px;text-decoration:none}.rc-mega-menu-dropdown__link__title{display:block;font-weight:400}.rc-open-account-dropdown-trigger::after{background-image:url(\"data:image/svg+xml;base64,PHN2ZyBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iNCAwIDI0IDMyIj48dGl0bGU+dXNlci0teHM8L3RpdGxlPjxwYXRoIGQ9Ik0xOS40MywxNi42MmE1LDUsMCwxLDAtNi44NiwwQTYuNzQsNi43NCwwLDAsMCw4LDIzYTEsMSwwLDAsMCwxLDFIMjNhMSwxLDAsMCwwLDEtMUE2Ljc0LDYuNzQsMCwwLDAsMTkuNDMsMTYuNjJaTTEzLDEzYTMsMywwLDEsMSwzLDNBMywzLDAsMCwxLDEzLDEzWm0tMi45LDljLjUyLTIuMzcsMi44NC00LDUuOS00czUuNCwxLjYsNS45LDRaIiBzdHlsZT0iZmlsbDojRTIwMDFBIi8+PC9zdmc+\") !important}@media all and (min-width: 960px){button#search_top_menu{margin:0;width:auto;display:inline-block}.rc-logo{height:100%}.rc-header__nav--new.rc-header__nav--primary--new{padding:16px 0 6px 0}.rc-header__nav--new.rc-header__nav--primary--new .rc-column:first-of-type{top:auto;left:auto;width:auto;position:relative}.rc-header__nav--secondary .rc-list__item.rc-icon::after{top:50%;right:4px;background-size:220px;width:19px !important;transform:translateY(-50%)}.rc-header__nav--secondary .rc-list__item.rc-icon{padding-right:26px}.rc-content--fixed-header{padding-top:8.9rem}.rc-header__nav--new.rc-header__nav--secondary{top:auto;left:auto;width:auto;height:auto;display:block;overflow-y:visible;min-height:inherit;position:relative;transform:translateX(0);background-color:transparent}.rc-header__nav--new.rc-header__nav--secondary ul{background-color:#fff}.rc-header__nav--new.rc-header__nav--secondary ul li{width:auto;display:inline-block}.rc-header__nav--new.rc-header__nav--secondary ul li a:not(.rc-btn){border-top:0;padding:8px 0}.rc-list__item-sub-menu{left:50%;opacity:0;display:flex;width:100%;flex-wrap:wrap;padding:40px 64px;position:absolute;pointer-events:none;transform:translateX(-50%);transition:opacity .25s ease-in-out}.rc-list__item-sub-menu .rc-header__list-item{width:auto;display:table;position:relative}.rc-list__item-sub-menu .rc-header__list-item::after{left:0;bottom:6px;width:100%;height:2px;content:\"\";display:none;position:absolute;background-color:#e2001a}.rc-list__item-sub-menu .rc-header__list-item:hover{color:#e2001a}.rc-list__item-sub-menu .rc-header__list-item:hover::after{display:block}.rc-list__item-sub-menu.rc-list__item-sub-menu--single-column{width:350px}.rc-list__item-sub-menu.rc-list__item-sub-menu--single-column li{flex:0 0 100%}.rc-list__item-sub-menu.rc-list__item-sub-menu--double-column{width:700px}.rc-list__item-sub-menu.rc-list__item-sub-menu--double-column li{flex:0 0 50%}.rc-mega-menu-dropdown{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;-ms-overflow-style:none;scrollbar-width:none}.rc-mega-menu-dropdown::-webkit-scrollbar{display:none}.rc-mega-menu-dropdown__column{padding:0 30px;display:flex;flex-wrap:wrap;align-items:center;box-sizing:border-box;flex:0 0 calc(40% - 10px);justify-content:space-between;border-right:2px solid #f6f6f6}.rc-mega-menu-dropdown__column:last-of-type{border-right:none}.rc-mega-menu-dropdown__column-inner a{display:block;text-decoration:none}.rc-mega-menu-dropdown__column-inner a span{display:block}.rc-mega-menu-dropdown__link__title{font-weight:600;transition:color .2s ease-in}.rc-mega-menu-dropdown__link:hover .rc-mega-menu-dropdown__link__title{color:#e2001a}.rc-list__item-sub-menu.rc-list__item-sub-menu--full{width:1200px}.rc-header__nav--new.rc-header__nav--secondary .rc-open-sub-menu .rc-list__item-sub-menu{opacity:1;pointer-events:unset}.rc-header__nav--new.rc-header__nav--secondary .rc-open-sub-menu .rc-header__list-item__link{color:#e2001a}.rc-header__nav--new.rc-header__nav--secondary .rc-open-sub-menu::before{left:0;bottom:0;width:100%;height:2px;content:\"\";position:absolute;background-color:#e2001a}.rc-header__nav--new.rc-header__nav--secondary .rc-open-sub-menu::after{transform:translateY(-50%) rotate(180deg);background-image:url(\"https://dl.royalcanin.com/8-10-0/royal-canin.sprite--brand1--xs.svg\") !important}.rc-list__item-sub-menu li{display:block;width:100%}}@media all and (max-width: 961px){.rc-list__item-dropdown{margin-right:0 !important}}',\r\n \"\",\r\n ]),\r\n (t.a = o);\r\n },\r\n function (e, t, n) {\r\n \"use strict\";\r\n var r = n(2),\r\n o = n.n(r),\r\n i = n(0),\r\n a = n.n(i),\r\n c = n(8),\r\n l = n.n(c),\r\n s = n(9),\r\n d = n.n(s),\r\n p = n(10),\r\n u = n.n(p),\r\n m = n(11),\r\n h = n.n(m),\r\n g = n(12),\r\n _ = n.n(g),\r\n w = n(13),\r\n f = n.n(w),\r\n x = n(14),\r\n b = n.n(x),\r\n C = n(15),\r\n v = n.n(C),\r\n L = n(16),\r\n y = n.n(L),\r\n k = n(17),\r\n S = n.n(k),\r\n E = n(18),\r\n M = n.n(E),\r\n I = n(19),\r\n z = n.n(I),\r\n A = n(20),\r\n j = n.n(A),\r\n T = n(21),\r\n D = n.n(T),\r\n Z = o()(function (e) {\r\n return e[1];\r\n }),\r\n N = a()(l.a),\r\n B = a()(d.a),\r\n F = a()(u.a),\r\n q = a()(h.a),\r\n O = a()(_.a),\r\n P = a()(f.a),\r\n Y = a()(b.a),\r\n R = a()(v.a),\r\n H = a()(y.a),\r\n W = a()(S.a),\r\n G = a()(M.a),\r\n V = a()(z.a),\r\n U = a()(j.a),\r\n X = a()(D.a);\r\n Z.push([\r\n e.i,\r\n \".icon-example{display:inline-block;position:relative;min-width:13%;text-align:left}.icon-title{border-top:1px gray solid}.rc-btn--action.rc-btn--social:active{background-color:#d0d0d0}.rc-icon.rc-email--xs::after{background-image:url(\" +\r\n N +\r\n \");background-position:center}.rc-icon.rc-facebook--xs::after{background-image:url(\" +\r\n B +\r\n \");background-position:center}.rc-icon.rc-twitter--xs::after{background-image:url(\" +\r\n F +\r\n \");background-position:center}.rc-icon.rc-linkedin--xs::after{background-image:url(\" +\r\n q +\r\n \");background-position:center}.rc-icon.rc-whatsapp--xs::after{background-image:url(\" +\r\n O +\r\n \");background-position:center}.rc-icon.rc-fb-messenger--xs::after{background-image:url(\" +\r\n P +\r\n \");background-position:center}.rc-icon.rc-pinterest--xs::after{background-image:url(\" +\r\n Y +\r\n \");background-position:center}.rc-icon.rc-ok--xs::after{background-image:url(\" +\r\n R +\r\n \");background-position:center}.rc-icon.rc-vk--xs::after{background-image:url(\" +\r\n H +\r\n \");background-position:center}.rc-icon.rc-line--xs::after{background-image:url(\" +\r\n W +\r\n \");background-position:center}.rc-icon.rc-wechat--xs::after{background-image:url(\" +\r\n G +\r\n \");background-position:center}.rc-icon.rc-kakaotalk--xs::after{background-image:url(\" +\r\n V +\r\n \");background-position:center}.rc-icon.rc-kakaostory--xs::after{background-image:url(\" +\r\n U +\r\n \");background-position:center}.rc-icon.rc-band--xs::after{background-image:url(\" +\r\n X +\r\n \");background-position:center}\",\r\n \"\",\r\n ]),\r\n (t.a = Z);\r\n },\r\n function (e, t, n) {\r\n \"use strict\";\r\n var r = n(2),\r\n o = n.n(r)()(function (e) {\r\n return e[1];\r\n });\r\n o.push([\r\n e.i,\r\n \".rc-search-shade.rc-search-shade{z-index:700}.rc-search-overlay{margin: 0 auto;top:16px;width:90%;z-index:800;position:relative}.rc-header__search-bar{height:100px;overflow:hidden;border-radius:50px}.search-bar-new.rc-header__search-bar:focus-within{outline:none;box-shadow:0 0 5px 4px #5ca9ad}.rc-search--close{right:30px;z-index:150}html[dir=rtl] .rc-search--close{left:30px;right:auto}.rc-header__input.rc-header__input{z-index:100;outline:none;padding:0 5rem;position:relative;border-radius:50px;box-sizing:border-box}.rc-search--icon{left:30px}\",\r\n \"\",\r\n ]),\r\n (t.a = o);\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Email%3c/title%3e %3cdefs%3e %3cpath d='M13,11 L3,11 C2.449,11 2,10.552 2,10 L2,3.302 L7.36,7.769 C7.545,7.923 7.772,8 8,8 C8.228,8 8.455,7.923 8.64,7.769 L14,3.302 L14,10 C14,10.552 13.551,11 13,11 L13,11 Z M12.438,2 L8,5.698 L3.562,2 L12.438,2 Z M13,0 L3,0 C1.346,0 0,1.346 0,3 L0,10 C0,11.654 1.346,13 3,13 L13,13 C14.654,13 16,11.654 16,10 L16,3 C16,1.346 14.654,0 13,0 L13,0 Z' id='path-1'%3e%3c/path%3e %3crect id='path-3' x='0' y='0' width='16' height='13'%3e%3c/rect%3e %3c/defs%3e %3cg id='Icons/Social-Share/Email' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cg id='Icons/Email/16' transform='translate(4.000000, 6.000000)'%3e %3cmask id='mask-2' fill='white'%3e %3cuse xlink:href='%23path-1'%3e%3c/use%3e %3c/mask%3e %3cuse id='Page-1' fill='%23767676' xlink:href='%23path-1'%3e%3c/use%3e %3cg id='Group' mask='url(%23mask-2)'%3e %3cg id='Visual-Styles/Colour/Iconography'%3e %3cmask id='mask-4' fill='white'%3e %3cuse xlink:href='%23path-3'%3e%3c/use%3e %3c/mask%3e %3cuse id='Rectangle' fill='%23E2001A' xlink:href='%23path-3'%3e%3c/use%3e %3c/g%3e %3c/g%3e %3c/g%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Facebook%3c/title%3e %3cg id='Icons/Social-Share/Facebook' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cpath d='M12.8417242,20 L12.8417242,12.7016912 L15.4952663,12.7016912 L15.8925366,9.85735974 L12.8417242,9.85735974 L12.8417242,8.0413798 C12.8417242,7.21787946 13.0893871,6.65671009 14.3685454,6.65671009 L16,6.65600395 L16,4.1120644 C15.7177652,4.07746355 14.7493711,4 13.6227267,4 C11.2705408,4 9.66027297,5.32549518 9.66027297,7.75977121 L9.66027297,9.85735974 L7,9.85735974 L7,12.7016912 L9.66027297,12.7016912 L9.66027297,20 L12.8417242,20 Z' id='Fill-1' fill='%233B5998'%3e%3c/path%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Twitter%3c/title%3e %3cg id='Icons/Social-Share/Twitter' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cpath d='M18.0556104,7.24895954 C18.7785669,6.80464712 19.3337845,6.10095509 19.5951625,5.26258025 C18.918651,5.67405414 18.1692883,5.97280159 17.3717327,6.13385764 C16.7330514,5.43605477 15.823004,5 14.8160089,5 C12.8821737,5 11.3144675,6.60761592 11.3144675,8.59034648 C11.3144675,8.87181049 11.3454308,9.14578501 11.4051102,9.4085573 C8.49511833,9.25883151 5.91511077,7.82942706 4.18815563,5.65721879 C3.88670007,6.18750031 3.71409196,6.80426305 3.71409196,7.46224999 C3.71409196,8.70787387 4.33223502,9.80684456 5.27174756,10.4507487 C4.69780216,10.432121 4.15787898,10.2705528 3.68581294,10.0016353 C3.68556324,10.0166143 3.68550081,10.0316573 3.68550081,10.0467643 C3.68550081,11.7863745 4.89244669,13.2375433 6.49423754,13.5674009 C6.20039797,13.6494012 5.89107673,13.69325 5.57176732,13.69325 C5.34609703,13.69325 5.1267942,13.6707815 4.91298487,13.6289172 C5.35858225,15.055313 6.65161369,16.0934076 8.18379946,16.1224054 C6.98546838,17.085349 5.475756,17.6592872 3.83526098,17.6592872 C3.55265811,17.6592872 3.27392565,17.6423238 3,17.6091652 C4.54960264,18.6278639 6.3900484,19.2222222 8.36739456,19.2222222 C14.8078311,19.2222222 18.3296609,13.7513095 18.3296609,9.00668533 C18.3296609,8.85100635 18.3262275,8.69615954 18.3195479,8.5422089 C19.0036129,8.03599616 19.5972225,7.40361432 20.0666667,6.68359904 C19.4387227,6.96915986 18.7639592,7.16222228 18.0556104,7.24895954 Z' id='Fill-1' fill='%231DA1F2'%3e%3c/path%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/LinkedIn%3c/title%3e %3cg id='Icons/Social-Share/LinkedIn' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cpath d='M7.93677835,18.9999997 L7.93677835,9.74124292 L5.08789164,9.74124292 L5.08789164,18.9999997 L7.93677835,18.9999997 Z M7.93677835,6.45942071 C7.91980947,5.63085766 7.37006427,5 6.47698984,5 C5.58368296,5 5,5.63085766 5,6.45942071 C5,7.26998782 5.56671408,7.91909136 6.44281963,7.91909136 L6.45978851,7.91909136 C7.37006427,7.91909136 7.93677835,7.26998782 7.93677835,6.45942071 Z M12.5845774,19 L12.5845774,13.7248079 C12.5845774,13.4424878 12.6048917,13.1601677 12.6875403,12.9589099 C12.9135021,12.3945493 13.4277599,11.8103424 14.2912568,11.8103424 C15.4224571,11.8103424 16.1318861,12.4552061 16.1318861,13.7248078 L16.1318861,19 L19,19 L19,13.5836478 C19,10.6821803 17.4580612,9.33207548 15.401308,9.33207548 C13.7149429,9.33207548 12.9747232,10.2791055 12.5637065,10.9236898 L12.5842991,9.68536969 L9.72114606,9.68536969 C9.76233122,10.5717428 9.72114606,19 9.72114606,19 L12.5845774,19 Z' id='Logo' fill='%230068A8' fill-rule='nonzero'%3e%3c/path%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Whatsapp%3c/title%3e %3cdefs%3e %3cpolygon id='path-1' points='0 0 19.6020003 0 19.6020003 19.6020003 0 19.6020003'%3e%3c/polygon%3e %3c/defs%3e %3cg id='Icons/Social-Share/Whatsapp' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cg id='Whatsapp-icon' transform='translate(2.000000, 2.000000)'%3e %3cmask id='mask-2' fill='white'%3e %3cuse xlink:href='%23path-1'%3e%3c/use%3e %3c/mask%3e %3cg id='Clip-2'%3e%3c/g%3e %3cpath d='M14.2916642,11.7465758 C14.0477987,11.6251564 12.8488748,11.0380395 12.6253197,10.957 C12.4017646,10.8760072 12.2391875,10.835534 12.0766105,11.0784195 C11.9140334,11.3213981 11.4467063,11.8680884 11.3043929,12.0301208 C11.1621731,12.1920134 11.0199065,12.2123664 10.7760877,12.0908538 C10.5321753,11.9693412 9.74638628,11.7130888 8.81491433,10.8861604 C8.08991618,10.2426419 7.6005003,9.44789636 7.45823369,9.20487114 C7.31601387,8.96193907 7.44311786,8.83059927 7.56521444,8.7095524 C7.67490949,8.60080118 7.80908001,8.42605403 7.93098939,8.28437471 C8.05294558,8.14264881 8.09356644,8.0413495 8.17485496,7.87950346 C8.25614349,7.71747112 8.21552262,7.57574523 8.15454453,7.45427919 C8.09356644,7.33281316 7.6058353,6.13813324 7.40263739,5.65212938 C7.20468089,5.17898006 7.0036357,5.24306643 6.85392816,5.23552138 C6.71184874,5.22848865 6.5490845,5.22699827 6.38655425,5.22699827 C6.22397721,5.22699827 5.95975441,5.28773128 5.73624607,5.53066335 C5.51269093,5.77368857 4.88269318,6.36085202 4.88269318,7.55543879 C4.88269318,8.75007213 5.7565565,9.9040926 5.87851268,10.0660784 C6.00042207,10.2281107 7.59811359,12.6795076 10.044491,13.7308315 C10.6263334,13.9808895 11.0806038,14.1302536 11.434726,14.2420322 C12.0189551,14.4268394 12.5505829,14.4007577 12.9707374,14.3382549 C13.4392813,14.2685796 14.4135736,13.751138 14.6168183,13.1842344 C14.8200162,12.6172377 14.8200162,12.1313269 14.7590381,12.0301208 C14.6981068,11.928868 14.5355298,11.8680884 14.2916642,11.7465758 M9.84199506,17.7930972 L9.83871918,17.7930972 C8.38310708,17.7925383 6.95538672,17.4033627 5.70985187,16.6677666 L5.41366588,16.4927866 L2.3433745,17.294332 L3.16285828,14.315154 L2.97000278,14.0097191 C2.15795992,12.7243122 1.72910095,11.2387286 1.72970868,9.71323071 C1.73148766,5.26192907 5.37061151,1.64049007 9.84522413,1.64049007 C12.0119821,1.64123526 14.0487814,2.48213604 15.5803938,4.00814623 C17.1119595,5.53410986 17.954936,7.56256467 17.954141,9.71970455 C17.9523153,14.1713788 14.3131914,17.7930972 9.84199506,17.7930972 M16.7460441,2.84858341 C14.9033639,1.01257402 12.4528214,0.00102463679 9.84190146,0 C4.46230469,0 0.0839560221,4.35708163 0.0818033035,9.71257867 C0.0811013301,11.4245604 0.530504719,13.0955567 1.38461919,14.5686584 L0,19.6020003 L5.17391855,18.2512496 C6.59948619,19.0250832 8.20452504,19.4329818 9.83801721,19.4335407 L9.84199506,19.4335407 L9.84204185,19.4335407 C15.221077,19.4335407 19.5998469,15.0759933 19.6020003,9.72035659 C19.6029824,7.12499819 18.5887244,4.68454624 16.7460441,2.84858341' id='Fill-1' fill='%2325D366' mask='url(%23mask-2)'%3e%3c/path%3e %3c/g%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Messenger%3c/title%3e %3cg id='Icons/Social-Share/Messenger' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cpath d='M12.795,13.97525 L10.75775,11.8025 L6.782625,13.97525 L11.15525,9.33325 L13.24225,11.506125 L17.16775,9.33325 L12.795,13.97525 Z M12,4 C7.58175,4 4,7.316375 4,11.407375 C4,13.7385 5.163375,15.81775 6.981375,17.175625 L6.981375,20 L9.70525,18.505 C10.43225,18.706125 11.202375,18.81475 12,18.81475 C16.41825,18.81475 20,15.498375 20,11.407375 C20,7.316375 16.41825,4 12,4 Z' id='Facebook_Messenger' fill='%23007FFF'%3e%3c/path%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Pintrest%3c/title%3e %3cg id='Icons/Social-Share/Pintrest' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cpath d='M17.7882938,11.6136923 C17.1837087,14.3872907 15.3208562,16.2870657 12.7949381,16.2870657 C11.753804,16.2870657 10.7738385,15.7165442 10.4384764,15.0698789 C10.4384764,15.0698789 9.87969162,17.3180053 9.76105701,17.7530067 C9.34286874,19.2874506 8.11513492,20.8234333 8.01942585,20.9481819 C7.95267803,21.0358932 7.80528505,21.0089908 7.78966322,20.8921485 C7.76318726,20.697942 7.45075066,18.7611828 7.81872591,17.1816893 C8.00344898,16.3880956 9.05990059,11.8618628 9.05990059,11.8618628 C9.05990059,11.8618628 8.90738487,11.5502303 8.81705214,11.0451341 C8.77820045,10.8331518 8.7502536,10.5876344 8.7502536,10.314684 C8.7502536,8.8676861 9.58059444,7.78851326 10.6127511,7.78851326 C11.4885372,7.78851326 11.9124062,8.45539517 11.9124062,9.25450732 C11.9124062,9.72097445 11.7591804,10.3100146 11.5706026,10.943096 C11.3989146,11.5177564 11.1996855,12.1290825 11.0606107,12.7188655 C10.8183201,13.7551643 11.5744573,14.5997505 12.5845506,14.5997505 C14.0010144,14.5997505 15.0594948,13.1680875 15.4631771,11.2099974 C15.5785149,10.6453127 15.640495,10.0373825 15.640495,9.40700721 C15.640495,7.26813524 14.2179448,5.6657721 11.627815,5.6657721 C8.70359099,5.6657721 6.87882938,7.87516334 6.87882938,10.3428599 C6.87882938,10.6825621 6.91910124,10.9811945 6.99193548,11.2485203 C7.10118685,11.6503581 7.28190302,11.9794479 7.51648407,12.2577576 C7.6953236,12.4711725 7.71850274,12.5559654 7.65469669,12.800793 C7.60686752,12.9832198 7.50233313,13.4142416 7.45759789,13.5857377 C7.39374112,13.8349694 7.1970988,13.9214072 6.97428484,13.8313081 C6.03966322,13.4432665 5.4503449,12.6031375 5.17899168,11.5634427 C5.05924123,11.1070573 5,10.6125204 5,10.0997303 C5,7.32671558 7.31101643,4.00100818 11.8920674,4 C15.5748631,4 18,6.69692393 18,9.59325447 C17.9998478,10.3038063 17.9268107,10.9813006 17.7882938,11.6136923 Z' id='Path' fill='%23C51E23'%3e%3c/path%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/OdnoKlassniki%3c/title%3e %3cg id='Icons/Social-Share/OdnoKlassniki' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cpath d='M8.1761695,13.1823975 C8.85457047,13.5929293 9.57339671,13.8914133 10.3544871,14.0322866 C11.8915765,14.3084541 13.3357341,14.0541383 14.6813843,13.2623651 C14.9559973,13.1005701 15.2333982,12.9736446 15.5609823,12.9755043 C16.19617,12.9792237 16.7523659,13.3860361 16.9368352,13.990908 C17.1222338,14.6004292 16.8912987,15.2601626 16.3518305,15.6074641 C15.5112638,16.1486408 14.6009984,16.5298821 13.6317214,16.7688553 C13.5899022,16.7786188 13.5490123,16.790707 13.4904653,16.8060496 C13.5299613,16.848823 13.5606287,16.8822979 13.5931548,16.9148429 L16.177119,19.5007748 L16.177119,19.5007748 C16.6803439,20.005687 16.7862859,20.6984304 16.4521967,21.2758715 C15.9712754,22.1076285 14.8653889,22.2457122 14.1725836,21.5566883 C13.3138952,20.7021498 12.4598534,19.8438919 11.6044177,18.9879587 C11.5737503,18.9572734 11.5449414,18.9242635 11.4766367,18.849875 C11.4482925,18.9005522 11.4329588,18.9498346 11.4013621,18.9814497 C10.5440677,19.8424972 9.68677331,20.7021498 8.82576167,21.5594778 C8.2351811,22.1490071 7.33327953,22.1452877 6.76174995,21.5576181 C6.23900947,21.0201609 6.22414041,20.1665523 6.72968853,19.6025941 C6.79799329,19.525416 6.8723386,19.4528871 6.94482528,19.3798934 C7.76727029,18.5565051 8.58925064,17.7345117 9.41169565,16.9106585 C9.4400398,16.8818329 9.46931327,16.8497529 9.5134558,16.803725 C8.75931554,16.628447 8.05628769,16.375061 7.3881092,16.0310139 C7.14881023,15.907343 6.91322852,15.7748384 6.68461669,15.6325703 C6.01039764,15.2113451 5.80083679,14.3423939 6.20601874,13.6738268 C6.62281715,12.9871275 7.48661674,12.7639619 8.1761695,13.1823975 Z M11.5026575,3 C14.1999984,3 16.4006196,5.20283088 16.400155,7.9017404 C16.3996903,10.6039044 14.2199787,12.8034808 11.5045162,12.8044133 C8.77371995,12.8072002 6.60516013,10.6043693 6.60097081,7.91103896 C6.59633163,5.20841002 8.78161914,3.00743885 11.5026575,3 Z M11.5147387,5.8760408 C10.3893365,5.87325767 9.47256588,6.77614868 9.47070438,7.88825747 C9.46884861,9.00222598 10.3716795,9.92975819 11.461303,9.93068877 C12.6159786,9.9316179 13.526244,9.03988518 13.527174,7.90638968 C13.5281026,6.7896316 12.6252718,5.87883681 11.5147387,5.8760408 Z' id='Combined-Shape' fill='%23EB770C'%3e%3c/path%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Vkontakte%3c/title%3e %3cg id='Icons/Social-Share/Vkontakte' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cpath d='M21.5181207,6.94798789 C21.6640981,6.40153658 21.5181207,6 20.8233582,6 L18.5259499,6 C17.9417961,6 17.6724923,6.34686842 17.5264329,6.72936316 C17.5264329,6.72936316 16.358122,9.92606789 14.7030559,12.0025368 C14.1676006,12.6036103 13.924182,12.7948558 13.6321026,12.7948558 C13.4860859,12.7948558 13.2746916,12.6036084 13.2746916,12.0572032 L13.2746916,6.94798974 C13.2746916,6.29224632 13.1051658,6 12.6183286,6 L9.00811551,6 C8.64307046,6 8.42352848,6.30434526 8.42352848,6.59278395 C8.42352848,7.21441342 9.25102049,7.35776974 9.3363167,9.10641395 L9.3363167,12.9041921 C9.3363167,13.7368421 9.20236138,13.8878026 8.91028366,13.8878026 C8.13145076,13.8878026 6.23693731,10.6768179 5.11331429,7.00261 C4.89311263,6.28847368 4.67225128,6 4.08509772,6 L1.78768941,6 C1.13128704,6 1,6.34686842 1,6.72936316 C1,7.41243789 1.77887229,10.80039 4.62655911,15.2811987 C6.52500277,18.3412339 9.199785,20 11.633725,20 C13.0940726,20 13.2747309,19.6315789 13.2747309,18.9969737 L13.2747309,16.6842105 C13.2747309,15.9473684 13.4130759,15.800315 13.8755229,15.800315 C14.2162597,15.800315 14.8004152,15.9915624 16.1634429,17.4669579 C17.7211514,19.2155561 17.977959,20 18.8541511,20 L21.1515594,20 C21.8079618,20 22.136163,19.6315789 21.9468303,18.9045203 C21.7396418,18.1798913 20.9959198,17.1285521 20.0090714,15.8822703 C19.4735767,15.1719084 18.6703929,14.4069208 18.4269743,14.0243376 C18.0862375,13.5326005 18.1835967,13.3139739 18.4269743,12.8768589 C18.4269743,12.8768589 21.2260414,8.45067237 21.5181207,6.94798789 L21.5181207,6.94798789 Z' id='Path' fill='%235181B8' fill-rule='nonzero'%3e%3c/path%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Line%3c/title%3e %3cg id='Icons/Social-Share/Line' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cg id='Line' transform='translate(2.000000, 3.000000)' fill='%2300B000' fill-rule='nonzero'%3e %3cpath d='M20.6949629,8.15093042 C20.6949629,3.70033355 16.052925,0.0783900111 10.3474815,0.0783900111 C4.64203792,0.0783900111 0,3.70033355 0,8.15093042 C0,12.1393937 3.68047292,15.4813253 8.65408498,16.1187509 C8.99039589,16.1870465 9.44986291,16.3304673 9.56591385,16.6082027 C9.64842138,16.9054292 9.65975793,17.2167669 9.59907127,17.5188108 L9.45223129,18.3702293 C9.40723195,18.6229231 9.24381326,19.353686 10.3474815,18.9074881 C11.4511497,18.4612901 16.3063424,15.5177496 18.4734162,13.1160208 L18.4734162,13.1160208 C19.9773418,11.5361159 20.6949629,9.93116917 20.6949629,8.15093042 Z M6.69779757,10.5253409 C6.69779757,10.6322104 6.60766673,10.7188451 6.4964847,10.7188451 L3.595211,10.7188451 C3.54352972,10.7184484 3.4938012,10.6998147 3.45547619,10.6664852 L3.45547619,10.6664852 L3.45547619,10.6664852 C3.41869968,10.6307614 3.3982446,10.5824265 3.39862942,10.5321705 L3.39862942,10.5321705 L3.39862942,6.20678222 C3.39862942,6.15546172 3.41984459,6.10624316 3.45759808,6.06995408 C3.49535157,6.033665 3.54655628,6.01327801 3.59994777,6.01327801 L4.32704249,6.01327801 C4.38043398,6.01327801 4.4316387,6.033665 4.46939218,6.06995408 C4.50714567,6.10624316 4.52835536,6.15546172 4.52835536,6.20678222 L4.52835536,9.63977459 L6.50122147,9.63977459 C6.55461297,9.63977459 6.60581768,9.66016158 6.64357117,9.69645066 C6.68132465,9.73273974 6.70253434,9.7819583 6.70253434,9.8332788 L6.69779757,10.5253409 Z M8.44566695,10.5253409 C8.44436973,10.6313203 8.35461772,10.7165686 8.24435408,10.7165686 L7.51962775,10.7165686 C7.40936411,10.7165686 7.3196121,10.6313203 7.31831488,10.5253409 L7.31831488,6.19995266 C7.31831488,6.09308324 7.40844572,6.00644845 7.51962775,6.00644845 L8.24435408,6.00644845 C8.29774557,6.00644845 8.34895029,6.02683544 8.38670377,6.06312452 C8.42445726,6.0994136 8.44566695,6.14863215 8.44566695,6.19995266 L8.44566695,10.5253409 Z M13.4429629,10.5253409 C13.4416657,10.6313203 13.3519136,10.716576 13.24165,10.7165686 L12.5145553,10.7165686 L12.4648192,10.7165686 L12.4648192,10.7165686 L12.4506088,10.7165686 L12.4363985,10.7165686 L12.4363985,10.7165686 L12.4363985,10.7165686 L12.4245566,10.7165686 L12.4245566,10.7165686 C12.4055948,10.7031013 12.3888312,10.686988 12.3748205,10.6687617 L10.3048505,7.98246793 L10.3048505,10.5276174 C10.3035533,10.6335968 10.2138013,10.7188451 10.1035376,10.7188451 L9.35512744,10.7188451 C9.24446155,10.7188451 9.1540198,10.633962 9.15144618,10.5276174 L9.15144618,6.20222918 C9.14885537,6.14874589 9.1691653,6.09657617 9.20764735,6.05786635 C9.2461294,6.01915653 9.29942563,5.99728442 9.35512744,5.99734226 L10.1343267,5.99734226 L10.1461686,5.99734226 L10.1461686,5.99734226 L10.1580105,5.99734226 L10.1580105,5.99734226 L10.1580105,5.99734226 L10.1580105,5.99734226 L10.1580105,5.99734226 L10.1580105,5.99734226 L10.1698525,5.99734226 L10.1698525,5.99734226 L10.1840628,6.00872497 L10.1840628,6.00872497 L10.2006415,6.02921365 L12.3156108,8.76786738 L12.3156108,6.1931231 C12.3156108,6.08625368 12.4057416,5.99961889 12.5169237,5.99961889 L13.2440184,5.99961889 C13.2974099,5.99961889 13.3486146,6.02000588 13.3863681,6.05629496 C13.4241216,6.09258404 13.4453313,6.14180259 13.4453313,6.1931231 L13.4429629,10.5253409 Z M17.4502732,6.8829087 C17.4502732,6.99015258 17.3605243,7.07744241 17.2489603,7.07868944 L15.2760942,7.07868944 L15.2760942,7.81855848 L17.2489603,7.81855848 C17.3601423,7.81855848 17.4502732,7.90519327 17.4502732,8.01206269 L17.4502732,8.71095437 C17.4502732,8.8178238 17.3601423,8.90445859 17.2489603,8.90445859 L15.2760942,8.90445859 L15.2760942,9.63977459 L17.2489603,9.63977459 C17.3601423,9.63977459 17.4502732,9.72640938 17.4502732,9.8332788 L17.4502732,10.529894 C17.4502732,10.6367634 17.3601423,10.7233982 17.2489603,10.7233982 L14.350055,10.7233982 C14.2982877,10.7233982 14.2484019,10.7047443 14.2103202,10.6710382 L14.2103202,10.6710382 L14.2103202,10.6710382 C14.1741219,10.6358745 14.1537139,10.5884679 14.1534788,10.539 L14.1534788,10.539 L14.1534788,6.21361178 L14.1534788,6.21361178 C14.1534385,6.16385245 14.1728855,6.11590166 14.2079518,6.0792971 L14.2079518,6.0792971 C14.2451171,6.0439471 14.2954025,6.02428545 14.3476866,6.02465534 L17.2489603,6.02465534 C17.3601423,6.02465534 17.4502732,6.1112954 17.4502732,6.21816482 L17.4502732,6.8829087 Z' id='Shape'%3e%3c/path%3e %3c/g%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/WeChat%3c/title%3e %3cg id='Icons/Social-Share/WeChat' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cpath d='M16.367331,9.34925328 C20.0296991,9.34925328 23,11.8220288 23,14.8641078 C22.9491203,16.5946973 22.0478373,18.1856206 20.5971082,19.1056349 L20.5971082,19.1056349 L20.7690504,20.8091991 C20.7752705,20.8733173 20.7459045,20.9356551 20.6927439,20.9711816 C20.6395833,21.0067081 20.5713475,21.0095963 20.5154357,20.9786864 L20.5154357,20.9786864 L18.7573271,20.0008753 C17.9846456,20.2504628 17.1784917,20.3779928 16.367331,20.3789622 C12.7049629,20.3789622 9.73466198,17.9105325 9.73466198,14.8641078 C9.73466198,11.817683 12.7049629,9.34925328 16.367331,9.34925328 Z M8.94802657,3 C12.9241891,3 16.2168816,5.48146723 16.7885893,8.65392095 L16.7885893,8.65392095 L16.3587339,8.65392095 C12.3352872,8.65392095 9.05119187,11.4395961 9.05119187,14.8641078 C9.05418906,15.381324 9.13239964,15.8952835 9.28331379,16.389493 C8.27788232,16.5113873 7.25821851,16.3830871 6.3130129,16.0157519 L6.3130129,16.0157519 L3.78546307,17.1239378 C3.72839812,17.1498357 3.66192355,17.1423598 3.61188294,17.1044166 C3.56184234,17.0664735 3.5361307,17.0040493 3.54474404,16.9414131 L3.54474404,16.9414131 L3.83274717,14.8206495 C2.11298318,13.6871965 1.05396905,11.7717052 1,9.69691944 C1,5.99862064 4.55920281,3 8.94802657,3 Z M14.1492771,12.2088075 C13.7219524,12.2088075 13.3755373,12.5590322 13.3755373,12.9910563 C13.3755373,13.4230804 13.7219524,13.7733052 14.1492771,13.7733052 C14.5766017,13.7733052 14.9230168,13.4230804 14.9230168,12.9910563 C14.9230168,12.5590322 14.5766017,12.2088075 14.1492771,12.2088075 Z M18.6240719,12.2088075 C18.1967472,12.2088075 17.8503322,12.5590322 17.8503322,12.9910563 C17.8503322,13.4230804 18.1967472,13.7733052 18.6240719,13.7733052 L18.6240719,13.7733052 L18.6369676,13.7733052 C19.0592477,13.7661888 19.3978703,13.4180398 19.3978116,12.9910563 C19.3978116,12.5590322 19.0513966,12.2088075 18.6240719,12.2088075 Z M6.12387651,6.56357816 C5.5541103,6.56357816 5.09222352,7.03054448 5.09222352,7.60657664 C5.09222352,8.1826088 5.5541103,8.64957512 6.12387651,8.64957512 L6.12387651,8.64957512 C6.69196825,8.64523428 7.15316245,8.18091092 7.1555295,7.60657664 C7.1555295,7.03054448 6.69364273,6.56357816 6.12387651,6.56357816 Z M11.5529504,6.56357816 C10.9831842,6.56357816 10.5212974,7.03054448 10.5212974,7.60657664 C10.5212974,8.1826088 10.9831842,8.64957512 11.5529504,8.64957512 L11.5529504,8.64957512 L11.5701446,8.6452293 C12.1305476,8.63349081 12.580072,8.17324566 12.5846034,7.60657664 C12.5846034,7.03054448 12.1227166,6.56357816 11.5529504,6.56357816 Z' id='Combined-Shape' fill='%2327B300' fill-rule='nonzero'%3e%3c/path%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Kakao Talk%3c/title%3e %3cg id='Icons/Social-Share/Kakao-Talk' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cg id='Talk-logo' transform='translate(1.000000, 2.000000)' fill='%23000000' fill-rule='nonzero'%3e %3cpolygon id='Path' points='7.79350084 9.352201 9.352201 9.352201 8.57285092 7.79350084'%3e%3c/polygon%3e %3cpath d='M10.9109012,0 C4.88472652,0 0,3.87554568 0,8.65689855 C0,11.7480448 2.04264659,14.4633549 5.11448492,15.9920365 C4.94662491,16.5716264 4.04018081,19.7229486 4.00451055,19.9710427 C4.00451055,19.9710427 3.98247893,20.1568493 4.10207919,20.2275825 C4.18295485,20.2686324 4.27705943,20.27436 4.36226222,20.2434183 C4.70637526,20.1948552 8.34893765,17.6241786 8.97841271,17.1818322 C9.61870967,17.2713055 10.2644621,17.3154023 10.9109012,17.3137971 C16.9370758,17.3137971 21.8218023,13.4382514 21.8218023,8.65689855 C21.8218023,3.87554568 16.9370758,0 10.9109012,0 Z M5.50790684,11.0734401 C5.50790684,11.4232747 5.22608125,11.7068717 4.87843177,11.7068717 C4.53078229,11.7068717 4.24895671,11.4232747 4.24895671,11.0734401 L4.24895671,7.3108564 L3.2669756,7.3108564 C3.04070527,7.32025227 2.82750999,7.20413409 2.71159314,7.00836377 C2.5956763,6.81259345 2.5956763,6.56864913 2.71159314,6.37287881 C2.82750999,6.17710849 3.04070527,6.0609903 3.2669756,6.07038618 L6.48988795,6.07038618 C6.71615828,6.0609903 6.92935356,6.17710849 7.0452704,6.37287881 C7.16118725,6.56864913 7.16118725,6.81259345 7.0452704,7.00836377 C6.92935356,7.20413409 6.71615828,7.32025227 6.48988795,7.3108564 L5.50790684,7.3108564 L5.50790684,11.0734401 Z M10.7986448,11.5833525 C10.6727952,11.640988 10.536149,11.6708647 10.397879,11.6709773 C10.1355977,11.6709773 9.93521482,11.5654053 9.87331643,11.3912116 L9.5585789,10.569862 L7.64287645,10.569862 L7.32813891,11.3912116 C7.26728965,11.5632939 7.06690676,11.6709773 6.80357636,11.6709773 C6.66563205,11.6709773 6.52930467,11.6410908 6.40385969,11.5833525 C6.22970492,11.5031179 6.06289403,11.2814168 6.2538348,10.6838797 L7.76352583,6.69537203 C7.89458947,6.33739968 8.2243153,6.09186893 8.60282592,6.07038618 C8.98159845,6.09204238 9.31139579,6.33804121 9.44212601,6.69642774 L10.9465714,10.682824 C11.1385613,11.2814168 10.9717504,11.5073408 10.7986448,11.5833525 Z M13.9795921,11.5833525 L11.9600263,11.5833525 C11.6344131,11.5898437 11.3647996,11.3303316 11.3567793,11.0027069 L11.3567793,6.70381778 C11.3707141,6.35685284 11.6542893,6.08279488 11.9993685,6.08279488 C12.3444477,6.08279488 12.6280228,6.35685284 12.6419576,6.70381778 L12.6419576,10.4252284 L13.9795921,10.4252284 C14.1940449,10.4122092 14.3979825,10.5199444 14.509119,10.7049643 C14.6202556,10.8899842 14.6202556,11.1217639 14.509119,11.3067839 C14.3979825,11.4918038 14.1940449,11.5995389 13.9795921,11.5865197 L13.9795921,11.5833525 Z M18.9104802,11.1061674 C18.8769783,11.3617635 18.6928768,11.5714271 18.4449346,11.6363529 C18.1969925,11.7012787 17.9346832,11.6085116 17.7816215,11.4017688 L16.3055025,9.4349637 L16.0872845,9.65455332 L16.0872845,11.0364899 C16.0872845,11.3863245 15.8054589,11.6699215 15.4578094,11.6699215 C15.1101599,11.6699215 14.8283343,11.3863245 14.8283343,11.0364899 L14.8283343,6.70804066 C14.8283343,6.35820604 15.1101599,6.07460906 15.4578094,6.07460906 C15.8054589,6.07460906 16.0872845,6.35820604 16.0872845,6.70804066 L16.0872845,8.06569572 L17.8435199,6.29842156 C17.9364633,6.20611416 18.0623036,6.15515746 18.1928786,6.15695516 C18.3559085,6.16041668 18.5112419,6.22740657 18.6261672,6.34381749 C18.7347892,6.45047335 18.8005287,6.593679 18.8108133,6.74604655 C18.8230866,6.88832417 18.7733146,7.02894694 18.674427,7.13138411 L17.2371256,8.57455244 L18.7866834,10.6405952 C18.8870006,10.7745981 18.9303909,10.9431755 18.9073328,11.1093346 L18.9104802,11.1061674 Z' id='Shape'%3e%3c/path%3e %3c/g%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3c!-- Generator: Adobe Illustrator 25.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e %3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 24 24' style='enable-background:new 0 0 24 24;' xml:space='preserve'%3e %3cstyle type='text/css'%3e .st0%7bfill:%23FFC300;%7d .st1%7bfill:%23FFFFFF;%7d %3c/style%3e %3cpath class='st0' d='M19.3,3.5H4.7c-0.7,0-1.2,0.6-1.2,1.2v14.5c0,0.7,0.6,1.2,1.2,1.2h14.5c0.7,0,1.2-0.6,1.2-1.2V4.7 C20.5,4.1,19.9,3.5,19.3,3.5z'/%3e %3cg%3e %3cpath class='st1' d='M14.4,6.8H9.7c0,0,0,0-0.1,0C9.3,6.8,9.1,7,9.1,7.4V12c0,0,0,0,0,0c0,0.3,0.3,0.6,0.6,0.5h2.1 c-0.1,0.6-0.3,1.2-0.6,1.7c-0.4,0.5-0.8,0.9-1.3,1.3c-0.1,0.1-0.1,0.1-0.1,0.2c0,0.1,0,0.1,0.1,0.2l1.5,1.7c0,0,0.1,0.1,0.1,0.1 c0.1,0,0.1,0,0.2,0c1.9-1.4,3-3.6,3.1-5.9V7.4c0,0,0-0.1,0-0.1C14.9,7,14.7,6.8,14.4,6.8z'/%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t) {\r\n e.exports =\r\n \"data:image/svg+xml,%3csvg width='24px' height='24px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e %3ctitle%3eIcons/Social Share/Naver Band%3c/title%3e %3cg id='Icons/Social-Share/Naver-Band' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e %3cpath d='M17.5104018,8.47503996 C15.9198112,6.98443319 13.7555446,6.14886549 11.5,6.15457513 C10.8196468,6.15438237 10.1416953,6.22966534 9.48044214,6.37883556 L9.48044214,5.02011348 L9.48044214,5.02011348 C9.48044214,3.35215086 8.02974575,2 6.24022107,2 C4.45069639,2 3,3.35215086 3,5.02011348 L3,5.02011348 L3,14.077164 L3,14.077164 C3,17.2815569 5.07094985,20.1704275 8.24718345,21.3966964 C11.4234171,22.6229653 15.0794209,21.9451392 17.5104018,19.6792881 C19.1044645,18.1935139 20,16.178369 20,14.077164 C20,11.975959 19.1044645,9.96081422 17.5104018,8.47503996 L17.5104018,8.47503996 Z M11.4999917,20.7386308 C7.55283567,20.7386308 4.35303349,17.7561905 4.35303349,14.077164 C4.35303349,14.0607146 4.35303349,14.0442652 4.35303349,14.0278158 L4.35303349,9.78605872 L4.35303349,9.78605872 L4.35303349,7.47272198 L4.35303349,7.47272198 L4.35303349,5.07055837 L4.35303349,5.07055837 C4.35303349,5.05356063 4.35303349,5.0365629 4.35303349,5.01956517 C4.35774339,4.37164953 4.74422434,3.778607 5.35893128,3.47604752 C5.97363821,3.17348805 6.71702929,3.21040624 7.29376258,3.57213486 C7.87049587,3.93386347 8.18717875,4.56182643 8.11799624,5.20654024 L8.12976175,5.20654024 L8.12976175,14.077164 L8.12976175,14.077164 C8.12733726,15.5594145 9.22024047,16.8480872 10.7681111,17.1881152 C12.3159816,17.5281432 13.9112744,16.8299992 14.6192659,15.5027439 C15.3272574,14.1754886 14.9615377,12.5685805 13.7363914,11.6235487 C12.5112451,10.6785169 10.7492461,10.6441828 9.48279524,11.5406635 L9.48279524,10.2389661 C11.3209875,9.39643678 13.5356833,9.79159641 14.9100695,11.2073337 C16.2844556,12.6230709 16.4855909,14.7164274 15.4029663,16.337257 C14.3203416,17.9580866 12.2162197,18.7137479 10.2466616,18.1890602 C8.27710348,17.6643726 6.91922906,15.9864402 6.91909092,14.077164 C6.91909092,14.0585214 6.91909092,14.040427 6.91909092,14.0223326 L6.91909092,14.0223326 L6.91909092,5.02011348 C6.91909092,4.6718642 6.61620405,4.38955239 6.24257417,4.38955239 C5.86894429,4.38955239 5.56605743,4.6718642 5.56605743,5.02011348 L5.56605743,14.077164 L5.56605743,14.077164 C5.56723774,16.4932808 7.24881314,18.629818 9.72105457,19.3563243 C12.193296,20.0828305 14.885515,19.2316002 16.3732465,17.2530231 C17.8609779,15.2744459 17.8007962,12.6252538 16.2245437,10.7071459 C14.6482911,8.78903814 11.9198276,8.04478779 9.48279524,8.86818109 L9.48279524,7.68601612 C12.1677355,6.94894795 15.0671819,7.74043204 16.901304,9.7111033 C18.7354261,11.6817746 19.1666677,14.4689459 18.0046766,16.8423458 C16.8426855,19.2157456 14.3013173,20.7386308 11.5023448,20.7386308 L11.4999917,20.7386308 Z M9.48044214,14.077164 C9.48044214,13.2985215 9.98366923,12.596549 10.7554694,12.2985754 C11.5272696,12.0006018 12.41565,12.1653078 13.0063603,12.7158913 C13.5970706,13.2664747 13.7737804,14.0945076 13.4540903,14.8138796 C13.1344002,15.5332515 12.3812677,16.0022945 11.5458772,16.0022945 C10.4051689,16.0022945 9.48044214,15.1403842 9.48044214,14.077164 L9.48044214,14.077164 Z' id='Shape' fill='%2319BF1D' fill-rule='nonzero'%3e%3c/path%3e %3c/g%3e %3c/svg%3e\";\r\n },\r\n function (e, t, n) {\r\n \"use strict\";\r\n n.r(t);\r\n var r = n(1),\r\n o = n.n(r),\r\n i = n(3),\r\n a = {\r\n injectType: \"styleTag\",\r\n insert: \"head\",\r\n singleton: !1,\r\n },\r\n c = (o()(i.a, a), i.a.locals, n(4)),\r\n l = {\r\n injectType: \"styleTag\",\r\n insert: \"head\",\r\n singleton: !1,\r\n },\r\n s = (o()(c.a, l), c.a.locals, n(5)),\r\n d = {\r\n injectType: \"styleTag\",\r\n insert: \"head\",\r\n singleton: !1,\r\n },\r\n p = (o()(s.a, d), s.a.locals, n(6)),\r\n u = {\r\n injectType: \"styleTag\",\r\n insert: \"head\",\r\n singleton: !1,\r\n };\r\n o()(p.a, u), p.a.locals;\r\n const m = document.createElement(\"div\");\r\n m.classList.add(\"rc-shade\");\r\n const h = ({ node: e }) => (document.body.appendChild(e), e),\r\n g = (e) => {\r\n const t = m.cloneNode(!0);\r\n return void 0 !== e && t.classList.add(e), t;\r\n },\r\n _ = Array.from(\r\n document.querySelectorAll(\".rc-list__item-dropdown\")\r\n ),\r\n w = ({ dropdown: e, number: t }) => {\r\n const n = document.getElementsByClassName(\r\n \"rc-header__nav--new--down-shade--\" + t\r\n );\r\n n.length > 0 && n[0].remove(),\r\n e.classList.remove(\"rc-open-sub-menu\"),\r\n e\r\n .querySelector(\"[aria-expanded]\")\r\n .setAttribute(\"aria-expanded\", \"false\");\r\n },\r\n f = ({\r\n event: e,\r\n dropdown: t,\r\n listItemDropdowns: n,\r\n number: r,\r\n }) => {\r\n const o = !t.classList.contains(\"rc-open-sub-menu\");\r\n n\r\n .map((e, t) => ({\r\n dropdown: e,\r\n number: t,\r\n }))\r\n .filter((t) => !t.dropdown.contains(e.target))\r\n .forEach((e) =>\r\n w({\r\n dropdown: e.dropdown,\r\n number: e.number,\r\n })\r\n ),\r\n o && t.contains(e.target)\r\n ? (({ dropdown: e, number: t }) => {\r\n e.classList.add(\"rc-open-sub-menu\"),\r\n h({\r\n node: g(\r\n \"rc-header__nav--new--down-shade--\" +\r\n t\r\n ),\r\n }),\r\n e\r\n .querySelector(\"[aria-expanded]\")\r\n .setAttribute(\r\n \"aria-expanded\",\r\n \"true\"\r\n );\r\n })({\r\n dropdown: t,\r\n number: r,\r\n })\r\n : !o &&\r\n t.contains(e.target) &&\r\n w({\r\n dropdown: t,\r\n number: r,\r\n });\r\n },\r\n x = () => {\r\n const e = document.querySelectorAll(\r\n \".rc-header__list-item__link\"\r\n );\r\n Array.from(e).forEach((t) => {\r\n if(t.nextElementSibling){\r\n (t.nextElementSibling.style.height = \"0px\"),\r\n t.addEventListener(\"click\", (n) => {\r\n t.parentElement.classList.remove(\r\n \"rc-submenu--open__parent-element\"\r\n ),\r\n n.preventDefault(),\r\n t.nextElementSibling.classList.contains(\r\n \"rc-submenu--open\"\r\n )\r\n ? ((t.nextElementSibling.style.height =\r\n \"0px\"),\r\n t.parentElement.classList.remove(\r\n \"rc-submenu--open__parent-element\"\r\n ),\r\n t.nextElementSibling.classList.remove(\r\n \"rc-submenu--open\"\r\n ))\r\n : (window.innerWidth < 960 &&\r\n Array.from(e).forEach((e) => {\r\n e.parentElement.classList.remove(\r\n \"rc-submenu--open__parent-element\"\r\n ),\r\n (e.nextElementSibling.style.height =\r\n \"0px\"),\r\n e.nextElementSibling.classList.remove(\r\n \"rc-submenu--open\"\r\n );\r\n }),\r\n (t.nextElementSibling.style.height =\r\n \"auto\"),\r\n t.parentElement.classList.add(\r\n \"rc-submenu--open__parent-element\"\r\n ),\r\n t.nextElementSibling.classList.add(\r\n \"rc-submenu--open\"\r\n ));\r\n });\r\n }\r\n });\r\n const t = document.querySelectorAll(\r\n \".rc-mega-menu-dropdown__sub-section-header\"\r\n );\r\n Array.from(t).forEach((e) => {\r\n e.addEventListener(\"click\", (t) => {\r\n t.currentTarget.parentElement.parentElement.parentElement.classList.add(\r\n \"rc-submenu--open__parent\"\r\n ),\r\n e.nextElementSibling.classList.toggle(\r\n \"rc-mega-menu-dropdown__sub-section__slide-tray--slide-in\"\r\n ),\r\n (({ elem: e }) =>\r\n Array.from(e.parentNode.children).filter(\r\n (t) => t !== e\r\n ))({\r\n elem: e.parentNode,\r\n }).forEach((e) =>\r\n e.classList.toggle(\"rc-hidden\")\r\n );\r\n });\r\n e.nextElementSibling\r\n .querySelector(\r\n \".rc-mega-menu-dropdown__sub-section__slide-tray-control\"\r\n )\r\n .addEventListener(\"click\", (t) => {\r\n e.click(),\r\n e.parentElement.parentElement.parentElement.classList.remove(\r\n \"rc-submenu--open__parent\"\r\n );\r\n });\r\n });\r\n };\r\n let b = {\r\n root: null,\r\n threshold: 0,\r\n };\r\n function C(e, t) {\r\n e.forEach((e) => {\r\n e.target.classList.contains(\"rc-js--width-adjust-init\") ||\r\n (e.target.classList.add(\"rc-js--width-adjust-init\"),\r\n e.boundingClientRect.x + e.target.offsetWidth >=\r\n document.documentElement.clientWidth ||\r\n e.boundingClientRect.x < 0\r\n ? e.target.classList.add(\r\n \"rc-list__item-sub-menu--fixed\"\r\n )\r\n : e.target.classList.remove(\r\n \"rc-list__item-sub-menu--fixed\"\r\n ));\r\n });\r\n }\r\n const v = () => {\r\n let e = new IntersectionObserver(C, b),\r\n t = document.querySelectorAll(\r\n \".rc-header__nav--secondary .rc-list__item-sub-menu\"\r\n );\r\n Array.from(t).forEach((t) => {\r\n e.observe(t),\r\n window.addEventListener(\r\n \"resize\",\r\n ((e, t) => {\r\n let n;\r\n return (...r) => {\r\n clearTimeout(n),\r\n (n = setTimeout(\r\n () => e.apply(void 0, r),\r\n t\r\n ));\r\n };\r\n })(() => {\r\n e.unobserve(t),\r\n t.classList.remove(\r\n \"rc-js--width-adjust-init\"\r\n ),\r\n e.observe(t);\r\n }, 250)\r\n );\r\n });\r\n };\r\n var L = n(7),\r\n y = {\r\n injectType: \"styleTag\",\r\n insert: \"head\",\r\n singleton: !1,\r\n };\r\n o()(L.a, y), L.a.locals;\r\n document.addEventListener(\"rc_webpack_done\", () => {\r\n const e =\r\n Array.from(\r\n document.getElementsByClassName(\r\n \"rc-stockist-list__list-item\"\r\n )\r\n ).length > 0;\r\n (() => {\r\n const e = document.querySelectorAll(\r\n \".rc-header__nav--new .rc-btn.rc-menu--xs\"\r\n ),\r\n t = document.querySelectorAll(\r\n \".rc-header__nav--new.rc-header__nav--secondary\"\r\n );\r\n Array.from(e).forEach((e) => {\r\n e.addEventListener(\"click\", (e) => {\r\n t[0].classList.contains(\"rc-secondary-nav--open\")\r\n ? t[0].classList.remove(\r\n \"rc-secondary-nav--open\"\r\n )\r\n : t[0].classList.add(\"rc-secondary-nav--open\");\r\n });\r\n });\r\n })(),\r\n !0 === e && n.e(1).then(n.bind(null, 24)),\r\n window.matchMedia(\r\n `(min-width: ${RCDL.config.breakpoints.lg}px)`\r\n ).matches &&\r\n ((() => {\r\n let e = [];\r\n _.forEach((t, n) => {\r\n const r = document.querySelectorAll(\r\n \".rc-mega-menu-dropdown__sub-section-header\"\r\n );\r\n Array.from(r).forEach((e) =>\r\n e.setAttribute(\"tabindex\", \"-1\")\r\n ),\r\n e.push({\r\n dropdown: t,\r\n listItemDropdowns: _,\r\n number: n,\r\n });\r\n });\r\n const t = (t) => {\r\n if (\r\n (t.target.classList.contains(\r\n \"rc-header__list-item__link\"\r\n ) && t.preventDefault(),\r\n t.target.classList.contains(\r\n \"rc-header__list-item__link\"\r\n ) ||\r\n \"focusin\" !== t.type ||\r\n !(\r\n _.filter((e) =>\r\n e.contains(t.target)\r\n ).length > 0\r\n ))\r\n )\r\n return (\r\n !(\r\n !t.target.hasAttribute(\"href\") ||\r\n t.target.classList.contains(\r\n \"rc-header__list-item__link\"\r\n )\r\n ) ||\r\n void e.forEach(\r\n ({\r\n dropdown: e,\r\n listItemDropdowns: n,\r\n number: r,\r\n }) => {\r\n f({\r\n event: t,\r\n dropdown: e,\r\n listItemDropdowns: n,\r\n number: r,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n document.body.addEventListener(\"click\", (e) => {\r\n e.target.classList.contains(\r\n \"rc-header__list-item__link\"\r\n ) && e.preventDefault();\r\n }),\r\n // document.body.addEventListener(\"mouseover\", t),\r\n document.body.addEventListener(\"focusin\", t);\r\n })(),\r\n v()),\r\n window.matchMedia(\r\n `(max-width: ${RCDL.config.breakpoints.lg}px)`\r\n ).matches && x(),\r\n (() => {\r\n const e = document.querySelector(\r\n \".rc-account-dropdown-container\"\r\n ),\r\n t = document.querySelector(\r\n \".rc-account-dropdown-trigger\"\r\n ),\r\n n = document.querySelector(\r\n \".rc-my-account-dropdown\"\r\n );\r\n let r = !1;\r\n const o = g();\r\n document.body.addEventListener(\"click\", (i) => {\r\n n.classList.contains(\"rc-open-account-dropdown\")\r\n ? (n.classList.remove(\r\n \"rc-open-account-dropdown\"\r\n ),\r\n n.previousElementSibling.classList.remove(\r\n \"rc-open-account-dropdown-trigger\"\r\n ),\r\n (r = !1),\r\n o.remove())\r\n : (i.target === t &&\r\n (n.classList.add(\r\n \"rc-open-account-dropdown\"\r\n ),\r\n n.previousElementSibling.classList.add(\r\n \"rc-open-account-dropdown-trigger\"\r\n ),\r\n (r = !0),\r\n h({\r\n node: o,\r\n })),\r\n e.contains(i.target) ||\r\n (n.classList.remove(\r\n \"rc-open-account-dropdown\"\r\n ),\r\n n.previousElementSibling.classList.remove(\r\n \"rc-open-account-dropdown-trigger\"\r\n ),\r\n (r = !1),\r\n o.remove()));\r\n });\r\n })(),\r\n (() => {\r\n const e = document.querySelector(\r\n \".rc-header__nav--new.rc-header__nav--primary--new svg\"\r\n );\r\n document.addEventListener(\"scroll\", (t) => {\r\n document.scrollingElement.scrollTop >\r\n document.body.offsetTop + 100\r\n ? e.classList.add(\"rc-logo--scrolled\")\r\n : e.classList.remove(\"rc-logo--scrolled\");\r\n });\r\n })(),\r\n !0 === e &&\r\n (() => {\r\n const e = document.querySelectorAll(\r\n \".rc-stockist-list__list-item\"\r\n );\r\n Array.from(e).forEach((t) => {\r\n t.addEventListener(\"click\", (n) => {\r\n [...t.classList].includes(\r\n \"rc-stockist-list__list-item--active\"\r\n ) ||\r\n (Array.from(e).forEach((e) => {\r\n e.classList.remove(\r\n \"rc-stockist-list__list-item--active\"\r\n );\r\n }),\r\n t.classList.add(\r\n \"rc-stockist-list__list-item--active\"\r\n ));\r\n });\r\n });\r\n })(),\r\n (() => {\r\n const e = document.querySelectorAll(\r\n \".rc-search_top_menu\"\r\n ),\r\n t = document.querySelector(\r\n \".rc-header__search-bar\"\r\n ),\r\n n = document.querySelector(\r\n \".rc-header__search-bar .rc-header__input\"\r\n ),\r\n r = g();\r\n r.classList.add(\"rc-search-shade\");\r\n const o = document.querySelector(\".rc-search--close\"),\r\n i = (n) => {\r\n !1 === t.contains(n.target) &&\r\n -1 === Array.from(e).indexOf(n.target) &&\r\n c(n);\r\n };\r\n document.addEventListener(\"keyup\", (e) => {\r\n (27 === e.key ||\r\n 27 === e.keyIdentifier ||\r\n 27 === e.keyCode) &&\r\n c(e);\r\n });\r\n const a = (e) => {\r\n t.classList.remove(\"rc-hidden\"),\r\n h({\r\n node: r,\r\n }),\r\n document.addEventListener(\"click\", i),\r\n n.focus();\r\n },\r\n c = (e) => {\r\n e.preventDefault(),\r\n t.classList.add(\"rc-hidden\"),\r\n r.remove(),\r\n document.removeEventListener(\"click\", i);\r\n };\r\n Array.from(e).forEach((e) =>\r\n e.addEventListener(\"click\", a)\r\n ),\r\n o.addEventListener(\"click\", c);\r\n })();\r\n });\r\n },\r\n ]);\r\n\r\nNodeList.prototype.forEach = Array.prototype.forEach;\r\nconst submenus = document.querySelectorAll(\r\n \".rc-list__item.rc-list__item-dropdown\"\r\n);\r\n\r\nconst shade = document.createElement(\"div\");\r\nshade.classList.add(\"rc-shade\");\r\ndocument.body.appendChild(shade);\r\ndocument.querySelector(\".rc-shade\").style.display = \"none\";\r\n\r\nconst showShade = (isShow) => {\r\n if (isShow) {\r\n document.querySelector(\".rc-shade\").style.display = \"block\";\r\n } else {\r\n document.querySelector(\".rc-shade\").style.display = \"none\";\r\n }\r\n};\r\n\r\nsubmenus.forEach((el) => {\r\n el.addEventListener(\"mouseenter\", () => {\r\n el.classList.add(\"rc-open-sub-menu\");\r\n showShade(true);\r\n });\r\n el.addEventListener(\"mouseleave\", () => {\r\n el.classList.remove(\"rc-open-sub-menu\");\r\n showShade(false);\r\n });\r\n});\r\n","import './styles.scss';\r\n// dlHeaderScript is immediatly invoked\r\nimport dlHeaderScript from './dlHeaderScript';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class HeaderBar extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'rc-header-bar';\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n let searchbarButtons = this.el.querySelectorAll(\"[aria-label='Search']\");\r\n if (searchbarButtons != null)\r\n {\r\n searchbarButtons.forEach(button => {\r\n button.onclick = function () {\r\n let dataLayer = window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n 'event': 'instantSearchFieldClick'\r\n })\r\n console.log(\"Event - instantSearchFieldClick added\");\r\n }\r\n });\r\n }\r\n window.addEventListener('load', () => {\r\n this.displayMenu();\r\n });\r\n window.addEventListener('resize', this.displayMenu());\r\n }\r\n setVariables() {\r\n this.menuText =this.el.getElementsByClassName(\"menu-text\")[0]\r\n }\r\n\r\n displayMenu() {\r\n if (window.matchMedia('(min-width: 767px)').matches) {\r\n this.menuText.classList.remove('display-none')\r\n }\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\n\r\nexport default class CopyLink extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'copy-link';\r\n }\r\n\r\n init() {\r\n this.addListeners();\r\n }\r\n\r\n addListeners() {\r\n this.addListener(this.el, 'click', this.onClick);\r\n }\r\n\r\n onClick(e) {\r\n e.preventDefault();\r\n\r\n const shareUrl = event.target.getAttribute(\"data-url\");\r\n\r\n navigator.clipboard.writeText(shareUrl)\r\n .then(function () {\r\n alert(\"URL was copied to clipboard\");\r\n });\r\n }\r\n}\r\n\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\nimport \"./styles.scss\";\r\n\r\nexport default class HomepageCarousel extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return \"homepage-carousel\";\r\n }\r\n\r\n init() {\r\n window.addEventListener(\"load\", () => {\r\n this.startInterval();\r\n });\r\n this.el.addEventListener(\"mouseover\", () => {\r\n this.stopInterval();\r\n });\r\n this.el.addEventListener(\"mouseout\", () => {\r\n this.startInterval();\r\n });\r\n this.addCarouselTracking();\r\n }\r\n\r\n startInterval() {\r\n this.carouselSlideInterval = setInterval(\r\n () => this.changeSlide(),\r\n 5000\r\n );\r\n }\r\n\r\n trackCarouselSlideCTAClick(btnEl) {\r\n window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n event: \"carouselInteraction\",\r\n carouselInteraction: {\r\n name: \"buttonClick\",\r\n buttonLabel: btnEl.target.innerText,\r\n carousselType: \"Homepage\",\r\n },\r\n });\r\n }\r\n\r\n trackCarouselNavigationClick() {\r\n const currentActiveSlideIndex = document.querySelector(\r\n '[data-component=\"homepage-carousel\"] .tns-nav button.tns-nav-active'\r\n );\r\n const currentActiveSlideTitle = document.querySelector(\r\n '[data-component=\"homepage-carousel\"] .tns-item.tns-slide-active .rc-hero__title'\r\n );\r\n\r\n if (currentActiveSlideIndex && currentActiveSlideTitle) {\r\n window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n event: \"carouselInteraction\",\r\n carouselInteraction: {\r\n name: \"slideLoad\",\r\n slideId:\r\n parseInt(\r\n currentActiveSlideIndex.getAttribute(\"data-nav\")\r\n ) + 1,\r\n slideTitle: currentActiveSlideTitle.textContent,\r\n carousselType: \"Homepage\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n addCarouselTracking() {\r\n const navigationButtons = document.querySelectorAll(\r\n '[data-component=\"homepage-carousel\"] [data-controls=\"next\"], [data-component=\"homepage-carousel\"] [data-controls=\"prev\"], [data-component=\"homepage-carousel\"] .tns-nav button'\r\n );\r\n\r\n const contentButtons = document.querySelectorAll(\r\n '[data-component=\"homepage-carousel\"] .rc-hero.tns-item .rc-btn'\r\n );\r\n\r\n for (let i = 0; i < navigationButtons.length; i++) {\r\n navigationButtons[i].addEventListener(\r\n \"click\",\r\n this.trackCarouselNavigationClick\r\n );\r\n }\r\n\r\n for (let i = 0; i < contentButtons.length; i++) {\r\n contentButtons[i].addEventListener(\r\n \"click\",\r\n this.trackCarouselSlideCTAClick\r\n );\r\n }\r\n }\r\n\r\n removeCarouselTracking() {\r\n const navigationButtons = document.querySelectorAll(\r\n '[data-component=\"homepage-carousel\"] [data-controls=\"next\"], [data-component=\"homepage-carousel\"] [data-controls=\"prev\"], [data-component=\"homepage-carousel\"] .tns-nav button'\r\n );\r\n\r\n const contentButtons = document.querySelectorAll(\r\n '[data-component=\"homepage-carousel\"] .rc-hero.tns-item .rc-btn'\r\n );\r\n\r\n for (let i = 0; i < navigationButtons.length; i++) {\r\n navigationButtons[i].removeEventListener(\r\n \"click\",\r\n this.trackCarouselNavigationClick\r\n );\r\n }\r\n\r\n for (let i = 0; i < contentButtons.length; i++) {\r\n contentButtons[i].removeEventListener(\r\n \"click\",\r\n this.trackCarouselSlideCTAClick\r\n );\r\n }\r\n }\r\n\r\n changeSlide() {\r\n const nextButtons = document.querySelectorAll(\r\n '[data-component=\"homepage-carousel\"] [data-controls=\"next\"]'\r\n );\r\n const firstSlideButtons = document.querySelectorAll(\r\n '[data-component=\"homepage-carousel\"] .tns-nav [data-nav=\"0\"]'\r\n );\r\n\r\n const handleClickEvent = (event) => {\r\n event.stopPropagation();\r\n };\r\n\r\n this.removeCarouselTracking();\r\n if (nextButtons && firstSlideButtons) {\r\n for (let i = 0; i < nextButtons.length; i++) {\r\n if (nextButtons[i].disabled == true) {\r\n firstSlideButtons[i].parentElement.addEventListener(\r\n \"click\",\r\n handleClickEvent\r\n );\r\n firstSlideButtons[i].click();\r\n firstSlideButtons[i].parentElement.removeEventListener(\r\n \"click\",\r\n handleClickEvent\r\n );\r\n } else {\r\n nextButtons[i].parentElement.addEventListener(\r\n \"click\",\r\n handleClickEvent\r\n );\r\n nextButtons[i].click();\r\n nextButtons[i].parentElement.removeEventListener(\r\n \"click\",\r\n handleClickEvent\r\n );\r\n }\r\n }\r\n }\r\n this.addCarouselTracking();\r\n }\r\n\r\n stopInterval() {\r\n clearInterval(this.carouselSlideInterval);\r\n }\r\n}\r\n","import BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport './styless.scss';\r\n\r\n\r\nexport default class AccordionBreed extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n }\r\n\r\n static get tagName() {\r\n return 'accordion-breed';\r\n }\r\n\r\n\r\n\r\n addListeners() {\r\n window.addEventListener('resize', this.getResolution());\r\n }\r\n\r\n init() {\r\n this.setVariables();\r\n this.addListeners()\r\n this.getResolution();\r\n }\r\n setVariables(){\r\n this.mobileAccordion = this.el.getElementsByClassName('mobile-only')[0];\r\n\r\n this.desktopAccordion = this.el.getElementsByClassName('desktop-only')[0];\r\n }\r\n\r\n getResolution() {\r\n\r\n console.log(this.desktopAccordion,'desktopAccordion')\r\n // if( window.location.href.indexOf(\"breed-library\") > -1){\r\n // console.log('breed-library')\r\n \r\n // if (window.matchMedia('(min-width: 767px)').matches) {\r\n // this.mobileAccordion.classList.add(\"display-none\")\r\n // }\r\n // else{\r\n // console.log(this.desktopAccordion,'this.desktopAccordion')\r\n // this.desktopAccordion.classList.add(\"display-none\")\r\n // }\r\n // }\r\n // else{\r\n // console.log('else')\r\n // this.desktopAccordion.classList.add(\"display-none\");\r\n // }\r\n } \r\n}\r\n","import './styles.scss';\r\nimport BaseComponent from '$Foundation/src/js/BaseComponent';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\nexport default class MarketPicker extends BaseComponent {\r\n constructor(el) {\r\n super(el); \r\n this.redirectPage = this.el.getAttribute('data-redirect-page');\r\n this.countrySelect = document.getElementById('country-select'); \r\n\r\n this.addListeners();\r\n }\r\n\r\n static get tagName() {\r\n return 'marketpicker';\r\n }\r\n\r\n updateRedirectUrl() {\r\n let languageSelect = document.getElementById('language-select');\r\n let selectedLanguage = languageSelect.options[languageSelect.selectedIndex].value;\r\n document.getElementById('redirect-button').setAttribute(\"href\", selectedLanguage + \"/\" + this.redirectPage);\r\n }\r\n\r\n updateLanguages() {\r\n let params = {\r\n method: 'GET',\r\n headers: {}\r\n };\r\n var _that = this;\r\n let selectedCountry = this.countrySelect.options[this.countrySelect.selectedIndex].value; \r\n fetch(`/api/kittenzooplus/getlanguages` + \"?site=\" + selectedCountry, params).then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (response) {\r\n let selectedLanguages = [];\r\n response.map(y => selectedLanguages.push(y));\r\n\r\n document.getElementById('language-select-container').innerHTML = `\r\n \r\n \r\n \r\n \r\n `\r\n const DLOBject = Utils.getDLObject();\r\n const languageOptions = {\r\n placeholderValue: 'data-js-custom-placeholder',\r\n shouldSort: false,\r\n itemSelectText: '',\r\n classNames: {\r\n item: 'choices__item choices__item--custom-data'\r\n }\r\n };\r\n DLOBject.features.Selects.init('[data-js-select-language]', null, languageOptions);\r\n _that.updateRedirectUrl();\r\n document.getElementById('language-select').addEventListener('change', () => {\r\n _that.updateRedirectUrl();\r\n });\r\n });\r\n }\r\n\r\n addListeners() { \r\n this.countrySelect.addEventListener('change', () => {\r\n this.updateLanguages();\r\n });\r\n document.getElementById('language-select').addEventListener('change', () => {\r\n this.updateRedirectUrl(); \r\n });\r\n } \r\n}\r\n","import BaseComponent from \"$Foundation/src/js/BaseComponent\";\r\n\r\nexport default class RoutineStep extends BaseComponent {\r\n constructor(el) {\r\n super(el);\r\n this.init();\r\n this.isInited = true;\r\n }\r\n\r\n static get tagName() {\r\n return \"routine-step\";\r\n }\r\n\r\n init() {\r\n const hasParagraph = el.querySelector(\".numeric-articles-content > p\");\r\n\r\n if (!hasParagraph) {\r\n const numericArticlesContent = el.querySelector(\r\n \".numeric-articles-content\"\r\n );\r\n const videoWrapper = el.querySelector(\r\n \".numeric-articles-content > .video-wrapper\"\r\n );\r\n\r\n if (numericArticlesContent) {\r\n numericArticlesContent.style.margin = \"16px 0 0 0\";\r\n }\r\n if (videoWrapper) {\r\n videoWrapper.style.margin = \"40px 0 0 0\";\r\n }\r\n }\r\n }\r\n}\r\n","import './scss/index.scss';\r\n// src set way for background images\r\nimport 'lazysizes/plugins/bgset/ls.bgset';\r\n// data-src set\r\nimport 'lazysizes/plugins/respimg/ls.respimg';\r\nimport 'lazysizes';\r\nimport Utils from '$Foundation/src/js/utils';\r\n\r\n\r\nwindow.lazySizesConfig = window.lazySizesConfig || {};\r\nwindow.lazySizesConfig.init = false;\r\nwindow.lazySizesConfig.minSize = 1;\r\nwindow.lazySizesConfig.expand = 200;\r\nconst isIE = document.querySelector('html').classList.contains('ie11');\r\n\r\nwindow.onload = function() {\t\r\n\t\r\n\tif (isIE) { // instant load without delay\r\n\t\tconst delayedItems = document.querySelectorAll('.lazyload--delay');\r\n\t\tfor (let i = 0; i < delayedItems.length; i++) {\r\n\t\t\tdelayedItems[i].classList.remove('lazyload--delay');\r\n\t\t\tdelayedItems[i].classList.add('lazyload');\r\n\t\t }\r\n\t}\r\n\r\n window.lazySizes.init();\r\n};\r\n\r\n\r\nif (!isIE) {\r\n // delayed lazyloading for carousels to prevent wrong size calculation\r\n let lazyloadDelayCarousels = document.querySelectorAll('.rc-carousel--lazyload');\r\n\r\n lazyloadDelayCarousels.forEach((item) => {\r\n\t\tUtils.classWatcher(item, 'rc-carousel--loaded', null, () => {\t\t\r\n\t\t\tsetTimeout(() => {\t\t\t\r\n\t\t\t\tconst delayedItems = item.querySelectorAll('.lazyload--delay');\r\n\t\t\t\tdelayedItems.forEach((image) => {\r\n\t\t\t\t\timage.classList.add('lazyload');\r\n\t\t\t\t})\r\n\t\t\t}, 150);\r\n\t\t});\t\r\n\t})\r\n}","/* eslint import/no-unresolved: 0 */\r\n/* eslint import/extensions: 0 */\r\n\r\n// Styles\r\nimport React from \"react\";\r\nimport { autobind } from \"../autobind\";\r\nimport ArticleCard from \"../components/article/card/index\";\r\nimport MyAccountDropdown from \"../components/my-account-dropdown/index\";\r\n\r\nimport \"$Foundation/src/scss/index.scss\";\r\nimport \"$Feature/Breeds/code/src/BreedSearchAndFilter.scss\";\r\nimport \"$Feature/GenericComponents/code/src/richtext-editor\";\r\nimport \"$Feature/GenericComponents/code/src/tags-container\";\r\nimport \"$Feature/GenericComponents/code/src/definition-list\";\r\nimport \"$Feature/GenericComponents/code/src/form-elements\";\r\nimport \"$Feature/GenericComponents/code/src/preloader\";\r\nimport \"$Feature/GenericComponents/code/src/list\";\r\nimport \"$Feature/GenericComponents/code/src/text-with-icon\";\r\nimport \"$Feature/GenericComponents/code/src/info-window\";\r\nimport \"$Feature/GenericComponents/code/src/blockquote\";\r\nimport \"$Feature/GenericComponents/code/src/purchase-block\";\r\nimport \"$Feature/GenericComponents/code/src/author-panel\";\r\nimport ContentCards from \"$Feature/GenericComponents/code/src/content-cards\";\r\nimport \"$Feature/GenericComponents/code/src/carousel\";\r\nimport \"$Feature/GenericComponents/code/src/content-block\";\r\nimport \"$Feature/GenericComponents/code/src/product-card\";\r\nimport ProductBlock from \"$Feature/GenericComponents/code/src/product-block\";\r\nimport ParagraphsInTwoColumns from \"$Feature/GenericComponents/code/src/paragraphs-in-two-columns\";\r\nimport \"$Feature/GenericComponents/code/src/autocomplete-places\";\r\nimport \"$Feature/GenericComponents/code/src/share-links\";\r\nimport TabbedImage from \"$Feature/GenericComponents/code/src/tabbed-image\";\r\nimport \"$Feature/Breeds/code/src/size-table\";\r\nimport \"$Feature/Footer/code/src\";\r\nimport \"$Feature/GenericComponents/code/src/hot-fixes\";\r\nimport \"$Feature/GenericComponents/code/src/wechat\";\r\nimport ProductDetails from \"$Feature/Products/code/src/product-details\";\r\nimport \"$Feature/GenericComponents/code/src/puppies-kittens/quicktips\";\r\nimport SocialSharing from \"$Feature/SocialSharing/code/src\";\r\nimport StockistsLandingPage from \"$Feature/Stockists/code/src\";\r\nimport \"$Feature/Navigation/code/src\";\r\nimport \"$Feature/Products/code/src/daily-portion-tool\";\r\nimport \"./daily-portion-tool\";\r\nimport \"$Feature/GenericComponents/code/src/plp-filters-column\";\r\n\r\nimport PfRecommendations from \"$Feature/ProductFinder/code/src/recommendations\";\r\n\r\nimport \"intersection-observer\";\r\n\r\n// Features\r\n\r\nimport LanguagePicker from \"$Feature/LanguagePicker/Code/src/royal-canin\";\r\nimport LanguagePickerQRCode from \"$Feature/LanguagePicker/Code/src/royal-canin-QRCode\";\r\nimport LanguagePickerEukanuba from \"$Feature/LanguagePicker/Code/src/eukanuba\";\r\nimport Filter from \"$Feature/GenericComponents/code/src/filter\";\r\nimport MobileSearchButton from \"$Feature/GenericComponents/code/src/mobile-search-button\";\r\nimport AutoComplete from \"$Feature/GenericComponents/code/src/autocomplete\";\r\nimport ButtonSwitch from \"$Feature/GenericComponents/code/src/button-switch\";\r\nimport ListingWithPagination from \"$Feature/GenericComponents/code/src/listing-with-pagination\";\r\nimport Timeline from \"$Feature/Breeds/code/src/timeline\";\r\nimport \"$Feature/Articles/code/src/styles.scss\";\r\nimport ViewAllArticles from \"$Feature/Articles/code/src/view-all-articles\";\r\nimport BackToTop from \"$Feature/Articles/code/src/back-to-top\";\r\nimport \"$Feature/Articles/code/src/editorial-block\";\r\nimport RelatedArticles from \"$Feature/Articles/code/src/related-articles\";\r\n\r\nimport \"$Feature/Tips/code/src/tips\";\r\nimport \"$Feature/Tips/code/src/tip-page\";\r\n\r\nimport ReadMore from \"$Feature/GenericComponents/code/src/read-more\";\r\nimport SearchResults from \"$Feature/GenericComponents/code/src/search-results\";\r\nimport {\r\n Form,\r\n Recaptcha,\r\n ShowRule,\r\n HiddenIf,\r\n ServerValidation,\r\n} from \"$Feature/Forms/code/src\";\r\n\r\nimport Map from \"$Feature/GenericComponents/code/src/map\";\r\nimport ProductRating from \"$Feature/Products/code/src/product-rating\";\r\nimport WriteReview from \"$Feature/Products/code/src/write-review\";\r\nimport FiltersList from \"$Feature/EukanubaProducts/code/src/filters-list\";\r\nimport ReviewFeedback from \"$Feature/EukanubaProducts/code/src/review-feedback\";\r\nimport PSTracking from \"$Feature/EukanubaProducts/code/src/ps-tracking\";\r\nimport ArticleTabbedNavigation from \"$Feature/Articles/code/src/article-tabbed-nav\";\r\nimport ArticleTags from \"$Feature/Articles/code/src/article-tags\";\r\n\r\nimport ArticleReadingTime from \"$Feature/Articles/code/src/article-reading-time\";\r\nimport \"$Feature/Articles/code/src/custom-author-panel-styles\";\r\nimport \"$Feature/Articles/code/src/article-hero-container\";\r\nimport VideoPanel from \"$Feature/GenericComponents/code/src/video-wrapper\";\r\n\r\nimport CarouselEventTracker from \"$Feature/GenericComponents/code/src/carousel-event-tracker\";\r\nimport CtaEventTracker from \"$Feature/GenericComponents/code/src/cta-event-tracker\";\r\nimport SearchEventTracker from \"$Feature/GenericComponents/code/src/search-event-tracker\";\r\nimport NavigationEventTracker from \"$Feature/GenericComponents/code/src/navigation-event-tracker\";\r\nimport ContentTracker from \"$Feature/GenericComponents/code/src/content-tracker\";\r\nimport ContentAnimation from \"$Feature/GenericComponents/code/src/content-animation\";\r\nimport ProductTrack from \"$Feature/Products/code/src/product-track\";\r\nimport ArticleHeroPanel from \"$Feature/GenericComponents/code/src/article-hero-panel\";\r\n\r\nimport ProductListTrack from \"$Feature/Products/code/src/product-list-track\";\r\nimport AmpRedirectBuyWidget from \"$Feature/Products/code/src/amp-redirect-buy-widget\";\r\nimport LiveChat from \"$Feature/GenericComponents/code/src/live-chat\";\r\nimport LiveChatPopup from \"$Feature/GenericComponents/code/src/live-chat-popup\";\r\nimport TencentVideo from \"$Feature/GenericComponents/code/src/tencent-video\";\r\n\r\nimport BrowserRegion from \"$Feature/RegionPicker/code/src/browser-region\";\r\nimport ManualRegion from \"$Feature/RegionPicker/code/src/manual-region\";\r\nimport RegionLinks from \"$Feature/RegionPicker/code/src/region-links\";\r\nimport TimelineLink from \"$Feature/GenericComponents/code/src/puppies-kittens/timeline\";\r\nimport CommerceButton from \"$Feature/GenericComponents/code/src/commerce-button\";\r\nimport HeroPanel from \"$Feature/GenericComponents/code/src/hero-panel\";\r\nimport ModalNav from \"$Feature/GenericComponents/code/src/modal-nav\";\r\nimport VetFocusArticles from \"$Feature/VetFocusArticles/code/src/\";\r\nimport VetFocusIssueCard from \"$Feature/VetFocusIssues/code/src/issue-card\";\r\nimport VetFocusArticleIssueDetail from \"$Feature/VetFocusIssues/code/src/article-issue-detail\";\r\nimport VetFocusSocialLinks from \"$src/Project/VetFocusMetadata/code/src/social-links\";\r\nimport EnlargeImage from \"$Feature/GenericComponents/code/src/enlarge-image\";\r\nimport MyAccountRegisterStep from \"$Feature/GenericComponents/code/src/my-account-register-step\";\r\nimport MyAccount from \"$Feature/GenericComponents/code/src/my-account\";\r\nimport PromoItem from \"$Feature/GenericComponents/code/src/promo-item\";\r\nimport NavigationProductBlock from \"$Feature/GenericComponents/code/src/navigation-product-block\";\r\nimport NavigationContactDropdown from \"$Feature/GenericComponents/code/src/navigation-contact-dropdown\";\r\nimport NavigationItemsList from \"$Feature/GenericComponents/code/src/navigation-items-list\";\r\nimport HeaderBar from \"$Feature/HeaderBar/code/src/\";\r\n\r\nimport CopyLink from \"$Feature/GenericComponents/code/src/copy-link\";\r\nimport HomepageCarousel from \"$Feature/GenericComponents/code/src/homepage-carousel\";\r\nimport \"$Feature/GenericComponents/code/src/mobile-filter-button\";\r\nimport AccordionBreed from \"$Feature/GenericComponents/code/src/accordion\";\r\nimport MarketPicker from \"$Feature/KittenZooplus/Code/src/market-picker\";\r\nimport RoutineStep from \"$Feature/GenericComponents/Code/src/routine-step\";\r\n// BaseCore\r\n\r\nimport \"$Foundation/src/js/lazysizes\";\r\nimport BaseCore from \"$Foundation/src/js/BaseCore\";\r\n\r\nwindow.React = React;\r\n\r\nconst baseCore = new BaseCore();\r\n\r\nbaseCore.componentClasses = [\r\n PfRecommendations,\r\n LanguagePicker,\r\n Filter,\r\n MobileSearchButton,\r\n AutoComplete,\r\n ButtonSwitch,\r\n Timeline,\r\n ReadMore,\r\n ListingWithPagination,\r\n SearchResults,\r\n Form,\r\n Recaptcha,\r\n ShowRule,\r\n HiddenIf,\r\n ServerValidation,\r\n Map,\r\n ProductRating,\r\n WriteReview,\r\n FiltersList,\r\n ReviewFeedback,\r\n PSTracking,\r\n ArticleTabbedNavigation,\r\n ArticleTags,\r\n RelatedArticles,\r\n ArticleReadingTime,\r\n VideoPanel,\r\n ProductBlock,\r\n ContentCards,\r\n CarouselEventTracker,\r\n CtaEventTracker,\r\n SearchEventTracker,\r\n NavigationEventTracker,\r\n ContentTracker,\r\n ContentAnimation,\r\n ViewAllArticles,\r\n ProductTrack,\r\n ProductDetails,\r\n ProductListTrack,\r\n AmpRedirectBuyWidget,\r\n LiveChat,\r\n LiveChatPopup,\r\n TencentVideo,\r\n TabbedImage,\r\n BrowserRegion,\r\n ManualRegion,\r\n RegionLinks,\r\n TimelineLink,\r\n CommerceButton,\r\n HeroPanel,\r\n ModalNav,\r\n VetFocusArticles,\r\n VetFocusIssueCard,\r\n VetFocusArticleIssueDetail,\r\n VetFocusSocialLinks,\r\n VetFocusArticles,\r\n EnlargeImage,\r\n MyAccountRegisterStep,\r\n MyAccount,\r\n PromoItem,\r\n NavigationProductBlock,\r\n NavigationContactDropdown,\r\n NavigationItemsList,\r\n HeaderBar,\r\n StockistsLandingPage,\r\n LanguagePickerEukanuba,\r\n CopyLink,\r\n HomepageCarousel,\r\n ParagraphsInTwoColumns,\r\n MarketPicker,\r\n AccordionBreed,\r\n LanguagePickerQRCode,\r\n BackToTop,\r\n SocialSharing,\r\n RoutineStep,\r\n ArticleHeroPanel,\r\n];\r\nbaseCore.init();\r\n\r\n// SVG Sprite\r\n\r\nconst files = require.context(\"$Foundation/src/svg\", true, /^\\.\\/.*\\.svg/);\r\nfiles.keys().forEach(files);\r\n\r\nwindow.RC = {\r\n components: {\r\n \"article-card\": ArticleCard,\r\n \"my-account-dropdown\": MyAccountDropdown,\r\n },\r\n};\r\n\r\nautobind();\r\n","import { get } from \"lodash\";\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\n\r\nconst bind = (componentPath, domElement) => {\r\n const props = {};\r\n Object.keys(domElement.dataset).forEach((key) => {\r\n if (key.startsWith(\"prop\")) {\r\n const Key = key.substring(4, key.length);\r\n const newKey = Key.charAt(0).toLowerCase() + Key.slice(1);\r\n props[newKey] = domElement.dataset[key];\r\n }\r\n });\r\n\r\n const Component = get(window, `RC.components.${componentPath}`);\r\n if (Component) {\r\n ReactDOM.render(, domElement);\r\n }\r\n};\r\n\r\nexport const autobind = () => {\r\n const targets = Array.from(document.querySelectorAll(\"[data-react]\"));\r\n\r\n targets.forEach((target) => {\r\n bind(target.dataset.react, target);\r\n });\r\n};\r\n","var Handlebars = require(\"D:\\\\a\\\\1\\\\s\\\\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 \"
  • \"\n + container.escapeExpression(container.lambda(depth0, depth0))\n + \"
  • \\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"
      \\r\\n
    • \"\n + container.escapeExpression(((helper = (helper = helpers.distance || (depth0 != null ? depth0.distance : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"distance\",\"hash\":{},\"data\":data}) : helper)))\n + \"
    • \\r\\n
    \\r\\n \";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"\\r\\n
      \\r\\n\"\n + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.openingHours : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n return \"
  • \"\n + container.escapeExpression(container.lambda(depth0, depth0))\n + \"
  • \\r\\n\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \" \\r\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.escapeExpression, alias2=container.lambda;\n\n return \" href=\\\"https://map.kakao.com/link/to/\"\n + alias1(((helper = (helper = helpers.companyName || (depth0 != null ? depth0.companyName : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"companyName\",\"hash\":{},\"data\":data}) : helper)))\n + \",\"\n + alias1(alias2(((stack1 = (depth0 != null ? depth0.location : depth0)) != null ? stack1.lat : stack1), depth0))\n + \",\"\n + alias1(alias2(((stack1 = (depth0 != null ? depth0.location : depth0)) != null ? stack1.lng : stack1), depth0))\n + \"\\\"\\r\\n\";\n},\"12\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression;\n\n return \" href=\\\"https://www.google.com/maps?saddr=My+Location&daddr=\"\n + alias2(alias1(((stack1 = (depth0 != null ? depth0.location : depth0)) != null ? stack1.lat : stack1), depth0))\n + \",\"\n + alias2(alias1(((stack1 = (depth0 != null ? depth0.location : depth0)) != null ? stack1.lng : stack1), depth0))\n + \"\\\"\\r\\n\";\n},\"14\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \" \"\n + alias4(((helper = (helper = helpers.visitWebsite || (depth0 != null ? depth0.visitWebsite : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"visitWebsite\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"
    \\r\\n
    \\r\\n
      \\r\\n\"\n + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.tags : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"
    \\r\\n

    \\r\\n \"\n + alias4(((helper = (helper = helpers.companyName || (depth0 != null ? depth0.companyName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"companyName\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \"\n + alias4(((helper = (helper = helpers.address || (depth0 != null ? depth0.address : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"address\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n \\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.distance : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \" \"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.openingHours : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"
    \\r\\n\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.phone : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\r\\n

    \\r\\n \\r\\n \\r\\n \"\n + alias4(((helper = (helper = helpers.getDirections || (depth0 != null ? depth0.getDirections : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"getDirections\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n \\r\\n \\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.websiteUrl : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"

    \\r\\n
    \\r\\n
    \\r\\n\";\n},\"useData\":true});",";(function(window){\nvar hadGlobal = 'Modernizr' in window;\nvar oldGlobal = window.Modernizr;\n/*! modernizr 3.6.0 (Custom Build) | MIT *\n * https://modernizr.com/download/?-appearance-csstransforms3d-customevent-flexbox-flexboxlegacy-smil-touchevents-mq-prefixed-setclasses-shiv !*/\n!function(e,t,n){function r(e,t){return typeof e===t}function o(){var e,t,n,o,a,i,s;for(var l in S)if(S.hasOwnProperty(l)){if(e=[],t=S[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;nf;f++)if(h=e[f],v=N.style[h],i(h,\"-\")&&(h=p(h)),N.style[h]!==n){if(a||r(o,\"undefined\"))return l(),\"pfx\"==t?h:!0;try{N.style[h]=o}catch(y){}if(N.style[h]!=v)return l(),\"pfx\"==t?h:!0}return l(),!1}function h(e,t){return function(){return e.apply(t,arguments)}}function v(e,t,n){var o;for(var a in e)if(e[a]in t)return n===!1?e[a]:(o=t[e[a]],r(o,\"function\")?h(o,n||t):o);return!1}function g(e,t,n,o,a){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+\" \"+_.join(i+\" \")+i).split(\" \");return r(t,\"string\")||r(t,\"undefined\")?m(s,t,o,a):(s=(e+\" \"+z.join(i+\" \")+i).split(\" \"),v(s,t,n))}function y(e,t,r){return g(e,n,n,t,r)}var S=[],C={_version:\"3.6.0\",_config:{classPrefix:\"\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){S.push({name:e,fn:t,options:n})},addAsyncTest:function(e){S.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=C,Modernizr=new Modernizr;var x=[],E=t.documentElement,b=\"svg\"===E.nodeName.toLowerCase();b||!function(e,t){function n(e,t){var n=e.createElement(\"p\"),r=e.getElementsByTagName(\"head\")[0]||e.documentElement;return n.innerHTML=\"x\",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=S.elements;return\"string\"==typeof e?e.split(\" \"):e}function o(e,t){var n=S.elements;\"string\"!=typeof n&&(n=n.join(\" \")),\"string\"!=typeof e&&(e=e.join(\" \")),S.elements=n+\" \"+e,u(t)}function a(e){var t=y[e[v]];return t||(t={},g++,e[v]=g,y[g]=t),t}function i(e,n,r){if(n||(n=t),f)return n.createElement(e);r||(r=a(n));var o;return o=r.cache[e]?r.cache[e].cloneNode():h.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!o.canHaveChildren||m.test(e)||o.tagUrn?o:r.frag.appendChild(o)}function s(e,n){if(e||(e=t),f)return e.createDocumentFragment();n=n||a(e);for(var o=n.frag.cloneNode(),i=0,s=r(),l=s.length;l>i;i++)o.createElement(s[i]);return o}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return S.shivMethods?i(n,e,t):t.createElem(n)},e.createDocumentFragment=Function(\"h,f\",\"return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(\"+r().join().replace(/[\\w\\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c(\"'+e+'\")'})+\");return n}\")(S,t.frag)}function u(e){e||(e=t);var r=a(e);return!S.shivCSS||c||r.hasCSS||(r.hasCSS=!!n(e,\"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}\")),f||l(e,r),e}var c,f,d=\"3.7.3\",p=e.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,h=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v=\"_html5shiv\",g=0,y={};!function(){try{var e=t.createElement(\"a\");e.innerHTML=\"\",c=\"hidden\"in e,f=1==e.childNodes.length||function(){t.createElement(\"a\");var e=t.createDocumentFragment();return\"undefined\"==typeof e.cloneNode||\"undefined\"==typeof e.createDocumentFragment||\"undefined\"==typeof e.createElement}()}catch(n){c=!0,f=!0}}();var S={elements:p.elements||\"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video\",version:d,shivCSS:p.shivCSS!==!1,supportsUnknownElements:f,shivMethods:p.shivMethods!==!1,type:\"default\",shivDocument:u,createElement:i,createDocumentFragment:s,addElements:o};e.html5=S,u(t),\"object\"==typeof module&&module.exports&&(module.exports=S)}(\"undefined\"!=typeof e?e:this,t);var w=\"Moz O ms Webkit\",_=C._config.usePrefixes?w.split(\" \"):[];C._cssomPrefixes=_;var T={elem:s(\"modernizr\")};Modernizr._q.push(function(){delete T.elem});var N={style:T.elem.style};Modernizr._q.unshift(function(){delete N.style});var z=C._config.usePrefixes?w.toLowerCase().split(\" \"):[];C._domPrefixes=z,C.testAllProps=g;var j=function(t){var r,o=M.length,a=e.CSSRule;if(\"undefined\"==typeof a)return n;if(!t)return!1;if(t=t.replace(/^@/,\"\"),r=t.replace(/-/g,\"_\").toUpperCase()+\"_RULE\",r in a)return\"@\"+t;for(var i=0;o>i;i++){var s=M[i],l=s.toUpperCase()+\"_\"+r;if(l in a)return\"@-\"+s.toLowerCase()+\"-\"+t}return!1};C.atRule=j;var k=(C.prefixed=function(e,t,n){return 0===e.indexOf(\"@\")?j(e):(-1!=e.indexOf(\"-\")&&(e=p(e)),t?g(e,t,n):g(e,\"pfx\"))},function(){var t=e.matchMedia||e.msMatchMedia;return t?function(e){var n=t(e);return n&&n.matches||!1}:function(t){var n=!1;return u(\"@media \"+t+\" { #modernizr { position: absolute; } }\",function(t){n=\"absolute\"==(e.getComputedStyle?e.getComputedStyle(t,null):t.currentStyle).position}),n}}());C.mq=k,C.testAllProps=y;var P=\"CSS\"in e&&\"supports\"in e.CSS,F=\"supportsCSS\"in e;Modernizr.addTest(\"supports\",P||F),Modernizr.addTest(\"csstransforms3d\",function(){return!!y(\"perspective\",\"1px\",!0)}),Modernizr.addTest(\"flexboxlegacy\",y(\"boxDirection\",\"reverse\",!0)),Modernizr.addTest(\"flexbox\",y(\"flexBasis\",\"1px\",!0));var M=C._config.usePrefixes?\" -webkit- -moz- -o- -ms- \".split(\" \"):[\"\",\"\"];C._prefixes=M;var D=C.testStyles=u;Modernizr.addTest(\"touchevents\",function(){var n;if(\"ontouchstart\"in e||e.DocumentTouch&&t instanceof DocumentTouch)n=!0;else{var r=[\"@media (\",M.join(\"touch-enabled),(\"),\"heartz\",\")\",\"{#modernizr{top:9px;position:absolute}}\"].join(\"\");D(r,function(e){n=9===e.offsetTop})}return n}),Modernizr.addTest(\"appearance\",y(\"appearance\"));var L={}.toString;Modernizr.addTest(\"smil\",function(){return!!t.createElementNS&&/SVGAnimate/.test(L.call(t.createElementNS(\"http://www.w3.org/2000/svg\",\"animate\")))}),Modernizr.addTest(\"customevent\",\"CustomEvent\"in e&&\"function\"==typeof e.CustomEvent),o(),a(x),delete C.addTest,delete C.addAsyncTest;for(var q=0;q {\r\n window.Parsley && window.Parsley.addMessages('al', {\r\n defaultMessage: \"Kjo vlerë është invalide.\",\r\n type: {\r\n email: \"Kjo vlerë duhet të ketë formë valide të një email adrese.\",\r\n url: \"Kjo vlerë duhet të ketë formë valide të një URL-je.\",\r\n number: \"Kjo vlerë duhet të jetë numërike.\",\r\n integer: \"Kjo vlerë duhet të jetë numër i plotë.\",\r\n digits: \"Kjo vlerë duhet të jetë shifër.\",\r\n alphanum: \"Kjo vlerë duhet të jetë alfanumerike.\"\r\n },\r\n notblank: \"Kjo vlerë nuk duhet të jetë e zbrazët.\",\r\n required: \"Kjo vlerë kërkohet domosdosmërisht.\",\r\n pattern: \"Kjo vlerë është invalide.\",\r\n min: \"Kjo vlerë duhet të jetë më e madhe ose e barabartë me %s.\",\r\n max: \"Kjo vlerë duhet të jetë më e vogël ose e barabartë me %s.\",\r\n range: \"Kjo vlerë duhet të jetë në mes të %s dhe %s.\",\r\n minlength: \"Kjo vlerë është shum e shkurtë. Ajo duhet të ketë %s apo më shum shkronja.\",\r\n maxlength: \"Kjo vlerë është shum e gjatë. Ajo duhet të ketë %s apo më pak shkronja\",\r\n length: \"Gjatësia e kësaj vlere është invalide. Ajo duhet të jetë në mes të %s dhe %s shkronjash.\",\r\n mincheck: \"Ju duhet të zgjedhni së paku %s zgjedhje.\",\r\n maxcheck: \"Ju duhet të zgjedhni %s ose më pak zgjedhje.\",\r\n check: \"Ju duhet të zgjedhni në mes të %s dhe %s zgjedhjeve.\",\r\n equalto: \"Kjo vlerë duhet të jetë e njejtë.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('al');\r\n});\r\n","var Handlebars = require(\"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\handlebars\\\\runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"
  • \\r\\n \"\n + alias4(((helper = (helper = helpers.text || (depth0 != null ? depth0.text : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"text\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n \\r\\n
  • \\r\\n\";\n},\"useData\":true});","var Handlebars = require(\"D:\\\\a\\\\1\\\\s\\\\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 \"
  • \"\n + container.escapeExpression(container.lambda(depth0, depth0))\n + \"
  • \\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"
      \\r\\n
    • \"\n + container.escapeExpression(((helper = (helper = helpers.distance || (depth0 != null ? depth0.distance : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"distance\",\"hash\":{},\"data\":data}) : helper)))\n + \"
    • \\r\\n
    \\r\\n \";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"\\r\\n
      \\r\\n\"\n + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.openingTimes : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"
    \\r\\n\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n return \"
  • \"\n + container.escapeExpression(container.lambda(depth0, depth0))\n + \"
  • \\r\\n\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \" \\r\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.escapeExpression, alias2=container.lambda;\n\n return \" href=\\\"https://map.kakao.com/link/to/\"\n + alias1(((helper = (helper = helpers.companyName || (depth0 != null ? depth0.companyName : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"companyName\",\"hash\":{},\"data\":data}) : helper)))\n + \",\"\n + alias1(alias2(((stack1 = (depth0 != null ? depth0.location : depth0)) != null ? stack1.lat : stack1), depth0))\n + \",\"\n + alias1(alias2(((stack1 = (depth0 != null ? depth0.location : depth0)) != null ? stack1.lng : stack1), depth0))\n + \"\\\"\\r\\n\";\n},\"12\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression;\n\n return \" href=\\\"https://www.google.com/maps?saddr=My+Location&daddr=\"\n + alias2(alias1(((stack1 = (depth0 != null ? depth0.location : depth0)) != null ? stack1.lat : stack1), depth0))\n + \",\"\n + alias2(alias1(((stack1 = (depth0 != null ? depth0.location : depth0)) != null ? stack1.lng : stack1), depth0))\n + \"\\\"\\r\\n\";\n},\"14\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \" \\r\\n \"\n + alias4(((helper = (helper = helpers.visitWebsite || (depth0 != null ? depth0.visitWebsite : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"visitWebsite\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n \\r\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"\\r\\n
    \\r\\n
    \\r\\n
      \\r\\n\"\n + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.tags : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"
    \\r\\n

    \\r\\n \"\n + alias4(((helper = (helper = helpers.companyName || (depth0 != null ? depth0.companyName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"companyName\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \"\n + alias4(((helper = (helper = helpers.address || (depth0 != null ? depth0.address : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"address\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n \\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.distance : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \" \"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.openingTimes : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"
    \\r\\n\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.phone : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\r\\n
    \\r\\n \\r\\n \"\n + alias4(((helper = (helper = helpers.getDirections || (depth0 != null ? depth0.getDirections : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"getDirections\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n \\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.websiteUrl : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"

    \\r\\n
    \\r\\n
    \\r\\n\";\n},\"useData\":true});","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ar', {\r\n defaultMessage: \"تأكد من صحة القيمة المدخل\",\r\n type: {\r\n email: \"تأكد من إدخال بريد الكتروني صحيح\",\r\n url: \"تأكد من إدخال رابط صحيح\",\r\n number: \"تأكد من إدخال رقم\",\r\n integer: \"تأكد من إدخال عدد صحيح بدون كسور\",\r\n digits: \"تأكد من إدخال رقم\",\r\n alphanum: \"تأكد من إدخال حروف وأرقام فقط\"\r\n },\r\n notblank: \"تأكد من تعبئة الحقل\",\r\n required: \"هذا الحقل مطلوب\",\r\n pattern: \"القيمة المدخلة غير صحيحة\",\r\n min: \"القيمة المدخلة يجب أن تكون أكبر من %s.\",\r\n max: \"القيمة المدخلة يجب أن تكون أصغر من %s.\",\r\n range: \"القيمة المدخلة يجب أن تكون بين %s و %s.\",\r\n minlength: \"القيمة المدخلة قصيرة جداً . تأكد من إدخال %s حرف أو أكثر\",\r\n maxlength: \"القيمة المدخلة طويلة . تأكد من إدخال %s حرف أو أقل\",\r\n length: \"القيمة المدخلة غير صحيحة. تأكد من إدخال بين %s و %s خانة\",\r\n mincheck: \"يجب اختيار %s خيار على الأقل.\",\r\n maxcheck: \"يجب اختيار%s خيار أو أقل\",\r\n check: \"يجب اختيار بين %s و %s خيار.\",\r\n equalto: \"تأكد من تطابق القيمتين المدخلة.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('ar');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('bg', {\r\n defaultMessage: \"Невалидна стойност.\",\r\n type: {\r\n email: \"Невалиден имейл адрес.\",\r\n url: \"Невалиден URL адрес.\",\r\n number: \"Невалиден номер.\",\r\n integer: \"Невалиден номер.\",\r\n digits: \"Невалидни цифри.\",\r\n alphanum: \"Стойността трябва да садържа само букви или цифри.\"\r\n },\r\n notblank: \"Полето е задължително.\",\r\n required: \"Полето е задължително.\",\r\n pattern: \"Невалидна стойност.\",\r\n min: \"Стойността трябва да бъде по-голяма или равна на %s.\",\r\n max: \"Стойността трябва да бъде по-малка или равна на %s.\",\r\n range: \"Стойността трябва да бъде между %s и %s.\",\r\n minlength: \"Стойността е прекалено кратка. Мин. дължина: %s символа.\",\r\n maxlength: \"Стойността е прекалено дълга. Макс. дължина: %s символа.\",\r\n length: \"Дължината на стойността трябва да бъде между %s и %s символа.\",\r\n mincheck: \"Трябва да изберете поне %s стойности.\",\r\n maxcheck: \"Трябва да изберете най-много %s стойности.\",\r\n check: \"Трябва да изберете между %s и %s стойности.\",\r\n equalto: \"Стойността трябва да съвпада.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('bg');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ca', {\r\n defaultMessage: \"Aquest valor sembla ser invàlid.\",\r\n type: {\r\n email: \"Aquest valor ha de ser una adreça de correu electrònic vàlida.\",\r\n url: \"Aquest valor ha de ser una URL vàlida.\",\r\n number: \"Aquest valor ha de ser un nombre vàlid.\",\r\n integer: \"Aquest valor ha de ser un nombre enter vàlid.\",\r\n digits: \"Aquest valor només pot contenir dígits.\",\r\n alphanum: \"Aquest valor ha de ser alfanumèric.\"\r\n },\r\n notblank: \"Aquest valor no pot ser buit.\",\r\n required: \"Aquest valor és obligatori.\",\r\n pattern: \"Aquest valor és incorrecte.\",\r\n min: \"Aquest valor no pot ser menor que %s.\",\r\n max: \"Aquest valor no pot ser major que %s.\",\r\n range: \"Aquest valor ha d'estar entre %s i %s.\",\r\n minlength: \"Aquest valor és massa curt. La longitud mínima és de %s caràcters.\",\r\n maxlength: \"Aquest valor és massa llarg. La longitud màxima és de %s caràcters.\",\r\n length: \"La longitud d'aquest valor ha de ser d'entre %s i %s caràcters.\",\r\n mincheck: \"Has de marcar un mínim de %s opcions.\",\r\n maxcheck: \"Has de marcar un màxim de %s opcions.\",\r\n check: \"Has de marcar entre %s i %s opcions.\",\r\n equalto: \"Aquest valor ha de ser el mateix.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('ca');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('cs', {\r\n dateiso: \"Tato položka musí být datum ve formátu RRRR-MM-DD.\",\r\n minwords: \"Tato položka musí mít délku nejméně %s slov.\",\r\n maxwords: \"Tato položka musí mít délku nejvíce %s slov.\",\r\n words: \"Tato položka musí být od %s do %s slov dlouhá.\",\r\n gt: \"Tato hodnota musí být větší.\",\r\n gte: \"Tato hodnota musí být větší nebo rovna.\",\r\n lt: \"Tato hodnota musí být menší.\",\r\n lte: \"Tato hodnota musí být menší nebo rovna.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('cs', {\r\n defaultMessage: \"Tato položka je neplatná.\",\r\n type: {\r\n email: \"Tato položka musí být e-mailová adresa.\",\r\n url: \"Tato položka musí být platná URL adresa.\",\r\n number: \"Tato položka musí být číslo.\",\r\n integer: \"Tato položka musí být celé číslo.\",\r\n digits: \"Tato položka musí být kladné celé číslo.\",\r\n alphanum: \"Tato položka musí být alfanumerická.\"\r\n },\r\n notblank: \"Tato položka nesmí být prázdná.\",\r\n required: \"Tato položka je povinná.\",\r\n pattern: \"Tato položka je neplatná.\",\r\n min: \"Tato položka musí být větší nebo rovna %s.\",\r\n max: \"Tato položka musí být menší nebo rovna %s.\",\r\n range: \"Tato položka musí být v rozsahu od %s do %s.\",\r\n minlength: \"Tato položka musí mít nejméně %s znaků.\",\r\n maxlength: \"Tato položka musí mít nejvíce %s znaků.\",\r\n length: \"Tato položka musí mít délku od %s do %s znaků.\",\r\n mincheck: \"Je nutné vybrat alespoň %s možností.\",\r\n maxcheck: \"Je nutné vybrat nejvýše %s možností.\",\r\n check: \"Je nutné vybrat od %s do %s možností.\",\r\n equalto: \"Tato položka musí být stejná.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('cs');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('da', {\r\n defaultMessage: \"Indtast venligst en korrekt værdi.\",\r\n type: {\r\n email: \"Indtast venligst en korrekt emailadresse.\",\r\n url: \"Indtast venligst en korrekt internetadresse.\",\r\n number: \"Indtast venligst et tal.\",\r\n integer: \"Indtast venligst et heltal.\",\r\n digits: \"Dette felt må kun bestå af tal.\",\r\n alphanum: \"Dette felt skal indeholde både tal og bogstaver.\"\r\n },\r\n notblank: \"Dette felt må ikke være tomt.\",\r\n required: \"Dette felt er påkrævet.\",\r\n pattern: \"Ugyldig indtastning.\",\r\n min: \"Dette felt skal indeholde et tal som er større end eller lig med %s.\",\r\n max: \"Dette felt skal indeholde et tal som er mindre end eller lig med %s.\",\r\n range: \"Dette felt skal indeholde et tal mellem %s og %s.\",\r\n minlength: \"Indtast venligst mindst %s tegn.\",\r\n maxlength: \"Dette felt kan højst indeholde %s tegn.\",\r\n length: \"Længden af denne værdi er ikke korrekt. Værdien skal være mellem %s og %s tegn lang.\",\r\n mincheck: \"Vælg mindst %s muligheder.\",\r\n maxcheck: \"Vælg op til %s muligheder.\",\r\n check: \"Vælg mellem %s og %s muligheder.\",\r\n equalto: \"De to felter er ikke ens.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('da');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('de', {\r\n dateiso: \"Die Eingabe muss ein gültiges Datum sein (YYYY-MM-DD).\",\r\n minwords: \"Die Eingabe ist zu kurz. Sie muss aus %s oder mehr Wörtern bestehen.\",\r\n maxwords: \"Die Eingabe ist zu lang. Sie muss aus %s oder weniger Wörtern bestehen.\",\r\n words: \"Die Länge der Eingabe ist ungültig. Sie muss zwischen %s und %s Wörter enthalten.\",\r\n gt: \"Die Eingabe muss größer sein.\",\r\n gte: \"Die Eingabe muss größer oder gleich sein.\",\r\n lt: \"Die Eingabe muss kleiner sein.\",\r\n lte: \"Die Eingabe muss kleiner oder gleich sein.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('de', {\r\n defaultMessage: \"Die Eingabe scheint nicht korrekt zu sein.\",\r\n type: {\r\n email: \"Die Eingabe muss eine gültige E-Mail-Adresse sein.\",\r\n url: \"Die Eingabe muss eine gültige URL sein.\",\r\n number: \"Die Eingabe muss eine Zahl sein.\",\r\n integer: \"Die Eingabe muss eine Zahl sein.\",\r\n digits: \"Die Eingabe darf nur Ziffern enthalten.\",\r\n alphanum: \"Die Eingabe muss alphanumerisch sein.\"\r\n },\r\n notblank: \"Die Eingabe darf nicht leer sein.\",\r\n required: \"Dies ist ein Pflichtfeld.\",\r\n pattern: \"Die Eingabe scheint ungültig zu sein.\",\r\n min: \"Die Eingabe muss größer oder gleich %s sein.\",\r\n max: \"Die Eingabe muss kleiner oder gleich %s sein.\",\r\n range: \"Die Eingabe muss zwischen %s und %s liegen.\",\r\n minlength: \"Die Eingabe ist zu kurz. Es müssen mindestens %s Zeichen eingegeben werden.\",\r\n maxlength: \"Die Eingabe ist zu lang. Es dürfen höchstens %s Zeichen eingegeben werden.\",\r\n length: \"Die Länge der Eingabe ist ungültig. Es müssen zwischen %s und %s Zeichen eingegeben werden.\",\r\n mincheck: \"Wählen Sie mindestens %s Angaben aus.\",\r\n maxcheck: \"Wählen Sie maximal %s Angaben aus.\",\r\n check: \"Wählen Sie zwischen %s und %s Angaben.\",\r\n equalto: \"Dieses Feld muss dem anderen entsprechen.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('de');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('el', {\r\n dateiso: \"Η τιμή πρέπει να είναι μια έγκυρη ημερομηνία (YYYY-MM-DD).\",\r\n minwords: \"Το κείμενο είναι πολύ μικρό. Πρέπει να έχει %s ή και περισσότερες λέξεις.\",\r\n maxwords: \"Το κείμενο είναι πολύ μεγάλο. Πρέπει να έχει %s ή και λιγότερες λέξεις.\",\r\n words: \"Το μήκος του κειμένου είναι μη έγκυρο. Πρέπει να είναι μεταξύ %s και %s λεξεων.\",\r\n gt: \"Η τιμή πρέπει να είναι μεγαλύτερη.\",\r\n gte: \"Η τιμή πρέπει να είναι μεγαλύτερη ή ίση.\",\r\n lt: \"Η τιμή πρέπει να είναι μικρότερη.\",\r\n lte: \"Η τιμή πρέπει να είναι μικρότερη ή ίση.\",\r\n notequalto: \"Η τιμή πρέπει να είναι διαφορετική.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('el', {\r\n defaultMessage: \"Η τιμή φαίνεται να είναι μη έγκυρη.\",\r\n type: {\r\n email: \"Η τιμή πρέπει να είναι ένα έγκυρο email.\",\r\n url: \"Η τιμή πρέπει να είναι ένα έγκυρο url.\",\r\n number: \"Η τιμή πρέπει να είναι ένας έγκυρος αριθμός.\",\r\n integer: \"Η τιμή πρέπει να είναι ένας έγκυρος ακέραιος.\",\r\n digits: \"Η τιμή πρέπει να είναι ψηφία.\",\r\n alphanum: \"Η τιμή πρέπει να είναι αλφαριθμητικό.\"\r\n },\r\n notblank: \"Η τιμή δεν πρέπει να είναι κενή.\",\r\n required: \"Απαιτούμενο πεδίο\",\r\n pattern: \"Η τιμή φαίνεται να είναι μη έγκυρη.\",\r\n min: \"Η τιμή πρέπει να είναι μεγαλύτερη ή ίση με %s.\",\r\n max: \"Η τιμή πρέπει να είναι μικρότερη ή ίση με %s.\",\r\n range: \"Η τιμή πρέπει να είναι μεταξύ %s και %s.\",\r\n minlength: \"Το κείμενο είναι πολύ μικρό. Πρέπει να είναι %s ή και περισσότεροι χαρακτήρες.\",\r\n maxlength: \"Η κείμενο είναι πολύ μεγάλο. Πρέπει να είναι %s ή και λιγότεροι χαρακτήρες.\",\r\n length: \"Το μήκος του κειμένου είναι μη έγκυρο. Πρέπει να είναι μεταξύ %s και %s χαρακτήρων.\",\r\n mincheck: \"Πρέπει να επιλέξετε τουλάχιστον %s επιλογές.\",\r\n maxcheck: \"Πρέπει να επιλέξετε %s ή λιγότερες επιλογές.\",\r\n check: \"Πρέπει να επιλέξετε μεταξύ %s και %s επίλογων.\",\r\n equalto: \"Η τιμή πρέπει να είναι η ίδια.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('el');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('en', {\r\n dateiso: \"This value should be a valid date (YYYY-MM-DD).\",\r\n date: \"It must be a valid date with format %s\",\r\n datebeforenow: \"Date must be valid with format %s and be before now\",\r\n dateafternow: \"Date must be valid with format %s and be after now\",\r\n minwords: \"This value is too short. It should have %s words or more.\",\r\n maxwords: \"This value is too long. It should have %s words or fewer.\",\r\n words: \"This value length is invalid. It should be between %s and %s words long.\",\r\n gt: \"This value should be greater than %s.\",\r\n gte: \"This value should be greater or equal to %s.\",\r\n lt: \"This value should be less than %s.\",\r\n lte: \"This value should be less or equal to %s.\",\r\n notequalto: \"This value should be different from %s.\"\r\n });\r\n});\r\n","// This is included with the window.Parsley && window.Parsley library itself,\r\n// thus there is no use in adding it to your project.\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('en', {\r\n defaultMessage: \"This value seems to be invalid.\",\r\n type: {\r\n email: \"This value should be a valid email.\",\r\n url: \"This value should be a valid url.\",\r\n number: \"This value should be a valid number.\",\r\n integer: \"This value should be a valid integer.\",\r\n digits: \"This value should be digits.\",\r\n alphanum: \"This value should be alphanumeric.\"\r\n },\r\n notblank: \"This value should not be blank.\",\r\n required: \"This value is required.\",\r\n pattern: \"This value seems to be invalid.\",\r\n min: \"This value should be greater than or equal to %s.\",\r\n max: \"This value should be lower than or equal to %s.\",\r\n range: \"This value should be between %s and %s.\",\r\n minlength: \"This value is too short. It should have %s characters or more.\",\r\n maxlength: \"This value is too long. It should have %s characters or fewer.\",\r\n length: \"This value length is invalid. It should be between %s and %s characters long.\",\r\n mincheck: \"You must select at least %s choices.\",\r\n maxcheck: \"You must select %s choices or fewer.\",\r\n check: \"You must select between %s and %s choices.\",\r\n equalto: \"This value should be the same.\",\r\n euvatin: \"It's not a valid VAT Identification Number.\",\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('en');\r\n});\r\n","// window.Parsley && window.ParsleyConfig definition if not already set\r\n// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('es', {\r\n defaultMessage: \"Este valor parece ser inválido.\",\r\n type: {\r\n email: \"Este valor debe ser un correo válido.\",\r\n url: \"Este valor debe ser una URL válida.\",\r\n number: \"Este valor debe ser un número válido.\",\r\n integer: \"Este valor debe ser un número válido.\",\r\n digits: \"Este valor debe ser un dígito válido.\",\r\n alphanum: \"Este valor debe ser alfanumérico.\"\r\n },\r\n notblank: \"Este valor no debe estar en blanco.\",\r\n required: \"Este valor es requerido.\",\r\n pattern: \"Este valor es incorrecto.\",\r\n min: \"Este valor no debe ser menor que %s.\",\r\n max: \"Este valor no debe ser mayor que %s.\",\r\n range: \"Este valor debe estar entre %s y %s.\",\r\n minlength: \"Este valor es muy corto. La longitud mínima es de %s caracteres.\",\r\n maxlength: \"Este valor es muy largo. La longitud máxima es de %s caracteres.\",\r\n length: \"La longitud de este valor debe estar entre %s y %s caracteres.\",\r\n mincheck: \"Debe seleccionar al menos %s opciones.\",\r\n maxcheck: \"Debe seleccionar %s opciones o menos.\",\r\n check: \"Debe seleccionar entre %s y %s opciones.\",\r\n equalto: \"Este valor debe ser idéntico.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('es');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('et', {\r\n defaultMessage: \"See väärtus ei sobi.\",\r\n type: {\r\n email: \"See väärtus peab olema kehtiv email.\",\r\n url: \"See väärtus peab olema kehtiv link.\",\r\n number: \"See väärtus peab olema number.\",\r\n integer: \"See väärtus peab olema täisarv.\",\r\n digits: \"See väärtus peab olema number.\",\r\n alphanum: \"See väärtus peab olema täht või number.\"\r\n },\r\n notblank: \"See väärtus ei tohi olla tühi.\",\r\n required: \"See väärtus on nõutud.\",\r\n pattern: \"See väärtus ei sobi.\",\r\n min: \"See väärtus peab olema suurem või võrdne %s.\",\r\n max: \"See väärtus peab olema väiksem või võrdne %s.\",\r\n range: \"See väärtus peab olema %s ja %s vahel.\",\r\n minlength: \"See väärtus on liiga lühike. Peab olema vähemalt %s tähte.\",\r\n maxlength: \"See väärtus ei tohi olla rohkem kui %s tähte.\",\r\n length: \"See väärtuse pikkus ei sobi. Peab olema vahemikus %s - %s.\",\r\n mincheck: \"Pead valima vähemalt %s valikut.\",\r\n maxcheck: \"Maksimaalselt %s valikut.\",\r\n check: \"Valik peab olema vahemikus %s ja %s .\",\r\n equalto: \"See väärtus peab olema sama.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('et');\r\n});","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('eu', {\r\n defaultMessage: \"Balio hau baliogabekoa dirudi.\",\r\n type: {\r\n email: \"Balio honek posta balioduna izan behar da.\",\r\n url: \"Balio honek URL balioduna izan behar da.\",\r\n number: \"Balio honek zenbaki balioduna izan behar da.\",\r\n integer: \"Balio honek zenbaki balioduna izan behar da.\",\r\n digits: \"Balio honek digitu balioduna izan behar da.\",\r\n alphanum: \"Balio honek alfanumerikoa izan behar da.\"\r\n },\r\n notblank: \"Balio honek ezin da hutsik egon.\",\r\n required: \"Balio hau nahitaezkoa da.\",\r\n pattern: \"Balio hau ez da zuzena.\",\r\n min: \"Balio honek %s baino baxuagoa ezin da izan.\",\r\n max: \"Balio honek %s baino altuagoa ezin da izan.\",\r\n range: \"Balio honek %s eta %s artean egon behar da.\",\r\n minlength: \"Balio hau oso motza da. Gutxienezko luzera %s karakteretakoa da.\",\r\n maxlength: \"Balio hau oso luzea da. Gehienezko luzera %s karakteretakoa da.\",\r\n length: \"Balio honen luzera %s eta %s karaketere artean egon behar da.\",\r\n mincheck: \"%s aukera hautatu behar dituzu gutxienez.\",\r\n maxcheck: \"%s aukera edo gutxiago hautatu behar dituzu.\",\r\n check: \"%s eta %s aukeren artean hautatu behar duzu.\",\r\n equalto: \"Balio honek berbera izan behar da.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('eu');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('fa', {\r\n defaultMessage: \"این مقدار صحیح نمی باشد\",\r\n type: {\r\n email: \"این مقدار باید یک ایمیل معتبر باشد\",\r\n url: \"این مقدار باید یک آدرس معتبر باشد\",\r\n number: \"این مقدار باید یک عدد معتبر باشد\",\r\n integer: \"این مقدار باید یک عدد صحیح معتبر باشد\",\r\n digits: \"این مقدار باید یک عدد باشد\",\r\n alphanum: \"این مقدار باید حروف الفبا باشد\"\r\n },\r\n notblank: \"این مقدار نباید خالی باشد\",\r\n required: \"این مقدار باید وارد شود\",\r\n pattern: \"این مقدار به نظر می رسد نامعتبر است\",\r\n min: \"این مقدیر باید بزرگتر با مساوی %s باشد\",\r\n max: \"این مقدار باید کمتر و یا مساوی %s باشد\",\r\n range: \"این مقدار باید بین %s و %s باشد\",\r\n minlength: \"این مقدار بیش از حد کوتاه است. باید %s کاراکتر یا بیشتر باشد.\",\r\n maxlength: \"این مقدار بیش از حد طولانی است. باید %s کاراکتر یا کمتر باشد.\",\r\n length: \"این مقدار نامعتبر است و باید بین %s و %s باشد\",\r\n mincheck: \"شما حداقل باید %s گزینه را انتخاب کنید.\",\r\n maxcheck: \"شما حداکثر می‌توانید %s انتخاب داشته باشید.\",\r\n check: \"باید بین %s و %s مورد انتخاب کنید\",\r\n equalto: \"این مقدار باید یکسان باشد\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('fa');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('fi', {\r\n dateiso: \"Syötä oikea päivämäärä (YYYY-MM-DD).\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('fi', {\r\n defaultMessage: \"Syötetty arvo on virheellinen.\",\r\n type: {\r\n email: \"Sähköpostiosoite on virheellinen.\",\r\n url: \"Url-osoite on virheellinen.\",\r\n number: \"Syötä numero.\",\r\n integer: \"Syötä kokonaisluku.\",\r\n digits: \"Syötä ainoastaan numeroita.\",\r\n alphanum: \"Syötä ainoastaan kirjaimia tai numeroita.\"\r\n },\r\n notblank: \"Tämä kenttää ei voi jättää tyhjäksi.\",\r\n required: \"Tämä kenttä on pakollinen.\",\r\n pattern: \"Syötetty arvo on virheellinen.\",\r\n min: \"Syötä arvo joka on yhtä suuri tai suurempi kuin %s.\",\r\n max: \"Syötä arvo joka on pienempi tai yhtä suuri kuin %s.\",\r\n range: \"Syötä arvo väliltä: %s-%s.\",\r\n minlength: \"Syötetyn arvon täytyy olla vähintään %s merkkiä pitkä.\",\r\n maxlength: \"Syötetty arvo saa olla enintään %s merkkiä pitkä.\",\r\n length: \"Syötetyn arvon täytyy olla vähintään %s ja enintään %s merkkiä pitkä.\",\r\n mincheck: \"Valitse vähintään %s vaihtoehtoa.\",\r\n maxcheck: \"Valitse enintään %s vaihtoehtoa.\",\r\n check: \"Valitse %s-%s vaihtoehtoa.\",\r\n equalto: \"Salasanat eivät täsmää.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('fi');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('fr', {\r\n dateiso: \"Cette valeur n'est pas une date valide (YYYY-MM-DD).\",\r\n minwords: \"Cette valeur est trop courte. Elle doit contenir au moins %s mots.\",\r\n maxwords: \"Cette valeur est trop longue. Elle doit contenir tout au plus %s mots.\",\r\n words: \"Cette valeur est invalide. Elle doit contenir entre %s et %s mots.\",\r\n gt: \"Cette valeur doit être plus grande.\",\r\n gte: \"Cette valeur doit être plus grande ou égale.\",\r\n lt: \"Cette valeur doit être plus petite.\",\r\n lte: \"Cette valeur doit être plus petite ou égale.\",\r\n notequalto: \"Cette valeur doit être différente.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('fr', {\r\n defaultMessage: \"Cette valeur semble non valide.\",\r\n type: {\r\n email: \"Cette valeur n'est pas une adresse email valide.\",\r\n url: \"Cette valeur n'est pas une URL valide.\",\r\n number: \"Cette valeur doit être un nombre.\",\r\n integer: \"Cette valeur doit être un entier.\",\r\n digits: \"Cette valeur doit être numérique.\",\r\n alphanum: \"Cette valeur doit être alphanumérique.\"\r\n },\r\n notblank: \"Cette valeur ne peut pas être vide.\",\r\n required: \"Ce champ est requis.\",\r\n pattern: \"Cette valeur semble non valide.\",\r\n min: \"Cette valeur ne doit pas être inférieure à %s.\",\r\n max: \"Cette valeur ne doit pas excéder %s.\",\r\n range: \"Cette valeur doit être comprise entre %s et %s.\",\r\n minlength: \"Cette chaîne est trop courte. Elle doit avoir au minimum %s caractères.\",\r\n maxlength: \"Cette chaîne est trop longue. Elle doit avoir au maximum %s caractères.\",\r\n length: \"Cette valeur doit contenir entre %s et %s caractères.\",\r\n mincheck: \"Vous devez sélectionner au moins %s choix.\",\r\n maxcheck: \"Vous devez sélectionner %s choix maximum.\",\r\n check: \"Vous devez sélectionner entre %s et %s choix.\",\r\n equalto: \"Cette valeur devrait être identique.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('fr');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('he', {\r\n dateiso: \"ערך זה צריך להיות תאריך בפורמט (YYYY-MM-DD).\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('he', {\r\n defaultMessage: \"נראה כי ערך זה אינו תקף.\",\r\n type: {\r\n email: \"ערך זה צריך להיות כתובת אימייל.\",\r\n url: \"ערך זה צריך להיות URL תקף.\",\r\n number: \"ערך זה צריך להיות מספר.\",\r\n integer: \"ערך זה צריך להיות מספר שלם.\",\r\n digits: \"ערך זה צריך להיות ספרתי.\",\r\n alphanum: \"ערך זה צריך להיות אלפאנומרי.\"\r\n },\r\n notblank: \"ערך זה אינו יכול להשאר ריק.\",\r\n required: \"ערך זה דרוש.\",\r\n pattern: \"נראה כי ערך זה אינו תקף.\",\r\n min: \"ערך זה צריך להיות לכל הפחות %s.\",\r\n max: \"ערך זה צריך להיות לכל היותר %s.\",\r\n range: \"ערך זה צריך להיות בין %s ל-%s.\",\r\n minlength: \"ערך זה קצר מידי. הוא צריך להיות לכל הפחות %s תווים.\",\r\n maxlength: \"ערך זה ארוך מידי. הוא צריך להיות לכל היותר %s תווים.\",\r\n length: \"ערך זה אינו באורך תקף. האורך צריך להיות בין %s ל-%s תווים.\",\r\n mincheck: \"אנא בחר לפחות %s אפשרויות.\",\r\n maxcheck: \"אנא בחר לכל היותר %s אפשרויות.\",\r\n check: \"אנא בחר בין %s ל-%s אפשרויות.\",\r\n equalto: \"ערך זה צריך להיות זהה.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('he');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('hr', {\r\n dateiso: \"Ovo polje treba sadržavati ispravno unešen datum (GGGG-MM-DD).\",\r\n minwords: \"Unos je prekratak. Treba sadržavati %s ili više riječi.\",\r\n maxwords: \"Unos je predugačak. Treba sadržavati %s ili manje riječi.\",\r\n words: \"Neispravna duljina unosa. Treba sadržavati između %s i %s riječi.\",\r\n gt: \"Ova vrijednost treba biti veća.\",\r\n gte: \"Ova vrijednost treba biti veća ili jednaka.\",\r\n lt: \"Ova vrijednost treba biti manja.\",\r\n lte: \"Ova vrijednost treba biti manja ili jednaka.\",\r\n notequalto: \"Ova vrijednost treba biti drugačija.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('hr', {\r\n defaultMessage: \"Neispravan unos.\",\r\n type: {\r\n email: \"Ovo polje treba sadržavati ispravnu email adresu.\",\r\n url: \"Ovo polje treba sadržavati ispravni url.\",\r\n number: \"Ovo polje treba sadržavati ispravno upisan broj.\",\r\n integer: \"Ovo polje treba sadržavati ispravno upisan cijeli broj.\",\r\n digits: \"Ovo polje treba sadržavati znamenke.\",\r\n alphanum: \"Ovo polje treba sadržavati brojke ili slova.\"\r\n },\r\n notblank: \"Ovo polje ne smije biti prazno.\",\r\n required: \"Ovo polje je obavezno.\",\r\n pattern: \"Neispravan unos.\",\r\n min: \"Vrijednost treba biti jednaka ili veća od %s.\",\r\n max: \"Vrijednost treba biti jednaka ili manja od %s.\",\r\n range: \"Vrijednost treba biti između %s i %s.\",\r\n minlength: \"Unos je prekratak. Treba sadržavati %s ili više znakova.\",\r\n maxlength: \"Unos je predugačak. Treba sadržavati %s ili manje znakova.\",\r\n length: \"Neispravna duljina unosa. Treba sadržavati između %s i %s znakova.\",\r\n mincheck: \"Treba odabrati najmanje %s izbora.\",\r\n maxcheck: \"Treba odabrati %s ili manje izbora.\",\r\n check: \"Treba odabrati između %s i %s izbora.\",\r\n equalto: \"Ova vrijednost treba biti ista.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('hr');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('hu', {\r\n dateiso: \"A mező értéke csak érvényes dátum lehet (YYYY-MM-DD).\",\r\n minwords: \"Minimum %s szó megadása szükséges.\",\r\n maxwords: \"Maximum %s szó megadása engedélyezett.\",\r\n words: \"Minimum %s, maximum %s szó megadása szükséges.\",\r\n gt: \"A mező értéke nagyobb kell legyen.\",\r\n gte: \"A mező értéke nagyobb vagy egyenlő kell legyen.\",\r\n lt: \"A mező értéke kevesebb kell legyen.\",\r\n lte: \"A mező értéke kevesebb vagy egyenlő kell legyen.\",\r\n notequalto: \"Az érték különböző kell legyen.\"\r\n });\r\n});","// This is included with the window.Parsley && window.Parsley library itself,\r\n// thus there is no use in adding it to your project.\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('hu', {\r\n defaultMessage: \"Érvénytelen mező.\",\r\n type: {\r\n email: \"Érvénytelen email cím.\",\r\n url: \"Érvénytelen URL cím.\",\r\n number: \"Érvénytelen szám.\",\r\n integer: \"Érvénytelen egész szám.\",\r\n digits: \"Érvénytelen szám.\",\r\n alphanum: \"Érvénytelen alfanumerikus érték.\"\r\n },\r\n notblank: \"Ez a mező nem maradhat üresen.\",\r\n required: \"A mező kitöltése kötelező.\",\r\n pattern: \"Érvénytelen érték.\",\r\n min: \"A mező értéke nagyobb vagy egyenlő kell legyen mint %s.\",\r\n max: \"A mező értéke kisebb vagy egyenlő kell legyen mint %s.\",\r\n range: \"A mező értéke %s és %s közé kell essen.\",\r\n minlength: \"Legalább %s karakter megadása szükséges.\",\r\n maxlength: \"Legfeljebb %s karakter megadása engedélyezett.\",\r\n length: \"Nem megfelelő karakterszám. Minimum %s, maximum %s karakter adható meg.\",\r\n mincheck: \"Legalább %s értéket kell kiválasztani.\",\r\n maxcheck: \"Maximum %s értéket lehet kiválasztani.\",\r\n check: \"Legalább %s, legfeljebb %s értéket kell kiválasztani.\",\r\n equalto: \"A mező értéke nem egyező.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('hu');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('id', {\r\n dateiso: \"Harus tanggal yang valid (YYYY-MM-DD).\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('id', {\r\n defaultMessage: \"tidak valid\",\r\n type: {\r\n email: \"email tidak valid\",\r\n url: \"url tidak valid\",\r\n number: \"nomor tidak valid\",\r\n integer: \"integer tidak valid\",\r\n digits: \"harus berupa digit\",\r\n alphanum: \"harus berupa alphanumeric\"\r\n },\r\n notblank: \"tidak boleh kosong\",\r\n required: \"tidak boleh kosong\",\r\n pattern: \"tidak valid\",\r\n min: \"harus lebih besar atau sama dengan %s.\",\r\n max: \"harus lebih kecil atau sama dengan %s.\",\r\n range: \"harus dalam rentang %s dan %s.\",\r\n minlength: \"terlalu pendek, minimal %s karakter atau lebih.\",\r\n maxlength: \"terlalu panjang, maksimal %s karakter atau kurang.\",\r\n length: \"panjang karakter harus dalam rentang %s dan %s\",\r\n mincheck: \"pilih minimal %s pilihan\",\r\n maxcheck: \"pilih maksimal %s pilihan\",\r\n check: \"pilih antar %s dan %s pilihan\",\r\n equalto: \"harus sama\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('id');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('it', {\r\n dateiso: \"Inserire una data valida (AAAA-MM-GG).\",\r\n date: \"Deve essere una data valida nel formato %s\",\r\n datebeforenow: \"La data deve essere valida nel formato %s e precedere la data attuale\",\r\n dateafternow: \"La data deve essere valida nel formato %s e posteriore alla data attuale\",\r\n minwords: \"Questo valore deve avere almeno %s parole.\",\r\n maxwords: \"Questo valore deve avere meno di %s parole.\",\r\n words: \"Questo valore deve avere tra %s e %s parole.\",\r\n gt: \"Questo valore deve essere maggiore di %s.\",\r\n gte: \"Questo valore deve essere maggiore o uguale a %s.\",\r\n lt: \"Questo valore deve essere minore di %s.\",\r\n lte: \"Questo valore deve essere minore o uguale a %s.\",\r\n notequalto: \"Questo valore deve essere differente da %s.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('it', {\r\n defaultMessage: \"Questo valore sembra essere non valido.\",\r\n type: {\r\n email: \"Questo valore deve essere un indirizzo email valido.\",\r\n url: \"Questo valore deve essere un URL valido.\",\r\n number: \"Questo valore deve essere un numero valido.\",\r\n integer: \"Questo valore deve essere un numero valido.\",\r\n digits: \"Questo valore deve essere di tipo numerico.\",\r\n alphanum: \"Questo valore deve essere di tipo alfanumerico.\"\r\n },\r\n notblank: \"Questo valore non deve essere vuoto.\",\r\n required: \"Questo valore è richiesto.\",\r\n pattern: \"Questo valore non è corretto.\",\r\n min: \"Questo valore deve essere maggiore di %s.\",\r\n max: \"Questo valore deve essere minore di %s.\",\r\n range: \"Questo valore deve essere compreso tra %s e %s.\",\r\n minlength: \"Questo valore è troppo corto. La lunghezza minima è di %s caratteri.\",\r\n maxlength: \"Questo valore è troppo lungo. La lunghezza massima è di %s caratteri.\",\r\n length: \"La lunghezza di questo valore deve essere compresa fra %s e %s caratteri.\",\r\n mincheck: \"Devi scegliere almeno %s opzioni.\",\r\n maxcheck: \"Devi scegliere al più %s opzioni.\",\r\n check: \"Devi scegliere tra %s e %s opzioni.\",\r\n equalto: \"Questo valore deve essere identico.\",\r\n euvatin: \"Non è un codice IVA valido\",\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('it');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ja', {\r\n dateiso: \"有効な日付を入力してください。 (YYYY-MM-DD).\",\r\n minwords: \"語句が短すぎます。 %s 語以上で入力してください。\",\r\n maxwords: \"語句が長すぎます。 %s 語以内で入力してください。\",\r\n words: \"語句の長さが正しくありません。 %s 語から %s 語の間で入力してください。\",\r\n gt: \"より大きい値を入力してください。\",\r\n gte: \"より大きいか、同じ値を入力してください。\",\r\n lt: \"より小さい値を入力してください。\",\r\n lte: \"より小さいか、同じ値を入力してください。\",\r\n notequalto: \"異なる値を入力してください。\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ja', {\r\n defaultMessage: \"無効な値です。\",\r\n type: {\r\n email: \"有効なメールアドレスを入力してください。\",\r\n url: \"有効なURLを入力してください。\",\r\n number: \"数値を入力してください。\",\r\n integer: \"整数を入力してください。\",\r\n digits: \"数字を入力してください。\",\r\n alphanum: \"英数字を入力してください。\"\r\n },\r\n notblank: \"この値を入力してください\",\r\n required: \"この値は必須です。\",\r\n pattern: \"この値は無効です。\",\r\n min: \"%s 以上の値にしてください。\",\r\n max: \"%s 以下の値にしてください。\",\r\n range: \"%s から %s の値にしてください。\",\r\n minlength: \"%s 文字以上で入力してください。\",\r\n maxlength: \"%s 文字以下で入力してください。\",\r\n length: \"%s から %s 文字の間で入力してください。\",\r\n mincheck: \"%s 個以上選択してください。\",\r\n maxcheck: \"%s 個以下選択してください。\",\r\n check: \"%s から %s 個選択してください。\",\r\n equalto: \"値が違います。\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('ja');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ko', {\r\n defaultMessage: \"입력하신 내용이 올바르지 않습니다.\",\r\n type: {\r\n email: \"입력하신 이메일이 유효하지 않습니다.\",\r\n url: \"입력하신 URL이 유효하지 않습니다.\",\r\n number: \"입력하신 전화번호가 올바르지 않습니다.\",\r\n integer: \"입력하신 정수가 유효하지 않습니다.\",\r\n digits: \"숫자를 입력하여 주십시오.\",\r\n alphanum: \"입력하신 내용은 알파벳과 숫자의 조합이어야 합니다.\"\r\n },\r\n notblank: \"공백은 입력하실 수 없습니다.\",\r\n required: \"필수 입력사항입니다.\",\r\n pattern: \"입력하신 내용이 올바르지 않습니다.\",\r\n min: \"입력하신 내용이 %s보다 크거나 같아야 합니다. \",\r\n max: \"입력하신 내용이 %s보다 작거나 같아야 합니다.\",\r\n range: \"입력하신 내용이 %s보다 크고 %s 보다 작아야 합니다.\",\r\n minlength: \"%s 이상의 글자수를 입력하십시오. \",\r\n maxlength: \"%s 이하의 글자수를 입력하십시오. \",\r\n length: \"입력하신 내용의 글자수가 %s보다 크고 %s보다 작아야 합니다.\",\r\n mincheck: \"최소한 %s개를 선택하여 주십시오. \",\r\n maxcheck: \"%s개 또는 그보다 적게 선택하여 주십시오.\",\r\n check: \"선택하신 내용이 %s보다 크거나 %s보다 작아야 합니다.\",\r\n equalto: \"같은 값을 입력하여 주십시오.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('ko');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('lt', {\r\n dateiso: \"Šis įrašas turi būti teisingo formato data (YYYY-MM-DD).\",\r\n minwords: \"Šis įrašas turi turėti ne mažiau kaip %s žodžių.\",\r\n maxwords: \"Šis įrašas turi turėti ne daugiau kaip %s žodžių.\",\r\n words: \"Šis įrašas turi turėti nuo %s iki %s žodžių.\",\r\n gt: \"Ši vertė turi būti didesnė.\",\r\n gte: \"Ši vertė turi būti didesnė arba lygi.\",\r\n lt: \"Ši vertė turi būti mažesnė.\",\r\n lte: \"Ši vertė turi būti mažesnė arba lygi.\",\r\n notequalto: \"Ši vertė turi būti skirtinga.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('lt', {\r\n defaultMessage: \"Šis įrašas neteisingas.\",\r\n type: {\r\n email: \"Šis įrašas nėra teisingas el. paštas.\",\r\n url: \"Šis įrašas nėra teisingas url.\",\r\n number: \"Šis įrašas nėra skaičius.\",\r\n integer: \"Šis įrašas nėra sveikasis skaičius.\",\r\n digits: \"Šis įrašas turi būti skaičius.\",\r\n alphanum: \"Šis įrašas turi būti iš skaičių ir raidžių.\"\r\n },\r\n notblank: \"Šis įrašas negali būti tuščias.\",\r\n required: \"Šis įrašas yra privalomas\",\r\n pattern: \"Šis įrašas neteisingas.\",\r\n min: \"Ši vertė turi būti didesnė arba lygi %s.\",\r\n max: \"Ši vertė turi būti mažesnė arba lygi %s.\",\r\n range: \"Ši vertė turi būti tarp %s ir %s.\",\r\n minlength: \"Šis įrašas per trumpas. Jis turi turėti %s simbolius arba daugiau.\",\r\n maxlength: \"Šis įrašas per ilgas. Jis turi turėti %s simbolius arba mažiau.\",\r\n length: \"Šio įrašo ilgis neteisingas. Jis turėtų būti tarp %s ir %s simbolių.\",\r\n mincheck: \"Jūs turite pasirinkti bent %s pasirinkimus.\",\r\n maxcheck: \"Jūs turite pasirinkti ne daugiau %s pasirinkimų.\",\r\n check: \"Jūs turite pasirinkti tarp %s ir %s pasirinkimų.\",\r\n equalto: \"Ši reikšmė turėtų būti vienoda.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('lt');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('lv', {\r\n dateiso: \"Šai vērtībai jābūt korekti noformētam datumam (YYYY-MM-DD).\",\r\n minwords: \"Šī vērtība ir par īsu. Tai jābūt vismaz %s vārdus garai.\",\r\n maxwords: \"Šī vērtība ir par garu. Tai jābūt %s vārdus garai vai īsākai.\",\r\n words: \"Šīs vērtības garums ir nederīgs. Tai jābūt no %s līdz %s vārdus garai.\",\r\n gt: \"Šai vērtībai jābūt lielākai.\",\r\n gte: \"Šai vērtībai jābūt lielākai vai vienādai.\",\r\n lt: \"Šai vērtībai jābūt mazākai.\",\r\n lte: \"Šai vērtībai jābūt mazākai vai vienādai.\",\r\n notequalto: \"Šai vērtībai jābūt atšķirīgai.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('lv', {\r\n defaultMessage: \"Šis ieraksts veikts nekorekti.\",\r\n type: {\r\n email: \"Šeit jāieraksta derīgs e-pasts.\",\r\n url: \"Šeit jāieraksta korekts url.\",\r\n number: \"Šeit jāieraksta derīgs skaitlis.\",\r\n integer: \"Šeit jāieraksta vesels skaitlis.\",\r\n digits: \"Šeit jāieraksta cipari.\",\r\n alphanum: \"Šeit derīgi tikai alfabēta burti vai cipari.\"\r\n },\r\n notblank: \"Šis ieraksts nedrīkst būt tukšs.\",\r\n required: \"Šis ieraksts ir obligāti jāaizpilda.\",\r\n pattern: \"Šis ieraksts aizpildīts nekorekti.\",\r\n min: \"Šai vērtībai jābūt lielākai vai vienādai ar %s.\",\r\n max: \"Šai vērtībai jābūt mazākai vai vienādai ar %s.\",\r\n range: \"Šai vērtībai jābūt starp %s un %s.\",\r\n minlength: \"Vērtībai jābūt vismaz %s simbolu garai.\",\r\n maxlength: \"Vērtībai jābūt %s simbolus garai vai īsākai.\",\r\n length: \"Šīs vērtības garums ir neatbilstošs. Tai jābūt %s līdz %s simbolus garai.\",\r\n mincheck: \"Jāizvēlas vismaz %s varianti.\",\r\n maxcheck: \"Jāizvēlas %s varianti vai mazāk.\",\r\n check: \"Jāizvēlas no %s līdz %s variantiem.\",\r\n equalto: \"Šai vērtībai jāsakrīt.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('lv');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ms', {\r\n dateiso: \"Nilai hendaklah berbentuk tarikh yang sah (YYYY-MM-DD).\",\r\n minwords: \"Ayat terlalu pendek. Ianya perlu sekurang-kurangnya %s patah perkataan.\",\r\n maxwords: \"Ayat terlalu panjang. Ianya tidak boleh melebihi %s patah perkataan.\",\r\n words: \"Panjang ayat tidak sah. Jumlah perkataan adalah diantara %s hingga %s patah perkataan.\",\r\n gt: \"Nilai lebih besar diperlukan.\",\r\n gte: \"Nilai hendaklah lebih besar atau sama.\",\r\n lt: \"Nilai lebih kecil diperlukan.\",\r\n lte: \"Nilai hendaklah lebih kecil atau sama.\"\r\n });\r\n});","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ms', {\r\n defaultMessage: \"Nilai tidak sah.\",\r\n type: {\r\n email: \"Nilai mestilah dalam format emel yang sah.\",\r\n url: \"Nilai mestilah dalam bentuk url yang sah.\",\r\n number: \"Hanya nombor dibenarkan.\",\r\n integer: \"Hanya integer dibenarkan.\",\r\n digits: \"Hanya angka dibenarkan.\",\r\n alphanum: \"Hanya alfanumerik dibenarkan.\"\r\n },\r\n notblank: \"Nilai ini tidak boleh kosong.\",\r\n required: \"Nilai ini wajib diisi.\",\r\n pattern: \"Bentuk nilai ini tidak sah.\",\r\n min: \"Nilai perlu lebih besar atau sama dengan %s.\",\r\n max: \"Nilai perlu lebih kecil atau sama dengan %s.\",\r\n range: \"Nilai perlu berada antara %s hingga %s.\",\r\n minlength: \"Nilai terlalu pendek. Ianya perlu sekurang-kurangnya %s huruf.\",\r\n maxlength: \"Nilai terlalu panjang. Ianya tidak boleh melebihi %s huruf.\",\r\n length: \"Panjang nilai tidak sah. Panjangnya perlu diantara %s hingga %s huruf.\",\r\n mincheck: \"Anda mesti memilih sekurang-kurangnya %s pilihan.\",\r\n maxcheck: \"Anda tidak boleh memilih lebih daripada %s pilihan.\",\r\n check: \"Anda mesti memilih diantara %s hingga %s pilihan.\",\r\n equalto: \"Nilai dimasukkan hendaklah sama.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('ms');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('nl', {\r\n dateiso: \"Deze waarde moet een datum in het volgende formaat zijn: (YYYY-MM-DD).\",\r\n date: \"Dit moet een geldige datum zijn in formaat %s.\",\r\n datebeforenow: \"Datum moet geldig zijn in het formaat %s en eerder zijn dan nu.\",\r\n dateafternow: \"Datum moet geldig zijn in het formaat %s en later zijn dan nu.\",\r\n minwords: \"Deze waarde moet minstens %s woorden bevatten.\",\r\n maxwords: \"Deze waarde mag maximaal %s woorden bevatten.\",\r\n words: \"Deze waarde moet tussen de %s en %s woorden bevatten.\",\r\n gt: \"Deze waarde moet groter dan %s zijn.\",\r\n gte: \"Deze waarde moet groter zijn dan of gelijk zijn aan %s.\",\r\n lt: \"Deze waarde moet kleiner dan %s zijn.\",\r\n lte: \"Deze waarde moet kleiner zijn dan of gelijk zijn aan %s.\",\r\n notequalto: \"Deze waarde moet verschillen van %s.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('nl', {\r\n defaultMessage: \"Deze waarde lijkt onjuist.\",\r\n type: {\r\n email: \"Dit lijkt geen geldig e-mail adres te zijn.\",\r\n url: \"Dit lijkt geen geldige URL te zijn.\",\r\n number: \"Deze waarde moet een nummer zijn.\",\r\n integer: \"Deze waarde moet een nummer zijn.\",\r\n digits: \"Deze waarde moet numeriek zijn.\",\r\n alphanum: \"Deze waarde moet alfanumeriek zijn.\"\r\n },\r\n notblank: \"Deze waarde mag niet leeg zijn.\",\r\n required: \"Dit veld is verplicht.\",\r\n pattern: \"Deze waarde lijkt onjuist te zijn.\",\r\n min: \"Deze waarde mag niet lager zijn dan %s.\",\r\n max: \"Deze waarde mag niet groter zijn dan %s.\",\r\n range: \"Deze waarde moet tussen %s en %s liggen.\",\r\n minlength: \"Deze tekst is te kort. Deze moet uit minimaal %s karakters bestaan.\",\r\n maxlength: \"Deze waarde is te lang. Deze mag maximaal %s karakters lang zijn.\",\r\n length: \"Deze waarde moet tussen %s en %s karakters lang zijn.\",\r\n equalto: \"Deze waardes moeten identiek zijn.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('nl');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('no', {\r\n defaultMessage: \"Verdien er ugyldig.\",\r\n type: {\r\n email: \"Verdien må være en gyldig e-postadresse.\",\r\n url: \"Verdien må være en gyldig url.\",\r\n number: \"Verdien må være et gyldig tall.\",\r\n integer: \"Verdien må være et gyldig heltall.\",\r\n digits: \"Verdien må være et siffer.\",\r\n alphanum: \"Verdien må være alfanumerisk\"\r\n },\r\n notblank: \"Verdien kan ikke være blank.\",\r\n required: \"Verdien er obligatorisk.\",\r\n pattern: \"Verdien er ugyldig.\",\r\n min: \"Verdien må være større eller lik %s.\",\r\n max: \"Verdien må være mindre eller lik %s.\",\r\n range: \"Verdien må være mellom %s and %s.\",\r\n minlength: \"Verdien er for kort. Den må bestå av minst %s tegn.\",\r\n maxlength: \"Verdien er for lang. Den kan bestå av maksimalt %s tegn.\",\r\n length: \"Verdien har ugyldig lengde. Den må være mellom %s og %s tegn lang.\",\r\n mincheck: \"Du må velge minst %s alternativer.\",\r\n maxcheck: \"Du må velge %s eller færre alternativer.\",\r\n check: \"Du må velge mellom %s og %s alternativer.\",\r\n equalto: \"Verdien må være lik.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('no');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('nb', {\r\n defaultMessage: \"Verdien er ugyldig.\",\r\n type: {\r\n email: \"Verdien må være en gyldig e-postadresse.\",\r\n url: \"Verdien må være en gyldig url.\",\r\n number: \"Verdien må være et gyldig tall.\",\r\n integer: \"Verdien må være et gyldig heltall.\",\r\n digits: \"Verdien må være et siffer.\",\r\n alphanum: \"Verdien må være alfanumerisk\"\r\n },\r\n notblank: \"Verdien kan ikke være blank.\",\r\n required: \"Verdien er obligatorisk.\",\r\n pattern: \"Verdien er ugyldig.\",\r\n min: \"Verdien må være større eller lik %s.\",\r\n max: \"Verdien må være mindre eller lik %s.\",\r\n range: \"Verdien må være mellom %s and %s.\",\r\n minlength: \"Verdien er for kort. Den må bestå av minst %s tegn.\",\r\n maxlength: \"Verdien er for lang. Den kan bestå av maksimalt %s tegn.\",\r\n length: \"Verdien har ugyldig lengde. Den må være mellom %s og %s tegn lang.\",\r\n mincheck: \"Du må velge minst %s alternativer.\",\r\n maxcheck: \"Du må velge %s eller færre alternativer.\",\r\n check: \"Du må velge mellom %s og %s alternativer.\",\r\n equalto: \"Verdien må være lik.\"\r\n });\r\n \r\n window.Parsley && window.Parsley.setLocale('nb');\r\n });\r\n ","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('pl', {\r\n defaultMessage: \"Wartość wygląda na nieprawidłową\",\r\n type: {\r\n email: \"Wpisz poprawny adres e-mail.\",\r\n url: \"Wpisz poprawny adres URL.\",\r\n number: \"Wpisz poprawną liczbę.\",\r\n integer: \"Dozwolone są jedynie liczby całkowite.\",\r\n digits: \"Dozwolone są jedynie cyfry.\",\r\n alphanum: \"Dozwolone są jedynie znaki alfanumeryczne.\"\r\n },\r\n notblank: \"Pole nie może być puste.\",\r\n required: \"Pole jest wymagane.\",\r\n pattern: \"Pole zawiera nieprawidłową wartość.\",\r\n min: \"Wartość nie może być mniejsza od %s.\",\r\n max: \"Wartość nie może być większa od %s.\",\r\n range: \"Wartość powinna zawierać się pomiędzy %s a %s.\",\r\n minlength: \"Minimalna ilość znaków wynosi %s.\",\r\n maxlength: \"Maksymalna ilość znaków wynosi %s.\",\r\n length: \"Ilość znaków wynosi od %s do %s.\",\r\n mincheck: \"Wybierz minimalnie %s opcji.\",\r\n maxcheck: \"Wybierz maksymalnie %s opcji.\",\r\n check: \"Wybierz od %s do %s opcji.\",\r\n equalto: \"Wartości nie są identyczne.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('pl');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('pt-br', {\r\n defaultMessage: \"Este valor parece ser inválido.\",\r\n type: {\r\n email: \"Este campo deve ser um email válido.\",\r\n url: \"Este campo deve ser um URL válida.\",\r\n number: \"Este campo deve ser um número válido.\",\r\n integer: \"Este campo deve ser um inteiro válido.\",\r\n digits: \"Este campo deve conter apenas dígitos.\",\r\n alphanum: \"Este campo deve ser alfa numérico.\"\r\n },\r\n notblank: \"Este campo não pode ficar vazio.\",\r\n required: \"Este campo é obrigatório.\",\r\n pattern: \"Este campo parece estar inválido.\",\r\n min: \"Este campo deve ser maior ou igual a %s.\",\r\n max: \"Este campo deve ser menor ou igual a %s.\",\r\n range: \"Este campo deve estar entre %s e %s.\",\r\n minlength: \"Este campo é pequeno demais. Ele deveria ter %s caracteres ou mais.\",\r\n maxlength: \"Este campo é grande demais. Ele deveria ter %s caracteres ou menos.\",\r\n length: \"O tamanho deste campo é inválido. Ele deveria ter entre %s e %s caracteres.\",\r\n mincheck: \"Você deve escolher pelo menos %s opções.\",\r\n maxcheck: \"Você deve escolher %s opções ou mais\",\r\n check: \"Você deve escolher entre %s e %s opções.\",\r\n equalto: \"Este valor deveria ser igual.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('pt-br');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('pt-pt', {\r\n defaultMessage: \"Este valor parece ser inválido.\",\r\n type: {\r\n email: \"Este campo deve ser um email válido.\",\r\n url: \"Este campo deve ser um URL válido.\",\r\n number: \"Este campo deve ser um número válido.\",\r\n integer: \"Este campo deve ser um número inteiro válido.\",\r\n digits: \"Este campo deve conter apenas dígitos.\",\r\n alphanum: \"Este campo deve ser alfanumérico.\"\r\n },\r\n notblank: \"Este campo não pode ficar vazio.\",\r\n required: \"Este campo é obrigatório.\",\r\n pattern: \"Este campo parece estar inválido.\",\r\n min: \"Este valor deve ser maior ou igual a %s.\",\r\n max: \"Este valor deve ser menor ou igual a %s.\",\r\n range: \"Este valor deve estar entre %s e %s.\",\r\n minlength: \"Este campo é pequeno demais. Deve ter %s caracteres ou mais.\",\r\n maxlength: \"Este campo é grande demais. Deve ter %s caracteres ou menos.\",\r\n length: \"O tamanho deste campo é inválido. Ele deveria ter entre %s e %s caracteres.\",\r\n mincheck: \"Escolha pelo menos %s opções.\",\r\n maxcheck: \"Escolha %s opções ou mais\",\r\n check: \"Escolha entre %s e %s opções.\",\r\n equalto: \"Este valor deveria ser igual.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('pt-pt');\r\n});","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ro', {\r\n dateiso: \"Trebuie să fie o dată corectă (YYYY-MM-DD).\",\r\n minwords: \"Textul e prea scurt. Trebuie să aibă cel puțin %s cuvinte.\",\r\n maxwords: \"Textul e prea lung. Trebuie să aibă cel mult %s cuvinte.\",\r\n words: \"Textul trebuie să aibă cel puțin %s și cel mult %s caractere.\",\r\n gt: \"Valoarea ar trebui să fie mai mare.\",\r\n gte: \"Valoarea ar trebui să fie mai mare sau egală.\",\r\n lt: \"Valoarea ar trebui să fie mai mică.\",\r\n lte: \"Valoarea ar trebui să fie mai mică sau egală.\",\r\n notequalto: \"Valoarea ar trebui să fie diferită.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ro', {\r\n defaultMessage: \"Acest câmp nu este completat corect.\",\r\n type: {\r\n email: \"Trebuie să scrii un email valid.\",\r\n url: \"Trebuie să scrii un link valid\",\r\n number: \"Trebuie să scrii un număr valid\",\r\n integer: \"Trebuie să scrii un număr întreg valid\",\r\n digits: \"Trebuie să conțină doar cifre.\",\r\n alphanum: \"Trebuie să conțină doar cifre sau litere.\"\r\n },\r\n notblank: \"Acest câmp nu poate fi lăsat gol.\",\r\n required: \"Acest câmp trebuie să fie completat.\",\r\n pattern: \"Acest câmp nu este completat corect.\",\r\n min: \"Trebuie să fie ceva mai mare sau egal cu %s.\",\r\n max: \"Trebuie să fie ceva mai mic sau egal cu %s.\",\r\n range: \"Valoarea trebuie să fie între %s și %s.\",\r\n minlength: \"Trebuie să scrii cel puțin %s caractere.\",\r\n maxlength: \"Trebuie să scrii cel mult %s caractere.\",\r\n length: \"Trebuie să scrii cel puțin %s și %s cel mult %s caractere.\",\r\n mincheck: \"Trebuie să alegi cel puțin %s opțiuni.\",\r\n maxcheck: \"Poți alege maxim %s opțiuni.\",\r\n check: \"Trebuie să alegi între %s sau %s.\",\r\n equalto: \"Trebuie să fie la fel.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('ro');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ru', {\r\n dateiso: \"Это значение должно быть корректной датой (ГГГГ-ММ-ДД).\",\r\n minwords: \"Это значение должно содержать не менее %s слов.\",\r\n maxwords: \"Это значение должно содержать не более %s слов.\",\r\n words: \"Это значение должно содержать от %s до %s слов.\",\r\n gt: \"Это значение должно быть больше.\",\r\n gte: \"Это значение должно быть больше или равно.\",\r\n lt: \"Это значение должно быть меньше.\",\r\n lte: \"Это значение должно быть меньше или равно.\",\r\n notequalto: \"Это значение должно отличаться.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ru', {\r\n defaultMessage: \"Некорректное значение.\",\r\n type: {\r\n email: \"Введите адрес электронной почты.\",\r\n url: \"Введите URL адрес.\",\r\n number: \"Введите число.\",\r\n integer: \"Введите целое число.\",\r\n digits: \"Введите только цифры.\",\r\n alphanum: \"Введите буквенно-цифровое значение.\"\r\n },\r\n notblank: \"Это поле должно быть заполнено.\",\r\n required: \"Обязательное поле.\",\r\n pattern: \"Это значение некорректно.\",\r\n min: \"Это значение должно быть не менее чем %s.\",\r\n max: \"Это значение должно быть не более чем %s.\",\r\n range: \"Это значение должно быть от %s до %s.\",\r\n minlength: \"Это значение должно содержать не менее %s символов.\",\r\n maxlength: \"Это значение должно содержать не более %s символов.\",\r\n length: \"Это значение должно содержать от %s до %s символов.\",\r\n mincheck: \"Выберите не менее %s значений.\",\r\n maxcheck: \"Выберите не более %s значений.\",\r\n check: \"Выберите от %s до %s значений.\",\r\n equalto: \"Это значение должно совпадать.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('ru');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('sk', {\r\n dateiso: \"Prosím zadajte dátum vo formáte RRRR-MM-DD.\",\r\n minwords: \"Prosím zadajte hodnotu dlhú %s slov a viacej.\",\r\n maxwords: \"Prosím zadajte hodnotu kratšiu ako %s slov.\",\r\n words: \"Prosím zadajte hodnotu medzi %s a %s slov.\",\r\n gt: \"Táto hodnota musí byť väčšia.\",\r\n gte: \"Táto hodnota musí byť väčšia alebo rovná.\",\r\n lt: \"Táto hodnota musí byť menšia.\",\r\n lte: \"Táto hodnota musí byť menšia alebo rovná.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('sk', {\r\n defaultMessage: \"Prosím zadajte správnu hodnotu.\",\r\n type: {\r\n email: \"Prosím zadajte správnu emailovú adresu.\",\r\n url: \"Prosím zadajte platnú URL adresu.\",\r\n number: \"Toto pole môže obsahovať len čísla.\",\r\n integer: \"Toto pole môže obsahovať len celé čísla.\",\r\n digits: \"Toto pole môže obsahovať len kladné celé čísla.\",\r\n alphanum: \"Toto pole môže obsahovať len alfanumerické znaky.\"\r\n },\r\n notblank: \"Toto pole nesmie byť prázdne.\",\r\n required: \"Toto pole je povinné.\",\r\n pattern: \"Toto pole je neplatné.\",\r\n min: \"Prosím zadajte hodnotu väčšiu alebo rovnú %s.\",\r\n max: \"Prosím zadajte hodnotu menšiu alebo rovnú %s.\",\r\n range: \"Prosím zadajte hodnotu v rozmedzí %s a %s\",\r\n minlength: \"Prosím zadajte hodnotu dlhšiu ako %s znakov.\",\r\n maxlength: \"Prosím zadajte hodnotu kratšiu ako %s znakov.\",\r\n length: \"Prosím zadajte hodnotu medzi %s a %s znakov.\",\r\n mincheck: \"Je nutné vybrať minimálne %s možností.\",\r\n maxcheck: \"Je nutné vybrať maximálne %s možností.\",\r\n check: \"Je nutné vybrať od %s do %s možností.\",\r\n equalto: \"Prosím zadajte rovnakú hodnotu.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('sk');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('sl', {\r\n dateiso: \"Vnesite datum v ISO obliki (YYYY-MM-DD).\",\r\n minwords: \"Vpis je prekratek. Vpisati morate najmnaj %s besed.\",\r\n maxwords: \"Vpis je predolg. Vpišete lahko največ %s besed.\",\r\n words: \"Dolžina vpisa je napačna. Dolžina je lahko samo med %s in %s besed.\",\r\n gt: \"Vpisani podatek mora biti večji.\",\r\n gte: \"Vpisani podatek mora biti enak ali večji.\",\r\n lt: \"Vpisani podatek mora biti manjši.\",\r\n lte: \"Vpisani podatek mora biti enak ali manjši.\",\r\n notequalto: \"Vpisana vrednost mora biti drugačna.\"\r\n });\r\n});\r\n","// This is included with the window.Parsley && window.Parsley library itself,\r\n// thus there is no use in adding it to your project.\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('sl', {\r\n defaultMessage: \"Podatek ne ustreza vpisnim kriterijem.\",\r\n type: {\r\n email: \"Vpišite pravilen email.\",\r\n url: \"Vpišite pravilen url naslov.\",\r\n number: \"Vpišite številko.\",\r\n integer: \"Vpišite celo število brez decimalnih mest.\",\r\n digits: \"Vpišite samo cifre.\",\r\n alphanum: \"Vpišite samo alfanumerične znake (cifre in črke).\"\r\n },\r\n notblank: \"To polje ne sme biti prazno.\",\r\n required: \"To polje je obvezno.\",\r\n pattern: \"Podatek ne ustreza vpisnim kriterijem.\",\r\n min: \"Vrednost mora biti višja ali enaka kot %s.\",\r\n max: \"Vrednost mora biti nižja ali enaka kot %s.\",\r\n range: \"Vrednost mora biti med %s in %s.\",\r\n minlength: \"Vpis je prekratek. Mora imeti najmanj %s znakov.\",\r\n maxlength: \"Vpis je predolg. Lahko ima največ %s znakov.\",\r\n length: \"Število vpisanih znakov je napačno. Število znakov je lahko samo med %s in %s.\",\r\n mincheck: \"Izbrati morate vsaj %s možnosti.\",\r\n maxcheck: \"Izberete lahko največ %s možnosti.\",\r\n check: \"Število izbranih možnosti je lahko samo med %s in %s.\",\r\n equalto: \"Vnos mora biti enak.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('sl');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('sq', {\r\n defaultMessage: \"Kjo vlere eshte e pasakte.\",\r\n type: {\r\n email: \"Duhet te jete nje email i vlefshem.\",\r\n url: \"Duhet te jete nje URL e vlefshme.\",\r\n number: \"Duhet te jete numer.\",\r\n integer: \"Kjo vlere duhet te jete integer.\",\r\n digits: \"Kjo vlere duhet te permbaje digit.\",\r\n alphanum: \"Kjo vlere duhet te permbaje vetel alphanumeric.\"\r\n },\r\n notblank: \"Nuk mund te lihet bosh.\",\r\n required: \"Eshte e detyrueshme.\",\r\n pattern: \"Kjo vlere eshte e pasakte.\",\r\n min: \"Duhet te jete me e madhe ose baraz me %s.\",\r\n max: \"Duhet te jete me e vogel ose baraz me %s.\",\r\n range: \"Duhet te jete midis %s dhe %s.\",\r\n minlength: \"Kjo vlere eshte shume e shkurter. Ajo duhet te permbaje min %s karaktere.\",\r\n maxlength: \"Kjo vlere eshte shume e gjate. Ajo duhet te permbaje max %s karaktere.\",\r\n length: \"Gjatesia e kesaj vlere eshte e pasakte. Ajo duhet te jete midis %s dhe %s karakteresh.\",\r\n mincheck: \"Ju duhet te zgjidhni te pakten %s vlere.\",\r\n maxcheck: \"Ju duhet te zgjidhni max %s vlera.\",\r\n check: \"Ju mund te zgjidhni midis %s dhe %s vlerash.\",\r\n equalto: \"Kjo vlere duhet te jete e njejte.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('sq');\r\n});\r\n","// Extra validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('sr', {\r\n dateiso: \"Unesite validan datum u formatu YYYY-MM-DD.\",\r\n minwords: \"Potrebno je da unesete %s ili više reči.\",\r\n maxwords: \"Moguće je uneti maksimalno %s reči.\",\r\n words: \"Potrebno je da unesete između %s i %s reči.\",\r\n gt: \"Ova vrednost mora da bude veća.\",\r\n gte: \"Ova vrednost mora da bude veća ili jednaka.\",\r\n lt: \"Ova vrednost mora da bude manja.\",\r\n lte: \"Ova vrednost mora da bude manja ili jednaka.\",\r\n notequalto: \"Sadržaj ovog polja mora biti različit.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('sr', {\r\n defaultMessage: \"Uneta vrednost nije validna.\",\r\n type: {\r\n email: \"Unesite pravilnu email adresu.\",\r\n url: \"Unesite pravilnu url adresu.\",\r\n number: \"Unesite numeričku vrednost.\",\r\n integer: \"Unesite ceo broj bez decimala.\",\r\n digits: \"Unesite samo brojeve.\",\r\n alphanum: \"Unesite samo alfanumeričke znake (slova i brojeve).\"\r\n },\r\n notblank: \"Ovo polje ne sme biti prazno.\",\r\n required: \"Ovo polje je obavezno.\",\r\n pattern: \"Uneta vrednost nije validna.\",\r\n min: \"Vrednost mora biti veća ili jednaka %s.\",\r\n max: \"Vrednost mora biti manja ili jednaka %s.\",\r\n range: \"Vrednost mora biti između %s i %s.\",\r\n minlength: \"Unos je prekratak. Mora imati najmanje %s znakova.\",\r\n maxlength: \"Unos je predug. Može imati najviše %s znakova.\",\r\n length: \"Dužina unosa je pogrešna. Broj znakova mora biti između %s i %s.\",\r\n mincheck: \"Morate izabrati minimalno %s opcija.\",\r\n maxcheck: \"Možete izabrati najviše %s opcija.\",\r\n check: \"Broj izabranih opcija mora biti između %s i %s.\",\r\n equalto: \"Unos mora biti jednak.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('sr');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('sv', {\r\n dateiso: \"Ange ett giltigt datum (ÅÅÅÅ-MM-DD).\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('sv', {\r\n defaultMessage: \"Ogiltigt värde.\",\r\n type: {\r\n email: \"Ange en giltig e-postadress.\",\r\n url: \"Ange en giltig URL.\",\r\n number: \"Ange ett giltigt nummer.\",\r\n integer: \"Ange ett heltal.\",\r\n digits: \"Ange endast siffror.\",\r\n alphanum: \"Ange endast bokstäver och siffror.\"\r\n },\r\n notblank: \"Värdet får inte vara tomt.\",\r\n required: \"Måste fyllas i.\",\r\n pattern: \"Värdet är ej giltigt.\",\r\n min: \"Värdet måste vara större än eller lika med %s.\",\r\n max: \"Värdet måste vara mindre än eller lika med %s.\",\r\n range: \"Värdet måste vara mellan %s och %s.\",\r\n minlength: \"Värdet måste vara minst %s tecken.\",\r\n maxlength: \"Värdet får maximalt innehålla %s tecken.\",\r\n length: \"Värdet måste vara mellan %s och %s tecken.\",\r\n mincheck: \"Minst %s val måste göras.\",\r\n maxcheck: \"Maximalt %s val får göras.\",\r\n check: \"Mellan %s och %s val måste göras.\",\r\n equalto: \"Värdena måste vara lika.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('sv');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('th', {\r\n defaultMessage: \"ค่านี้ดูเหมือนว่าจะไม่ถูกต้อง\",\r\n type: {\r\n email: \"กรุณากรอกอีเมลให้ถูกต้อง\",\r\n url: \"กรุณากรอก url ให้ถูกต้อง\",\r\n number: \"กรุณากรอกตัวเลข\",\r\n integer: \"กรุณากรอกจำนวนเต็ม\",\r\n digits: \"กรุณากรอกเลขทศนิยม\",\r\n alphanum: \"กรุณากรอกตัวอักษรและตัวเลข\"\r\n },\r\n notblank: \"ห้ามเป็นค่าว่าง\",\r\n required: \"จำเป็นต้องกรอก\",\r\n pattern: \"รูปแบบไม่ถูกต้อง\",\r\n min: \"ต้องมากกว่าหรือเท่ากับ %s\",\r\n max: \"ต้องน้อยกว่าหรือเท่ากับ %s\",\r\n range: \"ต้องอยู่ระหว่าง %s และ %s\",\r\n minlength: \"กรุณากรอกอย่างน้อย %s ตัวอักษร\",\r\n maxlength: \"กรอกได้ไม่เกิน %s ตัวอักษร\",\r\n length: \"ความยาวตัวอักษรต้องอยู่ระหว่าง %s ถึง %s ตัวอักษร\",\r\n mincheck: \"กรุณาเลือกอย่างน้อย %s ตัวเลือก\",\r\n maxcheck: \"เลือกได้ไม่เกิน %s ตัวเลือก\",\r\n check: \"กรุณาเลือกระหว่าง %s และ %s ตัวเลือก\",\r\n equalto: \"ค่าที่กรอกไม่เหมืิอนกัน\",\r\n euvatin: \"หมายเลขประจำตัวผู้เสียภาษีไม่ถูกต้อง\",\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('th');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('tk', {\r\n defaultMessage: \"Bu maglumat nädogry.\",\r\n type: {\r\n email: \"Dogry e-poçta adresi ýazmaly.\",\r\n url: \"Dogry web sahypa salgysy ýazmaly.\",\r\n number: \"Dogry san ýazmaly.\",\r\n integer: \"Dogry bitin san ýazmaly.\",\r\n digits: \"San ýazmaly.\",\r\n alphanum: \"San ýa-da harp ýazmaly.\"\r\n },\r\n notblank: \"Bu ýeri boş goýmaly däl.\",\r\n required: \"Bu ýeri doldurmak hökmany.\",\r\n pattern: \"Bu maglumat nädogry.\",\r\n min: \"Iň azyndan %s ýa-da ondan uly bolmaly.\",\r\n max: \"Iň köp %s ýa-da ondan kiçi bolmaly.\",\r\n range: \"Bu ýer %s we %s aralygynda san bolmaly.\",\r\n minlength: \"Bu ýeriň uzynlygy iň azyndan %s harp ýa-da ondan köp bolmaly.\",\r\n maxlength: \"Bu ýeriň uzynlygy iň köp %s harp ýa-da ondan az bolmaly.\",\r\n length: \"Bu ýeriň uzynlygy %s we %s harp aralygynda bolmaly.\",\r\n mincheck: \"Iň azyndan %s sanysyny saýlamaly.\",\r\n maxcheck: \"Iň köp %s sanysyny saýlamaly.\",\r\n check: \"Iň az %s, iň köp %s sanysyny saýlamaly.\",\r\n equalto: \"Bu maglumat deň bolmaly.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('tk');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('tr', {\r\n defaultMessage: \"Girdiğiniz değer geçerli değil.\",\r\n type: {\r\n email: \"Geçerli bir e-mail adresi yazmanız gerekiyor.\",\r\n url: \"Geçerli bir bağlantı adresi yazmanız gerekiyor.\",\r\n number: \"Geçerli bir sayı yazmanız gerekiyor.\",\r\n integer: \"Geçerli bir tamsayı yazmanız gerekiyor.\",\r\n digits: \"Geçerli bir rakam yazmanız gerekiyor.\",\r\n alphanum: \"Geçerli bir alfanümerik değer yazmanız gerekiyor.\"\r\n },\r\n notblank: \"Bu alan boş bırakılamaz.\",\r\n required: \"Bu alan boş bırakılamaz.\",\r\n pattern: \"Girdiğiniz değer geçerli değil.\",\r\n min: \"Bu alan %s değerinden büyük ya da bu değere eşit olmalı.\",\r\n max: \"Bu alan %s değerinden küçük ya da bu değere eşit olmalı.\",\r\n range: \"Bu alan %s ve %s değerleri arasında olmalı.\",\r\n minlength: \"Bu alanın uzunluğu %s karakter veya daha fazla olmalı.\",\r\n maxlength: \"Bu alanın uzunluğu %s karakter veya daha az olmalı.\",\r\n length: \"Bu alanın uzunluğu %s ve %s karakter arasında olmalı.\",\r\n mincheck: \"En az %s adet seçim yapmalısınız.\",\r\n maxcheck: \"En fazla %s seçim yapabilirsiniz.\",\r\n check: \"Bu alan için en az %s, en fazla %s seçim yapmalısınız.\",\r\n equalto: \"Bu alanın değeri aynı olmalı.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('tr');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ua', {\r\n dateiso: \"Це значення повинно бути коректною датою (РРРР-ММ-ДД).\",\r\n minwords: \"Це значення повинно містити не менше %s слів.\",\r\n maxwords: \"Це значення повинно містити не більше %s слів.\",\r\n words: \"Це значення повинно містити від %s до %s слів.\",\r\n gt: \"Це значення повинно бути більше.\",\r\n gte: \"Це значення повинно бути більше або дорівнює.\",\r\n lt: \"Це значення повинно бути менше.\",\r\n lte: \"Це значення повинно бути менше або дорівнює.\",\r\n notequalto: \"Це значення повинно відрізнятися.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('ua', {\r\n defaultMessage: \"Некоректне значення.\",\r\n type: {\r\n email: \"Введіть адресу електронної пошти.\",\r\n url: \"Введіть URL адресу.\",\r\n number: \"Введіть число.\",\r\n integer: \"Введіть ціле число.\",\r\n digits: \"Введіть тільки цифри.\",\r\n alphanum: \"Введіть буквено-цифрове значення.\"\r\n },\r\n notblank: \"Це поле має бути заповненим.\",\r\n required: \"Обов'язкове поле.\",\r\n pattern: \"Це значення некоректне.\",\r\n min: \"Це значення повинно бути не менше ніж %s.\",\r\n max: \"Це значення повинно бути не більше ніж %s.\",\r\n range: \"Це значення повинно бути від %s до %s.\",\r\n minlength: \"Це значення повинно містити не менше %s символів.\",\r\n maxlength: \"Це значення повинно містити не більше %s символів.\",\r\n length: \"Це значення повинно містити від %s до %s символів.\",\r\n mincheck: \"Виберіть не менше %s значень.\",\r\n maxcheck: \"Виберіть не більше %s значень.\",\r\n check: \"Виберіть від %s до %s значень.\",\r\n equalto: \"Це значення повинно співпадати.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('ua');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('uk', {\r\n dateiso: \"Це значення має бути коректною датою (РРРР-ММ-ДД).\",\r\n minwords: \"Це значення повинно містити не менше %s слів.\",\r\n maxwords: \"Це значення повинно містити не більше %s слів.\",\r\n words: \"Це значення повинно містити від %s до %s слів.\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('uk', {\r\n defaultMessage: \"Некоректне значення.\",\r\n type: {\r\n email: \"Введіть адресу електронної пошти.\",\r\n url: \"Введіть URL-адресу.\",\r\n number: \"Введіть число.\",\r\n integer: \"Введіть ціле число.\",\r\n digits: \"Введіть тільки цифри.\",\r\n alphanum: \"Введіть буквено-цифрове значення.\"\r\n },\r\n notblank: \"Це поле повинно бути заповнено.\",\r\n required: \"Обов'язкове поле\",\r\n pattern: \"Це значення некоректно.\",\r\n min: \"Це значення повинно бути не менше ніж %s.\",\r\n max: \"Це значення повинно бути не більше ніж %s.\",\r\n range: \"Це значення повинно бути від %s до %s.\",\r\n minlength: \"Це значення повинно містити не менше ніж %s символів.\",\r\n maxlength: \"Це значення повинно містити не більше ніж %s символів.\",\r\n length: \"Це значення повинно містити від %s до %s символів.\",\r\n mincheck: \"Виберіть не менше %s значень.\",\r\n maxcheck: \"Виберіть не більше %s значень.\",\r\n check: \"Виберіть від %s до %s значень.\",\r\n equalto: \"Це значення повинно збігатися.\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('uk');\r\n});","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('zh-cn', {\r\n dateiso: \"请输入正确格式的日期 (YYYY-MM-DD).\"\r\n });\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('zh-cn', {\r\n defaultMessage: \"不正确的值\",\r\n type: {\r\n email: \"请输入一个有效的电子邮箱地址\",\r\n url: \"请输入一个有效的链接\",\r\n number: \"请输入正确的数字\",\r\n integer: \"请输入正确的整数\",\r\n digits: \"请输入正确的号码\",\r\n alphanum: \"请输入字母或数字\"\r\n },\r\n notblank: \"请输入值\",\r\n required: \"必填项\",\r\n pattern: \"格式不正确\",\r\n min: \"输入值请大于或等于 %s\",\r\n max: \"输入值请小于或等于 %s\",\r\n range: \"输入值应该在 %s 到 %s 之间\",\r\n minlength: \"请输入至少 %s 个字符\",\r\n maxlength: \"请输入至多 %s 个字符\",\r\n length: \"字符长度应该在 %s 到 %s 之间\",\r\n mincheck: \"请至少选择 %s 个选项\",\r\n maxcheck: \"请选择不超过 %s 个选项\",\r\n check: \"请选择 %s 到 %s 个选项\",\r\n equalto: \"输入值不同\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('zh-cn');\r\n});\r\n","// Validation errors messages for window.Parsley && window.Parsley\r\n// Load this after window.Parsley && window.Parsley\r\n\r\nwindow.addEventListener('load', () => {\r\n window.Parsley && window.Parsley.addMessages('zh-tw', {\r\n defaultMessage: \"這個值似乎是無效的。\",\r\n type: {\r\n email: \"請輸入一個正確的電子郵件地址。\",\r\n url: \"請輸入一個有效的網址。\",\r\n number: \"請輸入一個數字。\",\r\n integer: \"請輸入一個整數。\",\r\n digits: \"這個欄位只接受數字。\",\r\n alphanum: \"這個欄位只接受英文字母或是數字。\"\r\n },\r\n notblank: \"這個欄位不能為空白。\",\r\n required: \"這個欄位必須填寫。\",\r\n pattern: \"這個值似乎是無效的。\",\r\n min: \"輸入的值應該大於或等於 %s\",\r\n max: \"輸入的值應該小於或等於 %s\",\r\n range: \"輸入的值應該在 %s 和 %s 之間。\",\r\n minlength: \"輸入的值至少要有 %s 個字元。\",\r\n maxlength: \"輸入的值最多可以有 %s 個字元。\",\r\n length: \"字元長度應該在 %s 和 %s 之間。\",\r\n mincheck: \"你至少要選擇 %s 個項目。\",\r\n maxcheck: \"你最多可選擇 %s 個項目。\",\r\n check: \"你必須選擇 %s 到 %s 個項目。\",\r\n equalto: \"輸入值不同。\"\r\n });\r\n\r\n window.Parsley && window.Parsley.setLocale('zh-tw');\r\n});\r\n"],"sourceRoot":""}